diff --git a/packages/nextjs/src/client/index.ts b/packages/nextjs/src/client/index.ts index 27eb57858e40..354bb96b1f27 100644 --- a/packages/nextjs/src/client/index.ts +++ b/packages/nextjs/src/client/index.ts @@ -123,15 +123,29 @@ export { withSentryServerSideAppGetInitialProps, wrapAppGetInitialPropsWithSentry, } from './wrapAppGetInitialPropsWithSentry'; + export { // eslint-disable-next-line deprecation/deprecation withSentryServerSideDocumentGetInitialProps, wrapDocumentGetInitialPropsWithSentry, } from './wrapDocumentGetInitialPropsWithSentry'; + export { // eslint-disable-next-line deprecation/deprecation withSentryServerSideErrorGetInitialProps, wrapErrorGetInitialPropsWithSentry, } from './wrapErrorGetInitialPropsWithSentry'; +export { + // eslint-disable-next-line deprecation/deprecation + withSentryGetServerSideProps, + wrapGetServerSidePropsWithSentry, +} from './wrapGetServerSidePropsWithSentry'; + +export { + // eslint-disable-next-line deprecation/deprecation + withSentryGetStaticProps, + wrapGetStaticPropsWithSentry, +} from './wrapGetStaticPropsWithSentry'; + export { wrapAppDirComponentWithSentry } from './wrapAppDirComponentWithSentry'; diff --git a/packages/nextjs/src/client/wrapGetServerSidePropsWithSentry.ts b/packages/nextjs/src/client/wrapGetServerSidePropsWithSentry.ts new file mode 100644 index 000000000000..2235016856f4 --- /dev/null +++ b/packages/nextjs/src/client/wrapGetServerSidePropsWithSentry.ts @@ -0,0 +1,18 @@ +import type { GetServerSideProps } from 'next'; + +/** + * A passthrough function in case this function is used on the clientside. We need to make the returned function async + * so we are consistent with the serverside implementation. + */ +export function wrapGetServerSidePropsWithSentry(origGetServerSideProps: GetServerSideProps): GetServerSideProps { + return new Proxy(origGetServerSideProps, { + apply: async (wrappingTarget, thisArg, args: Parameters) => { + return await wrappingTarget.apply(thisArg, args); + }, + }); +} + +/** + * @deprecated Use `withSentryGetServerSideProps` instead. + */ +export const withSentryGetServerSideProps = wrapGetServerSidePropsWithSentry; diff --git a/packages/nextjs/src/client/wrapGetStaticPropsWithSentry.ts b/packages/nextjs/src/client/wrapGetStaticPropsWithSentry.ts new file mode 100644 index 000000000000..735a3cd8a936 --- /dev/null +++ b/packages/nextjs/src/client/wrapGetStaticPropsWithSentry.ts @@ -0,0 +1,20 @@ +import type { GetStaticProps } from 'next'; + +type Props = { [key: string]: unknown }; + +/** + * A passthrough function in case this function is used on the clientside. We need to make the returned function async + * so we are consistent with the serverside implementation. + */ +export function wrapGetStaticPropsWithSentry(origGetStaticProps: GetStaticProps): GetStaticProps { + return new Proxy(origGetStaticProps, { + apply: async (wrappingTarget, thisArg, args: Parameters>) => { + return await wrappingTarget.apply(thisArg, args); + }, + }); +} + +/** + * @deprecated Use `wrapGetStaticPropsWithSentry` instead. + */ +export const withSentryGetStaticProps = wrapGetStaticPropsWithSentry; diff --git a/packages/nextjs/src/index.types.ts b/packages/nextjs/src/index.types.ts index 0b115d213d5d..eb5fb9ca258f 100644 --- a/packages/nextjs/src/index.types.ts +++ b/packages/nextjs/src/index.types.ts @@ -127,6 +127,46 @@ export declare function withSentryServerSideErrorGetInitialProps) => ReturnType extends Promise ? ReturnType : Promise>; +/** + * Wraps a `getServerSideProps` function with Sentry error and performance instrumentation. + * + * @param origGetServerSideProps The `getServerSideProps` function + * @param parameterizedRoute The page's parameterized route + * @returns A wrapped version of the function + */ +export declare function wrapGetServerSidePropsWithSentry any>( + origGetServerSideProps: F, + parameterizedRoute: string, +): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise>; + +/** + * @deprecated Use `wrapGetServerSidePropsWithSentry` instead. + */ +export declare function withSentryGetServerSideProps any>( + origGetServerSideProps: F, + parameterizedRoute: string, +): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise>; + +/** + * Wraps a `getStaticProps` function with Sentry error and performance instrumentation. + * + * @param origGetStaticProps The `getStaticProps` function + * @param parameterizedRoute The page's parameterized route + * @returns A wrapped version of the function + */ +export declare function wrapGetStaticPropsWithSentry any>( + origGetStaticPropsa: F, + parameterizedRoute: string, +): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise>; + +/** + * @deprecated Use `wrapGetStaticPropsWithSentry` instead. + */ +export declare function withSentryGetStaticProps any>( + origGetStaticPropsa: F, + parameterizedRoute: string, +): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise>; + /** * Wraps an `app` directory component with Sentry error instrumentation. (Currently only reports errors for server components) */