@portel/photon 1.3.0 â 1.4.0
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 +79 -1
- package/dist/cli-alias.d.ts.map +1 -1
- package/dist/cli-alias.js +13 -8
- package/dist/cli-alias.js.map +1 -1
- package/dist/cli-formatter.d.ts +25 -0
- package/dist/cli-formatter.d.ts.map +1 -0
- package/dist/cli-formatter.js +326 -0
- package/dist/cli-formatter.js.map +1 -0
- package/dist/cli.js +891 -488
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +16 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +125 -19
- package/dist/loader.js.map +1 -1
- package/dist/path-resolver.d.ts +12 -19
- package/dist/path-resolver.d.ts.map +1 -1
- package/dist/path-resolver.js +35 -61
- package/dist/path-resolver.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +606 -273
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/photon-doc-extractor.js +1 -1
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -8
- package/dist/server.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
# Photon
|
|
9
9
|
|
|
10
|
-
**
|
|
10
|
+
**Universal runtime that turns single-file TypeScript into MCP server, CLI, and more.**
|
|
11
11
|
|
|
12
12
|
Photon TS files are Single file. Zero boilerplate. Pure business logic.
|
|
13
13
|
|
|
@@ -26,6 +26,21 @@ Photon TS files are Single file. Zero boilerplate. Pure business logic.
|
|
|
26
26
|
|
|
27
27
|
Think of it like **NPM and Node, but for MCP**.
|
|
28
28
|
|
|
29
|
+
### Write Once, Use Everywhere
|
|
30
|
+
|
|
31
|
+
The same `.photon.ts` file automatically becomes:
|
|
32
|
+
- đ¤ **MCP Server** - Tools for Claude Desktop, Cursor, and AI assistants
|
|
33
|
+
- đģ **CLI Tool** - Beautiful command-line interface for humans
|
|
34
|
+
- đ **Platform Integrations** - NCP, Lumina, and future runtimes
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Same file, multiple interfaces:
|
|
38
|
+
photon mcp analytics # Run as MCP server for AI
|
|
39
|
+
photon cli analytics revenue # Use as CLI tool for humans
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Zero extra code. Pure business logic. Infinite deployment targets.**
|
|
43
|
+
|
|
29
44
|
### The Photon Ecosystem Flywheel
|
|
30
45
|
|
|
31
46
|

