From fa576a4ee0b2192afaa59515912451e8a26aa4a2 Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Thu, 12 Feb 2026 14:31:50 -0500 Subject: [PATCH 1/3] feat(deno): Export metrics API from Deno SDK The metrics namespace is already exported from @sentry/core and re-exported by @sentry/node, but was missing from the Deno SDK. Co-Authored-By: Claude Opus 4.6 --- packages/deno/src/index.ts | 1 + packages/deno/test/mod.test.ts | 43 +++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index 5f987b4459aa..682d6a0e463f 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -89,6 +89,7 @@ export { updateSpanName, wrapMcpServerWithSentry, featureFlagsIntegration, + metrics, } from '@sentry/core'; export { DenoClient } from './client'; diff --git a/packages/deno/test/mod.test.ts b/packages/deno/test/mod.test.ts index 0d40945951c4..4aa570684431 100644 --- a/packages/deno/test/mod.test.ts +++ b/packages/deno/test/mod.test.ts @@ -1,8 +1,8 @@ -import type { Event } from '@sentry/core'; -import { createStackParser, nodeStackLineParser } from '@sentry/core'; +import type { Envelope, Event } from '@sentry/core'; +import { createStackParser, forEachEnvelopeItem, nodeStackLineParser } from '@sentry/core'; import { assertEquals } from 'https://deno.land/std@0.202.0/assert/assert_equals.ts'; import { assertSnapshot } from 'https://deno.land/std@0.202.0/testing/snapshot.ts'; -import { DenoClient, getCurrentScope, getDefaultIntegrations } from '../build/esm/index.js'; +import { DenoClient, getCurrentScope, getDefaultIntegrations, metrics, Scope } from '../build/esm/index.js'; import { getNormalizedEvent } from './normalize.ts'; import { makeTestTransport } from './transport.ts'; @@ -74,6 +74,43 @@ Deno.test('captureMessage twice', async t => { await assertSnapshot(t, ev); }); +Deno.test('metrics.count captures a counter metric', async () => { + const envelopes: Array = []; + const client = new DenoClient({ + dsn: 'https://233a45e5efe34c47a3536797ce15dafa@nothing.here/5650507', + integrations: getDefaultIntegrations({}), + stackParser: createStackParser(nodeStackLineParser()), + transport: makeTestTransport(envelope => { + envelopes.push(envelope); + }), + }); + + client.init(); + const scope = new Scope(); + scope.setClient(client); + + metrics.count('test.counter', 5, { scope }); + + await client.flush(2000); + + // deno-lint-ignore no-explicit-any + let metricItem: any = undefined; + for (const envelope of envelopes) { + forEachEnvelopeItem(envelope, item => { + const [headers, body] = item; + if (headers.type === 'trace_metric') { + metricItem = body; + } + }); + } + + assertEquals(metricItem !== undefined, true); + assertEquals(metricItem.items.length, 1); + assertEquals(metricItem.items[0].name, 'test.counter'); + assertEquals(metricItem.items[0].type, 'counter'); + assertEquals(metricItem.items[0].value, 5); +}); + Deno.test('App runs without errors', async _ => { const cmd = new Deno.Command('deno', { args: ['run', '--allow-net=some-domain.com', './test/example.ts'], From 5eecf049080321a7681f271684a9e40aa0a34d2e Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Fri, 13 Feb 2026 09:04:40 -0500 Subject: [PATCH 2/3] feat(deno): Export Metric type from Deno SDK Co-Authored-By: Claude Opus 4.6 --- packages/deno/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index 682d6a0e463f..6fc5df0a9ab1 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -1,6 +1,7 @@ export type { Breadcrumb, BreadcrumbHint, + Metric, PolymorphicRequest, RequestEventData, SdkInfo, From 55422a277f7916793eff971e44a5864bc7cdd462 Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Fri, 13 Feb 2026 09:45:38 -0500 Subject: [PATCH 3/3] chore(deno): Ignore deno package in codecov and gitignore deno.lock Deno tests run via Deno's native test runner, not vitest, so codecov cannot see their coverage. Adding packages/deno/** to the codecov ignore list prevents false coverage drops. Also gitignore deno.lock which is generated when running deno test. Co-Authored-By: Claude Opus 4.6 --- .gitignore | 1 + codecov.yml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index ce8be2090e76..8e48f9bff776 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,7 @@ tmp.js packages/deno/build-types packages/deno/build-test packages/deno/lib.deno.d.ts +deno.lock # gatsby packages/gatsby/gatsby-node.d.ts diff --git a/codecov.yml b/codecov.yml index fcc0885b060b..3a0292ae5d3c 100644 --- a/codecov.yml +++ b/codecov.yml @@ -14,3 +14,6 @@ coverage: patch: default: enabled: no + +ignore: + - 'packages/deno/**'