impit-node@0.7.6
Changelog
All notable changes to this project will be documented in this file.
js-0.7.6 - 2026-01-05
Bug Fixes
-
Do not panic on missing attributes for encoding-related
metaelements (#346)- Ignores encoding-related
metaelements with missingcontentorcharsetattributes. Related to #344
- Ignores encoding-related
-
Throw
Erroron invalid header value (do not panic) (#347)- Unparseable response header values now only return
Errorin the Node bindings instead of panicking and killing the process. Related to #344
- Unparseable response header values now only return
js-0.7.5 - 2025-12-17
Bug Fixes
- Do not drop request-scoped options (
timeoutandforceHttp3) (#340)
js-0.7.4 - 2025-12-09
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
js-0.7.3 - 2025-12-03
Features
- Enable
TRACEmethod in the bindings (#328)- Unifies all clients by enabling the
tracemethod in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
- Unifies all clients by enabling the
js-0.7.2 - 2025-12-02
Bug Fixes
-
Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
js-0.7.1 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
js-0.7.0 - 2025-11-07
Features
- Align
Impit.fetchwithfetchinterface (#309)- Enables passing
RequestandURLinstances toImpit.fetch. Related to #227
- Enables passing
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
js-0.6.1 - 2025-10-22
Bug Fixes
- Downgrade
napi-rstooling to fix random Windows hang ups (#296)
js-0.6.0 - 2025-10-16
Bug Fixes
-
Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
-
Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
-
Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
-
Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
-
Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
js-0.5.4 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
js-0.5.3 - 2025-07-24
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
Refactor
- Improve thread safety, make
ImpitSync(#212)
js-0.5.2 - 2025-06-25
Features
- Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
js-0.5.1 - 2025-06-11
Bug Fixes
- Solve memory leak on response read (#191)
- Memory leak in
napi-rs's implementation ofReadableStreamwas causingimpitto leak small amounts of memory on response read (.text(),.json(),.bytes()etc.).
- Memory leak in
Features
- Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
js-0.5.0 - 2025-05-29
Bug Fixes
- Support
nullrequest payload, don't modify options (#190)- Removes parameter reassignment code smell. Fixes errors on
null(or other nullish, but not expected) body.
- Removes parameter reassignment code smell. Fixes errors on
Features
- Support for custom cookie stores for Node.JS (#181)
- Adds
cookieJarconstructor parameter forImpitclass, acceptingtough-cookie'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: string, url: string)andgetCookieString(url: string)).impitwill write to and read from this custom cookie store. Related to #123
- Adds
js-0.4.7 - 2025-05-20
Features
- Add
resp.arrayBuffer, improve Node <22 compatibility (#188)- Adds new
response.arrayBuffermethod (MDN) and implementsresponse.bytesusingarrayBuffer()to improve compatibility with Node < 22 (.bytes()support was rather experimental until this version).
- Adds new
js-0.4.6 - 2025-05-16
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
js-0.4.5 - 2025-05-07
Bug Fixes
- Render helpful error message on import errors (#171)
- Wraps the original
napi-rsENOENTerror with a more descriptive error message. UnderstandsIMPIT_VERBOSEenvvar for printing the original error message.
- Wraps the original
js-0.4.2 - 2025-04-30
Features
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
-
Accept more
request.bodytypes (matchfetchAPI) (#157)
js-0.4.0 - 2025-04-23
Bug Fixes
-
Set
response.text()return type tostring(#136)- The type definitions for
response.text()return type usedString(see capital S) instead ofstring(likefetchAPI does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
- The type definitions for
-
Do not publish ambient
const enums (#144)- Switches from exporting
const enums from the.d.tsfile (which is problematic) to exporting union types. Makes thebrowseroption accept lowercase browser names.
- Switches from exporting
Features
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
js-0.3.2 - 2025-04-15
Bug Fixes
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
- Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
js-0.3.1 - 2025-03-28
Bug Fixes
- Bundle native binary in
linux-arm64packages (#100)- Followup to #94 , the
impit-linux-arm64-(gnu|musl)published packages didn't have the native binary included due to naming mismatch.
- Followup to #94 , the
js-0.3.0 - 2025-03-28
Features
- Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
js-0.2.5 - 2025-02-25
Bug Fixes
- Enable ESM named imports from
impitpackages (#78)- Lists the "named" exports from the
impitpackage verbatim so they can be imported withtypescript import { Impit } from 'impit';from ESM packages without causing the following error:import { Impit } from "impit"; ^^^^^ SyntaxError: Named export 'Impit' not found. The requested module 'impit' is a CommonJS module, which may not support all module.exports as named exports. CommonJS modules can always be imported via the default export, for example using: import pkg from 'impit'; const { Impit } = pkg;
- Lists the "named" exports from the
js-0.2.4 - 2025-02-25
Bug Fixes
- Allow
impitusage from ESM (#74)- Renames native code import to mitigate naming collision with global
exports.
- Renames native code import to mitigate naming collision with global
js-0.2.3 - 2025-02-21
Bug Fixes
-
Reenable HTTP/3 features in JS bindings (#57)
- Recent package updates might have broken the
http3feature in Node.JS bindings. This PR solves the underlying problems by building the reqwest'sClientfrom within thenapi-rs-managedtokioruntime. Adds tests forhttp3usage from Node bindings. Removes problematic Firefox header (Connectionis not allowed in HTTP2 and HTTP3 requests or responses and together withforceHttp3was causing panics inside the Rust code).
- Recent package updates might have broken the
-
Decode response charset with headers and BOM sniffing (#68)
- Calling
typescript const res = await impit.fetch('https://resource-with-non-utf8-response'); const text = await res.text();results in mangling the response text (as Impit expected onlyutf-8). This PR fixes this by patching theImpit.fetch()return value. While it would be possible to implement this fully in Rust, this implementation is much simpler and opens the door for other patches like this.
- Calling
Security
- Regenerate Node.JS lockfile with latest dependencies (#53)
- Closes Dependabot security warnings.
js-0.2.1 - 2025-02-11
Features
- Add
.urlfield toimpit-nodeResponse (#43)- Adds Response.url property to the
ImpitResponsestruct / object.
- Adds Response.url property to the
js-0.2.0 - 2025-02-07
Features
- Add
ReadableStreaminResponse.body(#28)- Accessing
Response.bodynow returns an instance of JSReadableStream. This API design matches the (browser) Fetch API spec. In order to correctly manage theResponseconsumption, the current codebase has been slightly refactored. Note that the implementation relies on a prerelease version of thenapi-rstooling.
- Accessing
Security
- Bump
vitestversion (#31)- Solves Dependabot security warnings.
0.1.5 - 2025-01-23
Bug Fixes
- Use replacement character on invalid decode (#25)
- When decoding incorrectly encoded content, the binding now panics and takes down the entire JS script. This change replaces the incorrect sequence with the U+FFFD replacement character (�) in the content. This is most often the desired behaviour.