tuimon 0.2.0 → 0.3.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 +191 -181
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -1
- package/dist/browser.js.map +1 -1
- package/dist/cli.js +67 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/quick/presets/coverage.d.ts +3 -0
- package/dist/quick/presets/coverage.d.ts.map +1 -0
- package/dist/quick/presets/coverage.js +362 -0
- package/dist/quick/presets/coverage.js.map +1 -0
- package/dist/quick/presets/deps.d.ts +3 -0
- package/dist/quick/presets/deps.d.ts.map +1 -0
- package/dist/quick/presets/deps.js +194 -0
- package/dist/quick/presets/deps.js.map +1 -0
- package/dist/quick/presets/docker.d.ts +3 -0
- package/dist/quick/presets/docker.d.ts.map +1 -0
- package/dist/quick/presets/docker.js +100 -0
- package/dist/quick/presets/docker.js.map +1 -0
- package/dist/quick/presets/git.d.ts +3 -0
- package/dist/quick/presets/git.d.ts.map +1 -0
- package/dist/quick/presets/git.js +116 -0
- package/dist/quick/presets/git.js.map +1 -0
- package/dist/quick/presets/ps.d.ts +3 -0
- package/dist/quick/presets/ps.d.ts.map +1 -0
- package/dist/quick/presets/ps.js +168 -0
- package/dist/quick/presets/ps.js.map +1 -0
- package/dist/quick/presets/runner.d.ts +3 -0
- package/dist/quick/presets/runner.d.ts.map +1 -0
- package/dist/quick/presets/runner.js +20 -0
- package/dist/quick/presets/runner.js.map +1 -0
- package/dist/quick/presets/types.d.ts +7 -0
- package/dist/quick/presets/types.d.ts.map +1 -0
- package/dist/quick/presets/types.js +2 -0
- package/dist/quick/presets/types.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/examples/preset-deps.png +0 -0
- package/examples/preset-docker.png +0 -0
- package/examples/preset-git.png +0 -0
- package/examples/preset-ps.png +0 -0
- package/examples/test-presets.ts +91 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/quick/presets/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9C,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import tuimon from '../../index.js';
|
|
2
|
+
export async function runPreset(preset) {
|
|
3
|
+
const dash = await tuimon.start({
|
|
4
|
+
pages: {
|
|
5
|
+
main: {
|
|
6
|
+
html: '',
|
|
7
|
+
default: true,
|
|
8
|
+
layout: preset.layout,
|
|
9
|
+
keys: {
|
|
10
|
+
F5: { label: 'Refresh', action: async () => { await dash.render(await Promise.resolve(preset.data())); } },
|
|
11
|
+
F10: { label: 'Quit', action: () => process.exit(0) },
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
refresh: preset.refresh,
|
|
16
|
+
data: preset.data,
|
|
17
|
+
renderDelay: 0,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/quick/presets/runner.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,gBAAgB,CAAA;AAEnC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAoB;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE;oBACJ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,EAAE;oBACzG,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;iBACtD;aACF;SACF;QACD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,CAAC;KACf,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/quick/presets/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACtE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/quick/presets/types.ts"],"names":[],"mappings":""}
|
package/dist/types.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export interface TuiMonOptions {
|
|
|
44
44
|
* Auto-render interval in ms. Requires data to be set.
|
|
45
45
|
* Default: no auto-render — developer calls dash.render() manually.
|
|
46
46
|
*/
|
|
47
|
-
refresh?: number;
|
|
47
|
+
refresh?: number | undefined;
|
|
48
48
|
/** Delay in ms after pushData() before screenshotting. Default: 50 */
|
|
49
49
|
renderDelay?: number;
|
|
50
50
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,IAAI,GACZ,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACvC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9C,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAED,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;AAIvD,MAAM,WAAW,UAAU;IACzB;2FACuF;IACvF,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;gEAC4D;IAC5D,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,YAAY,CAAA;CAClD;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAIhD,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACvE;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Test presets by generating screenshots via Playwright.
|
|
5
|
+
* No terminal graphics needed - just verify the HTML renders correctly.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { writeFileSync, mkdirSync } from 'node:fs'
|
|
9
|
+
import path from 'node:path'
|
|
10
|
+
import { tmpdir } from 'node:os'
|
|
11
|
+
import { chromium } from 'playwright'
|
|
12
|
+
import { generateDashboardHtml } from '../src/layout/generator.js'
|
|
13
|
+
|
|
14
|
+
// Import presets
|
|
15
|
+
import { gitPreset } from '../src/quick/presets/git.js'
|
|
16
|
+
import { psPreset } from '../src/quick/presets/ps.js'
|
|
17
|
+
import { depsPreset } from '../src/quick/presets/deps.js'
|
|
18
|
+
|
|
19
|
+
async function screenshotPreset(name: string, layout: import('../src/layout/types.js').LayoutConfig, data: Record<string, unknown>) {
|
|
20
|
+
const html = generateDashboardHtml(layout)
|
|
21
|
+
const tmpDir = path.join(tmpdir(), `tuimon-preset-test-${Date.now()}`)
|
|
22
|
+
mkdirSync(tmpDir, { recursive: true })
|
|
23
|
+
const htmlPath = path.join(tmpDir, 'dashboard.html')
|
|
24
|
+
writeFileSync(htmlPath, html, 'utf-8')
|
|
25
|
+
|
|
26
|
+
const browser = await chromium.launch({ headless: true })
|
|
27
|
+
const page = await browser.newPage()
|
|
28
|
+
await page.setViewportSize({ width: 1600, height: 900 })
|
|
29
|
+
await page.goto(`file://${htmlPath}`, { waitUntil: 'domcontentloaded' })
|
|
30
|
+
|
|
31
|
+
// Push data
|
|
32
|
+
await page.evaluate((d: Record<string, unknown>) => {
|
|
33
|
+
const win = globalThis as Record<string, unknown>
|
|
34
|
+
if (typeof win['__tuimon_update__'] === 'function') {
|
|
35
|
+
;(win['__tuimon_update__'] as (d: Record<string, unknown>) => void)(d)
|
|
36
|
+
}
|
|
37
|
+
}, data)
|
|
38
|
+
|
|
39
|
+
await new Promise((r) => setTimeout(r, 500))
|
|
40
|
+
|
|
41
|
+
const outPath = path.resolve(`examples/preset-${name}.png`)
|
|
42
|
+
const buf = await page.screenshot({ type: 'png' })
|
|
43
|
+
writeFileSync(outPath, buf)
|
|
44
|
+
await browser.close()
|
|
45
|
+
console.log(` ${name}: ${outPath}`)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function main() {
|
|
49
|
+
console.log('Testing presets via Playwright screenshots...\n')
|
|
50
|
+
|
|
51
|
+
// Git preset
|
|
52
|
+
try {
|
|
53
|
+
const git = gitPreset()
|
|
54
|
+
const gitData = await Promise.resolve(git.data())
|
|
55
|
+
await screenshotPreset('git', git.layout, gitData)
|
|
56
|
+
} catch (err) {
|
|
57
|
+
console.log(` git: SKIP - ${err instanceof Error ? err.message : err}`)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// PS preset
|
|
61
|
+
try {
|
|
62
|
+
const ps = psPreset()
|
|
63
|
+
const psData = await Promise.resolve(ps.data())
|
|
64
|
+
await screenshotPreset('ps', ps.layout, psData)
|
|
65
|
+
} catch (err) {
|
|
66
|
+
console.log(` ps: SKIP - ${err instanceof Error ? err.message : err}`)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Deps preset
|
|
70
|
+
try {
|
|
71
|
+
const deps = depsPreset(path.resolve('package-lock.json'))
|
|
72
|
+
const depsData = await Promise.resolve(deps.data())
|
|
73
|
+
await screenshotPreset('deps', deps.layout, depsData)
|
|
74
|
+
} catch (err) {
|
|
75
|
+
console.log(` deps: SKIP - ${err instanceof Error ? err.message : err}`)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Docker preset - only if docker is running
|
|
79
|
+
try {
|
|
80
|
+
const { dockerPreset } = await import('../src/quick/presets/docker.js')
|
|
81
|
+
const docker = dockerPreset()
|
|
82
|
+
const dockerData = await Promise.resolve(docker.data())
|
|
83
|
+
await screenshotPreset('docker', docker.layout, dockerData)
|
|
84
|
+
} catch (err) {
|
|
85
|
+
console.log(` docker: SKIP - ${err instanceof Error ? err.message : err}`)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
console.log('\nDone. Open the PNG files to verify.')
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
main().catch(console.error)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tuimon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Render beautiful HTML dashboards directly in your terminal.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"lint": "eslint src --ext .ts",
|
|
28
28
|
"format": "prettier --write src",
|
|
29
29
|
"typecheck": "tsc --noEmit",
|
|
30
|
+
"postinstall": "npx playwright install chromium 2>/dev/null || true",
|
|
30
31
|
"prepublishOnly": "npm run typecheck && npm run test && npm run build"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|