Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ jobs:
skill:
- 'src/**'
- 'docs/**'
- 'package.json'
- 'script/generate-skill.ts'
- 'script/generate-command-docs.ts'
- 'script/eval-skill.ts'
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli
version: 0.26.0
version: 0.27.0-dev.0
description: Guide for using the Sentry CLI to interact with Sentry from the command line. Use when the user asks about viewing issues, events, projects, organizations, making API calls, or authenticating with Sentry via CLI.
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/api.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-api
version: 0.26.0
version: 0.27.0-dev.0
description: Make an authenticated API request
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/auth.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-auth
version: 0.26.0
version: 0.27.0-dev.0
description: Authenticate with Sentry
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/cli.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-cli
version: 0.26.0
version: 0.27.0-dev.0
description: CLI-related commands
requires:
bins: ["sentry"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-dashboard
version: 0.26.0
version: 0.27.0-dev.0
description: Manage Sentry dashboards
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/event.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-event
version: 0.26.0
version: 0.27.0-dev.0
description: View and list Sentry events
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/init.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-init
version: 0.26.0
version: 0.27.0-dev.0
description: Initialize Sentry in your project (experimental)
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/issue.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-issue
version: 0.26.0
version: 0.27.0-dev.0
description: Manage Sentry issues
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/log.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-log
version: 0.26.0
version: 0.27.0-dev.0
description: View Sentry logs
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/org.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-org
version: 0.26.0
version: 0.27.0-dev.0
description: Work with Sentry organizations
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/project.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-project
version: 0.26.0
version: 0.27.0-dev.0
description: Work with Sentry projects
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/release.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-release
version: 0.26.0
version: 0.27.0-dev.0
description: Work with Sentry releases
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/repo.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-repo
version: 0.26.0
version: 0.27.0-dev.0
description: Work with Sentry repositories
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/schema.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-schema
version: 0.26.0
version: 0.27.0-dev.0
description: Browse the Sentry API schema
requires:
bins: ["sentry"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-sourcemap
version: 0.26.0
version: 0.27.0-dev.0
description: Manage sourcemaps
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/span.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-span
version: 0.26.0
version: 0.27.0-dev.0
description: List and view spans in projects or traces
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/team.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-team
version: 0.26.0
version: 0.27.0-dev.0
description: Work with Sentry teams
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/trace.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-trace
version: 0.26.0
version: 0.27.0-dev.0
description: View distributed traces
requires:
bins: ["sentry"]
Expand Down
2 changes: 1 addition & 1 deletion plugins/sentry-cli/skills/sentry-cli/references/trial.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: sentry-cli-trial
version: 0.26.0
version: 0.27.0-dev.0
description: Manage product trials
requires:
bins: ["sentry"]
Expand Down
10 changes: 10 additions & 0 deletions src/lib/sourcemap/debug-id.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,19 @@ export async function injectDebugId(
// Parse, adjust mappings, add debug ID fields
const map = JSON.parse(mapContent) as {
mappings: string;
sources?: (string | null)[];
debug_id?: string;
debugId?: string;
};

// Normalize Windows backslashes in the sources array so uploaded
// sourcemaps have consistent forward-slash paths regardless of build
// platform. Bundlers on Windows (esbuild, Bun) may produce paths like
// "src\\bin.ts". No-op on Linux/macOS.
if (map.sources) {
map.sources = map.sources.map((s) => (s ? s.replaceAll("\\", "/") : s));
}

if (!skipSnippet) {
// Prepend one `;` to mappings — tells decoders "no mappings for the
// first line" (the injected snippet line). Each `;` in VLQ mappings
Expand Down
7 changes: 6 additions & 1 deletion src/lib/telemetry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,12 @@ export function initSentry(
}

function ensureAbsolute(p: string): string {
return isRelativePath(p) ? `/${p}` : p;
// Normalize Windows backslashes to forward slashes for sourcemap URL
// matching. Bun on Windows produces paths like "dist-bin\bin.js" in
// Error.stack — the symbolicator expects forward slashes to match
// artifacts at "~/dist-bin/bin.js".
const normalized = p.replaceAll("\\", "/");
return isRelativePath(normalized) ? `/${normalized}` : normalized;
}

function normalizeExceptionFrames(event: Sentry.ErrorEvent): void {
Expand Down
60 changes: 60 additions & 0 deletions test/script/debug-id.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,66 @@ describe("injectDebugId", () => {
expect(jsAfterSecond).toBe(jsAfterFirst);
});

test("normalizes backslashes in sourcemap sources array", async () => {
const jsPath = join(tmpDir, "bundle.js");
const mapPath = join(tmpDir, "bundle.js.map");

await writeFile(jsPath, 'console.log("hello");\n');
await writeFile(
mapPath,
JSON.stringify({
version: 3,
sources: ["src\\lib\\utils.ts", "src\\bin.ts"],
mappings: "AAAA",
})
);

await injectDebugId(jsPath, mapPath);

const mapResult = JSON.parse(await readFile(mapPath, "utf-8"));
expect(mapResult.sources).toEqual(["src/lib/utils.ts", "src/bin.ts"]);
});

test("preserves null entries in sourcemap sources array", async () => {
const jsPath = join(tmpDir, "bundle.js");
const mapPath = join(tmpDir, "bundle.js.map");

await writeFile(jsPath, 'console.log("hello");\n');
await writeFile(
mapPath,
JSON.stringify({
version: 3,
sources: [null, "src\\bin.ts", null],
mappings: "AAAA",
})
);

await injectDebugId(jsPath, mapPath);

const mapResult = JSON.parse(await readFile(mapPath, "utf-8"));
expect(mapResult.sources).toEqual([null, "src/bin.ts", null]);
});

test("preserves forward-slash sources unchanged", async () => {
const jsPath = join(tmpDir, "bundle.js");
const mapPath = join(tmpDir, "bundle.js.map");

await writeFile(jsPath, 'console.log("hello");\n');
await writeFile(
mapPath,
JSON.stringify({
version: 3,
sources: ["src/lib/utils.ts", "src/bin.ts"],
mappings: "AAAA",
})
);

await injectDebugId(jsPath, mapPath);

const mapResult = JSON.parse(await readFile(mapPath, "utf-8"));
expect(mapResult.sources).toEqual(["src/lib/utils.ts", "src/bin.ts"]);
});

test("debug ID is deterministic based on sourcemap content", async () => {
// Create two different JS files with the same sourcemap content
const jsPath1 = join(tmpDir, "a.js");
Expand Down
Loading