@qodalis/cli-curl 2.0.0-beta.11 → 2.0.0-beta.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qodalis/cli-curl",
3
- "version": "2.0.0-beta.11",
3
+ "version": "2.0.0-beta.13",
4
4
  "description": "@qodalis/cli extension for making HTTP requests via a curl-like interface.",
5
5
  "author": "Nicolae Lupei, Qodalis Solutions",
6
6
  "license": "MIT",
@@ -21,7 +21,7 @@
21
21
  "umd": "./umd/index.global.js",
22
22
  "unpkg": "./umd/index.global.js",
23
23
  "dependencies": {
24
- "@qodalis/cli-core": "2.0.0-beta.11"
24
+ "@qodalis/cli-core": "2.0.0-beta.13"
25
25
  },
26
26
  "sideEffects": false,
27
27
  "main": "./public-api.js",
package/public-api.js CHANGED
@@ -103,7 +103,7 @@ function extractResponseHeaders(response) {
103
103
  }
104
104
 
105
105
  // src/lib/version.ts
106
- var LIBRARY_VERSION = "2.0.0-beta.11";
106
+ var LIBRARY_VERSION = "2.0.0-beta.13";
107
107
  var API_VERSION = 2;
108
108
 
109
109
  // src/lib/processors/cli-curl-command-processor.ts
@@ -268,13 +268,22 @@ var CliCurlCommandProcessor = class {
268
268
  }
269
269
  context.writer.writeln();
270
270
  }
271
- const controller = new AbortController();
272
- const timeoutId = setTimeout(() => controller.abort(), timeout);
273
- fetchOptions.signal = controller.signal;
271
+ const timeoutController = new AbortController();
272
+ const timeoutId = setTimeout(() => timeoutController.abort(), timeout);
273
+ fetchOptions.signal = timeoutController.signal;
274
274
  const startTime = performance.now();
