@duckcodeailabs/dql-cli 0.1.1 → 0.1.4

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 (55) hide show
  1. package/dist/assets/notebook-browser/app.js +548 -0
  2. package/dist/assets/notebook-browser/index.html +83 -0
  3. package/dist/assets/notebook-browser/styles.css +336 -0
  4. package/dist/assets/templates/ecommerce/README.md +27 -0
  5. package/dist/assets/templates/ecommerce/blocks/repeat_rate.dql +26 -0
  6. package/dist/assets/templates/ecommerce/blocks/revenue_by_segment.dql +24 -0
  7. package/dist/assets/templates/ecommerce/dashboards/revenue_command_center.dql +25 -0
  8. package/dist/assets/templates/ecommerce/data/customers.csv +11 -0
  9. package/dist/assets/templates/ecommerce/data/funnel.csv +6 -0
  10. package/dist/assets/templates/ecommerce/data/orders.csv +16 -0
  11. package/dist/assets/templates/ecommerce/dql.config.json +13 -0
  12. package/dist/assets/templates/ecommerce/semantic-layer/dimensions/channel.yaml +4 -0
  13. package/dist/assets/templates/ecommerce/semantic-layer/metrics/gmv.yaml +4 -0
  14. package/dist/assets/templates/ecommerce/workbooks/.gitkeep +1 -0
  15. package/dist/assets/templates/saas/README.md +20 -0
  16. package/dist/assets/templates/saas/blocks/churn_pressure.dql +25 -0
  17. package/dist/assets/templates/saas/blocks/revenue_by_segment.dql +25 -0
  18. package/dist/assets/templates/saas/dashboards/growth_scorecard.dql +25 -0
  19. package/dist/assets/templates/saas/data/cohorts.csv +7 -0
  20. package/dist/assets/templates/saas/data/subscriptions.csv +13 -0
  21. package/dist/assets/templates/saas/dql.config.json +13 -0
  22. package/dist/assets/templates/saas/semantic-layer/metrics/mrr.yaml +4 -0
  23. package/dist/assets/templates/saas/workbooks/.gitkeep +1 -0
  24. package/dist/assets/templates/starter/README.md +54 -0
  25. package/dist/assets/templates/starter/blocks/revenue_by_segment.dql +29 -0
  26. package/dist/assets/templates/starter/blocks/revenue_trend_query_only.dql +20 -0
  27. package/dist/assets/templates/starter/dashboards/.gitkeep +1 -0
  28. package/dist/assets/templates/starter/data/revenue.csv +13 -0
  29. package/dist/assets/templates/starter/dql.config.json +13 -0
  30. package/dist/assets/templates/starter/semantic-layer/blocks/revenue_by_segment.yaml +11 -0
  31. package/dist/assets/templates/starter/semantic-layer/dimensions/segment_tier.yaml +6 -0
  32. package/dist/assets/templates/starter/semantic-layer/hierarchies/revenue_time.yaml +12 -0
  33. package/dist/assets/templates/starter/semantic-layer/metrics/revenue.yaml +7 -0
  34. package/dist/assets/templates/starter/workbooks/.gitkeep +1 -0
  35. package/dist/assets/templates/taxi/README.md +19 -0
  36. package/dist/assets/templates/taxi/blocks/airport_mix.dql +25 -0
  37. package/dist/assets/templates/taxi/blocks/revenue_by_segment.dql +24 -0
  38. package/dist/assets/templates/taxi/dashboards/city_operations.dql +25 -0
  39. package/dist/assets/templates/taxi/data/trips.csv +13 -0
  40. package/dist/assets/templates/taxi/dql.config.json +13 -0
  41. package/dist/assets/templates/taxi/semantic-layer/.gitkeep +1 -0
  42. package/dist/assets/templates/taxi/workbooks/.gitkeep +1 -0
  43. package/dist/commands/init.d.ts.map +1 -1
  44. package/dist/commands/init.js +3 -1
  45. package/dist/commands/init.js.map +1 -1
  46. package/dist/commands/notebook.d.ts.map +1 -1
  47. package/dist/commands/notebook.js +8 -2
  48. package/dist/commands/notebook.js.map +1 -1
  49. package/dist/local-runtime.d.ts +6 -0
  50. package/dist/local-runtime.d.ts.map +1 -1
  51. package/dist/local-runtime.js +65 -9
  52. package/dist/local-runtime.js.map +1 -1
  53. package/dist/local-runtime.test.js +24 -1
  54. package/dist/local-runtime.test.js.map +1 -1
  55. package/package.json +8 -8
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { formatLocalQueryRuntimeError, serializeJSON } from './local-runtime.js';
2
+ import { formatLocalQueryRuntimeError, normalizeProjectConnection, prepareLocalExecution, resolveProjectRelativeSqlPaths, serializeJSON, } from './local-runtime.js';
3
3
  describe('formatLocalQueryRuntimeError', () => {
4
4
  it('explains missing DuckDB native bindings with actionable guidance', () => {
5
5
  const message = formatLocalQueryRuntimeError({ driver: 'file', filepath: ':memory:' }, new Error("Cannot find module '/tmp/duckdb/lib/binding/duckdb.node'"));
@@ -18,4 +18,27 @@ describe('serializeJSON', () => {
18
18
  expect(serializeJSON({ revenue: value })).toBe(`{"revenue":"${value.toString()}"}`);
19
19
  });
20
20
  });
21
+ describe('resolveProjectRelativeSqlPaths', () => {
22
+ it('rewrites notebook sample file paths relative to the selected project', () => {
23
+ const sql = "SELECT * FROM read_csv_auto('./data/revenue.csv')";
24
+ const resolved = resolveProjectRelativeSqlPaths(sql, '/tmp/demo-project');
25
+ expect(resolved).toBe("SELECT * FROM read_csv_auto('/tmp/demo-project/data/revenue.csv')");
26
+ });
27
+ it('leaves unrelated string literals untouched', () => {
28
+ const sql = "SELECT './data/revenue.csv' AS label";
29
+ expect(resolveProjectRelativeSqlPaths(sql, '/tmp/demo-project')).toBe(sql);
30
+ });
31
+ });
32
+ describe('normalizeProjectConnection', () => {
33
+ it('resolves relative local database paths against the project root', () => {
34
+ expect(normalizeProjectConnection({ driver: 'duckdb', filepath: './local/dev.duckdb' }, '/tmp/demo-project')).toEqual({ driver: 'duckdb', filepath: '/tmp/demo-project/local/dev.duckdb' });
35
+ });
36
+ });
37
+ describe('prepareLocalExecution', () => {
38
+ it('rewrites SQL paths for file-backed notebook queries', () => {
39
+ const prepared = prepareLocalExecution("SELECT * FROM read_csv_auto('./data/revenue.csv')", { driver: 'file', filepath: ':memory:' }, '/tmp/demo-project', { dataDir: './data' });
40
+ expect(prepared.connection).toEqual({ driver: 'file', filepath: ':memory:' });
41
+ expect(prepared.sql).toBe("SELECT * FROM read_csv_auto('/tmp/demo-project/data/revenue.csv')");
42
+ });
43
+ });
21
44
  //# sourceMappingURL=local-runtime.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime.test.js","sourceRoot":"","sources":["../src/local-runtime.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,OAAO,GAAG,4BAA4B,CAC1C,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxC,IAAI,KAAK,CAAC,0DAA0D,CAAC,CACtE,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,4BAA4B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"local-runtime.test.js","sourceRoot":"","sources":["../src/local-runtime.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duckcodeailabs/dql-cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "description": "Public CLI for parsing, formatting, testing, and certifying DQL blocks",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -19,12 +19,12 @@
19
19
  "directory": "apps/cli"
20
20
  },
21
21
  "dependencies": {
22
- "@duckcodeailabs/dql-connectors": "0.1.1",
23
- "@duckcodeailabs/dql-core": "0.1.1",
24
- "@duckcodeailabs/dql-governance": "0.1.1",
25
- "@duckcodeailabs/dql-compiler": "0.1.1",
26
- "@duckcodeailabs/dql-project": "0.1.1",
27
- "@duckcodeailabs/dql-notebook": "0.1.1"
22
+ "@duckcodeailabs/dql-core": "0.1.3",
23
+ "@duckcodeailabs/dql-connectors": "0.1.3",
24
+ "@duckcodeailabs/dql-compiler": "0.1.3",
25
+ "@duckcodeailabs/dql-project": "0.1.3",
26
+ "@duckcodeailabs/dql-governance": "0.1.3",
27
+ "@duckcodeailabs/dql-notebook": "0.1.3"
28
28
  },
29
29
  "devDependencies": {
30
30
  "typescript": "^5.7.0",
@@ -35,7 +35,7 @@
35
35
  "node": ">=18.0.0"
36
36
  },
37
37
  "scripts": {
38
- "build": "rm -rf dist tsconfig.tsbuildinfo && tsc -b",
38
+ "build": "rm -rf dist tsconfig.tsbuildinfo && tsc -b && node ./scripts/copy-runtime-assets.mjs",
39
39
  "dev": "tsx src/index.ts",
40
40
  "test": "vitest run --passWithNoTests",
41
41
  "clean": "rm -rf dist tsconfig.tsbuildinfo"