@tronsfey/openapi2cli 1.0.11 → 1.0.12
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 +80 -5
- package/README.zh.md +77 -5
- package/dist/cache.d.ts +23 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +98 -0
- package/dist/cache.js.map +1 -0
- package/dist/index.js +18 -5
- package/dist/index.js.map +1 -1
- package/dist/runner/http-client.d.ts +9 -3
- package/dist/runner/http-client.d.ts.map +1 -1
- package/dist/runner/http-client.js +93 -11
- package/dist/runner/http-client.js.map +1 -1
- package/dist/runner/proxy-runner.d.ts +4 -0
- package/dist/runner/proxy-runner.d.ts.map +1 -1
- package/dist/runner/proxy-runner.js +73 -21
- package/dist/runner/proxy-runner.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,6 +7,45 @@ Two modes in one tool:
|
|
|
7
7
|
1. **Generate** — scaffold a fully typed Commander.js CLI project from an OpenAPI 3.x spec
|
|
8
8
|
2. **Run** — proxy an OpenAPI spec directly from the command line, no code generation needed
|
|
9
9
|
|
|
10
|
+
## Architecture
|
|
11
|
+
|
|
12
|
+
```mermaid
|
|
13
|
+
flowchart TD
|
|
14
|
+
CLI["CLI Entry · src/index.ts"]
|
|
15
|
+
|
|
16
|
+
CLI -->|"generate"| GEN["generate action"]
|
|
17
|
+
CLI -->|"run"| RUN["run action"]
|
|
18
|
+
CLI -->|"completion"| CMP["completer.ts\nbash / zsh / fish"]
|
|
19
|
+
CLI -->|"__completions"| HID["hidden: dynamic\ngroup & op listing"]
|
|
20
|
+
|
|
21
|
+
GEN --> PARSE["parseOASWithCache()\nsrc/cache.ts"]
|
|
22
|
+
GEN --> ANA["analyzeSchema()\nanalyzer/schema-analyzer.ts"]
|
|
23
|
+
GEN --> GENP["generateProject()\ngenerator/command-generator.ts"]
|
|
24
|
+
GENP --> TMPL["renderTemplate()\ngenerator/template-engine.ts\n+ Handlebars *.hbs"]
|
|
25
|
+
|
|
26
|
+
RUN --> CACHE["parseOASWithCache()\nsrc/cache.ts"]
|
|
27
|
+
RUN --> ANA2["analyzeSchema()"]
|
|
28
|
+
RUN --> PR["proxyRun()\nrunner/proxy-runner.ts"]
|
|
29
|
+
|
|
30
|
+
PR -->|"no op"| LIST["listOperations()"]
|
|
31
|
+
PR -->|"with op"| BOP["buildOperationsProgram()"]
|
|
32
|
+
BOP --> REG["registerOperation()"]
|
|
33
|
+
REG --> EXE["executeOperation()"]
|
|
34
|
+
EXE --> HC["createRuntimeClient()\nrunner/http-client.ts"]
|
|
35
|
+
HC -->|"REST"| AX["axios\n+ timeout + retry\n+ keep-alive"]
|
|
36
|
+
HC -->|"SSE"| SSE["fetch()\n+ AbortController"]
|
|
37
|
+
EXE --> FMT["formatOutput()\nrunner/output.ts"]
|
|
38
|
+
FMT --> OUT["JSON / YAML / Table\n+ JMESPath filter"]
|
|
39
|
+
|
|
40
|
+
CACHE --> DISK["~/.cache/openapi2cli/\nSHA-256 keyed, 1 h TTL"]
|
|
41
|
+
CACHE --> PARSE2["parseOAS()\nparser/oas-parser.ts"]
|
|
42
|
+
PARSE2 --> SP["swagger-parser\n$ref resolution + validation"]
|
|
43
|
+
|
|
44
|
+
ANA --> AUTH["extractAuthConfig()\nauth/auth-provider.ts"]
|
|
45
|
+
HID --> CACHE
|
|
46
|
+
HID --> ANA2
|
|
47
|
+
```
|
|
48
|
+
|
|
10
49
|
## Features
|
|
11
50
|
|
|
12
51
|
- Parse OAS 3.x specs from a **file path or URL** (full `$ref` resolution)
|
|
@@ -214,11 +253,13 @@ Completion covers:
|
|
|
214
253
|
```
|
|
215
254
|
openapi2cli generate [options]
|
|
216
255
|
|
|
217
|
-
--oas <path|url>
|
|
218
|
-
--name <name>
|
|
219
|
-
--output <dir>
|
|
220
|
-
--overwrite
|
|
221
|
-
-
|
|
256
|
+
--oas <path|url> Path or URL to the OpenAPI 3.x spec (required)
|
|
257
|
+
--name <name> CLI executable name (required)
|
|
258
|
+
--output <dir> Output directory (required)
|
|
259
|
+
--overwrite Overwrite existing output directory
|
|
260
|
+
--no-cache Bypass spec cache (always re-fetch remote specs)
|
|
261
|
+
--cache-ttl <seconds> Cache TTL in seconds (default: 3600)
|
|
262
|
+
-h, --help Display help
|
|
222
263
|
|
|
223
264
|
openapi2cli run [options] [group] [operation] [operation-options]
|
|
224
265
|
|
|
@@ -229,6 +270,10 @@ openapi2cli run [options] [group] [operation] [operation-options]
|
|
|
229
270
|
--basic <user:pass> HTTP Basic credentials
|
|
230
271
|
--header <Name: Value> Extra header, repeatable
|
|
231
272
|
--endpoint <url> Override base URL from the spec
|
|
273
|
+
--timeout <ms> Request timeout in milliseconds (default: 30000)
|
|
274
|
+
--retries <n> Max retry attempts for 5xx/network errors (default: 3)
|
|
275
|
+
--no-cache Bypass spec cache (always re-fetch remote specs)
|
|
276
|
+
--cache-ttl <seconds> Cache TTL in seconds (default: 3600)
|
|
232
277
|
-h, --help Display help
|
|
233
278
|
|
|
234
279
|
Per-operation output flags (after the operation name):
|
|
@@ -238,6 +283,36 @@ openapi2cli run [options] [group] [operation] [operation-options]
|
|
|
238
283
|
--verbose Print HTTP method + URL to stderr
|
|
239
284
|
```
|
|
240
285
|
|
|
286
|
+
### Spec Caching
|
|
287
|
+
|
|
288
|
+
Remote OAS specs are cached in `~/.cache/openapi2cli/` with a 1-hour TTL by default,
|
|
289
|
+
making repeated `run` invocations near-instant after the first load.
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Force a fresh fetch (bypass cache)
|
|
293
|
+
openapi2cli run --oas https://api.example.com/openapi.json --no-cache ...
|
|
294
|
+
|
|
295
|
+
# Extend cache TTL to 24 hours
|
|
296
|
+
openapi2cli run --oas https://api.example.com/openapi.json --cache-ttl 86400 ...
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Stability Flags
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# Set a 60-second timeout for slow APIs
|
|
303
|
+
openapi2cli run --oas ./spec.yaml --timeout 60000 items list-items
|
|
304
|
+
|
|
305
|
+
# Disable retries (fail immediately on errors)
|
|
306
|
+
openapi2cli run --oas ./spec.yaml --retries 0 items list-items
|
|
307
|
+
|
|
308
|
+
# Aggressive retry for flaky staging environments
|
|
309
|
+
openapi2cli run --oas ./spec.yaml --retries 5 items list-items
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Retries use exponential backoff (500 ms → 1 s → 2 s) and only apply to retryable
|
|
313
|
+
errors: network failures (`ECONNREFUSED`, `ETIMEDOUT`, `ECONNRESET`) and HTTP 429, 500,
|
|
314
|
+
502, 503, 504. Non-retryable 4xx errors (401, 403, 404, 422 …) fail immediately.
|
|
315
|
+
|
|
241
316
|
## License
|
|
242
317
|
|
|
243
318
|
MIT
|
package/README.zh.md
CHANGED
|
@@ -7,6 +7,45 @@
|
|
|
7
7
|
1. **generate(生成)** — 将 OpenAPI 3.x 规范脚手架为完整的 TypeScript CLI 项目
|
|
8
8
|
2. **run(直接代理)** — 无需生成代码,直接在命令行调用 OpenAPI 接口
|
|
9
9
|
|
|
10
|
+
## 架构图
|
|
11
|
+
|
|
12
|
+
```mermaid
|
|
13
|
+
flowchart TD
|
|
14
|
+
CLI["CLI 入口 · src/index.ts"]
|
|
15
|
+
|
|
16
|
+
CLI -->|"generate"| GEN["generate 动作"]
|
|
17
|
+
CLI -->|"run"| RUN["run 动作"]
|
|
18
|
+
CLI -->|"completion"| CMP["completer.ts\nbash / zsh / fish"]
|
|
19
|
+
CLI -->|"__completions"| HID["隐藏命令:动态\n获取命令组和操作名"]
|
|
20
|
+
|
|
21
|
+
GEN --> PARSE["parseOASWithCache()\nsrc/cache.ts"]
|
|
22
|
+
GEN --> ANA["analyzeSchema()\nanalyzer/schema-analyzer.ts"]
|
|
23
|
+
GEN --> GENP["generateProject()\ngenerator/command-generator.ts"]
|
|
24
|
+
GENP --> TMPL["renderTemplate()\ngenerator/template-engine.ts\n+ Handlebars *.hbs"]
|
|
25
|
+
|
|
26
|
+
RUN --> CACHE["parseOASWithCache()\nsrc/cache.ts"]
|
|
27
|
+
RUN --> ANA2["analyzeSchema()"]
|
|
28
|
+
RUN --> PR["proxyRun()\nrunner/proxy-runner.ts"]
|
|
29
|
+
|
|
30
|
+
PR -->|"无操作名"| LIST["listOperations()"]
|
|
31
|
+
PR -->|"有操作名"| BOP["buildOperationsProgram()"]
|
|
32
|
+
BOP --> REG["registerOperation()"]
|
|
33
|
+
REG --> EXE["executeOperation()"]
|
|
34
|
+
EXE --> HC["createRuntimeClient()\nrunner/http-client.ts"]
|
|
35
|
+
HC -->|"REST"| AX["axios\n+ 超时 + 重试\n+ keep-alive"]
|
|
36
|
+
HC -->|"SSE"| SSE["fetch()\n+ AbortController"]
|
|
37
|
+
EXE --> FMT["formatOutput()\nrunner/output.ts"]
|
|
38
|
+
FMT --> OUT["JSON / YAML / 表格\n+ JMESPath 过滤"]
|
|
39
|
+
|
|
40
|
+
CACHE --> DISK["~/.cache/openapi2cli/\nSHA-256 键,1 小时 TTL"]
|
|
41
|
+
CACHE --> PARSE2["parseOAS()\nparser/oas-parser.ts"]
|
|
42
|
+
PARSE2 --> SP["swagger-parser\n$ref 解析 + 校验"]
|
|
43
|
+
|
|
44
|
+
ANA --> AUTH["extractAuthConfig()\nauth/auth-provider.ts"]
|
|
45
|
+
HID --> CACHE
|
|
46
|
+
HID --> ANA2
|
|
47
|
+
```
|
|
48
|
+
|
|
10
49
|
## 功能特性
|
|
11
50
|
|
|
12
51
|
- 支持从**文件路径或 URL** 解析 OAS 3.x 规范(完整 `$ref` 解析)
|
|
@@ -213,11 +252,13 @@ openapi2cli completion fish > ~/.config/fish/completions/openapi2cli.fish
|
|
|
213
252
|
```
|
|
214
253
|
openapi2cli generate [options]
|
|
215
254
|
|
|
216
|
-
--oas <path|url>
|
|
217
|
-
--name <name>
|
|
218
|
-
--output <dir>
|
|
219
|
-
--overwrite
|
|
220
|
-
-
|
|
255
|
+
--oas <path|url> OpenAPI 3.x 规范的文件路径或 URL(必填)
|
|
256
|
+
--name <name> CLI 可执行文件名称(必填)
|
|
257
|
+
--output <dir> 输出目录(必填)
|
|
258
|
+
--overwrite 覆盖已存在的输出目录
|
|
259
|
+
--no-cache 跳过规范缓存(始终重新拉取远端规范)
|
|
260
|
+
--cache-ttl <seconds> 缓存 TTL(秒),默认 3600
|
|
261
|
+
-h, --help 显示帮助信息
|
|
221
262
|
|
|
222
263
|
openapi2cli run [options] [group] [operation] [operation-options]
|
|
223
264
|
|
|
@@ -228,6 +269,10 @@ openapi2cli run [options] [group] [operation] [operation-options]
|
|
|
228
269
|
--basic <user:pass> HTTP Basic 凭证
|
|
229
270
|
--header <Name: Value> 自定义请求头,可多次指定
|
|
230
271
|
--endpoint <url> 覆盖规范中的 Base URL
|
|
272
|
+
--timeout <ms> 请求超时(毫秒),默认 30000
|
|
273
|
+
--retries <n> 5xx/网络错误的最大重试次数,默认 3
|
|
274
|
+
--no-cache 跳过规范缓存(始终重新拉取远端规范)
|
|
275
|
+
--cache-ttl <seconds> 缓存 TTL(秒),默认 3600
|
|
231
276
|
-h, --help 显示帮助信息
|
|
232
277
|
|
|
233
278
|
操作级输出选项(在操作名称之后指定):
|
|
@@ -237,6 +282,33 @@ openapi2cli run [options] [group] [operation] [operation-options]
|
|
|
237
282
|
--verbose 向 stderr 打印 HTTP 方法和 URL
|
|
238
283
|
```
|
|
239
284
|
|
|
285
|
+
### 规范缓存
|
|
286
|
+
|
|
287
|
+
远端 OAS 规范默认缓存到 `~/.cache/openapi2cli/`,TTL 1 小时。
|
|
288
|
+
首次加载后,后续调用几乎无延迟。
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# 强制重新拉取(跳过缓存)
|
|
292
|
+
openapi2cli run --oas https://api.example.com/openapi.json --no-cache ...
|
|
293
|
+
|
|
294
|
+
# 延长缓存到 24 小时
|
|
295
|
+
openapi2cli run --oas https://api.example.com/openapi.json --cache-ttl 86400 ...
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### 稳定性选项
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
# 为慢速 API 设置 60 秒超时
|
|
302
|
+
openapi2cli run --oas ./spec.yaml --timeout 60000 items list-items
|
|
303
|
+
|
|
304
|
+
# 禁用重试(出错立即失败)
|
|
305
|
+
openapi2cli run --oas ./spec.yaml --retries 0 items list-items
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
重试使用指数退避(500 ms → 1 s → 2 s),仅对可重试错误生效:
|
|
309
|
+
网络故障(`ECONNREFUSED`、`ETIMEDOUT`、`ECONNRESET`)及 HTTP 429、500、502、503、504。
|
|
310
|
+
非可重试的 4xx 错误(401、403、404、422 等)立即失败。
|
|
311
|
+
|
|
240
312
|
## 许可证
|
|
241
313
|
|
|
242
314
|
MIT
|
package/dist/cache.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAS Spec Caching — src/cache.ts
|
|
3
|
+
*
|
|
4
|
+
* Wraps parseOAS() with a disk-based cache in ~/.cache/openapi2cli/.
|
|
5
|
+
* Only remote URLs are cached (local files are cheap to read directly).
|
|
6
|
+
* Cache keys are SHA-256 hashes of the input URL.
|
|
7
|
+
* TTL: configurable, default 3600 seconds (1 hour).
|
|
8
|
+
*/
|
|
9
|
+
import { OpenAPIV3 } from 'openapi-types';
|
|
10
|
+
/**
|
|
11
|
+
* Parse an OpenAPI spec with optional disk caching.
|
|
12
|
+
*
|
|
13
|
+
* - Local file paths: always calls parseOAS() directly (never cached).
|
|
14
|
+
* - Remote URLs: checks ~/.cache/openapi2cli/<sha256>.json first;
|
|
15
|
+
* re-fetches if the file is older than ttlMs or noCache is true.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseOASWithCache(input: string, opts?: {
|
|
18
|
+
noCache?: boolean;
|
|
19
|
+
ttlMs?: number;
|
|
20
|
+
}): Promise<OpenAPIV3.Document>;
|
|
21
|
+
/** Remove all cached specs (useful for `--no-cache` debug workflows). */
|
|
22
|
+
export declare function clearCache(): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAc1C;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CA4B7B;AAED,yEAAyE;AACzE,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAEhD"}
|
package/dist/cache.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OAS Spec Caching — src/cache.ts
|
|
4
|
+
*
|
|
5
|
+
* Wraps parseOAS() with a disk-based cache in ~/.cache/openapi2cli/.
|
|
6
|
+
* Only remote URLs are cached (local files are cheap to read directly).
|
|
7
|
+
* Cache keys are SHA-256 hashes of the input URL.
|
|
8
|
+
* TTL: configurable, default 3600 seconds (1 hour).
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.parseOASWithCache = parseOASWithCache;
|
|
45
|
+
exports.clearCache = clearCache;
|
|
46
|
+
const crypto = __importStar(require("crypto"));
|
|
47
|
+
const os = __importStar(require("os"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const fse = __importStar(require("fs-extra"));
|
|
50
|
+
const oas_parser_1 = require("./parser/oas-parser");
|
|
51
|
+
const CACHE_DIR = path.join(os.homedir(), '.cache', 'openapi2cli');
|
|
52
|
+
const DEFAULT_TTL_MS = 3600000; // 1 hour
|
|
53
|
+
function cacheKey(input) {
|
|
54
|
+
return crypto.createHash('sha256').update(input).digest('hex');
|
|
55
|
+
}
|
|
56
|
+
function cacheFile(input) {
|
|
57
|
+
return path.join(CACHE_DIR, `${cacheKey(input)}.json`);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Parse an OpenAPI spec with optional disk caching.
|
|
61
|
+
*
|
|
62
|
+
* - Local file paths: always calls parseOAS() directly (never cached).
|
|
63
|
+
* - Remote URLs: checks ~/.cache/openapi2cli/<sha256>.json first;
|
|
64
|
+
* re-fetches if the file is older than ttlMs or noCache is true.
|
|
65
|
+
*/
|
|
66
|
+
async function parseOASWithCache(input, opts = {}) {
|
|
67
|
+
const isUrl = /^https?:\/\//.test(input);
|
|
68
|
+
// Local files: skip cache entirely
|
|
69
|
+
if (!isUrl)
|
|
70
|
+
return (0, oas_parser_1.parseOAS)(input);
|
|
71
|
+
const ttl = opts.ttlMs ?? DEFAULT_TTL_MS;
|
|
72
|
+
const file = cacheFile(input);
|
|
73
|
+
if (!opts.noCache) {
|
|
74
|
+
try {
|
|
75
|
+
const stat = await fse.stat(file);
|
|
76
|
+
if (Date.now() - stat.mtimeMs < ttl) {
|
|
77
|
+
return (await fse.readJSON(file));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// File does not exist or is unreadable — proceed to fetch
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const doc = await (0, oas_parser_1.parseOAS)(input);
|
|
85
|
+
try {
|
|
86
|
+
await fse.ensureDir(CACHE_DIR);
|
|
87
|
+
await fse.writeJSON(file, doc);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Cache write failure is non-fatal — proceed with the parsed doc
|
|
91
|
+
}
|
|
92
|
+
return doc;
|
|
93
|
+
}
|
|
94
|
+
/** Remove all cached specs (useful for `--no-cache` debug workflows). */
|
|
95
|
+
async function clearCache() {
|
|
96
|
+
await fse.emptyDir(CACHE_DIR);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BH,8CA+BC;AAGD,gCAEC;AA7DD,+CAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAC7B,8CAAgC;AAEhC,oDAA+C;AAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,cAAc,GAAG,OAAS,CAAC,CAAC,SAAS;AAE3C,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,OAA8C,EAAE;IAEhD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzC,mCAAmC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAA,qBAAQ,EAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;gBACpC,OAAO,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAuB,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,IAAA,qBAAQ,EAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yEAAyE;AAClE,KAAK,UAAU,UAAU;IAC9B,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -42,16 +42,17 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
42
42
|
const ora_1 = __importDefault(require("ora"));
|
|
43
43
|
const fse = __importStar(require("fs-extra"));
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
|
-
const
|
|
45
|
+
const cache_1 = require("./cache");
|
|
46
46
|
const schema_analyzer_1 = require("./analyzer/schema-analyzer");
|
|
47
47
|
const command_generator_1 = require("./generator/command-generator");
|
|
48
48
|
const proxy_runner_1 = require("./runner/proxy-runner");
|
|
49
49
|
const completer_1 = require("./completer");
|
|
50
|
+
const package_json_1 = require("../package.json");
|
|
50
51
|
const program = new commander_1.Command();
|
|
51
52
|
program
|
|
52
53
|
.name('openapi2cli')
|
|
53
54
|
.description('Generate a typed CLI from an OpenAPI 3.x specification, or proxy one directly')
|
|
54
|
-
.version(
|
|
55
|
+
.version(package_json_1.version)
|
|
55
56
|
.enablePositionalOptions(true);
|
|
56
57
|
// ─── generate ────────────────────────────────────────────────────────────────
|
|
57
58
|
program
|
|
@@ -61,6 +62,8 @@ program
|
|
|
61
62
|
.requiredOption('--name <cli-name>', 'Name for the generated CLI tool')
|
|
62
63
|
.requiredOption('--output <dir>', 'Output directory for the generated project')
|
|
63
64
|
.option('--overwrite', 'Overwrite output directory if it exists', false)
|
|
65
|
+
.option('--no-cache', 'Bypass spec cache (always re-fetch remote specs)')
|
|
66
|
+
.option('--cache-ttl <seconds>', 'Remote spec cache TTL in seconds', parseInt, 3600)
|
|
64
67
|
.action(async (opts) => {
|
|
65
68
|
await generate(opts);
|
|
66
69
|
});
|
|
@@ -75,11 +78,17 @@ program
|
|
|
75
78
|
.option('--basic <credentials>', 'HTTP Basic credentials (user:password)')
|
|
76
79
|
.option('--header <header>', 'Extra HTTP header "Name: Value" (repeatable)', collect, [])
|
|
77
80
|
.option('--endpoint <url>', 'Override base URL from the spec')
|
|
81
|
+
.option('--timeout <ms>', 'Request timeout in milliseconds', parseInt, 30000)
|
|
82
|
+
.option('--retries <n>', 'Max retry attempts for 5xx/network errors', parseInt, 3)
|
|
83
|
+
.option('--no-cache', 'Bypass spec cache (always re-fetch remote specs)')
|
|
84
|
+
.option('--cache-ttl <seconds>', 'Remote spec cache TTL in seconds', parseInt, 3600)
|
|
78
85
|
.allowUnknownOption(true)
|
|
79
86
|
.passThroughOptions(true)
|
|
80
87
|
.action(async function (opts) {
|
|
88
|
+
// Commander uses `cache: false` when user passes --no-cache
|
|
89
|
+
const proxyOpts = { ...opts, noCache: opts.cache === false };
|
|
81
90
|
const remaining = this.args;
|
|
82
|
-
await (0, proxy_runner_1.proxyRun)(
|
|
91
|
+
await (0, proxy_runner_1.proxyRun)(proxyOpts, remaining);
|
|
83
92
|
});
|
|
84
93
|
// ─── completion ──────────────────────────────────────────────────────────────
|
|
85
94
|
program
|
|
@@ -112,7 +121,8 @@ program
|
|
|
112
121
|
if (!opts.oas)
|
|
113
122
|
return;
|
|
114
123
|
try {
|
|
115
|
-
|
|
124
|
+
// Use cache with a generous TTL so completions are fast
|
|
125
|
+
const api = await (0, cache_1.parseOASWithCache)(opts.oas, { ttlMs: 3600000 });
|
|
116
126
|
const structure = (0, schema_analyzer_1.analyzeSchema)(api, '_proxy_');
|
|
117
127
|
if (opts.group) {
|
|
118
128
|
const g = structure.groups.find(gr => gr.name === opts.group);
|
|
@@ -155,7 +165,10 @@ async function generate(opts) {
|
|
|
155
165
|
const parseSpinner = (0, ora_1.default)('Parsing OpenAPI spec...').start();
|
|
156
166
|
let api;
|
|
157
167
|
try {
|
|
158
|
-
api = await (0,
|
|
168
|
+
api = await (0, cache_1.parseOASWithCache)(opts.oas, {
|
|
169
|
+
noCache: opts.cache === false,
|
|
170
|
+
ttlMs: opts.cacheTtl * 1000,
|
|
171
|
+
});
|
|
159
172
|
parseSpinner.succeed(chalk_1.default.green(`Parsed: ${api.info.title} v${api.info.version}`));
|
|
160
173
|
}
|
|
161
174
|
catch (err) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAAoC;AACpC,kDAA0B;AAC1B,8CAAsB;AACtB,8CAAgC;AAChC,2CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,12 @@ export interface RuntimeAuth {
|
|
|
5
5
|
basic?: string;
|
|
6
6
|
extraHeaders?: Record<string, string>;
|
|
7
7
|
}
|
|
8
|
+
export interface RuntimeClientOptions {
|
|
9
|
+
/** Request timeout in milliseconds. Default: 30 000 ms. */
|
|
10
|
+
timeout?: number;
|
|
11
|
+
/** Maximum number of retry attempts for retryable errors. Default: 3. */
|
|
12
|
+
maxRetries?: number;
|
|
13
|
+
}
|
|
8
14
|
export interface RequestOptions {
|
|
9
15
|
method: string;
|
|
10
16
|
path: string;
|
|
@@ -14,8 +20,8 @@ export interface RequestOptions {
|
|
|
14
20
|
verbose?: boolean;
|
|
15
21
|
allPages?: boolean;
|
|
16
22
|
}
|
|
17
|
-
export declare function createRuntimeClient(baseURL: string, auth: RuntimeAuth): {
|
|
18
|
-
request({ method, path, pathParams, queryParams, body, verbose, allPages }: RequestOptions): Promise<unknown>;
|
|
19
|
-
requestStream({ method, path, pathParams, queryParams, body, verbose }: RequestOptions): AsyncGenerator<string, void, unknown>;
|
|
23
|
+
export declare function createRuntimeClient(baseURL: string, auth: RuntimeAuth, options?: RuntimeClientOptions): {
|
|
24
|
+
request({ method, path, pathParams, queryParams, body, verbose, allPages, }: RequestOptions): Promise<unknown>;
|
|
25
|
+
requestStream({ method, path, pathParams, queryParams, body, verbose, }: RequestOptions): AsyncGenerator<string, void, unknown>;
|
|
20
26
|
};
|
|
21
27
|
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/runner/http-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/runner/http-client.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAqED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,oBAAyB;iFAgB7B,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;6EAgDjC,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;EAuC5D"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -6,7 +39,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
39
|
exports.createRuntimeClient = createRuntimeClient;
|
|
7
40
|
const axios_1 = __importDefault(require("axios"));
|
|
8
41
|
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const http = __importStar(require("http"));
|
|
43
|
+
const https = __importStar(require("https"));
|
|
9
44
|
const stream_1 = require("eventsource-parser/stream");
|
|
45
|
+
// Status codes that warrant a retry
|
|
46
|
+
const RETRYABLE_STATUS = new Set([429, 500, 502, 503, 504]);
|
|
47
|
+
// Node.js error codes that warrant a retry
|
|
48
|
+
const RETRYABLE_CODES = new Set([
|
|
49
|
+
'ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND', 'ECONNRESET', 'EPIPE',
|
|
50
|
+
]);
|
|
51
|
+
function sleep(ms) {
|
|
52
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
53
|
+
}
|
|
54
|
+
async function withRetry(fn, maxRetries) {
|
|
55
|
+
for (let attempt = 0;; attempt++) {
|
|
56
|
+
try {
|
|
57
|
+
return await fn();
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
const axErr = err;
|
|
61
|
+
const status = axErr.response?.status;
|
|
62
|
+
const code = axErr.code;
|
|
63
|
+
const isRetryable = (status !== undefined && RETRYABLE_STATUS.has(status)) ||
|
|
64
|
+
(code !== undefined && RETRYABLE_CODES.has(code));
|
|
65
|
+
if (!isRetryable || attempt >= maxRetries)
|
|
66
|
+
throw err;
|
|
67
|
+
// Exponential backoff: 500 ms, 1 000 ms, 2 000 ms, …
|
|
68
|
+
await sleep(500 * Math.pow(2, attempt));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
10
72
|
function buildAuthHeaders(auth) {
|
|
11
73
|
const headers = {};
|
|
12
74
|
if (auth.bearer) {
|
|
@@ -41,10 +103,21 @@ function parseLinkNext(linkHeader) {
|
|
|
41
103
|
}
|
|
42
104
|
return null;
|
|
43
105
|
}
|
|
44
|
-
|
|
45
|
-
|
|
106
|
+
// Shared keep-alive agents so connections are reused across paginated requests.
|
|
107
|
+
const sharedHttpAgent = new http.Agent({ keepAlive: true });
|
|
108
|
+
const sharedHttpsAgent = new https.Agent({ keepAlive: true });
|
|
109
|
+
function createRuntimeClient(baseURL, auth, options = {}) {
|
|
110
|
+
const timeout = options.timeout ?? 30000;
|
|
111
|
+
const maxRetries = options.maxRetries ?? 3;
|
|
112
|
+
const instance = axios_1.default.create({
|
|
113
|
+
baseURL,
|
|
114
|
+
proxy: false,
|
|
115
|
+
timeout,
|
|
116
|
+
httpAgent: sharedHttpAgent,
|
|
117
|
+
httpsAgent: sharedHttpsAgent,
|
|
118
|
+
});
|
|
46
119
|
return {
|
|
47
|
-
async request({ method, path, pathParams, queryParams, body, verbose, allPages }) {
|
|
120
|
+
async request({ method, path, pathParams, queryParams, body, verbose, allPages, }) {
|
|
48
121
|
const url = buildUrl(path, pathParams);
|
|
49
122
|
const authHeaders = buildAuthHeaders(auth);
|
|
50
123
|
const config = {
|
|
@@ -68,7 +141,7 @@ function createRuntimeClient(baseURL, auth) {
|
|
|
68
141
|
? { ...config }
|
|
69
142
|
: { method, url: nextUrl, headers: authHeaders };
|
|
70
143
|
isFirst = false;
|
|
71
|
-
const response = await instance.request(pageConfig);
|
|
144
|
+
const response = await withRetry(() => instance.request(pageConfig), maxRetries);
|
|
72
145
|
if (verbose)
|
|
73
146
|
console.error(chalk_1.default.dim('←'), chalk_1.default.bold(String(response.status)), response.statusText);
|
|
74
147
|
const data = response.data;
|
|
@@ -80,23 +153,32 @@ function createRuntimeClient(baseURL, auth) {
|
|
|
80
153
|
}
|
|
81
154
|
return results;
|
|
82
155
|
}
|
|
83
|
-
const response = await instance.request(config);
|
|
156
|
+
const response = await withRetry(() => instance.request(config), maxRetries);
|
|
84
157
|
if (verbose)
|
|
85
158
|
console.error(chalk_1.default.dim('←'), chalk_1.default.bold(String(response.status)), response.statusText);
|
|
86
159
|
return response.data;
|
|
87
160
|
},
|
|
88
|
-
async *requestStream({ method, path, pathParams, queryParams, body, verbose }) {
|
|
161
|
+
async *requestStream({ method, path, pathParams, queryParams, body, verbose, }) {
|
|
89
162
|
const url = buildUrl(path, pathParams);
|
|
90
163
|
const qs = new URLSearchParams(queryParams).toString();
|
|
91
164
|
const fullUrl = baseURL + url + (qs ? `?${qs}` : '');
|
|
92
165
|
const authHeaders = buildAuthHeaders(auth);
|
|
93
166
|
if (verbose)
|
|
94
167
|
console.error(chalk_1.default.dim('→ SSE'), chalk_1.default.bold(method.toUpperCase()), fullUrl);
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
168
|
+
const controller = new AbortController();
|
|
169
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
170
|
+
let response;
|
|
171
|
+
try {
|
|
172
|
+
response = await fetch(fullUrl, {
|
|
173
|
+
method,
|
|
174
|
+
headers: { Accept: 'text/event-stream', 'Cache-Control': 'no-cache', ...authHeaders },
|
|
175
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
176
|
+
signal: controller.signal,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
finally {
|
|
180
|
+
clearTimeout(timer);
|
|
181
|
+
}
|
|
100
182
|
if (!response.ok)
|
|
101
183
|
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
102
184
|
if (!response.body)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/runner/http-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/runner/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ export interface ProxyOpts {
|
|
|
6
6
|
basic?: string;
|
|
7
7
|
header?: string[];
|
|
8
8
|
endpoint?: string;
|
|
9
|
+
timeout?: number;
|
|
10
|
+
retries?: number;
|
|
11
|
+
noCache?: boolean;
|
|
12
|
+
cacheTtl?: number;
|
|
9
13
|
}
|
|
10
14
|
export declare function proxyRun(proxyOpts: ProxyOpts, remainingArgs: string[]): Promise<void>;
|
|
11
15
|
//# sourceMappingURL=proxy-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-runner.d.ts","sourceRoot":"","sources":["../../src/runner/proxy-runner.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"proxy-runner.d.ts","sourceRoot":"","sources":["../../src/runner/proxy-runner.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAmPD,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAwDf"}
|
|
@@ -42,7 +42,7 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
42
42
|
const lodash_1 = __importDefault(require("lodash"));
|
|
43
43
|
const fse = __importStar(require("fs-extra"));
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
|
-
const
|
|
45
|
+
const cache_1 = require("../cache");
|
|
46
46
|
const schema_analyzer_1 = require("../analyzer/schema-analyzer");
|
|
47
47
|
const http_client_1 = require("./http-client");
|
|
48
48
|
const output_1 = require("./output");
|
|
@@ -62,8 +62,43 @@ function parseExtraHeaders(headers) {
|
|
|
62
62
|
function optsKey(flagName) {
|
|
63
63
|
return lodash_1.default.camelCase(flagName);
|
|
64
64
|
}
|
|
65
|
+
// Format an HTTP or network error with contextual hints.
|
|
66
|
+
function formatHttpError(err, method, fullUrl) {
|
|
67
|
+
const axErr = err;
|
|
68
|
+
if (axErr.response) {
|
|
69
|
+
const { status, statusText, data } = axErr.response;
|
|
70
|
+
console.error(chalk_1.default.red(`[HTTP ${status} ${statusText}]`), chalk_1.default.dim(`${method.toUpperCase()} ${fullUrl}`));
|
|
71
|
+
if (status === 401 || status === 403) {
|
|
72
|
+
console.error(chalk_1.default.yellow(' → Check your --bearer / --api-key / --basic credentials'));
|
|
73
|
+
}
|
|
74
|
+
else if (status === 404) {
|
|
75
|
+
console.error(chalk_1.default.yellow(' → Endpoint not found — verify the operation name and path params'));
|
|
76
|
+
}
|
|
77
|
+
else if (status >= 500) {
|
|
78
|
+
console.error(chalk_1.default.yellow(' → Server error — the API returned a 5xx response'));
|
|
79
|
+
}
|
|
80
|
+
if (data) {
|
|
81
|
+
console.error(chalk_1.default.dim(JSON.stringify(data, null, 2)));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (axErr.name === 'AbortError' || axErr.code === 'ETIMEDOUT') {
|
|
85
|
+
console.error(chalk_1.default.red('[Timeout]'), chalk_1.default.dim(`${method.toUpperCase()} ${fullUrl}`));
|
|
86
|
+
console.error(chalk_1.default.yellow(' → Request timed out — use --timeout <ms> to increase the limit'));
|
|
87
|
+
}
|
|
88
|
+
else if (axErr.code === 'ECONNREFUSED') {
|
|
89
|
+
console.error(chalk_1.default.red('[Connection Refused]'), chalk_1.default.dim(`${method.toUpperCase()} ${fullUrl}`));
|
|
90
|
+
console.error(chalk_1.default.yellow(' → Is the API server running and reachable?'));
|
|
91
|
+
}
|
|
92
|
+
else if (axErr.code === 'ENOTFOUND') {
|
|
93
|
+
console.error(chalk_1.default.red('[DNS Error]'), chalk_1.default.dim(`${method.toUpperCase()} ${fullUrl}`));
|
|
94
|
+
console.error(chalk_1.default.yellow(' → Hostname not found — check the --endpoint URL or spec server URL'));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.error(chalk_1.default.red('[Error]'), axErr.message ?? String(err));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
65
100
|
// Build and execute the HTTP call for a matched operation.
|
|
66
|
-
async function executeOperation(sub, opts, client) {
|
|
101
|
+
async function executeOperation(sub, opts, client, baseURL) {
|
|
67
102
|
const verbose = opts['verbose'] ?? false;
|
|
68
103
|
const format = opts['format'] ?? 'json';
|
|
69
104
|
const query = opts['query'];
|
|
@@ -82,6 +117,9 @@ async function executeOperation(sub, opts, client) {
|
|
|
82
117
|
queryParams[param.name] = String(val);
|
|
83
118
|
}
|
|
84
119
|
}
|
|
120
|
+
// Build the full URL for error messages (best effort)
|
|
121
|
+
const resolvedPath = sub.path.replace(/\{(\w+)\}/g, (_, k) => pathParams[k] ?? `{${k}}`);
|
|
122
|
+
const fullUrl = baseURL.replace(/\/$/, '') + resolvedPath;
|
|
85
123
|
// --data raw override: short-circuit individual body field options
|
|
86
124
|
if (opts['data'] !== undefined) {
|
|
87
125
|
const rawData = opts['data'];
|
|
@@ -121,9 +159,11 @@ async function executeOperation(sub, opts, client) {
|
|
|
121
159
|
else {
|
|
122
160
|
(0, output_1.formatOutput)(await client.request({ method: sub.method, path: sub.path, pathParams, queryParams, body, verbose, allPages }), format, query);
|
|
123
161
|
}
|
|
162
|
+
return;
|
|
163
|
+
void fullUrl; // used in catch handler below — suppress unused warning if needed
|
|
124
164
|
}
|
|
125
165
|
// Register one operation as a Commander subcommand on `parent`.
|
|
126
|
-
function registerOperation(parent, sub, client) {
|
|
166
|
+
function registerOperation(parent, sub, client, baseURL) {
|
|
127
167
|
const cmd = new commander_1.Command(sub.name).description(sub.description);
|
|
128
168
|
for (const alias of sub.aliases ?? []) {
|
|
129
169
|
cmd.alias(alias);
|
|
@@ -146,27 +186,28 @@ function registerOperation(parent, sub, client) {
|
|
|
146
186
|
cmd.option('--query <expr>', 'JMESPath expression to filter the response');
|
|
147
187
|
cmd.option('--all-pages', 'Auto-paginate via Link rel="next" headers', false);
|
|
148
188
|
cmd.action(async (opts) => {
|
|
189
|
+
// Reconstruct the full URL for error reporting
|
|
190
|
+
const pathParams = {};
|
|
191
|
+
for (const param of sub.parameters.filter(p => p.in === 'path')) {
|
|
192
|
+
const key = optsKey(lodash_1.default.kebabCase(param.name));
|
|
193
|
+
const val = opts[key];
|
|
194
|
+
if (val !== undefined && val !== null)
|
|
195
|
+
pathParams[param.name] = String(val);
|
|
196
|
+
}
|
|
197
|
+
const resolvedPath = sub.path.replace(/\{(\w+)\}/g, (_, k) => pathParams[k] ?? `{${k}}`);
|
|
198
|
+
const fullUrl = baseURL.replace(/\/$/, '') + resolvedPath;
|
|
149
199
|
try {
|
|
150
|
-
await executeOperation(sub, opts, client);
|
|
200
|
+
await executeOperation(sub, opts, client, baseURL);
|
|
151
201
|
}
|
|
152
202
|
catch (err) {
|
|
153
|
-
|
|
154
|
-
if (axiosErr.response) {
|
|
155
|
-
console.error(chalk_1.default.red(`HTTP ${axiosErr.response.status}:`), axiosErr.response.statusText);
|
|
156
|
-
if (axiosErr.response.data) {
|
|
157
|
-
console.error(chalk_1.default.dim(JSON.stringify(axiosErr.response.data, null, 2)));
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
console.error(chalk_1.default.red('Error:'), err.message);
|
|
162
|
-
}
|
|
203
|
+
formatHttpError(err, sub.method, fullUrl);
|
|
163
204
|
process.exit(1);
|
|
164
205
|
}
|
|
165
206
|
});
|
|
166
207
|
parent.addCommand(cmd);
|
|
167
208
|
}
|
|
168
209
|
// Build a Commander program with all operations from the analyzed structure.
|
|
169
|
-
function buildOperationsProgram(structure, client) {
|
|
210
|
+
function buildOperationsProgram(structure, client, baseURL) {
|
|
170
211
|
const prog = new commander_1.Command()
|
|
171
212
|
.name('run')
|
|
172
213
|
.description(structure.description || `API proxy for OpenAPI spec`);
|
|
@@ -177,12 +218,12 @@ function buildOperationsProgram(structure, client) {
|
|
|
177
218
|
.description(group.description)
|
|
178
219
|
.exitOverride();
|
|
179
220
|
for (const sub of group.subcommands) {
|
|
180
|
-
registerOperation(groupCmd, sub, client);
|
|
221
|
+
registerOperation(groupCmd, sub, client, baseURL);
|
|
181
222
|
}
|
|
182
223
|
prog.addCommand(groupCmd);
|
|
183
224
|
}
|
|
184
225
|
for (const sub of structure.flatCommands) {
|
|
185
|
-
registerOperation(prog, sub, client);
|
|
226
|
+
registerOperation(prog, sub, client, baseURL);
|
|
186
227
|
}
|
|
187
228
|
return prog;
|
|
188
229
|
}
|
|
@@ -213,10 +254,17 @@ async function proxyRun(proxyOpts, remainingArgs) {
|
|
|
213
254
|
// Load and analyse the spec (name is irrelevant in proxy mode)
|
|
214
255
|
let api;
|
|
215
256
|
try {
|
|
216
|
-
api = await (0,
|
|
257
|
+
api = await (0, cache_1.parseOASWithCache)(proxyOpts.oas, {
|
|
258
|
+
noCache: proxyOpts.noCache,
|
|
259
|
+
ttlMs: (proxyOpts.cacheTtl ?? 3600) * 1000,
|
|
260
|
+
});
|
|
217
261
|
}
|
|
218
262
|
catch (err) {
|
|
219
|
-
|
|
263
|
+
const msg = err.message;
|
|
264
|
+
console.error(chalk_1.default.red('Failed to load spec:'), msg);
|
|
265
|
+
if (/ENOTFOUND|ECONNREFUSED/.test(msg)) {
|
|
266
|
+
console.error(chalk_1.default.yellow(' → Is the spec URL reachable? Try --no-cache to force a fresh fetch.'));
|
|
267
|
+
}
|
|
220
268
|
process.exit(1);
|
|
221
269
|
}
|
|
222
270
|
const structure = (0, schema_analyzer_1.analyzeSchema)(api, '_proxy_');
|
|
@@ -228,13 +276,17 @@ async function proxyRun(proxyOpts, remainingArgs) {
|
|
|
228
276
|
basic: proxyOpts.basic,
|
|
229
277
|
extraHeaders: parseExtraHeaders(proxyOpts.header),
|
|
230
278
|
};
|
|
231
|
-
const
|
|
279
|
+
const clientOpts = {
|
|
280
|
+
timeout: proxyOpts.timeout ?? 30000,
|
|
281
|
+
maxRetries: proxyOpts.retries ?? 3,
|
|
282
|
+
};
|
|
283
|
+
const client = (0, http_client_1.createRuntimeClient)(baseURL, auth, clientOpts);
|
|
232
284
|
// No operation given → show available commands
|
|
233
285
|
if (remainingArgs.length === 0) {
|
|
234
286
|
listOperations(structure);
|
|
235
287
|
return;
|
|
236
288
|
}
|
|
237
|
-
const prog = buildOperationsProgram(structure, client);
|
|
289
|
+
const prog = buildOperationsProgram(structure, client, baseURL);
|
|
238
290
|
try {
|
|
239
291
|
await prog.parseAsync(['node', 'run', ...remainingArgs]);
|
|
240
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-runner.js","sourceRoot":"","sources":["../../src/runner/proxy-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"proxy-runner.js","sourceRoot":"","sources":["../../src/runner/proxy-runner.ts"],"names":[],"mappings":"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"}
|