cg

curl-generator

A small, dependency free library to get curl snippets

Showing:

Popularity

Downloads/wk

951

GitHub Stars

10

Maintenance

Last Commit

2mos ago

Contributors

4

Package

Dependencies

1

License

Type Definitions

Built-In

Tree-Shakeable

Yes?

Categories

Readme

CurlGenerator

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.

Getting started

install in your project

npm install curl-generator

Or you can download the file you need from the dist folder

Using it

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;

API

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 |

Contributing

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, that requires the external dependency. This corresponds to the "main" field in package.json
  • dist/curl-generator.esm.js an ES module bundle, suitable for use in other people's libraries and applications, that imports the external dependency. This corresponds to the "module" field in package.json
  • dist/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

Feel free to open up an issue to suggest an improvement or an integration with an http library like axios

Author and License

Alberto De Agostini MIT.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100