Skip to content

Commit e24127c

Browse files
authored
fix(nextjs): Export serverside data-fetcher wrappers from client (#7256)
1 parent 9c2c018 commit e24127c

File tree

4 files changed

+92
-0
lines changed

4 files changed

+92
-0
lines changed

packages/nextjs/src/client/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,15 +124,29 @@ export {
124124
withSentryServerSideAppGetInitialProps,
125125
wrapAppGetInitialPropsWithSentry,
126126
} from './wrapAppGetInitialPropsWithSentry';
127+
127128
export {
128129
// eslint-disable-next-line deprecation/deprecation
129130
withSentryServerSideDocumentGetInitialProps,
130131
wrapDocumentGetInitialPropsWithSentry,
131132
} from './wrapDocumentGetInitialPropsWithSentry';
133+
132134
export {
133135
// eslint-disable-next-line deprecation/deprecation
134136
withSentryServerSideErrorGetInitialProps,
135137
wrapErrorGetInitialPropsWithSentry,
136138
} from './wrapErrorGetInitialPropsWithSentry';
137139

140+
export {
141+
// eslint-disable-next-line deprecation/deprecation
142+
withSentryGetServerSideProps,
143+
wrapGetServerSidePropsWithSentry,
144+
} from './wrapGetServerSidePropsWithSentry';
145+
146+
export {
147+
// eslint-disable-next-line deprecation/deprecation
148+
withSentryGetStaticProps,
149+
wrapGetStaticPropsWithSentry,
150+
} from './wrapGetStaticPropsWithSentry';
151+
138152
export { wrapAppDirComponentWithSentry } from './wrapAppDirComponentWithSentry';
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import type { GetServerSideProps } from 'next';
2+
3+
/**
4+
* A passthrough function in case this function is used on the clientside. We need to make the returned function async
5+
* so we are consistent with the serverside implementation.
6+
*/
7+
export function wrapGetServerSidePropsWithSentry(origGetServerSideProps: GetServerSideProps): GetServerSideProps {
8+
return new Proxy(origGetServerSideProps, {
9+
apply: async (wrappingTarget, thisArg, args: Parameters<GetServerSideProps>) => {
10+
return await wrappingTarget.apply(thisArg, args);
11+
},
12+
});
13+
}
14+
15+
/**
16+
* @deprecated Use `withSentryGetServerSideProps` instead.
17+
*/
18+
export const withSentryGetServerSideProps = wrapGetServerSidePropsWithSentry;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import type { GetStaticProps } from 'next';
2+
3+
type Props = { [key: string]: unknown };
4+
5+
/**
6+
* A passthrough function in case this function is used on the clientside. We need to make the returned function async
7+
* so we are consistent with the serverside implementation.
8+
*/
9+
export function wrapGetStaticPropsWithSentry(origGetStaticProps: GetStaticProps<Props>): GetStaticProps<Props> {
10+
return new Proxy(origGetStaticProps, {
11+
apply: async (wrappingTarget, thisArg, args: Parameters<GetStaticProps<Props>>) => {
12+
return await wrappingTarget.apply(thisArg, args);
13+
},
14+
});
15+
}
16+
17+
/**
18+
* @deprecated Use `wrapGetStaticPropsWithSentry` instead.
19+
*/
20+
export const withSentryGetStaticProps = wrapGetStaticPropsWithSentry;

packages/nextjs/src/index.types.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,46 @@ export declare function withSentryServerSideErrorGetInitialProps<F extends (...a
127127
getInitialProps: F,
128128
): (...args: Parameters<F>) => ReturnType<F> extends Promise<unknown> ? ReturnType<F> : Promise<ReturnType<F>>;
129129

130+
/**
131+
* Wraps a `getServerSideProps` function with Sentry error and performance instrumentation.
132+
*
133+
* @param origGetServerSideProps The `getServerSideProps` function
134+
* @param parameterizedRoute The page's parameterized route
135+
* @returns A wrapped version of the function
136+
*/
137+
export declare function wrapGetServerSidePropsWithSentry<F extends (...args: any[]) => any>(
138+
origGetServerSideProps: F,
139+
parameterizedRoute: string,
140+
): (...args: Parameters<F>) => ReturnType<F> extends Promise<unknown> ? ReturnType<F> : Promise<ReturnType<F>>;
141+
142+
/**
143+
* @deprecated Use `wrapGetServerSidePropsWithSentry` instead.
144+
*/
145+
export declare function withSentryGetServerSideProps<F extends (...args: any[]) => any>(
146+
origGetServerSideProps: F,
147+
parameterizedRoute: string,
148+
): (...args: Parameters<F>) => ReturnType<F> extends Promise<unknown> ? ReturnType<F> : Promise<ReturnType<F>>;
149+
150+
/**
151+
* Wraps a `getStaticProps` function with Sentry error and performance instrumentation.
152+
*
153+
* @param origGetStaticProps The `getStaticProps` function
154+
* @param parameterizedRoute The page's parameterized route
155+
* @returns A wrapped version of the function
156+
*/
157+
export declare function wrapGetStaticPropsWithSentry<F extends (...args: any[]) => any>(
158+
origGetStaticPropsa: F,
159+
parameterizedRoute: string,
160+
): (...args: Parameters<F>) => ReturnType<F> extends Promise<unknown> ? ReturnType<F> : Promise<ReturnType<F>>;
161+
162+
/**
163+
* @deprecated Use `wrapGetStaticPropsWithSentry` instead.
164+
*/
165+
export declare function withSentryGetStaticProps<F extends (...args: any[]) => any>(
166+
origGetStaticPropsa: F,
167+
parameterizedRoute: string,
168+
): (...args: Parameters<F>) => ReturnType<F> extends Promise<unknown> ? ReturnType<F> : Promise<ReturnType<F>>;
169+
130170
/**
131171
* Wraps an `app` directory component with Sentry error instrumentation. (Currently only reports errors for server components)
132172
*/

0 commit comments

Comments
 (0)