@duckcodeailabs/dql-cli 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/dist/apps-api.js +11 -4
- package/dist/apps-api.js.map +1 -1
- package/dist/assets/dql-notebook/assets/index-C-s-OCLW.css +1 -0
- package/dist/assets/dql-notebook/assets/{index-B5jI3I8Q.js → index-DZ_5zsCw.js} +123 -123
- package/dist/assets/dql-notebook/index.html +2 -2
- package/dist/commands/certify.d.ts.map +1 -1
- package/dist/commands/certify.js +35 -5
- package/dist/commands/certify.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +3 -0
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +91 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +1 -0
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +21 -6
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +2 -1
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +6 -5
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/verify.d.ts +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +36 -6
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.js +65 -4
- package/dist/index.js.map +1 -1
- package/dist/local-runtime.d.ts +2 -0
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +51 -12
- package/dist/local-runtime.js.map +1 -1
- package/dist/template-adoption.test.d.ts +2 -0
- package/dist/template-adoption.test.d.ts.map +1 -0
- package/dist/template-adoption.test.js +102 -0
- package/dist/template-adoption.test.js.map +1 -0
- package/package.json +13 -13
- package/dist/assets/dql-notebook/assets/index-cv-O4BEj.css +0 -1
- package/dist/package.json +0 -44
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
* schedules) stay in lock-step with their source files.
|
|
8
8
|
*/
|
|
9
9
|
import type { CLIFlags } from '../args.js';
|
|
10
|
-
export declare function runVerify(
|
|
10
|
+
export declare function runVerify(pathArg: string | null, rest: string[], flags: CLIFlags): Promise<void>;
|
|
11
11
|
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CA8Df"}
|
package/dist/commands/verify.js
CHANGED
|
@@ -7,17 +7,47 @@
|
|
|
7
7
|
* schedules) stay in lock-step with their source files.
|
|
8
8
|
*/
|
|
9
9
|
import { existsSync, readFileSync } from 'node:fs';
|
|
10
|
-
import { join } from 'node:path';
|
|
11
|
-
import { buildManifest } from '@duckcodeailabs/dql-core';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
import { join, resolve } from 'node:path';
|
|
11
|
+
import { buildManifest, resolveDbtManifestPath } from '@duckcodeailabs/dql-core';
|
|
12
|
+
export async function runVerify(pathArg, rest, flags) {
|
|
13
|
+
const allArgs = [...(pathArg ? [pathArg] : []), ...rest];
|
|
14
|
+
let dbtManifestPath;
|
|
15
|
+
const dbtIdx = allArgs.indexOf('--dbt-manifest');
|
|
16
|
+
if (dbtIdx >= 0 && allArgs[dbtIdx + 1]) {
|
|
17
|
+
dbtManifestPath = resolve(allArgs[dbtIdx + 1]);
|
|
18
|
+
if (!existsSync(dbtManifestPath)) {
|
|
19
|
+
throw new Error(`dbt manifest not found: ${dbtManifestPath}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
let maxDbtHops;
|
|
23
|
+
const hopsIdx = allArgs.indexOf('--dbt-hops');
|
|
24
|
+
if (hopsIdx >= 0 && allArgs[hopsIdx + 1]) {
|
|
25
|
+
const parsed = Number.parseInt(allArgs[hopsIdx + 1], 10);
|
|
26
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
27
|
+
maxDbtHops = parsed;
|
|
28
|
+
}
|
|
29
|
+
const pathCandidates = allArgs.filter((a) => !a.startsWith('-'));
|
|
30
|
+
const filteredCandidates = pathCandidates
|
|
31
|
+
.filter((c) => dbtIdx < 0 || c !== allArgs[dbtIdx + 1])
|
|
32
|
+
.filter((c) => hopsIdx < 0 || c !== allArgs[hopsIdx + 1]);
|
|
33
|
+
const projectRoot = resolve(filteredCandidates[0] ?? '.');
|
|
15
34
|
const manifestPath = join(projectRoot, 'dql-manifest.json');
|
|
16
35
|
if (!existsSync(manifestPath)) {
|
|
17
36
|
throw new Error(`dql-manifest.json not found at ${manifestPath}. Run \`dql compile\` first.`);
|
|
18
37
|
}
|
|
38
|
+
let dqlVersion = '0.6.0';
|
|
39
|
+
try {
|
|
40
|
+
const pkgPath = join(import.meta.dirname ?? __dirname, '..', '..', 'package.json');
|
|
41
|
+
if (existsSync(pkgPath)) {
|
|
42
|
+
dqlVersion = JSON.parse(readFileSync(pkgPath, 'utf-8')).version ?? dqlVersion;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch { /* use default */ }
|
|
46
|
+
const resolvedDbt = resolveDbtManifestPath(projectRoot, dbtManifestPath);
|
|
47
|
+
if (resolvedDbt)
|
|
48
|
+
dbtManifestPath = resolvedDbt;
|
|
19
49
|
const onDisk = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
20
|
-
const fresh = buildManifest({ projectRoot });
|
|
50
|
+
const fresh = buildManifest({ projectRoot, dqlVersion, dbtManifestPath, maxDbtHops });
|
|
21
51
|
const drift = diffManifest(onDisk, fresh);
|
|
22
52
|
const json = flags.format === 'json';
|
|
23
53
|
if (drift.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAoB,MAAM,0BAA0B,CAAC;AAGnG,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAsB,EACtB,IAAc,EACd,KAAe;IAEf,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,IAAI,eAAmC,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjD,IAAI,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACvC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,IAAI,UAA8B,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;YAAE,UAAU,GAAG,MAAM,CAAC;IACjE,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,cAAc;SACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,8BAA8B,CAAC,CAAC;IAChG,CAAC;IAED,IAAI,UAAU,GAAG,OAAO,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACnF,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;QAChF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,sBAAsB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,WAAW;QAAE,eAAe,GAAG,WAAW,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAgB,CAAC;IAC9E,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC;IAEtF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAI,KAA6B,CAAC,MAAM,KAAK,MAAM,CAAC;IAE9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,CAAc,EAAE,CAAc;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzF,OAAO,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClG,OAAO,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/F,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjH,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5F,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrG,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE5F,uEAAuE;IACvE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAmB,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAClI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,CAAc,EAAE,CAAc,EAAE,IAAc;IAC5E,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -89,6 +89,62 @@ const HELP = `
|
|
|
89
89
|
--open-pr For "certify --from-draft": push branch + open GitHub PR with the diff
|
|
90
90
|
--force For "certify --from-draft": overwrite an existing certified block
|
|
91
91
|
`;
|
|
92
|
+
const COMMAND_HELP = {
|
|
93
|
+
certify: `
|
|
94
|
+
dql certify — Evaluate local certification rules
|
|
95
|
+
|
|
96
|
+
Usage:
|
|
97
|
+
dql certify <file.dql> [--connection <driver|path>] [--skip-tests]
|
|
98
|
+
dql certify --from-draft <path> [--contract <id@version>] [--force]
|
|
99
|
+
|
|
100
|
+
Notes:
|
|
101
|
+
Certification is a local OSS trust label. Use status = "certified" for
|
|
102
|
+
blocks that pass metadata, lineage, and test checks.
|
|
103
|
+
`,
|
|
104
|
+
app: `
|
|
105
|
+
dql app — Manage local App artifacts
|
|
106
|
+
|
|
107
|
+
Usage:
|
|
108
|
+
dql app new <name>
|
|
109
|
+
dql app ls
|
|
110
|
+
dql app show <name>
|
|
111
|
+
dql app build <name>
|
|
112
|
+
dql app reindex
|
|
113
|
+
`,
|
|
114
|
+
compile: `
|
|
115
|
+
dql compile — Generate dql-manifest.json
|
|
116
|
+
|
|
117
|
+
Usage:
|
|
118
|
+
dql compile [path] [--dbt-manifest <path>] [--dbt-hops <n>] [--no-cache]
|
|
119
|
+
|
|
120
|
+
dql-manifest.json is the dbt-like compiled artifact for blocks, notebooks,
|
|
121
|
+
Apps, dashboards, semantic objects, sources, dbt imports, and lineage.
|
|
122
|
+
`,
|
|
123
|
+
doctor: `
|
|
124
|
+
dql doctor — Check a local DQL project
|
|
125
|
+
|
|
126
|
+
Usage:
|
|
127
|
+
dql doctor [path] [--format json]
|
|
128
|
+
|
|
129
|
+
Prints setup checks and the next local-first commands to run.
|
|
130
|
+
`,
|
|
131
|
+
semantic: `
|
|
132
|
+
dql semantic — Work with the local semantic layer
|
|
133
|
+
|
|
134
|
+
Usage:
|
|
135
|
+
dql semantic list [path]
|
|
136
|
+
dql semantic validate [path]
|
|
137
|
+
dql semantic query <metrics> [dimensions]
|
|
138
|
+
`,
|
|
139
|
+
verify: `
|
|
140
|
+
dql verify — Verify dql-manifest.json is reproducible
|
|
141
|
+
|
|
142
|
+
Usage:
|
|
143
|
+
dql verify [path] [--dbt-manifest <path>] [--dbt-hops <n>] [--format json]
|
|
144
|
+
|
|
145
|
+
Run after dql compile in CI or before release commits.
|
|
146
|
+
`,
|
|
147
|
+
};
|
|
92
148
|
function getVersion() {
|
|
93
149
|
try {
|
|
94
150
|
const cliDir = dirname(fileURLToPath(import.meta.url));
|
|
@@ -106,10 +162,15 @@ async function main() {
|
|
|
106
162
|
process.exit(0);
|
|
107
163
|
}
|
|
108
164
|
if (flags.help || !command) {
|
|
109
|
-
console.log(HELP.trim());
|
|
165
|
+
console.log((command && COMMAND_HELP[command] ? COMMAND_HELP[command] : HELP).trim());
|
|
110
166
|
process.exit(0);
|
|
111
167
|
}
|
|
112
|
-
|
|
168
|
+
const commandAllowsNoFile = command === 'init' || command === 'serve' || command === 'doctor'
|
|
169
|
+
|| command === 'notebook' || command === 'validate' || command === 'semantic'
|
|
170
|
+
|| command === 'lineage' || command === 'compile' || command === 'sync'
|
|
171
|
+
|| command === 'mcp' || command === 'app' || command === 'schedule'
|
|
172
|
+
|| command === 'verify' || (command === 'certify' && Boolean(flags.fromDraft));
|
|
173
|
+
if (!file && !commandAllowsNoFile) {
|
|
113
174
|
console.error('Error: No file/argument specified. Run "dql --help" for usage.');
|
|
114
175
|
process.exit(1);
|
|
115
176
|
}
|
|
@@ -140,7 +201,7 @@ async function main() {
|
|
|
140
201
|
await runTest(file, flags);
|
|
141
202
|
break;
|
|
142
203
|
case 'certify':
|
|
143
|
-
await runCertify(file, flags);
|
|
204
|
+
await runCertify(file ?? '', flags);
|
|
144
205
|
break;
|
|
145
206
|
case 'info':
|
|
146
207
|
await runInfo(file, flags);
|
|
@@ -191,7 +252,7 @@ async function main() {
|
|
|
191
252
|
await runSlack(file, rest, flags);
|
|
192
253
|
break;
|
|
193
254
|
case 'verify':
|
|
194
|
-
await runVerify(rest, flags);
|
|
255
|
+
await runVerify(file, rest, flags);
|
|
195
256
|
break;
|
|
196
257
|
default:
|
|
197
258
|
console.error(`Unknown command: ${command}. Run "dql --help" for usage.`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/local-runtime.d.ts
CHANGED
|
@@ -59,6 +59,8 @@ type BlockStudioDiagnostic = {
|
|
|
59
59
|
message: string;
|
|
60
60
|
code?: string;
|
|
61
61
|
};
|
|
62
|
+
export declare function resolveSemanticTableMapping(executor: QueryExecutor, connection: ConnectionConfig, semanticLayer?: SemanticLayer): Promise<Record<string, string> | undefined>;
|
|
63
|
+
export declare function buildSemanticTableMapping(semanticLayer: SemanticLayer, rows: Array<Record<string, unknown>>): Record<string, string> | undefined;
|
|
62
64
|
export declare function validateBlockStudioSource(source: string, semanticLayer?: SemanticLayer): {
|
|
63
65
|
valid: boolean;
|
|
64
66
|
diagnostics: BlockStudioDiagnostic[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runtime.d.ts","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAUtF,OAAO,EAmBL,KAAK,aAAa,EAClB,KAAK,2BAA2B,EAejC,MAAM,0BAA0B,CAAC;AA6DlC,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,GAAG,CAAC,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"local-runtime.d.ts","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/local-runtime.js
CHANGED
|
@@ -120,7 +120,8 @@ export async function startLocalServer(opts) {
|
|
|
120
120
|
config: (sourceCell.chartConfig ?? sourceCell.config),
|
|
121
121
|
};
|
|
122
122
|
const resolved = resolveNotebookBlockReferenceCell(cell, projectRoot);
|
|
123
|
-
const
|
|
123
|
+
const tableMapping = await resolveSemanticTableMapping(executor, connection, semanticLayer);
|
|
124
|
+
const plan = buildExecutionPlan(resolved.cell, { semanticLayer, driver: connection.driver, tableMapping });
|
|
124
125
|
if (!plan) {
|
|
125
126
|
snapshotCells.push({ cellId, status: 'idle', executionCount: 0, executedAt });
|
|
126
127
|
continue;
|
|
@@ -181,15 +182,17 @@ export async function startLocalServer(opts) {
|
|
|
181
182
|
}
|
|
182
183
|
const absBlockPath = join(projectRoot, block.filePath);
|
|
183
184
|
const source = readFileSync(absBlockPath, 'utf-8');
|
|
185
|
+
const tableMapping = await resolveSemanticTableMapping(executor, connection, semanticLayer);
|
|
184
186
|
const semanticCompose = semanticLayer
|
|
185
187
|
? composeSemanticBlockSql(source, semanticLayer, {
|
|
186
188
|
driver: connection.driver,
|
|
189
|
+
tableMapping,
|
|
187
190
|
projectRoot,
|
|
188
191
|
projectConfig,
|
|
189
192
|
detectedProvider: semanticDetectedProvider,
|
|
190
193
|
})
|
|
191
194
|
: null;
|
|
192
|
-
const plan = buildExecutionPlan({ id: `agent-${block.name}`, type: 'dql', source, title: block.name }, { semanticLayer, driver: connection.driver });
|
|
195
|
+
const plan = buildExecutionPlan({ id: `agent-${block.name}`, type: 'dql', source, title: block.name }, { semanticLayer, driver: connection.driver, tableMapping });
|
|
193
196
|
if (!plan && !semanticCompose?.sql) {
|
|
194
197
|
const semanticError = semanticCompose?.diagnostics.find((diagnostic) => diagnostic.severity === 'error')?.message;
|
|
195
198
|
throw new Error(semanticError ?? `Block "${block.name}" produced no executable SQL.`);
|
|
@@ -298,7 +301,7 @@ export async function startLocalServer(opts) {
|
|
|
298
301
|
?? 'No executable SQL found in block source.';
|
|
299
302
|
throw new Error(message);
|
|
300
303
|
}
|
|
301
|
-
const plan = buildExecutionPlan({ id: 'block-studio', type: 'dql', source, title: 'Block Studio' }, { semanticLayer, driver: targetConnection.driver });
|
|
304
|
+
const plan = buildExecutionPlan({ id: 'block-studio', type: 'dql', source, title: 'Block Studio' }, { semanticLayer, driver: targetConnection.driver, tableMapping });
|
|
302
305
|
const sql = resolveProjectRelativeSqlPaths(semanticCompose?.sql ?? plan?.sql ?? executableSql, projectRoot, projectConfig.dataDir);
|
|
303
306
|
const result = await executor.executeQuery(sql, plan?.sqlParams ?? [], runtimeVariables(plan?.variables ?? {}), targetConnection);
|
|
304
307
|
return {
|
|
@@ -309,7 +312,8 @@ export async function startLocalServer(opts) {
|
|
|
309
312
|
};
|
|
310
313
|
const runBlockStudioTestSummary = async (source, targetConnection = connection) => {
|
|
311
314
|
const start = Date.now();
|
|
312
|
-
const
|
|
315
|
+
const tableMapping = await resolveSemanticTableMapping(executor, targetConnection, semanticLayer);
|
|
316
|
+
const plan = buildExecutionPlan({ id: 'block-studio-tests', type: 'dql', source, title: 'Block Studio' }, { semanticLayer, driver: targetConnection.driver, tableMapping });
|
|
313
317
|
const tests = plan?.tests ?? [];
|
|
314
318
|
if (!plan || !plan.sql) {
|
|
315
319
|
return {
|
|
@@ -578,7 +582,7 @@ export async function startLocalServer(opts) {
|
|
|
578
582
|
? body.variables
|
|
579
583
|
: {};
|
|
580
584
|
const tiles = [];
|
|
581
|
-
|
|
585
|
+
let localApps = null;
|
|
582
586
|
for (const item of loaded.dashboard.layout.items) {
|
|
583
587
|
if (item.text) {
|
|
584
588
|
tiles.push({
|
|
@@ -592,6 +596,18 @@ export async function startLocalServer(opts) {
|
|
|
592
596
|
continue;
|
|
593
597
|
}
|
|
594
598
|
if (item.aiPin) {
|
|
599
|
+
try {
|
|
600
|
+
localApps ??= new LocalAppStorage(defaultLocalAppsDbPath(projectRoot));
|
|
601
|
+
}
|
|
602
|
+
catch (err) {
|
|
603
|
+
tiles.push({
|
|
604
|
+
tileId: item.i,
|
|
605
|
+
status: 'error',
|
|
606
|
+
tileType: 'aiPin',
|
|
607
|
+
error: err instanceof Error ? err.message : String(err),
|
|
608
|
+
});
|
|
609
|
+
continue;
|
|
610
|
+
}
|
|
595
611
|
let pin = localApps.getAiPin(item.aiPin.id);
|
|
596
612
|
if (!pin) {
|
|
597
613
|
tiles.push({
|
|
@@ -645,15 +661,18 @@ export async function startLocalServer(opts) {
|
|
|
645
661
|
});
|
|
646
662
|
const absBlockPath = join(projectRoot, block.filePath);
|
|
647
663
|
const source = readFileSync(absBlockPath, 'utf-8');
|
|
664
|
+
const targetConnection = isConnectionConfig(body.connection) ? body.connection : connection;
|
|
665
|
+
const tableMapping = await resolveSemanticTableMapping(executor, targetConnection, semanticLayer);
|
|
648
666
|
const semanticCompose = semanticLayer
|
|
649
667
|
? composeSemanticBlockSql(source, semanticLayer, {
|
|
650
|
-
driver:
|
|
668
|
+
driver: targetConnection.driver,
|
|
669
|
+
tableMapping,
|
|
651
670
|
projectRoot,
|
|
652
671
|
projectConfig,
|
|
653
672
|
detectedProvider: semanticDetectedProvider,
|
|
654
673
|
})
|
|
655
674
|
: null;
|
|
656
|
-
const plan = buildExecutionPlan({ id: item.i, type: 'dql', source, title: item.title ?? block.name }, { semanticLayer, driver:
|
|
675
|
+
const plan = buildExecutionPlan({ id: item.i, type: 'dql', source, title: item.title ?? block.name }, { semanticLayer, driver: targetConnection.driver, tableMapping });
|
|
657
676
|
if (!plan && !semanticCompose?.sql) {
|
|
658
677
|
tiles.push({
|
|
659
678
|
tileId: item.i,
|
|
@@ -663,7 +682,7 @@ export async function startLocalServer(opts) {
|
|
|
663
682
|
});
|
|
664
683
|
continue;
|
|
665
684
|
}
|
|
666
|
-
const prepared = prepareLocalExecution(semanticCompose?.sql ?? plan.sql,
|
|
685
|
+
const prepared = prepareLocalExecution(semanticCompose?.sql ?? plan.sql, targetConnection, projectRoot, projectConfig);
|
|
667
686
|
const result = await executor.executeQuery(prepared.sql, plan?.sqlParams ?? [], runtimeVariables({ ...(plan?.variables ?? {}), ...variables }), prepared.connection);
|
|
668
687
|
tiles.push({
|
|
669
688
|
tileId: item.i,
|
|
@@ -701,7 +720,7 @@ export async function startLocalServer(opts) {
|
|
|
701
720
|
}
|
|
702
721
|
}
|
|
703
722
|
}
|
|
704
|
-
localApps
|
|
723
|
+
localApps?.close();
|
|
705
724
|
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
706
725
|
res.end(serializeJSON({
|
|
707
726
|
appId,
|
|
@@ -3048,7 +3067,8 @@ export async function startLocalServer(opts) {
|
|
|
3048
3067
|
const resolved = resolveNotebookBlockReferenceCell(cell, projectRoot);
|
|
3049
3068
|
const executableCell = resolved.cell;
|
|
3050
3069
|
const cellConnection = isConnectionConfig(body.connection) ? body.connection : connection;
|
|
3051
|
-
const
|
|
3070
|
+
const tableMapping = await resolveSemanticTableMapping(executor, cellConnection, semanticLayer);
|
|
3071
|
+
const plan = buildExecutionPlan(executableCell, { semanticLayer, driver: cellConnection.driver, tableMapping });
|
|
3052
3072
|
if (!plan) {
|
|
3053
3073
|
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
3054
3074
|
res.end(serializeJSON({ cellType: cell.type, result: null }));
|
|
@@ -3756,7 +3776,20 @@ function parseSemanticBlockConfig(source) {
|
|
|
3756
3776
|
limit: limitMatch ? Number.parseInt(limitMatch[1], 10) : undefined,
|
|
3757
3777
|
};
|
|
3758
3778
|
}
|
|
3759
|
-
function
|
|
3779
|
+
export async function resolveSemanticTableMapping(executor, connection, semanticLayer) {
|
|
3780
|
+
if (!semanticLayer)
|
|
3781
|
+
return undefined;
|
|
3782
|
+
try {
|
|
3783
|
+
const tablesResult = await executor.executeQuery(`SELECT table_schema, table_name
|
|
3784
|
+
FROM information_schema.tables
|
|
3785
|
+
WHERE table_schema NOT IN ('information_schema', 'pg_catalog')`, [], {}, connection);
|
|
3786
|
+
return buildSemanticTableMapping(semanticLayer, tablesResult.rows);
|
|
3787
|
+
}
|
|
3788
|
+
catch {
|
|
3789
|
+
return undefined;
|
|
3790
|
+
}
|
|
3791
|
+
}
|
|
3792
|
+
export function buildSemanticTableMapping(semanticLayer, rows) {
|
|
3760
3793
|
const dbTableNames = new Set();
|
|
3761
3794
|
const schemaQualified = new Map();
|
|
3762
3795
|
for (const row of rows) {
|
|
@@ -4569,7 +4602,10 @@ function buildSemanticBlockContent(options) {
|
|
|
4569
4602
|
if (options.tags && options.tags.length > 0) {
|
|
4570
4603
|
lines.push(` tags = [${options.tags.map((tag) => `"${escapeDqlString(tag)}"`).join(', ')}]`);
|
|
4571
4604
|
}
|
|
4572
|
-
if (options.metrics.length ===
|
|
4605
|
+
if (options.metrics.length === 0) {
|
|
4606
|
+
lines.push(' metric = ""');
|
|
4607
|
+
}
|
|
4608
|
+
else if (options.metrics.length === 1) {
|
|
4573
4609
|
lines.push(` metric = "${escapeDqlString(options.metrics[0])}"`);
|
|
4574
4610
|
}
|
|
4575
4611
|
else {
|
|
@@ -4578,6 +4614,9 @@ function buildSemanticBlockContent(options) {
|
|
|
4578
4614
|
if (options.dimensions.length > 0) {
|
|
4579
4615
|
lines.push(` dimensions = [${options.dimensions.map((dimension) => `"${escapeDqlString(dimension)}"`).join(', ')}]`);
|
|
4580
4616
|
}
|
|
4617
|
+
else {
|
|
4618
|
+
lines.push(' dimensions = []');
|
|
4619
|
+
}
|
|
4581
4620
|
if (options.timeDimension) {
|
|
4582
4621
|
lines.push(` time_dimension = "${escapeDqlString(options.timeDimension.name)}"`);
|
|
4583
4622
|
lines.push(` granularity = "${escapeDqlString(options.timeDimension.granularity)}"`);
|