From e88c60dd0627b2d16e2a422bb6fa37c0bc67b153 Mon Sep 17 00:00:00 2001 From: Dhravya Date: Wed, 17 Aug 2022 16:37:03 +0530 Subject: [PATCH] added honeybadger for monitoring --- .vscode/settings.json | 3 + next.config.js | 38 +++++++- package.json | 3 + pnpm-lock.yaml | 144 +++++++++++++++++++++++++++++ src/components/Create/index.tsx | 158 +++++++++++++++++++++++++------- src/pages/_app.tsx | 43 +++++---- 6 files changed, 333 insertions(+), 56 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7d9525e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.words": ["Honeybadger"] +} diff --git a/next.config.js b/next.config.js index 7e3bdab..bdf35ab 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,13 @@ /** @type {import('next').NextConfig} */ const withPWA = require("next-pwa"); +const HoneybadgerSourceMapPlugin = require("@honeybadger-io/webpack"); +const { execSync } = require("child_process"); + +const { + HONEYBADGER_API_KEY, + NODE_ENV, +} = process.env; const nextConfig = withPWA({ reactStrictMode: false, @@ -11,6 +18,35 @@ const nextConfig = withPWA({ disable: process.env.NODE_ENV === "development", }, experimental: { images: { allowFutureImage: true } }, + env: { + HONEYBADGER_API_KEY + }, + webpack: (config, options) => { + // When all the Honeybadger configuration env variables are + // available/configured The Honeybadger webpack plugin gets pushed to the + // webpack plugins to build and upload the source maps to Honeybadger. + // This is an alternative to manually uploading the source maps. + // See https://docs.honeybadger.io/lib/javascript/guides/using-source-maps.html + // Note: This is disabled in development mode. + if (HONEYBADGER_API_KEY && NODE_ENV != "development") { + // `config.devtool` must be 'hidden-source-map' or 'source-map' to properly pass sourcemaps. + // Next.js uses regular `source-map` which doesnt pass its sourcemaps to Webpack. + // https://github.com/vercel/next.js/blob/89ec21ed686dd79a5770b5c669abaff8f55d8fef/packages/next/build/webpack/config/blocks/base.ts#L40 + config.devtool = "hidden-source-map"; + + config.plugins.push( + new HoneybadgerSourceMapPlugin({ + apiKey: HONEYBADGER_API_KEY, + assetsUrl: + process.env.NODE_ENV == "development" + ? "http://localhost:3000" + : "https://lmfao.tech/_next", + }) + ); + } + + return config; + }, }); -module.exports = nextConfig +module.exports = nextConfig; diff --git a/package.json b/package.json index 479319c..cffd7fa 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,9 @@ "@fortawesome/free-solid-svg-icons": "^6.1.2", "@fortawesome/react-fontawesome": "^0.2.0", "@heroicons/react": "^1.0.6", + "@honeybadger-io/js": "^4.1.0", + "@honeybadger-io/react": "^2.1.0", + "@honeybadger-io/webpack": "^1.5.1", "@novu/node": "^0.6.0", "@novu/notification-center": "^0.6.2", "@prisma/client": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6290494..14fe04d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,9 @@ specifiers: '@fortawesome/free-solid-svg-icons': ^6.1.2 '@fortawesome/react-fontawesome': ^0.2.0 '@heroicons/react': ^1.0.6 + '@honeybadger-io/js': ^4.1.0 + '@honeybadger-io/react': ^2.1.0 + '@honeybadger-io/webpack': ^1.5.1 '@novu/node': ^0.6.0 '@novu/notification-center': ^0.6.2 '@prisma/client': ^4.0.0 @@ -66,6 +69,9 @@ dependencies: '@fortawesome/free-solid-svg-icons': 6.1.2 '@fortawesome/react-fontawesome': 0.2.0_tebjjym7ugcdduvdrfbg7ugwxq '@heroicons/react': 1.0.6_react@18.2.0 + '@honeybadger-io/js': 4.1.0 + '@honeybadger-io/react': 2.1.0_biqbaboplfbrettd7655fr4n2y + '@honeybadger-io/webpack': 1.5.1 '@novu/node': 0.6.0 '@novu/notification-center': 0.6.2_twyhzqqpkwvvgrmyeapdo6i4my '@prisma/client': 4.1.0_prisma@4.1.0 @@ -1696,6 +1702,49 @@ packages: react: 18.2.0 dev: false + /@honeybadger-io/core/4.1.0: + resolution: {integrity: sha512-btbhQYd3HM9OK7f8YoKH8A3y9d6LhegJC+7erV5kGqEq07hLjvZkUc051USyLRl6cZYkLeAXjtksuzxtAbbypg==} + dependencies: + stacktrace-parser: 0.1.10 + dev: false + + /@honeybadger-io/js/4.1.0: + resolution: {integrity: sha512-FPTNNb2sXd9BtF1PPbQwoTgO29RGaiY5WsIv4EGtnuGSwOXGMPxjNlKli42+CwayPX+4wLO+eTWizYu0fcEHLg==} + dependencies: + '@honeybadger-io/core': 4.1.0 + dev: false + + /@honeybadger-io/react/2.1.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-Rt1gt0d3B5Ly5p3+EU9ugt9HSOQQc+TzHoKcF8bIqWBWQpWWeV8UJeIgeqNmcv//X9G2rg9Z5D04WBLAZ4o7fw==} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + prop-types: ^15.5.4 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@honeybadger-io/js': 4.1.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@honeybadger-io/webpack/1.5.1: + resolution: {integrity: sha512-e1F3hdVhBB6Fj7H8bFRRf7IWVlpR2Mbn/o1az2t8hqViFbYnWz0bGJUDlzQlYmu9HLXyPwJ8+mRR8oQQO31I1w==} + peerDependencies: + webpack: '>= 4.0.0' + dependencies: + '@babel/runtime': 7.18.6 + '@vercel/fetch-retry': 5.1.3_node-fetch@2.6.7 + form-data: 4.0.0 + lodash.find: 4.6.0 + lodash.foreach: 4.5.0 + lodash.reduce: 4.6.0 + node-fetch: 2.6.7 + verror: 1.10.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@humanwhocodes/config-array/0.9.5: resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} @@ -2629,6 +2678,18 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@vercel/fetch-retry/5.1.3_node-fetch@2.6.7: + resolution: {integrity: sha512-UIbFc4VsEZHOr6dWuE+kxY4NxnOLXFMCWm0fSKRRHUEtrIzaJLzHpWk2QskCXTSzFgFvhkLAvSrBK2XZg7NSzg==} + peerDependencies: + node-fetch: ^2.6.7 + dependencies: + async-retry: 1.3.3 + debug: 4.3.4 + node-fetch: 2.6.7 + transitivePeerDependencies: + - supports-color + dev: false + /@webassemblyjs/ast/1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: @@ -3005,6 +3066,11 @@ packages: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: false + /assert-plus/1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: false + /assign-symbols/1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} @@ -3018,10 +3084,20 @@ packages: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} dev: false + /async-retry/1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + dependencies: + retry: 0.13.1 + dev: false + /async/3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: false + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + /at-least-node/1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -3637,6 +3713,13 @@ packages: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: false + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false @@ -3765,6 +3848,10 @@ packages: requiresBuild: true dev: false + /core-util-is/1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: false + /cosmiconfig/7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} engines: {node: '>=10'} @@ -3981,6 +4068,11 @@ packages: rimraf: 2.7.1 dev: false + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + /depd/2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -4588,6 +4680,11 @@ packages: - supports-color dev: false + /extsprintf/1.4.1: + resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} + engines: {'0': node >=0.6.0} + dev: false + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4799,6 +4896,15 @@ packages: - supports-color dev: false + /form-data/4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + /formidable/2.0.1: resolution: {integrity: sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==} dependencies: @@ -5897,6 +6003,14 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false + /lodash.find/4.6.0: + resolution: {integrity: sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==} + dev: false + + /lodash.foreach/4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + dev: false + /lodash.get/4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false @@ -5904,6 +6018,10 @@ packages: /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + /lodash.reduce/4.6.0: + resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} + dev: false + /lodash.sortby/4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: false @@ -7382,6 +7500,11 @@ packages: engines: {node: '>=0.12'} dev: false + /retry/0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -7752,6 +7875,13 @@ packages: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: false + /stacktrace-parser/0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: false + /static-extend/0.1.2: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} @@ -8184,6 +8314,11 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + /type-fest/0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false + /type-is/1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -8403,6 +8538,15 @@ packages: engines: {node: '>= 0.8'} dev: false + /verror/1.10.1: + resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.1 + dev: false + /warning/4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: diff --git a/src/components/Create/index.tsx b/src/components/Create/index.tsx index 94961f4..87d26ed 100644 --- a/src/components/Create/index.tsx +++ b/src/components/Create/index.tsx @@ -598,13 +598,15 @@ function Create({ publish }: { publish: (image: File) => void }) { initial={{ scaleY: 0 }} animate={{ scaleY: 1 }} exit={{ scaleY: 0 }} - className={`relative overflow-y-auto scrollbar-thin w-screen z-50 rounded-md h-[80vh] ${dark ? "bg-gray-600 text-white" : "bg-gray-200" - }`} + className={`relative overflow-y-auto scrollbar-thin w-screen z-50 rounded-md h-[80vh] ${ + dark ? "bg-gray-600 text-white" : "bg-gray-200" + }`} > = ({ Component, pageProps: { session, ...pageProps } }: AppLayoutProps) => { const getLayout = Component.getLayout || ((page: ReactNode) => page); - return ( - - - - - - - - - - -
-
- {getLayout()} - -
-
+ + + + + + + + + + +
+
+ {getLayout()} + +
+
); };