From e32f53c0c8990b2e57d24913f2e4cb07c7bbfdb2 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Mon, 8 Jun 2026 11:33:23 -0400 Subject: [PATCH 1/2] ref: rename node native stacktrace package Rename the published package from @sentry-internal/node-native-stacktrace to @sentry/node-native-stacktrace and update docs/test imports. Refs getsentry/sentry-javascript#21366 Co-Authored-By: OpenAI Codex --- README.md | 10 +++++----- package.json | 2 +- src/index.ts | 2 +- test/async-storage.mjs | 2 +- test/package.json.template | 2 +- test/stack-traces.js | 2 +- test/stalled-disabled.js | 2 +- test/stalled-forever.js | 2 +- test/stalled-watchdog.js | 2 +- test/stalled.js | 2 +- test/watchdog.js | 2 +- test/worker-do-nothing.js | 2 +- test/worker-forever.js | 2 +- test/worker.js | 2 +- 14 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index f81af49..5f2ed0c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# `@sentry-internal/node-native-stacktrace` +# `@sentry/node-native-stacktrace` A native Node.js module that can capture JavaScript stack traces for registered main or worker threads from any other thread, even if event loops are blocked. @@ -22,7 +22,7 @@ feature. In your main thread or worker threads: ```ts -import { registerThread } from "@sentry-internal/node-native-stacktrace"; +import { registerThread } from "@sentry/node-native-stacktrace"; // Register this thread for monitoring registerThread(); @@ -31,7 +31,7 @@ registerThread(); ### 2. Capture stack traces from any thread ```ts -import { captureStackTrace } from "@sentry-internal/node-native-stacktrace"; +import { captureStackTrace } from "@sentry/node-native-stacktrace"; // Capture stack traces from all registered threads const stacks = captureStackTrace(); @@ -115,7 +115,7 @@ Send regular heartbeats: import { registerThread, threadPoll, -} from "@sentry-internal/node-native-stacktrace"; +} from "@sentry/node-native-stacktrace"; import { AsyncLocalStorage } from "node:async_hooks"; // Create async local storage for state tracking @@ -140,7 +140,7 @@ Monitor all registered threads from a dedicated thread: import { captureStackTrace, getThreadsLastSeen, -} from "@sentry-internal/node-native-stacktrace"; +} from "@sentry/node-native-stacktrace"; const THRESHOLD = 1000; // 1 second diff --git a/package.json b/package.json index 3c0cdfe..788568d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@sentry-internal/node-native-stacktrace", + "name": "@sentry/node-native-stacktrace", "version": "0.5.0", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/src/index.ts b/src/index.ts index 1090708..f81c67c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -72,7 +72,7 @@ function getNativeModule(): Native { return require('../build/Release/stack-trace.node'); } catch (e) { // eslint-disable-next-line no-console - console.warn('The \'@sentry-internal/node-native-stacktrace\' binary could not be found. Use \'@electron/rebuild\' to ensure the native module is built for Electron.'); + console.warn('The \'@sentry/node-native-stacktrace\' binary could not be found. Use \'@electron/rebuild\' to ensure the native module is built for Electron.'); throw e; } } diff --git a/test/async-storage.mjs b/test/async-storage.mjs index 3895058..2943f5c 100644 --- a/test/async-storage.mjs +++ b/test/async-storage.mjs @@ -1,6 +1,6 @@ import { AsyncLocalStorage } from 'node:async_hooks'; import { Worker } from 'node:worker_threads'; -import { registerThread } from '@sentry-internal/node-native-stacktrace'; +import { registerThread } from '@sentry/node-native-stacktrace'; import { longWork } from './long-work.js'; const asyncLocalStorage = new AsyncLocalStorage(); diff --git a/test/package.json.template b/test/package.json.template index 0bda724..7b9a7e0 100644 --- a/test/package.json.template +++ b/test/package.json.template @@ -2,6 +2,6 @@ "name": "node-native-stacktrace-test", "license": "MIT", "dependencies": { - "@sentry-internal/node-native-stacktrace": "{{path}}" + "@sentry/node-native-stacktrace": "{{path}}" } } diff --git a/test/stack-traces.js b/test/stack-traces.js index 3b7107f..da4db88 100644 --- a/test/stack-traces.js +++ b/test/stack-traces.js @@ -1,6 +1,6 @@ const { Worker } = require('node:worker_threads'); const { longWork } = require('./long-work.js'); -const { registerThread } = require('@sentry-internal/node-native-stacktrace'); +const { registerThread } = require('@sentry/node-native-stacktrace'); registerThread(); diff --git a/test/stalled-disabled.js b/test/stalled-disabled.js index 117e3e6..8718814 100644 --- a/test/stalled-disabled.js +++ b/test/stalled-disabled.js @@ -1,7 +1,7 @@ const { Worker } = require('node:worker_threads'); const { AsyncLocalStorage } = require('node:async_hooks'); const { longWork } = require('./long-work.js'); -const { registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace'); +const { registerThread, threadPoll } = require('@sentry/node-native-stacktrace'); const asyncLocalStorage = new AsyncLocalStorage(); asyncLocalStorage.enterWith({ some_property: 'some_value' }); diff --git a/test/stalled-forever.js b/test/stalled-forever.js index 2b24e05..09501bd 100644 --- a/test/stalled-forever.js +++ b/test/stalled-forever.js @@ -1,5 +1,5 @@ const { Worker } = require('node:worker_threads'); -const { registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace'); +const { registerThread, threadPoll } = require('@sentry/node-native-stacktrace'); registerThread(); diff --git a/test/stalled-watchdog.js b/test/stalled-watchdog.js index 809b172..ca2bbb5 100644 --- a/test/stalled-watchdog.js +++ b/test/stalled-watchdog.js @@ -1,4 +1,4 @@ -const { captureStackTrace, getThreadsLastSeen } = require('@sentry-internal/node-native-stacktrace'); +const { captureStackTrace, getThreadsLastSeen } = require('@sentry/node-native-stacktrace'); const THRESHOLD = 500; // 1 second diff --git a/test/stalled.js b/test/stalled.js index 835e0b2..a0ec165 100644 --- a/test/stalled.js +++ b/test/stalled.js @@ -1,6 +1,6 @@ const { Worker } = require('node:worker_threads'); const { longWork } = require('./long-work.js'); -const { registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace'); +const { registerThread, threadPoll } = require('@sentry/node-native-stacktrace'); registerThread(); diff --git a/test/watchdog.js b/test/watchdog.js index ca2c2c3..f244d16 100644 --- a/test/watchdog.js +++ b/test/watchdog.js @@ -1,4 +1,4 @@ -const { captureStackTrace } = require('@sentry-internal/node-native-stacktrace'); +const { captureStackTrace } = require('@sentry/node-native-stacktrace'); setTimeout(() => { console.log(JSON.stringify(captureStackTrace())); diff --git a/test/worker-do-nothing.js b/test/worker-do-nothing.js index 598a533..33acd89 100644 --- a/test/worker-do-nothing.js +++ b/test/worker-do-nothing.js @@ -1,4 +1,4 @@ -const { registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace'); +const { registerThread, threadPoll } = require('@sentry/node-native-stacktrace'); registerThread(); diff --git a/test/worker-forever.js b/test/worker-forever.js index dfe227a..22d003c 100644 --- a/test/worker-forever.js +++ b/test/worker-forever.js @@ -1,5 +1,5 @@ const { foreverWork } = require('./long-work'); -const { registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace'); +const { registerThread, threadPoll } = require('@sentry/node-native-stacktrace'); registerThread(); diff --git a/test/worker.js b/test/worker.js index f1aa487..f414211 100644 --- a/test/worker.js +++ b/test/worker.js @@ -1,5 +1,5 @@ const { longWork } = require('./long-work'); -const { registerThread } = require('@sentry-internal/node-native-stacktrace'); +const { registerThread } = require('@sentry/node-native-stacktrace'); registerThread(); From bf796c6505c475d6595525797506526f656f3169 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Mon, 8 Jun 2026 12:09:50 -0400 Subject: [PATCH 2/2] ci: strip unsupported Node 26 Windows LTO flags Co-Authored-By: OpenAI Codex --- .github/workflows/ci.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1fcbbf6..479f1f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -278,6 +278,19 @@ jobs: if: matrix.arch != 'arm64' run: yarn build:bindings:configure + - name: Remove unsupported Node LTO flags + if: matrix.os == 'windows-2022' && matrix.node == 26 && matrix.arch != 'arm64' + shell: pwsh + run: | + $projectFiles = Get-ChildItem -Path build -Filter *.vcxproj -Recurse + foreach ($file in $projectFiles) { + $content = Get-Content -Raw -Path $file.FullName + $content = $content -replace '(?i)\s*-flto=(thin|full)', '' + $content = $content -replace '(?i)\s*/flto=(thin|full)', '' + $content = $content -replace '(?i)\s*/opt:lldltojobs=\d+', '' + Set-Content -Path $file.FullName -Value $content -NoNewline + } + - name: Configure node-gyp (arm64, ${{ contains(matrix.container, 'alpine') && 'musl' || 'glibc' }}) if: matrix.arch == 'arm64' && matrix.target_platform != 'darwin' run: yarn build:bindings:configure:arm64