@ohos-ports/curlconverter 4.12.0-beta.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 (270) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/dist/src/Headers.d.ts +23 -0
  4. package/dist/src/Headers.js +287 -0
  5. package/dist/src/Headers.js.map +1 -0
  6. package/dist/src/Query.d.ts +8 -0
  7. package/dist/src/Query.js +136 -0
  8. package/dist/src/Query.js.map +1 -0
  9. package/dist/src/Request.d.ts +200 -0
  10. package/dist/src/Request.js +1191 -0
  11. package/dist/src/Request.js.map +1 -0
  12. package/dist/src/Warnings.d.ts +15 -0
  13. package/dist/src/Warnings.js +111 -0
  14. package/dist/src/Warnings.js.map +1 -0
  15. package/dist/src/cli.d.ts +2 -0
  16. package/dist/src/cli.js +333 -0
  17. package/dist/src/cli.js.map +1 -0
  18. package/dist/src/curl/auth.d.ts +12 -0
  19. package/dist/src/curl/auth.js +40 -0
  20. package/dist/src/curl/auth.js.map +1 -0
  21. package/dist/src/curl/form.d.ts +28 -0
  22. package/dist/src/curl/form.js +218 -0
  23. package/dist/src/curl/form.js.map +1 -0
  24. package/dist/src/curl/opts.d.ts +2052 -0
  25. package/dist/src/curl/opts.js +1000 -0
  26. package/dist/src/curl/opts.js.map +1 -0
  27. package/dist/src/curl/url.d.ts +14 -0
  28. package/dist/src/curl/url.js +218 -0
  29. package/dist/src/curl/url.js.map +1 -0
  30. package/dist/src/generators/ansible.d.ts +5 -0
  31. package/dist/src/generators/ansible.js +282 -0
  32. package/dist/src/generators/ansible.js.map +1 -0
  33. package/dist/src/generators/c.d.ts +12 -0
  34. package/dist/src/generators/c.js +1230 -0
  35. package/dist/src/generators/c.js.map +1 -0
  36. package/dist/src/generators/cfml.d.ts +5 -0
  37. package/dist/src/generators/cfml.js +134 -0
  38. package/dist/src/generators/cfml.js.map +1 -0
  39. package/dist/src/generators/clojure.d.ts +7 -0
  40. package/dist/src/generators/clojure.js +436 -0
  41. package/dist/src/generators/clojure.js.map +1 -0
  42. package/dist/src/generators/csharp.d.ts +8 -0
  43. package/dist/src/generators/csharp.js +356 -0
  44. package/dist/src/generators/csharp.js.map +1 -0
  45. package/dist/src/generators/dart.d.ts +5 -0
  46. package/dist/src/generators/dart.js +273 -0
  47. package/dist/src/generators/dart.js.map +1 -0
  48. package/dist/src/generators/elixir.d.ts +8 -0
  49. package/dist/src/generators/elixir.js +296 -0
  50. package/dist/src/generators/elixir.js.map +1 -0
  51. package/dist/src/generators/go.d.ts +5 -0
  52. package/dist/src/generators/go.js +228 -0
  53. package/dist/src/generators/go.js.map +1 -0
  54. package/dist/src/generators/har.d.ts +7 -0
  55. package/dist/src/generators/har.js +115 -0
  56. package/dist/src/generators/har.js.map +1 -0
  57. package/dist/src/generators/http.d.ts +7 -0
  58. package/dist/src/generators/http.js +165 -0
  59. package/dist/src/generators/http.js.map +1 -0
  60. package/dist/src/generators/httpie.d.ts +5 -0
  61. package/dist/src/generators/httpie.js +446 -0
  62. package/dist/src/generators/httpie.js.map +1 -0
  63. package/dist/src/generators/java/httpurlconnection.d.ts +5 -0
  64. package/dist/src/generators/java/httpurlconnection.js +123 -0
  65. package/dist/src/generators/java/httpurlconnection.js.map +1 -0
  66. package/dist/src/generators/java/java.d.ts +8 -0
  67. package/dist/src/generators/java/java.js +247 -0
  68. package/dist/src/generators/java/java.js.map +1 -0
  69. package/dist/src/generators/java/jsoup.d.ts +5 -0
  70. package/dist/src/generators/java/jsoup.js +152 -0
  71. package/dist/src/generators/java/jsoup.js.map +1 -0
  72. package/dist/src/generators/java/okhttp.d.ts +5 -0
  73. package/dist/src/generators/java/okhttp.js +232 -0
  74. package/dist/src/generators/java/okhttp.js.map +1 -0
  75. package/dist/src/generators/javascript/axios.d.ts +5 -0
  76. package/dist/src/generators/javascript/axios.js +332 -0
  77. package/dist/src/generators/javascript/axios.js.map +1 -0
  78. package/dist/src/generators/javascript/got.d.ts +5 -0
  79. package/dist/src/generators/javascript/got.js +277 -0
  80. package/dist/src/generators/javascript/got.js.map +1 -0
  81. package/dist/src/generators/javascript/http.d.ts +8 -0
  82. package/dist/src/generators/javascript/http.js +183 -0
  83. package/dist/src/generators/javascript/http.js.map +1 -0
  84. package/dist/src/generators/javascript/javascript.d.ts +37 -0
  85. package/dist/src/generators/javascript/javascript.js +676 -0
  86. package/dist/src/generators/javascript/javascript.js.map +1 -0
  87. package/dist/src/generators/javascript/jquery.d.ts +15 -0
  88. package/dist/src/generators/javascript/jquery.js +297 -0
  89. package/dist/src/generators/javascript/jquery.js.map +1 -0
  90. package/dist/src/generators/javascript/ky.d.ts +7 -0
  91. package/dist/src/generators/javascript/ky.js +245 -0
  92. package/dist/src/generators/javascript/ky.js.map +1 -0
  93. package/dist/src/generators/javascript/request.d.ts +5 -0
  94. package/dist/src/generators/javascript/request.js +113 -0
  95. package/dist/src/generators/javascript/request.js.map +1 -0
  96. package/dist/src/generators/javascript/superagent.d.ts +10 -0
  97. package/dist/src/generators/javascript/superagent.js +301 -0
  98. package/dist/src/generators/javascript/superagent.js.map +1 -0
  99. package/dist/src/generators/javascript/xhr.d.ts +8 -0
  100. package/dist/src/generators/javascript/xhr.js +147 -0
  101. package/dist/src/generators/javascript/xhr.js.map +1 -0
  102. package/dist/src/generators/json.d.ts +45 -0
  103. package/dist/src/generators/json.js +197 -0
  104. package/dist/src/generators/json.js.map +1 -0
  105. package/dist/src/generators/julia.d.ts +8 -0
  106. package/dist/src/generators/julia.js +365 -0
  107. package/dist/src/generators/julia.js.map +1 -0
  108. package/dist/src/generators/kotlin.d.ts +8 -0
  109. package/dist/src/generators/kotlin.js +325 -0
  110. package/dist/src/generators/kotlin.js.map +1 -0
  111. package/dist/src/generators/lua.d.ts +5 -0
  112. package/dist/src/generators/lua.js +192 -0
  113. package/dist/src/generators/lua.js.map +1 -0
  114. package/dist/src/generators/matlab/common.d.ts +16 -0
  115. package/dist/src/generators/matlab/common.js +238 -0
  116. package/dist/src/generators/matlab/common.js.map +1 -0
  117. package/dist/src/generators/matlab/httpinterface.d.ts +2 -0
  118. package/dist/src/generators/matlab/httpinterface.js +211 -0
  119. package/dist/src/generators/matlab/httpinterface.js.map +1 -0
  120. package/dist/src/generators/matlab/matlab.d.ts +5 -0
  121. package/dist/src/generators/matlab/matlab.js +29 -0
  122. package/dist/src/generators/matlab/matlab.js.map +1 -0
  123. package/dist/src/generators/matlab/webservices.d.ts +2 -0
  124. package/dist/src/generators/matlab/webservices.js +191 -0
  125. package/dist/src/generators/matlab/webservices.js.map +1 -0
  126. package/dist/src/generators/objectivec.d.ts +8 -0
  127. package/dist/src/generators/objectivec.js +269 -0
  128. package/dist/src/generators/objectivec.js.map +1 -0
  129. package/dist/src/generators/ocaml.d.ts +8 -0
  130. package/dist/src/generators/ocaml.js +150 -0
  131. package/dist/src/generators/ocaml.js.map +1 -0
  132. package/dist/src/generators/perl.d.ts +9 -0
  133. package/dist/src/generators/perl.js +209 -0
  134. package/dist/src/generators/perl.js.map +1 -0
  135. package/dist/src/generators/php/guzzle.d.ts +5 -0
  136. package/dist/src/generators/php/guzzle.js +328 -0
  137. package/dist/src/generators/php/guzzle.js.map +1 -0
  138. package/dist/src/generators/php/php.d.ts +8 -0
  139. package/dist/src/generators/php/php.js +217 -0
  140. package/dist/src/generators/php/php.js.map +1 -0
  141. package/dist/src/generators/php/requests.d.ts +5 -0
  142. package/dist/src/generators/php/requests.js +89 -0
  143. package/dist/src/generators/php/requests.js.map +1 -0
  144. package/dist/src/generators/powershell.d.ts +11 -0
  145. package/dist/src/generators/powershell.js +377 -0
  146. package/dist/src/generators/powershell.js.map +1 -0
  147. package/dist/src/generators/python/http.d.ts +5 -0
  148. package/dist/src/generators/python/http.js +128 -0
  149. package/dist/src/generators/python/http.js.map +1 -0
  150. package/dist/src/generators/python/python.d.ts +22 -0
  151. package/dist/src/generators/python/python.js +1693 -0
  152. package/dist/src/generators/python/python.js.map +1 -0
  153. package/dist/src/generators/r/httr.d.ts +10 -0
  154. package/dist/src/generators/r/httr.js +298 -0
  155. package/dist/src/generators/r/httr.js.map +1 -0
  156. package/dist/src/generators/r/httr2.d.ts +5 -0
  157. package/dist/src/generators/r/httr2.js +214 -0
  158. package/dist/src/generators/r/httr2.js.map +1 -0
  159. package/dist/src/generators/ruby/httparty.d.ts +6 -0
  160. package/dist/src/generators/ruby/httparty.js +308 -0
  161. package/dist/src/generators/ruby/httparty.js.map +1 -0
  162. package/dist/src/generators/ruby/ruby.d.ts +14 -0
  163. package/dist/src/generators/ruby/ruby.js +515 -0
  164. package/dist/src/generators/ruby/ruby.js.map +1 -0
  165. package/dist/src/generators/rust.d.ts +8 -0
  166. package/dist/src/generators/rust.js +177 -0
  167. package/dist/src/generators/rust.js.map +1 -0
  168. package/dist/src/generators/swift.d.ts +8 -0
  169. package/dist/src/generators/swift.js +219 -0
  170. package/dist/src/generators/swift.js.map +1 -0
  171. package/dist/src/generators/wget.d.ts +8 -0
  172. package/dist/src/generators/wget.js +472 -0
  173. package/dist/src/generators/wget.js.map +1 -0
  174. package/dist/src/index.d.ts +53 -0
  175. package/dist/src/index.js +54 -0
  176. package/dist/src/index.js.map +1 -0
  177. package/dist/src/parse.d.ts +13 -0
  178. package/dist/src/parse.js +43 -0
  179. package/dist/src/parse.js.map +1 -0
  180. package/dist/src/shell/Parser.d.ts +4 -0
  181. package/dist/src/shell/Parser.js +6 -0
  182. package/dist/src/shell/Parser.js.map +1 -0
  183. package/dist/src/shell/Word.d.ts +48 -0
  184. package/dist/src/shell/Word.js +486 -0
  185. package/dist/src/shell/Word.js.map +1 -0
  186. package/dist/src/shell/tokenizer.d.ts +3 -0
  187. package/dist/src/shell/tokenizer.js +610 -0
  188. package/dist/src/shell/tokenizer.js.map +1 -0
  189. package/dist/src/shell/webParser.d.ts +4 -0
  190. package/dist/src/shell/webParser.js +15 -0
  191. package/dist/src/shell/webParser.js.map +1 -0
  192. package/dist/src/utils.d.ts +6 -0
  193. package/dist/src/utils.js +21 -0
  194. package/dist/src/utils.js.map +1 -0
  195. package/dist/tools/compare-requests.d.ts +2 -0
  196. package/dist/tools/compare-requests.js +448 -0
  197. package/dist/tools/compare-requests.js.map +1 -0
  198. package/dist/tools/gen-test.d.ts +2 -0
  199. package/dist/tools/gen-test.js +114 -0
  200. package/dist/tools/gen-test.js.map +1 -0
  201. package/dist/tree-sitter-bash.wasm +0 -0
  202. package/index.d.ts +3 -0
  203. package/package.json +97 -0
  204. package/src/Headers.ts +334 -0
  205. package/src/Query.ts +147 -0
  206. package/src/Request.ts +1649 -0
  207. package/src/Warnings.ts +154 -0
  208. package/src/cli.ts +561 -0
  209. package/src/curl/auth.ts +45 -0
  210. package/src/curl/form.ts +297 -0
  211. package/src/curl/opts.ts +1417 -0
  212. package/src/curl/url.ts +241 -0
  213. package/src/generators/ansible.ts +364 -0
  214. package/src/generators/c.ts +1371 -0
  215. package/src/generators/cfml.ts +155 -0
  216. package/src/generators/clojure.ts +521 -0
  217. package/src/generators/csharp.ts +383 -0
  218. package/src/generators/dart.ts +293 -0
  219. package/src/generators/elixir.ts +349 -0
  220. package/src/generators/go.ts +269 -0
  221. package/src/generators/har.ts +147 -0
  222. package/src/generators/http.ts +194 -0
  223. package/src/generators/httpie.ts +506 -0
  224. package/src/generators/java/httpurlconnection.ts +151 -0
  225. package/src/generators/java/java.ts +280 -0
  226. package/src/generators/java/jsoup.ts +172 -0
  227. package/src/generators/java/okhttp.ts +257 -0
  228. package/src/generators/javascript/axios.ts +395 -0
  229. package/src/generators/javascript/got.ts +362 -0
  230. package/src/generators/javascript/http.ts +232 -0
  231. package/src/generators/javascript/javascript.ts +825 -0
  232. package/src/generators/javascript/jquery.ts +360 -0
  233. package/src/generators/javascript/ky.ts +315 -0
  234. package/src/generators/javascript/request.ts +152 -0
  235. package/src/generators/javascript/superagent.ts +373 -0
  236. package/src/generators/javascript/xhr.ts +192 -0
  237. package/src/generators/json.ts +293 -0
  238. package/src/generators/julia.ts +398 -0
  239. package/src/generators/kotlin.ts +355 -0
  240. package/src/generators/lua.ts +209 -0
  241. package/src/generators/matlab/common.ts +281 -0
  242. package/src/generators/matlab/httpinterface.ts +284 -0
  243. package/src/generators/matlab/matlab.ts +39 -0
  244. package/src/generators/matlab/webservices.ts +263 -0
  245. package/src/generators/objectivec.ts +297 -0
  246. package/src/generators/ocaml.ts +168 -0
  247. package/src/generators/perl.ts +237 -0
  248. package/src/generators/php/guzzle.ts +368 -0
  249. package/src/generators/php/php.ts +239 -0
  250. package/src/generators/php/requests.ts +103 -0
  251. package/src/generators/powershell.ts +430 -0
  252. package/src/generators/python/http.ts +167 -0
  253. package/src/generators/python/python.ts +1934 -0
  254. package/src/generators/r/httr.ts +328 -0
  255. package/src/generators/r/httr2.ts +268 -0
  256. package/src/generators/ruby/httparty.ts +351 -0
  257. package/src/generators/ruby/ruby.ts +564 -0
  258. package/src/generators/rust.ts +243 -0
  259. package/src/generators/swift.ts +235 -0
  260. package/src/generators/wget.ts +533 -0
  261. package/src/index.ts +89 -0
  262. package/src/parse.ts +72 -0
  263. package/src/shell/Parser.ts +8 -0
  264. package/src/shell/Word.ts +531 -0
  265. package/src/shell/tokenizer.ts +736 -0
  266. package/src/shell/webParser.ts +18 -0
  267. package/src/utils.ts +25 -0
  268. package/tools/compare-requests.ts +571 -0
  269. package/tools/extract_curl_args.py +511 -0
  270. package/tools/gen-test.ts +129 -0
