All Versions
25
Latest Version
Avg Release Cycle
47 days
Latest Release
809 days ago

Changelog History
Page 1

  • v2.3.4 Changes

    January 29, 2022

    โž• Added

    • ๐Ÿ‘Œ support curl_blob options #300 by @johnwchadwick
    • โž• added arm64 builds for macOS #312 by @johnwchadwick
    • โž• added most options that were missing up to libcurl version 7.79.1, including HSTS support.
    • โž• added prebuilt binaries for Node.js v17.

    ๐Ÿ”„ Changed

    • โฌ†๏ธ Upgraded prebuild binaries to use libcurl 7.79.1. On Windows, OpenSSL 3.0.0 will be used.
    • The only Electron versions with prebuilt binaries are: 16, 15, 14, 13, 12, and 11.
    • The only Nwjs versions with prebuilt binaries are: 0.58, 0.57, and 0.56.
  • v2.3.3 Changes

    May 09, 2021

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix support for Node.js v16
  • v2.3.2 Changes

    March 24, 2021

    ๐Ÿ”„ Changed

    • ๐Ÿ— The prebuilt binaries are not build with c-ares anymore, for reasoning see issue #280. c-ares was included in the prebuilt binaries starting with 2.3.0.
  • v2.3.1 Changes

    March 09, 2021

    ๐Ÿš€ The yes, curly is still experimental release. ๐Ÿ˜…

    If you are using curly in your project, and you want to share any feedback about it, please post them in our Discord. I would love to read and discuss it!

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed not building zstd lib statically. #274
    • ๐Ÿ›  Fixed download streams not working with responses that did not include a body. #271

    โž• Added

    • โž• Added prebuilt binaries for: Node.js 15, Electron v11, Electron v12, Nwjs 0.49.2, Nwjs 0.51.2, and Nwjs 0.52.0.

    ๐Ÿ”„ Changed

    • ๐Ÿ— Building the addon from source now requires a C++ compiler with support for c++1z (c++17).

    โœ‚ Removed

    • โœ‚ Removed prebuilt binaries for: Node.js 10, Electron v5, Electron v6, Electron v7, Nwjs v0.43, and Nwjs v0.44.
  • v2.3.0 Changes

    November 15, 2020

    ๐Ÿš€ Probably the last release that curly is considered experimental.

    ๐Ÿ’ฅ Breaking Change

    ๐Ÿ“œ curly (and curly.<method>) is now able to automatically parse the response body based on the content-type header of the response. #240
    0๏ธโƒฃ Default parsers for application/json (calls JSON.parse) and text/* (converts the raw Buffer to a string with utf8 encoding) were added. This means that for responses without a matching content-type the raw Buffer will be returned. This is different from the previous behavior where a string would always be returned.
    0๏ธโƒฃ The default parsers can be overwritten by setting curly.defaultResponseBodyParsers to an object with the format:

    {
      'content-type': (data: Buffer, headers: HeaderInfo[]) => any
    }
    

    Where content-type can be one of these:

    • the exact content-type.
    • a pattern using * to match specific parts of the content-type, like text/*.
    • a catch-all pattern: just *.

    ๐Ÿ“œ You can also override the parsers using the following options:

    • curlyResponseBodyParsers object that will be merged with defaultResponseBodyParsers.
    • curlyResponseBodyParser a parser that will be used for all responses.

    ๐Ÿ“œ It's also possible to set curlyResponseBodyParser to false and the data returned will always be the raw Buffer.

    0๏ธโƒฃ Of course, it is still possible to use your own writeFunction (libcurl CURLOPT_WRITEFUNCTION option) to set your own write callback and not rely on this default handling of the response.

    ๐Ÿš€ As curly is marked as experimental, this allows us to do a breaking change in a minor version bump. This release should make the curly API more stable and provide a better developer experience, however, the API remains experimental.

    ๐Ÿ›  Fixed

    • Some curly.<method> calls not working correctly, to be more specific, all calls that were not get, post and head.
    • Errors thrown by the internal Curl instance used by curly not being re-thrown correctly.
    • 0๏ธโƒฃ Progress callbacks were not allowing to use default libcurl progress meter (by returning CurlProgressFunc.Continue).

    โž• Added

    • 0๏ธโƒฃ Calling curly.create(options) will now return a new curly object that will use the passed options as defaults. #247
    • 0๏ธโƒฃ TypeScript: curly (and curly.<method>) now accepts a generic type parameter which will be the type of the data returned. By default, this is set to any.
    • โž• Added new options to the curly API:
      • curlyBaseUrl: string, if set, their value will always be added as the prefix for the URL.
      • curlyLowerCaseHeaders: boolean, if set to true, headers will be returned in lower case. Defaults to false. #240
    • โž• Added new methods and CurlFeature allowing the use of streams to upload and download data without having to set WRITEFUNCTION and/or READFUNCTION manually. #237
      • Curl.setUploadStream
      • Curl.setStreamProgress
      • Curl.setStreamResponseHighWaterMark
      • CurlFeature.StreamResponse
        ๐Ÿ†• New options were also added to the curly API:
      • curlyProgressCallback
      • curlyStreamResponse
      • curlyStreamResponseHighWaterMark
      • curlyStreamUpload
        These new features related to streams are only reliable when using a libcurl version >= 7.69.1.
    • ๐Ÿ‘Œ Support libcurl info CURLINFO_CERTINFO. Can be retrieved using getInfo("CERTINFO"). Thanks to @Sergey-Mityukov for most of the work on this.
    • Support libcurl info CURLINFO_EFFECTIVE_METHOD. Requires libcurl >= 7.72.0.
    • Support libcurl info CURLINFO_PROXY_ERROR. Use CurlPx for constants. Requires libcurl >= 7.73.0.
    • Support libcurl option CURLOPT_SSL_EC_CURVES. Requires libcurl >= 7.73.0.
    • โž• Added prebuilt binaries for Electron v10.1
    • The libcurl version being used by prebuilt binaries is now 7.73.0 and it's not built with c-ares.

    ๐Ÿ”„ Changed

    • curly now has 100% code coverage.

    โœ‚ Removed

    • โœ‚ Removed prebuilt binaries for: Electron v3, Electron v4, Nwjs v0.42, and Nwjs v0.43

    v2.3.0-0...v2.3.0

  • v2.3.0-0 Changes

    October 30, 2020

    ๐Ÿ’ฅ Breaking Change

    ๐Ÿ“œ curly (and curly.<method>) is now able to automatically parse the response body based on the content-type header of the response. #240
    0๏ธโƒฃ Default parsers for application/json (calls JSON.parse) and text/* (converts the raw Buffer to a string with utf8 encoding) were added. This means that for responses without a matching content-type the raw Buffer will be returned. This is different from the previous behavior where a string would always be returned.
    0๏ธโƒฃ The default parsers can be overwritten by setting curly.defaultResponseBodyParsers to an object with the format:

    {
      'content-type': (data: Buffer, headers: HeaderInfo[]) => any
    }
    

    Where content-type can be one of these:

    • the exact content-type.
    • a pattern using * to match specific parts of the content-type, like text/*.
    • a catch-all pattern: just *.

    ๐Ÿ“œ You can also override the parsers using the following options:

    • curlyResponseBodyParsers object that will be merged with defaultResponseBodyParsers.
    • curlyResponseBodyParser a parser that will be used for all responses.

    ๐Ÿ“œ It's also possible to set curlyResponseBodyParser to false and the data returned will always be the raw Buffer.

    0๏ธโƒฃ Of course, it is still possible to use your own writeFunction (libcurl CURLOPT_WRITEFUNCTION option) to set your own write callback and not rely on this default handling of the response.

    ๐Ÿš€ As curly is marked as experimental, this allows us to do a breaking change in a minor version bump. This release should make the curly API more stable and provide a better developer experience, however, the API remains experimental.

    ๐Ÿ›  Fixed

    • Some curly.<method> calls not working correctly, to be more specific, all calls that were not get, post and head.
    • Errors thrown by the internal Curl instance used by curly not being re-thrown correctly.
    • 0๏ธโƒฃ Progress callbacks were not allowing to use default libcurl progress meter (by returning CurlProgressFunc.Continue).

    โž• Added

    • 0๏ธโƒฃ Calling curly.create(options) will now return a new curly object that will use the passed options as defaults. #247
    • 0๏ธโƒฃ TypeScript: curly (and curly.<method>) now accepts a generic type parameter which will be the type of the data returned. By default, this is set to any.
    • โž• Added new options to the curly API:
      • curlyBaseUrl: string, if set, their value will always be added as the prefix for the URL.
      • curlyLowerCaseHeaders: boolean, if set to true, headers will be returned in lower case. Defaults to false. #240
    • โž• Added new methods and CurlFeature allowing the use of streams to upload and download data without having to set WRITEFUNCTION and/or READFUNCTION manually. #237
      • Curl.setUploadStream
      • Curl.setStreamProgress
      • Curl.setStreamResponseHighWaterMark
      • CurlFeature.StreamResponse
        ๐Ÿ†• New options were also added to the curly API:
      • curlyProgressCallback
      • curlyStreamResponse
      • curlyStreamResponseHighWaterMark
      • curlyStreamUpload
        These new features related to streams are only reliable when using a libcurl version >= 7.69.1.
    • ๐Ÿ‘Œ Support libcurl info CURLINFO_CERTINFO. Can be retrieved using getInfo("CERTINFO"). Thanks to @Sergey-Mityukov for most of the work on this.
    • Support libcurl info CURLINFO_EFFECTIVE_METHOD. Requires libcurl >= 7.72.0.
    • Support libcurl info CURLINFO_PROXY_ERROR. Use CurlPx for constants. Requires libcurl >= 7.73.0.
    • Support libcurl option CURLOPT_SSL_EC_CURVES. Requires libcurl >= 7.73.0.
    • โž• Added prebuilt binaries for Electron v10.1
    • The libcurl version being used by prebuilt binaries is now 7.73.0 and it's not built with c-ares.

    ๐Ÿ”„ Changed

    • curly now has 100% code coverage.

    โœ‚ Removed

    • โœ‚ Removed prebuilt binaries for: Electron v3, Electron v4, Nwjs v0.42, and Nwjs v0.43

    v2.2.0...v2.3.0-0

  • v2.2.1-0 Changes

    October 14, 2020

    ๐Ÿ’ฅ Breaking Change

    ๐Ÿ“œ curly (and curly.<method>) is now able to automatically parse the response body based on the content-type header of the response. #240
    0๏ธโƒฃ Default parsers for application/json (calls JSON.parse) and text/* (converts the raw Buffer to a string with utf8 encoding) were added. This means that for responses without a matching content-type the raw Buffer will be returned. This is different from the previous behavior where a string would always be returned.
    0๏ธโƒฃ The default parsers can be overwritten by setting curly.defaultResponseBodyParsers to an object with the format:

    {
      'content-type': (data: Buffer, headers: HeaderInfo[]) => any
    }
    

    Where content-type can be one of these:

    • the exact content-type.
    • a pattern using * to match specific parts of the content-type, like text/*.
    • a catch-all pattern: just *.

    ๐Ÿ“œ You can also override the parsers using the following options:

    • curlyResponseBodyParsers object that will be merged with defaultResponseBodyParsers.
    • curlyResponseBodyParser a parser that will be used for all responses.

    ๐Ÿ“œ It's also possible to set curlyResponseBodyParser to false and the data returned will always be the raw Buffer.

    0๏ธโƒฃ Of course, it is still possible to use your own writeFunction (libcurl CURLOPT_WRITEFUNCTION option) to set your own write callback and not rely on this default handling of the response.

    ๐Ÿš€ As curly is marked as experimental, this allows us to do a breaking change in a minor version bump. This release should make the curly API more stable and provide a better developer experience, however, the API remains experimental.

    ๐Ÿ›  Fixed

    • Some curly.<method> calls not working correctly, to be more specific, all calls that were not get, post and head.
    • Errors thrown by the internal Curl instance used by curly not being re-thrown correctly.
    • 0๏ธโƒฃ Progress callbacks were not allowing to use default libcurl progress meter (by returning CurlProgressFunc.Continue).

    โž• Added

    • 0๏ธโƒฃ Calling curly.create(options) will now return a new curly object that will use the passed options as defaults. #247
    • 0๏ธโƒฃ TypeScript: curly (and curly.<method>) now accepts a generic type parameter which will be the type of the data returned. By default, this is set to any.
    • โž• Added new options to the curly API:
      • curlyBaseUrl: string, if set, their value will always be added as the prefix for the URL.
      • curlyLowerCaseHeaders: boolean, if set to true, headers will be returned in lower case. Defaults to false. #240
    • โž• Added new methods and CurlFeature allowing the use of streams to upload and download data without having to set WRITEFUNCTION and/or READFUNCTION manually. #237
      • Curl.setUploadStream
      • Curl.setStreamProgress
      • Curl.setStreamResponseHighWaterMark
      • CurlFeature.StreamResponse
        ๐Ÿ†• New options were also added to the curly API:
      • curlyProgressCallback
      • curlyStreamResponse
      • curlyStreamResponseHighWaterMark
      • curlyStreamUpload
        These new features related to streams are only reliable when using a libcurl version >= 7.69.1.
    • ๐Ÿ‘Œ Support libcurl info CURLINFO_CERTINFO. Can be retrieved using getInfo("CERTINFO"). Thanks to @Sergey-Mityukov for most of the work on this.
    • Support libcurl info CURLINFO_EFFECTIVE_METHOD. Requires libcurl >= 7.72.0.
    • Support libcurl info CURLINFO_PROXY_ERROR. Use CurlPx for constants. Requires libcurl >= 7.73.0.
    • Support libcurl option CURLOPT_SSL_EC_CURVES. Requires libcurl >= 7.73.0.

    v2.2.0...v2.2.1-0

  • v2.2.0 Changes

    July 14, 2020

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix curly.get not working correctly (#230)
    • ๐Ÿ›  Fix not resetting CURLOPT_TRAILERDATA when duplicating an Easy instance (7bf3a51)

    โž• Added

    • โž• Added initial support to the CURLMOPT_PUSHFUNCTION libcurl multi option. (#232) (b8d0fac)
    • โž• Added private member to the EasyNativeBinding typescript class, you can set this value on the Easy instances to anything, and Typescript should not complain.
    • โž• Adde prebuilt binaries for Electron v9

    ๐Ÿ”„ Changed

    • ๐Ÿ‘Œ Improved Typescript types / documentation for some libcurl options. (63a71b7)
  • v2.2.0-1 Changes

    June 26, 2020
    • ๐Ÿ“„ docs: update CHANGELOG.md ad02eff
    • ๐Ÿ‘ feat: add support the CURLMOPT_PUSHFUNCTION libcurl multi option b8d0fac
    • ๐Ÿ“„ docs: update CHANGELOG.md 788c61d
    • โฌ†๏ธ deps: upgrade node-gyp and other deps and add scripts to generate the compile_commands.json file 7f7b9a6
    • ๐Ÿ“„ docs: add link to our Discord Server to the README.md 135869d
    • chore: add [dD]ebug and [rR]elease folders to gitignore cc1187d
    • ๐Ÿ“„ docs: improve README.md d875f66
    • ๐Ÿ“„ docs: update api docs to and improve Typescript types 63a71b7
    • ๐Ÿ“š scripts: update script that generates libcurl options documentation 5f118bd
    • ๐Ÿ“„ docs: add this typehint on some Easy#setOpt/Curl#setOpt calls 026c814
    • ๐Ÿ›  fix: not resetting CURLOPT_TRAILERDATA when duplicating an Easy handle 7bf3a51
    • ๐Ÿšš examples: remove unecessary function on protobuf example [skip ci] 02f813b
    • ๐Ÿšš examples: remove unecessary require on protobuf example [skip ci] 54f55f1
    • examples: add example showing how to send binary data - in this specific case, protobuf encoded data be5df47
    • ๐Ÿ“„ docs: add note on README about the READFUNCTION option 3989e17
    • ๐Ÿ“„ docs: improve documentation on the end event listener callback 2c0b89d
    • ๐Ÿ“„ docs: update docs with nojekyll plugin [skip ci] 63cf3d7
    • ๐Ÿ“„ docs: add typedoc-plugin-nojekyll [skip ci] 86a148f
    • ๐Ÿ›  fix: httpMethodOptions for curly get (#230) b9ff102
    • ๐Ÿ“„ docs: add magic .nojekyll file [skip ci] 6695c91
    • ๐Ÿ“„ docs: regenerate docs folder [skip ci] 3f4731d
    • ๐Ÿ“„ docs: add updated documentation and remove github actions - gh pages is going to be deployed from master docs folder [skip ci] 4cec7fb

    v2.1.3...v2.2.0-1

  • v2.1.3 Changes

    June 02, 2020

    ๐Ÿ›  Fixed

    • ๐Ÿ— v2.1.2 had a caching issue on during the dist files generation, which caused it to not build some required files.

    v2.1.2...v2.1.3