@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.
- package/dist/httpsnippet-lite/esm/targets/c/libcurl/client.d.ts.map +1 -1
- package/dist/httpsnippet-lite/esm/targets/c/libcurl/client.js +37 -8
- package/dist/httpsnippet-lite/esm/targets/c/libcurl/client.js.map +2 -2
- package/dist/httpsnippet-lite/esm/targets/go/native/client.d.ts.map +1 -1
- package/dist/httpsnippet-lite/esm/targets/go/native/client.js +76 -30
- package/dist/httpsnippet-lite/esm/targets/go/native/client.js.map +2 -2
- package/dist/httpsnippet-lite/esm/targets/java/okhttp/client.d.ts.map +1 -1
- package/dist/httpsnippet-lite/esm/targets/java/okhttp/client.js +25 -9
- package/dist/httpsnippet-lite/esm/targets/java/okhttp/client.js.map +2 -2
- package/dist/httpsnippet-lite/esm/targets/kotlin/okhttp/client.d.ts.map +1 -1
- package/dist/httpsnippet-lite/esm/targets/kotlin/okhttp/client.js +25 -9
- package/dist/httpsnippet-lite/esm/targets/kotlin/okhttp/client.js.map +2 -2
- package/dist/httpsnippet-lite/esm/targets/shell/httpie/client.d.ts.map +1 -1
- package/dist/httpsnippet-lite/esm/targets/shell/httpie/client.js +11 -0
- package/dist/httpsnippet-lite/esm/targets/shell/httpie/client.js.map +2 -2
- package/dist/plugins/c/libcurl/libcurl.test.js +19 -11
- package/dist/plugins/c/libcurl/libcurl.test.js.map +2 -2
- package/dist/plugins/go/native/native.test.js +35 -36
- package/dist/plugins/go/native/native.test.js.map +2 -2
- package/dist/plugins/java/okhttp/okhttp.test.js +164 -0
- package/dist/plugins/java/okhttp/okhttp.test.js.map +7 -0
- package/dist/plugins/js/axios/index.d.ts +1 -1
- package/dist/plugins/js/axios/index.d.ts.map +1 -1
- package/dist/plugins/js/axios/index.js +4 -1
- package/dist/plugins/js/axios/index.js.map +2 -2
- package/dist/plugins/js/fetch/fetch.d.ts.map +1 -1
- package/dist/plugins/js/fetch/fetch.js +30 -9
- package/dist/plugins/js/fetch/fetch.js.map +2 -2
- package/dist/plugins/js/fetch/fetch.test.js +103 -0
- package/dist/plugins/js/fetch/fetch.test.js.map +2 -2
- package/dist/plugins/js/fetch/index.d.ts +1 -1
- package/dist/plugins/js/fetch/index.d.ts.map +1 -1
- package/dist/plugins/js/fetch/index.js +4 -1
- package/dist/plugins/js/fetch/index.js.map +2 -2
- package/dist/plugins/js/ofetch/ofetch.d.ts.map +1 -1
- package/dist/plugins/js/ofetch/ofetch.js +1 -10
- package/dist/plugins/js/ofetch/ofetch.js.map +2 -2
- package/dist/plugins/js/ofetch/ofetch.test.js +7 -4
- package/dist/plugins/js/ofetch/ofetch.test.js.map +2 -2
- package/dist/plugins/kotlin/okhttp/okhttp.test.js +164 -0
- package/dist/plugins/kotlin/okhttp/okhttp.test.js.map +7 -0
- package/dist/plugins/node/fetch/fetch.d.ts.map +1 -1
- package/dist/plugins/node/fetch/fetch.js +37 -9
- package/dist/plugins/node/fetch/fetch.js.map +2 -2
- package/dist/plugins/node/fetch/fetch.test.js +89 -0
- package/dist/plugins/node/fetch/fetch.test.js.map +2 -2
- package/dist/plugins/node/ofetch/ofetch.d.ts.map +1 -1
- package/dist/plugins/node/ofetch/ofetch.js +1 -10
- package/dist/plugins/node/ofetch/ofetch.js.map +2 -2
- package/dist/plugins/node/ofetch/ofetch.test.js +7 -4
- package/dist/plugins/node/ofetch/ofetch.test.js.map +2 -2
- package/dist/plugins/node/undici/undici.d.ts.map +1 -1
- package/dist/plugins/node/undici/undici.js +4 -6
- package/dist/plugins/node/undici/undici.js.map +2 -2
- package/dist/plugins/python/requests/requests.d.ts.map +1 -1
- package/dist/plugins/python/requests/requests.js +4 -3
- package/dist/plugins/python/requests/requests.js.map +3 -3
- package/dist/plugins/python/requests/requests.test.js +31 -2
- package/dist/plugins/python/requests/requests.test.js.map +2 -2
- package/dist/plugins/shell/httpie/httpie.test.js +3 -3
- package/dist/plugins/shell/httpie/httpie.test.js.map +2 -2
- package/dist/utils/create-search-params.d.ts +4 -0
- package/dist/utils/create-search-params.d.ts.map +1 -0
- package/dist/utils/create-search-params.js +11 -0
- package/dist/utils/create-search-params.js.map +7 -0
- package/dist/utils/create-search-params.test.js +49 -0
- package/dist/utils/create-search-params.test.js.map +7 -0
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +2 -2
- package/dist/utils/objectToString.d.ts +8 -0
- package/dist/utils/objectToString.d.ts.map +1 -1
- package/dist/utils/objectToString.js +20 -15
- package/dist/utils/objectToString.js.map +2 -2
- package/package.json +5 -5
- package/dist/utils/arrayToObject.d.ts +0 -8
- package/dist/utils/arrayToObject.d.ts.map +0 -1
- package/dist/utils/arrayToObject.js +0 -10
- 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
|
|
5
|
-
"mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,gBAAgB;AAEzB,SAAS,YAAY,MAAM;AACzB,KAAG,2BAA2B,MAAM;AAClC,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMF;AAAA,EACF,CAAC;AAED,KAAG,0BAA0B,MAAM;AACjC,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMF;AAAA,EACF,CAAC;AAED,KAAG,eAAe,MAAM;AACtB,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO,MAAM,EAAE;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUF;AAAA,EACF,CAAC;AAED,KAAG,
|
|
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¶m2=special value¶m3=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¶m2=special%20value¶m3=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
|
|
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
|
-
|
|
137
|
-
writer := multipart.NewWriter(
|
|
132
|
+
payload := &bytes.Buffer{}
|
|
133
|
+
writer := multipart.NewWriter(payload)
|
|
134
|
+
|
|
135
|
+
part, _ := writer.CreateFormFile("file", "test.txt")
|
|
138
136
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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,
|
|
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
|
-
|
|
151
|
+
body, _ := io.ReadAll(res.Body)
|
|
152
152
|
|
|
153
153
|
fmt.Println(res)
|
|
154
|
-
fmt.Println(string(
|
|
154
|
+
fmt.Println(string(body))
|
|
155
|
+
|
|
155
156
|
}`
|
|
156
157
|
);
|
|
157
158
|
});
|
|
158
|
-
it
|
|
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
|
-
|
|
186
|
-
|
|
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¶m2=special%20value¶m3=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\"
|
|
5
|
-
"mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,gBAAgB;AAEzB,SAAS,YAAY,MAAM;AACzB,KAAG,2BAA2B,MAAM;AAClC,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
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¶m2=special value¶m3=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¶m2=special%20value¶m3=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¶m2=special value¶m3=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¶m2=special%20value¶m3=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¶m2=special value¶m3=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¶m2=special%20value¶m3=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
|
|
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,
|
|
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/plugins/js/axios/index.ts"],
|
|
4
|
-
"sourcesContent": ["export
|
|
5
|
-
"mappings": "AAAA,
|
|
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,
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
39
|
-
if (
|
|
40
|
-
|
|
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
|
|
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 {
|
|
5
|
-
"mappings": "AAAA,SAAS,
|
|
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
|
}
|