@scalar/snippetz 0.3.0 → 0.4.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 (87) hide show
  1. package/README.md +1 -1
  2. package/dist/clients.d.ts.map +1 -1
  3. package/dist/clients.js +9 -1
  4. package/dist/clients.js.map +2 -2
  5. package/dist/plugins/python/httpx/async.d.ts +6 -0
  6. package/dist/plugins/python/httpx/async.d.ts.map +1 -0
  7. package/dist/plugins/python/httpx/async.js +16 -0
  8. package/dist/plugins/python/httpx/async.js.map +7 -0
  9. package/dist/plugins/python/httpx/index.d.ts +3 -0
  10. package/dist/plugins/python/httpx/index.d.ts.map +1 -0
  11. package/dist/plugins/python/httpx/index.js +3 -0
  12. package/dist/plugins/python/httpx/index.js.map +7 -0
  13. package/dist/plugins/python/httpx/sync.d.ts +6 -0
  14. package/dist/plugins/python/httpx/sync.d.ts.map +1 -0
  15. package/dist/plugins/python/httpx/sync.js +13 -0
  16. package/dist/plugins/python/httpx/sync.js.map +7 -0
  17. package/dist/plugins/python/requests/requests.d.ts.map +1 -1
  18. package/dist/plugins/python/requests/requests.js +2 -93
  19. package/dist/plugins/python/requests/requests.js.map +3 -3
  20. package/dist/plugins/python/requestsLike.d.ts +3 -0
  21. package/dist/plugins/python/requestsLike.d.ts.map +1 -0
  22. package/dist/plugins/python/requestsLike.js +120 -0
  23. package/dist/plugins/python/requestsLike.js.map +7 -0
  24. package/dist/plugins/rust/reqwest/index.d.ts +2 -0
  25. package/dist/plugins/rust/reqwest/index.d.ts.map +1 -0
  26. package/dist/plugins/rust/reqwest/index.js +2 -0
  27. package/dist/plugins/rust/reqwest/index.js.map +7 -0
  28. package/dist/plugins/rust/reqwest/reqwest.d.ts +6 -0
  29. package/dist/plugins/rust/reqwest/reqwest.d.ts.map +1 -0
  30. package/dist/plugins/rust/reqwest/reqwest.js +90 -0
  31. package/dist/plugins/rust/reqwest/reqwest.js.map +7 -0
  32. package/dist/plugins/rust/rustString.d.ts +9 -0
  33. package/dist/plugins/rust/rustString.d.ts.map +1 -0
  34. package/dist/plugins/rust/rustString.js +10 -0
  35. package/dist/plugins/rust/rustString.js.map +7 -0
  36. package/dist/plugins/shell/curl/curl.js +1 -1
  37. package/dist/plugins/shell/curl/curl.js.map +2 -2
  38. package/dist/snippetz.d.ts +2 -2
  39. package/dist/utils/convertWithHttpSnippetLite.d.ts +1 -1
  40. package/dist/utils/convertWithHttpSnippetLite.js.map +1 -1
  41. package/package.json +14 -4
  42. package/dist/plugins/c/libcurl/libcurl.test.js +0 -208
  43. package/dist/plugins/c/libcurl/libcurl.test.js.map +0 -7
  44. package/dist/plugins/clojure/clj_http/clj_http.test.js +0 -151
  45. package/dist/plugins/clojure/clj_http/clj_http.test.js.map +0 -7
  46. package/dist/plugins/dart/http/http.test.js +0 -550
  47. package/dist/plugins/dart/http/http.test.js.map +0 -7
  48. package/dist/plugins/go/native/native.test.js +0 -366
  49. package/dist/plugins/go/native/native.test.js.map +0 -7
  50. package/dist/plugins/http/http11/http11.test.js +0 -175
  51. package/dist/plugins/http/http11/http11.test.js.map +0 -7
  52. package/dist/plugins/java/okhttp/okhttp.test.js +0 -164
  53. package/dist/plugins/java/okhttp/okhttp.test.js.map +0 -7
  54. package/dist/plugins/js/fetch/fetch.test.js +0 -214
  55. package/dist/plugins/js/fetch/fetch.test.js.map +0 -7
  56. package/dist/plugins/js/ofetch/ofetch.test.js +0 -126
  57. package/dist/plugins/js/ofetch/ofetch.test.js.map +0 -7
  58. package/dist/plugins/kotlin/okhttp/okhttp.test.js +0 -164
  59. package/dist/plugins/kotlin/okhttp/okhttp.test.js.map +0 -7
  60. package/dist/plugins/node/fetch/fetch.test.js +0 -200
  61. package/dist/plugins/node/fetch/fetch.test.js.map +0 -7
  62. package/dist/plugins/node/ofetch/ofetch.test.js +0 -126
  63. package/dist/plugins/node/ofetch/ofetch.test.js.map +0 -7
  64. package/dist/plugins/node/undici/undici.test.js +0 -133
  65. package/dist/plugins/node/undici/undici.test.js.map +0 -7
  66. package/dist/plugins/php/curl/curl.test.js +0 -564
  67. package/dist/plugins/php/curl/curl.test.js.map +0 -7
  68. package/dist/plugins/php/guzzle/guzzle.test.js +0 -546
  69. package/dist/plugins/php/guzzle/guzzle.test.js.map +0 -7
  70. package/dist/plugins/python/requests/requests.test.js +0 -419
  71. package/dist/plugins/python/requests/requests.test.js.map +0 -7
  72. package/dist/plugins/ruby/native/native.test.js +0 -240
  73. package/dist/plugins/ruby/native/native.test.js.map +0 -7
  74. package/dist/plugins/shell/curl/curl.test.js +0 -427
  75. package/dist/plugins/shell/curl/curl.test.js.map +0 -7
  76. package/dist/plugins/shell/httpie/httpie.test.js +0 -113
  77. package/dist/plugins/shell/httpie/httpie.test.js.map +0 -7
  78. package/dist/plugins/shell/wget/wget.test.js +0 -143
  79. package/dist/plugins/shell/wget/wget.test.js.map +0 -7
  80. package/dist/plugins/swift/nsurlsession/nsurlsession.test.js +0 -344
  81. package/dist/plugins/swift/nsurlsession/nsurlsession.test.js.map +0 -7
  82. package/dist/snippetz.test.js +0 -79
  83. package/dist/snippetz.test.js.map +0 -7
  84. package/dist/utils/convertWithHttpSnippetLite.test.js +0 -106
  85. package/dist/utils/convertWithHttpSnippetLite.test.js.map +0 -7
  86. package/dist/utils/create-search-params.test.js +0 -49
  87. package/dist/utils/create-search-params.test.js.map +0 -7
