{"versions":{"0.1.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.1.0","main":"lib/index.js","types":"lib/index.d.ts","license":"MIT","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 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:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:tarball":"npm pack","clean":"node-gyp clean && rm -rf lib && rm -rf build","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept"},"volta":{"node":"24.1.0"},"dependencies":{"detect-libc":"^2.0.4","node-abi":"^3.73.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","eslint":"^7.0.0","node-gyp":"^11.2.0","typescript":"^5.8.3","vitest":"^3.1.4"},"publishConfig":{"access":"public"},"_id":"@sentry-internal/node-native-stacktrace@0.1.0","description":"Native Node module to capture stack traces from all registered threads.","_integrity":"sha512-dWkxhDdjcRdEOTk1acrdBledqIroaYJrOSbecx5tJ/m9DiWZ1Oa4eNi/sI2SHLT+hKmsBBxrychf6+Iitz5Bzw==","_resolved":"/tmp/craft-HRTLB3/sentry-internal-node-native-stacktrace-0.1.0.tgz","_from":"file:/tmp/craft-HRTLB3/sentry-internal-node-native-stacktrace-0.1.0.tgz","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-dWkxhDdjcRdEOTk1acrdBledqIroaYJrOSbecx5tJ/m9DiWZ1Oa4eNi/sI2SHLT+hKmsBBxrychf6+Iitz5Bzw==","shasum":"fa0eaf1e66245f463ca2294ff63da74c56d1a052","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.1.0.tgz","fileCount":39,"unpackedSize":2464857,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC9G7VKGHkw0/zWtAOfqkSYTOcVudYgVMFrDraZsjh14gIhAOaf0uEjo0I5Nu5lqldzmF2uyzCr62Syg1Ugvp4omjx7"}],"size":831736},"_npmUser":{"name":"anonymous","email":"accounts@sentry.io"},"directories":{},"maintainers":[{"name":"anonymous","email":"daniel.griesser.86@gmail.com"},{"name":"anonymous","email":"accounts@sentry.io"},{"name":"anonymous","email":"armin.ronacher@active-4.com"},{"name":"anonymous","email":"dcramer@gmail.com"},{"name":"anonymous","email":"danny@dongwei.li"},{"name":"anonymous","email":"evanpurkhiser@gmail.com"},{"name":"anonymous","email":"npm@mmo.me"},{"name":"anonymous","email":"account@jauer.org"},{"name":"anonymous","email":"mark@mark-story.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.1.0_1749824383252_0.6839148903427714"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-06-13T14:19:43.550Z","publish_time":1749824383550,"_source_registry_name":"default","hasInstallScript":true,"contributors":[]},"0.1.1":{"name":"@sentry-internal/node-native-stacktrace","version":"0.1.1","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 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:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:tarball":"npm pack","clean":"node-gyp clean && rm -rf lib && rm -rf build","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept"},"engines":{"node":">=18"},"dependencies":{"detect-libc":"^2.0.4","node-abi":"^3.73.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","eslint":"^7.0.0","node-gyp":"^11.2.0","typescript":"^5.8.3","vitest":"^3.1.4"},"publishConfig":{"access":"public"},"volta":{"node":"24.1.0"},"_id":"@sentry-internal/node-native-stacktrace@0.1.1","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"_integrity":"sha512-B5TSNsFx6AxBNzZ4I6fpZAoR0Z8jThN/q9T7OVLC6x/4naINTRDA+8/hN/ptzUhXdXJgLoUn7Y+8N71unPJG6g==","_resolved":"/tmp/craft-G56SoI/sentry-internal-node-native-stacktrace-0.1.1.tgz","_from":"file:/tmp/craft-G56SoI/sentry-internal-node-native-stacktrace-0.1.1.tgz","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-B5TSNsFx6AxBNzZ4I6fpZAoR0Z8jThN/q9T7OVLC6x/4naINTRDA+8/hN/ptzUhXdXJgLoUn7Y+8N71unPJG6g==","shasum":"713b16a1c57c420b5c51cfeb239612c627eeacfb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.1.1.tgz","fileCount":40,"unpackedSize":2468231,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH1ZyZ46QnMU6WoLss9Rqvow2aBXLekddR673grIjUQHAiEAxtRRhHvqyCGkpo9CVMq7NEZWTTylBi+ye8Q9sLy3neg="}],"size":832968},"_npmUser":{"name":"anonymous","email":"accounts@sentry.io","actor":{"name":"sentry-bot","email":"accounts@sentry.io","type":"user"}},"directories":{},"maintainers":[{"name":"anonymous","email":"daniel.griesser.86@gmail.com"},{"name":"anonymous","email":"accounts@sentry.io"},{"name":"anonymous","email":"armin.ronacher@active-4.com"},{"name":"anonymous","email":"dcramer@gmail.com"},{"name":"anonymous","email":"danny@dongwei.li"},{"name":"anonymous","email":"evanpurkhiser@gmail.com"},{"name":"anonymous","email":"npm@mmo.me"},{"name":"anonymous","email":"account@jauer.org"},{"name":"anonymous","email":"mark@mark-story.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.1.1_1750917070826_0.5763488884638477"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-06-26T05:51:11.109Z","publish_time":1750917071109,"_source_registry_name":"default","hasInstallScript":true,"contributors":[]},"0.2.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.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 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:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:tarball":"npm pack","clean":"node-gyp clean && rm -rf lib && rm -rf build","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept"},"engines":{"node":">=18"},"dependencies":{"detect-libc":"^2.0.4","node-abi":"^3.73.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","eslint":"^7.0.0","node-gyp":"^11.2.0","typescript":"^5.8.3","vitest":"^3.1.4"},"publishConfig":{"access":"public"},"volta":{"node":"24.1.0"},"_id":"@sentry-internal/node-native-stacktrace@0.2.0","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"_integrity":"sha512-MPkjcXFUaBVxbpx8whvqQu7UncriCt3nUN7uA+ojgauHF2acvSp5nJCqKM2a4KInFWNiI1AxJ6tLE7EuBJ4WBQ==","_resolved":"/tmp/craft-8WTQFR/sentry-internal-node-native-stacktrace-0.2.0.tgz","_from":"file:/tmp/craft-8WTQFR/sentry-internal-node-native-stacktrace-0.2.0.tgz","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-MPkjcXFUaBVxbpx8whvqQu7UncriCt3nUN7uA+ojgauHF2acvSp5nJCqKM2a4KInFWNiI1AxJ6tLE7EuBJ4WBQ==","shasum":"d759d9ba62101aea46829c436aec490d4a63f9f7","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.0.tgz","fileCount":40,"unpackedSize":2482096,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCpn2H+hW3NtrgeGWpjB7dHV+RmwIwVP+LW8omEiQLKAIgbUgxOJtYlJTaT3iFNzGJZEIMWltCW489QSoFswCB2Xk="}],"size":840040},"_npmUser":{"name":"anonymous","actor":{"name":"sentry-bot","type":"user","email":"accounts@sentry.io"},"email":"accounts@sentry.io"},"directories":{},"maintainers":[{"name":"anonymous","email":"daniel.griesser.86@gmail.com"},{"name":"anonymous","email":"accounts@sentry.io"},{"name":"anonymous","email":"armin.ronacher@active-4.com"},{"name":"anonymous","email":"dcramer@gmail.com"},{"name":"anonymous","email":"danny@dongwei.li"},{"name":"anonymous","email":"evanpurkhiser@gmail.com"},{"name":"anonymous","email":"npm@mmo.me"},{"name":"anonymous","email":"account@jauer.org"},{"name":"anonymous","email":"mark@mark-story.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.2.0_1752180741844_0.357532656251482"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-10T20:52:22.117Z","publish_time":1752180742117,"_source_registry_name":"default","hasInstallScript":true,"contributors":[]},"0.2.1":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.1","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 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:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:tarball":"npm pack","clean":"node-gyp clean && rm -rf lib && rm -rf build","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept"},"engines":{"node":">=18"},"dependencies":{"detect-libc":"^2.0.4","node-abi":"^3.73.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","eslint":"^7.0.0","node-gyp":"^11.2.0","typescript":"^5.8.3","vitest":"^3.1.4"},"publishConfig":{"access":"public"},"volta":{"node":"24.1.0"},"_id":"@sentry-internal/node-native-stacktrace@0.2.1","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"_integrity":"sha512-sIfIj0LFL8WKxifRB6xtD2u4a1imeTNywk5PrXXqZnYLXgR7mr1vb9oGNxh8YJNCwsmr1EtitCm5IjgXWJtQ2Q==","_resolved":"/tmp/craft-ZyAwCP/sentry-internal-node-native-stacktrace-0.2.1.tgz","_from":"file:/tmp/craft-ZyAwCP/sentry-internal-node-native-stacktrace-0.2.1.tgz","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-sIfIj0LFL8WKxifRB6xtD2u4a1imeTNywk5PrXXqZnYLXgR7mr1vb9oGNxh8YJNCwsmr1EtitCm5IjgXWJtQ2Q==","shasum":"021c30b396f4cfa47a7f13467049f4d0673e4b1b","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.1.tgz","fileCount":40,"unpackedSize":2482113,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+pytH7yIinU5JPu+D7wir+h2VhJtRT2VnBUL61CWfSQIhAPrIWt2pHbRTKMiIYPCJDvjON0ksZ3UMODBjS8b/T8P3"}],"size":840049},"_npmUser":{"name":"anonymous","email":"accounts@sentry.io"},"directories":{},"maintainers":[{"name":"anonymous","email":"daniel.griesser.86@gmail.com"},{"name":"anonymous","email":"accounts@sentry.io"},{"name":"anonymous","email":"armin.ronacher@active-4.com"},{"name":"anonymous","email":"dcramer@gmail.com"},{"name":"anonymous","email":"danny@dongwei.li"},{"name":"anonymous","email":"evanpurkhiser@gmail.com"},{"name":"anonymous","email":"npm@mmo.me"},{"name":"anonymous","email":"account@jauer.org"},{"name":"anonymous","email":"mark@mark-story.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.2.1_1752705883513_0.19804211321675735"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-16T22:44:43.710Z","publish_time":1752705883710,"_source_registry_name":"default","hasInstallScript":true,"contributors":[]},"0.2.2":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.2","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 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:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:tarball":"npm pack","clean":"node-gyp clean && rm -rf lib && rm -rf build","test":"node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept"},"engines":{"node":">=18"},"dependencies":{"detect-libc":"^2.0.4","node-abi":"^3.73.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","eslint":"^7.0.0","node-gyp":"^11.2.0","typescript":"^5.8.3","vitest":"^3.1.4"},"publishConfig":{"access":"public"},"volta":{"node":"24.1.0"},"_id":"@sentry-internal/node-native-stacktrace@0.2.2","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"_integrity":"sha512-ZRS+a1Ik+w6awjp9na5vHBqLNkIxysfGDswLVAkjtVdBUxtfsEVI8OA6r8PijJC5Gm1oAJJap2e9H7TSiCUQIQ==","_resolved":"/tmp/craft-vYEFIi/sentry-internal-node-native-stacktrace-0.2.2.tgz","_from":"file:/tmp/craft-vYEFIi/sentry-internal-node-native-stacktrace-0.2.2.tgz","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ZRS+a1Ik+w6awjp9na5vHBqLNkIxysfGDswLVAkjtVdBUxtfsEVI8OA6r8PijJC5Gm1oAJJap2e9H7TSiCUQIQ==","shasum":"b32dde884642f100dd691b12b643361040825eeb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.2.tgz","fileCount":40,"unpackedSize":2488314,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDRz+dN1swSXcK/Wk1n5E5nb/TQ5RI8IpO5MALPMVC/RQIgX0aTT3a81JEhDIgLWtZNeUYHJYps3cO0qsKJqBh8KuQ="}],"size":844403},"_npmUser":{"name":"anonymous","email":"accounts@sentry.io"},"directories":{},"maintainers":[{"name":"anonymous","email":"daniel.griesser.86@gmail.com"},{"name":"anonymous","email":"accounts@sentry.io"},{"name":"anonymous","email":"armin.ronacher@active-4.com"},{"name":"anonymous","email":"dcramer@gmail.com"},{"name":"anonymous","email":"danny@dongwei.li"},{"name":"anonymous","email":"evanpurkhiser@gmail.com"},{"name":"anonymous","email":"npm@mmo.me"},{"name":"anonymous","email":"account@jauer.org"},{"name":"anonymous","email":"mark@mark-story.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.2.2_1753756319335_0.3366999535196289"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-29T02:31:59.592Z","publish_time":1753756319592,"_source_registry_name":"default","hasInstallScript":true,"contributors":[]},"0.2.3":{"name":"@sentry-internal/node-native-stacktrace","version":"0.2.3","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 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:dev":"yarn clean && yarn build:bindings:configure && yarn build","build:tarball":"npm pack","clean":"node-gyp clean && rm -rf lib && rm -rf build","test":"yarn test:install && node ./test/prepare.mjs && vitest run --silent=false --disable-console-intercept","test:install":"cross-env ALWAYS_THROW=true yarn install"},"engines":{"node":">=18"},"dependencies":{"detect-libc":"^2.0.4","node-abi":"^3.73.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.1.0"},"_id":"@sentry-internal/node-native-stacktrace@0.2.3","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"_integrity":"sha512-/byxTp2rSRP1c8h1G1TSZAikjNq0+tSEY9GjxRugLN0YxiXKFVaANoZqU24LQFFEE9qGLgw6IOiwxljo0o4V/A==","_resolved":"/tmp/craft-68TjsR/sentry-internal-node-native-stacktrace-0.2.3.tgz","_from":"file:/tmp/craft-68TjsR/sentry-internal-node-native-stacktrace-0.2.3.tgz","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-/byxTp2rSRP1c8h1G1TSZAikjNq0+tSEY9GjxRugLN0YxiXKFVaANoZqU24LQFFEE9qGLgw6IOiwxljo0o4V/A==","shasum":"8b389e8f7b0c65974276af8e3ff659403ecf9a28","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.2.3.tgz","fileCount":40,"unpackedSize":2488607,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJ2v6U+9I57SsdvxtY8iZLkF/ecKUNcPQs0icZkOap+QIgbVajsJhBXTWKhYR4YLWUSn++LOdGfzWBJ8XE+ZSYQ8c="}],"size":844492},"_npmUser":{"name":"anonymous","email":"accounts@sentry.io"},"directories":{},"maintainers":[{"name":"anonymous","email":"daniel.griesser.86@gmail.com"},{"name":"anonymous","email":"accounts@sentry.io"},{"name":"anonymous","email":"armin.ronacher@active-4.com"},{"name":"anonymous","email":"dcramer@gmail.com"},{"name":"anonymous","email":"danny@dongwei.li"},{"name":"anonymous","email":"evanpurkhiser@gmail.com"},{"name":"anonymous","email":"npm@mmo.me"},{"name":"anonymous","email":"account@jauer.org"},{"name":"anonymous","email":"mark@mark-story.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.2.3_1758126441572_0.40384496481524046"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-17T16:27:21.817Z","publish_time":1758126441817,"_source_registry_name":"default","hasInstallScript":true,"contributors":[]},"0.3.0":{"name":"@sentry-internal/node-native-stacktrace","version":"0.3.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.73.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.3.0","bugs":{"url":"https://github.com/getsentry/sentry-javascript-node-native-stacktrace/issues"},"_integrity":"sha512-ef0M2y2JDrC/H0AxMJJQInGTdZTlnwa6AAVWR4fMOpJRubkfdH2IZXE/nWU0Nj74oeJLQgdPtS6DeijLJtqq8Q==","_resolved":"/tmp/craft-4ZVFd9/sentry-internal-node-native-stacktrace-0.3.0.tgz","_from":"file:/tmp/craft-4ZVFd9/sentry-internal-node-native-stacktrace-0.3.0.tgz","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-ef0M2y2JDrC/H0AxMJJQInGTdZTlnwa6AAVWR4fMOpJRubkfdH2IZXE/nWU0Nj74oeJLQgdPtS6DeijLJtqq8Q==","shasum":"68c80dcf11ee070a3a54406b35d4571952caa793","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@sentry-internal/node-native-stacktrace/-/node-native-stacktrace-0.3.0.tgz","fileCount":40,"unpackedSize":2948211,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC+D65cZPE7zqspj3v0siS8TUfpRnOlUEz9F63KfAqmKAiEAzbfag3w+L276aFI95t8CNUIEa7xW+HOgnQnxMFx1f3o="}],"size":1012970},"_npmUser":{"name":"anonymous","email":"accounts@sentry.io"},"directories":{},"maintainers":[{"name":"anonymous","email":"daniel.griesser.86@gmail.com"},{"name":"anonymous","email":"accounts@sentry.io"},{"name":"anonymous","email":"armin.ronacher@active-4.com"},{"name":"anonymous","email":"dcramer@gmail.com"},{"name":"anonymous","email":"danny@dongwei.li"},{"name":"anonymous","email":"evanpurkhiser@gmail.com"},{"name":"anonymous","email":"npm@mmo.me"},{"name":"anonymous","email":"account@jauer.org"},{"name":"anonymous","email":"mark@mark-story.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-native-stacktrace_0.3.0_1761251067666_0.6705773112638518"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-10-23T20:24:27.866Z","publish_time":1761251067866,"_source_registry_name":"default","hasInstallScript":true,"contributors":[]}},"dist-tags":{"latest":"0.3.0"},"name":"@sentry-internal/node-native-stacktrace","time":{"created":"2025-06-17T08:08:42.305Z","modified":"2025-11-25T15:23:58.507Z","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"},"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()`.","users":{}}