Skip to content

feat(deno): Stop inlining types from core #14729

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Dec 16, 2024
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
5 changes: 2 additions & 3 deletions packages/deno/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,14 @@
"build:types:bundle": "rollup -c rollup.types.config.mjs",
"build:tarball": "node ./scripts/prepack.js && npm pack ./build",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build build-types build-test coverage sentry-deno-*.tgz",
"clean": "rimraf build build-types build-test coverage node_modules/.deno sentry-deno-*.tgz",
"prefix": "yarn deno-types",
"fix": "eslint . --format stylish --fix",
"prelint": "yarn deno-types",
"lint": "eslint . --format stylish",
"install:deno": "node ./scripts/install-deno.mjs",
"pretest": "run-s deno-types test:build",
"pretest": "run-s deno-types",
"test": "run-s install:deno test:types test:unit",
"test:build": "tsc -p tsconfig.test.types.json && rollup -c rollup.test.config.mjs",
"test:types": "deno check ./build/index.mjs",
"test:unit": "deno test --allow-read --allow-run",
"test:unit:update": "deno test --allow-read --allow-write --allow-run -- --update",
Expand Down
45 changes: 0 additions & 45 deletions packages/deno/rollup.test.config.mjs

This file was deleted.

2 changes: 1 addition & 1 deletion packages/deno/rollup.types.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default defineConfig({
input: './build-types/index.d.ts',
output: [{ file: 'build/index.d.ts', format: 'es' }],
plugins: [
dts({ respectExternal: true }),
dts({ respectExternal: false }),
// The bundled types contain a declaration for the __DEBUG_BUILD__ global
// This can result in errors about duplicate global declarations so we strip it out!
{
Expand Down
8 changes: 4 additions & 4 deletions packages/deno/test/__snapshots__/mod.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,15 @@ snapshot[`captureException 1`] = `
filename: "app:///test/mod.test.ts",
function: "?",
in_app: true,
lineno: 46,
lineno: 44,
post_context: [
"",
" await delay(200);",
" await assertSnapshot(t, ev);",
"});",
"",
"Deno.test('captureMessage', async t => {",
" let ev: sentryTypes.Event | undefined;",
" let ev: Event | undefined;",
],
pre_context: [
" ev = event;",
Expand All @@ -74,7 +74,7 @@ snapshot[`captureException 1`] = `
filename: "app:///test/mod.test.ts",
function: "something",
in_app: true,
lineno: 43,
lineno: 41,
post_context: [
" }",
"",
Expand All @@ -86,7 +86,7 @@ snapshot[`captureException 1`] = `
],
pre_context: [
"Deno.test('captureException', async t => {",
" let ev: sentryTypes.Event | undefined;",
" let ev: Event | undefined;",
" const client = getTestClient(event => {",
" ev = event;",
" });",
Expand Down
4 changes: 0 additions & 4 deletions packages/deno/test/build.ts

This file was deleted.

20 changes: 9 additions & 11 deletions packages/deno/test/mod.test.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
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 type { sentryTypes } from '../build-test/index.js';
import { sentryUtils } from '../build-test/index.js';
import type { Event } from '@sentry/core';
import { createStackParser, nodeStackLineParser } from '@sentry/core';
import { DenoClient, getCurrentScope, getDefaultIntegrations } from '../build/index.mjs';

import { getNormalizedEvent } from './normalize.ts';
import { makeTestTransport } from './transport.ts';

function getTestClient(
callback: (event?: sentryTypes.Event) => void,
integrations: sentryTypes.Integration[] = [],
): DenoClient {
function getTestClient(callback: (event?: Event) => void): DenoClient {
const client = new DenoClient({
dsn: 'https://233a45e5efe34c47a3536797ce15dafa@nothing.here/5650507',
debug: true,
integrations: [...getDefaultIntegrations({}), ...integrations],
stackParser: sentryUtils.createStackParser(sentryUtils.nodeStackLineParser()),
integrations: getDefaultIntegrations({}),
stackParser: createStackParser(nodeStackLineParser()),
transport: makeTestTransport(envelope => {
callback(getNormalizedEvent(envelope));
}),
Expand All @@ -34,7 +32,7 @@ function delay(time: number): Promise<void> {
}

Deno.test('captureException', async t => {
let ev: sentryTypes.Event | undefined;
let ev: Event | undefined;
const client = getTestClient(event => {
ev = event;
});
Expand All @@ -50,7 +48,7 @@ Deno.test('captureException', async t => {
});

Deno.test('captureMessage', async t => {
let ev: sentryTypes.Event | undefined;
let ev: Event | undefined;
const client = getTestClient(event => {
ev = event;
});
Expand All @@ -62,7 +60,7 @@ Deno.test('captureMessage', async t => {
});

Deno.test('captureMessage twice', async t => {
let ev: sentryTypes.Event | undefined;
let ev: Event | undefined;
const client = getTestClient(event => {
ev = event;
});
Expand Down
26 changes: 13 additions & 13 deletions packages/deno/test/normalize.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
/* eslint-disable complexity */
import type { sentryTypes } from '../build-test/index.js';
import { sentryUtils } from '../build-test/index.js';
import type { Envelope, Event, Session } from '@sentry/core';
import { forEachEnvelopeItem } from '@sentry/core';

type EventOrSession = sentryTypes.Event | sentryTypes.Session;
type EventOrSession = Event | Session;

export function getNormalizedEvent(envelope: sentryTypes.Envelope): sentryTypes.Event | undefined {
let event: sentryTypes.Event | undefined;
export function getNormalizedEvent(envelope: Envelope): Event | undefined {
let event: Event | undefined;

sentryUtils.forEachEnvelopeItem(envelope, item => {
forEachEnvelopeItem(envelope, item => {
const [headers, body] = item;

if (headers.type === 'event') {
event = body as sentryTypes.Event;
event = body as Event;
}
});

return normalize(event) as sentryTypes.Event | undefined;
return normalize(event) as Event | undefined;
}

export function normalize(event: EventOrSession | undefined): EventOrSession | undefined {
Expand All @@ -24,14 +24,14 @@ export function normalize(event: EventOrSession | undefined): EventOrSession | u
}

if (eventIsSession(event)) {
return normalizeSession(event as sentryTypes.Session);
return normalizeSession(event as Session);
} else {
return normalizeEvent(event as sentryTypes.Event);
return normalizeEvent(event as Event);
}
}

export function eventIsSession(data: EventOrSession): boolean {
return !!(data as sentryTypes.Session)?.sid;
return !!(data as Session)?.sid;
}

/**
Expand All @@ -40,7 +40,7 @@ export function eventIsSession(data: EventOrSession): boolean {
* All properties that are timestamps, versions, ids or variables that may vary
* by platform are replaced with placeholder strings
*/
function normalizeSession(session: sentryTypes.Session): sentryTypes.Session {
function normalizeSession(session: Session): Session {
if (session.sid) {
session.sid = '{{id}}';
}
Expand All @@ -66,7 +66,7 @@ function normalizeSession(session: sentryTypes.Session): sentryTypes.Session {
* All properties that are timestamps, versions, ids or variables that may vary
* by platform are replaced with placeholder strings
*/
function normalizeEvent(event: sentryTypes.Event): sentryTypes.Event {
function normalizeEvent(event: Event): Event {
if (event.sdk?.version) {
event.sdk.version = '{{version}}';
}
Expand Down
26 changes: 15 additions & 11 deletions packages/deno/test/transport.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
import type { sentryTypes } from '../build-test/index.js';
import { sentryCore, sentryUtils } from '../build-test/index.js';
import type {
BaseTransportOptions,
Envelope,
Transport,
TransportMakeRequestResponse,
TransportRequest,
} from '@sentry/core';
import { createTransport, parseEnvelope } from '@sentry/core';

export interface TestTransportOptions extends sentryTypes.BaseTransportOptions {
callback: (envelope: sentryTypes.Envelope) => void;
export interface TestTransportOptions extends BaseTransportOptions {
callback: (envelope: Envelope) => void;
}

/**
* Creates a Transport that uses the Fetch API to send events to Sentry.
*/
export function makeTestTransport(callback: (envelope: sentryTypes.Envelope) => void) {
return (options: sentryTypes.BaseTransportOptions): sentryTypes.Transport => {
async function doCallback(
request: sentryTypes.TransportRequest,
): Promise<sentryTypes.TransportMakeRequestResponse> {
await callback(sentryUtils.parseEnvelope(request.body));
export function makeTestTransport(callback: (envelope: Envelope) => void) {
return (options: BaseTransportOptions): Transport => {
async function doCallback(request: TransportRequest): Promise<TransportMakeRequestResponse> {
await callback(parseEnvelope(request.body));

return Promise.resolve({
statusCode: 200,
});
}

return sentryCore.createTransport(options, doCallback);
return createTransport(options, doCallback);
};
}
10 changes: 0 additions & 10 deletions packages/deno/tsconfig.test.types.json

This file was deleted.

Loading