@codata-io/cli 0.2.2

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 (53) hide show
  1. package/dist/bin/codata.d.ts +3 -0
  2. package/dist/bin/codata.d.ts.map +1 -0
  3. package/dist/bin/codata.js +3 -0
  4. package/dist/bin/codata.js.map +1 -0
  5. package/dist/src/cli.d.ts +2 -0
  6. package/dist/src/cli.d.ts.map +1 -0
  7. package/dist/src/cli.js +192 -0
  8. package/dist/src/cli.js.map +1 -0
  9. package/dist/src/commands/api.d.ts +6 -0
  10. package/dist/src/commands/api.d.ts.map +1 -0
  11. package/dist/src/commands/api.js +79 -0
  12. package/dist/src/commands/api.js.map +1 -0
  13. package/dist/src/commands/branches.d.ts +14 -0
  14. package/dist/src/commands/branches.d.ts.map +1 -0
  15. package/dist/src/commands/branches.js +86 -0
  16. package/dist/src/commands/branches.js.map +1 -0
  17. package/dist/src/commands/export.d.ts +4 -0
  18. package/dist/src/commands/export.d.ts.map +1 -0
  19. package/dist/src/commands/export.js +20 -0
  20. package/dist/src/commands/export.js.map +1 -0
  21. package/dist/src/commands/init.d.ts +5 -0
  22. package/dist/src/commands/init.d.ts.map +1 -0
  23. package/dist/src/commands/init.js +175 -0
  24. package/dist/src/commands/init.js.map +1 -0
  25. package/dist/src/commands/keys.d.ts +37 -0
  26. package/dist/src/commands/keys.d.ts.map +1 -0
  27. package/dist/src/commands/keys.js +142 -0
  28. package/dist/src/commands/keys.js.map +1 -0
  29. package/dist/src/commands/login.d.ts +6 -0
  30. package/dist/src/commands/login.d.ts.map +1 -0
  31. package/dist/src/commands/login.js +14 -0
  32. package/dist/src/commands/login.js.map +1 -0
  33. package/dist/src/commands/scaffold.d.ts +5 -0
  34. package/dist/src/commands/scaffold.d.ts.map +1 -0
  35. package/dist/src/commands/scaffold.js +202 -0
  36. package/dist/src/commands/scaffold.js.map +1 -0
  37. package/dist/src/commands/workspaces.d.ts +10 -0
  38. package/dist/src/commands/workspaces.d.ts.map +1 -0
  39. package/dist/src/commands/workspaces.js +80 -0
  40. package/dist/src/commands/workspaces.js.map +1 -0
  41. package/dist/src/config.d.ts +38 -0
  42. package/dist/src/config.d.ts.map +1 -0
  43. package/dist/src/config.js +159 -0
  44. package/dist/src/config.js.map +1 -0
  45. package/dist/src/oauth.d.ts +15 -0
  46. package/dist/src/oauth.d.ts.map +1 -0
  47. package/dist/src/oauth.js +272 -0
  48. package/dist/src/oauth.js.map +1 -0
  49. package/dist/src/output.d.ts +10 -0
  50. package/dist/src/output.d.ts.map +1 -0
  51. package/dist/src/output.js +69 -0
  52. package/dist/src/output.js.map +1 -0
  53. package/package.json +46 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import '../src/cli.js';
