@scalar/snippetz 0.7.3 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/dist/clients/index.js +168 -169
  2. package/dist/httpsnippet-lite/helpers/code-builder.js +86 -74
  3. package/dist/httpsnippet-lite/helpers/escape.js +69 -44
  4. package/dist/httpsnippet-lite/helpers/headers.js +17 -14
  5. package/dist/httpsnippet-lite/helpers/reducer.js +1 -1
  6. package/dist/httpsnippet-lite/helpers/shell.js +13 -13
  7. package/dist/httpsnippet-lite/helpers/snippet-request.js +1 -1
  8. package/dist/httpsnippet-lite/helpers/url.js +4 -8
  9. package/dist/httpsnippet-lite/targets/c/libcurl/client.js +69 -67
  10. package/dist/httpsnippet-lite/targets/clojure/clj_http/client.js +165 -154
  11. package/dist/httpsnippet-lite/targets/csharp/restsharp/client.js +35 -38
  12. package/dist/httpsnippet-lite/targets/go/native/client.js +151 -147
  13. package/dist/httpsnippet-lite/targets/java/asynchttp/client.js +32 -35
  14. package/dist/httpsnippet-lite/targets/java/nethttp/client.js +40 -39
  15. package/dist/httpsnippet-lite/targets/java/okhttp/client.js +83 -73
  16. package/dist/httpsnippet-lite/targets/java/unirest/client.js +41 -34
  17. package/dist/httpsnippet-lite/targets/javascript/axios/client.js +81 -76
  18. package/dist/httpsnippet-lite/targets/javascript/jquery/client.js +77 -71
  19. package/dist/httpsnippet-lite/targets/javascript/xhr/client.js +73 -71
  20. package/dist/httpsnippet-lite/targets/kotlin/okhttp/client.js +83 -73
  21. package/dist/httpsnippet-lite/targets/node/axios/client.js +74 -69
  22. package/dist/httpsnippet-lite/targets/objc/helpers.js +52 -33
  23. package/dist/httpsnippet-lite/targets/objc/nsurlsession/client.js +123 -121
  24. package/dist/httpsnippet-lite/targets/ocaml/cohttp/client.js +60 -49
  25. package/dist/httpsnippet-lite/targets/powershell/common.js +46 -56
  26. package/dist/httpsnippet-lite/targets/powershell/restmethod/client.js +9 -13
  27. package/dist/httpsnippet-lite/targets/powershell/webrequest/client.js +9 -13
  28. package/dist/httpsnippet-lite/targets/python/python3/client.js +85 -68
  29. package/dist/httpsnippet-lite/targets/r/httr/client.js +114 -95
  30. package/dist/httpsnippet-lite/targets/ruby/native/client.js +66 -70
  31. package/dist/httpsnippet-lite/targets/shell/httpie/client.js +121 -107
  32. package/dist/httpsnippet-lite/targets/shell/wget/client.js +48 -43
  33. package/dist/httpsnippet-lite/targets/swift/helpers.js +62 -44
  34. package/dist/httpsnippet-lite/targets/swift/nsurlsession/client.js +126 -112
  35. package/dist/httpsnippet-lite/targets/target.js +1 -1
  36. package/dist/index.js +2 -9
  37. package/dist/libs/http.js +68 -56
  38. package/dist/libs/javascript.js +77 -60
  39. package/dist/libs/php.js +59 -49
  40. package/dist/libs/rust.js +60 -33
  41. package/dist/libs/shell.js +14 -5
  42. package/dist/plugins/c/libcurl/index.js +1 -5
  43. package/dist/plugins/c/libcurl/libcurl.js +13 -13
  44. package/dist/plugins/clojure/clj_http/clj_http.js +13 -13
  45. package/dist/plugins/clojure/clj_http/index.js +1 -5
  46. package/dist/plugins/csharp/httpclient/httpclient.js +186 -150
  47. package/dist/plugins/csharp/httpclient/index.js +1 -5
  48. package/dist/plugins/csharp/restsharp/index.js +1 -5
  49. package/dist/plugins/csharp/restsharp/restsharp.js +13 -13
  50. package/dist/plugins/dart/http/http.js +95 -93
  51. package/dist/plugins/dart/http/index.js +1 -5
  52. package/dist/plugins/fsharp/httpclient/httpclient.js +156 -122
  53. package/dist/plugins/fsharp/httpclient/index.js +1 -5
  54. package/dist/plugins/go/native/index.js +1 -5
  55. package/dist/plugins/go/native/native.js +13 -13
  56. package/dist/plugins/http/http11/http11.js +103 -85
  57. package/dist/plugins/http/http11/index.js +1 -5
  58. package/dist/plugins/java/asynchttp/asynchttp.js +13 -13
  59. package/dist/plugins/java/asynchttp/index.js +1 -5
  60. package/dist/plugins/java/nethttp/index.js +1 -5
  61. package/dist/plugins/java/nethttp/nethttp.js +13 -13
  62. package/dist/plugins/java/okhttp/index.js +1 -5
  63. package/dist/plugins/java/okhttp/okhttp.js +13 -13
  64. package/dist/plugins/java/unirest/index.js +1 -5
  65. package/dist/plugins/java/unirest/unirest.js +13 -13
  66. package/dist/plugins/js/axios/axios.js +13 -13
  67. package/dist/plugins/js/axios/index.js +1 -5
  68. package/dist/plugins/js/fetch/fetch.js +82 -68
  69. package/dist/plugins/js/fetch/index.js +1 -5
  70. package/dist/plugins/js/jquery/index.js +1 -5
  71. package/dist/plugins/js/jquery/jquery.js +13 -13
  72. package/dist/plugins/js/ofetch/index.js +1 -5
  73. package/dist/plugins/js/ofetch/ofetch.js +61 -48
  74. package/dist/plugins/js/xhr/index.js +1 -5
  75. package/dist/plugins/js/xhr/xhr.js +13 -13
  76. package/dist/plugins/kotlin/okhttp/index.js +1 -5
  77. package/dist/plugins/kotlin/okhttp/okhttp.js +13 -13
  78. package/dist/plugins/node/axios/axios.js +13 -13
  79. package/dist/plugins/node/axios/index.js +1 -5
  80. package/dist/plugins/node/fetch/fetch.js +86 -74
  81. package/dist/plugins/node/fetch/index.js +1 -5
  82. package/dist/plugins/node/ofetch/index.js +1 -5
  83. package/dist/plugins/node/ofetch/ofetch.js +61 -48
  84. package/dist/plugins/node/undici/index.js +1 -5
  85. package/dist/plugins/node/undici/undici.js +60 -47
  86. package/dist/plugins/objc/nsurlsession/index.js +1 -5
  87. package/dist/plugins/objc/nsurlsession/nsurlsession.js +13 -13
  88. package/dist/plugins/ocaml/cohttp/cohttp.js +13 -13
  89. package/dist/plugins/ocaml/cohttp/index.js +1 -5
  90. package/dist/plugins/php/curl/curl.js +143 -101
  91. package/dist/plugins/php/curl/index.js +1 -5
  92. package/dist/plugins/php/guzzle/guzzle.js +103 -83
  93. package/dist/plugins/php/guzzle/index.js +1 -5
  94. package/dist/plugins/powershell/restmethod/index.js +1 -5
  95. package/dist/plugins/powershell/restmethod/restmethod.js +13 -13
  96. package/dist/plugins/powershell/webrequest/index.js +1 -5
  97. package/dist/plugins/powershell/webrequest/webrequest.js +13 -13
  98. package/dist/plugins/python/httpx/async.js +17 -15
  99. package/dist/plugins/python/httpx/index.js +2 -7
  100. package/dist/plugins/python/httpx/sync.js +11 -12
  101. package/dist/plugins/python/python3/index.js +1 -5
  102. package/dist/plugins/python/python3/python3.js +13 -13
  103. package/dist/plugins/python/requests/index.js +1 -5
  104. package/dist/plugins/python/requests/requests.js +11 -12
  105. package/dist/plugins/python/requestsLike.js +128 -112
  106. package/dist/plugins/r/httr/httr.js +13 -13
  107. package/dist/plugins/r/httr/index.js +1 -5
  108. package/dist/plugins/ruby/native/index.js +1 -5
  109. package/dist/plugins/ruby/native/native.js +13 -13
  110. package/dist/plugins/rust/reqwest/index.js +1 -5
  111. package/dist/plugins/rust/reqwest/reqwest.js +110 -83
  112. package/dist/plugins/shell/curl/curl.js +128 -97
  113. package/dist/plugins/shell/curl/index.js +1 -5
  114. package/dist/plugins/shell/httpie/httpie.js +13 -13
  115. package/dist/plugins/shell/httpie/index.js +1 -5
  116. package/dist/plugins/shell/wget/index.js +1 -5
  117. package/dist/plugins/shell/wget/wget.js +13 -13
  118. package/dist/plugins/swift/nsurlsession/index.js +1 -5
  119. package/dist/plugins/swift/nsurlsession/nsurlsession.js +13 -13
  120. package/dist/snippetz.js +25 -28
  121. package/dist/utils/convertWithHttpSnippetLite.js +100 -96
  122. package/dist/utils/index.js +1 -5
  123. package/package.json +8 -12
  124. package/dist/clients/index.js.map +0 -7
  125. package/dist/httpsnippet-lite/helpers/code-builder.js.map +0 -7
  126. package/dist/httpsnippet-lite/helpers/escape.js.map +0 -7
  127. package/dist/httpsnippet-lite/helpers/headers.js.map +0 -7
  128. package/dist/httpsnippet-lite/helpers/reducer.js.map +0 -7
  129. package/dist/httpsnippet-lite/helpers/shell.js.map +0 -7
  130. package/dist/httpsnippet-lite/helpers/snippet-request.js.map +0 -7
  131. package/dist/httpsnippet-lite/helpers/url.js.map +0 -7
  132. package/dist/httpsnippet-lite/targets/c/libcurl/client.js.map +0 -7
  133. package/dist/httpsnippet-lite/targets/clojure/clj_http/client.js.map +0 -7
  134. package/dist/httpsnippet-lite/targets/csharp/restsharp/client.js.map +0 -7
  135. package/dist/httpsnippet-lite/targets/go/native/client.js.map +0 -7
  136. package/dist/httpsnippet-lite/targets/java/asynchttp/client.js.map +0 -7
  137. package/dist/httpsnippet-lite/targets/java/nethttp/client.js.map +0 -7
  138. package/dist/httpsnippet-lite/targets/java/okhttp/client.js.map +0 -7
  139. package/dist/httpsnippet-lite/targets/java/unirest/client.js.map +0 -7
  140. package/dist/httpsnippet-lite/targets/javascript/axios/client.js.map +0 -7
  141. package/dist/httpsnippet-lite/targets/javascript/jquery/client.js.map +0 -7
  142. package/dist/httpsnippet-lite/targets/javascript/xhr/client.js.map +0 -7
  143. package/dist/httpsnippet-lite/targets/kotlin/okhttp/client.js.map +0 -7
  144. package/dist/httpsnippet-lite/targets/node/axios/client.js.map +0 -7
  145. package/dist/httpsnippet-lite/targets/objc/helpers.js.map +0 -7
  146. package/dist/httpsnippet-lite/targets/objc/nsurlsession/client.js.map +0 -7
  147. package/dist/httpsnippet-lite/targets/ocaml/cohttp/client.js.map +0 -7
  148. package/dist/httpsnippet-lite/targets/powershell/common.js.map +0 -7
  149. package/dist/httpsnippet-lite/targets/powershell/restmethod/client.js.map +0 -7
  150. package/dist/httpsnippet-lite/targets/powershell/webrequest/client.js.map +0 -7
  151. package/dist/httpsnippet-lite/targets/python/python3/client.js.map +0 -7
  152. package/dist/httpsnippet-lite/targets/r/httr/client.js.map +0 -7
  153. package/dist/httpsnippet-lite/targets/ruby/native/client.js.map +0 -7
  154. package/dist/httpsnippet-lite/targets/shell/httpie/client.js.map +0 -7
  155. package/dist/httpsnippet-lite/targets/shell/wget/client.js.map +0 -7
  156. package/dist/httpsnippet-lite/targets/swift/helpers.js.map +0 -7
  157. package/dist/httpsnippet-lite/targets/swift/nsurlsession/client.js.map +0 -7
  158. package/dist/httpsnippet-lite/targets/target.js.map +0 -7
  159. package/dist/index.js.map +0 -7
  160. package/dist/libs/http.js.map +0 -7
  161. package/dist/libs/javascript.js.map +0 -7
  162. package/dist/libs/php.js.map +0 -7
  163. package/dist/libs/rust.js.map +0 -7
  164. package/dist/libs/shell.js.map +0 -7
  165. package/dist/plugins/c/libcurl/index.js.map +0 -7
  166. package/dist/plugins/c/libcurl/libcurl.js.map +0 -7
  167. package/dist/plugins/clojure/clj_http/clj_http.js.map +0 -7
  168. package/dist/plugins/clojure/clj_http/index.js.map +0 -7
  169. package/dist/plugins/csharp/httpclient/httpclient.js.map +0 -7
  170. package/dist/plugins/csharp/httpclient/index.js.map +0 -7
  171. package/dist/plugins/csharp/restsharp/index.js.map +0 -7
  172. package/dist/plugins/csharp/restsharp/restsharp.js.map +0 -7
  173. package/dist/plugins/dart/http/http.js.map +0 -7
  174. package/dist/plugins/dart/http/index.js.map +0 -7
  175. package/dist/plugins/fsharp/httpclient/httpclient.js.map +0 -7
  176. package/dist/plugins/fsharp/httpclient/index.js.map +0 -7
  177. package/dist/plugins/go/native/index.js.map +0 -7
  178. package/dist/plugins/go/native/native.js.map +0 -7
  179. package/dist/plugins/http/http11/http11.js.map +0 -7
  180. package/dist/plugins/http/http11/index.js.map +0 -7
  181. package/dist/plugins/java/asynchttp/asynchttp.js.map +0 -7
  182. package/dist/plugins/java/asynchttp/index.js.map +0 -7
  183. package/dist/plugins/java/nethttp/index.js.map +0 -7
  184. package/dist/plugins/java/nethttp/nethttp.js.map +0 -7
  185. package/dist/plugins/java/okhttp/index.js.map +0 -7
  186. package/dist/plugins/java/okhttp/okhttp.js.map +0 -7
  187. package/dist/plugins/java/unirest/index.js.map +0 -7
  188. package/dist/plugins/java/unirest/unirest.js.map +0 -7
  189. package/dist/plugins/js/axios/axios.js.map +0 -7
  190. package/dist/plugins/js/axios/index.js.map +0 -7
  191. package/dist/plugins/js/fetch/fetch.js.map +0 -7
  192. package/dist/plugins/js/fetch/index.js.map +0 -7
  193. package/dist/plugins/js/jquery/index.js.map +0 -7
  194. package/dist/plugins/js/jquery/jquery.js.map +0 -7
  195. package/dist/plugins/js/ofetch/index.js.map +0 -7
  196. package/dist/plugins/js/ofetch/ofetch.js.map +0 -7
  197. package/dist/plugins/js/xhr/index.js.map +0 -7
  198. package/dist/plugins/js/xhr/xhr.js.map +0 -7
  199. package/dist/plugins/kotlin/okhttp/index.js.map +0 -7
  200. package/dist/plugins/kotlin/okhttp/okhttp.js.map +0 -7
  201. package/dist/plugins/node/axios/axios.js.map +0 -7
  202. package/dist/plugins/node/axios/index.js.map +0 -7
  203. package/dist/plugins/node/fetch/fetch.js.map +0 -7
  204. package/dist/plugins/node/fetch/index.js.map +0 -7
  205. package/dist/plugins/node/ofetch/index.js.map +0 -7
  206. package/dist/plugins/node/ofetch/ofetch.js.map +0 -7
  207. package/dist/plugins/node/undici/index.js.map +0 -7
  208. package/dist/plugins/node/undici/undici.js.map +0 -7
  209. package/dist/plugins/objc/nsurlsession/index.js.map +0 -7
  210. package/dist/plugins/objc/nsurlsession/nsurlsession.js.map +0 -7
  211. package/dist/plugins/ocaml/cohttp/cohttp.js.map +0 -7
  212. package/dist/plugins/ocaml/cohttp/index.js.map +0 -7
  213. package/dist/plugins/php/curl/curl.js.map +0 -7
  214. package/dist/plugins/php/curl/index.js.map +0 -7
  215. package/dist/plugins/php/guzzle/guzzle.js.map +0 -7
  216. package/dist/plugins/php/guzzle/index.js.map +0 -7
  217. package/dist/plugins/powershell/restmethod/index.js.map +0 -7
  218. package/dist/plugins/powershell/restmethod/restmethod.js.map +0 -7
  219. package/dist/plugins/powershell/webrequest/index.js.map +0 -7
  220. package/dist/plugins/powershell/webrequest/webrequest.js.map +0 -7
  221. package/dist/plugins/python/httpx/async.js.map +0 -7
  222. package/dist/plugins/python/httpx/index.js.map +0 -7
  223. package/dist/plugins/python/httpx/sync.js.map +0 -7
  224. package/dist/plugins/python/python3/index.js.map +0 -7
  225. package/dist/plugins/python/python3/python3.js.map +0 -7
  226. package/dist/plugins/python/requests/index.js.map +0 -7
  227. package/dist/plugins/python/requests/requests.js.map +0 -7
  228. package/dist/plugins/python/requestsLike.js.map +0 -7
  229. package/dist/plugins/r/httr/httr.js.map +0 -7
  230. package/dist/plugins/r/httr/index.js.map +0 -7
  231. package/dist/plugins/ruby/native/index.js.map +0 -7
  232. package/dist/plugins/ruby/native/native.js.map +0 -7
  233. package/dist/plugins/rust/reqwest/index.js.map +0 -7
  234. package/dist/plugins/rust/reqwest/reqwest.js.map +0 -7
  235. package/dist/plugins/shell/curl/curl.js.map +0 -7
  236. package/dist/plugins/shell/curl/index.js.map +0 -7
  237. package/dist/plugins/shell/httpie/httpie.js.map +0 -7
  238. package/dist/plugins/shell/httpie/index.js.map +0 -7
  239. package/dist/plugins/shell/wget/index.js.map +0 -7
  240. package/dist/plugins/shell/wget/wget.js.map +0 -7
  241. package/dist/plugins/swift/nsurlsession/index.js.map +0 -7
  242. package/dist/plugins/swift/nsurlsession/nsurlsession.js.map +0 -7
  243. package/dist/snippetz.js.map +0 -7
  244. package/dist/utils/convertWithHttpSnippetLite.js.map +0 -7
  245. package/dist/utils/index.js.map +0 -7