|
|
@@ -103,6 +118,28 @@ export default class Analytics {
|
|
|
103
118
|
|
|
104
119
|
**40 lines. One file. Production-ready.**
|
|
105
120
|
|
|
121
|
+
### Use It Everywhere
|
|
122
|
+
|
|
123
|
+
That single file now works as both an **MCP server** and a **CLI tool**:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# As an MCP server (for AI assistants)
|
|
127
|
+
photon mcp analytics
|
|
128
|
+
# â Claude Desktop can now call revenue() as a tool
|
|
129
|
+
|
|
130
|
+
# As a CLI (for humans)
|
|
131
|
+
photon cli analytics revenue --startDate 2024-01-01 --endDate 2024-12-31
|
|
132
|
+
# â Beautiful formatted output:
|
|
133
|
+
# ââââââââââââââŦâââââââââââ
|
|
134
|
+
# â Date â Revenue â
|
|
135
|
+
# ââââââââââââââŧâââââââââââ¤
|
|
136
|
+
# â 2024-01-01 â $12,450 â
|
|
137
|
+
# â 2024-01-02 â $15,320 â
|
|
138
|
+
# ââââââââââââââ´âââââââââââ
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Same code. Same logic. Two interfaces. Zero duplication.**
|
|
142
|
+
|
|
106
143
|
---
|
|
107
144
|
|
|
108
145
|
## Why One File Changes Everything
|
|
@@ -246,6 +283,7 @@ photon add your-custom-tool
|
|
|
246
283
|
| **Hot Reload** | Configure yourself | Built-in with --dev |
|
|
247
284
|
| **AI Context** | Scattered | Single file |
|
|
248
285
|
| **CLI Interface** | Write separate code | Automatic from same code |
|
|
286
|
+
| **Deployment Targets** | MCP only | MCP, CLI, NCP, Lumina, APIs... |
|
|
249
287
|
|
|
250
288
|
[See detailed comparison â](COMPARISON.md)
|
|
251
289
|
|
|
@@ -1252,6 +1290,46 @@ Run photon methods directly from the command line with beautiful formatted outpu
|
|
|
1252
1290
|
|
|
1253
1291
|
**Write once, deploy everywhere:** The same business logic powers both your MCP tools and CLI commands.
|
|
1254
1292
|
|
|
1293
|
+
### đ Ecosystem Integrations
|
|
1294
|
+
|
|
1295
|
+
Photon files are first-class citizens across multiple platforms:
|
|
1296
|
+
|
|
1297
|
+
#### NCP - Intelligent MCP Orchestration
|
|
1298
|
+
|
|
1299
|
+
[NCP](https://github.com/portel-dev/ncp) runs as an MCP client hosting many MCPs intelligently, while acting as an MCP server for any client. Photon files integrate seamlessly as context providers.
|
|
1300
|
+
|
|
1301
|
+
```bash
|
|
1302
|
+
# Photons work natively with NCP
|
|
1303
|
+
ncp add analytics.photon.ts
|
|
1304
|
+
```
|
|
1305
|
+
|
|
1306
|
+
NCP enables sophisticated MCP orchestration patterns, and `.photon.ts` files are designed to work seamlessly in this environment.
|
|
1307
|
+
|
|
1308
|
+
#### Lumina - Anything API Server *(Coming Soon)*
|
|
1309
|
+
|
|
1310
|
+
Turn any photon into a production API endpoint with zero configuration.
|
|
1311
|
+
|
|
1312
|
+
```bash
|
|
1313
|
+
# Same photon, now an HTTP API
|
|
1314
|
+
lumina serve analytics.photon.ts
|
|
1315
|
+
# â POST /revenue with JSON params
|
|
1316
|
+
# â GET /status
|
|
1317
|
+
# â Full REST API from your photon methods
|
|
1318
|
+
```
|
|
1319
|
+
|
|
1320
|
+
Lumina will make photons available as HTTP/WebSocket endpoints, enabling web apps, mobile clients, and traditional API consumers to use the same business logic.
|
|
1321
|
+
|
|
1322
|
+
#### Future Platforms
|
|
1323
|
+
|
|
1324
|
+
The `.photon.ts` format is designed to be consumed by any runtime:
|
|
1325
|
+
- WebSocket servers
|
|
1326
|
+
- Serverless functions (AWS Lambda, Cloudflare Workers)
|
|
1327
|
+
- Native desktop applications
|
|
1328
|
+
- Browser extensions
|
|
1329
|
+
- GraphQL servers
|
|
1330
|
+
|
|
1331
|
+
**One file. Many platforms. Pure business logic.**
|
|
1332
|
+
|
|
1255
1333
|
---
|
|
1256
1334
|
|
|
1257
1335
|
Photon's framework-agnostic design enables future deployment targets. More on the way.
|
package/dist/cli-alias.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-alias.d.ts","sourceRoot":"","sources":["../src/cli-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;GAEG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCvF;AAoFD;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"cli-alias.d.ts","sourceRoot":"","sources":["../src/cli-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;GAEG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCvF;AAoFD;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqDjD"}
|
package/dist/cli-alias.js
CHANGED
|
@@ -154,18 +154,20 @@ export async function removeAlias(aliasName) {
|
|
|
154
154
|
*/
|
|
155
155
|
export async function listAliases() {
|
|
156
156
|
try {
|
|
157
|
+
const { formatOutput, printInfo, printWarning } = await import('./cli-formatter.js');
|
|
157
158
|
if (!existsSync(ALIAS_DIR)) {
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
printInfo('No aliases created yet.');
|
|
160
|
+
printInfo('Create one with: photon alias <photon-name>');
|
|
160
161
|
return;
|
|
161
162
|
}
|
|
162
163
|
const files = await fs.readdir(ALIAS_DIR);
|
|
163
164
|
if (files.length === 0) {
|
|
164
|
-
|
|
165
|
-
|
|
165
|
+
printInfo('No aliases created yet.');
|
|
166
|
+
printInfo('Create one with: photon alias <photon-name>');
|
|
166
167
|
return;
|
|
167
168
|
}
|
|
168
|
-
|
|
169
|
+
// Build table data
|
|
170
|
+
const tableData = [];
|
|
169
171
|
for (const file of files) {
|
|
170
172
|
const aliasPath = path.join(ALIAS_DIR, file);
|
|
171
173
|
const stat = await fs.stat(aliasPath);
|
|
@@ -176,19 +178,22 @@ export async function listAliases() {
|
|
|
176
178
|
const photonName = match ? match[1] : 'unknown';
|
|
177
179
|
// Display name without .cmd extension on Windows
|
|
178
180
|
const displayName = file.replace(/\.cmd$/, '');
|
|
179
|
-
|
|
181
|
+
tableData.push({ alias: displayName, photon: photonName });
|
|
180
182
|
}
|
|
181
183
|
}
|
|
182
|
-
|
|
184
|
+
printInfo(`CLI Aliases (${tableData.length}):\n`);
|
|
185
|
+
formatOutput(tableData, 'table');
|
|
183
186
|
// Check if bin directory is in PATH
|
|
184
187
|
const pathEnv = process.env.PATH || '';
|
|
185
188
|
const paths = pathEnv.split(PATH_SEPARATOR);
|
|
186
189
|
if (!paths.includes(ALIAS_DIR)) {
|
|
190
|
+
printWarning(`${ALIAS_DIR} is not in your PATH`);
|
|
187
191
|
await checkAndInstructPath();
|
|
188
192
|
}
|
|
189
193
|
}
|
|
190
194
|
catch (error) {
|
|
191
|
-
|
|
195
|
+
const { printError } = await import('./cli-formatter.js');
|
|
196
|
+
printError(error.message);
|
|
192
197
|
process.exit(1);
|
|
193
198
|
}
|
|
194
199
|
}
|
package/dist/cli-alias.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-alias.js","sourceRoot":"","sources":["../src/cli-alias.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-alias.js","sourceRoot":"","sources":["../src/cli-alias.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type OutputFormat = 'primitive' | 'table' | 'tree' | 'list' | 'none' | 'json' | 'markdown' | 'yaml' | 'xml' | 'html' | 'code' | `code:${string}`;
|
|
2
|
+
export declare const STATUS: {
|
|
3
|
+
OK: string;
|
|
4
|
+
ERROR: string;
|
|
5
|
+
WARN: string;
|
|
6
|
+
UNKNOWN: string;
|
|
7
|
+
UPDATE: string;
|
|
8
|
+
OFF: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function formatOutput(data: any, hint?: OutputFormat): void;
|
|
11
|
+
export declare function detectFormat(data: any): OutputFormat;
|
|
12
|
+
export declare function renderPrimitive(value: any): void;
|
|
13
|
+
export declare function renderList(data: any[]): void;
|
|
14
|
+
export declare function renderTable(data: any): void;
|
|
15
|
+
export declare function renderTree(data: any, indent?: number): void;
|
|
16
|
+
export declare function renderNone(): void;
|
|
17
|
+
export declare function formatKey(key: string): string;
|
|
18
|
+
export declare function formatValue(value: any): string;
|
|
19
|
+
export declare function formatToMimeType(format: OutputFormat): string | undefined;
|
|
20
|
+
export declare function printSuccess(message: string): void;
|
|
21
|
+
export declare function printError(message: string): void;
|
|
22
|
+
export declare function printInfo(message: string): void;
|
|
23
|
+
export declare function printWarning(message: string): void;
|
|
24
|
+
export declare function printHeader(message: string): void;
|
|
25
|
+
//# sourceMappingURL=cli-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-formatter.d.ts","sourceRoot":"","sources":["../src/cli-formatter.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,QAAQ,MAAM,EAAE,CAAC;AAErB,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CASjE;AAgID,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CA2BpD;AASD,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAMhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAM5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAuE3C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,SAAI,GAAG,IAAI,CAkBtD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAUD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAQ9C;AAcD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAezE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { highlight } from 'cli-highlight';
|
|
3
|
+
export const STATUS = {
|
|
4
|
+
OK: chalk.green('OK'),
|
|
5
|
+
ERROR: chalk.red('ERROR'),
|
|
6
|
+
WARN: chalk.yellow('WARN'),
|
|
7
|
+
UNKNOWN: chalk.gray('UNKNOWN'),
|
|
8
|
+
UPDATE: chalk.blue('UPDATE'),
|
|
9
|
+
OFF: chalk.gray('OFF'),
|
|
10
|
+
};
|
|
11
|
+
export function formatOutput(data, hint) {
|
|
12
|
+
const format = hint || detectFormat(data);
|
|
13
|
+
if (typeof data === 'string' && isContentFormat(format)) {
|
|
14
|
+
renderContent(data, format);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
formatDataWithHint(data, format);
|
|
18
|
+
}
|
|
19
|
+
function isContentFormat(format) {
|
|
20
|
+
return (format === 'json' ||
|
|
21
|
+
format === 'markdown' ||
|
|
22
|
+
format === 'yaml' ||
|
|
23
|
+
format === 'xml' ||
|
|
24
|
+
format === 'html' ||
|
|
25
|
+
format === 'code' ||
|
|
26
|
+
format.startsWith('code:'));
|
|
27
|
+
}
|
|
28
|
+
function renderContent(content, format) {
|
|
29
|
+
switch (format) {
|
|
30
|
+
case 'json':
|
|
31
|
+
renderJson(content);
|
|
32
|
+
break;
|
|
33
|
+
case 'markdown':
|
|
34
|
+
renderMarkdown(content);
|
|
35
|
+
break;
|
|
36
|
+
case 'yaml':
|
|
37
|
+
renderYaml(content);
|
|
38
|
+
break;
|
|
39
|
+
case 'xml':
|
|
40
|
+
case 'html':
|
|
41
|
+
renderXml(content);
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
if (format === 'code' || format.startsWith('code:')) {
|
|
45
|
+
const lang = format === 'code' ? undefined : format.slice(5);
|
|
46
|
+
renderCode(content, lang);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.log(content);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function renderJson(content) {
|
|
54
|
+
try {
|
|
55
|
+
const parsed = JSON.parse(content);
|
|
56
|
+
console.log(highlight(JSON.stringify(parsed, null, 2), { language: 'json', ignoreIllegals: true }));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
console.log(content);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function renderMarkdown(content) {
|
|
63
|
+
let rendered = content;
|
|
64
|
+
rendered = rendered.replace(/```(\w*)\n([\s\S]*?)```/g, (_match, lang, code) => {
|
|
65
|
+
const trimmedCode = code.trim();
|
|
66
|
+
if (lang && lang !== '') {
|
|
67
|
+
try {
|
|
68
|
+
return '\n' + highlight(trimmedCode, { language: lang, ignoreIllegals: true }) + '\n';
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return '\n' + chalk.gray(trimmedCode) + '\n';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return '\n' + chalk.gray(trimmedCode) + '\n';
|
|
75
|
+
});
|
|
76
|
+
rendered = rendered.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_m, text, url) => chalk.blue.underline(text) + chalk.dim(` (${url})`));
|
|
77
|
+
rendered = rendered
|
|
78
|
+
.replace(/^### (.+)$/gm, (_m, h) => `\n${chalk.cyan(' ' + h)}\n ${chalk.dim('-'.repeat(20))}`)
|
|
79
|
+
.replace(/^## (.+)$/gm, (_m, h) => `\n${chalk.yellow.bold(' ' + h)}\n ${chalk.dim('='.repeat(30))}`)
|
|
80
|
+
.replace(/^# (.+)$/gm, (_m, h) => `\n${chalk.magenta.bold(h)}\n${chalk.dim('='.repeat(40))}`);
|
|
81
|
+
rendered = rendered.replace(/^> (.+)$/gm, (_m, quote) => chalk.dim('â ') + chalk.italic(quote));
|
|
82
|
+
rendered = rendered.replace(/^---+$/gm, chalk.dim('â'.repeat(40)));
|
|
83
|
+
rendered = rendered.replace(/^- /gm, chalk.dim(' âĸ '));
|
|
84
|
+
rendered = rendered.replace(/^(\d+)\. /gm, (_m, num) => chalk.dim(` ${num}. `));
|
|
85
|
+
rendered = rendered.replace(/\*\*(.+?)\*\*/g, (_m, text) => chalk.bold(text));
|
|
86
|
+
rendered = rendered.replace(/\*(.+?)\*/g, (_m, text) => chalk.italic(text));
|
|
87
|
+
rendered = rendered.replace(/_(.+?)_/g, (_m, text) => chalk.italic(text));
|
|
88
|
+
rendered = rendered.replace(/`([^`]+)`/g, (_m, code) => chalk.cyan(code));
|
|
89
|
+
console.log(rendered.trimEnd());
|
|
90
|
+
}
|
|
91
|
+
function renderYaml(content) {
|
|
92
|
+
try {
|
|
93
|
+
console.log(highlight(content, { language: 'yaml', ignoreIllegals: true }));
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
console.log(content);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function renderXml(content) {
|
|
100
|
+
try {
|
|
101
|
+
console.log(highlight(content, { language: 'xml', ignoreIllegals: true }));
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
console.log(content);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function renderCode(content, lang) {
|
|
108
|
+
try {
|
|
109
|
+
console.log(highlight(content, { language: lang, ignoreIllegals: true }));
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
console.log(content);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function formatDataWithHint(data, format) {
|
|
116
|
+
switch (format) {
|
|
117
|
+
case 'primitive':
|
|
118
|
+
renderPrimitive(data);
|
|
119
|
+
break;
|
|
120
|
+
case 'list':
|
|
121
|
+
renderList(Array.isArray(data) ? data : [data]);
|
|
122
|
+
break;
|
|
123
|
+
case 'table':
|
|
124
|
+
renderTable(data);
|
|
125
|
+
break;
|
|
126
|
+
case 'tree':
|
|
127
|
+
renderTree(data);
|
|
128
|
+
break;
|
|
129
|
+
case 'none':
|
|
130
|
+
renderNone();
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
export function detectFormat(data) {
|
|
135
|
+
if (data === null || data === undefined) {
|
|
136
|
+
return 'none';
|
|
137
|
+
}
|
|
138
|
+
if (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') {
|
|
139
|
+
return 'primitive';
|
|
140
|
+
}
|
|
141
|
+
if (Array.isArray(data)) {
|
|
142
|
+
if (data.length === 0) {
|
|
143
|
+
return 'list';
|
|
144
|
+
}
|
|
145
|
+
const firstItem = data[0];
|
|
146
|
+
if (typeof firstItem !== 'object' || firstItem === null) {
|
|
147
|
+
return 'list';
|
|
148
|
+
}
|
|
149
|
+
if (isFlatObject(firstItem)) {
|
|
150
|
+
return 'table';
|
|
151
|
+
}
|
|
152
|
+
return 'tree';
|
|
153
|
+
}
|
|
154
|
+
if (typeof data === 'object') {
|
|
155
|
+
if (isFlatObject(data)) {
|
|
156
|
+
return 'table';
|
|
157
|
+
}
|
|
158
|
+
return 'tree';
|
|
159
|
+
}
|
|
160
|
+
return 'none';
|
|
161
|
+
}
|
|
162
|
+
function isFlatObject(obj) {
|
|
163
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
return !Object.values(obj).some(value => typeof value === 'object' && value !== null);
|
|
167
|
+
}
|
|
168
|
+
export function renderPrimitive(value) {
|
|
169
|
+
if (typeof value === 'boolean') {
|
|
170
|
+
console.log(value ? 'yes' : 'no');
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
console.log(value);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export function renderList(data) {
|
|
177
|
+
if (data.length === 0) {
|
|
178
|
+
console.log('(empty)');
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
data.forEach(item => console.log(` * ${item}`));
|
|
182
|
+
}
|
|
183
|
+
export function renderTable(data) {
|
|
184
|
+
if (!Array.isArray(data)) {
|
|
185
|
+
const entries = Object.entries(data).filter(([key]) => key !== 'returnValue');
|
|
186
|
+
if (entries.length === 0) {
|
|
187
|
+
console.log('(empty)');
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const keyCells = entries.map(([key]) => formatKey(key));
|
|
191
|
+
const valueCells = entries.map(([, value]) => String(formatValue(value)));
|
|
192
|
+
const keyCol = Math.max(...keyCells.map(cell => visibleLength(cell)));
|
|
193
|
+
const valueCol = Math.max(...valueCells.map(cell => visibleLength(cell)));
|
|
194
|
+
const horizontal = (width) => 'â'.repeat(width + 2);
|
|
195
|
+
console.log(`â${horizontal(keyCol)}âŦ${horizontal(valueCol)}â`);
|
|
196
|
+
entries.forEach((_entry, index) => {
|
|
197
|
+
const keyCell = padAnsi(keyCells[index], keyCol);
|
|
198
|
+
const valueCell = padAnsi(valueCells[index], valueCol);
|
|
199
|
+
console.log(`â ${keyCell} â ${valueCell} â`);
|
|
200
|
+
console.log(index < entries.length - 1 ? `â${horizontal(keyCol)}âŧ${horizontal(valueCol)}â¤` : `â${horizontal(keyCol)}â´${horizontal(valueCol)}â`);
|
|
201
|
+
});
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (data.length === 0) {
|
|
205
|
+
console.log('(empty)');
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const keys = Array.from(new Set(data.flatMap(obj => Object.keys(obj)))).filter(key => key !== 'returnValue');
|
|
209
|
+
if (keys.length === 0) {
|
|
210
|
+
console.log('(no data)');
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const columnWidths = new Map();
|
|
214
|
+
const headerCells = new Map();
|
|
215
|
+
keys.forEach(key => {
|
|
216
|
+
const header = formatKey(key);
|
|
217
|
+
headerCells.set(key, header);
|
|
218
|
+
const maxWidth = Math.max(visibleLength(header), ...data.map(obj => visibleLength(String(formatValue(obj[key] ?? '')))));
|
|
219
|
+
columnWidths.set(key, maxWidth);
|
|
220
|
+
});
|
|
221
|
+
const horizontal = (key) => 'â'.repeat(columnWidths.get(key) + 2);
|
|
222
|
+
console.log('â' + keys.map(horizontal).join('âŦ') + 'â');
|
|
223
|
+
console.log('â' +
|
|
224
|
+
keys
|
|
225
|
+
.map(key => ` ${padAnsi(headerCells.get(key), columnWidths.get(key))} `)
|
|
226
|
+
.join('â') +
|
|
227
|
+
'â');
|
|
228
|
+
console.log('â' + keys.map(horizontal).join('âŧ') + 'â¤');
|
|
229
|
+
data.forEach((obj, rowIndex) => {
|
|
230
|
+
console.log('â' +
|
|
231
|
+
keys
|
|
232
|
+
.map(key => {
|
|
233
|
+
const value = String(formatValue(obj[key] ?? ''));
|
|
234
|
+
return ` ${padAnsi(value, columnWidths.get(key))} `;
|
|
235
|
+
})
|
|
236
|
+
.join('â') +
|
|
237
|
+
'â');
|
|
238
|
+
if (rowIndex === data.length - 1) {
|
|
239
|
+
console.log('â' + keys.map(horizontal).join('â´') + 'â');
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
export function renderTree(data, indent = 0) {
|
|
244
|
+
const spacing = ' '.repeat(indent);
|
|
245
|
+
if (Array.isArray(data)) {
|
|
246
|
+
data.forEach(item => renderTree(item, indent));
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (typeof data === 'object' && data !== null) {
|
|
250
|
+
for (const [key, value] of Object.entries(data)) {
|
|
251
|
+
if (typeof value === 'object' && value !== null) {
|
|
252
|
+
console.log(`${spacing}${chalk.bold(formatKey(key))}:`);
|
|
253
|
+
renderTree(value, indent + 1);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
console.log(`${spacing}${chalk.bold(formatKey(key))}: ${formatValue(value)}`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
console.log(`${spacing}${data}`);
|
|
262
|
+
}
|
|
263
|
+
export function renderNone() {
|
|
264
|
+
console.log('(empty)');
|
|
265
|
+
}
|
|
266
|
+
function humanizeKey(key) {
|
|
267
|
+
return key
|
|
268
|
+
.replace(/([A-Z])/g, ' $1')
|
|
269
|
+
.replace(/_/g, ' ')
|
|
270
|
+
.replace(/\b\w/g, char => char.toUpperCase())
|
|
271
|
+
.trim();
|
|
272
|
+
}
|
|
273
|
+
export function formatKey(key) {
|
|
274
|
+
return chalk.yellow(humanizeKey(key));
|
|
275
|
+
}
|
|
276
|
+
export function formatValue(value) {
|
|
277
|
+
if (typeof value === 'boolean') {
|
|
278
|
+
return value ? chalk.green('yes') : chalk.red('no');
|
|
279
|
+
}
|
|
280
|
+
if (value === null || value === undefined) {
|
|
281
|
+
return chalk.dim('nil');
|
|
282
|
+
}
|
|
283
|
+
return chalk.white(String(value));
|
|
284
|
+
}
|
|
285
|
+
function visibleLength(text) {
|
|
286
|
+
return text.replace(/\[[0-9;]*m/g, '').length;
|
|
287
|
+
}
|
|
288
|
+
function padAnsi(text, width) {
|
|
289
|
+
const len = visibleLength(text);
|
|
290
|
+
if (len >= width) {
|
|
291
|
+
return text;
|
|
292
|
+
}
|
|
293
|
+
return text + ' '.repeat(width - len);
|
|
294
|
+
}
|
|
295
|
+
export function formatToMimeType(format) {
|
|
296
|
+
switch (format) {
|
|
297
|
+
case 'json':
|
|
298
|
+
return 'application/json';
|
|
299
|
+
case 'markdown':
|
|
300
|
+
return 'text/markdown';
|
|
301
|
+
case 'yaml':
|
|
302
|
+
return 'text/yaml';
|
|
303
|
+
case 'xml':
|
|
304
|
+
case 'html':
|
|
305
|
+
return 'text/html';
|
|
306
|
+
case 'code':
|
|
307
|
+
default:
|
|
308
|
+
return 'text/plain';
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
export function printSuccess(message) {
|
|
312
|
+
console.log(chalk.green('â
'), message);
|
|
313
|
+
}
|
|
314
|
+
export function printError(message) {
|
|
315
|
+
console.log(chalk.red('â'), message);
|
|
316
|
+
}
|
|
317
|
+
export function printInfo(message) {
|
|
318
|
+
console.log(chalk.cyan('âšī¸'), message);
|
|
319
|
+
}
|
|
320
|
+
export function printWarning(message) {
|
|
321
|
+
console.log(chalk.yellow('â ī¸'), message);
|
|
322
|
+
}
|
|
323
|
+
export function printHeader(message) {
|
|
324
|
+
console.log(chalk.bold(message));
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=cli-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-formatter.js","sourceRoot":"","sources":["../src/cli-formatter.ts"],"names":[],"mappings":"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"}
|