3
+ //# sourceMappingURL=codata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codata.d.ts","sourceRoot":"","sources":["../../bin/codata.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import '../src/cli.js';
3
+ //# sourceMappingURL=codata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codata.js","sourceRoot":"","sources":["../../bin/codata.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,192 @@
1
+ // ────────────────────────────────────────────────────────────────────────────
2
+ // Codata CLI — Commander Registration
3
+ // ────────────────────────────────────────────────────────────────────────────
4
+ import { Command } from 'commander';
5
+ import { readFileSync } from 'fs';
6
+ import { fileURLToPath } from 'url';
7
+ import path from 'path';
8
+ // Read version from package.json
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = path.dirname(__filename);
11
+ // Resolve package.json from dist/src/cli.js → ../../package.json
12
+ const pkg = JSON.parse(readFileSync(path.resolve(__dirname, '..', '..', 'package.json'), 'utf8'));
13
+ const program = new Command();
14
+ program
15
+ .name('codata')
16
+ .description('Codata CLI — manage workspaces, API keys, and more')
17
+ .version(pkg.version);
18
+ // ── Auth Commands ─────────────────────────────────────────────────────────
19
+ program
20
+ .command('login')
21
+ .description('Authenticate with Codata (opens browser)')
22
+ .option('-t, --token <token>', 'Authenticate with a developer token')
23
+ .action(async (opts) => {
24
+ const { loginCommand } = await import('./commands/login.js');
25
+ await loginCommand(opts);
26
+ });
27
+ program
28
+ .command('logout')
29
+ .description('Clear stored authentication')
30
+ .action(async () => {
31
+ const { logoutCommand } = await import('./commands/login.js');
32
+ await logoutCommand();
33
+ });
34
+ program
35
+ .command('whoami')
36
+ .description('Show current user info')
37
+ .action(async () => {
38
+ const { whoamiCommand } = await import('./commands/login.js');
39
+ await whoamiCommand();
40
+ });
41
+ // ── Init ──────────────────────────────────────────────────────────────────
42
+ program
43
+ .command('init')
44
+ .description('Auto-configure MCP for your IDE')
45
+ .option('-g, --global', 'Write to global user settings')
46
+ .option('-e, --editor <name>', 'Target a specific editor')
47
+ .action(async (opts) => {
48
+ const { initCommand } = await import('./commands/init.js');
49
+ await initCommand(opts);
50
+ });
51
+ // ── Workspace Commands ────────────────────────────────────────────────────
52
+ program
53
+ .command('workspaces')
54
+ .alias('ws')
55
+ .description('List all workspaces')
56
+ .option('--json', 'Output as JSON')
57
+ .action(async (opts) => {
58
+ const { listCommand } = await import('./commands/workspaces.js');
59
+ await listCommand(opts);
60
+ });
61
+ program
62
+ .command('show <name>')
63
+ .description('Show workspace details')
64
+ .option('--json', 'Output as JSON')
65
+ .action(async (name, opts) => {
66
+ const { showCommand } = await import('./commands/workspaces.js');
67
+ await showCommand(name, opts);
68
+ });
69
+ program
70
+ .command('create <name>')
71
+ .description('Create a new workspace')
72
+ .option('-d, --description <desc>', 'Workspace description')
73
+ .action(async (name, opts) => {
74
+ const { createCommand } = await import('./commands/workspaces.js');
75
+ await createCommand(name, opts);
76
+ });
77
+ // ── API Keys ──────────────────────────────────────────────────────────────
78
+ const keys = program
79
+ .command('keys')
80
+ .description('Manage workspace API keys');
81
+ keys
82
+ .command('create <workspace>')
83
+ .description('Create a new API key')
84
+ .option('-n, --name <name>', 'Key name')
85
+ .option('-p, --permissions <perm>', 'Permissions: full or read-only', 'full')
86
+ .option('--no-store', 'Do not store key locally')
87
+ .option('--json', 'Output as JSON')
88
+ .action(async (workspace, opts) => {
89
+ const { keysCreateCommand } = await import('./commands/keys.js');
90
+ await keysCreateCommand(workspace, opts);
91
+ });
92
+ keys
93
+ .command('list <workspace>')
94
+ .alias('ls')
95
+ .description('List API keys for a workspace')
96
+ .option('--json', 'Output as JSON')
97
+ .action(async (workspace, opts) => {
98
+ const { keysListCommand } = await import('./commands/keys.js');
99
+ await keysListCommand(workspace, opts);
100
+ });
101
+ keys
102
+ .command('revoke <workspace> <keyId>')
103
+ .description('Revoke an API key')
104
+ .action(async (workspace, keyId) => {
105
+ const { keysRevokeCommand } = await import('./commands/keys.js');
106
+ await keysRevokeCommand(workspace, keyId);
107
+ });
108
+ keys
109
+ .command('rotate <workspace> <keyId>')
110
+ .description('Rotate an API key (revoke old, issue new)')
111
+ .option('--no-store', 'Do not store new key locally')
112
+ .option('--json', 'Output as JSON')
113
+ .action(async (workspace, keyId, opts) => {
114
+ const { keysRotateCommand } = await import('./commands/keys.js');
115
+ await keysRotateCommand(workspace, keyId, opts);
116
+ });
117
+ keys
118
+ .command('current <workspace>')
119
+ .description('Show the currently stored key for a workspace')
120
+ .action(async (workspace) => {
121
+ const { keysCurrentCommand } = await import('./commands/keys.js');
122
+ await keysCurrentCommand(workspace);
123
+ });
124
+ keys
125
+ .command('stored')
126
+ .description('List all locally stored API keys')
127
+ .option('--json', 'Output as JSON')
128
+ .action(async (opts) => {
129
+ const { keysStoredCommand } = await import('./commands/keys.js');
130
+ await keysStoredCommand(opts);
131
+ });
132
+ // ── API Proxy ─────────────────────────────────────────────────────────────
133
+ program
134
+ .command('api <workspace> <method> <path>')
135
+ .description('Make API requests to a workspace\'s generated endpoints')
136
+ .option('-d, --data <json>', 'JSON request body')
137
+ .option('-q, --query <pairs...>', 'Query parameters (key=value)')
138
+ .option('-k, --key <apiKey>', 'Use a specific API key')
139
+ .action(async (workspace, method, apiPath, opts) => {
140
+ const { apiCommand } = await import('./commands/api.js');
141
+ await apiCommand(workspace, method, apiPath, opts);
142
+ });
143
+ // ── Code Generation ───────────────────────────────────────────────────────
144
+ program
145
+ .command('scaffold <workspace>')
146
+ .description('Generate a typed API client from the workspace spec')
147
+ .option('-l, --lang <language>', 'Language: typescript, javascript, python')
148
+ .option('-o, --output <file>', 'Write to file')
149
+ .action(async (workspace, opts) => {
150
+ const { scaffoldCommand } = await import('./commands/scaffold.js');
151
+ await scaffoldCommand(workspace, opts);
152
+ });
153
+ program
154
+ .command('export <workspace>')
155
+ .description('Export the workspace OpenAPI spec')
156
+ .option('-o, --output <file>', 'Write to file')
157
+ .action(async (workspace, opts) => {
158
+ const { exportCommand } = await import('./commands/export.js');
159
+ await exportCommand(workspace, opts);
160
+ });
161
+ // ── Config ────────────────────────────────────────────────────────────────
162
+ const config = program
163
+ .command('config')
164
+ .description('View or update CLI configuration');
165
+ config
166
+ .command('set <key> <value>')
167
+ .description('Set a config value')
168
+ .action(async (key, value) => {
169
+ const { setConfig } = await import('./config.js');
170
+ setConfig({ [key]: value });
171
+ const { success } = await import('./output.js');
172
+ success(`${key} = ${value}`);
173
+ });
174
+ config
175
+ .command('get [key]')
176
+ .description('Get a config value (or all)')
177
+ .action(async (key) => {
178
+ const { getConfig } = await import('./config.js');
179
+ const cfg = getConfig();
180
+ if (key) {
181
+ console.log(cfg[key] ?? '(not set)');
182
+ }
183
+ else {
184
+ console.log(JSON.stringify(cfg, null, 2));
185
+ }
186
+ });
187
+ // ── Parse & Run ───────────────────────────────────────────────────────────
188
+ program.parseAsync(process.argv).catch((err) => {
189
+ console.error(err.message);
190
+ process.exit(1);
191
+ });
192
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function apiCommand(nameOrId: string, method: string, apiPath: string, options: {
2
+ data?: string;
3
+ query?: string[];
4
+ key?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/commands/api.ts"],"names":[],"mappings":"AAiBA,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAuEf"}
@@ -0,0 +1,79 @@
1
+ // ────────────────────────────────────────────────────────────────────────────
2
+ // Codata CLI — API Command (Fixed: routes through Gater)
3
+ // ────────────────────────────────────────────────────────────────────────────
4
+ //
5
+ // Usage:
6
+ // codata api <workspace> <METHOD> <path> [--data '{}'] [--query key=val] [--key wsk_...]
7
+ //
8
+ // Examples:
9
+ // codata api my-api GET /users
10
+ // codata api my-api POST /users --data '{"name":"Alice"}'
11
+ // codata api my-api GET /users --query limit=10
12
+ // codata api my-api GET /users --key wsk_live_abc123
13
+ //
14
+ import { createCliClient } from '../config.js';
15
+ import { methodColor, printJson, error as printError, info } from '../output.js';
16
+ export async function apiCommand(nameOrId, method, apiPath, options) {
17
+ method = method.toUpperCase();
18
+ // Parse --data (JSON body)
19
+ let body = undefined;
20
+ if (options.data) {
21
+ try {
22
+ body = JSON.parse(options.data);
23
+ }
24
+ catch {
25
+ printError('Invalid JSON in --data. Use: --data \'{"key":"value"}\'');
26
+ process.exit(1);
27
+ }
28
+ }
29
+ // Parse --query (key=value pairs)
30
+ const queryParams = {};
31
+ if (options.query) {
32
+ for (const q of options.query) {
33
+ const [key, ...rest] = q.split('=');
34
+ queryParams[key] = rest.join('=');
35
+ }
36
+ }
37
+ info(`${methodColor(method)} ${apiPath}`);
38
+ try {
39
+ // Create client with optional explicit key
40
+ const client = createCliClient({
41
+ apiKey: options.key,
42
+ workspaceId: undefined, // Will be resolved after findWorkspace
43
+ });
44
+ // Find workspace
45
+ const ws = await client.findWorkspace(nameOrId);
46
+ // If no explicit key, try to get a client with stored key for this workspace
47
+ const wsClient = options.key
48
+ ? client.workspace(ws.id)
49
+ : createCliClient({ workspaceId: ws.id }).workspace(ws.id);
50
+ // Route through the Gater
51
+ let result;
52
+ switch (method) {
53
+ case 'GET':
54
+ result = await wsClient.get(apiPath, Object.keys(queryParams).length ? queryParams : undefined);
55
+ break;
56
+ case 'POST':
57
+ result = await wsClient.post(apiPath, body);
58
+ break;
59
+ case 'PUT':
60
+ result = await wsClient.put(apiPath, body);
61
+ break;
62
+ case 'PATCH':
63
+ result = await wsClient.patch(apiPath, body);
64
+ break;
65
+ case 'DELETE':
66
+ result = await wsClient.delete(apiPath);
67
+ break;
68
+ default:
69
+ printError(`Unsupported method: ${method}`);
70
+ process.exit(1);
71
+ }
72
+ printJson(result);
73
+ }
74
+ catch (err) {
75
+ printError(err.message);
76
+ process.exit(1);
77
+ }
78
+ }
79
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare function branchesListCommand(nameOrId: string, options: {
2
+ json?: boolean;
3
+ }): Promise<void>;
4
+ export declare function branchesCreateCommand(nameOrId: string, branchName: string, options: {
5
+ source?: string;
6
+ json?: boolean;
7
+ }): Promise<void>;
8
+ export declare function branchesShowCommand(nameOrId: string, branchName: string, options: {
9
+ json?: boolean;
10
+ }): Promise<void>;
11
+ export declare function branchesDeleteCommand(nameOrId: string, branchName: string, options: {
12
+ force?: boolean;
13
+ }): Promise<void>;
14
+ //# sourceMappingURL=branches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branches.d.ts","sourceRoot":"","sources":["../../../src/commands/branches.ts"],"names":[],"mappings":"AAiBA,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -0,0 +1,86 @@
1
+ // ────────────────────────────────────────────────────────────────────────────
2
+ // Codata CLI — Branch Commands (list, create, show, delete)
3
+ // ────────────────────────────────────────────────────────────────────────────
4
+ import { createCliClient } from '../config.js';
5
+ import { printTable, statusColor, heading, success, info, printJson, } from '../output.js';
6
+ import chalk from 'chalk';
7
+ export async function branchesListCommand(nameOrId, options) {
8
+ const client = createCliClient();
9
+ const ws = await client.findWorkspace(nameOrId);
10
+ const branches = await client.listBranches(ws.id);
11
+ if (branches.length === 0) {
12
+ info(`No branches for workspace "${ws.name}".`);
13
+ return;
14
+ }
15
+ if (options.json) {
16
+ printJson(branches);
17
+ return;
18
+ }
19
+ heading(`Branches for "${ws.name}"`);
20
+ printTable(['Name', 'Status', 'Version', 'Default', 'Ahead', 'Behind', 'Created'], branches.map(b => [
21
+ b.isDefault ? chalk.bold(b.name) : b.name,
22
+ statusColor(b.status),
23
+ String(b.currentVersion),
24
+ b.isDefault ? chalk.green('✓') : '',
25
+ b.aheadOfMain ? chalk.green(`+${b.aheadOfMain}`) : '0',
26
+ b.behindMain ? chalk.red(`-${b.behindMain}`) : '0',
27
+ new Date(b.createdAt).toLocaleDateString(),
28
+ ]));
29
+ }
30
+ export async function branchesCreateCommand(nameOrId, branchName, options) {
31
+ const client = createCliClient();
32
+ const ws = await client.findWorkspace(nameOrId);
33
+ const branch = await client.createBranch(ws.id, branchName, options.source);
34
+ if (options.json) {
35
+ printJson(branch);
36
+ return;
37
+ }
38
+ success(`Branch "${branch.branchName}" created in workspace "${ws.name}"`);
39
+ console.log(` Status: ${statusColor(branch.status)}`);
40
+ console.log(` Version: ${branch.currentVersion}`);
41
+ if (branch.parentBranch) {
42
+ console.log(` Source: ${branch.parentBranch}`);
43
+ }
44
+ }
45
+ export async function branchesShowCommand(nameOrId, branchName, options) {
46
+ const client = createCliClient();
47
+ const ws = await client.findWorkspace(nameOrId);
48
+ const branch = await client.getBranch(ws.id, branchName);
49
+ if (options.json) {
50
+ printJson(branch);
51
+ return;
52
+ }
53
+ heading(branch.branchName);
54
+ console.log(` Workspace: ${ws.name}`);
55
+ console.log(` Status: ${statusColor(branch.status)}`);
56
+ console.log(` Version: ${branch.currentVersion}`);
57
+ console.log(` Default: ${branch.isDefault ? chalk.green('yes') : 'no'}`);
58
+ console.log(` Pending changes: ${branch.hasPendingChanges ? chalk.yellow('yes') : 'no'}`);
59
+ if (branch.parentBranch) {
60
+ console.log(` Parent branch: ${branch.parentBranch}`);
61
+ }
62
+ if (branch.forkPoint !== null) {
63
+ console.log(` Fork point: v${branch.forkPoint}`);
64
+ }
65
+ console.log(` Created: ${new Date(branch.createdAt).toLocaleString()}`);
66
+ }
67
+ export async function branchesDeleteCommand(nameOrId, branchName, options) {
68
+ const client = createCliClient();
69
+ const ws = await client.findWorkspace(nameOrId);
70
+ // Confirm unless --force
71
+ if (!options.force) {
72
+ const readline = await import('readline');
73
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
74
+ const answer = await new Promise(resolve => {
75
+ rl.question(chalk.yellow(` Delete branch "${branchName}" from "${ws.name}"? [y/N] `), resolve);
76
+ });
77
+ rl.close();
78
+ if (answer.toLowerCase() !== 'y') {
79
+ info('Cancelled.');
80
+ return;
81
+ }
82
+ }
83
+ await client.deleteBranch(ws.id, branchName);
84
+ success(`Branch "${branchName}" deleted from workspace "${ws.name}".`);
85
+ }
86
+ //# sourceMappingURL=branches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../src/commands/branches.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function exportCommand(nameOrId: string, options: {
2
+ output?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,20 @@
1
+ // ────────────────────────────────────────────────────────────────────────────
2
+ // Codata CLI — Export Command (OpenAPI Spec)
3
+ // ────────────────────────────────────────────────────────────────────────────
4
+ import fs from 'fs';
5
+ import { createCliClient } from '../config.js';
6
+ import { success } from '../output.js';
7
+ export async function exportCommand(nameOrId, options) {
8
+ const client = createCliClient();
9
+ const ws = await client.findWorkspace(nameOrId);
10
+ const spec = await client.getOpenApiSpec(ws.id);
11
+ const json = JSON.stringify(spec, null, 2);
12
+ if (options.output) {
13
+ fs.writeFileSync(options.output, json + '\n');
14
+ success(`OpenAPI spec written to ${options.output}`);
15
+ }
16
+ else {
17
+ console.log(json);
18
+ }
19
+ }
20
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6CAA6C;AAC7C,+EAA+E;AAE/E,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAQ,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,OAA4B;IAE5B,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,2BAA2B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function initCommand(options: {
2
+ global?: boolean;
3
+ editor?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAgBA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C/F"}