@graphenedata/cli 0.0.4 → 0.0.6
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/cli.ts +25 -55
- package/dist/cli/cli.js +1194 -435
- package/dist/docs/graphene.md +1074 -166
- package/dist/ui/component-utilities/echarts.js +3 -1
- package/dist/ui/component-utilities/inputUtils.ts +11 -0
- package/dist/ui/component-utilities/themeStores.ts +35 -7
- package/dist/ui/components/Area.svelte +6 -3
- package/dist/ui/components/AreaChart.svelte +3 -1
- package/dist/ui/components/Bar.svelte +14 -8
- package/dist/ui/components/BarChart.svelte +3 -1
- package/dist/ui/components/BigValue.svelte +1 -1
- package/dist/ui/components/Chart.svelte +57 -101
- package/dist/ui/components/Column.svelte +2 -0
- package/dist/ui/components/ECharts.svelte +2 -0
- package/dist/ui/components/Line.svelte +8 -5
- package/dist/ui/components/LineChart.svelte +3 -2
- package/dist/ui/components/PieChart.svelte +1 -1
- package/dist/ui/components/QueryLoad.svelte +5 -6
- package/dist/ui/components/TableRow.svelte +1 -1
- package/dist/ui/components/_Table.svelte +2 -0
- package/dist/ui/internal/queryEngine.ts +39 -15
- package/dist/ui/internal/telemetry.ts +5 -3
- package/dist/ui/web.js +28 -12
- package/package.json +3 -2
- package/dist/docs/data_apps/components/charts/annotations.md +0 -673
- package/dist/docs/data_apps/components/charts/area-chart.md +0 -202
- package/dist/docs/data_apps/components/charts/bar-chart.md +0 -317
- package/dist/docs/data_apps/components/charts/box-plot.md +0 -190
- package/dist/docs/data_apps/components/charts/bubble-chart.md +0 -151
- package/dist/docs/data_apps/components/charts/calendar-heatmap.md +0 -112
- package/dist/docs/data_apps/components/charts/custom-echarts.md +0 -308
- package/dist/docs/data_apps/components/charts/echarts-options.md +0 -217
- package/dist/docs/data_apps/components/charts/funnel-chart.md +0 -106
- package/dist/docs/data_apps/components/charts/heatmap.md +0 -180
- package/dist/docs/data_apps/components/charts/histogram.md +0 -107
- package/dist/docs/data_apps/components/charts/line-chart.md +0 -265
- package/dist/docs/data_apps/components/charts/mixed-type-charts.md +0 -240
- package/dist/docs/data_apps/components/charts/sankey-diagram.md +0 -301
- package/dist/docs/data_apps/components/charts/scatter-plot.md +0 -134
- package/dist/docs/data_apps/components/charts/sparkline.md +0 -68
- package/dist/docs/data_apps/components/data/big-value.md +0 -153
- package/dist/docs/data_apps/components/data/delta.md +0 -89
- package/dist/docs/data_apps/components/data/table.md +0 -470
- package/dist/docs/data_apps/components/data/value.md +0 -97
- package/dist/docs/data_apps/components/inputs/button-group.md +0 -154
- package/dist/docs/data_apps/components/inputs/checkbox.md +0 -52
- package/dist/docs/data_apps/components/inputs/date-input.md +0 -131
- package/dist/docs/data_apps/components/inputs/date-range.md +0 -124
- package/dist/docs/data_apps/components/inputs/dimension-grid.md +0 -67
- package/dist/docs/data_apps/components/inputs/dropdown.md +0 -199
- package/dist/docs/data_apps/components/inputs/index.md +0 -3
- package/dist/docs/data_apps/components/inputs/slider.md +0 -126
- package/dist/docs/data_apps/components/inputs/text-input.md +0 -86
- package/dist/docs/data_apps/components/maps/area-map.md +0 -397
- package/dist/docs/data_apps/components/maps/base-map.md +0 -269
- package/dist/docs/data_apps/components/maps/bubble-map.md +0 -361
- package/dist/docs/data_apps/components/maps/point-map.md +0 -326
- package/dist/docs/data_apps/components/maps/us-map.md +0 -167
- package/dist/docs/data_apps/components/ui/accordion.md +0 -116
- package/dist/docs/data_apps/components/ui/alert.md +0 -37
- package/dist/docs/data_apps/components/ui/big-link.md +0 -19
- package/dist/docs/data_apps/components/ui/details.md +0 -58
- package/dist/docs/data_apps/components/ui/download-data.md +0 -41
- package/dist/docs/data_apps/components/ui/embed.md +0 -47
- package/dist/docs/data_apps/components/ui/grid.md +0 -45
- package/dist/docs/data_apps/components/ui/image.md +0 -61
- package/dist/docs/data_apps/components/ui/info.md +0 -47
- package/dist/docs/data_apps/components/ui/last-refreshed.md +0 -28
- package/dist/docs/data_apps/components/ui/link-button.md +0 -20
- package/dist/docs/data_apps/components/ui/link.md +0 -40
- package/dist/docs/data_apps/components/ui/modal.md +0 -57
- package/dist/docs/data_apps/components/ui/note.md +0 -32
- package/dist/docs/data_apps/components/ui/print-format-components.md +0 -85
- package/dist/docs/data_apps/components/ui/tabs.md +0 -122
package/cli.ts
CHANGED
|
@@ -5,10 +5,11 @@ import {printDiagnostics, printTable} from './printer.ts'
|
|
|
5
5
|
import {analyze, getDiagnostics, loadWorkspace, toSql, type Query} from '../lang/core.ts'
|
|
6
6
|
import fs from 'fs-extra'
|
|
7
7
|
import path from 'path'
|
|
8
|
-
import os from 'os'
|
|
9
8
|
import {loadConfig} from '../lang/config.ts'
|
|
10
9
|
import {runServeInBackground, stopGrapheneIfRunning} from './background.ts'
|
|
11
|
-
import {
|
|
10
|
+
import {check} from './check.ts'
|
|
11
|
+
import {runQuery} from './connections/index.ts'
|
|
12
|
+
import {loginPkce} from './auth.ts'
|
|
12
13
|
|
|
13
14
|
const program = new Command()
|
|
14
15
|
|
|
@@ -46,76 +47,45 @@ program
|
|
|
46
47
|
let queries = analyze(gsql)
|
|
47
48
|
if (!validQuery(queries)) return
|
|
48
49
|
let sql = toSql(queries[0])
|
|
49
|
-
let
|
|
50
|
-
let res = await connection.runQuery(sql)
|
|
50
|
+
let res = await runQuery(sql)
|
|
51
51
|
printTable(res.rows)
|
|
52
52
|
})
|
|
53
53
|
|
|
54
54
|
program
|
|
55
55
|
.command('serve')
|
|
56
56
|
.description('Run the local server')
|
|
57
|
-
.option('--
|
|
58
|
-
.action(async (options: {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
await mod.serve2()
|
|
62
|
-
} else {
|
|
57
|
+
.option('--bg', 'Run the server in the background')
|
|
58
|
+
.action(async (options: {bg?: boolean}) => {
|
|
59
|
+
await stopGrapheneIfRunning()
|
|
60
|
+
if (options.bg) {
|
|
63
61
|
await runServeInBackground()
|
|
64
62
|
process.exit(0)
|
|
63
|
+
} else {
|
|
64
|
+
let mod = await import('./serve2.ts') // load dynamically, so we're not pulling in a bunch of deps we might not need
|
|
65
|
+
await mod.serve2()
|
|
65
66
|
}
|
|
66
67
|
})
|
|
67
68
|
|
|
68
|
-
program
|
|
69
|
-
.command('stop')
|
|
69
|
+
program.command('stop')
|
|
70
70
|
.description('Stop the local server')
|
|
71
|
-
.action(async () => {
|
|
72
|
-
await stopGrapheneIfRunning(process.cwd())
|
|
73
|
-
})
|
|
71
|
+
.action(async () => { await stopGrapheneIfRunning() })
|
|
74
72
|
|
|
75
73
|
program
|
|
76
74
|
.command('check')
|
|
77
|
-
.description('Check the project for errors')
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
process.exit(1)
|
|
84
|
-
}
|
|
85
|
-
console.log('No errors found 💎')
|
|
75
|
+
.description('Check the project for errors, optionally capturing a page screenshot')
|
|
76
|
+
.argument('[mdFile]', 'Markdown file to check (e.g., index.md)')
|
|
77
|
+
.option('-c, --chart <chartTitle>', 'Title of a specific chart to capture')
|
|
78
|
+
.action(async (mdArg: string | undefined, options: {chart?: string}) => {
|
|
79
|
+
let res = await check({mdArg, chart: options.chart})
|
|
80
|
+
process.exit(res ? 0 : 1) // import to call `exit`, bc if we started the server in the background, just returning won't actually exit the process.
|
|
86
81
|
})
|
|
87
82
|
|
|
88
|
-
program
|
|
89
|
-
.
|
|
90
|
-
.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
let response = await fetch('http://localhost:4000/graphene/view', {
|
|
95
|
-
method: 'POST',
|
|
96
|
-
headers: {'Content-Type': 'application/json'},
|
|
97
|
-
body: JSON.stringify({mdFile, chart: options.chart}),
|
|
98
|
-
})
|
|
99
|
-
if (!response.ok) throw new Error(`View request failed: ${await response.text()}`)
|
|
100
|
-
let result = await response.json()
|
|
101
|
-
|
|
102
|
-
if (result.errors && result.errors.length > 0) {
|
|
103
|
-
console.error('Errors found:')
|
|
104
|
-
result.errors.forEach(error => console.error(JSON.stringify(error)))
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (result.stillLoading) {
|
|
108
|
-
console.error('Warning: Queries were still loading when the screenshot was taken')
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Save screenshot to temp file
|
|
112
|
-
if (result.screenshot) {
|
|
113
|
-
let filename = `graphene-screenshot-${new Date().toISOString().replace(/[:.]/g, '-')}.png`
|
|
114
|
-
let screenshotPath = path.join(os.tmpdir(), filename)
|
|
115
|
-
let base64Data = result.screenshot.replace(/^data:image\/png;base64,/, '')
|
|
116
|
-
await fs.writeFile(screenshotPath, base64Data, 'base64')
|
|
117
|
-
console.log('Screenshot saved to', screenshotPath)
|
|
118
|
-
}
|
|
83
|
+
program.command('login')
|
|
84
|
+
.description('Log in to Graphene Cloud')
|
|
85
|
+
.action(async () => {
|
|
86
|
+
await loginPkce()
|
|
87
|
+
console.log('Successfully logged in')
|
|
88
|
+
process.exit(0)
|
|
119
89
|
})
|
|
120
90
|
|
|
121
91
|
program.parse(process.argv)
|