File tree Expand file tree Collapse file tree 7 files changed +115
-1
lines changed Expand file tree Collapse file tree 7 files changed +115
-1
lines changed Original file line number Diff line number Diff line change 1+ export  {  withSentryGSPaths  }  from  './withSentryGSPaths' ; 
2+ export  {  withSentryGSProps  }  from  './withSentryGSProps' ; 
3+ export  {  withSentryGSSP  }  from  './withSentryGSSP' ; 
Original file line number Diff line number Diff line change 1+ import  type  { 
2+   GetServerSideProps , 
3+   GetServerSidePropsContext , 
4+   GetServerSidePropsResult , 
5+   GetStaticPaths , 
6+   GetStaticPathsContext , 
7+   GetStaticPathsResult , 
8+   GetStaticProps , 
9+   GetStaticPropsContext , 
10+   GetStaticPropsResult , 
11+ }  from  'next' ; 
12+ 
13+ type  Paths  =  {  [ key : string ] : string  |  string [ ]  } ; 
14+ type  Props  =  {  [ key : string ] : unknown  } ; 
15+ 
16+ export  type  GSPaths  =  { 
17+   fn : GetStaticPaths ; 
18+   wrappedFn : GetStaticPaths ; 
19+   context : GetStaticPathsContext ; 
20+   result : GetStaticPathsResult < Paths > ; 
21+ } ; 
22+ 
23+ export  type  GSProps  =  { 
24+   fn : GetStaticProps ; 
25+   wrappedFn : GetStaticProps ; 
26+   context : GetStaticPropsContext ; 
27+   result : GetStaticPropsResult < Props > ; 
28+ } ; 
29+ 
30+ export  type  GSSP  =  { 
31+   fn : GetServerSideProps ; 
32+   wrappedFn : GetServerSideProps ; 
33+   context : GetServerSidePropsContext ; 
34+   result : GetServerSidePropsResult < Props > ; 
35+ } ; 
36+ 
37+ export  type  DataFetchingFunction  =  GSPaths  |  GSProps  |  GSSP ; 
Original file line number Diff line number Diff line change 1+ import  type  {  GSPaths  }  from  './types' ; 
2+ import  {  callOriginal  }  from  './wrapperUtils' ; 
3+ 
4+ /** 
5+  * Create a wrapped version of the user's exported `getStaticPaths` function 
6+  * 
7+  * @param  origGSPaths: The user's `getStaticPaths` function 
8+  * @returns  A wrapped version of the function 
9+  */ 
10+ export  function  withSentryGSPaths ( origGSPaths : GSPaths [ 'fn' ] ) : GSPaths [ 'wrappedFn' ]  { 
11+   const  wrappedGSPaths  =  async  function  ( context : GSPaths [ 'context' ] ) : Promise < GSPaths [ 'result' ] >  { 
12+     return  callOriginal < GSPaths > ( origGSPaths ,  context ) ; 
13+   } ; 
14+ 
15+   return  wrappedGSPaths ; 
16+ } 
Original file line number Diff line number Diff line change 1+ import  {  GSProps  }  from  './types' ; 
2+ import  {  callOriginal  }  from  './wrapperUtils' ; 
3+ 
4+ /** 
5+  * Create a wrapped version of the user's exported `getStaticProps` function 
6+  * 
7+  * @param  origGSProps: The user's `getStaticProps` function 
8+  * @returns  A wrapped version of the function 
9+  */ 
10+ export  function  withSentryGSProps ( origGSProps : GSProps [ 'fn' ] ) : GSProps [ 'wrappedFn' ]  { 
11+   const  wrappedGSProps  =  async  function  ( context : GSProps [ 'context' ] ) : Promise < GSProps [ 'result' ] >  { 
12+     return  callOriginal < GSProps > ( origGSProps ,  context ) ; 
13+   } ; 
14+ 
15+   return  wrappedGSProps ; 
16+ } 
Original file line number Diff line number Diff line change 1+ import  {  GSSP  }  from  './types' ; 
2+ import  {  callOriginal  }  from  './wrapperUtils' ; 
3+ 
4+ /** 
5+  * Create a wrapped version of the user's exported `getServerSideProps` function 
6+  * 
7+  * @param  origGSSP: The user's `getServerSideProps` function 
8+  * @returns  A wrapped version of the function 
9+  */ 
10+ export  function  withSentryGSSP ( origGSSP : GSSP [ 'fn' ] ) : GSSP [ 'wrappedFn' ]  { 
11+   const  wrappedGSSP  =  async  function  ( context : GSSP [ 'context' ] ) : Promise < GSSP [ 'result' ] >  { 
12+     return  callOriginal < GSSP > ( origGSSP ,  context ) ; 
13+   } ; 
14+ 
15+   return  wrappedGSSP ; 
16+ } 
Original file line number Diff line number Diff line change 1+ import  {  DataFetchingFunction  }  from  './types' ; 
2+ 
3+ /** 
4+  * Pass-through wrapper for the original function, used as a first step in eventually wrapping the data-fetching 
5+  * functions with code for tracing. 
6+  * 
7+  * @template  T Types for `getStaticPaths`, `getStaticProps`, and `getServerSideProps` 
8+  * @param  origFunction The user's exported `getStaticPaths`, `getStaticProps`, or `getServerSideProps` function 
9+  * @param  context The context object passed by nextjs to the function 
10+  * @returns  The result of calling the user's function 
11+  */ 
12+ export  async  function  callOriginal < T  extends  DataFetchingFunction > ( 
13+   origFunction : T [ 'fn' ] , 
14+   context : T [ 'context' ] , 
15+ ) : Promise < T [ 'result' ] >  { 
16+   let  pathsOrProps ; 
17+ 
18+   // TODO: Can't figure out how to tell TS that the types are correlated - that a `GSPropsFunction` will only get passed 
19+   // `GSPropsContext` and never, say, `GSSPContext`. That's what wrapping everything in objects and using the generic 
20+   // and pulling the types from the generic rather than specifying them directly was supposed to do, but... no luck. 
21+   // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any 
22+   pathsOrProps  =  await  ( origFunction  as  any ) ( context ) ; 
23+ 
24+   return  pathsOrProps ; 
25+ } 
Original file line number Diff line number Diff line change @@ -124,8 +124,9 @@ function addServerIntegrations(options: NextjsOptions): void {
124124
125125export  type  {  SentryWebpackPluginOptions  }  from  './config/types' ; 
126126export  {  withSentryConfig  }  from  './config' ; 
127- export  {  withSentry  }  from  './utils/withSentry' ; 
128127export  {  isBuild  }  from  './utils/isBuild' ; 
128+ export  {  withSentryGSProps ,  withSentryGSSP ,  withSentryGSPaths  }  from  './config/wrappers' ; 
129+ export  {  withSentry  }  from  './utils/withSentry' ; 
129130
130131// Wrap various server methods to enable error monitoring and tracing. (Note: This only happens for non-Vercel 
131132// deployments, because the current method of doing the wrapping a) crashes Next 12 apps deployed to Vercel and 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments