main repo

This commit is contained in:
Basilosaurusrex
2025-11-24 18:09:40 +01:00
parent b636ee5e70
commit f027651f9b
34146 changed files with 4436636 additions and 0 deletions

View File

@@ -0,0 +1,113 @@
/**
* Contains predefined constants for the trace span name in next/server.
*
* Currently, next/server/tracer is internal implementation only for tracking
* next.js's implementation only with known span names defined here.
**/ // eslint typescript has a bug with TS enums
/* eslint-disable no-shadow */ var BaseServerSpan;
(function(BaseServerSpan) {
BaseServerSpan["handleRequest"] = "BaseServer.handleRequest";
BaseServerSpan["run"] = "BaseServer.run";
BaseServerSpan["pipe"] = "BaseServer.pipe";
BaseServerSpan["getStaticHTML"] = "BaseServer.getStaticHTML";
BaseServerSpan["render"] = "BaseServer.render";
BaseServerSpan["renderToResponseWithComponents"] = "BaseServer.renderToResponseWithComponents";
BaseServerSpan["renderToResponse"] = "BaseServer.renderToResponse";
BaseServerSpan["renderToHTML"] = "BaseServer.renderToHTML";
BaseServerSpan["renderError"] = "BaseServer.renderError";
BaseServerSpan["renderErrorToResponse"] = "BaseServer.renderErrorToResponse";
BaseServerSpan["renderErrorToHTML"] = "BaseServer.renderErrorToHTML";
BaseServerSpan["render404"] = "BaseServer.render404";
})(BaseServerSpan || (BaseServerSpan = {}));
var LoadComponentsSpan;
(function(LoadComponentsSpan) {
LoadComponentsSpan["loadDefaultErrorComponents"] = "LoadComponents.loadDefaultErrorComponents";
LoadComponentsSpan["loadComponents"] = "LoadComponents.loadComponents";
})(LoadComponentsSpan || (LoadComponentsSpan = {}));
var NextServerSpan;
(function(NextServerSpan) {
NextServerSpan["getRequestHandler"] = "NextServer.getRequestHandler";
NextServerSpan["getServer"] = "NextServer.getServer";
NextServerSpan["getServerRequestHandler"] = "NextServer.getServerRequestHandler";
NextServerSpan["createServer"] = "createServer.createServer";
})(NextServerSpan || (NextServerSpan = {}));
var NextNodeServerSpan;
(function(NextNodeServerSpan) {
NextNodeServerSpan["compression"] = "NextNodeServer.compression";
NextNodeServerSpan["getBuildId"] = "NextNodeServer.getBuildId";
NextNodeServerSpan["generateStaticRoutes"] = "NextNodeServer.generateStaticRoutes";
NextNodeServerSpan["generateFsStaticRoutes"] = "NextNodeServer.generateFsStaticRoutes";
NextNodeServerSpan["generatePublicRoutes"] = "NextNodeServer.generatePublicRoutes";
NextNodeServerSpan["generateImageRoutes"] = "NextNodeServer.generateImageRoutes.route";
NextNodeServerSpan["sendRenderResult"] = "NextNodeServer.sendRenderResult";
NextNodeServerSpan["proxyRequest"] = "NextNodeServer.proxyRequest";
NextNodeServerSpan["runApi"] = "NextNodeServer.runApi";
NextNodeServerSpan["render"] = "NextNodeServer.render";
NextNodeServerSpan["renderHTML"] = "NextNodeServer.renderHTML";
NextNodeServerSpan["imageOptimizer"] = "NextNodeServer.imageOptimizer";
NextNodeServerSpan["getPagePath"] = "NextNodeServer.getPagePath";
NextNodeServerSpan["getRoutesManifest"] = "NextNodeServer.getRoutesManifest";
NextNodeServerSpan["findPageComponents"] = "NextNodeServer.findPageComponents";
NextNodeServerSpan["getFontManifest"] = "NextNodeServer.getFontManifest";
NextNodeServerSpan["getServerComponentManifest"] = "NextNodeServer.getServerComponentManifest";
NextNodeServerSpan["getRequestHandler"] = "NextNodeServer.getRequestHandler";
NextNodeServerSpan["renderToHTML"] = "NextNodeServer.renderToHTML";
NextNodeServerSpan["renderError"] = "NextNodeServer.renderError";
NextNodeServerSpan["renderErrorToHTML"] = "NextNodeServer.renderErrorToHTML";
NextNodeServerSpan["render404"] = "NextNodeServer.render404";
NextNodeServerSpan[// nested inner span, does not require parent scope name
"route"] = "route";
NextNodeServerSpan["onProxyReq"] = "onProxyReq";
NextNodeServerSpan["apiResolver"] = "apiResolver";
NextNodeServerSpan["internalFetch"] = "internalFetch";
})(NextNodeServerSpan || (NextNodeServerSpan = {}));
var StartServerSpan;
(function(StartServerSpan) {
StartServerSpan["startServer"] = "startServer.startServer";
})(StartServerSpan || (StartServerSpan = {}));
var RenderSpan;
(function(RenderSpan) {
RenderSpan["getServerSideProps"] = "Render.getServerSideProps";
RenderSpan["getStaticProps"] = "Render.getStaticProps";
RenderSpan["renderToString"] = "Render.renderToString";
RenderSpan["renderDocument"] = "Render.renderDocument";
RenderSpan["createBodyResult"] = "Render.createBodyResult";
})(RenderSpan || (RenderSpan = {}));
var AppRenderSpan;
(function(AppRenderSpan) {
AppRenderSpan["renderToString"] = "AppRender.renderToString";
AppRenderSpan["renderToReadableStream"] = "AppRender.renderToReadableStream";
AppRenderSpan["getBodyResult"] = "AppRender.getBodyResult";
AppRenderSpan["fetch"] = "AppRender.fetch";
})(AppRenderSpan || (AppRenderSpan = {}));
var RouterSpan;
(function(RouterSpan) {
RouterSpan["executeRoute"] = "Router.executeRoute";
})(RouterSpan || (RouterSpan = {}));
var NodeSpan;
(function(NodeSpan) {
NodeSpan["runHandler"] = "Node.runHandler";
})(NodeSpan || (NodeSpan = {}));
var AppRouteRouteHandlersSpan;
(function(AppRouteRouteHandlersSpan) {
AppRouteRouteHandlersSpan["runHandler"] = "AppRouteRouteHandlers.runHandler";
})(AppRouteRouteHandlersSpan || (AppRouteRouteHandlersSpan = {}));
var ResolveMetadataSpan;
(function(ResolveMetadataSpan) {
ResolveMetadataSpan["generateMetadata"] = "ResolveMetadata.generateMetadata";
})(ResolveMetadataSpan || (ResolveMetadataSpan = {}));
// This list is used to filter out spans that are not relevant to the user
export const NextVanillaSpanAllowlist = [
"BaseServer.handleRequest",
"Render.getServerSideProps",
"Render.getStaticProps",
"AppRender.fetch",
"AppRender.getBodyResult",
"Render.renderDocument",
"Node.runHandler",
"AppRouteRouteHandlers.runHandler",
"ResolveMetadata.generateMetadata"
];
export { BaseServerSpan, LoadComponentsSpan, NextServerSpan, NextNodeServerSpan, StartServerSpan, RenderSpan, RouterSpan, AppRenderSpan, NodeSpan, AppRouteRouteHandlersSpan, ResolveMetadataSpan, };
//# sourceMappingURL=constants.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/lib/trace/constants.ts"],"names":["BaseServerSpan","handleRequest","run","pipe","getStaticHTML","render","renderToResponseWithComponents","renderToResponse","renderToHTML","renderError","renderErrorToResponse","renderErrorToHTML","render404","LoadComponentsSpan","loadDefaultErrorComponents","loadComponents","NextServerSpan","getRequestHandler","getServer","getServerRequestHandler","createServer","NextNodeServerSpan","compression","getBuildId","generateStaticRoutes","generateFsStaticRoutes","generatePublicRoutes","generateImageRoutes","sendRenderResult","proxyRequest","runApi","renderHTML","imageOptimizer","getPagePath","getRoutesManifest","findPageComponents","getFontManifest","getServerComponentManifest","route","onProxyReq","apiResolver","internalFetch","StartServerSpan","startServer","RenderSpan","getServerSideProps","getStaticProps","renderToString","renderDocument","createBodyResult","AppRenderSpan","renderToReadableStream","getBodyResult","fetch","RouterSpan","executeRoute","NodeSpan","runHandler","AppRouteRouteHandlersSpan","ResolveMetadataSpan","generateMetadata","NextVanillaSpanAllowlist"],"mappings":"AAAA;;;;;EAKE,GAEF,4CAA4C;AAC5C,4BAA4B,OAE5B;UAAKA,cAAc;IAAdA,eACHC,mBAAgB;IADbD,eAEHE,SAAM;IAFHF,eAGHG,UAAO;IAHJH,eAIHI,mBAAgB;IAJbJ,eAKHK,YAAS;IALNL,eAMHM,oCAAiC;IAN9BN,eAOHO,sBAAmB;IAPhBP,eAQHQ,kBAAe;IARZR,eASHS,iBAAc;IATXT,eAUHU,2BAAwB;IAVrBV,eAWHW,uBAAoB;IAXjBX,eAYHY,eAAY;GAZTZ,mBAAAA;IAeL;UAAKa,kBAAkB;IAAlBA,mBACHC,gCAA6B;IAD1BD,mBAEHE,oBAAiB;GAFdF,uBAAAA;IAKL;UAAKG,cAAc;IAAdA,eACHC,uBAAoB;IADjBD,eAEHE,eAAY;IAFTF,eAGHG,6BAA0B;IAHvBH,eAIHI,kBAAe;GAJZJ,mBAAAA;IAOL;UAAKK,kBAAkB;IAAlBA,mBACHC,iBAAc;IADXD,mBAEHE,gBAAa;IAFVF,mBAGHG,0BAAuB;IAHpBH,mBAIHI,4BAAyB;IAJtBJ,mBAKHK,0BAAuB;IALpBL,mBAMHM,yBAAsB;IANnBN,mBAOHO,sBAAmB;IAPhBP,mBAQHQ,kBAAe;IARZR,mBASHS,YAAS;IATNT,mBAUHhB,YAAS;IAVNgB,mBAWHU,gBAAa;IAXVV,mBAYHW,oBAAiB;IAZdX,mBAaHY,iBAAc;IAbXZ,mBAcHa,uBAAoB;IAdjBb,mBAeHc,wBAAqB;IAflBd,mBAgBHe,qBAAkB;IAhBff,mBAiBHgB,gCAA6B;IAjB1BhB,mBAkBHJ,uBAAoB;IAlBjBI,mBAmBHb,kBAAe;IAnBZa,mBAoBHZ,iBAAc;IApBXY,mBAqBHV,uBAAoB;IArBjBU,mBAsBHT,eAAY;IAtBTS,mBAwBH,wDAAwD;IACxDiB,WAAAA;IAzBGjB,mBA0BHkB,gBAAAA;IA1BGlB,mBA2BHmB,iBAAAA;IA3BGnB,mBA4BHoB,mBAAAA;GA5BGpB,uBAAAA;IA+BL;UAAKqB,eAAe;IAAfA,gBACHC,iBAAc;GADXD,oBAAAA;IAIL;UAAKE,UAAU;IAAVA,WACHC,wBAAqB;IADlBD,WAEHE,oBAAiB;IAFdF,WAGHG,oBAAiB;IAHdH,WAIHI,oBAAiB;IAJdJ,WAKHK,sBAAmB;GALhBL,eAAAA;IAQL;UAAKM,aAAa;IAAbA,cACHH,oBAAiB;IADdG,cAEHC,4BAAyB;IAFtBD,cAGHE,mBAAgB;IAHbF,cAIHG,WAAQ;GAJLH,kBAAAA;IAOL;UAAKI,UAAU;IAAVA,WACHC,kBAAe;GADZD,eAAAA;IAIL;UAAKE,QAAQ;IAARA,SACHC,gBAAa;GADVD,aAAAA;IAIL;UAAKE,yBAAyB;IAAzBA,0BACHD,gBAAa;GADVC,8BAAAA;IAIL;UAAKC,mBAAmB;IAAnBA,oBACHC,sBAAmB;GADhBD,wBAAAA;AAiBL,0EAA0E;AAC1E,OAAO,MAAME,2BAA2B;IA1GtB;IA8DK;IACJ;IAUT;IADQ;IAPC;IAgBJ;IAIA;IAIM;CA2BpB,CAAA;AAED,SACE7D,cAAc,EACda,kBAAkB,EAClBG,cAAc,EACdK,kBAAkB,EAClBqB,eAAe,EAEfE,UAAU,EACVU,UAAU,EACVJ,aAAa,EACbM,QAAQ,EACRE,yBAAyB,EACzBC,mBAAmB,KACpB"}

