@scalar/snippetz 0.2.20 → 0.3.0

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 (80) hide show
  1. package/dist/httpsnippet-lite/esm/targets/c/libcurl/client.d.ts.map +1 -1
  2. package/dist/httpsnippet-lite/esm/targets/c/libcurl/client.js +37 -8
  3. package/dist/httpsnippet-lite/esm/targets/c/libcurl/client.js.map +2 -2
  4. package/dist/httpsnippet-lite/esm/targets/go/native/client.d.ts.map +1 -1
  5. package/dist/httpsnippet-lite/esm/targets/go/native/client.js +76 -30
  6. package/dist/httpsnippet-lite/esm/targets/go/native/client.js.map +2 -2
  7. package/dist/httpsnippet-lite/esm/targets/java/okhttp/client.d.ts.map +1 -1
  8. package/dist/httpsnippet-lite/esm/targets/java/okhttp/client.js +25 -9
  9. package/dist/httpsnippet-lite/esm/targets/java/okhttp/client.js.map +2 -2
  10. package/dist/httpsnippet-lite/esm/targets/kotlin/okhttp/client.d.ts.map +1 -1
  11. package/dist/httpsnippet-lite/esm/targets/kotlin/okhttp/client.js +25 -9
  12. package/dist/httpsnippet-lite/esm/targets/kotlin/okhttp/client.js.map +2 -2
  13. package/dist/httpsnippet-lite/esm/targets/shell/httpie/client.d.ts.map +1 -1
  14. package/dist/httpsnippet-lite/esm/targets/shell/httpie/client.js +11 -0
  15. package/dist/httpsnippet-lite/esm/targets/shell/httpie/client.js.map +2 -2
  16. package/dist/plugins/c/libcurl/libcurl.test.js +19 -11
  17. package/dist/plugins/c/libcurl/libcurl.test.js.map +2 -2
  18. package/dist/plugins/go/native/native.test.js +35 -36
  19. package/dist/plugins/go/native/native.test.js.map +2 -2
  20. package/dist/plugins/java/okhttp/okhttp.test.js +164 -0
  21. package/dist/plugins/java/okhttp/okhttp.test.js.map +7 -0
  22. package/dist/plugins/js/axios/index.d.ts +1 -1
  23. package/dist/plugins/js/axios/index.d.ts.map +1 -1
  24. package/dist/plugins/js/axios/index.js +4 -1
  25. package/dist/plugins/js/axios/index.js.map +2 -2
  26. package/dist/plugins/js/fetch/fetch.d.ts.map +1 -1
  27. package/dist/plugins/js/fetch/fetch.js +30 -9
  28. package/dist/plugins/js/fetch/fetch.js.map +2 -2
  29. package/dist/plugins/js/fetch/fetch.test.js +103 -0
  30. package/dist/plugins/js/fetch/fetch.test.js.map +2 -2
  31. package/dist/plugins/js/fetch/index.d.ts +1 -1
  32. package/dist/plugins/js/fetch/index.d.ts.map +1 -1
  33. package/dist/plugins/js/fetch/index.js +4 -1
  34. package/dist/plugins/js/fetch/index.js.map +2 -2
  35. package/dist/plugins/js/ofetch/ofetch.d.ts.map +1 -1
  36. package/dist/plugins/js/ofetch/ofetch.js +1 -10
  37. package/dist/plugins/js/ofetch/ofetch.js.map +2 -2
  38. package/dist/plugins/js/ofetch/ofetch.test.js +7 -4
  39. package/dist/plugins/js/ofetch/ofetch.test.js.map +2 -2
  40. package/dist/plugins/kotlin/okhttp/okhttp.test.js +164 -0
  41. package/dist/plugins/kotlin/okhttp/okhttp.test.js.map +7 -0
  42. package/dist/plugins/node/fetch/fetch.d.ts.map +1 -1
  43. package/dist/plugins/node/fetch/fetch.js +37 -9
  44. package/dist/plugins/node/fetch/fetch.js.map +2 -2
  45. package/dist/plugins/node/fetch/fetch.test.js +89 -0
  46. package/dist/plugins/node/fetch/fetch.test.js.map +2 -2
  47. package/dist/plugins/node/ofetch/ofetch.d.ts.map +1 -1
  48. package/dist/plugins/node/ofetch/ofetch.js +1 -10
  49. package/dist/plugins/node/ofetch/ofetch.js.map +2 -2
  50. package/dist/plugins/node/ofetch/ofetch.test.js +7 -4
  51. package/dist/plugins/node/ofetch/ofetch.test.js.map +2 -2
  52. package/dist/plugins/node/undici/undici.d.ts.map +1 -1
  53. package/dist/plugins/node/undici/undici.js +4 -6
  54. package/dist/plugins/node/undici/undici.js.map +2 -2
  55. package/dist/plugins/python/requests/requests.d.ts.map +1 -1
  56. package/dist/plugins/python/requests/requests.js +4 -3
  57. package/dist/plugins/python/requests/requests.js.map +3 -3
  58. package/dist/plugins/python/requests/requests.test.js +31 -2
  59. package/dist/plugins/python/requests/requests.test.js.map +2 -2
  60. package/dist/plugins/shell/httpie/httpie.test.js +3 -3
  61. package/dist/plugins/shell/httpie/httpie.test.js.map +2 -2
  62. package/dist/utils/create-search-params.d.ts +4 -0
  63. package/dist/utils/create-search-params.d.ts.map +1 -0
  64. package/dist/utils/create-search-params.js +11 -0
  65. package/dist/utils/create-search-params.js.map +7 -0
  66. package/dist/utils/create-search-params.test.js +49 -0
  67. package/dist/utils/create-search-params.test.js.map +7 -0
  68. package/dist/utils/index.d.ts +0 -1
  69. package/dist/utils/index.d.ts.map +1 -1
  70. package/dist/utils/index.js +0 -1
  71. package/dist/utils/index.js.map +2 -2
  72. package/dist/utils/objectToString.d.ts +8 -0
  73. package/dist/utils/objectToString.d.ts.map +1 -1
  74. package/dist/utils/objectToString.js +20 -15
  75. package/dist/utils/objectToString.js.map +2 -2
  76. package/package.json +5 -5
  77. package/dist/utils/arrayToObject.d.ts +0 -8
  78. package/dist/utils/arrayToObject.d.ts.map +0 -1
  79. package/dist/utils/arrayToObject.js +0 -10
  80. package/dist/utils/arrayToObject.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/plugins/c/libcurl/libcurl.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { cLibcurl } from './libcurl'\n\ndescribe('cLibcurl', () => {\n it('returns a basic request', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('returns a POST request', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'post',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('has headers', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n headers: [\n {\n name: 'Content-Type',\n value: 'application/json',\n },\n ],\n })\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_slist *headers = NULL;\nheaders = curl_slist_append(headers, \"Content-Type: application/json\");\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it.skip('handles multipart form data with files', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'multipart/form-data',\n params: [\n {\n name: 'file',\n fileName: 'test.txt',\n },\n {\n name: 'field',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_httppost *formpost = NULL;\nstruct curl_httppost *lastptr = NULL;\n\ncurl_easy_setopt(hnd, CURLOPT_HTTPPOST, formpost);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it.skip('handles url-encoded form data with special characters', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/x-www-form-urlencoded',\n params: [\n {\n name: 'special chars!@#',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_httppost *formpost = NULL;\nstruct curl_httppost *lastptr = NULL;\n\ncurl_easy_setopt(hnd, CURLOPT_HTTPPOST, formpost);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles binary data', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/octet-stream',\n text: 'binary content',\n },\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \"binary content\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles special characters in URL', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com/path with spaces/[brackets]',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com/path%20with%20spaces/[brackets]\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles multiple headers with same name', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n headers: [\n { name: 'X-Custom', value: 'value1' },\n { name: 'X-Custom', value: 'value2' },\n ],\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_slist *headers = NULL;\nheaders = curl_slist_append(headers, \"X-Custom: value2\");\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it.skip('handles headers with empty values', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n headers: [{ name: 'X-Empty', value: '' }],\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_slist *headers = NULL;\nheaders = curl_slist_append(headers, \"X-Empty: ''\");\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles query string parameters', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com/api?param1=value1&param2=special value&param3=123',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com/api?param1=value1&param2=special%20value&param3=123\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n})\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { cLibcurl } from './libcurl'\n\ndescribe('cLibcurl', () => {\n it('returns a basic request', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('returns a POST request', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'post',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('has headers', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n headers: [\n {\n name: 'Content-Type',\n value: 'application/json',\n },\n ],\n })\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_slist *headers = NULL;\nheaders = curl_slist_append(headers, \"Content-Type: application/json\");\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles multipart form data with files', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'multipart/form-data',\n params: [\n {\n name: 'file',\n fileName: 'test.txt',\n },\n {\n name: 'field',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\ncurl_mime *mime = curl_mime_init(hnd);\n\n{\n curl_mimepart *part = curl_mime_addpart(mime);\n curl_mime_name(part, \"file\");\n curl_mime_filedata(part, \"test.txt\");\n}\n\n{\n curl_mimepart *part = curl_mime_addpart(mime);\n curl_mime_name(part, \"field\");\n curl_mime_data(part, \"value\", CURL_ZERO_TERMINATED);\n}\n\ncurl_easy_setopt(hnd, CURLOPT_MIMEPOST, mime);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles url-encoded form data with special characters', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/x-www-form-urlencoded',\n params: [\n {\n name: 'special chars!@#',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \"special+chars%21%40%23=value\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles binary data', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/octet-stream',\n text: 'binary content',\n },\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \"binary content\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles special characters in URL', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com/path with spaces/[brackets]',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com/path%20with%20spaces/[brackets]\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles multiple headers with same name', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n headers: [\n { name: 'X-Custom', value: 'value1' },\n { name: 'X-Custom', value: 'value2' },\n ],\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_slist *headers = NULL;\nheaders = curl_slist_append(headers, \"X-Custom: value2\");\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles headers with empty values', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com',\n headers: [{ name: 'X-Empty', value: '' }],\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com\");\n\nstruct curl_slist *headers = NULL;\nheaders = curl_slist_append(headers, \"X-Empty;\");\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n\n it('handles query string parameters', () => {\n const result = cLibcurl.generate({\n url: 'https://example.com/api?param1=value1&param2=special value&param3=123',\n })\n\n expect(result).toBe(\n `CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_easy_setopt(hnd, CURLOPT_URL, \"https://example.com/api?param1=value1&param2=special%20value&param3=123\");\n\nCURLcode ret = curl_easy_perform(hnd);`,\n )\n })\n})\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -10,12 +10,11 @@ describe("goNative", () => {
10
10
 
11
11
  import (
12
12
  "fmt"
13
- "net/http"
14
13
  "io"
14
+ "net/http"
15
15
  )
16
16
 
17
17
  func main() {
18
-
19
18
  url := "https://example.com"
20
19
 
21
20
  req, _ := http.NewRequest("GET", url, nil)
@@ -41,12 +40,11 @@ func main() {
41
40
 
42
41
  import (
43
42
  "fmt"
44
- "net/http"
45
43
  "io"
44
+ "net/http"
46
45
  )
47
46
 
48
47
  func main() {
49
-
50
48
  url := "https://example.com"
51
49
 
52
50
  req, _ := http.NewRequest("POST", url, nil)
@@ -77,12 +75,11 @@ func main() {
77
75
 
78
76
  import (
79
77
  "fmt"
80
- "net/http"
81
78
  "io"
79
+ "net/http"
82
80
  )
83
81
 
84
82
  func main() {
85
-
86
83
  url := "https://example.com"
87
84
 
88
85
  req, _ := http.NewRequest("GET", url, nil)
@@ -100,7 +97,7 @@ func main() {
100
97
  }`
101
98
  );
102
99
  });
103
- it.skip("handles multipart form data with files", () => {
100
+ it("handles multipart form data with files", () => {
104
101
  const result = goNative.generate({
105
102
  url: "https://example.com",
106
103
  method: "POST",
@@ -122,40 +119,44 @@ func main() {
122
119
  `package main
123
120
 
124
121
  import (
122
+ "bytes"
125
123
  "fmt"
126
- "net/http"
127
124
  "io"
128
- "bytes"
129
125
  "mime/multipart"
126
+ "net/http"
130
127
  )
131
128
 
132
129
  func main() {
133
-
134
130
  url := "https://example.com"
135
131
 
136
- body := &bytes.Buffer{}
137
- writer := multipart.NewWriter(body)
132
+ payload := &bytes.Buffer{}
133
+ writer := multipart.NewWriter(payload)
134
+
135
+ part, _ := writer.CreateFormFile("file", "test.txt")
138
136
 
139
- // Add file field
140
- writer.WriteField("file", "test.txt")
141
- // Add form field
142
- writer.WriteField("field", "value")
137
+ f, _ := os.Open("test.txt")
138
+ defer f.Close()
139
+
140
+ _, _ = io.Copy(part, f)
141
+
142
+ _ = writer.WriteField("field", "value")
143
143
  writer.Close()
144
144
 
145
- req, _ := http.NewRequest("POST", url, body)
146
- req.Header.Set("Content-Type", writer.FormDataContentType())
145
+ req, _ := http.NewRequest("POST", url, payload)
147
146
 
147
+ req.Header.Set("Content-Type", writer.FormDataContentType())
148
148
  res, _ := http.DefaultClient.Do(req)
149
149
 
150
150
  defer res.Body.Close()
151
- responseBody, _ := io.ReadAll(res.Body)
151
+ body, _ := io.ReadAll(res.Body)
152
152
 
153
153
  fmt.Println(res)
154
- fmt.Println(string(responseBody))
154
+ fmt.Println(string(body))
155
+
155
156
  }`
156
157
  );
157
158
  });
158
- it.skip("handles url-encoded form data with special characters", () => {
159
+ it("handles url-encoded form data with special characters", () => {
159
160
  const result = goNative.generate({
160
161
  url: "https://example.com",
161
162
  method: "POST",
@@ -174,16 +175,19 @@ func main() {
174
175
 
175
176
  import (
176
177
  "fmt"
177
- "net/http"
178
178
  "io"
179
+ "net/http"
180
+ "net/url"
181
+ "strings"
179
182
  )
180
183
 
181
184
  func main() {
182
-
183
185
  url := "https://example.com"
184
186
 
185
- req, _ := http.NewRequest("POST", url, nil)
186
- req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
187
+ postData := url.Values{}
188
+ postData.Set("special chars!@#", "value")
189
+
190
+ req, _ := http.NewRequest("POST", url, strings.NewReader(postData.Encode()))
187
191
 
188
192
  res, _ := http.DefaultClient.Do(req)
189
193
 
@@ -210,13 +214,12 @@ func main() {
210
214
 
211
215
  import (
212
216
  "fmt"
213
- "strings"
214
- "net/http"
215
217
  "io"
218
+ "net/http"
219
+ "strings"
216
220
  )
217
221
 
218
222
  func main() {
219
-
220
223
  url := "https://example.com"
221
224
 
222
225
  payload := strings.NewReader("binary content")
@@ -243,12 +246,11 @@ func main() {
243
246
 
244
247
  import (
245
248
  "fmt"
246
- "net/http"
247
249
  "io"
250
+ "net/http"
248
251
  )
249
252
 
250
253
  func main() {
251
-
252
254
  url := "https://example.com/path%20with%20spaces/[brackets]"
253
255
 
254
256
  req, _ := http.NewRequest("GET", url, nil)
@@ -277,12 +279,11 @@ func main() {
277
279
 
278
280
  import (
279
281
  "fmt"
280
- "net/http"
281
282
  "io"
283
+ "net/http"
282
284
  )
283
285
 
284
286
  func main() {
285
-
286
287
  url := "https://example.com"
287
288
 
288
289
  req, _ := http.NewRequest("GET", url, nil)
@@ -310,12 +311,11 @@ func main() {
310
311
 
311
312
  import (
312
313
  "fmt"
313
- "net/http"
314
314
  "io"
315
+ "net/http"
315
316
  )
316
317
 
317
318
  func main() {
318
-
319
319
  url := "https://example.com"
320
320
 
321
321
  req, _ := http.NewRequest("GET", url, nil)
@@ -342,12 +342,11 @@ func main() {
342
342
 
343
343
  import (
344
344
  "fmt"
345
- "net/http"
346
345
  "io"
346
+ "net/http"
347
347
  )
348
348
 
349
349
  func main() {
350
-
351
350
  url := "https://example.com/api?param1=value1&param2=special%20value&param3=123"
352
351
 
353
352
  req, _ := http.NewRequest("GET", url, nil)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/plugins/go/native/native.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { goNative } from './native'\n\ndescribe('goNative', () => {\n it('returns a basic request', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('returns a POST request', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'post',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('has headers', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n headers: [\n {\n name: 'Content-Type',\n value: 'application/json',\n },\n ],\n })\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Content-Type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it.skip('handles multipart form data with files', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'multipart/form-data',\n params: [\n {\n name: 'file',\n fileName: 'test.txt',\n },\n {\n name: 'field',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n\t\"bytes\"\n\t\"mime/multipart\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\tbody := &bytes.Buffer{}\n\twriter := multipart.NewWriter(body)\n\n\t// Add file field\n\twriter.WriteField(\"file\", \"test.txt\")\n\t// Add form field\n\twriter.WriteField(\"field\", \"value\")\n\twriter.Close()\n\n\treq, _ := http.NewRequest(\"POST\", url, body)\n\treq.Header.Set(\"Content-Type\", writer.FormDataContentType())\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tresponseBody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(responseBody))\n}`,\n )\n })\n\n it.skip('handles url-encoded form data with special characters', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/x-www-form-urlencoded',\n params: [\n {\n name: 'special chars!@#',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\treq.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles binary data', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/octet-stream',\n text: 'binary content',\n },\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\tpayload := strings.NewReader(\"binary content\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles special characters in URL', () => {\n const result = goNative.generate({\n url: 'https://example.com/path with spaces/[brackets]',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com/path%20with%20spaces/[brackets]\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles multiple headers with same name', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n headers: [\n { name: 'X-Custom', value: 'value1' },\n { name: 'X-Custom', value: 'value2' },\n ],\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"X-Custom\", \"value2\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles headers with empty values', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n headers: [{ name: 'X-Empty', value: '' }],\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"X-Empty\", \"\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles query string parameters', () => {\n const result = goNative.generate({\n url: 'https://example.com/api?param1=value1&param2=special value&param3=123',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://example.com/api?param1=value1&param2=special%20value&param3=123\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n})\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { goNative } from './native'\n\ndescribe('goNative', () => {\n it('returns a basic request', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('returns a POST request', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'post',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('has headers', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n headers: [\n {\n name: 'Content-Type',\n value: 'application/json',\n },\n ],\n })\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Content-Type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles multipart form data with files', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'multipart/form-data',\n params: [\n {\n name: 'file',\n fileName: 'test.txt',\n },\n {\n name: 'field',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"mime/multipart\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\tpayload := &bytes.Buffer{}\n\twriter := multipart.NewWriter(payload)\n\n\tpart, _ := writer.CreateFormFile(\"file\", \"test.txt\")\n\n\tf, _ := os.Open(\"test.txt\")\n\tdefer f.Close()\n\n\t_, _ = io.Copy(part, f)\n\n\t_ = writer.WriteField(\"field\", \"value\")\n\twriter.Close()\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Set(\"Content-Type\", writer.FormDataContentType())\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles url-encoded form data with special characters', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/x-www-form-urlencoded',\n params: [\n {\n name: 'special chars!@#',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\tpostData := url.Values{}\n\tpostData.Set(\"special chars!@#\", \"value\")\n\n\treq, _ := http.NewRequest(\"POST\", url, strings.NewReader(postData.Encode()))\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles binary data', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/octet-stream',\n text: 'binary content',\n },\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\tpayload := strings.NewReader(\"binary content\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles special characters in URL', () => {\n const result = goNative.generate({\n url: 'https://example.com/path with spaces/[brackets]',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com/path%20with%20spaces/[brackets]\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles multiple headers with same name', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n headers: [\n { name: 'X-Custom', value: 'value1' },\n { name: 'X-Custom', value: 'value2' },\n ],\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"X-Custom\", \"value2\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles headers with empty values', () => {\n const result = goNative.generate({\n url: 'https://example.com',\n headers: [{ name: 'X-Empty', value: '' }],\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"X-Empty\", \"\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n\n it('handles query string parameters', () => {\n const result = goNative.generate({\n url: 'https://example.com/api?param1=value1&param2=special value&param3=123',\n })\n\n expect(result).toBe(\n `package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\turl := \"https://example.com/api?param1=value1&param2=special%20value&param3=123\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}`,\n )\n })\n})\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,164 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { javaOkhttp } from "./okhttp.js";
3
+ describe("javaOkhttp", () => {
4
+ it("returns a basic request", () => {
5
+ const result = javaOkhttp.generate({
6
+ url: "https://example.com"
7
+ });
8
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
9
+
10
+ Request request = new Request.Builder()
11
+ .url("https://example.com")
12
+ .get()
13
+ .build();
14
+
15
+ Response response = client.newCall(request).execute();`);
16
+ });
17
+ it("returns a POST request", () => {
18
+ const result = javaOkhttp.generate({
19
+ url: "https://example.com",
20
+ method: "post"
21
+ });
22
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
23
+
24
+ Request request = new Request.Builder()
25
+ .url("https://example.com")
26
+ .post(null)
27
+ .build();
28
+
29
+ Response response = client.newCall(request).execute();`);
30
+ });
31
+ it("has headers", () => {
32
+ const result = javaOkhttp.generate({
33
+ url: "https://example.com",
34
+ headers: [
35
+ {
36
+ name: "Content-Type",
37
+ value: "application/json"
38
+ }
39
+ ]
40
+ });
41
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
42
+
43
+ Request request = new Request.Builder()
44
+ .url("https://example.com")
45
+ .get()
46
+ .addHeader("Content-Type", "application/json")
47
+ .build();
48
+
49
+ Response response = client.newCall(request).execute();`);
50
+ });
51
+ it("handles multipart form data with files", () => {
52
+ const result = javaOkhttp.generate({
53
+ url: "https://example.com",
54
+ method: "POST",
55
+ postData: {
56
+ mimeType: "multipart/form-data",
57
+ params: [
58
+ {
59
+ name: "file",
60
+ fileName: "test.txt"
61
+ },
62
+ {
63
+ name: "field",
64
+ value: "value"
65
+ }
66
+ ]
67
+ }
68
+ });
69
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
70
+
71
+ MultipartBody body = new MultipartBody.Builder()
72
+ .setType(MultipartBody.FORM)
73
+ .addFormDataPart("file", "test.txt", RequestBody.create(MediaType.parse("application/octet-stream"), new File("test.txt")))
74
+ .addFormDataPart("field", "value")
75
+ .build();
76
+
77
+ Request request = new Request.Builder()
78
+ .url("https://example.com")
79
+ .post(body)
80
+ .build();
81
+
82
+ Response response = client.newCall(request).execute();`);
83
+ });
84
+ it("handles binary data", () => {
85
+ const result = javaOkhttp.generate({
86
+ url: "https://example.com",
87
+ method: "POST",
88
+ postData: {
89
+ mimeType: "application/octet-stream",
90
+ text: "binary content"
91
+ }
92
+ });
93
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
94
+
95
+ MediaType mediaType = MediaType.parse("application/octet-stream");
96
+ RequestBody body = RequestBody.create(mediaType, "binary content");
97
+ Request request = new Request.Builder()
98
+ .url("https://example.com")
99
+ .post(body)
100
+ .build();
101
+
102
+ Response response = client.newCall(request).execute();`);
103
+ });
104
+ it("handles special characters in URL", () => {
105
+ const result = javaOkhttp.generate({
106
+ url: "https://example.com/path with spaces/[brackets]"
107
+ });
108
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
109
+
110
+ Request request = new Request.Builder()
111
+ .url("https://example.com/path%20with%20spaces/[brackets]")
112
+ .get()
113
+ .build();
114
+
115
+ Response response = client.newCall(request).execute();`);
116
+ });
117
+ it("handles multiple headers with same name", () => {
118
+ const result = javaOkhttp.generate({
119
+ url: "https://example.com",
120
+ headers: [
121
+ { name: "X-Custom", value: "value1" },
122
+ { name: "X-Custom", value: "value2" }
123
+ ]
124
+ });
125
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
126
+
127
+ Request request = new Request.Builder()
128
+ .url("https://example.com")
129
+ .get()
130
+ .addHeader("X-Custom", "value2")
131
+ .build();
132
+
133
+ Response response = client.newCall(request).execute();`);
134
+ });
135
+ it("handles headers with empty values", () => {
136
+ const result = javaOkhttp.generate({
137
+ url: "https://example.com",
138
+ headers: [{ name: "X-Empty", value: "" }]
139
+ });
140
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
141
+
142
+ Request request = new Request.Builder()
143
+ .url("https://example.com")
144
+ .get()
145
+ .addHeader("X-Empty", "")
146
+ .build();
147
+
148
+ Response response = client.newCall(request).execute();`);
149
+ });
150
+ it("handles query string parameters", () => {
151
+ const result = javaOkhttp.generate({
152
+ url: "https://example.com/api?param1=value1&param2=special value&param3=123"
153
+ });
154
+ expect(result).toBe(`OkHttpClient client = new OkHttpClient();
155
+
156
+ Request request = new Request.Builder()
157
+ .url("https://example.com/api?param1=value1&param2=special%20value&param3=123")
158
+ .get()
159
+ .build();
160
+
161
+ Response response = client.newCall(request).execute();`);
162
+ });
163
+ });
164
+ //# sourceMappingURL=okhttp.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/plugins/java/okhttp/okhttp.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { javaOkhttp } from './okhttp'\n\ndescribe('javaOkhttp', () => {\n it('returns a basic request', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com',\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com\")\n .get()\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('returns a POST request', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com',\n method: 'post',\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com\")\n .post(null)\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('has headers', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com',\n headers: [\n {\n name: 'Content-Type',\n value: 'application/json',\n },\n ],\n })\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com\")\n .get()\n .addHeader(\"Content-Type\", \"application/json\")\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('handles multipart form data with files', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'multipart/form-data',\n params: [\n {\n name: 'file',\n fileName: 'test.txt',\n },\n {\n name: 'field',\n value: 'value',\n },\n ],\n },\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nMultipartBody body = new MultipartBody.Builder()\n .setType(MultipartBody.FORM)\n .addFormDataPart(\"file\", \"test.txt\", RequestBody.create(MediaType.parse(\"application/octet-stream\"), new File(\"test.txt\")))\n .addFormDataPart(\"field\", \"value\")\n .build();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com\")\n .post(body)\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('handles binary data', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com',\n method: 'POST',\n postData: {\n mimeType: 'application/octet-stream',\n text: 'binary content',\n },\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nMediaType mediaType = MediaType.parse(\"application/octet-stream\");\nRequestBody body = RequestBody.create(mediaType, \"binary content\");\nRequest request = new Request.Builder()\n .url(\"https://example.com\")\n .post(body)\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('handles special characters in URL', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com/path with spaces/[brackets]',\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com/path%20with%20spaces/[brackets]\")\n .get()\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('handles multiple headers with same name', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com',\n headers: [\n { name: 'X-Custom', value: 'value1' },\n { name: 'X-Custom', value: 'value2' },\n ],\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com\")\n .get()\n .addHeader(\"X-Custom\", \"value2\")\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('handles headers with empty values', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com',\n headers: [{ name: 'X-Empty', value: '' }],\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com\")\n .get()\n .addHeader(\"X-Empty\", \"\")\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n\n it('handles query string parameters', () => {\n const result = javaOkhttp.generate({\n url: 'https://example.com/api?param1=value1&param2=special value&param3=123',\n })\n\n expect(result).toBe(`OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://example.com/api?param1=value1&param2=special%20value&param3=123\")\n .get()\n .build();\n\nResponse response = client.newCall(request).execute();`)\n })\n})\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,2 +1,2 @@
1
- export * from './axios.js';
1
+ export { jsAxios } from './axios.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/js/axios/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/js/axios/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA"}
@@ -1,2 +1,5 @@
1
- export * from "./axios.js";
1
+ import { jsAxios } from "./axios.js";
2
+ export {
3
+ jsAxios
4
+ };
2
5
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/plugins/js/axios/index.ts"],
4
- "sourcesContent": ["export * from './axios'\n"],
5
- "mappings": "AAAA,cAAc;",
4
+ "sourcesContent": ["export { jsAxios } from './axios'\n"],
5
+ "mappings": "AAAA,SAAS,eAAe;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/js/fetch/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAqErB,CAAA"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/js/fetch/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAuFrB,CAAA"}
@@ -1,5 +1,5 @@
1
- import { arrayToObject } from "../../../utils/arrayToObject.js";
2
- import { objectToString } from "../../../utils/objectToString.js";
1
+ import { createSearchParams } from "../../../utils/create-search-params.js";
2
+ import { objectToString, Unquoted } from "../../../utils/objectToString.js";
3
3
  const jsFetch = {
4
4
  target: "js",
5
5
  client: "fetch",
@@ -9,13 +9,12 @@ const jsFetch = {
9
9
  method: "GET",
10
10
  ...request
11
11
  };
12
+ let prefix = "";
12
13
  normalizedRequest.method = normalizedRequest.method.toUpperCase();
13
14
  const options = {
14
15
  method: normalizedRequest.method === "GET" ? void 0 : normalizedRequest.method
15
16
  };
16
- const searchParams = new URLSearchParams(
17
- normalizedRequest.queryString ? arrayToObject(normalizedRequest.queryString) : void 0
18
- );
17
+ const searchParams = createSearchParams(normalizedRequest.queryString);
19
18
  const queryString = searchParams.size ? `?${searchParams.toString()}` : "";
20
19
  if (normalizedRequest.headers?.length) {
21
20
  options.headers = {};
@@ -35,13 +34,35 @@ const jsFetch = {
35
34
  }
36
35
  });
37
36
  if (normalizedRequest.postData) {
38
- options.body = normalizedRequest.postData.text;
39
- if (normalizedRequest.postData.mimeType === "application/json") {
40
- options.body = `JSON.stringify(${objectToString(JSON.parse(options.body))})`;
37
+ const { mimeType, text, params } = normalizedRequest.postData;
38
+ if (mimeType === "application/json" && text) {
39
+ try {
40
+ options.body = new Unquoted(`JSON.stringify(${objectToString(JSON.parse(text))})`);
41
+ } catch (e) {
42
+ options.body = text;
43
+ }
44
+ } else if (mimeType === "multipart/form-data" && params) {
45
+ prefix = "const formData = new FormData()\n";
46
+ params.forEach((param) => {
47
+ if (param.fileName !== void 0) {
48
+ prefix += `formData.append('${param.name}', new Blob([]), '${param.fileName}')
49
+ `;
50
+ } else if (param.value !== void 0) {
51
+ prefix += `formData.append('${param.name}', '${param.value}')
52
+ `;
53
+ }
54
+ });
55
+ prefix += "\n";
56
+ options.body = new Unquoted("formData");
57
+ } else if (mimeType === "application/x-www-form-urlencoded" && params) {
58
+ const form = Object.fromEntries(params.map((p) => [p.name, p.value]));
59
+ options.body = new Unquoted(`new URLSearchParams(${objectToString(form)})`);
60
+ } else {
61
+ options.body = normalizedRequest.postData.text;
41
62
  }
42
63
  }
43
64
  const jsonOptions = Object.keys(options).length ? `, ${objectToString(options)}` : "";
44
- return `fetch('${normalizedRequest.url}${queryString}'${jsonOptions})`;
65
+ return `${prefix}fetch('${normalizedRequest.url}${queryString}'${jsonOptions})`;
45
66
  }
46
67
  };
47
68
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/plugins/js/fetch/fetch.ts"],
4
- "sourcesContent": ["import { arrayToObject } from '@/utils/arrayToObject'\nimport { objectToString } from '@/utils/objectToString'\nimport type { Plugin } from '@scalar/types/snippetz'\n\n/**\n * js/fetch\n */\nexport const jsFetch: Plugin = {\n target: 'js',\n client: 'fetch',\n title: 'Fetch',\n generate(request) {\n // Defaults\n const normalizedRequest = {\n method: 'GET',\n ...request,\n }\n\n // Normalization\n normalizedRequest.method = normalizedRequest.method.toUpperCase()\n\n // Reset fetch defaults\n const options: Record<string, any> = {\n method: normalizedRequest.method === 'GET' ? undefined : normalizedRequest.method,\n }\n\n // Query\n const searchParams = new URLSearchParams(\n normalizedRequest.queryString ? arrayToObject(normalizedRequest.queryString) : undefined,\n )\n const queryString = searchParams.size ? `?${searchParams.toString()}` : ''\n\n // Headers\n if (normalizedRequest.headers?.length) {\n options.headers = {}\n\n normalizedRequest.headers.forEach((header) => {\n options.headers![header.name] = header.value\n })\n }\n\n // Cookies\n if (normalizedRequest.cookies?.length) {\n options.headers = options.headers || {}\n\n normalizedRequest.cookies.forEach((cookie) => {\n options.headers!['Set-Cookie'] = options.headers!['Set-Cookie']\n ? `${options.headers!['Set-Cookie']}; ${cookie.name}=${cookie.value}`\n : `${cookie.name}=${cookie.value}`\n })\n }\n\n // Remove undefined keys\n Object.keys(options).forEach((key) => {\n if (options[key] === undefined) {\n delete options[key]\n }\n })\n\n // Add body\n if (normalizedRequest.postData) {\n // Plain text\n options.body = normalizedRequest.postData.text\n\n // JSON\n if (normalizedRequest.postData.mimeType === 'application/json') {\n options.body = `JSON.stringify(${objectToString(JSON.parse(options.body))})`\n }\n }\n\n // Transform to JSON\n const jsonOptions = Object.keys(options).length ? `, ${objectToString(options)}` : ''\n\n // Code Template\n return `fetch('${normalizedRequest.url}${queryString}'${jsonOptions})`\n },\n}\n"],
5
- "mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAMxB,MAAM,UAAkB;AAAA,EAC7B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS,SAAS;AAEhB,UAAM,oBAAoB;AAAA,MACxB,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AAGA,sBAAkB,SAAS,kBAAkB,OAAO,YAAY;AAGhE,UAAM,UAA+B;AAAA,MACnC,QAAQ,kBAAkB,WAAW,QAAQ,SAAY,kBAAkB;AAAA,IAC7E;AAGA,UAAM,eAAe,IAAI;AAAA,MACvB,kBAAkB,cAAc,cAAc,kBAAkB,WAAW,IAAI;AAAA,IACjF;AACA,UAAM,cAAc,aAAa,OAAO,IAAI,aAAa,SAAS,CAAC,KAAK;AAGxE,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,CAAC;AAEnB,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,OAAO,IAAI,IAAI,OAAO;AAAA,MACzC,CAAC;AAAA,IACH;AAGA,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,QAAQ,WAAW,CAAC;AAEtC,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,YAAY,IAAI,QAAQ,QAAS,YAAY,IAC1D,GAAG,QAAQ,QAAS,YAAY,CAAC,KAAK,OAAO,IAAI,IAAI,OAAO,KAAK,KACjE,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,MACpC,CAAC;AAAA,IACH;AAGA,WAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,UAAI,QAAQ,GAAG,MAAM,QAAW;AAC9B,eAAO,QAAQ,GAAG;AAAA,MACpB;AAAA,IACF,CAAC;AAGD,QAAI,kBAAkB,UAAU;AAE9B,cAAQ,OAAO,kBAAkB,SAAS;AAG1C,UAAI,kBAAkB,SAAS,aAAa,oBAAoB;AAC9D,gBAAQ,OAAO,kBAAkB,eAAe,KAAK,MAAM,QAAQ,IAAI,CAAC,CAAC;AAAA,MAC3E;AAAA,IACF;AAGA,UAAM,cAAc,OAAO,KAAK,OAAO,EAAE,SAAS,KAAK,eAAe,OAAO,CAAC,KAAK;AAGnF,WAAO,UAAU,kBAAkB,GAAG,GAAG,WAAW,IAAI,WAAW;AAAA,EACrE;AACF;",
4
+ "sourcesContent": ["import { createSearchParams } from '@/utils/create-search-params'\nimport { objectToString, Unquoted } from '@/utils/objectToString'\nimport type { Plugin } from '@scalar/types/snippetz'\n\n/**\n * js/fetch\n */\nexport const jsFetch: Plugin = {\n target: 'js',\n client: 'fetch',\n title: 'Fetch',\n generate(request) {\n // Defaults\n const normalizedRequest = {\n method: 'GET',\n ...request,\n }\n\n let prefix = ''\n\n // Normalization\n normalizedRequest.method = normalizedRequest.method.toUpperCase()\n\n // Reset fetch defaults\n const options: Record<string, any> = {\n method: normalizedRequest.method === 'GET' ? undefined : normalizedRequest.method,\n }\n\n // Query\n const searchParams = createSearchParams(normalizedRequest.queryString)\n const queryString = searchParams.size ? `?${searchParams.toString()}` : ''\n\n // Headers\n if (normalizedRequest.headers?.length) {\n options.headers = {}\n\n normalizedRequest.headers.forEach((header) => {\n options.headers![header.name] = header.value\n })\n }\n\n // Cookies\n if (normalizedRequest.cookies?.length) {\n options.headers = options.headers || {}\n\n normalizedRequest.cookies.forEach((cookie) => {\n options.headers!['Set-Cookie'] = options.headers!['Set-Cookie']\n ? `${options.headers!['Set-Cookie']}; ${cookie.name}=${cookie.value}`\n : `${cookie.name}=${cookie.value}`\n })\n }\n\n // Remove undefined keys\n Object.keys(options).forEach((key) => {\n if (options[key] === undefined) {\n delete options[key]\n }\n })\n\n // Add body\n if (normalizedRequest.postData) {\n const { mimeType, text, params } = normalizedRequest.postData\n\n if (mimeType === 'application/json' && text) {\n try {\n options.body = new Unquoted(`JSON.stringify(${objectToString(JSON.parse(text))})`)\n } catch (e) {\n options.body = text\n }\n } else if (mimeType === 'multipart/form-data' && params) {\n prefix = 'const formData = new FormData()\\n'\n params.forEach((param) => {\n if (param.fileName !== undefined) {\n prefix += `formData.append('${param.name}', new Blob([]), '${param.fileName}')\\n`\n } else if (param.value !== undefined) {\n prefix += `formData.append('${param.name}', '${param.value}')\\n`\n }\n })\n prefix += '\\n'\n options.body = new Unquoted('formData')\n } else if (mimeType === 'application/x-www-form-urlencoded' && params) {\n const form = Object.fromEntries(params.map((p) => [p.name, p.value]))\n options.body = new Unquoted(`new URLSearchParams(${objectToString(form)})`)\n } else {\n options.body = normalizedRequest.postData.text\n }\n }\n\n // Transform to JSON\n const jsonOptions = Object.keys(options).length ? `, ${objectToString(options)}` : ''\n\n // Code Template\n return `${prefix}fetch('${normalizedRequest.url}${queryString}'${jsonOptions})`\n },\n}\n"],
5
+ "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,gBAAgB,gBAAgB;AAMlC,MAAM,UAAkB;AAAA,EAC7B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS,SAAS;AAEhB,UAAM,oBAAoB;AAAA,MACxB,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AAEA,QAAI,SAAS;AAGb,sBAAkB,SAAS,kBAAkB,OAAO,YAAY;AAGhE,UAAM,UAA+B;AAAA,MACnC,QAAQ,kBAAkB,WAAW,QAAQ,SAAY,kBAAkB;AAAA,IAC7E;AAGA,UAAM,eAAe,mBAAmB,kBAAkB,WAAW;AACrE,UAAM,cAAc,aAAa,OAAO,IAAI,aAAa,SAAS,CAAC,KAAK;AAGxE,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,CAAC;AAEnB,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,OAAO,IAAI,IAAI,OAAO;AAAA,MACzC,CAAC;AAAA,IACH;AAGA,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,QAAQ,WAAW,CAAC;AAEtC,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,YAAY,IAAI,QAAQ,QAAS,YAAY,IAC1D,GAAG,QAAQ,QAAS,YAAY,CAAC,KAAK,OAAO,IAAI,IAAI,OAAO,KAAK,KACjE,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,MACpC,CAAC;AAAA,IACH;AAGA,WAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,UAAI,QAAQ,GAAG,MAAM,QAAW;AAC9B,eAAO,QAAQ,GAAG;AAAA,MACpB;AAAA,IACF,CAAC;AAGD,QAAI,kBAAkB,UAAU;AAC9B,YAAM,EAAE,UAAU,MAAM,OAAO,IAAI,kBAAkB;AAErD,UAAI,aAAa,sBAAsB,MAAM;AAC3C,YAAI;AACF,kBAAQ,OAAO,IAAI,SAAS,kBAAkB,eAAe,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG;AAAA,QACnF,SAAS,GAAG;AACV,kBAAQ,OAAO;AAAA,QACjB;AAAA,MACF,WAAW,aAAa,yBAAyB,QAAQ;AACvD,iBAAS;AACT,eAAO,QAAQ,CAAC,UAAU;AACxB,cAAI,MAAM,aAAa,QAAW;AAChC,sBAAU,oBAAoB,MAAM,IAAI,qBAAqB,MAAM,QAAQ;AAAA;AAAA,UAC7E,WAAW,MAAM,UAAU,QAAW;AACpC,sBAAU,oBAAoB,MAAM,IAAI,OAAO,MAAM,KAAK;AAAA;AAAA,UAC5D;AAAA,QACF,CAAC;AACD,kBAAU;AACV,gBAAQ,OAAO,IAAI,SAAS,UAAU;AAAA,MACxC,WAAW,aAAa,uCAAuC,QAAQ;AACrE,cAAM,OAAO,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACpE,gBAAQ,OAAO,IAAI,SAAS,uBAAuB,eAAe,IAAI,CAAC,GAAG;AAAA,MAC5E,OAAO;AACL,gBAAQ,OAAO,kBAAkB,SAAS;AAAA,MAC5C;AAAA,IACF;AAGA,UAAM,cAAc,OAAO,KAAK,OAAO,EAAE,SAAS,KAAK,eAAe,OAAO,CAAC,KAAK;AAGnF,WAAO,GAAG,MAAM,UAAU,kBAAkB,GAAG,GAAG,WAAW,IAAI,WAAW;AAAA,EAC9E;AACF;",
6
6
  "names": []
7
7
  }