René's URL Explorer Experiment


Title: src: decouple KeyObject and CryptoKey and move CryptoKey to src by panva · Pull Request #62924 · nodejs/node · GitHub

Open Graph Title: src: decouple KeyObject and CryptoKey and move CryptoKey to src by panva · Pull Request #62924 · nodejs/node

X Title: src: decouple KeyObject and CryptoKey and move CryptoKey to src by panva · Pull Request #62924 · nodejs/node

Description: Refactors Node.js' Web Crypto CryptoKey implementation to decouple it from KeyObject by moving CryptoKey's internal-slot storage into a new native NativeCryptoKey base and updating internal crypto code to use slot accessors instead of JS-visible properties. Paired with a future EOL #62321 deprecation (v26.x runtime-deprecation, v27.x EOL) this makes non-extractable CryptoKey key material unreachable in userland 🎉 thanks to removing public access to the [[handle]] internal slot. Changes: Introduces NativeCryptoKey (C++) plus JS-side slot helpers (getCryptoKey{Type,Extractable,Algorithm,Usages,Handle}) and updates Web Crypto/internal consumers accordingly. Migrates Web Crypto key generation/import/export paths from KeyObject wrappers to KeyObjectHandle usage, including structured-clone/worker-transfer support. Adds targeted regression tests for slot hiding / brand checks / clone-transfer and adds Web Crypto sign/verify benchmarks. The PR is squash-merged, but the changes are split into logical commits to make review tractable. Commits Each commit has a description covering its scope and rationale, see individual commit messages for details. Commits are cumulative (except for fixups and applying feedback). No later commit from the ones listed below revises code introduced by an earlier one. In order: src: decouple KeyObject and CryptoKey and move CryptoKey to src (empty, just a squash target) src,crypto: add NativeCryptoKey lib,crypto: rewire CryptoKey on the native class lib,crypto: migrate algorithm modules to native CryptoKey src,crypto: relax RSA/EC keygen arg checks lib,crypto: validate HkdfParams info length early lib,crypto: add early structural JWK validation test: add CryptoKey class regression tests benchmark: add Web Crypto sign/verify benchmarks src,lib: switch usages internal slot to a bitmask ++ ... rest is fixups and applying feedback The PR's changes UI is your friend, either filter commits, or filter files, or both, mark reviewed files as Viewed to remember where you left off. Benchmark(s) https://ci.nodejs.org/view/Node.js benchmark/job/benchmark-node-micro-benchmarks/1833/ https://ci.nodejs.org/view/Node.js benchmark/job/benchmark-node-micro-benchmarks/1834/ https://ci.nodejs.org/view/Node.js benchmark/job/benchmark-node-micro-benchmarks/1835/ There's a ton of noise in this to conclude this isn't a performance regression. 🤞 Signed-off-by: Filip Skokan

Open Graph Description: Refactors Node.js' Web Crypto CryptoKey implementation to decouple it from KeyObject by moving CryptoKey's internal-slot storage into a new native NativeCryptoKey base and updating internal...

X Description: Refactors Node.js' Web Crypto CryptoKey implementation to decouple it from KeyObject by moving CryptoKey's internal-slot storage into a new native NativeCryptoKey base and updating ...

