@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.
- package/dist/assets/notebook-browser/app.js +548 -0
- package/dist/assets/notebook-browser/index.html +83 -0
- package/dist/assets/notebook-browser/styles.css +336 -0
- package/dist/assets/templates/ecommerce/README.md +27 -0
- package/dist/assets/templates/ecommerce/blocks/repeat_rate.dql +26 -0
- package/dist/assets/templates/ecommerce/blocks/revenue_by_segment.dql +24 -0
- package/dist/assets/templates/ecommerce/dashboards/revenue_command_center.dql +25 -0
- package/dist/assets/templates/ecommerce/data/customers.csv +11 -0
- package/dist/assets/templates/ecommerce/data/funnel.csv +6 -0
- package/dist/assets/templates/ecommerce/data/orders.csv +16 -0
- package/dist/assets/templates/ecommerce/dql.config.json +13 -0
- package/dist/assets/templates/ecommerce/semantic-layer/dimensions/channel.yaml +4 -0
- package/dist/assets/templates/ecommerce/semantic-layer/metrics/gmv.yaml +4 -0
- package/dist/assets/templates/ecommerce/workbooks/.gitkeep +1 -0
- package/dist/assets/templates/saas/README.md +20 -0
- package/dist/assets/templates/saas/blocks/churn_pressure.dql +25 -0
- package/dist/assets/templates/saas/blocks/revenue_by_segment.dql +25 -0
- package/dist/assets/templates/saas/dashboards/growth_scorecard.dql +25 -0
- package/dist/assets/templates/saas/data/cohorts.csv +7 -0
- package/dist/assets/templates/saas/data/subscriptions.csv +13 -0
- package/dist/assets/templates/saas/dql.config.json +13 -0
- package/dist/assets/templates/saas/semantic-layer/metrics/mrr.yaml +4 -0
- package/dist/assets/templates/saas/workbooks/.gitkeep +1 -0
- package/dist/assets/templates/starter/README.md +54 -0
- package/dist/assets/templates/starter/blocks/revenue_by_segment.dql +29 -0
- package/dist/assets/templates/starter/blocks/revenue_trend_query_only.dql +20 -0
- package/dist/assets/templates/starter/dashboards/.gitkeep +1 -0
- package/dist/assets/templates/starter/data/revenue.csv +13 -0
- package/dist/assets/templates/starter/dql.config.json +13 -0
- package/dist/assets/templates/starter/semantic-layer/blocks/revenue_by_segment.yaml +11 -0
- package/dist/assets/templates/starter/semantic-layer/dimensions/segment_tier.yaml +6 -0
- package/dist/assets/templates/starter/semantic-layer/hierarchies/revenue_time.yaml +12 -0
- package/dist/assets/templates/starter/semantic-layer/metrics/revenue.yaml +7 -0
- package/dist/assets/templates/starter/workbooks/.gitkeep +1 -0
- package/dist/assets/templates/taxi/README.md +19 -0
- package/dist/assets/templates/taxi/blocks/airport_mix.dql +25 -0
- package/dist/assets/templates/taxi/blocks/revenue_by_segment.dql +24 -0
- package/dist/assets/templates/taxi/dashboards/city_operations.dql +25 -0
- package/dist/assets/templates/taxi/data/trips.csv +13 -0
- package/dist/assets/templates/taxi/dql.config.json +13 -0
- package/dist/assets/templates/taxi/semantic-layer/.gitkeep +1 -0
- package/dist/assets/templates/taxi/workbooks/.gitkeep +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/notebook.d.ts.map +1 -1
- package/dist/commands/notebook.js +8 -2
- package/dist/commands/notebook.js.map +1 -1
- package/dist/local-runtime.d.ts +6 -0
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +65 -9
- package/dist/local-runtime.js.map +1 -1
- package/dist/local-runtime.test.js +24 -1
- package/dist/local-runtime.test.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# __PROJECT_NAME__
|
|
2
|
+
|
|
3
|
+
This starter gives you a local-first DQL project that is ready for parsing,
|
|
4
|
+
previewing, notebook exploration, and experimentation.
|
|
5
|
+
|
|
6
|
+
```text
|
|
7
|
+
blocks/
|
|
8
|
+
dashboards/
|
|
9
|
+
data/
|
|
10
|
+
dql.config.json
|
|
11
|
+
notebooks/
|
|
12
|
+
workbooks/
|
|
13
|
+
semantic-layer/
|
|
14
|
+
metrics/
|
|
15
|
+
dimensions/
|
|
16
|
+
hierarchies/
|
|
17
|
+
blocks/
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
dql doctor
|
|
24
|
+
dql notebook
|
|
25
|
+
dql new block "Pipeline Health"
|
|
26
|
+
dql new semantic-block "ARR Growth"
|
|
27
|
+
dql new dashboard "Revenue Overview"
|
|
28
|
+
dql new workbook "Quarterly Review"
|
|
29
|
+
dql parse blocks/pipeline_health.dql
|
|
30
|
+
dql preview blocks/pipeline_health.dql --open
|
|
31
|
+
dql build blocks/pipeline_health.dql
|
|
32
|
+
dql serve dist/pipeline_health
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## What's Included
|
|
36
|
+
|
|
37
|
+
- `blocks/` — example charted and query-only DQL blocks
|
|
38
|
+
- `dashboards/` — empty folder for dashboard scaffolds
|
|
39
|
+
- `data/` — sample revenue CSV for local DuckDB/file preview flows
|
|
40
|
+
- `dql.config.json` — starter project configuration
|
|
41
|
+
- `notebooks/welcome.dqlnb` — guided notebook walkthrough for the browser notebook
|
|
42
|
+
- `workbooks/` — empty folder for workbook scaffolds
|
|
43
|
+
- `semantic-layer/` — example metrics, dimensions, hierarchies, and companion metadata
|
|
44
|
+
|
|
45
|
+
## Adopt the Starter Safely
|
|
46
|
+
|
|
47
|
+
- start in local file mode first
|
|
48
|
+
- keep sample datasets under `data/`
|
|
49
|
+
- run `dql doctor` before previewing if setup feels off
|
|
50
|
+
- add tests to every reusable block
|
|
51
|
+
|
|
52
|
+
## Learn More
|
|
53
|
+
|
|
54
|
+
- See the main DQL documentation for `project-config` and `data-sources` guidance.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
block "Revenue by Segment" {
|
|
2
|
+
domain = "revenue"
|
|
3
|
+
type = "custom"
|
|
4
|
+
description = "Starter block for segment revenue analysis using local CSV sample data"
|
|
5
|
+
tags = ["starter", "revenue"]
|
|
6
|
+
owner = "template"
|
|
7
|
+
|
|
8
|
+
params {
|
|
9
|
+
period = "current_quarter"
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
query = """
|
|
13
|
+
SELECT segment_tier AS segment, SUM(amount) AS revenue
|
|
14
|
+
FROM read_csv_auto('./data/revenue.csv')
|
|
15
|
+
WHERE fiscal_period = ${period}
|
|
16
|
+
GROUP BY segment_tier
|
|
17
|
+
ORDER BY revenue DESC
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
visualization {
|
|
21
|
+
chart = "bar"
|
|
22
|
+
x = segment
|
|
23
|
+
y = revenue
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
tests {
|
|
27
|
+
assert row_count > 0
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
block "Revenue Trend Query" {
|
|
2
|
+
domain = "revenue"
|
|
3
|
+
type = "custom"
|
|
4
|
+
description = "Starter query-only block for monthly revenue trends using local CSV sample data"
|
|
5
|
+
tags = ["starter", "revenue", "query-only"]
|
|
6
|
+
owner = "template"
|
|
7
|
+
|
|
8
|
+
query = """
|
|
9
|
+
SELECT
|
|
10
|
+
DATE_TRUNC('month', CAST(recognized_at AS DATE)) AS revenue_month,
|
|
11
|
+
SUM(amount) AS total_revenue
|
|
12
|
+
FROM read_csv_auto('./data/revenue.csv')
|
|
13
|
+
GROUP BY 1
|
|
14
|
+
ORDER BY 1
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
tests {
|
|
18
|
+
assert row_count > 0
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
recognized_at,segment_tier,amount,fiscal_period,fiscal_year,fiscal_quarter
|
|
2
|
+
2025-01-03,Enterprise,185000,current_quarter,2025,Q1
|
|
3
|
+
2025-01-14,Mid-Market,92000,current_quarter,2025,Q1
|
|
4
|
+
2025-01-25,SMB,28000,current_quarter,2025,Q1
|
|
5
|
+
2025-02-05,Enterprise,210000,current_quarter,2025,Q1
|
|
6
|
+
2025-02-09,Mid-Market,101000,current_quarter,2025,Q1
|
|
7
|
+
2025-02-18,SMB,31000,current_quarter,2025,Q1
|
|
8
|
+
2025-03-02,Enterprise,223000,current_quarter,2025,Q1
|
|
9
|
+
2025-03-11,Mid-Market,108000,current_quarter,2025,Q1
|
|
10
|
+
2025-03-19,SMB,34000,current_quarter,2025,Q1
|
|
11
|
+
2025-04-07,Enterprise,205000,next_quarter,2025,Q2
|
|
12
|
+
2025-04-16,Mid-Market,99000,next_quarter,2025,Q2
|
|
13
|
+
2025-04-23,SMB,29000,next_quarter,2025,Q2
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
name: revenue_by_segment
|
|
2
|
+
block: revenue_by_segment
|
|
3
|
+
domain: revenue
|
|
4
|
+
description: Optional companion metadata for the starter block
|
|
5
|
+
tags:
|
|
6
|
+
- revenue
|
|
7
|
+
- starter
|
|
8
|
+
semanticMappings:
|
|
9
|
+
segment: segment_tier
|
|
10
|
+
revenue: total_revenue
|
|
11
|
+
reviewStatus: draft
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
name: revenue_time
|
|
2
|
+
label: Revenue Time
|
|
3
|
+
description: Example fiscal calendar hierarchy
|
|
4
|
+
domain: revenue
|
|
5
|
+
levels:
|
|
6
|
+
- name: fiscal_year
|
|
7
|
+
dimension: fiscal_year
|
|
8
|
+
order: 1
|
|
9
|
+
- name: fiscal_quarter
|
|
10
|
+
dimension: fiscal_quarter
|
|
11
|
+
order: 2
|
|
12
|
+
defaultRollup: sum
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# __PROJECT_NAME__
|
|
2
|
+
|
|
3
|
+
This template packages a city mobility analytics sandbox with taxi trip data.
|
|
4
|
+
|
|
5
|
+
## Included assets
|
|
6
|
+
|
|
7
|
+
- `blocks/revenue_by_segment.dql` — trip volume by pickup borough
|
|
8
|
+
- `blocks/airport_mix.dql` — airport trip fare mix
|
|
9
|
+
- `dashboards/city_operations.dql` — operations dashboard with fares and trip counts
|
|
10
|
+
- `data/trips.csv` — local taxi trip sample dataset
|
|
11
|
+
- `notebooks/welcome.dqlnb` — browser notebook walkthrough
|
|
12
|
+
|
|
13
|
+
## Quick start
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
dql doctor
|
|
17
|
+
dql notebook
|
|
18
|
+
dql preview blocks/revenue_by_segment.dql --open
|
|
19
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
block "Airport Fare Mix" {
|
|
2
|
+
domain = "mobility"
|
|
3
|
+
type = "custom"
|
|
4
|
+
description = "Average fare for airport versus non-airport trips"
|
|
5
|
+
tags = ["taxi", "airport"]
|
|
6
|
+
owner = "template"
|
|
7
|
+
|
|
8
|
+
query = """
|
|
9
|
+
SELECT CASE WHEN airport_flag THEN 'Airport' ELSE 'City' END AS trip_type,
|
|
10
|
+
ROUND(AVG(fare_amount), 2) AS avg_fare
|
|
11
|
+
FROM read_csv_auto('./data/trips.csv')
|
|
12
|
+
GROUP BY trip_type
|
|
13
|
+
ORDER BY avg_fare DESC
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
visualization {
|
|
17
|
+
chart = "bar"
|
|
18
|
+
x = trip_type
|
|
19
|
+
y = avg_fare
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
tests {
|
|
23
|
+
assert row_count > 0
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
block "Trips by Borough" {
|
|
2
|
+
domain = "mobility"
|
|
3
|
+
type = "custom"
|
|
4
|
+
description = "Trip count by pickup borough"
|
|
5
|
+
tags = ["taxi", "operations"]
|
|
6
|
+
owner = "template"
|
|
7
|
+
|
|
8
|
+
query = """
|
|
9
|
+
SELECT pickup_borough, COUNT(*) AS revenue
|
|
10
|
+
FROM read_csv_auto('./data/trips.csv')
|
|
11
|
+
GROUP BY pickup_borough
|
|
12
|
+
ORDER BY revenue DESC
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
visualization {
|
|
16
|
+
chart = "bar"
|
|
17
|
+
x = pickup_borough
|
|
18
|
+
y = revenue
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
tests {
|
|
22
|
+
assert row_count > 0
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
dashboard "City Operations" {
|
|
2
|
+
chart.kpi(
|
|
3
|
+
SELECT COUNT(*) AS total_trips
|
|
4
|
+
FROM read_csv_auto('./data/trips.csv'),
|
|
5
|
+
metrics = ["total_trips"],
|
|
6
|
+
title = "Total Trips"
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
chart.line(
|
|
10
|
+
SELECT pickup_hour, ROUND(AVG(fare_amount), 2) AS avg_fare
|
|
11
|
+
FROM read_csv_auto('./data/trips.csv')
|
|
12
|
+
GROUP BY pickup_hour
|
|
13
|
+
ORDER BY pickup_hour,
|
|
14
|
+
x = pickup_hour,
|
|
15
|
+
y = avg_fare,
|
|
16
|
+
title = "Average Fare by Hour"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
chart.table(
|
|
20
|
+
SELECT pickup_date, pickup_borough, dropoff_borough, trip_miles, fare_amount, tip_amount
|
|
21
|
+
FROM read_csv_auto('./data/trips.csv')
|
|
22
|
+
ORDER BY fare_amount DESC,
|
|
23
|
+
title = "Highest Fare Trips"
|
|
24
|
+
)
|
|
25
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
trip_id,pickup_date,pickup_hour,pickup_borough,dropoff_borough,payment_type,fare_amount,tip_amount,trip_miles,airport_flag
|
|
2
|
+
T-001,2025-01-03,6,Manhattan,Queens,Card,32.5,6.2,8.4,true
|
|
3
|
+
T-002,2025-01-03,7,Brooklyn,Manhattan,Card,21.4,4.1,5.6,false
|
|
4
|
+
T-003,2025-01-04,8,Queens,Manhattan,Cash,27.8,0,7.1,true
|
|
5
|
+
T-004,2025-01-04,9,Manhattan,Brooklyn,Card,18.9,3.7,4.9,false
|
|
6
|
+
T-005,2025-01-05,11,Bronx,Manhattan,Card,25.7,5.1,6.8,false
|
|
7
|
+
T-006,2025-01-05,12,Manhattan,Queens,Card,34.2,6.8,8.9,true
|
|
8
|
+
T-007,2025-01-06,13,Queens,Brooklyn,Card,19.3,3.5,5.2,false
|
|
9
|
+
T-008,2025-01-06,15,Manhattan,Manhattan,Card,14.6,3.2,2.8,false
|
|
10
|
+
T-009,2025-01-07,17,Brooklyn,Queens,Cash,16.8,0,4.1,false
|
|
11
|
+
T-010,2025-01-07,18,Manhattan,Staten Island,Card,41.1,7.4,12.3,false
|
|
12
|
+
T-011,2025-01-08,19,Queens,Manhattan,Card,29.6,5.9,7.7,true
|
|
13
|
+
T-012,2025-01-08,21,Brooklyn,Manhattan,Card,22.1,4.6,5.9,false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkB3C,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DtF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -4,7 +4,9 @@ import { fileURLToPath } from 'node:url';
|
|
|
4
4
|
import { createWelcomeNotebook, serializeNotebook } from '@duckcodeailabs/dql-notebook';
|
|
5
5
|
import { runNotebook } from './notebook.js';
|
|
6
6
|
const COMMAND_DIR = dirname(fileURLToPath(import.meta.url));
|
|
7
|
-
const
|
|
7
|
+
const PACKAGED_TEMPLATE_ROOT = resolve(COMMAND_DIR, '../assets/templates');
|
|
8
|
+
const REPO_TEMPLATE_ROOT = resolve(COMMAND_DIR, '../../../../templates');
|
|
9
|
+
const TEMPLATE_ROOT = existsSync(PACKAGED_TEMPLATE_ROOT) ? PACKAGED_TEMPLATE_ROOT : REPO_TEMPLATE_ROOT;
|
|
8
10
|
const TEXT_FILE_EXTENSIONS = new Set([
|
|
9
11
|
'.json',
|
|
10
12
|
'.md',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5G,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAc3C,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B1F"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
2
3
|
import { fileURLToPath } from 'node:url';
|
|
3
4
|
import { QueryExecutor } from '@duckcodeailabs/dql-connectors';
|
|
4
5
|
import { assertLocalQueryRuntimeReady, findProjectRoot, loadProjectConfig, startLocalServer, } from '../local-runtime.js';
|
|
5
6
|
import { maybeOpenBrowser } from '../open-browser.js';
|
|
6
7
|
const COMMAND_DIR = dirname(fileURLToPath(import.meta.url));
|
|
7
|
-
const
|
|
8
|
+
const PACKAGED_NOTEBOOK_APP_DIR = resolve(COMMAND_DIR, '../assets/notebook-browser');
|
|
9
|
+
const REPO_NOTEBOOK_APP_DIR = resolve(COMMAND_DIR, '../../../../apps/notebook-browser');
|
|
10
|
+
const NOTEBOOK_APP_DIR = existsSync(PACKAGED_NOTEBOOK_APP_DIR) ? PACKAGED_NOTEBOOK_APP_DIR : REPO_NOTEBOOK_APP_DIR;
|
|
8
11
|
export async function runNotebook(targetArg, flags) {
|
|
9
12
|
const baseDir = resolve(targetArg ?? '.');
|
|
10
13
|
const projectRoot = findProjectRoot(baseDir);
|
|
14
|
+
if (!existsSync(join(projectRoot, 'dql.config.json'))) {
|
|
15
|
+
throw new Error(`No DQL project was found at "${baseDir}". Run "dql notebook" from a project root, or pass a project path such as "dql notebook ./my-dql-project".`);
|
|
16
|
+
}
|
|
11
17
|
const config = loadProjectConfig(projectRoot);
|
|
12
18
|
const executor = new QueryExecutor();
|
|
13
19
|
const connection = config.defaultConnection ?? { driver: 'file', filepath: ':memory:' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,MAAM,yBAAyB,GAAG,OAAO,CAAC,WAAW,EAAE,4BAA4B,CAAC,CAAC;AACrF,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAEnH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAwB,EAAE,KAAe;IACzE,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,gCAAgC,OAAO,4GAA4G,CACpJ,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,IAAI,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEjG,MAAM,4BAA4B,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;QAClC,OAAO,EAAE,gBAAgB;QACzB,WAAW;QACX,QAAQ;QACR,UAAU;QACV,aAAa,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI;KAC1D,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;IACvC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/local-runtime.d.ts
CHANGED
|
@@ -22,4 +22,10 @@ export declare function formatLocalQueryRuntimeError(connection: ConnectionConfi
|
|
|
22
22
|
export declare function serializeJSON(value: unknown): string;
|
|
23
23
|
export declare function findProjectRoot(startDir: string): string;
|
|
24
24
|
export declare function loadProjectConfig(projectRoot: string): ProjectConfig;
|
|
25
|
+
export declare function prepareLocalExecution(sql: string, connection: ConnectionConfig, projectRoot: string, projectConfig: ProjectConfig): {
|
|
26
|
+
sql: string;
|
|
27
|
+
connection: ConnectionConfig;
|
|
28
|
+
};
|
|
29
|
+
export declare function normalizeProjectConnection(connection: ConnectionConfig, projectRoot: string): ConnectionConfig;
|
|
30
|
+
export declare function resolveProjectRelativeSqlPaths(sql: string, projectRoot: string, dataDir?: string): string;
|
|
25
31
|
//# sourceMappingURL=local-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runtime.d.ts","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAStF,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,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;CACvB;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":"AAGA,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAStF,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,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;CACvB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwLhF;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,OAAO,GACb,MAAM,CAaR;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQpD;AA8BD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAOpE;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,GAC3B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAQ/C;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAY9G;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAezG"}
|
package/dist/local-runtime.js
CHANGED
|
@@ -4,9 +4,11 @@ import { dirname, extname, join, normalize, resolve } from 'node:path';
|
|
|
4
4
|
import { buildExecutionPlan, createWelcomeNotebook, deserializeNotebook, getConnectorFormSchemas, } from '@duckcodeailabs/dql-notebook';
|
|
5
5
|
export async function startLocalServer(opts) {
|
|
6
6
|
const { rootDir, executor, connection, preferredPort, projectRoot = process.cwd() } = opts;
|
|
7
|
+
const projectConfig = loadProjectConfig(projectRoot);
|
|
7
8
|
const server = createServer(async (req, res) => {
|
|
8
9
|
const requestUrl = req.url || '/';
|
|
9
|
-
const
|
|
10
|
+
const url = new URL(requestUrl, 'http://127.0.0.1');
|
|
11
|
+
const path = url.pathname || '/';
|
|
10
12
|
if (req.method === 'GET' && path === '/api/health') {
|
|
11
13
|
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
12
14
|
res.end(serializeJSON({ status: 'ok' }));
|
|
@@ -20,7 +22,8 @@ export async function startLocalServer(opts) {
|
|
|
20
22
|
res.end(serializeJSON({ columns: [], rows: [], error: 'Missing SQL in request body.' }));
|
|
21
23
|
return;
|
|
22
24
|
}
|
|
23
|
-
const
|
|
25
|
+
const prepared = prepareLocalExecution(typeof body.sql === 'string' ? body.sql : '', isConnectionConfig(body.connection) ? body.connection : connection, projectRoot, projectConfig);
|
|
26
|
+
const result = await executor.executeQuery(prepared.sql, Array.isArray(body.sqlParams) ? body.sqlParams : [], body.variables && typeof body.variables === 'object' ? body.variables : {}, prepared.connection);
|
|
24
27
|
const payload = serializeJSON(result);
|
|
25
28
|
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
26
29
|
res.end(payload);
|
|
@@ -42,7 +45,7 @@ export async function startLocalServer(opts) {
|
|
|
42
45
|
if (req.method === 'POST' && path === '/api/test-connection') {
|
|
43
46
|
try {
|
|
44
47
|
const body = await readJSON(req);
|
|
45
|
-
const target = isConnectionConfig(body.connection) ? body.connection : connection;
|
|
48
|
+
const target = normalizeProjectConnection(isConnectionConfig(body.connection) ? body.connection : connection, projectRoot);
|
|
46
49
|
const connector = await executor.getConnector(target);
|
|
47
50
|
const ok = await connector.ping();
|
|
48
51
|
res.writeHead(ok ? 200 : 400, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
@@ -55,19 +58,35 @@ export async function startLocalServer(opts) {
|
|
|
55
58
|
return;
|
|
56
59
|
}
|
|
57
60
|
if (req.method === 'GET' && path === '/api/notebook/bootstrap') {
|
|
58
|
-
const
|
|
59
|
-
const welcomeNotebook = resolveNotebook(projectRoot, config.project ?? 'DQL Project');
|
|
61
|
+
const welcomeNotebook = resolveNotebook(projectRoot, projectConfig.project ?? 'DQL Project');
|
|
60
62
|
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
61
63
|
res.end(serializeJSON({
|
|
62
64
|
projectRoot,
|
|
63
|
-
project:
|
|
64
|
-
defaultConnection:
|
|
65
|
+
project: projectConfig.project ?? 'DQL Project',
|
|
66
|
+
defaultConnection: projectConfig.defaultConnection ?? connection,
|
|
65
67
|
connectorForms: getConnectorFormSchemas(),
|
|
66
68
|
files: listProjectFiles(projectRoot),
|
|
67
69
|
notebook: welcomeNotebook,
|
|
68
70
|
}));
|
|
69
71
|
return;
|
|
70
72
|
}
|
|
73
|
+
if (req.method === 'GET' && path === '/api/notebook/file') {
|
|
74
|
+
const relativePath = url.searchParams.get('path');
|
|
75
|
+
if (!relativePath) {
|
|
76
|
+
res.writeHead(400, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
77
|
+
res.end(serializeJSON({ error: 'Missing file path.' }));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const filePath = safeJoin(projectRoot, relativePath);
|
|
81
|
+
if (!filePath || !existsSync(filePath) || statSync(filePath).isDirectory()) {
|
|
82
|
+
res.writeHead(404, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
83
|
+
res.end(serializeJSON({ error: `File not found: ${relativePath}` }));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
res.writeHead(200, { 'Content-Type': contentTypeFor(filePath) });
|
|
87
|
+
res.end(readFileSync(filePath));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
71
90
|
if (req.method === 'POST' && path === '/api/notebook/execute') {
|
|
72
91
|
try {
|
|
73
92
|
const body = await readJSON(req);
|
|
@@ -77,14 +96,14 @@ export async function startLocalServer(opts) {
|
|
|
77
96
|
res.end(serializeJSON({ error: 'Missing notebook cell payload.' }));
|
|
78
97
|
return;
|
|
79
98
|
}
|
|
80
|
-
const target = isConnectionConfig(body.connection) ? body.connection : connection;
|
|
81
99
|
const plan = buildExecutionPlan(cell);
|
|
82
100
|
if (!plan) {
|
|
83
101
|
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
84
102
|
res.end(serializeJSON({ cellType: cell.type, result: null }));
|
|
85
103
|
return;
|
|
86
104
|
}
|
|
87
|
-
const
|
|
105
|
+
const prepared = prepareLocalExecution(plan.sql, isConnectionConfig(body.connection) ? body.connection : connection, projectRoot, projectConfig);
|
|
106
|
+
const result = await executor.executeQuery(prepared.sql, plan.sqlParams, plan.variables, prepared.connection);
|
|
88
107
|
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
|
|
89
108
|
res.end(serializeJSON({
|
|
90
109
|
cellType: cell.type,
|
|
@@ -213,6 +232,43 @@ export function loadProjectConfig(projectRoot) {
|
|
|
213
232
|
}
|
|
214
233
|
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
215
234
|
}
|
|
235
|
+
export function prepareLocalExecution(sql, connection, projectRoot, projectConfig) {
|
|
236
|
+
const normalizedConnection = normalizeProjectConnection(connection, projectRoot);
|
|
237
|
+
return {
|
|
238
|
+
sql: shouldResolveProjectPaths(normalizedConnection)
|
|
239
|
+
? resolveProjectRelativeSqlPaths(sql, projectRoot, projectConfig.dataDir)
|
|
240
|
+
: sql,
|
|
241
|
+
connection: normalizedConnection,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
export function normalizeProjectConnection(connection, projectRoot) {
|
|
245
|
+
const normalized = { ...connection };
|
|
246
|
+
if ((normalized.driver === 'file' || normalized.driver === 'duckdb') && normalized.filepath && normalized.filepath !== ':memory:' && !isAbsoluteLikePath(normalized.filepath)) {
|
|
247
|
+
normalized.filepath = resolve(projectRoot, normalized.filepath);
|
|
248
|
+
}
|
|
249
|
+
if (normalized.driver === 'sqlite' && normalized.database && normalized.database !== ':memory:' && !isAbsoluteLikePath(normalized.database)) {
|
|
250
|
+
normalized.database = resolve(projectRoot, normalized.database);
|
|
251
|
+
}
|
|
252
|
+
return normalized;
|
|
253
|
+
}
|
|
254
|
+
export function resolveProjectRelativeSqlPaths(sql, projectRoot, dataDir) {
|
|
255
|
+
const resolvedRoot = resolve(projectRoot);
|
|
256
|
+
const normalizedDataDir = typeof dataDir === 'string' && dataDir.trim().length > 0
|
|
257
|
+
? resolve(projectRoot, dataDir)
|
|
258
|
+
: join(resolvedRoot, 'data');
|
|
259
|
+
return sql.replace(/\b(read_csv_auto|read_csv|read_parquet|read_json_auto|read_json|read_ndjson_auto|read_ndjson|read_xlsx|parquet_scan)\s*\(\s*(['"])(\.{1,2}\/[^'"]*)\2/gi, (_match, fnName, quote, relativePath) => {
|
|
260
|
+
const absolutePath = relativePath.startsWith('./data/')
|
|
261
|
+
? join(normalizedDataDir, relativePath.slice('./data/'.length))
|
|
262
|
+
: resolve(resolvedRoot, relativePath);
|
|
263
|
+
return `${fnName}(${quote}${absolutePath.replaceAll('\\', '/')}${quote}`;
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function shouldResolveProjectPaths(connection) {
|
|
267
|
+
return connection.driver === 'file' || connection.driver === 'duckdb' || connection.driver === 'sqlite';
|
|
268
|
+
}
|
|
269
|
+
function isAbsoluteLikePath(value) {
|
|
270
|
+
return value.startsWith('/') || value.startsWith('\\') || /^[A-Za-z]:[\\/]/.test(value);
|
|
271
|
+
}
|
|
216
272
|
function readJSON(req) {
|
|
217
273
|
return new Promise((resolvePromise, reject) => {
|
|
218
274
|
const chunks = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runtime.js","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-runtime.js","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"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"}
|