From 2c0d424ba8ba6daf23200f573275c71530395f32 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sun, 11 May 2025 23:47:51 -0300 Subject: [PATCH 01/32] Basic tracing hooks --- .../src/runtime/server/astro-component.ts | 25 ++++++---- .../runtime/server/render/astro/instance.ts | 3 ++ .../src/runtime/server/render/component.ts | 20 +++++++- packages/astro/src/runtime/server/tracing.ts | 48 +++++++++++++++++++ packages/astro/src/types/public/tracing.ts | 14 ++++++ 5 files changed, 99 insertions(+), 11 deletions(-) create mode 100644 packages/astro/src/runtime/server/tracing.ts create mode 100644 packages/astro/src/types/public/tracing.ts diff --git a/packages/astro/src/runtime/server/astro-component.ts b/packages/astro/src/runtime/server/astro-component.ts index 20649b64dcb4..61e3ace1bd41 100644 --- a/packages/astro/src/runtime/server/astro-component.ts +++ b/packages/astro/src/runtime/server/astro-component.ts @@ -1,6 +1,7 @@ import { AstroError, AstroErrorData } from '../../core/errors/index.js'; import type { PropagationHint } from '../../types/public/internal.js'; import type { AstroComponentFactory } from './render/index.js'; +import { wrapWithTracing } from './tracing.js'; function validateArgs(args: unknown[]): args is Parameters { if (args.length !== 3) return false; @@ -13,15 +14,21 @@ function baseCreateComponent( propagation?: PropagationHint, ): AstroComponentFactory { const name = moduleId?.split('/').pop()?.replace('.astro', '') ?? ''; - const fn = (...args: Parameters) => { - if (!validateArgs(args)) { - throw new AstroError({ - ...AstroErrorData.InvalidComponentArgs, - message: AstroErrorData.InvalidComponentArgs.message(name), - }); - } - return cb(...args); - }; + + const fn: AstroComponentFactory = wrapWithTracing( + 'componentFrontmatter', + (...args: Parameters) => { + if (!validateArgs(args)) { + throw new AstroError({ + ...AstroErrorData.InvalidComponentArgs, + message: AstroErrorData.InvalidComponentArgs.message(name), + }); + } + return cb(...args); + }, + { name, moduleId }, + ); + Object.defineProperty(fn, 'name', { value: name, writable: false }); // Add a flag to this callback to mark it as an Astro component fn.isAstroComponentFactory = true; diff --git a/packages/astro/src/runtime/server/render/astro/instance.ts b/packages/astro/src/runtime/server/render/astro/instance.ts index 4c603366fbd3..4f2e72e83bd7 100644 --- a/packages/astro/src/runtime/server/render/astro/instance.ts +++ b/packages/astro/src/runtime/server/render/astro/instance.ts @@ -7,6 +7,7 @@ import { renderChild } from '../any.js'; import type { RenderDestination } from '../common.js'; import { isAPropagatingComponent } from './factory.js'; import { isHeadAndContent } from './head-and-content.js'; +import { wrapWithTracing } from '../../tracing.js'; type ComponentProps = Record; @@ -31,6 +32,8 @@ export class AstroComponentInstance { this.factory = factory; this.slotValues = {}; for (const name in slots) { + // add tracing to slots functions so each call is traced individually + slots[name] = wrapWithTracing('slotRender', slots[name], { slotName: name }); // prerender the slots eagerly to make collection entries propagate styles and scripts let didRender = false; let value = slots[name](result); diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index f00234a7b756..688095bdde31 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -29,6 +29,7 @@ import { maybeRenderHead } from './head.js'; import { containsServerDirective, renderServerIsland } from './server-islands.js'; import { type ComponentSlots, renderSlotToString, renderSlots } from './slot.js'; import { formatList, internalSpreadAttributes, renderElement, voidElementNames } from './util.js'; +import { wrapWithTracing } from '../tracing.js'; const needsHeadRenderingSymbol = Symbol.for('astro.needsHeadRendering'); const rendererAliases = new Map([['solid', 'solid-js']]); @@ -457,7 +458,7 @@ function renderAstroComponent( }; } -export function renderComponent( +function innerRenderComponent( result: SSRResult, displayName: string, Component: unknown, @@ -466,7 +467,7 @@ export function renderComponent( ): RenderInstance | Promise { if (isPromise(Component)) { return Component.catch(handleCancellation).then((x) => { - return renderComponent(result, displayName, x, props, slots); + return innerRenderComponent(result, displayName, x, props, slots); }); } @@ -499,6 +500,21 @@ export function renderComponent( } } +export const renderComponent = wrapWithTracing( + 'componentRender', + innerRenderComponent, + (_, displayName, Component) => { + const moduleId = isAstroComponentFactory(Component) ? Component.moduleId : undefined; + const name = typeof Component === 'function' ? Component.name : displayName; + + return { + moduleId: moduleId, + componentName: name || displayName, + displayName: displayName, + }; + }, +); + function normalizeProps(props: Record): Record { if (props['class:list'] !== undefined) { const value = props['class:list']; diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts new file mode 100644 index 000000000000..556be075dc08 --- /dev/null +++ b/packages/astro/src/runtime/server/tracing.ts @@ -0,0 +1,48 @@ +import { EventEmitter, captureRejectionSymbol } from "node:events"; +import type { TraceEvents, TraceListener } from "../../types/public/tracing.js"; + +type EventArgs = { + [K in keyof TraceEvents]: [event: K, payload: TraceEvents[K]]; +}[keyof TraceEvents]; + +const tracingEvents = new EventEmitter<{ + before: EventArgs, + after: EventArgs, +}>({ captureRejections: true }); + +// Log errors on trace listeners to the console +tracingEvents[captureRejectionSymbol] = console.error; + +let tracingEnabled = false; + +export function onBeforeTrace(listener: TraceListener) { + tracingEnabled = true; + tracingEvents.on('before', listener); +} + +export function onAfterTrace(listener: TraceListener) { + tracingEnabled = false; + tracingEvents.on('after', listener); +} + +export function wrapWithTracing( + event: Event, + fn: (this: This, ...args: Args) => Return, + payload: TraceEvents[Event] | ((this: This, ...args: Args) => TraceEvents[Event]), +): (this: This, ...args: Args) => Return { + return function (this: This, ...args: Args): Return { + if (tracingEnabled) { + // Avoid constructing payloads and emitting events if no listeners are attached + return fn.apply(this, args); + } + + const eventArgs = [ + event, + typeof payload === 'function' ? payload.apply(this, args) : payload, + ] as EventArgs; + tracingEvents.emit('before', ...eventArgs); + const result = fn.apply(this, args); + tracingEvents.emit('after', ...eventArgs); + return result; + }; +} diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts new file mode 100644 index 000000000000..abf096fa38a3 --- /dev/null +++ b/packages/astro/src/types/public/tracing.ts @@ -0,0 +1,14 @@ +export interface TraceEvents { + componentFrontmatter: { + moduleId?: string; + name: string; + }; + componentRender: { + moduleId?: string; + componentName: string; + displayName: string; + }; + slotRender: { slotName: string; }; +} + +export type TraceListener = (event: T, payload: TraceEvents[T]) => void; From 15fe631f4fe8d7ee365f3872c31a258fd6699bbd Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Mon, 12 May 2025 14:43:53 -0300 Subject: [PATCH 02/32] Add extra trace points, data and make tracing platform independent --- packages/astro/src/core/render-context.ts | 35 ++++++++--- .../src/runtime/server/astro-component.ts | 8 ++- .../runtime/server/render/astro/instance.ts | 6 +- .../src/runtime/server/render/component.ts | 33 +++++----- packages/astro/src/runtime/server/tracing.ts | 60 +++++++++++++------ packages/astro/src/types/public/tracing.ts | 35 ++++++++++- 6 files changed, 130 insertions(+), 47 deletions(-) diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index a162b5e5a5ac..4d5791ee34f8 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -35,6 +35,7 @@ import { type Pipeline, Slots, getParams, getProps } from './render/index.js'; import { isRoute404or500, isRouteExternalRedirect, isRouteServerIsland } from './routing/match.js'; import { copyRequest, getOriginPathname, setOriginPathname } from './routing/rewrite.js'; import { AstroSession } from './session.js'; +import { wrapWithTracing } from '../runtime/server/tracing.js'; export const apiContextRoutesSymbol = Symbol.for('context.routes'); @@ -62,7 +63,7 @@ export class RenderContext { public session: AstroSession | undefined = pipeline.manifest.sessionConfig ? new AstroSession(cookies, pipeline.manifest.sessionConfig, pipeline.runtimeMode) : undefined, - ) {} + ) { } /** * A flag that tells the render content if the rewriting was triggered @@ -131,14 +132,14 @@ export class RenderContext { Object.keys(this.props).length > 0 ? this.props : await getProps({ - mod: componentInstance, - routeData: this.routeData, - routeCache: this.pipeline.routeCache, - pathname: this.pathname, - logger, - serverLike, - base: manifest.base, - }); + mod: componentInstance, + routeData: this.routeData, + routeCache: this.pipeline.routeCache, + pathname: this.pathname, + logger, + serverLike, + base: manifest.base, + }); const actionApiContext = this.createActionAPIContext(); const apiContext = this.createAPIContext(props, actionApiContext); @@ -710,3 +711,19 @@ export class RenderContext { return (this.#preferredLocaleList ??= computePreferredLocaleList(request, i18n.locales)); } } + +RenderContext.prototype.render = wrapWithTracing( + 'routeRender', + RenderContext.prototype.render, + function (this: RenderContext, component: ComponentInstance) { + return { + rootModuleId: component.default.moduleId, + request: this.request, + clientAddress: this.clientAddress, + pathname: this.pathname, + routeData: this.routeData, + url: this.url, + partial: this.partial, + }; + } +); diff --git a/packages/astro/src/runtime/server/astro-component.ts b/packages/astro/src/runtime/server/astro-component.ts index 61e3ace1bd41..7e6bd85fbc0e 100644 --- a/packages/astro/src/runtime/server/astro-component.ts +++ b/packages/astro/src/runtime/server/astro-component.ts @@ -1,5 +1,5 @@ import { AstroError, AstroErrorData } from '../../core/errors/index.js'; -import type { PropagationHint } from '../../types/public/internal.js'; +import type { PropagationHint, SSRResult } from '../../types/public/internal.js'; import type { AstroComponentFactory } from './render/index.js'; import { wrapWithTracing } from './tracing.js'; @@ -26,7 +26,11 @@ function baseCreateComponent( } return cb(...args); }, - { name, moduleId }, + (result: SSRResult) => ({ + name, moduleId, + request: result.request, + response: result.response, + }), ); Object.defineProperty(fn, 'name', { value: name, writable: false }); diff --git a/packages/astro/src/runtime/server/render/astro/instance.ts b/packages/astro/src/runtime/server/render/astro/instance.ts index 4f2e72e83bd7..3fd729bf376f 100644 --- a/packages/astro/src/runtime/server/render/astro/instance.ts +++ b/packages/astro/src/runtime/server/render/astro/instance.ts @@ -33,7 +33,11 @@ export class AstroComponentInstance { this.slotValues = {}; for (const name in slots) { // add tracing to slots functions so each call is traced individually - slots[name] = wrapWithTracing('slotRender', slots[name], { slotName: name }); + slots[name] = wrapWithTracing('slotRender', slots[name], { + slotName: name, + componentModuleId: factory.moduleId, + componentName: factory.name, + }); // prerender the slots eagerly to make collection entries propagate styles and scripts let didRender = false; let value = slots[name](result); diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index 688095bdde31..68c028cf2b8f 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -357,13 +357,12 @@ If you're still stuck, please open an issue on GitHub or join us at https://astr const template = unrenderedSlots.length > 0 ? unrenderedSlots - .map( - (key) => - ``, - ) - .join('') + .map( + (key) => + ``, + ) + .join('') : ''; island.children = `${html ?? ''}${template}`; @@ -494,25 +493,27 @@ function innerRenderComponent( function handleCancellation(e: unknown) { if (result.cancelled) return { - render() {}, + render() { }, }; throw e; } } export const renderComponent = wrapWithTracing( - 'componentRender', + 'prepareComponentRender', innerRenderComponent, - (_, displayName, Component) => { + (result, displayName, Component) => { const moduleId = isAstroComponentFactory(Component) ? Component.moduleId : undefined; const name = typeof Component === 'function' ? Component.name : displayName; - return { - moduleId: moduleId, - componentName: name || displayName, - displayName: displayName, - }; - }, + return { + moduleId: moduleId, + componentName: name || displayName, + displayName: displayName, + request: result.request, + response: result.response, + }; + }, ); function normalizeProps(props: Record): Record { diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 556be075dc08..557f8c9fc927 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -1,28 +1,46 @@ -import { EventEmitter, captureRejectionSymbol } from "node:events"; import type { TraceEvents, TraceListener } from "../../types/public/tracing.js"; type EventArgs = { [K in keyof TraceEvents]: [event: K, payload: TraceEvents[K]]; }[keyof TraceEvents]; -const tracingEvents = new EventEmitter<{ - before: EventArgs, - after: EventArgs, -}>({ captureRejections: true }); +const eventLifecycle: Record<'before' | 'after', TraceListener[]> = { + before: [], + after: [], +}; -// Log errors on trace listeners to the console -tracingEvents[captureRejectionSymbol] = console.error; +function onTrace(lifecycle: 'before' | 'after', listener: TraceListener, signal?: AbortSignal) { + const wrapped: TraceListener = (...args) => { + try { + const res: unknown = listener(...args); + // Attach an error handler to avoid unhandled promise rejections + if (res instanceof Promise) res.catch(console.error); + } catch (error) { + console.error(error); + } + }; -let tracingEnabled = false; + const listeners = eventLifecycle[lifecycle]; + listeners.push(wrapped); + if (signal) { + signal.addEventListener('abort', () => { + listeners.splice(listeners.indexOf(wrapped), 1); + }); + } +} -export function onBeforeTrace(listener: TraceListener) { - tracingEnabled = true; - tracingEvents.on('before', listener); +/** + * @experimental + */ +export function onBeforeTrace(listener: TraceListener, signal?: AbortSignal) { + onTrace('before', listener, signal); } -export function onAfterTrace(listener: TraceListener) { - tracingEnabled = false; - tracingEvents.on('after', listener); +/** + * @experimental + */ +export function onAfterTrace(listener: TraceListener, signal?: AbortSignal) { + onTrace('after', listener, signal); } export function wrapWithTracing( @@ -31,7 +49,7 @@ export function wrapWithTracing TraceEvents[Event]), ): (this: This, ...args: Args) => Return { return function (this: This, ...args: Args): Return { - if (tracingEnabled) { + if (eventLifecycle.before.length === 0 && eventLifecycle.after.length === 0) { // Avoid constructing payloads and emitting events if no listeners are attached return fn.apply(this, args); } @@ -40,9 +58,17 @@ export function wrapWithTracing(event: T, payload: TraceEvents[T]) => void; +export type EventArgs = { + [K in keyof TraceEvents]: [event: K, payload: TraceEvents[K]]; +}[keyof TraceEvents]; + +export type TraceListener = (...args: EventArgs) => void; From f7ed4da6d7b586efae0e67369b134baec933e422 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Mon, 12 May 2025 14:59:07 -0300 Subject: [PATCH 03/32] Run formatter --- packages/astro/src/core/render-context.ts | 22 +++++++++---------- .../src/runtime/server/astro-component.ts | 3 ++- .../runtime/server/render/astro/instance.ts | 2 +- .../src/runtime/server/render/component.ts | 17 +++++++------- packages/astro/src/runtime/server/tracing.ts | 2 +- packages/astro/src/types/public/tracing.ts | 6 ++--- 6 files changed, 27 insertions(+), 25 deletions(-) diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index 4d5791ee34f8..07c6c829371f 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -10,6 +10,7 @@ import { } from '../i18n/utils.js'; import { renderEndpoint } from '../runtime/server/endpoint.js'; import { renderPage } from '../runtime/server/index.js'; +import { wrapWithTracing } from '../runtime/server/tracing.js'; import type { ComponentInstance } from '../types/astro.js'; import type { MiddlewareHandler, Props, RewritePayload } from '../types/public/common.js'; import type { APIContext, AstroGlobal, AstroGlobalPartial } from '../types/public/context.js'; @@ -35,7 +36,6 @@ import { type Pipeline, Slots, getParams, getProps } from './render/index.js'; import { isRoute404or500, isRouteExternalRedirect, isRouteServerIsland } from './routing/match.js'; import { copyRequest, getOriginPathname, setOriginPathname } from './routing/rewrite.js'; import { AstroSession } from './session.js'; -import { wrapWithTracing } from '../runtime/server/tracing.js'; export const apiContextRoutesSymbol = Symbol.for('context.routes'); @@ -63,7 +63,7 @@ export class RenderContext { public session: AstroSession | undefined = pipeline.manifest.sessionConfig ? new AstroSession(cookies, pipeline.manifest.sessionConfig, pipeline.runtimeMode) : undefined, - ) { } + ) {} /** * A flag that tells the render content if the rewriting was triggered @@ -132,14 +132,14 @@ export class RenderContext { Object.keys(this.props).length > 0 ? this.props : await getProps({ - mod: componentInstance, - routeData: this.routeData, - routeCache: this.pipeline.routeCache, - pathname: this.pathname, - logger, - serverLike, - base: manifest.base, - }); + mod: componentInstance, + routeData: this.routeData, + routeCache: this.pipeline.routeCache, + pathname: this.pathname, + logger, + serverLike, + base: manifest.base, + }); const actionApiContext = this.createActionAPIContext(); const apiContext = this.createAPIContext(props, actionApiContext); @@ -725,5 +725,5 @@ RenderContext.prototype.render = wrapWithTracing( url: this.url, partial: this.partial, }; - } + }, ); diff --git a/packages/astro/src/runtime/server/astro-component.ts b/packages/astro/src/runtime/server/astro-component.ts index 7e6bd85fbc0e..929404f7f633 100644 --- a/packages/astro/src/runtime/server/astro-component.ts +++ b/packages/astro/src/runtime/server/astro-component.ts @@ -27,7 +27,8 @@ function baseCreateComponent( return cb(...args); }, (result: SSRResult) => ({ - name, moduleId, + name, + moduleId, request: result.request, response: result.response, }), diff --git a/packages/astro/src/runtime/server/render/astro/instance.ts b/packages/astro/src/runtime/server/render/astro/instance.ts index 3fd729bf376f..6fc69d2fc470 100644 --- a/packages/astro/src/runtime/server/render/astro/instance.ts +++ b/packages/astro/src/runtime/server/render/astro/instance.ts @@ -2,12 +2,12 @@ import type { ComponentSlots } from '../slot.js'; import type { AstroComponentFactory, AstroFactoryReturnValue } from './factory.js'; import type { SSRResult } from '../../../../types/public/internal.js'; +import { wrapWithTracing } from '../../tracing.js'; import { isPromise } from '../../util.js'; import { renderChild } from '../any.js'; import type { RenderDestination } from '../common.js'; import { isAPropagatingComponent } from './factory.js'; import { isHeadAndContent } from './head-and-content.js'; -import { wrapWithTracing } from '../../tracing.js'; type ComponentProps = Record; diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index 68c028cf2b8f..b513fe51828a 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -17,6 +17,7 @@ import type { SSRLoadedRenderer, SSRResult, } from '../../../types/public/internal.js'; +import { wrapWithTracing } from '../tracing.js'; import { Fragment, type RenderDestination, @@ -29,7 +30,6 @@ import { maybeRenderHead } from './head.js'; import { containsServerDirective, renderServerIsland } from './server-islands.js'; import { type ComponentSlots, renderSlotToString, renderSlots } from './slot.js'; import { formatList, internalSpreadAttributes, renderElement, voidElementNames } from './util.js'; -import { wrapWithTracing } from '../tracing.js'; const needsHeadRenderingSymbol = Symbol.for('astro.needsHeadRendering'); const rendererAliases = new Map([['solid', 'solid-js']]); @@ -357,12 +357,13 @@ If you're still stuck, please open an issue on GitHub or join us at https://astr const template = unrenderedSlots.length > 0 ? unrenderedSlots - .map( - (key) => - ``, - ) - .join('') + .map( + (key) => + ``, + ) + .join('') : ''; island.children = `${html ?? ''}${template}`; @@ -493,7 +494,7 @@ function innerRenderComponent( function handleCancellation(e: unknown) { if (result.cancelled) return { - render() { }, + render() {}, }; throw e; } diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 557f8c9fc927..ccadb39a5c6b 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -1,4 +1,4 @@ -import type { TraceEvents, TraceListener } from "../../types/public/tracing.js"; +import type { TraceEvents, TraceListener } from '../../types/public/tracing.js'; type EventArgs = { [K in keyof TraceEvents]: [event: K, payload: TraceEvents[K]]; diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts index ae2fa13772c4..ba9128a4c7eb 100644 --- a/packages/astro/src/types/public/tracing.ts +++ b/packages/astro/src/types/public/tracing.ts @@ -1,5 +1,5 @@ -import type { AstroGlobal } from "./context.js"; -import type { RouteData } from "./internal.js"; +import type { AstroGlobal } from './context.js'; +import type { RouteData } from './internal.js'; export interface TraceEvents { prepareComponentRender: { @@ -21,7 +21,7 @@ export interface TraceEvents { displayName: string; request: AstroGlobal['request']; response: AstroGlobal['response']; - }, + }; slotRender: { slotName: string; componentModuleId?: string; From 741be1e1af02f5a637e994f1d0f6d7cb9f80a91e Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Mon, 12 May 2025 15:31:02 -0300 Subject: [PATCH 04/32] Rename trace event --- packages/astro/src/runtime/server/render/component.ts | 2 +- packages/astro/src/types/public/tracing.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index b513fe51828a..6628788ea2e3 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -501,7 +501,7 @@ function innerRenderComponent( } export const renderComponent = wrapWithTracing( - 'prepareComponentRender', + 'instantiateComponent', innerRenderComponent, (result, displayName, Component) => { const moduleId = isAstroComponentFactory(Component) ? Component.moduleId : undefined; diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts index ba9128a4c7eb..e72fc6db076e 100644 --- a/packages/astro/src/types/public/tracing.ts +++ b/packages/astro/src/types/public/tracing.ts @@ -2,7 +2,7 @@ import type { AstroGlobal } from './context.js'; import type { RouteData } from './internal.js'; export interface TraceEvents { - prepareComponentRender: { + instantiateComponent: { moduleId?: string; componentName: string; displayName: string; From ebac4ec542676e7089f2f4193972e7dc6564e34d Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Mon, 21 Jul 2025 11:20:55 -0300 Subject: [PATCH 05/32] format --- .../src/runtime/server/render/component.ts | 17 +++++++++-------- pnpm-lock.yaml | 1 - 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index 8b58181054ab..2a52e2a9ecba 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -10,11 +10,11 @@ import { markHTMLString } from '../escape.js'; import { extractDirectives, generateHydrateScript } from '../hydration.js'; import { serializeProps } from '../serialize.js'; import { shorthash } from '../shorthash.js'; +import { wrapWithTracing } from '../tracing.js'; import { isPromise } from '../util.js'; import { type AstroComponentFactory, isAstroComponentFactory } from './astro/factory.js'; import { renderTemplate } from './astro/index.js'; import { createAstroComponentInstance } from './astro/instance.js'; -import { wrapWithTracing } from '../tracing.js'; import { bufferHeadContent } from './astro/render.js'; import { chunkToString, @@ -358,12 +358,13 @@ If you're still stuck, please open an issue on GitHub or join us at https://astr const template = unrenderedSlots.length > 0 ? unrenderedSlots - .map( - (key) => - ``, - ) - .join('') + .map( + (key) => + ``, + ) + .join('') : ''; island.children = `${html ?? ''}${template}`; @@ -496,7 +497,7 @@ function innerRenderComponent( function handleCancellation(e: unknown) { if (result.cancelled) return { - render() { }, + render() {}, }; throw e; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eef204b8bc9b..e7cc504c762f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11096,7 +11096,6 @@ packages: libsql@0.5.4: resolution: {integrity: sha512-GEFeWca4SDAQFxjHWJBE6GK52LEtSskiujbG3rqmmeTO9t4sfSBKIURNLLpKDDF7fb7jmTuuRkDAn9BZGITQNw==} - cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lightningcss-darwin-arm64@1.29.2: From c46fa133026cedded1f985f1ccdd8cf18a357f3e Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 1 Aug 2025 22:58:17 -0300 Subject: [PATCH 06/32] Make type future-proof --- packages/astro/src/types/public/tracing.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts index e72fc6db076e..5a5e8cf45501 100644 --- a/packages/astro/src/types/public/tracing.ts +++ b/packages/astro/src/types/public/tracing.ts @@ -36,6 +36,10 @@ export interface TraceEvents { url: URL; partial?: boolean; }; + + // Allow for events to be added in a backwards-compatible way. + // Trace listeners must handle unknown events gracefully in order to be type-safe. + [k: string]: Record; } export type EventArgs = { From 2e1caaac66ab9ebb9b9dd8e75f41617bed67d239 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 1 Aug 2025 22:58:31 -0300 Subject: [PATCH 07/32] Add hook for async operation completion --- packages/astro/src/runtime/server/tracing.ts | 53 +++++++++++++++++--- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index ccadb39a5c6b..934f5156f5fc 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -4,12 +4,15 @@ type EventArgs = { [K in keyof TraceEvents]: [event: K, payload: TraceEvents[K]]; }[keyof TraceEvents]; -const eventLifecycle: Record<'before' | 'after', TraceListener[]> = { +type OperationLifecycle = 'before' | 'onComplete' | 'after'; + +const eventLifecycle: Record = { before: [], + onComplete: [], after: [], }; -function onTrace(lifecycle: 'before' | 'after', listener: TraceListener, signal?: AbortSignal) { +function onTrace(lifecycle: OperationLifecycle, listener: TraceListener, signal?: AbortSignal) { const wrapped: TraceListener = (...args) => { try { const res: unknown = listener(...args); @@ -21,12 +24,21 @@ function onTrace(lifecycle: 'before' | 'after', listener: TraceListener, signal? }; const listeners = eventLifecycle[lifecycle]; - listeners.push(wrapped); + if (signal) { + if (signal.aborted) { + // The signal is already aborted, the listener should never be called. + // Returning early avoids both possible scenarios: + // - The `abort` event is being processed and the listener would be removed depending on a race condition. + // - The `abort` signal was already processed and the listener will never be removed, triggering after the signal is aborted. + return; + } signal.addEventListener('abort', () => { listeners.splice(listeners.indexOf(wrapped), 1); }); } + + listeners.push(wrapped); } /** @@ -36,6 +48,13 @@ export function onBeforeTrace(listener: TraceListener, signal?: AbortSignal) { onTrace('before', listener, signal); } +/** + * @experimental + */ +export function onCompleteTrace(listener: TraceListener, signal?: AbortSignal) { + onTrace('onComplete', listener, signal); +} + /** * @experimental */ @@ -49,7 +68,11 @@ export function wrapWithTracing TraceEvents[Event]), ): (this: This, ...args: Args) => Return { return function (this: This, ...args: Args): Return { - if (eventLifecycle.before.length === 0 && eventLifecycle.after.length === 0) { + if ( + eventLifecycle.before.length === 0 && + eventLifecycle.onComplete.length === 0 && + eventLifecycle.after.length === 0 + ) { // Avoid constructing payloads and emitting events if no listeners are attached return fn.apply(this, args); } @@ -63,9 +86,27 @@ export function wrapWithTracing 0) { + // Only attach a `finally` handler if there are onComplete listeners. + // This avoids unnecessary entries on the event loop when tracing implementations don't use the `onComplete` hook. + result = result.finally(() => { + // Call hook after the async operation completes + for (const listener of eventLifecycle.onComplete) { + listener(...eventArgs); + } + }) as /* Safe to cast because Promise.finally doesn't change the resolved or thrown value. */ Return; + } + } else { + // Operation was synchronous, call onComplete listeners immediately + for (const listener of eventLifecycle.onComplete) { + listener(...eventArgs); + } + } + + for (const listener of eventLifecycle.after) { listener(...eventArgs); } From 17d26db94407a49579a8b134e837ef92ca31c5f4 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sun, 3 Aug 2025 16:13:00 -0300 Subject: [PATCH 08/32] Add function for integrations to add early initialization logic --- .../src/core/build/plugins/plugin-ssr.ts | 1 + packages/astro/src/core/config/settings.ts | 1 + packages/astro/src/core/create-vite.ts | 2 ++ packages/astro/src/integrations/hooks.ts | 7 ++++++ packages/astro/src/types/astro.ts | 1 + .../astro/src/types/public/integrations.ts | 1 + .../vite-plugin-server-initialize/index.ts | 23 +++++++++++++++++++ 7 files changed, 36 insertions(+) create mode 100644 packages/astro/src/vite-plugin-server-initialize/index.ts diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts index c93e9df84528..2240a2b689ee 100644 --- a/packages/astro/src/core/build/plugins/plugin-ssr.ts +++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts @@ -166,6 +166,7 @@ function generateSSRCode(adapter: AstroAdapter, middlewareId: string) { const edgeMiddleware = adapter?.adapterFeatures?.edgeMiddleware ?? false; const imports = [ + `import 'astro:initialize';`, `import { renderers } from '${RENDERERS_MODULE_ID}';`, `import * as serverEntrypointModule from '${ADAPTER_VIRTUAL_MODULE_ID}';`, `import { manifest as defaultManifest } from '${SSR_MANIFEST_VIRTUAL_MODULE_ID}';`, diff --git a/packages/astro/src/core/config/settings.ts b/packages/astro/src/core/config/settings.ts index 07245e701577..a6447849acda 100644 --- a/packages/astro/src/core/config/settings.ts +++ b/packages/astro/src/core/config/settings.ts @@ -143,6 +143,7 @@ export function createBaseSettings(config: AstroConfig): AstroSettings { scripts: [], clientDirectives: getDefaultClientDirectives(), middlewares: { pre: [], post: [] }, + initializers: [], watchFiles: [], devToolbarApps: [], timer: new AstroTimer(), diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts index 0b23338d1325..061716f08054 100644 --- a/packages/astro/src/core/create-vite.ts +++ b/packages/astro/src/core/create-vite.ts @@ -35,6 +35,7 @@ import markdownVitePlugin from '../vite-plugin-markdown/index.js'; import astroScannerPlugin from '../vite-plugin-scanner/index.js'; import astroScriptsPlugin from '../vite-plugin-scripts/index.js'; import astroScriptsPageSSRPlugin from '../vite-plugin-scripts/page-ssr.js'; +import { vitePluginServerInitialize } from '../vite-plugin-server-initialize/index.js'; import { vitePluginSSRManifest } from '../vite-plugin-ssr-manifest/index.js'; import type { SSRManifest } from './app/types.js'; import type { Logger } from './logger/core.js'; @@ -180,6 +181,7 @@ export async function createVite( vitePluginServerIslands({ settings, logger }), astroContainer(), astroHmrReloadPlugin(), + vitePluginServerInitialize({ settings }), ], publicDir: fileURLToPath(settings.config.publicDir), root: fileURLToPath(settings.config.root), diff --git a/packages/astro/src/integrations/hooks.ts b/packages/astro/src/integrations/hooks.ts index 7e28a782d7d6..3b70dafe46d1 100644 --- a/packages/astro/src/integrations/hooks.ts +++ b/packages/astro/src/integrations/hooks.ts @@ -289,6 +289,13 @@ export async function runHookConfigSetup({ typeof entrypoint === 'string' ? entrypoint : fileURLToPath(entrypoint), ); }, + addInitializer: (entrypoint) => { + if (typeof entrypoint === 'string') { + updatedSettings.initializers.push(entrypoint); + } else { + updatedSettings.initializers.push(fileURLToPath(entrypoint)); + } + }, createCodegenDir: () => { const codegenDir = new URL(normalizeCodegenDir(integration.name), settings.dotAstroDir); fs.mkdirSync(codegenDir, { recursive: true }); diff --git a/packages/astro/src/types/astro.ts b/packages/astro/src/types/astro.ts index 890c936e86b1..ea88128ed6d6 100644 --- a/packages/astro/src/types/astro.ts +++ b/packages/astro/src/types/astro.ts @@ -49,6 +49,7 @@ export interface AstroSettings { clientDirectives: Map; devToolbarApps: (DevToolbarAppEntry | string)[]; middlewares: { pre: string[]; post: string[] }; + initializers: string[]; tsConfig: TSConfig | undefined; tsConfigPath: string | undefined; watchFiles: string[]; diff --git a/packages/astro/src/types/public/integrations.ts b/packages/astro/src/types/public/integrations.ts index da08c0bd913f..0ad6011bb71c 100644 --- a/packages/astro/src/types/public/integrations.ts +++ b/packages/astro/src/types/public/integrations.ts @@ -188,6 +188,7 @@ export interface BaseIntegrationHooks { addClientDirective: (directive: ClientDirectiveConfig) => void; addDevToolbarApp: (entrypoint: DevToolbarAppEntry) => void; addMiddleware: (mid: AstroIntegrationMiddleware) => void; + addInitializer: (entrypoint: string | URL) => void; createCodegenDir: () => URL; logger: AstroIntegrationLogger; }) => void | Promise; diff --git a/packages/astro/src/vite-plugin-server-initialize/index.ts b/packages/astro/src/vite-plugin-server-initialize/index.ts new file mode 100644 index 000000000000..fcea206b405b --- /dev/null +++ b/packages/astro/src/vite-plugin-server-initialize/index.ts @@ -0,0 +1,23 @@ +import type { Plugin as VitePlugin } from 'vite'; +import type { AstroSettings } from '../types/astro.js'; + +const initializationVirtualModuleId = 'astro:initialize'; +const resolvedInitializationVirtualModuleId = '\0' + initializationVirtualModuleId; + +export function vitePluginServerInitialize({ settings }: { settings: AstroSettings }): VitePlugin { + return { + name: '@astrojs/vite-plugin-server-initialize', + resolveId(id) { + if (id === initializationVirtualModuleId) return resolvedInitializationVirtualModuleId; + }, + load(id) { + if (id !== resolvedInitializationVirtualModuleId) return; + + return settings.initializers.length === 0 + ? 'export {};' + : settings.initializers + .map((initializer) => `import ${JSON.stringify(initializer)};`) + .join('\n'); + }, + }; +} From d4e29bc4ad29d13ccad404ab0d17213a5db15195 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sun, 3 Aug 2025 16:13:27 -0300 Subject: [PATCH 09/32] Working exemple of tracing using OpenTelemetry --- examples/with-telemetry/astro.config.mjs | 20 + examples/with-telemetry/docker-compose.yml | 31 + examples/with-telemetry/otel.yaml | 40 ++ examples/with-telemetry/package.json | 20 + examples/with-telemetry/prometheus.yaml | 11 + examples/with-telemetry/public/favicon.svg | 9 + .../public/images/products/cereal.jpg | Bin 0 -> 497260 bytes .../public/images/products/muffins.jpg | Bin 0 -> 141531 bytes .../public/images/products/oats.jpg | Bin 0 -> 102566 bytes .../public/images/products/yogurt.jpg | Bin 0 -> 79431 bytes examples/with-telemetry/src/api.ts | 69 ++ .../src/components/AddToCart.svelte | 54 ++ .../with-telemetry/src/components/Cart.svelte | 34 + .../src/components/Container.astro | 13 + .../src/components/Header.astro | 49 ++ .../src/components/ProductListing.astro | 70 ++ .../src/components/TextDecorationSkip.astro | 23 + examples/with-telemetry/src/models/db.json | 28 + examples/with-telemetry/src/models/db.ts | 6 + examples/with-telemetry/src/models/session.ts | 2 + examples/with-telemetry/src/pages/api/cart.ts | 38 ++ .../with-telemetry/src/pages/api/products.ts | 5 + .../src/pages/api/products/[id].ts | 16 + examples/with-telemetry/src/pages/cart.astro | 51 ++ examples/with-telemetry/src/pages/index.astro | 33 + examples/with-telemetry/src/pages/login.astro | 58 ++ .../src/pages/login.form.async.ts | 14 + .../with-telemetry/src/pages/login.form.ts | 16 + .../src/pages/products/[id].astro | 45 ++ examples/with-telemetry/src/styles/common.css | 3 + examples/with-telemetry/tsconfig.json | 5 + packages/astro/src/core/render-context.ts | 2 +- .../src/runtime/server/render/component.ts | 35 +- packages/astro/src/runtime/server/tracing.ts | 70 +- packages/astro/src/types/public/tracing.ts | 17 +- packages/integrations/opentelemetry/README.md | 0 .../integrations/opentelemetry/package.json | 57 ++ .../integrations/opentelemetry/src/index.ts | 29 + .../opentelemetry/src/initOpentelemetry.ts | 110 ++++ .../integrations/opentelemetry/tsconfig.json | 7 + pnpm-lock.yaml | 609 +++++++++++++++++- 41 files changed, 1674 insertions(+), 25 deletions(-) create mode 100644 examples/with-telemetry/astro.config.mjs create mode 100644 examples/with-telemetry/docker-compose.yml create mode 100644 examples/with-telemetry/otel.yaml create mode 100644 examples/with-telemetry/package.json create mode 100644 examples/with-telemetry/prometheus.yaml create mode 100644 examples/with-telemetry/public/favicon.svg create mode 100644 examples/with-telemetry/public/images/products/cereal.jpg create mode 100644 examples/with-telemetry/public/images/products/muffins.jpg create mode 100644 examples/with-telemetry/public/images/products/oats.jpg create mode 100644 examples/with-telemetry/public/images/products/yogurt.jpg create mode 100644 examples/with-telemetry/src/api.ts create mode 100644 examples/with-telemetry/src/components/AddToCart.svelte create mode 100644 examples/with-telemetry/src/components/Cart.svelte create mode 100644 examples/with-telemetry/src/components/Container.astro create mode 100644 examples/with-telemetry/src/components/Header.astro create mode 100644 examples/with-telemetry/src/components/ProductListing.astro create mode 100644 examples/with-telemetry/src/components/TextDecorationSkip.astro create mode 100644 examples/with-telemetry/src/models/db.json create mode 100644 examples/with-telemetry/src/models/db.ts create mode 100644 examples/with-telemetry/src/models/session.ts create mode 100644 examples/with-telemetry/src/pages/api/cart.ts create mode 100644 examples/with-telemetry/src/pages/api/products.ts create mode 100644 examples/with-telemetry/src/pages/api/products/[id].ts create mode 100644 examples/with-telemetry/src/pages/cart.astro create mode 100644 examples/with-telemetry/src/pages/index.astro create mode 100644 examples/with-telemetry/src/pages/login.astro create mode 100644 examples/with-telemetry/src/pages/login.form.async.ts create mode 100644 examples/with-telemetry/src/pages/login.form.ts create mode 100644 examples/with-telemetry/src/pages/products/[id].astro create mode 100644 examples/with-telemetry/src/styles/common.css create mode 100644 examples/with-telemetry/tsconfig.json create mode 100644 packages/integrations/opentelemetry/README.md create mode 100644 packages/integrations/opentelemetry/package.json create mode 100644 packages/integrations/opentelemetry/src/index.ts create mode 100644 packages/integrations/opentelemetry/src/initOpentelemetry.ts create mode 100644 packages/integrations/opentelemetry/tsconfig.json diff --git a/examples/with-telemetry/astro.config.mjs b/examples/with-telemetry/astro.config.mjs new file mode 100644 index 000000000000..31f98161723d --- /dev/null +++ b/examples/with-telemetry/astro.config.mjs @@ -0,0 +1,20 @@ +// @ts-check + +import node from '@astrojs/node'; +import opentelemetry from '@astrojs/opentelemetry'; +import svelte from '@astrojs/svelte'; +import { defineConfig } from 'astro/config'; + +// https://astro.build/config +export default defineConfig({ + output: 'server', + adapter: node({ + mode: 'standalone', + }), + integrations: [svelte(), opentelemetry()], + vite: { + build: { + sourcemap: true, + }, + }, +}); diff --git a/examples/with-telemetry/docker-compose.yml b/examples/with-telemetry/docker-compose.yml new file mode 100644 index 000000000000..eec6fb2b0319 --- /dev/null +++ b/examples/with-telemetry/docker-compose.yml @@ -0,0 +1,31 @@ +volumes: + developmentData: + driver: local + driver_opts: + type: none + device: ./data/development + +services: + jaeger: + image: jaegertracing/all-in-one:1.71.0 + ports: + - '6831:6831/udp' + - '16686:16686' + + prometheus: + image: prom/prometheus + volumes: + - './prometheus.yaml:/etc/prometheus/prometheus.yml' + ports: + - '9090:9090' + + otel: + image: otel/opentelemetry-collector-contrib:0.131.0 + command: --config /config/otel.yaml + volumes: + - ./otel.yaml:/config/otel.yaml:ro + ports: + - '4317:4317' + - '4318:4318' + - '8888:8888' + - '8889:8889' diff --git a/examples/with-telemetry/otel.yaml b/examples/with-telemetry/otel.yaml new file mode 100644 index 000000000000..7085feb41b00 --- /dev/null +++ b/examples/with-telemetry/otel.yaml @@ -0,0 +1,40 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + http: + endpoint: 0.0.0.0:4318 + +processors: + batch: + +exporters: + otlp/jaeger: + endpoint: 'jaeger:4317' + tls: + insecure: true + + prometheus: + endpoint: '0.0.0.0:8889' + +service: + pipelines: + traces: + receivers: [otlp] + processors: [batch] + exporters: [otlp/jaeger] + + metrics: + receivers: [otlp] + processors: [batch] + exporters: [prometheus] + + telemetry: + metrics: + readers: + - pull: + exporter: + prometheus: + host: '0.0.0.0' + port: 8888 diff --git a/examples/with-telemetry/package.json b/examples/with-telemetry/package.json new file mode 100644 index 000000000000..da3c233632bb --- /dev/null +++ b/examples/with-telemetry/package.json @@ -0,0 +1,20 @@ +{ + "name": "@example/with-telemetry", + "type": "module", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview", + "astro": "astro", + "server": "node dist/server/entry.mjs" + }, + "dependencies": { + "@astrojs/node": "^9.3.3", + "@astrojs/opentelemetry": "0.0.1", + "@astrojs/svelte": "^7.1.0", + "astro": "^5.12.8", + "svelte": "^5.25.7" + } +} diff --git a/examples/with-telemetry/prometheus.yaml b/examples/with-telemetry/prometheus.yaml new file mode 100644 index 000000000000..1468d6d145d7 --- /dev/null +++ b/examples/with-telemetry/prometheus.yaml @@ -0,0 +1,11 @@ +global: + scrape_interval: 10s +scrape_configs: + - job_name: otel_collector + static_configs: + - targets: + - otel:8888 + - job_name: app + static_configs: + - targets: + - otel:8889 diff --git a/examples/with-telemetry/public/favicon.svg b/examples/with-telemetry/public/favicon.svg new file mode 100644 index 000000000000..f157bd1c5e28 --- /dev/null +++ b/examples/with-telemetry/public/favicon.svg @@ -0,0 +1,9 @@ + + + + diff --git a/examples/with-telemetry/public/images/products/cereal.jpg b/examples/with-telemetry/public/images/products/cereal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..35601a789c1131afb8024c7de016f52bb8e2b4b2 GIT binary patch literal 497260 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

ox)TNWifUx2_y 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

I25isXAQYbs9EVY8xI66Ei7+-SciH&)4 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 (qAO5 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%0DmWnBhwB?Da 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 D%%06H literal 0 HcmV?d00001 diff --git a/examples/with-telemetry/public/images/products/muffins.jpg b/examples/with-telemetry/public/images/products/muffins.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ced2d9a91264fb4a790fe71b5d830eff7a092cf5 GIT binary patch literal 141531 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 VxMlp!0^(#FHi^Z@neZP6|JnLe7LEV_ literal 0 HcmV?d00001 diff --git a/examples/with-telemetry/public/images/products/oats.jpg b/examples/with-telemetry/public/images/products/oats.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54ae1ebdbcd63d3a821f348747db3e7a298d70d5 GIT binary patch literal 102566 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 f-cN# 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 z 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 z zlwxd<9G>?Mw+}{{lwfQf*da~9&$Y3Zp70OuGa~y%S%1_Y_{04{#J-faUx@8^y|hAV zVo)tCEo$JGQlY43xT^iE2qi(?S^0@YXuI;tX%Kl?VMaqv4B+ttsV+(@<^*E$#)6`X z>$iZGs@YhAH3yv!Hv?4=;h{TXROHr0d_u(bEI`@=(0_2Gzli;;MbN6YkhaMCF$j+W zAxGqHTBh4l<02Zuh?&b`%oQGMhcu7OP~^R^!nfm5u7!PxfykeoNFAS{aya=K%?xro42w8T8eWRT#n$sR(7U8uk^W36=YV4ps>k)*d>u;4Th^+ZO zR$k17jR$^U=ycF6`_yG1y$n7K6IUe_SJ0ur!Bhp4$pXEDK@>9I2T&FntTOwoa~uZ) zoOZAQl}DbZS%(S{s(1Lf)xJ3#9~GHG-wa^CVmm>Z%TKoz8m~-%KWtpF8WE89VBQZv zqIqL`7fdLzmd>NpTQyiQ+Q6D0ar>~+{ITPa(F!dB2rhX-*3$8h%n8oXqJVO_zcBYyHQ`GGSlsdPz?b!H5S=Ohp`_mLx9yoV+%Xk@Dl1@QcykPx;7fFAUgP6v3;u*frmJ} zFbXQMw?<-Xe+A|)pm0}=K?^EpI6c^_FUhFx2Q35Tme2v7XUZ4EWttStRkDtL#8!X; z)U)8!0SjX}Szv;v{{WrDl1GD&VpbFbnrQZjs=lp0xXOg7_x9z1?%4*g1B%qn3q-nOJcfBCVUb`8@L&_c0KE~a?TQmN7la)W=BKLbQ5a;vcUXdo30u6Q2qUYuU{4ga#!yb+tRNK}%WyvnU8h0=u&zloA>sxLI=_^OG-uvNCvkC^nL@wMoD%!#IgJBO%Mvx+%l z^isk^RoLhyO;bD54l$SoNE{=;WtFJtSR3ZDtb10CIld!6vBJ!cJoBN7jIB` z2lo^t6^%MKMLz5>$`yTMf(Xo?{s9f5RSmOGjy`2TDGFfbjUN%cAgQ43aTrya5V!|? zQDH>4k>dDDG z&Y89aUOcYju9YPQ1aG-ovo|n$uo-z6BiZbr&Gw19POV(Id0A}(nj+c@HD~_-MUQi; zB|j{&H%Ys8$IyoC-1+iLDj>F&pN){+Xx&jnaeM>;#ecIuLCI@JM&RCQLvZ*uLL^`oZt{z_BI$77KBD=UzPwvYvFJVSjwvSg&>Wc+)p#m%dXg#1zX%JqeMz9wQ*N2 zP^*GBwKDzVfN;vubkz}EP4h7l+gK(SyEqW|fX6Nju%j}gE%k9$gE0Wya+;Kq$3*97 z^)I!UjUMR8vJIHTsjU$TQUJ2ZcQ3@*DB)w@vo8uf7Rt+)RzTv|{6}HOsba`bd_1R8 z?`zU!GD2FHym@gkr*>`Wo*PP*4KqULz=hFzoaP_qAy^PqN=_~rOGDyqehH)$6TQ2d zLMP3~y9yWx(5+=F9Yg_I#35A;Z>Ok1pyYJRRjUk{7=>EsKT$Fkju&0L-w?k@M8W515%=s^fLqK zqKo1bqmg}E&f{j8xLckc5xJv6)t8HpZ;n#6_PQV=wnCY2!4mZg<;TU8M@lfZwd<5(Wz!mfSp0~R#Nmm5iXz+|u(CA)!W`Ffe{%rCacwgTLijMAR@ zU=H^MRF2tIEXC9kV!kP#u@&%FmvCD&45_9Ygci8))S;ylH*Se@j{*SSJhGlc(K*3s ziHEq2^LQgTMln?d&3GaqQu5R@k4WPptkGd~d6)3FKv#fp%t(UC!5C_aEw=fYvgqe> zw$`Hfc1Bh}*}WQOP?#Y6QcSFqfp5I0CM%3yyl~gmcYuk+^r@7QsPk61Ix=Zs7_u7<_v>Hj)QzPmS)R& z;8(O4OANXS`w+%vX*U(-m|gxMGNXXn%R4PPz6sGD)R=gT1QWGb3(MkEig^|P0M;9+ zuH8Qo29s_>7c?iDivZsr>`!F90ts9lEU|%OXb?EXQ;)3Z!ZUP!5kAgcT z@Iy~A_eT-M4J|0jMPlr3JewdT#8G&Pmjy`QVs%iU2yz{tb~wvo0DCYHMBRbiUoecb zmEB%KQ;SaM4^Y)0(+OjHzdf>`L!V1^RW_IgT0_5bF%^lE3LIwf77cYQz7c*4x-817 zm9?d#CHbm8#27^$1+ha!cQ`cMyQtTdD4;)yW(c>&k1qZRO6s3;&9rL48^ zgs8X$7^Z=+DWlI*CbH#!*tQj9P{-YXL}j(CPH3ALN5B%W%6qc0@I1>v!bGxqRAPyA z8B(C-BPa>p{h_o|?#^s`3s__W{eTXA+6keQr*C9Azr^aHgP2As1KO#y%w-nXnMNY5 zhI|k#4^keEAp&nTEp~AV)~XdRc!NKJlvZ3<1 zVPNH~v5T0a6`KgVx-+`>B?AGHX3pV)+d?=F?j5FEZP)x_4%ux~%Cn|9b`ezvy2dwI zdlu*+UeUp8yf##KQQiyvs4wAwHQr!oE~`J8phcSsadmyz06X(w*wWVw4fI9HmFKE~mFr>Fk>7 zuAq&J$?l<|nq~sDvrEJW7lC|MRxP>;2z6Vk9YZc1vyp{Oaqz+tr}ZBk8Rp0L9tdwC z9$8YfX@Tcm)MqRdV{!G z;!qj}7lB09OXr_yXs0U7WMg1AdYN9Hg6S&D{gb_>e^kgdfwk$ccF zMNC1iVS!-Au50u~S5>XJA{%e)P(r|7=#>rJF#n{b!L9fnUcTjTj?mVbnjgKB!2LL(f zC7s1#c}MTZiO_SNrWGx%z1&MpHl1KrTH1Z>C4pw7pY_~(!nG4)yOg#A3W&cB32v6) zte2MRW2)g46#m#;!nO{`wzW~t0^iHj%LoVtaikcotyN`=6Jy1AH7Yl4bmzn>G8L9k zaLsxLGXx~T32!zlL1`L@m*t>^0yT=zz{;WW(Q%U?_WuA_1!V((#K;=372YLaH&Hh^ zj3I7y9;wk8T}+OQvXqvLV1@=IshHrJ@C*bIM4~D-y5!X1W|7t$dsIBOX+x-LQJx^C zK!BmsmM6+`Uy>zb$UnHj6tv$x#F_wbSfPk|VL3%^{B}kVQE!*XGb@}xG)nklRq(I| z=VKd)Y9WC860eDW4%w{ll!P+2`IO7fk%qzS_%R(uQS#rE!s%jJnwZ+i_prc$`T@1z ziiI6i2JZ9PvZPjDgQxnJu9Cd6!A-gdlZ8t3Ie;Cic^&RFF{{DuF?b@TX_`)_y!Hwk zY*pV3g^`wW4sZvz68`|MN*zH2p%fco&IJw>L*a(T#=mYQXOtabq5!IyLz{Yrxm3sa zHy2c?S*l#5+gqlv_QQ*gmCNxeOIXV+H2Dc_%Z0|O_xOp^R`X_JqbM&PV>&bNlsn%w z6?TE2HxNiIE6?DSj!p<31Gu(UTM6Sb+|5lSHIp2{TmzU6AquI`V2xA-xUj6bQSGEn zBU@W{#8DGDziiBsAS`0>@{O-}PIt*&K@N6kWW-4rM;pvVom@k$UuffoNY<^&&})fI zNyJ5xg01;o%Y?ENGSC&-rZu%8jzu&BTZ*!#BwimZ+7!{;YFx-71j!BjaWSFza1 zrh6aPQm@#<{ldKrLO}+@k>UQCbm-CM@WLfsWUAH5J!dhlZIf(|X9OKnm~N2XSMwf% zBBq-+6Q*oBDPv++eMWrSAdse$izWdE!nhjE_Y*Z>Up>SS(CWGB5~_jA{?=m!QF>!o zqFZWI4G5`n(WW0`-dV&7ys&)!T@wHbs@@1KAbZ?N4mi&w~XEXs(by+7I05eCy`?=T9ov5mQx0&5VW&4*lvvj)M~P>;;H znK;x0L2IsvnW7Ec5(Q}lk(gQr++Rdc=LzFNwB-40d6%oJ`$@-)mtC5|VC# z@-Rh3zhQzk4Y1qpS1dE_mh^Q91akI;r~2?fkT4!J@aWueTMwEW`C(WtO|q{6Zfch| z`G5z(7F%Y9hd$2bOj`zA4#gVS`hIO}?eTq|9Q=UQU}HqaKcVvBmw zx($1oZ8mosxB+$SHdFGHGFTe>>Jc~DYYt}1dA&UMDxhrbeTk`p-QZ0h4_a^8rJ zcH$pxUok*jd)Mk21~y^^$f~*S1kLd)ArkaIFzV>TBVJPNR{pdU@nIACaP{TZ~%tI$i~!M%E>?lSrL&@M2q=D?kJRW6(x9 zjfc!Xrd>ifa4+>56)482Oe+^4RYw@v#2uhT3%gIk1%N=cJmLFH3Y%CqjG3>cpAU|r z(N5q4oZ-4G?s)}{`Ah!I*&##>%rtNi&+R z1XVo63vTU{C}7WX1>?{>#He-+5vj^@3Yeo3nRTf^FpvC}IH_Nk#A!QvVL=s;@?i^l zxl5SZ9Xb8P6*{$OWs38G`0iYe7(Ljaz+MjrGSS!%b%QrUY}yQNG&iXLb_X>Yuvs*I zzj=P3LCvOC7i6h-x{Q@*>0JqmXOnM`dm(a%OYh7iZ05WWu5zrM5kXl|wsuK(ku6@{ z3ADRrE^7)8fH)&7>McNqP2aar^+M^&L(0Qws!Ax+yk-5&-wZ0rULH>}*NMCdTXtoM zL!)g>DLj!<-s6B1vvyn>yt$d$r#IxUCix;^3q-0Y2i*p9-1M}h!O0%oa2`+G!c zi+DI0j}>rBxnmqquqhLW&W*w0u}G2f-Y(i=R{K_**KiW z2sc&bF&x$`?c?47n<54(QU{U#unx++cm^Td8mc>$@?8>!!J+`$P4#R;MiIf(Dnr^- z<$&XC7?G5La9VL)`?BGzKy+HypyWkZeAG4?$^ufT4BB!`5IL`Zc+(gi!ubv%Zii=x z00sybVVC8LWVJ!IMxv~E!Qf+3GZa@TO06DZL6rf6mNku@z6D&?G z0R-iY;xuMo2@XMQt3$Z)2EkSAB7z%JTs(P?q#Or0WyohQZ)^b>k5;`O1lnOqO7Go) z96MEE)O%#;CDYG)f&epD6+*3;F>+0?DfgT7M(xZai;#r_~lM^v= zQc*=v0NegS8VY6YjXmmF%Y>!aO(LrwH@m>8mq%X?Sy zvc;Ue$GFiK?dDx4C#(Mekg#c`Mr&=SGiv zv6y&YiJ}5h*VyvP!+gXCwAjOy4hvQ|UXri{ZQ%12*t%X|m=@KuCh&$By{tuQ4>9m+ zlVy+03%2D9zTZA7Y&3J~ROqB*l3b6**Xj7Ux9@&8aEm#k55xD;V zO4L*sOA!1EWnf{;><*=;Ln|%r&OrYFSnYI7K&mvxquyrR zdO*9IUI?%iw7!UH)D?&72oPLeWvuAu(b46NqOfR(E7e`VXzdI^F5K6-%&U9_b8#ih zqhNqx*7p4e9&;=!023?ncs1F~ZJpRG90M8C*!Vx9Jv=wfs~p>+P=RU&PGT$=ygklU zcTBC=RK0aoU)k>%yeTlcI)>v_S77D^cDdS!9f||s?Unah6Z;jYWG72r#mR4yL~E5xf>=34L7{VcaOv@P|iUShgJdaV%9^fR0 zP=p=NBMepW>KG0w!|t&VKawy-GV7?bXq{l;A%bm>I#M_t|`dYToBj}1`r+&;O0BU{ObuYEF$h- z>69yF-vQ6DG628{>7oZv3=8?C0<$QfliuXy4$NAW1?>1GlyVht}4=!17m(j%$KuH3lklHh)xnM|}| zF%w~c^AZvBlmNs6Y}U>^Kh`WDaMtHVpg94|$d|#A?YXnk>j0gJajLWfxKXMNh?Zhe z(_2VMrAj)DOawB-Od9hMS};UDzoIX?0{8@BU#%!vfJcz|iAfr*u3o)a*b#1Gb(9)9 z9?*<4+_r%>uwcL*z=XqPl?948mYmigR<&C2L4OgzPE~y8yBG)zw$O|jgtE|<>I_R5 zbIM#itkH!6`j#n$bBTJfFoCYLz`_y7pxI|5DdDpL-@H{`;l(4Nh6Pu3$Pdy{t|YUU zLF`I|RrSaod_XIALvdMj0!~}|5m@rWO8#JrzKHD7isyo00-!a>8sCO6Di};}M*0h8 ziu^*|xr)g7;u5w*3Qj$yW)~ot2LTw`LuwaBVWosJ4gUae!R?zsi_-bR?E94@zGTmHXOu=es2D}g@N>72*Z~;bqu{VKS$`EqgT5q6*_dpD} z&8z0HAc?XG(Hy^SF0v@U1>D4ub%|~5j&oJ+I$-5y&9R(QYyu-A*~1>3r3g^`qn2^R zL(Jbdzw%_W2EW)H5-lm_E{!8t%6-6KJODKhbu1@Kc@AzB)5}0MkjDDh7AT>74?fdi zU<06|g*hUlr`e5^9S&w1DHAw`rmTwPikz=e0k<;jJP_zkWk(~qiGb>(So}i3z&8T3 zuy&NZ9ltMrV;lBI{=p6uYRijM$=MWPOm_!XL3UUtC&avEAoTzMLc7&>D25m17NS%Lv560rq&upP%R<*c*3159n?@ivVR&K!?P!33&> zTYP)EoWxD92XC}%Y7GkErhEiWp)v?To;NqILyL*1xj7Sf*lvbZI?er5}cALu-=VMSMG^#&tLKM=&-hrNhcjiZrzAC#p$ zpn$r?LdNDMRpXV_s_;4{Zt(+6t)Bcqt_q1;Rr&t_gf?jkub_k+VeB0Jr4iJ5>G*~Y zp}0QGsrsRCEr9M+>BMFN4DFDsn@%&krW(`|lotr#1fy%r7@)jB7IMh|v0COm2<6d! zdf-eUX@Sb{K>)8WLBN(+e0xeuJ%}KuYt$L(bKp3Jx^XL|v%E@%0;mYDGR1P_SzUOQ zY~Iw@s-m!qWjWFQ$|oVYqj^Wb^7~6rrfKAjs@zOZbbq7}a&PY6{eaUhgR=W1OWpPo+ ztUF9w4bA4EXvE$Ozhn%mt$9IiK4ywBj9IFWdos)-)^f4GV;tL>`$L5|KP=vzDQCpo z>eW;Nj1@N|)&|m*ce&~p0q9I2?y!zfUt_~|kbQtQ0CO?iUN=Wj(M3hO_Li8T;E^@T zsdBVn#EGX+z|=077$MwEC?AV6E#u%yueK;w22J9L%ZZOK{Dk)0L$y$RbUd*VjbrRf z8x{he@)i&PE2@SeuBOKa@2G`3+$d{^C46z^mRU6rdA~vsp>L=N5In^SHl9dW<;A;V zh*z6pX>of_BBzOh6fX?Gs-PUKUkYD5TsUUz8vFMiygDZbFT`LC1rQrwH4%J#6EN+$ zLcG}xDK5wRzLI&n}_}Q<+kt%nY9Wkr*tX zJ^;sJff1xgXc$ZRrTcdbDfW~UZ}yL771`x2lszSWWnl)=+Jdi``a%>0D{nE5dCUGp zV{U2L+?#Q+*JxMDqw{;jUj(y@zsv}i4W*#yk z==cwjj0itr5T|U8)I_#w)#aJ&*f?qAgLl1=U`#@d2|ssp_?XzcXdo5Z0SKC>(i%%wverdLSAH zzr?zv?v%`+aul&1fd?Y*6Kzd)r{*yVTPt75EM+!_4~Qj1W7vKF}LtrGPR( z;V3)1mQ#V4+NUgpST8IcO?^Ld+%mWa;f=c{4=Hv|qUw>4=*;6omdHvZZm`#E8A4G@ zmI|7IGT-O^LzZ3OJ6KW6v?QTfzA6%%&NT)0SyB>|?*rx~!g&RvJduY)x^K=pVv3=; zJRzS4Z)!P%!8{s_rJ{z@ISiOHfz~uiFj|jdgC>MK+=uFBfpDvw44`*p*~G@bEl$FwPhSt#PZRW+bZk zBOeZk3ag1>`YQ1yGBb*VhEF7<8RbM!FkIeRnuAPI8V$r`nTArX>=BB&+y!aG2V5FF z%C=;>?w_I#xgni0_Vkv6ga8xU{=pbHA_I{B0LEr-6%2?_+11J$A%Jo=lDpw9Xklt5 znwuOW13akJxe(3lOKVqgWC!w{65L<~6eH-4+n7H0jQK0hvkTynn(j2v5T3ih-1kdxkm?s z{buzylniVA5(*lp9@&|t z;60%-ir~Nz#V>){#BRE_{J@3ISRCNl3%yeS;ag$=?}>ON6SU>>!w^+qf6r(PwQ+TU z(VM_9YW0{+%CJt-ieA~T=2%)8bRh&ngPgDi(Lh)l{{T?P6A1YvG6Y##!4+YFR~Ci^ zEc_58vo9Hi)1m;OOQXTmFbbhM=#*GZ$~lZ2*ul&_LK%qY)MDH&PGtpBaVfN(inz%B8J~$RArQNT*@->8pz7HAn+~y5lA~>lw3j%W-2`# zN`o6P82Dvbpvvx8z!DHCmxz`u2JR5i7UqW7%W}rrCAnrgQFio8w=Rg%-ev*Y2G?#@ zTi3L{vP)(JTcGV>+FE6MdxvJR$CtPiGnckJy~=5L-X(U!-Lu(+jCS_BqrmeY9NUk`(BVgcZzb}?vG_+P)V|{@69wk9a z3tmXjo4WuLiI5F9FT1IXtdtNp&4$ze0Ep0<#O?{ldxk>89D%4mDNE+1&P}87a_Hd4 zg_Z?YR3`K9D}CgOLIU>vGc;9!%ZMTm$dJ=0FuhkQ5hqRm07MA2ii4O8g_|6*?t@?J z&^tLO+zY|*K?q&jrVA}Ob1g7%1cAEmyO&+;71XdnPzXQ`yI|o9al}-!H#5KS5Nv=9 zOTfXYr5c2aOE?Ama~x2Jr2hcLu$;0t2n8^47__ckoe}ND6b_yx>Wazo#Vl2@?)1dT zD(F5Fk%Q|dD*QnoJ92^(22A5*!%ddO3SWiMOy@G90K7(A1X-3vb;UeI;E5^UXsv+e z7$9={M=n)M0jY{(#HDM9IhMNP1Z>|}_eDg{^n)l2vC%I~P`nM%5@!D2g@j0Ygxa(JcUF8+swxP7lmQoT8~#who@pf*ZCi zYdJK_zJuN_??Z=`F{Pnbf!qBOtER=jp5bXi@_u8L4oF~0muA7#Ugg;kPsK3VC3li{ z3P8|hlz3pk2B^z%WFlJJt}kXaU=T`W@=8txHPy>T)t5;E?JVu?GeZHnutKTmiC>I+ zOUI$TurwyMskavGltH(AKs`hNdma(QY$s)o{_XZzF+)PaoscBO_cPKSp`A?6cvw9a ziAfHi0EJ_2rp*SttUVc9@?iq-ziQDCFUu_}c&{DIT#<=vqqhgN81o@VtJ^3P z{{YJh$19n90ATX%g%p&k%av4%R!@lUN>_@6%AQ3JMZ_vFBl92Fvs;SHXAts*Hmq3LKTck=6)Iz;R&49R}$gx8{?4XIV(a;06Dj-x`Z-Lm{hkf3X_8%LDFj+nRsVqJI`rO>kB zX<3RH+(`A5xwV)yB1s;YeS^ofvW_4;MgSntb3S^!s&cJGpX9!JWY()lBxN_)% z6hj|$0b5FgP}wt$TF)#9Y}8h@h4#SNP9i$bYlY%2w#zV6=H_VgmNuM8mvB2)b^idH zW!N#r^i9CX9j=K++cV^p#HAec61dL+(G`1`_L$<$K70r`@Tq8Qidq|jmP4L`Qb#V< zP#j4IlQ$Ts$ONNH%h-w$NaevS#fw+lFqdQ_bp;*>FpiJ`c6nv9T10Z?)HH=Cc_Lp^ z(H=>DNwrKsq2_|}R7B2zt4&2<8Pi3_yGXRNaJvbcSO|M2Sg#m=n9C%!X_g0515jtn zh+uoKn1bHgBjsCL%O_?Gv>pEk}x=b~7xr zabWnIX2Mipu?dzb>SjTSRkfLYLwroIxCU_#RxltfGe}CO6ebkZumn0^Q1yaZCOUKz z41(^i*l6$e2Gjw#6@VRB zUdtw4@Q1ntJ8E;|f+%5Fy+)bUbowBcqVv3@nrFhFa2rr=2 zT+v-jMN@CW;dx{gad*nsL?Q;@HuqU&gP5^qR=vsKf}nY06f0|dv4P~jh@R9lVL-!{ zD)C^xrdlSCD=rG&`kIMtuapCK2OO*z%rvmXvJTao9`ATe6gEf?Q!Fq#78cb9P~&{S zDJ2c%pdi(BvjUjA_kiy(O(yx4h#W@d7$8vuq{-;p1ivc*Hv-0iuQ!%e=j=qlZHrHo z%*BQ5a7!MBNo%fu1nOcSxaBeeJR_=s7BdZx8=FIy@J6Tx0td+nUk7wW4}?@#pV6x>Smk-Rlod3*7KyI zsg*47d8jaS7va=mYX#_@2l`Dkswg@o2y7ZUJi|rZ)%=pS{{Y}hS+-;YE60|1iJbWqDFDgc9WGsnnI1q5*+`i5DC> zVhW2`MosqZg7}dkU1nlZg{$C-F%Sk_5QrEj-?UBQSg_X8=vQ#CL_h3(45QWT*jJ-y&?(+@KwuN~kw8^8yG$%F? zYi(NaB|u^MjR1g2i{5yw5IPt|Va^VvPXU5bH0=?)(zO+sh}WUNENkNe05{I%R6b&g zwoYpVXWXNK5D!-jQ^A;6heQAo3v>U(045Ou0RaF40s;a90RRI50000101+WE5J6F4 zAaO8(kw8$P!EpcD00;pB0RcY{{{Zof{{X8j{xbLE{{W!!eh2 z`1kTf&odJ(g!Q)yKlf*VcEb0wdNNnJvit@Wzr=sX+X%fIbv7y9nzr4)xyQz&+_LI?3Eof&vcqAxSvQ1if5L&P7gG)47w&9F7q5#)c9!^9 z8rcGpT(O_T!??upe06@MAbmqm$5MI(mn2R%;^es3Egs-`%SPmFc3XIa1AG#0 z%kRe}iMIN;f(&>8{v{6EOdUu#Wr(`BA|eZu-rJqpmhZnD`?)Qd5aK{3nF5oA`061x z+91LL1e-f${L~{J&%q;j2}dcleK8@~96O#KZaC%_$0s(H(Ub|Wq$bJZve?AxXg=)R zO-%T`?tWl^lI!uya%VU}^L9o0wV9bY?2LP~JwU$J{eOgK{{YGf{{YTK&-qy7bME9U zp6z;^_F2u2PLl9b+%6%W?fWiFZ0Us|P9z?!SBp=LUUm2-^@4W~C5E$|M_4v}TrpPa zDes;Zv~(YU+q7@$?!o%vPkH<17ohsE(b1DV!?JD6XAFc11?~nhgyCv6+a@{|5P9Oq zW%*W4TzuQ`n-0uQ?e%5CB`w4s%WbuB=diVUd@_J!VK*Op4Uq)E_dY;#>UU)32trsK z*aV&&KudGr3*y7JI4q0HExrbP!T?@n~a$IN=^!hKtON5;GQh%Wt{GF`7l z&OD|MZ}5r%9#2iUCHpeI4*<=>Z+#o1V0R82U9+dD26J=95G}>;`jU7cyIV64>KDz4 z>INUZ%PPTfVQDhN1Hr)Tv3Q26y?tENuO!Q)PucMSY2Tp>BiMT-isnH%E(YQb?sqB+ z+{iRv>*gSg%4f$ur=u(W6S!gy6T60qm`x~zVX#xK?yx}#n-a_Ob2{t-sk7zoTxnugfjL;A07W5<{CUUG*7@onkzR z_4qmAo<*^NaDRb%kwbJx1`Ur4(b$ZOE@Uka5tA*oVm~LVBu!hC&A$-Y;1(9VYvT|W z{lV52gx2O?uL7NTqHFq3bNIsn@DUpEm~mx^O`?CRm3ePTJl!X34~rf%#}-L*YRtF8 zlI_WD+id>70TZ4BDcOkh8wdy5ewOw=3x8`@(GVRVm(-5u$6qguJY|p1oU?GWw1W99 zmV@c@mUzoscD$RHE?NjV@MrPwjPsUw=f*LGlW-ExoBQ|Yo-@E%B+C)x+?k&Y{4?;| zWrPx2Q>XG#2z;JzOPxql7uvnqYr zi0QR>+3iImpQ$66#J;Urkp~gk_woFXmGaJi4Yhq+;DRD`!DnZXDU9-R<(#}pXLokO zHhO%&iF`kali{)@Z2B#Ixgdk)dQjhkEb+_hd~V5(U@#w3t1zGa<-8Zh{!f?5dX%y8 z;kL+xE?zme!X60%0@cDa+p&&F#$=@)B;p28Ph(^mJ{A@m@bKCAq>PLn;X1eXJGQ|Q zFul)OJB@@0ga|K{v?c&Keys2W9^;P(iB|0*$KNg=1YX5_-{pk%o4V`A`(|6+wn58k z-?=AV4e=!u@nj1J-Giyrwh?`$$D=kwAV)4d+2NlCPXM;$3v-?cDD6g^4vWkjh07)Hh3gyXjU8Rh6u7@X&z}ww z%Y=M;W)|An<6;uezGi{u`5F3qY(`A$a&Qia%N&*A!z1T60cXf~;In2M<0+RW$*J!b zA6MxdAn=zS9Kv1=liQK%CB8JZY%`Uc2qGH50F7}l=lAjwL8Rrp`CFKKu$5RX7J>}* zOPe^e#`x0d2rk(tQp%35O~`x6X0u0mfE6P!^__Du<*RIL@MhSr1JqQ6JGtkdQ>i8EOt4emWa_|7~G7IONY0$)-)WD;U{AaI)v z+>|@tjIe&WvWK=#Vc=ZJ>Mq^sCVj>4Qkii5{u?hg`Fw5{2t$Rpg>d+~@dh&U2NTRN z5Vm0sCjh>STTbl5dHgdO6VK|z8oi_*L)W5*}ebG4K`xSD>B<{d;bUKeM|W znE~T=zx@_q8aefBr*e+^as?w+p+`ki&LA_xIpkq|!QBWTSl<0jF~%gEr*H1rEQq>b^S8?R%yS;C55s zCU_nmNrRh(vtJGmBY%MK-*&(o(inE#c3~Y`M>Av4>9SpqY3B(qmM4N^2*925>9E|i z`kd-x!WjciBL4uAIPu=>cMm>0uvrObm?A(9*l>AC;J(qqse_jD;PvsIA14;ubLENV-vzv0 zp>2jyaSz?ej0L4&S25otI{Kn5nkg{s1p#j^Shk9^~-?T7SSocqLx*usm=f*UymWsnj&yPLgOG{(_S5xl_SKoV{{UDP%IhL#uMa`<6KcZjZ>ga} z@#;+LH>mm&WV;a`duIX|UZGgUy|(`VrYFH9`AoJ9vK%?_cuf9D(i+Zda&(-dWjR)TuK+; z#Gg(PzivKacQgE;vwV;mbwG3{aKF0-#?f`w*q2stW|zK}F=`OcmB5o-yV;XE+io{z zu(N`n;svo3!GYzsSYplhG&6^{tl&w;9;|{0usU|&b`#V?vFLKkZjr*cUM5?QlL9h+ zc+MUN%L6+Y1E5`>Wap?~4cDX!b#{8>?aMHT2VF>5W8sJRq8tydib&$ILIL{VfkO*QJl2`d|KpGvxmOa{LR+;(Cm2V$wWyA4^SwV}?YZ zWuH(1nw{kza!4L;Wo6*wFRVUTAA1;(TQTXMI@`B)z>@04_{rs=SIY5+Cx}9H<$T0=FL-xoT5EaY>{_0iOT>-_cVY8?yJ>~d;rA@m zZ1H3KF89j7WAg|rZrGj)CE%fLq;`iy@Ij0Rc1)pmJ#tlpxd^qsc)S;Az$~(O1gFKV zt+v}7c|iXFah(s*!3^y9w!`})8}8kg&lPu$`j?ZA!tU!lLzlVZCr}b>5NYl3OuM$p zEVU*C3*ctBt88>92KkZ|*QQ427IYoopHL>eA@qfCFD6pk{dQYD@x6J4u=$Vlri%DX z8N$n}!nJ`sX(!ZpfF+HdEvDN3tDd(LT$y_u2+k zg$xrehXR}L;>5RtV)%_4WAMp>lY@G_T}9w=_v+PlEw%A~sB?Sj=viWC4$PA_AGdZ^ z$}9lvKF01cAw@tLo4!5)H!2!`Mo9E_XTa>t$A@pxYnPVJ*}6IIAOK;*d^f%@ch^26 zUJRZhe@HqR<{s}p+ZHBT@It`(ctcnuoxET$qVRl|zsmH^&(Jpi0HGY94j;A42~L;l zN41?A>(0tM_QQ4d#2GgPKo&7)3)3DM`MUH#+4sQxLkQ|dUcp^#vfB$FV%t65VhApz zrotHu=9cbu_a|+e$EQOT_8w)w175`4KVV*(k;A_Gh7bec7ChOb04z9AkW3GFiQ z9xlSpI{4uq5Nu?!NoC-N$ph_)evy>fh%v4cuczW)Glp+E;`+5Z3ti=VW7 zt#55<@qu=J{0GZD&ksao08R$P89Ly>s93J;IEL^--(+vhr>j?uh5~PBUhh&{y%7y8 zqt(%Ekda25h~B;@S+VeU{{Ut|;g8%h{{Z?38>Y*AFLo!7DOYTe*dBN8+j!f5Cf$eS zaFccHMriSaF6Cuykb$r`EO%#jiFg@n9K0=m0k+$1w)3*AelGjgFnYS9?~I<+bjKs? zGG_`-IWNElLwpuJuxA4Wt9aLqx1BBINqW2y$M)q8FwQx z(P_X308i5L!)EwWQ^ZHth%bB)a2~7?@UUN^8wTi_v-X+1C|mV*^8sWLzMHeYHc4%z zy>A;ZV_lEZd@c0EX)9tZCXCw~_(VA4%%j$3**99|fmRl0yr!;Su34`Et*xbsTqlz2(%{ z&7UL@)r%PQwx3r?ZSR93%OxRC*5LCQ0aLDVoH85<@E-T5!!h+4+ATr@w0;qFPr#=i z2OH~xtu0a5u-(TFhi*ymHhs(!j9C<7n*Q5coSCv61cVN)37<^JyY&3R z%7P+!wh-eG9YKnWxN?}^6UsE$$e886V?{x)pP@a1Jv%p{b)EFBP3GM|q z4+p_?8PPI37K!wXQv&zfPTTgvUxz)pEn{YnunRvJOFSE9OJFgAc z$YM`{59TXJGw>>KLG&Vp#WOdygX-CemWhqx0oOP zX;2-@P`&UY@ft4PJZ8mZOg%z*dWdxGffH5Cl~rEfzzBHDUCiqszYs%~;Ou85kGKN~ zTtRGr)rr%6ycd<9>G2Pvvc;Z^ej;M|N9PDJNQ)c}{YSOT9~Sb%xb2Ij-56dr$G%{8 z?2_x$?6PmGsY`seSlK66W|Q3Om<@pWEYAcVh&kL?9%M8g%suVqpGIPfWEL94{$3BV za2~~mhCWB*>hpqqe%>Wxj{L=djWInSp5A2t07*guZylt&aJ9n^z>?mey;!=)j@JnH zKWaSK$c831+ZE4!%IB#F_CtA_v(nj!93h`qY?|Hg$J`YxLx<)guALblJ$kVnmAylU z4;;#|c@?m;g(r^(ED&(49*;8Z_`@Keyxl>&m+TG;53(@ChZ%K=JG(>w0D9`ij8Z$B zuQ~dR96CGs`z^13>QnUQO{dFrop*cgz->4%ZJ4qV^>*Y5*!>r_ziBQBiMk2jE})E@ z24s4?n{1O{#yAE=kQ=D$*7--`VE_;Jmg{9uJ9k?m9Rx2j+ikX9L_;363H^2I3iST~ z0uf<96E|92&{+|{K?Fg2;6R5)9zDwF+Kg}dMm))$j?V{+e+A%eBK0hx^KIJ~yg!Qq zI(2#sPjHYy2R^tPCQG9d-=UAsrZd_e^V9@BrK8uGeKR!c@m@Vjls6~Ko@1;XLmW8R zh%VFiV&Gr+9Ug1^X$$PeVI^~fQEVKAG_=tP8cY^C}CE@&+lgxRSd=nps|JiMY BWd;BM literal 0 HcmV?d00001 diff --git a/examples/with-telemetry/src/api.ts b/examples/with-telemetry/src/api.ts new file mode 100644 index 000000000000..3b87e8361615 --- /dev/null +++ b/examples/with-telemetry/src/api.ts @@ -0,0 +1,69 @@ +export interface Product { + id: number; + name: string; + price: number; + image: string; +} + +interface User { + id: number; +} + +interface Cart { + items: Array<{ + id: number; + name: string; + count: number; + }>; +} + +async function getJson(incomingReq: Request, endpoint: string): Promise { + const origin = new URL(incomingReq.url).origin; + try { + const response = await fetch(`${origin}${endpoint}`, { + credentials: 'same-origin', + headers: incomingReq.headers, + }); + if (!response.ok) { + throw new Error(`GET ${endpoint} failed: ${response.statusText}`); + } + return response.json() as Promise; + } catch (error) { + if (error instanceof DOMException || error instanceof TypeError) { + throw new Error(`GET ${endpoint} failed: ${error.message}`); + } + throw error; + } +} + +export async function getProducts(incomingReq: Request): Promise { + return getJson(incomingReq, '/api/products'); +} + +export async function getProduct(incomingReq: Request, id: number): Promise { + return getJson(incomingReq, `/api/products/${id}`); +} + +export async function getUser(incomingReq: Request): Promise { + return getJson(incomingReq, `/api/user`); +} + +export async function getCart(incomingReq: Request): Promise { + return getJson(incomingReq, `/api/cart`); +} + +export async function addToUserCart(id: number | string, name: string): Promise { + await fetch(`${location.origin}/api/cart`, { + credentials: 'same-origin', + method: 'POST', + mode: 'no-cors', + headers: { + 'Content-Type': 'application/json', + Cache: 'no-cache', + }, + body: JSON.stringify({ + id, + name, + }), + }); +} diff --git a/examples/with-telemetry/src/components/AddToCart.svelte b/examples/with-telemetry/src/components/AddToCart.svelte new file mode 100644 index 000000000000..9e6c8ba866e8 --- /dev/null +++ b/examples/with-telemetry/src/components/AddToCart.svelte @@ -0,0 +1,54 @@ + + + diff --git a/examples/with-telemetry/src/components/Cart.svelte b/examples/with-telemetry/src/components/Cart.svelte new file mode 100644 index 000000000000..5d4b7d2510c1 --- /dev/null +++ b/examples/with-telemetry/src/components/Cart.svelte @@ -0,0 +1,34 @@ + + + + + shopping_cart + {count} + diff --git a/examples/with-telemetry/src/components/Container.astro b/examples/with-telemetry/src/components/Container.astro new file mode 100644 index 000000000000..f1741156cce6 --- /dev/null +++ b/examples/with-telemetry/src/components/Container.astro @@ -0,0 +1,13 @@ +--- +const { tag = 'div' } = Astro.props; +const Tag = tag; +--- + + + diff --git a/examples/with-telemetry/src/components/Header.astro b/examples/with-telemetry/src/components/Header.astro new file mode 100644 index 000000000000..624a3b42ef2e --- /dev/null +++ b/examples/with-telemetry/src/components/Header.astro @@ -0,0 +1,49 @@ +--- +import { getCart } from '../api'; +import Cart from './Cart.svelte'; +import TextDecorationSkip from './TextDecorationSkip.astro'; + +const cart = await getCart(Astro.request); +const cartCount = cart.items.reduce((sum, item) => sum + item.count, 0); +--- + + + +

+

+ +
diff --git a/examples/with-telemetry/src/components/ProductListing.astro b/examples/with-telemetry/src/components/ProductListing.astro new file mode 100644 index 000000000000..14e6e1d8ca60 --- /dev/null +++ b/examples/with-telemetry/src/components/ProductListing.astro @@ -0,0 +1,70 @@ +--- +import type { Product } from '../api'; + +interface Props { + products: Product[]; +} + +const { products } = Astro.props; +--- + + + + diff --git a/examples/with-telemetry/src/components/TextDecorationSkip.astro b/examples/with-telemetry/src/components/TextDecorationSkip.astro new file mode 100644 index 000000000000..707027763167 --- /dev/null +++ b/examples/with-telemetry/src/components/TextDecorationSkip.astro @@ -0,0 +1,23 @@ +--- +interface Props { + text: string; +} + +const { text } = Astro.props; +const words = text.split(' '); +const last = words.length - 1; +--- + + +{ + words.map((word, i) => ( + + {word} + {i !== last && } + + )) +} diff --git a/examples/with-telemetry/src/models/db.json b/examples/with-telemetry/src/models/db.json new file mode 100644 index 000000000000..76f9e4da3432 --- /dev/null +++ b/examples/with-telemetry/src/models/db.json @@ -0,0 +1,28 @@ +{ + "products": [ + { + "id": 1, + "name": "Cereal", + "price": 3.99, + "image": "/images/products/cereal.jpg" + }, + { + "id": 2, + "name": "Yogurt", + "price": 3.97, + "image": "/images/products/yogurt.jpg" + }, + { + "id": 3, + "name": "Rolled Oats", + "price": 2.89, + "image": "/images/products/oats.jpg" + }, + { + "id": 4, + "name": "Muffins", + "price": 4.39, + "image": "/images/products/muffins.jpg" + } + ] +} diff --git a/examples/with-telemetry/src/models/db.ts b/examples/with-telemetry/src/models/db.ts new file mode 100644 index 000000000000..0ec181f9acbf --- /dev/null +++ b/examples/with-telemetry/src/models/db.ts @@ -0,0 +1,6 @@ +import db from './db.json'; + +const products = db.products; +const productMap = new Map(products.map((product) => [product.id, product])); + +export { products, productMap }; diff --git a/examples/with-telemetry/src/models/session.ts b/examples/with-telemetry/src/models/session.ts new file mode 100644 index 000000000000..16dce00b4ef3 --- /dev/null +++ b/examples/with-telemetry/src/models/session.ts @@ -0,0 +1,2 @@ +// Normally this would be in a database. +export const userCartItems = new Map(); diff --git a/examples/with-telemetry/src/pages/api/cart.ts b/examples/with-telemetry/src/pages/api/cart.ts new file mode 100644 index 000000000000..8d64ec7d84de --- /dev/null +++ b/examples/with-telemetry/src/pages/api/cart.ts @@ -0,0 +1,38 @@ +import type { APIContext } from 'astro'; +import { userCartItems } from '../../models/session'; + +export function GET({ cookies }: APIContext) { + let userId = cookies.get('user-id')?.value; + + if (!userId || !userCartItems.has(userId)) { + return Response.json({ items: [] }); + } + let items = userCartItems.get(userId); + let array = Array.from(items.values()); + + return Response.json({ items: array }); +} + +interface AddToCartItem { + id: number; + name: string; +} + +export async function POST({ cookies, request }: APIContext) { + const item: AddToCartItem = await request.json(); + + let userId = cookies.get('user-id')?.value; + + if (!userCartItems.has(userId)) { + userCartItems.set(userId, new Map()); + } + + let cart = userCartItems.get(userId); + if (cart.has(item.id)) { + cart.get(item.id).count++; + } else { + cart.set(item.id, { id: item.id, name: item.name, count: 1 }); + } + + return Response.json({ ok: true }); +} diff --git a/examples/with-telemetry/src/pages/api/products.ts b/examples/with-telemetry/src/pages/api/products.ts new file mode 100644 index 000000000000..8bf02a03dd60 --- /dev/null +++ b/examples/with-telemetry/src/pages/api/products.ts @@ -0,0 +1,5 @@ +import { products } from '../../models/db'; + +export function GET() { + return new Response(JSON.stringify(products)); +} diff --git a/examples/with-telemetry/src/pages/api/products/[id].ts b/examples/with-telemetry/src/pages/api/products/[id].ts new file mode 100644 index 000000000000..6569ebb163af --- /dev/null +++ b/examples/with-telemetry/src/pages/api/products/[id].ts @@ -0,0 +1,16 @@ +import type { APIContext } from 'astro'; +import { productMap } from '../../../models/db'; + +export function GET({ params }: APIContext) { + const id = Number(params.id); + if (productMap.has(id)) { + const product = productMap.get(id); + + return new Response(JSON.stringify(product)); + } else { + return new Response(null, { + status: 400, + statusText: 'Not found', + }); + } +} diff --git a/examples/with-telemetry/src/pages/cart.astro b/examples/with-telemetry/src/pages/cart.astro new file mode 100644 index 000000000000..81dca933648d --- /dev/null +++ b/examples/with-telemetry/src/pages/cart.astro @@ -0,0 +1,51 @@ +--- +import { getCart } from '../api'; +import Container from '../components/Container.astro'; +import Header from '../components/Header.astro'; + +if (!Astro.cookies.get('user-id')) { + return Astro.redirect('/'); +} + +// They must be logged in. + +const user = { name: 'test' }; // getUser? +const cart = await getCart(Astro.request); +--- + + + + Cart | Online Store + + + +
+ + +

Cart

+

Hi {user.name}! Here are your cart items:

+ + + + + + + + + { + cart.items.map((item) => ( + + + + + )) + } + +
ItemCount
{item.name}{item.count}
+
+ + diff --git a/examples/with-telemetry/src/pages/index.astro b/examples/with-telemetry/src/pages/index.astro new file mode 100644 index 000000000000..caef48ec1e63 --- /dev/null +++ b/examples/with-telemetry/src/pages/index.astro @@ -0,0 +1,33 @@ +--- +import { getProducts } from '../api'; +import Container from '../components/Container.astro'; +import Header from '../components/Header.astro'; +import ProductListing from '../components/ProductListing.astro'; +import '../styles/common.css'; + +const products = await getProducts(Astro.request); +--- + + + + Online Store + + + +
+ + + +

Product Listing

+
+
+ + diff --git a/examples/with-telemetry/src/pages/login.astro b/examples/with-telemetry/src/pages/login.astro new file mode 100644 index 000000000000..6b909e734c76 --- /dev/null +++ b/examples/with-telemetry/src/pages/login.astro @@ -0,0 +1,58 @@ +--- +import Container from '../components/Container.astro'; +import Header from '../components/Header.astro'; +--- + + + + Online Store + + + + + +
+ + +

Login

+
+ + + + + + + +
+
+
+ + diff --git a/examples/with-telemetry/src/pages/login.form.async.ts b/examples/with-telemetry/src/pages/login.form.async.ts new file mode 100644 index 000000000000..94020d9c9b11 --- /dev/null +++ b/examples/with-telemetry/src/pages/login.form.async.ts @@ -0,0 +1,14 @@ +import type { APIContext, APIRoute } from 'astro'; + +export const POST: APIRoute = ({ cookies }: APIContext) => { + // add a new cookie + cookies.set('user-id', '1', { + path: '/', + maxAge: 2592000, + }); + + return Response.json({ + ok: true, + user: 1, + }); +}; diff --git a/examples/with-telemetry/src/pages/login.form.ts b/examples/with-telemetry/src/pages/login.form.ts new file mode 100644 index 000000000000..f3cd50db46c4 --- /dev/null +++ b/examples/with-telemetry/src/pages/login.form.ts @@ -0,0 +1,16 @@ +import type { APIContext } from 'astro'; + +export function POST({ cookies }: APIContext) { + // add a new cookie + cookies.set('user-id', '1', { + path: '/', + maxAge: 2592000, + }); + + return new Response(null, { + status: 301, + headers: { + Location: '/', + }, + }); +} diff --git a/examples/with-telemetry/src/pages/products/[id].astro b/examples/with-telemetry/src/pages/products/[id].astro new file mode 100644 index 000000000000..96fe3706e649 --- /dev/null +++ b/examples/with-telemetry/src/pages/products/[id].astro @@ -0,0 +1,45 @@ +--- +import { getProduct } from '../../api'; +import AddToCart from '../../components/AddToCart.svelte'; +import Container from '../../components/Container.astro'; +import Header from '../../components/Header.astro'; +import '../../styles/common.css'; + +const id = Number(Astro.params.id); +const product = await getProduct(Astro.request, id); +--- + + + + {product.name} | Online Store + + + +
+ + +

{product.name}

+
+ +
+ +

Description here...

+
+
+
+ + diff --git a/examples/with-telemetry/src/styles/common.css b/examples/with-telemetry/src/styles/common.css new file mode 100644 index 000000000000..9cd0c7e4d09d --- /dev/null +++ b/examples/with-telemetry/src/styles/common.css @@ -0,0 +1,3 @@ +body { + font-family: "GT America Standard", "Helvetica Neue", Helvetica, Arial, sans-serif; +} diff --git a/examples/with-telemetry/tsconfig.json b/examples/with-telemetry/tsconfig.json new file mode 100644 index 000000000000..8bf91d3bb997 --- /dev/null +++ b/examples/with-telemetry/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index 5f7df73c431a..2760d7981c91 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -832,7 +832,7 @@ RenderContext.prototype.render = wrapWithTracing( RenderContext.prototype.render, function (this: RenderContext, component: ComponentInstance) { return { - rootModuleId: component.default.moduleId, + rootModuleId: component.default?.moduleId, request: this.request, clientAddress: this.clientAddress, pathname: this.pathname, diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index 2a52e2a9ecba..f5cc639854bf 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -503,9 +503,42 @@ function innerRenderComponent( } } +function traceableRenderComponent( + result: SSRResult, + displayName: string, + Component: unknown, + props: Record, + slots: any = {}, +): RenderInstance | Promise { + const renderInstance = innerRenderComponent(result, displayName, Component, props, slots); + + const moduleId = isAstroComponentFactory(Component) ? Component.moduleId : undefined; + const name = typeof Component === 'function' ? Component.name : displayName; + + const eventPayload = { + moduleId: moduleId, + componentName: name || displayName, + displayName: displayName, + request: result.request, + response: result.response, + }; + + if (isPromise(renderInstance)) { + return renderInstance.then((instance) => { + instance.render = wrapWithTracing('componentRender', instance.render, eventPayload); + + return instance; + }); + } + + renderInstance.render = wrapWithTracing('componentRender', renderInstance.render, eventPayload); + + return renderInstance; +} + export const renderComponent = wrapWithTracing( 'instantiateComponent', - innerRenderComponent, + traceableRenderComponent, (result, displayName, Component) => { const moduleId = isAstroComponentFactory(Component) ? Component.moduleId : undefined; const name = typeof Component === 'function' ? Component.name : displayName; diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 934f5156f5fc..98c739395e4b 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -1,8 +1,11 @@ -import type { TraceEvents, TraceListener } from '../../types/public/tracing.js'; +import type { + TraceEvent, + TraceEventsPayloads, + TraceListener, + TraceWrapListener, +} from '../../types/public/tracing.js'; -type EventArgs = { - [K in keyof TraceEvents]: [event: K, payload: TraceEvents[K]]; -}[keyof TraceEvents]; +export type { TraceEvent, TraceEventsPayloads, TraceListener, TraceWrapListener }; type OperationLifecycle = 'before' | 'onComplete' | 'after'; @@ -62,31 +65,68 @@ export function onAfterTrace(listener: TraceListener, signal?: AbortSignal) { onTrace('after', listener, signal); } -export function wrapWithTracing( +const wrapListeners: TraceWrapListener[] = []; + +export function onTraceEvent(listener: TraceWrapListener, signal?: AbortSignal) { + if (signal) { + if (signal.aborted) { + // The signal is already aborted, the listener should never be called. + // Returning early avoids both possible scenarios: + // - The `abort` event is being processed and the listener would be removed depending on a race condition. + // - The `abort` signal was already processed and the listener will never be removed, triggering after the signal is aborted. + return; + } + signal.addEventListener('abort', () => { + wrapListeners.splice(wrapListeners.indexOf(listener), 1); + }); + } + + wrapListeners.push(listener); +} + +function wrapCall(event: TraceEvent, fn: () => T, index = 0): T { + if (index >= wrapListeners.length) { + return fn(); + } + + const listener = wrapListeners[index]; + return listener(event, () => wrapCall(event, fn, index + 1)); +} + +export function wrapWithTracing< + This, + Args extends any[], + Return, + Event extends keyof TraceEventsPayloads, +>( event: Event, fn: (this: This, ...args: Args) => Return, - payload: TraceEvents[Event] | ((this: This, ...args: Args) => TraceEvents[Event]), + payload: TraceEventsPayloads[Event] | ((this: This, ...args: Args) => TraceEventsPayloads[Event]), ): (this: This, ...args: Args) => Return { return function (this: This, ...args: Args): Return { if ( eventLifecycle.before.length === 0 && eventLifecycle.onComplete.length === 0 && - eventLifecycle.after.length === 0 + eventLifecycle.after.length === 0 && + wrapListeners.length === 0 ) { // Avoid constructing payloads and emitting events if no listeners are attached return fn.apply(this, args); } - const eventArgs = [ + const eventArgs = { event, - typeof payload === 'function' ? payload.apply(this, args) : payload, - ] as EventArgs; + payload: typeof payload === 'function' ? payload.apply(this, args) : payload, + } as TraceEvent; for (const listener of eventLifecycle.before) { - listener(...eventArgs); + listener(eventArgs); } - let result = fn.apply(this, args); + let result = + wrapListeners.length === 0 + ? fn.apply(this, args) + : wrapCall(eventArgs, () => fn.apply(this, args)); if (result instanceof Promise) { if (eventLifecycle.onComplete.length > 0) { @@ -95,19 +135,19 @@ export function wrapWithTracing { // Call hook after the async operation completes for (const listener of eventLifecycle.onComplete) { - listener(...eventArgs); + listener(eventArgs); } }) as /* Safe to cast because Promise.finally doesn't change the resolved or thrown value. */ Return; } } else { // Operation was synchronous, call onComplete listeners immediately for (const listener of eventLifecycle.onComplete) { - listener(...eventArgs); + listener(eventArgs); } } for (const listener of eventLifecycle.after) { - listener(...eventArgs); + listener(eventArgs); } return result; diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts index 5a5e8cf45501..58b210f7b2ac 100644 --- a/packages/astro/src/types/public/tracing.ts +++ b/packages/astro/src/types/public/tracing.ts @@ -1,7 +1,7 @@ import type { AstroGlobal } from './context.js'; import type { RouteData } from './internal.js'; -export interface TraceEvents { +export interface TraceEventsPayloads { instantiateComponent: { moduleId?: string; componentName: string; @@ -39,11 +39,16 @@ export interface TraceEvents { // Allow for events to be added in a backwards-compatible way. // Trace listeners must handle unknown events gracefully in order to be type-safe. - [k: string]: Record; + // TODO: Think of something that allows forward compatibility without losing type safety. + // [k: string]: Record; } -export type EventArgs = { - [K in keyof TraceEvents]: [event: K, payload: TraceEvents[K]]; -}[keyof TraceEvents]; +export type TraceEvent = { + [K in keyof TraceEventsPayloads]: { + event: K; + payload: TraceEventsPayloads[K]; + }; +}[keyof TraceEventsPayloads]; -export type TraceListener = (...args: EventArgs) => void; +export type TraceListener = (event: TraceEvent) => void; +export type TraceWrapListener = (event: TraceEvent, callback: () => T) => T; diff --git a/packages/integrations/opentelemetry/README.md b/packages/integrations/opentelemetry/README.md new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/integrations/opentelemetry/package.json b/packages/integrations/opentelemetry/package.json new file mode 100644 index 000000000000..cff6dc2af30f --- /dev/null +++ b/packages/integrations/opentelemetry/package.json @@ -0,0 +1,57 @@ +{ + "name": "@astrojs/opentelemetry", + "description": "Integration to export telemetry from an Astro site to OpenTelemetry.", + "version": "0.0.1", + "type": "module", + "types": "./dist/index.d.ts", + "author": "withastro", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/withastro/astro.git", + "directory": "packages/integrations/opentelemetry" + }, + "keywords": [ + "astro-integration", + "astro-component", + "observability", + "opentelemetry", + "telemetry", + "metrics" + ], + "bugs": "https://github.com/withastro/astro/issues", + "homepage": "https://docs.astro.build/en/guides/integrations-guide/opentelemetry/", + "exports": { + ".": "./dist/index.js", + "./initOpentelemetry": "./dist/initOpentelemetry.js", + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "astro-scripts build \"src/**/*.ts\" && tsc", + "build:ci": "astro-scripts build \"src/**/*.ts\"", + "dev": "astro-scripts dev \"src/**/*.ts\"" + }, + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.203.0", + "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/context-async-hooks": "^2.0.1", + "@opentelemetry/sdk-node": "^0.203.0" + }, + "devDependencies": { + "astro": "workspace:*", + "astro-scripts": "workspace:*" + }, + "peerDependencies": { + "astro": "*" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "publishConfig": { + "provenance": true + } +} diff --git a/packages/integrations/opentelemetry/src/index.ts b/packages/integrations/opentelemetry/src/index.ts new file mode 100644 index 000000000000..4a84907bf259 --- /dev/null +++ b/packages/integrations/opentelemetry/src/index.ts @@ -0,0 +1,29 @@ +import type { AstroIntegration } from 'astro'; + +export default function openTelemetry(): AstroIntegration { + return { + name: '@astrojs/opentelemetry', + hooks: { + 'astro:config:setup': ({ updateConfig, addInitializer }) => { + console.log('Setting up OpenTelemetry integration for Astro...'); + + updateConfig({ + vite: { + ssr: { + external: [ + '@astrojs/opentelemetry/initOpentelemetry', + 'astro', + '@opentelemetry/api', + '@opentelemetry/sdk-node', + '@opentelemetry/exporter-trace-otlp-http', + '@opentelemetry/instrumentation-http', + ], + }, + }, + }); + + addInitializer('@astrojs/opentelemetry/initOpentelemetry'); + }, + }, + }; +} diff --git a/packages/integrations/opentelemetry/src/initOpentelemetry.ts b/packages/integrations/opentelemetry/src/initOpentelemetry.ts new file mode 100644 index 000000000000..e9ce2325b7e4 --- /dev/null +++ b/packages/integrations/opentelemetry/src/initOpentelemetry.ts @@ -0,0 +1,110 @@ +import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; +import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; +import { api, NodeSDK, tracing } from '@opentelemetry/sdk-node'; +import { onTraceEvent, type TraceEvent } from 'astro/runtime/server/tracing.js'; + +// TODO: Make the types load +// @ts-ignore +// import { site } from 'astro:config/server'; + +api.diag.setLogger(new api.DiagConsoleLogger(), { + logLevel: api.DiagLogLevel.WARN, +}); + +console.log('Initializing OpenTelemetry SDK for Astro...'); + +const contextManager = new AsyncLocalStorageContextManager(); + +const sdk = new NodeSDK({ + contextManager, + autoDetectResources: true, + serviceName: 'astro', + sampler: new tracing.AlwaysOnSampler(), + instrumentations: [new HttpInstrumentation({ enabled: true })], + spanProcessors: [new tracing.SimpleSpanProcessor(new OTLPTraceExporter({}))], +}); + +// TS claims this doesn't need await, but it does. +// TODO: Link the issue later +await sdk.start(); +const tracer = api.trace.getTracer('astro'); + +function getEventAttributes(event: TraceEvent): api.Attributes { + switch (event.event) { + case 'instantiateComponent': + return { + 'astro.component.displayName': event.payload.displayName, + 'astro.component.name': event.payload.componentName, + 'astro.component.module': event.payload.moduleId, + }; + case 'componentFrontmatter': + return { + 'astro.component.name': event.payload.name, + 'astro.component.module': event.payload.moduleId, + }; + case 'componentRender': + return { + 'astro.component.displayName': event.payload.displayName, + 'astro.component.name': event.payload.componentName, + 'astro.component.module': event.payload.moduleId, + }; + case 'slotRender': + return { + 'astro.component.name': event.payload.componentName, + 'astro.component.module': event.payload.componentModuleId, + 'astro.slot.name': event.payload.slotName, + }; + case 'routeRender': + return { + 'astro.route.rootModuleId': event.payload.rootModuleId, + 'astro.route.pathname': event.payload.pathname, + 'astro.route.url': event.payload.url.toString(), + 'astro.route.pattern': event.payload.routeData.route, + 'astro.route.type': event.payload.routeData.type, + 'astro.partial': event.payload.partial, + }; + default: + return {}; + } +} + +onTraceEvent((event: TraceEvent, cb: () => T): T => { + return tracer.startActiveSpan( + event.event, + { + attributes: getEventAttributes(event), + kind: api.SpanKind.SERVER, + }, + (span): T => { + try { + const res = cb(); + if (res instanceof Promise) { + return res.finally(() => { + span.end(); + }) as T; + } + + span.setStatus({ code: api.SpanStatusCode.OK }).end(); + return res; + } catch (error) { + if (error instanceof Error) { + span.recordException({ + name: error.name, + stack: error.stack, + message: error.message, + }); + } + + span + .setStatus({ + code: api.SpanStatusCode.ERROR, + message: error instanceof Error ? error.message : String(error), + }) + .end(); + + throw error; + } + }, + ); +}); diff --git a/packages/integrations/opentelemetry/tsconfig.json b/packages/integrations/opentelemetry/tsconfig.json new file mode 100644 index 000000000000..1504b4b6dfa4 --- /dev/null +++ b/packages/integrations/opentelemetry/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "include": ["src"], + "compilerOptions": { + "outDir": "./dist" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9793c1d77a92..8c040cf1371d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -455,6 +455,24 @@ importers: specifier: ^4.1.3 version: 4.1.3 + examples/with-telemetry: + dependencies: + '@astrojs/node': + specifier: ^9.3.3 + version: link:../../packages/integrations/node + '@astrojs/opentelemetry': + specifier: 0.0.1 + version: link:../../packages/integrations/opentelemetry + '@astrojs/svelte': + specifier: ^7.1.0 + version: link:../../packages/integrations/svelte + astro: + specifier: ^5.12.8 + version: link:../../packages/astro + svelte: + specifier: ^5.25.7 + version: 5.37.1 + examples/with-vitest: dependencies: astro: @@ -4451,7 +4469,7 @@ importers: version: 1.0.2 drizzle-orm: specifier: ^0.42.0 - version: 0.42.0(@cloudflare/workers-types@4.20250507.0)(@libsql/client@0.15.2) + version: 0.42.0(@cloudflare/workers-types@4.20250507.0)(@libsql/client@0.15.2)(@opentelemetry/api@1.9.0) kleur: specifier: ^4.1.5 version: 4.1.5 @@ -5651,6 +5669,31 @@ importers: specifier: workspace:* version: link:../../../../../astro + packages/integrations/opentelemetry: + dependencies: + '@opentelemetry/api': + specifier: ^1.9.0 + version: 1.9.0 + '@opentelemetry/context-async-hooks': + specifier: ^2.0.1 + version: 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': + specifier: ^0.203.0 + version: 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': + specifier: ^0.203.0 + version: 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-node': + specifier: ^0.203.0 + version: 0.203.0(@opentelemetry/api@1.9.0) + devDependencies: + astro: + specifier: workspace:* + version: link:../../astro + astro-scripts: + specifier: workspace:* + version: link:../../../scripts + packages/integrations/partytown: dependencies: '@qwik.dev/partytown': @@ -7766,6 +7809,15 @@ packages: '@fontsource/montserrat@5.2.5': resolution: {integrity: sha512-/OA+bdg1yqUArDUnEeCqDwgTDiIpvED56TxYskje8UKpsvjl/0A9eNod7IcdHz6/Osi70vo7briRO3la8/u+5Q==} + '@grpc/grpc-js@1.13.4': + resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.15': + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + engines: {node: '>=6'} + hasBin: true + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -8163,6 +8215,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsdevtools/rehype-toc@3.0.2': resolution: {integrity: sha512-n5JEf16Wr4mdkRMZ8wMP/wN9/sHmTjRPbouXjJH371mZ2LEGDl72t8tEsMRNFerQN/QJtivOxqK1frdGa4QK5Q==} engines: {node: '>=10'} @@ -8390,6 +8445,174 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@opentelemetry/api-logs@0.203.0': + resolution: {integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/context-async-hooks@2.0.1': + resolution: {integrity: sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@2.0.1': + resolution: {integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/exporter-logs-otlp-grpc@0.203.0': + resolution: {integrity: sha512-g/2Y2noc/l96zmM+g0LdeuyYKINyBwN6FJySoU15LHPLcMN/1a0wNk2SegwKcxrRdE7Xsm7fkIR5n6XFe3QpPw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-http@0.203.0': + resolution: {integrity: sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-proto@0.203.0': + resolution: {integrity: sha512-nl/7S91MXn5R1aIzoWtMKGvqxgJgepB/sH9qW0rZvZtabnsjbf8OQ1uSx3yogtvLr0GzwD596nQKz2fV7q2RBw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-grpc@0.203.0': + resolution: {integrity: sha512-FCCj9nVZpumPQSEI57jRAA89hQQgONuoC35Lt+rayWY/mzCAc6BQT7RFyFaZKJ2B7IQ8kYjOCPsF/HGFWjdQkQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-http@0.203.0': + resolution: {integrity: sha512-HFSW10y8lY6BTZecGNpV3GpoSy7eaO0Z6GATwZasnT4bEsILp8UJXNG5OmEsz4SdwCSYvyCbTJdNbZP3/8LGCQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-proto@0.203.0': + resolution: {integrity: sha512-OZnhyd9npU7QbyuHXFEPVm3LnjZYifuKpT3kTnF84mXeEQ84pJJZgyLBpU4FSkSwUkt/zbMyNAI7y5+jYTWGIg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-prometheus@0.203.0': + resolution: {integrity: sha512-2jLuNuw5m4sUj/SncDf/mFPabUxMZmmYetx5RKIMIQyPnl6G6ooFzfeE8aXNRf8YD1ZXNlCnRPcISxjveGJHNg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-grpc@0.203.0': + resolution: {integrity: sha512-322coOTf81bm6cAA8+ML6A+m4r2xTCdmAZzGNTboPXRzhwPt4JEmovsFAs+grpdarObd68msOJ9FfH3jxM6wqA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-http@0.203.0': + resolution: {integrity: sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-proto@0.203.0': + resolution: {integrity: sha512-1xwNTJ86L0aJmWRwENCJlH4LULMG2sOXWIVw+Szta4fkqKVY50Eo4HoVKKq6U9QEytrWCr8+zjw0q/ZOeXpcAQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-zipkin@2.0.1': + resolution: {integrity: sha512-a9eeyHIipfdxzCfc2XPrE+/TI3wmrZUDFtG2RRXHSbZZULAny7SyybSvaDvS77a7iib5MPiAvluwVvbGTsHxsw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/instrumentation-http@0.203.0': + resolution: {integrity: sha512-y3uQAcCOAwnO6vEuNVocmpVzG3PER6/YZqbPbbffDdJ9te5NkHEkfSMNzlC3+v7KlE+WinPGc3N7MR30G1HY2g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation@0.203.0': + resolution: {integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-exporter-base@0.203.0': + resolution: {integrity: sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-grpc-exporter-base@0.203.0': + resolution: {integrity: sha512-te0Ze1ueJF+N/UOFl5jElJW4U0pZXQ8QklgSfJ2linHN0JJsuaHG8IabEUi2iqxY8ZBDlSiz1Trfv5JcjWWWwQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-transformer@0.203.0': + resolution: {integrity: sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/propagator-b3@2.0.1': + resolution: {integrity: sha512-Hc09CaQ8Tf5AGLmf449H726uRoBNGPBL4bjr7AnnUpzWMvhdn61F78z9qb6IqB737TffBsokGAK1XykFEZ1igw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/propagator-jaeger@2.0.1': + resolution: {integrity: sha512-7PMdPBmGVH2eQNb/AtSJizQNgeNTfh6jQFqys6lfhd6P4r+m/nTh3gKPPpaCXVdRQ+z93vfKk+4UGty390283w==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/resources@2.0.1': + resolution: {integrity: sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.203.0': + resolution: {integrity: sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-metrics@2.0.1': + resolution: {integrity: sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.9.0 <1.10.0' + + '@opentelemetry/sdk-node@0.203.0': + resolution: {integrity: sha512-zRMvrZGhGVMvAbbjiNQW3eKzW/073dlrSiAKPVWmkoQzah9wfynpVPeL55f9fVIm0GaBxTLcPeukWGy0/Wj7KQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@2.0.1': + resolution: {integrity: sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-node@2.0.1': + resolution: {integrity: sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.36.0': + resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} + engines: {node: '>=14'} + '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} @@ -8618,6 +8841,36 @@ packages: preact: ^10.4.0 vite: '>=2.0.0' + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@publint/pack@0.1.2': resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} @@ -9747,6 +10000,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -10724,6 +10980,9 @@ packages: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} + forwarded-parse@2.1.2: + resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -11039,6 +11298,9 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + import-in-the-middle@1.14.2: + resolution: {integrity: sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==} + import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -11443,6 +11705,9 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.chunk@4.2.0: resolution: {integrity: sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==} @@ -11493,6 +11758,9 @@ packages: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -11869,6 +12137,9 @@ packages: engines: {node: '>=18'} hasBin: true + module-details-from-path@1.0.4: + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -12554,6 +12825,10 @@ packages: property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + protobufjs@7.5.3: + resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} + engines: {node: '>=12.0.0'} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -12783,6 +13058,10 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + require-in-the-middle@7.5.2: + resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} + engines: {node: '>=8.6.0'} + require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -12797,6 +13076,11 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true @@ -15421,6 +15705,18 @@ snapshots: '@fontsource/montserrat@5.2.5': {} + '@grpc/grpc-js@1.13.4': + dependencies: + '@grpc/proto-loader': 0.7.15 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.15': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.3 + yargs: 17.7.2 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -15714,6 +16010,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@js-sdsl/ordered-map@4.4.2': {} + '@jsdevtools/rehype-toc@3.0.2': {} '@libsql/client@0.15.2': @@ -16244,6 +16542,243 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@opentelemetry/api-logs@0.203.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/exporter-logs-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-prometheus@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-zipkin@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/instrumentation-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + forwarded-parse: 2.1.2 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + import-in-the-middle: 1.14.2 + require-in-the-middle: 7.5.2 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/otlp-exporter-base@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-grpc-exporter-base@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-transformer@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + protobufjs: 7.5.3 + + '@opentelemetry/propagator-b3@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/propagator-jaeger@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/sdk-logs@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-node@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-prometheus': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-zipkin': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/sdk-trace-node@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/semantic-conventions@1.36.0': {} + '@oslojs/encoding@1.1.0': {} '@oxc-resolver/binding-android-arm-eabi@11.6.0': @@ -16423,6 +16958,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + '@publint/pack@0.1.2': {} '@qwik.dev/partytown@0.11.0': @@ -17685,6 +18243,8 @@ snapshots: dependencies: consola: 3.4.2 + cjs-module-lexer@1.4.3: {} + cli-boxes@3.0.0: {} cli-cursor@4.0.0: @@ -18086,10 +18646,11 @@ snapshots: dotenv@8.6.0: {} - drizzle-orm@0.42.0(@cloudflare/workers-types@4.20250507.0)(@libsql/client@0.15.2): + drizzle-orm@0.42.0(@cloudflare/workers-types@4.20250507.0)(@libsql/client@0.15.2)(@opentelemetry/api@1.9.0): optionalDependencies: '@cloudflare/workers-types': 4.20250507.0 '@libsql/client': 0.15.2 + '@opentelemetry/api': 1.9.0 dset@3.1.4: {} @@ -18685,6 +19246,8 @@ snapshots: dependencies: fetch-blob: 3.2.0 + forwarded-parse@2.1.2: {} + forwarded@0.2.0: {} fraction.js@4.3.7: {} @@ -19109,6 +19672,13 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-in-the-middle@1.14.2: + dependencies: + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + cjs-module-lexer: 1.4.3 + module-details-from-path: 1.0.4 + import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} @@ -19517,6 +20087,8 @@ snapshots: lodash-es@4.17.21: {} + lodash.camelcase@4.3.0: {} + lodash.chunk@4.2.0: {} lodash.clonedeep@4.5.0: {} @@ -19562,6 +20134,8 @@ snapshots: safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 + long@5.3.2: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -20210,6 +20784,8 @@ snapshots: ast-module-types: 6.0.1 node-source-walk: 7.0.1 + module-details-from-path@1.0.4: {} + mri@1.2.0: {} mrmime@2.0.1: {} @@ -20918,6 +21494,21 @@ snapshots: property-information@7.0.0: {} + protobufjs@7.5.3: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 18.19.120 + long: 5.3.2 + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -21260,6 +21851,14 @@ snapshots: require-from-string@2.0.2: {} + require-in-the-middle@7.5.2: + dependencies: + debug: 4.4.1 + module-details-from-path: 1.0.4 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + require-main-filename@2.0.0: {} require-package-name@2.0.1: {} @@ -21268,6 +21867,12 @@ snapshots: resolve-from@5.0.0: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: dependencies: is-core-module: 2.16.1 From cfe14a0c553ee45c87da5c37330cdb7a018c2497 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sat, 9 Aug 2025 09:02:16 -0300 Subject: [PATCH 10/32] wip changeset for CI --- .changeset/great-chairs-worry.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/great-chairs-worry.md diff --git a/.changeset/great-chairs-worry.md b/.changeset/great-chairs-worry.md new file mode 100644 index 000000000000..fbab08e17509 --- /dev/null +++ b/.changeset/great-chairs-worry.md @@ -0,0 +1,6 @@ +--- +'@astrojs/opentelemetry': minor +'astro': minor +--- + +Tracing hooks From 0cbc2d95aa88f0c79cdd747d8f6c52244339934c Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sat, 9 Aug 2025 09:14:32 -0300 Subject: [PATCH 11/32] Preview unreleased package [skip ci] --- .github/workflows/preview-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/preview-release.yml b/.github/workflows/preview-release.yml index f266998c2837..93a9292214c9 100644 --- a/.github/workflows/preview-release.yml +++ b/.github/workflows/preview-release.yml @@ -96,7 +96,7 @@ jobs: run: | packages=$(echo $AFFECTED_PACKAGES | jq -r '.[]' | tr '\n' ' ') if [ -n "$packages" ]; then - pnpm dlx pkg-pr-new publish --pnpm --compact --no-template $packages + pnpm dlx pkg-pr-new publish --pnpm --no-template $packages else echo "No affected packages to publish" fi From dc3a5f8858022d9b8692a91c485d7c7b030f6986 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sat, 9 Aug 2025 16:59:03 -0300 Subject: [PATCH 12/32] Refactor OpenTelemetry integration to be configurable and adaptable --- .../{astro.config.mjs => astro.config.mts} | 4 +- examples/with-telemetry/package.json | 2 + examples/with-telemetry/src/api.ts | 11 ++- packages/integrations/opentelemetry/env.d.ts | 21 ++++ .../integrations/opentelemetry/package.json | 24 +++-- .../integrations/opentelemetry/src/index.ts | 98 ++++++++++++++++--- .../hook-telemetry.ts} | 41 ++------ .../opentelemetry/src/initialization/node.ts | 39 ++++++++ .../opentelemetry/src/otel-reexport/api.ts | 1 + .../opentelemetry/src/otel-reexport/node.ts | 3 + .../src/otel-reexport/semantic-conventions.ts | 1 + .../opentelemetry/src/vite/otel-apis.ts | 31 ++++++ .../opentelemetry/src/vite/otel-internal.ts | 30 ++++++ .../integrations/opentelemetry/tsconfig.json | 2 +- pnpm-lock.yaml | 77 +++++++++++++-- 15 files changed, 318 insertions(+), 67 deletions(-) rename examples/with-telemetry/{astro.config.mjs => astro.config.mts} (85%) create mode 100644 packages/integrations/opentelemetry/env.d.ts rename packages/integrations/opentelemetry/src/{initOpentelemetry.ts => initialization/hook-telemetry.ts} (62%) create mode 100644 packages/integrations/opentelemetry/src/initialization/node.ts create mode 100644 packages/integrations/opentelemetry/src/otel-reexport/api.ts create mode 100644 packages/integrations/opentelemetry/src/otel-reexport/node.ts create mode 100644 packages/integrations/opentelemetry/src/otel-reexport/semantic-conventions.ts create mode 100644 packages/integrations/opentelemetry/src/vite/otel-apis.ts create mode 100644 packages/integrations/opentelemetry/src/vite/otel-internal.ts diff --git a/examples/with-telemetry/astro.config.mjs b/examples/with-telemetry/astro.config.mts similarity index 85% rename from examples/with-telemetry/astro.config.mjs rename to examples/with-telemetry/astro.config.mts index 31f98161723d..823f310c7d2d 100644 --- a/examples/with-telemetry/astro.config.mjs +++ b/examples/with-telemetry/astro.config.mts @@ -1,5 +1,3 @@ -// @ts-check - import node from '@astrojs/node'; import opentelemetry from '@astrojs/opentelemetry'; import svelte from '@astrojs/svelte'; @@ -11,7 +9,7 @@ export default defineConfig({ adapter: node({ mode: 'standalone', }), - integrations: [svelte(), opentelemetry()], + integrations: [svelte(), opentelemetry({})], vite: { build: { sourcemap: true, diff --git a/examples/with-telemetry/package.json b/examples/with-telemetry/package.json index da3c233632bb..3b323f5ba5be 100644 --- a/examples/with-telemetry/package.json +++ b/examples/with-telemetry/package.json @@ -14,6 +14,8 @@ "@astrojs/node": "^9.3.3", "@astrojs/opentelemetry": "0.0.1", "@astrojs/svelte": "^7.1.0", + "@opentelemetry/api": "^1", + "@opentelemetry/sdk-node": "^0.203.0", "astro": "^5.12.8", "svelte": "^5.25.7" } diff --git a/examples/with-telemetry/src/api.ts b/examples/with-telemetry/src/api.ts index 3b87e8361615..7ebbdcc6fd5c 100644 --- a/examples/with-telemetry/src/api.ts +++ b/examples/with-telemetry/src/api.ts @@ -1,3 +1,5 @@ +import * as api from '@opentelemetry/api'; + export interface Product { id: number; name: string; @@ -17,7 +19,13 @@ interface Cart { }>; } +const meter = api.metrics.getMeter('src/api'); + +const readCounter = meter.createCounter('api.reads'); + async function getJson(incomingReq: Request, endpoint: string): Promise { + readCounter.add(1, { endpoint }); + const origin = new URL(incomingReq.url).origin; try { const response = await fetch(`${origin}${endpoint}`, { @@ -27,12 +35,13 @@ async function getJson(incomingReq: Request, endpoint: string): Promise { if (!response.ok) { throw new Error(`GET ${endpoint} failed: ${response.statusText}`); } - return response.json() as Promise; + return await response.json() as Promise; } catch (error) { if (error instanceof DOMException || error instanceof TypeError) { throw new Error(`GET ${endpoint} failed: ${error.message}`); } throw error; + } finally { } } diff --git a/packages/integrations/opentelemetry/env.d.ts b/packages/integrations/opentelemetry/env.d.ts new file mode 100644 index 000000000000..668b5a8c50e4 --- /dev/null +++ b/packages/integrations/opentelemetry/env.d.ts @@ -0,0 +1,21 @@ +/// + +declare module 'astro:otel:api' { + import * as api from '@opentelemetry/api'; + export = api; +} + +declare module 'astro:otel:semantic-conventions' { + import * as api from '@opentelemetry/semantic-conventions'; + export = api; +} + +declare module 'astro:otel:node' { + import { HttpInstrumentation, UndiciInstrumentation, FetchInstrumentation } from './otel-reexport/node.js'; + export { HttpInstrumentation, UndiciInstrumentation, FetchInstrumentation }; +} + +declare module 'astro:otel-internal' { + import { Instrumentation } from '@opentelemetry/instrumentation'; + export const instrumentations: Instrumentation[]; +} diff --git a/packages/integrations/opentelemetry/package.json b/packages/integrations/opentelemetry/package.json index cff6dc2af30f..7926d65548ee 100644 --- a/packages/integrations/opentelemetry/package.json +++ b/packages/integrations/opentelemetry/package.json @@ -23,7 +23,7 @@ "homepage": "https://docs.astro.build/en/guides/integrations-guide/opentelemetry/", "exports": { ".": "./dist/index.js", - "./initOpentelemetry": "./dist/initOpentelemetry.js", + "./otel-reexport/*": "./dist/otel-reexport/*.js", "./package.json": "./package.json" }, "files": [ @@ -36,17 +36,29 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.203.0", + "@opentelemetry/semantic-conventions": "^1.36.0", + "@opentelemetry/instrumentation": "^0.203.0", "@opentelemetry/instrumentation-http": "^0.203.0", - "@opentelemetry/context-async-hooks": "^2.0.1", - "@opentelemetry/sdk-node": "^0.203.0" + "@opentelemetry/instrumentation-fetch": "^0.203.0", + "@opentelemetry/instrumentation-undici": "^0.14.0" }, "devDependencies": { + "@opentelemetry/sdk-node": "^0.203.0", "astro": "workspace:*", - "astro-scripts": "workspace:*" + "astro-scripts": "workspace:*", + "vite": "^6.3.4" }, "peerDependencies": { - "astro": "*" + "astro": "*", + "@opentelemetry/sdk-node": "^0.203.0" + }, + "peerDependenciesMeta": { + "astro": { + "optional": false + }, + "@opentelemetry/sdk-node": { + "optional": true + } }, "engines": { "node": "18.20.8 || ^20.3.0 || >=22.0.0" diff --git a/packages/integrations/opentelemetry/src/index.ts b/packages/integrations/opentelemetry/src/index.ts index 4a84907bf259..13af7559527b 100644 --- a/packages/integrations/opentelemetry/src/index.ts +++ b/packages/integrations/opentelemetry/src/index.ts @@ -1,28 +1,98 @@ import type { AstroIntegration } from 'astro'; +import { AstroError } from 'astro/errors'; +import { z } from 'astro/zod'; +import { fileURLToPath } from 'node:url'; +import { otelApis } from './vite/otel-apis.js'; +import { otelInternalApis } from './vite/otel-internal.js'; + +const optionsSchema = z.object({ + /** + * The OpenTelemetry API initialization module to use. + * This should be a path to a module that configures the global context, meter, tracer and logger providers. + * + * If not specified, the integration will try to determine the correct one based on the adapter. + * If set to `false`, no API initialization will be performed, only the instruments will be registered. + */ + apiInitialization: z.union([z.string(), z.literal(false)]).optional(), + + /** + * Module configuring OpenTelemetry instrumentation. + * + * This should be a path to a module that exports an array of `Instrumentation` instances from + * `@opentelemetry/instrumentation` as the default export. + * It will be loaded after the API initialization module (if any) and before the hook telemetry module. + * + * This can be used to configure library instrumentations with environment patching. + */ + instrumentationModule: z.string().optional(), +}) + .optional() + .default({}); + +const adapterModule: Record = { + '@astrojs/node': import.meta.resolve('./initialization/node.js'), +} + +export default function openTelemetry(options?: z.input): AstroIntegration { + const parsedOptions = optionsSchema.parse(options); -export default function openTelemetry(): AstroIntegration { return { name: '@astrojs/opentelemetry', hooks: { - 'astro:config:setup': ({ updateConfig, addInitializer }) => { - console.log('Setting up OpenTelemetry integration for Astro...'); + 'astro:config:setup': async ({ command, config, updateConfig, addInitializer, logger }) => { + if (command !== 'dev' && command !== 'build') { + // This integration is only relevant for dev and build commands + return; + } + + logger.debug('Setting up OpenTelemetry for Astro...'); updateConfig({ vite: { - ssr: { - external: [ - '@astrojs/opentelemetry/initOpentelemetry', - 'astro', - '@opentelemetry/api', - '@opentelemetry/sdk-node', - '@opentelemetry/exporter-trace-otlp-http', - '@opentelemetry/instrumentation-http', - ], - }, + plugins: [ + otelApis({ logger }), + otelInternalApis({ + logger, + instrumentationModule: parsedOptions.instrumentationModule?.startsWith('.') + ? fileURLToPath(new URL(parsedOptions.instrumentationModule, config.root)) + : parsedOptions.instrumentationModule, + }), + ], }, }); - addInitializer('@astrojs/opentelemetry/initOpentelemetry'); + if (parsedOptions.apiInitialization === false) { + logger.info('OpenTelemetry API initialization is disabled. Only instrumentation will be registered.'); + } else if (command === 'build') { + const adapterName = config.adapter?.name; + + if (!adapterName) { + throw new AstroError( + 'OpenTelemetry integration requires an adapter to be configured.', + // TODO: Link to docs on hint + ) + } + + const adapterInitializer = adapterModule[adapterName]; + + if (parsedOptions.apiInitialization && adapterInitializer) { + logger.info(`Overriding initialization for the "${adapterName}" adapter with "${parsedOptions.apiInitialization}".`); + } + + const initializer = parsedOptions.apiInitialization || adapterInitializer; + + if (!initializer) { + throw new AstroError( + `OpenTelemetry integration doesn't provide automatic initialization for the "${adapterName}" adapter. You must provide a custom API initialization module or explicitly disable API initialization.`, + // TODO: Link to docs on hint + ); + } + + addInitializer(initializer); + } + + logger.info('Registering OpenTelemetry hook telemetry module.'); + addInitializer(import.meta.resolve('./initialization/hook-telemetry.js')); }, }, }; diff --git a/packages/integrations/opentelemetry/src/initOpentelemetry.ts b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts similarity index 62% rename from packages/integrations/opentelemetry/src/initOpentelemetry.ts rename to packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts index e9ce2325b7e4..66244d8a6ab5 100644 --- a/packages/integrations/opentelemetry/src/initOpentelemetry.ts +++ b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts @@ -1,34 +1,9 @@ -import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; -import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; -import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; -import { api, NodeSDK, tracing } from '@opentelemetry/sdk-node'; +import * as api from 'astro:otel:api'; +import * as sc from 'astro:otel:semantic-conventions'; import { onTraceEvent, type TraceEvent } from 'astro/runtime/server/tracing.js'; -// TODO: Make the types load -// @ts-ignore -// import { site } from 'astro:config/server'; - -api.diag.setLogger(new api.DiagConsoleLogger(), { - logLevel: api.DiagLogLevel.WARN, -}); - -console.log('Initializing OpenTelemetry SDK for Astro...'); - -const contextManager = new AsyncLocalStorageContextManager(); - -const sdk = new NodeSDK({ - contextManager, - autoDetectResources: true, - serviceName: 'astro', - sampler: new tracing.AlwaysOnSampler(), - instrumentations: [new HttpInstrumentation({ enabled: true })], - spanProcessors: [new tracing.SimpleSpanProcessor(new OTLPTraceExporter({}))], -}); - -// TS claims this doesn't need await, but it does. -// TODO: Link the issue later -await sdk.start(); -const tracer = api.trace.getTracer('astro'); +const PACKAGE_VERSION = process.env.PACKAGE_VERSION ?? 'development'; +const tracer = api.trace.getTracer('@astrojs/opentelemetry', PACKAGE_VERSION); function getEventAttributes(event: TraceEvent): api.Attributes { switch (event.event) { @@ -58,11 +33,13 @@ function getEventAttributes(event: TraceEvent): api.Attributes { case 'routeRender': return { 'astro.route.rootModuleId': event.payload.rootModuleId, - 'astro.route.pathname': event.payload.pathname, - 'astro.route.url': event.payload.url.toString(), - 'astro.route.pattern': event.payload.routeData.route, 'astro.route.type': event.payload.routeData.type, 'astro.partial': event.payload.partial, + [sc.ATTR_CLIENT_ADDRESS]: event.payload.clientAddress, + [sc.ATTR_URL_FULL]: event.payload.url.toString(), + [sc.ATTR_URL_PATH]: event.payload.pathname, + [sc.ATTR_HTTP_ROUTE]: event.payload.routeData.route, + [sc.ATTR_HTTP_REQUEST_METHOD]: event.payload.request.method, }; default: return {}; diff --git a/packages/integrations/opentelemetry/src/initialization/node.ts b/packages/integrations/opentelemetry/src/initialization/node.ts new file mode 100644 index 000000000000..5b0184e192bd --- /dev/null +++ b/packages/integrations/opentelemetry/src/initialization/node.ts @@ -0,0 +1,39 @@ +import { + HttpInstrumentation, + UndiciInstrumentation, + FetchInstrumentation, +} from 'astro:otel:node'; +import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; +import { site } from 'astro:config/server'; +import { instrumentations } from 'astro:otel-internal'; + +process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; +process.env.OTEL_TRACES_EXPORTER ?? 'otlp'; +process.env.OTEL_METRICS_EXPORTER ?? 'otlp'; + +const sdk = new NodeSDK({ + autoDetectResources: true, + serviceName: site || 'astro', + // Always trace requests if the server is running directly. + // It a proxy is running in front of the server and it has already + // made a decision to trace the request or not, follow that decision. + sampler: new tracing.ParentBasedSampler({ + root: new tracing.AlwaysOnSampler(), + }), + instrumentations: [ + new HttpInstrumentation({ + enabled: true, + serverName: site || 'astro', + enableSyntheticSourceDetection: true, + requireParentforIncomingSpans: false, + requireParentforOutgoingSpans: true, + }), + new UndiciInstrumentation({ enabled: true }), + new FetchInstrumentation({ enabled: true }), + ...instrumentations, + ] +}); + +// TS claims this doesn't need await, but it does. +// TODO: Link the issue later +await sdk.start(); diff --git a/packages/integrations/opentelemetry/src/otel-reexport/api.ts b/packages/integrations/opentelemetry/src/otel-reexport/api.ts new file mode 100644 index 000000000000..b4780dccd2a5 --- /dev/null +++ b/packages/integrations/opentelemetry/src/otel-reexport/api.ts @@ -0,0 +1 @@ +export * from '@opentelemetry/api'; diff --git a/packages/integrations/opentelemetry/src/otel-reexport/node.ts b/packages/integrations/opentelemetry/src/otel-reexport/node.ts new file mode 100644 index 000000000000..94e87c5772c8 --- /dev/null +++ b/packages/integrations/opentelemetry/src/otel-reexport/node.ts @@ -0,0 +1,3 @@ +export { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; +export { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici'; +export { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch'; diff --git a/packages/integrations/opentelemetry/src/otel-reexport/semantic-conventions.ts b/packages/integrations/opentelemetry/src/otel-reexport/semantic-conventions.ts new file mode 100644 index 000000000000..877a35668a9d --- /dev/null +++ b/packages/integrations/opentelemetry/src/otel-reexport/semantic-conventions.ts @@ -0,0 +1 @@ +export * from '@opentelemetry/semantic-conventions'; diff --git a/packages/integrations/opentelemetry/src/vite/otel-apis.ts b/packages/integrations/opentelemetry/src/vite/otel-apis.ts new file mode 100644 index 000000000000..563addc91552 --- /dev/null +++ b/packages/integrations/opentelemetry/src/vite/otel-apis.ts @@ -0,0 +1,31 @@ +import type { AstroIntegrationLogger } from 'astro'; +import type { Plugin } from 'vite'; + +export function otelApis({ logger }: { logger: AstroIntegrationLogger }): Plugin { + return { + // All OpenTelemetry dependencies have to be externalized due + // to how they handles internal state relying on global variables + // and singletons. Vite cannot handle this properly and breaks + // the OpenTelemetry tracking otherwise. + // This serves as a workaround for conflicting expectations and restrictions between + // strict dependency management, vite and OpenTelemetry. + name: '@astrojs/opentelemetry/otel-apis', + enforce: 'pre', + async resolveId(id) { + if (id.startsWith('@astrojs/opentelemetry/otel-reexport')) { + logger.debug(`Externalizing OpenTelemetry dependency: ${id}`); + return { id, external: true, }; + } + + if (id.startsWith('astro:otel:')) { + const reexportName = id.slice('astro:otel:'.length); + logger.debug(`Rewriting OpenTelemetry re-export: ${reexportName}`); + + return { + id: `@astrojs/opentelemetry/otel-reexport/${reexportName}`, + external: true, + }; + } + }, + } +} diff --git a/packages/integrations/opentelemetry/src/vite/otel-internal.ts b/packages/integrations/opentelemetry/src/vite/otel-internal.ts new file mode 100644 index 000000000000..16909175cb07 --- /dev/null +++ b/packages/integrations/opentelemetry/src/vite/otel-internal.ts @@ -0,0 +1,30 @@ +import type { AstroIntegrationLogger } from "astro"; +import type { Plugin } from "vite"; + +const MODULE_ID = 'astro:otel-internal'; +const RESOLVED_ID = '\0' + MODULE_ID; + +export function otelInternalApis({ instrumentationModule }: { + instrumentationModule?: string; + logger: AstroIntegrationLogger +}): Plugin { + return { + name: "@astrojs/opentelemetry/internal", + resolveId(id) { + if (id === MODULE_ID) return RESOLVED_ID; + }, + load(id) { + if (id !== RESOLVED_ID) return; + + const parts: string[] = []; + + if (instrumentationModule) { + parts.push(`export const instrumentations = await import(${JSON.stringify(instrumentationModule)}).then(m => m.default);`); + } else { + parts.push(`export const instrumentations = [];`); + } + + return parts.join('\n'); + } + }; +} diff --git a/packages/integrations/opentelemetry/tsconfig.json b/packages/integrations/opentelemetry/tsconfig.json index 1504b4b6dfa4..c152f18f8f55 100644 --- a/packages/integrations/opentelemetry/tsconfig.json +++ b/packages/integrations/opentelemetry/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../../tsconfig.base.json", - "include": ["src"], + "include": ["src", "env.d.ts"], "compilerOptions": { "outDir": "./dist" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc7de00398ed..0d9cb7ae48f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -466,6 +466,12 @@ importers: '@astrojs/svelte': specifier: ^7.1.0 version: link:../../packages/integrations/svelte + '@opentelemetry/api': + specifier: ^1 + version: 1.9.0 + '@opentelemetry/sdk-node': + specifier: ^0.203.0 + version: 0.203.0(@opentelemetry/api@1.9.0) astro: specifier: ^5.12.8 version: link:../../packages/astro @@ -5689,25 +5695,34 @@ importers: '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 - '@opentelemetry/context-async-hooks': - specifier: ^2.0.1 - version: 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-http': + '@opentelemetry/instrumentation': + specifier: ^0.203.0 + version: 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fetch': specifier: ^0.203.0 version: 0.203.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation-http': specifier: ^0.203.0 version: 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': + specifier: ^0.14.0 + version: 0.14.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': + specifier: ^1.36.0 + version: 1.36.0 + devDependencies: '@opentelemetry/sdk-node': specifier: ^0.203.0 version: 0.203.0(@opentelemetry/api@1.9.0) - devDependencies: astro: specifier: workspace:* version: link:../../astro astro-scripts: specifier: workspace:* version: link:../../../scripts + vite: + specifier: ^6.3.4 + version: 6.3.5(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.8.0) packages/integrations/partytown: dependencies: @@ -8559,12 +8574,24 @@ packages: peerDependencies: '@opentelemetry/api': ^1.0.0 + '@opentelemetry/instrumentation-fetch@0.203.0': + resolution: {integrity: sha512-Z+mls3rOP2BaVykDZLLZPvchjj9l2oj3dYG1GTnrc27Y8o3biE+5M1b0izblycbbQHXjMPHQCpmjHbLMQuWtBg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-http@0.203.0': resolution: {integrity: sha512-y3uQAcCOAwnO6vEuNVocmpVzG3PER6/YZqbPbbffDdJ9te5NkHEkfSMNzlC3+v7KlE+WinPGc3N7MR30G1HY2g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-undici@0.14.0': + resolution: {integrity: sha512-2HN+7ztxAReXuxzrtA3WboAKlfP5OsPA57KQn2AdYZbJ3zeRPcLXyW4uO/jpLE6PLm0QRtmeGCmfYpqRlwgSwg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + '@opentelemetry/instrumentation@0.203.0': resolution: {integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==} engines: {node: ^18.19.0 || >=20.6.0} @@ -8637,6 +8664,12 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/sdk-trace-web@2.0.1': + resolution: {integrity: sha512-R4/i0rISvAujG4Zwk3s6ySyrWG+Db3SerZVM4jZ2lEzjrNylF7nRAy1hVvWe8gTbwIxX+6w6ZvZwdtl2C7UQHQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/semantic-conventions@1.36.0': resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} engines: {node: '>=14'} @@ -16744,6 +16777,16 @@ snapshots: '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/instrumentation-fetch@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-web': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-http@0.203.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -16754,6 +16797,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-undici@0.14.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -16859,6 +16910,12 @@ snapshots: '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-web@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions@1.36.0': {} '@oslojs/encoding@1.1.0': {} @@ -18043,7 +18100,7 @@ snapshots: astro-auto-import@0.4.2(astro@packages+astro): dependencies: '@types/node': 18.19.120 - acorn: 8.14.1 + acorn: 8.15.0 astro: link:packages/astro astro-embed@0.8.0(astro@packages+astro): @@ -18859,7 +18916,7 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.14.1 + acorn: 8.15.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 @@ -20663,8 +20720,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -20893,7 +20950,7 @@ snapshots: mlly@1.7.4: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.1 From cfbe4bcccbd46d42cfed72a4577bb1829fea62f7 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sun, 10 Aug 2025 10:30:39 -0300 Subject: [PATCH 13/32] Add tracing to middlewares --- examples/with-telemetry/astro.config.mts | 17 +++++++- examples/with-telemetry/src/middleware.ts | 18 +++++++++ packages/astro/src/container/pipeline.ts | 5 ++- packages/astro/src/core/base-pipeline.ts | 23 +++++------ .../astro/src/core/middleware/sequence.ts | 40 +++++++++++++++---- .../astro/src/core/middleware/vite-plugin.ts | 22 +++++----- packages/astro/src/core/render-context.ts | 24 ++++++----- packages/astro/src/integrations/hooks.ts | 7 ++-- packages/astro/src/types/astro.ts | 7 +++- packages/astro/src/types/public/common.ts | 18 +++++---- packages/astro/src/types/public/tracing.ts | 6 +++ .../src/initialization/hook-telemetry.ts | 2 + 12 files changed, 134 insertions(+), 55 deletions(-) create mode 100644 examples/with-telemetry/src/middleware.ts diff --git a/examples/with-telemetry/astro.config.mts b/examples/with-telemetry/astro.config.mts index 823f310c7d2d..789a411c4dd8 100644 --- a/examples/with-telemetry/astro.config.mts +++ b/examples/with-telemetry/astro.config.mts @@ -2,6 +2,7 @@ import node from '@astrojs/node'; import opentelemetry from '@astrojs/opentelemetry'; import svelte from '@astrojs/svelte'; import { defineConfig } from 'astro/config'; +import { fileURLToPath } from 'node:url'; // https://astro.build/config export default defineConfig({ @@ -9,7 +10,21 @@ export default defineConfig({ adapter: node({ mode: 'standalone', }), - integrations: [svelte(), opentelemetry({})], + integrations: [ + svelte(), + opentelemetry({}), + { + name: 'test-integration', + hooks: { + 'astro:config:setup': ({ addMiddleware }) => { + addMiddleware({ + entrypoint: fileURLToPath(new URL('./src/middleware.ts', import.meta.url)), + order: 'pre', + }); + }, + }, + }, + ], vite: { build: { sourcemap: true, diff --git a/examples/with-telemetry/src/middleware.ts b/examples/with-telemetry/src/middleware.ts new file mode 100644 index 000000000000..7bf21c7b02b7 --- /dev/null +++ b/examples/with-telemetry/src/middleware.ts @@ -0,0 +1,18 @@ +import type { MiddlewareHandler } from "astro"; +import { defineMiddleware, sequence } from "astro:middleware"; +import * as timers from 'node:timers/promises'; + +const foo: MiddlewareHandler = async (_, next) => { + await timers.setTimeout(10); // Simulate some async operation + return next(); +}; + +const bar = defineMiddleware(async (_, next) => { + await timers.setTimeout(10); // Simulate some async operation + return next(); +}); + +export const onRequest = sequence( + foo, + ['bar', bar] +) diff --git a/packages/astro/src/container/pipeline.ts b/packages/astro/src/container/pipeline.ts index 919edb0083b0..b1c11715ce5f 100644 --- a/packages/astro/src/container/pipeline.ts +++ b/packages/astro/src/container/pipeline.ts @@ -1,5 +1,6 @@ import { type HeadElements, Pipeline, type TryRewriteResult } from '../core/base-pipeline.js'; import type { SinglePageBuiltModule } from '../core/build/types.js'; +import { sequence } from '../core/middleware/index.js'; import { createModuleScriptElement, createStylesheetElementSet, @@ -41,7 +42,7 @@ export class ContainerPipeline extends Pipeline { ); } - componentMetadata(_routeData: RouteData): Promise | void {} + componentMetadata(_routeData: RouteData): Promise | void { } headElements(routeData: RouteData): Promise | HeadElements { const routeInfo = this.manifest.routes.find((route) => route.routeData === routeData); @@ -85,7 +86,7 @@ export class ContainerPipeline extends Pipeline { return Promise.resolve(componentInstance); }, renderers: this.manifest.renderers, - onRequest: this.resolvedMiddleware, + onRequest: sequence(...this.resolvedMiddleware ?? []), }); } diff --git a/packages/astro/src/core/base-pipeline.ts b/packages/astro/src/core/base-pipeline.ts index 1376b472f836..98148db3aeb9 100644 --- a/packages/astro/src/core/base-pipeline.ts +++ b/packages/astro/src/core/base-pipeline.ts @@ -3,7 +3,7 @@ import { NOOP_ACTIONS_MOD } from '../actions/noop-actions.js'; import type { ActionAccept, ActionClient } from '../actions/runtime/virtual/server.js'; import { createI18nMiddleware } from '../i18n/middleware.js'; import type { ComponentInstance } from '../types/astro.js'; -import type { MiddlewareHandler, RewritePayload } from '../types/public/common.js'; +import type { NamedMiddlewareHandler, RewritePayload } from '../types/public/common.js'; import type { RuntimeMode } from '../types/public/config.js'; import type { RouteData, @@ -17,7 +17,6 @@ import { ActionNotFoundError } from './errors/errors-data.js'; import { AstroError } from './errors/index.js'; import type { Logger } from './logger/core.js'; import { NOOP_MIDDLEWARE_FN } from './middleware/noop-middleware.js'; -import { sequence } from './middleware/sequence.js'; import { RouteCache } from './render/route-cache.js'; import { createDefaultRoutes } from './routing/default.js'; @@ -28,8 +27,8 @@ import { createDefaultRoutes } from './routing/default.js'; * Thus, a `Pipeline` is created once at process start and then used by every `RenderContext`. */ export abstract class Pipeline { - readonly internalMiddleware: MiddlewareHandler[]; - resolvedMiddleware: MiddlewareHandler | undefined = undefined; + readonly internalMiddlewares: NamedMiddlewareHandler[]; + resolvedMiddleware: NamedMiddlewareHandler[] | undefined = undefined; resolvedActions: SSRActions | undefined = undefined; constructor( @@ -68,11 +67,11 @@ export abstract class Pipeline { readonly actions = manifest.actions, ) { - this.internalMiddleware = []; + this.internalMiddlewares = []; // We do use our middleware only if the user isn't using the manual setup if (i18n?.strategy !== 'manual') { - this.internalMiddleware.push( - createI18nMiddleware(i18n, manifest.base, manifest.trailingSlash, manifest.buildFormat), + this.internalMiddlewares.push( + ['i18', createI18nMiddleware(i18n, manifest.base, manifest.trailingSlash, manifest.buildFormat)], ); } } @@ -103,7 +102,7 @@ export abstract class Pipeline { * Resolves the middleware from the manifest, and returns the `onRequest` function. If `onRequest` isn't there, * it returns a no-op function */ - async getMiddleware(): Promise { + async getMiddleware(): Promise { if (this.resolvedMiddleware) { return this.resolvedMiddleware; } @@ -112,15 +111,15 @@ export abstract class Pipeline { else if (this.middleware) { const middlewareInstance = await this.middleware(); const onRequest = middlewareInstance.onRequest ?? NOOP_MIDDLEWARE_FN; - const internalMiddlewares = [onRequest]; + const internalMiddlewares: NamedMiddlewareHandler[] = [['onRequest', onRequest]]; if (this.manifest.checkOrigin) { // this middleware must be placed at the beginning because it needs to block incoming requests - internalMiddlewares.unshift(createOriginCheckMiddleware()); + internalMiddlewares.unshift(['checkMiddleware', createOriginCheckMiddleware()]); } - this.resolvedMiddleware = sequence(...internalMiddlewares); + this.resolvedMiddleware = internalMiddlewares; return this.resolvedMiddleware; } else { - this.resolvedMiddleware = NOOP_MIDDLEWARE_FN; + this.resolvedMiddleware = [['noop', NOOP_MIDDLEWARE_FN]]; return this.resolvedMiddleware; } } diff --git a/packages/astro/src/core/middleware/sequence.ts b/packages/astro/src/core/middleware/sequence.ts index 4619ccfcdb42..b2509d7d2c0f 100644 --- a/packages/astro/src/core/middleware/sequence.ts +++ b/packages/astro/src/core/middleware/sequence.ts @@ -1,4 +1,4 @@ -import type { MiddlewareHandler, RewritePayload } from '../../types/public/common.js'; +import type { MiddlewareHandler, NamedMiddlewareHandler, RewritePayload } from '../../types/public/common.js'; import type { APIContext } from '../../types/public/context.js'; import { AstroCookies } from '../cookies/cookies.js'; import { ForbiddenRewrite } from '../errors/errors-data.js'; @@ -7,20 +7,42 @@ import { getParams, type Pipeline } from '../render/index.js'; import { apiContextRoutesSymbol } from '../render-context.js'; import { setOriginPathname } from '../routing/rewrite.js'; import { defineMiddleware } from './index.js'; +import { wrapWithTracing } from '../../runtime/server/tracing.js'; + +type MiddlewareOrNamed = MiddlewareHandler | NamedMiddlewareHandler; + +function wrapMiddlewareWithTracing(name: string, handler: MiddlewareHandler): MiddlewareHandler { + return wrapWithTracing('middleware', handler, context => ({ + name, + pathname: context.url.pathname, + url: context.url, + request: context.request, + })); +} // From SvelteKit: https://github.com/sveltejs/kit/blob/master/packages/kit/src/exports/hooks/sequence.js /** * * It accepts one or more middleware handlers and makes sure that they are run in sequence. */ -export function sequence(...handlers: MiddlewareHandler[]): MiddlewareHandler { - const filtered = handlers.filter((h) => !!h); +export function sequence(...handlers: MiddlewareOrNamed[]): MiddlewareHandler { + const filtered = handlers + .filter((h) => !!h && (typeof h === 'function' || !!h[1])) const length = filtered.length; if (!length) { return defineMiddleware((_context, next) => { return next(); }); } + if (length === 1) { + const handler = filtered[0]; + return typeof handler === 'function' ? handler : handler[1]; + } + const tracedMiddlewares: MiddlewareHandler[] = filtered.map((h, index) => ( + typeof h === 'function' + ? wrapMiddlewareWithTracing(h.name || `sequence[${index}]`, h) + : wrapMiddlewareWithTracing(h[0] || `sequence[${index}]`, h[1]) + )); return defineMiddleware((context, next) => { /** * This variable is used to carry the rerouting payload across middleware functions. @@ -29,11 +51,9 @@ export function sequence(...handlers: MiddlewareHandler[]): MiddlewareHandler { return applyHandle(0, context); function applyHandle(i: number, handleContext: APIContext) { - const handle = filtered[i]; - // @ts-expect-error - // SAFETY: Usually `next` always returns something in user land, but in `sequence` we are actually - // doing a loop over all the `next` functions, and eventually we call the last `next` that returns the `Response`. - const result = handle(handleContext, async (payload?: RewritePayload) => { + const handle = tracedMiddlewares[i]; + + const result = handle(handleContext, async (payload?: RewritePayload): Promise => { if (i < length - 1) { if (payload) { let newRequest; @@ -88,6 +108,10 @@ export function sequence(...handlers: MiddlewareHandler[]): MiddlewareHandler { pipeline.manifest.buildFormat, ); } + + // @ts-expect-error + // SAFETY: Usually `next` always returns something in user land, but in `sequence` we are actually + // doing a loop over all the `next` functions, and eventually we call the last `next` that returns the `Response`. return applyHandle(i + 1, handleContext); } else { return next(payload ?? carriedPayload); diff --git a/packages/astro/src/core/middleware/vite-plugin.ts b/packages/astro/src/core/middleware/vite-plugin.ts index b24131a39dbf..bb376ff7a00b 100644 --- a/packages/astro/src/core/middleware/vite-plugin.ts +++ b/packages/astro/src/core/middleware/vite-plugin.ts @@ -53,18 +53,21 @@ export function vitePluginMiddleware({ settings }: { settings: AstroSettings }): const preMiddleware = createMiddlewareImports(settings.middlewares.pre, 'pre'); const postMiddleware = createMiddlewareImports(settings.middlewares.post, 'post'); + const userMiddlewareReference = userMiddlewareIsPresent + ? `['projectMiddleware', userOnRequest]${postMiddleware.sequenceCode ? ',' : ''}` + : '' + const code = ` - ${ - userMiddlewareIsPresent + ${userMiddlewareIsPresent ? `import { onRequest as userOnRequest } from '${resolvedMiddlewareId}';` : '' - } + } import { sequence } from 'astro:middleware'; ${preMiddleware.importsCode}${postMiddleware.importsCode} export const onRequest = sequence( ${preMiddleware.sequenceCode}${preMiddleware.sequenceCode ? ',' : ''} - ${userMiddlewareIsPresent ? `userOnRequest${postMiddleware.sequenceCode ? ',' : ''}` : ''} + ${userMiddlewareReference} ${postMiddleware.sequenceCode} ); `.trim(); @@ -76,7 +79,7 @@ export const onRequest = sequence( } function createMiddlewareImports( - entrypoints: string[], + entrypoints: { name: string, entrypoint: string }[], prefix: string, ): { importsCode: string; @@ -85,10 +88,11 @@ function createMiddlewareImports( let importsRaw = ''; let sequenceRaw = ''; let index = 0; - for (const entrypoint of entrypoints) { - const name = `_${prefix}_${index}`; - importsRaw += `import { onRequest as ${name} } from '${normalizePath(entrypoint)}';\n`; - sequenceRaw += `${index > 0 ? ',' : ''}${name}`; + for (const { name, entrypoint } of entrypoints) { + const ident = `_${prefix}_${index}`; + const traceName = `${prefix}:${name}`; + importsRaw += `import { onRequest as ${ident} } from '${normalizePath(entrypoint)}';\n`; + sequenceRaw += `${index > 0 ? ',' : ''}[${JSON.stringify(traceName)},${ident}]`; index++; } diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index 2760d7981c91..6a1301f422d9 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -63,7 +63,7 @@ export class RenderContext { public session: AstroSession | undefined = pipeline.manifest.sessionConfig ? new AstroSession(cookies, pipeline.manifest.sessionConfig, pipeline.runtimeMode) : undefined, - ) {} + ) { } /** * A flag that tells the render content if the rewriting was triggered @@ -92,7 +92,9 @@ export class RenderContext { Partial< Pick >): Promise { - const pipelineMiddleware = await pipeline.getMiddleware(); + const pipelineMiddlewares = middleware == null + ? await pipeline.getMiddleware() + : [middleware]; const pipelineActions = actions ?? (await pipeline.getActions()); setOriginPathname( request, @@ -103,7 +105,7 @@ export class RenderContext { return new RenderContext( pipeline, locals, - sequence(...pipeline.internalMiddleware, middleware ?? pipelineMiddleware), + sequence(...pipeline.internalMiddlewares, ...pipelineMiddlewares), pipelineActions, pathname, request, @@ -139,14 +141,14 @@ export class RenderContext { Object.keys(this.props).length > 0 ? this.props : await getProps({ - mod: componentInstance, - routeData: this.routeData, - routeCache: this.pipeline.routeCache, - pathname: this.pathname, - logger, - serverLike, - base: manifest.base, - }); + mod: componentInstance, + routeData: this.routeData, + routeCache: this.pipeline.routeCache, + pathname: this.pathname, + logger, + serverLike, + base: manifest.base, + }); const actionApiContext = this.createActionAPIContext(); const apiContext = this.createAPIContext(props, actionApiContext); diff --git a/packages/astro/src/integrations/hooks.ts b/packages/astro/src/integrations/hooks.ts index 3b70dafe46d1..8ab1a0d30c41 100644 --- a/packages/astro/src/integrations/hooks.ts +++ b/packages/astro/src/integrations/hooks.ts @@ -285,9 +285,10 @@ export async function runHookConfigSetup({ order === 'pre' ? 'before' : 'after' } any application middleware you define.`, ); - updatedSettings.middlewares[order].push( - typeof entrypoint === 'string' ? entrypoint : fileURLToPath(entrypoint), - ); + updatedSettings.middlewares[order].push({ + name: integration.name, + entrypoint: typeof entrypoint === 'string' ? entrypoint : fileURLToPath(entrypoint), + }); }, addInitializer: (entrypoint) => { if (typeof entrypoint === 'string') { diff --git a/packages/astro/src/types/astro.ts b/packages/astro/src/types/astro.ts index ea88128ed6d6..cdcb1db79572 100644 --- a/packages/astro/src/types/astro.ts +++ b/packages/astro/src/types/astro.ts @@ -29,6 +29,11 @@ export type SerializedRouteData = Omit< }; }; +type InjectedMiddleware = { + name: string; + entrypoint: string; +} + export interface AstroSettings { config: AstroConfig; adapter: AstroAdapter | undefined; @@ -48,7 +53,7 @@ export interface AstroSettings { */ clientDirectives: Map; devToolbarApps: (DevToolbarAppEntry | string)[]; - middlewares: { pre: string[]; post: string[] }; + middlewares: { pre: InjectedMiddleware[]; post: InjectedMiddleware[] }; initializers: string[]; tsConfig: TSConfig | undefined; tsConfigPath: string | undefined; diff --git a/packages/astro/src/types/public/common.ts b/packages/astro/src/types/public/common.ts index ba85c3991359..61028de4de62 100644 --- a/packages/astro/src/types/public/common.ts +++ b/packages/astro/src/types/public/common.ts @@ -111,6 +111,8 @@ export type MiddlewareHandler = ( next: MiddlewareNext, ) => Promise | Response | Promise | void; +export type NamedMiddlewareHandler = readonly [string, MiddlewareHandler]; + // NOTE: when updating this file with other functions, // remember to update `plugin-page.ts` too, to add that function as a no-op function. export type AstroMiddlewareInstance = { @@ -140,10 +142,10 @@ export type InferGetStaticParamsType = T extends ( opts?: GetStaticPathsOptions, ) => infer R | Promise ? R extends Array - ? U extends { params: infer P } - ? P - : never - : never + ? U extends { params: infer P } + ? P + : never + : never : never; /** @@ -173,10 +175,10 @@ export type InferGetStaticPropsType = T extends ( opts: GetStaticPathsOptions, ) => infer R | Promise ? R extends Array - ? U extends { props: infer P } - ? P - : never - : never + ? U extends { props: infer P } + ? P + : never + : never : never; export type Params = Record; diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts index 58b210f7b2ac..3609585f4f09 100644 --- a/packages/astro/src/types/public/tracing.ts +++ b/packages/astro/src/types/public/tracing.ts @@ -36,6 +36,12 @@ export interface TraceEventsPayloads { url: URL; partial?: boolean; }; + middleware: { + name: string; + pathname: string; + url: URL; + request: Request; + }; // Allow for events to be added in a backwards-compatible way. // Trace listeners must handle unknown events gracefully in order to be type-safe. diff --git a/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts index 66244d8a6ab5..f4eda5344588 100644 --- a/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts +++ b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts @@ -41,6 +41,8 @@ function getEventAttributes(event: TraceEvent): api.Attributes { [sc.ATTR_HTTP_ROUTE]: event.payload.routeData.route, [sc.ATTR_HTTP_REQUEST_METHOD]: event.payload.request.method, }; + case 'middleware': + return { 'astro.middleware.name': event.payload.name } default: return {}; } From 65601f76411eaddaa7d048ecc86dded73b4fd640 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sun, 10 Aug 2025 11:15:58 -0300 Subject: [PATCH 14/32] Make logger export to console by default --- packages/integrations/opentelemetry/src/initialization/node.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/integrations/opentelemetry/src/initialization/node.ts b/packages/integrations/opentelemetry/src/initialization/node.ts index 5b0184e192bd..5cab70f98107 100644 --- a/packages/integrations/opentelemetry/src/initialization/node.ts +++ b/packages/integrations/opentelemetry/src/initialization/node.ts @@ -10,6 +10,7 @@ import { instrumentations } from 'astro:otel-internal'; process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; process.env.OTEL_TRACES_EXPORTER ?? 'otlp'; process.env.OTEL_METRICS_EXPORTER ?? 'otlp'; +process.env.OTEL_LOGS_EXPORTER ?? 'otlp,console'; const sdk = new NodeSDK({ autoDetectResources: true, From 6979108a150e96cc57ac86c4138ca77b631b93a4 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sun, 10 Aug 2025 11:17:50 -0300 Subject: [PATCH 15/32] Allow integration to be wrapped --- packages/integrations/opentelemetry/src/index.ts | 13 ++++++++++++- .../opentelemetry/src/vite/otel-apis.ts | 9 ++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/integrations/opentelemetry/src/index.ts b/packages/integrations/opentelemetry/src/index.ts index 13af7559527b..c3d08001ed47 100644 --- a/packages/integrations/opentelemetry/src/index.ts +++ b/packages/integrations/opentelemetry/src/index.ts @@ -4,6 +4,7 @@ import { z } from 'astro/zod'; import { fileURLToPath } from 'node:url'; import { otelApis } from './vite/otel-apis.js'; import { otelInternalApis } from './vite/otel-internal.js'; +import { otelHelper } from './vite/otel-helper.js'; const optionsSchema = z.object({ /** @@ -25,6 +26,16 @@ const optionsSchema = z.object({ * This can be used to configure library instrumentations with environment patching. */ instrumentationModule: z.string().optional(), + + /** + * The module specifier prefix to use for re-exporting OpenTelemetry APIs. + * + * This should be set by integrations that wrap this OpenTelemetry integration to ensure imports + * from virtual modules can resolve to transitive dependencies. + * + * Default: `@astrojs/opentelemetry/otel-reexport` + */ + reexportPrefix: z.string().optional().default('@astrojs/opentelemetry/otel-reexport'), }) .optional() .default({}); @@ -50,7 +61,7 @@ export default function openTelemetry(options?: z.input): updateConfig({ vite: { plugins: [ - otelApis({ logger }), + otelApis({ logger, reexportPrefix: parsedOptions.reexportPrefix }), otelInternalApis({ logger, instrumentationModule: parsedOptions.instrumentationModule?.startsWith('.') diff --git a/packages/integrations/opentelemetry/src/vite/otel-apis.ts b/packages/integrations/opentelemetry/src/vite/otel-apis.ts index 563addc91552..48fd948746f4 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-apis.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-apis.ts @@ -1,7 +1,10 @@ import type { AstroIntegrationLogger } from 'astro'; import type { Plugin } from 'vite'; -export function otelApis({ logger }: { logger: AstroIntegrationLogger }): Plugin { +export function otelApis({ logger, reexportPrefix }: { + logger: AstroIntegrationLogger, + reexportPrefix: string, +}): Plugin { return { // All OpenTelemetry dependencies have to be externalized due // to how they handles internal state relying on global variables @@ -12,7 +15,7 @@ export function otelApis({ logger }: { logger: AstroIntegrationLogger }): Plugin name: '@astrojs/opentelemetry/otel-apis', enforce: 'pre', async resolveId(id) { - if (id.startsWith('@astrojs/opentelemetry/otel-reexport')) { + if (id.startsWith(reexportPrefix)) { logger.debug(`Externalizing OpenTelemetry dependency: ${id}`); return { id, external: true, }; } @@ -22,7 +25,7 @@ export function otelApis({ logger }: { logger: AstroIntegrationLogger }): Plugin logger.debug(`Rewriting OpenTelemetry re-export: ${reexportName}`); return { - id: `@astrojs/opentelemetry/otel-reexport/${reexportName}`, + id: `${reexportPrefix}/${reexportName}`, external: true, }; } From c8f72913447797ebbac82c8b61eaa7aa77b4cf99 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sun, 10 Aug 2025 11:18:07 -0300 Subject: [PATCH 16/32] Implement helper imports for each telemetry resource --- examples/with-telemetry/src/api.ts | 6 +- .../integrations/opentelemetry/index.d.ts | 4 ++ .../integrations/opentelemetry/package.json | 10 ++- .../integrations/opentelemetry/src/index.ts | 1 + .../src/otel-reexport/api-logs.ts | 1 + .../opentelemetry/src/vite/otel-helper.ts | 62 +++++++++++++++++++ .../integrations/opentelemetry/virtual.d.ts | 17 +++++ pnpm-lock.yaml | 3 + 8 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 packages/integrations/opentelemetry/index.d.ts create mode 100644 packages/integrations/opentelemetry/src/otel-reexport/api-logs.ts create mode 100644 packages/integrations/opentelemetry/src/vite/otel-helper.ts create mode 100644 packages/integrations/opentelemetry/virtual.d.ts diff --git a/examples/with-telemetry/src/api.ts b/examples/with-telemetry/src/api.ts index 7ebbdcc6fd5c..86d33058c144 100644 --- a/examples/with-telemetry/src/api.ts +++ b/examples/with-telemetry/src/api.ts @@ -1,4 +1,6 @@ -import * as api from '@opentelemetry/api'; +import tracer from 'astro:otel:tracer'; +import meter from 'astro:otel:meter'; +import logger from 'astro:otel:logger'; export interface Product { id: number; @@ -19,8 +21,6 @@ interface Cart { }>; } -const meter = api.metrics.getMeter('src/api'); - const readCounter = meter.createCounter('api.reads'); async function getJson(incomingReq: Request, endpoint: string): Promise { diff --git a/packages/integrations/opentelemetry/index.d.ts b/packages/integrations/opentelemetry/index.d.ts new file mode 100644 index 000000000000..6ee9412007aa --- /dev/null +++ b/packages/integrations/opentelemetry/index.d.ts @@ -0,0 +1,4 @@ +import './virtual.js'; +import integration from './src/index.js'; + +export default integration; diff --git a/packages/integrations/opentelemetry/package.json b/packages/integrations/opentelemetry/package.json index 7926d65548ee..eae8d4235c28 100644 --- a/packages/integrations/opentelemetry/package.json +++ b/packages/integrations/opentelemetry/package.json @@ -22,12 +22,17 @@ "bugs": "https://github.com/withastro/astro/issues", "homepage": "https://docs.astro.build/en/guides/integrations-guide/opentelemetry/", "exports": { - ".": "./dist/index.js", + ".": { + "types": "./index.d.ts", + "default": "./dist/index.js", + }, "./otel-reexport/*": "./dist/otel-reexport/*.js", "./package.json": "./package.json" }, "files": [ - "dist" + "dist", + "virtual.d.ts", + "index.d.ts", ], "scripts": { "build": "astro-scripts build \"src/**/*.ts\" && tsc", @@ -36,6 +41,7 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.203.0", "@opentelemetry/semantic-conventions": "^1.36.0", "@opentelemetry/instrumentation": "^0.203.0", "@opentelemetry/instrumentation-http": "^0.203.0", diff --git a/packages/integrations/opentelemetry/src/index.ts b/packages/integrations/opentelemetry/src/index.ts index c3d08001ed47..99f6a27e0e90 100644 --- a/packages/integrations/opentelemetry/src/index.ts +++ b/packages/integrations/opentelemetry/src/index.ts @@ -68,6 +68,7 @@ export default function openTelemetry(options?: z.input): ? fileURLToPath(new URL(parsedOptions.instrumentationModule, config.root)) : parsedOptions.instrumentationModule, }), + otelHelper(), ], }, }); diff --git a/packages/integrations/opentelemetry/src/otel-reexport/api-logs.ts b/packages/integrations/opentelemetry/src/otel-reexport/api-logs.ts new file mode 100644 index 000000000000..908d70eeb96d --- /dev/null +++ b/packages/integrations/opentelemetry/src/otel-reexport/api-logs.ts @@ -0,0 +1 @@ +export * from '@opentelemetry/api-logs'; diff --git a/packages/integrations/opentelemetry/src/vite/otel-helper.ts b/packages/integrations/opentelemetry/src/vite/otel-helper.ts new file mode 100644 index 000000000000..136020a2b41a --- /dev/null +++ b/packages/integrations/opentelemetry/src/vite/otel-helper.ts @@ -0,0 +1,62 @@ +import { URLSearchParams } from "node:url"; +import type { Plugin } from "vite"; + +const LOGGER_ID = 'astro:otel:logger'; +const TRACER_ID = 'astro:otel:tracer'; +const METER_ID = 'astro:otel:meter'; + +const LOGGER_RESOLVED_ID = '\0' + LOGGER_ID; +const TRACER_RESOLVED_ID = '\0' + TRACER_ID; +const METER_RESOLVED_ID = '\0' + METER_ID; + +const resolveMapping: Record = { + [LOGGER_ID]: LOGGER_RESOLVED_ID, + [TRACER_ID]: TRACER_RESOLVED_ID, + [METER_ID]: METER_RESOLVED_ID, +} + +export function otelHelper(): Plugin { + return { + name: '@astrojs/opentelemetry/otel-helper', + enforce: 'pre', + async resolveId(id, importer) { + const resolved = resolveMapping[id]; + if (!resolved) return null; + + return `${resolved}?${new URLSearchParams({ importer: importer || '' })}`; + }, + load(id) { + if (!Object.values(resolveMapping).some(resolvedId => id.startsWith(resolvedId))) { + return null; + } + + const [resolvedId, query] = id.split('?'); + const component = resolvedId.slice('\0astro:otel:'.length); + const params = new URLSearchParams(query); + const importer = params.get('importer') || 'unknown'; + + switch (component) { + case 'logger': + return ` +import { logs } from 'astro:otel:api-logs'; +const logger = logs.getLogger(${JSON.stringify(importer)}); +export default logger; + `.trim(); + case 'tracer': + return ` +import { trace } from 'astro:otel:api'; +const tracer = trace.getTracer(${JSON.stringify(importer)}); +export default tracer; + `.trim(); + case 'meter': + return ` +import { metrics } from 'astro:otel:api'; +const meter = api.metrics.getMeter(${JSON.stringify(importer)}); +export default meter; + `.trim(); + default: + return null; + } + } + }; +} diff --git a/packages/integrations/opentelemetry/virtual.d.ts b/packages/integrations/opentelemetry/virtual.d.ts new file mode 100644 index 000000000000..51fcf71042bb --- /dev/null +++ b/packages/integrations/opentelemetry/virtual.d.ts @@ -0,0 +1,17 @@ +declare module 'astro:otel:logger' { + import { Logger } from '@opentelemetry/api-logs'; + const logger: Logger; + export default logger; +} + +declare module 'astro:otel:tracer' { + import { Tracer } from '@opentelemetry/api'; + const tracer: Tracer; + export default tracer; +} + +declare module 'astro:otel:meter' { + import { Meter } from '@opentelemetry/api'; + const meter: Meter; + export default meter; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d9cb7ae48f2..b706519e241a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5695,6 +5695,9 @@ importers: '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 + '@opentelemetry/api-logs': + specifier: ^0.203.0 + version: 0.203.0 '@opentelemetry/instrumentation': specifier: ^0.203.0 version: 0.203.0(@opentelemetry/api@1.9.0) From d804dedaa11fee3475dba009fffc33da67b01159 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Mon, 11 Aug 2025 13:28:37 -0300 Subject: [PATCH 17/32] Fix package.json --- packages/integrations/opentelemetry/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/integrations/opentelemetry/package.json b/packages/integrations/opentelemetry/package.json index eae8d4235c28..45dcee61f6f2 100644 --- a/packages/integrations/opentelemetry/package.json +++ b/packages/integrations/opentelemetry/package.json @@ -24,7 +24,7 @@ "exports": { ".": { "types": "./index.d.ts", - "default": "./dist/index.js", + "default": "./dist/index.js" }, "./otel-reexport/*": "./dist/otel-reexport/*.js", "./package.json": "./package.json" @@ -32,7 +32,7 @@ "files": [ "dist", "virtual.d.ts", - "index.d.ts", + "index.d.ts" ], "scripts": { "build": "astro-scripts build \"src/**/*.ts\" && tsc", From 06b4a5cf6827fb3e410c0e411c15385d6e9797d8 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Mon, 11 Aug 2025 13:44:49 -0300 Subject: [PATCH 18/32] Format --- examples/with-telemetry/astro.config.mts | 2 +- examples/with-telemetry/src/api.ts | 36 ++++++--- examples/with-telemetry/src/middleware.ts | 9 +-- packages/astro/src/container/pipeline.ts | 4 +- packages/astro/src/core/base-pipeline.ts | 7 +- .../astro/src/core/middleware/sequence.ts | 19 +++-- .../astro/src/core/middleware/vite-plugin.ts | 9 ++- packages/astro/src/core/render-context.ts | 22 +++--- packages/astro/src/types/astro.ts | 2 +- packages/astro/src/types/public/common.ts | 16 ++-- packages/integrations/opentelemetry/env.d.ts | 6 +- .../integrations/opentelemetry/src/index.ts | 79 ++++++++++--------- .../src/initialization/hook-telemetry.ts | 2 +- .../opentelemetry/src/initialization/node.ts | 10 +-- .../opentelemetry/src/otel-reexport/node.ts | 2 +- .../opentelemetry/src/vite/otel-apis.ts | 13 +-- .../opentelemetry/src/vite/otel-helper.ts | 10 +-- .../opentelemetry/src/vite/otel-internal.ts | 18 +++-- 18 files changed, 145 insertions(+), 121 deletions(-) diff --git a/examples/with-telemetry/astro.config.mts b/examples/with-telemetry/astro.config.mts index 789a411c4dd8..71807eabc291 100644 --- a/examples/with-telemetry/astro.config.mts +++ b/examples/with-telemetry/astro.config.mts @@ -1,8 +1,8 @@ +import { fileURLToPath } from 'node:url'; import node from '@astrojs/node'; import opentelemetry from '@astrojs/opentelemetry'; import svelte from '@astrojs/svelte'; import { defineConfig } from 'astro/config'; -import { fileURLToPath } from 'node:url'; // https://astro.build/config export default defineConfig({ diff --git a/examples/with-telemetry/src/api.ts b/examples/with-telemetry/src/api.ts index 86d33058c144..b6d1bb392ad3 100644 --- a/examples/with-telemetry/src/api.ts +++ b/examples/with-telemetry/src/api.ts @@ -1,6 +1,6 @@ -import tracer from 'astro:otel:tracer'; -import meter from 'astro:otel:meter'; import logger from 'astro:otel:logger'; +import meter from 'astro:otel:meter'; +import tracer from 'astro:otel:tracer'; export interface Product { id: number; @@ -35,30 +35,42 @@ async function getJson(incomingReq: Request, endpoint: string): Promise { if (!response.ok) { throw new Error(`GET ${endpoint} failed: ${response.statusText}`); } - return await response.json() as Promise; + return (await response.json()) as Promise; } catch (error) { if (error instanceof DOMException || error instanceof TypeError) { throw new Error(`GET ${endpoint} failed: ${error.message}`); } + logger.emit({ + severityText: 'error', + eventName: 'api.error', + body: { + message: `GET ${endpoint} failed: ${error instanceof Error ? error.message : String(error)}`, + endpoint, + stack: error instanceof Error ? error.stack : undefined, + }, + }); throw error; - } finally { } } -export async function getProducts(incomingReq: Request): Promise { - return getJson(incomingReq, '/api/products'); +export function getProducts(incomingReq: Request): Promise { + return tracer.startActiveSpan('getProducts', () => + getJson(incomingReq, '/api/products'), + ); } -export async function getProduct(incomingReq: Request, id: number): Promise { - return getJson(incomingReq, `/api/products/${id}`); +export function getProduct(incomingReq: Request, id: number): Promise { + return tracer.startActiveSpan('getProduct', () => + getJson(incomingReq, `/api/products/${id}`), + ); } -export async function getUser(incomingReq: Request): Promise { - return getJson(incomingReq, `/api/user`); +export function getUser(incomingReq: Request): Promise { + return tracer.startActiveSpan('getUser', () => getJson(incomingReq, `/api/user`)); } -export async function getCart(incomingReq: Request): Promise { - return getJson(incomingReq, `/api/cart`); +export function getCart(incomingReq: Request): Promise { + return tracer.startActiveSpan('getCart', () => getJson(incomingReq, `/api/cart`)); } export async function addToUserCart(id: number | string, name: string): Promise { diff --git a/examples/with-telemetry/src/middleware.ts b/examples/with-telemetry/src/middleware.ts index 7bf21c7b02b7..fef08c0e6d12 100644 --- a/examples/with-telemetry/src/middleware.ts +++ b/examples/with-telemetry/src/middleware.ts @@ -1,6 +1,6 @@ -import type { MiddlewareHandler } from "astro"; -import { defineMiddleware, sequence } from "astro:middleware"; +import { defineMiddleware, sequence } from 'astro:middleware'; import * as timers from 'node:timers/promises'; +import type { MiddlewareHandler } from 'astro'; const foo: MiddlewareHandler = async (_, next) => { await timers.setTimeout(10); // Simulate some async operation @@ -12,7 +12,4 @@ const bar = defineMiddleware(async (_, next) => { return next(); }); -export const onRequest = sequence( - foo, - ['bar', bar] -) +export const onRequest = sequence(foo, ['bar', bar]); diff --git a/packages/astro/src/container/pipeline.ts b/packages/astro/src/container/pipeline.ts index b1c11715ce5f..7edad1f1cb1c 100644 --- a/packages/astro/src/container/pipeline.ts +++ b/packages/astro/src/container/pipeline.ts @@ -42,7 +42,7 @@ export class ContainerPipeline extends Pipeline { ); } - componentMetadata(_routeData: RouteData): Promise | void { } + componentMetadata(_routeData: RouteData): Promise | void {} headElements(routeData: RouteData): Promise | HeadElements { const routeInfo = this.manifest.routes.find((route) => route.routeData === routeData); @@ -86,7 +86,7 @@ export class ContainerPipeline extends Pipeline { return Promise.resolve(componentInstance); }, renderers: this.manifest.renderers, - onRequest: sequence(...this.resolvedMiddleware ?? []), + onRequest: sequence(...(this.resolvedMiddleware ?? [])), }); } diff --git a/packages/astro/src/core/base-pipeline.ts b/packages/astro/src/core/base-pipeline.ts index 98148db3aeb9..50c1ed45d0bd 100644 --- a/packages/astro/src/core/base-pipeline.ts +++ b/packages/astro/src/core/base-pipeline.ts @@ -70,9 +70,10 @@ export abstract class Pipeline { this.internalMiddlewares = []; // We do use our middleware only if the user isn't using the manual setup if (i18n?.strategy !== 'manual') { - this.internalMiddlewares.push( - ['i18', createI18nMiddleware(i18n, manifest.base, manifest.trailingSlash, manifest.buildFormat)], - ); + this.internalMiddlewares.push([ + 'i18', + createI18nMiddleware(i18n, manifest.base, manifest.trailingSlash, manifest.buildFormat), + ]); } } diff --git a/packages/astro/src/core/middleware/sequence.ts b/packages/astro/src/core/middleware/sequence.ts index b2509d7d2c0f..418ecf0124aa 100644 --- a/packages/astro/src/core/middleware/sequence.ts +++ b/packages/astro/src/core/middleware/sequence.ts @@ -1,4 +1,9 @@ -import type { MiddlewareHandler, NamedMiddlewareHandler, RewritePayload } from '../../types/public/common.js'; +import { wrapWithTracing } from '../../runtime/server/tracing.js'; +import type { + MiddlewareHandler, + NamedMiddlewareHandler, + RewritePayload, +} from '../../types/public/common.js'; import type { APIContext } from '../../types/public/context.js'; import { AstroCookies } from '../cookies/cookies.js'; import { ForbiddenRewrite } from '../errors/errors-data.js'; @@ -7,12 +12,11 @@ import { getParams, type Pipeline } from '../render/index.js'; import { apiContextRoutesSymbol } from '../render-context.js'; import { setOriginPathname } from '../routing/rewrite.js'; import { defineMiddleware } from './index.js'; -import { wrapWithTracing } from '../../runtime/server/tracing.js'; type MiddlewareOrNamed = MiddlewareHandler | NamedMiddlewareHandler; function wrapMiddlewareWithTracing(name: string, handler: MiddlewareHandler): MiddlewareHandler { - return wrapWithTracing('middleware', handler, context => ({ + return wrapWithTracing('middleware', handler, (context) => ({ name, pathname: context.url.pathname, url: context.url, @@ -26,8 +30,7 @@ function wrapMiddlewareWithTracing(name: string, handler: MiddlewareHandler): Mi * It accepts one or more middleware handlers and makes sure that they are run in sequence. */ export function sequence(...handlers: MiddlewareOrNamed[]): MiddlewareHandler { - const filtered = handlers - .filter((h) => !!h && (typeof h === 'function' || !!h[1])) + const filtered = handlers.filter((h) => !!h && (typeof h === 'function' || !!h[1])); const length = filtered.length; if (!length) { return defineMiddleware((_context, next) => { @@ -38,11 +41,11 @@ export function sequence(...handlers: MiddlewareOrNamed[]): MiddlewareHandler { const handler = filtered[0]; return typeof handler === 'function' ? handler : handler[1]; } - const tracedMiddlewares: MiddlewareHandler[] = filtered.map((h, index) => ( + const tracedMiddlewares: MiddlewareHandler[] = filtered.map((h, index) => typeof h === 'function' ? wrapMiddlewareWithTracing(h.name || `sequence[${index}]`, h) - : wrapMiddlewareWithTracing(h[0] || `sequence[${index}]`, h[1]) - )); + : wrapMiddlewareWithTracing(h[0] || `sequence[${index}]`, h[1]), + ); return defineMiddleware((context, next) => { /** * This variable is used to carry the rerouting payload across middleware functions. diff --git a/packages/astro/src/core/middleware/vite-plugin.ts b/packages/astro/src/core/middleware/vite-plugin.ts index bb376ff7a00b..fe184dfca436 100644 --- a/packages/astro/src/core/middleware/vite-plugin.ts +++ b/packages/astro/src/core/middleware/vite-plugin.ts @@ -55,13 +55,14 @@ export function vitePluginMiddleware({ settings }: { settings: AstroSettings }): const userMiddlewareReference = userMiddlewareIsPresent ? `['projectMiddleware', userOnRequest]${postMiddleware.sequenceCode ? ',' : ''}` - : '' + : ''; const code = ` - ${userMiddlewareIsPresent + ${ + userMiddlewareIsPresent ? `import { onRequest as userOnRequest } from '${resolvedMiddlewareId}';` : '' - } + } import { sequence } from 'astro:middleware'; ${preMiddleware.importsCode}${postMiddleware.importsCode} @@ -79,7 +80,7 @@ export const onRequest = sequence( } function createMiddlewareImports( - entrypoints: { name: string, entrypoint: string }[], + entrypoints: { name: string; entrypoint: string }[], prefix: string, ): { importsCode: string; diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index 6a1301f422d9..120dc9265d02 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -63,7 +63,7 @@ export class RenderContext { public session: AstroSession | undefined = pipeline.manifest.sessionConfig ? new AstroSession(cookies, pipeline.manifest.sessionConfig, pipeline.runtimeMode) : undefined, - ) { } + ) {} /** * A flag that tells the render content if the rewriting was triggered @@ -92,9 +92,7 @@ export class RenderContext { Partial< Pick >): Promise { - const pipelineMiddlewares = middleware == null - ? await pipeline.getMiddleware() - : [middleware]; + const pipelineMiddlewares = middleware == null ? await pipeline.getMiddleware() : [middleware]; const pipelineActions = actions ?? (await pipeline.getActions()); setOriginPathname( request, @@ -141,14 +139,14 @@ export class RenderContext { Object.keys(this.props).length > 0 ? this.props : await getProps({ - mod: componentInstance, - routeData: this.routeData, - routeCache: this.pipeline.routeCache, - pathname: this.pathname, - logger, - serverLike, - base: manifest.base, - }); + mod: componentInstance, + routeData: this.routeData, + routeCache: this.pipeline.routeCache, + pathname: this.pathname, + logger, + serverLike, + base: manifest.base, + }); const actionApiContext = this.createActionAPIContext(); const apiContext = this.createAPIContext(props, actionApiContext); diff --git a/packages/astro/src/types/astro.ts b/packages/astro/src/types/astro.ts index cdcb1db79572..85b9cfe6243b 100644 --- a/packages/astro/src/types/astro.ts +++ b/packages/astro/src/types/astro.ts @@ -32,7 +32,7 @@ export type SerializedRouteData = Omit< type InjectedMiddleware = { name: string; entrypoint: string; -} +}; export interface AstroSettings { config: AstroConfig; diff --git a/packages/astro/src/types/public/common.ts b/packages/astro/src/types/public/common.ts index 61028de4de62..0c17d139284d 100644 --- a/packages/astro/src/types/public/common.ts +++ b/packages/astro/src/types/public/common.ts @@ -142,10 +142,10 @@ export type InferGetStaticParamsType = T extends ( opts?: GetStaticPathsOptions, ) => infer R | Promise ? R extends Array - ? U extends { params: infer P } - ? P - : never - : never + ? U extends { params: infer P } + ? P + : never + : never : never; /** @@ -175,10 +175,10 @@ export type InferGetStaticPropsType = T extends ( opts: GetStaticPathsOptions, ) => infer R | Promise ? R extends Array - ? U extends { props: infer P } - ? P - : never - : never + ? U extends { props: infer P } + ? P + : never + : never : never; export type Params = Record; diff --git a/packages/integrations/opentelemetry/env.d.ts b/packages/integrations/opentelemetry/env.d.ts index 668b5a8c50e4..3dc70117ca3b 100644 --- a/packages/integrations/opentelemetry/env.d.ts +++ b/packages/integrations/opentelemetry/env.d.ts @@ -11,7 +11,11 @@ declare module 'astro:otel:semantic-conventions' { } declare module 'astro:otel:node' { - import { HttpInstrumentation, UndiciInstrumentation, FetchInstrumentation } from './otel-reexport/node.js'; + import { + HttpInstrumentation, + UndiciInstrumentation, + FetchInstrumentation, + } from './otel-reexport/node.js'; export { HttpInstrumentation, UndiciInstrumentation, FetchInstrumentation }; } diff --git a/packages/integrations/opentelemetry/src/index.ts b/packages/integrations/opentelemetry/src/index.ts index 99f6a27e0e90..23c01e8383ae 100644 --- a/packages/integrations/opentelemetry/src/index.ts +++ b/packages/integrations/opentelemetry/src/index.ts @@ -1,48 +1,49 @@ +import { fileURLToPath } from 'node:url'; import type { AstroIntegration } from 'astro'; import { AstroError } from 'astro/errors'; import { z } from 'astro/zod'; -import { fileURLToPath } from 'node:url'; import { otelApis } from './vite/otel-apis.js'; -import { otelInternalApis } from './vite/otel-internal.js'; import { otelHelper } from './vite/otel-helper.js'; +import { otelInternalApis } from './vite/otel-internal.js'; -const optionsSchema = z.object({ - /** - * The OpenTelemetry API initialization module to use. - * This should be a path to a module that configures the global context, meter, tracer and logger providers. - * - * If not specified, the integration will try to determine the correct one based on the adapter. - * If set to `false`, no API initialization will be performed, only the instruments will be registered. - */ - apiInitialization: z.union([z.string(), z.literal(false)]).optional(), - - /** - * Module configuring OpenTelemetry instrumentation. - * - * This should be a path to a module that exports an array of `Instrumentation` instances from - * `@opentelemetry/instrumentation` as the default export. - * It will be loaded after the API initialization module (if any) and before the hook telemetry module. - * - * This can be used to configure library instrumentations with environment patching. - */ - instrumentationModule: z.string().optional(), - - /** - * The module specifier prefix to use for re-exporting OpenTelemetry APIs. - * - * This should be set by integrations that wrap this OpenTelemetry integration to ensure imports - * from virtual modules can resolve to transitive dependencies. - * - * Default: `@astrojs/opentelemetry/otel-reexport` - */ - reexportPrefix: z.string().optional().default('@astrojs/opentelemetry/otel-reexport'), -}) +const optionsSchema = z + .object({ + /** + * The OpenTelemetry API initialization module to use. + * This should be a path to a module that configures the global context, meter, tracer and logger providers. + * + * If not specified, the integration will try to determine the correct one based on the adapter. + * If set to `false`, no API initialization will be performed, only the instruments will be registered. + */ + apiInitialization: z.union([z.string(), z.literal(false)]).optional(), + + /** + * Module configuring OpenTelemetry instrumentation. + * + * This should be a path to a module that exports an array of `Instrumentation` instances from + * `@opentelemetry/instrumentation` as the default export. + * It will be loaded after the API initialization module (if any) and before the hook telemetry module. + * + * This can be used to configure library instrumentations with environment patching. + */ + instrumentationModule: z.string().optional(), + + /** + * The module specifier prefix to use for re-exporting OpenTelemetry APIs. + * + * This should be set by integrations that wrap this OpenTelemetry integration to ensure imports + * from virtual modules can resolve to transitive dependencies. + * + * Default: `@astrojs/opentelemetry/otel-reexport` + */ + reexportPrefix: z.string().optional().default('@astrojs/opentelemetry/otel-reexport'), + }) .optional() .default({}); const adapterModule: Record = { '@astrojs/node': import.meta.resolve('./initialization/node.js'), -} +}; export default function openTelemetry(options?: z.input): AstroIntegration { const parsedOptions = optionsSchema.parse(options); @@ -74,7 +75,9 @@ export default function openTelemetry(options?: z.input): }); if (parsedOptions.apiInitialization === false) { - logger.info('OpenTelemetry API initialization is disabled. Only instrumentation will be registered.'); + logger.info( + 'OpenTelemetry API initialization is disabled. Only instrumentation will be registered.', + ); } else if (command === 'build') { const adapterName = config.adapter?.name; @@ -82,13 +85,15 @@ export default function openTelemetry(options?: z.input): throw new AstroError( 'OpenTelemetry integration requires an adapter to be configured.', // TODO: Link to docs on hint - ) + ); } const adapterInitializer = adapterModule[adapterName]; if (parsedOptions.apiInitialization && adapterInitializer) { - logger.info(`Overriding initialization for the "${adapterName}" adapter with "${parsedOptions.apiInitialization}".`); + logger.info( + `Overriding initialization for the "${adapterName}" adapter with "${parsedOptions.apiInitialization}".`, + ); } const initializer = parsedOptions.apiInitialization || adapterInitializer; diff --git a/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts index f4eda5344588..8353b4da4cb0 100644 --- a/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts +++ b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts @@ -42,7 +42,7 @@ function getEventAttributes(event: TraceEvent): api.Attributes { [sc.ATTR_HTTP_REQUEST_METHOD]: event.payload.request.method, }; case 'middleware': - return { 'astro.middleware.name': event.payload.name } + return { 'astro.middleware.name': event.payload.name }; default: return {}; } diff --git a/packages/integrations/opentelemetry/src/initialization/node.ts b/packages/integrations/opentelemetry/src/initialization/node.ts index 5cab70f98107..ce8183bd72ee 100644 --- a/packages/integrations/opentelemetry/src/initialization/node.ts +++ b/packages/integrations/opentelemetry/src/initialization/node.ts @@ -1,11 +1,7 @@ -import { - HttpInstrumentation, - UndiciInstrumentation, - FetchInstrumentation, -} from 'astro:otel:node'; -import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; import { site } from 'astro:config/server'; +import { FetchInstrumentation, HttpInstrumentation, UndiciInstrumentation } from 'astro:otel:node'; import { instrumentations } from 'astro:otel-internal'; +import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; process.env.OTEL_TRACES_EXPORTER ?? 'otlp'; @@ -32,7 +28,7 @@ const sdk = new NodeSDK({ new UndiciInstrumentation({ enabled: true }), new FetchInstrumentation({ enabled: true }), ...instrumentations, - ] + ], }); // TS claims this doesn't need await, but it does. diff --git a/packages/integrations/opentelemetry/src/otel-reexport/node.ts b/packages/integrations/opentelemetry/src/otel-reexport/node.ts index 94e87c5772c8..ee3693629fcf 100644 --- a/packages/integrations/opentelemetry/src/otel-reexport/node.ts +++ b/packages/integrations/opentelemetry/src/otel-reexport/node.ts @@ -1,3 +1,3 @@ +export { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch'; export { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; export { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici'; -export { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch'; diff --git a/packages/integrations/opentelemetry/src/vite/otel-apis.ts b/packages/integrations/opentelemetry/src/vite/otel-apis.ts index 48fd948746f4..e7841e7d4c2a 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-apis.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-apis.ts @@ -1,9 +1,12 @@ import type { AstroIntegrationLogger } from 'astro'; import type { Plugin } from 'vite'; -export function otelApis({ logger, reexportPrefix }: { - logger: AstroIntegrationLogger, - reexportPrefix: string, +export function otelApis({ + logger, + reexportPrefix, +}: { + logger: AstroIntegrationLogger; + reexportPrefix: string; }): Plugin { return { // All OpenTelemetry dependencies have to be externalized due @@ -17,7 +20,7 @@ export function otelApis({ logger, reexportPrefix }: { async resolveId(id) { if (id.startsWith(reexportPrefix)) { logger.debug(`Externalizing OpenTelemetry dependency: ${id}`); - return { id, external: true, }; + return { id, external: true }; } if (id.startsWith('astro:otel:')) { @@ -30,5 +33,5 @@ export function otelApis({ logger, reexportPrefix }: { }; } }, - } + }; } diff --git a/packages/integrations/opentelemetry/src/vite/otel-helper.ts b/packages/integrations/opentelemetry/src/vite/otel-helper.ts index 136020a2b41a..153a6316b661 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-helper.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-helper.ts @@ -1,5 +1,5 @@ -import { URLSearchParams } from "node:url"; -import type { Plugin } from "vite"; +import { URLSearchParams } from 'node:url'; +import type { Plugin } from 'vite'; const LOGGER_ID = 'astro:otel:logger'; const TRACER_ID = 'astro:otel:tracer'; @@ -13,7 +13,7 @@ const resolveMapping: Record = { [LOGGER_ID]: LOGGER_RESOLVED_ID, [TRACER_ID]: TRACER_RESOLVED_ID, [METER_ID]: METER_RESOLVED_ID, -} +}; export function otelHelper(): Plugin { return { @@ -26,7 +26,7 @@ export function otelHelper(): Plugin { return `${resolved}?${new URLSearchParams({ importer: importer || '' })}`; }, load(id) { - if (!Object.values(resolveMapping).some(resolvedId => id.startsWith(resolvedId))) { + if (!Object.values(resolveMapping).some((resolvedId) => id.startsWith(resolvedId))) { return null; } @@ -57,6 +57,6 @@ export default meter; default: return null; } - } + }, }; } diff --git a/packages/integrations/opentelemetry/src/vite/otel-internal.ts b/packages/integrations/opentelemetry/src/vite/otel-internal.ts index 16909175cb07..a93d595c9d15 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-internal.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-internal.ts @@ -1,15 +1,17 @@ -import type { AstroIntegrationLogger } from "astro"; -import type { Plugin } from "vite"; +import type { AstroIntegrationLogger } from 'astro'; +import type { Plugin } from 'vite'; const MODULE_ID = 'astro:otel-internal'; const RESOLVED_ID = '\0' + MODULE_ID; -export function otelInternalApis({ instrumentationModule }: { +export function otelInternalApis({ + instrumentationModule, +}: { instrumentationModule?: string; - logger: AstroIntegrationLogger + logger: AstroIntegrationLogger; }): Plugin { return { - name: "@astrojs/opentelemetry/internal", + name: '@astrojs/opentelemetry/internal', resolveId(id) { if (id === MODULE_ID) return RESOLVED_ID; }, @@ -19,12 +21,14 @@ export function otelInternalApis({ instrumentationModule }: { const parts: string[] = []; if (instrumentationModule) { - parts.push(`export const instrumentations = await import(${JSON.stringify(instrumentationModule)}).then(m => m.default);`); + parts.push( + `export const instrumentations = await import(${JSON.stringify(instrumentationModule)}).then(m => m.default);`, + ); } else { parts.push(`export const instrumentations = [];`); } return parts.join('\n'); - } + }, }; } From ddb6232e8421daa39020461cf81da606c0ebfd67 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Wed, 13 Aug 2025 10:02:42 -0300 Subject: [PATCH 19/32] WIP --- packages/integrations/opentelemetry/env.d.ts | 6 ++--- .../integrations/opentelemetry/src/index.ts | 14 +++++++---- .../opentelemetry/src/initialization/dev.ts | 25 +++++++++++++++++++ .../src/initialization/hook-telemetry.ts | 4 +-- .../opentelemetry/src/initialization/node.ts | 6 ++--- .../src/vite/{otel-apis.ts => otel-export.ts} | 22 ++++++++++------ .../opentelemetry/src/vite/otel-helper.ts | 6 ++--- 7 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 packages/integrations/opentelemetry/src/initialization/dev.ts rename packages/integrations/opentelemetry/src/vite/{otel-apis.ts => otel-export.ts} (64%) diff --git a/packages/integrations/opentelemetry/env.d.ts b/packages/integrations/opentelemetry/env.d.ts index 3dc70117ca3b..2870766d4e77 100644 --- a/packages/integrations/opentelemetry/env.d.ts +++ b/packages/integrations/opentelemetry/env.d.ts @@ -1,16 +1,16 @@ /// -declare module 'astro:otel:api' { +declare module 'astro:otel-reexport:api' { import * as api from '@opentelemetry/api'; export = api; } -declare module 'astro:otel:semantic-conventions' { +declare module 'astro:otel-reexport:semantic-conventions' { import * as api from '@opentelemetry/semantic-conventions'; export = api; } -declare module 'astro:otel:node' { +declare module 'astro:otel-reexport:node' { import { HttpInstrumentation, UndiciInstrumentation, diff --git a/packages/integrations/opentelemetry/src/index.ts b/packages/integrations/opentelemetry/src/index.ts index 23c01e8383ae..948a86282ed1 100644 --- a/packages/integrations/opentelemetry/src/index.ts +++ b/packages/integrations/opentelemetry/src/index.ts @@ -2,7 +2,7 @@ import { fileURLToPath } from 'node:url'; import type { AstroIntegration } from 'astro'; import { AstroError } from 'astro/errors'; import { z } from 'astro/zod'; -import { otelApis } from './vite/otel-apis.js'; +import { otelReexport } from './vite/otel-export.js'; import { otelHelper } from './vite/otel-helper.js'; import { otelInternalApis } from './vite/otel-internal.js'; @@ -62,23 +62,27 @@ export default function openTelemetry(options?: z.input): updateConfig({ vite: { plugins: [ - otelApis({ logger, reexportPrefix: parsedOptions.reexportPrefix }), + otelHelper(), + otelReexport({ logger, reexportPrefix: parsedOptions.reexportPrefix }), otelInternalApis({ logger, instrumentationModule: parsedOptions.instrumentationModule?.startsWith('.') ? fileURLToPath(new URL(parsedOptions.instrumentationModule, config.root)) : parsedOptions.instrumentationModule, }), - otelHelper(), ], }, }); - if (parsedOptions.apiInitialization === false) { + if (command === 'dev') { + // Node module loading will deduplicate this initialization + // in case the dev server is restarted within the same process. + await import('./initialization/dev.js'); + } else if (parsedOptions.apiInitialization === false) { logger.info( 'OpenTelemetry API initialization is disabled. Only instrumentation will be registered.', ); - } else if (command === 'build') { + } else { const adapterName = config.adapter?.name; if (!adapterName) { diff --git a/packages/integrations/opentelemetry/src/initialization/dev.ts b/packages/integrations/opentelemetry/src/initialization/dev.ts new file mode 100644 index 000000000000..1dba429f6cfd --- /dev/null +++ b/packages/integrations/opentelemetry/src/initialization/dev.ts @@ -0,0 +1,25 @@ +import { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch'; +import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici'; +import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; + +process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; +process.env.OTEL_TRACES_EXPORTER ?? 'otlp,console'; +process.env.OTEL_METRICS_EXPORTER ?? 'otlp,console'; +process.env.OTEL_LOGS_EXPORTER ?? 'otlp,console'; + +const sdk = new NodeSDK({ + autoDetectResources: true, + serviceName: 'astro', + // Always trace requests if the server is running directly. + // It a proxy is running in front of the server and it has already + // made a decision to trace the request or not, follow that decision. + sampler: new tracing.ParentBasedSampler({ + root: new tracing.AlwaysOnSampler(), + }), + instrumentations: [ + new UndiciInstrumentation({ enabled: true }), + new FetchInstrumentation({ enabled: true }), + ], +}); + +sdk.start(); diff --git a/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts index 8353b4da4cb0..6612942a89e6 100644 --- a/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts +++ b/packages/integrations/opentelemetry/src/initialization/hook-telemetry.ts @@ -1,5 +1,5 @@ -import * as api from 'astro:otel:api'; -import * as sc from 'astro:otel:semantic-conventions'; +import * as api from 'astro:otel-reexport:api'; +import * as sc from 'astro:otel-reexport:semantic-conventions'; import { onTraceEvent, type TraceEvent } from 'astro/runtime/server/tracing.js'; const PACKAGE_VERSION = process.env.PACKAGE_VERSION ?? 'development'; diff --git a/packages/integrations/opentelemetry/src/initialization/node.ts b/packages/integrations/opentelemetry/src/initialization/node.ts index ce8183bd72ee..eaac97c332d7 100644 --- a/packages/integrations/opentelemetry/src/initialization/node.ts +++ b/packages/integrations/opentelemetry/src/initialization/node.ts @@ -1,5 +1,5 @@ import { site } from 'astro:config/server'; -import { FetchInstrumentation, HttpInstrumentation, UndiciInstrumentation } from 'astro:otel:node'; +import { FetchInstrumentation, HttpInstrumentation, UndiciInstrumentation } from 'astro:otel-reexport:node'; import { instrumentations } from 'astro:otel-internal'; import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; @@ -31,6 +31,4 @@ const sdk = new NodeSDK({ ], }); -// TS claims this doesn't need await, but it does. -// TODO: Link the issue later -await sdk.start(); +sdk.start(); diff --git a/packages/integrations/opentelemetry/src/vite/otel-apis.ts b/packages/integrations/opentelemetry/src/vite/otel-export.ts similarity index 64% rename from packages/integrations/opentelemetry/src/vite/otel-apis.ts rename to packages/integrations/opentelemetry/src/vite/otel-export.ts index e7841e7d4c2a..8b91d66fdf1c 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-apis.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-export.ts @@ -1,7 +1,7 @@ import type { AstroIntegrationLogger } from 'astro'; import type { Plugin } from 'vite'; -export function otelApis({ +export function otelReexport({ logger, reexportPrefix, }: { @@ -15,20 +15,28 @@ export function otelApis({ // the OpenTelemetry tracking otherwise. // This serves as a workaround for conflicting expectations and restrictions between // strict dependency management, vite and OpenTelemetry. - name: '@astrojs/opentelemetry/otel-apis', + name: '@astrojs/opentelemetry/otel-reexport', enforce: 'pre', async resolveId(id) { if (id.startsWith(reexportPrefix)) { logger.debug(`Externalizing OpenTelemetry dependency: ${id}`); - return { id, external: true }; + const resolvedId = await this.resolve(id); + + return resolvedId && { + ...resolvedId, + external: true, + }; } - if (id.startsWith('astro:otel:')) { - const reexportName = id.slice('astro:otel:'.length); + if (id.startsWith('astro:otel-reexport:')) { + const reexportName = id.slice('astro:otel-reexport:'.length); logger.debug(`Rewriting OpenTelemetry re-export: ${reexportName}`); - return { - id: `${reexportPrefix}/${reexportName}`, + const baseId = `${reexportPrefix}/${reexportName}`; + const resolvedId = await this.resolve(baseId); + + return resolvedId && { + ...resolvedId, external: true, }; } diff --git a/packages/integrations/opentelemetry/src/vite/otel-helper.ts b/packages/integrations/opentelemetry/src/vite/otel-helper.ts index 153a6316b661..a7842854ccbd 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-helper.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-helper.ts @@ -38,19 +38,19 @@ export function otelHelper(): Plugin { switch (component) { case 'logger': return ` -import { logs } from 'astro:otel:api-logs'; +import { logs } from 'astro:otel-reexport:api-logs'; const logger = logs.getLogger(${JSON.stringify(importer)}); export default logger; `.trim(); case 'tracer': return ` -import { trace } from 'astro:otel:api'; +import { trace } from 'astro:otel-reexport:api'; const tracer = trace.getTracer(${JSON.stringify(importer)}); export default tracer; `.trim(); case 'meter': return ` -import { metrics } from 'astro:otel:api'; +import { metrics } from 'astro:otel-reexport:api'; const meter = api.metrics.getMeter(${JSON.stringify(importer)}); export default meter; `.trim(); From fc5a1266446f2d3325375a8892834146f1c1ccaf Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 15 Aug 2025 12:29:27 -0300 Subject: [PATCH 20/32] Setup telemetry and initialization for dev server --- packages/astro/src/core/dev/container.ts | 5 ++++ .../opentelemetry/src/initialization/dev.ts | 4 +-- .../opentelemetry/src/initialization/node.ts | 6 +++- .../opentelemetry/src/vite/otel-export.ts | 29 +++++++++++++------ .../opentelemetry/src/vite/otel-helper.ts | 2 +- 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/packages/astro/src/core/dev/container.ts b/packages/astro/src/core/dev/container.ts index e2da8d7c73fc..2ffe7819c0f3 100644 --- a/packages/astro/src/core/dev/container.ts +++ b/packages/astro/src/core/dev/container.ts @@ -165,5 +165,10 @@ export async function startContainer({ logger, }); + // Run initializers from the dev server + for (const initializer of settings.initializers) { + await viteServer.ssrLoadModule(initializer); + } + return devServerAddressInfo; } diff --git a/packages/integrations/opentelemetry/src/initialization/dev.ts b/packages/integrations/opentelemetry/src/initialization/dev.ts index 1dba429f6cfd..303c16658d28 100644 --- a/packages/integrations/opentelemetry/src/initialization/dev.ts +++ b/packages/integrations/opentelemetry/src/initialization/dev.ts @@ -3,8 +3,8 @@ import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici'; import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; -process.env.OTEL_TRACES_EXPORTER ?? 'otlp,console'; -process.env.OTEL_METRICS_EXPORTER ?? 'otlp,console'; +process.env.OTEL_TRACES_EXPORTER ?? 'otlp'; +process.env.OTEL_METRICS_EXPORTER ?? 'otlp,prometheus'; process.env.OTEL_LOGS_EXPORTER ?? 'otlp,console'; const sdk = new NodeSDK({ diff --git a/packages/integrations/opentelemetry/src/initialization/node.ts b/packages/integrations/opentelemetry/src/initialization/node.ts index eaac97c332d7..970078b50ff5 100644 --- a/packages/integrations/opentelemetry/src/initialization/node.ts +++ b/packages/integrations/opentelemetry/src/initialization/node.ts @@ -1,6 +1,10 @@ import { site } from 'astro:config/server'; -import { FetchInstrumentation, HttpInstrumentation, UndiciInstrumentation } from 'astro:otel-reexport:node'; import { instrumentations } from 'astro:otel-internal'; +import { + FetchInstrumentation, + HttpInstrumentation, + UndiciInstrumentation, +} from 'astro:otel-reexport:node'; import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; diff --git a/packages/integrations/opentelemetry/src/vite/otel-export.ts b/packages/integrations/opentelemetry/src/vite/otel-export.ts index 8b91d66fdf1c..1a4aa55465f5 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-export.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-export.ts @@ -17,15 +17,24 @@ export function otelReexport({ // strict dependency management, vite and OpenTelemetry. name: '@astrojs/opentelemetry/otel-reexport', enforce: 'pre', + config() { + return { + optimizeDeps: { + exclude: ['@opentelemetry/api', '@opentelemetry/api-logs'], + }, + }; + }, async resolveId(id) { - if (id.startsWith(reexportPrefix)) { + if (id.startsWith(reexportPrefix) || id.startsWith('@opentelemetry/')) { logger.debug(`Externalizing OpenTelemetry dependency: ${id}`); const resolvedId = await this.resolve(id); - return resolvedId && { - ...resolvedId, - external: true, - }; + return ( + resolvedId && { + ...resolvedId, + external: true, + } + ); } if (id.startsWith('astro:otel-reexport:')) { @@ -35,10 +44,12 @@ export function otelReexport({ const baseId = `${reexportPrefix}/${reexportName}`; const resolvedId = await this.resolve(baseId); - return resolvedId && { - ...resolvedId, - external: true, - }; + return ( + resolvedId && { + ...resolvedId, + external: true, + } + ); } }, }; diff --git a/packages/integrations/opentelemetry/src/vite/otel-helper.ts b/packages/integrations/opentelemetry/src/vite/otel-helper.ts index a7842854ccbd..14ee2cb8af84 100644 --- a/packages/integrations/opentelemetry/src/vite/otel-helper.ts +++ b/packages/integrations/opentelemetry/src/vite/otel-helper.ts @@ -51,7 +51,7 @@ export default tracer; case 'meter': return ` import { metrics } from 'astro:otel-reexport:api'; -const meter = api.metrics.getMeter(${JSON.stringify(importer)}); +const meter = metrics.getMeter(${JSON.stringify(importer)}); export default meter; `.trim(); default: From 04d80810e4b3cc23f1691f7472ee7e6ccd2c6403 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 15 Aug 2025 13:33:02 -0300 Subject: [PATCH 21/32] API bash instructions --- API-bash.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 API-bash.md diff --git a/API-bash.md b/API-bash.md new file mode 100644 index 000000000000..eebc36f7863d --- /dev/null +++ b/API-bash.md @@ -0,0 +1,24 @@ +1. Pick a project: + +- Example: https://github.com/withastro/astro/tree/fryuni/tracing-hooks/examples/with-telemetry +- New project +- Existing project + +2. Use this version of Astro: https://pkg.pr.new/withastro/astro@fc5a126 +3. Add this integration: https://pkg.pr.new/withastro/astro/@astrojs/opentelemetry@fc5a126 +4. Add the integration to `astro.config.mjs/ts`: + +```ts +import node from '@astrojs/node'; +import opentelemetry from '@astrojs/opentelemetry'; +export default defineConfig({ + adapter: node({ mode: 'standalone' }), + integrations: [opentelemetry()], +}); +``` + +5. Start this docker compose: https://github.com/withastro/astro/blob/fryuni/tracing-hooks/examples/with-telemetry/docker-compose.yml + + Or run `otel-tui`, if you have that installed. + +6. Have fun! From 202fc6fcba9a71ce06dc0aaca7043a35f444a519 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 15 Aug 2025 13:34:26 -0300 Subject: [PATCH 22/32] WIP --- API-bash.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/API-bash.md b/API-bash.md index eebc36f7863d..6080e47d9a3a 100644 --- a/API-bash.md +++ b/API-bash.md @@ -22,3 +22,11 @@ export default defineConfig({ Or run `otel-tui`, if you have that installed. 6. Have fun! + +## New APIs: + +```ts +import tracer from 'astro:otel:tracer'; +import meter from 'astro:otel:meter'; +import logger from 'astro:otel:logger'; +``` From effa5e3d355f210a1eafef5b0e8530cd26900e5b Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 15 Aug 2025 13:36:56 -0300 Subject: [PATCH 23/32] WIP --- API-bash.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/API-bash.md b/API-bash.md index 6080e47d9a3a..cc463b3fa3c1 100644 --- a/API-bash.md +++ b/API-bash.md @@ -23,6 +23,14 @@ export default defineConfig({ 6. Have fun! +## See the data + +Traces will be available on http://localhost:16686/ + +Metrics will be availabe on http://localhost:9090/query + +Logs will be shown on the console + ## New APIs: ```ts From 3c624ac61274371e9e1e5face2e21e65be1bcab0 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Sat, 23 Aug 2025 21:26:43 -0300 Subject: [PATCH 24/32] Improve example --- examples/with-telemetry/astro.config.mts | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/examples/with-telemetry/astro.config.mts b/examples/with-telemetry/astro.config.mts index 71807eabc291..02a862bf4663 100644 --- a/examples/with-telemetry/astro.config.mts +++ b/examples/with-telemetry/astro.config.mts @@ -10,21 +10,7 @@ export default defineConfig({ adapter: node({ mode: 'standalone', }), - integrations: [ - svelte(), - opentelemetry({}), - { - name: 'test-integration', - hooks: { - 'astro:config:setup': ({ addMiddleware }) => { - addMiddleware({ - entrypoint: fileURLToPath(new URL('./src/middleware.ts', import.meta.url)), - order: 'pre', - }); - }, - }, - }, - ], + integrations: [svelte(), opentelemetry()], vite: { build: { sourcemap: true, From b74a37a77167fd4a106f9f7ca1a582030faf48fa Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Thu, 4 Sep 2025 15:15:16 -0300 Subject: [PATCH 25/32] Update packages/integrations/opentelemetry/src/initialization/dev.ts Co-authored-by: Matt Kane --- .../integrations/opentelemetry/src/initialization/dev.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/integrations/opentelemetry/src/initialization/dev.ts b/packages/integrations/opentelemetry/src/initialization/dev.ts index 303c16658d28..440361be2f12 100644 --- a/packages/integrations/opentelemetry/src/initialization/dev.ts +++ b/packages/integrations/opentelemetry/src/initialization/dev.ts @@ -2,10 +2,10 @@ import { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch'; import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici'; import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; -process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; -process.env.OTEL_TRACES_EXPORTER ?? 'otlp'; -process.env.OTEL_METRICS_EXPORTER ?? 'otlp,prometheus'; -process.env.OTEL_LOGS_EXPORTER ?? 'otlp,console'; +process.env.OTEL_PROPAGATORS ??= 'tracecontext,baggage,b3'; +process.env.OTEL_TRACES_EXPORTER ??= 'otlp'; +process.env.OTEL_METRICS_EXPORTER ??= 'otlp,prometheus'; +process.env.OTEL_LOGS_EXPORTER ??= 'otlp,console'; const sdk = new NodeSDK({ autoDetectResources: true, From 9410c07a34f4754ddee0e2f6c37a27d6cbf52c19 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 29 Aug 2025 13:51:16 -0300 Subject: [PATCH 26/32] Simplify tracing hooks and prevent consumers from breaking internal code Signed-off-by: Luiz Ferraz --- packages/astro/src/runtime/server/tracing.ts | 157 +++++++------------ packages/astro/src/types/public/tracing.ts | 3 +- 2 files changed, 56 insertions(+), 104 deletions(-) diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 98c739395e4b..93a7cdf64bf9 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -2,32 +2,13 @@ import type { TraceEvent, TraceEventsPayloads, TraceListener, - TraceWrapListener, } from '../../types/public/tracing.js'; -export type { TraceEvent, TraceEventsPayloads, TraceListener, TraceWrapListener }; +export type { TraceEvent, TraceEventsPayloads, TraceListener, }; -type OperationLifecycle = 'before' | 'onComplete' | 'after'; - -const eventLifecycle: Record = { - before: [], - onComplete: [], - after: [], -}; - -function onTrace(lifecycle: OperationLifecycle, listener: TraceListener, signal?: AbortSignal) { - const wrapped: TraceListener = (...args) => { - try { - const res: unknown = listener(...args); - // Attach an error handler to avoid unhandled promise rejections - if (res instanceof Promise) res.catch(console.error); - } catch (error) { - console.error(error); - } - }; - - const listeners = eventLifecycle[lifecycle]; +const listeners: TraceListener[] = []; +export function onTraceEvent(listener: TraceListener, signal?: AbortSignal) { if (signal) { if (signal.aborted) { // The signal is already aborted, the listener should never be called. @@ -37,60 +18,65 @@ function onTrace(lifecycle: OperationLifecycle, listener: TraceListener, signal? return; } signal.addEventListener('abort', () => { - listeners.splice(listeners.indexOf(wrapped), 1); + listeners.splice(listeners.indexOf(listener), 1); }); } - listeners.push(wrapped); -} - -/** - * @experimental - */ -export function onBeforeTrace(listener: TraceListener, signal?: AbortSignal) { - onTrace('before', listener, signal); -} - -/** - * @experimental - */ -export function onCompleteTrace(listener: TraceListener, signal?: AbortSignal) { - onTrace('onComplete', listener, signal); + listeners.push(listener); } /** - * @experimental + * + * @param event + * @param fn + * @param index + * @returns */ -export function onAfterTrace(listener: TraceListener, signal?: AbortSignal) { - onTrace('after', listener, signal); -} - -const wrapListeners: TraceWrapListener[] = []; - -export function onTraceEvent(listener: TraceWrapListener, signal?: AbortSignal) { - if (signal) { - if (signal.aborted) { - // The signal is already aborted, the listener should never be called. - // Returning early avoids both possible scenarios: - // - The `abort` event is being processed and the listener would be removed depending on a race condition. - // - The `abort` signal was already processed and the listener will never be removed, triggering after the signal is aborted. - return; - } - signal.addEventListener('abort', () => { - wrapListeners.splice(wrapListeners.indexOf(listener), 1); - }); +function sequenceListeners(event: TraceEvent, fn: () => T, index = 0): T { + if (index >= listeners.length) { + return fn(); } - wrapListeners.push(listener); -} + const listener = listeners[index]; + + let state: 'pending' | 'called' | 'failed' = 'pending' + let resultValue: T; + let errorValue: unknown; + // Wrapper to ensure the callback is only called once + // but that always yields the same effect. + const next = () => { + switch (state) { + case 'pending': + try { + resultValue = sequenceListeners(event, fn, index + 1); + } catch (e) { + state = 'failed'; + errorValue = e; + throw e; + } + state = 'called'; + case 'called': + return resultValue!; + case 'failed': + throw errorValue; + } + }; -function wrapCall(event: TraceEvent, fn: () => T, index = 0): T { - if (index >= wrapListeners.length) { - return fn(); + try { + listener(event, () => { + const result = next(); + return result instanceof Promise + // Return a promise that always resolve to void, but only once resultValue resolves. + // This allow tracing listeners to await the completion of the inner function without + // without having access to any internal values. + ? result.then(() => { }) + : undefined; + }); + } catch { + // Ignore errors in listeners to avoid breaking the main flow. } - const listener = wrapListeners[index]; - return listener(event, () => wrapCall(event, fn, index + 1)); + return next(); } export function wrapWithTracing< @@ -104,12 +90,7 @@ export function wrapWithTracing< payload: TraceEventsPayloads[Event] | ((this: This, ...args: Args) => TraceEventsPayloads[Event]), ): (this: This, ...args: Args) => Return { return function (this: This, ...args: Args): Return { - if ( - eventLifecycle.before.length === 0 && - eventLifecycle.onComplete.length === 0 && - eventLifecycle.after.length === 0 && - wrapListeners.length === 0 - ) { + if (listeners.length === 0) { // Avoid constructing payloads and emitting events if no listeners are attached return fn.apply(this, args); } @@ -119,37 +100,9 @@ export function wrapWithTracing< payload: typeof payload === 'function' ? payload.apply(this, args) : payload, } as TraceEvent; - for (const listener of eventLifecycle.before) { - listener(eventArgs); - } - - let result = - wrapListeners.length === 0 - ? fn.apply(this, args) - : wrapCall(eventArgs, () => fn.apply(this, args)); - - if (result instanceof Promise) { - if (eventLifecycle.onComplete.length > 0) { - // Only attach a `finally` handler if there are onComplete listeners. - // This avoids unnecessary entries on the event loop when tracing implementations don't use the `onComplete` hook. - result = result.finally(() => { - // Call hook after the async operation completes - for (const listener of eventLifecycle.onComplete) { - listener(eventArgs); - } - }) as /* Safe to cast because Promise.finally doesn't change the resolved or thrown value. */ Return; - } - } else { - // Operation was synchronous, call onComplete listeners immediately - for (const listener of eventLifecycle.onComplete) { - listener(eventArgs); - } - } - - for (const listener of eventLifecycle.after) { - listener(eventArgs); - } - - return result; + return sequenceListeners( + eventArgs, + () => fn.apply(this, args) + ); }; } diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts index 3609585f4f09..5a8c05187d7d 100644 --- a/packages/astro/src/types/public/tracing.ts +++ b/packages/astro/src/types/public/tracing.ts @@ -56,5 +56,4 @@ export type TraceEvent = { }; }[keyof TraceEventsPayloads]; -export type TraceListener = (event: TraceEvent) => void; -export type TraceWrapListener = (event: TraceEvent, callback: () => T) => T; +export type TraceListener = (event: TraceEvent, callback: (() => void | Promise)) => void; From 4189a6df937f57615cea6c40774921d4b67a103c Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Fri, 29 Aug 2025 14:52:38 -0300 Subject: [PATCH 27/32] WIP tests --- examples/with-telemetry/astro.config.mts | 1 - packages/astro/src/runtime/server/tracing.ts | 33 +- packages/astro/src/types/public/tracing.ts | 2 +- .../tracing-integration/astro.config.mjs | 12 + .../fixtures/tracing-integration/package.json | 8 + .../src/components/NestedContainer.astro | 263 ++++++++ .../src/components/SlotWrapper.astro | 100 ++++ .../src/components/TestComponent.astro | 89 +++ .../src/middleware/index.ts | 30 + .../tracing-integration/src/pages/api/test.ts | 59 ++ .../src/pages/component-test.astro | 55 ++ .../tracing-integration/src/pages/index.astro | 31 + .../src/pages/middleware-test.astro | 157 +++++ .../src/pages/nested-components.astro | 201 +++++++ .../src/pages/slots-test.astro | 113 ++++ .../astro/test/tracing-integration.test.js | 294 +++++++++ .../units/runtime/tracing-edge-cases.test.js | 524 ++++++++++++++++ .../units/runtime/tracing-performance.test.js | 421 +++++++++++++ .../astro/test/units/runtime/tracing.test.js | 560 ++++++++++++++++++ 19 files changed, 2931 insertions(+), 22 deletions(-) create mode 100644 packages/astro/test/fixtures/tracing-integration/astro.config.mjs create mode 100644 packages/astro/test/fixtures/tracing-integration/package.json create mode 100644 packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/components/SlotWrapper.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/components/TestComponent.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts create mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts create mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/component-test.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/index.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/middleware-test.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/nested-components.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/slots-test.astro create mode 100644 packages/astro/test/tracing-integration.test.js create mode 100644 packages/astro/test/units/runtime/tracing-edge-cases.test.js create mode 100644 packages/astro/test/units/runtime/tracing-performance.test.js create mode 100644 packages/astro/test/units/runtime/tracing.test.js diff --git a/examples/with-telemetry/astro.config.mts b/examples/with-telemetry/astro.config.mts index 02a862bf4663..a077f36c0372 100644 --- a/examples/with-telemetry/astro.config.mts +++ b/examples/with-telemetry/astro.config.mts @@ -1,4 +1,3 @@ -import { fileURLToPath } from 'node:url'; import node from '@astrojs/node'; import opentelemetry from '@astrojs/opentelemetry'; import svelte from '@astrojs/svelte'; diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 93a7cdf64bf9..1ed260ca8f37 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -1,10 +1,6 @@ -import type { - TraceEvent, - TraceEventsPayloads, - TraceListener, -} from '../../types/public/tracing.js'; +import type { TraceEvent, TraceEventsPayloads, TraceListener } from '../../types/public/tracing.js'; -export type { TraceEvent, TraceEventsPayloads, TraceListener, }; +export type { TraceEvent, TraceEventsPayloads, TraceListener }; const listeners: TraceListener[] = []; @@ -26,11 +22,11 @@ export function onTraceEvent(listener: TraceListener, signal?: AbortSignal) { } /** - * - * @param event - * @param fn - * @param index - * @returns + * + * @param event + * @param fn + * @param index + * @returns */ function sequenceListeners(event: TraceEvent, fn: () => T, index = 0): T { if (index >= listeners.length) { @@ -39,7 +35,7 @@ function sequenceListeners(event: TraceEvent, fn: () => T, index = 0): T { const listener = listeners[index]; - let state: 'pending' | 'called' | 'failed' = 'pending' + let state: 'pending' | 'called' | 'failed' = 'pending'; let resultValue: T; let errorValue: unknown; // Wrapper to ensure the callback is only called once @@ -66,10 +62,10 @@ function sequenceListeners(event: TraceEvent, fn: () => T, index = 0): T { listener(event, () => { const result = next(); return result instanceof Promise - // Return a promise that always resolve to void, but only once resultValue resolves. - // This allow tracing listeners to await the completion of the inner function without - // without having access to any internal values. - ? result.then(() => { }) + ? // Return a promise that always resolve to void, but only once resultValue resolves. + // This allow tracing listeners to await the completion of the inner function without + // without having access to any internal values. + result.then(() => {}) : undefined; }); } catch { @@ -100,9 +96,6 @@ export function wrapWithTracing< payload: typeof payload === 'function' ? payload.apply(this, args) : payload, } as TraceEvent; - return sequenceListeners( - eventArgs, - () => fn.apply(this, args) - ); + return sequenceListeners(eventArgs, () => fn.apply(this, args)); }; } diff --git a/packages/astro/src/types/public/tracing.ts b/packages/astro/src/types/public/tracing.ts index 5a8c05187d7d..dcc05a4535a6 100644 --- a/packages/astro/src/types/public/tracing.ts +++ b/packages/astro/src/types/public/tracing.ts @@ -56,4 +56,4 @@ export type TraceEvent = { }; }[keyof TraceEventsPayloads]; -export type TraceListener = (event: TraceEvent, callback: (() => void | Promise)) => void; +export type TraceListener = (event: TraceEvent, callback: () => void | Promise) => void; diff --git a/packages/astro/test/fixtures/tracing-integration/astro.config.mjs b/packages/astro/test/fixtures/tracing-integration/astro.config.mjs new file mode 100644 index 000000000000..f6a5067d4c0b --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/astro.config.mjs @@ -0,0 +1,12 @@ +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + // Enable tracing and middleware for testing + experimental: { + // Any experimental features needed for tracing + }, + // Configure for testing environment + server: { + port: 4321, + }, +}); diff --git a/packages/astro/test/fixtures/tracing-integration/package.json b/packages/astro/test/fixtures/tracing-integration/package.json new file mode 100644 index 000000000000..0668483cd118 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/package.json @@ -0,0 +1,8 @@ +{ + "name": "@test/tracing-integration", + "version": "0.0.0", + "private": true, + "dependencies": { + "astro": "workspace:*" + } +} diff --git a/packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro b/packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro new file mode 100644 index 000000000000..4236eeae6232 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro @@ -0,0 +1,263 @@ +--- +import TestComponent from './TestComponent.astro'; +import SlotWrapper from './SlotWrapper.astro'; + +export interface Props { + level: number; + maxLevel: number; + componentData: { + title: string; + count: number; + isActive: boolean; + }; +} + +const { level, maxLevel, componentData } = Astro.props; +const { title, count, isActive } = componentData; + +// Generate data for nested levels +const nestedTitle = `${title} - Level ${level}`; +const nestedCount = count + (level * 10); +const shouldNest = level < maxLevel; +--- + +
+ + +
+ Level {level} + + {Array.from({ length: level }, (_, i) => ( + + ))} + +
+
+ + + {shouldNest && ( +
+

+ Nesting level {level} of {maxLevel} +

+ + + + + + {level < 3 && ( +
+ + +
+ )} +
+ )} + + {!shouldNest && ( +
+

+ 🎯 Reached maximum nesting depth: {maxLevel} +

+
+

Total levels traversed: {level}

+

Final count value: {nestedCount}

+

Component active: {isActive ? 'Yes' : 'No'}

+
+
+ )} +
+ + + + +
+
+ + diff --git a/packages/astro/test/fixtures/tracing-integration/src/components/SlotWrapper.astro b/packages/astro/test/fixtures/tracing-integration/src/components/SlotWrapper.astro new file mode 100644 index 000000000000..2903ad59289e --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/components/SlotWrapper.astro @@ -0,0 +1,100 @@ +--- +export interface Props { + title: string; + className?: string; +} + +const { title, className = '' } = Astro.props; +--- + +
+
+

{title}

+ +
+ +
+ + +
+ +

Default main content

+
+
+
+ +
+ + + +
+
+ + diff --git a/packages/astro/test/fixtures/tracing-integration/src/components/TestComponent.astro b/packages/astro/test/fixtures/tracing-integration/src/components/TestComponent.astro new file mode 100644 index 000000000000..d4d820d77f0b --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/components/TestComponent.astro @@ -0,0 +1,89 @@ +--- +export interface Props { + title: string; + count?: number; + isActive?: boolean; +} + +const { title, count = 0, isActive = false } = Astro.props; + +// Some frontmatter logic to test frontmatter tracing +const computedValue = count * 2; +const statusText = isActive ? 'Active' : 'Inactive'; +const renderTime = new Date().toISOString(); +--- + +
+

{title}

+
+

Count: {count}

+

Computed Value: {computedValue}

+

Status: {statusText}

+

Rendered at: {renderTime}

+ + {count > 0 && ( +
+

This content is conditionally rendered

+
    + {Array.from({ length: Math.min(count, 5) }, (_, i) => ( +
  • Item {i + 1}
  • + ))} +
+
+ )} + + +

Default slot content

+
+
+
+ + diff --git a/packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts b/packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts new file mode 100644 index 000000000000..291a0c8739f6 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts @@ -0,0 +1,30 @@ +import type { MiddlewareHandler } from 'astro'; + +// Generate a simple request ID for testing +function generateRequestId(): string { + return `req_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; +} + +// Simple middleware for testing tracing +export const onRequest: MiddlewareHandler = async (context, next) => { + // Add some data to locals for testing + context.locals.requestId = generateRequestId(); + context.locals.middlewareData = { + timestamp: new Date().toISOString(), + pathname: context.url.pathname, + method: context.request.method, + userAgent: context.request.headers.get('user-agent'), + }; + + // Log middleware execution (for debugging) + console.log(`[Middleware] Processing request: ${context.request.method} ${context.url.pathname}`); + + // Call the next middleware or page + const response = await next(); + + // Add a custom header to verify middleware ran + response.headers.set('X-Middleware-Processed', 'true'); + response.headers.set('X-Request-ID', context.locals.requestId); + + return response; +}; diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts b/packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts new file mode 100644 index 000000000000..e9f7cd287b61 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts @@ -0,0 +1,59 @@ +import type { APIRoute } from 'astro'; + +export const GET: APIRoute = async ({ request, url, locals }) => { + // Simple API endpoint for testing tracing + const timestamp = new Date().toISOString(); + const requestId = locals.requestId || 'no-request-id'; + + // Simulate some processing time + await new Promise(resolve => setTimeout(resolve, 10)); + + const responseData = { + message: 'API endpoint test successful', + timestamp, + requestId, + method: request.method, + url: url.href, + pathname: url.pathname, + searchParams: Object.fromEntries(url.searchParams.entries()), + headers: Object.fromEntries(request.headers.entries()), + middlewareProcessed: request.headers.get('x-middleware-processed') === 'true', + }; + + return new Response(JSON.stringify(responseData, null, 2), { + status: 200, + headers: { + 'Content-Type': 'application/json', + 'X-API-Response': 'true', + 'X-Timestamp': timestamp, + }, + }); +}; + +export const POST: APIRoute = async ({ request, locals }) => { + const timestamp = new Date().toISOString(); + const requestId = locals.requestId || 'no-request-id'; + + let body; + try { + body = await request.json(); + } catch { + body = await request.text(); + } + + const responseData = { + message: 'POST request processed', + timestamp, + requestId, + receivedBody: body, + contentType: request.headers.get('content-type'), + }; + + return new Response(JSON.stringify(responseData, null, 2), { + status: 200, + headers: { + 'Content-Type': 'application/json', + 'X-API-Response': 'true', + }, + }); +}; diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/component-test.astro b/packages/astro/test/fixtures/tracing-integration/src/pages/component-test.astro new file mode 100644 index 000000000000..cc6778d61e21 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/component-test.astro @@ -0,0 +1,55 @@ +--- +// Import a test component to trigger component tracing +import TestComponent from '../components/TestComponent.astro'; + +const props = { + title: "Component Test", + count: 42, + isActive: true +}; +--- + + + + + + + + Tracing Test - Component + + +
+

Component Tracing Test

+

This page tests component instantiation and rendering tracing.

+ +
+

Test Component

+ +
+ +
+

Multiple Components

+ + + +
+ +
+

Nested Components

+
+ + + +
+
+
+ + + + diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/index.astro b/packages/astro/test/fixtures/tracing-integration/src/pages/index.astro new file mode 100644 index 000000000000..c160e427b9e8 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/index.astro @@ -0,0 +1,31 @@ +--- +// Test frontmatter tracing +const message = "Hello from tracing test!"; +const timestamp = new Date().toISOString(); +--- + + + + + + + + Tracing Test - Index + + +
+

Hello from Astro Tracing Test!

+

{message}

+

Generated at: {timestamp}

+ +
+ + diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/middleware-test.astro b/packages/astro/test/fixtures/tracing-integration/src/pages/middleware-test.astro new file mode 100644 index 000000000000..9c4f58cc7ac4 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/middleware-test.astro @@ -0,0 +1,157 @@ +--- +// Test page that will trigger middleware tracing +const requestHeaders = Object.fromEntries(Astro.request.headers.entries()); +const requestMethod = Astro.request.method; +const requestUrl = Astro.url.href; +const timestamp = new Date().toISOString(); + +// Access locals to test middleware functionality +const middlewareData = Astro.locals.middlewareData || 'No middleware data'; +const requestId = Astro.locals.requestId || 'No request ID'; +--- + + + + + + + + Tracing Test - Middleware + + +
+

Middleware Tracing Test

+

This page tests middleware execution tracing.

+ +
+

Request Information

+
+
Method:
+
{requestMethod}
+ +
URL:
+
{requestUrl}
+ +
Timestamp:
+
{timestamp}
+ +
Middleware Data:
+
{middlewareData}
+ +
Request ID:
+
{requestId}
+
+
+ +
+

Request Headers

+ + + + + + + + + {Object.entries(requestHeaders).map(([key, value]) => ( + + + + + ))} + +
HeaderValue
{key}{value}
+
+ +
+

Middleware Testing

+

This page should trigger middleware execution, which should be traced.

+

Check the tracing events to see middleware execution details.

+ +
+
+ +
+ + Test with Query Params +
+
+
+ + + + diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/nested-components.astro b/packages/astro/test/fixtures/tracing-integration/src/pages/nested-components.astro new file mode 100644 index 000000000000..775208d98341 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/nested-components.astro @@ -0,0 +1,201 @@ +--- +import TestComponent from '../components/TestComponent.astro'; +import SlotWrapper from '../components/SlotWrapper.astro'; +import NestedContainer from '../components/NestedContainer.astro'; + +// Test complex nested component structure for tracing +const componentData = [ + { title: "Level 1 - Component A", count: 1, isActive: true }, + { title: "Level 1 - Component B", count: 2, isActive: false }, + { title: "Level 1 - Component C", count: 3, isActive: true }, +]; + +const nestedLevels = 3; +--- + + + + + + + + Tracing Test - Nested Components + + +
+

Nested Components Tracing Test

+

This page tests complex nested component structures to verify tracing order and completeness.

+ +
+

Simple Nesting

+ + + +

Deeply nested content

+
+
+
+
+ +
+

Multiple Nested Containers

+
+ {componentData.map((data, index) => ( + + ))} +
+
+ +
+

Complex Slot Nesting

+ + + + + + + + + + + + + + +

Main Content Header

+
+ + + + + + + + + + + + +
+ + + + +
+
+ +
+

Dynamic Nesting

+
+ {Array.from({ length: 3 }, (_, outerIndex) => ( + + {Array.from({ length: 2 }, (_, innerIndex) => ( + +
+

Dynamic content for component {outerIndex + 1}.{innerIndex + 1}

+ {innerIndex === 1 && ( + + )} +
+
+ ))} +
+ ))} +
+
+ +
+

Recursive-like Structure

+
+ +
+
+
+ + + + diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/slots-test.astro b/packages/astro/test/fixtures/tracing-integration/src/pages/slots-test.astro new file mode 100644 index 000000000000..3e85b8b242b9 --- /dev/null +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/slots-test.astro @@ -0,0 +1,113 @@ +--- +import TestComponent from '../components/TestComponent.astro'; +import SlotWrapper from '../components/SlotWrapper.astro'; +--- + + + + + + + + Tracing Test - Slots + + +
+

Slots Tracing Test

+

This page tests slot rendering tracing.

+ +
+

Default Slot

+ +

This content goes into the default slot

+ +
+
+ +
+

Named Slots

+ + +

Header Slot Content

+

This is in the header slot

+
+ + +
    +
  • Sidebar Item 1
  • +
  • Sidebar Item 2
  • +
  • Sidebar Item 3
  • +
+
+ +

Main content goes here (default slot)

+ + + +

Footer slot content

+ Generated at: {new Date().toISOString()} +
+
+
+ +
+

Nested Slots

+ + + +

Nested Header

+
+ + +

Content inside nested component slot

+
+ + +

Nested Footer

+
+
+
+
+ +
+

Multiple Components with Slots

+
+ + + + + + + + + + + +
+
+
+ + + + diff --git a/packages/astro/test/tracing-integration.test.js b/packages/astro/test/tracing-integration.test.js new file mode 100644 index 000000000000..7640a8a7a9f5 --- /dev/null +++ b/packages/astro/test/tracing-integration.test.js @@ -0,0 +1,294 @@ +import assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; +import { onTraceEvent } from '../dist/runtime/server/tracing.js'; +import { loadFixture } from './test-utils.js'; + +describe('Tracing Integration', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + let devServer; + let events = []; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/tracing-integration/', + }); + }); + + after(async () => { + if (devServer) { + await devServer.stop(); + } + }); + + describe('Development mode tracing', () => { + before(async () => { + events = []; + devServer = await fixture.startDevServer(); + + // Set up tracing listener + onTraceEvent((event, callback) => { + events.push({ + event: event.event, + payload: { ...event.payload }, + timestamp: Date.now(), + }); + return callback(); + }); + }); + + it('should trace route rendering', async () => { + const response = await fixture.fetch('/'); + assert.equal(response.status, 200); + + // Check that route render event was captured + const routeEvents = events.filter((e) => e.event === 'routeRender'); + assert.equal(routeEvents.length, 1); + + const routeEvent = routeEvents[0]; + assert.equal(routeEvent.payload.pathname, '/'); + assert.ok(routeEvent.payload.request); + assert.ok(routeEvent.payload.url); + assert.ok(routeEvent.payload.routeData); + }); + + it('should trace component instantiation and rendering', async () => { + const response = await fixture.fetch('/component-test'); + assert.equal(response.status, 200); + + // Check for component-related events + const componentEvents = events.filter( + (e) => + e.event === 'instantiateComponent' || + e.event === 'componentRender' || + e.event === 'componentFrontmatter', + ); + + assert.ok(componentEvents.length > 0, 'Should have component events'); + + // Find events for our test component + const testComponentEvents = componentEvents.filter( + (e) => + e.payload.componentName === 'TestComponent' || e.payload.displayName === 'TestComponent', + ); + + assert.ok(testComponentEvents.length > 0, 'Should have TestComponent events'); + }); + + it('should trace slot rendering', async () => { + const response = await fixture.fetch('/slots-test'); + assert.equal(response.status, 200); + + // Check for slot render events + const slotEvents = events.filter((e) => e.event === 'slotRender'); + assert.ok(slotEvents.length > 0, 'Should have slot render events'); + + // Check for default slot + const defaultSlotEvents = slotEvents.filter((e) => e.payload.slotName === 'default'); + assert.ok(defaultSlotEvents.length > 0, 'Should have default slot events'); + }); + + it('should trace middleware execution', async () => { + const response = await fixture.fetch('/middleware-test'); + assert.equal(response.status, 200); + + // Check for middleware events + const middlewareEvents = events.filter((e) => e.event === 'middleware'); + assert.ok(middlewareEvents.length > 0, 'Should have middleware events'); + + const middlewareEvent = middlewareEvents[0]; + assert.equal(middlewareEvent.payload.pathname, '/middleware-test'); + assert.ok(middlewareEvent.payload.request); + assert.ok(middlewareEvent.payload.url); + }); + + it('should maintain event order consistency', async () => { + const initialEventCount = events.length; + + const response = await fixture.fetch('/nested-components'); + assert.equal(response.status, 200); + + const newEvents = events.slice(initialEventCount); + + // Route render should be one of the first events + const routeRenderIndex = newEvents.findIndex((e) => e.event === 'routeRender'); + assert.ok(routeRenderIndex >= 0, 'Should have route render event'); + + // Component events should come after route render + const componentEventIndex = newEvents.findIndex((e) => e.event === 'instantiateComponent'); + if (componentEventIndex >= 0) { + assert.ok( + componentEventIndex > routeRenderIndex, + 'Component events should come after route render', + ); + } + }); + + it('should handle API route tracing', async () => { + const response = await fixture.fetch('/api/test'); + assert.equal(response.status, 200); + + const routeEvents = events.filter((e) => e.event === 'routeRender'); + const apiRouteEvent = routeEvents.find((e) => e.payload.pathname === '/api/test'); + + assert.ok(apiRouteEvent, 'Should have API route event'); + assert.equal(apiRouteEvent.payload.pathname, '/api/test'); + }); + }); + + describe('Build mode tracing', () => { + before(async () => { + events = []; + + // Set up tracing listener before build + onTraceEvent((event, callback) => { + events.push({ + event: event.event, + payload: { ...event.payload }, + timestamp: Date.now(), + }); + return callback(); + }); + + await fixture.build(); + }); + + it('should trace during static build', () => { + // Check that events were captured during build + assert.ok(events.length > 0, 'Should have captured events during build'); + + // Should have route render events for static pages + const routeEvents = events.filter((e) => e.event === 'routeRender'); + assert.ok(routeEvents.length > 0, 'Should have route render events during build'); + + // Should have component events + const componentEvents = events.filter( + (e) => e.event === 'instantiateComponent' || e.event === 'componentRender', + ); + assert.ok(componentEvents.length > 0, 'Should have component events during build'); + }); + + it('should include correct build context in events', () => { + const routeEvents = events.filter((e) => e.event === 'routeRender'); + + routeEvents.forEach((event) => { + assert.ok(event.payload.request, 'Should have request object'); + assert.ok(event.payload.url, 'Should have URL object'); + assert.ok(event.payload.pathname, 'Should have pathname'); + assert.ok(event.payload.routeData, 'Should have route data'); + }); + }); + }); + + describe('Error handling in tracing', () => { + before(async () => { + events = []; + + // Set up a listener that might throw errors + onTraceEvent((event, callback) => { + events.push({ + event: event.event, + success: true, + }); + + // Simulate listener error for certain events + if (event.event === 'componentRender' && Math.random() < 0.1) { + throw new Error('Simulated listener error'); + } + + return callback(); + }); + + devServer = await fixture.startDevServer(); + }); + + it('should continue rendering despite listener errors', async () => { + // Make multiple requests to trigger potential listener errors + for (let i = 0; i < 5; i++) { + const response = await fixture.fetch('/'); + assert.equal(response.status, 200); + + const html = await response.text(); + assert.ok(html.includes('Hello'), 'Page should render correctly despite listener errors'); + } + + // Should have captured events even with some listener errors + assert.ok(events.length > 0, 'Should have captured some events'); + }); + }); + + describe('Performance characteristics', () => { + it('should have minimal impact when no listeners are registered', async () => { + // Clear all listeners + const abortController = new AbortController(); + abortController.abort(); + onTraceEvent(() => {}, abortController.signal); + + const startTime = Date.now(); + + // Make requests without any listeners + for (let i = 0; i < 10; i++) { + const response = await fixture.fetch('/'); + assert.equal(response.status, 200); + } + + const endTime = Date.now(); + const duration = endTime - startTime; + + // This is more of a sanity check - the actual performance impact + // would need more sophisticated benchmarking + assert.ok(duration < 5000, 'Should complete requests reasonably quickly without listeners'); + }); + + it('should handle high-frequency events efficiently', async () => { + let eventCount = 0; + + onTraceEvent((_event, callback) => { + eventCount++; + return callback(); + }); + + // Make rapid requests to generate many events + const promises = []; + for (let i = 0; i < 20; i++) { + promises.push(fixture.fetch('/')); + } + + const responses = await Promise.all(promises); + + // All requests should succeed + responses.forEach((response) => { + assert.equal(response.status, 200); + }); + + // Should have captured a reasonable number of events + assert.ok(eventCount > 20, 'Should have captured multiple events per request'); + }); + }); + + describe('AbortSignal integration', () => { + it('should remove listeners when signal is aborted', async () => { + const abortController = new AbortController(); + let listenerCallCount = 0; + + onTraceEvent((_event, callback) => { + listenerCallCount++; + return callback(); + }, abortController.signal); + + // Make a request - listener should be called + await fixture.fetch('/'); + const callsBeforeAbort = listenerCallCount; + assert.ok(callsBeforeAbort > 0, 'Listener should be called before abort'); + + // Abort the signal + abortController.abort(); + + // Make another request - listener should not be called + await fixture.fetch('/'); + const callsAfterAbort = listenerCallCount; + + assert.equal(callsAfterAbort, callsBeforeAbort, 'Listener should not be called after abort'); + }); + }); +}); diff --git a/packages/astro/test/units/runtime/tracing-edge-cases.test.js b/packages/astro/test/units/runtime/tracing-edge-cases.test.js new file mode 100644 index 000000000000..15ec75a660f6 --- /dev/null +++ b/packages/astro/test/units/runtime/tracing-edge-cases.test.js @@ -0,0 +1,524 @@ +import * as assert from 'node:assert/strict'; +import { afterEach, beforeEach, describe, it } from 'node:test'; +import { onTraceEvent, wrapWithTracing } from '../../../dist/runtime/server/tracing.js'; + +describe('Tracing Edge Cases', () => { + let events = []; + let listener; + + beforeEach(() => { + events = []; + listener = (event, callback) => { + events.push({ ...event, callbackCalled: false }); + const result = callback(); + events[events.length - 1].callbackCalled = true; + return result; + }; + }); + + afterEach(() => { + // Clear all listeners by calling onTraceEvent with an aborted signal + const abortController = new AbortController(); + abortController.abort(); + onTraceEvent(() => {}, abortController.signal); + }); + + describe('Memory management', () => { + it('should properly clean up listeners with AbortSignal', () => { + const controllers = []; + let totalCalls = 0; + + // Register multiple listeners with different abort signals + for (let i = 0; i < 10; i++) { + const controller = new AbortController(); + controllers.push(controller); + + onTraceEvent(() => { + totalCalls++; + }, controller.signal); + } + + const wrappedFn = wrapWithTracing('componentRender', () => 'test', { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + // Execute once - should call all 10 listeners + wrappedFn(); + assert.equal(totalCalls, 10); + + // Abort half the controllers + for (let i = 0; i < 5; i++) { + controllers[i].abort(); + } + + // Execute again - should only call remaining 5 listeners + const callsBefore = totalCalls; + wrappedFn(); + assert.equal(totalCalls - callsBefore, 5); + + // Abort remaining controllers + for (let i = 5; i < 10; i++) { + controllers[i].abort(); + } + + // Execute again - should call no listeners + const callsBeforeCleanup = totalCalls; + wrappedFn(); + assert.equal(totalCalls - callsBeforeCleanup, 0); + }); + + it('should handle rapid listener registration and cleanup', () => { + const controllers = []; + let _registeredCount = 0; + let executedCount = 0; + + // Rapidly register and abort listeners + for (let i = 0; i < 100; i++) { + const controller = new AbortController(); + controllers.push(controller); + + onTraceEvent(() => { + executedCount++; + }, controller.signal); + _registeredCount++; + + // Abort every other listener immediately + if (i % 2 === 0) { + controller.abort(); + } + } + + const wrappedFn = wrapWithTracing('componentRender', () => 'test', { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + wrappedFn(); + + // Should only execute the non-aborted listeners (50) + assert.equal(executedCount, 50); + }); + }); + + describe('Error resilience', () => { + it('should handle listeners that throw errors', () => { + const workingListener = (event, callback) => { + events.push({ type: 'working', event: event.event }); + return callback(); + }; + + const errorListener1 = () => { + throw new Error('Error in listener 1'); + }; + + const errorListener2 = () => { + throw new TypeError('Type error in listener 2'); + }; + + const errorListener3 = () => { + throw 'String error'; + }; + + onTraceEvent(workingListener); + onTraceEvent(errorListener1); + onTraceEvent(errorListener2); + onTraceEvent(errorListener3); + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + // Should not throw despite multiple listener errors + const result = wrappedFn(); + assert.equal(result, 'result'); + assert.equal(events.length, 1); + assert.equal(events[0].type, 'working'); + }); + + it('should handle async listener errors', async () => { + const workingListener = async (event, callback) => { + events.push({ type: 'working', event: event.event }); + return await callback(); + }; + + const asyncErrorListener = async () => { + await new Promise((resolve) => setTimeout(resolve, 1)); + throw new Error('Async error'); + }; + + onTraceEvent(workingListener); + onTraceEvent(asyncErrorListener); + + const asyncFn = async () => { + await new Promise((resolve) => setTimeout(resolve, 1)); + return 'async result'; + }; + + const wrappedFn = wrapWithTracing('componentRender', asyncFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = await wrappedFn(); + assert.equal(result, 'async result'); + assert.equal(events.length, 1); + assert.equal(events[0].type, 'working'); + }); + + it('should preserve original function errors even with listener errors', () => { + onTraceEvent(() => { + throw new Error('Listener error'); + }); + + const errorFn = () => { + throw new Error('Original function error'); + }; + + const wrappedFn = wrapWithTracing('componentRender', errorFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + assert.throws( + () => { + wrappedFn(); + }, + { + message: 'Original function error', + }, + ); + }); + }); + + describe('Payload edge cases', () => { + it('should handle payload functions that throw errors', () => { + onTraceEvent(listener); + + const errorPayloadFn = () => { + throw new Error('Payload generation error'); + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, errorPayloadFn); + + // Should still execute the function even if payload generation fails + const result = wrappedFn(); + assert.equal(result, 'result'); + // No events should be recorded due to payload error + assert.equal(events.length, 0); + }); + + it('should handle circular references in payload', () => { + onTraceEvent(listener); + + const circularObj = { name: 'test' }; + circularObj.self = circularObj; + + const payload = { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + circular: circularObj, + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, payload); + + // Should handle circular references gracefully + const result = wrappedFn(); + assert.equal(result, 'result'); + assert.equal(events.length, 1); + assert.equal(events[0].payload.circular.name, 'test'); + }); + + it('should handle very large payloads', () => { + onTraceEvent(listener); + + const largeArray = new Array(10000).fill(0).map((_, i) => ({ + id: i, + data: `item-${i}`, + value: Math.random(), + })); + + const payload = { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + largeData: largeArray, + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, payload); + + const result = wrappedFn(); + assert.equal(result, 'result'); + assert.equal(events.length, 1); + assert.equal(events[0].payload.largeData.length, 10000); + }); + }); + + describe('Callback edge cases', () => { + it('should handle callback that returns undefined', () => { + const undefinedListener = (event, callback) => { + const result = callback(); + events.push({ event: event.event, result }); + return undefined; // Explicitly return undefined + }; + + onTraceEvent(undefinedListener); + + const fn = () => 'function result'; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(); + assert.equal(result, 'function result'); + assert.equal(events.length, 1); + assert.equal(events[0].result, 'function result'); + }); + + it('should handle callback called with wrong context', () => { + const contextChangingListener = (event, callback) => { + // Try to call callback with different context + const result = callback.call({ differentContext: true }); + events.push({ event: event.event, result }); + return result; + }; + + onTraceEvent(contextChangingListener); + + const obj = { + value: 42, + method: function () { + return this.value; + }, + }; + + const wrappedMethod = wrapWithTracing('componentRender', obj.method, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + // Bind the method to preserve context + const boundMethod = wrappedMethod.bind(obj); + const result = boundMethod(); + + assert.equal(result, 42); + assert.equal(events.length, 1); + }); + + it('should handle synchronous callback in async listener', async () => { + const asyncListener = async (event, callback) => { + await new Promise((resolve) => setTimeout(resolve, 1)); + const result = callback(); // Sync callback in async listener + events.push({ event: event.event, result }); + await new Promise((resolve) => setTimeout(resolve, 1)); + return result; + }; + + onTraceEvent(asyncListener); + + const syncFn = () => 'sync result'; + const wrappedFn = wrapWithTracing('componentRender', syncFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(); + assert.equal(result, 'sync result'); + assert.equal(events.length, 1); + }); + }); + + describe('Concurrency edge cases', () => { + it('should handle concurrent wrapped function calls', async () => { + const concurrentListener = (event, callback) => { + events.push({ event: event.event, start: Date.now() }); + const result = callback(); + events[events.length - 1].end = Date.now(); + return result; + }; + + onTraceEvent(concurrentListener); + + const asyncFn = async (delay, id) => { + await new Promise((resolve) => setTimeout(resolve, delay)); + return `result-${id}`; + }; + + const wrappedFn = wrapWithTracing('componentRender', asyncFn, (_delay, id) => ({ + moduleId: `test-${id}.astro`, + componentName: `Test${id}`, + displayName: `Test ${id}`, + request: new Request('http://localhost/'), + response: new Response(), + })); + + // Call multiple times concurrently + const promises = [wrappedFn(10, 1), wrappedFn(5, 2), wrappedFn(15, 3)]; + + const results = await Promise.all(promises); + + assert.deepEqual(results, ['result-1', 'result-2', 'result-3']); + assert.equal(events.length, 3); + + // Verify all events have start and end times + events.forEach((event) => { + assert.ok(event.start); + assert.ok(event.end); + assert.ok(event.end >= event.start); + }); + }); + + it('should handle listener registration during execution', () => { + let executionCount = 0; + + const dynamicListener = (event, callback) => { + executionCount++; + + // Register another listener during execution + if (executionCount === 1) { + onTraceEvent((event, callback) => { + events.push({ type: 'dynamic', event: event.event }); + return callback(); + }); + } + + events.push({ type: 'original', event: event.event }); + return callback(); + }; + + onTraceEvent(dynamicListener); + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + // First call should only trigger original listener + wrappedFn(); + assert.equal(events.length, 1); + assert.equal(events[0].type, 'original'); + + // Second call should trigger both listeners + wrappedFn(); + assert.equal(events.length, 3); // original + original + dynamic + }); + }); + + describe('Type coercion edge cases', () => { + it('should handle non-string event names', () => { + onTraceEvent(listener); + + // This shouldn't normally happen, but test robustness + const fn = () => 'result'; + const wrappedFn = wrapWithTracing(123, fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(); + assert.equal(result, 'result'); + assert.equal(events.length, 1); + assert.equal(events[0].event, 123); + }); + + it('should handle null/undefined payload values', () => { + onTraceEvent(listener); + + const payload = { + moduleId: null, + componentName: undefined, + displayName: '', + request: new Request('http://localhost/'), + response: new Response(), + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, payload); + + const result = wrappedFn(); + assert.equal(result, 'result'); + assert.equal(events.length, 1); + assert.equal(events[0].payload.moduleId, null); + assert.equal(events[0].payload.componentName, undefined); + assert.equal(events[0].payload.displayName, ''); + }); + + it('should handle functions that return different types', () => { + onTraceEvent(listener); + + const testCases = [ + () => 'string', + () => 42, + () => true, + () => null, + () => undefined, + () => ({ object: true }), + () => [1, 2, 3], + () => new Date(), + ]; + + testCases.forEach((fn, index) => { + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: `test-${index}.astro`, + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(); + const expectedResult = fn(); + + if (typeof expectedResult === 'object' && expectedResult !== null) { + assert.deepEqual(result, expectedResult); + } else { + assert.equal(result, expectedResult); + } + }); + + assert.equal(events.length, testCases.length); + }); + }); +}); diff --git a/packages/astro/test/units/runtime/tracing-performance.test.js b/packages/astro/test/units/runtime/tracing-performance.test.js new file mode 100644 index 000000000000..50eaabca2a7b --- /dev/null +++ b/packages/astro/test/units/runtime/tracing-performance.test.js @@ -0,0 +1,421 @@ +import * as assert from 'node:assert/strict'; +import { performance } from 'node:perf_hooks'; +import { afterEach, beforeEach, describe, it } from 'node:test'; +import { onTraceEvent, wrapWithTracing } from '../../../dist/runtime/server/tracing.js'; + +describe('Tracing Performance', () => { + let abortController; + beforeEach(() => { + abortController = new AbortController(); + }); + afterEach(() => { + abortController.abort(); + }); + + describe('Baseline performance', () => { + it('should have minimal overhead when no listeners are registered', () => { + const iterations = 10000; + const fn = (x) => x * 2; + + // Measure unwrapped function + const unwrappedStart = performance.now(); + for (let i = 0; i < iterations; i++) { + fn(i); + } + const unwrappedEnd = performance.now(); + const unwrappedTime = unwrappedEnd - unwrappedStart; + + // Measure wrapped function without listeners + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const wrappedStart = performance.now(); + for (let i = 0; i < iterations; i++) { + wrappedFn(i); + } + const wrappedEnd = performance.now(); + const wrappedTime = wrappedEnd - wrappedStart; + + // Wrapped should not be more than 2x slower than unwrapped + const overhead = wrappedTime / unwrappedTime; + assert.ok( + overhead < 2, + `Overhead too high: ${overhead}x (${wrappedTime}ms vs ${unwrappedTime}ms)`, + ); + }); + + it('should skip payload generation when no listeners are present', () => { + let payloadGenerationCount = 0; + + const expensivePayloadFn = () => { + payloadGenerationCount++; + // Simulate expensive payload generation + const largeArray = new Array(1000).fill(0).map((_, i) => ({ id: i, value: Math.random() })); + return { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + expensiveData: largeArray, + }; + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, expensivePayloadFn); + + // Call function multiple times without listeners + for (let i = 0; i < 100; i++) { + wrappedFn(); + } + + // Payload generation should never be called + assert.equal(payloadGenerationCount, 0); + }); + }); + + describe('Performance with listeners', () => { + it('should handle high-frequency events efficiently', () => { + const iterations = 1000; + const events = []; + + onTraceEvent( + (event, callback) => { + events.push(event.event); + return callback(); + }, + { signal: abortController.signal }, + ); + + const fn = (x) => x * 2; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const start = performance.now(); + for (let i = 0; i < iterations; i++) { + wrappedFn(i); + } + const end = performance.now(); + const totalTime = end - start; + + // Should complete in reasonable time (less than 1 second for 1000 iterations) + assert.ok(totalTime < 1000, `Too slow: ${totalTime}ms for ${iterations} iterations`); + assert.equal(events.length, iterations); + }); + + it('should scale linearly with number of listeners', () => { + const iterations = 100; + const fn = () => 'result'; + + // Test with different numbers of listeners + const listenerCounts = [1, 5, 10, 20]; + const timings = []; + + for (const listenerCount of listenerCounts) { + // Clear previous listeners + const abortController = new AbortController(); + abortController.abort(); + onTraceEvent(() => {}, abortController.signal); + + // Register listeners + for (let i = 0; i < listenerCount; i++) { + onTraceEvent((_event, callback) => callback()); + } + + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const start = performance.now(); + for (let i = 0; i < iterations; i++) { + wrappedFn(); + } + const end = performance.now(); + + timings.push({ + listenerCount, + time: end - start, + timePerIteration: (end - start) / iterations, + }); + } + + // Verify roughly linear scaling + const baseTime = timings[0].timePerIteration; + for (let i = 1; i < timings.length; i++) { + const timing = timings[i]; + const expectedMaxTime = baseTime * timing.listenerCount * 2; // Allow 2x overhead + assert.ok( + timing.timePerIteration < expectedMaxTime, + `Scaling issue: ${timing.listenerCount} listeners took ${timing.timePerIteration}ms/iteration (expected < ${expectedMaxTime}ms)`, + ); + } + }); + + it('should handle async listeners efficiently', async () => { + const iterations = 50; // Fewer iterations for async test + let callbackCount = 0; + + onTraceEvent(async (_event, callback) => { + callbackCount++; + // Small async delay + await new Promise((resolve) => setTimeout(resolve, 1)); + return callback(); + }); + + const asyncFn = async () => { + await new Promise((resolve) => setTimeout(resolve, 1)); + return 'async result'; + }; + + const wrappedFn = wrapWithTracing('componentRender', asyncFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const start = performance.now(); + const promises = []; + for (let i = 0; i < iterations; i++) { + promises.push(wrappedFn()); + } + await Promise.all(promises); + const end = performance.now(); + + const totalTime = end - start; + + // Should complete in reasonable time (account for async overhead) + assert.ok(totalTime < 5000, `Too slow: ${totalTime}ms for ${iterations} async iterations`); + assert.equal(callbackCount, iterations); + }); + }); + + describe('Memory usage patterns', () => { + it('should not leak memory with frequent listener registration/cleanup', () => { + const initialMemory = process.memoryUsage().heapUsed; + const controllers = []; + + // Register and cleanup many listeners + for (let cycle = 0; cycle < 10; cycle++) { + // Register 100 listeners + for (let i = 0; i < 100; i++) { + const controller = new AbortController(); + controllers.push(controller); + onTraceEvent(() => {}, controller.signal); + } + + // Execute some traced functions + const wrappedFn = wrapWithTracing('componentRender', () => 'result', { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + for (let i = 0; i < 10; i++) { + wrappedFn(); + } + + // Cleanup listeners + controllers.forEach((controller) => controller.abort()); + controllers.length = 0; + + // Force garbage collection if available + if (global.gc) { + global.gc(); + } + } + + const finalMemory = process.memoryUsage().heapUsed; + const memoryGrowth = finalMemory - initialMemory; + const memoryGrowthMB = memoryGrowth / (1024 * 1024); + + // Memory growth should be minimal (less than 10MB) + assert.ok(memoryGrowthMB < 10, `Potential memory leak: ${memoryGrowthMB}MB growth`); + }); + + it('should handle large payload objects efficiently', () => { + let eventCount = 0; + + onTraceEvent((event, callback) => { + eventCount++; + // Access payload to ensure it's processed + const payloadSize = JSON.stringify(event.payload).length; + assert.ok(payloadSize > 0); + return callback(); + }); + + // Create a large but realistic payload + const largePayload = { + moduleId: 'test.astro', + componentName: 'LargeComponent', + displayName: 'Large Component with Lots of Data', + request: new Request('http://localhost/large-page?param=' + 'x'.repeat(1000)), + response: new Response(), + componentProps: { + data: new Array(1000).fill(0).map((_, i) => ({ + id: i, + name: `Item ${i}`, + description: `Description for item ${i}`.repeat(10), + metadata: { + created: new Date().toISOString(), + tags: [`tag-${i}`, `category-${i % 10}`, `type-${i % 5}`], + }, + })), + }, + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, largePayload); + + const start = performance.now(); + for (let i = 0; i < 10; i++) { + wrappedFn(); + } + const end = performance.now(); + + const totalTime = end - start; + assert.ok(totalTime < 1000, `Large payload processing too slow: ${totalTime}ms`); + assert.equal(eventCount, 10); + }); + }); + + describe('Edge case performance', () => { + it('should handle many simultaneous wrapped functions', () => { + const functionCount = 100; + const iterations = 10; + let totalEvents = 0; + + onTraceEvent((_event, callback) => { + totalEvents++; + return callback(); + }); + + // Create many different wrapped functions + const wrappedFunctions = []; + for (let i = 0; i < functionCount; i++) { + const fn = (x) => x + i; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: `test-${i}.astro`, + componentName: `Test${i}`, + displayName: `Test ${i}`, + request: new Request('http://localhost/'), + response: new Response(), + }); + wrappedFunctions.push(wrappedFn); + } + + const start = performance.now(); + for (let iteration = 0; iteration < iterations; iteration++) { + for (let i = 0; i < functionCount; i++) { + wrappedFunctions[i](iteration); + } + } + const end = performance.now(); + + const totalTime = end - start; + const expectedEvents = functionCount * iterations; + + assert.equal(totalEvents, expectedEvents); + assert.ok( + totalTime < 2000, + `Too slow for ${functionCount} functions x ${iterations} iterations: ${totalTime}ms`, + ); + }); + + it('should perform well with nested tracing calls', () => { + let eventCount = 0; + + onTraceEvent((_event, callback) => { + eventCount++; + return callback(); + }); + + const createNestedFunction = (depth) => { + if (depth === 0) { + return () => 'base'; + } + + const innerFn = createNestedFunction(depth - 1); + return wrapWithTracing( + 'componentRender', + () => { + return `level-${depth}-${innerFn()}`; + }, + { + moduleId: `nested-${depth}.astro`, + componentName: `Nested${depth}`, + displayName: `Nested Level ${depth}`, + request: new Request('http://localhost/'), + response: new Response(), + }, + ); + }; + + const nestedDepth = 10; + const nestedFn = createNestedFunction(nestedDepth); + + const start = performance.now(); + const result = nestedFn(); + const end = performance.now(); + + const totalTime = end - start; + + assert.ok(result.includes('base')); + assert.equal(eventCount, nestedDepth); + assert.ok(totalTime < 100, `Nested calls too slow: ${totalTime}ms for depth ${nestedDepth}`); + }); + + it('should handle rapid abort signal changes efficiently', () => { + const cycles = 100; + let eventCount = 0; + + const start = performance.now(); + + for (let i = 0; i < cycles; i++) { + const controller = new AbortController(); + + onTraceEvent((_event, callback) => { + eventCount++; + return callback(); + }, controller.signal); + + const wrappedFn = wrapWithTracing('componentRender', () => `result-${i}`, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + wrappedFn(); + controller.abort(); + } + + const end = performance.now(); + const totalTime = end - start; + + assert.equal(eventCount, cycles); + assert.ok( + totalTime < 1000, + `Rapid abort cycles too slow: ${totalTime}ms for ${cycles} cycles`, + ); + }); + }); +}); diff --git a/packages/astro/test/units/runtime/tracing.test.js b/packages/astro/test/units/runtime/tracing.test.js new file mode 100644 index 000000000000..9424bcd9c32c --- /dev/null +++ b/packages/astro/test/units/runtime/tracing.test.js @@ -0,0 +1,560 @@ +import * as assert from 'node:assert/strict'; +import { afterEach, beforeEach, describe, it } from 'node:test'; +import { onTraceEvent, wrapWithTracing } from '../../../dist/runtime/server/tracing.js'; + +describe('Tracing API', () => { + let events = []; + let listener; + + beforeEach(() => { + events = []; + listener = (event, callback) => { + events.push({ ...event, callbackCalled: false }); + const result = callback(); + events[events.length - 1].callbackCalled = true; + return result; + }; + }); + + afterEach(() => { + // Clear all listeners by calling onTraceEvent with an aborted signal + const abortController = new AbortController(); + abortController.abort(); + onTraceEvent(() => {}, abortController.signal); + }); + + describe('onTraceEvent', () => { + it('should register a trace listener', () => { + const mockListener = () => {}; + onTraceEvent(mockListener); + + // Test that the listener was registered by wrapping a function + const wrappedFn = wrapWithTracing('componentRender', () => 'test', { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + // Should execute without error + const result = wrappedFn(); + assert.equal(result, 'test'); + }); + + it('should support AbortSignal for listener cleanup', () => { + const abortController = new AbortController(); + let listenerCalled = false; + + const testListener = () => { + listenerCalled = true; + }; + + onTraceEvent(testListener, abortController.signal); + + // Abort the signal + abortController.abort(); + + // Create a wrapped function + const wrappedFn = wrapWithTracing('componentRender', () => 'test', { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + wrappedFn(); + + // Listener should not have been called + assert.equal(listenerCalled, false); + }); + + it('should not register listener if signal is already aborted', () => { + const abortController = new AbortController(); + abortController.abort(); + + let listenerCalled = false; + const testListener = () => { + listenerCalled = true; + }; + + onTraceEvent(testListener, abortController.signal); + + const wrappedFn = wrapWithTracing('componentRender', () => 'test', { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + wrappedFn(); + + assert.equal(listenerCalled, false); + }); + }); + + describe('wrapWithTracing', () => { + it('should execute function without listeners', () => { + const fn = () => 'test result'; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(); + assert.equal(result, 'test result'); + }); + + it('should call listeners with correct event data', () => { + onTraceEvent(listener); + + const payload = { + moduleId: 'test.astro', + componentName: 'TestComponent', + displayName: 'Test Component', + request: new Request('http://localhost/test'), + response: new Response(), + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, payload); + + const result = wrappedFn(); + + assert.equal(result, 'result'); + assert.equal(events.length, 1); + assert.equal(events[0].event, 'componentRender'); + assert.deepEqual(events[0].payload, payload); + assert.equal(events[0].callbackCalled, true); + }); + + it('should support dynamic payload generation', () => { + onTraceEvent(listener); + + const fn = function (arg1, arg2) { + return `${arg1}-${arg2}`; + }; + + const payloadFn = function (arg1, arg2) { + return { + moduleId: `module-${arg1}`, + componentName: arg2, + displayName: arg2, + request: new Request('http://localhost/'), + response: new Response(), + }; + }; + + const wrappedFn = wrapWithTracing('componentRender', fn, payloadFn); + + const result = wrappedFn('test', 'Component'); + + assert.equal(result, 'test-Component'); + assert.equal(events.length, 1); + assert.equal(events[0].payload.moduleId, 'module-test'); + assert.equal(events[0].payload.componentName, 'Component'); + }); + + it('should preserve function context (this)', () => { + onTraceEvent(listener); + + const obj = { + value: 42, + method: wrapWithTracing( + 'componentRender', + function () { + return this.value; + }, + { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }, + ), + }; + + const result = obj.method(); + assert.equal(result, 42); + }); + + it('should handle async functions', async () => { + onTraceEvent(listener); + + const asyncFn = async () => { + await new Promise((resolve) => setTimeout(resolve, 10)); + return 'async result'; + }; + + const wrappedFn = wrapWithTracing('componentRender', asyncFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = await wrappedFn(); + assert.equal(result, 'async result'); + assert.equal(events.length, 1); + }); + + it('should handle function arguments correctly', () => { + onTraceEvent(listener); + + const fn = (a, b, c) => a + b + c; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(1, 2, 3); + assert.equal(result, 6); + }); + }); + + describe('Multiple listeners', () => { + it('should call all listeners in order', () => { + const callOrder = []; + + const listener1 = (_event, callback) => { + callOrder.push('listener1-start'); + const result = callback(); + callOrder.push('listener1-end'); + return result; + }; + + const listener2 = (_event, callback) => { + callOrder.push('listener2-start'); + const result = callback(); + callOrder.push('listener2-end'); + return result; + }; + + onTraceEvent(listener1); + onTraceEvent(listener2); + + const fn = () => { + callOrder.push('function-executed'); + return 'result'; + }; + + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(); + + assert.equal(result, 'result'); + assert.deepEqual(callOrder, [ + 'listener1-start', + 'listener2-start', + 'function-executed', + 'listener2-end', + 'listener1-end', + ]); + }); + + it('should handle listener errors gracefully', () => { + const workingListener = (event, callback) => { + events.push({ type: 'working', event }); + return callback(); + }; + + const errorListener = (_event, _callback) => { + throw new Error('Listener error'); + }; + + onTraceEvent(workingListener); + onTraceEvent(errorListener); + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + // Should not throw despite listener error + const result = wrappedFn(); + assert.equal(result, 'result'); + assert.equal(events.length, 1); + assert.equal(events[0].type, 'working'); + }); + }); + + describe('Event types', () => { + beforeEach(() => { + onTraceEvent(listener); + }); + + it('should handle instantiateComponent events', () => { + const payload = { + moduleId: 'Component.astro', + componentName: 'Component', + displayName: 'Component', + request: new Request('http://localhost/'), + response: new Response(), + }; + + const wrappedFn = wrapWithTracing('instantiateComponent', () => 'result', payload); + wrappedFn(); + + assert.equal(events[0].event, 'instantiateComponent'); + assert.deepEqual(events[0].payload, payload); + }); + + it('should handle componentFrontmatter events', () => { + const payload = { + moduleId: 'Component.astro', + name: 'Component', + request: new Request('http://localhost/'), + response: new Response(), + }; + + const wrappedFn = wrapWithTracing('componentFrontmatter', () => 'result', payload); + wrappedFn(); + + assert.equal(events[0].event, 'componentFrontmatter'); + assert.deepEqual(events[0].payload, payload); + }); + + it('should handle slotRender events', () => { + const payload = { + slotName: 'default', + componentModuleId: 'Component.astro', + componentName: 'Component', + }; + + const wrappedFn = wrapWithTracing('slotRender', () => 'result', payload); + wrappedFn(); + + assert.equal(events[0].event, 'slotRender'); + assert.deepEqual(events[0].payload, payload); + }); + + it('should handle routeRender events', () => { + const payload = { + rootModuleId: 'page.astro', + request: new Request('http://localhost/test'), + clientAddress: '127.0.0.1', + pathname: '/test', + routeData: { route: '/test' }, + url: new URL('http://localhost/test'), + partial: false, + }; + + const wrappedFn = wrapWithTracing('routeRender', () => 'result', payload); + wrappedFn(); + + assert.equal(events[0].event, 'routeRender'); + assert.deepEqual(events[0].payload, payload); + }); + + it('should handle middleware events', () => { + const payload = { + name: 'auth', + pathname: '/protected', + url: new URL('http://localhost/protected'), + request: new Request('http://localhost/protected'), + }; + + const wrappedFn = wrapWithTracing('middleware', () => 'result', payload); + wrappedFn(); + + assert.equal(events[0].event, 'middleware'); + assert.deepEqual(events[0].payload, payload); + }); + }); + + describe('Callback behavior', () => { + it('should handle async callbacks', async () => { + let _callbackResult; + + const asyncListener = async (_event, callback) => { + _callbackResult = await callback(); + }; + + onTraceEvent(asyncListener); + + const asyncFn = async () => { + await new Promise((resolve) => setTimeout(resolve, 10)); + return 'async result'; + }; + + const wrappedFn = wrapWithTracing('componentRender', asyncFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = await wrappedFn(); + assert.equal(result, 'async result'); + }); + + it('should handle callback called multiple times', () => { + let callCount = 0; + + const multiCallListener = (_event, callback) => { + // Call callback multiple times + callback(); + callback(); + const result = callback(); + callCount++; + return result; + }; + + onTraceEvent(multiCallListener); + + let fnCallCount = 0; + const fn = () => { + fnCallCount++; + return 'result'; + }; + + const wrappedFn = wrapWithTracing('componentRender', fn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + const result = wrappedFn(); + + assert.equal(result, 'result'); + assert.equal(callCount, 1); + assert.equal(fnCallCount, 1); // Function should only be called once + }); + + it('should preserve errors thrown by wrapped function', () => { + onTraceEvent(listener); + + const errorFn = () => { + throw new Error('Function error'); + }; + + const wrappedFn = wrapWithTracing('componentRender', errorFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + assert.throws( + () => { + wrappedFn(); + }, + { + message: 'Function error', + }, + ); + }); + + it('should handle errors in callback gracefully', () => { + let errorCaught = false; + + const errorHandlingListener = (_event, callback) => { + try { + return callback(); + } catch (error) { + errorCaught = true; + throw error; + } + }; + + onTraceEvent(errorHandlingListener); + + const errorFn = () => { + throw new Error('Function error'); + }; + + const wrappedFn = wrapWithTracing('componentRender', errorFn, { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }); + + assert.throws( + () => { + wrappedFn(); + }, + { + message: 'Function error', + }, + ); + + assert.equal(errorCaught, true); + }); + }); + + describe('Performance optimization', () => { + it('should skip event creation when no listeners are registered', () => { + let payloadFnCalled = false; + + const payloadFn = () => { + payloadFnCalled = true; + return { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }; + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, payloadFn); + + const result = wrappedFn(); + + assert.equal(result, 'result'); + assert.equal(payloadFnCalled, false); // Payload function should not be called + }); + + it('should create payload when listeners are present', () => { + onTraceEvent(listener); + + let payloadFnCalled = false; + + const payloadFn = () => { + payloadFnCalled = true; + return { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }; + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, payloadFn); + + const result = wrappedFn(); + + assert.equal(result, 'result'); + assert.equal(payloadFnCalled, true); // Payload function should be called + }); + }); +}); From 0b62164819b186ee0afdbbd00f56feac5716c3a6 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Wed, 10 Sep 2025 16:34:39 -0300 Subject: [PATCH 28/32] Put tracing behind an experimental flag --- packages/astro/src/container/index.ts | 2 ++ packages/astro/src/core/app/types.ts | 1 + packages/astro/src/core/build/generate.ts | 1 + .../src/core/build/plugins/plugin-manifest.ts | 1 + .../astro/src/core/config/schemas/base.ts | 5 ++++ packages/astro/src/manifest/virtual-module.ts | 1 + packages/astro/src/runtime/server/tracing.ts | 23 +++++++++++++++---- packages/astro/src/types/public/config.ts | 16 +++++++++++++ packages/astro/src/types/public/manifest.ts | 2 +- .../src/vite-plugin-astro-server/plugin.ts | 1 + 10 files changed, 48 insertions(+), 5 deletions(-) diff --git a/packages/astro/src/container/index.ts b/packages/astro/src/container/index.ts index df400ae85ec6..08c12a520021 100644 --- a/packages/astro/src/container/index.ts +++ b/packages/astro/src/container/index.ts @@ -162,6 +162,7 @@ function createManifest( middleware: manifest?.middleware ?? middlewareInstance, key: createKey(), csp: manifest?.csp, + enableTracing: manifest?.enableTracing ?? false, }; } @@ -248,6 +249,7 @@ type AstroContainerManifest = Pick< | 'outDir' | 'cacheDir' | 'csp' + | 'enableTracing' >; type AstroContainerConstructor = { diff --git a/packages/astro/src/core/app/types.ts b/packages/astro/src/core/app/types.ts index c736eda5eb4b..6fb8a36fe124 100644 --- a/packages/astro/src/core/app/types.ts +++ b/packages/astro/src/core/app/types.ts @@ -93,6 +93,7 @@ export type SSRManifest = { buildClientDir: string | URL; buildServerDir: string | URL; csp: SSRManifestCSP | undefined; + enableTracing: boolean; }; export type SSRActions = { diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 511484bb17e7..d058f27fb25d 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -742,5 +742,6 @@ async function createBuildManifest( (settings.config.security?.checkOrigin && settings.buildOutput === 'server') ?? false, key, csp, + enableTracing: settings.config.experimental.enableTracing, }; } diff --git a/packages/astro/src/core/build/plugins/plugin-manifest.ts b/packages/astro/src/core/build/plugins/plugin-manifest.ts index 86d5aefd1702..d0cc4789719b 100644 --- a/packages/astro/src/core/build/plugins/plugin-manifest.ts +++ b/packages/astro/src/core/build/plugins/plugin-manifest.ts @@ -371,5 +371,6 @@ async function buildManifest( key: encodedKey, sessionConfig: settings.config.session, csp, + enableTracing: settings.config.experimental.enableTracing, }; } diff --git a/packages/astro/src/core/config/schemas/base.ts b/packages/astro/src/core/config/schemas/base.ts index 3b6d12f0d278..29305892b6ee 100644 --- a/packages/astro/src/core/config/schemas/base.ts +++ b/packages/astro/src/core/config/schemas/base.ts @@ -104,6 +104,7 @@ export const ASTRO_CONFIG_DEFAULTS = { csp: false, staticImportMetaEnv: false, chromeDevtoolsWorkspace: false, + enableTracing: false, }, } satisfies AstroUserConfig & { server: { open: boolean } }; @@ -510,6 +511,10 @@ export const AstroConfigSchema = z.object({ .boolean() .optional() .default(ASTRO_CONFIG_DEFAULTS.experimental.chromeDevtoolsWorkspace), + enableTracing: z + .boolean() + .optional() + .default(ASTRO_CONFIG_DEFAULTS.experimental.enableTracing), }) .strict( `Invalid or outdated experimental feature.\nCheck for incorrect spelling or outdated Astro version.\nSee https://docs.astro.build/en/reference/experimental-flags/ for a list of all current experiments.`, diff --git a/packages/astro/src/manifest/virtual-module.ts b/packages/astro/src/manifest/virtual-module.ts index 7a44b822dfd4..3883cc72e5d2 100644 --- a/packages/astro/src/manifest/virtual-module.ts +++ b/packages/astro/src/manifest/virtual-module.ts @@ -99,6 +99,7 @@ function serializeServerConfig(manifest: SSRManifest): string { trailingSlash: manifest.trailingSlash, site: manifest.site, compressHTML: manifest.compressHTML, + enableTracing: manifest.enableTracing, }; const output = []; for (const [key, value] of Object.entries(serverConfig)) { diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 1ed260ca8f37..22bdcb2dfb83 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -1,3 +1,4 @@ +import type { ServerDeserializedManifest } from '../../types/public/index.js'; import type { TraceEvent, TraceEventsPayloads, TraceListener } from '../../types/public/tracing.js'; export type { TraceEvent, TraceEventsPayloads, TraceListener }; @@ -22,11 +23,12 @@ export function onTraceEvent(listener: TraceListener, signal?: AbortSignal) { } /** + * A wrapper to call listeners in sequence, ensuring that each listener is + * called once and only once, even if some of them don't call the `next` callback + * or call it multiple times. * - * @param event - * @param fn - * @param index - * @returns + * This ensures that the presence of tracing listeners cannot interfere with + * other tracing listeners or the function being traced. */ function sequenceListeners(event: TraceEvent, fn: () => T, index = 0): T { if (index >= listeners.length) { @@ -75,6 +77,15 @@ function sequenceListeners(event: TraceEvent, fn: () => T, index = 0): T { return next(); } +// TODO: Figure out why this module is being reported as unknown +const tracingEnabled = await import('astro:config/server' as any) + .then((m: ServerDeserializedManifest) => m.enableTracing) + // Tracing enabled in case of import errors to allow testing and + // dev environments outside of Vite. + // Once the feature is stabilized this flag wouldn't be needed since tracing + // always be enabled (disabling by not having listeners instead of a config flag). + .catch(() => true); + export function wrapWithTracing< This, Args extends any[], @@ -85,6 +96,10 @@ export function wrapWithTracing< fn: (this: This, ...args: Args) => Return, payload: TraceEventsPayloads[Event] | ((this: This, ...args: Args) => TraceEventsPayloads[Event]), ): (this: This, ...args: Args) => Return { + if (!tracingEnabled) { + return fn; + } + return function (this: This, ...args: Args): Return { if (listeners.length === 0) { // Avoid constructing payloads and emitting events if no listeners are attached diff --git a/packages/astro/src/types/public/config.ts b/packages/astro/src/types/public/config.ts index 63ead016bf70..836a4068b35c 100644 --- a/packages/astro/src/types/public/config.ts +++ b/packages/astro/src/types/public/config.ts @@ -2483,6 +2483,22 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * See the [experimental Chrome DevTools workspace feature documentation](https://docs.astro.build/en/reference/experimental-flags/chrome-devtools-workspace/) for more information. */ chromeDevtoolsWorkspace?: boolean; + + /** + * @name experimental.enableTracing + * @type {boolean} + * @default `false` + * @version 5.14 + * @description + * + * Enables tracing functionality for Astro internals. + * + * This allows users and integrations to subscribe to events describing internal + * Astro processes during rendering or build. + * + * Without this flag, no tracing events will be emitted even if subscribers are registered. + */ + enableTracing?: boolean; }; } diff --git a/packages/astro/src/types/public/manifest.ts b/packages/astro/src/types/public/manifest.ts index 83cbb6a09d81..fdecbe2e71f0 100644 --- a/packages/astro/src/types/public/manifest.ts +++ b/packages/astro/src/types/public/manifest.ts @@ -21,7 +21,7 @@ type DeserializedDirs = Extend; export type ServerDeserializedManifest = Pick< SSRManifest, - 'base' | 'trailingSlash' | 'compressHTML' | 'site' + 'base' | 'trailingSlash' | 'compressHTML' | 'site' | 'enableTracing' > & DeserializedDirs & { i18n: AstroConfig['i18n']; diff --git a/packages/astro/src/vite-plugin-astro-server/plugin.ts b/packages/astro/src/vite-plugin-astro-server/plugin.ts index 447e7369d916..766ec36a59e3 100644 --- a/packages/astro/src/vite-plugin-astro-server/plugin.ts +++ b/packages/astro/src/vite-plugin-astro-server/plugin.ts @@ -285,5 +285,6 @@ export function createDevelopmentManifest(settings: AstroSettings): SSRManifest }, sessionConfig: settings.config.session, csp, + enableTracing: settings.config.experimental.enableTracing ?? false, }; } From 268c5931b1f37107f6e028c1e805fcb170ca799e Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Wed, 10 Sep 2025 19:24:59 -0300 Subject: [PATCH 29/32] Dedupe deps --- pnpm-lock.yaml | 450 +++++++------------------------------------------ 1 file changed, 62 insertions(+), 388 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a53825aecd13..a3131e02bc67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -391,7 +391,7 @@ importers: devDependencies: '@types/node': specifier: ^18.17.8 - version: 18.19.50 + version: 18.19.120 astro: specifier: ^5.13.7 version: link:../../packages/astro @@ -481,7 +481,7 @@ importers: version: link:../../packages/astro svelte: specifier: ^5.25.7 - version: 5.37.1 + version: 5.38.8 examples/with-vitest: dependencies: @@ -5765,7 +5765,7 @@ importers: version: link:../../../scripts vite: specifier: ^6.3.4 - version: 6.3.5(@types/node@22.13.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.0) + version: 6.3.6(@types/node@22.13.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.0) packages/integrations/partytown: dependencies: @@ -6426,7 +6426,7 @@ importers: version: 1.1.5 '@types/node': specifier: ^18.17.8 - version: 18.19.50 + version: 18.19.120 '@types/which-pm-runs': specifier: ^1.0.2 version: 1.0.2 @@ -6643,11 +6643,6 @@ packages: resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.4': resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} @@ -6730,10 +6725,6 @@ packages: resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.0': - resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.28.1': resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} @@ -7855,12 +7846,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8204,9 +8189,6 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -8372,10 +8354,6 @@ packages: resolution: {integrity: sha512-aL9DP/BpXNq86p4zCuWOgqd1a8Nvnbip9iiMuY5EcWzyAuiEPFeGnIUIGuGtBGtMnDE9AedUl+w9vXJZyDa1pQ==} engines: {node: '>=18.0.0'} - '@netlify/headers-parser@9.0.1': - resolution: {integrity: sha512-KHKNVNtzWUkUQhttHsLA217xIjUQxBOY5RCMRkR77G5pH1Sca9gqGhnMvk3KfRol/OZK2/1k83ZpYuvMswsK/w==} - engines: {node: '>=18.14.0'} - '@netlify/headers-parser@9.0.2': resolution: {integrity: sha512-86YEGPxVemhksY1LeSr8NSOyH11RHvYHq+FuBJnTlPZoRDX+TD+0TAxF6lwzAgVTd1VPkyFEHlNgUGqw7aNzRQ==} engines: {node: '>=18.14.0'} @@ -8392,10 +8370,6 @@ packages: resolution: {integrity: sha512-zXnRFkxgNsalSgU8/vwTWnav3R+8KG8SsqHxqaoJdjjJtnZR7wo3f+qqu4z+WtZ/4V7fly91HFUwZ6Uz2OdW7w==} engines: {node: '>=14.8.0'} - '@netlify/redirect-parser@15.0.2': - resolution: {integrity: sha512-zS6qBHpmU7IpHGzrHNPqu+Tjvh1cAJuVEoFUvCp0lRUeNcTdIq9VZM7/34vtIN6MD/OMFg3uv80yefSqInV2nA==} - engines: {node: '>=18.14.0'} - '@netlify/redirect-parser@15.0.3': resolution: {integrity: sha512-/HB3fcRRNgf6O/pbLn4EYNDHrU2kiadMMnazg8/OjvQK2S9i4y61vQcrICvDxYKUKQdgeEaABUuaCNAJFnfD9w==} engines: {node: '>=18.14.0'} @@ -9225,9 +9199,6 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -9279,9 +9250,6 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -9297,9 +9265,6 @@ packages: '@types/node@18.19.120': resolution: {integrity: sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==} - '@types/node@18.19.50': - resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.13.1': resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==} @@ -9386,12 +9351,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.38.0': - resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.43.0': resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9402,12 +9361,6 @@ packages: resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.38.0': - resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/tsconfig-utils@8.43.0': resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9421,20 +9374,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.38.0': - resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.43.0': resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.38.0': - resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.43.0': resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9448,10 +9391,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.38.0': - resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.43.0': resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9611,15 +9550,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.5.18': - resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} - '@vue/compiler-core@3.5.21': resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==} - '@vue/compiler-dom@3.5.18': - resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} - '@vue/compiler-dom@3.5.21': resolution: {integrity: sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==} @@ -9660,9 +9593,6 @@ packages: '@vue/shared@3.1.5': resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} - '@vue/shared@3.5.18': - resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} - '@vue/shared@3.5.21': resolution: {integrity: sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==} @@ -9720,11 +9650,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -9961,11 +9886,6 @@ packages: brotli@1.3.3: resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.25.4: resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -10025,9 +9945,6 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001702: - resolution: {integrity: sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==} - caniuse-lite@1.0.30001741: resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} @@ -10667,9 +10584,6 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.112: - resolution: {integrity: sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==} - electron-to-chromium@1.5.215: resolution: {integrity: sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==} @@ -11214,9 +11128,6 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - h3@1.15.3: - resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} - h3@1.15.4: resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} @@ -11548,10 +11459,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - jiti@2.5.1: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true @@ -11863,9 +11770,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} - loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} @@ -11886,9 +11790,6 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} @@ -12292,9 +12193,6 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} - node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} @@ -12322,9 +12220,6 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-mock-http@1.0.1: - resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==} - node-mock-http@1.0.3: resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} @@ -13468,9 +13363,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.8.1: - resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} - std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} @@ -13585,10 +13477,6 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.37.1: - resolution: {integrity: sha512-h8arWpQZ+3z8eahyBT5KkiBOUsG6xvI5Ykg0ozRr9xEdImgSMUPUlOFWRNkUsT7Ti0DSUCTEbPoped0aoxFyWA==} - engines: {node: '>=18'} - svelte@5.38.8: resolution: {integrity: sha512-UDpTbM/iuZ4MaMnn4ODB3rf5JKDyPOi5oJcopP0j7YHQ9BuJtsAqsR71r2N6AnJf7ygbalTJU5y8eSWGAQZjlQ==} engines: {node: '>=18'} @@ -14091,46 +13979,6 @@ packages: peerDependencies: vue: '>=3.2.13' - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@6.3.6: resolution: {integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -14632,7 +14480,7 @@ snapshots: dependencies: '@astrojs/compiler': 2.12.2 '@astrojs/yaml2ts': 0.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@volar/kit': 2.4.6(typescript@5.9.2) '@volar/language-core': 2.4.6 '@volar/language-server': 2.4.6 @@ -14674,10 +14522,10 @@ snapshots: '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) '@babel/helpers': 7.27.6 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -14688,21 +14536,21 @@ snapshots: '@babel/generator@7.28.0': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.0.2 '@babel/helper-annotate-as-pure@7.27.1': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.27.2 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.24.4 + browserslist: 4.25.4 lru-cache: 5.1.1 semver: 6.3.1 @@ -14724,18 +14572,18 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.18.6': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -14750,7 +14598,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@babel/helper-plugin-utils@7.27.1': {} @@ -14766,7 +14614,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -14779,11 +14627,7 @@ snapshots: '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 - - '@babel/parser@7.28.0': - dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@babel/parser@7.28.4': dependencies: @@ -14847,7 +14691,7 @@ snapshots: '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.28.0) - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -14869,26 +14713,21 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.0 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 debug: 4.4.1 transitivePeerDependencies: - supports-color - '@babel/types@7.28.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.1': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -15806,11 +15645,6 @@ snapshots: '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.35.0(jiti@2.5.1))': - dependencies: - eslint: 9.35.0(jiti@2.5.1) - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@2.5.1))': dependencies: eslint: 9.35.0(jiti@2.5.1) @@ -16077,7 +15911,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.12': dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/remapping@2.3.5': @@ -16087,19 +15921,17 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@js-sdsl/ordered-map@4.4.2': {} @@ -16277,8 +16109,8 @@ snapshots: dependencies: '@iarna/toml': 2.2.5 '@netlify/api': 14.0.3 - '@netlify/headers-parser': 9.0.1 - '@netlify/redirect-parser': 15.0.2 + '@netlify/headers-parser': 9.0.2 + '@netlify/redirect-parser': 15.0.3 chalk: 5.4.1 cron-parser: 4.9.0 deepmerge: 4.3.1 @@ -16407,15 +16239,6 @@ snapshots: - rollup - supports-color - '@netlify/headers-parser@9.0.1': - dependencies: - '@iarna/toml': 2.2.5 - escape-string-regexp: 5.0.0 - fast-safe-stringify: 2.1.1 - is-plain-obj: 4.1.0 - map-obj: 5.0.2 - path-exists: 5.0.0 - '@netlify/headers-parser@9.0.2': dependencies: '@iarna/toml': 2.2.5 @@ -16455,14 +16278,6 @@ snapshots: '@netlify/open-api@2.37.0': {} - '@netlify/redirect-parser@15.0.2': - dependencies: - '@iarna/toml': 2.2.5 - fast-safe-stringify: 2.1.1 - filter-obj: 6.1.0 - is-plain-obj: 4.1.0 - path-exists: 5.0.0 - '@netlify/redirect-parser@15.0.3': dependencies: '@iarna/toml': 2.2.5 @@ -16525,7 +16340,7 @@ snapshots: '@netlify/zip-it-and-ship-it@14.1.7(rollup@4.50.1)': dependencies: - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@babel/types': 7.28.1 '@netlify/binary-info': 1.0.0 '@netlify/serverless-functions-api': 2.5.0 @@ -17161,10 +16976,6 @@ snapshots: dependencies: solid-js: 1.9.9 - '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)': - dependencies: - acorn: 8.14.1 - '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': dependencies: acorn: 8.15.0 @@ -17283,24 +17094,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@types/canvas-confetti@1.9.0': {} @@ -17314,7 +17125,7 @@ snapshots: '@types/debug@4.1.12': dependencies: - '@types/ms': 0.7.34 + '@types/ms': 2.1.0 '@types/deep-diff@1.0.5': {} @@ -17328,8 +17139,6 @@ snapshots: dependencies: '@types/estree': 1.0.8 - '@types/estree@1.0.7': {} - '@types/estree@1.0.8': {} '@types/fontkit@2.0.8': @@ -17378,8 +17187,6 @@ snapshots: '@types/mime@1.3.5': {} - '@types/ms@0.7.34': {} - '@types/ms@2.1.0': {} '@types/nlcst@2.0.3': @@ -17394,10 +17201,6 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@18.19.50': - dependencies: - undici-types: 5.26.5 - '@types/node@22.13.1': dependencies: undici-types: 6.20.0 @@ -17410,7 +17213,7 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 18.19.50 + '@types/node': 18.19.120 kleur: 3.0.3 '@types/prop-types@15.7.12': {} @@ -17439,7 +17242,7 @@ snapshots: '@types/server-destroy@1.0.4': dependencies: - '@types/node': 18.19.50 + '@types/node': 18.19.120 '@types/triple-beam@1.3.5': {} @@ -17459,7 +17262,7 @@ snapshots: '@types/xml2js@0.4.14': dependencies: - '@types/node': 18.19.50 + '@types/node': 18.19.120 '@types/yargs-parser@21.0.3': {} @@ -17497,15 +17300,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.38.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.2) - '@typescript-eslint/types': 8.38.0 - debug: 4.4.1 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) @@ -17520,10 +17314,6 @@ snapshots: '@typescript-eslint/types': 8.43.0 '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.9.2)': - dependencies: - typescript: 5.9.2 - '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 @@ -17540,26 +17330,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.38.0': {} - '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.38.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/project-service': 8.38.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.2) - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 - debug: 4.4.1 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': dependencies: '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) @@ -17578,7 +17350,7 @@ snapshots: '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) '@typescript-eslint/scope-manager': 8.43.0 '@typescript-eslint/types': 8.43.0 '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) @@ -17587,11 +17359,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.38.0': - dependencies: - '@typescript-eslint/types': 8.38.0 - eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.43.0': dependencies: '@typescript-eslint/types': 8.43.0 @@ -17808,10 +17575,10 @@ snapshots: '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.28.0) '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@vue/babel-helper-vue-transform-on': 1.4.0 '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.28.0) - '@vue/shared': 3.5.18 + '@vue/shared': 3.5.21 optionalDependencies: '@babel/core': 7.28.0 transitivePeerDependencies: @@ -17823,19 +17590,11 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@vue/compiler-sfc': 3.5.21 transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.5.18': - dependencies: - '@babel/parser': 7.28.0 - '@vue/shared': 3.5.18 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - '@vue/compiler-core@3.5.21': dependencies: '@babel/parser': 7.28.4 @@ -17844,11 +17603,6 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.18': - dependencies: - '@vue/compiler-core': 3.5.18 - '@vue/shared': 3.5.18 - '@vue/compiler-dom@3.5.21': dependencies: '@vue/compiler-core': 3.5.21 @@ -17925,8 +17679,6 @@ snapshots: '@vue/shared@3.1.5': {} - '@vue/shared@3.5.18': {} - '@vue/shared@3.5.21': {} '@webcomponents/template-shadowroot@0.2.1': {} @@ -17983,8 +17735,6 @@ snapshots: acorn@8.14.0: {} - acorn@8.14.1: {} - acorn@8.15.0: {} agent-base@7.1.3: {} @@ -18148,8 +17898,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001702 + browserslist: 4.25.4 + caniuse-lite: 1.0.30001741 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -18173,7 +17923,7 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.28.0) - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 html-entities: 2.3.3 validate-html-nesting: 1.2.2 @@ -18269,13 +18019,6 @@ snapshots: dependencies: base64-js: 1.5.1 - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001702 - electron-to-chromium: 1.5.112 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) - browserslist@4.25.4: dependencies: caniuse-lite: 1.0.30001741 @@ -18327,8 +18070,6 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001702: {} - caniuse-lite@1.0.30001741: {} canvas-confetti@1.9.3: {} @@ -18340,7 +18081,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.3 + loupe: 3.2.1 pathval: 2.0.0 chalk@4.1.2: @@ -18736,7 +18477,7 @@ snapshots: detective-typescript@14.0.0(typescript@5.9.2): dependencies: - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) ast-module-types: 6.0.1 node-source-walk: 7.0.1 typescript: 5.9.2 @@ -18828,8 +18569,6 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.112: {} - electron-to-chromium@1.5.215: {} emmet@2.4.7: @@ -19037,7 +18776,7 @@ snapshots: eslint-plugin-regexp@2.10.0(eslint@9.35.0(jiti@2.5.1)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 eslint: 9.35.0(jiti@2.5.1) @@ -19115,7 +18854,7 @@ snapshots: esrap@2.1.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 esrecurse@4.3.0: dependencies: @@ -19156,7 +18895,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esutils@2.0.3: {} @@ -19531,18 +19270,6 @@ snapshots: graphemer@1.4.0: {} - h3@1.15.3: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.5 - defu: 6.1.4 - destr: 2.0.5 - iron-webcrypto: 1.2.1 - node-mock-http: 1.0.1 - radix3: 1.1.2 - ufo: 1.6.1 - uncrypto: 0.1.3 - h3@1.15.4: dependencies: cookie-es: 1.2.2 @@ -19856,7 +19583,7 @@ snapshots: defu: 6.1.4 destr: 2.0.5 etag: 1.8.1 - h3: 1.15.3 + h3: 1.15.4 image-meta: 0.2.1 listhen: 1.9.0 ofetch: 1.4.1 @@ -19976,8 +19703,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@2.4.2: {} - jiti@2.5.1: {} jpeg-js@0.4.4: {} @@ -20079,7 +19804,7 @@ snapshots: '@types/node': 18.19.120 fast-glob: 3.3.3 formatly: 0.2.4 - jiti: 2.4.2 + jiti: 2.5.1 js-yaml: 4.1.0 minimist: 1.2.8 oxc-resolver: 11.6.0 @@ -20198,13 +19923,13 @@ snapshots: crossws: 0.3.5 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.15.3 + h3: 1.15.4 http-shutdown: 1.2.2 - jiti: 2.4.2 + jiti: 2.5.1 mlly: 1.7.4 node-forge: 1.3.1 pathe: 1.1.2 - std-env: 3.8.1 + std-env: 3.9.0 ufo: 1.6.1 untun: 0.1.3 uqr: 0.1.2 @@ -20296,8 +20021,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.3: {} - loupe@3.2.1: {} lower-case@2.0.2: @@ -20314,18 +20037,14 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 source-map-js: 1.2.1 manage-path@2.0.0: {} @@ -20974,8 +20693,6 @@ snapshots: node-domexception@1.0.0: {} - node-fetch-native@1.6.6: {} - node-fetch-native@1.6.7: {} node-fetch@2.7.0: @@ -20997,8 +20714,6 @@ snapshots: css-select: 5.1.0 he: 1.2.0 - node-mock-http@1.0.1: {} - node-mock-http@1.0.3: {} node-mocks-http@1.17.2(@types/node@22.13.1): @@ -21020,7 +20735,7 @@ snapshots: node-source-walk@7.0.1: dependencies: - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 node-stream-zip@1.15.0: {} @@ -21060,7 +20775,7 @@ snapshots: ofetch@1.4.1: dependencies: destr: 2.0.5 - node-fetch-native: 1.6.6 + node-fetch-native: 1.6.7 ufo: 1.6.1 ohash@2.0.11: {} @@ -22385,7 +22100,7 @@ snapshots: dependencies: '@babel/generator': 7.28.0 '@babel/helper-module-imports': 7.27.1 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 solid-js: 1.9.9 transitivePeerDependencies: - supports-color @@ -22445,8 +22160,6 @@ snapshots: statuses@2.0.1: {} - std-env@3.8.1: {} - std-env@3.9.0: {} stoppable@1.1.0: {} @@ -22564,27 +22277,10 @@ snapshots: svelte: 5.38.8 typescript: 5.9.2 - svelte@5.37.1: - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.0 - '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1) - '@types/estree': 1.0.7 - acorn: 8.14.1 - aria-query: 5.3.2 - axobject-query: 4.1.0 - clsx: 2.1.1 - esm-env: 1.2.1 - esrap: 2.1.0 - is-reference: 3.0.3 - locate-character: 3.0.0 - magic-string: 0.30.17 - zimmerframe: 1.1.2 - svelte@5.38.8: dependencies: '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) '@types/estree': 1.0.8 acorn: 8.15.0 @@ -22938,12 +22634,6 @@ snapshots: consola: 3.4.2 pathe: 1.1.2 - update-browserslist-db@1.1.3(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - update-browserslist-db@1.1.3(browserslist@4.25.4): dependencies: browserslist: 4.25.4 @@ -23074,7 +22764,7 @@ snapshots: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.28.0) '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.28.0) - '@vue/compiler-dom': 3.5.18 + '@vue/compiler-dom': 3.5.21 kolorist: 1.8.0 magic-string: 0.30.19 vite: 6.3.6(@types/node@22.13.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.0) @@ -23094,22 +22784,6 @@ snapshots: svgo: 3.3.2 vue: 3.5.21(typescript@5.9.2) - vite@6.3.5(@types/node@22.13.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.0): - dependencies: - esbuild: 0.25.5 - fdir: 6.4.4(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.50.1 - tinyglobby: 0.2.14 - optionalDependencies: - '@types/node': 22.13.1 - fsevents: 2.3.3 - jiti: 2.5.1 - lightningcss: 1.30.1 - sass: 1.92.1 - yaml: 2.8.0 - vite@6.3.6(@types/node@22.13.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.0): dependencies: esbuild: 0.25.5 From 684dc1255bf8699d1be2225f863e76d4bf34cb72 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Wed, 10 Sep 2025 19:46:50 -0300 Subject: [PATCH 30/32] Fix default env values for Node telemetry --- .../integrations/opentelemetry/src/initialization/node.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/integrations/opentelemetry/src/initialization/node.ts b/packages/integrations/opentelemetry/src/initialization/node.ts index 970078b50ff5..e1b925f834d6 100644 --- a/packages/integrations/opentelemetry/src/initialization/node.ts +++ b/packages/integrations/opentelemetry/src/initialization/node.ts @@ -7,10 +7,10 @@ import { } from 'astro:otel-reexport:node'; import { NodeSDK, tracing } from '@opentelemetry/sdk-node'; -process.env.OTEL_PROPAGATORS ?? 'tracecontext,baggage,b3'; -process.env.OTEL_TRACES_EXPORTER ?? 'otlp'; -process.env.OTEL_METRICS_EXPORTER ?? 'otlp'; -process.env.OTEL_LOGS_EXPORTER ?? 'otlp,console'; +process.env.OTEL_PROPAGATORS ??= 'tracecontext,baggage,b3'; +process.env.OTEL_TRACES_EXPORTER ??= 'otlp'; +process.env.OTEL_METRICS_EXPORTER ??= 'otlp'; +process.env.OTEL_LOGS_EXPORTER ??= 'otlp,console'; const sdk = new NodeSDK({ autoDetectResources: true, From 7042a1e8179eb24b20c52c7c1e2d928b64722c83 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Thu, 11 Sep 2025 13:22:05 -0300 Subject: [PATCH 31/32] Docs and unit tests --- packages/astro/src/runtime/server/tracing.ts | 63 ++- .../units/runtime/tracing-edge-cases.test.js | 421 +++--------------- .../units/runtime/tracing-performance.test.js | 421 ------------------ .../astro/test/units/runtime/tracing.test.js | 272 ++++------- 4 files changed, 218 insertions(+), 959 deletions(-) delete mode 100644 packages/astro/test/units/runtime/tracing-performance.test.js diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 22bdcb2dfb83..6237110ac25e 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -5,6 +5,32 @@ export type { TraceEvent, TraceEventsPayloads, TraceListener }; const listeners: TraceListener[] = []; +/** + * Register a trace listener that will be called on every trace event. + * + * The listener can optionally be associated with an AbortSignal to + * automatically remove it when the signal is aborted. + * If the signal is already aborted or is aborting, the listener will not be registered. + * + * Listeners are called in the order they are registered. + * Each listener receives the trace event and a `next` callback. + * Calling the `next` callback will invoke the next listener in the chain, + * or the traced function if there are no more listeners. + * + * Not calling `next` means the next listener or the traced function will + * be called automatically after the current listener returns. + * Calling `next` multiple times will have no effect after the first call, + * the same value or error will be returned to the caller without invoking + * the next listener or the traced function again. + * + * Since trace events can describe both synchronous and asynchronous operations, + * listeners MUST invoke the `next` function synchronously if they ever do invoke it. + * A listener must not return a promise that can reject, such a promise rejection + * will not be handled and trigger an unhandled promise rejection error on the runtime. + * + * @param listener The listener function to register. + * @param signal An optional AbortSignal to remove the listener when aborted. + */ export function onTraceEvent(listener: TraceListener, signal?: AbortSignal) { if (signal) { if (signal.aborted) { @@ -22,6 +48,23 @@ export function onTraceEvent(listener: TraceListener, signal?: AbortSignal) { listeners.push(listener); } +/** + * Get the number of trace listeners currently registered. + * Primarily useful for tests to check how many listeners are active + * after some operation. + */ +export function getTraceListenersCount() { + return listeners.length; +} + +/** + * Clear all trace listeners. + * Primarily useful for tests to ensure no listeners are leaking between tests. + */ +export function clearTraceListeners() { + listeners.length = 0; +} + /** * A wrapper to call listeners in sequence, ensuring that each listener is * called once and only once, even if some of them don't call the `next` callback @@ -63,17 +106,25 @@ function sequenceListeners(event: TraceEvent, fn: () => T, index = 0): T { try { listener(event, () => { const result = next(); - return result instanceof Promise - ? // Return a promise that always resolve to void, but only once resultValue resolves. - // This allow tracing listeners to await the completion of the inner function without - // without having access to any internal values. - result.then(() => {}) - : undefined; + if (result instanceof Promise) { + // Return a promise that always resolve to void, but only once + // resultValue resolves. This allow tracing listeners to await + // the completion of the inner function without without having + // access to any internal values. + const hiddenResult = result.then(() => {}); + // Prevent unhandled promise rejections in case the inner promise fails. + hiddenResult.catch(() => { + /* ignore */ + }); + return hiddenResult; + } }); } catch { // Ignore errors in listeners to avoid breaking the main flow. } + // Return the result of `fn`, calling next handles deduplication + // in case it was already called by the listener. return next(); } diff --git a/packages/astro/test/units/runtime/tracing-edge-cases.test.js b/packages/astro/test/units/runtime/tracing-edge-cases.test.js index 15ec75a660f6..554f5f1bbf33 100644 --- a/packages/astro/test/units/runtime/tracing-edge-cases.test.js +++ b/packages/astro/test/units/runtime/tracing-edge-cases.test.js @@ -1,40 +1,29 @@ import * as assert from 'node:assert/strict'; -import { afterEach, beforeEach, describe, it } from 'node:test'; -import { onTraceEvent, wrapWithTracing } from '../../../dist/runtime/server/tracing.js'; +import { afterEach, describe, it } from 'node:test'; +import { + clearTraceListeners, + onTraceEvent, + wrapWithTracing, +} from '../../../dist/runtime/server/tracing.js'; describe('Tracing Edge Cases', () => { - let events = []; - let listener; - - beforeEach(() => { - events = []; - listener = (event, callback) => { - events.push({ ...event, callbackCalled: false }); - const result = callback(); - events[events.length - 1].callbackCalled = true; - return result; - }; - }); - afterEach(() => { - // Clear all listeners by calling onTraceEvent with an aborted signal - const abortController = new AbortController(); - abortController.abort(); - onTraceEvent(() => {}, abortController.signal); + clearTraceListeners(); }); describe('Memory management', () => { it('should properly clean up listeners with AbortSignal', () => { const controllers = []; - let totalCalls = 0; + let calls = []; // Register multiple listeners with different abort signals for (let i = 0; i < 10; i++) { const controller = new AbortController(); controllers.push(controller); + const currentIndex = i; onTraceEvent(() => { - totalCalls++; + calls.push(currentIndex); }, controller.signal); } @@ -48,7 +37,7 @@ describe('Tracing Edge Cases', () => { // Execute once - should call all 10 listeners wrappedFn(); - assert.equal(totalCalls, 10); + assert.deepEqual(calls, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); // Abort half the controllers for (let i = 0; i < 5; i++) { @@ -56,9 +45,9 @@ describe('Tracing Edge Cases', () => { } // Execute again - should only call remaining 5 listeners - const callsBefore = totalCalls; + calls = []; wrappedFn(); - assert.equal(totalCalls - callsBefore, 5); + assert.deepEqual(calls, [5, 6, 7, 8, 9]); // Abort remaining controllers for (let i = 5; i < 10; i++) { @@ -66,25 +55,24 @@ describe('Tracing Edge Cases', () => { } // Execute again - should call no listeners - const callsBeforeCleanup = totalCalls; + calls = []; wrappedFn(); - assert.equal(totalCalls - callsBeforeCleanup, 0); + assert.deepEqual(calls, []); }); - it('should handle rapid listener registration and cleanup', () => { + it('should handle immediately aborting after registration', () => { const controllers = []; - let _registeredCount = 0; - let executedCount = 0; + let calls = []; - // Rapidly register and abort listeners - for (let i = 0; i < 100; i++) { + // Immediately abort half of the listeners after registering + for (let i = 0; i < 30; i++) { + const currentIndex = i; const controller = new AbortController(); controllers.push(controller); onTraceEvent(() => { - executedCount++; + calls.push(currentIndex); }, controller.signal); - _registeredCount++; // Abort every other listener immediately if (i % 2 === 0) { @@ -103,15 +91,15 @@ describe('Tracing Edge Cases', () => { wrappedFn(); // Should only execute the non-aborted listeners (50) - assert.equal(executedCount, 50); + assert.deepEqual(calls, [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29]); }); }); describe('Error resilience', () => { it('should handle listeners that throw errors', () => { - const workingListener = (event, callback) => { - events.push({ type: 'working', event: event.event }); - return callback(); + let workingCalled = false; + const workingListener = () => { + workingCalled = true; }; const errorListener1 = () => { @@ -126,9 +114,9 @@ describe('Tracing Edge Cases', () => { throw 'String error'; }; - onTraceEvent(workingListener); onTraceEvent(errorListener1); onTraceEvent(errorListener2); + onTraceEvent(workingListener); onTraceEvent(errorListener3); const fn = () => 'result'; @@ -142,42 +130,8 @@ describe('Tracing Edge Cases', () => { // Should not throw despite multiple listener errors const result = wrappedFn(); - assert.equal(result, 'result'); - assert.equal(events.length, 1); - assert.equal(events[0].type, 'working'); - }); - - it('should handle async listener errors', async () => { - const workingListener = async (event, callback) => { - events.push({ type: 'working', event: event.event }); - return await callback(); - }; - - const asyncErrorListener = async () => { - await new Promise((resolve) => setTimeout(resolve, 1)); - throw new Error('Async error'); - }; - - onTraceEvent(workingListener); - onTraceEvent(asyncErrorListener); - - const asyncFn = async () => { - await new Promise((resolve) => setTimeout(resolve, 1)); - return 'async result'; - }; - - const wrappedFn = wrapWithTracing('componentRender', asyncFn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - const result = await wrappedFn(); - assert.equal(result, 'async result'); - assert.equal(events.length, 1); - assert.equal(events[0].type, 'working'); + assert.deepEqual(result, 'result'); + assert.ok(workingCalled, 'Working listener should have been called'); }); it('should preserve original function errors even with listener errors', () => { @@ -197,99 +151,30 @@ describe('Tracing Edge Cases', () => { response: new Response(), }); - assert.throws( - () => { - wrappedFn(); - }, - { - message: 'Original function error', - }, - ); + assert.throws(wrappedFn, { + message: 'Original function error', + }); }); }); - describe('Payload edge cases', () => { - it('should handle payload functions that throw errors', () => { - onTraceEvent(listener); - - const errorPayloadFn = () => { - throw new Error('Payload generation error'); - }; - - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, errorPayloadFn); - - // Should still execute the function even if payload generation fails - const result = wrappedFn(); - assert.equal(result, 'result'); - // No events should be recorded due to payload error - assert.equal(events.length, 0); - }); - - it('should handle circular references in payload', () => { - onTraceEvent(listener); + describe('Listeners edge cases', () => { + it('should handle listener registration during execution', () => { + let calls = []; - const circularObj = { name: 'test' }; - circularObj.self = circularObj; + const staticListener = () => { + calls.push('static'); - const payload = { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - circular: circularObj, + // Register another listener during execution + if (calls.length === 1) { + onTraceEvent(() => { + calls.push('dynamic'); + }); + } }; - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, payload); - - // Should handle circular references gracefully - const result = wrappedFn(); - assert.equal(result, 'result'); - assert.equal(events.length, 1); - assert.equal(events[0].payload.circular.name, 'test'); - }); - - it('should handle very large payloads', () => { - onTraceEvent(listener); - - const largeArray = new Array(10000).fill(0).map((_, i) => ({ - id: i, - data: `item-${i}`, - value: Math.random(), - })); - - const payload = { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - largeData: largeArray, - }; + onTraceEvent(staticListener); const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, payload); - - const result = wrappedFn(); - assert.equal(result, 'result'); - assert.equal(events.length, 1); - assert.equal(events[0].payload.largeData.length, 10000); - }); - }); - - describe('Callback edge cases', () => { - it('should handle callback that returns undefined', () => { - const undefinedListener = (event, callback) => { - const result = callback(); - events.push({ event: event.event, result }); - return undefined; // Explicitly return undefined - }; - - onTraceEvent(undefinedListener); - - const fn = () => 'function result'; const wrappedFn = wrapWithTracing('componentRender', fn, { moduleId: 'test.astro', componentName: 'Test', @@ -298,58 +183,23 @@ describe('Tracing Edge Cases', () => { response: new Response(), }); - const result = wrappedFn(); - assert.equal(result, 'function result'); - assert.equal(events.length, 1); - assert.equal(events[0].result, 'function result'); + wrappedFn(); + assert.deepEqual(calls, ['static', 'dynamic']); }); - it('should handle callback called with wrong context', () => { - const contextChangingListener = (event, callback) => { - // Try to call callback with different context - const result = callback.call({ differentContext: true }); - events.push({ event: event.event, result }); - return result; - }; - - onTraceEvent(contextChangingListener); + it('should handle listener registration during signal abort handling', () => { + const controller = new AbortController(); - const obj = { - value: 42, - method: function () { - return this.value; - }, - }; + let calls = []; - const wrappedMethod = wrapWithTracing('componentRender', obj.method, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), + controller.signal.addEventListener('abort', () => { + onTraceEvent(() => { + calls.push('called'); + }, controller.signal); }); - // Bind the method to preserve context - const boundMethod = wrappedMethod.bind(obj); - const result = boundMethod(); - - assert.equal(result, 42); - assert.equal(events.length, 1); - }); - - it('should handle synchronous callback in async listener', async () => { - const asyncListener = async (event, callback) => { - await new Promise((resolve) => setTimeout(resolve, 1)); - const result = callback(); // Sync callback in async listener - events.push({ event: event.event, result }); - await new Promise((resolve) => setTimeout(resolve, 1)); - return result; - }; - - onTraceEvent(asyncListener); - - const syncFn = () => 'sync result'; - const wrappedFn = wrapWithTracing('componentRender', syncFn, { + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, { moduleId: 'test.astro', componentName: 'Test', displayName: 'Test', @@ -357,73 +207,23 @@ describe('Tracing Edge Cases', () => { response: new Response(), }); - const result = wrappedFn(); - assert.equal(result, 'sync result'); - assert.equal(events.length, 1); + wrappedFn(); + assert.deepEqual(calls, [], 'Listener with aborting signal should be ignored'); }); - }); - - describe('Concurrency edge cases', () => { - it('should handle concurrent wrapped function calls', async () => { - const concurrentListener = (event, callback) => { - events.push({ event: event.event, start: Date.now() }); - const result = callback(); - events[events.length - 1].end = Date.now(); - return result; - }; - - onTraceEvent(concurrentListener); - - const asyncFn = async (delay, id) => { - await new Promise((resolve) => setTimeout(resolve, delay)); - return `result-${id}`; - }; - - const wrappedFn = wrapWithTracing('componentRender', asyncFn, (_delay, id) => ({ - moduleId: `test-${id}.astro`, - componentName: `Test${id}`, - displayName: `Test ${id}`, - request: new Request('http://localhost/'), - response: new Response(), - })); - - // Call multiple times concurrently - const promises = [wrappedFn(10, 1), wrappedFn(5, 2), wrappedFn(15, 3)]; - - const results = await Promise.all(promises); - assert.deepEqual(results, ['result-1', 'result-2', 'result-3']); - assert.equal(events.length, 3); + it('should handle listeners calling next multiple times', () => { + let valuesFromNext = []; - // Verify all events have start and end times - events.forEach((event) => { - assert.ok(event.start); - assert.ok(event.end); - assert.ok(event.end >= event.start); + onTraceEvent((_event, next) => { + valuesFromNext.push(next()); + valuesFromNext.push(next()); }); - }); - - it('should handle listener registration during execution', () => { - let executionCount = 0; - - const dynamicListener = (event, callback) => { - executionCount++; - - // Register another listener during execution - if (executionCount === 1) { - onTraceEvent((event, callback) => { - events.push({ type: 'dynamic', event: event.event }); - return callback(); - }); - } - events.push({ type: 'original', event: event.event }); - return callback(); + let internalCalls = 0; + const fn = () => { + internalCalls++; + return { message: 'result' }; }; - - onTraceEvent(dynamicListener); - - const fn = () => 'result'; const wrappedFn = wrapWithTracing('componentRender', fn, { moduleId: 'test.astro', componentName: 'Test', @@ -432,93 +232,12 @@ describe('Tracing Edge Cases', () => { response: new Response(), }); - // First call should only trigger original listener - wrappedFn(); - assert.equal(events.length, 1); - assert.equal(events[0].type, 'original'); - - // Second call should trigger both listeners wrappedFn(); - assert.equal(events.length, 3); // original + original + dynamic - }); - }); - - describe('Type coercion edge cases', () => { - it('should handle non-string event names', () => { - onTraceEvent(listener); - - // This shouldn't normally happen, but test robustness - const fn = () => 'result'; - const wrappedFn = wrapWithTracing(123, fn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - const result = wrappedFn(); - assert.equal(result, 'result'); - assert.equal(events.length, 1); - assert.equal(events[0].event, 123); - }); - - it('should handle null/undefined payload values', () => { - onTraceEvent(listener); - - const payload = { - moduleId: null, - componentName: undefined, - displayName: '', - request: new Request('http://localhost/'), - response: new Response(), - }; - - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, payload); - - const result = wrappedFn(); - assert.equal(result, 'result'); - assert.equal(events.length, 1); - assert.equal(events[0].payload.moduleId, null); - assert.equal(events[0].payload.componentName, undefined); - assert.equal(events[0].payload.displayName, ''); - }); - - it('should handle functions that return different types', () => { - onTraceEvent(listener); - - const testCases = [ - () => 'string', - () => 42, - () => true, - () => null, - () => undefined, - () => ({ object: true }), - () => [1, 2, 3], - () => new Date(), - ]; - - testCases.forEach((fn, index) => { - const wrappedFn = wrapWithTracing('componentRender', fn, { - moduleId: `test-${index}.astro`, - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - const result = wrappedFn(); - const expectedResult = fn(); - - if (typeof expectedResult === 'object' && expectedResult !== null) { - assert.deepEqual(result, expectedResult); - } else { - assert.equal(result, expectedResult); - } - }); - - assert.equal(events.length, testCases.length); + assert.equal(internalCalls, 1, 'Original function should be called only once'); + assert.ok( + Object.is(valuesFromNext[0], valuesFromNext[1]), + 'Both next() calls should return the same value', + ); }); }); }); diff --git a/packages/astro/test/units/runtime/tracing-performance.test.js b/packages/astro/test/units/runtime/tracing-performance.test.js deleted file mode 100644 index 50eaabca2a7b..000000000000 --- a/packages/astro/test/units/runtime/tracing-performance.test.js +++ /dev/null @@ -1,421 +0,0 @@ -import * as assert from 'node:assert/strict'; -import { performance } from 'node:perf_hooks'; -import { afterEach, beforeEach, describe, it } from 'node:test'; -import { onTraceEvent, wrapWithTracing } from '../../../dist/runtime/server/tracing.js'; - -describe('Tracing Performance', () => { - let abortController; - beforeEach(() => { - abortController = new AbortController(); - }); - afterEach(() => { - abortController.abort(); - }); - - describe('Baseline performance', () => { - it('should have minimal overhead when no listeners are registered', () => { - const iterations = 10000; - const fn = (x) => x * 2; - - // Measure unwrapped function - const unwrappedStart = performance.now(); - for (let i = 0; i < iterations; i++) { - fn(i); - } - const unwrappedEnd = performance.now(); - const unwrappedTime = unwrappedEnd - unwrappedStart; - - // Measure wrapped function without listeners - const wrappedFn = wrapWithTracing('componentRender', fn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - const wrappedStart = performance.now(); - for (let i = 0; i < iterations; i++) { - wrappedFn(i); - } - const wrappedEnd = performance.now(); - const wrappedTime = wrappedEnd - wrappedStart; - - // Wrapped should not be more than 2x slower than unwrapped - const overhead = wrappedTime / unwrappedTime; - assert.ok( - overhead < 2, - `Overhead too high: ${overhead}x (${wrappedTime}ms vs ${unwrappedTime}ms)`, - ); - }); - - it('should skip payload generation when no listeners are present', () => { - let payloadGenerationCount = 0; - - const expensivePayloadFn = () => { - payloadGenerationCount++; - // Simulate expensive payload generation - const largeArray = new Array(1000).fill(0).map((_, i) => ({ id: i, value: Math.random() })); - return { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - expensiveData: largeArray, - }; - }; - - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, expensivePayloadFn); - - // Call function multiple times without listeners - for (let i = 0; i < 100; i++) { - wrappedFn(); - } - - // Payload generation should never be called - assert.equal(payloadGenerationCount, 0); - }); - }); - - describe('Performance with listeners', () => { - it('should handle high-frequency events efficiently', () => { - const iterations = 1000; - const events = []; - - onTraceEvent( - (event, callback) => { - events.push(event.event); - return callback(); - }, - { signal: abortController.signal }, - ); - - const fn = (x) => x * 2; - const wrappedFn = wrapWithTracing('componentRender', fn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - const start = performance.now(); - for (let i = 0; i < iterations; i++) { - wrappedFn(i); - } - const end = performance.now(); - const totalTime = end - start; - - // Should complete in reasonable time (less than 1 second for 1000 iterations) - assert.ok(totalTime < 1000, `Too slow: ${totalTime}ms for ${iterations} iterations`); - assert.equal(events.length, iterations); - }); - - it('should scale linearly with number of listeners', () => { - const iterations = 100; - const fn = () => 'result'; - - // Test with different numbers of listeners - const listenerCounts = [1, 5, 10, 20]; - const timings = []; - - for (const listenerCount of listenerCounts) { - // Clear previous listeners - const abortController = new AbortController(); - abortController.abort(); - onTraceEvent(() => {}, abortController.signal); - - // Register listeners - for (let i = 0; i < listenerCount; i++) { - onTraceEvent((_event, callback) => callback()); - } - - const wrappedFn = wrapWithTracing('componentRender', fn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - const start = performance.now(); - for (let i = 0; i < iterations; i++) { - wrappedFn(); - } - const end = performance.now(); - - timings.push({ - listenerCount, - time: end - start, - timePerIteration: (end - start) / iterations, - }); - } - - // Verify roughly linear scaling - const baseTime = timings[0].timePerIteration; - for (let i = 1; i < timings.length; i++) { - const timing = timings[i]; - const expectedMaxTime = baseTime * timing.listenerCount * 2; // Allow 2x overhead - assert.ok( - timing.timePerIteration < expectedMaxTime, - `Scaling issue: ${timing.listenerCount} listeners took ${timing.timePerIteration}ms/iteration (expected < ${expectedMaxTime}ms)`, - ); - } - }); - - it('should handle async listeners efficiently', async () => { - const iterations = 50; // Fewer iterations for async test - let callbackCount = 0; - - onTraceEvent(async (_event, callback) => { - callbackCount++; - // Small async delay - await new Promise((resolve) => setTimeout(resolve, 1)); - return callback(); - }); - - const asyncFn = async () => { - await new Promise((resolve) => setTimeout(resolve, 1)); - return 'async result'; - }; - - const wrappedFn = wrapWithTracing('componentRender', asyncFn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - const start = performance.now(); - const promises = []; - for (let i = 0; i < iterations; i++) { - promises.push(wrappedFn()); - } - await Promise.all(promises); - const end = performance.now(); - - const totalTime = end - start; - - // Should complete in reasonable time (account for async overhead) - assert.ok(totalTime < 5000, `Too slow: ${totalTime}ms for ${iterations} async iterations`); - assert.equal(callbackCount, iterations); - }); - }); - - describe('Memory usage patterns', () => { - it('should not leak memory with frequent listener registration/cleanup', () => { - const initialMemory = process.memoryUsage().heapUsed; - const controllers = []; - - // Register and cleanup many listeners - for (let cycle = 0; cycle < 10; cycle++) { - // Register 100 listeners - for (let i = 0; i < 100; i++) { - const controller = new AbortController(); - controllers.push(controller); - onTraceEvent(() => {}, controller.signal); - } - - // Execute some traced functions - const wrappedFn = wrapWithTracing('componentRender', () => 'result', { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - for (let i = 0; i < 10; i++) { - wrappedFn(); - } - - // Cleanup listeners - controllers.forEach((controller) => controller.abort()); - controllers.length = 0; - - // Force garbage collection if available - if (global.gc) { - global.gc(); - } - } - - const finalMemory = process.memoryUsage().heapUsed; - const memoryGrowth = finalMemory - initialMemory; - const memoryGrowthMB = memoryGrowth / (1024 * 1024); - - // Memory growth should be minimal (less than 10MB) - assert.ok(memoryGrowthMB < 10, `Potential memory leak: ${memoryGrowthMB}MB growth`); - }); - - it('should handle large payload objects efficiently', () => { - let eventCount = 0; - - onTraceEvent((event, callback) => { - eventCount++; - // Access payload to ensure it's processed - const payloadSize = JSON.stringify(event.payload).length; - assert.ok(payloadSize > 0); - return callback(); - }); - - // Create a large but realistic payload - const largePayload = { - moduleId: 'test.astro', - componentName: 'LargeComponent', - displayName: 'Large Component with Lots of Data', - request: new Request('http://localhost/large-page?param=' + 'x'.repeat(1000)), - response: new Response(), - componentProps: { - data: new Array(1000).fill(0).map((_, i) => ({ - id: i, - name: `Item ${i}`, - description: `Description for item ${i}`.repeat(10), - metadata: { - created: new Date().toISOString(), - tags: [`tag-${i}`, `category-${i % 10}`, `type-${i % 5}`], - }, - })), - }, - }; - - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, largePayload); - - const start = performance.now(); - for (let i = 0; i < 10; i++) { - wrappedFn(); - } - const end = performance.now(); - - const totalTime = end - start; - assert.ok(totalTime < 1000, `Large payload processing too slow: ${totalTime}ms`); - assert.equal(eventCount, 10); - }); - }); - - describe('Edge case performance', () => { - it('should handle many simultaneous wrapped functions', () => { - const functionCount = 100; - const iterations = 10; - let totalEvents = 0; - - onTraceEvent((_event, callback) => { - totalEvents++; - return callback(); - }); - - // Create many different wrapped functions - const wrappedFunctions = []; - for (let i = 0; i < functionCount; i++) { - const fn = (x) => x + i; - const wrappedFn = wrapWithTracing('componentRender', fn, { - moduleId: `test-${i}.astro`, - componentName: `Test${i}`, - displayName: `Test ${i}`, - request: new Request('http://localhost/'), - response: new Response(), - }); - wrappedFunctions.push(wrappedFn); - } - - const start = performance.now(); - for (let iteration = 0; iteration < iterations; iteration++) { - for (let i = 0; i < functionCount; i++) { - wrappedFunctions[i](iteration); - } - } - const end = performance.now(); - - const totalTime = end - start; - const expectedEvents = functionCount * iterations; - - assert.equal(totalEvents, expectedEvents); - assert.ok( - totalTime < 2000, - `Too slow for ${functionCount} functions x ${iterations} iterations: ${totalTime}ms`, - ); - }); - - it('should perform well with nested tracing calls', () => { - let eventCount = 0; - - onTraceEvent((_event, callback) => { - eventCount++; - return callback(); - }); - - const createNestedFunction = (depth) => { - if (depth === 0) { - return () => 'base'; - } - - const innerFn = createNestedFunction(depth - 1); - return wrapWithTracing( - 'componentRender', - () => { - return `level-${depth}-${innerFn()}`; - }, - { - moduleId: `nested-${depth}.astro`, - componentName: `Nested${depth}`, - displayName: `Nested Level ${depth}`, - request: new Request('http://localhost/'), - response: new Response(), - }, - ); - }; - - const nestedDepth = 10; - const nestedFn = createNestedFunction(nestedDepth); - - const start = performance.now(); - const result = nestedFn(); - const end = performance.now(); - - const totalTime = end - start; - - assert.ok(result.includes('base')); - assert.equal(eventCount, nestedDepth); - assert.ok(totalTime < 100, `Nested calls too slow: ${totalTime}ms for depth ${nestedDepth}`); - }); - - it('should handle rapid abort signal changes efficiently', () => { - const cycles = 100; - let eventCount = 0; - - const start = performance.now(); - - for (let i = 0; i < cycles; i++) { - const controller = new AbortController(); - - onTraceEvent((_event, callback) => { - eventCount++; - return callback(); - }, controller.signal); - - const wrappedFn = wrapWithTracing('componentRender', () => `result-${i}`, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - wrappedFn(); - controller.abort(); - } - - const end = performance.now(); - const totalTime = end - start; - - assert.equal(eventCount, cycles); - assert.ok( - totalTime < 1000, - `Rapid abort cycles too slow: ${totalTime}ms for ${cycles} cycles`, - ); - }); - }); -}); diff --git a/packages/astro/test/units/runtime/tracing.test.js b/packages/astro/test/units/runtime/tracing.test.js index 9424bcd9c32c..924eb914a8c7 100644 --- a/packages/astro/test/units/runtime/tracing.test.js +++ b/packages/astro/test/units/runtime/tracing.test.js @@ -1,34 +1,23 @@ import * as assert from 'node:assert/strict'; import { afterEach, beforeEach, describe, it } from 'node:test'; -import { onTraceEvent, wrapWithTracing } from '../../../dist/runtime/server/tracing.js'; +import { + clearTraceListeners, + onTraceEvent, + wrapWithTracing, +} from '../../../dist/runtime/server/tracing.js'; describe('Tracing API', () => { - let events = []; - let listener; - - beforeEach(() => { - events = []; - listener = (event, callback) => { - events.push({ ...event, callbackCalled: false }); - const result = callback(); - events[events.length - 1].callbackCalled = true; - return result; - }; - }); - afterEach(() => { - // Clear all listeners by calling onTraceEvent with an aborted signal - const abortController = new AbortController(); - abortController.abort(); - onTraceEvent(() => {}, abortController.signal); + clearTraceListeners(); }); describe('onTraceEvent', () => { it('should register a trace listener', () => { - const mockListener = () => {}; - onTraceEvent(mockListener); + let listenerCalled = false; + onTraceEvent(() => { + listenerCalled = true; + }); - // Test that the listener was registered by wrapping a function const wrappedFn = wrapWithTracing('componentRender', () => 'test', { moduleId: 'test.astro', componentName: 'Test', @@ -37,25 +26,21 @@ describe('Tracing API', () => { response: new Response(), }); - // Should execute without error const result = wrappedFn(); - assert.equal(result, 'test'); + assert.equal(result, 'test', 'Wrapped function should return correct result'); + assert.ok(listenerCalled, 'Listener should have been called'); }); it('should support AbortSignal for listener cleanup', () => { - const abortController = new AbortController(); + const controller = new AbortController(); let listenerCalled = false; - const testListener = () => { + onTraceEvent(() => { listenerCalled = true; - }; - - onTraceEvent(testListener, abortController.signal); + }, controller.signal); - // Abort the signal - abortController.abort(); + controller.abort(); - // Create a wrapped function const wrappedFn = wrapWithTracing('componentRender', () => 'test', { moduleId: 'test.astro', componentName: 'Test', @@ -66,20 +51,17 @@ describe('Tracing API', () => { wrappedFn(); - // Listener should not have been called - assert.equal(listenerCalled, false); + assert.ok(!listenerCalled, 'Listener should not have been called after abort'); }); it('should not register listener if signal is already aborted', () => { - const abortController = new AbortController(); - abortController.abort(); + const abortedSignal = AbortSignal.abort(); let listenerCalled = false; - const testListener = () => { - listenerCalled = true; - }; - onTraceEvent(testListener, abortController.signal); + onTraceEvent(() => { + listenerCalled = true; + }, abortedSignal); const wrappedFn = wrapWithTracing('componentRender', () => 'test', { moduleId: 'test.astro', @@ -91,7 +73,7 @@ describe('Tracing API', () => { wrappedFn(); - assert.equal(listenerCalled, false); + assert.ok(!listenerCalled, 'Listener should not have been registered with aborted signal'); }); }); @@ -111,7 +93,10 @@ describe('Tracing API', () => { }); it('should call listeners with correct event data', () => { - onTraceEvent(listener); + const events = []; + onTraceEvent((event) => { + events.push(event); + }); const payload = { moduleId: 'test.astro', @@ -127,14 +112,14 @@ describe('Tracing API', () => { const result = wrappedFn(); assert.equal(result, 'result'); - assert.equal(events.length, 1); - assert.equal(events[0].event, 'componentRender'); - assert.deepEqual(events[0].payload, payload); - assert.equal(events[0].callbackCalled, true); + assert.deepEqual(events, [{ event: 'componentRender', payload }]); }); it('should support dynamic payload generation', () => { - onTraceEvent(listener); + const events = []; + onTraceEvent((event) => { + events.push(event); + }); const fn = function (arg1, arg2) { return `${arg1}-${arg2}`; @@ -155,13 +140,19 @@ describe('Tracing API', () => { const result = wrappedFn('test', 'Component'); assert.equal(result, 'test-Component'); - assert.equal(events.length, 1); - assert.equal(events[0].payload.moduleId, 'module-test'); - assert.equal(events[0].payload.componentName, 'Component'); + assert.deepEqual(events, [ + { + event: 'componentRender', + payload: payloadFn('test', 'Component'), + }, + ]); }); it('should preserve function context (this)', () => { - onTraceEvent(listener); + let listenerCalled = false; + onTraceEvent(() => { + listenerCalled = true; + }); const obj = { value: 42, @@ -182,10 +173,14 @@ describe('Tracing API', () => { const result = obj.method(); assert.equal(result, 42); + assert.ok(listenerCalled, 'Listener should have been called'); }); it('should handle async functions', async () => { - onTraceEvent(listener); + let listenerCalled = false; + onTraceEvent(() => { + listenerCalled = true; + }); const asyncFn = async () => { await new Promise((resolve) => setTimeout(resolve, 10)); @@ -202,11 +197,14 @@ describe('Tracing API', () => { const result = await wrappedFn(); assert.equal(result, 'async result'); - assert.equal(events.length, 1); + assert.ok(listenerCalled, 'Listener should have been called'); }); it('should handle function arguments correctly', () => { - onTraceEvent(listener); + let listenerCalled = false; + onTraceEvent(() => { + listenerCalled = true; + }); const fn = (a, b, c) => a + b + c; const wrappedFn = wrapWithTracing('componentRender', fn, { @@ -219,6 +217,7 @@ describe('Tracing API', () => { const result = wrappedFn(1, 2, 3); assert.equal(result, 6); + assert.ok(listenerCalled, 'Listener should have been called'); }); }); @@ -267,40 +266,15 @@ describe('Tracing API', () => { 'listener1-end', ]); }); - - it('should handle listener errors gracefully', () => { - const workingListener = (event, callback) => { - events.push({ type: 'working', event }); - return callback(); - }; - - const errorListener = (_event, _callback) => { - throw new Error('Listener error'); - }; - - onTraceEvent(workingListener); - onTraceEvent(errorListener); - - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }); - - // Should not throw despite listener error - const result = wrappedFn(); - assert.equal(result, 'result'); - assert.equal(events.length, 1); - assert.equal(events[0].type, 'working'); - }); }); describe('Event types', () => { + const events = []; beforeEach(() => { - onTraceEvent(listener); + events.length = 0; + onTraceEvent((event) => { + events.push(event); + }); }); it('should handle instantiateComponent events', () => { @@ -380,14 +354,38 @@ describe('Tracing API', () => { assert.equal(events[0].event, 'middleware'); assert.deepEqual(events[0].payload, payload); }); + + it('should skip event creation when no listeners are registered', () => { + clearTraceListeners(); // Ensure no listeners are present + let payloadFnCalled = false; + + const payloadFn = () => { + payloadFnCalled = true; + return { + moduleId: 'test.astro', + componentName: 'Test', + displayName: 'Test', + request: new Request('http://localhost/'), + response: new Response(), + }; + }; + + const fn = () => 'result'; + const wrappedFn = wrapWithTracing('componentRender', fn, payloadFn); + + const result = wrappedFn(); + + assert.equal(result, 'result'); + assert.equal(payloadFnCalled, false); // Payload function should not be called + }); }); describe('Callback behavior', () => { it('should handle async callbacks', async () => { - let _callbackResult; + let callbackResult; const asyncListener = async (_event, callback) => { - _callbackResult = await callback(); + callbackResult = await callback(); }; onTraceEvent(asyncListener); @@ -407,6 +405,11 @@ describe('Tracing API', () => { const result = await wrappedFn(); assert.equal(result, 'async result'); + assert.strictEqual( + callbackResult, + void 0, + 'Wrapped function result should not be visible to listener', + ); }); it('should handle callback called multiple times', () => { @@ -445,7 +448,7 @@ describe('Tracing API', () => { }); it('should preserve errors thrown by wrapped function', () => { - onTraceEvent(listener); + onTraceEvent(() => {}); const errorFn = () => { throw new Error('Function error'); @@ -459,102 +462,9 @@ describe('Tracing API', () => { response: new Response(), }); - assert.throws( - () => { - wrappedFn(); - }, - { - message: 'Function error', - }, - ); - }); - - it('should handle errors in callback gracefully', () => { - let errorCaught = false; - - const errorHandlingListener = (_event, callback) => { - try { - return callback(); - } catch (error) { - errorCaught = true; - throw error; - } - }; - - onTraceEvent(errorHandlingListener); - - const errorFn = () => { - throw new Error('Function error'); - }; - - const wrappedFn = wrapWithTracing('componentRender', errorFn, { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), + assert.throws(wrappedFn, { + message: 'Function error', }); - - assert.throws( - () => { - wrappedFn(); - }, - { - message: 'Function error', - }, - ); - - assert.equal(errorCaught, true); - }); - }); - - describe('Performance optimization', () => { - it('should skip event creation when no listeners are registered', () => { - let payloadFnCalled = false; - - const payloadFn = () => { - payloadFnCalled = true; - return { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }; - }; - - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, payloadFn); - - const result = wrappedFn(); - - assert.equal(result, 'result'); - assert.equal(payloadFnCalled, false); // Payload function should not be called - }); - - it('should create payload when listeners are present', () => { - onTraceEvent(listener); - - let payloadFnCalled = false; - - const payloadFn = () => { - payloadFnCalled = true; - return { - moduleId: 'test.astro', - componentName: 'Test', - displayName: 'Test', - request: new Request('http://localhost/'), - response: new Response(), - }; - }; - - const fn = () => 'result'; - const wrappedFn = wrapWithTracing('componentRender', fn, payloadFn); - - const result = wrappedFn(); - - assert.equal(result, 'result'); - assert.equal(payloadFnCalled, true); // Payload function should be called }); }); }); From 069ec6b46ade57be5f9c6e57e1a195c6d8e33a5d Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Thu, 11 Sep 2025 17:42:51 -0300 Subject: [PATCH 32/32] Adjust integration tests --- packages/astro/src/integrations/hooks.ts | 2 +- packages/astro/src/runtime/server/tracing.ts | 4 +- .../astro/src/types/public/integrations.ts | 2 +- .../tracing-integration/astro.config.mjs | 15 +- .../src/components/NestedContainer.astro | 263 ---------------- .../src/middleware/index.ts | 30 -- .../tracing-integration/src/pages/api/test.ts | 58 +--- .../tracing-integration/src/pages/index.astro | 8 - .../src/pages/middleware-test.astro | 157 ---------- .../src/pages/nested-components.astro | 201 ------------ .../tracing-integration/src/tracing.ts | 10 + .../astro/test/tracing-integration.test.js | 287 ++++-------------- .../integrations/opentelemetry/src/index.ts | 8 +- pnpm-lock.yaml | 1 - 14 files changed, 90 insertions(+), 956 deletions(-) delete mode 100644 packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro delete mode 100644 packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts delete mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/middleware-test.astro delete mode 100644 packages/astro/test/fixtures/tracing-integration/src/pages/nested-components.astro create mode 100644 packages/astro/test/fixtures/tracing-integration/src/tracing.ts diff --git a/packages/astro/src/integrations/hooks.ts b/packages/astro/src/integrations/hooks.ts index 8ab1a0d30c41..4df8cc9ffb70 100644 --- a/packages/astro/src/integrations/hooks.ts +++ b/packages/astro/src/integrations/hooks.ts @@ -290,7 +290,7 @@ export async function runHookConfigSetup({ entrypoint: typeof entrypoint === 'string' ? entrypoint : fileURLToPath(entrypoint), }); }, - addInitializer: (entrypoint) => { + experimental_addInitializer: (entrypoint) => { if (typeof entrypoint === 'string') { updatedSettings.initializers.push(entrypoint); } else { diff --git a/packages/astro/src/runtime/server/tracing.ts b/packages/astro/src/runtime/server/tracing.ts index 6237110ac25e..d53872aebf15 100644 --- a/packages/astro/src/runtime/server/tracing.ts +++ b/packages/astro/src/runtime/server/tracing.ts @@ -3,7 +3,9 @@ import type { TraceEvent, TraceEventsPayloads, TraceListener } from '../../types export type { TraceEvent, TraceEventsPayloads, TraceListener }; -const listeners: TraceListener[] = []; +// Use a global variable to store listeners to handle reloading when +// running the dev server. +const listeners: TraceListener[] = ((globalThis as any).__astro_tracing ??= []); /** * Register a trace listener that will be called on every trace event. diff --git a/packages/astro/src/types/public/integrations.ts b/packages/astro/src/types/public/integrations.ts index 0ad6011bb71c..2530e535afd0 100644 --- a/packages/astro/src/types/public/integrations.ts +++ b/packages/astro/src/types/public/integrations.ts @@ -188,7 +188,7 @@ export interface BaseIntegrationHooks { addClientDirective: (directive: ClientDirectiveConfig) => void; addDevToolbarApp: (entrypoint: DevToolbarAppEntry) => void; addMiddleware: (mid: AstroIntegrationMiddleware) => void; - addInitializer: (entrypoint: string | URL) => void; + experimental_addInitializer: (entrypoint: string | URL) => void; createCodegenDir: () => URL; logger: AstroIntegrationLogger; }) => void | Promise; diff --git a/packages/astro/test/fixtures/tracing-integration/astro.config.mjs b/packages/astro/test/fixtures/tracing-integration/astro.config.mjs index f6a5067d4c0b..9b823a138c25 100644 --- a/packages/astro/test/fixtures/tracing-integration/astro.config.mjs +++ b/packages/astro/test/fixtures/tracing-integration/astro.config.mjs @@ -1,12 +1,15 @@ import { defineConfig } from 'astro/config'; export default defineConfig({ - // Enable tracing and middleware for testing experimental: { - // Any experimental features needed for tracing - }, - // Configure for testing environment - server: { - port: 4321, + enableTracing: true, }, + integrations: [{ + name: 'tracing-test', + hooks: { + 'astro:config:setup': ({ experimental_addInitializer }) => { + experimental_addInitializer('./src/tracing.ts'); + }, + }, + }], }); diff --git a/packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro b/packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro deleted file mode 100644 index 4236eeae6232..000000000000 --- a/packages/astro/test/fixtures/tracing-integration/src/components/NestedContainer.astro +++ /dev/null @@ -1,263 +0,0 @@ ---- -import TestComponent from './TestComponent.astro'; -import SlotWrapper from './SlotWrapper.astro'; - -export interface Props { - level: number; - maxLevel: number; - componentData: { - title: string; - count: number; - isActive: boolean; - }; -} - -const { level, maxLevel, componentData } = Astro.props; -const { title, count, isActive } = componentData; - -// Generate data for nested levels -const nestedTitle = `${title} - Level ${level}`; -const nestedCount = count + (level * 10); -const shouldNest = level < maxLevel; ---- - -
- - -
- Level {level} - - {Array.from({ length: level }, (_, i) => ( - - ))} - -
-
- - - {shouldNest && ( -
-

- Nesting level {level} of {maxLevel} -

- - - - - - {level < 3 && ( -
- - -
- )} -
- )} - - {!shouldNest && ( -
-

- 🎯 Reached maximum nesting depth: {maxLevel} -

-
-

Total levels traversed: {level}

-

Final count value: {nestedCount}

-

Component active: {isActive ? 'Yes' : 'No'}

-
-
- )} -
- - - - -
-
- - diff --git a/packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts b/packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts deleted file mode 100644 index 291a0c8739f6..000000000000 --- a/packages/astro/test/fixtures/tracing-integration/src/middleware/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { MiddlewareHandler } from 'astro'; - -// Generate a simple request ID for testing -function generateRequestId(): string { - return `req_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; -} - -// Simple middleware for testing tracing -export const onRequest: MiddlewareHandler = async (context, next) => { - // Add some data to locals for testing - context.locals.requestId = generateRequestId(); - context.locals.middlewareData = { - timestamp: new Date().toISOString(), - pathname: context.url.pathname, - method: context.request.method, - userAgent: context.request.headers.get('user-agent'), - }; - - // Log middleware execution (for debugging) - console.log(`[Middleware] Processing request: ${context.request.method} ${context.url.pathname}`); - - // Call the next middleware or page - const response = await next(); - - // Add a custom header to verify middleware ran - response.headers.set('X-Middleware-Processed', 'true'); - response.headers.set('X-Request-ID', context.locals.requestId); - - return response; -}; diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts b/packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts index e9f7cd287b61..2f90af7f7570 100644 --- a/packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/api/test.ts @@ -1,59 +1,9 @@ import type { APIRoute } from 'astro'; -export const GET: APIRoute = async ({ request, url, locals }) => { - // Simple API endpoint for testing tracing - const timestamp = new Date().toISOString(); - const requestId = locals.requestId || 'no-request-id'; - - // Simulate some processing time - await new Promise(resolve => setTimeout(resolve, 10)); - - const responseData = { - message: 'API endpoint test successful', - timestamp, - requestId, - method: request.method, - url: url.href, - pathname: url.pathname, - searchParams: Object.fromEntries(url.searchParams.entries()), - headers: Object.fromEntries(request.headers.entries()), - middlewareProcessed: request.headers.get('x-middleware-processed') === 'true', - }; - - return new Response(JSON.stringify(responseData, null, 2), { - status: 200, - headers: { - 'Content-Type': 'application/json', - 'X-API-Response': 'true', - 'X-Timestamp': timestamp, - }, - }); +export const GET: APIRoute = async () => { + return Response.json({ message: 'GET request processed', }) }; -export const POST: APIRoute = async ({ request, locals }) => { - const timestamp = new Date().toISOString(); - const requestId = locals.requestId || 'no-request-id'; - - let body; - try { - body = await request.json(); - } catch { - body = await request.text(); - } - - const responseData = { - message: 'POST request processed', - timestamp, - requestId, - receivedBody: body, - contentType: request.headers.get('content-type'), - }; - - return new Response(JSON.stringify(responseData, null, 2), { - status: 200, - headers: { - 'Content-Type': 'application/json', - 'X-API-Response': 'true', - }, - }); +export const POST: APIRoute = async () => { + return Response.json({ message: 'POST request processed', }) }; diff --git a/packages/astro/test/fixtures/tracing-integration/src/pages/index.astro b/packages/astro/test/fixtures/tracing-integration/src/pages/index.astro index c160e427b9e8..7042c6602c6b 100644 --- a/packages/astro/test/fixtures/tracing-integration/src/pages/index.astro +++ b/packages/astro/test/fixtures/tracing-integration/src/pages/index.astro @@ -1,9 +1,3 @@ ---- -// Test frontmatter tracing -const message = "Hello from tracing test!"; -const timestamp = new Date().toISOString(); ---- - @@ -15,8 +9,6 @@ const timestamp = new Date().toISOString();

Hello from Astro Tracing Test!

-

{message}

-

Generated at: {timestamp}

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�FG7;bOK~9#kN?U%vCyl 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�TJ`-y@MHZ&>c$GO9Y*1Q+#owW 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