@@ -1,366 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { goNative } from "./native.js";
3
- describe("goNative", () => {
4
- it("returns a basic request", () => {
5
- const result = goNative.generate({
6
- url: "https://example.com"
7
- });
8
- expect(result).toBe(
9
- `package main
10
-
11
- import (
12
- "fmt"
13
- "io"
14
- "net/http"
15
- )
16
-
17
- func main() {
18
- url := "https://example.com"
19
-
20
- req, _ := http.NewRequest("GET", url, nil)
21
-
22
- res, _ := http.DefaultClient.Do(req)
23
-
24
- defer res.Body.Close()
25
- body, _ := io.ReadAll(res.Body)
26
-
27
- fmt.Println(res)
28
- fmt.Println(string(body))
29
-
30
- }`
31
- );
32
- });
33
- it("returns a POST request", () => {
34
- const result = goNative.generate({
35
- url: "https://example.com",
36
- method: "post"
37
- });
38
- expect(result).toBe(
39
- `package main
40
-
41
- import (
42
- "fmt"
43
- "io"
44
- "net/http"
45
- )
46
-
47
- func main() {
48
- url := "https://example.com"
49
-
50
- req, _ := http.NewRequest("POST", url, nil)
51
-
52
- res, _ := http.DefaultClient.Do(req)
53
-
54
- defer res.Body.Close()
55
- body, _ := io.ReadAll(res.Body)
56
-
57
- fmt.Println(res)
58
- fmt.Println(string(body))
59
-
60
- }`
61
- );
62
- });
63
- it("has headers", () => {
64
- const result = goNative.generate({
65
- url: "https://example.com",
66
- headers: [
67
- {
68
- name: "Content-Type",
69
- value: "application/json"
70
- }
71
- ]
72
- });
73
- expect(result).toBe(
74
- `package main
75
-
76
- import (
77
- "fmt"
78
- "io"
79
- "net/http"
80
- )
81
-
82
- func main() {
83
- url := "https://example.com"
84
-
85
- req, _ := http.NewRequest("GET", url, nil)
86
-
87
- req.Header.Add("Content-Type", "application/json")
88
-
89
- res, _ := http.DefaultClient.Do(req)
90
-
91
- defer res.Body.Close()
92
- body, _ := io.ReadAll(res.Body)
93
-
94
- fmt.Println(res)
95
- fmt.Println(string(body))
96
-
97
- }`
98
- );
99
- });
100
- it("handles multipart form data with files", () => {
101
- const result = goNative.generate({
102
- url: "https://example.com",
103
- method: "POST",
104
- postData: {
105
- mimeType: "multipart/form-data",
106
- params: [
107
- {
108
- name: "file",
109
- fileName: "test.txt"
110
- },
111
- {
112
- name: "field",
113
- value: "value"
114
- }
115
- ]
116
- }
117
- });
118
- expect(result).toBe(
119
- `package main
120
-
121
- import (
122
- "bytes"
123
- "fmt"
124
- "io"
125
- "mime/multipart"
126
- "net/http"
127
- )
128
-
129
- func main() {
130
- url := "https://example.com"
131
-
132
- payload := &bytes.Buffer{}
133
- writer := multipart.NewWriter(payload)
134
-
135
- part, _ := writer.CreateFormFile("file", "test.txt")
136
-
137
- f, _ := os.Open("test.txt")
138
- defer f.Close()
139
-
140
- _, _ = io.Copy(part, f)
141
-
142
- _ = writer.WriteField("field", "value")
143
- writer.Close()
144
-
145
- req, _ := http.NewRequest("POST", url, payload)
146
-
147
- req.Header.Set("Content-Type", writer.FormDataContentType())
148
- res, _ := http.DefaultClient.Do(req)
149
-
150
- defer res.Body.Close()
151
- body, _ := io.ReadAll(res.Body)
152
-
153
- fmt.Println(res)
154
- fmt.Println(string(body))
155
-
156
- }`
157
- );
158
- });
159
- it("handles url-encoded form data with special characters", () => {
160
- const result = goNative.generate({
161
- url: "https://example.com",
162
- method: "POST",
163
- postData: {
164
- mimeType: "application/x-www-form-urlencoded",
165
- params: [
166
- {
167
- name: "special chars!@#",
168
- value: "value"
169
- }
170
- ]
171
- }
172
- });
173
- expect(result).toBe(
174
- `package main
175
-
176
- import (
177
- "fmt"
178
- "io"
179
- "net/http"
180
- "net/url"
181
- "strings"
182
- )
183
-
184
- func main() {
185
- url := "https://example.com"
186
-
187
- postData := url.Values{}
188
- postData.Set("special chars!@#", "value")
189
-
190
- req, _ := http.NewRequest("POST", url, strings.NewReader(postData.Encode()))
191
-
192
- res, _ := http.DefaultClient.Do(req)
193
-
194
- defer res.Body.Close()
195
- body, _ := io.ReadAll(res.Body)
196
-
197
- fmt.Println(res)
198
- fmt.Println(string(body))
199
-
200
- }`
201
- );
202
- });
203
- it("handles binary data", () => {
204
- const result = goNative.generate({
205
- url: "https://example.com",
206
- method: "POST",
207
- postData: {
208
- mimeType: "application/octet-stream",
209
- text: "binary content"
210
- }
211
- });
212
- expect(result).toBe(
213
- `package main
214
-
215
- import (
216
- "fmt"
217
- "io"
218
- "net/http"
219
- "strings"
220
- )
221
-
222
- func main() {
223
- url := "https://example.com"
224
-
225
- payload := strings.NewReader("binary content")
226
-
227
- req, _ := http.NewRequest("POST", url, payload)
228
-
229
- res, _ := http.DefaultClient.Do(req)
230
-
231
- defer res.Body.Close()
232
- body, _ := io.ReadAll(res.Body)
233
-
234
- fmt.Println(res)
235
- fmt.Println(string(body))
236
-
237
- }`
238
- );
239
- });
240
- it("handles special characters in URL", () => {
241
- const result = goNative.generate({
242
- url: "https://example.com/path with spaces/[brackets]"
243
- });
244
- expect(result).toBe(
245
- `package main
246
-
247
- import (
248
- "fmt"
249
- "io"
250
- "net/http"
251
- )
252
-
253
- func main() {
254
- url := "https://example.com/path%20with%20spaces/[brackets]"
255
-
256
- req, _ := http.NewRequest("GET", url, nil)
257
-
258
- res, _ := http.DefaultClient.Do(req)
259
-
260
- defer res.Body.Close()
261
- body, _ := io.ReadAll(res.Body)
262
-
263
- fmt.Println(res)
264
- fmt.Println(string(body))
265
-
266
- }`
267
- );
268
- });
269
- it("handles multiple headers with same name", () => {
270
- const result = goNative.generate({
271
- url: "https://example.com",
272
- headers: [
273
- { name: "X-Custom", value: "value1" },
274
- { name: "X-Custom", value: "value2" }
275
- ]
276
- });
277
- expect(result).toBe(
278
- `package main
279
-
280
- import (
281
- "fmt"
282
- "io"
283
- "net/http"
284
- )
285
-
286
- func main() {
287
- url := "https://example.com"
288
-
289
- req, _ := http.NewRequest("GET", url, nil)
290
-
291
- req.Header.Add("X-Custom", "value2")
292
-
293
- res, _ := http.DefaultClient.Do(req)
294
-
295
- defer res.Body.Close()
296
- body, _ := io.ReadAll(res.Body)
297
-
298
- fmt.Println(res)
299
- fmt.Println(string(body))
300
-
301
- }`
302
- );
303
- });
304
- it("handles headers with empty values", () => {
305
- const result = goNative.generate({
306
- url: "https://example.com",
307
- headers: [{ name: "X-Empty", value: "" }]
308
- });
309
- expect(result).toBe(
310
- `package main
311
-
312
- import (
313
- "fmt"
314
- "io"
315
- "net/http"
316
- )
317
-
318
- func main() {
319
- url := "https://example.com"
320
-
321
- req, _ := http.NewRequest("GET", url, nil)
322
-
323
- req.Header.Add("X-Empty", "")
324
-
325
- res, _ := http.DefaultClient.Do(req)
326
-
327
- defer res.Body.Close()
328
- body, _ := io.ReadAll(res.Body)
329
-
330
- fmt.Println(res)
331
- fmt.Println(string(body))
332
-
333
- }`
334
- );
335
- });
336
- it("handles query string parameters", () => {
337
- const result = goNative.generate({
338
- url: "https://example.com/api?param1=value1&param2=special value&param3=123"
339
- });
340
- expect(result).toBe(
341
- `package main
342
-
343
- import (
344
- "fmt"
345
- "io"
346
- "net/http"
347
- )
348
-
349
- func main() {
350
- url := "https://example.com/api?param1=value1&param2=special%20value&param3=123"
351
-
352
- req, _ := http.NewRequest("GET", url, nil)
353
-
354
- res, _ := http.DefaultClient.Do(req)
355
-
356
- defer res.Body.Close()
357
- body, _ := io.ReadAll(res.Body)
358
-
359
- fmt.Println(res)
360
- fmt.Println(string(body))
361
-
362
- }`
363
- );
364
- });
365
- });
366
- //# sourceMappingURL=native.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 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\"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": "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,IAsBF;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBF;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAwBF;AAAA,EACF,CAAC;AAED,KAAG,0CAA0C,MAAM;AACjD,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,UAAU;AAAA,UACZ;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsCF;AAAA,EACF,CAAC;AAED,KAAG,yDAAyD,MAAM;AAChE,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF,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;AAAA;AAAA;AAAA;AAAA;AAAA,IA2BF;AAAA,EACF,CAAC;AAED,KAAG,uBAAuB,MAAM;AAC9B,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF,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;AAAA;AAAA;AAAA,IAyBF;AAAA,EACF,CAAC;AAED,KAAG,qCAAqC,MAAM;AAC5C,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,IAsBF;AAAA,EACF,CAAC;AAED,KAAG,2CAA2C,MAAM;AAClD,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,SAAS;AAAA,QACP,EAAE,MAAM,YAAY,OAAO,SAAS;AAAA,QACpC,EAAE,MAAM,YAAY,OAAO,SAAS;AAAA,MACtC;AAAA,IACF,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;AAAA;AAAA,IAwBF;AAAA,EACF,CAAC;AAED,KAAG,qCAAqC,MAAM;AAC5C,UAAM,SAAS,SAAS,SAAS;AAAA,MAC/B,KAAK;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,WAAW,OAAO,GAAG,CAAC;AAAA,IAC1C,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;AAAA;AAAA,IAwBF;AAAA,EACF,CAAC;AAED,KAAG,mCAAmC,MAAM;AAC1C,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,IAsBF;AAAA,EACF,CAAC;AACH,CAAC;",
6
- "names": []
7
- }
@@ -1,175 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { httpHttp11 } from "./http11.js";
3
- describe("httpHttp11", () => {
4
- it("returns a basic request", () => {
5
- const result = httpHttp11.generate({
6
- url: "https://example.com"
7
- });
8
- expect(result).toBe("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n");
9
- });
10
- it("returns a POST request", () => {
11
- const result = httpHttp11.generate({
12
- url: "https://example.com",
13
- method: "post"
14
- });
15
- expect(result).toBe("POST / HTTP/1.1\r\nHost: example.com\r\n\r\n");
16
- });
17
- it("has headers", () => {
18
- const result = httpHttp11.generate({
19
- url: "https://example.com",
20
- headers: [
21
- {
22
- name: "Content-Type",
23
- value: "application/json"
24
- }
25
- ]
26
- });
27
- expect(result).toBe("GET / HTTP/1.1\r\nHost: example.com\r\nContent-Type: application/json\r\n\r\n");
28
- });
29
- it("it doesn\u2019t add the JSON header twice", () => {
30
- const result = httpHttp11.generate({
31
- url: "https://example.com",
32
- method: "post",
33
- headers: [
34
- {
35
- name: "Content-Type",
36
- value: "application/json"
37
- }
38
- ],
39
- postData: {
40
- mimeType: "application/json",
41
- text: '{"foo": "bar"}'
42
- }
43
- });
44
- expect(result).toBe(
45
- 'POST / HTTP/1.1\r\nHost: example.com\r\nContent-Type: application/json\r\n\r\n{"foo": "bar"}'
46
- );
47
- });
48
- it("handles multipart form data with files", () => {
49
- const result = httpHttp11.generate({
50
- url: "https://example.com",
51
- method: "POST",
52
- postData: {
53
- mimeType: "multipart/form-data",
54
- params: [
55
- {
56
- name: "file",
57
- fileName: "test.txt"
58
- },
59
- {
60
- name: "field",
61
- value: "value"
62
- }
63
- ]
64
- }
65
- });
66
- expect(result).toMatch(
67
- 'POST / HTTP/1.1\r\nHost: example.com\r\nContent-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="file"; filename="test.txt"\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="field"\r\n\r\nvalue\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--\r\n'
68
- );
69
- });
70
- it("handles url-encoded form data with special characters", () => {
71
- const result = httpHttp11.generate({
72
- url: "https://example.com",
73
- method: "POST",
74
- postData: {
75
- mimeType: "application/x-www-form-urlencoded",
76
- params: [
77
- {
78
- name: "special chars!@#",
79
- value: "value"
80
- }
81
- ]
82
- }
83
- });
84
- expect(result).toBe(
85
- "POST / HTTP/1.1\r\nHost: example.com\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nspecial%20chars!%40%23=value"
86
- );
87
- });
88
- it("handles binary data", () => {
89
- const result = httpHttp11.generate({
90
- url: "https://example.com",
91
- method: "POST",
92
- postData: {
93
- mimeType: "application/octet-stream",
94
- text: "binary content"
95
- }
96
- });
97
- expect(result).toBe(
98
- "POST / HTTP/1.1\r\nHost: example.com\r\nContent-Type: application/octet-stream\r\n\r\nbinary content"
99
- );
100
- });
101
- it("handles special characters in URL", () => {
102
- const result = httpHttp11.generate({
103
- url: "https://example.com/path with spaces/[brackets]"
104
- });
105
- expect(result).toBe("GET /path%20with%20spaces/[brackets] HTTP/1.1\r\nHost: example.com\r\n\r\n");
106
- });
107
- it("handles multiple headers with same name", () => {
108
- const result = httpHttp11.generate({
109
- url: "https://example.com",
110
- headers: [
111
- { name: "X-Custom", value: "value1" },
112
- { name: "X-Custom", value: "value2" }
113
- ]
114
- });
115
- expect(result).toBe(
116
- "GET / HTTP/1.1\r\nHost: example.com\r\nX-Custom: value1, value2\r\n\r\n"
117
- );
118
- });
119
- it("handles headers with empty values", () => {
120
- const result = httpHttp11.generate({
121
- url: "https://example.com",
122
- headers: [{ name: "X-Empty", value: "" }]
123
- });
124
- expect(result).toBe("GET / HTTP/1.1\r\nHost: example.com\r\nX-Empty: \r\n\r\n");
125
- });
126
- it("handles query string parameters", () => {
127
- const result = httpHttp11.generate({
128
- url: "https://example.com/api?param1=value1&param2=special value&param3=123"
129
- });
130
- expect(result).toBe(
131
- "GET /api?param1=value1&param2=special%20value&param3=123 HTTP/1.1\r\nHost: example.com\r\n\r\n"
132
- );
133
- });
134
- it("handles invalid URL", () => {
135
- const result = httpHttp11.generate({
136
- url: "/foo"
137
- });
138
- expect(result).toBe("GET /foo HTTP/1.1\r\nHost: UNKNOWN_HOSTNAME\r\n\r\n");
139
- });
140
- it("handles empty URL", () => {
141
- const result = httpHttp11.generate({
142
- url: ""
143
- });
144
- expect(result).toBe("GET / HTTP/1.1\r\nHost: UNKNOWN_HOSTNAME\r\n\r\n");
145
- });
146
- it("handles extremely long URLs", () => {
147
- const longUrl = "https://example.com/" + "a".repeat(2e3);
148
- const result = httpHttp11.generate({
149
- url: longUrl
150
- });
151
- expect(result).toBe(`GET /${"a".repeat(2e3)} HTTP/1.1\r
152
- Host: example.com\r
153
- \r
154
- `);
155
- });
156
- it("handles special characters in query parameters", () => {
157
- const result = httpHttp11.generate({
158
- url: "https://example.com",
159
- queryString: [
160
- {
161
- name: "q",
162
- value: "hello world & more"
163
- },
164
- {
165
- name: "special",
166
- value: "!@#$%^&*()"
167
- }
168
- ]
169
- });
170
- expect(result).toBe(
171
- "GET /?q=hello%20world%20%26%20more&special=!%40%23%24%25%5E%26*() HTTP/1.1\r\nHost: example.com\r\n\r\n"
172
- );
173
- });
174
- });
175
- //# sourceMappingURL=http11.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/plugins/http/http11/http11.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { httpHttp11 } from './http11'\n\ndescribe('httpHttp11', () => {\n it('returns a basic request', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com',\n })\n\n expect(result).toBe('GET / HTTP/1.1\\r\\n' + 'Host: example.com\\r\\n' + '\\r\\n')\n })\n\n it('returns a POST request', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com',\n method: 'post',\n })\n\n expect(result).toBe('POST / HTTP/1.1\\r\\n' + 'Host: example.com\\r\\n' + '\\r\\n')\n })\n\n it('has headers', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com',\n headers: [\n {\n name: 'Content-Type',\n value: 'application/json',\n },\n ],\n })\n expect(result).toBe('GET / HTTP/1.1\\r\\n' + 'Host: example.com\\r\\n' + 'Content-Type: application/json\\r\\n' + '\\r\\n')\n })\n\n it('it doesn\u2019t add the JSON header twice', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com',\n method: 'post',\n headers: [\n {\n name: 'Content-Type',\n value: 'application/json',\n },\n ],\n postData: {\n mimeType: 'application/json',\n text: '{\"foo\": \"bar\"}',\n },\n })\n\n expect(result).toBe(\n 'POST / HTTP/1.1\\r\\n' +\n 'Host: example.com\\r\\n' +\n 'Content-Type: application/json\\r\\n' +\n '\\r\\n' +\n '{\"foo\": \"bar\"}',\n )\n })\n\n it('handles multipart form data with files', () => {\n const result = httpHttp11.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).toMatch(\n 'POST / HTTP/1.1\\r\\n' +\n 'Host: example.com\\r\\n' +\n 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW\\r\\n' +\n '\\r\\n' +\n '------WebKitFormBoundary7MA4YWxkTrZu0gW\\r\\n' +\n 'Content-Disposition: form-data; name=\"file\"; filename=\"test.txt\"\\r\\n' +\n '\\r\\n' +\n '------WebKitFormBoundary7MA4YWxkTrZu0gW\\r\\n' +\n 'Content-Disposition: form-data; name=\"field\"\\r\\n' +\n '\\r\\n' +\n 'value\\r\\n' +\n '------WebKitFormBoundary7MA4YWxkTrZu0gW--\\r\\n',\n )\n })\n\n it('handles url-encoded form data with special characters', () => {\n const result = httpHttp11.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 'POST / HTTP/1.1\\r\\n' +\n 'Host: example.com\\r\\n' +\n 'Content-Type: application/x-www-form-urlencoded\\r\\n' +\n '\\r\\n' +\n 'special%20chars!%40%23=value',\n )\n })\n\n it('handles binary data', () => {\n const result = httpHttp11.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 'POST / HTTP/1.1\\r\\n' +\n 'Host: example.com\\r\\n' +\n 'Content-Type: application/octet-stream\\r\\n' +\n '\\r\\n' +\n 'binary content',\n )\n })\n\n it('handles special characters in URL', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com/path with spaces/[brackets]',\n })\n\n expect(result).toBe('GET /path%20with%20spaces/[brackets] HTTP/1.1\\r\\n' + 'Host: example.com\\r\\n' + '\\r\\n')\n })\n\n it('handles multiple headers with same name', () => {\n const result = httpHttp11.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 'GET / HTTP/1.1\\r\\n' +\n 'Host: example.com\\r\\n' +\n // RFC 7230 states a server must not generate multiple header fields with the same field name unless either the entire field value for that header field is defined as a comma-separated list, or the header field is a well-known exception.\n 'X-Custom: value1, value2\\r\\n' +\n '\\r\\n',\n )\n })\n\n it('handles headers with empty values', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com',\n headers: [{ name: 'X-Empty', value: '' }],\n })\n\n expect(result).toBe('GET / HTTP/1.1\\r\\n' + 'Host: example.com\\r\\n' + 'X-Empty: \\r\\n' + '\\r\\n')\n })\n\n it('handles query string parameters', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com/api?param1=value1&param2=special value&param3=123',\n })\n\n expect(result).toBe(\n 'GET /api?param1=value1&param2=special%20value&param3=123 HTTP/1.1\\r\\n' + 'Host: example.com\\r\\n' + '\\r\\n',\n )\n })\n\n it('handles invalid URL', () => {\n const result = httpHttp11.generate({\n url: '/foo',\n })\n\n expect(result).toBe('GET /foo HTTP/1.1\\r\\n' + 'Host: UNKNOWN_HOSTNAME\\r\\n' + '\\r\\n')\n })\n\n it('handles empty URL', () => {\n const result = httpHttp11.generate({\n url: '',\n })\n\n expect(result).toBe('GET / HTTP/1.1\\r\\n' + 'Host: UNKNOWN_HOSTNAME\\r\\n' + '\\r\\n')\n })\n\n it('handles extremely long URLs', () => {\n const longUrl = 'https://example.com/' + 'a'.repeat(2000)\n const result = httpHttp11.generate({\n url: longUrl,\n })\n\n expect(result).toBe(`GET /${'a'.repeat(2000)} HTTP/1.1\\r\\n` + 'Host: example.com\\r\\n' + '\\r\\n')\n })\n\n it('handles special characters in query parameters', () => {\n const result = httpHttp11.generate({\n url: 'https://example.com',\n queryString: [\n {\n name: 'q',\n value: 'hello world & more',\n },\n {\n name: 'special',\n value: '!@#$%^&*()',\n },\n ],\n })\n\n expect(result).toBe(\n 'GET /?q=hello%20world%20%26%20more&special=!%40%23%24%25%5E%26*() HTTP/1.1\\r\\n' + 'Host: example.com\\r\\n\\r\\n',\n )\n })\n})\n"],
5
- "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,kBAAkB;AAE3B,SAAS,cAAc,MAAM;AAC3B,KAAG,2BAA2B,MAAM;AAClC,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE,KAAK,6CAAuD;AAAA,EAC7E,CAAC;AAED,KAAG,0BAA0B,MAAM;AACjC,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,MAAM,EAAE,KAAK,8CAAwD;AAAA,EAC9E,CAAC;AAED,KAAG,eAAe,MAAM;AACtB,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO,MAAM,EAAE,KAAK,+EAA8F;AAAA,EACpH,CAAC;AAED,KAAG,6CAAwC,MAAM;AAC/C,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA,IAKF;AAAA,EACF,CAAC;AAED,KAAG,0CAA0C,MAAM;AACjD,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,UAAU;AAAA,UACZ;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA,IAYF;AAAA,EACF,CAAC;AAED,KAAG,yDAAyD,MAAM;AAChE,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA,IAKF;AAAA,EACF,CAAC;AAED,KAAG,uBAAuB,MAAM;AAC9B,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA,IAKF;AAAA,EACF,CAAC;AAED,KAAG,qCAAqC,MAAM;AAC5C,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE,KAAK,4EAAsF;AAAA,EAC5G,CAAC;AAED,KAAG,2CAA2C,MAAM;AAClD,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,SAAS;AAAA,QACP,EAAE,MAAM,YAAY,OAAO,SAAS;AAAA,QACpC,EAAE,MAAM,YAAY,OAAO,SAAS;AAAA,MACtC;AAAA,IACF,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA,IAKF;AAAA,EACF,CAAC;AAED,KAAG,qCAAqC,MAAM;AAC5C,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,WAAW,OAAO,GAAG,CAAC;AAAA,IAC1C,CAAC;AAED,WAAO,MAAM,EAAE,KAAK,0DAAyE;AAAA,EAC/F,CAAC;AAED,KAAG,mCAAmC,MAAM;AAC1C,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA,IACF;AAAA,EACF,CAAC;AAED,KAAG,uBAAuB,MAAM;AAC9B,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE,KAAK,qDAA+D;AAAA,EACrF,CAAC;AAED,KAAG,qBAAqB,MAAM;AAC5B,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE,KAAK,kDAA4D;AAAA,EAClF,CAAC;AAED,KAAG,+BAA+B,MAAM;AACtC,UAAM,UAAU,yBAAyB,IAAI,OAAO,GAAI;AACxD,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,IACP,CAAC;AAED,WAAO,MAAM,EAAE,KAAK,QAAQ,IAAI,OAAO,GAAI,CAAC;AAAA;AAAA;AAAA,CAAkD;AAAA,EAChG,CAAC;AAED,KAAG,kDAAkD,MAAM;AACzD,UAAM,SAAS,WAAW,SAAS;AAAA,MACjC,KAAK;AAAA,MACL,aAAa;AAAA,QACX;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAED,WAAO,MAAM,EAAE;AAAA,MACb;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;",
6
- "names": []
7
- }