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/**' diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index 5f987b4459aa..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, @@ -89,6 +90,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'],