@@ -0,0 +1,6 @@
1
+ export declare class CCError extends Error {
2
+ }
3
+ export declare const UTF8encoder: TextEncoder;
4
+ export declare function has<T, K extends PropertyKey>(obj: T, prop: K): obj is T & Record<K, unknown>;
5
+ export declare function btoa(str: string): string;
6
+ export declare function isInt(s: string): boolean;
@@ -0,0 +1,21 @@
1
+ export class CCError extends Error {
2
+ }
3
+ export const UTF8encoder = new TextEncoder();
4
+ // Note: !has() will lead to type errors
5
+ // TODO: replace with Object.hasOwn() once Node 16 is EOL'd on 2023-09-11
6
+ export function has(obj, prop) {
7
+ return Object.prototype.hasOwnProperty.call(obj, prop);
8
+ }
9
+ // Node.js 14 doesn't have btoa() and later Node.js versions deprecated it
10
+ export function btoa(str) {
11
+ if (typeof window === "undefined" || !window.btoa) {
12
+ return Buffer.from(str, "utf8").toString("base64");
13
+ }
14
+ else {
15
+ return window.btoa(str);
16
+ }
17
+ }
18
+ export function isInt(s) {
19
+ return /^\s*[+-]?\d+$/.test(s);
20
+ }
21
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAQ,SAAQ,KAAK;CAAG;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C,wCAAwC;AACxC,yEAAyE;AACzE,MAAM,UAAU,GAAG,CACjB,GAAM,EACN,IAAO;IAEP,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,448 @@
1
+ #!/usr/bin/env node
2
+ import { exec } from "child_process";
3
+ import fs from "fs";
4
+ import net from "net";
5
+ import path from "path";
6
+ import { promisify } from "util";
7
+ import colors from "colors";
8
+ import { diffLines } from "diff";
9
+ import yargs from "yargs";
10
+ import { hideBin } from "yargs/helpers";
11
+ import { parse } from "../src/parse.js";
12
+ import { fixturesDir, converters } from "../test/test-utils.js";
13
+ const awaitableExec = promisify(exec);
14
+ const DEFAULT_PORT = 28139; // chosen randomly
15
+ const EXPECTED_URL = "localhost:" + DEFAULT_PORT;
16
+ const MINIMAL_HTTP_RESPONSE = `\
17
+ HTTP/1.1 200 OK
18
+ Content-Length: 12
19
+ Content-Type: text/plain; charset=utf-8
20
+
21
+ Hello World!`.replace(/\n/g, "\r\n");
22
+ const testDir = "/tmp/curlconverter"; // files are copied here to be executed
23
+ const executables = {
24
+ clojure: {
25
+ copy: "cp <file> /tmp/curlconverter/clojure/main.clj",
26
+ exec: 'cd /tmp/curlconverter/clojure && clj -Sdeps \'{:deps {clj-http/clj-http {:mvn/version "3.12.3"} cheshire/cheshire {:mvn/version "5.11.0"}}}\' -M main.clj',
27
+ },
28
+ csharp: {
29
+ setup: "cd /tmp/curlconverter && dotnet new console -o csharp && sed -i '' 's/<ImplicitUsings>enable/<ImplicitUsings>disable/' /tmp/curlconverter/csharp/csharp.csproj",
30
+ copy: "cp <file> /tmp/curlconverter/csharp/Program.cs",
31
+ exec: "cd /tmp/curlconverter/csharp && dotnet run",
32
+ },
33
+ dart: {
34
+ setup: "cd /tmp && mkdir -p curlconverter/dart && cd /tmp/curlconverter/dart && echo $'name:\\n dart\\nenvironment:\\n sdk: \">=2.14.0\"\\ndependencies:\\n http: any\\n' > pubspec.yaml && dart pub get",
35
+ copy: "cp <file> /tmp/curlconverter/dart/main.dart",
36
+ exec: "cd /tmp/curlconverter/dart && dart run main.dart",
37
+ },
38
+ elixir: {
39
+ setup: "mix new /tmp/curlconverter/elixircurlconverter/ && sed -i '' 's/# {:dep_from_hexpm, \"~> 0.3.0\"}/{:httpoison, \"~> 1.8\"}/g' /tmp/curlconverter/elixirelixircurlconverter/mix.exs && cd /tmp/curlconverter/elixirelixircurlconverter/ && mix deps.get",
40
+ copy: "cp <file> /tmp/curlconverter/elixirelixircurlconverter/main.ex",
41
+ exec: "cd /tmp/curlconverter/elixirelixircurlconverter && mix run main.ex",
42
+ dir: "elixircurlconverter",
43
+ },
44
+ go: {
45
+ copy: "go build -o /tmp/curlconverter/go/go <file>",
46
+ exec: "cd /tmp/curlconverter/go && /tmp/curlconverter/go/go",
47
+ },
48
+ httpie: {
49
+ copy: function (contents) {
50
+ fs.writeFileSync("/tmp/curlconverter/httpie/main", contents.trimEnd() + " --ignore-stdin" + "\n", "utf8");
51
+ },
52
+ exec: "chmod +x /tmp/curlconverter/httpie/main && /tmp/curlconverter/httpie/main",
53
+ },
54
+ java: {
55
+ copy: function (contents) {
56
+ const [imports, ...rest] = contents.split("\n\n");
57
+ fs.writeFileSync("/tmp/curlconverter/java/Main.java", imports +
58
+ "\n\n" +
59
+ "public class Main {\n" +
60
+ " public static void main(String[] args) throws Exception {\n" +
61
+ " " +
62
+ rest.join("\n\n") +
63
+ "\n" +
64
+ " }\n" +
65
+ "}\n", "utf8");
66
+ },
67
+ exec: "cd /tmp/curlconverter/java && javac Main.java && java Main",
68
+ },
69
+ "java-httpurlconnection": {
70
+ copy: "cp <file> /tmp/curlconverter/java-httpurlconnection/Main.java",
71
+ exec: "cd /tmp/curlconverter/java-httpurlconnection && javac Main.java && java Main",
72
+ },
73
+ "java-jsoup": {
74
+ setup: "if [ ! -d /tmp/curlconverter/java-jsoup ]; then echo setup java-jsoup by hand. && exit 1; fi",
75
+ // Like this:
76
+ // cd /tmp/curlconverter && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=java-jsoup -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
77
+ // cd java-jsoup
78
+ // then manually edit java-jsoup/pom.xml to fix the version of Java:
79
+ // <properties>
80
+ // <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
81
+ // <maven.compiler.source>18</maven.compiler.source>
82
+ // <maven.compiler.target>18</maven.compiler.target>
83
+ // </properties>
84
+ // and to install jsoup:
85
+ // <dependencies>
86
+ // <dependency>
87
+ // <groupId>org.jsoup</groupId>
88
+ // <artifactId>jsoup</artifactId>
89
+ // <version>1.16.1</version>
90
+ // </dependency>
91
+ // </dependencies>
92
+ // then install:
93
+ // mvn install
94
+ // setup: "cd /tmp/curlconverter && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=java-jsoup -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false",
95
+ copy: function (contents) {
96
+ fs.writeFileSync("/tmp/curlconverter/java-jsoup/src/main/java/com/mycompany/app/Main.java", `package com.mycompany.app;\n\n` +
97
+ contents.replace("class Main", "public class Main"), "utf8");
98
+ },
99
+ exec: "cd /tmp/curlconverter/java-jsoup && mvn compile && mvn exec:java -Dexec.mainClass=com.mycompany.app.Main",
100
+ },
101
+ // mkdir -p /tmp/curlconverter/java-okhttp && cd /tmp/curlconverter/java-okhttp && curl https://repo1.maven.org/maven2/com/squareup/okhttp3/okhttp/4.11.0/okhttp-4.11.0.jar > okhttp-4.11.0.jar
102
+ // "java-okhttp": {
103
+ // setup: "mkdir -p /tmp/curlconverter/java-okhttp && cd /tmp/curlconverter/java-okhttp",
104
+ // copy: "cp <file> /tmp/curlconverter/java-okhttp/Main.java",
105
+ // exec: "cd /tmp/curlconverter/java-okhttp && javac -cp okhttp-4.11.0.jar Main.java && java Main",
106
+ // },
107
+ // javascript:
108
+ "javascript-jquery": {
109
+ setup: "cd /tmp && mkdir -p curlconverter/javascript-jquery && cd curlconverter/javascript-jquery && npm init -y es6 && npm install jquery jsdom",
110
+ copy: function (contents) {
111
+ fs.writeFileSync("/tmp/curlconverter/javascript-jquery/main.js", `import { JSDOM } from 'jsdom';
112
+ const { window } = new JSDOM();
113
+ import jQueryInit from 'jquery';
114
+ var $ = jQueryInit(window);
115
+
116
+ ` + contents, "utf8");
117
+ },
118
+ exec: "cd /tmp/curlconverter/javascript-jquery && node main.js",
119
+ },
120
+ "javascript-xhr": {
121
+ setup: "cd /tmp && mkdir -p curlconverter/javascript-xhr && cd curlconverter/javascript-xhr && npm init -y es6 && npm install xmlhttprequest",
122
+ copy: function (contents) {
123
+ fs.writeFileSync("/tmp/curlconverter/javascript-xhr/main.js", "import { XMLHttpRequest } from 'xmlhttprequest';\n\n" + contents, "utf8");
124
+ },
125
+ exec: "cd /tmp/curlconverter/javascript-xhr && node main.js",
126
+ },
127
+ julia: {
128
+ exec: "julia <file>",
129
+ },
130
+ kotlin: {
131
+ copy: function (contents) {
132
+ fs.writeFileSync("/tmp/curlconverter/kotlin/script.main.kts", '@file:DependsOn("com.squareup.okhttp3:okhttp:4.11.0")\n\n' + contents, "utf8");
133
+ },
134
+ exec: "cd /tmp/curlconverter/kotlin && kotlin script.main.kts",
135
+ },
136
+ lua: {
137
+ exec: "lua <file>",
138
+ },
139
+ node: {
140
+ setup: "cd /tmp && mkdir -p curlconverter/node && cd curlconverter/node && npm init -y es6 && npm install node-fetch",
141
+ copy: "cp <file> /tmp/curlconverter/node/main.js",
142
+ exec: "cd /tmp/curlconverter/node && node main.js",
143
+ },
144
+ "node-axios": {
145
+ setup: "cd /tmp && mkdir -p curlconverter/node-axios && cd curlconverter/node-axios && npm init -y es6 && npm install axios form-data",
146
+ copy: "cp <file> /tmp/curlconverter/node-axios/main.js",
147
+ exec: "cd /tmp/curlconverter/node-axios && node main.js",
148
+ },
149
+ "node-http": {
150
+ setup: "cd /tmp && mkdir -p curlconverter/node-http && cd curlconverter/node-http && npm init -y es6 && npm install form-data",
151
+ copy: function (contents) {
152
+ fs.writeFileSync("/tmp/curlconverter/node-http/main.js", contents.replace("hostname: 'localhost:28139',", "hostname: 'localhost', port: 28139,"), "utf8");
153
+ },
154
+ exec: "cd /tmp/curlconverter/node-http && node main.js",
155
+ },
156
+ "node-superagent": {
157
+ setup: "cd /tmp && mkdir -p curlconverter/node-superagent && cd curlconverter/node-superagent && npm init -y es6 && npm install superagent",
158
+ copy: "cp <file> /tmp/curlconverter/node-superagent/main.js",
159
+ exec: "cd /tmp/curlconverter/node-superagent && node main.js",
160
+ },
161
+ objectivec: {
162
+ copy: function (contents) {
163
+ fs.writeFileSync("/tmp/curlconverter/objectivec/main.m", contents
164
+ .replace("#import <Foundation/Foundation.h>\n", "#import <Foundation/Foundation.h>\n" +
165
+ "\n" +
166
+ "int main(int argc, const char * argv[]) {\n" +
167
+ " @autoreleasepool {\n")
168
+ .replace("NSURLSession *session = ", "\ndispatch_semaphore_t semaphore = dispatch_semaphore_create(0);\nNSURLSession *session = ")
169
+ .replace(' NSLog(@"%@", httpResponse);\n' + " }\n", ' NSLog(@"%@", httpResponse);\n' +
170
+ " }\n" +
171
+ "dispatch_semaphore_signal(semaphore);\n") +
172
+ "dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);\n" +
173
+ " }\n" +
174
+ " return 0;\n" +
175
+ "}\n", "utf8");
176
+ },
177
+ exec: "cd /tmp/curlconverter/objectivec && clang -framework Foundation main.m -o main && ./main",
178
+ },
179
+ ocaml: {
180
+ copy: function (contents) {
181
+ fs.writeFileSync("/tmp/curlconverter/ocaml/main.ml", contents
182
+ .replace("\nlet uri = Uri.of_string ", "let body =\nlet uri = Uri.of_string ")
183
+ .replace(" (* Do stuff with the result *)\n", " body |> Cohttp_lwt.Body.to_string\n" +
184
+ "\n" +
185
+ "" +
186
+ "let () =\n" +
187
+ " let body = Lwt_main.run body in\n" +
188
+ " print_endline body\n"), "utf8");
189
+ },
190
+ exec: "cd /tmp/curlconverter/ocaml && eval `opam config env` && ocamlbuild -use-ocamlfind -tag thread -pkg cohttp-lwt-unix main.native && ./main.native",
191
+ },
192
+ perl: {
193
+ exec: "perl <file>",
194
+ },
195
+ php: {
196
+ exec: "php <file>",
197
+ },
198
+ // php composer.phar global require guzzlehttp/guzzle:^7.0
199
+ "php-guzzle": {
200
+ setup: "cd /tmp && mkdir -p curlconverter/php-guzzle && cd curlconverter/php-guzzle && php composer.phar require guzzlehttp/guzzle:^7.0",
201
+ copy: "cp <file> /tmp/curlconverter/php-guzzle/main.php",
202
+ exec: "cd /tmp/curlconverter/php-guzzle && php main.php",
203
+ },
204
+ powershell: {
205
+ copy: "cp <file> /tmp/curlconverter/powershell/main.ps1",
206
+ exec: "cd /tmp/curlconverter/powershell && pwsh main.ps1",
207
+ },
208
+ python: {
209
+ exec: "python3 <file>",
210
+ },
211
+ r: {
212
+ exec: "r < <file> --no-save",
213
+ },
214
+ "r-httr2": {
215
+ exec: "r < <file> --no-save",
216
+ },
217
+ ruby: {
218
+ exec: "ruby <file>",
219
+ },
220
+ "ruby-httparty": {
221
+ exec: "ruby <file>",
222
+ },
223
+ rust: {
224
+ setup: "cd /tmp && cargo init --vcs none /tmp/curlconverter/rust && cd /tmp/curlconverter/rust && cargo add reqwest --features reqwest/blocking,reqwest/json",
225
+ copy: "cp <file> /tmp/curlconverter/rust/src/main.rs",
226
+ exec: "cd /tmp/curlconverter/rust && cargo run",
227
+ },
228
+ swift: {
229
+ copy: function (contents) {
230
+ fs.writeFileSync("/tmp/curlconverter/swift/main.swift", contents
231
+ .replace("import Foundation\n", "import Foundation\n\n// testing\nlet group = DispatchGroup()\ngroup.enter()\n")
232
+ .replace('print(str ?? "")\n }\n', 'print(str ?? "")\n }\n\n // testing\n group.leave()\n') +
233
+ `
234
+ // testing
235
+ group.notify(queue: .main) {
236
+ exit(EXIT_SUCCESS) // Exit program when done
237
+ }
238
+ dispatchMain()\n`, "utf8");
239
+ },
240
+ exec: "cd /tmp/curlconverter/swift && swift main.swift",
241
+ },
242
+ wget: {
243
+ exec: "bash <file>",
244
+ },
245
+ };
246
+ const argv = await yargs(hideBin(process.argv))
247
+ .scriptName("compare-request")
248
+ .usage("Usage: $0 [--no-diff] [-l <language>] [test_name...]")
249
+ .option("diff", {
250
+ describe: "print a colorized diff instead of the raw requests",
251
+ default: true,
252
+ demandOption: false,
253
+ type: "boolean",
254
+ })
255
+ .option("sort", {
256
+ describe: "sort lines before comparing them",
257
+ default: false,
258
+ demandOption: false,
259
+ type: "boolean",
260
+ })
261
+ .option("l", {
262
+ alias: "language",
263
+ describe: "the language of the generated program to compare against",
264
+ choices: Object.keys(executables),
265
+ default: ["python"],
266
+ demandOption: false,
267
+ type: "string",
268
+ })
269
+ .alias("h", "help")
270
+ .help()
271
+ .parse();
272
+ const languages = Array.isArray(argv.language)
273
+ ? argv.language
274
+ : [argv.language];
275
+ const testFile = async (testFilename, languages) => {
276
+ const rawRequests = [];
277
+ // TODO: this is flaky
278
+ const server = net.createServer();
279
+ server.on("connection", (socket) => {
280
+ socket.setEncoding("utf8");
281
+ // Timeout very quickly because we only care about recieving the sent request.
282
+ socket.setTimeout(800, () => {
283
+ socket.end();
284
+ });
285
+ socket.on("data", (data) => {
286
+ // TODO: this is not a Buffer, it's a string...
287
+ rawRequests.push(data.replace(/\r\n/g, "\n"));
288
+ if (!socket.write(MINIMAL_HTTP_RESPONSE)) {
289
+ socket.pause();
290
+ }
291
+ });
292
+ socket.on("drain", () => {
293
+ socket.resume();
294
+ });
295
+ socket.on("timeout", () => {
296
+ socket.end();
297
+ });
298
+ socket.on("close", (error) => {
299
+ if (error) {
300
+ console.error("transmission error");
301
+ }
302
+ });
303
+ setTimeout(() => {
304
+ socket.destroy();
305
+ }, 1000);
306
+ });
307
+ server.maxConnections = 1;
308
+ server.listen(DEFAULT_PORT);
309
+ // setTimeout(function(){
310
+ // server.close();
311
+ // }, 5000);
312
+ const inputFile = path.join(fixturesDir, "curl_commands", testFilename + ".sh");
313
+ if (!fs.existsSync(inputFile)) {
314
+ server.close();
315
+ throw new Error("input file doesn't exist: " + inputFile);
316
+ }
317
+ const curlCommand = fs.readFileSync(inputFile, "utf8");
318
+ const requestedUrl = parse(curlCommand)[0]
319
+ .urls[0].url.replace("http://", "")
320
+ .toString();
321
+ if (!requestedUrl.startsWith(EXPECTED_URL)) {
322
+ console.error("bad requested URL for " + testFilename);
323
+ console.error(" " + requestedUrl);
324
+ console.error("it needs to request");
325
+ console.error(" http://" + EXPECTED_URL);
326
+ console.error("so we can capture the data it sends.");
327
+ server.close();
328
+ return;
329
+ }
330
+ try {
331
+ await awaitableExec("bash " + inputFile);
332
+ }
333
+ catch (e) { }
334
+ const files = languages.map((l) => path.join(fixturesDir, l, testFilename + converters[l].extension));
335
+ for (let i = 0; i < languages.length; i++) {
336
+ const language = languages[i];
337
+ const languageFile = files[i];
338
+ const executable = executables[language];
339
+ if (fs.existsSync(languageFile)) {
340
+ if ("copy" in executable) {
341
+ if (typeof executable.copy === "function") {
342
+ executable.copy(fs.readFileSync(languageFile).toString());
343
+ }
344
+ else {
345
+ await awaitableExec(executable.copy.replace("<file>", languageFile));
346
+ }
347
+ }
348
+ // TODO: escape?
349
+ const command = executable.exec.replace("<file>", languageFile);
350
+ try {
351
+ await awaitableExec(command);
352
+ }
353
+ catch (e) {
354
+ // Uncomment for debugging. An error can happen because
355
+ // our server responds with a generic response.
356
+ console.error(e);
357
+ }
358
+ }
359
+ else {
360
+ console.error(language + " file doesn't exist, skipping: " + languageFile);
361
+ }
362
+ }
363
+ // TODO: allow ignoring headers for each converter
364
+ function sortLines(a) {
365
+ return (a
366
+ .split("\n")
367
+ .filter(Boolean)
368
+ .filter((s) => !s.toLowerCase().startsWith("user-agent: "))
369
+ .sort(Intl.Collator().compare)
370
+ .join("\n") + "\n");
371
+ }
372
+ const requestName = path.parse(inputFile).name;
373
+ console.log(requestName);
374
+ console.log("=".repeat(requestName.length));
375
+ console.log(fs.readFileSync(inputFile).toString());
376
+ for (const f of files) {
377
+ if (fs.existsSync(f)) {
378
+ console.log("=".repeat(requestName.length));
379
+ console.log(fs.readFileSync(f).toString());
380
+ }
381
+ }
382
+ console.log("=".repeat(requestName.length));
383
+ const [curlRequest, ...languageRequests] = rawRequests;
384
+ for (const languageRequest of languageRequests) {
385
+ if (argv.diff) {
386
+ const a = argv.sort ? sortLines(curlRequest) : curlRequest;
387
+ const b = argv.sort ? sortLines(languageRequest) : languageRequest;
388
+ for (const part of diffLines(a, b)) {
389
+ // green for additions, red for deletions
390
+ // grey for common parts
391
+ const color = part.added ? "green" : part.removed ? "red" : "grey";
392
+ process.stdout.write(colors[color](part.value));
393
+ }
394
+ }
395
+ else {
396
+ console.log(curlRequest);
397
+ console.log(languageRequest);
398
+ }
399
+ }
400
+ console.log();
401
+ server.close();
402
+ };
403
+ // if no tests were specified, run them all
404
+ const tests = argv._;
405
+ if (!tests.length) {
406
+ const possibleTestFiles = fs
407
+ .readdirSync(path.join(fixturesDir, "curl_commands"))
408
+ .filter((n) => n.endsWith(".sh"));
409
+ for (const testFile of possibleTestFiles) {
410
+ for (const l of languages) {
411
+ if (fs.existsSync(path.join(fixturesDir, l, testFile.replace(".sh", converters[l].extension)))) {
412
+ tests.push(testFile);
413
+ break;
414
+ }
415
+ }
416
+ }
417
+ if (!tests.length) {
418
+ console.error("no tests found");
419
+ process.exit(1);
420
+ }
421
+ }
422
+ // fs.rmSync(testDir, { recursive: true, force: true });
423
+ if (tests.length) {
424
+ for (const l of languages) {
425
+ const executable = executables[l];
426
+ let dir = l;
427
+ if ("dir" in executable) {
428
+ dir = executable.dir;
429
+ }
430
+ fs.mkdirSync(path.join(testDir, dir), { recursive: true });
431
+ if ("setup" in executable) {
432
+ console.error("running");
433
+ console.error(executable.setup);
434
+ await awaitableExec(executable.setup);
435
+ console.error();
436
+ }
437
+ }
438
+ }
439
+ function delay(ms) {
440
+ return new Promise((resolve) => setTimeout(resolve, ms));
441
+ }
442
+ for (const test of tests.sort()) {
443
+ const testName = path.parse(test.toString()).name;
444
+ await testFile(testName, languages);
445
+ await delay(1000);
446
+ }
447
+ process.exit(0);
448
+ //# sourceMappingURL=compare-requests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-requests.js","sourceRoot":"","sources":["../../tools/compare-requests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env node
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import yargs from "yargs";
5
+ import { hideBin } from "yargs/helpers";
6
+ import { fixturesDir, converters } from "../test/test-utils.js";
7
+ const curlCommandDir = path.resolve(fixturesDir, "curl_commands");
8
+ const argv = await yargs(hideBin(process.argv))
9
+ .scriptName("gen-test")
10
+ .usage("Usage: $0 [-l <language>] [curl_command_filename...]")
11
+ .option("l", {
12
+ alias: "language",
13
+ describe: "the language to convert the curl command to " +
14
+ "(`--language parser` saves parser state as JSON)",
15
+ choices: Object.keys(converters),
16
+ default: Object.keys(converters),
17
+ defaultDescription: "all of them",
18
+ demandOption: false,
19
+ type: "string",
20
+ })
21
+ .option("all", {
22
+ describe: "generate all tests for all languages",
23
+ default: false,
24
+ demandOption: false,
25
+ type: "boolean",
26
+ })
27
+ .positional("curl_command_filename", {
28
+ // this has no effect, it's here for --help
29
+ describe: "the file to read the curl command from (or just its name without its path or file extension)",
30
+ type: "string",
31
+ })
32
+ .alias("h", "help")
33
+ .help().argv;
34
+ const languages = Array.isArray(argv.language)
35
+ ? argv.language
36
+ : [argv.language];
37
+ for (const language of languages) {
38
+ // Create the directory if it doesn't exist
39
+ const outDir = path.resolve(curlCommandDir, "..", language);
40
+ if (!fs.existsSync(outDir)) {
41
+ console.error("creating directory " + outDir);
42
+ fs.mkdirSync(outDir);
43
+ }
44
+ }
45
+ if (argv.all && argv._.length) {
46
+ console.error("--all passed, ignoring names of test files");
47
+ }
48
+ const overwriteExistingOnly = !argv._.length && !argv.all;
49
+ const inFiles = !argv._.length || argv.all
50
+ ? fs.readdirSync(curlCommandDir).filter((p) => p.endsWith(".sh"))
51
+ : argv._;
52
+ const inPaths = inFiles.map((infile) => {
53
+ // Remove path and file extension
54
+ const filename = path.parse(infile.toString()).name;
55
+ const testfile = path.join(curlCommandDir, filename + ".sh");
56
+ if (!fs.existsSync(testfile)) {
57
+ console.error("no such file: " + testfile);
58
+ process.exit();
59
+ }
60
+ return testfile;
61
+ });
62
+ const printEachFile = inPaths.length < 10 || languages.length < Object.keys(converters).length;
63
+ let total = 0;
64
+ for (const inPath of inPaths) {
65
+ const curl = fs.readFileSync(inPath, "utf8");
66
+ for (const language of languages) {
67
+ const converter = converters[language];
68
+ const newFilename = path
69
+ .basename(inPath)
70
+ .replace(/\.sh$/, converter.extension);
71
+ const outDir = path.resolve(inPath, "../..", language);
72
+ if (!fs.existsSync(outDir)) {
73
+ console.error("creating directory " + outDir);
74
+ fs.mkdirSync(outDir);
75
+ }
76
+ const outPath = path.join(outDir, newFilename);
77
+ let code;
78
+ try {
79
+ code = converter.converter(curl);
80
+ }
81
+ catch (e) {
82
+ console.error("error converting curl command to " + language);
83
+ console.error(inPath);
84
+ console.error();
85
+ console.error(curl);
86
+ console.error();
87
+ console.error(e);
88
+ continue;
89
+ }
90
+ // Might as well generate the output to check
91
+ if (overwriteExistingOnly && !fs.existsSync(outPath)) {
92
+ continue;
93
+ }
94
+ const orig = fs.existsSync(outPath) ? fs.readFileSync(outPath, "utf8") : "";
95
+ fs.writeFileSync(outPath, code);
96
+ if (orig !== code) {
97
+ if (printEachFile) {
98
+ console.error("wrote to " + path.relative(fixturesDir, outPath));
99
+ }
100
+ else {
101
+ total += 1;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ if (!printEachFile) {
107
+ console.error("wrote " + total + " file" + (total === 1 ? "" : "s"));
108
+ }
109
+ // if (inPaths.length && languages.length) {
110
+ // console.error(
111
+ // "Please carefully check all the output for correctness before committing."
112
+ // );
113
+ // }
114
+ //# sourceMappingURL=gen-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen-test.js","sourceRoot":"","sources":["../../tools/gen-test.ts"],"names":[],"mappings":"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"}
Binary file
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ declare module "tree-sitter-bash" {
2
+ export default class Bash {}
3
+ }