CurlGenerator is a small (~1kb), dependecy free, library to generate curl snippets. Currently it has only 1 API, but I'm open to suggestion on how to improve and to integrate with different http request libraries.
install in your project
npm install curl-generator
Or you can download the file you need from the dist folder
import {CurlGenerator} from "curl-generator";
const curlSnippet = CurlGenerator({url: "https://jsonplaceholder.typicode.com/posts/1"});
// curlSnippet => curl "https://jsonplaceholder.typicode.com/posts/101"
If you are going to import it with in node via require
const CurlGenerator = require("curl-generator").CurlGenerator;
Currently the library export just CurlGenerator, and it's a function with just 1 object parameter with the following description:
/**
* @param {string} url - the request url
* @param {string} [param.method] - a value between ("GET" | "POST" | "PUT" | "PATCH" | "DELETE") it's case insensitive
* @param {Object<string, string>} [param.headers] - an object containing the headers of the request
* @param {Object} [body] - the body of the request
*/
Example of a more "andvanced" use
import {CurlGenerator} from "curl-generator";
const params = {
url: "https://jsonplaceholder.typicode.com/posts",
method: "POST",
headers: {
"Content-type": "application/json; charset=UTF-8"
},
body: {
"id": "123-456-789",
"key1": "value 1",
"key2": `a "complex" value`
}
}
const curlSnippet = CurlGenerator(params);
// curlSnippet => curl "https://jsonplaceholder.typicode.com/posts" -X POST -H "Content-type: application/json; charset=UTF-8" -d "{\"id\":\"123-456-789\",\"key1\":\"value 1\",\"key2\":\"a \\\"complex\\\" value\"}"
You can also pass Curl options as additional options:
import {CurlGenerator} from "curl-generator";
const params = {
url: "https://jsonplaceholder.typicode.com/posts/1"
}
const options = {
output: "test.txt",
silent: true
}
const curlSnippet = CurlGenerator(params, options);
// curl "https://jsonplaceholder.typicode.com/posts/1" --output test.txt --silent
Currently the following options are supported (you can submit a PR if you need others):
Name | Type |
---|---|
compressed | boolean |
compressedSsh | boolean |
fail | boolean |
failEarly | boolean |
head | boolean |
include | boolean |
insecure | boolean |
ipv4 | boolean |
ipv6 | boolean |
listOnly | boolean |
location | boolean |
locationTrusted | boolean |
noKeepalive | boolean |
output | string |
showError | boolean |
silent | boolean |
ssl | boolean |
sslv2 | boolean |
sslv3 | boolean |
verbose | boolean |
The library is written in typescript (it's my first typescript project so I'm very open to tips and suggestions) and it comes with 3 scripts Dev build with watch
npm run dev
Build bundle
npm run build
Test (I plan to move testing with jest if the library grows)
npm run test
The build generate three files:
dist/curl-generator.cjs.js
A CommonJS bundle, suitable for use in Node.js, thatrequire
s the external dependency. This corresponds to the"main"
field in package.jsondist/curl-generator.esm.js
an ES module bundle, suitable for use in other people's libraries and applications, thatimport
s the external dependency. This corresponds to the"module"
field in package.jsondist/curl-generator.umd.js
a UMD build, suitable for use in any environment (including the browser, as a<script>
tag), that includes the external dependency. This corresponds to the"browser"
field in package.json