expert_eval_cli 1.0.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.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +179 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +7 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/client.d.ts +39 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +184 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/commands/auth.d.ts +3 -0
  12. package/dist/commands/auth.d.ts.map +1 -0
  13. package/dist/commands/auth.js +67 -0
  14. package/dist/commands/auth.js.map +1 -0
  15. package/dist/commands/eval-items.d.ts +3 -0
  16. package/dist/commands/eval-items.d.ts.map +1 -0
  17. package/dist/commands/eval-items.js +177 -0
  18. package/dist/commands/eval-items.js.map +1 -0
  19. package/dist/commands/eval-records.d.ts +3 -0
  20. package/dist/commands/eval-records.d.ts.map +1 -0
  21. package/dist/commands/eval-records.js +184 -0
  22. package/dist/commands/eval-records.js.map +1 -0
  23. package/dist/commands/experts.d.ts +3 -0
  24. package/dist/commands/experts.d.ts.map +1 -0
  25. package/dist/commands/experts.js +180 -0
  26. package/dist/commands/experts.js.map +1 -0
  27. package/dist/commands/versions.d.ts +3 -0
  28. package/dist/commands/versions.d.ts.map +1 -0
  29. package/dist/commands/versions.js +186 -0
  30. package/dist/commands/versions.js.map +1 -0
  31. package/dist/config.d.ts +19 -0
  32. package/dist/config.d.ts.map +1 -0
  33. package/dist/config.js +114 -0
  34. package/dist/config.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +25 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/output.d.ts +9 -0
  40. package/dist/output.d.ts.map +1 -0
  41. package/dist/output.js +128 -0
  42. package/dist/output.js.map +1 -0
  43. package/dist/types.d.ts +165 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +6 -0
  46. package/dist/types.js.map +1 -0
  47. package/dist/utils.d.ts +11 -0
  48. package/dist/utils.d.ts.map +1 -0
  49. package/dist/utils.js +44 -0
  50. package/dist/utils.js.map +1 -0
  51. package/package.json +45 -0
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.makeVersionsCommand = makeVersionsCommand;
37
+ const commander_1 = require("commander");
38
+ const client = __importStar(require("../client.js"));
39
+ const output_js_1 = require("../output.js");
40
+ const utils_js_1 = require("../utils.js");
41
+ function makeVersionsCommand() {
42
+ const versions = new commander_1.Command('versions').description('Manage versions');
43
+ versions
44
+ .command('list')
45
+ .description('List versions with pagination')
46
+ .option('--page <n>', 'Page number (1-based)', '1')
47
+ .option('--page-size <n>', 'Items per page', '50')
48
+ .option('--expert-id <id>', 'Filter by expert business ID')
49
+ .action(async (options) => {
50
+ const globalOpts = versions.optsWithGlobals();
51
+ try {
52
+ const params = {
53
+ page: (0, utils_js_1.parseNumber)(options.page),
54
+ pageSize: (0, utils_js_1.parseNumber)(options.pageSize),
55
+ expertId: options.expertId,
56
+ };
57
+ const result = await client.listVersions(params);
58
+ if (globalOpts.quiet)
59
+ return;
60
+ const fmt = globalOpts.format === 'json' || !process.stdout.isTTY ? 'json' : 'table';
61
+ if (fmt === 'json') {
62
+ (0, output_js_1.printJson)(result, globalOpts);
63
+ }
64
+ else {
65
+ if (result.items.length === 0) {
66
+ console.log('No versions found.');
67
+ return;
68
+ }
69
+ (0, output_js_1.printTable)(result.items.map((v) => ({
70
+ id: v.id,
71
+ expertId: v.expertId,
72
+ hash: v.hash,
73
+ author: v.author || '',
74
+ commitMessage: v.commitMessage || '',
75
+ isPassed: v.isPassed,
76
+ bac: v.bac ?? '',
77
+ dcg: v.dcg ?? '',
78
+ })), globalOpts);
79
+ console.log(`\nPage ${result.page}/${Math.ceil(result.total / result.pageSize)} | Total: ${result.total}`);
80
+ }
81
+ }
82
+ catch (err) {
83
+ (0, output_js_1.printError)(err, globalOpts);
84
+ process.exitCode = utils_js_1.EXIT_CODES.GENERAL_ERROR;
85
+ return;
86
+ }
87
+ });
88
+ versions
89
+ .command('get')
90
+ .description('Get version by ID')
91
+ .argument('<id>', 'Version ID')
92
+ .action(async (id) => {
93
+ const globalOpts = versions.optsWithGlobals();
94
+ try {
95
+ const item = await client.getVersion(id);
96
+ (0, output_js_1.printItem)(item, globalOpts);
97
+ }
98
+ catch (err) {
99
+ (0, output_js_1.printError)(err, globalOpts);
100
+ process.exitCode = utils_js_1.EXIT_CODES.GENERAL_ERROR;
101
+ return;
102
+ }
103
+ });
104
+ versions
105
+ .command('create')
106
+ .description('Create a new version (idempotent by expertId + hash)')
107
+ .requiredOption('--expert-id <id>', 'Associated expert business ID')
108
+ .requiredOption('--hash <hash>', 'Version hash')
109
+ .option('--commit-message <text>', 'Commit message')
110
+ .option('--author <name>', 'Author name')
111
+ .option('--version-date <iso>', 'Version date (ISO 8601)')
112
+ .option('--is-passed', 'Whether the version passed')
113
+ .option('--bac <score>', 'Business acceptance score')
114
+ .option('--dcg <score>', 'Product quality score')
115
+ .action(async (options) => {
116
+ const globalOpts = versions.optsWithGlobals();
117
+ try {
118
+ const item = await client.createVersion({
119
+ expertId: options.expertId,
120
+ hash: options.hash,
121
+ commitMessage: options.commitMessage || null,
122
+ author: options.author || null,
123
+ versionDate: options.versionDate || null,
124
+ isPassed: !!options.isPassed,
125
+ bac: options.bac !== undefined ? (0, utils_js_1.parseNumber)(options.bac) ?? null : null,
126
+ dcg: options.dcg !== undefined ? (0, utils_js_1.parseNumber)(options.dcg) ?? null : null,
127
+ });
128
+ (0, output_js_1.printItem)(item, globalOpts);
129
+ }
130
+ catch (err) {
131
+ (0, output_js_1.printError)(err, globalOpts);
132
+ process.exitCode = utils_js_1.EXIT_CODES.GENERAL_ERROR;
133
+ return;
134
+ }
135
+ });
136
+ versions
137
+ .command('update')
138
+ .description('Update a version (creates if not exists)')
139
+ .requiredOption('--expert-id <id>', 'Associated expert business ID')
140
+ .requiredOption('--hash <hash>', 'Version hash')
141
+ .option('--commit-message <text>', 'Commit message')
142
+ .option('--author <name>', 'Author name')
143
+ .option('--version-date <iso>', 'Version date (ISO 8601)')
144
+ .option('--is-passed <bool>', 'Whether the version passed')
145
+ .option('--bac <score>', 'Business acceptance score')
146
+ .option('--dcg <score>', 'Product quality score')
147
+ .action(async (options) => {
148
+ const globalOpts = versions.optsWithGlobals();
149
+ try {
150
+ const item = await client.updateVersion({
151
+ expertId: options.expertId,
152
+ hash: options.hash,
153
+ commitMessage: options.commitMessage || null,
154
+ author: options.author || null,
155
+ versionDate: options.versionDate || null,
156
+ isPassed: options.isPassed !== undefined ? options.isPassed === 'true' : undefined,
157
+ bac: options.bac !== undefined ? (0, utils_js_1.parseNumber)(options.bac) ?? null : null,
158
+ dcg: options.dcg !== undefined ? (0, utils_js_1.parseNumber)(options.dcg) ?? null : null,
159
+ });
160
+ (0, output_js_1.printItem)(item, globalOpts);
161
+ }
162
+ catch (err) {
163
+ (0, output_js_1.printError)(err, globalOpts);
164
+ process.exitCode = utils_js_1.EXIT_CODES.GENERAL_ERROR;
165
+ return;
166
+ }
167
+ });
168
+ versions
169
+ .command('delete')
170
+ .description('Delete a version')
171
+ .argument('<id>', 'Version ID')
172
+ .action(async (id) => {
173
+ const globalOpts = versions.optsWithGlobals();
174
+ try {
175
+ const result = await client.deleteVersion(id);
176
+ (0, output_js_1.printItem)(result, globalOpts);
177
+ }
178
+ catch (err) {
179
+ (0, output_js_1.printError)(err, globalOpts);
180
+ process.exitCode = utils_js_1.EXIT_CODES.GENERAL_ERROR;
181
+ return;
182
+ }
183
+ });
184
+ return versions;
185
+ }
186
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/commands/versions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { CliConfig } from './types.js';
2
+ export declare const CONFIG_DIR: string;
3
+ export declare const CONFIG_FILE: string;
4
+ export declare function getConfigDir(): string;
5
+ export declare function getConfigFile(): string;
6
+ export declare function ensureConfigDir(): void;
7
+ export declare function readConfig(): CliConfig;
8
+ export declare function writeConfig(config: CliConfig): void;
9
+ export declare function clearConfig(): void;
10
+ export declare function getApiKey(): string | undefined;
11
+ export declare const DEFAULT_BASE_URL = "https://bytedance.feishuapp.com/app/app_17besd2kmya";
12
+ export declare function getBaseUrl(): string | undefined;
13
+ export declare function maskKey(key: string): string;
14
+ export declare function isAuthenticated(): boolean;
15
+ export declare function getAuthSource(): {
16
+ source: string;
17
+ maskedKey?: string;
18
+ };
19
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,UAAU,QAEwE,CAAC;AAEhG,eAAO,MAAM,WAAW,QAAuC,CAAC;AAEhE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED,wBAAgB,UAAU,IAAI,SAAS,CAUtC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAGnD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED,eAAO,MAAM,gBAAgB,wDAAwD,CAAC;AAEtF,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAE/C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3C;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAgB,aAAa,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAUtE"}
package/dist/config.js ADDED
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DEFAULT_BASE_URL = exports.CONFIG_FILE = exports.CONFIG_DIR = void 0;
37
+ exports.getConfigDir = getConfigDir;
38
+ exports.getConfigFile = getConfigFile;
39
+ exports.ensureConfigDir = ensureConfigDir;
40
+ exports.readConfig = readConfig;
41
+ exports.writeConfig = writeConfig;
42
+ exports.clearConfig = clearConfig;
43
+ exports.getApiKey = getApiKey;
44
+ exports.getBaseUrl = getBaseUrl;
45
+ exports.maskKey = maskKey;
46
+ exports.isAuthenticated = isAuthenticated;
47
+ exports.getAuthSource = getAuthSource;
48
+ const fs = __importStar(require("node:fs"));
49
+ const path = __importStar(require("node:path"));
50
+ const os = __importStar(require("node:os"));
51
+ exports.CONFIG_DIR = process.platform === 'win32'
52
+ ? path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'expert-eval')
53
+ : path.join(process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config'), 'expert-eval');
54
+ exports.CONFIG_FILE = path.join(exports.CONFIG_DIR, 'config.json');
55
+ function getConfigDir() {
56
+ return exports.CONFIG_DIR;
57
+ }
58
+ function getConfigFile() {
59
+ return exports.CONFIG_FILE;
60
+ }
61
+ function ensureConfigDir() {
62
+ if (!fs.existsSync(exports.CONFIG_DIR)) {
63
+ fs.mkdirSync(exports.CONFIG_DIR, { recursive: true, mode: 0o700 });
64
+ }
65
+ }
66
+ function readConfig() {
67
+ if (!fs.existsSync(exports.CONFIG_FILE)) {
68
+ return {};
69
+ }
70
+ try {
71
+ const raw = fs.readFileSync(exports.CONFIG_FILE, 'utf-8');
72
+ return JSON.parse(raw);
73
+ }
74
+ catch {
75
+ return {};
76
+ }
77
+ }
78
+ function writeConfig(config) {
79
+ ensureConfigDir();
80
+ fs.writeFileSync(exports.CONFIG_FILE, JSON.stringify(config, null, 2), { mode: 0o600 });
81
+ }
82
+ function clearConfig() {
83
+ if (fs.existsSync(exports.CONFIG_FILE)) {
84
+ fs.unlinkSync(exports.CONFIG_FILE);
85
+ }
86
+ }
87
+ function getApiKey() {
88
+ return process.env.EXPERT_EVAL_API_KEY || readConfig().apiKey;
89
+ }
90
+ exports.DEFAULT_BASE_URL = 'https://bytedance.feishuapp.com/app/app_17besd2kmya';
91
+ function getBaseUrl() {
92
+ return process.env.EXPERT_EVAL_BASE_URL || readConfig().baseUrl || exports.DEFAULT_BASE_URL;
93
+ }
94
+ function maskKey(key) {
95
+ if (key.length <= 8) {
96
+ return '*'.repeat(key.length);
97
+ }
98
+ return key.slice(0, 4) + '...' + key.slice(-4);
99
+ }
100
+ function isAuthenticated() {
101
+ return !!getApiKey();
102
+ }
103
+ function getAuthSource() {
104
+ const envKey = process.env.EXPERT_EVAL_API_KEY;
105
+ if (envKey) {
106
+ return { source: 'environment variable (EXPERT_EVAL_API_KEY)', maskedKey: maskKey(envKey) };
107
+ }
108
+ const config = readConfig();
109
+ if (config.apiKey) {
110
+ return { source: `config file (${exports.CONFIG_FILE})`, maskedKey: maskKey(config.apiKey) };
111
+ }
112
+ return { source: 'none' };
113
+ }
114
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createProgram(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,aAAa,IAAI,OAAO,CAiBvC"}
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProgram = createProgram;
4
+ const commander_1 = require("commander");
5
+ const auth_js_1 = require("./commands/auth.js");
6
+ const experts_js_1 = require("./commands/experts.js");
7
+ const versions_js_1 = require("./commands/versions.js");
8
+ const eval_items_js_1 = require("./commands/eval-items.js");
9
+ const eval_records_js_1 = require("./commands/eval-records.js");
10
+ function createProgram() {
11
+ const program = new commander_1.Command();
12
+ program
13
+ .name('expert_eval')
14
+ .description('AI-friendly CLI for ExpertEval API')
15
+ .version('1.0.0')
16
+ .option('--format <type>', 'Output format: json, table, or auto (default: auto)', 'auto')
17
+ .option('-q, --quiet', 'Suppress output (exit codes only)', false);
18
+ program.addCommand((0, auth_js_1.makeAuthCommand)());
19
+ program.addCommand((0, experts_js_1.makeExpertsCommand)());
20
+ program.addCommand((0, versions_js_1.makeVersionsCommand)());
21
+ program.addCommand((0, eval_items_js_1.makeEvalItemsCommand)());
22
+ program.addCommand((0, eval_records_js_1.makeEvalRecordsCommand)());
23
+ return program;
24
+ }
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAOA,sCAiBC;AAxBD,yCAAoC;AACpC,gDAAqD;AACrD,sDAA2D;AAC3D,wDAA6D;AAC7D,4DAAgE;AAChE,gEAAoE;AAEpE,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,aAAa,CAAC;SACnB,WAAW,CAAC,oCAAoC,CAAC;SACjD,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,iBAAiB,EAAE,qDAAqD,EAAE,MAAM,CAAC;SACxF,MAAM,CAAC,aAAa,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAC;IAErE,OAAO,CAAC,UAAU,CAAC,IAAA,yBAAe,GAAE,CAAC,CAAC;IACtC,OAAO,CAAC,UAAU,CAAC,IAAA,+BAAkB,GAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,IAAA,iCAAmB,GAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,IAAA,oCAAoB,GAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,IAAA,wCAAsB,GAAE,CAAC,CAAC;IAE7C,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { GlobalOptions } from './types.js';
2
+ export declare function isStdoutTTY(): boolean;
3
+ export declare function resolveFormat(options: GlobalOptions): 'json' | 'table';
4
+ export declare function printJson(data: unknown, options: GlobalOptions): void;
5
+ export declare function printTable(rows: Record<string, unknown>[], options: GlobalOptions): void;
6
+ export declare function printItem(item: Record<string, unknown>, options: GlobalOptions): void;
7
+ export declare function printSuccess(message: string, options: GlobalOptions): void;
8
+ export declare function printError(err: unknown, options: GlobalOptions): void;
9
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,OAAO,CAKtE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAGrE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA4BxF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAWrF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAQ1E;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAgCrE"}
package/dist/output.js ADDED
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStdoutTTY = isStdoutTTY;
4
+ exports.resolveFormat = resolveFormat;
5
+ exports.printJson = printJson;
6
+ exports.printTable = printTable;
7
+ exports.printItem = printItem;
8
+ exports.printSuccess = printSuccess;
9
+ exports.printError = printError;
10
+ function isStdoutTTY() {
11
+ return !!process.stdout.isTTY;
12
+ }
13
+ function resolveFormat(options) {
14
+ if (options.format === 'json')
15
+ return 'json';
16
+ if (options.format === 'table')
17
+ return 'table';
18
+ // auto: JSON if piped, table if TTY
19
+ return isStdoutTTY() ? 'table' : 'json';
20
+ }
21
+ function printJson(data, options) {
22
+ if (options.quiet)
23
+ return;
24
+ console.log(JSON.stringify(data, null, 2));
25
+ }
26
+ function printTable(rows, options) {
27
+ if (options.quiet || rows.length === 0)
28
+ return;
29
+ const keys = Object.keys(rows[0]);
30
+ if (keys.length === 0)
31
+ return;
32
+ // Calculate column widths
33
+ const widths = {};
34
+ for (const key of keys) {
35
+ widths[key] = key.length;
36
+ }
37
+ for (const row of rows) {
38
+ for (const key of keys) {
39
+ const cell = formatCell(row[key]);
40
+ widths[key] = Math.max(widths[key], cell.length);
41
+ }
42
+ }
43
+ // Header
44
+ const header = keys.map((k) => k.padEnd(widths[k])).join(' ');
45
+ console.log(header);
46
+ console.log(keys.map((k) => '-'.repeat(widths[k])).join(' '));
47
+ // Rows
48
+ for (const row of rows) {
49
+ const line = keys.map((k) => formatCell(row[k]).padEnd(widths[k])).join(' ');
50
+ console.log(line);
51
+ }
52
+ }
53
+ function printItem(item, options) {
54
+ if (options.quiet)
55
+ return;
56
+ const fmt = resolveFormat(options);
57
+ if (fmt === 'json') {
58
+ console.log(JSON.stringify(item, null, 2));
59
+ }
60
+ else {
61
+ for (const [key, value] of Object.entries(item)) {
62
+ const formatted = formatCell(value);
63
+ console.log(`${key}: ${formatted}`);
64
+ }
65
+ }
66
+ }
67
+ function printSuccess(message, options) {
68
+ if (options.quiet)
69
+ return;
70
+ const fmt = resolveFormat(options);
71
+ if (fmt === 'json') {
72
+ console.log(JSON.stringify({ success: true, message }, null, 2));
73
+ }
74
+ else {
75
+ console.log(message);
76
+ }
77
+ }
78
+ function printError(err, options) {
79
+ if (options.quiet)
80
+ return;
81
+ const fmt = resolveFormat(options);
82
+ let code = 'ERROR';
83
+ let message = 'Unknown error';
84
+ let details;
85
+ if (err instanceof Error) {
86
+ message = err.message;
87
+ if ('statusCode' in err && typeof err.statusCode === 'number') {
88
+ code = `HTTP_${err.statusCode}`;
89
+ }
90
+ if ('apiCode' in err && typeof err.apiCode === 'string') {
91
+ code = err.apiCode;
92
+ }
93
+ if ('details' in err) {
94
+ details = err.details;
95
+ }
96
+ }
97
+ else {
98
+ message = String(err);
99
+ }
100
+ if (fmt === 'json') {
101
+ const payload = { success: false, code, message };
102
+ if (details !== undefined)
103
+ payload.details = details;
104
+ console.error(JSON.stringify(payload, null, 2));
105
+ }
106
+ else {
107
+ console.error(`Error [${code}]: ${message}`);
108
+ if (details !== undefined) {
109
+ console.error(JSON.stringify(details, null, 2));
110
+ }
111
+ }
112
+ }
113
+ function formatCell(value) {
114
+ if (value === null || value === undefined)
115
+ return '';
116
+ if (typeof value === 'boolean')
117
+ return value ? 'true' : 'false';
118
+ if (typeof value === 'number')
119
+ return String(value);
120
+ if (typeof value === 'string')
121
+ return value;
122
+ if (Array.isArray(value))
123
+ return JSON.stringify(value);
124
+ if (typeof value === 'object')
125
+ return JSON.stringify(value);
126
+ return String(value);
127
+ }
128
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}