@@ -1,148 +1,182 @@
1
- const fsharpHttpclient = {
2
- target: "fsharp",
3
- client: "httpclient",
4
- title: "HttpClient",
5
- generate: (request, _) => {
6
- if (!request) {
7
- return "";
8
- }
9
- const finalUrl = buildUrlWithQueryString(request.url, request.queryString);
10
- let code = "";
11
- code += generateHttpRequestMessage(request.method, finalUrl);
12
- if (request.headers && request.headers.length > 0) {
13
- code += generateHeadersCode(request.headers);
14
- }
15
- if (request.postData) {
16
- code += generatePostDataCode(request.postData);
17
- }
18
- if (request.cookies && request.cookies.length > 0 && request.url) {
19
- code += generateCookiesCode(request.cookies, request.url);
20
- code += "let client = new HttpClient(handler)\n";
21
- } else {
22
- code += "let client = new HttpClient()\n";
23
- }
24
- code += "let! result = client.SendAsync(httpRequestMessage)\n";
25
- return code;
26
- }
1
+ /**
2
+ * F# HttpClient plugin for generating HTTP request code
3
+ */
4
+ export const fsharpHttpclient = {
5
+ target: 'fsharp',
6
+ client: 'httpclient',
7
+ title: 'HttpClient',
8
+ generate: (request, _) => {
9
+ if (!request) {
10
+ return '';
11
+ }
12
+ const finalUrl = buildUrlWithQueryString(request.url, request.queryString);
13
+ let code = '';
14
+ // Initialize HttpRequestMessage
15
+ code += generateHttpRequestMessage(request.method, finalUrl);
16
+ // Add headers if present
17
+ if (request.headers && request.headers.length > 0) {
18
+ code += generateHeadersCode(request.headers);
19
+ }
20
+ // Add request body if present
21
+ if (request.postData) {
22
+ code += generatePostDataCode(request.postData);
23
+ }
24
+ // Configure client with cookies if present
25
+ if (request.cookies && request.cookies.length > 0 && request.url) {
26
+ code += generateCookiesCode(request.cookies, request.url);
27
+ code += 'let client = new HttpClient(handler)\n';
28
+ }
29
+ else {
30
+ code += 'let client = new HttpClient()\n';
31
+ }
32
+ // Send the request
33
+ code += 'let! result = client.SendAsync(httpRequestMessage)\n';
34
+ return code;
35
+ },
27
36
  };
37
+ /**
38
+ * Builds a query string from an array of query parameters
39
+ */
28
40
  function buildQueryString(queryParams) {
29
- if (!queryParams || queryParams.length === 0) {
30
- return "";
31
- }
32
- const params = queryParams.map((param) => `${param.name}=${param.value}`);
33
- return "?" + params.join("&");
41
+ if (!queryParams || queryParams.length === 0) {
42
+ return '';
43
+ }
44
+ const params = queryParams.map((param) => `${param.name}=${param.value}`);
45
+ return '?' + params.join('&');
34
46
  }
47
+ /**
48
+ * Combines base URL with query string if present
49
+ */
35
50
  function buildUrlWithQueryString(baseUrl, queryParams) {
36
- if (!baseUrl) {
37
- return "";
38
- }
39
- if (!queryParams || queryParams.length === 0) {
40
- return baseUrl;
41
- }
42
- return baseUrl + buildQueryString(queryParams);
51
+ if (!baseUrl) {
52
+ return '';
53
+ }
54
+ if (!queryParams || queryParams.length === 0) {
55
+ return baseUrl;
56
+ }
57
+ return baseUrl + buildQueryString(queryParams);
43
58
  }
59
+ /**
60
+ * Generates the HttpRequestMessage initialization code
61
+ */
44
62
  function generateHttpRequestMessage(method, url) {
45
- return `let httpRequestMessage = new HttpRequestMessage(
63
+ return `let httpRequestMessage = new HttpRequestMessage(
46
64
  HttpMethod("${method}"),
47
65
  new Uri("${escapeString(url)}")
48
- )
49
-
50
- `;
66
+ )\n\n`;
51
67
  }
68
+ /**
69
+ * Generates code to add headers to the HttpRequestMessage
70
+ */
52
71
  function generateHeadersCode(headers) {
53
- let code = "";
54
- for (const header of headers) {
55
- code += `httpRequestMessage.Headers.Add("${escapeString(header.name ?? "")}", "${escapeString(header.value ?? "")}")
56
- `;
57
- }
58
- code += "\n";
59
- return code;
72
+ let code = '';
73
+ for (const header of headers) {
74
+ code += `httpRequestMessage.Headers.Add("${escapeString(header.name ?? '')}", "${escapeString(header.value ?? '')}")\n`;
75
+ }
76
+ code += '\n';
77
+ return code;
60
78
  }
79
+ /**
80
+ * Generates code to configure cookies for the HttpClient
81
+ */
61
82
  function generateCookiesCode(cookies, url) {
62
- let code = "let cookieContainer = CookieContainer()\n";
63
- for (const cookie of cookies) {
64
- code += `cookieContainer.Add(Uri("${escapeString(url)}"), Cookie("${escapeString(cookie.name ?? "")}", "${escapeString(cookie.value ?? "")}"))
65
- `;
66
- }
67
- code += "use handler = new HttpClientHandler()\n";
68
- code += "handler.CookieContainer <- cookieContainer\n\n";
69
- return code;
83
+ let code = 'let cookieContainer = CookieContainer()\n';
84
+ for (const cookie of cookies) {
85
+ code += `cookieContainer.Add(Uri("${escapeString(url)}"), Cookie("${escapeString(cookie.name ?? '')}", "${escapeString(cookie.value ?? '')}"))\n`;
86
+ }
87
+ code += 'use handler = new HttpClientHandler()\n';
88
+ code += 'handler.CookieContainer <- cookieContainer\n\n';
89
+ return code;
70
90
  }
91
+ /**
92
+ * Generates code to set the request content based on postData
93
+ */
71
94
  function generatePostDataCode(postData) {
72
- if (!postData) {
73
- return "";
74
- }
75
- let code = "";
76
- switch (postData.mimeType) {
77
- case "multipart/form-data":
78
- code += generateMultipartFormDataCode(postData);
79
- break;
80
- case "application/x-www-form-urlencoded":
81
- code += generateUrlEncodedFormDataCode(postData);
82
- break;
83
- case "application/json":
84
- code += generateJsonContentCode(postData);
85
- break;
86
- default:
87
- code += generateGenericContentCode(postData, postData.mimeType);
88
- break;
89
- }
90
- code += "httpRequestMessage.Content <- content\n\n";
91
- return code;
95
+ if (!postData) {
96
+ return '';
97
+ }
98
+ let code = '';
99
+ switch (postData.mimeType) {
100
+ case 'multipart/form-data':
101
+ code += generateMultipartFormDataCode(postData);
102
+ break;
103
+ case 'application/x-www-form-urlencoded':
104
+ code += generateUrlEncodedFormDataCode(postData);
105
+ break;
106
+ case 'application/json':
107
+ code += generateJsonContentCode(postData);
108
+ break;
109
+ default:
110
+ code += generateGenericContentCode(postData, postData.mimeType);
111
+ break;
112
+ }
113
+ code += 'httpRequestMessage.Content <- content\n\n';
114
+ return code;
92
115
  }
116
+ /**
117
+ * Generates code for generic content types
118
+ */
93
119
  function generateGenericContentCode(postData, contentType) {
94
- let code = `let content = new StringContent("${escapeString(postData.text ?? "")}", Encoding.UTF8, "${escapeString(contentType ?? "")}")
95
- `;
96
- code += `content.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(contentType ?? "")}")
97
- `;
98
- return code;
120
+ let code = `let content = new StringContent("${escapeString(postData.text ?? '')}", Encoding.UTF8, "${escapeString(contentType ?? '')}")\n`;
121
+ code += `content.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(contentType ?? '')}")\n`;
122
+ return code;
99
123
  }
124
+ /**
125
+ * Generates code for multipart/form-data content
126
+ */
100
127
  function generateMultipartFormDataCode(postData) {
101
- let code = "let content = new MultipartFormDataContent()\n";
102
- let fileIndex = 0;
103
- for (const param of postData.params) {
104
- if (param.value === "BINARY") {
105
- const escapedFileName = escapeString(param.fileName ?? "");
106
- code += `let fileStreamContent_${fileIndex} = new StreamContent(File.OpenRead("${escapedFileName}"))
107
- `;
108
- code += `fileStreamContent_${fileIndex}.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(param.contentType ?? "")}")
109
- `;
110
- code += `content.Add(fileStreamContent_${fileIndex}, "${escapedFileName}", "${escapedFileName}")
111
- `;
112
- fileIndex++;
113
- } else {
114
- code += `content.Add(new StringContent("${escapeString(param.value ?? "")}"), "${escapeString(param.name ?? "")}")
115
- `;
128
+ let code = 'let content = new MultipartFormDataContent()\n';
129
+ let fileIndex = 0;
130
+ for (const param of postData.params) {
131
+ if (param.value === 'BINARY') {
132
+ const escapedFileName = escapeString(param.fileName ?? '');
133
+ code += `let fileStreamContent_${fileIndex} = new StreamContent(File.OpenRead("${escapedFileName}"))\n`;
134
+ code += `fileStreamContent_${fileIndex}.Headers.ContentType <- MediaTypeHeaderValue("${escapeString(param.contentType ?? '')}")\n`;
135
+ code += `content.Add(fileStreamContent_${fileIndex}, "${escapedFileName}", "${escapedFileName}")\n`;
136
+ fileIndex++;
137
+ }
138
+ else {
139
+ code += `content.Add(new StringContent("${escapeString(param.value ?? '')}"), "${escapeString(param.name ?? '')}")\n`;
140
+ }
116
141
  }
117
- }
118
- return code;
142
+ return code;
119
143
  }
144
+ /**
145
+ * Generates code for JSON content
146
+ */
120
147
  function generateJsonContentCode(postData) {
121
- let prettyJson;
122
- try {
123
- prettyJson = JSON.stringify(JSON.parse(postData.text ?? "{}"), null, 2);
124
- } catch {
125
- prettyJson = postData.text ?? "{}";
126
- }
127
- return `let content = new StringContent("""${prettyJson}""", Encoding.UTF8, "application/json")
128
- `;
148
+ let prettyJson;
149
+ try {
150
+ prettyJson = JSON.stringify(JSON.parse(postData.text ?? '{}'), null, 2);
151
+ }
152
+ catch {
153
+ // If JSON parsing fails, use the raw text as-is
154
+ prettyJson = postData.text ?? '{}';
155
+ }
156
+ return `let content = new StringContent("""${prettyJson}""", Encoding.UTF8, "application/json")\n`;
129
157
  }
158
+ /**
159
+ * Generates code for application/x-www-form-urlencoded content
160
+ */
130
161
  function generateUrlEncodedFormDataCode(postData) {
131
- let code = "let formUrlEncodedContentDictionary = new Dictionary<string, string>()\n";
132
- for (const param of postData.params) {
133
- code += `formUrlEncodedContentDictionary.Add("${escapeString(param.name ?? "")}", "${escapeString(param.value ?? "")}")
134
- `;
135
- }
136
- code += "let content = new FormUrlEncodedContent(formUrlEncodedContentDictionary)\n";
137
- return code;
162
+ let code = 'let formUrlEncodedContentDictionary = new Dictionary<string, string>()\n';
163
+ for (const param of postData.params) {
164
+ code += `formUrlEncodedContentDictionary.Add("${escapeString(param.name ?? '')}", "${escapeString(param.value ?? '')}")\n`;
165
+ }
166
+ code += 'let content = new FormUrlEncodedContent(formUrlEncodedContentDictionary)\n';
167
+ return code;
138
168
  }
169
+ /**
170
+ * Escapes special characters for F# string literals
171
+ */
139
172
  function escapeString(str) {
140
- if (str == null) {
141
- return "";
142
- }
143
- return str.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t");
173
+ if (str == null) {
174
+ return '';
175
+ }
176
+ return str
177
+ .replace(/\\/g, '\\\\') // Escape backslashes
178
+ .replace(/"/g, '\\"') // Escape double quotes
179
+ .replace(/\n/g, '\\n') // Escape newlines
180
+ .replace(/\r/g, '\\r') // Escape carriage returns
181
+ .replace(/\t/g, '\\t'); // Escape tabs
144
182
  }
145
- export {
146
- fsharpHttpclient
147
- };
148
- //# sourceMappingURL=httpclient.js.map
@@ -1,5 +1 @@
1
- import { fsharpHttpclient } from "./httpclient.js";
2
- export {
3
- fsharpHttpclient
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { fsharpHttpclient } from './httpclient.js';
@@ -1,5 +1 @@
1
- import { goNative } from "./native.js";
2
- export {
3
- goNative
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { goNative } from './native.js';
@@ -1,14 +1,14 @@
1
- import { native } from "../../../httpsnippet-lite/targets/go/native/client.js";
2
- import { convertWithHttpSnippetLite } from "../../../utils/convertWithHttpSnippetLite.js";
3
- const goNative = {
4
- target: "go",
5
- client: "native",
6
- title: "NewRequest",
7
- generate(request) {
8
- return convertWithHttpSnippetLite(native, request);
9
- }
1
+ import { native } from '../../../httpsnippet-lite/targets/go/native/client.js';
2
+ import { convertWithHttpSnippetLite } from '../../../utils/convertWithHttpSnippetLite.js';
3
+ /**
4
+ * go/native
5
+ */
6
+ export const goNative = {
7
+ target: 'go',
8
+ client: 'native',
9
+ title: 'NewRequest',
10
+ generate(request) {
11
+ // TODO: Write an own converter
12
+ return convertWithHttpSnippetLite(native, request);
13
+ },
10
14
  };
11
- export {
12
- goNative
13
- };
14
- //# sourceMappingURL=native.js.map
@@ -1,86 +1,104 @@
1
- const httpHttp11 = {
2
- target: "http",
3
- client: "http1.1",
4
- title: "HTTP/1.1",
5
- generate(request) {
6
- const normalizedRequest = {
7
- method: "GET",
8
- headers: [],
9
- queryString: [],
10
- ...request
11
- };
12
- normalizedRequest.method = normalizedRequest.method.toUpperCase();
13
- let url;
14
- let path;
15
- try {
16
- url = new URL(normalizedRequest.url || "http://");
17
- path = url.pathname + (url.search || "");
18
- } catch (_error) {
19
- path = normalizedRequest.url || "/";
20
- }
21
- const hostname = url?.hostname || "UNKNOWN_HOSTNAME";
22
- let requestString = `${normalizedRequest.method} ${path} HTTP/1.1\r
23
- `;
24
- if (normalizedRequest.queryString.length) {
25
- const queryString = normalizedRequest.queryString.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`).join("&");
26
- requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r
27
- `;
28
- }
29
- const headers = /* @__PURE__ */ new Map();
30
- headers.set("Host", hostname);
31
- normalizedRequest.headers.forEach((header) => {
32
- if (headers.has(header.name)) {
33
- headers.set(header.name, `${headers.get(header.name)}, ${header.value}`);
34
- } else {
35
- headers.set(header.name, header.value);
36
- }
37
- });
38
- if (normalizedRequest.queryString.length) {
39
- const queryString = normalizedRequest.queryString.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`).join("&");
40
- requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r
41
- `;
42
- }
43
- let body = "";
44
- if (normalizedRequest.postData) {
45
- if (normalizedRequest.postData.mimeType === "application/json" && normalizedRequest.postData.text) {
46
- headers.set("Content-Type", "application/json");
47
- body = normalizedRequest.postData.text;
48
- } else if (normalizedRequest.postData.mimeType === "application/octet-stream" && normalizedRequest.postData.text) {
49
- headers.set("Content-Type", "application/octet-stream");
50
- body = normalizedRequest.postData.text;
51
- } else if (normalizedRequest.postData.mimeType === "application/x-www-form-urlencoded" && normalizedRequest.postData.params) {
52
- const formData = normalizedRequest.postData.params.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value ?? "")}`).join("&");
53
- headers.set("Content-Type", "application/x-www-form-urlencoded");
54
- body = formData;
55
- } else if (normalizedRequest.postData.mimeType === "multipart/form-data" && normalizedRequest.postData.params) {
56
- const boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
57
- headers.set("Content-Type", `multipart/form-data; boundary=${boundary}`);
58
- body = normalizedRequest.postData.params.map((param) => {
59
- if (param.fileName) {
60
- return `--${boundary}\r
61
- Content-Disposition: form-data; name="${param.name}"; filename="${param.fileName}"\r
62
- \r
63
- `;
64
- }
65
- return `--${boundary}\r
66
- Content-Disposition: form-data; name="${param.name}"\r
67
- \r
68
- ${param.value}\r
69
- `;
70
- }).join("") + `--${boundary}--\r
71
- `;
72
- }
73
- }
74
- headers.forEach((value, name) => {
75
- requestString += `${name}: ${value}\r
76
- `;
77
- });
78
- requestString += `\r
79
- ${body}`;
80
- return requestString;
81
- }
1
+ /**
2
+ * http/http1.1
3
+ */
4
+ export const httpHttp11 = {
5
+ target: 'http',
6
+ client: 'http1.1',
7
+ title: 'HTTP/1.1',
8
+ generate(request) {
9
+ // Defaults
10
+ const normalizedRequest = {
11
+ method: 'GET',
12
+ headers: [],
13
+ queryString: [],
14
+ ...request,
15
+ };
16
+ // Normalize method
17
+ normalizedRequest.method = normalizedRequest.method.toUpperCase();
18
+ // Parse URL with error handling
19
+ let url;
20
+ let path;
21
+ try {
22
+ url = new URL(normalizedRequest.url || 'http://');
23
+ path = url.pathname + (url.search || '');
24
+ }
25
+ catch (_error) {
26
+ // Oops, got an invalid URL, use the provided URL directly.
27
+ path = normalizedRequest.url || '/';
28
+ }
29
+ const hostname = url?.hostname || 'UNKNOWN_HOSTNAME';
30
+ // Start building the request
31
+ let requestString = `${normalizedRequest.method} ${path} HTTP/1.1\r\n`;
32
+ // Handle query string parameters
33
+ if (normalizedRequest.queryString.length) {
34
+ const queryString = normalizedRequest.queryString
35
+ .map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`)
36
+ .join('&');
37
+ // Append query string to the path
38
+ requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r\n`;
39
+ }
40
+ // Store all headers
41
+ const headers = new Map();
42
+ // Host header
43
+ headers.set('Host', hostname);
44
+ // Passed headers
45
+ normalizedRequest.headers.forEach((header) => {
46
+ if (headers.has(header.name)) {
47
+ headers.set(header.name, `${headers.get(header.name)}, ${header.value}`);
48
+ }
49
+ else {
50
+ headers.set(header.name, header.value);
51
+ }
52
+ });
53
+ // Query string parameters
54
+ if (normalizedRequest.queryString.length) {
55
+ const queryString = normalizedRequest.queryString
56
+ .map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`)
57
+ .join('&');
58
+ // Append query string to the path
59
+ requestString = `${normalizedRequest.method} ${path}?${queryString} HTTP/1.1\r\n`;
60
+ }
61
+ // Request body
62
+ let body = '';
63
+ if (normalizedRequest.postData) {
64
+ // Always set the Content-Type header based on postData.mimeType
65
+ if (normalizedRequest.postData.mimeType === 'application/json' && normalizedRequest.postData.text) {
66
+ headers.set('Content-Type', 'application/json');
67
+ body = normalizedRequest.postData.text;
68
+ }
69
+ else if (normalizedRequest.postData.mimeType === 'application/octet-stream' &&
70
+ normalizedRequest.postData.text) {
71
+ headers.set('Content-Type', 'application/octet-stream');
72
+ body = normalizedRequest.postData.text;
73
+ }
74
+ else if (normalizedRequest.postData.mimeType === 'application/x-www-form-urlencoded' &&
75
+ normalizedRequest.postData.params) {
76
+ const formData = normalizedRequest.postData.params
77
+ .map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value ?? '')}`)
78
+ .join('&');
79
+ headers.set('Content-Type', 'application/x-www-form-urlencoded');
80
+ body = formData;
81
+ }
82
+ else if (normalizedRequest.postData.mimeType === 'multipart/form-data' && normalizedRequest.postData.params) {
83
+ const boundary = '----WebKitFormBoundary7MA4YWxkTrZu0gW';
84
+ headers.set('Content-Type', `multipart/form-data; boundary=${boundary}`);
85
+ body =
86
+ normalizedRequest.postData.params
87
+ .map((param) => {
88
+ if (param.fileName) {
89
+ return `--${boundary}\r\nContent-Disposition: form-data; name="${param.name}"; filename="${param.fileName}"\r\n\r\n`;
90
+ }
91
+ return `--${boundary}\r\nContent-Disposition: form-data; name="${param.name}"\r\n\r\n${param.value}\r\n`;
92
+ })
93
+ .join('') + `--${boundary}--\r\n`;
94
+ }
95
+ }
96
+ // Add headers to requestString
97
+ headers.forEach((value, name) => {
98
+ requestString += `${name}: ${value}\r\n`;
99
+ });
100
+ // Add body to requestString
101
+ requestString += `\r\n${body}`;
102
+ return requestString;
103
+ },
82
104
  };
83
- export {
84
- httpHttp11
85
- };
86
- //# sourceMappingURL=http11.js.map
@@ -1,5 +1 @@
1
- import { httpHttp11 } from "./http11.js";
2
- export {
3
- httpHttp11
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { httpHttp11 } from './http11.js';
@@ -1,14 +1,14 @@
1
- import { asynchttp } from "../../../httpsnippet-lite/targets/java/asynchttp/client.js";
2
- import { convertWithHttpSnippetLite } from "../../../utils/convertWithHttpSnippetLite.js";
3
- const javaAsynchttp = {
4
- target: "java",
5
- client: "asynchttp",
6
- title: "AsyncHttp",
7
- generate(request) {
8
- return convertWithHttpSnippetLite(asynchttp, request);
9
- }
1
+ import { asynchttp } from '../../../httpsnippet-lite/targets/java/asynchttp/client.js';
2
+ import { convertWithHttpSnippetLite } from '../../../utils/convertWithHttpSnippetLite.js';
3
+ /**
4
+ * java/asynchttp
5
+ */
6
+ export const javaAsynchttp = {
7
+ target: 'java',
8
+ client: 'asynchttp',
9
+ title: 'AsyncHttp',
10
+ generate(request) {
11
+ // TODO: Write an own converter
12
+ return convertWithHttpSnippetLite(asynchttp, request);
13
+ },
10
14
  };
11
- export {
12
- javaAsynchttp
13
- };
14
- //# sourceMappingURL=asynchttp.js.map
@@ -1,5 +1 @@
1
- import { javaAsynchttp } from "./asynchttp.js";
2
- export {
3
- javaAsynchttp
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { javaAsynchttp } from './asynchttp.js';
@@ -1,5 +1 @@
1
- import { javaNethttp } from "./nethttp.js";
2
- export {
3
- javaNethttp
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { javaNethttp } from './nethttp.js';
@@ -1,14 +1,14 @@
1
- import { nethttp } from "../../../httpsnippet-lite/targets/java/nethttp/client.js";
2
- import { convertWithHttpSnippetLite } from "../../../utils/convertWithHttpSnippetLite.js";
3
- const javaNethttp = {
4
- target: "java",
5
- client: "nethttp",
6
- title: "java.net.http",
7
- generate(request) {
8
- return convertWithHttpSnippetLite(nethttp, request);
9
- }
1
+ import { nethttp } from '../../../httpsnippet-lite/targets/java/nethttp/client.js';
2
+ import { convertWithHttpSnippetLite } from '../../../utils/convertWithHttpSnippetLite.js';
3
+ /**
4
+ * java/nethttp
5
+ */
6
+ export const javaNethttp = {
7
+ target: 'java',
8
+ client: 'nethttp',
9
+ title: 'java.net.http',
10
+ generate(request) {
11
+ // TODO: Write an own converter
12
+ return convertWithHttpSnippetLite(nethttp, request);
13
+ },
10
14
  };
11
- export {
12
- javaNethttp
13
- };
14
- //# sourceMappingURL=nethttp.js.map
@@ -1,5 +1 @@
1
- import { javaOkhttp } from "./okhttp.js";
2
- export {
3
- javaOkhttp
4
- };
5
- //# sourceMappingURL=index.js.map
1
+ export { javaOkhttp } from './okhttp.js';