Guest User

Untitled

a guest
Jan 17th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. // configureStore.js
  2. export default function configureStore(initialState: State, Raven: any): Store {
  3. const middlewares = [
  4. // Other middlewares
  5. createRavenMiddleware(Raven, ravenMiddlewareOptions)
  6. ];
  7. // configure store
  8. return createStore(/**/);
  9. }
  10.  
  11. // universalRaven.js
  12. export interface UniversalRaven {
  13. captureException(ex: Error, options?: RavenOptions): *;
  14. setDataCallback(data: any, orig?: any): *;
  15. captureException(ex: Error, options?: RavenOptions): *;
  16. }
  17.  
  18. // Mimic raven-js API
  19. export class UniversalRavenNode implements UniversalRaven {
  20. raven: any;
  21. dataCallback: any => any = state => state;
  22.  
  23. constructor(raven: any) {
  24. this.raven = raven;
  25. }
  26.  
  27. // This is neccecary to get proper timing
  28. captureBreadcrumb = (data: any) => this.raven.captureBreadcrumb(data);
  29.  
  30. setDataCallback = (callback: any) => (this.dataCallback = callback);
  31.  
  32. captureException = (error: Error, extraData: any = {}) => {
  33. const data = this.dataCallback({
  34. extra: {},
  35. ...extraData
  36. });
  37. return this.raven.captureException(error, data);
  38. };
  39. }
  40.  
  41. // server/render.js
  42. function render(req: $Request, res: $Response, next: Middleware) {
  43. match({ routes, location: req.url }, (err, redirect, renderProps) => {
  44. // This will set the user context for the given request
  45. Raven.context(function() {
  46. // init react & redux stuff
  47.  
  48. const raven = new UniversalRavenNode(Raven);
  49. const store = configureStore({}, raven);
  50.  
  51. const respond = (error: Error) => {
  52. if (error) {
  53. raven.captureException(error);
  54. }
  55. // Render and return the
  56. };
  57.  
  58. // Run all SSR requests
  59. prepareWithTimeout(app).then(respond, respond);
  60. });
  61. });
  62. }
  63.  
  64. // client/index.js
  65. import Raven from 'raven-js';
  66. const store = configureStore(preloadedState, Raven);
Add Comment
Please, Sign In to add comment