275
275
  try {
276
- const response = await fetch(requestUrl, fetchOptions);
276
+ const hostname = (() => {
277
+ try {
278
+ return new URL(url).hostname;
279
+ } catch {
280
+ return url;
281
+ }
282
+ })();
283
+ context.notifier.info(`${method} ${hostname}`);
284
+ const response = await context.http.fetch(requestUrl, fetchOptions);
277
285
  const elapsed = Math.round(performance.now() - startTime);
286
+ context.notifier.info(`${method} ${hostname} \u2014 ${response.status}`);
278
287
  const responseText = await response.text();
279
288
  const responseHeaders = extractResponseHeaders(response);
280
289
  const curlResponse = {
@@ -324,7 +333,11 @@ var CliCurlCommandProcessor = class {
324
333
  context.process.output(curlResponse);
325
334
  } catch (error) {
326
335
  if (error.name === "AbortError") {
327
- context.writer.writeError(`Request timed out after ${timeout}ms`);
336
+ if (timeoutController.signal.aborted) {
337
+ context.writer.writeError(`Request timed out after ${timeout}ms`);
338
+ } else {
339
+ context.writer.writeWarning("Request cancelled.");
340
+ }
328
341
  } else {
329
342
  context.writer.writeError(`Request failed: ${error.message}`);
330
343
  }
package/public-api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../packages/plugins/curl/src/lib/utilities/index.ts","../../packages/plugins/curl/src/lib/version.ts","../../packages/plugins/curl/src/lib/processors/cli-curl-command-processor.ts","../../packages/plugins/curl/src/public-api.ts"],"names":["DefaultLibraryAuthor","getPluginConfigValue","CliForegroundColor"],"mappings":"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","file":"public-api.js","sourcesContent":["export interface CurlRequestOptions {\n method: string;\n headers: Record<string, string>;\n body?: string;\n followRedirects: boolean;\n}\n\nexport interface CurlResponse {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n body: string;\n timing: number;\n url: string;\n redirected: boolean;\n}\n\nconst VALID_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];\n\nexport function inferMethod(explicitMethod?: string, hasBody?: boolean): string {\n if (explicitMethod) {\n const upper = explicitMethod.toUpperCase();\n if (!VALID_METHODS.includes(upper)) {\n throw new Error(`Invalid HTTP method: ${explicitMethod}. Valid methods: ${VALID_METHODS.join(', ')}`);\n }\n return upper;\n }\n return hasBody ? 'POST' : 'GET';\n}\n\nexport function parseHeaders(headerArgs: string | string[] | undefined): Record<string, string> {\n if (!headerArgs) return {};\n const arr = Array.isArray(headerArgs) ? headerArgs : [headerArgs];\n const result: Record<string, string> = {};\n for (const header of arr) {\n const colonIndex = header.indexOf(':');\n if (colonIndex === -1) continue;\n const key = header.substring(0, colonIndex).trim();\n const value = header.substring(colonIndex + 1).trim();\n if (key) result[key] = value;\n }\n return result;\n}\n\nexport function resolveBody(data?: string, dataRaw?: string): string | undefined {\n if (dataRaw != null) return dataRaw;\n if (data == null) return undefined;\n try {\n return JSON.stringify(JSON.parse(data));\n } catch {\n return data;\n }\n}\n\nexport function isJsonBody(body?: string): boolean {\n if (!body) return false;\n try {\n JSON.parse(body);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function buildFetchOptions(options: CurlRequestOptions): RequestInit {\n const headers = { ...options.headers };\n\n if (options.body && !headers['Content-Type'] && isJsonBody(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n\n const init: RequestInit = {\n method: options.method,\n headers,\n };\n\n if (options.body && options.method !== 'GET' && options.method !== 'HEAD') {\n init.body = options.body;\n }\n\n if (!options.followRedirects) {\n init.redirect = 'manual';\n }\n\n return init;\n}\n\nexport function formatResponseBody(body: string, pretty: boolean): string {\n if (!pretty) return body;\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return body;\n }\n}\n\nexport function rewriteUrlToProxy(originalUrl: string): string {\n const match = originalUrl.match(/^(https?):\\/\\/([^\\/]+)(\\/.*)?$/i);\n if (!match) {\n throw new Error(`Invalid URL: ${originalUrl}`);\n }\n const scheme = match[1];\n const domain = match[2];\n const path = match[3] || '/';\n return `https://proxy.qodalis.com/proxy/${scheme}/${domain}${path}`;\n}\n\nexport function buildCurlEquivalent(\n url: string,\n method: string,\n headers: Record<string, string>,\n body?: string,\n): string {\n const parts = ['curl'];\n if (method !== 'GET') {\n parts.push(`-X ${method}`);\n }\n for (const [key, value] of Object.entries(headers)) {\n parts.push(`-H '${key}: ${value}'`);\n }\n if (body) {\n parts.push(`-d '${body}'`);\n }\n parts.push(`'${url}'`);\n return parts.join(' ');\n}\n\nexport function extractResponseHeaders(response: Response): Record<string, string> {\n const headers: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return headers;\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.11';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n CurlResponse,\n buildCurlEquivalent,\n buildFetchOptions,\n extractResponseHeaders,\n formatResponseBody,\n inferMethod,\n parseHeaders,\n resolveBody,\n rewriteUrlToProxy,\n} from '../utilities';\n\nexport class CliCurlCommandProcessor implements ICliCommandProcessor {\n command = 'curl';\n\n description = 'Make HTTP requests from the terminal. Supports all HTTP methods, custom headers, request bodies, timeouts, and more.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n valueRequired = true;\n\n metadata?: CliProcessorMetadata = {\n icon: '🌐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'defaultTimeout',\n label: 'Default Timeout',\n description: 'Default request timeout in milliseconds',\n type: 'number',\n defaultValue: 30000,\n validator: (v) => ({\n valid: typeof v === 'number' && v >= 1000 && v <= 300000,\n message: 'Must be between 1000 and 300000 ms',\n }),\n },\n {\n key: 'prettyPrint',\n label: 'Pretty-Print JSON',\n description: 'Pretty-print JSON responses by default',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'verbose',\n label: 'Verbose Output',\n description: 'Show request/response headers by default',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n parameters = [\n {\n name: 'request',\n aliases: ['X'],\n type: 'string' as const,\n description: 'HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)',\n required: false,\n },\n {\n name: 'header',\n aliases: ['H'],\n type: 'array' as const,\n description: 'Add header, e.g. -H \\'Content-Type: application/json\\' (repeatable)',\n required: false,\n },\n {\n name: 'data',\n aliases: ['d'],\n type: 'string' as const,\n description: 'Request body (auto-detects JSON, sets method to POST if -X not given)',\n required: false,\n },\n {\n name: 'data-raw',\n type: 'string' as const,\n description: 'Request body sent as-is without JSON parsing',\n required: false,\n },\n {\n name: 'verbose',\n aliases: ['v'],\n type: 'boolean' as const,\n description: 'Show request/response headers and timing',\n required: false,\n },\n {\n name: 'pretty',\n type: 'boolean' as const,\n description: 'Pretty-print JSON response body',\n required: false,\n },\n {\n name: 'timeout',\n type: 'number' as const,\n description: 'Request timeout in milliseconds (default: 30000)',\n required: false,\n defaultValue: '30000',\n },\n {\n name: 'location',\n aliases: ['L'],\n type: 'boolean' as const,\n description: 'Follow redirects (default: true)',\n required: false,\n },\n {\n name: 'proxy',\n type: 'boolean' as const,\n description: 'Route request through proxy.qodalis.com (bypasses CORS)',\n required: false,\n },\n {\n name: 'silent',\n aliases: ['s'],\n type: 'boolean' as const,\n description: 'Only output response body (no status line)',\n required: false,\n },\n ];\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const url = command.value;\n\n if (!url) {\n context.writer.writeError('URL is required. Usage: curl <url> [options]');\n context.process.exit(1);\n return;\n }\n\n const args = command.args;\n const cfgTimeout = getPluginConfigValue(context, 'curl', 'defaultTimeout', 30000);\n const cfgPretty = getPluginConfigValue(context, 'curl', 'prettyPrint', false);\n const cfgVerbose = getPluginConfigValue(context, 'curl', 'verbose', false);\n\n const explicitMethod = args['request'] || args['X'];\n const data = args['data'] || args['d'];\n const dataRaw = args['data-raw'];\n const hasBody = data != null || dataRaw != null;\n const verbose = args['verbose'] != null || args['v'] != null ? (!!args['verbose'] || !!args['v']) : cfgVerbose;\n const pretty = args['pretty'] != null ? !!args['pretty'] : cfgPretty;\n const silent = !!args['silent'] || !!args['s'];\n const useProxy = !!args['proxy'];\n const timeout = parseInt(args['timeout'] || String(cfgTimeout), 10);\n const followRedirects = args['location'] !== false && args['L'] !== false;\n\n let method: string;\n try {\n method = inferMethod(explicitMethod, hasBody);\n } catch (e: any) {\n context.writer.writeError(e.message);\n context.process.exit(1);\n return;\n }\n\n const headers = parseHeaders(args['header'] || args['H']);\n const body = resolveBody(data, dataRaw);\n const requestUrl = useProxy ? rewriteUrlToProxy(url) : url;\n\n const fetchOptions = buildFetchOptions({\n method,\n headers,\n body,\n followRedirects,\n });\n\n if (verbose) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${method} ${url}`, CliForegroundColor.Cyan)}`,\n );\n for (const [key, value] of Object.entries(headers)) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n if (body) {\n context.writer.writeln(`> Body: ${body}`);\n }\n context.writer.writeln();\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n fetchOptions.signal = controller.signal;\n\n const startTime = performance.now();\n\n try {\n const response = await fetch(requestUrl, fetchOptions);\n const elapsed = Math.round(performance.now() - startTime);\n const responseText = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n const curlResponse: CurlResponse = {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n body: responseText,\n timing: elapsed,\n url: response.url,\n redirected: response.redirected,\n };\n\n if (!silent) {\n const statusColor = response.ok ? CliForegroundColor.Green : CliForegroundColor.Red;\n context.writer.writeln(\n context.writer.wrapInColor(\n `HTTP ${response.status} ${response.statusText}`,\n statusColor,\n ),\n );\n }\n\n if (verbose) {\n context.writer.writeln();\n for (const [key, value] of Object.entries(responseHeaders)) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Time: ${elapsed}ms`, CliForegroundColor.Magenta)}`,\n );\n if (response.redirected) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Redirected to: ${response.url}`, CliForegroundColor.Cyan)}`,\n );\n }\n context.writer.writeln();\n }\n\n const formattedBody = formatResponseBody(responseText, pretty);\n if (formattedBody) {\n context.writer.writeln(formattedBody);\n }\n\n if (verbose) {\n context.writer.writeln();\n context.writer.writeInfo('Equivalent curl command:');\n context.writer.writeln(buildCurlEquivalent(url, method, headers, body));\n }\n\n context.process.output(curlResponse);\n } catch (error: any) {\n if (error.name === 'AbortError') {\n context.writer.writeError(`Request timed out after ${timeout}ms`);\n } else {\n context.writer.writeError(`Request failed: ${error.message}`);\n }\n context.process.exit(1);\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n\n writer.writeln(this.description!);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Usage:', CliForegroundColor.Yellow));\n writer.writeln(` curl <url> [options]`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Options:', CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('-X, --request <METHOD>', CliForegroundColor.Cyan)} HTTP method (default: GET, or POST if -d given)`);\n writer.writeln(` ${writer.wrapInColor('-H, --header <header>', CliForegroundColor.Cyan)} Add header (repeatable)`);\n writer.writeln(` ${writer.wrapInColor('-d, --data <body>', CliForegroundColor.Cyan)} Request body (auto-detects JSON)`);\n writer.writeln(` ${writer.wrapInColor('--data-raw <body>', CliForegroundColor.Cyan)} Request body as-is`);\n writer.writeln(` ${writer.wrapInColor('-v, --verbose', CliForegroundColor.Cyan)} Show headers and timing`);\n writer.writeln(` ${writer.wrapInColor('--pretty', CliForegroundColor.Cyan)} Pretty-print JSON response`);\n writer.writeln(` ${writer.wrapInColor('--timeout <ms>', CliForegroundColor.Cyan)} Timeout in ms (default: 30000)`);\n writer.writeln(` ${writer.wrapInColor('-L, --location', CliForegroundColor.Cyan)} Follow redirects (default: true)`);\n writer.writeln(` ${writer.wrapInColor('--proxy', CliForegroundColor.Cyan)} Route through CORS proxy`);\n writer.writeln(` ${writer.wrapInColor('-s, --silent', CliForegroundColor.Cyan)} Only output body`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Examples:', CliForegroundColor.Yellow));\n writer.writeln(` curl https://api.example.com/users`);\n writer.writeln(` curl https://api.example.com/users -X POST -d '{\"name\":\"John\"}' -H 'Content-Type: application/json'`);\n writer.writeln(` curl https://api.example.com/users -v --pretty`);\n writer.writeln(` curl https://api.example.com/status -X HEAD`);\n writer.writeln(` curl https://api.example.com/data --proxy --timeout 5000`);\n writer.writeln();\n\n writer.writeWarning('The server must allow CORS for this tool to work. Use --proxy to bypass CORS restrictions.');\n }\n\n async initialize(_context: ICliExecutionContext): Promise<void> {}\n}\n","/*\n * Public API Surface of curl\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-curl-command-processor';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliCurlCommandProcessor } from './lib/processors/cli-curl-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const curlModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-curl',\n processors: [new CliCurlCommandProcessor()],\n translations: {\n es: { 'cli.curl.description': 'Realizar solicitudes HTTP desde la terminal' },\n fr: { 'cli.curl.description': 'Effectuer des requêtes HTTP depuis le terminal' },\n de: { 'cli.curl.description': 'HTTP-Anfragen vom Terminal ausführen' },\n pt: { 'cli.curl.description': 'Fazer requisições HTTP pelo terminal' },\n it: { 'cli.curl.description': 'Eseguire richieste HTTP dal terminale' },\n ja: { 'cli.curl.description': 'ターミナルからHTTPリクエストを実行' },\n ko: { 'cli.curl.description': '터미널에서 HTTP 요청 수행' },\n zh: { 'cli.curl.description': '从终端发送 HTTP 请求' },\n ru: { 'cli.curl.description': 'Выполнение HTTP-запросов из терминала' },\n ro: { 'cli.curl.description': 'Efectuează cereri HTTP din terminal' },\n },\n};\n"]}
1
+ {"version":3,"sources":["../../packages/plugins/curl/src/lib/utilities/index.ts","../../packages/plugins/curl/src/lib/version.ts","../../packages/plugins/curl/src/lib/processors/cli-curl-command-processor.ts","../../packages/plugins/curl/src/public-api.ts"],"names":["DefaultLibraryAuthor","getPluginConfigValue","CliForegroundColor"],"mappings":"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","file":"public-api.js","sourcesContent":["export interface CurlRequestOptions {\n method: string;\n headers: Record<string, string>;\n body?: string;\n followRedirects: boolean;\n}\n\nexport interface CurlResponse {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n body: string;\n timing: number;\n url: string;\n redirected: boolean;\n}\n\nconst VALID_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];\n\nexport function inferMethod(explicitMethod?: string, hasBody?: boolean): string {\n if (explicitMethod) {\n const upper = explicitMethod.toUpperCase();\n if (!VALID_METHODS.includes(upper)) {\n throw new Error(`Invalid HTTP method: ${explicitMethod}. Valid methods: ${VALID_METHODS.join(', ')}`);\n }\n return upper;\n }\n return hasBody ? 'POST' : 'GET';\n}\n\nexport function parseHeaders(headerArgs: string | string[] | undefined): Record<string, string> {\n if (!headerArgs) return {};\n const arr = Array.isArray(headerArgs) ? headerArgs : [headerArgs];\n const result: Record<string, string> = {};\n for (const header of arr) {\n const colonIndex = header.indexOf(':');\n if (colonIndex === -1) continue;\n const key = header.substring(0, colonIndex).trim();\n const value = header.substring(colonIndex + 1).trim();\n if (key) result[key] = value;\n }\n return result;\n}\n\nexport function resolveBody(data?: string, dataRaw?: string): string | undefined {\n if (dataRaw != null) return dataRaw;\n if (data == null) return undefined;\n try {\n return JSON.stringify(JSON.parse(data));\n } catch {\n return data;\n }\n}\n\nexport function isJsonBody(body?: string): boolean {\n if (!body) return false;\n try {\n JSON.parse(body);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function buildFetchOptions(options: CurlRequestOptions): RequestInit {\n const headers = { ...options.headers };\n\n if (options.body && !headers['Content-Type'] && isJsonBody(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n\n const init: RequestInit = {\n method: options.method,\n headers,\n };\n\n if (options.body && options.method !== 'GET' && options.method !== 'HEAD') {\n init.body = options.body;\n }\n\n if (!options.followRedirects) {\n init.redirect = 'manual';\n }\n\n return init;\n}\n\nexport function formatResponseBody(body: string, pretty: boolean): string {\n if (!pretty) return body;\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return body;\n }\n}\n\nexport function rewriteUrlToProxy(originalUrl: string): string {\n const match = originalUrl.match(/^(https?):\\/\\/([^\\/]+)(\\/.*)?$/i);\n if (!match) {\n throw new Error(`Invalid URL: ${originalUrl}`);\n }\n const scheme = match[1];\n const domain = match[2];\n const path = match[3] || '/';\n return `https://proxy.qodalis.com/proxy/${scheme}/${domain}${path}`;\n}\n\nexport function buildCurlEquivalent(\n url: string,\n method: string,\n headers: Record<string, string>,\n body?: string,\n): string {\n const parts = ['curl'];\n if (method !== 'GET') {\n parts.push(`-X ${method}`);\n }\n for (const [key, value] of Object.entries(headers)) {\n parts.push(`-H '${key}: ${value}'`);\n }\n if (body) {\n parts.push(`-d '${body}'`);\n }\n parts.push(`'${url}'`);\n return parts.join(' ');\n}\n\nexport function extractResponseHeaders(response: Response): Record<string, string> {\n const headers: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return headers;\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.13';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n CurlResponse,\n buildCurlEquivalent,\n buildFetchOptions,\n extractResponseHeaders,\n formatResponseBody,\n inferMethod,\n parseHeaders,\n resolveBody,\n rewriteUrlToProxy,\n} from '../utilities';\n\nexport class CliCurlCommandProcessor implements ICliCommandProcessor {\n command = 'curl';\n\n description = 'Make HTTP requests from the terminal. Supports all HTTP methods, custom headers, request bodies, timeouts, and more.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n valueRequired = true;\n\n metadata?: CliProcessorMetadata = {\n icon: '🌐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'defaultTimeout',\n label: 'Default Timeout',\n description: 'Default request timeout in milliseconds',\n type: 'number',\n defaultValue: 30000,\n validator: (v) => ({\n valid: typeof v === 'number' && v >= 1000 && v <= 300000,\n message: 'Must be between 1000 and 300000 ms',\n }),\n },\n {\n key: 'prettyPrint',\n label: 'Pretty-Print JSON',\n description: 'Pretty-print JSON responses by default',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'verbose',\n label: 'Verbose Output',\n description: 'Show request/response headers by default',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n parameters = [\n {\n name: 'request',\n aliases: ['X'],\n type: 'string' as const,\n description: 'HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)',\n required: false,\n },\n {\n name: 'header',\n aliases: ['H'],\n type: 'array' as const,\n description: 'Add header, e.g. -H \\'Content-Type: application/json\\' (repeatable)',\n required: false,\n },\n {\n name: 'data',\n aliases: ['d'],\n type: 'string' as const,\n description: 'Request body (auto-detects JSON, sets method to POST if -X not given)',\n required: false,\n },\n {\n name: 'data-raw',\n type: 'string' as const,\n description: 'Request body sent as-is without JSON parsing',\n required: false,\n },\n {\n name: 'verbose',\n aliases: ['v'],\n type: 'boolean' as const,\n description: 'Show request/response headers and timing',\n required: false,\n },\n {\n name: 'pretty',\n type: 'boolean' as const,\n description: 'Pretty-print JSON response body',\n required: false,\n },\n {\n name: 'timeout',\n type: 'number' as const,\n description: 'Request timeout in milliseconds (default: 30000)',\n required: false,\n defaultValue: '30000',\n },\n {\n name: 'location',\n aliases: ['L'],\n type: 'boolean' as const,\n description: 'Follow redirects (default: true)',\n required: false,\n },\n {\n name: 'proxy',\n type: 'boolean' as const,\n description: 'Route request through proxy.qodalis.com (bypasses CORS)',\n required: false,\n },\n {\n name: 'silent',\n aliases: ['s'],\n type: 'boolean' as const,\n description: 'Only output response body (no status line)',\n required: false,\n },\n ];\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const url = command.value;\n\n if (!url) {\n context.writer.writeError('URL is required. Usage: curl <url> [options]');\n context.process.exit(1);\n return;\n }\n\n const args = command.args;\n const cfgTimeout = getPluginConfigValue(context, 'curl', 'defaultTimeout', 30000);\n const cfgPretty = getPluginConfigValue(context, 'curl', 'prettyPrint', false);\n const cfgVerbose = getPluginConfigValue(context, 'curl', 'verbose', false);\n\n const explicitMethod = args['request'] || args['X'];\n const data = args['data'] || args['d'];\n const dataRaw = args['data-raw'];\n const hasBody = data != null || dataRaw != null;\n const verbose = args['verbose'] != null || args['v'] != null ? (!!args['verbose'] || !!args['v']) : cfgVerbose;\n const pretty = args['pretty'] != null ? !!args['pretty'] : cfgPretty;\n const silent = !!args['silent'] || !!args['s'];\n const useProxy = !!args['proxy'];\n const timeout = parseInt(args['timeout'] || String(cfgTimeout), 10);\n const followRedirects = args['location'] !== false && args['L'] !== false;\n\n let method: string;\n try {\n method = inferMethod(explicitMethod, hasBody);\n } catch (e: any) {\n context.writer.writeError(e.message);\n context.process.exit(1);\n return;\n }\n\n const headers = parseHeaders(args['header'] || args['H']);\n const body = resolveBody(data, dataRaw);\n const requestUrl = useProxy ? rewriteUrlToProxy(url) : url;\n\n const fetchOptions = buildFetchOptions({\n method,\n headers,\n body,\n followRedirects,\n });\n\n if (verbose) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${method} ${url}`, CliForegroundColor.Cyan)}`,\n );\n for (const [key, value] of Object.entries(headers)) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n if (body) {\n context.writer.writeln(`> Body: ${body}`);\n }\n context.writer.writeln();\n }\n\n const timeoutController = new AbortController();\n const timeoutId = setTimeout(() => timeoutController.abort(), timeout);\n fetchOptions.signal = timeoutController.signal;\n\n const startTime = performance.now();\n\n try {\n const hostname = (() => { try { return new URL(url).hostname; } catch { return url; } })();\n context.notifier.info(`${method} ${hostname}`);\n const response = await context.http.fetch(requestUrl, fetchOptions);\n const elapsed = Math.round(performance.now() - startTime);\n context.notifier.info(`${method} ${hostname} — ${response.status}`);\n const responseText = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n const curlResponse: CurlResponse = {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n body: responseText,\n timing: elapsed,\n url: response.url,\n redirected: response.redirected,\n };\n\n if (!silent) {\n const statusColor = response.ok ? CliForegroundColor.Green : CliForegroundColor.Red;\n context.writer.writeln(\n context.writer.wrapInColor(\n `HTTP ${response.status} ${response.statusText}`,\n statusColor,\n ),\n );\n }\n\n if (verbose) {\n context.writer.writeln();\n for (const [key, value] of Object.entries(responseHeaders)) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Time: ${elapsed}ms`, CliForegroundColor.Magenta)}`,\n );\n if (response.redirected) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Redirected to: ${response.url}`, CliForegroundColor.Cyan)}`,\n );\n }\n context.writer.writeln();\n }\n\n const formattedBody = formatResponseBody(responseText, pretty);\n if (formattedBody) {\n context.writer.writeln(formattedBody);\n }\n\n if (verbose) {\n context.writer.writeln();\n context.writer.writeInfo('Equivalent curl command:');\n context.writer.writeln(buildCurlEquivalent(url, method, headers, body));\n }\n\n context.process.output(curlResponse);\n } catch (error: any) {\n if (error.name === 'AbortError') {\n if (timeoutController.signal.aborted) {\n context.writer.writeError(`Request timed out after ${timeout}ms`);\n } else {\n context.writer.writeWarning('Request cancelled.');\n }\n } else {\n context.writer.writeError(`Request failed: ${error.message}`);\n }\n context.process.exit(1);\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n\n writer.writeln(this.description!);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Usage:', CliForegroundColor.Yellow));\n writer.writeln(` curl <url> [options]`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Options:', CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('-X, --request <METHOD>', CliForegroundColor.Cyan)} HTTP method (default: GET, or POST if -d given)`);\n writer.writeln(` ${writer.wrapInColor('-H, --header <header>', CliForegroundColor.Cyan)} Add header (repeatable)`);\n writer.writeln(` ${writer.wrapInColor('-d, --data <body>', CliForegroundColor.Cyan)} Request body (auto-detects JSON)`);\n writer.writeln(` ${writer.wrapInColor('--data-raw <body>', CliForegroundColor.Cyan)} Request body as-is`);\n writer.writeln(` ${writer.wrapInColor('-v, --verbose', CliForegroundColor.Cyan)} Show headers and timing`);\n writer.writeln(` ${writer.wrapInColor('--pretty', CliForegroundColor.Cyan)} Pretty-print JSON response`);\n writer.writeln(` ${writer.wrapInColor('--timeout <ms>', CliForegroundColor.Cyan)} Timeout in ms (default: 30000)`);\n writer.writeln(` ${writer.wrapInColor('-L, --location', CliForegroundColor.Cyan)} Follow redirects (default: true)`);\n writer.writeln(` ${writer.wrapInColor('--proxy', CliForegroundColor.Cyan)} Route through CORS proxy`);\n writer.writeln(` ${writer.wrapInColor('-s, --silent', CliForegroundColor.Cyan)} Only output body`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Examples:', CliForegroundColor.Yellow));\n writer.writeln(` curl https://api.example.com/users`);\n writer.writeln(` curl https://api.example.com/users -X POST -d '{\"name\":\"John\"}' -H 'Content-Type: application/json'`);\n writer.writeln(` curl https://api.example.com/users -v --pretty`);\n writer.writeln(` curl https://api.example.com/status -X HEAD`);\n writer.writeln(` curl https://api.example.com/data --proxy --timeout 5000`);\n writer.writeln();\n\n writer.writeWarning('The server must allow CORS for this tool to work. Use --proxy to bypass CORS restrictions.');\n }\n\n async initialize(_context: ICliExecutionContext): Promise<void> {}\n}\n","/*\n * Public API Surface of curl\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-curl-command-processor';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliCurlCommandProcessor } from './lib/processors/cli-curl-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const curlModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-curl',\n processors: [new CliCurlCommandProcessor()],\n translations: {\n es: { 'cli.curl.description': 'Realizar solicitudes HTTP desde la terminal' },\n fr: { 'cli.curl.description': 'Effectuer des requêtes HTTP depuis le terminal' },\n de: { 'cli.curl.description': 'HTTP-Anfragen vom Terminal ausführen' },\n pt: { 'cli.curl.description': 'Fazer requisições HTTP pelo terminal' },\n it: { 'cli.curl.description': 'Eseguire richieste HTTP dal terminale' },\n ja: { 'cli.curl.description': 'ターミナルからHTTPリクエストを実行' },\n ko: { 'cli.curl.description': '터미널에서 HTTP 요청 수행' },\n zh: { 'cli.curl.description': '从终端发送 HTTP 请求' },\n ru: { 'cli.curl.description': 'Выполнение HTTP-запросов из терминала' },\n ro: { 'cli.curl.description': 'Efectuează cereri HTTP din terminal' },\n },\n};\n"]}
package/public-api.mjs CHANGED
@@ -101,7 +101,7 @@ function extractResponseHeaders(response) {
101
101
  }
102
102
 
103
103
  // src/lib/version.ts
104
- var LIBRARY_VERSION = "2.0.0-beta.11";
104
+ var LIBRARY_VERSION = "2.0.0-beta.13";
105
105
  var API_VERSION = 2;
106
106
 
107
107
  // src/lib/processors/cli-curl-command-processor.ts
@@ -266,13 +266,22 @@ var CliCurlCommandProcessor = class {
266
266
  }
267
267
  context.writer.writeln();
268
268
  }
269
- const controller = new AbortController();
270
- const timeoutId = setTimeout(() => controller.abort(), timeout);
271
- fetchOptions.signal = controller.signal;
269
+ const timeoutController = new AbortController();
270
+ const timeoutId = setTimeout(() => timeoutController.abort(), timeout);
271
+ fetchOptions.signal = timeoutController.signal;
272
272
  const startTime = performance.now();
273
273
  try {
274
- const response = await fetch(requestUrl, fetchOptions);
274
+ const hostname = (() => {
275
+ try {
276
+ return new URL(url).hostname;
277
+ } catch {
278
+ return url;
279
+ }
280
+ })();
281
+ context.notifier.info(`${method} ${hostname}`);
282
+ const response = await context.http.fetch(requestUrl, fetchOptions);
275
283
  const elapsed = Math.round(performance.now() - startTime);
284
+ context.notifier.info(`${method} ${hostname} \u2014 ${response.status}`);
276
285
  const responseText = await response.text();
277
286
  const responseHeaders = extractResponseHeaders(response);
278
287
  const curlResponse = {
@@ -322,7 +331,11 @@ var CliCurlCommandProcessor = class {
322
331
  context.process.output(curlResponse);
323
332
  } catch (error) {
324
333
  if (error.name === "AbortError") {
325
- context.writer.writeError(`Request timed out after ${timeout}ms`);
334
+ if (timeoutController.signal.aborted) {
335
+ context.writer.writeError(`Request timed out after ${timeout}ms`);
336
+ } else {
337
+ context.writer.writeWarning("Request cancelled.");
338
+ }
326
339
  } else {
327
340
  context.writer.writeError(`Request failed: ${error.message}`);
328
341
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../packages/plugins/curl/src/lib/utilities/index.ts","../../packages/plugins/curl/src/lib/version.ts","../../packages/plugins/curl/src/lib/processors/cli-curl-command-processor.ts","../../packages/plugins/curl/src/public-api.ts"],"names":[],"mappings":"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","file":"public-api.mjs","sourcesContent":["export interface CurlRequestOptions {\n method: string;\n headers: Record<string, string>;\n body?: string;\n followRedirects: boolean;\n}\n\nexport interface CurlResponse {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n body: string;\n timing: number;\n url: string;\n redirected: boolean;\n}\n\nconst VALID_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];\n\nexport function inferMethod(explicitMethod?: string, hasBody?: boolean): string {\n if (explicitMethod) {\n const upper = explicitMethod.toUpperCase();\n if (!VALID_METHODS.includes(upper)) {\n throw new Error(`Invalid HTTP method: ${explicitMethod}. Valid methods: ${VALID_METHODS.join(', ')}`);\n }\n return upper;\n }\n return hasBody ? 'POST' : 'GET';\n}\n\nexport function parseHeaders(headerArgs: string | string[] | undefined): Record<string, string> {\n if (!headerArgs) return {};\n const arr = Array.isArray(headerArgs) ? headerArgs : [headerArgs];\n const result: Record<string, string> = {};\n for (const header of arr) {\n const colonIndex = header.indexOf(':');\n if (colonIndex === -1) continue;\n const key = header.substring(0, colonIndex).trim();\n const value = header.substring(colonIndex + 1).trim();\n if (key) result[key] = value;\n }\n return result;\n}\n\nexport function resolveBody(data?: string, dataRaw?: string): string | undefined {\n if (dataRaw != null) return dataRaw;\n if (data == null) return undefined;\n try {\n return JSON.stringify(JSON.parse(data));\n } catch {\n return data;\n }\n}\n\nexport function isJsonBody(body?: string): boolean {\n if (!body) return false;\n try {\n JSON.parse(body);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function buildFetchOptions(options: CurlRequestOptions): RequestInit {\n const headers = { ...options.headers };\n\n if (options.body && !headers['Content-Type'] && isJsonBody(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n\n const init: RequestInit = {\n method: options.method,\n headers,\n };\n\n if (options.body && options.method !== 'GET' && options.method !== 'HEAD') {\n init.body = options.body;\n }\n\n if (!options.followRedirects) {\n init.redirect = 'manual';\n }\n\n return init;\n}\n\nexport function formatResponseBody(body: string, pretty: boolean): string {\n if (!pretty) return body;\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return body;\n }\n}\n\nexport function rewriteUrlToProxy(originalUrl: string): string {\n const match = originalUrl.match(/^(https?):\\/\\/([^\\/]+)(\\/.*)?$/i);\n if (!match) {\n throw new Error(`Invalid URL: ${originalUrl}`);\n }\n const scheme = match[1];\n const domain = match[2];\n const path = match[3] || '/';\n return `https://proxy.qodalis.com/proxy/${scheme}/${domain}${path}`;\n}\n\nexport function buildCurlEquivalent(\n url: string,\n method: string,\n headers: Record<string, string>,\n body?: string,\n): string {\n const parts = ['curl'];\n if (method !== 'GET') {\n parts.push(`-X ${method}`);\n }\n for (const [key, value] of Object.entries(headers)) {\n parts.push(`-H '${key}: ${value}'`);\n }\n if (body) {\n parts.push(`-d '${body}'`);\n }\n parts.push(`'${url}'`);\n return parts.join(' ');\n}\n\nexport function extractResponseHeaders(response: Response): Record<string, string> {\n const headers: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return headers;\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.11';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n CurlResponse,\n buildCurlEquivalent,\n buildFetchOptions,\n extractResponseHeaders,\n formatResponseBody,\n inferMethod,\n parseHeaders,\n resolveBody,\n rewriteUrlToProxy,\n} from '../utilities';\n\nexport class CliCurlCommandProcessor implements ICliCommandProcessor {\n command = 'curl';\n\n description = 'Make HTTP requests from the terminal. Supports all HTTP methods, custom headers, request bodies, timeouts, and more.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n valueRequired = true;\n\n metadata?: CliProcessorMetadata = {\n icon: '🌐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'defaultTimeout',\n label: 'Default Timeout',\n description: 'Default request timeout in milliseconds',\n type: 'number',\n defaultValue: 30000,\n validator: (v) => ({\n valid: typeof v === 'number' && v >= 1000 && v <= 300000,\n message: 'Must be between 1000 and 300000 ms',\n }),\n },\n {\n key: 'prettyPrint',\n label: 'Pretty-Print JSON',\n description: 'Pretty-print JSON responses by default',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'verbose',\n label: 'Verbose Output',\n description: 'Show request/response headers by default',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n parameters = [\n {\n name: 'request',\n aliases: ['X'],\n type: 'string' as const,\n description: 'HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)',\n required: false,\n },\n {\n name: 'header',\n aliases: ['H'],\n type: 'array' as const,\n description: 'Add header, e.g. -H \\'Content-Type: application/json\\' (repeatable)',\n required: false,\n },\n {\n name: 'data',\n aliases: ['d'],\n type: 'string' as const,\n description: 'Request body (auto-detects JSON, sets method to POST if -X not given)',\n required: false,\n },\n {\n name: 'data-raw',\n type: 'string' as const,\n description: 'Request body sent as-is without JSON parsing',\n required: false,\n },\n {\n name: 'verbose',\n aliases: ['v'],\n type: 'boolean' as const,\n description: 'Show request/response headers and timing',\n required: false,\n },\n {\n name: 'pretty',\n type: 'boolean' as const,\n description: 'Pretty-print JSON response body',\n required: false,\n },\n {\n name: 'timeout',\n type: 'number' as const,\n description: 'Request timeout in milliseconds (default: 30000)',\n required: false,\n defaultValue: '30000',\n },\n {\n name: 'location',\n aliases: ['L'],\n type: 'boolean' as const,\n description: 'Follow redirects (default: true)',\n required: false,\n },\n {\n name: 'proxy',\n type: 'boolean' as const,\n description: 'Route request through proxy.qodalis.com (bypasses CORS)',\n required: false,\n },\n {\n name: 'silent',\n aliases: ['s'],\n type: 'boolean' as const,\n description: 'Only output response body (no status line)',\n required: false,\n },\n ];\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const url = command.value;\n\n if (!url) {\n context.writer.writeError('URL is required. Usage: curl <url> [options]');\n context.process.exit(1);\n return;\n }\n\n const args = command.args;\n const cfgTimeout = getPluginConfigValue(context, 'curl', 'defaultTimeout', 30000);\n const cfgPretty = getPluginConfigValue(context, 'curl', 'prettyPrint', false);\n const cfgVerbose = getPluginConfigValue(context, 'curl', 'verbose', false);\n\n const explicitMethod = args['request'] || args['X'];\n const data = args['data'] || args['d'];\n const dataRaw = args['data-raw'];\n const hasBody = data != null || dataRaw != null;\n const verbose = args['verbose'] != null || args['v'] != null ? (!!args['verbose'] || !!args['v']) : cfgVerbose;\n const pretty = args['pretty'] != null ? !!args['pretty'] : cfgPretty;\n const silent = !!args['silent'] || !!args['s'];\n const useProxy = !!args['proxy'];\n const timeout = parseInt(args['timeout'] || String(cfgTimeout), 10);\n const followRedirects = args['location'] !== false && args['L'] !== false;\n\n let method: string;\n try {\n method = inferMethod(explicitMethod, hasBody);\n } catch (e: any) {\n context.writer.writeError(e.message);\n context.process.exit(1);\n return;\n }\n\n const headers = parseHeaders(args['header'] || args['H']);\n const body = resolveBody(data, dataRaw);\n const requestUrl = useProxy ? rewriteUrlToProxy(url) : url;\n\n const fetchOptions = buildFetchOptions({\n method,\n headers,\n body,\n followRedirects,\n });\n\n if (verbose) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${method} ${url}`, CliForegroundColor.Cyan)}`,\n );\n for (const [key, value] of Object.entries(headers)) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n if (body) {\n context.writer.writeln(`> Body: ${body}`);\n }\n context.writer.writeln();\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n fetchOptions.signal = controller.signal;\n\n const startTime = performance.now();\n\n try {\n const response = await fetch(requestUrl, fetchOptions);\n const elapsed = Math.round(performance.now() - startTime);\n const responseText = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n const curlResponse: CurlResponse = {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n body: responseText,\n timing: elapsed,\n url: response.url,\n redirected: response.redirected,\n };\n\n if (!silent) {\n const statusColor = response.ok ? CliForegroundColor.Green : CliForegroundColor.Red;\n context.writer.writeln(\n context.writer.wrapInColor(\n `HTTP ${response.status} ${response.statusText}`,\n statusColor,\n ),\n );\n }\n\n if (verbose) {\n context.writer.writeln();\n for (const [key, value] of Object.entries(responseHeaders)) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Time: ${elapsed}ms`, CliForegroundColor.Magenta)}`,\n );\n if (response.redirected) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Redirected to: ${response.url}`, CliForegroundColor.Cyan)}`,\n );\n }\n context.writer.writeln();\n }\n\n const formattedBody = formatResponseBody(responseText, pretty);\n if (formattedBody) {\n context.writer.writeln(formattedBody);\n }\n\n if (verbose) {\n context.writer.writeln();\n context.writer.writeInfo('Equivalent curl command:');\n context.writer.writeln(buildCurlEquivalent(url, method, headers, body));\n }\n\n context.process.output(curlResponse);\n } catch (error: any) {\n if (error.name === 'AbortError') {\n context.writer.writeError(`Request timed out after ${timeout}ms`);\n } else {\n context.writer.writeError(`Request failed: ${error.message}`);\n }\n context.process.exit(1);\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n\n writer.writeln(this.description!);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Usage:', CliForegroundColor.Yellow));\n writer.writeln(` curl <url> [options]`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Options:', CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('-X, --request <METHOD>', CliForegroundColor.Cyan)} HTTP method (default: GET, or POST if -d given)`);\n writer.writeln(` ${writer.wrapInColor('-H, --header <header>', CliForegroundColor.Cyan)} Add header (repeatable)`);\n writer.writeln(` ${writer.wrapInColor('-d, --data <body>', CliForegroundColor.Cyan)} Request body (auto-detects JSON)`);\n writer.writeln(` ${writer.wrapInColor('--data-raw <body>', CliForegroundColor.Cyan)} Request body as-is`);\n writer.writeln(` ${writer.wrapInColor('-v, --verbose', CliForegroundColor.Cyan)} Show headers and timing`);\n writer.writeln(` ${writer.wrapInColor('--pretty', CliForegroundColor.Cyan)} Pretty-print JSON response`);\n writer.writeln(` ${writer.wrapInColor('--timeout <ms>', CliForegroundColor.Cyan)} Timeout in ms (default: 30000)`);\n writer.writeln(` ${writer.wrapInColor('-L, --location', CliForegroundColor.Cyan)} Follow redirects (default: true)`);\n writer.writeln(` ${writer.wrapInColor('--proxy', CliForegroundColor.Cyan)} Route through CORS proxy`);\n writer.writeln(` ${writer.wrapInColor('-s, --silent', CliForegroundColor.Cyan)} Only output body`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Examples:', CliForegroundColor.Yellow));\n writer.writeln(` curl https://api.example.com/users`);\n writer.writeln(` curl https://api.example.com/users -X POST -d '{\"name\":\"John\"}' -H 'Content-Type: application/json'`);\n writer.writeln(` curl https://api.example.com/users -v --pretty`);\n writer.writeln(` curl https://api.example.com/status -X HEAD`);\n writer.writeln(` curl https://api.example.com/data --proxy --timeout 5000`);\n writer.writeln();\n\n writer.writeWarning('The server must allow CORS for this tool to work. Use --proxy to bypass CORS restrictions.');\n }\n\n async initialize(_context: ICliExecutionContext): Promise<void> {}\n}\n","/*\n * Public API Surface of curl\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-curl-command-processor';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliCurlCommandProcessor } from './lib/processors/cli-curl-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const curlModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-curl',\n processors: [new CliCurlCommandProcessor()],\n translations: {\n es: { 'cli.curl.description': 'Realizar solicitudes HTTP desde la terminal' },\n fr: { 'cli.curl.description': 'Effectuer des requêtes HTTP depuis le terminal' },\n de: { 'cli.curl.description': 'HTTP-Anfragen vom Terminal ausführen' },\n pt: { 'cli.curl.description': 'Fazer requisições HTTP pelo terminal' },\n it: { 'cli.curl.description': 'Eseguire richieste HTTP dal terminale' },\n ja: { 'cli.curl.description': 'ターミナルからHTTPリクエストを実行' },\n ko: { 'cli.curl.description': '터미널에서 HTTP 요청 수행' },\n zh: { 'cli.curl.description': '从终端发送 HTTP 请求' },\n ru: { 'cli.curl.description': 'Выполнение HTTP-запросов из терминала' },\n ro: { 'cli.curl.description': 'Efectuează cereri HTTP din terminal' },\n },\n};\n"]}
1
+ {"version":3,"sources":["../../packages/plugins/curl/src/lib/utilities/index.ts","../../packages/plugins/curl/src/lib/version.ts","../../packages/plugins/curl/src/lib/processors/cli-curl-command-processor.ts","../../packages/plugins/curl/src/public-api.ts"],"names":[],"mappings":"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","file":"public-api.mjs","sourcesContent":["export interface CurlRequestOptions {\n method: string;\n headers: Record<string, string>;\n body?: string;\n followRedirects: boolean;\n}\n\nexport interface CurlResponse {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n body: string;\n timing: number;\n url: string;\n redirected: boolean;\n}\n\nconst VALID_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];\n\nexport function inferMethod(explicitMethod?: string, hasBody?: boolean): string {\n if (explicitMethod) {\n const upper = explicitMethod.toUpperCase();\n if (!VALID_METHODS.includes(upper)) {\n throw new Error(`Invalid HTTP method: ${explicitMethod}. Valid methods: ${VALID_METHODS.join(', ')}`);\n }\n return upper;\n }\n return hasBody ? 'POST' : 'GET';\n}\n\nexport function parseHeaders(headerArgs: string | string[] | undefined): Record<string, string> {\n if (!headerArgs) return {};\n const arr = Array.isArray(headerArgs) ? headerArgs : [headerArgs];\n const result: Record<string, string> = {};\n for (const header of arr) {\n const colonIndex = header.indexOf(':');\n if (colonIndex === -1) continue;\n const key = header.substring(0, colonIndex).trim();\n const value = header.substring(colonIndex + 1).trim();\n if (key) result[key] = value;\n }\n return result;\n}\n\nexport function resolveBody(data?: string, dataRaw?: string): string | undefined {\n if (dataRaw != null) return dataRaw;\n if (data == null) return undefined;\n try {\n return JSON.stringify(JSON.parse(data));\n } catch {\n return data;\n }\n}\n\nexport function isJsonBody(body?: string): boolean {\n if (!body) return false;\n try {\n JSON.parse(body);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function buildFetchOptions(options: CurlRequestOptions): RequestInit {\n const headers = { ...options.headers };\n\n if (options.body && !headers['Content-Type'] && isJsonBody(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n\n const init: RequestInit = {\n method: options.method,\n headers,\n };\n\n if (options.body && options.method !== 'GET' && options.method !== 'HEAD') {\n init.body = options.body;\n }\n\n if (!options.followRedirects) {\n init.redirect = 'manual';\n }\n\n return init;\n}\n\nexport function formatResponseBody(body: string, pretty: boolean): string {\n if (!pretty) return body;\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return body;\n }\n}\n\nexport function rewriteUrlToProxy(originalUrl: string): string {\n const match = originalUrl.match(/^(https?):\\/\\/([^\\/]+)(\\/.*)?$/i);\n if (!match) {\n throw new Error(`Invalid URL: ${originalUrl}`);\n }\n const scheme = match[1];\n const domain = match[2];\n const path = match[3] || '/';\n return `https://proxy.qodalis.com/proxy/${scheme}/${domain}${path}`;\n}\n\nexport function buildCurlEquivalent(\n url: string,\n method: string,\n headers: Record<string, string>,\n body?: string,\n): string {\n const parts = ['curl'];\n if (method !== 'GET') {\n parts.push(`-X ${method}`);\n }\n for (const [key, value] of Object.entries(headers)) {\n parts.push(`-H '${key}: ${value}'`);\n }\n if (body) {\n parts.push(`-d '${body}'`);\n }\n parts.push(`'${url}'`);\n return parts.join(' ');\n}\n\nexport function extractResponseHeaders(response: Response): Record<string, string> {\n const headers: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return headers;\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.13';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n CurlResponse,\n buildCurlEquivalent,\n buildFetchOptions,\n extractResponseHeaders,\n formatResponseBody,\n inferMethod,\n parseHeaders,\n resolveBody,\n rewriteUrlToProxy,\n} from '../utilities';\n\nexport class CliCurlCommandProcessor implements ICliCommandProcessor {\n command = 'curl';\n\n description = 'Make HTTP requests from the terminal. Supports all HTTP methods, custom headers, request bodies, timeouts, and more.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n valueRequired = true;\n\n metadata?: CliProcessorMetadata = {\n icon: '🌐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'defaultTimeout',\n label: 'Default Timeout',\n description: 'Default request timeout in milliseconds',\n type: 'number',\n defaultValue: 30000,\n validator: (v) => ({\n valid: typeof v === 'number' && v >= 1000 && v <= 300000,\n message: 'Must be between 1000 and 300000 ms',\n }),\n },\n {\n key: 'prettyPrint',\n label: 'Pretty-Print JSON',\n description: 'Pretty-print JSON responses by default',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'verbose',\n label: 'Verbose Output',\n description: 'Show request/response headers by default',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n parameters = [\n {\n name: 'request',\n aliases: ['X'],\n type: 'string' as const,\n description: 'HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)',\n required: false,\n },\n {\n name: 'header',\n aliases: ['H'],\n type: 'array' as const,\n description: 'Add header, e.g. -H \\'Content-Type: application/json\\' (repeatable)',\n required: false,\n },\n {\n name: 'data',\n aliases: ['d'],\n type: 'string' as const,\n description: 'Request body (auto-detects JSON, sets method to POST if -X not given)',\n required: false,\n },\n {\n name: 'data-raw',\n type: 'string' as const,\n description: 'Request body sent as-is without JSON parsing',\n required: false,\n },\n {\n name: 'verbose',\n aliases: ['v'],\n type: 'boolean' as const,\n description: 'Show request/response headers and timing',\n required: false,\n },\n {\n name: 'pretty',\n type: 'boolean' as const,\n description: 'Pretty-print JSON response body',\n required: false,\n },\n {\n name: 'timeout',\n type: 'number' as const,\n description: 'Request timeout in milliseconds (default: 30000)',\n required: false,\n defaultValue: '30000',\n },\n {\n name: 'location',\n aliases: ['L'],\n type: 'boolean' as const,\n description: 'Follow redirects (default: true)',\n required: false,\n },\n {\n name: 'proxy',\n type: 'boolean' as const,\n description: 'Route request through proxy.qodalis.com (bypasses CORS)',\n required: false,\n },\n {\n name: 'silent',\n aliases: ['s'],\n type: 'boolean' as const,\n description: 'Only output response body (no status line)',\n required: false,\n },\n ];\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const url = command.value;\n\n if (!url) {\n context.writer.writeError('URL is required. Usage: curl <url> [options]');\n context.process.exit(1);\n return;\n }\n\n const args = command.args;\n const cfgTimeout = getPluginConfigValue(context, 'curl', 'defaultTimeout', 30000);\n const cfgPretty = getPluginConfigValue(context, 'curl', 'prettyPrint', false);\n const cfgVerbose = getPluginConfigValue(context, 'curl', 'verbose', false);\n\n const explicitMethod = args['request'] || args['X'];\n const data = args['data'] || args['d'];\n const dataRaw = args['data-raw'];\n const hasBody = data != null || dataRaw != null;\n const verbose = args['verbose'] != null || args['v'] != null ? (!!args['verbose'] || !!args['v']) : cfgVerbose;\n const pretty = args['pretty'] != null ? !!args['pretty'] : cfgPretty;\n const silent = !!args['silent'] || !!args['s'];\n const useProxy = !!args['proxy'];\n const timeout = parseInt(args['timeout'] || String(cfgTimeout), 10);\n const followRedirects = args['location'] !== false && args['L'] !== false;\n\n let method: string;\n try {\n method = inferMethod(explicitMethod, hasBody);\n } catch (e: any) {\n context.writer.writeError(e.message);\n context.process.exit(1);\n return;\n }\n\n const headers = parseHeaders(args['header'] || args['H']);\n const body = resolveBody(data, dataRaw);\n const requestUrl = useProxy ? rewriteUrlToProxy(url) : url;\n\n const fetchOptions = buildFetchOptions({\n method,\n headers,\n body,\n followRedirects,\n });\n\n if (verbose) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${method} ${url}`, CliForegroundColor.Cyan)}`,\n );\n for (const [key, value] of Object.entries(headers)) {\n context.writer.writeln(\n `> ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n if (body) {\n context.writer.writeln(`> Body: ${body}`);\n }\n context.writer.writeln();\n }\n\n const timeoutController = new AbortController();\n const timeoutId = setTimeout(() => timeoutController.abort(), timeout);\n fetchOptions.signal = timeoutController.signal;\n\n const startTime = performance.now();\n\n try {\n const hostname = (() => { try { return new URL(url).hostname; } catch { return url; } })();\n context.notifier.info(`${method} ${hostname}`);\n const response = await context.http.fetch(requestUrl, fetchOptions);\n const elapsed = Math.round(performance.now() - startTime);\n context.notifier.info(`${method} ${hostname} — ${response.status}`);\n const responseText = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n const curlResponse: CurlResponse = {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n body: responseText,\n timing: elapsed,\n url: response.url,\n redirected: response.redirected,\n };\n\n if (!silent) {\n const statusColor = response.ok ? CliForegroundColor.Green : CliForegroundColor.Red;\n context.writer.writeln(\n context.writer.wrapInColor(\n `HTTP ${response.status} ${response.statusText}`,\n statusColor,\n ),\n );\n }\n\n if (verbose) {\n context.writer.writeln();\n for (const [key, value] of Object.entries(responseHeaders)) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`${key}: ${value}`, CliForegroundColor.Yellow)}`,\n );\n }\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Time: ${elapsed}ms`, CliForegroundColor.Magenta)}`,\n );\n if (response.redirected) {\n context.writer.writeln(\n `< ${context.writer.wrapInColor(`Redirected to: ${response.url}`, CliForegroundColor.Cyan)}`,\n );\n }\n context.writer.writeln();\n }\n\n const formattedBody = formatResponseBody(responseText, pretty);\n if (formattedBody) {\n context.writer.writeln(formattedBody);\n }\n\n if (verbose) {\n context.writer.writeln();\n context.writer.writeInfo('Equivalent curl command:');\n context.writer.writeln(buildCurlEquivalent(url, method, headers, body));\n }\n\n context.process.output(curlResponse);\n } catch (error: any) {\n if (error.name === 'AbortError') {\n if (timeoutController.signal.aborted) {\n context.writer.writeError(`Request timed out after ${timeout}ms`);\n } else {\n context.writer.writeWarning('Request cancelled.');\n }\n } else {\n context.writer.writeError(`Request failed: ${error.message}`);\n }\n context.process.exit(1);\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n\n writer.writeln(this.description!);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Usage:', CliForegroundColor.Yellow));\n writer.writeln(` curl <url> [options]`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Options:', CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('-X, --request <METHOD>', CliForegroundColor.Cyan)} HTTP method (default: GET, or POST if -d given)`);\n writer.writeln(` ${writer.wrapInColor('-H, --header <header>', CliForegroundColor.Cyan)} Add header (repeatable)`);\n writer.writeln(` ${writer.wrapInColor('-d, --data <body>', CliForegroundColor.Cyan)} Request body (auto-detects JSON)`);\n writer.writeln(` ${writer.wrapInColor('--data-raw <body>', CliForegroundColor.Cyan)} Request body as-is`);\n writer.writeln(` ${writer.wrapInColor('-v, --verbose', CliForegroundColor.Cyan)} Show headers and timing`);\n writer.writeln(` ${writer.wrapInColor('--pretty', CliForegroundColor.Cyan)} Pretty-print JSON response`);\n writer.writeln(` ${writer.wrapInColor('--timeout <ms>', CliForegroundColor.Cyan)} Timeout in ms (default: 30000)`);\n writer.writeln(` ${writer.wrapInColor('-L, --location', CliForegroundColor.Cyan)} Follow redirects (default: true)`);\n writer.writeln(` ${writer.wrapInColor('--proxy', CliForegroundColor.Cyan)} Route through CORS proxy`);\n writer.writeln(` ${writer.wrapInColor('-s, --silent', CliForegroundColor.Cyan)} Only output body`);\n writer.writeln();\n\n writer.writeln(writer.wrapInColor('Examples:', CliForegroundColor.Yellow));\n writer.writeln(` curl https://api.example.com/users`);\n writer.writeln(` curl https://api.example.com/users -X POST -d '{\"name\":\"John\"}' -H 'Content-Type: application/json'`);\n writer.writeln(` curl https://api.example.com/users -v --pretty`);\n writer.writeln(` curl https://api.example.com/status -X HEAD`);\n writer.writeln(` curl https://api.example.com/data --proxy --timeout 5000`);\n writer.writeln();\n\n writer.writeWarning('The server must allow CORS for this tool to work. Use --proxy to bypass CORS restrictions.');\n }\n\n async initialize(_context: ICliExecutionContext): Promise<void> {}\n}\n","/*\n * Public API Surface of curl\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-curl-command-processor';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliCurlCommandProcessor } from './lib/processors/cli-curl-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const curlModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-curl',\n processors: [new CliCurlCommandProcessor()],\n translations: {\n es: { 'cli.curl.description': 'Realizar solicitudes HTTP desde la terminal' },\n fr: { 'cli.curl.description': 'Effectuer des requêtes HTTP depuis le terminal' },\n de: { 'cli.curl.description': 'HTTP-Anfragen vom Terminal ausführen' },\n pt: { 'cli.curl.description': 'Fazer requisições HTTP pelo terminal' },\n it: { 'cli.curl.description': 'Eseguire richieste HTTP dal terminale' },\n ja: { 'cli.curl.description': 'ターミナルからHTTPリクエストを実行' },\n ko: { 'cli.curl.description': '터미널에서 HTTP 요청 수행' },\n zh: { 'cli.curl.description': '从终端发送 HTTP 请求' },\n ru: { 'cli.curl.description': 'Выполнение HTTP-запросов из терминала' },\n ro: { 'cli.curl.description': 'Efectuează cereri HTTP din terminal' },\n },\n};\n"]}
@@ -1833,6 +1833,10 @@ var curl = (() => {
1833
1833
  CliForegroundColor2["Reset"] = "\x1B[0m";
1834
1834
  return CliForegroundColor2;
1835
1835
  })(CliForegroundColor || {});
1836
+ function resolveHeaders(provider) {
1837
+ if (!provider) return {};
1838
+ return typeof provider === "function" ? provider() : provider;
1839
+ }
1836
1840
  var DefaultLibraryAuthor = {
1837
1841
  name: "Nicolae Lupei",
1838
1842
  email: "nicolae.lupei@qodalis.com"
@@ -1851,7 +1855,7 @@ var curl = (() => {
1851
1855
  }
1852
1856
  function getPluginConfigValue(context, category, key, defaultValue) {
1853
1857
  try {
1854
- const storeManager = context.services.get(
1858
+ const storeManager = context.services.getRequired(
1855
1859
  "cli-state-store-manager"
1856
1860
  );
1857
1861
  if (!storeManager) return defaultValue;
@@ -1884,9 +1888,12 @@ var curl = (() => {
1884
1888
  * Returns the negotiated API version and the base path for all subsequent calls,
1885
1889
  * or null if the server is unreachable or incompatible.
1886
1890
  */
1887
- static async discover(baseUrl) {
1891
+ static async discover(baseUrl, headers) {
1888
1892
  try {
1889
- const response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`);
1893
+ const resolved = resolveHeaders(headers);
1894
+ const response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {
1895
+ headers: Object.keys(resolved).length > 0 ? resolved : void 0
1896
+ });
1890
1897
  if (!response.ok) return null;
1891
1898
  const info = await response.json();
1892
1899
  const version = this.negotiate(info);
@@ -2718,7 +2725,7 @@ var curl = (() => {
2718
2725
  };
2719
2726
 
2720
2727
  // src/lib/version.ts
2721
- var LIBRARY_VERSION = "2.0.0-beta.11";
2728
+ var LIBRARY_VERSION = "2.0.0-beta.13";
2722
2729
  var API_VERSION2 = 2;
2723
2730
 
2724
2731
  // src/lib/utilities/index.ts
@@ -2983,13 +2990,22 @@ var curl = (() => {
2983
2990
  }
2984
2991
  context.writer.writeln();
2985
2992
  }
2986
- const controller = new AbortController();
2987
- const timeoutId = setTimeout(() => controller.abort(), timeout);
2988
- fetchOptions.signal = controller.signal;
2993
+ const timeoutController = new AbortController();
2994
+ const timeoutId = setTimeout(() => timeoutController.abort(), timeout);
2995
+ fetchOptions.signal = timeoutController.signal;
2989
2996
  const startTime = performance.now();
2990
2997
  try {
2991
- const response = await fetch(requestUrl, fetchOptions);
2998
+ const hostname = (() => {
2999
+ try {
3000
+ return new URL(url).hostname;
3001
+ } catch {
3002
+ return url;
3003
+ }
3004
+ })();
3005
+ context.notifier.info(`${method} ${hostname}`);
3006
+ const response = await context.http.fetch(requestUrl, fetchOptions);
2992
3007
  const elapsed = Math.round(performance.now() - startTime);
3008
+ context.notifier.info(`${method} ${hostname} \u2014 ${response.status}`);
2993
3009
  const responseText = await response.text();
2994
3010
  const responseHeaders = extractResponseHeaders(response);
2995
3011
  const curlResponse = {
@@ -3039,7 +3055,11 @@ var curl = (() => {
3039
3055
  context.process.output(curlResponse);
3040
3056
  } catch (error) {
3041
3057
  if (error.name === "AbortError") {
3042
- context.writer.writeError(`Request timed out after ${timeout}ms`);
3058
+ if (timeoutController.signal.aborted) {
3059
+ context.writer.writeError(`Request timed out after ${timeout}ms`);
3060
+ } else {
3061
+ context.writer.writeWarning("Request cancelled.");
3062
+ }
3043
3063
  } else {
3044
3064
  context.writer.writeError(`Request failed: ${error.message}`);
3045
3065
  }