From bb689c91b39d4f5020e570793a042fdbcc18c0ed Mon Sep 17 00:00:00 2001 From: ndom91 Date: Tue, 14 Jun 2022 00:27:18 +0200 Subject: [PATCH] feat: add sentry to /api/bookmarks route --- .gitignore | 3 + next.config.mjs | 16 +- package.json | 1 + pnpm-lock.yaml | 305 +++++++++++++++++++++---------- sentry.client.config.js | 19 ++ sentry.properties | 4 + sentry.server.config.js | 19 ++ src/pages/_error.js | 65 +++++++ src/pages/api/bookmarks/index.js | 5 +- 9 files changed, 342 insertions(+), 95 deletions(-) create mode 100644 sentry.client.config.js create mode 100644 sentry.properties create mode 100644 sentry.server.config.js create mode 100644 src/pages/_error.js diff --git a/.gitignore b/.gitignore index 27a90c7..1cc6d03 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,6 @@ yarn-error.log* # vercel .vercel log.txt + +# Sentry +.sentryclirc diff --git a/next.config.mjs b/next.config.mjs index 33bf245..c6a01ee 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,3 +1,5 @@ +const { withSentryConfig } = require('@sentry/nextjs') + /** * @type {import('next').NextConfig} */ @@ -22,4 +24,16 @@ const nextConfig = { }, } -export default nextConfig +const sentryWebpackPluginOptions = { + // Additional config options for the Sentry Webpack plugin. Keep in mind that + // the following options are set automatically, and overriding them is not + // recommended: + // release, url, org, project, authToken, configFile, stripPrefix, + // urlPrefix, include, ignore + + silent: true, // Suppresses all logs + // For all available options, see: + // https://github.com/getsentry/sentry-webpack-plugin#options. +} + +export default withSentryConfig(nextConfig, sentryWebpackPluginOptions) diff --git a/package.json b/package.json index 9c9a909..5a9c67f 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@headlessui/react": "^1.6.4", "@next-auth/prisma-adapter": "^1.0.3", "@prisma/client": "^3.15.1", + "@sentry/nextjs": "^7.1.1", "chrome-aws-lambda": "^9.1.0", "eslint-plugin-prettier": "^4.0.0", "framer-motion": "^6.3.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8e27193..a02c59a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,7 @@ specifiers: '@headlessui/react': ^1.6.4 '@next-auth/prisma-adapter': ^1.0.3 '@prisma/client': ^3.15.1 + '@sentry/nextjs': ^7.1.1 '@tailwindcss/aspect-ratio': ^0.4.0 '@tailwindcss/forms': ^0.5.2 '@tailwindcss/line-clamp': ^0.4.0 @@ -43,6 +44,7 @@ dependencies: '@headlessui/react': registry.npmjs.org/@headlessui/react/1.6.4_ef5jwxihqo6n7gxfmzogljlgcm '@next-auth/prisma-adapter': registry.npmjs.org/@next-auth/prisma-adapter/1.0.3_4kg3zne7s5l3s4k5ligdifdkdi '@prisma/client': registry.npmjs.org/@prisma/client/3.15.1_prisma@3.15.1 + '@sentry/nextjs': registry.npmjs.org/@sentry/nextjs/7.1.1_next@12.1.6+react@18.1.0 chrome-aws-lambda: registry.npmjs.org/chrome-aws-lambda/9.1.0_puppeteer-core@14.3.0 eslint-plugin-prettier: registry.npmjs.org/eslint-plugin-prettier/4.0.0_ucegkljdju7q4zmvwxzqoprf3y framer-motion: registry.npmjs.org/framer-motion/6.3.11_ef5jwxihqo6n7gxfmzogljlgcm @@ -364,7 +366,6 @@ packages: strip-json-comments: registry.npmjs.org/strip-json-comments/3.1.1 transitivePeerDependencies: - supports-color - dev: true registry.npmjs.org/@gar/promisify/1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz} @@ -397,13 +398,11 @@ packages: minimatch: registry.npmjs.org/minimatch/3.1.2 transitivePeerDependencies: - supports-color - dev: true registry.npmjs.org/@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz} name: '@humanwhocodes/object-schema' version: 1.2.1 - dev: true registry.npmjs.org/@jridgewell/resolve-uri/3.0.7: resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz} @@ -499,7 +498,6 @@ packages: resolution: {integrity: sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/env/-/env-12.1.6.tgz} name: '@next/env' version: 12.1.6 - dev: false registry.npmjs.org/@next/eslint-plugin-next/12.1.6: resolution: {integrity: sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.6.tgz} @@ -517,7 +515,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-android-arm64/12.1.6: @@ -528,7 +525,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-darwin-arm64/12.1.6: @@ -539,7 +535,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-darwin-x64/12.1.6: @@ -550,7 +545,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-linux-arm-gnueabihf/12.1.6: @@ -561,7 +555,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-linux-arm64-gnu/12.1.6: @@ -572,7 +565,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-linux-arm64-musl/12.1.6: @@ -583,7 +575,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-linux-x64-gnu/12.1.6: @@ -594,7 +585,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-linux-x64-musl/12.1.6: @@ -605,7 +595,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-win32-arm64-msvc/12.1.6: @@ -616,7 +605,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-win32-ia32-msvc/12.1.6: @@ -627,7 +615,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false optional: true registry.npmjs.org/@next/swc-win32-x64-msvc/12.1.6: @@ -638,7 +625,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true registry.npmjs.org/@nodelib/fs.scandir/2.1.5: @@ -721,7 +707,6 @@ packages: name: '@prisma/engines' version: 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e requiresBuild: true - dev: true registry.npmjs.org/@remix-run/node/1.4.3_ef5jwxihqo6n7gxfmzogljlgcm: resolution: {integrity: sha512-2x3BQ2qrA1v4Viu+GYMNMxxflnT5QcyOsPNCNvLjLm4o1pODHxYmp+2TEcZRgDqSTXgA7PNYlsEgG0BN/T33QA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@remix-run/node/-/node-1.4.3.tgz} @@ -787,6 +772,180 @@ packages: version: 1.1.3 dev: true + registry.npmjs.org/@sentry/browser/7.1.1: + resolution: {integrity: sha512-5AQvStZ+nOP/yxsBmeMZpeGLVtuOgnCNvswKd/c1CJwNw7bDmCE4TQeNKp1C3Gb7lSdBk8ViwUKn0ZpoVQ5MTw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/browser/-/browser-7.1.1.tgz} + name: '@sentry/browser' + version: 7.1.1 + engines: {node: '>=8'} + dependencies: + '@sentry/core': registry.npmjs.org/@sentry/core/7.1.1 + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + tslib: registry.npmjs.org/tslib/1.14.1 + dev: false + + registry.npmjs.org/@sentry/cli/1.74.4: + resolution: {integrity: sha512-BMfzYiedbModsNBJlKeBOLVYUtwSi99LJ8gxxE4Bp5N8hyjNIN0WVrozAVZ27mqzAuy6151Za3dpmOLO86YlGw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/cli/-/cli-1.74.4.tgz} + name: '@sentry/cli' + version: 1.74.4 + engines: {node: '>= 8'} + hasBin: true + requiresBuild: true + dependencies: + https-proxy-agent: registry.npmjs.org/https-proxy-agent/5.0.1 + mkdirp: registry.npmjs.org/mkdirp/0.5.6 + node-fetch: registry.npmjs.org/node-fetch/2.6.7 + npmlog: registry.npmjs.org/npmlog/4.1.2 + progress: registry.npmjs.org/progress/2.0.3 + proxy-from-env: registry.npmjs.org/proxy-from-env/1.1.0 + which: registry.npmjs.org/which/2.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + registry.npmjs.org/@sentry/core/7.1.1: + resolution: {integrity: sha512-SADdAoG5u1LTJhPN5KPtn5HHmH6r0mr6h2LokuZnhj6/okrAuCIIKOb6Fh8jV7j2VuABvew8+FjJHORxi7D/3Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/core/-/core-7.1.1.tgz} + name: '@sentry/core' + version: 7.1.1 + engines: {node: '>=8'} + dependencies: + '@sentry/hub': registry.npmjs.org/@sentry/hub/7.1.1 + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + tslib: registry.npmjs.org/tslib/1.14.1 + dev: false + + registry.npmjs.org/@sentry/hub/7.1.1: + resolution: {integrity: sha512-ASsRVjYDIii6ZTf36JnIYKHWBQBk0P42Tgq324MpyPgaeVDg3saBcyXO5iAtWvY6Vmdi2H4JCVDoir2Zz3Me1w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/hub/-/hub-7.1.1.tgz} + name: '@sentry/hub' + version: 7.1.1 + engines: {node: '>=8'} + dependencies: + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + tslib: registry.npmjs.org/tslib/1.14.1 + dev: false + + registry.npmjs.org/@sentry/integrations/7.1.1: + resolution: {integrity: sha512-FAkxuY/3O9xc+1CTovouhQyHycMrWlCYZw+oB0AOJUug1Vcq+XRPNG4gRpwt/HNFGuu7VjPXvk4ZQc60g1CQww==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/integrations/-/integrations-7.1.1.tgz} + name: '@sentry/integrations' + version: 7.1.1 + engines: {node: '>=8'} + dependencies: + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + localforage: registry.npmjs.org/localforage/1.10.0 + tslib: registry.npmjs.org/tslib/1.14.1 + dev: false + + registry.npmjs.org/@sentry/nextjs/7.1.1_next@12.1.6+react@18.1.0: + resolution: {integrity: sha512-0RRe0CzrdcymRZFCreVVG7UfGBtqxfliwBw+InyCuoO5yxWdB5HPD8cEmu+qtDhsGXXrO/DVPC/f0zzQAiOQYQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/nextjs/-/nextjs-7.1.1.tgz} + id: registry.npmjs.org/@sentry/nextjs/7.1.1 + name: '@sentry/nextjs' + version: 7.1.1 + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 + react: 15.x || 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true + dependencies: + '@sentry/core': registry.npmjs.org/@sentry/core/7.1.1 + '@sentry/hub': registry.npmjs.org/@sentry/hub/7.1.1 + '@sentry/integrations': registry.npmjs.org/@sentry/integrations/7.1.1 + '@sentry/node': registry.npmjs.org/@sentry/node/7.1.1 + '@sentry/react': registry.npmjs.org/@sentry/react/7.1.1_react@18.1.0 + '@sentry/tracing': registry.npmjs.org/@sentry/tracing/7.1.1 + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + '@sentry/webpack-plugin': registry.npmjs.org/@sentry/webpack-plugin/1.18.9 + next: registry.npmjs.org/next/12.1.6_ef5jwxihqo6n7gxfmzogljlgcm + react: registry.npmjs.org/react/18.1.0 + tslib: registry.npmjs.org/tslib/1.14.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + registry.npmjs.org/@sentry/node/7.1.1: + resolution: {integrity: sha512-QD9KPzVNu4zCL2Rjd5Go2/bjiuR9PLSutX7MkngHdGfy6JnN8CixTAXCjEyxb3oexI9xQyzgrQqns+UP5jdnlA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/node/-/node-7.1.1.tgz} + name: '@sentry/node' + version: 7.1.1 + engines: {node: '>=8'} + dependencies: + '@sentry/core': registry.npmjs.org/@sentry/core/7.1.1 + '@sentry/hub': registry.npmjs.org/@sentry/hub/7.1.1 + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + cookie: registry.npmjs.org/cookie/0.4.2 + https-proxy-agent: registry.npmjs.org/https-proxy-agent/5.0.1 + lru_map: registry.npmjs.org/lru_map/0.3.3 + tslib: registry.npmjs.org/tslib/1.14.1 + transitivePeerDependencies: + - supports-color + dev: false + + registry.npmjs.org/@sentry/react/7.1.1_react@18.1.0: + resolution: {integrity: sha512-Z7cZvXHIWxg7OhOSy4InhrRgQPRNtHsyOkIAHkgwW32JYOGTg1HdqQ5mFUxQLejhU/YqsxVjTK4CI58FATykLw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/react/-/react-7.1.1.tgz} + id: registry.npmjs.org/@sentry/react/7.1.1 + name: '@sentry/react' + version: 7.1.1 + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + dependencies: + '@sentry/browser': registry.npmjs.org/@sentry/browser/7.1.1 + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + hoist-non-react-statics: registry.npmjs.org/hoist-non-react-statics/3.3.2 + react: registry.npmjs.org/react/18.1.0 + tslib: registry.npmjs.org/tslib/1.14.1 + dev: false + + registry.npmjs.org/@sentry/tracing/7.1.1: + resolution: {integrity: sha512-MJ+EPGfvPlgbJOcZRoIl6+Oi0oRE2nIi/HP2BPJSKGxXFi2Y09bcZUwfxOH8fkUa465jOGBFdCm+sXcbyExvuw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/tracing/-/tracing-7.1.1.tgz} + name: '@sentry/tracing' + version: 7.1.1 + engines: {node: '>=8'} + dependencies: + '@sentry/hub': registry.npmjs.org/@sentry/hub/7.1.1 + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + '@sentry/utils': registry.npmjs.org/@sentry/utils/7.1.1 + tslib: registry.npmjs.org/tslib/1.14.1 + dev: false + + registry.npmjs.org/@sentry/types/7.1.1: + resolution: {integrity: sha512-5N1UMd2SqvUXprcIUMyDEju3H9lJY2oWfWQBGo0lG6Amn/lGAPAYlchg+4vQCLutDQMyd8K9zPwcbKn4u6gHdw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/types/-/types-7.1.1.tgz} + name: '@sentry/types' + version: 7.1.1 + engines: {node: '>=8'} + dev: false + + registry.npmjs.org/@sentry/utils/7.1.1: + resolution: {integrity: sha512-DPRHDf3InfyVgmxToE4Z+AATAR4OVm+wsXDLFGGyncR91CE1x4wLQKOcAJJwX3F0Hz1VHENfmx1DvyYTHOrC/A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/utils/-/utils-7.1.1.tgz} + name: '@sentry/utils' + version: 7.1.1 + engines: {node: '>=8'} + dependencies: + '@sentry/types': registry.npmjs.org/@sentry/types/7.1.1 + tslib: registry.npmjs.org/tslib/1.14.1 + dev: false + + registry.npmjs.org/@sentry/webpack-plugin/1.18.9: + resolution: {integrity: sha512-+TrenJrgFM0QTOwBnw0ZXWMvc0PiOebp6GN5EbGEx3JPCQqXOfXFzCaEjBtASKRgcNCL7zGly41S25YR6Hm+jw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.9.tgz} + name: '@sentry/webpack-plugin' + version: 1.18.9 + engines: {node: '>= 8'} + dependencies: + '@sentry/cli': registry.npmjs.org/@sentry/cli/1.74.4 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + registry.npmjs.org/@sindresorhus/is/0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz} name: '@sindresorhus/is' @@ -1231,7 +1390,6 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: registry.npmjs.org/acorn/8.7.1 - dev: true registry.npmjs.org/acorn-node/1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz} @@ -1334,7 +1492,6 @@ packages: name: ansi-regex version: 2.1.1 engines: {node: '>=0.10.0'} - dev: true registry.npmjs.org/ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz} @@ -1365,7 +1522,6 @@ packages: engines: {node: '>=8'} dependencies: color-convert: registry.npmjs.org/color-convert/2.0.1 - dev: true registry.npmjs.org/ansi-styles/6.1.0: resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz} @@ -1388,7 +1544,6 @@ packages: resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz} name: aproba version: 1.2.0 - dev: true registry.npmjs.org/aproba/2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz} @@ -1402,7 +1557,6 @@ packages: dependencies: delegates: registry.npmjs.org/delegates/1.0.0 readable-stream: registry.npmjs.org/readable-stream/2.3.7 - dev: true registry.npmjs.org/are-we-there-yet/2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz} @@ -1440,7 +1594,6 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz} name: argparse version: 2.0.1 - dev: true registry.npmjs.org/aria-query/4.2.2: resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz} @@ -1804,7 +1957,6 @@ packages: name: callsites version: 3.1.0 engines: {node: '>=6'} - dev: true registry.npmjs.org/camelcase-css/2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz} @@ -1868,7 +2020,6 @@ packages: dependencies: ansi-styles: registry.npmjs.org/ansi-styles/4.3.0 supports-color: registry.npmjs.org/supports-color/7.2.0 - dev: true registry.npmjs.org/cheerio-select/2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz} @@ -2028,7 +2179,6 @@ packages: name: code-point-at version: 1.1.0 engines: {node: '>=0.10.0'} - dev: true registry.npmjs.org/color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz} @@ -2045,7 +2195,6 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: registry.npmjs.org/color-name/1.1.4 - dev: true registry.npmjs.org/color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz} @@ -2057,7 +2206,6 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz} name: color-name version: 1.1.4 - dev: true registry.npmjs.org/color-support/1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz} @@ -2252,7 +2400,6 @@ packages: path-key: registry.npmjs.org/path-key/3.1.1 shebang-command: registry.npmjs.org/shebang-command/2.0.0 which: registry.npmjs.org/which/2.0.2 - dev: true registry.npmjs.org/crypto-random-string/2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz} @@ -2582,7 +2729,6 @@ packages: engines: {node: '>=6.0.0'} dependencies: esutils: registry.npmjs.org/esutils/2.0.3 - dev: true registry.npmjs.org/dom-serializer/2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz} @@ -2859,7 +3005,6 @@ packages: eslint: '>=7.0.0' dependencies: eslint: registry.npmjs.org/eslint/8.17.0 - dev: true registry.npmjs.org/eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz} @@ -3047,7 +3192,6 @@ packages: dependencies: esrecurse: registry.npmjs.org/esrecurse/4.3.0 estraverse: registry.npmjs.org/estraverse/5.3.0 - dev: true registry.npmjs.org/eslint-utils/3.0.0_eslint@8.17.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz} @@ -3060,21 +3204,18 @@ packages: dependencies: eslint: registry.npmjs.org/eslint/8.17.0 eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys/2.1.0 - dev: true registry.npmjs.org/eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz} name: eslint-visitor-keys version: 2.1.0 engines: {node: '>=10'} - dev: true registry.npmjs.org/eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz} name: eslint-visitor-keys version: 3.3.0 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true registry.npmjs.org/eslint/8.17.0: resolution: {integrity: sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz} @@ -3120,7 +3261,6 @@ packages: v8-compile-cache: registry.npmjs.org/v8-compile-cache/2.3.0 transitivePeerDependencies: - supports-color - dev: true registry.npmjs.org/espree/9.3.2: resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/espree/-/espree-9.3.2.tgz} @@ -3131,7 +3271,6 @@ packages: acorn: registry.npmjs.org/acorn/8.7.1 acorn-jsx: registry.npmjs.org/acorn-jsx/5.3.2_acorn@8.7.1 eslint-visitor-keys: registry.npmjs.org/eslint-visitor-keys/3.3.0 - dev: true registry.npmjs.org/esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz} @@ -3148,7 +3287,6 @@ packages: engines: {node: '>=0.10'} dependencies: estraverse: registry.npmjs.org/estraverse/5.3.0 - dev: true registry.npmjs.org/esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz} @@ -3157,7 +3295,6 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: registry.npmjs.org/estraverse/5.3.0 - dev: true registry.npmjs.org/estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz} @@ -3322,7 +3459,6 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: registry.npmjs.org/flat-cache/3.0.4 - dev: true registry.npmjs.org/file-extension/4.0.5: resolution: {integrity: sha512-l0rOL3aKkoi6ea7MNZe6OHgqYYpn48Qfflr8Pe9G9JPPTx5A+sfboK91ZufzIs59/lPqh351l0eb6iKU9J5oGg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/file-extension/-/file-extension-4.0.5.tgz} @@ -3382,13 +3518,11 @@ packages: dependencies: flatted: registry.npmjs.org/flatted/3.2.5 rimraf: registry.npmjs.org/rimraf/3.0.2 - dev: true registry.npmjs.org/flatted/3.2.5: resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz} name: flatted version: 3.2.5 - dev: true registry.npmjs.org/for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz} @@ -3540,7 +3674,6 @@ packages: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz} name: functional-red-black-tree version: 1.0.1 - dev: true registry.npmjs.org/functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz} @@ -3561,7 +3694,6 @@ packages: string-width: registry.npmjs.org/string-width/1.0.2 strip-ansi: registry.npmjs.org/strip-ansi/3.0.1 wide-align: registry.npmjs.org/wide-align/1.1.5 - dev: true registry.npmjs.org/gauge/3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz} @@ -3685,7 +3817,6 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: registry.npmjs.org/is-glob/4.0.3 - dev: true registry.npmjs.org/glob/7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/glob/-/glob-7.1.7.tgz} @@ -3737,7 +3868,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: registry.npmjs.org/type-fest/0.20.2 - dev: true registry.npmjs.org/globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz} @@ -3828,7 +3958,6 @@ packages: name: has-flag version: 4.0.0 engines: {node: '>=8'} - dev: true registry.npmjs.org/has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz} @@ -3898,6 +4027,14 @@ packages: '@babel/runtime': registry.npmjs.org/@babel/runtime/7.18.3 dev: true + registry.npmjs.org/hoist-non-react-statics/3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz} + name: hoist-non-react-statics + version: 3.3.2 + dependencies: + react-is: registry.npmjs.org/react-is/16.13.1 + dev: false + registry.npmjs.org/hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz} name: hosted-git-info @@ -4051,7 +4188,6 @@ packages: name: ignore version: 5.2.0 engines: {node: '>= 4'} - dev: true registry.npmjs.org/image-extensions/1.1.0: resolution: {integrity: sha512-P0t7ByhK8Jk9TU05ct/7+f7h8dNuXq5OY4m0IO/T+1aga/qHkpC0Wf472x3FLdq/zFDG17pgapCM3JDTxwZzow==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/image-extensions/-/image-extensions-1.1.0.tgz} @@ -4072,6 +4208,12 @@ packages: uuid: registry.npmjs.org/uuid/3.4.0 dev: false + registry.npmjs.org/immediate/3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz} + name: immediate + version: 3.0.6 + dev: false + registry.npmjs.org/import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz} name: import-fresh @@ -4080,7 +4222,6 @@ packages: dependencies: parent-module: registry.npmjs.org/parent-module/1.0.1 resolve-from: registry.npmjs.org/resolve-from/4.0.0 - dev: true registry.npmjs.org/import-lazy/2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz} @@ -4260,7 +4401,6 @@ packages: name: is-extglob version: 2.1.1 engines: {node: '>=0.10.0'} - dev: true registry.npmjs.org/is-fullwidth-code-point/1.0.0: resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz} @@ -4269,7 +4409,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: number-is-nan: registry.npmjs.org/number-is-nan/1.0.1 - dev: true registry.npmjs.org/is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} @@ -4300,7 +4439,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: registry.npmjs.org/is-extglob/2.1.1 - dev: true registry.npmjs.org/is-installed-globally/0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz} @@ -4489,7 +4627,6 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz} name: isarray version: 1.0.0 - dev: true registry.npmjs.org/isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz} @@ -4545,7 +4682,6 @@ packages: hasBin: true dependencies: argparse: registry.npmjs.org/argparse/2.0.1 - dev: true registry.npmjs.org/jsbn/0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz} @@ -4632,7 +4768,6 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz} name: json-stable-stringify-without-jsonify version: 1.0.1 - dev: true registry.npmjs.org/json-stringify-safe/5.0.1: resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz} @@ -4753,7 +4888,14 @@ packages: dependencies: prelude-ls: registry.npmjs.org/prelude-ls/1.2.1 type-check: registry.npmjs.org/type-check/0.4.0 - dev: true + + registry.npmjs.org/lie/3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/lie/-/lie-3.1.1.tgz} + name: lie + version: 3.1.1 + dependencies: + immediate: registry.npmjs.org/immediate/3.0.6 + dev: false registry.npmjs.org/lilconfig/2.0.5: resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz} @@ -4814,6 +4956,14 @@ packages: wrap-ansi: registry.npmjs.org/wrap-ansi/7.0.0 dev: true + registry.npmjs.org/localforage/1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz} + name: localforage + version: 1.10.0 + dependencies: + lie: registry.npmjs.org/lie/3.1.1 + dev: false + registry.npmjs.org/locate-path/2.0.0: resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz} name: locate-path @@ -4845,7 +4995,6 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz} name: lodash.merge version: 4.6.2 - dev: true registry.npmjs.org/lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz} @@ -4894,6 +5043,12 @@ packages: dependencies: yallist: registry.npmjs.org/yallist/4.0.0 + registry.npmjs.org/lru_map/0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz} + name: lru_map + version: 0.3.3 + dev: false + registry.npmjs.org/make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz} name: make-dir @@ -5152,7 +5307,6 @@ packages: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz} name: minimist version: 1.2.6 - dev: true registry.npmjs.org/minipass-collect/1.0.2: resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz} @@ -5250,7 +5404,6 @@ packages: hasBin: true dependencies: minimist: registry.npmjs.org/minimist/1.2.6 - dev: true registry.npmjs.org/mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz} @@ -5313,7 +5466,6 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz} name: natural-compare version: 1.4.0 - dev: true registry.npmjs.org/needle/2.9.1: resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/needle/-/needle-2.9.1.tgz} @@ -5407,7 +5559,6 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false registry.npmjs.org/node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz} @@ -5606,7 +5757,6 @@ packages: console-control-strings: registry.npmjs.org/console-control-strings/1.1.0 gauge: registry.npmjs.org/gauge/2.7.4 set-blocking: registry.npmjs.org/set-blocking/2.0.0 - dev: true registry.npmjs.org/npmlog/5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz} @@ -5644,7 +5794,6 @@ packages: name: number-is-nan version: 1.0.1 engines: {node: '>=0.10.0'} - dev: true registry.npmjs.org/nwsapi/2.2.0: resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz} @@ -5669,7 +5818,6 @@ packages: name: object-assign version: 4.1.1 engines: {node: '>=0.10.0'} - dev: true registry.npmjs.org/object-hash/2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz} @@ -5822,7 +5970,6 @@ packages: prelude-ls: registry.npmjs.org/prelude-ls/1.2.1 type-check: registry.npmjs.org/type-check/0.4.0 word-wrap: registry.npmjs.org/word-wrap/1.2.3 - dev: true registry.npmjs.org/os-homedir/1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz} @@ -5946,7 +6093,6 @@ packages: engines: {node: '>=6'} dependencies: callsites: registry.npmjs.org/callsites/3.1.0 - dev: true registry.npmjs.org/parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz} @@ -6014,7 +6160,6 @@ packages: name: path-key version: 3.1.1 engines: {node: '>=8'} - dev: true registry.npmjs.org/path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz} @@ -6198,7 +6343,6 @@ packages: nanoid: registry.npmjs.org/nanoid/3.3.4 picocolors: registry.npmjs.org/picocolors/1.0.0 source-map-js: registry.npmjs.org/source-map-js/1.0.2 - dev: false registry.npmjs.org/preact-render-to-string/5.2.0_preact@10.7.2: resolution: {integrity: sha512-+RGwSW78Cl+NsZRUbFW1MGB++didsfqRk+IyRVTaqy+3OjtpKK/6HgBtfszUX0YXMfo41k2iaQSseAHGKEwrbg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.2.0.tgz} @@ -6230,7 +6374,6 @@ packages: name: prelude-ls version: 1.2.1 engines: {node: '>= 0.8.0'} - dev: true registry.npmjs.org/prepend-http/2.0.0: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz} @@ -6266,7 +6409,6 @@ packages: version: 2.6.2 engines: {node: '>=10.13.0'} hasBin: true - dev: true registry.npmjs.org/pretty-format/3.8.0: resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz} @@ -6283,13 +6425,11 @@ packages: requiresBuild: true dependencies: '@prisma/engines': registry.npmjs.org/@prisma/engines/3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e - dev: true registry.npmjs.org/process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz} name: process-nextick-args version: 2.0.1 - dev: true registry.npmjs.org/progress/2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/progress/-/progress-2.0.3.tgz} @@ -6467,13 +6607,11 @@ packages: loose-envify: registry.npmjs.org/loose-envify/1.4.0 react: registry.npmjs.org/react/18.1.0 scheduler: registry.npmjs.org/scheduler/0.22.0 - dev: false registry.npmjs.org/react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz} name: react-is version: 16.13.1 - dev: true registry.npmjs.org/react-router-dom/6.3.0_ef5jwxihqo6n7gxfmzogljlgcm: resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz} @@ -6549,7 +6687,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: loose-envify: registry.npmjs.org/loose-envify/1.4.0 - dev: false registry.npmjs.org/read-cache/1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz} @@ -6594,7 +6731,6 @@ packages: safe-buffer: registry.npmjs.org/safe-buffer/5.1.2 string_decoder: registry.npmjs.org/string_decoder/1.1.1 util-deprecate: registry.npmjs.org/util-deprecate/1.0.2 - dev: true registry.npmjs.org/readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz} @@ -6646,7 +6782,6 @@ packages: name: regexpp version: 3.2.0 engines: {node: '>=8'} - dev: true registry.npmjs.org/registry-auth-token/4.2.1: resolution: {integrity: sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz} @@ -6713,7 +6848,6 @@ packages: name: resolve-from version: 4.0.0 engines: {node: '>=4'} - dev: true registry.npmjs.org/resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz} @@ -6842,7 +6976,6 @@ packages: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz} name: safe-buffer version: 5.1.2 - dev: true registry.npmjs.org/safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz} @@ -6875,7 +7008,6 @@ packages: version: 0.22.0 dependencies: loose-envify: registry.npmjs.org/loose-envify/1.4.0 - dev: false registry.npmjs.org/screenfull/5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz} @@ -6948,14 +7080,12 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: registry.npmjs.org/shebang-regex/3.0.0 - dev: true registry.npmjs.org/shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} name: shebang-regex version: 3.0.0 engines: {node: '>=8'} - dev: true registry.npmjs.org/side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz} @@ -7218,7 +7348,6 @@ packages: code-point-at: registry.npmjs.org/code-point-at/1.1.0 is-fullwidth-code-point: registry.npmjs.org/is-fullwidth-code-point/1.0.0 strip-ansi: registry.npmjs.org/strip-ansi/3.0.1 - dev: true registry.npmjs.org/string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz} @@ -7282,7 +7411,6 @@ packages: version: 1.1.1 dependencies: safe-buffer: registry.npmjs.org/safe-buffer/5.1.2 - dev: true registry.npmjs.org/string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz} @@ -7298,7 +7426,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: ansi-regex: registry.npmjs.org/ansi-regex/2.1.1 - dev: true registry.npmjs.org/strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz} @@ -7359,7 +7486,6 @@ packages: name: strip-json-comments version: 3.1.1 engines: {node: '>=8'} - dev: true registry.npmjs.org/style-value-types/5.0.0: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz} @@ -7387,7 +7513,6 @@ packages: optional: true dependencies: react: registry.npmjs.org/react/18.1.0 - dev: false registry.npmjs.org/stylis/4.1.1: resolution: {integrity: sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/stylis/-/stylis-4.1.1.tgz} @@ -7411,7 +7536,6 @@ packages: engines: {node: '>=8'} dependencies: has-flag: registry.npmjs.org/has-flag/4.0.0 - dev: true registry.npmjs.org/supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz} @@ -7533,7 +7657,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz} name: text-table version: 0.2.0 - dev: true registry.npmjs.org/throttle-debounce/3.0.1: resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz} @@ -7699,7 +7822,6 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz} name: tslib version: 1.14.1 - dev: true registry.npmjs.org/tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz} @@ -7747,7 +7869,6 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: registry.npmjs.org/prelude-ls/1.2.1 - dev: true registry.npmjs.org/type-fest/0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz} @@ -7761,7 +7882,6 @@ packages: name: type-fest version: 0.20.2 engines: {node: '>=10'} - dev: true registry.npmjs.org/type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz} @@ -7976,7 +8096,6 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz} name: v8-compile-cache version: 2.3.0 - dev: true registry.npmjs.org/validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, registry: https://registry.npmjs.com/, tarball: https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz} diff --git a/sentry.client.config.js b/sentry.client.config.js new file mode 100644 index 0000000..3bb4de3 --- /dev/null +++ b/sentry.client.config.js @@ -0,0 +1,19 @@ +// This file configures the initialization of Sentry on the browser. +// The config you add here will be used whenever a page is visited. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs' + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN + +Sentry.init({ + dsn: + SENTRY_DSN || + 'https://2b0f5bb15ddd4feeb9fbed676243f0b6@o1287700.ingest.sentry.io/6503207', + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}) diff --git a/sentry.properties b/sentry.properties new file mode 100644 index 0000000..ad1d580 --- /dev/null +++ b/sentry.properties @@ -0,0 +1,4 @@ +defaults.url=https://sentry.io/ +defaults.org=domino-z6 +defaults.project=briefkasten +cli.executable=../../../home/ndo/.npm/_npx/a8388072043b4cbc/node_modules/@sentry/cli/bin/sentry-cli diff --git a/sentry.server.config.js b/sentry.server.config.js new file mode 100644 index 0000000..eccdbc8 --- /dev/null +++ b/sentry.server.config.js @@ -0,0 +1,19 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs' + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN + +Sentry.init({ + dsn: + SENTRY_DSN || + 'https://2b0f5bb15ddd4feeb9fbed676243f0b6@o1287700.ingest.sentry.io/6503207', + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}) diff --git a/src/pages/_error.js b/src/pages/_error.js new file mode 100644 index 0000000..1068f15 --- /dev/null +++ b/src/pages/_error.js @@ -0,0 +1,65 @@ +import NextErrorComponent from 'next/error' + +import * as Sentry from '@sentry/nextjs' + +const MyError = ({ statusCode, hasGetInitialPropsRun, err }) => { + if (!hasGetInitialPropsRun && err) { + // getInitialProps is not called in case of + // https://github.com/vercel/next.js/issues/8592. As a workaround, we pass + // err via _app.js so it can be captured + Sentry.captureException(err) + // Flushing is not required in this case as it only happens on the client + } + + return +} + +MyError.getInitialProps = async (context) => { + const errorInitialProps = await NextErrorComponent.getInitialProps(context) + + const { res, err, asPath } = context + + // Workaround for https://github.com/vercel/next.js/issues/8592, mark when + // getInitialProps has run + errorInitialProps.hasGetInitialPropsRun = true + + // Returning early because we don't want to log 404 errors to Sentry. + if (res?.statusCode === 404) { + return errorInitialProps + } + + // Running on the server, the response object (`res`) is available. + // + // Next.js will pass an err on the server if a page's data fetching methods + // threw or returned a Promise that rejected + // + // Running on the client (browser), Next.js will provide an err if: + // + // - a page's `getInitialProps` threw or returned a Promise that rejected + // - an exception was thrown somewhere in the React lifecycle (render, + // componentDidMount, etc) that was caught by Next.js's React Error + // Boundary. Read more about what types of exceptions are caught by Error + // Boundaries: https://reactjs.org/docs/error-boundaries.html + + if (err) { + Sentry.captureException(err) + + // Flushing before returning is necessary if deploying to Vercel, see + // https://vercel.com/docs/platform/limits#streaming-responses + await Sentry.flush(2000) + + return errorInitialProps + } + + // If this point is reached, getInitialProps was called without any + // information about what the error might be. This is unexpected and may + // indicate a bug introduced in Next.js, so record it in Sentry + Sentry.captureException( + new Error(`_error.js getInitialProps missing data at path: ${asPath}`) + ) + await Sentry.flush(2000) + + return errorInitialProps +} + +export default MyError diff --git a/src/pages/api/bookmarks/index.js b/src/pages/api/bookmarks/index.js index f666359..97ce6bd 100644 --- a/src/pages/api/bookmarks/index.js +++ b/src/pages/api/bookmarks/index.js @@ -1,4 +1,5 @@ import ImageKit from 'imagekit' +import { withSentry } from '@sentry/nextjs' import prisma from '@/lib/prisma' import { getSession } from 'next-auth/react' import { asyncFileReader } from '@/lib/helpers' @@ -9,7 +10,7 @@ const metascraper = require('metascraper')([ require('metascraper-title')(), ]) -export default async function handler(req, res) { +const handler = async (req, res) => { const session = await getSession({ req }) const { method, headers, query, body } = req @@ -252,3 +253,5 @@ export default async function handler(req, res) { } } } + +export default withSentry(handler)