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-generatorOr 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 --silentCurrently 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 devBuild bundle
npm run buildTest (I plan to move testing with jest if the library grows)
npm run testThe build generate three files:
dist/curl-generator.cjs.jsA CommonJS bundle, suitable for use in Node.js, thatrequires the external dependency. This corresponds to the"main"field in package.jsondist/curl-generator.esm.jsan ES module bundle, suitable for use in other people's libraries and applications, thatimports the external dependency. This corresponds to the"module"field in package.jsondist/curl-generator.umd.jsa 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