Opengraph URL: https://github.com/nodejs/node/pull/62924

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:d8b63d0f-7a1c-e740-4a93-f44726ae2122
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idCDC8:C61B2:4F3D67:6FF322:6A4CA63D
html-safe-nonce731e50eca742d4d797382bb10d462fc3706ceec4c71e222a2abe5c249164b216
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDREM4OkM2MUIyOjRGM0Q2Nzo2RkYzMjI6NkE0Q0E2M0QiLCJ2aXNpdG9yX2lkIjoiMjU0ODM3MTA2OTY0ODgwNzQ4NSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmace49666b97f39ef0e0e1d8a95d6c0e9f255415c19eecd2d66757d8560cc0551ad
hovercard-subject-tagpull_request:3579226758
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/nodejs/node/pull/62924/files
twitter:imagehttps://avatars.githubusercontent.com/u/241506?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/241506?s=400&v=4
og:image:altRefactors Node.js' Web Crypto CryptoKey implementation to decouple it from KeyObject by moving CryptoKey's internal-slot storage into a new native NativeCryptoKey base and updating internal...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/nodejs/node git https://github.com/nodejs/node.git
octolytics-dimension-user_id9950313
octolytics-dimension-user_loginnodejs
octolytics-dimension-repository_id27193779
octolytics-dimension-repository_nwonodejs/node
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id27193779
octolytics-dimension-repository_network_root_nwonodejs/node
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releaseae90d426644ca15e89bacceb72e51f4e9dbf85f7
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/nodejs/node/pull/62924/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F62924%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F62924%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=nodejs%2Fnode
Reloadhttps://github.com/nodejs/node/pull/62924/files
Reloadhttps://github.com/nodejs/node/pull/62924/files
Reloadhttps://github.com/nodejs/node/pull/62924/files
Please reload this pagehttps://github.com/nodejs/node/pull/62924/files
nodejs https://github.com/nodejs
nodehttps://github.com/nodejs/node
Please reload this pagehttps://github.com/nodejs/node/pull/62924/files
Notifications https://github.com/login?return_to=%2Fnodejs%2Fnode
Fork 36k https://github.com/login?return_to=%2Fnodejs%2Fnode
Star 118k https://github.com/login?return_to=%2Fnodejs%2Fnode
Code https://github.com/nodejs/node
Issues 1.4k https://github.com/nodejs/node/issues
Pull requests 964 https://github.com/nodejs/node/pulls
Actions https://github.com/nodejs/node/actions
Projects https://github.com/nodejs/node/projects
Security and quality 0 https://github.com/nodejs/node/security
Insights https://github.com/nodejs/node/pulse
Code https://github.com/nodejs/node
Issues https://github.com/nodejs/node/issues
Pull requests https://github.com/nodejs/node/pulls
Actions https://github.com/nodejs/node/actions
Projects https://github.com/nodejs/node/projects
Security and quality https://github.com/nodejs/node/security
Insights https://github.com/nodejs/node/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
panvahttps://github.com/panva
nodejs:mainhttps://github.com/nodejs/node/tree/main
panva:native-cryptokeyhttps://github.com/panva/node/tree/native-cryptokey
Conversation 29 https://github.com/nodejs/node/pull/62924
Commits 11 https://github.com/nodejs/node/pull/62924/commits
Checks 56 https://github.com/nodejs/node/pull/62924/checks
Files changed https://github.com/nodejs/node/pull/62924/files
Please reload this pagehttps://github.com/nodejs/node/pull/62924/files
src: decouple KeyObject and CryptoKey and move CryptoKey to src https://github.com/nodejs/node/pull/62924/files#top
Show all changes 11 commits https://github.com/nodejs/node/pull/62924/files
887ef02 src: decouple KeyObject and CryptoKey and move CryptoKey to src panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/887ef02747c9b2ec08b16f670059815e7fb70e9d
9d88287 src,crypto: add NativeCryptoKey panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/9d882871729fa85611f83922f5748f7e051347c5
bf5a786 lib,crypto: rewire CryptoKey on the native class panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/bf5a786c95873b7190f1d053c33c81e130344581
0f11a37 lib,crypto: migrate algorithm modules to native CryptoKey panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/0f11a3745461d0f4226ab67baf11316d41cf78e9
9beeb44 src,crypto: relax RSA/EC keygen arg checks panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/9beeb44929b826c77f7fe5f2fd94a6751c6c608e
26c2d54 lib,crypto: validate HkdfParams info length early panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/26c2d547d78d3290b7843377ad60f126052626ac
7684ddb lib,crypto: add early structural JWK validation panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/7684ddba84fe9548ef72a6e157397eb0c2d7ea56
d618239 test: add CryptoKey class regression tests panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/d6182395cb520a6f730535bf710e44570ef15b5b
3b9d06a benchmark: add Web Crypto sign/verify benchmarks panva Apr 24, 2026 https://github.com/nodejs/node/pull/62924/commits/3b9d06aac4d06a40ebdcf50ef29a9b8a988216ab
cbe2cd1 doc: document native CryptoKey backing panva Apr 25, 2026 https://github.com/nodejs/node/pull/62924/commits/cbe2cd1be9017fa99e5f9d1ddb6c9c9f09a76038
aedb3e4 src,lib: switch usages internal slot to a bitmask panva Apr 25, 2026 https://github.com/nodejs/node/pull/62924/commits/aedb3e46057e71493084d697013a67ac0c7e0b48
Clear filters https://github.com/nodejs/node/pull/62924/files
Please reload this pagehttps://github.com/nodejs/node/pull/62924/files
Please reload this pagehttps://github.com/nodejs/node/pull/62924/files
webcrypto-sign.js https://github.com/nodejs/node/pull/62924/files#diff-c3489bf8138829fabd047ce5114da200400982948d0b1ef6828f8c49786e5d71
webcrypto-verify.js https://github.com/nodejs/node/pull/62924/files#diff-f4f5d2af68898af8faf5b395411f73e9677312317e9f097e785dfaddcdcd5b07
eslint.config_partial.mjs https://github.com/nodejs/node/pull/62924/files#diff-89eb5442de2dcd59f1f3932873799b3f49d48e4ce12e7c003bfa9d5bd45a03a5
aes.js https://github.com/nodejs/node/pull/62924/files#diff-60dc1451af2067da77efcdd065f1f10b85e41d6bd0491eaf46265f074f7066d5
argon2.js https://github.com/nodejs/node/pull/62924/files#diff-66ada0fb7de4a5f998d403d4403893b4b058896cb8cd1430f02967913b2611ee
cfrg.js https://github.com/nodejs/node/pull/62924/files#diff-53b9ee1f571ea7753baa2ed2f7b549c044de283c11605a1c3169911cb074acb7
chacha20_poly1305.js https://github.com/nodejs/node/pull/62924/files#diff-afbe8db76ef7ff4e6a9084cc955c169eeda5d023031d5f4d72b74b3dccfc75b2
diffiehellman.js https://github.com/nodejs/node/pull/62924/files#diff-c92e48b9347ad2ce4a71be6ff55e03821c9220851baa08fe1ec8aa23fba2cc65
ec.js https://github.com/nodejs/node/pull/62924/files#diff-15c1a60d165e73c0aa21f0aff84493a257a577a97e9c8d2f33779b003193e338
hkdf.js https://github.com/nodejs/node/pull/62924/files#diff-7f18a628b2c2be00d00df933f722d9516c76ed1da953d3ed937624e99dc1900d
keys.js https://github.com/nodejs/node/pull/62924/files#diff-dc0c77ec6254d6ea006052823a4d90dda37543cc4c4bf451a6fd8d079b9fa9f3
mac.js https://github.com/nodejs/node/pull/62924/files#diff-0a00854c29b4afcf90096a503ba20a7bcec04c29c1f010428102d4437529f0c4
ml_dsa.js https://github.com/nodejs/node/pull/62924/files#diff-aafefed13aa329d8aedb709c4336989fcd560e57396546fc731437e437ccdef8
ml_kem.js https://github.com/nodejs/node/pull/62924/files#diff-047915935f506e203c24ada563d2364e29180685c65001fbe4ded65ccd936521
pbkdf2.js https://github.com/nodejs/node/pull/62924/files#diff-dc4ff7692195e94fe4c1c2a7a462bfae70defed23a58c618b47989e0caef5095
rsa.js https://github.com/nodejs/node/pull/62924/files#diff-73032fe8406a59d52947208fc3a5273e0b9f8156ed44d569f296d30139e6c3b5
util.js https://github.com/nodejs/node/pull/62924/files#diff-58fb74b9b189a11905c3b44a366cd7395f8dd204103d1803c0d853cbd14b53b0
webcrypto.js https://github.com/nodejs/node/pull/62924/files#diff-94512ef9a5aef0e277e76a298c97ce87a685b5f54b60d62532e637046e974bf6
webcrypto_util.js https://github.com/nodejs/node/pull/62924/files#diff-17c7930d6048d99e8c6b2e22e6bb8cdf44ea5348635b5b64b883108a3e908dc1
webidl.js https://github.com/nodejs/node/pull/62924/files#diff-800ad0ad975b0ac9a91466383c9a2d69ad2c07b4ec00664190523f44fdbaaa44
comparisons.js https://github.com/nodejs/node/pull/62924/files#diff-bf43bcaa5596c38bf749716194186c2f0be79712e737752d9bb2d63830c2c4d5
README.md https://github.com/nodejs/node/pull/62924/files#diff-30a6621169f98b52f8627de43b250889106143820885c59c34aea4a7e2fc965e
crypto_ec.cc https://github.com/nodejs/node/pull/62924/files#diff-5db80d8f7a9d7880f439eb95303372ab76f77ff4f13818d04020108f49c38316
crypto_keys.cc https://github.com/nodejs/node/pull/62924/files#diff-ba9c6e460921506078681fce317dec2c97e0b9b43c4b7b17d16dd1539e469b2b
crypto_keys.h https://github.com/nodejs/node/pull/62924/files#diff-f2ade773010f15e87807491067d5e81c36c5902fb7f142f39880bf19a14e3304
crypto_rsa.cc https://github.com/nodejs/node/pull/62924/files#diff-c6de2ecfc54c47adc24707ee08978aaafbcdfa842020f0e48a261d39c884a803
env_properties.h https://github.com/nodejs/node/pull/62924/files#diff-3c4caf9223a0c3a6efbb87207e13f002d4209a6c4db5d9c113ac5d7112ef4474
node_crypto.cc https://github.com/nodejs/node/pull/62924/files#diff-fbb424b0c726f25a6ab1100125b7e97a96142f900c0c328805905f39004e0e8e
test-webcrypto-cryptokey-brand-check.js https://github.com/nodejs/node/pull/62924/files#diff-327e1dd720bcaaad82407b66caf70a8530375bf16bd81eaa11d16b6a15463b6c
test-webcrypto-cryptokey-clone-transfer.js https://github.com/nodejs/node/pull/62924/files#diff-12d54e1a1d73d1db7b899c6ed80044cac12ac40ca74ba30b2c9fcd31a4045a6e
test-webcrypto-cryptokey-hidden-slots.js https://github.com/nodejs/node/pull/62924/files#diff-50b785983f1bd6d2c2190937019db705631c7723ee60694b6846d70efbfdc1c2
test-webcrypto-cryptokey-no-own-symbols.js https://github.com/nodejs/node/pull/62924/files#diff-70eaa385f05f8c441a32533f388dc0bebdb4b94125eb6188afff4c7d2a1971a8
test-webcrypto-derivebits-hkdf.js https://github.com/nodejs/node/pull/62924/files#diff-58e602dd2ba5cceef09f7eca832f2c5cb6454fc42f32b46089b70f481e784105
test-webcrypto-encrypt-decrypt-chacha20-poly1305.js https://github.com/nodejs/node/pull/62924/files#diff-3f49cf1eabdf23ad76d102051359c419af9c7dd6f6bc46fc6b5c05da20a7f680
test-webcrypto-export-import-cfrg.js https://github.com/nodejs/node/pull/62924/files#diff-30f6d387fea6f5e4131038e8fd3cb2bbc656af2723e0e0669b4fb0bef10dba93
test-webcrypto-export-import-ec.js https://github.com/nodejs/node/pull/62924/files#diff-a7256e798f073d01adb67b47383a85543f4296ba7bbd979f2022c257dd855162
test-webcrypto-export-import-ml-dsa.js https://github.com/nodejs/node/pull/62924/files#diff-1cabff555ecd16c3f28b93662bfe102c7759782e5873e01843cec3c533cccca5
test-webcrypto-export-import-ml-kem.js https://github.com/nodejs/node/pull/62924/files#diff-8d0e57387fa1ed01a85024136ab52886d4c38db0eeff9f7730ad3bf9e0104f83
test-webcrypto-export-import-rsa.js https://github.com/nodejs/node/pull/62924/files#diff-1e79ac56983c7919c8dcb5ab559bc684bc16225429e2604f41efd1d5f917ccbc
test-webcrypto-internal-slots.mjs https://github.com/nodejs/node/pull/62924/files#diff-ee2d4602207603b00ae26b2f178634658853e3c248915a4d6cb9977c63cfee81
benchmark/crypto/webcrypto-sign.jshttps://github.com/nodejs/node/pull/62924/files#diff-c3489bf8138829fabd047ce5114da200400982948d0b1ef6828f8c49786e5d71
View file https://github.com/panva/node/blob/aedb3e46057e71493084d697013a67ac0c7e0b48/benchmark/crypto/webcrypto-sign.js
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/62924/{{ revealButtonHref }}
benchmark/crypto/webcrypto-verify.jshttps://github.com/nodejs/node/pull/62924/files#diff-f4f5d2af68898af8faf5b395411f73e9677312317e9f097e785dfaddcdcd5b07
View file https://github.com/panva/node/blob/aedb3e46057e71493084d697013a67ac0c7e0b48/benchmark/crypto/webcrypto-verify.js
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/62924/{{ revealButtonHref }}
lib/eslint.config_partial.mjshttps://github.com/nodejs/node/pull/62924/files#diff-89eb5442de2dcd59f1f3932873799b3f49d48e4ce12e7c003bfa9d5bd45a03a5
View file https://github.com/panva/node/blob/aedb3e46057e71493084d697013a67ac0c7e0b48/lib/eslint.config_partial.mjs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/62924/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/62924/files#diff-89eb5442de2dcd59f1f3932873799b3f49d48e4ce12e7c003bfa9d5bd45a03a5
https://github.com/nodejs/node/pull/62924/files#diff-89eb5442de2dcd59f1f3932873799b3f49d48e4ce12e7c003bfa9d5bd45a03a5
Please reload this pagehttps://github.com/nodejs/node/pull/62924/files
Please reload this pagehttps://github.com/nodejs/node/pull/62924/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.