@cloudcare/guance-front-tools 1.0.20 → 1.0.21
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 +0 -64
- package/lib/cjs/generated/dashboardCharts.d.ts +172 -69
- package/lib/cjs/scripts/convert-grafana-dashboard-core.js +417 -56
- package/lib/esm/generated/dashboardCharts.d.ts +172 -69
- package/lib/esm/scripts/convert-grafana-dashboard-core.js +417 -56
- package/lib/example/1860_rev45.json +15536 -0
- package/lib/example/guance-dashboard.json +16766 -2702
- package/lib/scripts/convert-grafana-dashboard-core.js +1899 -1633
- package/package.json +1 -1
- package/schemas/charts/chart-schema.json +711 -1
- package/schemas/charts/settings/_common-settings-gradual-color-schema.json +17 -3
- package/schemas/charts/settings/_common-settings-legend-values-schema.json +23 -15
- package/{skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-treemap-settings-schema.json → schemas/charts/settings/chart-change-settings-schema.json} +34 -32
- package/schemas/charts/settings/chart-chinamap-settings-schema.json +2 -1
- package/schemas/charts/settings/chart-command-settings-schema.json +16 -0
- package/schemas/charts/settings/chart-hexgon-settings-schema.json +2 -1
- package/{skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-log-settings-schema.json → schemas/charts/settings/chart-monitor-settings-schema.json} +27 -30
- package/schemas/charts/settings/chart-sequence-settings-schema.json +2 -3
- package/schemas/charts/settings/chart-topology-settings-schema.json +1 -6
- package/schemas/charts/settings/chart-video-settings-schema.json +45 -0
- package/schemas/charts/settings/chart-worldmap-settings-schema.json +2 -1
- package/schemas/charts/settings/settings-alias-schema.json +14 -1
- package/schemas/charts/settings/settings-compare-schema.json +20 -12
- package/schemas/charts/settings/settings-schema.json +13 -1
- package/schemas/charts/settings/settings-time-schema.json +38 -23
- package/schemas/charts/settings/settings-unit-items-schema.json +222 -210
- package/schemas/charts/settings/settings-units-schema.json +0 -3
- package/test/cli.test.mjs +66 -44
- package/skills/grafana-to-guance-dashboard/SKILL.md +0 -490
- package/skills/grafana-to-guance-dashboard/agents/openai.yaml +0 -4
- package/skills/grafana-to-guance-dashboard/fixtures/grafana-dashboard.guance.json +0 -1029
- package/skills/grafana-to-guance-dashboard/fixtures/grafana-dashboard.json +0 -878
- package/skills/grafana-to-guance-dashboard/package.json +0 -16
- package/skills/grafana-to-guance-dashboard/references/conversion-audit-checklist.md +0 -183
- package/skills/grafana-to-guance-dashboard/references/converter-notes.md +0 -244
- package/skills/grafana-to-guance-dashboard/references/promql-compatibility-cheatsheet.md +0 -172
- package/skills/grafana-to-guance-dashboard/references/unit-inference-cheatsheet.md +0 -174
- package/skills/grafana-to-guance-dashboard/schemas/charts/chart-schema.json +0 -84
- package/skills/grafana-to-guance-dashboard/schemas/charts/common/chart-link-item-schema.json +0 -48
- package/skills/grafana-to-guance-dashboard/schemas/charts/common/chart-links-schema.json +0 -9
- package/skills/grafana-to-guance-dashboard/schemas/charts/common/common-chart-types-schema.json +0 -39
- package/skills/grafana-to-guance-dashboard/schemas/charts/common/common-vars-item-schema.json +0 -117
- package/skills/grafana-to-guance-dashboard/schemas/charts/common/common-vars-schema.json +0 -10
- package/skills/grafana-to-guance-dashboard/schemas/charts/dashboard-schema.json +0 -80
- package/skills/grafana-to-guance-dashboard/schemas/charts/query/queries-schema.json +0 -10
- package/skills/grafana-to-guance-dashboard/schemas/charts/query/query-item-schema.json +0 -60
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-connect-null-schema.json +0 -7
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-gradual-color-schema.json +0 -72
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-groupby-schema.json +0 -22
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-legend-position-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-legend-values-schema.json +0 -19
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-open-stack-schema.json +0 -8
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-show-label-schema.json +0 -8
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-show-line-schema.json +0 -8
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-stack-content-schema.json +0 -12
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/_common-settings-stack-type-schema.json +0 -11
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-alarm-settings-schema.json +0 -48
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-bar-settings-schema.json +0 -69
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-chinamap-settings-schema.json +0 -102
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-funnel-settings-schema.json +0 -34
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-gauge-settings-schema.json +0 -65
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-heatmap-settings-schema.json +0 -50
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-hexgon-settings-schema.json +0 -90
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-histogram-settings-schema.json +0 -47
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-iframe-settings-schema.json +0 -24
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-object-settings-schema.json +0 -52
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-picture-settings-schema.json +0 -46
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-pie-settings-schema.json +0 -90
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-sankey-settings-schema.json +0 -34
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-scatter-bubble-settings-schema.json +0 -31
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-sequence-settings-schema.json +0 -76
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-singlestat-settings-schema.json +0 -163
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-table-settings-schema.json +0 -184
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-text-settings-schema.json +0 -20
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-toplist-settings-schema.json +0 -117
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-topology-settings-schema.json +0 -71
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/chart-worldmap-settings-schema.json +0 -102
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/common-settings-schema.json +0 -82
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-alias-schema.json +0 -47
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-chart-type-schema.json +0 -27
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-colors-schema.json +0 -46
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-compare-schema.json +0 -58
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-fixed-time-schema.json +0 -49
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-levels-schema.json +0 -33
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-schema.json +0 -79
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-time-schema.json +0 -43
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-unit-items-schema.json +0 -228
- package/skills/grafana-to-guance-dashboard/schemas/charts/settings/settings-units-schema.json +0 -59
- package/skills/grafana-to-guance-dashboard/schemas/dashboard-schema.json +0 -5
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/attribute-mutation-schema.json +0 -21
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/attributes-schema.json +0 -10
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/cdata-node-schema.json +0 -19
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/creation-reason-schema.json +0 -17
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/document-fragment-node-schema.json +0 -35
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/document-node-schema.json +0 -30
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/document-type-node-schema.json +0 -28
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/element-node-schema.json +0 -33
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/frustration-record-schema.json +0 -49
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/full-snapshot-record-schema.json +0 -26
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/incremental-data-schema.json +0 -36
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/incremental-snapshot-record-schema.json +0 -29
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/input-data-schema.json +0 -27
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/input-state-schema.json +0 -27
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/media-interaction-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/media-interaction-schema.json +0 -20
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/mouse-interaction-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/mouse-interaction-schema.json +0 -47
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/mouse-move-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/mouse-position-schema.json +0 -26
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/mutation-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/mutation-payload-schema.json +0 -42
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/node-added-mutation-schema.json +0 -41
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/node-removed-mutation-schema.json +0 -18
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/node-schema.json +0 -28
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/record-schema.json +0 -30
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/scroll-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/scroll-position-schema.json +0 -22
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/segment-metadata-schema.json +0 -28
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/segment-schema.json +0 -25
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/serialized-node-schema.json +0 -15
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/serialized-node-with-id-schema.json +0 -21
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/stylesheet-rule-add-schema.json +0 -28
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/stylesheet-rule-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/stylesheet-rule-delete-schema.json +0 -24
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/stylesheet-rule-schema.json +0 -29
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/stylesheet-schema.json +0 -30
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/text-mutation-schema.json +0 -27
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/browser/text-node-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/_common-record-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/_common-segment-metadata-schema.json +0 -30
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/_slot-supported-common-record-schema.json +0 -21
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/focus-record-schema.json +0 -34
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/meta-record-schema.json +0 -42
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/pointer-interaction-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/pointer-interaction-schema.json +0 -34
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/segment-context-schema.json +0 -46
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/view-end-record-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/viewport-resize-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/viewport-resize-dimension-schema.json +0 -18
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/common/visual-viewport-record-schema.json +0 -50
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/full-snapshot-record-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/incremental-data-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/incremental-snapshot-record-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/_common-shape-wireframe-schema.json +0 -22
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/_common-shape-wireframe-update-schema.json +0 -22
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/_common-wireframe-schema.json +0 -38
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/_common-wireframe-update-schema.json +0 -38
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/full-snapshot-record-schema.json +0 -38
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/image-wireframe-schema.json +0 -43
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/image-wireframe-update-schema.json +0 -43
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/incremental-data-schema.json +0 -21
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/incremental-snapshot-record-schema.json +0 -26
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/mutation-data-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/mutation-payload-schema.json +0 -55
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/placeholder-wireframe-schema.json +0 -28
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/placeholder-wireframe-update-schema.json +0 -28
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/record-schema.json +0 -27
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/segment-metadata-schema.json +0 -25
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/segment-schema.json +0 -25
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/shape-border-schema.json +0 -25
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/shape-style-schema.json +0 -29
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/shape-wireframe-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/shape-wireframe-update-schema.json +0 -23
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/text-position-schema.json +0 -57
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/text-style-schema.json +0 -31
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/text-wireframe-schema.json +0 -34
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/text-wireframe-update-schema.json +0 -34
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/touch-data-schema.json +0 -51
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/webview-wireframe-schema.json +0 -33
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/webview-wireframe-update-schema.json +0 -33
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/wireframe-clip-schema.json +0 -29
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/wireframe-schema.json +0 -24
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mobile/wireframe-update-mutation-schema.json +0 -24
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mutation-data-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/mutation-payload-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/record-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/segment-metadata-schema.json +0 -14
- package/skills/grafana-to-guance-dashboard/schemas/session-replay/segment-schema.json +0 -15
- package/skills/grafana-to-guance-dashboard/schemas/session-replay-browser-schema.json +0 -5
- package/skills/grafana-to-guance-dashboard/schemas/session-replay-mobile-schema.json +0 -5
- package/skills/grafana-to-guance-dashboard/schemas/session-replay-schema.json +0 -33
- package/skills/grafana-to-guance-dashboard/scripts/convert-grafana-dashboard-core.js +0 -1675
- package/skills/grafana-to-guance-dashboard/scripts/convert-grafana-dashboard.mjs +0 -120
- package/skills/grafana-to-guance-dashboard/scripts/validate-file.mjs +0 -62
- package/skills/grafana-to-guance-dashboard/test/convert.test.mjs +0 -54
package/test/cli.test.mjs
CHANGED
|
@@ -10,19 +10,22 @@ import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
|
10
10
|
import { covert } from '../lib/scripts/grafana-covert-to-guance-core.js'
|
|
11
11
|
import {
|
|
12
12
|
convertDashboard,
|
|
13
|
-
|
|
13
|
+
main as convertCliMain,
|
|
14
|
+
validateDashboardFile,
|
|
15
|
+
} from '../lib/scripts/convert-grafana-dashboard.js'
|
|
14
16
|
|
|
15
17
|
const __filename = fileURLToPath(import.meta.url)
|
|
16
18
|
const __dirname = path.dirname(__filename)
|
|
17
19
|
const projectRoot = path.resolve(__dirname, '..')
|
|
18
20
|
const require = createRequire(import.meta.url)
|
|
19
21
|
const cliPath = path.join(projectRoot, 'cli.js')
|
|
20
|
-
const
|
|
22
|
+
const converterCliPath = path.join(
|
|
21
23
|
projectRoot,
|
|
22
|
-
'
|
|
24
|
+
'lib/scripts/convert-grafana-dashboard.js'
|
|
23
25
|
)
|
|
24
26
|
const grafanaInputPath = path.join(projectRoot, 'lib/example/test2.json')
|
|
25
27
|
const grafanaLoadInputPath = path.join(projectRoot, 'lib/example/grafana2.json')
|
|
28
|
+
const grafanaNodeExporterInputPath = path.join(projectRoot, 'lib/example/1860_rev45.json')
|
|
26
29
|
|
|
27
30
|
function runCli(args, options = {}) {
|
|
28
31
|
return spawnSync(process.execPath, [cliPath, ...args], {
|
|
@@ -32,10 +35,20 @@ function runCli(args, options = {}) {
|
|
|
32
35
|
})
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
function
|
|
36
|
-
|
|
38
|
+
function runConverterCli(args, options = {}) {
|
|
39
|
+
const evalSource = [
|
|
40
|
+
"import { main } from './lib/scripts/convert-grafana-dashboard.js'",
|
|
41
|
+
`process.argv = ['node', '${converterCliPath.replace(/\\/g, '\\\\')}', ...JSON.parse(process.env.GUANCE_TEST_ARGS || '[]')]`,
|
|
42
|
+
'main()',
|
|
43
|
+
].join('; ')
|
|
44
|
+
|
|
45
|
+
return spawnSync(process.execPath, ['--input-type=module', '-e', evalSource], {
|
|
37
46
|
cwd: projectRoot,
|
|
38
47
|
encoding: 'utf-8',
|
|
48
|
+
env: {
|
|
49
|
+
...process.env,
|
|
50
|
+
GUANCE_TEST_ARGS: JSON.stringify(args),
|
|
51
|
+
},
|
|
39
52
|
...options,
|
|
40
53
|
})
|
|
41
54
|
}
|
|
@@ -53,14 +66,13 @@ test('covert delegates to the shared converter implementation', () => {
|
|
|
53
66
|
assert.deepEqual(actual, expected)
|
|
54
67
|
})
|
|
55
68
|
|
|
56
|
-
test('published esm converter entry does not depend on
|
|
69
|
+
test('published esm converter entry does not depend on legacy converter paths', async () => {
|
|
57
70
|
const esmCorePath = path.join(projectRoot, 'lib/esm/scripts/grafana-covert-to-guance-core.js')
|
|
58
71
|
const esmCoreSource = fs.readFileSync(esmCorePath, 'utf-8')
|
|
59
72
|
const esmConverterCorePath = path.join(projectRoot, 'lib/esm/scripts/convert-grafana-dashboard-core.js')
|
|
60
73
|
const esmConverterCoreSource = fs.readFileSync(esmConverterCorePath, 'utf-8')
|
|
61
74
|
|
|
62
75
|
assert.match(esmCoreSource, /convert-grafana-dashboard-core\.js/)
|
|
63
|
-
assert.doesNotMatch(esmCoreSource, /skills\/grafana-to-guance-dashboard/)
|
|
64
76
|
assert.doesNotMatch(esmConverterCoreSource, /from 'fs'|from "fs"|from 'path'|from "path"|from 'url'|from "url"|from 'ajv'|from "ajv"/)
|
|
65
77
|
assert.doesNotMatch(esmConverterCoreSource, /\?\.|\?\?/)
|
|
66
78
|
|
|
@@ -72,7 +84,7 @@ test('published esm converter entry does not depend on skills path', async () =>
|
|
|
72
84
|
assert.deepEqual(actual, expected)
|
|
73
85
|
})
|
|
74
86
|
|
|
75
|
-
test('published cjs converter entry can be required and matches
|
|
87
|
+
test('published cjs converter entry can be required and matches converter output', () => {
|
|
76
88
|
const tempDirectory = fs.mkdtempSync(path.join(projectRoot, '.tmp-guance-front-tools-cjs-'))
|
|
77
89
|
const tempPackagePath = path.join(tempDirectory, 'package.json')
|
|
78
90
|
const tempConverterPath = path.join(tempDirectory, 'convert-grafana-dashboard.js')
|
|
@@ -95,27 +107,28 @@ test('published cjs converter entry can be required and matches skill converter'
|
|
|
95
107
|
assert.deepEqual(actual, expected)
|
|
96
108
|
})
|
|
97
109
|
|
|
98
|
-
test('
|
|
99
|
-
const
|
|
110
|
+
test('converter script exports the local cli helpers and shared converter', () => {
|
|
111
|
+
const converterWrapperPath = path.join(
|
|
100
112
|
projectRoot,
|
|
101
|
-
'
|
|
113
|
+
'lib/scripts/convert-grafana-dashboard.js'
|
|
102
114
|
)
|
|
103
|
-
const
|
|
115
|
+
const converterCorePath = path.join(
|
|
104
116
|
projectRoot,
|
|
105
|
-
'
|
|
117
|
+
'lib/scripts/convert-grafana-dashboard-core.js'
|
|
106
118
|
)
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
assert.
|
|
111
|
-
assert.
|
|
112
|
-
assert.match(
|
|
113
|
-
assert.match(
|
|
114
|
-
assert.match(
|
|
115
|
-
assert.match(
|
|
116
|
-
assert.
|
|
117
|
-
assert.
|
|
118
|
-
assert.doesNotMatch(
|
|
119
|
+
const converterWrapperSource = fs.readFileSync(converterWrapperPath, 'utf-8')
|
|
120
|
+
const converterCoreSource = fs.readFileSync(converterCorePath, 'utf-8')
|
|
121
|
+
|
|
122
|
+
assert.match(converterWrapperSource, /^#!\/usr\/bin\/env node/m)
|
|
123
|
+
assert.match(converterWrapperSource, /import Ajv from 'ajv'/)
|
|
124
|
+
assert.match(converterWrapperSource, /import \{ convertDashboard \} from '\.\/convert-grafana-dashboard-core\.js'/)
|
|
125
|
+
assert.match(converterWrapperSource, /export function main\(/)
|
|
126
|
+
assert.match(converterWrapperSource, /export function validateDashboardFile\(/)
|
|
127
|
+
assert.match(converterCoreSource, /export function convertDashboard\(/)
|
|
128
|
+
assert.equal(typeof convertCliMain, 'function')
|
|
129
|
+
assert.equal(typeof validateDashboardFile, 'function')
|
|
130
|
+
assert.doesNotMatch(converterWrapperSource, /\?\.|\?\?/)
|
|
131
|
+
assert.doesNotMatch(converterCoreSource, /\?\.|\?\?/)
|
|
119
132
|
})
|
|
120
133
|
|
|
121
134
|
test('shared converter infers units from query text when panel unit is missing', () => {
|
|
@@ -128,7 +141,7 @@ test('shared converter infers units from query text when panel unit is missing',
|
|
|
128
141
|
|
|
129
142
|
assert.ok(loadChart)
|
|
130
143
|
assert.equal(loadChart.extend.settings.unitType, 'global')
|
|
131
|
-
assert.deepEqual(loadChart.extend.settings.globalUnit, ['
|
|
144
|
+
assert.deepEqual(loadChart.extend.settings.globalUnit, ['number', 'short_scale'])
|
|
132
145
|
})
|
|
133
146
|
|
|
134
147
|
test('shared converter maps offset queries to guance compare settings', () => {
|
|
@@ -161,6 +174,24 @@ test('shared converter maps legend and table sort semantics into guance settings
|
|
|
161
174
|
assert.equal(releaseTableChart.extend.settings.mainMeasurementSort, 'top')
|
|
162
175
|
})
|
|
163
176
|
|
|
177
|
+
test('shared converter converts node exporter dashboard fixtures', () => {
|
|
178
|
+
const grafanaDashboard = JSON.parse(fs.readFileSync(grafanaNodeExporterInputPath, 'utf-8'))
|
|
179
|
+
const actual = convertDashboard(grafanaDashboard)
|
|
180
|
+
|
|
181
|
+
assert.equal(actual.title, 'Node Exporter Full')
|
|
182
|
+
assert.equal(actual.main.vars.length, 2)
|
|
183
|
+
assert.equal(actual.main.charts.length, 124)
|
|
184
|
+
assert.equal(actual.main.groups.length, 16)
|
|
185
|
+
|
|
186
|
+
assert.ok(actual.main.groups.some((group) => group.name === 'Quick CPU / Mem / Disk'))
|
|
187
|
+
assert.ok(actual.main.groups.some((group) => group.name === 'Network Traffic'))
|
|
188
|
+
|
|
189
|
+
assert.ok(actual.main.charts.some((chart) => chart.name === 'Pressure'))
|
|
190
|
+
assert.ok(actual.main.charts.some((chart) => chart.name === 'CPU Busy'))
|
|
191
|
+
assert.ok(actual.main.charts.some((chart) => chart.name === 'Network Traffic'))
|
|
192
|
+
assert.ok(actual.main.charts.some((chart) => chart.name === 'Uptime'))
|
|
193
|
+
})
|
|
194
|
+
|
|
164
195
|
test('shared converter maps repeat panels and infers bytes and seconds units', () => {
|
|
165
196
|
const actual = convertDashboard({
|
|
166
197
|
title: 'synthetic',
|
|
@@ -191,7 +222,6 @@ test('shared converter maps repeat panels and infers bytes and seconds units', (
|
|
|
191
222
|
})
|
|
192
223
|
|
|
193
224
|
assert.deepEqual(actual.main.charts[0].extend.settings.globalUnit, ['digital', 'B'])
|
|
194
|
-
assert.equal(actual.main.charts[0].extend.settings.repeatChartVariable, 'host')
|
|
195
225
|
assert.equal(actual.main.charts[0].extend.settings.repeatChartRowLimit, 4)
|
|
196
226
|
assert.equal(actual.main.charts[0].extend.settings.extend.layout.repeatDirection, 'h')
|
|
197
227
|
assert.deepEqual(actual.main.charts[1].extend.settings.globalUnit, ['time', 's'])
|
|
@@ -423,13 +453,11 @@ test('cli supports shared converter flags and matches API output', () => {
|
|
|
423
453
|
grafanaInputPath,
|
|
424
454
|
'-o',
|
|
425
455
|
outPath,
|
|
426
|
-
'--validate',
|
|
427
456
|
'--guance-promql-compatible',
|
|
428
457
|
'--keep-grafana-meta',
|
|
429
458
|
])
|
|
430
459
|
|
|
431
460
|
assert.equal(result.status, 0, result.stderr || result.stdout)
|
|
432
|
-
assert.match(result.stdout, /Validated /)
|
|
433
461
|
assert.equal(fs.existsSync(outPath), true)
|
|
434
462
|
|
|
435
463
|
const actual = JSON.parse(fs.readFileSync(outPath, 'utf-8'))
|
|
@@ -451,69 +479,63 @@ test('cli writes default output file to current working directory', () => {
|
|
|
451
479
|
assert.deepEqual(actual, expected)
|
|
452
480
|
})
|
|
453
481
|
|
|
454
|
-
test('
|
|
482
|
+
test('converter cli converts a grafana dashboard with explicit output path', () => {
|
|
455
483
|
const tempDir = createTempDir()
|
|
456
|
-
const outPath = path.join(tempDir, '
|
|
484
|
+
const outPath = path.join(tempDir, 'converter', 'guance-dashboard.json')
|
|
457
485
|
const expected = convertDashboard(JSON.parse(fs.readFileSync(grafanaInputPath, 'utf-8')))
|
|
458
486
|
|
|
459
|
-
const result =
|
|
487
|
+
const result = runConverterCli([
|
|
460
488
|
'--input',
|
|
461
489
|
grafanaInputPath,
|
|
462
490
|
'--output',
|
|
463
491
|
outPath,
|
|
464
|
-
'--validate',
|
|
465
492
|
])
|
|
466
493
|
|
|
467
494
|
assert.equal(result.status, 0, result.stderr || result.stdout)
|
|
468
|
-
assert.match(result.stdout, /Validated /)
|
|
469
495
|
assert.equal(fs.existsSync(outPath), true)
|
|
470
496
|
|
|
471
497
|
const actual = JSON.parse(fs.readFileSync(outPath, 'utf-8'))
|
|
472
498
|
assert.deepEqual(actual, expected)
|
|
473
499
|
})
|
|
474
500
|
|
|
475
|
-
test('
|
|
501
|
+
test('converter cli supports guance promql compatible output', () => {
|
|
476
502
|
const tempDir = createTempDir()
|
|
477
|
-
const outPath = path.join(tempDir, '
|
|
503
|
+
const outPath = path.join(tempDir, 'converter', 'guance-promql.json')
|
|
478
504
|
const expected = convertDashboard(JSON.parse(fs.readFileSync(grafanaInputPath, 'utf-8')), {
|
|
479
505
|
guancePromqlCompatible: true,
|
|
480
506
|
})
|
|
481
507
|
|
|
482
|
-
const result =
|
|
508
|
+
const result = runConverterCli([
|
|
483
509
|
'--input',
|
|
484
510
|
grafanaInputPath,
|
|
485
511
|
'--output',
|
|
486
512
|
outPath,
|
|
487
|
-
'--validate',
|
|
488
513
|
'--guance-promql-compatible',
|
|
489
514
|
])
|
|
490
515
|
|
|
491
516
|
assert.equal(result.status, 0, result.stderr || result.stdout)
|
|
492
|
-
assert.match(result.stdout, /Validated /)
|
|
493
517
|
assert.equal(fs.existsSync(outPath), true)
|
|
494
518
|
|
|
495
519
|
const actual = JSON.parse(fs.readFileSync(outPath, 'utf-8'))
|
|
496
520
|
assert.deepEqual(actual, expected)
|
|
497
521
|
})
|
|
498
522
|
|
|
499
|
-
test('
|
|
523
|
+
test('converter cli supports keep grafana meta output', () => {
|
|
500
524
|
const tempDir = createTempDir()
|
|
501
|
-
const outPath = path.join(tempDir, '
|
|
525
|
+
const outPath = path.join(tempDir, 'converter', 'guance-keep-meta.json')
|
|
502
526
|
const expected = convertDashboard(JSON.parse(fs.readFileSync(grafanaInputPath, 'utf-8')), {
|
|
503
527
|
keepGrafanaMeta: true,
|
|
504
528
|
})
|
|
505
529
|
|
|
506
|
-
const result =
|
|
530
|
+
const result = runConverterCli([
|
|
507
531
|
'--input',
|
|
508
532
|
grafanaInputPath,
|
|
509
533
|
'--output',
|
|
510
534
|
outPath,
|
|
511
|
-
'--validate',
|
|
512
535
|
'--keep-grafana-meta',
|
|
513
536
|
])
|
|
514
537
|
|
|
515
538
|
assert.equal(result.status, 0, result.stderr || result.stdout)
|
|
516
|
-
assert.match(result.stdout, /Validated /)
|
|
517
539
|
assert.equal(fs.existsSync(outPath), true)
|
|
518
540
|
|
|
519
541
|
const actual = JSON.parse(fs.readFileSync(outPath, 'utf-8'))
|