157
node_modules/next/dist/esm/server/lib/trace/tracer.js generated vendored Normal file
View File

@@ -0,0 +1,157 @@
import { NextVanillaSpanAllowlist } from "./constants";
let api;
// we want to allow users to use their own version of @opentelemetry/api if they
// want to, so we try to require it first, and if it fails we fall back to the
// version that is bundled with Next.js
// this is because @opentelemetry/api has to be synced with the version of
// @opentelemetry/tracing that is used, and we don't want to force users to use
// the version that is bundled with Next.js.
// the API is ~stable, so this should be fine
if (process.env.NEXT_RUNTIME === "edge") {
api = require("@opentelemetry/api");
} else {
try {
api = require("@opentelemetry/api");
} catch (err) {
api = require("next/dist/compiled/@opentelemetry/api");
}
}
const { context, trace, SpanStatusCode, SpanKind } = api;
const isPromise = (p)=>{
return p !== null && typeof p === "object" && typeof p.then === "function";
};
const closeSpanWithError = (span, error)=>{
if (error) {
span.recordException(error);
}
span.setStatus({
code: SpanStatusCode.ERROR,
message: error == null ? void 0 : error.message
});
span.end();
};
/** we use this map to propagate attributes from nested spans to the top span */ const rootSpanAttributesStore = new Map();
const rootSpanIdKey = api.createContextKey("next.rootSpanId");
let lastSpanId = 0;
const getSpanId = ()=>lastSpanId++;
class NextTracerImpl {
/**
* Returns an instance to the trace with configured name.
* Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,
* This should be lazily evaluated.
*/ getTracerInstance() {
return trace.getTracer("next.js", "0.0.1");
}
getContext() {
return context;
}
getActiveScopeSpan() {
return trace.getSpan(context == null ? void 0 : context.active());
}
trace(...args) {
const [type, fnOrOptions, fnOrEmpty] = args;
// coerce options form overload
const { fn, options } = typeof fnOrOptions === "function" ? {
fn: fnOrOptions,
options: {}
} : {
fn: fnOrEmpty,
options: {
...fnOrOptions
}
};
if (!NextVanillaSpanAllowlist.includes(type) && process.env.NEXT_OTEL_VERBOSE !== "1" || options.hideSpan) {
return fn();
}
const spanName = options.spanName ?? type;
// Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.
let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());
let isRootSpan = false;
if (!spanContext) {
spanContext = api.ROOT_CONTEXT;
isRootSpan = true;
}
const spanId = getSpanId();
options.attributes = {
"next.span_name": spanName,
"next.span_type": type,
...options.attributes
};
return api.context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{
const onCleanup = ()=>{
rootSpanAttributesStore.delete(spanId);
};
if (isRootSpan) {
rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));
}
try {
if (fn.length > 1) {
return fn(span, (err)=>closeSpanWithError(span, err));
}
const result = fn(span);
if (isPromise(result)) {
result.then(()=>span.end(), (err)=>closeSpanWithError(span, err)).finally(onCleanup);
} else {
span.end();
onCleanup();
}
return result;
} catch (err) {
closeSpanWithError(span, err);
onCleanup();
throw err;
}
}));
}
wrap(...args) {
const tracer = this;
const [name, options, fn] = args.length === 3 ? args : [
args[0],
{},
args[1]
];
if (!NextVanillaSpanAllowlist.includes(name) && process.env.NEXT_OTEL_VERBOSE !== "1") {
return fn;
}
return function() {
let optionsObj = options;
if (typeof optionsObj === "function" && typeof fn === "function") {
optionsObj = optionsObj.apply(this, arguments);
}
const lastArgId = arguments.length - 1;
const cb = arguments[lastArgId];
if (typeof cb === "function") {
const scopeBoundCb = tracer.getContext().bind(context.active(), cb);
return tracer.trace(name, optionsObj, (_span, done)=>{
arguments[lastArgId] = function(err) {
done == null ? void 0 : done(err);
return scopeBoundCb.apply(this, arguments);
};
return fn.apply(this, arguments);
});
} else {
return tracer.trace(name, optionsObj, ()=>fn.apply(this, arguments));
}
};
}
startSpan(...args) {
const [type, options] = args;
const spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());
return this.getTracerInstance().startSpan(type, options, spanContext);
}
getSpanContext(parentSpan) {
const spanContext = parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined;
return spanContext;
}
getRootSpanAttributes() {
const spanId = context.active().getValue(rootSpanIdKey);
return rootSpanAttributesStore.get(spanId);
}
}
const getTracer = (()=>{
const tracer = new NextTracerImpl();
return ()=>tracer;
})();
export { getTracer, SpanStatusCode, SpanKind, };
//# sourceMappingURL=tracer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/lib/trace/tracer.ts"],"names":["NextVanillaSpanAllowlist","api","process","env","NEXT_RUNTIME","require","err","context","trace","SpanStatusCode","SpanKind","isPromise","p","then","closeSpanWithError","span","error","recordException","setStatus","code","ERROR","message","end","rootSpanAttributesStore","Map","rootSpanIdKey","createContextKey","lastSpanId","getSpanId","NextTracerImpl","getTracerInstance","getTracer","getContext","getActiveScopeSpan","getSpan","active","args","type","fnOrOptions","fnOrEmpty","fn","options","includes","NEXT_OTEL_VERBOSE","hideSpan","spanName","spanContext","getSpanContext","parentSpan","isRootSpan","ROOT_CONTEXT","spanId","attributes","with","setValue","startActiveSpan","onCleanup","delete","set","Object","entries","length","result","finally","wrap","tracer","name","optionsObj","apply","arguments","lastArgId","cb","scopeBoundCb","bind","_span","done","startSpan","setSpan","undefined","getRootSpanAttributes","getValue","get"],"mappings":"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"}