From 42253a8941f1875ecc101d9790f29c7ed675459b Mon Sep 17 00:00:00 2001 From: Alberto De Agostini Date: Fri, 17 Oct 2025 16:04:51 +0200 Subject: [PATCH 1/3] feat: add support for missing http methods HEAD, OPTIONS, CONNECT, TRACE, QUERY Note that query is being discussed in an RFC, link in code --- src/main.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main.ts b/src/main.ts index 1c28462..d76cb94 100644 --- a/src/main.ts +++ b/src/main.ts @@ -49,7 +49,8 @@ type CurlAdditionalOptions = { }; type CurlRequest = { - method?: "GET" | "get" | "POST" | "post" | "PUT" | "put" | "PATCH" | "patch" | "DELETE" | "delete", + // Query is not official HTTP method, but it's in a RFC and we want to support it. https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-safe-method-w-body + method?: "GET" | "get" | "POST" | "post" | "PUT" | "put" | "PATCH" | "patch" | "DELETE" | "delete" | "HEAD" | "head" | "OPTIONS" | "options" | "CONNECT" | "connect" | "TRACE" | "trace" | "QUERY" | "query", headers?: StringMap, body?: CurlBody, url: string, @@ -72,6 +73,11 @@ const getCurlMethod = function (method?: string): string { PUT: "-X PUT", PATCH: "-X PATCH", DELETE: "-X DELETE", + HEAD: "-X HEAD", + OPTIONS: "-X OPTIONS", + CONNECT: "-X CONNECT", + TRACE: "-X TRACE", + QUERY: "-X QUERY", }; result = ` ${types[method.toUpperCase()]}`; } From 498c266369ab0c996554747ddf7dcf67f08051c4 Mon Sep 17 00:00:00 2001 From: Alberto De Agostini Date: Fri, 17 Oct 2025 16:05:01 +0200 Subject: [PATCH 2/3] chore: update dist --- dist/curl-generator.cjs.js | 5 +++++ dist/curl-generator.esm.js | 5 +++++ dist/curl-generator.umd.js | 5 +++++ dist/main.d.ts | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dist/curl-generator.cjs.js b/dist/curl-generator.cjs.js index 2adb84d..8ec5e0f 100644 --- a/dist/curl-generator.cjs.js +++ b/dist/curl-generator.cjs.js @@ -100,6 +100,11 @@ var getCurlMethod = function (method) { PUT: "-X PUT", PATCH: "-X PATCH", DELETE: "-X DELETE", + HEAD: "-X HEAD", + OPTIONS: "-X OPTIONS", + CONNECT: "-X CONNECT", + TRACE: "-X TRACE", + QUERY: "-X QUERY", }; result = " " + types[method.toUpperCase()]; } diff --git a/dist/curl-generator.esm.js b/dist/curl-generator.esm.js index e78a392..abab80a 100644 --- a/dist/curl-generator.esm.js +++ b/dist/curl-generator.esm.js @@ -96,6 +96,11 @@ var getCurlMethod = function (method) { PUT: "-X PUT", PATCH: "-X PATCH", DELETE: "-X DELETE", + HEAD: "-X HEAD", + OPTIONS: "-X OPTIONS", + CONNECT: "-X CONNECT", + TRACE: "-X TRACE", + QUERY: "-X QUERY", }; result = " " + types[method.toUpperCase()]; } diff --git a/dist/curl-generator.umd.js b/dist/curl-generator.umd.js index a64099c..2e6d7a7 100644 --- a/dist/curl-generator.umd.js +++ b/dist/curl-generator.umd.js @@ -102,6 +102,11 @@ PUT: "-X PUT", PATCH: "-X PATCH", DELETE: "-X DELETE", + HEAD: "-X HEAD", + OPTIONS: "-X OPTIONS", + CONNECT: "-X CONNECT", + TRACE: "-X TRACE", + QUERY: "-X QUERY", }; result = " " + types[method.toUpperCase()]; } diff --git a/dist/main.d.ts b/dist/main.d.ts index 4c4cb2c..10b6974 100644 --- a/dist/main.d.ts +++ b/dist/main.d.ts @@ -48,7 +48,7 @@ declare type CurlAdditionalOptions = { verbose?: boolean; }; declare type CurlRequest = { - method?: "GET" | "get" | "POST" | "post" | "PUT" | "put" | "PATCH" | "patch" | "DELETE" | "delete"; + method?: "GET" | "get" | "POST" | "post" | "PUT" | "put" | "PATCH" | "patch" | "DELETE" | "delete" | "HEAD" | "head" | "OPTIONS" | "options" | "CONNECT" | "connect" | "TRACE" | "trace" | "QUERY" | "query"; headers?: StringMap; body?: CurlBody; url: string; From f2fbe78994ae092e13fb1259514be5672628fcf3 Mon Sep 17 00:00:00 2001 From: Alberto De Agostini Date: Fri, 17 Oct 2025 16:05:04 +0200 Subject: [PATCH 3/3] docs --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0f13ac6..ea6ac63 100644 --- a/README.md +++ b/README.md @@ -33,13 +33,15 @@ Currently the library export just CurlGenerator, and it's a function with just 1 ```js /** * @param {string} url - the request url - * @param {string} [param.method] - a value between ("GET" | "POST" | "PUT" | "PATCH" | "DELETE") it's case insensitive + * @param {string} [param.method] - a value between ("GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS" | "CONNECT" | "TRACE" | "QUERY") it's case insensitive * @param {Object} [param.headers] - an object containing the headers of the request * @param {Object} [body] - the body of the request */ ``` -Example of a more "andvanced" use +**Note:** The QUERY method is not yet an official HTTP standard but is based on an [IETF draft proposal](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-safe-method-w-body). + +Example of a more "advanced" use ```js import {CurlGenerator} from "curl-generator";