{"_id":"@sentry-internal/node-native-stacktrace","_rev":"11-4e17cf04ce8c50562ff6ad9c8370d8ad","name":"@sentry-internal/node-native-stacktrace","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.1.0","license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.1.0","maintainers":[{"name":"haza","email":"daniel.griesser.86@gmail.com"},{"name":"sentry-bot","email":"accounts@sentry.io"},{"name":"mitsuhiko","email":"armin.ronacher@active-4.com"},{"name":"zeeg","email":"dcramer@gmail.com"},{"name":"leedongwei","email":"danny@dongwei.li"},{"name":"evanpurkhiser","email":"evanpurkhiser@gmail.com"},{"name":"billyvg","email":"npm@mmo.me"},{"name":"jauer","email":"account@jauer.org"},{"name":"markstory","email":"mark@mark-story.com"}],"dist":{"shasum":"fa0eaf1e66245f463ca2294ff63da74c56d1a052","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.1.0.tgz","fileCount":39,"integrity":"sha512-dWkxhDdjcRdEOTk1acrdBledqIroaYJrOSbecx5tJ/m9DiWZ1Oa4eNi/sI2SHLT+hKmsBBxrychf6+Iitz5Bzw==","signatures":[{"sig":"MEYCIQC9G7VKGHkw0/zWtAOfqkSYTOcVudYgVMFrDraZsjh14gIhAOaf0uEjo0I5Nu5lqldzmF2uyzCr62Syg1Ugvp4omjx7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2464857},"main":"lib/index.js","_from":"file:/tmp/craft-HRTLB3/sentry-internal-node-native-stacktrace-0.1.0.tgz","types":"lib/index.d.ts","volta":{"node":"24.1.0"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept","build":"yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build","install":"node scripts/check-build.mjs","build:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"_resolved":"/tmp/craft-HRTLB3/sentry-internal-node-native-stacktrace-0.1.0.tgz","_integrity":"sha512-dWkxhDdjcRdEOTk1acrdBledqIroaYJrOSbecx5tJ/m9DiWZ1Oa4eNi/sI2SHLT+hKmsBBxrychf6+Iitz5Bzw==","_npmVersion":"10.9.2","description":"Native Node module to capture stack traces from all registered threads.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"node-abi":"^3.73.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.1.0_1749824383252_0.6839148903427714","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@sentry-internal/node-native-stacktrace","version":"0.1.1","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.1.1","maintainers":[{"name":"haza","email":"daniel.griesser.86@gmail.com"},{"name":"sentry-bot","email":"accounts@sentry.io"},{"name":"mitsuhiko","email":"armin.ronacher@active-4.com"},{"name":"zeeg","email":"dcramer@gmail.com"},{"name":"leedongwei","email":"danny@dongwei.li"},{"name":"evanpurkhiser","email":"evanpurkhiser@gmail.com"},{"name":"billyvg","email":"npm@mmo.me"},{"name":"jauer","email":"account@jauer.org"},{"name":"markstory","email":"mark@mark-story.com"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"713b16a1c57c420b5c51cfeb239612c627eeacfb","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.1.1.tgz","fileCount":40,"integrity":"sha512-B5TSNsFx6AxBNzZ4I6fpZAoR0Z8jThN/q9T7OVLC6x/4naINTRDA+8/hN/ptzUhXdXJgLoUn7Y+8N71unPJG6g==","signatures":[{"sig":"MEUCIH1ZyZ46QnMU6WoLss9Rqvow2aBXLekddR673grIjUQHAiEAxtRRhHvqyCGkpo9CVMq7NEZWTTylBi+ye8Q9sLy3neg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2468231},"main":"lib/index.js","_from":"file:/tmp/craft-G56SoI/sentry-internal-node-native-stacktrace-0.1.1.tgz","types":"lib/index.d.ts","volta":{"node":"24.1.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept","build":"yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build","install":"node scripts/check-build.mjs","build:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","actor":{"name":"sentry-bot","type":"user","email":"accounts@sentry.io"},"email":"accounts@sentry.io"},"_resolved":"/tmp/craft-G56SoI/sentry-internal-node-native-stacktrace-0.1.1.tgz","_integrity":"sha512-B5TSNsFx6AxBNzZ4I6fpZAoR0Z8jThN/q9T7OVLC6x/4naINTRDA+8/hN/ptzUhXdXJgLoUn7Y+8N71unPJG6g==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.2","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"node-abi":"^3.73.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.1.1_1750917070826_0.5763488884638477","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.0","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.2.0","maintainers":[{"name":"haza","email":"daniel.griesser.86@gmail.com"},{"name":"sentry-bot","email":"accounts@sentry.io"},{"name":"mitsuhiko","email":"armin.ronacher@active-4.com"},{"name":"zeeg","email":"dcramer@gmail.com"},{"name":"leedongwei","email":"danny@dongwei.li"},{"name":"evanpurkhiser","email":"evanpurkhiser@gmail.com"},{"name":"billyvg","email":"npm@mmo.me"},{"name":"jauer","email":"account@jauer.org"},{"name":"markstory","email":"mark@mark-story.com"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"d759d9ba62101aea46829c436aec490d4a63f9f7","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.0.tgz","fileCount":40,"integrity":"sha512-MPkjcXFUaBVxbpx8whvqQu7UncriCt3nUN7uA+ojgauHF2acvSp5nJCqKM2a4KInFWNiI1AxJ6tLE7EuBJ4WBQ==","signatures":[{"sig":"MEUCIQDCpn2H+hW3NtrgeGWpjB7dHV+RmwIwVP+LW8omEiQLKAIgbUgxOJtYlJTaT3iFNzGJZEIMWltCW489QSoFswCB2Xk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2482096},"main":"lib/index.js","_from":"file:/tmp/craft-8WTQFR/sentry-internal-node-native-stacktrace-0.2.0.tgz","types":"lib/index.d.ts","volta":{"node":"24.1.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept","build":"yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build","install":"node scripts/check-build.mjs","build:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","actor":{"name":"sentry-bot","type":"user","email":"accounts@sentry.io"},"email":"accounts@sentry.io"},"_resolved":"/tmp/craft-8WTQFR/sentry-internal-node-native-stacktrace-0.2.0.tgz","_integrity":"sha512-MPkjcXFUaBVxbpx8whvqQu7UncriCt3nUN7uA+ojgauHF2acvSp5nJCqKM2a4KInFWNiI1AxJ6tLE7EuBJ4WBQ==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.2","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-abi":"^3.73.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.2.0_1752180741844_0.357532656251482","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.1","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.2.1","maintainers":[{"name":"haza","email":"daniel.griesser.86@gmail.com"},{"name":"sentry-bot","email":"accounts@sentry.io"},{"name":"mitsuhiko","email":"armin.ronacher@active-4.com"},{"name":"zeeg","email":"dcramer@gmail.com"},{"name":"leedongwei","email":"danny@dongwei.li"},{"name":"evanpurkhiser","email":"evanpurkhiser@gmail.com"},{"name":"billyvg","email":"npm@mmo.me"},{"name":"jauer","email":"account@jauer.org"},{"name":"markstory","email":"mark@mark-story.com"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"021c30b396f4cfa47a7f13467049f4d0673e4b1b","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.1.tgz","fileCount":40,"integrity":"sha512-sIfIj0LFL8WKxifRB6xtD2u4a1imeTNywk5PrXXqZnYLXgR7mr1vb9oGNxh8YJNCwsmr1EtitCm5IjgXWJtQ2Q==","signatures":[{"sig":"MEYCIQD+pytH7yIinU5JPu+D7wir+h2VhJtRT2VnBUL61CWfSQIhAPrIWt2pHbRTKMiIYPCJDvjON0ksZ3UMODBjS8b/T8P3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2482113},"main":"lib/index.js","_from":"file:/tmp/craft-ZyAwCP/sentry-internal-node-native-stacktrace-0.2.1.tgz","types":"lib/index.d.ts","volta":{"node":"24.1.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept","build":"yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build","install":"node scripts/check-build.mjs","build:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"_resolved":"/tmp/craft-ZyAwCP/sentry-internal-node-native-stacktrace-0.2.1.tgz","_integrity":"sha512-sIfIj0LFL8WKxifRB6xtD2u4a1imeTNywk5PrXXqZnYLXgR7mr1vb9oGNxh8YJNCwsmr1EtitCm5IjgXWJtQ2Q==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.2","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-abi":"^3.73.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.2.1_1752705883513_0.19804211321675735","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.2","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.2.2","maintainers":[{"name":"haza","email":"daniel.griesser.86@gmail.com"},{"name":"sentry-bot","email":"accounts@sentry.io"},{"name":"mitsuhiko","email":"armin.ronacher@active-4.com"},{"name":"zeeg","email":"dcramer@gmail.com"},{"name":"leedongwei","email":"danny@dongwei.li"},{"name":"evanpurkhiser","email":"evanpurkhiser@gmail.com"},{"name":"billyvg","email":"npm@mmo.me"},{"name":"jauer","email":"account@jauer.org"},{"name":"markstory","email":"mark@mark-story.com"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"b32dde884642f100dd691b12b643361040825eeb","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.2.tgz","fileCount":40,"integrity":"sha512-ZRS+a1Ik+w6awjp9na5vHBqLNkIxysfGDswLVAkjtVdBUxtfsEVI8OA6r8PijJC5Gm1oAJJap2e9H7TSiCUQIQ==","signatures":[{"sig":"MEUCIQDRz+dN1swSXcK/Wk1n5E5nb/TQ5RI8IpO5MALPMVC/RQIgX0aTT3a81JEhDIgLWtZNeUYHJYps3cO0qsKJqBh8KuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2488314},"main":"lib/index.js","_from":"file:/tmp/craft-vYEFIi/sentry-internal-node-native-stacktrace-0.2.2.tgz","types":"lib/index.d.ts","volta":{"node":"24.1.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept","build":"yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build","install":"node scripts/check-build.mjs","build:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"_resolved":"/tmp/craft-vYEFIi/sentry-internal-node-native-stacktrace-0.2.2.tgz","_integrity":"sha512-ZRS+a1Ik+w6awjp9na5vHBqLNkIxysfGDswLVAkjtVdBUxtfsEVI8OA6r8PijJC5Gm1oAJJap2e9H7TSiCUQIQ==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.2","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"node-abi":"^3.73.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.2.2_1753756319335_0.3366999535196289","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.3","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.2.3","maintainers":[{"name":"haza","email":"daniel.griesser.86@gmail.com"},{"name":"sentry-bot","email":"accounts@sentry.io"},{"name":"mitsuhiko","email":"armin.ronacher@active-4.com"},{"name":"zeeg","email":"dcramer@gmail.com"},{"name":"leedongwei","email":"danny@dongwei.li"},{"name":"evanpurkhiser","email":"evanpurkhiser@gmail.com"},{"name":"billyvg","email":"npm@mmo.me"},{"name":"jauer","email":"account@jauer.org"},{"name":"markstory","email":"mark@mark-story.com"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"8b389e8f7b0c65974276af8e3ff659403ecf9a28","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.3.tgz","fileCount":40,"integrity":"sha512-/byxTp2rSRP1c8h1G1TSZAikjNq0+tSEY9GjxRugLN0YxiXKFVaANoZqU24LQFFEE9qGLgw6IOiwxljo0o4V/A==","signatures":[{"sig":"MEUCIQCJ2v6U+9I57SsdvxtY8iZLkF/ecKUNcPQs0icZkOap+QIgbVajsJhBXTWKhYR4YLWUSn++LOdGfzWBJ8XE+ZSYQ8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2488607},"main":"lib/index.js","_from":"file:/tmp/craft-68TjsR/sentry-internal-node-native-stacktrace-0.2.3.tgz","types":"lib/index.d.ts","volta":{"node":"24.1.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"yarn test:install && node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept","build":"yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build","install":"node scripts/check-build.mjs","build:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","test:install":"cross-env ALWAYS_THROW=true yarn install","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"_resolved":"/tmp/craft-68TjsR/sentry-internal-node-native-stacktrace-0.2.3.tgz","_integrity":"sha512-/byxTp2rSRP1c8h1G1TSZAikjNq0+tSEY9GjxRugLN0YxiXKFVaANoZqU24LQFFEE9qGLgw6IOiwxljo0o4V/A==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.2","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"node-abi":"^3.73.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","cross-env":"^7.0.3","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.2.3_1758126441572_0.40384496481524046","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.3.0","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.3.0","maintainers":[{"name":"haza","email":"daniel.griesser.86@gmail.com"},{"name":"sentry-bot","email":"accounts@sentry.io"},{"name":"mitsuhiko","email":"armin.ronacher@active-4.com"},{"name":"zeeg","email":"dcramer@gmail.com"},{"name":"leedongwei","email":"danny@dongwei.li"},{"name":"evanpurkhiser","email":"evanpurkhiser@gmail.com"},{"name":"billyvg","email":"npm@mmo.me"},{"name":"jauer","email":"account@jauer.org"},{"name":"markstory","email":"mark@mark-story.com"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"68c80dcf11ee070a3a54406b35d4571952caa793","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.3.0.tgz","fileCount":40,"integrity":"sha512-ef0M2y2JDrC/H0AxMJJQInGTdZTlnwa6AAVWR4fMOpJRubkfdH2IZXE/nWU0Nj74oeJLQgdPtS6DeijLJtqq8Q==","signatures":[{"sig":"MEUCIC+D65cZPE7zqspj3v0siS8TUfpRnOlUEz9F63KfAqmKAiEAzbfag3w+L276aFI95t8CNUIEa7xW+HOgnQnxMFx1f3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2948211},"main":"lib/index.js","_from":"file:/tmp/craft-4ZVFd9/sentry-internal-node-native-stacktrace-0.3.0.tgz","types":"lib/index.d.ts","volta":{"node":"24.9.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"yarn test:install && yarn test:prepare && vitest run --poolOptions.forks.singleFork --silent=false --disable-console-intercept","build":"yarn clean && yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build && rm -f *.tgz","install":"node scripts/check-build.mjs","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","test:install":"cross-env ALWAYS_THROW=true yarn install","test:prepare":"node ./test/prepare.mjs","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"_resolved":"/tmp/craft-4ZVFd9/sentry-internal-node-native-stacktrace-0.3.0.tgz","_integrity":"sha512-ef0M2y2JDrC/H0AxMJJQInGTdZTlnwa6AAVWR4fMOpJRubkfdH2IZXE/nWU0Nj74oeJLQgdPtS6DeijLJtqq8Q==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.3","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"node-abi":"^3.73.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","cross-env":"^7.0.3","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.3.0_1761251067666_0.6705773112638518","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.4.0","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.4.0","maintainers":[{"name":"sentry-bot","email":"accounts@sentry.io"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"8f6e7a21537373a5623714c14d3350e1bb4602f0","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.4.0.tgz","fileCount":40,"integrity":"sha512-cuRBBqnsHOJJqLCii9GvwedzjetsihIarq7TxCjgG88JyF8TZWRMlUBu/OogWhYZVU8uHqAeSvpbzolnmdhdkw==","signatures":[{"sig":"MEUCIQCwdv1TTuzo8P4EooxfBkuDbHEhel4LX4hGmjiMc0NZTgIgOm8S8Prp50sC2WFG7KoyPAD8mfLurOpSXj+oMcGIAtI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2816358},"main":"lib/index.js","_from":"file:/tmp/craft-9MrisK/sentry-internal-node-native-stacktrace-0.4.0.tgz","types":"lib/index.d.ts","volta":{"node":"24.9.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"yarn test:install && yarn test:prepare && vitest run --poolOptions.forks.singleFork --silent=false --disable-console-intercept","build":"yarn clean && yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build && rm -f *.tgz","install":"node scripts/check-build.mjs","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","test:install":"cross-env ALWAYS_THROW=true yarn install","test:prepare":"node ./test/prepare.mjs","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"_resolved":"/tmp/craft-9MrisK/sentry-internal-node-native-stacktrace-0.4.0.tgz","_integrity":"sha512-cuRBBqnsHOJJqLCii9GvwedzjetsihIarq7TxCjgG88JyF8TZWRMlUBu/OogWhYZVU8uHqAeSvpbzolnmdhdkw==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.7","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"node-abi":"^3.89.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","cross-env":"^7.0.3","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.4.0_1775660031063_0.6867473827999218","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@sentry-internal/node-native-stacktrace","version":"0.4.1","keywords":["stacktrace","native","nodejs","worker","sentry"],"author":{"name":"Sentry"},"license":"MIT","_id":"@sentry-internal/node-native-stacktrace@0.4.1","maintainers":[{"name":"sentry-bot","email":"accounts@sentry.io"}],"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"dist":{"shasum":"9ddadc5e6e732da8c45122e16e3baa31409ce27c","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.4.1.tgz","fileCount":40,"integrity":"sha512-D/Tp25ELxDZPj5LD74v3KdOLQFwYtaPZVPI2id+cZ89Cch9Ndd2LV0XbgTzyJFDlSMh0h0hOnmcmjp7uA8b5ZA==","signatures":[{"sig":"MEYCIQCNlNkKaJYp/a3orTeVb3A3v8aEY70Jj5Knd665eLzUgwIhAPfGN1rUMUqfAkvuot7kH4Jly5udS3x5oJT3gOajBTyE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2903099},"main":"lib/index.js","_from":"file:/tmp/craft-SbXDiQ/sentry-internal-node-native-stacktrace-0.4.1.tgz","types":"lib/index.d.ts","volta":{"node":"24.9.0"},"engines":{"node":">=18"},"scripts":{"fix":"yarn fix:eslint && yarn fix:clang","lint":"yarn lint:eslint && yarn lint:clang","test":"yarn test:install && yarn test:prepare && vitest run --poolOptions.forks.singleFork --silent=false --disable-console-intercept","build":"yarn clean && yarn build:lib && yarn build:bindings:configure && yarn build:bindings","clean":"node-gyp clean && rm -rf lib && rm -rf build && rm -f *.tgz","install":"node scripts/check-build.mjs","build:lib":"tsc","fix:clang":"node scripts/clang-format.mjs --fix","fix:eslint":"eslint . --format stylish --fix","lint:clang":"node scripts/clang-format.mjs","lint:eslint":"eslint . --format stylish","test:install":"cross-env ALWAYS_THROW=true yarn install","test:prepare":"node ./test/prepare.mjs","build:tarball":"npm pack","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64"},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"_resolved":"/tmp/craft-SbXDiQ/sentry-internal-node-native-stacktrace-0.4.1.tgz","_integrity":"sha512-D/Tp25ELxDZPj5LD74v3KdOLQFwYtaPZVPI2id+cZ89Cch9Ndd2LV0XbgTzyJFDlSMh0h0hOnmcmjp7uA8b5ZA==","repository":{"url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git","type":"git"},"_npmVersion":"10.9.7","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"node-abi":"^3.89.0","detect-libc":"^2.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.0.0","vitest":"^3.1.4","node-gyp":"^11.2.0","cross-env":"^7.0.3","typescript":"^5.8.3","@types/node":"^18.19.1","clang-format":"^1.8.0","@types/node-abi":"^3.0.3","@sentry-internal/eslint-config-sdk":"^9.22.0"},"_npmOperationalInternal":{"tmp":"tmp/node-native-stacktrace_0.4.1_1776887542048_0.28368347742158884","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.5.0","main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git"},"homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","author":{"name":"Sentry"},"license":"MIT","description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","keywords":["stacktrace","native","nodejs","worker","sentry"],"scripts":{"install":"node scripts/check-build.mjs","lint":"yarn lint:eslint && yarn lint:clang","lint:eslint":"eslint . --format stylish","lint:clang":"node scripts/clang-format.mjs","fix":"yarn fix:eslint && yarn fix:clang","fix:eslint":"eslint . --format stylish --fix","fix:clang":"node scripts/clang-format.mjs --fix","build":"yarn clean && yarn build:lib && yarn build:bindings:configure && yarn build:bindings","build:lib":"tsc","build:bindings:configure":"node-gyp configure","build:bindings:configure:arm64":"node-gyp configure --arch=arm64 --target_arch=arm64","build:bindings":"node-gyp build && node scripts/copy-target.mjs","build:bindings:arm64":"node-gyp build --arch=arm64 && node scripts/copy-target.mjs","build:tarball":"npm pack","clean":"node-gyp clean && rm -rf lib && rm -rf build && rm -f *.tgz","test":"yarn test:install && yarn test:prepare && vitest run --poolOptions.forks.singleFork --silent=false --disable-console-intercept","test:prepare":"node ./test/prepare.mjs","test:install":"cross-env ALWAYS_THROW=true yarn install"},"engines":{"node":">=18"},"dependencies":{"detect-libc":"^2.0.4","node-abi":"^3.89.0"},"devDependencies":{"@sentry-internal/eslint-config-sdk":"^9.22.0","@types/node":"^18.19.1","@types/node-abi":"^3.0.3","clang-format":"^1.8.0","cross-env":"^7.0.3","eslint":"^7.0.0","node-gyp":"^11.2.0","typescript":"^5.8.3","vitest":"^3.1.4"},"publishConfig":{"access":"public"},"volta":{"node":"24.9.0"},"_id":"@sentry-internal/node-native-stacktrace@0.5.0","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"_integrity":"sha512-vi+yY8D0TgUdpd8ja2BPqm689N+WZPWfXNkx0fzKYlVRGymUpQeyUrz2b6dscYE8Qr3ZiA6sz8RtXeQy1r9ZTQ==","_resolved":"/tmp/craft-MwzVLZ/sentry-internal-node-native-stacktrace-0.5.0.tgz","_from":"file:/tmp/craft-MwzVLZ/sentry-internal-node-native-stacktrace-0.5.0.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-vi+yY8D0TgUdpd8ja2BPqm689N+WZPWfXNkx0fzKYlVRGymUpQeyUrz2b6dscYE8Qr3ZiA6sz8RtXeQy1r9ZTQ==","shasum":"834a5326fd45a97d1abe3b6110e9b268c7a2fa4e","tarball":"https://registry.npmjs.org/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.5.0.tgz","fileCount":47,"unpackedSize":3636825,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCSyufrKKJWuWc5GM5nRbOEoKcsPtdEks09+4sMYF+iiwIhAOIi2yjMPhjy33UFh8s0dRTsdjLebDEyXzMBvBmOOPU1"}]},"_npmUser":{"name":"sentry-bot","email":"accounts@sentry.io"},"directories":{},"maintainers":[{"name":"sentry-bot","email":"accounts@sentry.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.5.0_1778506458842_0.11434605566825118"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-13T14:19:43.158Z","modified":"2026-05-11T13:34:19.171Z","0.1.0":"2025-06-13T14:19:43.550Z","0.1.1":"2025-06-26T05:51:11.109Z","0.2.0":"2025-07-10T20:52:22.117Z","0.2.1":"2025-07-16T22:44:43.710Z","0.2.2":"2025-07-29T02:31:59.592Z","0.2.3":"2025-09-17T16:27:21.817Z","0.3.0":"2025-10-23T20:24:27.866Z","0.4.0":"2026-04-08T14:53:51.362Z","0.4.1":"2026-04-22T19:52:22.316Z","0.5.0":"2026-05-11T13:34:19.055Z"},"bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"author":{"name":"Sentry"},"license":"MIT","homepage":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace","keywords":["stacktrace","native","nodejs","worker","sentry"],"repository":{"type":"git","url":"git://github.com/getsentry/sentry-javascript-node-native-stacktrace.git"},"description":"A native Node.js module that can capture JavaScript stack traces from main and worker threads, even with blocked event loops.","maintainers":[{"name":"sentry-bot","email":"accounts@sentry.io"}],"readme":"# `@sentry-internal/node-native-stacktrace`\n\nA native Node.js module that can capture JavaScript stack traces for registered\nmain or worker threads from any other thread, even if event loops are blocked.\n\nThe module also provides a means to create a watchdog system to track event loop\nblocking via periodic heartbeats. When the time from the last heartbeat crosses\na threshold, JavaScript stack traces can be captured.\n\nFor Node.js >= v24, this module can also capture state from `AsyncLocalStorage`\nat the time of stack trace capture, which can help provide context on what the\nthread was working on when it became blocked.\n\nThis native module is used for Sentry's\n[Event Loop Blocked Detection](https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/event-loop-block/)\nfeature.\n\n## Basic Usage\n\n### 1. Register threads you want to monitor\n\nIn your main thread or worker threads:\n\n```ts\nimport { registerThread } from \"@sentry-internal/node-native-stacktrace\";\n\n// Register this thread for monitoring\nregisterThread();\n```\n\n### 2. Capture stack traces from any thread\n\n```ts\nimport { captureStackTrace } from \"@sentry-internal/node-native-stacktrace\";\n\n// Capture stack traces from all registered threads\nconst stacks = captureStackTrace();\nconsole.log(stacks);\n```\n\n### Example Output\n\nStack traces show where each thread is currently executing:\n\n```js\n{\n  '0': { // Main thread has ID '0'\n    frames: [\n      {\n        function: 'from',\n        filename: 'node:buffer',\n        lineno: 298,\n        colno: 28\n      },\n      {\n        function: 'pbkdf2Sync',\n        filename: 'node:internal/crypto/pbkdf2',\n        lineno: 78,\n        colno: 17\n      },\n      {\n        function: 'longWork',\n        filename: '/app/test.js',\n        lineno: 20,\n        colno: 29\n      },\n      {\n        function: '?',\n        filename: '/app/test.js',\n        lineno: 24,\n        colno: 1\n      }\n    ]\n  },\n  '2': { // Worker thread\n    frames: [\n      {\n        function: 'from',\n        filename: 'node:buffer',\n        lineno: 298,\n        colno: 28\n      },\n      {\n        function: 'pbkdf2Sync',\n        filename: 'node:internal/crypto/pbkdf2',\n        lineno: 78,\n        colno: 17\n      },\n      {\n        function: 'longWork',\n        filename: '/app/worker.js',\n        lineno: 10,\n        colno: 29\n      },\n      {\n        function: '?',\n        filename: '/app/worker.js',\n        lineno: 14,\n        colno: 1\n      }\n    ]\n  }\n}\n```\n\n## Advanced Usage: Automatic blocked event loop Detection\n\nSet up automatic detection of blocked event loops:\n\n### 1. Register threads with `AsyncLocalStorage` state tracking and heartbeats\n\nSend regular heartbeats:\n\n```ts\nimport {\n  registerThread,\n  threadPoll,\n} from \"@sentry-internal/node-native-stacktrace\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\n// Create async local storage for state tracking\nconst asyncLocalStorage = new AsyncLocalStorage();\n// Set some state in the async local storage\nasyncLocalStorage.enterWith({ someState: \"value\" });\n\n// Register this thread with async local storage\nregisterThread({ asyncLocalStorage });\n\n// Send heartbeats every 200ms\nsetInterval(() => {\n  threadPoll();\n}, 200);\n```\n\n### 2. Monitor from a watchdog thread\n\nMonitor all registered threads from a dedicated thread:\n\n```ts\nimport {\n  captureStackTrace,\n  getThreadsLastSeen,\n} from \"@sentry-internal/node-native-stacktrace\";\n\nconst THRESHOLD = 1000; // 1 second\n\nsetInterval(() => {\n  const threadsLastSeen = getThreadsLastSeen();\n\n  for (const [threadId, timeSinceLastSeen] of Object.entries(threadsLastSeen)) {\n    if (timeSinceLastSeen > THRESHOLD) {\n      // Thread appears to be blocked - capture diagnostics\n      const stackTraces = captureStackTrace();\n      const blockedThread = stackTraces[threadId];\n\n      console.error(`🚨 Thread ${threadId} blocked for ${timeSinceLastSeen}ms`);\n      console.error(\"Stack trace:\", blockedThread.frames);\n      console.error(\"Async state:\", blockedThread.asyncState);\n    }\n  }\n}, 500); // Check every 500ms\n```\n\n## API Reference\n\n### Functions\n\n#### `registerThread(threadName?: string): void`\n\n#### `registerThread(asyncStorage: AsyncStorageArgs, threadName?: string): void`\n\nRegisters the current thread for stack trace capture. Must be called from each\nthread you want to capture stack traces from.\n\n- `threadName` (optional): Name for the thread. Defaults to the current thread\n  ID.\n- `asyncStorage` (optional): `AsyncStorageArgs` to fetch state from\n  `AsyncLocalStorage` on stack trace capture.\n\n```ts\ntype AsyncStorageArgs = {\n  /** AsyncLocalStorage instance to fetch state from */\n  asyncLocalStorage: AsyncLocalStorage<unknown>;\n  /**\n   * Optional array of keys to pick a specific property from the store.\n   * Key will be traversed in order through Objects/Maps to reach the desired property.\n   *\n   * This is useful if you want to capture Open Telemetry context values as state.\n   *\n   * To get this value:\n   * context.getValue(MY_UNIQUE_SYMBOL_REF)\n   *\n   * You would set:\n   * stateLookup: ['_currentContext', MY_UNIQUE_SYMBOL_REF]\n   */\n  stateLookup?: Array<string | symbol>;\n};\n```\n\n#### `captureStackTrace<State>(): Record<string, Thread<A, P>>`\n\nCaptures stack traces from all registered threads. Can be called from any thread\nbut will not capture a stack trace for the calling thread itself.\n\n```ts\ntype Thread<A = unknown, P = unknown> = {\n  frames: StackFrame[];\n  /** State captured from the AsyncLocalStorage */\n  asyncState?: A;\n  /** Optional state provided when calling threadPoll */\n  pollState?: P;\n};\n\ntype StackFrame = {\n  function: string;\n  filename: string;\n  lineno: number;\n  colno: number;\n};\n```\n\n#### `threadPoll<State>(disableLastSeen?: boolean, pollState?: object): void`\n\nSends a heartbeat from the current thread.\n\n- `disableLastSeen` (optional): If `true`, disables the tracking of the last\n  seen time for this thread.\n- `pollState` (optional): An object containing state to include with the next\n  stack trace capture. This can be used instead of or in addition to\n  `AsyncLocalStorage` based state tracking.\n\n#### `getThreadsLastSeen(): Record<string, number>`\n\nReturns the time in milliseconds since each registered thread called\n`threadPoll()`.\n","readmeFilename":"README.md"}