12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { _nullishCoalesce, _optionalChain } from '@sentry/utils';
- import * as Sentry from '@sentry/nextjs';
- import { requestAsyncStorage } from '__SENTRY_NEXTJS_REQUEST_ASYNC_STORAGE_SHIM__';
- import * as serverComponentModule from '__SENTRY_WRAPPING_TARGET_FILE__';
- export * from '__SENTRY_WRAPPING_TARGET_FILE__';
- const serverComponent = serverComponentModule.default;
- let wrappedServerComponent;
- if (typeof serverComponent === 'function') {
- // For some odd Next.js magic reason, `headers()` will not work if used inside `wrapServerComponentsWithSentry`.
- // Current assumption is that Next.js applies some loader magic to userfiles, but not files in node_modules. This file
- // is technically a userfile so it gets the loader magic applied.
- wrappedServerComponent = new Proxy(serverComponent, {
- apply: (originalFunction, thisArg, args) => {
- let sentryTraceHeader = undefined;
- let baggageHeader = undefined;
- let headers = undefined;
- // We try-catch here just in `requestAsyncStorage` is undefined since it may not be defined
- try {
- const requestAsyncStore = requestAsyncStorage.getStore();
- sentryTraceHeader = _nullishCoalesce(_optionalChain([requestAsyncStore, 'optionalAccess', _ => _.headers, 'access', _2 => _2.get, 'call', _3 => _3('sentry-trace')]), () => ( undefined));
- baggageHeader = _nullishCoalesce(_optionalChain([requestAsyncStore, 'optionalAccess', _4 => _4.headers, 'access', _5 => _5.get, 'call', _6 => _6('baggage')]), () => ( undefined));
- headers = _optionalChain([requestAsyncStore, 'optionalAccess', _7 => _7.headers]);
- } catch (e) {
- /** empty */
- }
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
- return Sentry.wrapServerComponentWithSentry(originalFunction , {
- componentRoute: '__ROUTE__',
- componentType: '__COMPONENT_TYPE__',
- sentryTraceHeader,
- baggageHeader,
- headers,
- }).apply(thisArg, args);
- },
- });
- } else {
- wrappedServerComponent = serverComponent;
- }
- const generateMetadata = serverComponentModule.generateMetadata
- ? Sentry.wrapGenerationFunctionWithSentry(serverComponentModule.generateMetadata, {
- componentRoute: '__ROUTE__',
- componentType: '__COMPONENT_TYPE__',
- generationFunctionIdentifier: 'generateMetadata',
- requestAsyncStorage,
- })
- : undefined;
- const generateImageMetadata = serverComponentModule.generateImageMetadata
- ? Sentry.wrapGenerationFunctionWithSentry(serverComponentModule.generateImageMetadata, {
- componentRoute: '__ROUTE__',
- componentType: '__COMPONENT_TYPE__',
- generationFunctionIdentifier: 'generateImageMetadata',
- requestAsyncStorage,
- })
- : undefined;
- const generateViewport = serverComponentModule.generateViewport
- ? Sentry.wrapGenerationFunctionWithSentry(serverComponentModule.generateViewport, {
- componentRoute: '__ROUTE__',
- componentType: '__COMPONENT_TYPE__',
- generationFunctionIdentifier: 'generateViewport',
- requestAsyncStorage,
- })
- : undefined;
- const wrappedServerComponent$1 = wrappedServerComponent;
- export { wrappedServerComponent$1 as default, generateImageMetadata, generateMetadata, generateViewport };
|