Skip to content

feat: replace legacy dependencies with platform builtins - #689

Merged
B4nan merged 2 commits into
nextfrom
feat/runtime-independent-deps
Sep 2, 2026
Merged

feat: replace legacy dependencies with platform builtins#689
B4nan merged 2 commits into
nextfrom
feat/runtime-independent-deps

Conversation

@B4nan

@B4nan B4nan commented Aug 26, 2026

Copy link
Copy Markdown
Member

Steps towards runtime independence of the shared packages (#537), using the room the major release gives us:

  • @apify/image_proxy_client now uses Web Crypto instead of create-hmac and encodeURIComponent instead of node:querystring, which leaves it with no Node.js builtins at all. Web Crypto has no sync API, so the four public methods became async (the breaking part). The pre-existing tests with hard-coded digests confirm generated URLs are byte-identical. apify-core is not affected: it uses its own internal @apify-packages/image-proxy-client fork, not this package.
  • @apify/markdown uses native String.matchAll instead of the match-all package (and drops the hand-written .d.ts for it).
  • @apify/pseudo_url drops its node:util import; the invalid-input error message now renders the value via JSON.stringify instead of inspect (test expectations updated).

Not touched, and why: the sync createHmacSignature in @apify/utilities is still used 27x in apify-core and 4x in the SDK, so it stays deprecated rather than removed; EventEmitter in @apify/log, streams in @apify/utilities and the KeyObject-based RSA crypto have no drop-in Web API equivalents and remain as future work on #537.

BREAKING CHANGE: ImageProxyClient methods are now async. Stacked on the marked PR.

@B4nan B4nan added the t-tooling Issues with this label are in the ownership of the tooling team. label Aug 26, 2026
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from c01641c to f135877 Compare August 26, 2026 16:17
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from f29cd8f to 0a9bf67 Compare September 2, 2026 08:12
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from 0a9bf67 to f6e7d86 Compare September 2, 2026 08:44
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from f6e7d86 to f86648a Compare September 2, 2026 08:45
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from f86648a to a6910a4 Compare September 2, 2026 08:45
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from a6910a4 to 26cb83c Compare September 2, 2026 08:45
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from 26cb83c to f3d68c1 Compare September 2, 2026 08:45
Base automatically changed from feat/marked-v18 to next September 2, 2026 08:46
- @apify/image_proxy_client uses Web Crypto instead of create-hmac and
  encodeURIComponent instead of node:querystring, making the package
  fully runtime-independent (no Node.js builtins left)
- @apify/markdown uses native String.matchAll instead of match-all
- @apify/pseudo_url drops its node:util import

Steps towards runtime independence of the shared packages (#537).

BREAKING CHANGE: ImageProxyClient methods (generateUrl,
generateUrlWithParam, updateImagesInHtml, createImageHtml) are now
async and return promises, as Web Crypto has no sync API. Generated
URLs and digests are unchanged.
@B4nan
B4nan force-pushed the feat/runtime-independent-deps branch from f3d68c1 to 9b2b36b Compare September 2, 2026 08:46
@B4nan
B4nan merged commit c8b1a2c into next Sep 2, 2026
7 checks passed
@B4nan
B4nan deleted the feat/runtime-independent-deps branch September 2, 2026 08:46
B4nan added a commit that referenced this pull request Sep 2, 2026
image_proxy_client uses Web Crypto instead of create-hmac and encodeURIComponent instead of node:querystring; markdown uses native String.matchAll; pseudo_url drops node:util. Steps towards runtime independence (#537).

BREAKING CHANGE: ImageProxyClient methods (generateUrl, generateUrlWithParam, updateImagesInHtml, createImageHtml) are now async and return promises. Generated URLs and digests are unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-tooling Issues with this label are in the ownership of the tooling team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants