@aaronsb/kg-cli 0.6.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 +112 -0
- package/dist/api/client.d.ts +867 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +1362 -0
- package/dist/api/client.js.map +1 -0
- package/dist/cli/admin/backup.d.ts +9 -0
- package/dist/cli/admin/backup.d.ts.map +1 -0
- package/dist/cli/admin/backup.js +363 -0
- package/dist/cli/admin/backup.js.map +1 -0
- package/dist/cli/admin/index.d.ts +7 -0
- package/dist/cli/admin/index.d.ts.map +1 -0
- package/dist/cli/admin/index.js +52 -0
- package/dist/cli/admin/index.js.map +1 -0
- package/dist/cli/admin/scheduler.d.ts +7 -0
- package/dist/cli/admin/scheduler.d.ts.map +1 -0
- package/dist/cli/admin/scheduler.js +125 -0
- package/dist/cli/admin/scheduler.js.map +1 -0
- package/dist/cli/admin/status.d.ts +7 -0
- package/dist/cli/admin/status.d.ts.map +1 -0
- package/dist/cli/admin/status.js +134 -0
- package/dist/cli/admin/status.js.map +1 -0
- package/dist/cli/admin/utils.d.ts +34 -0
- package/dist/cli/admin/utils.d.ts.map +1 -0
- package/dist/cli/admin/utils.js +441 -0
- package/dist/cli/admin/utils.js.map +1 -0
- package/dist/cli/ai-config/embedding.d.ts +11 -0
- package/dist/cli/ai-config/embedding.d.ts.map +1 -0
- package/dist/cli/ai-config/embedding.js +598 -0
- package/dist/cli/ai-config/embedding.js.map +1 -0
- package/dist/cli/ai-config/extraction.d.ts +11 -0
- package/dist/cli/ai-config/extraction.d.ts.map +1 -0
- package/dist/cli/ai-config/extraction.js +206 -0
- package/dist/cli/ai-config/extraction.js.map +1 -0
- package/dist/cli/ai-config/index.d.ts +21 -0
- package/dist/cli/ai-config/index.d.ts.map +1 -0
- package/dist/cli/ai-config/index.js +27 -0
- package/dist/cli/ai-config/index.js.map +1 -0
- package/dist/cli/ai-config/keys.d.ts +11 -0
- package/dist/cli/ai-config/keys.d.ts.map +1 -0
- package/dist/cli/ai-config/keys.js +182 -0
- package/dist/cli/ai-config/keys.js.map +1 -0
- package/dist/cli/ai-config/utils.d.ts +13 -0
- package/dist/cli/ai-config/utils.d.ts.map +1 -0
- package/dist/cli/ai-config/utils.js +84 -0
- package/dist/cli/ai-config/utils.js.map +1 -0
- package/dist/cli/artifact.d.ts +8 -0
- package/dist/cli/artifact.d.ts.map +1 -0
- package/dist/cli/artifact.js +296 -0
- package/dist/cli/artifact.js.map +1 -0
- package/dist/cli/auth-admin.d.ts +11 -0
- package/dist/cli/auth-admin.d.ts.map +1 -0
- package/dist/cli/auth-admin.js +415 -0
- package/dist/cli/auth-admin.js.map +1 -0
- package/dist/cli/colors.d.ts +105 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +164 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/commands.d.ts +6 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +164 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/config.d.ts +6 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +694 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/curve-viz.d.ts +89 -0
- package/dist/cli/curve-viz.d.ts.map +1 -0
- package/dist/cli/curve-viz.js +228 -0
- package/dist/cli/curve-viz.js.map +1 -0
- package/dist/cli/database.d.ts +6 -0
- package/dist/cli/database.d.ts.map +1 -0
- package/dist/cli/database.js +324 -0
- package/dist/cli/database.js.map +1 -0
- package/dist/cli/document.d.ts +6 -0
- package/dist/cli/document.d.ts.map +1 -0
- package/dist/cli/document.js +458 -0
- package/dist/cli/document.js.map +1 -0
- package/dist/cli/group.d.ts +8 -0
- package/dist/cli/group.d.ts.map +1 -0
- package/dist/cli/group.js +174 -0
- package/dist/cli/group.js.map +1 -0
- package/dist/cli/health.d.ts +6 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +34 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/help-formatter.d.ts +16 -0
- package/dist/cli/help-formatter.d.ts.map +1 -0
- package/dist/cli/help-formatter.js +248 -0
- package/dist/cli/help-formatter.js.map +1 -0
- package/dist/cli/help.d.ts +9 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +227 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/ingest.d.ts +6 -0
- package/dist/cli/ingest.d.ts.map +1 -0
- package/dist/cli/ingest.js +722 -0
- package/dist/cli/ingest.js.map +1 -0
- package/dist/cli/jobs.d.ts +6 -0
- package/dist/cli/jobs.d.ts.map +1 -0
- package/dist/cli/jobs.js +663 -0
- package/dist/cli/jobs.js.map +1 -0
- package/dist/cli/login.d.ts +21 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +221 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/logout.d.ts +16 -0
- package/dist/cli/logout.d.ts.map +1 -0
- package/dist/cli/logout.js +141 -0
- package/dist/cli/logout.js.map +1 -0
- package/dist/cli/mcp-config.d.ts +10 -0
- package/dist/cli/mcp-config.d.ts.map +1 -0
- package/dist/cli/mcp-config.js +358 -0
- package/dist/cli/mcp-config.js.map +1 -0
- package/dist/cli/oauth.d.ts +15 -0
- package/dist/cli/oauth.d.ts.map +1 -0
- package/dist/cli/oauth.js +296 -0
- package/dist/cli/oauth.js.map +1 -0
- package/dist/cli/ontology.d.ts +6 -0
- package/dist/cli/ontology.d.ts.map +1 -0
- package/dist/cli/ontology.js +231 -0
- package/dist/cli/ontology.js.map +1 -0
- package/dist/cli/polarity.d.ts +6 -0
- package/dist/cli/polarity.d.ts.map +1 -0
- package/dist/cli/polarity.js +295 -0
- package/dist/cli/polarity.js.map +1 -0
- package/dist/cli/projection.d.ts +8 -0
- package/dist/cli/projection.d.ts.map +1 -0
- package/dist/cli/projection.js +297 -0
- package/dist/cli/projection.js.map +1 -0
- package/dist/cli/query-def.d.ts +8 -0
- package/dist/cli/query-def.d.ts.map +1 -0
- package/dist/cli/query-def.js +163 -0
- package/dist/cli/query-def.js.map +1 -0
- package/dist/cli/rbac.d.ts +12 -0
- package/dist/cli/rbac.d.ts.map +1 -0
- package/dist/cli/rbac.js +615 -0
- package/dist/cli/rbac.js.map +1 -0
- package/dist/cli/search.d.ts +6 -0
- package/dist/cli/search.d.ts.map +1 -0
- package/dist/cli/search.js +829 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli/source.d.ts +6 -0
- package/dist/cli/source.d.ts.map +1 -0
- package/dist/cli/source.js +202 -0
- package/dist/cli/source.js.map +1 -0
- package/dist/cli/verb-router.d.ts +25 -0
- package/dist/cli/verb-router.d.ts.map +1 -0
- package/dist/cli/verb-router.js +415 -0
- package/dist/cli/verb-router.js.map +1 -0
- package/dist/cli/vocabulary/config.d.ts +7 -0
- package/dist/cli/vocabulary/config.d.ts.map +1 -0
- package/dist/cli/vocabulary/config.js +201 -0
- package/dist/cli/vocabulary/config.js.map +1 -0
- package/dist/cli/vocabulary/consolidate.d.ts +8 -0
- package/dist/cli/vocabulary/consolidate.d.ts.map +1 -0
- package/dist/cli/vocabulary/consolidate.js +192 -0
- package/dist/cli/vocabulary/consolidate.js.map +1 -0
- package/dist/cli/vocabulary/embeddings.d.ts +9 -0
- package/dist/cli/vocabulary/embeddings.d.ts.map +1 -0
- package/dist/cli/vocabulary/embeddings.js +205 -0
- package/dist/cli/vocabulary/embeddings.js.map +1 -0
- package/dist/cli/vocabulary/epistemic.d.ts +7 -0
- package/dist/cli/vocabulary/epistemic.d.ts.map +1 -0
- package/dist/cli/vocabulary/epistemic.js +315 -0
- package/dist/cli/vocabulary/epistemic.js.map +1 -0
- package/dist/cli/vocabulary/index.d.ts +7 -0
- package/dist/cli/vocabulary/index.d.ts.map +1 -0
- package/dist/cli/vocabulary/index.js +45 -0
- package/dist/cli/vocabulary/index.js.map +1 -0
- package/dist/cli/vocabulary/profiles.d.ts +7 -0
- package/dist/cli/vocabulary/profiles.d.ts.map +1 -0
- package/dist/cli/vocabulary/profiles.js +171 -0
- package/dist/cli/vocabulary/profiles.js.map +1 -0
- package/dist/cli/vocabulary/similarity.d.ts +9 -0
- package/dist/cli/vocabulary/similarity.d.ts.map +1 -0
- package/dist/cli/vocabulary/similarity.js +199 -0
- package/dist/cli/vocabulary/similarity.js.map +1 -0
- package/dist/cli/vocabulary/status.d.ts +8 -0
- package/dist/cli/vocabulary/status.d.ts.map +1 -0
- package/dist/cli/vocabulary/status.js +280 -0
- package/dist/cli/vocabulary/status.js.map +1 -0
- package/dist/cli/vocabulary/sync.d.ts +7 -0
- package/dist/cli/vocabulary/sync.d.ts.map +1 -0
- package/dist/cli/vocabulary/sync.js +111 -0
- package/dist/cli/vocabulary/sync.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth/auth-client.d.ts +247 -0
- package/dist/lib/auth/auth-client.d.ts.map +1 -0
- package/dist/lib/auth/auth-client.js +305 -0
- package/dist/lib/auth/auth-client.js.map +1 -0
- package/dist/lib/auth/challenge.d.ts +39 -0
- package/dist/lib/auth/challenge.d.ts.map +1 -0
- package/dist/lib/auth/challenge.js +125 -0
- package/dist/lib/auth/challenge.js.map +1 -0
- package/dist/lib/auth/client-credentials-flow.d.ts +58 -0
- package/dist/lib/auth/client-credentials-flow.d.ts.map +1 -0
- package/dist/lib/auth/client-credentials-flow.js +118 -0
- package/dist/lib/auth/client-credentials-flow.js.map +1 -0
- package/dist/lib/auth/device-flow.d.ts +75 -0
- package/dist/lib/auth/device-flow.d.ts.map +1 -0
- package/dist/lib/auth/device-flow.js +177 -0
- package/dist/lib/auth/device-flow.js.map +1 -0
- package/dist/lib/auth/index.d.ts +14 -0
- package/dist/lib/auth/index.d.ts.map +1 -0
- package/dist/lib/auth/index.js +34 -0
- package/dist/lib/auth/index.js.map +1 -0
- package/dist/lib/auth/oauth-types.d.ts +69 -0
- package/dist/lib/auth/oauth-types.d.ts.map +1 -0
- package/dist/lib/auth/oauth-types.js +10 -0
- package/dist/lib/auth/oauth-types.js.map +1 -0
- package/dist/lib/auth/oauth-utils.d.ts +51 -0
- package/dist/lib/auth/oauth-utils.d.ts.map +1 -0
- package/dist/lib/auth/oauth-utils.js +110 -0
- package/dist/lib/auth/oauth-utils.js.map +1 -0
- package/dist/lib/auth/token-manager.d.ts +87 -0
- package/dist/lib/auth/token-manager.d.ts.map +1 -0
- package/dist/lib/auth/token-manager.js +139 -0
- package/dist/lib/auth/token-manager.js.map +1 -0
- package/dist/lib/auth/token-refresh.d.ts +63 -0
- package/dist/lib/auth/token-refresh.d.ts.map +1 -0
- package/dist/lib/auth/token-refresh.js +141 -0
- package/dist/lib/auth/token-refresh.js.map +1 -0
- package/dist/lib/config.d.ts +286 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +537 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/job-stream.d.ts +53 -0
- package/dist/lib/job-stream.d.ts.map +1 -0
- package/dist/lib/job-stream.js +153 -0
- package/dist/lib/job-stream.js.map +1 -0
- package/dist/lib/mcp-allowlist.d.ts +101 -0
- package/dist/lib/mcp-allowlist.d.ts.map +1 -0
- package/dist/lib/mcp-allowlist.js +340 -0
- package/dist/lib/mcp-allowlist.js.map +1 -0
- package/dist/lib/table-example.d.ts +7 -0
- package/dist/lib/table-example.d.ts.map +1 -0
- package/dist/lib/table-example.js +105 -0
- package/dist/lib/table-example.js.map +1 -0
- package/dist/lib/table.d.ts +95 -0
- package/dist/lib/table.d.ts.map +1 -0
- package/dist/lib/table.js +263 -0
- package/dist/lib/table.js.map +1 -0
- package/dist/lib/terminal-images.d.ts +66 -0
- package/dist/lib/terminal-images.d.ts.map +1 -0
- package/dist/lib/terminal-images.js +268 -0
- package/dist/lib/terminal-images.js.map +1 -0
- package/dist/mcp/formatters.d.ts +100 -0
- package/dist/mcp/formatters.d.ts.map +1 -0
- package/dist/mcp/formatters.js +1411 -0
- package/dist/mcp/formatters.js.map +1 -0
- package/dist/mcp-server.d.ts +9 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +1810 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/types/index.d.ts +742 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/version.d.ts +10 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +13 -0
- package/dist/version.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Example: Refactored Jobs List using Table utility with type-based formatting
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createJobsTable = createJobsTable;
|
|
7
|
+
const table_1 = require("./table");
|
|
8
|
+
// Define the jobs table configuration once
|
|
9
|
+
function createJobsTable(fullId = false) {
|
|
10
|
+
return new table_1.Table({
|
|
11
|
+
columns: [
|
|
12
|
+
{
|
|
13
|
+
header: 'Job ID',
|
|
14
|
+
field: 'job_id',
|
|
15
|
+
type: 'job_id',
|
|
16
|
+
width: 'flex',
|
|
17
|
+
priority: 2,
|
|
18
|
+
maxWidth: fullId ? 40 : 30,
|
|
19
|
+
minWidth: fullId ? 38 : 20
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
header: 'Client',
|
|
23
|
+
field: 'client_id',
|
|
24
|
+
type: 'user',
|
|
25
|
+
width: 12,
|
|
26
|
+
customFormat: (id) => id || 'anonymous',
|
|
27
|
+
truncate: true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
header: 'Status',
|
|
31
|
+
field: 'status',
|
|
32
|
+
type: 'status',
|
|
33
|
+
width: 18
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
header: 'Ontology',
|
|
37
|
+
field: 'ontology',
|
|
38
|
+
type: 'heading',
|
|
39
|
+
width: 'flex',
|
|
40
|
+
priority: 1,
|
|
41
|
+
customFormat: (name) => name || '-',
|
|
42
|
+
truncate: true
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
header: 'Created',
|
|
46
|
+
field: 'created_at',
|
|
47
|
+
type: 'timestamp',
|
|
48
|
+
width: 18
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
header: 'Progress',
|
|
52
|
+
field: (job) => job.progress?.percent,
|
|
53
|
+
type: 'progress',
|
|
54
|
+
width: 10,
|
|
55
|
+
customFormat: (percent, job) => {
|
|
56
|
+
if (job.status === 'completed')
|
|
57
|
+
return '✓';
|
|
58
|
+
if (job.status === 'failed')
|
|
59
|
+
return '✗';
|
|
60
|
+
if (job.status === 'cancelled')
|
|
61
|
+
return '⊗';
|
|
62
|
+
return percent !== undefined ? String(percent) : '-';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
spacing: 2,
|
|
67
|
+
showHeader: true,
|
|
68
|
+
showSeparator: true
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// Usage:
|
|
72
|
+
// const table = createJobsTable(fullId);
|
|
73
|
+
// table.print(jobs);
|
|
74
|
+
// Or for other tables:
|
|
75
|
+
/*
|
|
76
|
+
// Ontology list table
|
|
77
|
+
const ontologyTable = new Table({
|
|
78
|
+
columns: [
|
|
79
|
+
{ header: 'Ontology', field: 'ontology', type: 'heading', width: 'flex' },
|
|
80
|
+
{ header: 'Files', field: 'file_count', type: 'count', width: 10, align: 'right' },
|
|
81
|
+
{ header: 'Concepts', field: 'concept_count', type: 'count', width: 10, align: 'right' },
|
|
82
|
+
{ header: 'Sources', field: 'source_count', type: 'count', width: 10, align: 'right' }
|
|
83
|
+
]
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Search results table
|
|
87
|
+
const searchTable = new Table({
|
|
88
|
+
columns: [
|
|
89
|
+
{ header: 'Concept', field: 'label', type: 'value', width: 'flex', priority: 2 },
|
|
90
|
+
{ header: 'ID', field: 'concept_id', type: 'concept_id', width: 25 },
|
|
91
|
+
{ header: 'Similarity', field: 'score', width: 12, align: 'right', customFormat: (s) => `${(s * 100).toFixed(1)}%` },
|
|
92
|
+
{ header: 'Evidence', field: 'evidence_count', type: 'count', width: 10, align: 'right' }
|
|
93
|
+
]
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// Backup files table
|
|
97
|
+
const backupTable = new Table({
|
|
98
|
+
columns: [
|
|
99
|
+
{ header: 'Filename', field: 'filename', type: 'value', width: 'flex', priority: 2 },
|
|
100
|
+
{ header: 'Size', field: 'size_mb', width: 12, align: 'right', customFormat: (mb) => `${mb.toFixed(2)} MB` },
|
|
101
|
+
{ header: 'Created', field: 'created', type: 'timestamp', width: 20 }
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
*/
|
|
105
|
+
//# sourceMappingURL=table-example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-example.js","sourceRoot":"","sources":["../../src/lib/table-example.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAMH,0CA0DC;AA9DD,mCAAgC;AAGhC,2CAA2C;AAC3C,SAAgB,eAAe,CAAC,SAAkB,KAAK;IACrD,OAAO,IAAI,aAAK,CAAY;QAC1B,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC1B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;aAC3B;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW;gBACvC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,EAAE;aACV;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,CAAC;gBACX,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG;gBACnC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,EAAE;aACV;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO;gBACrC,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;oBAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;wBAAE,OAAO,GAAG,CAAC;oBAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;wBAAE,OAAO,GAAG,CAAC;oBACxC,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;wBAAE,OAAO,GAAG,CAAC;oBAC3C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACvD,CAAC;aACF;SACF;QACD,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;AACL,CAAC;AAED,SAAS;AACT,yCAAyC;AACzC,qBAAqB;AAErB,uBAAuB;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reusable Table Utility for CLI Output
|
|
3
|
+
*
|
|
4
|
+
* Provides a flexible, responsive table formatter with:
|
|
5
|
+
* - Dynamic column width distribution
|
|
6
|
+
* - Unicode-aware text padding
|
|
7
|
+
* - Priority-based column sizing
|
|
8
|
+
* - Semantic type-based formatting
|
|
9
|
+
* - Integrated color theming
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Column width strategy
|
|
13
|
+
* - number: fixed width in characters
|
|
14
|
+
* - 'auto': fit to content
|
|
15
|
+
* - 'flex': flexible, shares remaining space
|
|
16
|
+
*/
|
|
17
|
+
export type ColumnWidth = number | 'auto' | 'flex';
|
|
18
|
+
/**
|
|
19
|
+
* Column alignment
|
|
20
|
+
*/
|
|
21
|
+
export type ColumnAlign = 'left' | 'right' | 'center';
|
|
22
|
+
/**
|
|
23
|
+
* Semantic column types for consistent formatting
|
|
24
|
+
*/
|
|
25
|
+
export type ColumnType = 'text' | 'job_id' | 'concept_id' | 'user' | 'heading' | 'status' | 'timestamp' | 'count' | 'progress' | 'value';
|
|
26
|
+
/**
|
|
27
|
+
* Column definition
|
|
28
|
+
*/
|
|
29
|
+
export interface TableColumn<T = any> {
|
|
30
|
+
/** Column header text */
|
|
31
|
+
header: string;
|
|
32
|
+
/** Field accessor - can be key name or function */
|
|
33
|
+
field: keyof T | ((row: T) => any);
|
|
34
|
+
/** Semantic type for formatting (applied after truncation) */
|
|
35
|
+
type?: ColumnType;
|
|
36
|
+
/** Column width strategy (default: 'auto') */
|
|
37
|
+
width?: ColumnWidth;
|
|
38
|
+
/** Minimum column width */
|
|
39
|
+
minWidth?: number;
|
|
40
|
+
/** Maximum column width (for flex columns) */
|
|
41
|
+
maxWidth?: number;
|
|
42
|
+
/** Priority for flex space distribution (higher = more space, default: 1) */
|
|
43
|
+
priority?: number;
|
|
44
|
+
/** Text alignment (default: 'left') */
|
|
45
|
+
align?: ColumnAlign;
|
|
46
|
+
/** Custom formatter for complex cases (receives raw value, returns RAW string - formatting applied after) */
|
|
47
|
+
customFormat?: (value: any, row: T) => string;
|
|
48
|
+
/** Truncate with ellipsis if exceeds width (default: true) */
|
|
49
|
+
truncate?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Table configuration
|
|
53
|
+
*/
|
|
54
|
+
export interface TableConfig<T = any> {
|
|
55
|
+
/** Column definitions */
|
|
56
|
+
columns: TableColumn<T>[];
|
|
57
|
+
/** Spacing between columns (default: 2) */
|
|
58
|
+
spacing?: number;
|
|
59
|
+
/** Show header row (default: true) */
|
|
60
|
+
showHeader?: boolean;
|
|
61
|
+
/** Show separator lines (default: true) */
|
|
62
|
+
showSeparator?: boolean;
|
|
63
|
+
/** Terminal width (auto-detected if not provided) */
|
|
64
|
+
terminalWidth?: number;
|
|
65
|
+
/** Empty message when no data (default: 'No data') */
|
|
66
|
+
emptyMessage?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Reusable Table Builder
|
|
70
|
+
*/
|
|
71
|
+
export declare class Table<T = any> {
|
|
72
|
+
private config;
|
|
73
|
+
constructor(config: TableConfig<T>);
|
|
74
|
+
/**
|
|
75
|
+
* Render table to string array (one line per array element)
|
|
76
|
+
*/
|
|
77
|
+
render(data: T[]): string[];
|
|
78
|
+
/**
|
|
79
|
+
* Print table directly to console
|
|
80
|
+
*/
|
|
81
|
+
print(data: T[]): void;
|
|
82
|
+
/**
|
|
83
|
+
* Get cell value from row
|
|
84
|
+
*/
|
|
85
|
+
private getCellValue;
|
|
86
|
+
/**
|
|
87
|
+
* Calculate optimal column widths based on data and terminal size
|
|
88
|
+
*/
|
|
89
|
+
private calculateColumnWidths;
|
|
90
|
+
/**
|
|
91
|
+
* Pad cell text to width with alignment
|
|
92
|
+
*/
|
|
93
|
+
private padCell;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/lib/table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,SAAS,GACT,QAAQ,GACR,WAAW,GACX,OAAO,GACP,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IAEf,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IAEnC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,6GAA6G;IAC7G,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAE9C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,yBAAyB;IACzB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsDD;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC,GAAG,GAAG;IACxB,OAAO,CAAC,MAAM,CAA2B;gBAE7B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAWlC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE;IA+D3B;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI;IAKtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4E7B;;OAEG;IACH,OAAO,CAAC,OAAO;CAgBhB"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Reusable Table Utility for CLI Output
|
|
4
|
+
*
|
|
5
|
+
* Provides a flexible, responsive table formatter with:
|
|
6
|
+
* - Dynamic column width distribution
|
|
7
|
+
* - Unicode-aware text padding
|
|
8
|
+
* - Priority-based column sizing
|
|
9
|
+
* - Semantic type-based formatting
|
|
10
|
+
* - Integrated color theming
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.Table = void 0;
|
|
50
|
+
const string_width_1 = __importDefault(require("string-width"));
|
|
51
|
+
const colors = __importStar(require("../cli/colors"));
|
|
52
|
+
const colors_1 = require("../cli/colors");
|
|
53
|
+
/**
|
|
54
|
+
* Type formatters - apply color/style to raw truncated strings
|
|
55
|
+
*/
|
|
56
|
+
const typeFormatters = {
|
|
57
|
+
text: (v) => v,
|
|
58
|
+
job_id: (v) => colors.concept.id(v),
|
|
59
|
+
concept_id: (v) => colors.concept.id(v),
|
|
60
|
+
user: (v) => colors.ui.value(v),
|
|
61
|
+
heading: (v) => colors.ui.value(v),
|
|
62
|
+
status: (v, raw) => {
|
|
63
|
+
// Format job status with icons
|
|
64
|
+
switch (raw) {
|
|
65
|
+
case 'completed': return colors.status.success('✓ completed');
|
|
66
|
+
case 'failed': return colors.status.error('✗ failed');
|
|
67
|
+
case 'processing': return colors.status.info('⚙ processing');
|
|
68
|
+
case 'approved': return colors.status.success('✓ approved');
|
|
69
|
+
case 'awaiting_approval': return colors.status.warning('⏸ awaiting');
|
|
70
|
+
case 'pending': return colors.status.dim('○ pending');
|
|
71
|
+
case 'queued': return colors.status.info('⋯ queued');
|
|
72
|
+
case 'cancelled': return colors.status.dim('⊗ cancelled');
|
|
73
|
+
default: return colors.status.dim(v);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
timestamp: (v, raw) => {
|
|
77
|
+
// Use rawValue (not truncated string) for date parsing
|
|
78
|
+
const d = new Date(raw || v);
|
|
79
|
+
if (isNaN(d.getTime())) {
|
|
80
|
+
return colors.status.dim('Invalid Date');
|
|
81
|
+
}
|
|
82
|
+
return colors.status.dim(d.toLocaleString('en-US', {
|
|
83
|
+
month: 'short',
|
|
84
|
+
day: 'numeric',
|
|
85
|
+
hour: '2-digit',
|
|
86
|
+
minute: '2-digit'
|
|
87
|
+
}));
|
|
88
|
+
},
|
|
89
|
+
count: (v) => colors.coloredCount(parseInt(v)),
|
|
90
|
+
progress: (v, raw) => {
|
|
91
|
+
// Handle empty/undefined
|
|
92
|
+
if (raw === undefined || raw === null || raw === '') {
|
|
93
|
+
return colors.status.dim('-');
|
|
94
|
+
}
|
|
95
|
+
// Handle special icons for terminal states (passed as string)
|
|
96
|
+
if (v === '✓')
|
|
97
|
+
return colors.status.success('✓');
|
|
98
|
+
if (v === '✗')
|
|
99
|
+
return colors.status.error('✗');
|
|
100
|
+
if (v === '⊗')
|
|
101
|
+
return colors.status.warning('⊗');
|
|
102
|
+
// Handle numeric progress
|
|
103
|
+
return colors.status.info(`${v}%`);
|
|
104
|
+
},
|
|
105
|
+
value: (v) => colors.ui.value(v)
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Reusable Table Builder
|
|
109
|
+
*/
|
|
110
|
+
class Table {
|
|
111
|
+
constructor(config) {
|
|
112
|
+
this.config = {
|
|
113
|
+
spacing: 2,
|
|
114
|
+
showHeader: true,
|
|
115
|
+
showSeparator: true,
|
|
116
|
+
terminalWidth: process.stdout.columns || 120,
|
|
117
|
+
emptyMessage: 'No data',
|
|
118
|
+
...config
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Render table to string array (one line per array element)
|
|
123
|
+
*/
|
|
124
|
+
render(data) {
|
|
125
|
+
if (data.length === 0) {
|
|
126
|
+
return [colors.status.dim(`\n${this.config.emptyMessage}\n`)];
|
|
127
|
+
}
|
|
128
|
+
const lines = [];
|
|
129
|
+
const columnWidths = this.calculateColumnWidths(data);
|
|
130
|
+
const columnSpacing = ' '.repeat(this.config.spacing);
|
|
131
|
+
const sepWidth = this.config.terminalWidth - 4;
|
|
132
|
+
// Header
|
|
133
|
+
if (this.config.showHeader) {
|
|
134
|
+
if (this.config.showSeparator) {
|
|
135
|
+
lines.push('\n' + (0, colors_1.separator)(sepWidth));
|
|
136
|
+
}
|
|
137
|
+
const headerRow = this.config.columns.map((col, i) => this.padCell(colors.ui.header(col.header), columnWidths[i], col.align || 'left')).join(columnSpacing);
|
|
138
|
+
lines.push(headerRow);
|
|
139
|
+
if (this.config.showSeparator) {
|
|
140
|
+
lines.push((0, colors_1.separator)(sepWidth));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Data rows
|
|
144
|
+
for (const row of data) {
|
|
145
|
+
const cells = this.config.columns.map((col, i) => {
|
|
146
|
+
const rawValue = this.getCellValue(row, col);
|
|
147
|
+
// Step 1: Convert to string (custom format or default)
|
|
148
|
+
let stringValue = col.customFormat
|
|
149
|
+
? col.customFormat(rawValue, row)
|
|
150
|
+
: String(rawValue ?? '');
|
|
151
|
+
// Step 2: Truncate if needed (working with plain strings)
|
|
152
|
+
if (col.truncate !== false && stringValue.length > columnWidths[i]) {
|
|
153
|
+
stringValue = stringValue.substring(0, columnWidths[i] - 3) + '...';
|
|
154
|
+
}
|
|
155
|
+
// Step 3: Apply type-based formatting (adds color/style)
|
|
156
|
+
const formatted = col.type
|
|
157
|
+
? typeFormatters[col.type](stringValue, rawValue)
|
|
158
|
+
: stringValue;
|
|
159
|
+
// Step 4: Pad to column width (handles ANSI codes properly)
|
|
160
|
+
return this.padCell(formatted, columnWidths[i], col.align || 'left');
|
|
161
|
+
});
|
|
162
|
+
lines.push(cells.join(columnSpacing));
|
|
163
|
+
}
|
|
164
|
+
// Footer separator
|
|
165
|
+
if (this.config.showSeparator) {
|
|
166
|
+
lines.push((0, colors_1.separator)(sepWidth));
|
|
167
|
+
lines.push(colors.status.dim(`\nShowing ${data.length} row(s)\n`));
|
|
168
|
+
}
|
|
169
|
+
return lines;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Print table directly to console
|
|
173
|
+
*/
|
|
174
|
+
print(data) {
|
|
175
|
+
const lines = this.render(data);
|
|
176
|
+
console.log(lines.join('\n'));
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get cell value from row
|
|
180
|
+
*/
|
|
181
|
+
getCellValue(row, col) {
|
|
182
|
+
if (typeof col.field === 'function') {
|
|
183
|
+
return col.field(row);
|
|
184
|
+
}
|
|
185
|
+
return row[col.field];
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Calculate optimal column widths based on data and terminal size
|
|
189
|
+
*/
|
|
190
|
+
calculateColumnWidths(data) {
|
|
191
|
+
const { columns, spacing, terminalWidth } = this.config;
|
|
192
|
+
// Step 1: Determine fixed-width columns
|
|
193
|
+
const fixedWidths = columns.map(col => {
|
|
194
|
+
if (typeof col.width === 'number') {
|
|
195
|
+
return col.width;
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
});
|
|
199
|
+
// Step 2: Calculate auto-fit columns (fit to content)
|
|
200
|
+
const autoWidths = columns.map((col, i) => {
|
|
201
|
+
if (col.width === 'auto') {
|
|
202
|
+
// Find max content width for this column (using raw strings before formatting)
|
|
203
|
+
const headerWidth = (0, string_width_1.default)(col.header);
|
|
204
|
+
const maxContentWidth = Math.max(headerWidth, ...data.map(row => {
|
|
205
|
+
const rawValue = this.getCellValue(row, col);
|
|
206
|
+
const stringValue = col.customFormat
|
|
207
|
+
? col.customFormat(rawValue, row)
|
|
208
|
+
: String(rawValue ?? '');
|
|
209
|
+
return stringValue.length;
|
|
210
|
+
}));
|
|
211
|
+
const constrainedWidth = Math.min(col.maxWidth || Infinity, Math.max(col.minWidth || 0, maxContentWidth));
|
|
212
|
+
return constrainedWidth;
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
});
|
|
216
|
+
// Step 3: Calculate total fixed space used
|
|
217
|
+
const totalSpacing = spacing * (columns.length - 1);
|
|
218
|
+
const usedWidth = fixedWidths.reduce((sum, w) => sum + (w || 0), 0) +
|
|
219
|
+
autoWidths.reduce((sum, w) => sum + (w || 0), 0) +
|
|
220
|
+
totalSpacing + 4; // 4 for margins
|
|
221
|
+
const remainingWidth = Math.max(0, terminalWidth - usedWidth);
|
|
222
|
+
// Step 4: Distribute remaining width to flex columns
|
|
223
|
+
const flexColumns = columns
|
|
224
|
+
.map((col, i) => ({ col, i }))
|
|
225
|
+
.filter(({ col }) => col.width === 'flex' || col.width === undefined);
|
|
226
|
+
if (flexColumns.length === 0) {
|
|
227
|
+
// No flex columns, use fixed + auto widths
|
|
228
|
+
return columns.map((col, i) => fixedWidths[i] ?? autoWidths[i] ?? 10);
|
|
229
|
+
}
|
|
230
|
+
// Calculate total priority
|
|
231
|
+
const totalPriority = flexColumns.reduce((sum, { col }) => sum + (col.priority || 1), 0);
|
|
232
|
+
// Distribute remaining width by priority
|
|
233
|
+
const flexWidths = columns.map(() => 0);
|
|
234
|
+
flexColumns.forEach(({ col, i }) => {
|
|
235
|
+
const priority = col.priority || 1;
|
|
236
|
+
const share = Math.floor((remainingWidth * priority) / totalPriority);
|
|
237
|
+
const constrainedShare = Math.min(col.maxWidth || Infinity, Math.max(col.minWidth || 0, share));
|
|
238
|
+
flexWidths[i] = constrainedShare;
|
|
239
|
+
});
|
|
240
|
+
// Combine all widths
|
|
241
|
+
return columns.map((col, i) => fixedWidths[i] ?? autoWidths[i] ?? flexWidths[i] ?? 10);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Pad cell text to width with alignment
|
|
245
|
+
*/
|
|
246
|
+
padCell(text, width, align) {
|
|
247
|
+
const visualWidth = (0, string_width_1.default)(text);
|
|
248
|
+
const padding = Math.max(0, width - visualWidth);
|
|
249
|
+
switch (align) {
|
|
250
|
+
case 'right':
|
|
251
|
+
return ' '.repeat(padding) + text;
|
|
252
|
+
case 'center':
|
|
253
|
+
const leftPad = Math.floor(padding / 2);
|
|
254
|
+
const rightPad = padding - leftPad;
|
|
255
|
+
return ' '.repeat(leftPad) + text + ' '.repeat(rightPad);
|
|
256
|
+
case 'left':
|
|
257
|
+
default:
|
|
258
|
+
return text + ' '.repeat(padding);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.Table = Table;
|
|
263
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/lib/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal Image Display Utilities (ADR-057)
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for displaying images in the terminal using chafa,
|
|
5
|
+
* with fallback options and configuration support.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if chafa is available on the system
|
|
9
|
+
* @returns true if chafa command is available
|
|
10
|
+
*/
|
|
11
|
+
export declare function isChafaAvailable(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Get chafa version information
|
|
14
|
+
* @returns Version string or null if not available
|
|
15
|
+
*/
|
|
16
|
+
export declare function getChafaVersion(): string | null;
|
|
17
|
+
export interface ChafaOptions {
|
|
18
|
+
/** Width in characters (default: terminal width) */
|
|
19
|
+
width?: number;
|
|
20
|
+
/** Height in characters (default: auto) */
|
|
21
|
+
height?: number;
|
|
22
|
+
/** Scale factor (0.0-1.0, e.g., 0.3 for 1/3 width) */
|
|
23
|
+
scale?: number;
|
|
24
|
+
/** Alignment: left, center, right (default: left) */
|
|
25
|
+
align?: 'left' | 'center' | 'right';
|
|
26
|
+
/** Color mode: 256 (default), 16, 2, or full (truecolor) */
|
|
27
|
+
colors?: '256' | '16' | '2' | 'full';
|
|
28
|
+
/** Symbol map: block, border, space, vhalf, etc. */
|
|
29
|
+
symbols?: string;
|
|
30
|
+
/** Enable animations for GIFs (default: false) */
|
|
31
|
+
animate?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Display image in terminal using chafa
|
|
35
|
+
* @param imagePath - Path to image file
|
|
36
|
+
* @param options - Chafa display options
|
|
37
|
+
* @returns true if successfully displayed, false otherwise
|
|
38
|
+
*/
|
|
39
|
+
export declare function displayImageWithChafa(imagePath: string, options?: ChafaOptions): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Display image from Buffer using chafa
|
|
42
|
+
* Writes to temp file, displays, then cleans up
|
|
43
|
+
* @param imageBuffer - Image binary data
|
|
44
|
+
* @param extension - File extension (e.g., '.jpg', '.png')
|
|
45
|
+
* @param options - Chafa display options
|
|
46
|
+
* @returns true if successfully displayed
|
|
47
|
+
*/
|
|
48
|
+
export declare function displayImageBufferWithChafa(imageBuffer: Buffer, extension?: string, options?: ChafaOptions): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Save image buffer to file
|
|
51
|
+
* @param imageBuffer - Image binary data
|
|
52
|
+
* @param outputPath - Path to save image
|
|
53
|
+
* @returns true if successfully saved
|
|
54
|
+
*/
|
|
55
|
+
export declare function saveImageToFile(imageBuffer: Buffer, outputPath: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Get image format from buffer by checking magic bytes
|
|
58
|
+
* @param buffer - Image binary data
|
|
59
|
+
* @returns File extension (with dot) or '.jpg' as fallback
|
|
60
|
+
*/
|
|
61
|
+
export declare function detectImageFormat(buffer: Buffer): string;
|
|
62
|
+
/**
|
|
63
|
+
* Print chafa installation instructions
|
|
64
|
+
*/
|
|
65
|
+
export declare function printChafaInstallInstructions(): void;
|
|
66
|
+
//# sourceMappingURL=terminal-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-images.d.ts","sourceRoot":"","sources":["../../src/lib/terminal-images.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAO1C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAQ/C;AAED,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;IACrC,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAwE5F;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAe,EAC1B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAehF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiCxD;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAYpD"}
|