From 7cc522474bf9b28e255ebfbe5b18800f898c4aa9 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 16:56:46 -0700 Subject: [PATCH 01/22] refactor: removing node `request` --- src/fixtures/customTarget.ts | 10 +- src/helpers/__snapshots__/utils.test.ts.snap | 8 -- src/integration.test.ts | 2 +- src/targets/node/request/client.ts | 132 ------------------ .../fixtures/application-form-encoded.cjs | 14 -- .../request/fixtures/application-json.cjs | 22 --- src/targets/node/request/fixtures/cookies.cjs | 13 -- .../node/request/fixtures/custom-method.cjs | 9 -- src/targets/node/request/fixtures/full.cjs | 22 --- src/targets/node/request/fixtures/headers.cjs | 18 --- .../node/request/fixtures/http-insecure.cjs | 9 -- .../request/fixtures/jsonObj-multiline.cjs | 15 -- .../request/fixtures/jsonObj-null-value.cjs | 15 -- .../node/request/fixtures/multipart-data.cjs | 21 --- .../node/request/fixtures/multipart-file.cjs | 20 --- .../multipart-form-data-no-params.cjs | 13 -- .../request/fixtures/multipart-form-data.cjs | 14 -- src/targets/node/request/fixtures/nested.cjs | 12 -- .../request/fixtures/postdata-malformed.cjs | 13 -- .../node/request/fixtures/query-encoded.cjs | 12 -- src/targets/node/request/fixtures/query.cjs | 12 -- src/targets/node/request/fixtures/short.cjs | 9 -- .../node/request/fixtures/text-plain.cjs | 14 -- src/targets/node/target.ts | 2 - 24 files changed, 6 insertions(+), 425 deletions(-) delete mode 100644 src/targets/node/request/client.ts delete mode 100644 src/targets/node/request/fixtures/application-form-encoded.cjs delete mode 100644 src/targets/node/request/fixtures/application-json.cjs delete mode 100644 src/targets/node/request/fixtures/cookies.cjs delete mode 100644 src/targets/node/request/fixtures/custom-method.cjs delete mode 100644 src/targets/node/request/fixtures/full.cjs delete mode 100644 src/targets/node/request/fixtures/headers.cjs delete mode 100644 src/targets/node/request/fixtures/http-insecure.cjs delete mode 100644 src/targets/node/request/fixtures/jsonObj-multiline.cjs delete mode 100644 src/targets/node/request/fixtures/jsonObj-null-value.cjs delete mode 100644 src/targets/node/request/fixtures/multipart-data.cjs delete mode 100644 src/targets/node/request/fixtures/multipart-file.cjs delete mode 100644 src/targets/node/request/fixtures/multipart-form-data-no-params.cjs delete mode 100644 src/targets/node/request/fixtures/multipart-form-data.cjs delete mode 100644 src/targets/node/request/fixtures/nested.cjs delete mode 100644 src/targets/node/request/fixtures/postdata-malformed.cjs delete mode 100644 src/targets/node/request/fixtures/query-encoded.cjs delete mode 100644 src/targets/node/request/fixtures/query.cjs delete mode 100644 src/targets/node/request/fixtures/short.cjs delete mode 100644 src/targets/node/request/fixtures/text-plain.cjs diff --git a/src/fixtures/customTarget.ts b/src/fixtures/customTarget.ts index 98f15fbe8..56c4029d4 100644 --- a/src/fixtures/customTarget.ts +++ b/src/fixtures/customTarget.ts @@ -1,15 +1,15 @@ import type { Target } from '../targets/index.js'; -import { request } from '../targets/node/request/client.js'; +import { axios } from '../targets/node/axios/client.js'; export const customTarget = { info: { - key: 'js-variant', - title: 'JavaScript Variant', + key: 'node-variant', + title: 'Node Variant', extname: '.js', - default: 'request', + default: 'axios', }, clientsById: { - request, + axios, }, } as unknown as Target; diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index cd0bf5934..43e0097b1 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -192,14 +192,6 @@ exports[`availableTargets > returns all available targets 1`] = ` "link": "http://nodejs.org/api/http.html#http_http_request_options_callback", "title": "HTTP", }, - { - "description": "Simplified HTTP request client", - "extname": ".cjs", - "installation": "npm install request --save", - "key": "request", - "link": "https://github.com/request/request", - "title": "Request", - }, { "description": "Lightweight HTTP Request Client Library", "extname": ".cjs", diff --git a/src/integration.test.ts b/src/integration.test.ts index 41f126236..e7039b269 100644 --- a/src/integration.test.ts +++ b/src/integration.test.ts @@ -21,7 +21,7 @@ const ENVIRONMENT_CONFIG = { c: ['libcurl'], csharp: ['httpclient', 'restsharp'], go: ['native'], - node: ['axios', 'fetch', 'native', 'request'], + node: ['axios', 'fetch', 'native'], php: ['curl', 'guzzle'], python: ['requests'], shell: ['curl'], diff --git a/src/targets/node/request/client.ts b/src/targets/node/request/client.ts deleted file mode 100644 index 284d13c0b..000000000 --- a/src/targets/node/request/client.ts +++ /dev/null @@ -1,132 +0,0 @@ -/** - * @description - * HTTP code snippet generator for Node.js using Request. - * - * @author - * @AhmadNassri - * - * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. - */ -import type { Client } from '../../index.js'; - -import stringifyObject from 'stringify-object'; - -import { CodeBuilder } from '../../../helpers/code-builder.js'; - -export const request: Client = { - info: { - key: 'request', - title: 'Request', - link: 'https://github.com/request/request', - description: 'Simplified HTTP request client', - extname: '.cjs', - installation: 'npm install request --save', - }, - convert: ({ method, url, fullUrl, postData, headersObj, cookies }, options) => { - const opts = { - indent: ' ', - ...options, - }; - - let includeFS = false; - const { push, blank, join, unshift, addPostProcessor } = new CodeBuilder({ indent: opts.indent }); - - push("const request = require('request');"); - blank(); - - const reqOpts: Record = { - method, - url: fullUrl, - }; - - if (Object.keys(headersObj).length) { - reqOpts.headers = headersObj; - } - - switch (postData.mimeType) { - case 'application/x-www-form-urlencoded': - reqOpts.form = postData.paramsObj; - break; - - case 'application/json': - if (postData.jsonObj) { - reqOpts.body = postData.jsonObj; - reqOpts.json = true; - } - break; - - case 'multipart/form-data': - if (!postData.params) { - break; - } - - reqOpts.formData = {}; - - postData.params.forEach(param => { - if (!param.fileName && !param.fileName && !param.contentType) { - reqOpts.formData[param.name] = param.value; - return; - } - - let attachment: { - options?: { - contentType: string | null; - filename: string; - }; - value?: string; - } = {}; - - if (param.fileName) { - includeFS = true; - attachment = { - value: `fs.createReadStream(${param.fileName})`, - options: { - filename: param.fileName, - contentType: param.contentType ? param.contentType : null, - }, - }; - } else if (param.value) { - attachment.value = param.value; - } - - reqOpts.formData[param.name] = attachment; - }); - - addPostProcessor(code => code.replace(/'fs\.createReadStream\((.*)\)'/, "fs.createReadStream('$1')")); - break; - - default: - if (postData.text) { - reqOpts.body = postData.text; - } - } - - // construct cookies argument - if (cookies.length) { - reqOpts.jar = 'JAR'; - - push('const jar = request.jar();'); - - cookies.forEach(({ name, value }) => { - push(`jar.setCookie(request.cookie('${encodeURIComponent(name)}=${encodeURIComponent(value)}'), '${url}');`); - }); - blank(); - addPostProcessor(code => code.replace(/'JAR'/, 'jar')); - } - - if (includeFS) { - unshift("const fs = require('fs');"); - } - - push(`const options = ${stringifyObject(reqOpts, { indent: ' ', inlineCharacterLimit: 80 })};`); - blank(); - - push('request(options, function (error, response, body) {'); - push('if (error) throw new Error(error);', 1); - blank(); - push('console.log(body);', 1); - push('});'); - - return join(); - }, -}; diff --git a/src/targets/node/request/fixtures/application-form-encoded.cjs b/src/targets/node/request/fixtures/application-form-encoded.cjs deleted file mode 100644 index f49d8b71d..000000000 --- a/src/targets/node/request/fixtures/application-form-encoded.cjs +++ /dev/null @@ -1,14 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'application/x-www-form-urlencoded'}, - form: {foo: 'bar', hello: 'world'} -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/application-json.cjs b/src/targets/node/request/fixtures/application-json.cjs deleted file mode 100644 index b7413c0ad..000000000 --- a/src/targets/node/request/fixtures/application-json.cjs +++ /dev/null @@ -1,22 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'application/json'}, - body: { - number: 1, - string: 'f"oo', - arr: [1, 2, 3], - nested: {a: 'b'}, - arr_mix: [1, 'a', {arr_mix_nested: []}], - boolean: false - }, - json: true -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/cookies.cjs b/src/targets/node/request/fixtures/cookies.cjs deleted file mode 100644 index 66e4f4ed2..000000000 --- a/src/targets/node/request/fixtures/cookies.cjs +++ /dev/null @@ -1,13 +0,0 @@ -const request = require('request'); - -const jar = request.jar(); -jar.setCookie(request.cookie('foo=bar'), 'https://httpbin.org/cookies'); -jar.setCookie(request.cookie('bar=baz'), 'https://httpbin.org/cookies'); - -const options = {method: 'GET', url: 'https://httpbin.org/cookies', jar: jar}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/custom-method.cjs b/src/targets/node/request/fixtures/custom-method.cjs deleted file mode 100644 index c716db3e7..000000000 --- a/src/targets/node/request/fixtures/custom-method.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const request = require('request'); - -const options = {method: 'PROPFIND', url: 'https://httpbin.org/anything'}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/full.cjs b/src/targets/node/request/fixtures/full.cjs deleted file mode 100644 index 52e977901..000000000 --- a/src/targets/node/request/fixtures/full.cjs +++ /dev/null @@ -1,22 +0,0 @@ -const request = require('request'); - -const jar = request.jar(); -jar.setCookie(request.cookie('foo=bar'), 'https://httpbin.org/anything'); -jar.setCookie(request.cookie('bar=baz'), 'https://httpbin.org/anything'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value', - headers: { - accept: 'application/json', - 'content-type': 'application/x-www-form-urlencoded' - }, - form: {foo: 'bar'}, - jar: jar -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/headers.cjs b/src/targets/node/request/fixtures/headers.cjs deleted file mode 100644 index 88ade811b..000000000 --- a/src/targets/node/request/fixtures/headers.cjs +++ /dev/null @@ -1,18 +0,0 @@ -const request = require('request'); - -const options = { - method: 'GET', - url: 'https://httpbin.org/headers', - headers: { - accept: 'application/json', - 'x-foo': 'Bar', - 'x-bar': 'Foo', - 'quoted-value': '"quoted" \'string\'' - } -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/http-insecure.cjs b/src/targets/node/request/fixtures/http-insecure.cjs deleted file mode 100644 index 8c04d4368..000000000 --- a/src/targets/node/request/fixtures/http-insecure.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const request = require('request'); - -const options = {method: 'GET', url: 'http://httpbin.org/anything'}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/jsonObj-multiline.cjs b/src/targets/node/request/fixtures/jsonObj-multiline.cjs deleted file mode 100644 index 240bad18d..000000000 --- a/src/targets/node/request/fixtures/jsonObj-multiline.cjs +++ /dev/null @@ -1,15 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'application/json'}, - body: {foo: 'bar'}, - json: true -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/jsonObj-null-value.cjs b/src/targets/node/request/fixtures/jsonObj-null-value.cjs deleted file mode 100644 index 395c0c5ba..000000000 --- a/src/targets/node/request/fixtures/jsonObj-null-value.cjs +++ /dev/null @@ -1,15 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'application/json'}, - body: {foo: null}, - json: true -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/multipart-data.cjs b/src/targets/node/request/fixtures/multipart-data.cjs deleted file mode 100644 index 52642fe8e..000000000 --- a/src/targets/node/request/fixtures/multipart-data.cjs +++ /dev/null @@ -1,21 +0,0 @@ -const fs = require('fs'); -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'multipart/form-data; boundary=---011000010111000001101001'}, - formData: { - foo: { - value: fs.createReadStream('src/fixtures/files/hello.txt'), - options: {filename: 'src/fixtures/files/hello.txt', contentType: 'text/plain'} - }, - bar: 'Bonjour le monde' - } -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/multipart-file.cjs b/src/targets/node/request/fixtures/multipart-file.cjs deleted file mode 100644 index 6c04d1118..000000000 --- a/src/targets/node/request/fixtures/multipart-file.cjs +++ /dev/null @@ -1,20 +0,0 @@ -const fs = require('fs'); -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'multipart/form-data; boundary=---011000010111000001101001'}, - formData: { - foo: { - value: fs.createReadStream('src/fixtures/files/hello.txt'), - options: {filename: 'src/fixtures/files/hello.txt', contentType: 'text/plain'} - } - } -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/multipart-form-data-no-params.cjs b/src/targets/node/request/fixtures/multipart-form-data-no-params.cjs deleted file mode 100644 index a2b3599f7..000000000 --- a/src/targets/node/request/fixtures/multipart-form-data-no-params.cjs +++ /dev/null @@ -1,13 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'Content-Type': 'multipart/form-data'} -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/multipart-form-data.cjs b/src/targets/node/request/fixtures/multipart-form-data.cjs deleted file mode 100644 index dae439e67..000000000 --- a/src/targets/node/request/fixtures/multipart-form-data.cjs +++ /dev/null @@ -1,14 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001'}, - formData: {foo: 'bar'} -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/nested.cjs b/src/targets/node/request/fixtures/nested.cjs deleted file mode 100644 index 3bff0a48d..000000000 --- a/src/targets/node/request/fixtures/nested.cjs +++ /dev/null @@ -1,12 +0,0 @@ -const request = require('request'); - -const options = { - method: 'GET', - url: 'https://httpbin.org/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value' -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/postdata-malformed.cjs b/src/targets/node/request/fixtures/postdata-malformed.cjs deleted file mode 100644 index 46ff13dc4..000000000 --- a/src/targets/node/request/fixtures/postdata-malformed.cjs +++ /dev/null @@ -1,13 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'application/json'} -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/query-encoded.cjs b/src/targets/node/request/fixtures/query-encoded.cjs deleted file mode 100644 index 5f3be8438..000000000 --- a/src/targets/node/request/fixtures/query-encoded.cjs +++ /dev/null @@ -1,12 +0,0 @@ -const request = require('request'); - -const options = { - method: 'GET', - url: 'https://httpbin.org/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00' -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/query.cjs b/src/targets/node/request/fixtures/query.cjs deleted file mode 100644 index 7f1cb5721..000000000 --- a/src/targets/node/request/fixtures/query.cjs +++ /dev/null @@ -1,12 +0,0 @@ -const request = require('request'); - -const options = { - method: 'GET', - url: 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value' -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/short.cjs b/src/targets/node/request/fixtures/short.cjs deleted file mode 100644 index f02e48ca0..000000000 --- a/src/targets/node/request/fixtures/short.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const request = require('request'); - -const options = {method: 'GET', url: 'https://httpbin.org/anything'}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/request/fixtures/text-plain.cjs b/src/targets/node/request/fixtures/text-plain.cjs deleted file mode 100644 index 6f52592a9..000000000 --- a/src/targets/node/request/fixtures/text-plain.cjs +++ /dev/null @@ -1,14 +0,0 @@ -const request = require('request'); - -const options = { - method: 'POST', - url: 'https://httpbin.org/anything', - headers: {'content-type': 'text/plain'}, - body: 'Hello World' -}; - -request(options, function (error, response, body) { - if (error) throw new Error(error); - - console.log(body); -}); \ No newline at end of file diff --git a/src/targets/node/target.ts b/src/targets/node/target.ts index 1def2a580..77ad49171 100644 --- a/src/targets/node/target.ts +++ b/src/targets/node/target.ts @@ -3,7 +3,6 @@ import type { Target } from '../index.js'; import { axios } from './axios/client.js'; import { fetch } from './fetch/client.js'; import { native } from './native/client.js'; -import { request } from './request/client.js'; import { unirest } from './unirest/client.js'; export const node: Target = { @@ -15,7 +14,6 @@ export const node: Target = { }, clientsById: { native, - request, unirest, axios, fetch, From 9d87a71c0cf6ebd08dcf59c3f6467ef43026e5f7 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 17:01:37 -0700 Subject: [PATCH 02/22] refactor: removing node `unirest` --- README.md | 4 +- package.json | 2 - src/helpers/__snapshots__/utils.test.ts.snap | 7 - src/targets/index.test.ts | 2 +- src/targets/node/target.ts | 2 - src/targets/node/unirest/client.ts | 130 ------------------ .../fixtures/application-form-encoded.cjs | 18 --- .../unirest/fixtures/application-json.cjs | 35 ----- src/targets/node/unirest/fixtures/cookies.cjs | 14 -- .../node/unirest/fixtures/custom-method.cjs | 9 -- src/targets/node/unirest/fixtures/full.cjs | 32 ----- src/targets/node/unirest/fixtures/headers.cjs | 16 --- .../node/unirest/fixtures/http-insecure.cjs | 9 -- .../unirest/fixtures/jsonObj-multiline.cjs | 18 --- .../unirest/fixtures/jsonObj-null-value.cjs | 18 --- .../node/unirest/fixtures/multipart-data.cjs | 23 ---- .../node/unirest/fixtures/multipart-file.cjs | 21 --- .../multipart-form-data-no-params.cjs | 13 -- .../unirest/fixtures/multipart-form-data.cjs | 19 --- src/targets/node/unirest/fixtures/nested.cjs | 15 -- .../unirest/fixtures/postdata-malformed.cjs | 13 -- .../node/unirest/fixtures/query-encoded.cjs | 14 -- src/targets/node/unirest/fixtures/query.cjs | 18 --- src/targets/node/unirest/fixtures/short.cjs | 9 -- .../node/unirest/fixtures/text-plain.cjs | 15 -- 25 files changed, 3 insertions(+), 473 deletions(-) delete mode 100644 src/targets/node/unirest/client.ts delete mode 100644 src/targets/node/unirest/fixtures/application-form-encoded.cjs delete mode 100644 src/targets/node/unirest/fixtures/application-json.cjs delete mode 100644 src/targets/node/unirest/fixtures/cookies.cjs delete mode 100644 src/targets/node/unirest/fixtures/custom-method.cjs delete mode 100644 src/targets/node/unirest/fixtures/full.cjs delete mode 100644 src/targets/node/unirest/fixtures/headers.cjs delete mode 100644 src/targets/node/unirest/fixtures/http-insecure.cjs delete mode 100644 src/targets/node/unirest/fixtures/jsonObj-multiline.cjs delete mode 100644 src/targets/node/unirest/fixtures/jsonObj-null-value.cjs delete mode 100644 src/targets/node/unirest/fixtures/multipart-data.cjs delete mode 100644 src/targets/node/unirest/fixtures/multipart-file.cjs delete mode 100644 src/targets/node/unirest/fixtures/multipart-form-data-no-params.cjs delete mode 100644 src/targets/node/unirest/fixtures/multipart-form-data.cjs delete mode 100644 src/targets/node/unirest/fixtures/nested.cjs delete mode 100644 src/targets/node/unirest/fixtures/postdata-malformed.cjs delete mode 100644 src/targets/node/unirest/fixtures/query-encoded.cjs delete mode 100644 src/targets/node/unirest/fixtures/query.cjs delete mode 100644 src/targets/node/unirest/fixtures/short.cjs delete mode 100644 src/targets/node/unirest/fixtures/text-plain.cjs diff --git a/README.md b/README.md index 4380f04d1..3bb04fcc0 100644 --- a/README.md +++ b/README.md @@ -109,8 +109,8 @@ console.log( }), ); -// generate Node.js: Unirest output -console.log(snippet.convert('node', 'unirest')); +// generate Node.js: Axios output +console.log(snippet.convert('node', 'axios')); ``` ### addTarget(target) diff --git a/package.json b/package.json index c76add9d0..e01bc45a5 100644 --- a/package.json +++ b/package.json @@ -53,14 +53,12 @@ "ocaml", "php", "python", - "request", "requests", "ruby", "shell", "snippet", "swift", "swift", - "unirest", "xhr", "xmlhttprequest" ], diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index 43e0097b1..6359505bc 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -192,13 +192,6 @@ exports[`availableTargets > returns all available targets 1`] = ` "link": "http://nodejs.org/api/http.html#http_http_request_options_callback", "title": "HTTP", }, - { - "description": "Lightweight HTTP Request Client Library", - "extname": ".cjs", - "key": "unirest", - "link": "http://unirest.io/nodejs.html", - "title": "Unirest", - }, { "description": "Promise based HTTP client for the browser and node.js", "extname": ".cjs", diff --git a/src/targets/index.test.ts b/src/targets/index.test.ts index 97eaade1f..15c936d64 100644 --- a/src/targets/index.test.ts +++ b/src/targets/index.test.ts @@ -31,7 +31,7 @@ const targetFilter: TargetId[] = [ /** useful for debuggin, only run a particular set of targets */ const clientFilter: ClientId[] = [ // put your clientId here: - // 'unirest', + // 'axios', ]; /** useful for debuggin, only run a particular set of fixtures */ diff --git a/src/targets/node/target.ts b/src/targets/node/target.ts index 77ad49171..71484e077 100644 --- a/src/targets/node/target.ts +++ b/src/targets/node/target.ts @@ -3,7 +3,6 @@ import type { Target } from '../index.js'; import { axios } from './axios/client.js'; import { fetch } from './fetch/client.js'; import { native } from './native/client.js'; -import { unirest } from './unirest/client.js'; export const node: Target = { info: { @@ -14,7 +13,6 @@ export const node: Target = { }, clientsById: { native, - unirest, axios, fetch, }, diff --git a/src/targets/node/unirest/client.ts b/src/targets/node/unirest/client.ts deleted file mode 100644 index 94e01517f..000000000 --- a/src/targets/node/unirest/client.ts +++ /dev/null @@ -1,130 +0,0 @@ -/** - * @description - * HTTP code snippet generator for Node.js using Unirest. - * - * @author - * @AhmadNassri - * - * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. - */ -import type { Client } from '../../index.js'; - -import stringifyObject from 'stringify-object'; - -import { CodeBuilder } from '../../../helpers/code-builder.js'; - -export const unirest: Client = { - info: { - key: 'unirest', - title: 'Unirest', - link: 'http://unirest.io/nodejs.html', - description: 'Lightweight HTTP Request Client Library', - extname: '.cjs', - }, - convert: ({ method, url, cookies, queryObj, postData, headersObj }, options) => { - const opts = { - indent: ' ', - ...options, - }; - - let includeFS = false; - const { addPostProcessor, blank, join, push, unshift } = new CodeBuilder({ - indent: opts.indent, - }); - - push("const unirest = require('unirest');"); - blank(); - push(`const req = unirest('${method}', '${url}');`); - blank(); - - if (cookies.length) { - push('const CookieJar = unirest.jar();'); - - cookies.forEach(cookie => { - push(`CookieJar.add('${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}', '${url}');`); - }); - - push('req.jar(CookieJar);'); - blank(); - } - - if (Object.keys(queryObj).length) { - push(`req.query(${stringifyObject(queryObj, { indent: opts.indent })});`); - blank(); - } - - if (Object.keys(headersObj).length) { - push(`req.headers(${stringifyObject(headersObj, { indent: opts.indent })});`); - blank(); - } - - switch (postData.mimeType) { - case 'application/x-www-form-urlencoded': - if (postData.paramsObj) { - push(`req.form(${stringifyObject(postData.paramsObj, { indent: opts.indent })});`); - blank(); - } - break; - - case 'application/json': - if (postData.jsonObj) { - push("req.type('json');"); - push(`req.send(${stringifyObject(postData.jsonObj, { indent: opts.indent })});`); - blank(); - } - break; - - case 'multipart/form-data': { - if (!postData.params) { - break; - } - - const multipart: Record[] = []; - - postData.params.forEach(param => { - const part: Record = {}; - - if (param.fileName && !param.value) { - includeFS = true; - - part.body = `fs.createReadStream('${param.fileName}')`; - addPostProcessor(code => code.replace(/'fs\.createReadStream\(\\'(.+)\\'\)'/, "fs.createReadStream('$1')")); - } else if (param.value) { - part.body = param.value; - } - - if (part.body) { - if (param.contentType) { - part['content-type'] = param.contentType; - } - - multipart.push(part); - } - }); - - push(`req.multipart(${stringifyObject(multipart, { indent: opts.indent })});`); - blank(); - break; - } - - default: - if (postData.text) { - push(`req.send(${stringifyObject(postData.text, { indent: opts.indent })});`); - blank(); - } - } - - if (includeFS) { - unshift("const fs = require('fs');"); - } - - push('req.end(function (res) {'); - push('if (res.error) throw new Error(res.error);', 1); - blank(); - - push('console.log(res.body);', 1); - push('});'); - - return join(); - }, -}; diff --git a/src/targets/node/unirest/fixtures/application-form-encoded.cjs b/src/targets/node/unirest/fixtures/application-form-encoded.cjs deleted file mode 100644 index 305d6c63d..000000000 --- a/src/targets/node/unirest/fixtures/application-form-encoded.cjs +++ /dev/null @@ -1,18 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'application/x-www-form-urlencoded' -}); - -req.form({ - foo: 'bar', - hello: 'world' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/application-json.cjs b/src/targets/node/unirest/fixtures/application-json.cjs deleted file mode 100644 index 32944b12f..000000000 --- a/src/targets/node/unirest/fixtures/application-json.cjs +++ /dev/null @@ -1,35 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'application/json' -}); - -req.type('json'); -req.send({ - number: 1, - string: 'f"oo', - arr: [ - 1, - 2, - 3 - ], - nested: { - a: 'b' - }, - arr_mix: [ - 1, - 'a', - { - arr_mix_nested: [] - } - ], - boolean: false -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/cookies.cjs b/src/targets/node/unirest/fixtures/cookies.cjs deleted file mode 100644 index 768565457..000000000 --- a/src/targets/node/unirest/fixtures/cookies.cjs +++ /dev/null @@ -1,14 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('GET', 'https://httpbin.org/cookies'); - -const CookieJar = unirest.jar(); -CookieJar.add('foo=bar', 'https://httpbin.org/cookies'); -CookieJar.add('bar=baz', 'https://httpbin.org/cookies'); -req.jar(CookieJar); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/custom-method.cjs b/src/targets/node/unirest/fixtures/custom-method.cjs deleted file mode 100644 index 7a4789dcb..000000000 --- a/src/targets/node/unirest/fixtures/custom-method.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('PROPFIND', 'https://httpbin.org/anything'); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/full.cjs b/src/targets/node/unirest/fixtures/full.cjs deleted file mode 100644 index f5b0cacc2..000000000 --- a/src/targets/node/unirest/fixtures/full.cjs +++ /dev/null @@ -1,32 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -const CookieJar = unirest.jar(); -CookieJar.add('foo=bar', 'https://httpbin.org/anything'); -CookieJar.add('bar=baz', 'https://httpbin.org/anything'); -req.jar(CookieJar); - -req.query({ - foo: [ - 'bar', - 'baz' - ], - baz: 'abc', - key: 'value' -}); - -req.headers({ - accept: 'application/json', - 'content-type': 'application/x-www-form-urlencoded' -}); - -req.form({ - foo: 'bar' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/headers.cjs b/src/targets/node/unirest/fixtures/headers.cjs deleted file mode 100644 index 1ae38ba36..000000000 --- a/src/targets/node/unirest/fixtures/headers.cjs +++ /dev/null @@ -1,16 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('GET', 'https://httpbin.org/headers'); - -req.headers({ - accept: 'application/json', - 'x-foo': 'Bar', - 'x-bar': 'Foo', - 'quoted-value': '"quoted" \'string\'' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/http-insecure.cjs b/src/targets/node/unirest/fixtures/http-insecure.cjs deleted file mode 100644 index 5e131256e..000000000 --- a/src/targets/node/unirest/fixtures/http-insecure.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('GET', 'http://httpbin.org/anything'); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/jsonObj-multiline.cjs b/src/targets/node/unirest/fixtures/jsonObj-multiline.cjs deleted file mode 100644 index b3807fa41..000000000 --- a/src/targets/node/unirest/fixtures/jsonObj-multiline.cjs +++ /dev/null @@ -1,18 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'application/json' -}); - -req.type('json'); -req.send({ - foo: 'bar' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/jsonObj-null-value.cjs b/src/targets/node/unirest/fixtures/jsonObj-null-value.cjs deleted file mode 100644 index 2827f031a..000000000 --- a/src/targets/node/unirest/fixtures/jsonObj-null-value.cjs +++ /dev/null @@ -1,18 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'application/json' -}); - -req.type('json'); -req.send({ - foo: null -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/multipart-data.cjs b/src/targets/node/unirest/fixtures/multipart-data.cjs deleted file mode 100644 index 7d9a9cb6d..000000000 --- a/src/targets/node/unirest/fixtures/multipart-data.cjs +++ /dev/null @@ -1,23 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'multipart/form-data; boundary=---011000010111000001101001' -}); - -req.multipart([ - { - body: 'Hello World', - 'content-type': 'text/plain' - }, - { - body: 'Bonjour le monde' - } -]); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/multipart-file.cjs b/src/targets/node/unirest/fixtures/multipart-file.cjs deleted file mode 100644 index 83794833d..000000000 --- a/src/targets/node/unirest/fixtures/multipart-file.cjs +++ /dev/null @@ -1,21 +0,0 @@ -const fs = require('fs'); -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'multipart/form-data; boundary=---011000010111000001101001' -}); - -req.multipart([ - { - body: fs.createReadStream('src/fixtures/files/hello.txt'), - 'content-type': 'text/plain' - } -]); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/multipart-form-data-no-params.cjs b/src/targets/node/unirest/fixtures/multipart-form-data-no-params.cjs deleted file mode 100644 index 16d9052b1..000000000 --- a/src/targets/node/unirest/fixtures/multipart-form-data-no-params.cjs +++ /dev/null @@ -1,13 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'Content-Type': 'multipart/form-data' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/multipart-form-data.cjs b/src/targets/node/unirest/fixtures/multipart-form-data.cjs deleted file mode 100644 index ecd69034e..000000000 --- a/src/targets/node/unirest/fixtures/multipart-form-data.cjs +++ /dev/null @@ -1,19 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001' -}); - -req.multipart([ - { - body: 'bar' - } -]); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/nested.cjs b/src/targets/node/unirest/fixtures/nested.cjs deleted file mode 100644 index c58635dd9..000000000 --- a/src/targets/node/unirest/fixtures/nested.cjs +++ /dev/null @@ -1,15 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('GET', 'https://httpbin.org/anything'); - -req.query({ - 'foo[bar]': 'baz,zap', - fiz: 'buz', - key: 'value' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/postdata-malformed.cjs b/src/targets/node/unirest/fixtures/postdata-malformed.cjs deleted file mode 100644 index 502dba6c7..000000000 --- a/src/targets/node/unirest/fixtures/postdata-malformed.cjs +++ /dev/null @@ -1,13 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'application/json' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/query-encoded.cjs b/src/targets/node/unirest/fixtures/query-encoded.cjs deleted file mode 100644 index d9d4b8468..000000000 --- a/src/targets/node/unirest/fixtures/query-encoded.cjs +++ /dev/null @@ -1,14 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('GET', 'https://httpbin.org/anything'); - -req.query({ - startTime: '2019-06-13T19%3A08%3A25.455Z', - endTime: '2015-09-15T14%3A00%3A12-04%3A00' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/query.cjs b/src/targets/node/unirest/fixtures/query.cjs deleted file mode 100644 index 88fdf4893..000000000 --- a/src/targets/node/unirest/fixtures/query.cjs +++ /dev/null @@ -1,18 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('GET', 'https://httpbin.org/anything'); - -req.query({ - foo: [ - 'bar', - 'baz' - ], - baz: 'abc', - key: 'value' -}); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/short.cjs b/src/targets/node/unirest/fixtures/short.cjs deleted file mode 100644 index cbf99c49b..000000000 --- a/src/targets/node/unirest/fixtures/short.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('GET', 'https://httpbin.org/anything'); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file diff --git a/src/targets/node/unirest/fixtures/text-plain.cjs b/src/targets/node/unirest/fixtures/text-plain.cjs deleted file mode 100644 index 5d50100a1..000000000 --- a/src/targets/node/unirest/fixtures/text-plain.cjs +++ /dev/null @@ -1,15 +0,0 @@ -const unirest = require('unirest'); - -const req = unirest('POST', 'https://httpbin.org/anything'); - -req.headers({ - 'content-type': 'text/plain' -}); - -req.send('Hello World'); - -req.end(function (res) { - if (res.error) throw new Error(res.error); - - console.log(res.body); -}); \ No newline at end of file From f52782e3a7f8661ad3bd0cecb9772ef19e2bd210 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 17:05:27 -0700 Subject: [PATCH 03/22] refactor: removing node `native` --- src/helpers/__snapshots__/utils.test.ts.snap | 9 +- src/targets/node/native/client.ts | 89 ------------------- .../fixtures/application-form-encoded.cjs | 28 ------ .../node/native/fixtures/application-json.cjs | 34 ------- src/targets/node/native/fixtures/cookies.cjs | 26 ------ .../node/native/fixtures/custom-method.cjs | 24 ----- src/targets/node/native/fixtures/full.cjs | 30 ------- src/targets/node/native/fixtures/headers.cjs | 29 ------ .../node/native/fixtures/http-insecure.cjs | 24 ----- .../native/fixtures/jsonObj-multiline.cjs | 27 ------ .../native/fixtures/jsonObj-null-value.cjs | 27 ------ .../node/native/fixtures/multipart-data.cjs | 27 ------ .../node/native/fixtures/multipart-file.cjs | 27 ------ .../multipart-form-data-no-params.cjs | 26 ------ .../native/fixtures/multipart-form-data.cjs | 27 ------ src/targets/node/native/fixtures/nested.cjs | 24 ----- .../native/fixtures/postdata-malformed.cjs | 26 ------ .../node/native/fixtures/query-encoded.cjs | 24 ----- src/targets/node/native/fixtures/query.cjs | 24 ----- src/targets/node/native/fixtures/short.cjs | 24 ----- .../node/native/fixtures/text-plain.cjs | 27 ------ src/targets/node/target.ts | 4 +- 22 files changed, 2 insertions(+), 605 deletions(-) delete mode 100644 src/targets/node/native/client.ts delete mode 100644 src/targets/node/native/fixtures/application-form-encoded.cjs delete mode 100644 src/targets/node/native/fixtures/application-json.cjs delete mode 100644 src/targets/node/native/fixtures/cookies.cjs delete mode 100644 src/targets/node/native/fixtures/custom-method.cjs delete mode 100644 src/targets/node/native/fixtures/full.cjs delete mode 100644 src/targets/node/native/fixtures/headers.cjs delete mode 100644 src/targets/node/native/fixtures/http-insecure.cjs delete mode 100644 src/targets/node/native/fixtures/jsonObj-multiline.cjs delete mode 100644 src/targets/node/native/fixtures/jsonObj-null-value.cjs delete mode 100644 src/targets/node/native/fixtures/multipart-data.cjs delete mode 100644 src/targets/node/native/fixtures/multipart-file.cjs delete mode 100644 src/targets/node/native/fixtures/multipart-form-data-no-params.cjs delete mode 100644 src/targets/node/native/fixtures/multipart-form-data.cjs delete mode 100644 src/targets/node/native/fixtures/nested.cjs delete mode 100644 src/targets/node/native/fixtures/postdata-malformed.cjs delete mode 100644 src/targets/node/native/fixtures/query-encoded.cjs delete mode 100644 src/targets/node/native/fixtures/query.cjs delete mode 100644 src/targets/node/native/fixtures/short.cjs delete mode 100644 src/targets/node/native/fixtures/text-plain.cjs diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index 6359505bc..da6d47024 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -185,13 +185,6 @@ exports[`availableTargets > returns all available targets 1`] = ` { "cli": "node %s", "clients": [ - { - "description": "Node.js native HTTP interface", - "extname": ".cjs", - "key": "native", - "link": "http://nodejs.org/api/http.html#http_http_request_options_callback", - "title": "HTTP", - }, { "description": "Promise based HTTP client for the browser and node.js", "extname": ".cjs", @@ -209,7 +202,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "Fetch", }, ], - "default": "native", + "default": "fetch", "key": "node", "title": "Node.js", }, diff --git a/src/targets/node/native/client.ts b/src/targets/node/native/client.ts deleted file mode 100644 index 498c5ffab..000000000 --- a/src/targets/node/native/client.ts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @description - * HTTP code snippet generator for native Node.js. - * - * @author - * @AhmadNassri - * - * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. - */ -import type { Client } from '../../index.js'; - -import stringifyObject from 'stringify-object'; - -import { CodeBuilder } from '../../../helpers/code-builder.js'; - -export const native: Client = { - info: { - key: 'native', - title: 'HTTP', - link: 'http://nodejs.org/api/http.html#http_http_request_options_callback', - description: 'Node.js native HTTP interface', - extname: '.cjs', - }, - convert: ({ uriObj, method, allHeaders, postData }, options = {}) => { - const { indent = ' ' } = options; - const { blank, join, push, unshift } = new CodeBuilder({ indent }); - - const reqOpts = { - method, - hostname: uriObj.hostname, - port: uriObj.port, - path: uriObj.path, - headers: allHeaders, - }; - - push(`const http = require('${uriObj.protocol?.replace(':', '')}');`); - - blank(); - push(`const options = ${stringifyObject(reqOpts, { indent })};`); - blank(); - push('const req = http.request(options, function (res) {'); - push('const chunks = [];', 1); - blank(); - push("res.on('data', function (chunk) {", 1); - push('chunks.push(chunk);', 2); - push('});', 1); - blank(); - push("res.on('end', function () {", 1); - push('const body = Buffer.concat(chunks);', 2); - push('console.log(body.toString());', 2); - push('});', 1); - push('});'); - blank(); - - switch (postData.mimeType) { - case 'application/x-www-form-urlencoded': - if (postData.paramsObj) { - unshift("const qs = require('querystring');"); - push( - `req.write(qs.stringify(${stringifyObject(postData.paramsObj, { - indent: ' ', - inlineCharacterLimit: 80, - })}));`, - ); - } - break; - - case 'application/json': - if (postData.jsonObj) { - push( - `req.write(JSON.stringify(${stringifyObject(postData.jsonObj, { - indent: ' ', - inlineCharacterLimit: 80, - })}));`, - ); - } - break; - - default: - if (postData.text) { - push(`req.write(${stringifyObject(postData.text, { indent })});`); - } - } - - push('req.end();'); - - return join(); - }, -}; diff --git a/src/targets/node/native/fixtures/application-form-encoded.cjs b/src/targets/node/native/fixtures/application-form-encoded.cjs deleted file mode 100644 index 057ff692f..000000000 --- a/src/targets/node/native/fixtures/application-form-encoded.cjs +++ /dev/null @@ -1,28 +0,0 @@ -const qs = require('querystring'); -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'application/x-www-form-urlencoded' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write(qs.stringify({foo: 'bar', hello: 'world'})); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/application-json.cjs b/src/targets/node/native/fixtures/application-json.cjs deleted file mode 100644 index 5129f834c..000000000 --- a/src/targets/node/native/fixtures/application-json.cjs +++ /dev/null @@ -1,34 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'application/json' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write(JSON.stringify({ - number: 1, - string: 'f"oo', - arr: [1, 2, 3], - nested: {a: 'b'}, - arr_mix: [1, 'a', {arr_mix_nested: []}], - boolean: false -})); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/cookies.cjs b/src/targets/node/native/fixtures/cookies.cjs deleted file mode 100644 index 76e950855..000000000 --- a/src/targets/node/native/fixtures/cookies.cjs +++ /dev/null @@ -1,26 +0,0 @@ -const http = require('https'); - -const options = { - method: 'GET', - hostname: 'httpbin.org', - port: null, - path: '/cookies', - headers: { - cookie: 'foo=bar; bar=baz' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/custom-method.cjs b/src/targets/node/native/fixtures/custom-method.cjs deleted file mode 100644 index 0640c9991..000000000 --- a/src/targets/node/native/fixtures/custom-method.cjs +++ /dev/null @@ -1,24 +0,0 @@ -const http = require('https'); - -const options = { - method: 'PROPFIND', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: {} -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/full.cjs b/src/targets/node/native/fixtures/full.cjs deleted file mode 100644 index dee3821b2..000000000 --- a/src/targets/node/native/fixtures/full.cjs +++ /dev/null @@ -1,30 +0,0 @@ -const qs = require('querystring'); -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything?foo=bar&foo=baz&baz=abc&key=value', - headers: { - cookie: 'foo=bar; bar=baz', - accept: 'application/json', - 'content-type': 'application/x-www-form-urlencoded' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write(qs.stringify({foo: 'bar'})); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/headers.cjs b/src/targets/node/native/fixtures/headers.cjs deleted file mode 100644 index 80e694461..000000000 --- a/src/targets/node/native/fixtures/headers.cjs +++ /dev/null @@ -1,29 +0,0 @@ -const http = require('https'); - -const options = { - method: 'GET', - hostname: 'httpbin.org', - port: null, - path: '/headers', - headers: { - accept: 'application/json', - 'x-foo': 'Bar', - 'x-bar': 'Foo', - 'quoted-value': '"quoted" \'string\'' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/http-insecure.cjs b/src/targets/node/native/fixtures/http-insecure.cjs deleted file mode 100644 index c39f9a68e..000000000 --- a/src/targets/node/native/fixtures/http-insecure.cjs +++ /dev/null @@ -1,24 +0,0 @@ -const http = require('http'); - -const options = { - method: 'GET', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: {} -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/jsonObj-multiline.cjs b/src/targets/node/native/fixtures/jsonObj-multiline.cjs deleted file mode 100644 index ba61989d1..000000000 --- a/src/targets/node/native/fixtures/jsonObj-multiline.cjs +++ /dev/null @@ -1,27 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'application/json' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write(JSON.stringify({foo: 'bar'})); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/jsonObj-null-value.cjs b/src/targets/node/native/fixtures/jsonObj-null-value.cjs deleted file mode 100644 index 5a5648288..000000000 --- a/src/targets/node/native/fixtures/jsonObj-null-value.cjs +++ /dev/null @@ -1,27 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'application/json' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write(JSON.stringify({foo: null})); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-data.cjs b/src/targets/node/native/fixtures/multipart-data.cjs deleted file mode 100644 index 9470e8ae1..000000000 --- a/src/targets/node/native/fixtures/multipart-data.cjs +++ /dev/null @@ -1,27 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'multipart/form-data; boundary=---011000010111000001101001' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write('-----011000010111000001101001\r\nContent-Disposition: form-data; name="foo"; filename="src/fixtures/files/hello.txt"\r\nContent-Type: text/plain\r\n\r\nHello World\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="bar"\r\n\r\nBonjour le monde\r\n-----011000010111000001101001--'); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-file.cjs b/src/targets/node/native/fixtures/multipart-file.cjs deleted file mode 100644 index aefa51da4..000000000 --- a/src/targets/node/native/fixtures/multipart-file.cjs +++ /dev/null @@ -1,27 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'multipart/form-data; boundary=---011000010111000001101001' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write('-----011000010111000001101001\r\nContent-Disposition: form-data; name="foo"; filename="src/fixtures/files/hello.txt"\r\nContent-Type: text/plain\r\n\r\n\r\n-----011000010111000001101001--'); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-form-data-no-params.cjs b/src/targets/node/native/fixtures/multipart-form-data-no-params.cjs deleted file mode 100644 index 98bbf669a..000000000 --- a/src/targets/node/native/fixtures/multipart-form-data-no-params.cjs +++ /dev/null @@ -1,26 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'Content-Type': 'multipart/form-data' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-form-data.cjs b/src/targets/node/native/fixtures/multipart-form-data.cjs deleted file mode 100644 index e914bad77..000000000 --- a/src/targets/node/native/fixtures/multipart-form-data.cjs +++ /dev/null @@ -1,27 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write('-----011000010111000001101001\r\nContent-Disposition: form-data; name="foo"\r\n\r\nbar\r\n-----011000010111000001101001--'); -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/nested.cjs b/src/targets/node/native/fixtures/nested.cjs deleted file mode 100644 index 9d0afd9e1..000000000 --- a/src/targets/node/native/fixtures/nested.cjs +++ /dev/null @@ -1,24 +0,0 @@ -const http = require('https'); - -const options = { - method: 'GET', - hostname: 'httpbin.org', - port: null, - path: '/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value', - headers: {} -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/postdata-malformed.cjs b/src/targets/node/native/fixtures/postdata-malformed.cjs deleted file mode 100644 index 78f3ca704..000000000 --- a/src/targets/node/native/fixtures/postdata-malformed.cjs +++ /dev/null @@ -1,26 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'application/json' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/query-encoded.cjs b/src/targets/node/native/fixtures/query-encoded.cjs deleted file mode 100644 index d57697168..000000000 --- a/src/targets/node/native/fixtures/query-encoded.cjs +++ /dev/null @@ -1,24 +0,0 @@ -const http = require('https'); - -const options = { - method: 'GET', - hostname: 'httpbin.org', - port: null, - path: '/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00', - headers: {} -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/query.cjs b/src/targets/node/native/fixtures/query.cjs deleted file mode 100644 index 74da137db..000000000 --- a/src/targets/node/native/fixtures/query.cjs +++ /dev/null @@ -1,24 +0,0 @@ -const http = require('https'); - -const options = { - method: 'GET', - hostname: 'httpbin.org', - port: null, - path: '/anything?foo=bar&foo=baz&baz=abc&key=value', - headers: {} -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/short.cjs b/src/targets/node/native/fixtures/short.cjs deleted file mode 100644 index b726546d8..000000000 --- a/src/targets/node/native/fixtures/short.cjs +++ /dev/null @@ -1,24 +0,0 @@ -const http = require('https'); - -const options = { - method: 'GET', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: {} -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/text-plain.cjs b/src/targets/node/native/fixtures/text-plain.cjs deleted file mode 100644 index 4fb117878..000000000 --- a/src/targets/node/native/fixtures/text-plain.cjs +++ /dev/null @@ -1,27 +0,0 @@ -const http = require('https'); - -const options = { - method: 'POST', - hostname: 'httpbin.org', - port: null, - path: '/anything', - headers: { - 'content-type': 'text/plain' - } -}; - -const req = http.request(options, function (res) { - const chunks = []; - - res.on('data', function (chunk) { - chunks.push(chunk); - }); - - res.on('end', function () { - const body = Buffer.concat(chunks); - console.log(body.toString()); - }); -}); - -req.write('Hello World'); -req.end(); \ No newline at end of file diff --git a/src/targets/node/target.ts b/src/targets/node/target.ts index 71484e077..b4649de8f 100644 --- a/src/targets/node/target.ts +++ b/src/targets/node/target.ts @@ -2,17 +2,15 @@ import type { Target } from '../index.js'; import { axios } from './axios/client.js'; import { fetch } from './fetch/client.js'; -import { native } from './native/client.js'; export const node: Target = { info: { key: 'node', title: 'Node.js', - default: 'native', + default: 'fetch', cli: 'node %s', }, clientsById: { - native, axios, fetch, }, From 8cf66c98e4047dd4353dcab06587405439f55794 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 17:06:15 -0700 Subject: [PATCH 04/22] fix: stop testing node native in CI --- src/integration.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/integration.test.ts b/src/integration.test.ts index e7039b269..9bab58313 100644 --- a/src/integration.test.ts +++ b/src/integration.test.ts @@ -21,7 +21,7 @@ const ENVIRONMENT_CONFIG = { c: ['libcurl'], csharp: ['httpclient', 'restsharp'], go: ['native'], - node: ['axios', 'fetch', 'native'], + node: ['axios', 'fetch'], php: ['curl', 'guzzle'], python: ['requests'], shell: ['curl'], @@ -30,7 +30,7 @@ const ENVIRONMENT_CONFIG = { // When running tests locally, or within a CI environment, we shold limit the targets that // we're testing so as to not require a mess of dependency requirements that would be better // served within a container. - node: ['native'], + node: ['fetch'], php: ['curl'], python: ['requests'], shell: ['curl'], From fd170ff4e8daa941046c653c7cb8bb592c8d5aea Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 18:34:32 -0700 Subject: [PATCH 05/22] refactor: removing js `xhr` --- src/helpers/__snapshots__/utils.test.ts.snap | 14 +-- src/targets/javascript/target.ts | 4 +- src/targets/javascript/xhr/client.test.ts | 19 ---- src/targets/javascript/xhr/client.ts | 102 ------------------ .../xhr/fixtures/application-form-encoded.js | 15 --- .../xhr/fixtures/application-json.js | 34 ------ .../javascript/xhr/fixtures/cookies.js | 15 --- src/targets/javascript/xhr/fixtures/cors.js | 13 --- .../javascript/xhr/fixtures/custom-method.js | 14 --- src/targets/javascript/xhr/fixtures/full.js | 17 --- .../javascript/xhr/fixtures/headers.js | 18 ---- .../javascript/xhr/fixtures/http-insecure.js | 14 --- .../xhr/fixtures/jsonObj-multiline.js | 17 --- .../xhr/fixtures/jsonObj-null-value.js | 17 --- .../javascript/xhr/fixtures/multipart-data.js | 16 --- .../javascript/xhr/fixtures/multipart-file.js | 15 --- .../fixtures/multipart-form-data-no-params.js | 13 --- .../xhr/fixtures/multipart-form-data.js | 15 --- src/targets/javascript/xhr/fixtures/nested.js | 14 --- .../xhr/fixtures/postdata-malformed.js | 15 --- .../javascript/xhr/fixtures/query-encoded.js | 14 --- src/targets/javascript/xhr/fixtures/query.js | 14 --- src/targets/javascript/xhr/fixtures/short.js | 14 --- .../javascript/xhr/fixtures/text-plain.js | 15 --- 24 files changed, 4 insertions(+), 454 deletions(-) delete mode 100644 src/targets/javascript/xhr/client.test.ts delete mode 100644 src/targets/javascript/xhr/client.ts delete mode 100644 src/targets/javascript/xhr/fixtures/application-form-encoded.js delete mode 100644 src/targets/javascript/xhr/fixtures/application-json.js delete mode 100644 src/targets/javascript/xhr/fixtures/cookies.js delete mode 100644 src/targets/javascript/xhr/fixtures/cors.js delete mode 100644 src/targets/javascript/xhr/fixtures/custom-method.js delete mode 100644 src/targets/javascript/xhr/fixtures/full.js delete mode 100644 src/targets/javascript/xhr/fixtures/headers.js delete mode 100644 src/targets/javascript/xhr/fixtures/http-insecure.js delete mode 100644 src/targets/javascript/xhr/fixtures/jsonObj-multiline.js delete mode 100644 src/targets/javascript/xhr/fixtures/jsonObj-null-value.js delete mode 100644 src/targets/javascript/xhr/fixtures/multipart-data.js delete mode 100644 src/targets/javascript/xhr/fixtures/multipart-file.js delete mode 100644 src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js delete mode 100644 src/targets/javascript/xhr/fixtures/multipart-form-data.js delete mode 100644 src/targets/javascript/xhr/fixtures/nested.js delete mode 100644 src/targets/javascript/xhr/fixtures/postdata-malformed.js delete mode 100644 src/targets/javascript/xhr/fixtures/query-encoded.js delete mode 100644 src/targets/javascript/xhr/fixtures/query.js delete mode 100644 src/targets/javascript/xhr/fixtures/short.js delete mode 100644 src/targets/javascript/xhr/fixtures/text-plain.js diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index da6d47024..84a0e6a50 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -120,13 +120,6 @@ exports[`availableTargets > returns all available targets 1`] = ` }, { "clients": [ - { - "description": "W3C Standard API that provides scripted client functionality", - "extname": ".js", - "key": "xhr", - "link": "https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest", - "title": "XMLHttpRequest", - }, { "description": "Promise based HTTP client for the browser and node.js", "extname": ".js", @@ -150,7 +143,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "jQuery", }, ], - "default": "xhr", + "default": "fetch", "key": "javascript", "title": "JavaScript", }, @@ -194,11 +187,10 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "Axios", }, { - "description": "Simplified HTTP node-fetch client", + "description": "Perform asynchronous HTTP requests with the Fetch API", "extname": ".cjs", - "installation": "npm install node-fetch@2 --save", "key": "fetch", - "link": "https://github.com/bitinn/node-fetch", + "link": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch", "title": "Fetch", }, ], diff --git a/src/targets/javascript/target.ts b/src/targets/javascript/target.ts index 116c26c4e..475b61697 100644 --- a/src/targets/javascript/target.ts +++ b/src/targets/javascript/target.ts @@ -3,17 +3,15 @@ import type { Target } from '../index.js'; import { axios } from './axios/client.js'; import { fetch } from './fetch/client.js'; import { jquery } from './jquery/client.js'; -import { xhr } from './xhr/client.js'; export const javascript: Target = { info: { key: 'javascript', title: 'JavaScript', - default: 'xhr', + default: 'fetch', }, clientsById: { - xhr, axios, fetch, jquery, diff --git a/src/targets/javascript/xhr/client.test.ts b/src/targets/javascript/xhr/client.test.ts deleted file mode 100644 index bd66a9ea1..000000000 --- a/src/targets/javascript/xhr/client.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Request } from '../../../index.js'; - -import request from '../../../fixtures/requests/short.cjs'; -import { runCustomFixtures } from '../../../fixtures/runCustomFixtures.js'; - -runCustomFixtures({ - targetId: 'javascript', - clientId: 'xhr', - tests: [ - { - it: 'should not use cors', - input: request.log.entries[0].request as Request, - options: { - cors: false, - }, - expected: 'cors.js', - }, - ], -}); diff --git a/src/targets/javascript/xhr/client.ts b/src/targets/javascript/xhr/client.ts deleted file mode 100644 index 33a2d1815..000000000 --- a/src/targets/javascript/xhr/client.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @description - * HTTP code snippet generator for native XMLHttpRequest - * - * @author - * @AhmadNassri - * - * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. - */ -import type { Client } from '../../index.js'; - -import stringifyObject from 'stringify-object'; - -import { CodeBuilder } from '../../../helpers/code-builder.js'; -import { escapeForSingleQuotes } from '../../../helpers/escape.js'; -import { getHeader, getHeaderName, hasHeader } from '../../../helpers/headers.js'; - -export interface XhrOptions { - cors?: boolean; -} - -export const xhr: Client = { - info: { - key: 'xhr', - title: 'XMLHttpRequest', - link: 'https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest', - description: 'W3C Standard API that provides scripted client functionality', - extname: '.js', - }, - convert: ({ postData, allHeaders, method, fullUrl }, options) => { - const opts = { - indent: ' ', - cors: true, - ...options, - }; - - const { blank, push, join } = new CodeBuilder({ indent: opts.indent }); - - switch (postData.mimeType) { - case 'application/json': - push( - `const data = JSON.stringify(${stringifyObject(postData.jsonObj, { - indent: opts.indent, - })});`, - ); - blank(); - break; - - case 'multipart/form-data': - if (!postData.params) { - break; - } - - push('const data = new FormData();'); - - postData.params.forEach(param => { - push(`data.append('${param.name}', '${param.value || param.fileName || ''}');`); - }); - - // remove the contentType header - if (hasHeader(allHeaders, 'content-type')) { - if (getHeader(allHeaders, 'content-type')?.includes('boundary')) { - const headerName = getHeaderName(allHeaders, 'content-type'); - if (headerName) { - delete allHeaders[headerName]; - } - } - } - - blank(); - break; - - default: - push(`const data = ${postData.text ? `'${postData.text}'` : 'null'};`); - blank(); - } - - push('const xhr = new XMLHttpRequest();'); - - if (opts.cors) { - push('xhr.withCredentials = true;'); - } - - blank(); - push("xhr.addEventListener('readystatechange', function () {"); - push('if (this.readyState === this.DONE) {', 1); - push('console.log(this.responseText);', 2); - push('}', 1); - push('});'); - blank(); - push(`xhr.open('${method}', '${fullUrl}');`); - - Object.keys(allHeaders).forEach(key => { - push(`xhr.setRequestHeader('${key}', '${escapeForSingleQuotes(allHeaders[key])}');`); - }); - - blank(); - push('xhr.send(data);'); - - return join(); - }, -}; diff --git a/src/targets/javascript/xhr/fixtures/application-form-encoded.js b/src/targets/javascript/xhr/fixtures/application-form-encoded.js deleted file mode 100644 index e745ca388..000000000 --- a/src/targets/javascript/xhr/fixtures/application-form-encoded.js +++ /dev/null @@ -1,15 +0,0 @@ -const data = 'foo=bar&hello=world'; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); -xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/application-json.js b/src/targets/javascript/xhr/fixtures/application-json.js deleted file mode 100644 index 05109f1f6..000000000 --- a/src/targets/javascript/xhr/fixtures/application-json.js +++ /dev/null @@ -1,34 +0,0 @@ -const data = JSON.stringify({ - number: 1, - string: 'f"oo', - arr: [ - 1, - 2, - 3 - ], - nested: { - a: 'b' - }, - arr_mix: [ - 1, - 'a', - { - arr_mix_nested: [] - } - ], - boolean: false -}); - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); -xhr.setRequestHeader('content-type', 'application/json'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/cookies.js b/src/targets/javascript/xhr/fixtures/cookies.js deleted file mode 100644 index 303865891..000000000 --- a/src/targets/javascript/xhr/fixtures/cookies.js +++ /dev/null @@ -1,15 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'https://httpbin.org/cookies'); -xhr.setRequestHeader('cookie', 'foo=bar; bar=baz'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/cors.js b/src/targets/javascript/xhr/fixtures/cors.js deleted file mode 100644 index 7be5b75a7..000000000 --- a/src/targets/javascript/xhr/fixtures/cors.js +++ /dev/null @@ -1,13 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'https://httpbin.org/anything'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/custom-method.js b/src/targets/javascript/xhr/fixtures/custom-method.js deleted file mode 100644 index b7249c740..000000000 --- a/src/targets/javascript/xhr/fixtures/custom-method.js +++ /dev/null @@ -1,14 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('PROPFIND', 'https://httpbin.org/anything'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/full.js b/src/targets/javascript/xhr/fixtures/full.js deleted file mode 100644 index e3190633e..000000000 --- a/src/targets/javascript/xhr/fixtures/full.js +++ /dev/null @@ -1,17 +0,0 @@ -const data = 'foo=bar'; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value'); -xhr.setRequestHeader('cookie', 'foo=bar; bar=baz'); -xhr.setRequestHeader('accept', 'application/json'); -xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/headers.js b/src/targets/javascript/xhr/fixtures/headers.js deleted file mode 100644 index 919deb13a..000000000 --- a/src/targets/javascript/xhr/fixtures/headers.js +++ /dev/null @@ -1,18 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'https://httpbin.org/headers'); -xhr.setRequestHeader('accept', 'application/json'); -xhr.setRequestHeader('x-foo', 'Bar'); -xhr.setRequestHeader('x-bar', 'Foo'); -xhr.setRequestHeader('quoted-value', '"quoted" \'string\''); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/http-insecure.js b/src/targets/javascript/xhr/fixtures/http-insecure.js deleted file mode 100644 index 006f993bf..000000000 --- a/src/targets/javascript/xhr/fixtures/http-insecure.js +++ /dev/null @@ -1,14 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'http://httpbin.org/anything'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/jsonObj-multiline.js b/src/targets/javascript/xhr/fixtures/jsonObj-multiline.js deleted file mode 100644 index db126cbe6..000000000 --- a/src/targets/javascript/xhr/fixtures/jsonObj-multiline.js +++ /dev/null @@ -1,17 +0,0 @@ -const data = JSON.stringify({ - foo: 'bar' -}); - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); -xhr.setRequestHeader('content-type', 'application/json'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/jsonObj-null-value.js b/src/targets/javascript/xhr/fixtures/jsonObj-null-value.js deleted file mode 100644 index 92befdc34..000000000 --- a/src/targets/javascript/xhr/fixtures/jsonObj-null-value.js +++ /dev/null @@ -1,17 +0,0 @@ -const data = JSON.stringify({ - foo: null -}); - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); -xhr.setRequestHeader('content-type', 'application/json'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-data.js b/src/targets/javascript/xhr/fixtures/multipart-data.js deleted file mode 100644 index 0dabcfeaf..000000000 --- a/src/targets/javascript/xhr/fixtures/multipart-data.js +++ /dev/null @@ -1,16 +0,0 @@ -const data = new FormData(); -data.append('foo', 'Hello World'); -data.append('bar', 'Bonjour le monde'); - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-file.js b/src/targets/javascript/xhr/fixtures/multipart-file.js deleted file mode 100644 index aaca03d25..000000000 --- a/src/targets/javascript/xhr/fixtures/multipart-file.js +++ /dev/null @@ -1,15 +0,0 @@ -const data = new FormData(); -data.append('foo', 'src/fixtures/files/hello.txt'); - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js b/src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js deleted file mode 100644 index 96179647d..000000000 --- a/src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js +++ /dev/null @@ -1,13 +0,0 @@ -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); -xhr.setRequestHeader('Content-Type', 'multipart/form-data'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-form-data.js b/src/targets/javascript/xhr/fixtures/multipart-form-data.js deleted file mode 100644 index 2c4d372e3..000000000 --- a/src/targets/javascript/xhr/fixtures/multipart-form-data.js +++ /dev/null @@ -1,15 +0,0 @@ -const data = new FormData(); -data.append('foo', 'bar'); - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/nested.js b/src/targets/javascript/xhr/fixtures/nested.js deleted file mode 100644 index 37d2cdee4..000000000 --- a/src/targets/javascript/xhr/fixtures/nested.js +++ /dev/null @@ -1,14 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'https://httpbin.org/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/postdata-malformed.js b/src/targets/javascript/xhr/fixtures/postdata-malformed.js deleted file mode 100644 index 51ea31877..000000000 --- a/src/targets/javascript/xhr/fixtures/postdata-malformed.js +++ /dev/null @@ -1,15 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); -xhr.setRequestHeader('content-type', 'application/json'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/query-encoded.js b/src/targets/javascript/xhr/fixtures/query-encoded.js deleted file mode 100644 index 59626c98d..000000000 --- a/src/targets/javascript/xhr/fixtures/query-encoded.js +++ /dev/null @@ -1,14 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'https://httpbin.org/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/query.js b/src/targets/javascript/xhr/fixtures/query.js deleted file mode 100644 index 5cc3bb5ce..000000000 --- a/src/targets/javascript/xhr/fixtures/query.js +++ /dev/null @@ -1,14 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/short.js b/src/targets/javascript/xhr/fixtures/short.js deleted file mode 100644 index d7184f2f4..000000000 --- a/src/targets/javascript/xhr/fixtures/short.js +++ /dev/null @@ -1,14 +0,0 @@ -const data = null; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('GET', 'https://httpbin.org/anything'); - -xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/text-plain.js b/src/targets/javascript/xhr/fixtures/text-plain.js deleted file mode 100644 index 6665974bc..000000000 --- a/src/targets/javascript/xhr/fixtures/text-plain.js +++ /dev/null @@ -1,15 +0,0 @@ -const data = 'Hello World'; - -const xhr = new XMLHttpRequest(); -xhr.withCredentials = true; - -xhr.addEventListener('readystatechange', function () { - if (this.readyState === this.DONE) { - console.log(this.responseText); - } -}); - -xhr.open('POST', 'https://httpbin.org/anything'); -xhr.setRequestHeader('content-type', 'text/plain'); - -xhr.send(data); \ No newline at end of file From 244502af69a8a587d67b6502287be22b00cdb3aa Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 18:36:42 -0700 Subject: [PATCH 06/22] fix: broken snapshot --- src/helpers/__snapshots__/utils.test.ts.snap | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index 84a0e6a50..066faa2ce 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -187,10 +187,11 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "Axios", }, { - "description": "Perform asynchronous HTTP requests with the Fetch API", + "description": "Simplified HTTP node-fetch client", "extname": ".cjs", + "installation": "npm install node-fetch@2 --save", "key": "fetch", - "link": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch", + "link": "https://github.com/bitinn/node-fetch", "title": "Fetch", }, ], From 9cbd22fa810d05955f54e62c189f4cec656bf75f Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:05:20 -0700 Subject: [PATCH 07/22] refactor: moving the node `fetch` client from `node-fetch` to native --- .vscode/settings.json | 9 +++- integrations/node.Dockerfile | 5 +-- src/helpers/__snapshots__/utils.test.ts.snap | 9 ++-- src/targets/node/fetch/client.ts | 42 +++++++------------ ...ncoded.cjs => application-form-encoded.js} | 3 -- ...plication-json.cjs => application-json.js} | 2 - .../fixtures/{cookies.cjs => cookies.js} | 2 - .../{custom-method.cjs => custom-method.js} | 2 - .../node/fetch/fixtures/{full.cjs => full.js} | 3 -- .../fixtures/{headers.cjs => headers.js} | 2 - .../{http-insecure.cjs => http-insecure.js} | 2 - ...Obj-multiline.cjs => jsonObj-multiline.js} | 2 - ...j-null-value.cjs => jsonObj-null-value.js} | 2 - .../{multipart-data.cjs => multipart-data.js} | 12 ++---- .../node/fetch/fixtures/multipart-file.cjs | 16 ------- .../node/fetch/fixtures/multipart-file.js | 12 ++++++ ...s.cjs => multipart-form-data-no-params.js} | 2 - ...t-form-data.cjs => multipart-form-data.js} | 7 +--- .../fetch/fixtures/{nested.cjs => nested.js} | 2 - ...ta-malformed.cjs => postdata-malformed.js} | 2 - .../{query-encoded.cjs => query-encoded.js} | 2 - .../fetch/fixtures/{query.cjs => query.js} | 2 - .../fetch/fixtures/{short.cjs => short.js} | 2 - .../{text-plain.cjs => text-plain.js} | 2 - 24 files changed, 43 insertions(+), 103 deletions(-) rename src/targets/node/fetch/fixtures/{application-form-encoded.cjs => application-form-encoded.js} (83%) rename src/targets/node/fetch/fixtures/{application-json.cjs => application-json.js} (91%) rename src/targets/node/fetch/fixtures/{cookies.cjs => cookies.js} (86%) rename src/targets/node/fetch/fixtures/{custom-method.cjs => custom-method.js} (84%) rename src/targets/node/fetch/fixtures/{full.cjs => full.js} (85%) rename src/targets/node/fetch/fixtures/{headers.cjs => headers.js} (90%) rename src/targets/node/fetch/fixtures/{http-insecure.cjs => http-insecure.js} (84%) rename src/targets/node/fetch/fixtures/{jsonObj-multiline.cjs => jsonObj-multiline.js} (88%) rename src/targets/node/fetch/fixtures/{jsonObj-null-value.cjs => jsonObj-null-value.js} (88%) rename src/targets/node/fetch/fixtures/{multipart-data.cjs => multipart-data.js} (54%) delete mode 100644 src/targets/node/fetch/fixtures/multipart-file.cjs create mode 100644 src/targets/node/fetch/fixtures/multipart-file.js rename src/targets/node/fetch/fixtures/{multipart-form-data-no-params.cjs => multipart-form-data-no-params.js} (87%) rename src/targets/node/fetch/fixtures/{multipart-form-data.cjs => multipart-form-data.js} (63%) rename src/targets/node/fetch/fixtures/{nested.cjs => nested.js} (86%) rename src/targets/node/fetch/fixtures/{postdata-malformed.cjs => postdata-malformed.js} (87%) rename src/targets/node/fetch/fixtures/{query-encoded.cjs => query-encoded.js} (88%) rename src/targets/node/fetch/fixtures/{query.cjs => query.js} (86%) rename src/targets/node/fetch/fixtures/{short.cjs => short.js} (84%) rename src/targets/node/fetch/fixtures/{text-plain.cjs => text-plain.js} (87%) diff --git a/.vscode/settings.json b/.vscode/settings.json index c256ef48a..0caf0e183 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,15 @@ { + "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll": "explicit" }, - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, // controlled by the .editorconfig at root since we can't map vscode settings directly to files // https://github.com/microsoft/vscode/issues/35350 - "files.insertFinalNewline": false + "files.insertFinalNewline": false, + + "search.exclude": { + "coverage": true, + } } diff --git a/integrations/node.Dockerfile b/integrations/node.Dockerfile index 22b91b0ce..f599f3082 100755 --- a/integrations/node.Dockerfile +++ b/integrations/node.Dockerfile @@ -13,10 +13,7 @@ WORKDIR /src ADD package.json /src/ # https://www.npmjs.com/package/axios -# https://www.npmjs.com/package/request -# Installing node-fetch@2 because as of 3.0 is't now an ESM-only package. -# https://www.npmjs.com/package/node-fetch -RUN npm install axios request node-fetch@2 && \ +RUN npm install axios && \ npm install ADD . /src diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index 066faa2ce..f185e1821 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -187,12 +187,11 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "Axios", }, { - "description": "Simplified HTTP node-fetch client", - "extname": ".cjs", - "installation": "npm install node-fetch@2 --save", + "description": "Perform asynchronous HTTP requests with the Fetch API", + "extname": ".js", "key": "fetch", - "link": "https://github.com/bitinn/node-fetch", - "title": "Fetch", + "link": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch", + "title": "fetch", }, ], "default": "fetch", diff --git a/src/targets/node/fetch/client.ts b/src/targets/node/fetch/client.ts index c8f1b76c6..e2046e725 100644 --- a/src/targets/node/fetch/client.ts +++ b/src/targets/node/fetch/client.ts @@ -1,12 +1,3 @@ -/** - * @description - * HTTP code snippet generator for Node.js using node-fetch. - * - * @author - * @hirenoble - * - * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. - */ import type { Client } from '../../index.js'; import stringifyObject from 'stringify-object'; @@ -17,11 +8,10 @@ import { getHeaderName } from '../../../helpers/headers.js'; export const fetch: Client = { info: { key: 'fetch', - title: 'Fetch', - link: 'https://github.com/bitinn/node-fetch', - description: 'Simplified HTTP node-fetch client', - extname: '.cjs', - installation: 'npm install node-fetch@2 --save', + title: 'fetch', + link: 'https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch', + description: 'Perform asynchronous HTTP requests with the Fetch API', + extname: '.js', }, convert: ({ method, fullUrl, postData, headersObj, cookies }, options) => { const opts = { @@ -32,7 +22,6 @@ export const fetch: Client = { let includeFS = false; const { blank, push, join, unshift } = new CodeBuilder({ indent: opts.indent }); - push("const fetch = require('node-fetch');"); const url = fullUrl; const reqOpts: Record = { method, @@ -44,15 +33,14 @@ export const fetch: Client = { switch (postData.mimeType) { case 'application/x-www-form-urlencoded': - unshift("const { URLSearchParams } = require('url');"); push('const encodedParams = new URLSearchParams();'); - blank(); postData.params?.forEach(param => { push(`encodedParams.set('${param.name}', '${param.value}');`); }); reqOpts.body = 'encodedParams'; + blank(); break; case 'application/json': @@ -68,16 +56,14 @@ export const fetch: Client = { break; } - // The `form-data` module automatically adds a `Content-Type` header for `multipart/form-data` content and if we add our own here data won't be correctly transmitted. + // The FormData API automatically adds a `Content-Type` header for `multipart/form-data` content and if we add our own here data won't be correctly transmitted. // eslint-disable-next-line no-case-declarations -- We're only using `contentTypeHeader` within this block. const contentTypeHeader = getHeaderName(headersObj, 'content-type'); if (contentTypeHeader) { delete headersObj[contentTypeHeader]; } - unshift("const FormData = require('form-data');"); push('const formData = new FormData();'); - blank(); postData.params.forEach(param => { if (!param.fileName && !param.fileName && !param.contentType) { @@ -87,9 +73,12 @@ export const fetch: Client = { if (param.fileName) { includeFS = true; - push(`formData.append('${param.name}', fs.createReadStream('${param.fileName}'));`); + push(`formData.append('${param.name}', await fs.openAsBlob('${param.fileName}'));`); } }); + + reqOpts.body = 'formData'; + blank(); break; default: @@ -110,7 +99,7 @@ export const fetch: Client = { reqOpts.headers.cookie = cookiesString; } } - blank(); + push(`const url = '${url}';`); // If we ultimately don't have any headers to send then we shouldn't add an empty object into the request options. @@ -137,12 +126,9 @@ export const fetch: Client = { blank(); if (includeFS) { - unshift("const fs = require('fs');"); - } - if (postData.params && postData.mimeType === 'multipart/form-data') { - push('options.body = formData;'); - blank(); + unshift("import fs from 'fs';\n"); } + push('fetch(url, options)'); push('.then(res => res.json())', 1); push('.then(json => console.log(json))', 1); @@ -150,6 +136,6 @@ export const fetch: Client = { return join() .replace(/'encodedParams'/, 'encodedParams') - .replace(/"fs\.createReadStream\(\\"(.+)\\"\)"/, 'fs.createReadStream("$1")'); + .replace(/'formData'/, 'formData'); }, }; diff --git a/src/targets/node/fetch/fixtures/application-form-encoded.cjs b/src/targets/node/fetch/fixtures/application-form-encoded.js similarity index 83% rename from src/targets/node/fetch/fixtures/application-form-encoded.cjs rename to src/targets/node/fetch/fixtures/application-form-encoded.js index 430528450..4d1f15907 100644 --- a/src/targets/node/fetch/fixtures/application-form-encoded.cjs +++ b/src/targets/node/fetch/fixtures/application-form-encoded.js @@ -1,7 +1,4 @@ -const { URLSearchParams } = require('url'); -const fetch = require('node-fetch'); const encodedParams = new URLSearchParams(); - encodedParams.set('foo', 'bar'); encodedParams.set('hello', 'world'); diff --git a/src/targets/node/fetch/fixtures/application-json.cjs b/src/targets/node/fetch/fixtures/application-json.js similarity index 91% rename from src/targets/node/fetch/fixtures/application-json.cjs rename to src/targets/node/fetch/fixtures/application-json.js index b6e1908f1..d5f14cbba 100644 --- a/src/targets/node/fetch/fixtures/application-json.cjs +++ b/src/targets/node/fetch/fixtures/application-json.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = { method: 'POST', diff --git a/src/targets/node/fetch/fixtures/cookies.cjs b/src/targets/node/fetch/fixtures/cookies.js similarity index 86% rename from src/targets/node/fetch/fixtures/cookies.cjs rename to src/targets/node/fetch/fixtures/cookies.js index e61363e0a..57f7102a7 100644 --- a/src/targets/node/fetch/fixtures/cookies.cjs +++ b/src/targets/node/fetch/fixtures/cookies.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/cookies'; const options = {method: 'GET', headers: {cookie: 'foo=bar; bar=baz'}}; diff --git a/src/targets/node/fetch/fixtures/custom-method.cjs b/src/targets/node/fetch/fixtures/custom-method.js similarity index 84% rename from src/targets/node/fetch/fixtures/custom-method.cjs rename to src/targets/node/fetch/fixtures/custom-method.js index df3e72a79..48d9c7584 100644 --- a/src/targets/node/fetch/fixtures/custom-method.cjs +++ b/src/targets/node/fetch/fixtures/custom-method.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = {method: 'PROPFIND'}; diff --git a/src/targets/node/fetch/fixtures/full.cjs b/src/targets/node/fetch/fixtures/full.js similarity index 85% rename from src/targets/node/fetch/fixtures/full.cjs rename to src/targets/node/fetch/fixtures/full.js index 6777b1999..2317a9abc 100644 --- a/src/targets/node/fetch/fixtures/full.cjs +++ b/src/targets/node/fetch/fixtures/full.js @@ -1,7 +1,4 @@ -const { URLSearchParams } = require('url'); -const fetch = require('node-fetch'); const encodedParams = new URLSearchParams(); - encodedParams.set('foo', 'bar'); const url = 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value'; diff --git a/src/targets/node/fetch/fixtures/headers.cjs b/src/targets/node/fetch/fixtures/headers.js similarity index 90% rename from src/targets/node/fetch/fixtures/headers.cjs rename to src/targets/node/fetch/fixtures/headers.js index 59ee96acb..76e4e8edb 100644 --- a/src/targets/node/fetch/fixtures/headers.cjs +++ b/src/targets/node/fetch/fixtures/headers.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/headers'; const options = { method: 'GET', diff --git a/src/targets/node/fetch/fixtures/http-insecure.cjs b/src/targets/node/fetch/fixtures/http-insecure.js similarity index 84% rename from src/targets/node/fetch/fixtures/http-insecure.cjs rename to src/targets/node/fetch/fixtures/http-insecure.js index 37be04767..cd707caf9 100644 --- a/src/targets/node/fetch/fixtures/http-insecure.cjs +++ b/src/targets/node/fetch/fixtures/http-insecure.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'http://httpbin.org/anything'; const options = {method: 'GET'}; diff --git a/src/targets/node/fetch/fixtures/jsonObj-multiline.cjs b/src/targets/node/fetch/fixtures/jsonObj-multiline.js similarity index 88% rename from src/targets/node/fetch/fixtures/jsonObj-multiline.cjs rename to src/targets/node/fetch/fixtures/jsonObj-multiline.js index 3625b76e5..723a849d0 100644 --- a/src/targets/node/fetch/fixtures/jsonObj-multiline.cjs +++ b/src/targets/node/fetch/fixtures/jsonObj-multiline.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = { method: 'POST', diff --git a/src/targets/node/fetch/fixtures/jsonObj-null-value.cjs b/src/targets/node/fetch/fixtures/jsonObj-null-value.js similarity index 88% rename from src/targets/node/fetch/fixtures/jsonObj-null-value.cjs rename to src/targets/node/fetch/fixtures/jsonObj-null-value.js index c10da148a..7e5384c76 100644 --- a/src/targets/node/fetch/fixtures/jsonObj-null-value.cjs +++ b/src/targets/node/fetch/fixtures/jsonObj-null-value.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = { method: 'POST', diff --git a/src/targets/node/fetch/fixtures/multipart-data.cjs b/src/targets/node/fetch/fixtures/multipart-data.js similarity index 54% rename from src/targets/node/fetch/fixtures/multipart-data.cjs rename to src/targets/node/fetch/fixtures/multipart-data.js index 2c3363e27..e14cef49f 100644 --- a/src/targets/node/fetch/fixtures/multipart-data.cjs +++ b/src/targets/node/fetch/fixtures/multipart-data.js @@ -1,15 +1,11 @@ -const fs = require('fs'); -const FormData = require('form-data'); -const fetch = require('node-fetch'); -const formData = new FormData(); +import fs from 'fs'; -formData.append('foo', fs.createReadStream('src/fixtures/files/hello.txt')); +const formData = new FormData(); +formData.append('foo', await fs.openAsBlob('src/fixtures/files/hello.txt')); formData.append('bar', 'Bonjour le monde'); const url = 'https://httpbin.org/anything'; -const options = {method: 'POST'}; - -options.body = formData; +const options = {method: 'POST', body: formData}; fetch(url, options) .then(res => res.json()) diff --git a/src/targets/node/fetch/fixtures/multipart-file.cjs b/src/targets/node/fetch/fixtures/multipart-file.cjs deleted file mode 100644 index 68f16405c..000000000 --- a/src/targets/node/fetch/fixtures/multipart-file.cjs +++ /dev/null @@ -1,16 +0,0 @@ -const fs = require('fs'); -const FormData = require('form-data'); -const fetch = require('node-fetch'); -const formData = new FormData(); - -formData.append('foo', fs.createReadStream('src/fixtures/files/hello.txt')); - -const url = 'https://httpbin.org/anything'; -const options = {method: 'POST'}; - -options.body = formData; - -fetch(url, options) - .then(res => res.json()) - .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/multipart-file.js b/src/targets/node/fetch/fixtures/multipart-file.js new file mode 100644 index 000000000..4d2109ef3 --- /dev/null +++ b/src/targets/node/fetch/fixtures/multipart-file.js @@ -0,0 +1,12 @@ +import fs from 'fs'; + +const formData = new FormData(); +formData.append('foo', await fs.openAsBlob('src/fixtures/files/hello.txt')); + +const url = 'https://httpbin.org/anything'; +const options = {method: 'POST', body: formData}; + +fetch(url, options) + .then(res => res.json()) + .then(json => console.log(json)) + .catch(err => console.error('error:' + err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/multipart-form-data-no-params.cjs b/src/targets/node/fetch/fixtures/multipart-form-data-no-params.js similarity index 87% rename from src/targets/node/fetch/fixtures/multipart-form-data-no-params.cjs rename to src/targets/node/fetch/fixtures/multipart-form-data-no-params.js index 177943af9..d4b3f8a00 100644 --- a/src/targets/node/fetch/fixtures/multipart-form-data-no-params.cjs +++ b/src/targets/node/fetch/fixtures/multipart-form-data-no-params.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = {method: 'POST', headers: {'Content-Type': 'multipart/form-data'}}; diff --git a/src/targets/node/fetch/fixtures/multipart-form-data.cjs b/src/targets/node/fetch/fixtures/multipart-form-data.js similarity index 63% rename from src/targets/node/fetch/fixtures/multipart-form-data.cjs rename to src/targets/node/fetch/fixtures/multipart-form-data.js index f77d66774..08af27bc0 100644 --- a/src/targets/node/fetch/fixtures/multipart-form-data.cjs +++ b/src/targets/node/fetch/fixtures/multipart-form-data.js @@ -1,13 +1,8 @@ -const FormData = require('form-data'); -const fetch = require('node-fetch'); const formData = new FormData(); - formData.append('foo', 'bar'); const url = 'https://httpbin.org/anything'; -const options = {method: 'POST'}; - -options.body = formData; +const options = {method: 'POST', body: formData}; fetch(url, options) .then(res => res.json()) diff --git a/src/targets/node/fetch/fixtures/nested.cjs b/src/targets/node/fetch/fixtures/nested.js similarity index 86% rename from src/targets/node/fetch/fixtures/nested.cjs rename to src/targets/node/fetch/fixtures/nested.js index 0fb008e35..f483a3bd6 100644 --- a/src/targets/node/fetch/fixtures/nested.cjs +++ b/src/targets/node/fetch/fixtures/nested.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value'; const options = {method: 'GET'}; diff --git a/src/targets/node/fetch/fixtures/postdata-malformed.cjs b/src/targets/node/fetch/fixtures/postdata-malformed.js similarity index 87% rename from src/targets/node/fetch/fixtures/postdata-malformed.cjs rename to src/targets/node/fetch/fixtures/postdata-malformed.js index 95af34d41..372995995 100644 --- a/src/targets/node/fetch/fixtures/postdata-malformed.cjs +++ b/src/targets/node/fetch/fixtures/postdata-malformed.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = {method: 'POST', headers: {'content-type': 'application/json'}}; diff --git a/src/targets/node/fetch/fixtures/query-encoded.cjs b/src/targets/node/fetch/fixtures/query-encoded.js similarity index 88% rename from src/targets/node/fetch/fixtures/query-encoded.cjs rename to src/targets/node/fetch/fixtures/query-encoded.js index bd52227ef..8cd79b494 100644 --- a/src/targets/node/fetch/fixtures/query-encoded.cjs +++ b/src/targets/node/fetch/fixtures/query-encoded.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00'; const options = {method: 'GET'}; diff --git a/src/targets/node/fetch/fixtures/query.cjs b/src/targets/node/fetch/fixtures/query.js similarity index 86% rename from src/targets/node/fetch/fixtures/query.cjs rename to src/targets/node/fetch/fixtures/query.js index d18f187c5..6905e3902 100644 --- a/src/targets/node/fetch/fixtures/query.cjs +++ b/src/targets/node/fetch/fixtures/query.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value'; const options = {method: 'GET'}; diff --git a/src/targets/node/fetch/fixtures/short.cjs b/src/targets/node/fetch/fixtures/short.js similarity index 84% rename from src/targets/node/fetch/fixtures/short.cjs rename to src/targets/node/fetch/fixtures/short.js index bddc8acd7..944e27752 100644 --- a/src/targets/node/fetch/fixtures/short.cjs +++ b/src/targets/node/fetch/fixtures/short.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = {method: 'GET'}; diff --git a/src/targets/node/fetch/fixtures/text-plain.cjs b/src/targets/node/fetch/fixtures/text-plain.js similarity index 87% rename from src/targets/node/fetch/fixtures/text-plain.cjs rename to src/targets/node/fetch/fixtures/text-plain.js index fc9aea5d7..10321ade0 100644 --- a/src/targets/node/fetch/fixtures/text-plain.cjs +++ b/src/targets/node/fetch/fixtures/text-plain.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - const url = 'https://httpbin.org/anything'; const options = {method: 'POST', headers: {'content-type': 'text/plain'}, body: 'Hello World'}; From 41885467798c1d9c408362ed91c773d94ea7baad Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:16:45 -0700 Subject: [PATCH 08/22] refactor: various tweaks to our node `axios` snippets --- src/targets/node/axios/client.ts | 16 ++++------------ .../axios/fixtures/application-form-encoded.cjs | 11 +++-------- .../node/axios/fixtures/application-json.cjs | 10 +++------- src/targets/node/axios/fixtures/cookies.cjs | 10 +++------- .../node/axios/fixtures/custom-method.cjs | 10 +++------- src/targets/node/axios/fixtures/full.cjs | 11 +++-------- src/targets/node/axios/fixtures/headers.cjs | 10 +++------- .../node/axios/fixtures/http-insecure.cjs | 10 +++------- .../node/axios/fixtures/jsonObj-multiline.cjs | 10 +++------- .../node/axios/fixtures/jsonObj-null-value.cjs | 10 +++------- .../node/axios/fixtures/multipart-data.cjs | 10 +++------- .../node/axios/fixtures/multipart-file.cjs | 10 +++------- .../fixtures/multipart-form-data-no-params.cjs | 10 +++------- .../node/axios/fixtures/multipart-form-data.cjs | 10 +++------- src/targets/node/axios/fixtures/nested.cjs | 10 +++------- .../node/axios/fixtures/postdata-malformed.cjs | 10 +++------- .../node/axios/fixtures/query-encoded.cjs | 10 +++------- src/targets/node/axios/fixtures/query.cjs | 10 +++------- src/targets/node/axios/fixtures/short.cjs | 10 +++------- src/targets/node/axios/fixtures/text-plain.cjs | 10 +++------- 20 files changed, 61 insertions(+), 147 deletions(-) diff --git a/src/targets/node/axios/client.ts b/src/targets/node/axios/client.ts index fd71e74c3..2cd938159 100644 --- a/src/targets/node/axios/client.ts +++ b/src/targets/node/axios/client.ts @@ -29,7 +29,8 @@ export const axios: Client = { }; const { blank, join, push, addPostProcessor } = new CodeBuilder({ indent: opts.indent }); - push("const axios = require('axios');"); + push("import axios from 'axios';"); + blank(); const reqOpts: Record = { method, @@ -43,9 +44,6 @@ export const axios: Client = { switch (postData.mimeType) { case 'application/x-www-form-urlencoded': if (postData.params) { - push("const { URLSearchParams } = require('url');"); - blank(); - push('const encodedParams = new URLSearchParams();'); postData.params.forEach(param => { push(`encodedParams.set('${param.name}', '${param.value}');`); @@ -60,14 +58,12 @@ export const axios: Client = { break; case 'application/json': - blank(); if (postData.jsonObj) { reqOpts.data = postData.jsonObj; } break; default: - blank(); if (postData.text) { reqOpts.data = postData.text; } @@ -79,12 +75,8 @@ export const axios: Client = { push('axios'); push('.request(options)', 1); - push('.then(function (response) {', 1); - push('console.log(response.data);', 2); - push('})', 1); - push('.catch(function (error) {', 1); - push('console.error(error);', 2); - push('});', 1); + push('.then(res => console.log(res.data))', 1); + push('.catch(err => console.error(err));', 1); return join(); }, diff --git a/src/targets/node/axios/fixtures/application-form-encoded.cjs b/src/targets/node/axios/fixtures/application-form-encoded.cjs index 2d3298955..1a83ea542 100644 --- a/src/targets/node/axios/fixtures/application-form-encoded.cjs +++ b/src/targets/node/axios/fixtures/application-form-encoded.cjs @@ -1,5 +1,4 @@ -const axios = require('axios'); -const { URLSearchParams } = require('url'); +import axios from 'axios'; const encodedParams = new URLSearchParams(); encodedParams.set('foo', 'bar'); @@ -14,9 +13,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/application-json.cjs b/src/targets/node/axios/fixtures/application-json.cjs index fc3d0b13a..98903a65a 100644 --- a/src/targets/node/axios/fixtures/application-json.cjs +++ b/src/targets/node/axios/fixtures/application-json.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -16,9 +16,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/cookies.cjs b/src/targets/node/axios/fixtures/cookies.cjs index e1a046321..7e9cf7ae3 100644 --- a/src/targets/node/axios/fixtures/cookies.cjs +++ b/src/targets/node/axios/fixtures/cookies.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'GET', @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/custom-method.cjs b/src/targets/node/axios/fixtures/custom-method.cjs index 795827399..4142f5977 100644 --- a/src/targets/node/axios/fixtures/custom-method.cjs +++ b/src/targets/node/axios/fixtures/custom-method.cjs @@ -1,12 +1,8 @@ -const axios = require('axios'); +import axios from 'axios'; const options = {method: 'PROPFIND', url: 'https://httpbin.org/anything'}; axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/full.cjs b/src/targets/node/axios/fixtures/full.cjs index 90c039479..fce011d95 100644 --- a/src/targets/node/axios/fixtures/full.cjs +++ b/src/targets/node/axios/fixtures/full.cjs @@ -1,5 +1,4 @@ -const axios = require('axios'); -const { URLSearchParams } = require('url'); +import axios from 'axios'; const encodedParams = new URLSearchParams(); encodedParams.set('foo', 'bar'); @@ -17,9 +16,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/headers.cjs b/src/targets/node/axios/fixtures/headers.cjs index 1f129cdd6..8026a1ee9 100644 --- a/src/targets/node/axios/fixtures/headers.cjs +++ b/src/targets/node/axios/fixtures/headers.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'GET', @@ -13,9 +13,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/http-insecure.cjs b/src/targets/node/axios/fixtures/http-insecure.cjs index 66a197661..0512e2df7 100644 --- a/src/targets/node/axios/fixtures/http-insecure.cjs +++ b/src/targets/node/axios/fixtures/http-insecure.cjs @@ -1,12 +1,8 @@ -const axios = require('axios'); +import axios from 'axios'; const options = {method: 'GET', url: 'http://httpbin.org/anything'}; axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/jsonObj-multiline.cjs b/src/targets/node/axios/fixtures/jsonObj-multiline.cjs index 6a02916c2..7d41fbc52 100644 --- a/src/targets/node/axios/fixtures/jsonObj-multiline.cjs +++ b/src/targets/node/axios/fixtures/jsonObj-multiline.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/jsonObj-null-value.cjs b/src/targets/node/axios/fixtures/jsonObj-null-value.cjs index ba03201b7..3731d644d 100644 --- a/src/targets/node/axios/fixtures/jsonObj-null-value.cjs +++ b/src/targets/node/axios/fixtures/jsonObj-null-value.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/multipart-data.cjs b/src/targets/node/axios/fixtures/multipart-data.cjs index f2268d0e5..d8672a082 100644 --- a/src/targets/node/axios/fixtures/multipart-data.cjs +++ b/src/targets/node/axios/fixtures/multipart-data.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/multipart-file.cjs b/src/targets/node/axios/fixtures/multipart-file.cjs index 48e0d0162..8f53fc1eb 100644 --- a/src/targets/node/axios/fixtures/multipart-file.cjs +++ b/src/targets/node/axios/fixtures/multipart-file.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/multipart-form-data-no-params.cjs b/src/targets/node/axios/fixtures/multipart-form-data-no-params.cjs index 6b8c2ec58..57e424c87 100644 --- a/src/targets/node/axios/fixtures/multipart-form-data-no-params.cjs +++ b/src/targets/node/axios/fixtures/multipart-form-data-no-params.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/multipart-form-data.cjs b/src/targets/node/axios/fixtures/multipart-form-data.cjs index 15a56e506..45f7a10fb 100644 --- a/src/targets/node/axios/fixtures/multipart-form-data.cjs +++ b/src/targets/node/axios/fixtures/multipart-form-data.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/nested.cjs b/src/targets/node/axios/fixtures/nested.cjs index 11e4065d2..62373db83 100644 --- a/src/targets/node/axios/fixtures/nested.cjs +++ b/src/targets/node/axios/fixtures/nested.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'GET', @@ -7,9 +7,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/postdata-malformed.cjs b/src/targets/node/axios/fixtures/postdata-malformed.cjs index 803140cec..f40deb9ed 100644 --- a/src/targets/node/axios/fixtures/postdata-malformed.cjs +++ b/src/targets/node/axios/fixtures/postdata-malformed.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/query-encoded.cjs b/src/targets/node/axios/fixtures/query-encoded.cjs index 7d0d03100..c53a743a0 100644 --- a/src/targets/node/axios/fixtures/query-encoded.cjs +++ b/src/targets/node/axios/fixtures/query-encoded.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'GET', @@ -7,9 +7,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/query.cjs b/src/targets/node/axios/fixtures/query.cjs index eb7240ebd..7833a75b3 100644 --- a/src/targets/node/axios/fixtures/query.cjs +++ b/src/targets/node/axios/fixtures/query.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'GET', @@ -7,9 +7,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/short.cjs b/src/targets/node/axios/fixtures/short.cjs index 3741d4555..ba835ded4 100644 --- a/src/targets/node/axios/fixtures/short.cjs +++ b/src/targets/node/axios/fixtures/short.cjs @@ -1,12 +1,8 @@ -const axios = require('axios'); +import axios from 'axios'; const options = {method: 'GET', url: 'https://httpbin.org/anything'}; axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/axios/fixtures/text-plain.cjs b/src/targets/node/axios/fixtures/text-plain.cjs index 2ddf6191c..dbe78d903 100644 --- a/src/targets/node/axios/fixtures/text-plain.cjs +++ b/src/targets/node/axios/fixtures/text-plain.cjs @@ -1,4 +1,4 @@ -const axios = require('axios'); +import axios from 'axios'; const options = { method: 'POST', @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file From d66f81877e17d22225341f339c8e40deeb2f8b6f Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:17:41 -0700 Subject: [PATCH 09/22] refactor: remove an unnecessary log prefix from node `fetch` errors --- src/targets/node/fetch/client.ts | 2 +- src/targets/node/fetch/fixtures/application-form-encoded.js | 2 +- src/targets/node/fetch/fixtures/application-json.js | 2 +- src/targets/node/fetch/fixtures/cookies.js | 2 +- src/targets/node/fetch/fixtures/custom-method.js | 2 +- src/targets/node/fetch/fixtures/full.js | 2 +- src/targets/node/fetch/fixtures/headers.js | 2 +- src/targets/node/fetch/fixtures/http-insecure.js | 2 +- src/targets/node/fetch/fixtures/jsonObj-multiline.js | 2 +- src/targets/node/fetch/fixtures/jsonObj-null-value.js | 2 +- src/targets/node/fetch/fixtures/multipart-data.js | 2 +- src/targets/node/fetch/fixtures/multipart-file.js | 2 +- .../node/fetch/fixtures/multipart-form-data-no-params.js | 2 +- src/targets/node/fetch/fixtures/multipart-form-data.js | 2 +- src/targets/node/fetch/fixtures/nested.js | 2 +- src/targets/node/fetch/fixtures/postdata-malformed.js | 2 +- src/targets/node/fetch/fixtures/query-encoded.js | 2 +- src/targets/node/fetch/fixtures/query.js | 2 +- src/targets/node/fetch/fixtures/short.js | 2 +- src/targets/node/fetch/fixtures/text-plain.js | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/targets/node/fetch/client.ts b/src/targets/node/fetch/client.ts index e2046e725..c5bbbe2a8 100644 --- a/src/targets/node/fetch/client.ts +++ b/src/targets/node/fetch/client.ts @@ -132,7 +132,7 @@ export const fetch: Client = { push('fetch(url, options)'); push('.then(res => res.json())', 1); push('.then(json => console.log(json))', 1); - push(".catch(err => console.error('error:' + err));", 1); + push('.catch(err => console.error(err));', 1); return join() .replace(/'encodedParams'/, 'encodedParams') diff --git a/src/targets/node/fetch/fixtures/application-form-encoded.js b/src/targets/node/fetch/fixtures/application-form-encoded.js index 4d1f15907..9c6404a2b 100644 --- a/src/targets/node/fetch/fixtures/application-form-encoded.js +++ b/src/targets/node/fetch/fixtures/application-form-encoded.js @@ -12,4 +12,4 @@ const options = { fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/application-json.js b/src/targets/node/fetch/fixtures/application-json.js index d5f14cbba..73489d7b6 100644 --- a/src/targets/node/fetch/fixtures/application-json.js +++ b/src/targets/node/fetch/fixtures/application-json.js @@ -15,4 +15,4 @@ const options = { fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/cookies.js b/src/targets/node/fetch/fixtures/cookies.js index 57f7102a7..ab9629359 100644 --- a/src/targets/node/fetch/fixtures/cookies.js +++ b/src/targets/node/fetch/fixtures/cookies.js @@ -4,4 +4,4 @@ const options = {method: 'GET', headers: {cookie: 'foo=bar; bar=baz'}}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/custom-method.js b/src/targets/node/fetch/fixtures/custom-method.js index 48d9c7584..781a8c46c 100644 --- a/src/targets/node/fetch/fixtures/custom-method.js +++ b/src/targets/node/fetch/fixtures/custom-method.js @@ -4,4 +4,4 @@ const options = {method: 'PROPFIND'}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/full.js b/src/targets/node/fetch/fixtures/full.js index 2317a9abc..d33052c27 100644 --- a/src/targets/node/fetch/fixtures/full.js +++ b/src/targets/node/fetch/fixtures/full.js @@ -15,4 +15,4 @@ const options = { fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/headers.js b/src/targets/node/fetch/fixtures/headers.js index 76e4e8edb..edf72d140 100644 --- a/src/targets/node/fetch/fixtures/headers.js +++ b/src/targets/node/fetch/fixtures/headers.js @@ -12,4 +12,4 @@ const options = { fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/http-insecure.js b/src/targets/node/fetch/fixtures/http-insecure.js index cd707caf9..5a9ed7362 100644 --- a/src/targets/node/fetch/fixtures/http-insecure.js +++ b/src/targets/node/fetch/fixtures/http-insecure.js @@ -4,4 +4,4 @@ const options = {method: 'GET'}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/jsonObj-multiline.js b/src/targets/node/fetch/fixtures/jsonObj-multiline.js index 723a849d0..a9b92d58e 100644 --- a/src/targets/node/fetch/fixtures/jsonObj-multiline.js +++ b/src/targets/node/fetch/fixtures/jsonObj-multiline.js @@ -8,4 +8,4 @@ const options = { fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/jsonObj-null-value.js b/src/targets/node/fetch/fixtures/jsonObj-null-value.js index 7e5384c76..4eb4892fb 100644 --- a/src/targets/node/fetch/fixtures/jsonObj-null-value.js +++ b/src/targets/node/fetch/fixtures/jsonObj-null-value.js @@ -8,4 +8,4 @@ const options = { fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/multipart-data.js b/src/targets/node/fetch/fixtures/multipart-data.js index e14cef49f..013884c40 100644 --- a/src/targets/node/fetch/fixtures/multipart-data.js +++ b/src/targets/node/fetch/fixtures/multipart-data.js @@ -10,4 +10,4 @@ const options = {method: 'POST', body: formData}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/multipart-file.js b/src/targets/node/fetch/fixtures/multipart-file.js index 4d2109ef3..9bc632208 100644 --- a/src/targets/node/fetch/fixtures/multipart-file.js +++ b/src/targets/node/fetch/fixtures/multipart-file.js @@ -9,4 +9,4 @@ const options = {method: 'POST', body: formData}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/multipart-form-data-no-params.js b/src/targets/node/fetch/fixtures/multipart-form-data-no-params.js index d4b3f8a00..053f56470 100644 --- a/src/targets/node/fetch/fixtures/multipart-form-data-no-params.js +++ b/src/targets/node/fetch/fixtures/multipart-form-data-no-params.js @@ -4,4 +4,4 @@ const options = {method: 'POST', headers: {'Content-Type': 'multipart/form-data' fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/multipart-form-data.js b/src/targets/node/fetch/fixtures/multipart-form-data.js index 08af27bc0..874d6b15a 100644 --- a/src/targets/node/fetch/fixtures/multipart-form-data.js +++ b/src/targets/node/fetch/fixtures/multipart-form-data.js @@ -7,4 +7,4 @@ const options = {method: 'POST', body: formData}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/nested.js b/src/targets/node/fetch/fixtures/nested.js index f483a3bd6..af78c1dac 100644 --- a/src/targets/node/fetch/fixtures/nested.js +++ b/src/targets/node/fetch/fixtures/nested.js @@ -4,4 +4,4 @@ const options = {method: 'GET'}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/postdata-malformed.js b/src/targets/node/fetch/fixtures/postdata-malformed.js index 372995995..76c3abf25 100644 --- a/src/targets/node/fetch/fixtures/postdata-malformed.js +++ b/src/targets/node/fetch/fixtures/postdata-malformed.js @@ -4,4 +4,4 @@ const options = {method: 'POST', headers: {'content-type': 'application/json'}}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/query-encoded.js b/src/targets/node/fetch/fixtures/query-encoded.js index 8cd79b494..5bb1a33ae 100644 --- a/src/targets/node/fetch/fixtures/query-encoded.js +++ b/src/targets/node/fetch/fixtures/query-encoded.js @@ -4,4 +4,4 @@ const options = {method: 'GET'}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/query.js b/src/targets/node/fetch/fixtures/query.js index 6905e3902..d18e8763b 100644 --- a/src/targets/node/fetch/fixtures/query.js +++ b/src/targets/node/fetch/fixtures/query.js @@ -4,4 +4,4 @@ const options = {method: 'GET'}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/short.js b/src/targets/node/fetch/fixtures/short.js index 944e27752..1deb47f08 100644 --- a/src/targets/node/fetch/fixtures/short.js +++ b/src/targets/node/fetch/fixtures/short.js @@ -4,4 +4,4 @@ const options = {method: 'GET'}; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/node/fetch/fixtures/text-plain.js b/src/targets/node/fetch/fixtures/text-plain.js index 10321ade0..aa55a9300 100644 --- a/src/targets/node/fetch/fixtures/text-plain.js +++ b/src/targets/node/fetch/fixtures/text-plain.js @@ -4,4 +4,4 @@ const options = {method: 'POST', headers: {'content-type': 'text/plain'}, body: fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) - .catch(err => console.error('error:' + err)); \ No newline at end of file + .catch(err => console.error(err)); \ No newline at end of file From 2f59cecc1342f153318b5aba788acd0431cbbe7b Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:24:23 -0700 Subject: [PATCH 10/22] fix: node 18 compat issue in the node `fetch` client --- .vscode/settings.json | 2 +- src/targets/node/fetch/client.ts | 7 ++++++- src/targets/node/fetch/fixtures/multipart-data.js | 2 +- src/targets/node/fetch/fixtures/multipart-file.js | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 0caf0e183..90c7e0089 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,6 @@ "files.insertFinalNewline": false, "search.exclude": { - "coverage": true, + "coverage": true } } diff --git a/src/targets/node/fetch/client.ts b/src/targets/node/fetch/client.ts index c5bbbe2a8..4f36ddd38 100644 --- a/src/targets/node/fetch/client.ts +++ b/src/targets/node/fetch/client.ts @@ -73,7 +73,12 @@ export const fetch: Client = { if (param.fileName) { includeFS = true; - push(`formData.append('${param.name}', await fs.openAsBlob('${param.fileName}'));`); + + // Whenever we drop support for Node 18 we can change this blob work to use + // `fs.openAsBlob('filename')`. + push( + `formData.append('${param.name}', await new Response(fs.createReadStream('${param.fileName}')).blob());`, + ); } }); diff --git a/src/targets/node/fetch/fixtures/multipart-data.js b/src/targets/node/fetch/fixtures/multipart-data.js index 013884c40..ca964a322 100644 --- a/src/targets/node/fetch/fixtures/multipart-data.js +++ b/src/targets/node/fetch/fixtures/multipart-data.js @@ -1,7 +1,7 @@ import fs from 'fs'; const formData = new FormData(); -formData.append('foo', await fs.openAsBlob('src/fixtures/files/hello.txt')); +formData.append('foo', await new Response(fs.createReadStream('src/fixtures/files/hello.txt')).blob()); formData.append('bar', 'Bonjour le monde'); const url = 'https://httpbin.org/anything'; diff --git a/src/targets/node/fetch/fixtures/multipart-file.js b/src/targets/node/fetch/fixtures/multipart-file.js index 9bc632208..02fc790b9 100644 --- a/src/targets/node/fetch/fixtures/multipart-file.js +++ b/src/targets/node/fetch/fixtures/multipart-file.js @@ -1,7 +1,7 @@ import fs from 'fs'; const formData = new FormData(); -formData.append('foo', await fs.openAsBlob('src/fixtures/files/hello.txt')); +formData.append('foo', await new Response(fs.createReadStream('src/fixtures/files/hello.txt')).blob()); const url = 'https://httpbin.org/anything'; const options = {method: 'POST', body: formData}; From 9bdbf932c6cd106096bc9050c89df98cddf2fdcd Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:25:23 -0700 Subject: [PATCH 11/22] refactor: renaming `response` to `res` in js `fetch` --- src/targets/javascript/fetch/client.ts | 4 ++-- .../javascript/fetch/fixtures/application-form-encoded.js | 4 ++-- src/targets/javascript/fetch/fixtures/application-json.js | 4 ++-- src/targets/javascript/fetch/fixtures/cookies.js | 4 ++-- src/targets/javascript/fetch/fixtures/custom-method.js | 4 ++-- src/targets/javascript/fetch/fixtures/full.js | 4 ++-- src/targets/javascript/fetch/fixtures/headers.js | 4 ++-- src/targets/javascript/fetch/fixtures/http-insecure.js | 4 ++-- src/targets/javascript/fetch/fixtures/jsonObj-multiline.js | 4 ++-- src/targets/javascript/fetch/fixtures/jsonObj-null-value.js | 4 ++-- src/targets/javascript/fetch/fixtures/multipart-data.js | 4 ++-- src/targets/javascript/fetch/fixtures/multipart-file.js | 4 ++-- .../fetch/fixtures/multipart-form-data-no-params.js | 4 ++-- src/targets/javascript/fetch/fixtures/multipart-form-data.js | 4 ++-- src/targets/javascript/fetch/fixtures/nested.js | 4 ++-- src/targets/javascript/fetch/fixtures/postdata-malformed.js | 4 ++-- src/targets/javascript/fetch/fixtures/query-encoded.js | 4 ++-- src/targets/javascript/fetch/fixtures/query.js | 4 ++-- src/targets/javascript/fetch/fixtures/short.js | 4 ++-- src/targets/javascript/fetch/fixtures/text-plain.js | 4 ++-- 20 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/targets/javascript/fetch/client.ts b/src/targets/javascript/fetch/client.ts index 9db46a397..6c9287221 100644 --- a/src/targets/javascript/fetch/client.ts +++ b/src/targets/javascript/fetch/client.ts @@ -121,8 +121,8 @@ export const fetch: Client = { } push(`fetch('${fullUrl}', options)`); - push('.then(response => response.json())', 1); - push('.then(response => console.log(response))', 1); + push('.then(res => res.json())', 1); + push('.then(res => console.log(res))', 1); push('.catch(err => console.error(err));', 1); return join(); diff --git a/src/targets/javascript/fetch/fixtures/application-form-encoded.js b/src/targets/javascript/fetch/fixtures/application-form-encoded.js index fd256737b..4e0d61445 100644 --- a/src/targets/javascript/fetch/fixtures/application-form-encoded.js +++ b/src/targets/javascript/fetch/fixtures/application-form-encoded.js @@ -5,6 +5,6 @@ const options = { }; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/application-json.js b/src/targets/javascript/fetch/fixtures/application-json.js index f79071c08..49568ebfb 100644 --- a/src/targets/javascript/fetch/fixtures/application-json.js +++ b/src/targets/javascript/fetch/fixtures/application-json.js @@ -12,6 +12,6 @@ const options = { }; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/cookies.js b/src/targets/javascript/fetch/fixtures/cookies.js index a9ba5766d..ba1fb515c 100644 --- a/src/targets/javascript/fetch/fixtures/cookies.js +++ b/src/targets/javascript/fetch/fixtures/cookies.js @@ -1,6 +1,6 @@ const options = {method: 'GET', headers: {cookie: 'foo=bar; bar=baz'}}; fetch('https://httpbin.org/cookies', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/custom-method.js b/src/targets/javascript/fetch/fixtures/custom-method.js index 738405920..102f9b51e 100644 --- a/src/targets/javascript/fetch/fixtures/custom-method.js +++ b/src/targets/javascript/fetch/fixtures/custom-method.js @@ -1,6 +1,6 @@ const options = {method: 'PROPFIND'}; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/full.js b/src/targets/javascript/fetch/fixtures/full.js index 3aee96390..b26902bb5 100644 --- a/src/targets/javascript/fetch/fixtures/full.js +++ b/src/targets/javascript/fetch/fixtures/full.js @@ -9,6 +9,6 @@ const options = { }; fetch('https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/headers.js b/src/targets/javascript/fetch/fixtures/headers.js index 6db2a5d5b..3ca72a640 100644 --- a/src/targets/javascript/fetch/fixtures/headers.js +++ b/src/targets/javascript/fetch/fixtures/headers.js @@ -9,6 +9,6 @@ const options = { }; fetch('https://httpbin.org/headers', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/http-insecure.js b/src/targets/javascript/fetch/fixtures/http-insecure.js index c2624597f..60ada7617 100644 --- a/src/targets/javascript/fetch/fixtures/http-insecure.js +++ b/src/targets/javascript/fetch/fixtures/http-insecure.js @@ -1,6 +1,6 @@ const options = {method: 'GET'}; fetch('http://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/jsonObj-multiline.js b/src/targets/javascript/fetch/fixtures/jsonObj-multiline.js index f2e9c2795..fc681292a 100644 --- a/src/targets/javascript/fetch/fixtures/jsonObj-multiline.js +++ b/src/targets/javascript/fetch/fixtures/jsonObj-multiline.js @@ -5,6 +5,6 @@ const options = { }; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/jsonObj-null-value.js b/src/targets/javascript/fetch/fixtures/jsonObj-null-value.js index b6b9ea049..305eed6b6 100644 --- a/src/targets/javascript/fetch/fixtures/jsonObj-null-value.js +++ b/src/targets/javascript/fetch/fixtures/jsonObj-null-value.js @@ -5,6 +5,6 @@ const options = { }; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/multipart-data.js b/src/targets/javascript/fetch/fixtures/multipart-data.js index 5cc8ddf85..ac8664bf9 100644 --- a/src/targets/javascript/fetch/fixtures/multipart-data.js +++ b/src/targets/javascript/fetch/fixtures/multipart-data.js @@ -7,6 +7,6 @@ const options = {method: 'POST'}; options.body = form; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/multipart-file.js b/src/targets/javascript/fetch/fixtures/multipart-file.js index 11b0a6b05..039019a1c 100644 --- a/src/targets/javascript/fetch/fixtures/multipart-file.js +++ b/src/targets/javascript/fetch/fixtures/multipart-file.js @@ -6,6 +6,6 @@ const options = {method: 'POST'}; options.body = form; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/multipart-form-data-no-params.js b/src/targets/javascript/fetch/fixtures/multipart-form-data-no-params.js index b1318179e..4b79e19a6 100644 --- a/src/targets/javascript/fetch/fixtures/multipart-form-data-no-params.js +++ b/src/targets/javascript/fetch/fixtures/multipart-form-data-no-params.js @@ -1,6 +1,6 @@ const options = {method: 'POST', headers: {'Content-Type': 'multipart/form-data'}}; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/multipart-form-data.js b/src/targets/javascript/fetch/fixtures/multipart-form-data.js index 90643fc61..7a21714a4 100644 --- a/src/targets/javascript/fetch/fixtures/multipart-form-data.js +++ b/src/targets/javascript/fetch/fixtures/multipart-form-data.js @@ -6,6 +6,6 @@ const options = {method: 'POST'}; options.body = form; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/nested.js b/src/targets/javascript/fetch/fixtures/nested.js index 8bcc084d2..97d251384 100644 --- a/src/targets/javascript/fetch/fixtures/nested.js +++ b/src/targets/javascript/fetch/fixtures/nested.js @@ -1,6 +1,6 @@ const options = {method: 'GET'}; fetch('https://httpbin.org/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/postdata-malformed.js b/src/targets/javascript/fetch/fixtures/postdata-malformed.js index 145b702c4..94f81b0a4 100644 --- a/src/targets/javascript/fetch/fixtures/postdata-malformed.js +++ b/src/targets/javascript/fetch/fixtures/postdata-malformed.js @@ -1,6 +1,6 @@ const options = {method: 'POST', headers: {'content-type': 'application/json'}}; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/query-encoded.js b/src/targets/javascript/fetch/fixtures/query-encoded.js index 6da5448bb..14b44cf6c 100644 --- a/src/targets/javascript/fetch/fixtures/query-encoded.js +++ b/src/targets/javascript/fetch/fixtures/query-encoded.js @@ -1,6 +1,6 @@ const options = {method: 'GET'}; fetch('https://httpbin.org/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/query.js b/src/targets/javascript/fetch/fixtures/query.js index fe792dbe1..22d68dcd3 100644 --- a/src/targets/javascript/fetch/fixtures/query.js +++ b/src/targets/javascript/fetch/fixtures/query.js @@ -1,6 +1,6 @@ const options = {method: 'GET'}; fetch('https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/short.js b/src/targets/javascript/fetch/fixtures/short.js index 86cec7387..68ab8947d 100644 --- a/src/targets/javascript/fetch/fixtures/short.js +++ b/src/targets/javascript/fetch/fixtures/short.js @@ -1,6 +1,6 @@ const options = {method: 'GET'}; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/fetch/fixtures/text-plain.js b/src/targets/javascript/fetch/fixtures/text-plain.js index 3ff4a6f81..5a83b05da 100644 --- a/src/targets/javascript/fetch/fixtures/text-plain.js +++ b/src/targets/javascript/fetch/fixtures/text-plain.js @@ -1,6 +1,6 @@ const options = {method: 'POST', headers: {'content-type': 'text/plain'}, body: 'Hello World'}; fetch('https://httpbin.org/anything', options) - .then(response => response.json()) - .then(response => console.log(response)) + .then(res => res.json()) + .then(res => console.log(res)) .catch(err => console.error(err)); \ No newline at end of file From 4250e33b161b811382d77af8e4507d08b6962d00 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:27:19 -0700 Subject: [PATCH 12/22] refactor: various tweaks to js `axios` snippets --- src/targets/javascript/axios/client.ts | 8 ++------ .../javascript/axios/fixtures/application-form-encoded.js | 8 ++------ src/targets/javascript/axios/fixtures/application-json.js | 8 ++------ src/targets/javascript/axios/fixtures/cookies.js | 8 ++------ src/targets/javascript/axios/fixtures/custom-method.js | 8 ++------ src/targets/javascript/axios/fixtures/full.js | 8 ++------ src/targets/javascript/axios/fixtures/headers.js | 8 ++------ src/targets/javascript/axios/fixtures/http-insecure.js | 8 ++------ .../javascript/axios/fixtures/jsonObj-multiline.js | 8 ++------ .../javascript/axios/fixtures/jsonObj-null-value.js | 8 ++------ src/targets/javascript/axios/fixtures/multipart-data.js | 8 ++------ src/targets/javascript/axios/fixtures/multipart-file.js | 8 ++------ .../axios/fixtures/multipart-form-data-no-params.js | 8 ++------ .../javascript/axios/fixtures/multipart-form-data.js | 8 ++------ src/targets/javascript/axios/fixtures/nested.js | 8 ++------ .../javascript/axios/fixtures/postdata-malformed.js | 8 ++------ src/targets/javascript/axios/fixtures/query-encoded.js | 8 ++------ src/targets/javascript/axios/fixtures/query.js | 8 ++------ src/targets/javascript/axios/fixtures/short.js | 8 ++------ src/targets/javascript/axios/fixtures/text-plain.js | 8 ++------ 20 files changed, 40 insertions(+), 120 deletions(-) diff --git a/src/targets/javascript/axios/client.ts b/src/targets/javascript/axios/client.ts index 493c12104..6dfbdc333 100644 --- a/src/targets/javascript/axios/client.ts +++ b/src/targets/javascript/axios/client.ts @@ -99,12 +99,8 @@ export const axios: Client = { push('axios'); push('.request(options)', 1); - push('.then(function (response) {', 1); - push('console.log(response.data);', 2); - push('})', 1); - push('.catch(function (error) {', 1); - push('console.error(error);', 2); - push('});', 1); + push('.then(res => console.log(res.data))', 1); + push('.catch(err => console.error(err));', 1); return join(); }, diff --git a/src/targets/javascript/axios/fixtures/application-form-encoded.js b/src/targets/javascript/axios/fixtures/application-form-encoded.js index 7a55fffc3..1a83ea542 100644 --- a/src/targets/javascript/axios/fixtures/application-form-encoded.js +++ b/src/targets/javascript/axios/fixtures/application-form-encoded.js @@ -13,9 +13,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/application-json.js b/src/targets/javascript/axios/fixtures/application-json.js index 999da16cb..98903a65a 100644 --- a/src/targets/javascript/axios/fixtures/application-json.js +++ b/src/targets/javascript/axios/fixtures/application-json.js @@ -16,9 +16,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/cookies.js b/src/targets/javascript/axios/fixtures/cookies.js index 4d0e356da..7e9cf7ae3 100644 --- a/src/targets/javascript/axios/fixtures/cookies.js +++ b/src/targets/javascript/axios/fixtures/cookies.js @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/custom-method.js b/src/targets/javascript/axios/fixtures/custom-method.js index c5e3af26a..4142f5977 100644 --- a/src/targets/javascript/axios/fixtures/custom-method.js +++ b/src/targets/javascript/axios/fixtures/custom-method.js @@ -4,9 +4,5 @@ const options = {method: 'PROPFIND', url: 'https://httpbin.org/anything'}; axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/full.js b/src/targets/javascript/axios/fixtures/full.js index ae9dcb0d5..014bd7340 100644 --- a/src/targets/javascript/axios/fixtures/full.js +++ b/src/targets/javascript/axios/fixtures/full.js @@ -17,9 +17,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/headers.js b/src/targets/javascript/axios/fixtures/headers.js index cbdbcb4c8..8026a1ee9 100644 --- a/src/targets/javascript/axios/fixtures/headers.js +++ b/src/targets/javascript/axios/fixtures/headers.js @@ -13,9 +13,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/http-insecure.js b/src/targets/javascript/axios/fixtures/http-insecure.js index cd424b513..0512e2df7 100644 --- a/src/targets/javascript/axios/fixtures/http-insecure.js +++ b/src/targets/javascript/axios/fixtures/http-insecure.js @@ -4,9 +4,5 @@ const options = {method: 'GET', url: 'http://httpbin.org/anything'}; axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/jsonObj-multiline.js b/src/targets/javascript/axios/fixtures/jsonObj-multiline.js index 867e8b396..7d41fbc52 100644 --- a/src/targets/javascript/axios/fixtures/jsonObj-multiline.js +++ b/src/targets/javascript/axios/fixtures/jsonObj-multiline.js @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/jsonObj-null-value.js b/src/targets/javascript/axios/fixtures/jsonObj-null-value.js index 06d04de34..3731d644d 100644 --- a/src/targets/javascript/axios/fixtures/jsonObj-null-value.js +++ b/src/targets/javascript/axios/fixtures/jsonObj-null-value.js @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/multipart-data.js b/src/targets/javascript/axios/fixtures/multipart-data.js index 5c620c764..bb36ba381 100644 --- a/src/targets/javascript/axios/fixtures/multipart-data.js +++ b/src/targets/javascript/axios/fixtures/multipart-data.js @@ -13,9 +13,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/multipart-file.js b/src/targets/javascript/axios/fixtures/multipart-file.js index 30e222583..6579bbe8c 100644 --- a/src/targets/javascript/axios/fixtures/multipart-file.js +++ b/src/targets/javascript/axios/fixtures/multipart-file.js @@ -12,9 +12,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/multipart-form-data-no-params.js b/src/targets/javascript/axios/fixtures/multipart-form-data-no-params.js index 28b915fec..57e424c87 100644 --- a/src/targets/javascript/axios/fixtures/multipart-form-data-no-params.js +++ b/src/targets/javascript/axios/fixtures/multipart-form-data-no-params.js @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/multipart-form-data.js b/src/targets/javascript/axios/fixtures/multipart-form-data.js index 61e9870f1..ec40b9e54 100644 --- a/src/targets/javascript/axios/fixtures/multipart-form-data.js +++ b/src/targets/javascript/axios/fixtures/multipart-form-data.js @@ -12,9 +12,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/nested.js b/src/targets/javascript/axios/fixtures/nested.js index e9d270e1c..3fffb9755 100644 --- a/src/targets/javascript/axios/fixtures/nested.js +++ b/src/targets/javascript/axios/fixtures/nested.js @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/postdata-malformed.js b/src/targets/javascript/axios/fixtures/postdata-malformed.js index 6e7eb1676..f40deb9ed 100644 --- a/src/targets/javascript/axios/fixtures/postdata-malformed.js +++ b/src/targets/javascript/axios/fixtures/postdata-malformed.js @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/query-encoded.js b/src/targets/javascript/axios/fixtures/query-encoded.js index 1090af9c1..489c9927e 100644 --- a/src/targets/javascript/axios/fixtures/query-encoded.js +++ b/src/targets/javascript/axios/fixtures/query-encoded.js @@ -11,9 +11,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/query.js b/src/targets/javascript/axios/fixtures/query.js index e08494626..39cca5992 100644 --- a/src/targets/javascript/axios/fixtures/query.js +++ b/src/targets/javascript/axios/fixtures/query.js @@ -8,9 +8,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/short.js b/src/targets/javascript/axios/fixtures/short.js index ec03ac010..ba835ded4 100644 --- a/src/targets/javascript/axios/fixtures/short.js +++ b/src/targets/javascript/axios/fixtures/short.js @@ -4,9 +4,5 @@ const options = {method: 'GET', url: 'https://httpbin.org/anything'}; axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file diff --git a/src/targets/javascript/axios/fixtures/text-plain.js b/src/targets/javascript/axios/fixtures/text-plain.js index c212a3157..dbe78d903 100644 --- a/src/targets/javascript/axios/fixtures/text-plain.js +++ b/src/targets/javascript/axios/fixtures/text-plain.js @@ -9,9 +9,5 @@ const options = { axios .request(options) - .then(function (response) { - console.log(response.data); - }) - .catch(function (error) { - console.error(error); - }); \ No newline at end of file + .then(res => console.log(res.data)) + .catch(err => console.error(err)); \ No newline at end of file From 95465fc4d391559be46b928cafbb19192cb24fad Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:29:12 -0700 Subject: [PATCH 13/22] refactor: various tweaks to js `jquery` --- src/targets/javascript/jquery/client.ts | 4 ++-- .../javascript/jquery/fixtures/application-form-encoded.js | 4 ++-- src/targets/javascript/jquery/fixtures/application-json.js | 4 ++-- src/targets/javascript/jquery/fixtures/cookies.js | 4 ++-- src/targets/javascript/jquery/fixtures/custom-method.js | 4 ++-- src/targets/javascript/jquery/fixtures/full.js | 4 ++-- src/targets/javascript/jquery/fixtures/headers.js | 4 ++-- src/targets/javascript/jquery/fixtures/http-insecure.js | 4 ++-- src/targets/javascript/jquery/fixtures/jsonObj-multiline.js | 4 ++-- src/targets/javascript/jquery/fixtures/jsonObj-null-value.js | 4 ++-- src/targets/javascript/jquery/fixtures/multipart-data.js | 4 ++-- src/targets/javascript/jquery/fixtures/multipart-file.js | 4 ++-- .../jquery/fixtures/multipart-form-data-no-params.js | 4 ++-- src/targets/javascript/jquery/fixtures/multipart-form-data.js | 4 ++-- src/targets/javascript/jquery/fixtures/nested.js | 4 ++-- src/targets/javascript/jquery/fixtures/postdata-malformed.js | 4 ++-- src/targets/javascript/jquery/fixtures/query-encoded.js | 4 ++-- src/targets/javascript/jquery/fixtures/query.js | 4 ++-- src/targets/javascript/jquery/fixtures/short.js | 4 ++-- src/targets/javascript/jquery/fixtures/text-plain.js | 4 ++-- 20 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/targets/javascript/jquery/client.ts b/src/targets/javascript/jquery/client.ts index 5eb246e00..dbd9d3e7d 100644 --- a/src/targets/javascript/jquery/client.ts +++ b/src/targets/javascript/jquery/client.ts @@ -87,8 +87,8 @@ export const jquery: Client = { push(`const settings = ${stringifiedSettings};`); blank(); - push('$.ajax(settings).done(function (response) {'); - push('console.log(response);', 1); + push('$.ajax(settings).done(res => {'); + push('console.log(res);', 1); push('});'); return join(); diff --git a/src/targets/javascript/jquery/fixtures/application-form-encoded.js b/src/targets/javascript/jquery/fixtures/application-form-encoded.js index c3084f07a..fd6020417 100644 --- a/src/targets/javascript/jquery/fixtures/application-form-encoded.js +++ b/src/targets/javascript/jquery/fixtures/application-form-encoded.js @@ -12,6 +12,6 @@ const settings = { } }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/application-json.js b/src/targets/javascript/jquery/fixtures/application-json.js index 740cf3fa0..0599fa68a 100644 --- a/src/targets/javascript/jquery/fixtures/application-json.js +++ b/src/targets/javascript/jquery/fixtures/application-json.js @@ -10,6 +10,6 @@ const settings = { data: '{"number":1,"string":"f\"oo","arr":[1,2,3],"nested":{"a":"b"},"arr_mix":[1,"a",{"arr_mix_nested":[]}],"boolean":false}' }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/cookies.js b/src/targets/javascript/jquery/fixtures/cookies.js index 5ba967b46..18899ddd8 100644 --- a/src/targets/javascript/jquery/fixtures/cookies.js +++ b/src/targets/javascript/jquery/fixtures/cookies.js @@ -8,6 +8,6 @@ const settings = { } }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/custom-method.js b/src/targets/javascript/jquery/fixtures/custom-method.js index 6f48d72c4..5131ee1db 100644 --- a/src/targets/javascript/jquery/fixtures/custom-method.js +++ b/src/targets/javascript/jquery/fixtures/custom-method.js @@ -6,6 +6,6 @@ const settings = { headers: {} }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/full.js b/src/targets/javascript/jquery/fixtures/full.js index 32649fb75..a92c8867f 100644 --- a/src/targets/javascript/jquery/fixtures/full.js +++ b/src/targets/javascript/jquery/fixtures/full.js @@ -13,6 +13,6 @@ const settings = { } }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/headers.js b/src/targets/javascript/jquery/fixtures/headers.js index 7b2fc32bf..f482429b7 100644 --- a/src/targets/javascript/jquery/fixtures/headers.js +++ b/src/targets/javascript/jquery/fixtures/headers.js @@ -11,6 +11,6 @@ const settings = { } }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/http-insecure.js b/src/targets/javascript/jquery/fixtures/http-insecure.js index 63d557e39..bcc14a5f3 100644 --- a/src/targets/javascript/jquery/fixtures/http-insecure.js +++ b/src/targets/javascript/jquery/fixtures/http-insecure.js @@ -6,6 +6,6 @@ const settings = { headers: {} }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/jsonObj-multiline.js b/src/targets/javascript/jquery/fixtures/jsonObj-multiline.js index c1fbeae46..361dfd3c7 100644 --- a/src/targets/javascript/jquery/fixtures/jsonObj-multiline.js +++ b/src/targets/javascript/jquery/fixtures/jsonObj-multiline.js @@ -10,6 +10,6 @@ const settings = { data: '{\n "foo": "bar"\n}' }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/jsonObj-null-value.js b/src/targets/javascript/jquery/fixtures/jsonObj-null-value.js index bdb8f7b89..682bf2726 100644 --- a/src/targets/javascript/jquery/fixtures/jsonObj-null-value.js +++ b/src/targets/javascript/jquery/fixtures/jsonObj-null-value.js @@ -10,6 +10,6 @@ const settings = { data: '{"foo":null}' }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/multipart-data.js b/src/targets/javascript/jquery/fixtures/multipart-data.js index aab34a995..48c0ffc10 100644 --- a/src/targets/javascript/jquery/fixtures/multipart-data.js +++ b/src/targets/javascript/jquery/fixtures/multipart-data.js @@ -14,6 +14,6 @@ const settings = { data: form }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/multipart-file.js b/src/targets/javascript/jquery/fixtures/multipart-file.js index 20fb8e2dc..43aba5379 100644 --- a/src/targets/javascript/jquery/fixtures/multipart-file.js +++ b/src/targets/javascript/jquery/fixtures/multipart-file.js @@ -13,6 +13,6 @@ const settings = { data: form }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/multipart-form-data-no-params.js b/src/targets/javascript/jquery/fixtures/multipart-form-data-no-params.js index 78c9ea809..da5946035 100644 --- a/src/targets/javascript/jquery/fixtures/multipart-form-data-no-params.js +++ b/src/targets/javascript/jquery/fixtures/multipart-form-data-no-params.js @@ -8,6 +8,6 @@ const settings = { } }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/multipart-form-data.js b/src/targets/javascript/jquery/fixtures/multipart-form-data.js index 0c3c85697..68fde42fb 100644 --- a/src/targets/javascript/jquery/fixtures/multipart-form-data.js +++ b/src/targets/javascript/jquery/fixtures/multipart-form-data.js @@ -13,6 +13,6 @@ const settings = { data: form }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/nested.js b/src/targets/javascript/jquery/fixtures/nested.js index 74cb5dc94..4aac81436 100644 --- a/src/targets/javascript/jquery/fixtures/nested.js +++ b/src/targets/javascript/jquery/fixtures/nested.js @@ -6,6 +6,6 @@ const settings = { headers: {} }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/postdata-malformed.js b/src/targets/javascript/jquery/fixtures/postdata-malformed.js index 7caf9328f..a588c826c 100644 --- a/src/targets/javascript/jquery/fixtures/postdata-malformed.js +++ b/src/targets/javascript/jquery/fixtures/postdata-malformed.js @@ -8,6 +8,6 @@ const settings = { } }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/query-encoded.js b/src/targets/javascript/jquery/fixtures/query-encoded.js index f65186c31..cf871a707 100644 --- a/src/targets/javascript/jquery/fixtures/query-encoded.js +++ b/src/targets/javascript/jquery/fixtures/query-encoded.js @@ -6,6 +6,6 @@ const settings = { headers: {} }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/query.js b/src/targets/javascript/jquery/fixtures/query.js index fd9713a43..9d81c66db 100644 --- a/src/targets/javascript/jquery/fixtures/query.js +++ b/src/targets/javascript/jquery/fixtures/query.js @@ -6,6 +6,6 @@ const settings = { headers: {} }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/short.js b/src/targets/javascript/jquery/fixtures/short.js index a55f7bb88..0aa030eef 100644 --- a/src/targets/javascript/jquery/fixtures/short.js +++ b/src/targets/javascript/jquery/fixtures/short.js @@ -6,6 +6,6 @@ const settings = { headers: {} }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file diff --git a/src/targets/javascript/jquery/fixtures/text-plain.js b/src/targets/javascript/jquery/fixtures/text-plain.js index 15932a19c..d99636080 100644 --- a/src/targets/javascript/jquery/fixtures/text-plain.js +++ b/src/targets/javascript/jquery/fixtures/text-plain.js @@ -9,6 +9,6 @@ const settings = { data: 'Hello World' }; -$.ajax(settings).done(function (response) { - console.log(response); +$.ajax(settings).done(res => { + console.log(res); }); \ No newline at end of file From 9c0846ca12084068de74491094229d5002010524 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:30:55 -0700 Subject: [PATCH 14/22] fix: moving node `axios` snippet fixtures from `.cjs` to `.js` --- src/helpers/__snapshots__/utils.test.ts.snap | 2 +- src/helpers/utils.test.ts | 2 +- src/targets/node/axios/client.ts | 2 +- ...application-form-encoded.cjs => application-form-encoded.js} | 0 .../fixtures/{application-json.cjs => application-json.js} | 0 src/targets/node/axios/fixtures/{cookies.cjs => cookies.js} | 0 .../node/axios/fixtures/{custom-method.cjs => custom-method.js} | 0 src/targets/node/axios/fixtures/{full.cjs => full.js} | 0 src/targets/node/axios/fixtures/{headers.cjs => headers.js} | 0 .../node/axios/fixtures/{http-insecure.cjs => http-insecure.js} | 0 .../fixtures/{jsonObj-multiline.cjs => jsonObj-multiline.js} | 0 .../fixtures/{jsonObj-null-value.cjs => jsonObj-null-value.js} | 0 .../axios/fixtures/{multipart-data.cjs => multipart-data.js} | 0 .../axios/fixtures/{multipart-file.cjs => multipart-file.js} | 0 ...form-data-no-params.cjs => multipart-form-data-no-params.js} | 0 .../{multipart-form-data.cjs => multipart-form-data.js} | 0 src/targets/node/axios/fixtures/{nested.cjs => nested.js} | 0 .../fixtures/{postdata-malformed.cjs => postdata-malformed.js} | 0 .../node/axios/fixtures/{query-encoded.cjs => query-encoded.js} | 0 src/targets/node/axios/fixtures/{query.cjs => query.js} | 0 src/targets/node/axios/fixtures/{short.cjs => short.js} | 0 .../node/axios/fixtures/{text-plain.cjs => text-plain.js} | 0 22 files changed, 3 insertions(+), 3 deletions(-) rename src/targets/node/axios/fixtures/{application-form-encoded.cjs => application-form-encoded.js} (100%) rename src/targets/node/axios/fixtures/{application-json.cjs => application-json.js} (100%) rename src/targets/node/axios/fixtures/{cookies.cjs => cookies.js} (100%) rename src/targets/node/axios/fixtures/{custom-method.cjs => custom-method.js} (100%) rename src/targets/node/axios/fixtures/{full.cjs => full.js} (100%) rename src/targets/node/axios/fixtures/{headers.cjs => headers.js} (100%) rename src/targets/node/axios/fixtures/{http-insecure.cjs => http-insecure.js} (100%) rename src/targets/node/axios/fixtures/{jsonObj-multiline.cjs => jsonObj-multiline.js} (100%) rename src/targets/node/axios/fixtures/{jsonObj-null-value.cjs => jsonObj-null-value.js} (100%) rename src/targets/node/axios/fixtures/{multipart-data.cjs => multipart-data.js} (100%) rename src/targets/node/axios/fixtures/{multipart-file.cjs => multipart-file.js} (100%) rename src/targets/node/axios/fixtures/{multipart-form-data-no-params.cjs => multipart-form-data-no-params.js} (100%) rename src/targets/node/axios/fixtures/{multipart-form-data.cjs => multipart-form-data.js} (100%) rename src/targets/node/axios/fixtures/{nested.cjs => nested.js} (100%) rename src/targets/node/axios/fixtures/{postdata-malformed.cjs => postdata-malformed.js} (100%) rename src/targets/node/axios/fixtures/{query-encoded.cjs => query-encoded.js} (100%) rename src/targets/node/axios/fixtures/{query.cjs => query.js} (100%) rename src/targets/node/axios/fixtures/{short.cjs => short.js} (100%) rename src/targets/node/axios/fixtures/{text-plain.cjs => text-plain.js} (100%) diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index f185e1821..b59050593 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -180,7 +180,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "clients": [ { "description": "Promise based HTTP client for the browser and node.js", - "extname": ".cjs", + "extname": ".js", "installation": "npm install axios --save", "key": "axios", "link": "https://github.com/axios/axios", diff --git a/src/helpers/utils.test.ts b/src/helpers/utils.test.ts index e90337932..dfe75158a 100644 --- a/src/helpers/utils.test.ts +++ b/src/helpers/utils.test.ts @@ -22,7 +22,7 @@ describe('extname', () => { expect(extname('c', 'libcurl')).toBe('.c'); expect(extname('clojure', 'clj_http')).toBe('.clj'); expect(extname('javascript', 'axios')).toBe('.js'); - expect(extname('node', 'axios')).toBe('.cjs'); + expect(extname('node', 'axios')).toBe('.js'); }); it('returns empty string if the extension is not found', () => { diff --git a/src/targets/node/axios/client.ts b/src/targets/node/axios/client.ts index 2cd938159..193b528e1 100644 --- a/src/targets/node/axios/client.ts +++ b/src/targets/node/axios/client.ts @@ -19,7 +19,7 @@ export const axios: Client = { title: 'Axios', link: 'https://github.com/axios/axios', description: 'Promise based HTTP client for the browser and node.js', - extname: '.cjs', + extname: '.js', installation: 'npm install axios --save', }, convert: ({ method, fullUrl, allHeaders, postData }, options) => { diff --git a/src/targets/node/axios/fixtures/application-form-encoded.cjs b/src/targets/node/axios/fixtures/application-form-encoded.js similarity index 100% rename from src/targets/node/axios/fixtures/application-form-encoded.cjs rename to src/targets/node/axios/fixtures/application-form-encoded.js diff --git a/src/targets/node/axios/fixtures/application-json.cjs b/src/targets/node/axios/fixtures/application-json.js similarity index 100% rename from src/targets/node/axios/fixtures/application-json.cjs rename to src/targets/node/axios/fixtures/application-json.js diff --git a/src/targets/node/axios/fixtures/cookies.cjs b/src/targets/node/axios/fixtures/cookies.js similarity index 100% rename from src/targets/node/axios/fixtures/cookies.cjs rename to src/targets/node/axios/fixtures/cookies.js diff --git a/src/targets/node/axios/fixtures/custom-method.cjs b/src/targets/node/axios/fixtures/custom-method.js similarity index 100% rename from src/targets/node/axios/fixtures/custom-method.cjs rename to src/targets/node/axios/fixtures/custom-method.js diff --git a/src/targets/node/axios/fixtures/full.cjs b/src/targets/node/axios/fixtures/full.js similarity index 100% rename from src/targets/node/axios/fixtures/full.cjs rename to src/targets/node/axios/fixtures/full.js diff --git a/src/targets/node/axios/fixtures/headers.cjs b/src/targets/node/axios/fixtures/headers.js similarity index 100% rename from src/targets/node/axios/fixtures/headers.cjs rename to src/targets/node/axios/fixtures/headers.js diff --git a/src/targets/node/axios/fixtures/http-insecure.cjs b/src/targets/node/axios/fixtures/http-insecure.js similarity index 100% rename from src/targets/node/axios/fixtures/http-insecure.cjs rename to src/targets/node/axios/fixtures/http-insecure.js diff --git a/src/targets/node/axios/fixtures/jsonObj-multiline.cjs b/src/targets/node/axios/fixtures/jsonObj-multiline.js similarity index 100% rename from src/targets/node/axios/fixtures/jsonObj-multiline.cjs rename to src/targets/node/axios/fixtures/jsonObj-multiline.js diff --git a/src/targets/node/axios/fixtures/jsonObj-null-value.cjs b/src/targets/node/axios/fixtures/jsonObj-null-value.js similarity index 100% rename from src/targets/node/axios/fixtures/jsonObj-null-value.cjs rename to src/targets/node/axios/fixtures/jsonObj-null-value.js diff --git a/src/targets/node/axios/fixtures/multipart-data.cjs b/src/targets/node/axios/fixtures/multipart-data.js similarity index 100% rename from src/targets/node/axios/fixtures/multipart-data.cjs rename to src/targets/node/axios/fixtures/multipart-data.js diff --git a/src/targets/node/axios/fixtures/multipart-file.cjs b/src/targets/node/axios/fixtures/multipart-file.js similarity index 100% rename from src/targets/node/axios/fixtures/multipart-file.cjs rename to src/targets/node/axios/fixtures/multipart-file.js diff --git a/src/targets/node/axios/fixtures/multipart-form-data-no-params.cjs b/src/targets/node/axios/fixtures/multipart-form-data-no-params.js similarity index 100% rename from src/targets/node/axios/fixtures/multipart-form-data-no-params.cjs rename to src/targets/node/axios/fixtures/multipart-form-data-no-params.js diff --git a/src/targets/node/axios/fixtures/multipart-form-data.cjs b/src/targets/node/axios/fixtures/multipart-form-data.js similarity index 100% rename from src/targets/node/axios/fixtures/multipart-form-data.cjs rename to src/targets/node/axios/fixtures/multipart-form-data.js diff --git a/src/targets/node/axios/fixtures/nested.cjs b/src/targets/node/axios/fixtures/nested.js similarity index 100% rename from src/targets/node/axios/fixtures/nested.cjs rename to src/targets/node/axios/fixtures/nested.js diff --git a/src/targets/node/axios/fixtures/postdata-malformed.cjs b/src/targets/node/axios/fixtures/postdata-malformed.js similarity index 100% rename from src/targets/node/axios/fixtures/postdata-malformed.cjs rename to src/targets/node/axios/fixtures/postdata-malformed.js diff --git a/src/targets/node/axios/fixtures/query-encoded.cjs b/src/targets/node/axios/fixtures/query-encoded.js similarity index 100% rename from src/targets/node/axios/fixtures/query-encoded.cjs rename to src/targets/node/axios/fixtures/query-encoded.js diff --git a/src/targets/node/axios/fixtures/query.cjs b/src/targets/node/axios/fixtures/query.js similarity index 100% rename from src/targets/node/axios/fixtures/query.cjs rename to src/targets/node/axios/fixtures/query.js diff --git a/src/targets/node/axios/fixtures/short.cjs b/src/targets/node/axios/fixtures/short.js similarity index 100% rename from src/targets/node/axios/fixtures/short.cjs rename to src/targets/node/axios/fixtures/short.js diff --git a/src/targets/node/axios/fixtures/text-plain.cjs b/src/targets/node/axios/fixtures/text-plain.js similarity index 100% rename from src/targets/node/axios/fixtures/text-plain.cjs rename to src/targets/node/axios/fixtures/text-plain.js From 6d4a9db7df3f5c53c6c674539efbc84349169f23 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Wed, 4 Sep 2024 21:33:13 -0700 Subject: [PATCH 15/22] ci: expanding testing scope to node 22 --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55d46c5e9..b9bd5eb4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,8 +13,9 @@ jobs: strategy: matrix: node-version: - - 18 - - 20 + - lts/-1 + - lts/* + - latest steps: - uses: actions/checkout@v4 From 5f7ab22b3b00f6522a963f253b3635d936b46f37 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Thu, 5 Sep 2024 10:30:13 -0700 Subject: [PATCH 16/22] Revert "refactor: removing node `native`" This reverts commit f52782e3a7f8661ad3bd0cecb9772ef19e2bd210. --- src/helpers/__snapshots__/utils.test.ts.snap | 9 +- src/targets/node/native/client.ts | 89 +++++++++++++++++++ .../fixtures/application-form-encoded.cjs | 28 ++++++ .../node/native/fixtures/application-json.cjs | 34 +++++++ src/targets/node/native/fixtures/cookies.cjs | 26 ++++++ .../node/native/fixtures/custom-method.cjs | 24 +++++ src/targets/node/native/fixtures/full.cjs | 30 +++++++ src/targets/node/native/fixtures/headers.cjs | 29 ++++++ .../node/native/fixtures/http-insecure.cjs | 24 +++++ .../native/fixtures/jsonObj-multiline.cjs | 27 ++++++ .../native/fixtures/jsonObj-null-value.cjs | 27 ++++++ .../node/native/fixtures/multipart-data.cjs | 27 ++++++ .../node/native/fixtures/multipart-file.cjs | 27 ++++++ .../multipart-form-data-no-params.cjs | 26 ++++++ .../native/fixtures/multipart-form-data.cjs | 27 ++++++ src/targets/node/native/fixtures/nested.cjs | 24 +++++ .../native/fixtures/postdata-malformed.cjs | 26 ++++++ .../node/native/fixtures/query-encoded.cjs | 24 +++++ src/targets/node/native/fixtures/query.cjs | 24 +++++ src/targets/node/native/fixtures/short.cjs | 24 +++++ .../node/native/fixtures/text-plain.cjs | 27 ++++++ src/targets/node/target.ts | 4 +- 22 files changed, 605 insertions(+), 2 deletions(-) create mode 100644 src/targets/node/native/client.ts create mode 100644 src/targets/node/native/fixtures/application-form-encoded.cjs create mode 100644 src/targets/node/native/fixtures/application-json.cjs create mode 100644 src/targets/node/native/fixtures/cookies.cjs create mode 100644 src/targets/node/native/fixtures/custom-method.cjs create mode 100644 src/targets/node/native/fixtures/full.cjs create mode 100644 src/targets/node/native/fixtures/headers.cjs create mode 100644 src/targets/node/native/fixtures/http-insecure.cjs create mode 100644 src/targets/node/native/fixtures/jsonObj-multiline.cjs create mode 100644 src/targets/node/native/fixtures/jsonObj-null-value.cjs create mode 100644 src/targets/node/native/fixtures/multipart-data.cjs create mode 100644 src/targets/node/native/fixtures/multipart-file.cjs create mode 100644 src/targets/node/native/fixtures/multipart-form-data-no-params.cjs create mode 100644 src/targets/node/native/fixtures/multipart-form-data.cjs create mode 100644 src/targets/node/native/fixtures/nested.cjs create mode 100644 src/targets/node/native/fixtures/postdata-malformed.cjs create mode 100644 src/targets/node/native/fixtures/query-encoded.cjs create mode 100644 src/targets/node/native/fixtures/query.cjs create mode 100644 src/targets/node/native/fixtures/short.cjs create mode 100644 src/targets/node/native/fixtures/text-plain.cjs diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index b59050593..83b69d5ca 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -178,6 +178,13 @@ exports[`availableTargets > returns all available targets 1`] = ` { "cli": "node %s", "clients": [ + { + "description": "Node.js native HTTP interface", + "extname": ".cjs", + "key": "native", + "link": "http://nodejs.org/api/http.html#http_http_request_options_callback", + "title": "HTTP", + }, { "description": "Promise based HTTP client for the browser and node.js", "extname": ".js", @@ -194,7 +201,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "fetch", }, ], - "default": "fetch", + "default": "native", "key": "node", "title": "Node.js", }, diff --git a/src/targets/node/native/client.ts b/src/targets/node/native/client.ts new file mode 100644 index 000000000..498c5ffab --- /dev/null +++ b/src/targets/node/native/client.ts @@ -0,0 +1,89 @@ +/** + * @description + * HTTP code snippet generator for native Node.js. + * + * @author + * @AhmadNassri + * + * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. + */ +import type { Client } from '../../index.js'; + +import stringifyObject from 'stringify-object'; + +import { CodeBuilder } from '../../../helpers/code-builder.js'; + +export const native: Client = { + info: { + key: 'native', + title: 'HTTP', + link: 'http://nodejs.org/api/http.html#http_http_request_options_callback', + description: 'Node.js native HTTP interface', + extname: '.cjs', + }, + convert: ({ uriObj, method, allHeaders, postData }, options = {}) => { + const { indent = ' ' } = options; + const { blank, join, push, unshift } = new CodeBuilder({ indent }); + + const reqOpts = { + method, + hostname: uriObj.hostname, + port: uriObj.port, + path: uriObj.path, + headers: allHeaders, + }; + + push(`const http = require('${uriObj.protocol?.replace(':', '')}');`); + + blank(); + push(`const options = ${stringifyObject(reqOpts, { indent })};`); + blank(); + push('const req = http.request(options, function (res) {'); + push('const chunks = [];', 1); + blank(); + push("res.on('data', function (chunk) {", 1); + push('chunks.push(chunk);', 2); + push('});', 1); + blank(); + push("res.on('end', function () {", 1); + push('const body = Buffer.concat(chunks);', 2); + push('console.log(body.toString());', 2); + push('});', 1); + push('});'); + blank(); + + switch (postData.mimeType) { + case 'application/x-www-form-urlencoded': + if (postData.paramsObj) { + unshift("const qs = require('querystring');"); + push( + `req.write(qs.stringify(${stringifyObject(postData.paramsObj, { + indent: ' ', + inlineCharacterLimit: 80, + })}));`, + ); + } + break; + + case 'application/json': + if (postData.jsonObj) { + push( + `req.write(JSON.stringify(${stringifyObject(postData.jsonObj, { + indent: ' ', + inlineCharacterLimit: 80, + })}));`, + ); + } + break; + + default: + if (postData.text) { + push(`req.write(${stringifyObject(postData.text, { indent })});`); + } + } + + push('req.end();'); + + return join(); + }, +}; diff --git a/src/targets/node/native/fixtures/application-form-encoded.cjs b/src/targets/node/native/fixtures/application-form-encoded.cjs new file mode 100644 index 000000000..057ff692f --- /dev/null +++ b/src/targets/node/native/fixtures/application-form-encoded.cjs @@ -0,0 +1,28 @@ +const qs = require('querystring'); +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write(qs.stringify({foo: 'bar', hello: 'world'})); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/application-json.cjs b/src/targets/node/native/fixtures/application-json.cjs new file mode 100644 index 000000000..5129f834c --- /dev/null +++ b/src/targets/node/native/fixtures/application-json.cjs @@ -0,0 +1,34 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'application/json' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write(JSON.stringify({ + number: 1, + string: 'f"oo', + arr: [1, 2, 3], + nested: {a: 'b'}, + arr_mix: [1, 'a', {arr_mix_nested: []}], + boolean: false +})); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/cookies.cjs b/src/targets/node/native/fixtures/cookies.cjs new file mode 100644 index 000000000..76e950855 --- /dev/null +++ b/src/targets/node/native/fixtures/cookies.cjs @@ -0,0 +1,26 @@ +const http = require('https'); + +const options = { + method: 'GET', + hostname: 'httpbin.org', + port: null, + path: '/cookies', + headers: { + cookie: 'foo=bar; bar=baz' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/custom-method.cjs b/src/targets/node/native/fixtures/custom-method.cjs new file mode 100644 index 000000000..0640c9991 --- /dev/null +++ b/src/targets/node/native/fixtures/custom-method.cjs @@ -0,0 +1,24 @@ +const http = require('https'); + +const options = { + method: 'PROPFIND', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: {} +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/full.cjs b/src/targets/node/native/fixtures/full.cjs new file mode 100644 index 000000000..dee3821b2 --- /dev/null +++ b/src/targets/node/native/fixtures/full.cjs @@ -0,0 +1,30 @@ +const qs = require('querystring'); +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything?foo=bar&foo=baz&baz=abc&key=value', + headers: { + cookie: 'foo=bar; bar=baz', + accept: 'application/json', + 'content-type': 'application/x-www-form-urlencoded' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write(qs.stringify({foo: 'bar'})); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/headers.cjs b/src/targets/node/native/fixtures/headers.cjs new file mode 100644 index 000000000..80e694461 --- /dev/null +++ b/src/targets/node/native/fixtures/headers.cjs @@ -0,0 +1,29 @@ +const http = require('https'); + +const options = { + method: 'GET', + hostname: 'httpbin.org', + port: null, + path: '/headers', + headers: { + accept: 'application/json', + 'x-foo': 'Bar', + 'x-bar': 'Foo', + 'quoted-value': '"quoted" \'string\'' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/http-insecure.cjs b/src/targets/node/native/fixtures/http-insecure.cjs new file mode 100644 index 000000000..c39f9a68e --- /dev/null +++ b/src/targets/node/native/fixtures/http-insecure.cjs @@ -0,0 +1,24 @@ +const http = require('http'); + +const options = { + method: 'GET', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: {} +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/jsonObj-multiline.cjs b/src/targets/node/native/fixtures/jsonObj-multiline.cjs new file mode 100644 index 000000000..ba61989d1 --- /dev/null +++ b/src/targets/node/native/fixtures/jsonObj-multiline.cjs @@ -0,0 +1,27 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'application/json' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write(JSON.stringify({foo: 'bar'})); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/jsonObj-null-value.cjs b/src/targets/node/native/fixtures/jsonObj-null-value.cjs new file mode 100644 index 000000000..5a5648288 --- /dev/null +++ b/src/targets/node/native/fixtures/jsonObj-null-value.cjs @@ -0,0 +1,27 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'application/json' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write(JSON.stringify({foo: null})); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-data.cjs b/src/targets/node/native/fixtures/multipart-data.cjs new file mode 100644 index 000000000..9470e8ae1 --- /dev/null +++ b/src/targets/node/native/fixtures/multipart-data.cjs @@ -0,0 +1,27 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'multipart/form-data; boundary=---011000010111000001101001' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write('-----011000010111000001101001\r\nContent-Disposition: form-data; name="foo"; filename="src/fixtures/files/hello.txt"\r\nContent-Type: text/plain\r\n\r\nHello World\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="bar"\r\n\r\nBonjour le monde\r\n-----011000010111000001101001--'); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-file.cjs b/src/targets/node/native/fixtures/multipart-file.cjs new file mode 100644 index 000000000..aefa51da4 --- /dev/null +++ b/src/targets/node/native/fixtures/multipart-file.cjs @@ -0,0 +1,27 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'multipart/form-data; boundary=---011000010111000001101001' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write('-----011000010111000001101001\r\nContent-Disposition: form-data; name="foo"; filename="src/fixtures/files/hello.txt"\r\nContent-Type: text/plain\r\n\r\n\r\n-----011000010111000001101001--'); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-form-data-no-params.cjs b/src/targets/node/native/fixtures/multipart-form-data-no-params.cjs new file mode 100644 index 000000000..98bbf669a --- /dev/null +++ b/src/targets/node/native/fixtures/multipart-form-data-no-params.cjs @@ -0,0 +1,26 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'Content-Type': 'multipart/form-data' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/multipart-form-data.cjs b/src/targets/node/native/fixtures/multipart-form-data.cjs new file mode 100644 index 000000000..e914bad77 --- /dev/null +++ b/src/targets/node/native/fixtures/multipart-form-data.cjs @@ -0,0 +1,27 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write('-----011000010111000001101001\r\nContent-Disposition: form-data; name="foo"\r\n\r\nbar\r\n-----011000010111000001101001--'); +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/nested.cjs b/src/targets/node/native/fixtures/nested.cjs new file mode 100644 index 000000000..9d0afd9e1 --- /dev/null +++ b/src/targets/node/native/fixtures/nested.cjs @@ -0,0 +1,24 @@ +const http = require('https'); + +const options = { + method: 'GET', + hostname: 'httpbin.org', + port: null, + path: '/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value', + headers: {} +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/postdata-malformed.cjs b/src/targets/node/native/fixtures/postdata-malformed.cjs new file mode 100644 index 000000000..78f3ca704 --- /dev/null +++ b/src/targets/node/native/fixtures/postdata-malformed.cjs @@ -0,0 +1,26 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'application/json' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/query-encoded.cjs b/src/targets/node/native/fixtures/query-encoded.cjs new file mode 100644 index 000000000..d57697168 --- /dev/null +++ b/src/targets/node/native/fixtures/query-encoded.cjs @@ -0,0 +1,24 @@ +const http = require('https'); + +const options = { + method: 'GET', + hostname: 'httpbin.org', + port: null, + path: '/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00', + headers: {} +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/query.cjs b/src/targets/node/native/fixtures/query.cjs new file mode 100644 index 000000000..74da137db --- /dev/null +++ b/src/targets/node/native/fixtures/query.cjs @@ -0,0 +1,24 @@ +const http = require('https'); + +const options = { + method: 'GET', + hostname: 'httpbin.org', + port: null, + path: '/anything?foo=bar&foo=baz&baz=abc&key=value', + headers: {} +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/short.cjs b/src/targets/node/native/fixtures/short.cjs new file mode 100644 index 000000000..b726546d8 --- /dev/null +++ b/src/targets/node/native/fixtures/short.cjs @@ -0,0 +1,24 @@ +const http = require('https'); + +const options = { + method: 'GET', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: {} +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.end(); \ No newline at end of file diff --git a/src/targets/node/native/fixtures/text-plain.cjs b/src/targets/node/native/fixtures/text-plain.cjs new file mode 100644 index 000000000..4fb117878 --- /dev/null +++ b/src/targets/node/native/fixtures/text-plain.cjs @@ -0,0 +1,27 @@ +const http = require('https'); + +const options = { + method: 'POST', + hostname: 'httpbin.org', + port: null, + path: '/anything', + headers: { + 'content-type': 'text/plain' + } +}; + +const req = http.request(options, function (res) { + const chunks = []; + + res.on('data', function (chunk) { + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); +}); + +req.write('Hello World'); +req.end(); \ No newline at end of file diff --git a/src/targets/node/target.ts b/src/targets/node/target.ts index b4649de8f..71484e077 100644 --- a/src/targets/node/target.ts +++ b/src/targets/node/target.ts @@ -2,15 +2,17 @@ import type { Target } from '../index.js'; import { axios } from './axios/client.js'; import { fetch } from './fetch/client.js'; +import { native } from './native/client.js'; export const node: Target = { info: { key: 'node', title: 'Node.js', - default: 'fetch', + default: 'native', cli: 'node %s', }, clientsById: { + native, axios, fetch, }, From cca8b0d0435377b5399220dbef3b1fe443c09ac3 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Thu, 5 Sep 2024 10:30:45 -0700 Subject: [PATCH 17/22] fix: setting node `fetch` to be the default again --- src/targets/node/target.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/targets/node/target.ts b/src/targets/node/target.ts index 71484e077..77307bfd8 100644 --- a/src/targets/node/target.ts +++ b/src/targets/node/target.ts @@ -8,7 +8,7 @@ export const node: Target = { info: { key: 'node', title: 'Node.js', - default: 'native', + default: 'fetch', cli: 'node %s', }, clientsById: { From e31c0539700f26e9edf788978ce034eeebc0f7c5 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Thu, 5 Sep 2024 10:32:02 -0700 Subject: [PATCH 18/22] Revert "refactor: removing js `xhr`" This reverts commit fd170ff4e8daa941046c653c7cb8bb592c8d5aea. --- src/helpers/__snapshots__/utils.test.ts.snap | 11 +- src/targets/javascript/target.ts | 4 +- src/targets/javascript/xhr/client.test.ts | 19 ++++ src/targets/javascript/xhr/client.ts | 102 ++++++++++++++++++ .../xhr/fixtures/application-form-encoded.js | 15 +++ .../xhr/fixtures/application-json.js | 34 ++++++ .../javascript/xhr/fixtures/cookies.js | 15 +++ src/targets/javascript/xhr/fixtures/cors.js | 13 +++ .../javascript/xhr/fixtures/custom-method.js | 14 +++ src/targets/javascript/xhr/fixtures/full.js | 17 +++ .../javascript/xhr/fixtures/headers.js | 18 ++++ .../javascript/xhr/fixtures/http-insecure.js | 14 +++ .../xhr/fixtures/jsonObj-multiline.js | 17 +++ .../xhr/fixtures/jsonObj-null-value.js | 17 +++ .../javascript/xhr/fixtures/multipart-data.js | 16 +++ .../javascript/xhr/fixtures/multipart-file.js | 15 +++ .../fixtures/multipart-form-data-no-params.js | 13 +++ .../xhr/fixtures/multipart-form-data.js | 15 +++ src/targets/javascript/xhr/fixtures/nested.js | 14 +++ .../xhr/fixtures/postdata-malformed.js | 15 +++ .../javascript/xhr/fixtures/query-encoded.js | 14 +++ src/targets/javascript/xhr/fixtures/query.js | 14 +++ src/targets/javascript/xhr/fixtures/short.js | 14 +++ .../javascript/xhr/fixtures/text-plain.js | 15 +++ 24 files changed, 452 insertions(+), 3 deletions(-) create mode 100644 src/targets/javascript/xhr/client.test.ts create mode 100644 src/targets/javascript/xhr/client.ts create mode 100644 src/targets/javascript/xhr/fixtures/application-form-encoded.js create mode 100644 src/targets/javascript/xhr/fixtures/application-json.js create mode 100644 src/targets/javascript/xhr/fixtures/cookies.js create mode 100644 src/targets/javascript/xhr/fixtures/cors.js create mode 100644 src/targets/javascript/xhr/fixtures/custom-method.js create mode 100644 src/targets/javascript/xhr/fixtures/full.js create mode 100644 src/targets/javascript/xhr/fixtures/headers.js create mode 100644 src/targets/javascript/xhr/fixtures/http-insecure.js create mode 100644 src/targets/javascript/xhr/fixtures/jsonObj-multiline.js create mode 100644 src/targets/javascript/xhr/fixtures/jsonObj-null-value.js create mode 100644 src/targets/javascript/xhr/fixtures/multipart-data.js create mode 100644 src/targets/javascript/xhr/fixtures/multipart-file.js create mode 100644 src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js create mode 100644 src/targets/javascript/xhr/fixtures/multipart-form-data.js create mode 100644 src/targets/javascript/xhr/fixtures/nested.js create mode 100644 src/targets/javascript/xhr/fixtures/postdata-malformed.js create mode 100644 src/targets/javascript/xhr/fixtures/query-encoded.js create mode 100644 src/targets/javascript/xhr/fixtures/query.js create mode 100644 src/targets/javascript/xhr/fixtures/short.js create mode 100644 src/targets/javascript/xhr/fixtures/text-plain.js diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index 83b69d5ca..742e69317 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -120,6 +120,13 @@ exports[`availableTargets > returns all available targets 1`] = ` }, { "clients": [ + { + "description": "W3C Standard API that provides scripted client functionality", + "extname": ".js", + "key": "xhr", + "link": "https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest", + "title": "XMLHttpRequest", + }, { "description": "Promise based HTTP client for the browser and node.js", "extname": ".js", @@ -143,7 +150,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "jQuery", }, ], - "default": "fetch", + "default": "xhr", "key": "javascript", "title": "JavaScript", }, @@ -201,7 +208,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "fetch", }, ], - "default": "native", + "default": "fetch", "key": "node", "title": "Node.js", }, diff --git a/src/targets/javascript/target.ts b/src/targets/javascript/target.ts index 475b61697..116c26c4e 100644 --- a/src/targets/javascript/target.ts +++ b/src/targets/javascript/target.ts @@ -3,15 +3,17 @@ import type { Target } from '../index.js'; import { axios } from './axios/client.js'; import { fetch } from './fetch/client.js'; import { jquery } from './jquery/client.js'; +import { xhr } from './xhr/client.js'; export const javascript: Target = { info: { key: 'javascript', title: 'JavaScript', - default: 'fetch', + default: 'xhr', }, clientsById: { + xhr, axios, fetch, jquery, diff --git a/src/targets/javascript/xhr/client.test.ts b/src/targets/javascript/xhr/client.test.ts new file mode 100644 index 000000000..bd66a9ea1 --- /dev/null +++ b/src/targets/javascript/xhr/client.test.ts @@ -0,0 +1,19 @@ +import type { Request } from '../../../index.js'; + +import request from '../../../fixtures/requests/short.cjs'; +import { runCustomFixtures } from '../../../fixtures/runCustomFixtures.js'; + +runCustomFixtures({ + targetId: 'javascript', + clientId: 'xhr', + tests: [ + { + it: 'should not use cors', + input: request.log.entries[0].request as Request, + options: { + cors: false, + }, + expected: 'cors.js', + }, + ], +}); diff --git a/src/targets/javascript/xhr/client.ts b/src/targets/javascript/xhr/client.ts new file mode 100644 index 000000000..33a2d1815 --- /dev/null +++ b/src/targets/javascript/xhr/client.ts @@ -0,0 +1,102 @@ +/** + * @description + * HTTP code snippet generator for native XMLHttpRequest + * + * @author + * @AhmadNassri + * + * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. + */ +import type { Client } from '../../index.js'; + +import stringifyObject from 'stringify-object'; + +import { CodeBuilder } from '../../../helpers/code-builder.js'; +import { escapeForSingleQuotes } from '../../../helpers/escape.js'; +import { getHeader, getHeaderName, hasHeader } from '../../../helpers/headers.js'; + +export interface XhrOptions { + cors?: boolean; +} + +export const xhr: Client = { + info: { + key: 'xhr', + title: 'XMLHttpRequest', + link: 'https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest', + description: 'W3C Standard API that provides scripted client functionality', + extname: '.js', + }, + convert: ({ postData, allHeaders, method, fullUrl }, options) => { + const opts = { + indent: ' ', + cors: true, + ...options, + }; + + const { blank, push, join } = new CodeBuilder({ indent: opts.indent }); + + switch (postData.mimeType) { + case 'application/json': + push( + `const data = JSON.stringify(${stringifyObject(postData.jsonObj, { + indent: opts.indent, + })});`, + ); + blank(); + break; + + case 'multipart/form-data': + if (!postData.params) { + break; + } + + push('const data = new FormData();'); + + postData.params.forEach(param => { + push(`data.append('${param.name}', '${param.value || param.fileName || ''}');`); + }); + + // remove the contentType header + if (hasHeader(allHeaders, 'content-type')) { + if (getHeader(allHeaders, 'content-type')?.includes('boundary')) { + const headerName = getHeaderName(allHeaders, 'content-type'); + if (headerName) { + delete allHeaders[headerName]; + } + } + } + + blank(); + break; + + default: + push(`const data = ${postData.text ? `'${postData.text}'` : 'null'};`); + blank(); + } + + push('const xhr = new XMLHttpRequest();'); + + if (opts.cors) { + push('xhr.withCredentials = true;'); + } + + blank(); + push("xhr.addEventListener('readystatechange', function () {"); + push('if (this.readyState === this.DONE) {', 1); + push('console.log(this.responseText);', 2); + push('}', 1); + push('});'); + blank(); + push(`xhr.open('${method}', '${fullUrl}');`); + + Object.keys(allHeaders).forEach(key => { + push(`xhr.setRequestHeader('${key}', '${escapeForSingleQuotes(allHeaders[key])}');`); + }); + + blank(); + push('xhr.send(data);'); + + return join(); + }, +}; diff --git a/src/targets/javascript/xhr/fixtures/application-form-encoded.js b/src/targets/javascript/xhr/fixtures/application-form-encoded.js new file mode 100644 index 000000000..e745ca388 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/application-form-encoded.js @@ -0,0 +1,15 @@ +const data = 'foo=bar&hello=world'; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); +xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/application-json.js b/src/targets/javascript/xhr/fixtures/application-json.js new file mode 100644 index 000000000..05109f1f6 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/application-json.js @@ -0,0 +1,34 @@ +const data = JSON.stringify({ + number: 1, + string: 'f"oo', + arr: [ + 1, + 2, + 3 + ], + nested: { + a: 'b' + }, + arr_mix: [ + 1, + 'a', + { + arr_mix_nested: [] + } + ], + boolean: false +}); + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); +xhr.setRequestHeader('content-type', 'application/json'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/cookies.js b/src/targets/javascript/xhr/fixtures/cookies.js new file mode 100644 index 000000000..303865891 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/cookies.js @@ -0,0 +1,15 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'https://httpbin.org/cookies'); +xhr.setRequestHeader('cookie', 'foo=bar; bar=baz'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/cors.js b/src/targets/javascript/xhr/fixtures/cors.js new file mode 100644 index 000000000..7be5b75a7 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/cors.js @@ -0,0 +1,13 @@ +const data = null; + +const xhr = new XMLHttpRequest(); + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'https://httpbin.org/anything'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/custom-method.js b/src/targets/javascript/xhr/fixtures/custom-method.js new file mode 100644 index 000000000..b7249c740 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/custom-method.js @@ -0,0 +1,14 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('PROPFIND', 'https://httpbin.org/anything'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/full.js b/src/targets/javascript/xhr/fixtures/full.js new file mode 100644 index 000000000..e3190633e --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/full.js @@ -0,0 +1,17 @@ +const data = 'foo=bar'; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value'); +xhr.setRequestHeader('cookie', 'foo=bar; bar=baz'); +xhr.setRequestHeader('accept', 'application/json'); +xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/headers.js b/src/targets/javascript/xhr/fixtures/headers.js new file mode 100644 index 000000000..919deb13a --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/headers.js @@ -0,0 +1,18 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'https://httpbin.org/headers'); +xhr.setRequestHeader('accept', 'application/json'); +xhr.setRequestHeader('x-foo', 'Bar'); +xhr.setRequestHeader('x-bar', 'Foo'); +xhr.setRequestHeader('quoted-value', '"quoted" \'string\''); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/http-insecure.js b/src/targets/javascript/xhr/fixtures/http-insecure.js new file mode 100644 index 000000000..006f993bf --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/http-insecure.js @@ -0,0 +1,14 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'http://httpbin.org/anything'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/jsonObj-multiline.js b/src/targets/javascript/xhr/fixtures/jsonObj-multiline.js new file mode 100644 index 000000000..db126cbe6 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/jsonObj-multiline.js @@ -0,0 +1,17 @@ +const data = JSON.stringify({ + foo: 'bar' +}); + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); +xhr.setRequestHeader('content-type', 'application/json'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/jsonObj-null-value.js b/src/targets/javascript/xhr/fixtures/jsonObj-null-value.js new file mode 100644 index 000000000..92befdc34 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/jsonObj-null-value.js @@ -0,0 +1,17 @@ +const data = JSON.stringify({ + foo: null +}); + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); +xhr.setRequestHeader('content-type', 'application/json'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-data.js b/src/targets/javascript/xhr/fixtures/multipart-data.js new file mode 100644 index 000000000..0dabcfeaf --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/multipart-data.js @@ -0,0 +1,16 @@ +const data = new FormData(); +data.append('foo', 'Hello World'); +data.append('bar', 'Bonjour le monde'); + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-file.js b/src/targets/javascript/xhr/fixtures/multipart-file.js new file mode 100644 index 000000000..aaca03d25 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/multipart-file.js @@ -0,0 +1,15 @@ +const data = new FormData(); +data.append('foo', 'src/fixtures/files/hello.txt'); + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js b/src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js new file mode 100644 index 000000000..96179647d --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/multipart-form-data-no-params.js @@ -0,0 +1,13 @@ +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); +xhr.setRequestHeader('Content-Type', 'multipart/form-data'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/multipart-form-data.js b/src/targets/javascript/xhr/fixtures/multipart-form-data.js new file mode 100644 index 000000000..2c4d372e3 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/multipart-form-data.js @@ -0,0 +1,15 @@ +const data = new FormData(); +data.append('foo', 'bar'); + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/nested.js b/src/targets/javascript/xhr/fixtures/nested.js new file mode 100644 index 000000000..37d2cdee4 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/nested.js @@ -0,0 +1,14 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'https://httpbin.org/anything?foo%5Bbar%5D=baz%2Czap&fiz=buz&key=value'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/postdata-malformed.js b/src/targets/javascript/xhr/fixtures/postdata-malformed.js new file mode 100644 index 000000000..51ea31877 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/postdata-malformed.js @@ -0,0 +1,15 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); +xhr.setRequestHeader('content-type', 'application/json'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/query-encoded.js b/src/targets/javascript/xhr/fixtures/query-encoded.js new file mode 100644 index 000000000..59626c98d --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/query-encoded.js @@ -0,0 +1,14 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'https://httpbin.org/anything?startTime=2019-06-13T19%3A08%3A25.455Z&endTime=2015-09-15T14%3A00%3A12-04%3A00'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/query.js b/src/targets/javascript/xhr/fixtures/query.js new file mode 100644 index 000000000..5cc3bb5ce --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/query.js @@ -0,0 +1,14 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'https://httpbin.org/anything?foo=bar&foo=baz&baz=abc&key=value'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/short.js b/src/targets/javascript/xhr/fixtures/short.js new file mode 100644 index 000000000..d7184f2f4 --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/short.js @@ -0,0 +1,14 @@ +const data = null; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('GET', 'https://httpbin.org/anything'); + +xhr.send(data); \ No newline at end of file diff --git a/src/targets/javascript/xhr/fixtures/text-plain.js b/src/targets/javascript/xhr/fixtures/text-plain.js new file mode 100644 index 000000000..6665974bc --- /dev/null +++ b/src/targets/javascript/xhr/fixtures/text-plain.js @@ -0,0 +1,15 @@ +const data = 'Hello World'; + +const xhr = new XMLHttpRequest(); +xhr.withCredentials = true; + +xhr.addEventListener('readystatechange', function () { + if (this.readyState === this.DONE) { + console.log(this.responseText); + } +}); + +xhr.open('POST', 'https://httpbin.org/anything'); +xhr.setRequestHeader('content-type', 'text/plain'); + +xhr.send(data); \ No newline at end of file From 2fe1facae3d414c85aa71935e7ade46f350af693 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Thu, 5 Sep 2024 10:32:10 -0700 Subject: [PATCH 19/22] fix: making js `fetch` the default again --- src/targets/javascript/target.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/targets/javascript/target.ts b/src/targets/javascript/target.ts index 116c26c4e..6c58572cb 100644 --- a/src/targets/javascript/target.ts +++ b/src/targets/javascript/target.ts @@ -9,7 +9,7 @@ export const javascript: Target = { info: { key: 'javascript', title: 'JavaScript', - default: 'xhr', + default: 'fetch', }, clientsById: { From 8eef0e59011466a3dbf79e1eb15161c2c572d894 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Thu, 5 Sep 2024 10:32:41 -0700 Subject: [PATCH 20/22] fix: broken snapshot --- src/helpers/__snapshots__/utils.test.ts.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index 742e69317..51168ec68 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -150,7 +150,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "title": "jQuery", }, ], - "default": "xhr", + "default": "fetch", "key": "javascript", "title": "JavaScript", }, From 158faee4fb608f3a88d2be3c261925e2c09875c5 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Thu, 5 Sep 2024 10:34:14 -0700 Subject: [PATCH 21/22] fix: pr feedback --- src/targets/node/fetch/client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/targets/node/fetch/client.ts b/src/targets/node/fetch/client.ts index 4f36ddd38..c3d52f456 100644 --- a/src/targets/node/fetch/client.ts +++ b/src/targets/node/fetch/client.ts @@ -9,7 +9,7 @@ export const fetch: Client = { info: { key: 'fetch', title: 'fetch', - link: 'https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch', + link: 'https://nodejs.org/docs/latest/api/globals.html#fetch', description: 'Perform asynchronous HTTP requests with the Fetch API', extname: '.js', }, From 15e4c9d351a2ae17eda8b60ccbac67269fb68af0 Mon Sep 17 00:00:00 2001 From: Jon Ursenbach Date: Thu, 5 Sep 2024 10:39:47 -0700 Subject: [PATCH 22/22] fix: broken snapshot --- src/helpers/__snapshots__/utils.test.ts.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/__snapshots__/utils.test.ts.snap b/src/helpers/__snapshots__/utils.test.ts.snap index 51168ec68..446baba49 100644 --- a/src/helpers/__snapshots__/utils.test.ts.snap +++ b/src/helpers/__snapshots__/utils.test.ts.snap @@ -204,7 +204,7 @@ exports[`availableTargets > returns all available targets 1`] = ` "description": "Perform asynchronous HTTP requests with the Fetch API", "extname": ".js", "key": "fetch", - "link": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch", + "link": "https://nodejs.org/docs/latest/api/globals.html#fetch", "title": "fetch", }, ],