From e07e3c0d76a3536a6eab686128cf5d5f825bde3e Mon Sep 17 00:00:00 2001 From: Joe Karow <58997957+JoeKarow@users.noreply.github.com> Date: Mon, 28 Aug 2023 12:40:29 -0400 Subject: [PATCH 1/7] improve logging/sentry --- apps/app/instrumentation.node.ts | 1 - apps/app/next.config.mjs | 14 ++- apps/app/package.json | 2 + apps/app/sentry.client.config.ts | 11 +- apps/app/sentry.server.config.ts | 3 + apps/app/src/pages/api/trpc/[trpc].ts | 47 +++++++-- apps/app/src/utils/api.ts | 18 ++-- packages/api/lib/initTRPC.ts | 13 ++- packages/ui/lib/trpcClient.ts | 9 +- packages/util/logger/index.ts | 14 ++- packages/util/package.json | 1 + pnpm-lock.yaml | 144 ++++++++++++++++++++++++++ 12 files changed, 238 insertions(+), 39 deletions(-) diff --git a/apps/app/instrumentation.node.ts b/apps/app/instrumentation.node.ts index a10affbcdb..23d1e72495 100644 --- a/apps/app/instrumentation.node.ts +++ b/apps/app/instrumentation.node.ts @@ -1,4 +1,3 @@ -/* eslint-disable turbo/no-undeclared-env-vars */ /* eslint-disable node/no-process-env */ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' import { Resource } from '@opentelemetry/resources' diff --git a/apps/app/next.config.mjs b/apps/app/next.config.mjs index 70831bb3c3..d96afd1d47 100644 --- a/apps/app/next.config.mjs +++ b/apps/app/next.config.mjs @@ -14,6 +14,7 @@ const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) const isVercelActiveDev = process.env.VERCEL_ENV === 'preview' && process.env.VERCEL_GIT_COMMIT_REF !== 'dev' +const isVercelProd = process.env.VERCEL_ENV === 'production' const isLocalDev = process.env.NODE_ENV === 'development' && !['preview', 'production'].includes(process.env.VERCEL_ENV) @@ -23,7 +24,14 @@ const nextConfig = { i18n: i18nConfig.i18n, reactStrictMode: true, swcMinify: true, - transpilePackages: ['@weareinreach/ui', '@weareinreach/db', '@weareinreach/auth', '@weareinreach/api'], + transpilePackages: [ + '@weareinreach/api', + '@weareinreach/auth', + '@weareinreach/db', + '@weareinreach/env', + '@weareinreach/ui', + '@weareinreach/util', + ], compiler: { ...(process.env.VERCEL_ENV === 'production' ? { removeConsole: { exclude: ['error'] } } : {}), }, @@ -81,7 +89,7 @@ const defineSentryConfig = (nextConfig) => // https://github.com/getsentry/sentry-webpack-plugin#options // Suppresses source map uploading logs during build - silent: true, + silent: isVercelProd, org: 'weareinreach', project: 'inreach-app', }, @@ -102,7 +110,7 @@ const defineSentryConfig = (nextConfig) => hideSourceMaps: false, // Automatically tree-shake Sentry logger statements to reduce bundle size - disableLogger: true, + disableLogger: isVercelProd, } ) diff --git a/apps/app/package.json b/apps/app/package.json index 975064adab..cebcf93b8c 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -57,7 +57,9 @@ "@opentelemetry/semantic-conventions": "1.15.2", "@prisma/instrumentation": "5.2.0", "@sentry/nextjs": "7.64.0", + "@sentry/node": "7.64.0", "@sentry/opentelemetry-node": "7.64.0", + "@sentry/profiling-node": "1.1.2", "@tanstack/react-query": "4.33.0", "@tanstack/react-table": "8.9.3", "@tiptap/extension-link": "2.1.7", diff --git a/apps/app/sentry.client.config.ts b/apps/app/sentry.client.config.ts index 17ee0cb2d4..cb741cf32e 100644 --- a/apps/app/sentry.client.config.ts +++ b/apps/app/sentry.client.config.ts @@ -28,9 +28,10 @@ Sentry.init({ }), new Sentry.BrowserTracing(), ], - tracePropagationTargets: [ - 'https://app.inreach.org', - 'https://*-weareinreach.vercel.app', - 'http://localhost', - ], + // tracePropagationTargets: [ + // / https:\/\/app.inreach.org\/.*/, + // /https:\/\/.*-weareinreach.vercel.app\//, + // 'localhost', + // /^\//, + // ], }) diff --git a/apps/app/sentry.server.config.ts b/apps/app/sentry.server.config.ts index 8ab470d526..d1e6a08e94 100644 --- a/apps/app/sentry.server.config.ts +++ b/apps/app/sentry.server.config.ts @@ -3,6 +3,7 @@ // https://docs.sentry.io/platforms/javascript/guides/nextjs/ import * as Sentry from '@sentry/nextjs' +import { ProfilingIntegration } from '@sentry/profiling-node' Sentry.init({ dsn: 'https://3398c2248c86498ab42fa8533e4f83f1@o1412293.ingest.sentry.io/6751163', @@ -13,4 +14,6 @@ Sentry.init({ // Setting this option to true will print useful information to the console while you're setting up Sentry. debug: false, instrumenter: 'otel', + integrations: [new ProfilingIntegration()], + profilesSampleRate: 1, }) diff --git a/apps/app/src/pages/api/trpc/[trpc].ts b/apps/app/src/pages/api/trpc/[trpc].ts index fc6aac6565..3c82ff28c3 100644 --- a/apps/app/src/pages/api/trpc/[trpc].ts +++ b/apps/app/src/pages/api/trpc/[trpc].ts @@ -1,3 +1,4 @@ +import * as Sentry from '@sentry/nextjs' import { createNextApiHandler } from '@trpc/server/adapters/next' import { appRouter, createContext } from '@weareinreach/api' @@ -5,19 +6,47 @@ import { createLoggerInstance } from '@weareinreach/util/logger' const log = createLoggerInstance('tRPC') +// eslint-disable-next-line node/no-process-env +const isDev = process.env.NODE_ENV === 'development' +const isServer = typeof window === 'undefined' + /* Creating a handler for the tRPC endpoint. */ export default createNextApiHandler({ router: appRouter, createContext, - onError: - // eslint-disable-next-line node/no-process-env - process.env.NODE_ENV === 'development' - ? ({ path, error, type }) => { - log.error(`❌ tRPC ${type} failed on ${path}: ${error}`) - } - : typeof window === 'undefined' - ? ({ path, error, type }) => log.error({ type, path, error }) - : undefined, + onError: ({ path, error, type }) => { + switch (true) { + case isDev: { + if (error.code === 'INTERNAL_SERVER_ERROR') { + Sentry.captureException(error, (scope) => { + scope.setTags({ + 'tRPC.path': path, + 'tRPC.operation': type, + }) + return scope + }) + } + log.error(`❌ tRPC ${type} failed on ${path}:`, error) + break + } + case isServer: { + if (error.code === 'INTERNAL_SERVER_ERROR') { + Sentry.captureException(error, (scope) => { + scope.setTags({ + 'tRPC.path': path, + 'tRPC.operation': type, + }) + return scope + }) + } + log.error({ type, path, error }) + break + } + default: { + return + } + } + }, responseMeta(opts) { const { ctx, errors, type } = opts diff --git a/apps/app/src/utils/api.ts b/apps/app/src/utils/api.ts index 25516a8fc8..15c3bd9865 100644 --- a/apps/app/src/utils/api.ts +++ b/apps/app/src/utils/api.ts @@ -9,37 +9,31 @@ import { devtoolsLink } from 'trpc-client-devtools-link' import { type AppRouter } from '@weareinreach/api' import { transformer } from '@weareinreach/api/lib/transformer' import { getEnv } from '@weareinreach/env' -import { createLoggerInstance } from '@weareinreach/util/logger' +// import { createLoggerInstance } from '@weareinreach/util/logger' -const log = createLoggerInstance('tRPC') +// const log = createLoggerInstance('tRPC') const getBaseUrl = () => { if (typeof window !== 'undefined') return '' // browser should use relative url if (getEnv('VERCEL_URL')) return `https://${getEnv('VERCEL_URL')}` // SSR should use vercel url return `http://localhost:${getEnv('PORT') ?? 3000}` // dev SSR should use localhost } +// eslint-disable-next-line node/no-process-env +const isDev = process.env.NODE_ENV === 'development' export const api = createTRPCNext({ config() { return { transformer, links: [ devtoolsLink({ - // eslint-disable-next-line node/no-process-env - enabled: process.env.NODE_ENV === 'development', + enabled: isDev, }), loggerLink({ - enabled: (opts) => - // eslint-disable-next-line node/no-process-env - (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') || - (opts.direction === 'down' && opts.result instanceof Error), + enabled: () => isDev, }), - httpBatchStreamLink({ url: `${getBaseUrl()}/api/trpc`, }), - // httpBatchLink({ - // url: `${getBaseUrl()}/api/trpc`, - // }), ], queryClientConfig: { defaultOptions: { diff --git a/packages/api/lib/initTRPC.ts b/packages/api/lib/initTRPC.ts index 1ca6fd8485..00ec89dcc9 100644 --- a/packages/api/lib/initTRPC.ts +++ b/packages/api/lib/initTRPC.ts @@ -1,6 +1,7 @@ -import { initTRPC } from '@trpc/server' +import { initTRPC, TRPCError } from '@trpc/server' import superjson from 'superjson' import { type TRPCPanelMeta } from 'trpc-panel' +import { ZodError } from 'zod' import { type Permission } from '@weareinreach/db/generated/permission' @@ -15,7 +16,13 @@ export const t = initTRPC .meta() .create({ transformer: superjson, - errorFormatter({ shape }) { - return shape + errorFormatter({ shape, error }) { + return { + ...shape, + data: { + ...shape.data, + cause: error.cause instanceof ZodError ? error.cause.flatten() : error.cause, + }, + } }, }) diff --git a/packages/ui/lib/trpcClient.ts b/packages/ui/lib/trpcClient.ts index 995844a737..bfc9cabbc8 100644 --- a/packages/ui/lib/trpcClient.ts +++ b/packages/ui/lib/trpcClient.ts @@ -1,4 +1,3 @@ -/* eslint-disable turbo/no-undeclared-env-vars */ /* eslint-disable node/no-process-env */ import { // httpBatchLink, @@ -19,6 +18,8 @@ export const getBaseUrl = () => { return `http://localhost:${getEnv('PORT') ?? process.env.STORYBOOK ? 6006 : 3000}` // dev SSR should use localhost } +const isDev = process.env.NODE_ENV === 'development' + export const nextTRPC = () => createTRPCNext({ config() { @@ -26,12 +27,10 @@ export const nextTRPC = () => transformer, links: [ devtoolsLink({ - enabled: process.env.NODE_ENV === 'development', + enabled: isDev, }), loggerLink({ - enabled: (opts) => - process.env.NODE_ENV === 'development' || - (opts.direction === 'down' && opts.result instanceof Error), + enabled: () => isDev, }), httpBatchStreamLink({ url: `${getBaseUrl()}/api/trpc`, diff --git a/packages/util/logger/index.ts b/packages/util/logger/index.ts index a10b43b2b3..a6836134b0 100644 --- a/packages/util/logger/index.ts +++ b/packages/util/logger/index.ts @@ -1,6 +1,18 @@ import { type ISettingsParam, Logger } from 'tslog' +// eslint-disable-next-line node/no-process-env +const isDev = process.env.NODE_ENV === 'development' -export const appLog = new Logger({ name: 'app', type: 'json', hideLogPositionForProduction: true }) +export const appLog = new Logger({ + name: 'app', + type: isDev ? 'pretty' : 'json', + prettyInspectOptions: { + depth: 3, + colors: true, + }, + stylePrettyLogs: true, + prettyErrorLoggerNameDelimiter: '', + prettyLogTimeZone: isDev ? 'local' : 'UTC', +}) export const createLoggerInstance = (name: string, opts?: Omit, 'name'>) => appLog.getSubLogger({ name, ...opts }) diff --git a/packages/util/package.json b/packages/util/package.json index 1358779229..c643788a1e 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -13,6 +13,7 @@ "with-env": "dotenv -e ../../.env --" }, "dependencies": { + "@vercel/edge-config": "0.2.1", "tslog": "4.9.2" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b2bc34495..1bbb014040 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -209,9 +209,15 @@ importers: '@sentry/nextjs': specifier: 7.64.0 version: 7.64.0(next@13.4.19)(react@18.2.0) + '@sentry/node': + specifier: 7.64.0 + version: 7.64.0 '@sentry/opentelemetry-node': specifier: 7.64.0 version: 7.64.0(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2)(@opentelemetry/semantic-conventions@1.15.2) + '@sentry/profiling-node': + specifier: 1.1.2 + version: 1.1.2 '@tanstack/react-query': specifier: 4.33.0 version: 4.33.0(react-dom@18.2.0)(react@18.2.0) @@ -1806,6 +1812,9 @@ importers: packages/util: dependencies: + '@vercel/edge-config': + specifier: 0.2.1 + version: 0.2.1 tslog: specifier: 4.9.2 version: 4.9.2 @@ -8363,6 +8372,16 @@ packages: tslib: 2.6.1 dev: false + /@sentry/hub@7.64.0: + resolution: {integrity: sha512-7vy71bE6WX/zvQ2VxdJ+kTM72U1iP3iTiba0jNXCnpLpeRE+c5LbvNHWxsZh20JX3gqxuhncaVCKWW8Iezhc2w==} + engines: {node: '>=8'} + dependencies: + '@sentry/core': 7.64.0 + '@sentry/types': 7.64.0 + '@sentry/utils': 7.64.0 + tslib: 2.6.1 + dev: false + /@sentry/integrations@7.64.0: resolution: {integrity: sha512-6gbSGiruOifAmLtXw//Za19GWiL5qugDMEFxSvc5WrBWb+A8UK+foPn3K495OcivLS68AmqAQCUGb+6nlVowwA==} engines: {node: '>=8'} @@ -8437,6 +8456,24 @@ packages: '@sentry/utils': 7.64.0 dev: false + /@sentry/profiling-node@1.1.2: + resolution: {integrity: sha512-bI320I78bfUPqwLkKVWbr4AE6WeWepKPGXtbuEHUvrqvQAKkEjjUAEFKuE/8clTCcZ4DaVT6PNaKJDhL/3XvGg==} + engines: {node: '>=8.0.0'} + hasBin: true + requiresBuild: true + dependencies: + '@sentry/core': 7.64.0 + '@sentry/hub': 7.64.0 + '@sentry/node': 7.64.0 + '@sentry/types': 7.64.0 + '@sentry/utils': 7.64.0 + detect-libc: 2.0.2 + node-abi: 3.47.0 + node-gyp: 9.4.0 + transitivePeerDependencies: + - supports-color + dev: false + /@sentry/react@7.64.0(react@18.2.0): resolution: {integrity: sha512-wOyJUQi7OoT1q+F/fVVv1fzbyO4OYbTu6m1DliLOGQPGEHPBsgPc722smPIExd1/rAMK/FxOuNN5oNhubH8nhg==} engines: {node: '>=8'} @@ -11909,6 +11946,10 @@ packages: dev: true optional: true + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + /abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -12191,6 +12232,10 @@ packages: default-require-extensions: 3.0.1 dev: true + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + /archiver-utils@2.1.0: resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} engines: {node: '>= 6'} @@ -12222,6 +12267,14 @@ packages: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: true + /are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: false + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -13452,6 +13505,11 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: false + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -13597,6 +13655,10 @@ packages: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} dev: true + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: false + /constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} dev: true @@ -14111,6 +14173,10 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: false + /denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} @@ -14150,6 +14216,11 @@ packages: engines: {node: '>=12.20'} dev: false + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -15408,6 +15479,10 @@ packages: jest-util: 29.6.2 dev: true + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: false + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -15930,6 +16005,20 @@ packages: resolution: {integrity: sha512-Api1mJL+Ad7W7vnDZnWq5pGaXJjyencT+iKGia2PlHUcSsSzWwIQ3S1isiMpwpavjYtGd2FzhUIhnnhOULZgDw==} dev: true + /gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -16324,6 +16413,10 @@ packages: dependencies: has-symbols: 1.0.3 + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false + /has-yarn@2.1.0: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} @@ -20163,6 +20256,13 @@ packages: lower-case: 2.0.2 tslib: 2.6.1 + /node-abi@3.47.0: + resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: false + /node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} dev: true @@ -20216,6 +20316,26 @@ packages: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true + /node-gyp@9.4.0: + resolution: {integrity: sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 11.1.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.5.4 + tar: 6.1.15 + which: 2.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -20263,6 +20383,14 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + /nopt@7.2.0: resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -20381,6 +20509,16 @@ packages: path-key: 4.0.0 dev: false + /npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + dev: false + /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -25444,6 +25582,12 @@ packages: dependencies: isexe: 2.0.0 + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: false + /widest-line@3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} From aca20713301812305372b0ab1c8a75ec18ab17de Mon Sep 17 00:00:00 2001 From: Joe Karow <58997957+JoeKarow@users.noreply.github.com> Date: Mon, 28 Aug 2023 13:10:50 -0400 Subject: [PATCH 2/7] IN-918 close modal & invalidate after submit, fix orgLocationId --- .../ui/components/core/UserReviewSubmit.tsx | 21 +++++++++++++------ packages/ui/modals/ResetPassword.tsx | 1 - packages/ui/modals/Review.tsx | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/ui/components/core/UserReviewSubmit.tsx b/packages/ui/components/core/UserReviewSubmit.tsx index d3abec3d3f..49decda252 100644 --- a/packages/ui/components/core/UserReviewSubmit.tsx +++ b/packages/ui/components/core/UserReviewSubmit.tsx @@ -13,7 +13,7 @@ import { UserAvatar } from './UserAvatar' const RouterSchema = z.object({ slug: z.string(), - locationId: z.string().optional(), + orgLocationId: z.string().optional(), serviceId: z.string().optional(), }) const ReviewSchema = z.object({ @@ -24,20 +24,28 @@ const ReviewSchema = z.object({ reviewText: z.string().optional(), }) -export const UserReviewSubmit = ({ type = 'body' }: ReviewSubmitProps) => { +export const UserReviewSubmit = ({ type = 'body', closeModalHandler }: ReviewSubmitProps) => { const { t } = useTranslation() const theme = useMantineTheme() const { query: rawQuery } = useRouter() const query = RouterSchema.parse(rawQuery) const { data: orgQuery, status } = api.organization.getIdFromSlug.useQuery(query, { enabled: !!query }) - const { locationId, serviceId } = query - - const submitReview = api.review.create.useMutation() + const { orgLocationId, serviceId } = query + const apiUtil = api.useContext() + const submitReview = api.review.create.useMutation({ + onSuccess: () => { + apiUtil.organization.forOrgPage.invalidate() + apiUtil.location.forLocationPage.invalidate() + if (closeModalHandler instanceof Function) { + closeModalHandler() + } + }, + }) const form = useForm({ initialValues: { organizationId: orgQuery?.id ?? '', - orgLocationId: locationId, + orgLocationId, orgServiceId: serviceId, rating: 0, }, @@ -96,4 +104,5 @@ type ReviewSubmitProps = { * Page body will add a Grid.Col wrapper */ type?: 'body' | 'modal' + closeModalHandler?: () => void } diff --git a/packages/ui/modals/ResetPassword.tsx b/packages/ui/modals/ResetPassword.tsx index fdb889de4e..aba4444c88 100644 --- a/packages/ui/modals/ResetPassword.tsx +++ b/packages/ui/modals/ResetPassword.tsx @@ -1,4 +1,3 @@ -/* eslint-disable react/no-unescaped-entities */ import { Box, type ButtonProps, diff --git a/packages/ui/modals/Review.tsx b/packages/ui/modals/Review.tsx index d26e1d26ec..a9c96dbe6c 100644 --- a/packages/ui/modals/Review.tsx +++ b/packages/ui/modals/Review.tsx @@ -15,7 +15,7 @@ export const ReviewModalBody = forwardRef(( return ( <> handler.close()} fullScreen={isMobile}> - + handler.open()} {...props} /> From b3c1c870d1e8bec0d278ad2fdd5bd4b2f613c782 Mon Sep 17 00:00:00 2001 From: Joe Karow <58997957+JoeKarow@users.noreply.github.com> Date: Mon, 28 Aug 2023 13:42:14 -0400 Subject: [PATCH 3/7] add bundle compare --- apps/app/next.config.mjs | 10 +- apps/app/package.json | 1 + pnpm-lock.yaml | 209 ++++++++++++++++++++++++++++++--------- 3 files changed, 169 insertions(+), 51 deletions(-) diff --git a/apps/app/next.config.mjs b/apps/app/next.config.mjs index d96afd1d47..4cd5e9ba49 100644 --- a/apps/app/next.config.mjs +++ b/apps/app/next.config.mjs @@ -3,6 +3,7 @@ import bundleAnalyze from '@next/bundle-analyzer' import { PrismaPlugin } from '@prisma/nextjs-monorepo-workaround-plugin' import { withSentryConfig } from '@sentry/nextjs' +import bundleStats from 'next-plugin-bundle-stats' import withRoutes from 'nextjs-routes/config' import path from 'path' @@ -19,6 +20,7 @@ const isLocalDev = process.env.NODE_ENV === 'development' && !['preview', 'production'].includes(process.env.VERCEL_ENV) const withBundleAnalyzer = bundleAnalyze({ enabled: process.env.ANALYZE === 'true' }) +const withBundleStats = bundleStats({}) /** @type {import('next').NextConfig} */ const nextConfig = { i18n: i18nConfig.i18n, @@ -43,7 +45,7 @@ const nextConfig = { instrumentationHook: true, }, eslint: { - ignoreDuringBuilds: isVercelActiveDev, + ignoreDuringBuilds: !isVercelProd, }, images: { remotePatterns: [{ protocol: 'https', hostname: '**.4sqi.net' }], @@ -51,7 +53,7 @@ const nextConfig = { rewrites: async () => [{ source: '/search', destination: '/' }], typescript: { - ignoreBuildErrors: isVercelActiveDev, + ignoreBuildErrors: !isVercelProd, }, webpack: (config, { isServer, webpack }) => { if (isServer) { @@ -72,7 +74,7 @@ const nextConfig = { * @returns {T} */ function defineNextConfig(config) { - return withBundleAnalyzer(withRoutes({ outDir: './src/types' })(config)) + return withBundleStats(withBundleAnalyzer(withRoutes({ outDir: './src/types' })(config))) } /** * Wraps NextJS config with the Sentry config. @@ -89,7 +91,7 @@ const defineSentryConfig = (nextConfig) => // https://github.com/getsentry/sentry-webpack-plugin#options // Suppresses source map uploading logs during build - silent: isVercelProd, + silent: true, org: 'weareinreach', project: 'inreach-app', }, diff --git a/apps/app/package.json b/apps/app/package.json index cebcf93b8c..7f23d9a616 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -137,6 +137,7 @@ "eslint-plugin-i18next": "6.0.3", "i18next-resources-for-ts": "1.3.0", "listr2": "6.6.1", + "next-plugin-bundle-stats": "4.6.3", "prettier": "3.0.2", "trpc-client-devtools-link": "0.2.1-next", "trpc-panel": "1.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bbb014040..bd44eee7c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -208,7 +208,7 @@ importers: version: 5.2.0 '@sentry/nextjs': specifier: 7.64.0 - version: 7.64.0(next@13.4.19)(react@18.2.0) + version: 7.64.0(next@13.4.19)(react@18.2.0)(webpack@5.88.2) '@sentry/node': specifier: 7.64.0 version: 7.64.0 @@ -444,6 +444,9 @@ importers: listr2: specifier: 6.6.1 version: 6.6.1 + next-plugin-bundle-stats: + specifier: 4.6.3 + version: 4.6.3(webpack@5.88.2) prettier: specifier: 3.0.2 version: 3.0.2 @@ -4392,6 +4395,61 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@bundle-stats/cli-utils@4.6.3(lodash@4.17.21): + resolution: {integrity: sha512-8RNnXBg0GH2uD8tIk55LMJX43HLY+H++19z6LGPv0oVHkmO4xDpzivKDLSWqlUHUK5yvNSUYyEuWlcWnLgHuPQ==} + engines: {node: '>= 14.0'} + peerDependencies: + lodash: ^4.0.0 + dependencies: + '@bundle-stats/html-templates': 4.6.3 + '@bundle-stats/plugin-webpack-filter': 4.6.3(core-js@3.32.1) + '@bundle-stats/plugin-webpack-validate': 4.6.3 + '@bundle-stats/utils': 4.6.3(core-js@3.32.1)(lodash@4.17.21) + '@types/lodash': 4.14.197 + core-js: 3.32.1 + find-cache-dir: 3.3.2 + fs-extra: 11.1.1 + lodash: 4.17.21 + stream-chain: 2.2.5 + stream-json: 1.8.0 + dev: true + + /@bundle-stats/html-templates@4.6.3: + resolution: {integrity: sha512-k7HnND/XKN4YoQvwrh7K10ANg/rbSW3aQnLcU0W1pj9nvPwfE0K3pFUJcNE92aQ9DMHjJGjedJT6lkB1HzafWQ==} + dev: true + + /@bundle-stats/plugin-webpack-filter@4.6.3(core-js@3.32.1): + resolution: {integrity: sha512-HvQ3Q2Po8DAJdhcUpDOY0p2qJdMTZLMwgX8D6E3gHEopqcN9FRUPkpFqpaJ253+27bnmobiJwig/a1AXuQrXkA==} + engines: {node: '>= 14.0'} + peerDependencies: + core-js: ^3.0.0 + dependencies: + core-js: 3.32.1 + dev: true + + /@bundle-stats/plugin-webpack-validate@4.6.3: + resolution: {integrity: sha512-P8mp8YADWWcb4aRkgUHmIP7R+faqa+G8eqPR2QdCaq2Bi9W3BbAr6nrFHGFwmGWPpdVKnC7wU5aeykc2hosNLg==} + engines: {node: '>= 14.0'} + dependencies: + lodash: 4.17.21 + superstruct: 1.0.3 + dev: true + + /@bundle-stats/utils@4.6.3(core-js@3.32.1)(lodash@4.17.21): + resolution: {integrity: sha512-4FARqkT8mVPVJhB7+vHcwceXShPmt4jtLQi71NjgraW3e31xoTzaFkjQFdUFZUX30vBP1Mr338YIvKLX3oR0Cg==} + engines: {node: '>= 14.0'} + peerDependencies: + core-js: ^3.0.0 + lodash: ^4.0.0 + dependencies: + '@bundle-stats/plugin-webpack-filter': 4.6.3(core-js@3.32.1) + '@bundle-stats/plugin-webpack-validate': 4.6.3 + core-js: 3.32.1 + lodash: 4.17.21 + query-string: 7.1.3 + serialize-query-params: 2.0.2 + dev: true + /@changesets/apply-release-plan@6.1.4: resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: @@ -5977,7 +6035,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -8392,7 +8449,7 @@ packages: tslib: 2.6.1 dev: false - /@sentry/nextjs@7.64.0(next@13.4.19)(react@18.2.0): + /@sentry/nextjs@7.64.0(next@13.4.19)(react@18.2.0)(webpack@5.88.2): resolution: {integrity: sha512-hKlIQpFugdRlWj0wcEG9I8JyVm/osdsE72zwMBGnmCw/jf7U63vjOjfxMe/gRuvllCf/AvoGHEkR5jPufcO+bw==} engines: {node: '>=8'} peerDependencies: @@ -8417,6 +8474,7 @@ packages: rollup: 2.78.0 stacktrace-parser: 0.1.10 tslib: 2.6.1 + webpack: 5.88.2 transitivePeerDependencies: - encoding - supports-color @@ -11066,14 +11124,12 @@ packages: dependencies: '@types/eslint': 8.44.2 '@types/estree': 1.0.1 - dev: true /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 - dev: true /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} @@ -11787,19 +11843,15 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -11807,11 +11859,9 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true /@webassemblyjs/helper-wasm-section@1.11.6: resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} @@ -11820,23 +11870,19 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: true /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 - dev: true /@webassemblyjs/leb128@1.11.6: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true /@webassemblyjs/wasm-edit@1.11.6: resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} @@ -11849,7 +11895,6 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: true /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} @@ -11859,7 +11904,6 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} @@ -11868,7 +11912,6 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: true /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} @@ -11879,14 +11922,12 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: true /@welldone-software/why-did-you-render@7.0.1(react@18.2.0): resolution: {integrity: sha512-Qe/8Xxa2G+LMdI6VoazescPzjjkHYduCDa8aHOJR50e9Bgs8ihkfMBY+ev7B4oc3N59Zm547Sgjf8h5y0FOyoA==} @@ -11904,11 +11945,9 @@ packages: /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20): resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} @@ -12091,7 +12130,6 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 - dev: true /ajv-keywords@5.1.0(ajv@8.12.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -12109,7 +12147,6 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} @@ -13033,6 +13070,18 @@ packages: run-applescript: 5.0.0 dev: false + /bundle-stats-webpack-plugin@4.6.3(webpack@5.88.2): + resolution: {integrity: sha512-Mkn1rmV1IKy++4Vdd/Kpb1ZTKT5uXwDNJLRXUiQm1kXX5tq7T0+aAhfyvjUxdyZDUPx51jI/A+jd04TwCAyqsw==} + engines: {node: '>= 14.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 || 5 + dependencies: + '@bundle-stats/cli-utils': 4.6.3(lodash@4.17.21) + core-js: 3.32.1 + lodash: 4.17.21 + webpack: 5.88.2 + dev: true + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -13315,7 +13364,6 @@ packages: /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - dev: true /ci-info@3.3.0: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} @@ -14055,7 +14103,6 @@ packages: /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} - dev: false /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -14574,7 +14621,6 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: true /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -14714,7 +14760,6 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} - dev: true /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -15198,7 +15243,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} @@ -15285,17 +15329,14 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: true /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true /estree-to-babel@3.2.1: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} @@ -15362,7 +15403,6 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: true /evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} @@ -15568,7 +15608,6 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -15669,7 +15708,6 @@ packages: /filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} - dev: false /filter-obj@2.0.2: resolution: {integrity: sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==} @@ -18214,7 +18252,6 @@ packages: '@types/node': 18.17.12 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true /jest-worker@28.1.3: resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} @@ -18391,7 +18428,6 @@ packages: /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -18753,7 +18789,6 @@ packages: /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - dev: true /loader-utils@2.0.4: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} @@ -20055,7 +20090,6 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true /new-github-issue-url@0.2.1: resolution: {integrity: sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA==} @@ -20104,6 +20138,15 @@ packages: react: 18.2.0 react-i18next: 13.2.0(i18next@23.4.6)(react-dom@18.2.0)(react@18.2.0) + /next-plugin-bundle-stats@4.6.3(webpack@5.88.2): + resolution: {integrity: sha512-1t26Ei4LGOEBpdUCc06/0TA4IUNbIm0DGH2zpatnJ2uLKEi5dB54pbfeE+Kah6LU9cVk0Kil3OXumdWe3yHGNg==} + engines: {node: '>= 14.0'} + dependencies: + bundle-stats-webpack-plugin: 4.6.3(webpack@5.88.2) + transitivePeerDependencies: + - webpack + dev: true + /next-router-mock@0.9.9(next@13.4.19)(react@18.2.0): resolution: {integrity: sha512-2o50zr+5pWj0zzcvBEWNHDlmWmlDExPdX5OuXKW2aCxV85XUA6MlELr0n0f0wtXj5dUVZ8qspHj6YwF7KZHrbA==} peerDependencies: @@ -21983,7 +22026,6 @@ packages: filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 - dev: false /querystring-es3@0.2.1: resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} @@ -22058,7 +22100,6 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - dev: true /randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} @@ -23132,7 +23173,6 @@ packages: '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true /schema-utils@4.2.0: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} @@ -23202,6 +23242,9 @@ packages: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 + + /serialize-query-params@2.0.2: + resolution: {integrity: sha512-1chMo1dST4pFA9RDXAtF0Rbjaut4is7bzFbI1Z26IuMub68pNCILku85aYmeFhvnY//BXUPUhoRMjYcsT93J/Q==} dev: true /serve-favicon@2.5.0: @@ -23576,7 +23619,6 @@ packages: /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} - dev: false /split-transform-stream@0.1.1: resolution: {integrity: sha512-nV8lOb9BKS3BqODBjmzELm0Kl878nWoTjdfn6z/v6d/zW8YS/EQ76fP11a/D6Fm6QTsbLdsFJBIpz6t17zHJnQ==} @@ -23723,6 +23765,10 @@ packages: readable-stream: 3.6.2 dev: true + /stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + dev: true + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: @@ -23737,6 +23783,12 @@ packages: xtend: 4.0.2 dev: true + /stream-json@1.8.0: + resolution: {integrity: sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==} + dependencies: + stream-chain: 2.2.5 + dev: true + /stream-parser@0.3.1: resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} dependencies: @@ -23776,7 +23828,6 @@ packages: /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} - dev: false /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -23997,6 +24048,11 @@ packages: dependencies: copy-anything: 3.0.5 + /superstruct@1.0.3: + resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} + engines: {node: '>=14.0.0'} + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -24014,7 +24070,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} @@ -24069,7 +24124,6 @@ packages: /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - dev: true /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -24179,6 +24233,29 @@ packages: webpack: 5.88.2(@swc/core@1.3.76)(esbuild@0.18.20) dev: true + /terser-webpack-plugin@5.3.9(webpack@5.88.2): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 || 5 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.19.2 + webpack: 5.88.2 + /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} @@ -24188,7 +24265,6 @@ packages: acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -25454,6 +25530,45 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true + /webpack@5.88.2: + resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.1 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.21.10 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.3.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.88.2) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + /webpack@5.88.2(@swc/core@1.3.76)(esbuild@0.18.20): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} From 74b227d7381b5d0fabb7c0d35408f706a85afb23 Mon Sep 17 00:00:00 2001 From: Joe Karow <58997957+JoeKarow@users.noreply.github.com> Date: Mon, 28 Aug 2023 15:31:25 -0400 Subject: [PATCH 4/7] tree shaking --- apps/app/package.json | 2 ++ packages/api/package.json | 1 + packages/auth/package.json | 1 + packages/config/package.json | 1 + packages/db/package.json | 1 + packages/env/package.json | 1 + packages/eslint-config/package.json | 1 + packages/ui/package.json | 1 + packages/util/package.json | 1 + 9 files changed, 10 insertions(+) diff --git a/apps/app/package.json b/apps/app/package.json index 7f23d9a616..4162fa7bfe 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -3,7 +3,9 @@ "version": "0.100.0", "private": true, "license": "GPL-3.0-only", + "sideEffects": false, "scripts": { + "analyze": "ANALYZE=true next build", "build": "next build", "build:prebuild": "SKIP_ENV_VALIDATION=true tsx ./lib/prebuild.ts", "clean:node": "rm -rf ./node_modules/ || true && rm -rf ./.next || true", diff --git a/packages/api/package.json b/packages/api/package.json index cd8363a62a..e81172408b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -4,6 +4,7 @@ "private": true, "license": "GPL-3.0-only", "author": "", + "sideEffects": false, "main": "./index.ts", "types": "./index.ts", "scripts": { diff --git a/packages/auth/package.json b/packages/auth/package.json index 3ded95ee5f..6d83e0cc5d 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -3,6 +3,7 @@ "version": "0.100.0", "private": true, "license": "GPL-3.0-only", + "sideEffects": false, "main": "./index.ts", "types": "./index.ts", "scripts": { diff --git a/packages/config/package.json b/packages/config/package.json index 86f16b239d..6aeaa01ae7 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -3,6 +3,7 @@ "version": "0.100.0", "private": true, "license": "GPL-3.0-only", + "sideEffects": false, "files": [ "lint-staged/index.js", "lint-staged/next.js", diff --git a/packages/db/package.json b/packages/db/package.json index 9fbd46553a..07edcf7430 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -3,6 +3,7 @@ "version": "0.100.0", "private": true, "license": "GPL-3.0-only", + "sideEffects": false, "main": "./index.ts", "types": "./index.ts", "scripts": { diff --git a/packages/env/package.json b/packages/env/package.json index bd53f4c167..c882c2444a 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -2,6 +2,7 @@ "name": "@weareinreach/env", "version": "0.0.0", "private": true, + "sideEffects": false, "main": "./index.ts", "types": "./index.ts", "files": [ diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 739c95da7e..304c0fdcc2 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -2,6 +2,7 @@ "name": "@weareinreach/eslint-config", "version": "0.100.0", "license": "GPL-3.0-only", + "sideEffects": false, "main": "index.js", "files": [ "next.js", diff --git a/packages/ui/package.json b/packages/ui/package.json index bec2d78893..5d54d12eef 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -2,6 +2,7 @@ "name": "@weareinreach/ui", "version": "0.100.0", "license": "GPL-3.0-only", + "sideEffects": false, "main": "./index.tsx", "types": "./index.tsx", "scripts": { diff --git a/packages/util/package.json b/packages/util/package.json index c643788a1e..1e29c2828f 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -2,6 +2,7 @@ "name": "@weareinreach/util", "version": "0.100.0", "private": true, + "sideEffects": false, "main": "./index.ts", "types": "./index.ts", "scripts": { From e98a5d2afffc8990d7063106ca29cee3300b35a3 Mon Sep 17 00:00:00 2001 From: Joe Karow <58997957+JoeKarow@users.noreply.github.com> Date: Mon, 28 Aug 2023 16:31:52 -0400 Subject: [PATCH 5/7] remove unused deps, fix imports --- apps/app/.eslintrc.js | 1 - apps/app/next.config.mjs | 7 +- apps/app/package.json | 16 - apps/app/src/pages/401.tsx | 3 +- apps/app/src/pages/org/[slug]/index.tsx | 3 +- .../src/pages/search/[...params]/index.tsx | 2 +- apps/app/src/pages/search/intl/[country].tsx | 2 +- apps/app/src/pages/support/index.tsx | 6 +- .../components/data-display/ContactInfo.tsx | 2 +- packages/ui/components/sections/Contact.tsx | 2 +- packages/ui/package.json | 1 - pnpm-lock.yaml | 686 ++---------------- 12 files changed, 59 insertions(+), 672 deletions(-) diff --git a/apps/app/.eslintrc.js b/apps/app/.eslintrc.js index f505dbdf77..980e716038 100644 --- a/apps/app/.eslintrc.js +++ b/apps/app/.eslintrc.js @@ -1,4 +1,3 @@ -/* eslint-disable import/no-unused-modules */ module.exports = { plugins: ['i18next'], extends: ['@weareinreach/eslint-config/next'], diff --git a/apps/app/next.config.mjs b/apps/app/next.config.mjs index 4cd5e9ba49..2e91db8db2 100644 --- a/apps/app/next.config.mjs +++ b/apps/app/next.config.mjs @@ -3,8 +3,7 @@ import bundleAnalyze from '@next/bundle-analyzer' import { PrismaPlugin } from '@prisma/nextjs-monorepo-workaround-plugin' import { withSentryConfig } from '@sentry/nextjs' -import bundleStats from 'next-plugin-bundle-stats' -import withRoutes from 'nextjs-routes/config' +import routes from 'nextjs-routes/config' import path from 'path' import { fileURLToPath } from 'url' @@ -19,8 +18,8 @@ const isVercelProd = process.env.VERCEL_ENV === 'production' const isLocalDev = process.env.NODE_ENV === 'development' && !['preview', 'production'].includes(process.env.VERCEL_ENV) +const withRoutes = routes({ outDir: './src/types' }) const withBundleAnalyzer = bundleAnalyze({ enabled: process.env.ANALYZE === 'true' }) -const withBundleStats = bundleStats({}) /** @type {import('next').NextConfig} */ const nextConfig = { i18n: i18nConfig.i18n, @@ -74,7 +73,7 @@ const nextConfig = { * @returns {T} */ function defineNextConfig(config) { - return withBundleStats(withBundleAnalyzer(withRoutes({ outDir: './src/types' })(config))) + return withBundleAnalyzer(withRoutes(config)) } /** * Wraps NextJS config with the Sentry config. diff --git a/apps/app/package.json b/apps/app/package.json index 4162fa7bfe..d2d758a5b6 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -24,9 +24,6 @@ "with-env": "dotenv -e ../../.env --" }, "dependencies": { - "@aws-crypto/sha256-js": "5.0.0", - "@aws-sdk/client-s3": "3.400.0", - "@aws-sdk/signature-v4": "3.370.0", "@crowdin/crowdin-api-client": "1.24.0", "@crowdin/ota-client": "1.0.0", "@emotion/react": "11.11.1", @@ -49,9 +46,6 @@ "@next/bundle-analyzer": "13.4.19", "@opentelemetry/api": "1.4.1", "@opentelemetry/exporter-trace-otlp-http": "0.41.2", - "@opentelemetry/instrumentation": "0.41.2", - "@opentelemetry/instrumentation-fetch": "0.41.2", - "@opentelemetry/instrumentation-http": "0.41.2", "@opentelemetry/resources": "1.15.2", "@opentelemetry/sdk-node": "0.41.2", "@opentelemetry/sdk-trace-base": "1.15.2", @@ -59,7 +53,6 @@ "@opentelemetry/semantic-conventions": "1.15.2", "@prisma/instrumentation": "5.2.0", "@sentry/nextjs": "7.64.0", - "@sentry/node": "7.64.0", "@sentry/opentelemetry-node": "7.64.0", "@sentry/profiling-node": "1.1.2", "@tanstack/react-query": "4.33.0", @@ -80,12 +73,9 @@ "@weareinreach/env": "workspace:*", "@weareinreach/ui": "workspace:*", "@weareinreach/util": "workspace:*", - "axios": "1.5.0", "cookies-next": "2.1.2", "core-js": "3.32.1", "dayjs": "1.11.9", - "deepmerge": "4.3.1", - "duration-fns": "3.0.2", "embla-carousel-autoplay": "7.1.0", "embla-carousel-react": "7.1.0", "flat": "5.0.2", @@ -94,9 +84,7 @@ "i18next-chained-backend": "4.4.0", "i18next-http-backend": "2.2.1", "i18next-intervalplural-postprocessor": "3.0.0", - "i18next-localstorage-backend": "4.1.1", "i18next-multiload-backend-adapter": "2.2.2", - "ioredis": "5.3.2", "just-compact": "3.2.0", "just-compare": "2.3.0", "luxon": "3.4.2", @@ -110,9 +98,7 @@ "pretty-bytes": "6.1.1", "react": "18.2.0", "react-dom": "18.2.0", - "react-error-boundary": "4.0.11", "react-i18next": "13.2.0", - "tslog": "4.9.2", "zod": "3.22.2" }, "devDependencies": { @@ -137,9 +123,7 @@ "dotenv": "16.3.1", "eslint": "8.48.0", "eslint-plugin-i18next": "6.0.3", - "i18next-resources-for-ts": "1.3.0", "listr2": "6.6.1", - "next-plugin-bundle-stats": "4.6.3", "prettier": "3.0.2", "trpc-client-devtools-link": "0.2.1-next", "trpc-panel": "1.3.4", diff --git a/apps/app/src/pages/401.tsx b/apps/app/src/pages/401.tsx index 77ddde81df..0671b27bb2 100644 --- a/apps/app/src/pages/401.tsx +++ b/apps/app/src/pages/401.tsx @@ -5,8 +5,8 @@ import { useTranslation } from 'next-i18next' import { type Route } from 'nextjs-routes' import { z } from 'zod' +import { LoginBody } from '@weareinreach/ui/modals/Login' import { getServerSideTranslations } from '~app/utils/i18n' -import { LoginBody } from '~ui/modals/Login' const RouteSchema = z.object({ pathname: z.string(), @@ -30,7 +30,6 @@ const Unauthorized = () => { spacing={32} > - {/* eslint-disable-next-line i18next/no-literal-string */} 🔐 {t('errors.401-title')} diff --git a/apps/app/src/pages/org/[slug]/index.tsx b/apps/app/src/pages/org/[slug]/index.tsx index 350cd580be..18ceb9a485 100644 --- a/apps/app/src/pages/org/[slug]/index.tsx +++ b/apps/app/src/pages/org/[slug]/index.tsx @@ -1,4 +1,3 @@ -/* eslint-disable i18next/no-literal-string */ import { createStyles, Divider, Grid, Skeleton, Stack, Tabs, useMantineTheme } from '@mantine/core' import { useElementSize, useMediaQuery } from '@mantine/hooks' import { type GetStaticPaths, type GetStaticPropsContext, type InferGetStaticPropsType } from 'next' @@ -20,9 +19,9 @@ import { PhotosSection } from '@weareinreach/ui/components/sections/Photos' import { ReviewSection } from '@weareinreach/ui/components/sections/Reviews' import { ServicesInfoCard } from '@weareinreach/ui/components/sections/ServicesInfo' import { VisitCard } from '@weareinreach/ui/components/sections/VisitCard' +import { useSearchState } from '@weareinreach/ui/hooks/useSearchState' import { api } from '~app/utils/api' import { getServerSideTranslations } from '~app/utils/i18n' -import { useSearchState } from '~ui/hooks/useSearchState' const LoadingState = () => ( <> diff --git a/apps/app/src/pages/search/[...params]/index.tsx b/apps/app/src/pages/search/[...params]/index.tsx index 5ae99342fc..b21652850d 100644 --- a/apps/app/src/pages/search/[...params]/index.tsx +++ b/apps/app/src/pages/search/[...params]/index.tsx @@ -27,12 +27,12 @@ import { SearchResultCard } from '@weareinreach/ui/components/core/SearchResultC import { CrisisSupport } from '@weareinreach/ui/components/sections/CrisisSupport' import { SearchResultSidebar } from '@weareinreach/ui/components/sections/SearchResultSidebar' import { useCustomVariant } from '@weareinreach/ui/hooks/useCustomVariant' +import { useSearchState } from '@weareinreach/ui/hooks/useSearchState' import { MoreFilter } from '@weareinreach/ui/modals/MoreFilter' import { ServiceFilter } from '@weareinreach/ui/modals/ServiceFilter' import { api } from '~app/utils/api' import { getSearchResultPageCount, SEARCH_RESULT_PAGE_SIZE } from '~app/utils/constants' import { getServerSideTranslations } from '~app/utils/i18n' -import { useSearchState } from '~ui/hooks/useSearchState' const PageIndexSchema = z.coerce.number().default(1) diff --git a/apps/app/src/pages/search/intl/[country].tsx b/apps/app/src/pages/search/intl/[country].tsx index c7c5707fe4..73026b5529 100644 --- a/apps/app/src/pages/search/intl/[country].tsx +++ b/apps/app/src/pages/search/intl/[country].tsx @@ -23,12 +23,12 @@ import { z } from 'zod' import { trpcServerClient } from '@weareinreach/api/trpc' import { SearchBox } from '@weareinreach/ui/components/core/SearchBox' import { CrisisSupport } from '@weareinreach/ui/components/sections/CrisisSupport' +import { SearchResultSidebar } from '@weareinreach/ui/components/sections/SearchResultSidebar' import { useCustomVariant } from '@weareinreach/ui/hooks/useCustomVariant' import { MoreFilter } from '@weareinreach/ui/modals/MoreFilter' import { ServiceFilter } from '@weareinreach/ui/modals/ServiceFilter' import { api } from '~app/utils/api' import { getServerSideTranslations } from '~app/utils/i18n' -import { SearchResultSidebar } from '~ui/components/sections/SearchResultSidebar' const useStyles = createStyles((theme) => ({ searchControls: { diff --git a/apps/app/src/pages/support/index.tsx b/apps/app/src/pages/support/index.tsx index e8a949375c..8ddcfbc9c5 100644 --- a/apps/app/src/pages/support/index.tsx +++ b/apps/app/src/pages/support/index.tsx @@ -3,11 +3,11 @@ import { type GetServerSideProps } from 'next' import { useTranslation } from 'next-i18next' import { AntiHateMessage } from '@weareinreach/ui/components/core/AntiHateMessage' +import { Link } from '@weareinreach/ui/components/core/Link' +import { useCustomVariant } from '@weareinreach/ui/hooks' import { Icon } from '@weareinreach/ui/icon' +import { GenericContentModal, PrivacyStatementModal } from '@weareinreach/ui/modals' import { getServerSideTranslations } from '~app/utils/i18n' -import { Link } from '~ui/components/core/Link' -import { useCustomVariant } from '~ui/hooks' -import { GenericContentModal, PrivacyStatementModal } from '~ui/modals' const SavedLists = () => { const { t } = useTranslation('common') diff --git a/packages/ui/components/data-display/ContactInfo.tsx b/packages/ui/components/data-display/ContactInfo.tsx index f2577e5026..be6277cecf 100644 --- a/packages/ui/components/data-display/ContactInfo.tsx +++ b/packages/ui/components/data-display/ContactInfo.tsx @@ -2,10 +2,10 @@ import { Stack, Text, Title } from '@mantine/core' import { useTranslation } from 'next-i18next' import { type ApiOutput } from '@weareinreach/api' -import { api } from '~app/utils/api' import { isExternal, Link } from '~ui/components/core/Link' import { isSocialIcon, SocialLink, type SocialLinkProps } from '~ui/components/core/SocialLink' import { parsePhoneNumber, useCustomVariant, useSlug } from '~ui/hooks' +import { trpc as api } from '~ui/lib/trpcClient' const PhoneNumbers = ({ parentId = '', passedData, direct, locationOnly }: PhoneNumbersProps) => { const output: JSX.Element[] = [] diff --git a/packages/ui/components/sections/Contact.tsx b/packages/ui/components/sections/Contact.tsx index 51b5e9fab1..bb380309dc 100644 --- a/packages/ui/components/sections/Contact.tsx +++ b/packages/ui/components/sections/Contact.tsx @@ -1,9 +1,9 @@ import { Card, Stack, Title } from '@mantine/core' import { useTranslation } from 'next-i18next' -import { api } from '~app/utils/api' import { ContactInfo } from '~ui/components/data-display/ContactInfo' import { useScreenSize } from '~ui/hooks' +import { trpc as api } from '~ui/lib/trpcClient' export const ContactSection = ({ parentId }: ContactSectionProps) => { const { t } = useTranslation(['common']) diff --git a/packages/ui/package.json b/packages/ui/package.json index 5d54d12eef..5f701d556f 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -145,7 +145,6 @@ "next": "13.4.19", "next-auth": "4.23.1", "next-i18next": "14.0.0", - "next-router-mock": "0.9.9", "postcss-loader": "7.3.3", "prettier": "3.0.2", "pretty-bytes": "6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd44eee7c1..38b55b99f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,15 +104,6 @@ importers: apps/app: dependencies: - '@aws-crypto/sha256-js': - specifier: 5.0.0 - version: 5.0.0 - '@aws-sdk/client-s3': - specifier: 3.400.0 - version: 3.400.0 - '@aws-sdk/signature-v4': - specifier: 3.370.0 - version: 3.370.0 '@crowdin/crowdin-api-client': specifier: 1.24.0 version: 1.24.0 @@ -179,15 +170,6 @@ importers: '@opentelemetry/exporter-trace-otlp-http': specifier: 0.41.2 version: 0.41.2(@opentelemetry/api@1.4.1) - '@opentelemetry/instrumentation': - specifier: 0.41.2 - version: 0.41.2(@opentelemetry/api@1.4.1) - '@opentelemetry/instrumentation-fetch': - specifier: 0.41.2 - version: 0.41.2(@opentelemetry/api@1.4.1) - '@opentelemetry/instrumentation-http': - specifier: 0.41.2 - version: 0.41.2(@opentelemetry/api@1.4.1) '@opentelemetry/resources': specifier: 1.15.2 version: 1.15.2(@opentelemetry/api@1.4.1) @@ -208,10 +190,7 @@ importers: version: 5.2.0 '@sentry/nextjs': specifier: 7.64.0 - version: 7.64.0(next@13.4.19)(react@18.2.0)(webpack@5.88.2) - '@sentry/node': - specifier: 7.64.0 - version: 7.64.0 + version: 7.64.0(next@13.4.19)(react@18.2.0) '@sentry/opentelemetry-node': specifier: 7.64.0 version: 7.64.0(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2)(@opentelemetry/semantic-conventions@1.15.2) @@ -272,9 +251,6 @@ importers: '@weareinreach/util': specifier: workspace:* version: link:../../packages/util - axios: - specifier: 1.5.0 - version: 1.5.0 cookies-next: specifier: 2.1.2 version: 2.1.2 @@ -284,12 +260,6 @@ importers: dayjs: specifier: 1.11.9 version: 1.11.9 - deepmerge: - specifier: 4.3.1 - version: 4.3.1 - duration-fns: - specifier: 3.0.2 - version: 3.0.2 embla-carousel-autoplay: specifier: 7.1.0 version: 7.1.0(embla-carousel@7.1.0) @@ -314,15 +284,9 @@ importers: i18next-intervalplural-postprocessor: specifier: 3.0.0 version: 3.0.0 - i18next-localstorage-backend: - specifier: 4.1.1 - version: 4.1.1 i18next-multiload-backend-adapter: specifier: 2.2.2 version: 2.2.2 - ioredis: - specifier: 5.3.2 - version: 5.3.2 just-compact: specifier: 3.2.0 version: 3.2.0 @@ -362,15 +326,9 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) - react-error-boundary: - specifier: 4.0.11 - version: 4.0.11(react@18.2.0) react-i18next: specifier: 13.2.0 version: 13.2.0(i18next@23.4.6)(react-dom@18.2.0)(react@18.2.0) - tslog: - specifier: 4.9.2 - version: 4.9.2 zod: specifier: 3.22.2 version: 3.22.2 @@ -438,15 +396,9 @@ importers: eslint-plugin-i18next: specifier: 6.0.3 version: 6.0.3 - i18next-resources-for-ts: - specifier: 1.3.0 - version: 1.3.0 listr2: specifier: 6.6.1 version: 6.6.1 - next-plugin-bundle-stats: - specifier: 4.6.3 - version: 4.6.3(webpack@5.88.2) prettier: specifier: 3.0.2 version: 3.0.2 @@ -1740,9 +1692,6 @@ importers: next-i18next: specifier: 14.0.0 version: 14.0.0(i18next@23.4.6)(next@13.4.19)(react-i18next@13.2.0)(react@18.2.0) - next-router-mock: - specifier: 0.9.9 - version: 0.9.9(next@13.4.19)(react@18.2.0) postcss-loader: specifier: 7.3.3 version: 7.3.3(postcss@8.4.27)(webpack@5.88.2) @@ -1872,31 +1821,11 @@ packages: '@aws-sdk/types': 3.398.0 tslib: 1.14.1 - /@aws-crypto/crc32c@3.0.0: - resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.398.0 - tslib: 1.14.1 - dev: false - /@aws-crypto/ie11-detection@3.0.0: resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} dependencies: tslib: 1.14.1 - /@aws-crypto/sha1-browser@3.0.0: - resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.398.0 - '@aws-sdk/util-locate-window': 3.310.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - dev: false - /@aws-crypto/sha256-browser@3.0.0: resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} dependencies: @@ -1916,15 +1845,6 @@ packages: '@aws-sdk/types': 3.398.0 tslib: 1.14.1 - /@aws-crypto/sha256-js@5.0.0: - resolution: {integrity: sha512-g+u9iKkaQVp9Mjoxq1IJSHj9NHGZF441+R/GIH0dn7u4mix5QQ4VqgpppHrNm1LzjUzb0BpcFGsBXP6cOVf+ZQ==} - engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/util': 5.0.0 - '@aws-sdk/types': 3.398.0 - tslib: 1.14.1 - dev: false - /@aws-crypto/supports-web-crypto@3.0.0: resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} dependencies: @@ -1937,14 +1857,6 @@ packages: '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 - /@aws-crypto/util@5.0.0: - resolution: {integrity: sha512-1GYqLdYRe96idcCltlqxdJ68OWE6ADT8qGLmVi7PVHKl8AxD2EWSbJSSevPq2eTx6vaPZpkr1RoZ3lcw/uGoEA==} - dependencies: - '@aws-sdk/types': 3.398.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - dev: false - /@aws-lambda-powertools/commons@1.12.1: resolution: {integrity: sha512-VChNfDUxxcB5KTfQPkJgxYihEZkrmeOzU9/A9FRBc+3v33EEM59T2pIgBkFy0VoINvGi3MoBEln/wyu2jV0ivA==} dev: false @@ -2046,69 +1958,6 @@ packages: dev: true optional: true - /@aws-sdk/client-s3@3.400.0: - resolution: {integrity: sha512-lnv0pb79Czl8fCMs/z7yM56LvoKTri1I4jX/V33trHMFKPQDoy8i24wxG8+TZl3MUmnUyoQS7tlukh7IFkii1Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha1-browser': 3.0.0 - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.398.0 - '@aws-sdk/credential-provider-node': 3.398.0 - '@aws-sdk/middleware-bucket-endpoint': 3.398.0 - '@aws-sdk/middleware-expect-continue': 3.398.0 - '@aws-sdk/middleware-flexible-checksums': 3.400.0 - '@aws-sdk/middleware-host-header': 3.398.0 - '@aws-sdk/middleware-location-constraint': 3.398.0 - '@aws-sdk/middleware-logger': 3.398.0 - '@aws-sdk/middleware-recursion-detection': 3.398.0 - '@aws-sdk/middleware-sdk-s3': 3.398.0 - '@aws-sdk/middleware-signing': 3.398.0 - '@aws-sdk/middleware-ssec': 3.398.0 - '@aws-sdk/middleware-user-agent': 3.398.0 - '@aws-sdk/signature-v4-multi-region': 3.398.0 - '@aws-sdk/types': 3.398.0 - '@aws-sdk/util-endpoints': 3.398.0 - '@aws-sdk/util-user-agent-browser': 3.398.0 - '@aws-sdk/util-user-agent-node': 3.398.0 - '@aws-sdk/xml-builder': 3.310.0 - '@smithy/config-resolver': 2.0.5 - '@smithy/eventstream-serde-browser': 2.0.5 - '@smithy/eventstream-serde-config-resolver': 2.0.5 - '@smithy/eventstream-serde-node': 2.0.5 - '@smithy/fetch-http-handler': 2.0.5 - '@smithy/hash-blob-browser': 2.0.5 - '@smithy/hash-node': 2.0.5 - '@smithy/hash-stream-node': 2.0.5 - '@smithy/invalid-dependency': 2.0.5 - '@smithy/md5-js': 2.0.5 - '@smithy/middleware-content-length': 2.0.5 - '@smithy/middleware-endpoint': 2.0.5 - '@smithy/middleware-retry': 2.0.5 - '@smithy/middleware-serde': 2.0.5 - '@smithy/middleware-stack': 2.0.0 - '@smithy/node-config-provider': 2.0.5 - '@smithy/node-http-handler': 2.0.5 - '@smithy/protocol-http': 2.0.5 - '@smithy/smithy-client': 2.0.5 - '@smithy/types': 2.2.2 - '@smithy/url-parser': 2.0.5 - '@smithy/util-base64': 2.0.0 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.5 - '@smithy/util-defaults-mode-node': 2.0.5 - '@smithy/util-retry': 2.0.0 - '@smithy/util-stream': 2.0.5 - '@smithy/util-utf8': 2.0.0 - '@smithy/util-waiter': 2.0.5 - fast-xml-parser: 4.2.5 - tslib: 2.6.1 - transitivePeerDependencies: - - '@aws-sdk/signature-v4-crt' - - aws-crt - dev: false - /@aws-sdk/client-sso@3.391.0: resolution: {integrity: sha512-aT+O1CbWIWYlCtWK6g3ZaMvFNImOgFGurOEPscuedqzG5UQc1bRtRrGYShLyzcZgfXP+s0cKYJqgGeRNoWiwqA==} engines: {node: '>=14.0.0'} @@ -2503,58 +2352,6 @@ packages: dev: true optional: true - /@aws-sdk/eventstream-codec@3.370.0: - resolution: {integrity: sha512-PiaDMum7TNsIE3DGECSsNYwibBIPN2/e13BJbTwi6KgVx8BV2mYA3kQkaUDiy++tEpzN81Nh5OPTFVb7bvgYYg==} - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-sdk/types': 3.370.0 - '@aws-sdk/util-hex-encoding': 3.310.0 - tslib: 2.6.1 - dev: false - - /@aws-sdk/is-array-buffer@3.310.0: - resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - - /@aws-sdk/middleware-bucket-endpoint@3.398.0: - resolution: {integrity: sha512-+iDHiRofK/vIY94RWAXkSnR4rBPzc2dPHmLp+FDKywq1y708H9W7TOT37dpn+KSFeO4k2FfddFjzWBHsaeakCA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.398.0 - '@aws-sdk/util-arn-parser': 3.310.0 - '@smithy/protocol-http': 2.0.5 - '@smithy/types': 2.2.2 - '@smithy/util-config-provider': 2.0.0 - tslib: 2.6.1 - dev: false - - /@aws-sdk/middleware-expect-continue@3.398.0: - resolution: {integrity: sha512-d6he+Qqwh1yqml9duXSv5iKJ2lS0PVrF2UEsVew2GFxfUif0E/davTZJjvWtnelbuIGcTP+wDKVVjLwBN2sN/g==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.398.0 - '@smithy/protocol-http': 2.0.5 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - - /@aws-sdk/middleware-flexible-checksums@3.400.0: - resolution: {integrity: sha512-lpsumd5/G+eAMTr61h/cJQZ8+i+xzC6OG3bvUcbRHqcjN49XgeNLcPfYcr6Rzf0QHxmuCN4te/4XGU3Fif2YVA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.398.0 - '@smithy/is-array-buffer': 2.0.0 - '@smithy/protocol-http': 2.0.5 - '@smithy/types': 2.2.2 - '@smithy/util-utf8': 2.0.0 - tslib: 2.6.1 - dev: false - /@aws-sdk/middleware-host-header@3.391.0: resolution: {integrity: sha512-+nyNr0rb2ixY7mU48nibr7L7gsw37y4oELhqgnNKhcjZDJ34imBwKIMFa64n21FdftmhcjR8IdSpzXE9xrkJ8g==} engines: {node: '>=14.0.0'} @@ -2577,15 +2374,6 @@ packages: tslib: 2.6.1 dev: false - /@aws-sdk/middleware-location-constraint@3.398.0: - resolution: {integrity: sha512-it+olJf1Lf2bmH8OL/N1jMOFB0zEVYs4rIzgFrluTRCuPatRuDi4LsXS8zqYxkBa05JE8JmqwW5gCzAmWyLLqw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.398.0 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - /@aws-sdk/middleware-logger@3.391.0: resolution: {integrity: sha512-KOwl5zo16b17JDhqILHBStccBQ2w35em7+/6vdkJdUII6OU8aVIFTlIQT9wOUvd4do6biIRBMZG3IK0Rg7mRDQ==} engines: {node: '>=14.0.0'} @@ -2628,17 +2416,6 @@ packages: tslib: 2.6.1 dev: false - /@aws-sdk/middleware-sdk-s3@3.398.0: - resolution: {integrity: sha512-yweSMc/TyiFtqc52hFMKQJvTm3i1KCoW5mB3o/Sla6zsHBh+nS6TTaBmo+2kcDIR7AKODwW+FLCTHWiazb7J3Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.398.0 - '@aws-sdk/util-arn-parser': 3.310.0 - '@smithy/protocol-http': 2.0.5 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - /@aws-sdk/middleware-sdk-sts@3.391.0: resolution: {integrity: sha512-6ZXI3Z4QU+TnT5PwKWloGmRHG81tWeI18/zxf9wWzrO2NhYFvITzEJH0vWLLiXdWtn/BYfLULXtDvkTaepbI5A==} engines: {node: '>=14.0.0'} @@ -2689,15 +2466,6 @@ packages: tslib: 2.6.1 dev: false - /@aws-sdk/middleware-ssec@3.398.0: - resolution: {integrity: sha512-QtKr/hPcRugKSIZAH4+7hbUfdW7Lg+OQvD25nJn7ic1JHRZ+eDctEFxdsmnt68lE6aZxOcHCWHAW6/umcA93Dw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.398.0 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - /@aws-sdk/middleware-user-agent@3.391.0: resolution: {integrity: sha512-LdK9uMNA14zqRw3B79Mhy7GX36qld/GYo93xuu+lr+AQ98leZEdc6GUbrtNDI3fP1Z8TMQcyHUKBml4/B+wXpQ==} engines: {node: '>=14.0.0'} @@ -2722,36 +2490,6 @@ packages: tslib: 2.6.1 dev: false - /@aws-sdk/signature-v4-multi-region@3.398.0: - resolution: {integrity: sha512-8fTqTxRDWE03T7ClaWlCfbwuSae//01XMNVy2a9g5QgaelQh7ZZyU3ZIJiV8gIj8v6ZM0NGn9Bz1liI/vmNmcw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/signature-v4-crt': ^3.118.0 - peerDependenciesMeta: - '@aws-sdk/signature-v4-crt': - optional: true - dependencies: - '@aws-sdk/types': 3.398.0 - '@smithy/protocol-http': 2.0.5 - '@smithy/signature-v4': 2.0.3 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - - /@aws-sdk/signature-v4@3.370.0: - resolution: {integrity: sha512-Mh++NJiXoBxMzz4d8GQPNB37nqjS1gsVwjKoSAWFE67sjgsjb8D5JWRCm9CinqPoXi2iN57+1DcQalTDKQGc0A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/eventstream-codec': 3.370.0 - '@aws-sdk/is-array-buffer': 3.310.0 - '@aws-sdk/types': 3.370.0 - '@aws-sdk/util-hex-encoding': 3.310.0 - '@aws-sdk/util-middleware': 3.370.0 - '@aws-sdk/util-uri-escape': 3.310.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.6.1 - dev: false - /@aws-sdk/token-providers@3.391.0: resolution: {integrity: sha512-kgfArsKLDJE71qQjfXiHiM5cZqgDHlMsqEx35+A65GmTWJaS1PGDqu3ZvVVU8E5mxnCCLw7vho21fsjvH6TBpg==} engines: {node: '>=14.0.0'} @@ -2840,14 +2578,6 @@ packages: - aws-crt dev: false - /@aws-sdk/types@3.370.0: - resolution: {integrity: sha512-8PGMKklSkRKjunFhzM2y5Jm0H2TBu7YRNISdYzXLUHKSP9zlMEYagseKVdmox0zKHf1LXVNuSlUV2b6SRrieCQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 1.2.0 - tslib: 2.6.1 - dev: false - /@aws-sdk/types@3.391.0: resolution: {integrity: sha512-QpYVFKMOnzHz/JMj/b8wb18qxiT92U/5r5MmtRz2R3LOH6ooTO96k4ozXCrYr0qNed1PAnOj73rPrrH2wnCJKQ==} engines: {node: '>=14.0.0'} @@ -2865,21 +2595,6 @@ packages: '@smithy/types': 2.2.2 tslib: 2.6.1 - /@aws-sdk/util-arn-parser@3.310.0: - resolution: {integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - - /@aws-sdk/util-buffer-from@3.310.0: - resolution: {integrity: sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/is-array-buffer': 3.310.0 - tslib: 2.6.1 - dev: false - /@aws-sdk/util-endpoints@3.391.0: resolution: {integrity: sha512-zv4sYDTQhNxyLoekcE02/nk3xvoo6yCHDy1kDJk0MFxOKaqUB+CvZdQBR4YBLSDlD4o4DUBmdYgKT58FfbM8sQ==} engines: {node: '>=14.0.0'} @@ -2898,33 +2613,12 @@ packages: tslib: 2.6.1 dev: false - /@aws-sdk/util-hex-encoding@3.310.0: - resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - /@aws-sdk/util-locate-window@3.310.0: resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.1 - /@aws-sdk/util-middleware@3.370.0: - resolution: {integrity: sha512-Jvs9FZHaQznWGLkRel3PFEP93I1n0Kp6356zxYHk3LIOmjpzoob3R+v96mzyN+dZrnhPdPubYS41qbU2F9lROg==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - - /@aws-sdk/util-uri-escape@3.310.0: - resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - /@aws-sdk/util-user-agent-browser@3.391.0: resolution: {integrity: sha512-6ipHOB1WdCBNeAMJauN7l2qNE0WLVaTNhkD290/ElXm1FHGTL8yw6lIDIjhIFO1bmbZxDiKApwDiG7ROhaJoxQ==} requiresBuild: true @@ -2982,21 +2676,6 @@ packages: dependencies: tslib: 2.6.1 - /@aws-sdk/util-utf8@3.310.0: - resolution: {integrity: sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.6.1 - dev: false - - /@aws-sdk/xml-builder@3.310.0: - resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - /@babel/code-frame@7.22.10: resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} engines: {node: '>=6.9.0'} @@ -4395,61 +4074,6 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bundle-stats/cli-utils@4.6.3(lodash@4.17.21): - resolution: {integrity: sha512-8RNnXBg0GH2uD8tIk55LMJX43HLY+H++19z6LGPv0oVHkmO4xDpzivKDLSWqlUHUK5yvNSUYyEuWlcWnLgHuPQ==} - engines: {node: '>= 14.0'} - peerDependencies: - lodash: ^4.0.0 - dependencies: - '@bundle-stats/html-templates': 4.6.3 - '@bundle-stats/plugin-webpack-filter': 4.6.3(core-js@3.32.1) - '@bundle-stats/plugin-webpack-validate': 4.6.3 - '@bundle-stats/utils': 4.6.3(core-js@3.32.1)(lodash@4.17.21) - '@types/lodash': 4.14.197 - core-js: 3.32.1 - find-cache-dir: 3.3.2 - fs-extra: 11.1.1 - lodash: 4.17.21 - stream-chain: 2.2.5 - stream-json: 1.8.0 - dev: true - - /@bundle-stats/html-templates@4.6.3: - resolution: {integrity: sha512-k7HnND/XKN4YoQvwrh7K10ANg/rbSW3aQnLcU0W1pj9nvPwfE0K3pFUJcNE92aQ9DMHjJGjedJT6lkB1HzafWQ==} - dev: true - - /@bundle-stats/plugin-webpack-filter@4.6.3(core-js@3.32.1): - resolution: {integrity: sha512-HvQ3Q2Po8DAJdhcUpDOY0p2qJdMTZLMwgX8D6E3gHEopqcN9FRUPkpFqpaJ253+27bnmobiJwig/a1AXuQrXkA==} - engines: {node: '>= 14.0'} - peerDependencies: - core-js: ^3.0.0 - dependencies: - core-js: 3.32.1 - dev: true - - /@bundle-stats/plugin-webpack-validate@4.6.3: - resolution: {integrity: sha512-P8mp8YADWWcb4aRkgUHmIP7R+faqa+G8eqPR2QdCaq2Bi9W3BbAr6nrFHGFwmGWPpdVKnC7wU5aeykc2hosNLg==} - engines: {node: '>= 14.0'} - dependencies: - lodash: 4.17.21 - superstruct: 1.0.3 - dev: true - - /@bundle-stats/utils@4.6.3(core-js@3.32.1)(lodash@4.17.21): - resolution: {integrity: sha512-4FARqkT8mVPVJhB7+vHcwceXShPmt4jtLQi71NjgraW3e31xoTzaFkjQFdUFZUX30vBP1Mr338YIvKLX3oR0Cg==} - engines: {node: '>= 14.0'} - peerDependencies: - core-js: ^3.0.0 - lodash: ^4.0.0 - dependencies: - '@bundle-stats/plugin-webpack-filter': 4.6.3(core-js@3.32.1) - '@bundle-stats/plugin-webpack-validate': 4.6.3 - core-js: 3.32.1 - lodash: 4.17.21 - query-string: 7.1.3 - serialize-query-params: 2.0.2 - dev: true - /@changesets/apply-release-plan@6.1.4: resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: @@ -6035,6 +5659,7 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 + dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -6949,36 +6574,6 @@ packages: '@opentelemetry/semantic-conventions': 1.15.2 dev: false - /@opentelemetry/instrumentation-fetch@0.41.2(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-L4jx7kq0R5XWAf5YcekSQ3Zm/6PE/+p/6rZe4NdtC+gp9u1lrQ/Vr0lwexxubS1odghbUSFo6PXKrqc25c+2hA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.15.2(@opentelemetry/api@1.4.1) - '@opentelemetry/instrumentation': 0.41.2(@opentelemetry/api@1.4.1) - '@opentelemetry/sdk-trace-web': 1.15.2(@opentelemetry/api@1.4.1) - '@opentelemetry/semantic-conventions': 1.15.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/instrumentation-http@0.41.2(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-dzOC6xkfK0LM6Dzo91aInLdSbdIzKA0IgSDnyLi6YZ0Z7c1bfrFncFx/3gZs8vi+KXLALgfMlpzE7IYDW/cM3A==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.15.2(@opentelemetry/api@1.4.1) - '@opentelemetry/instrumentation': 0.41.2(@opentelemetry/api@1.4.1) - '@opentelemetry/semantic-conventions': 1.15.2 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: false - /@opentelemetry/instrumentation@0.41.2(@opentelemetry/api@1.4.1): resolution: {integrity: sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==} engines: {node: '>=14'} @@ -7151,18 +6746,6 @@ packages: semver: 7.5.4 dev: false - /@opentelemetry/sdk-trace-web@1.15.2(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-OjCrwtu4b+cAt540wyIr7d0lCA/cY9y42lmYDFUfJ8Ixj2bByIUJ4yyd9M7mXHpQHdiR/Kq2vzsgS14Uj+RU0Q==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.5.0' - dependencies: - '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.15.2(@opentelemetry/api@1.4.1) - '@opentelemetry/sdk-trace-base': 1.15.2(@opentelemetry/api@1.4.1) - '@opentelemetry/semantic-conventions': 1.15.2 - dev: false - /@opentelemetry/semantic-conventions@1.15.2: resolution: {integrity: sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==} engines: {node: '>=14'} @@ -8449,7 +8032,7 @@ packages: tslib: 2.6.1 dev: false - /@sentry/nextjs@7.64.0(next@13.4.19)(react@18.2.0)(webpack@5.88.2): + /@sentry/nextjs@7.64.0(next@13.4.19)(react@18.2.0): resolution: {integrity: sha512-hKlIQpFugdRlWj0wcEG9I8JyVm/osdsE72zwMBGnmCw/jf7U63vjOjfxMe/gRuvllCf/AvoGHEkR5jPufcO+bw==} engines: {node: '>=8'} peerDependencies: @@ -8474,7 +8057,6 @@ packages: rollup: 2.78.0 stacktrace-parser: 0.1.10 tslib: 2.6.1 - webpack: 5.88.2 transitivePeerDependencies: - encoding - supports-color @@ -8629,19 +8211,6 @@ packages: '@smithy/types': 2.2.2 tslib: 2.6.1 - /@smithy/chunked-blob-reader-native@2.0.0: - resolution: {integrity: sha512-HM8V2Rp1y8+1343tkZUKZllFhEQPNmpNdgFAncbTsxkZ18/gqjk23XXv3qGyXWp412f3o43ZZ1UZHVcHrpRnCQ==} - dependencies: - '@smithy/util-base64': 2.0.0 - tslib: 2.6.1 - dev: false - - /@smithy/chunked-blob-reader@2.0.0: - resolution: {integrity: sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==} - dependencies: - tslib: 2.6.1 - dev: false - /@smithy/config-resolver@2.0.5: resolution: {integrity: sha512-n0c2AXz+kjALY2FQr7Zy9zhYigXzboIh1AuUUVCqFBKFtdEvTwnwPXrTDoEehLiRTUHNL+4yzZ3s+D0kKYSLSg==} engines: {node: '>=14.0.0'} @@ -8669,41 +8238,6 @@ packages: '@smithy/util-hex-encoding': 2.0.0 tslib: 2.6.1 - /@smithy/eventstream-serde-browser@2.0.5: - resolution: {integrity: sha512-8NU51y94qFJbxL6SmvgWDfITHO/svvbAigkLYk2pckX17TGCSf4EXuGpGLliJp5Ljh5+vASC7mUH2jYX7MWBxA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/eventstream-serde-universal': 2.0.5 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - - /@smithy/eventstream-serde-config-resolver@2.0.5: - resolution: {integrity: sha512-u3gvukRaTH4X6tsryuZ4T1WGIEP34fPaTTzphFDJe8GJz/k11oBW1MPnkcaucBMxLnObK9swCF85j5cp1Kj1oA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - - /@smithy/eventstream-serde-node@2.0.5: - resolution: {integrity: sha512-/C8jb+k/vKUBIe80D30vzjvRXlJf76kG2AJY7/NwiqWuD2usRuuDFCDaswXdVsSh9P1+FeaxZ48chsK10yDryQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/eventstream-serde-universal': 2.0.5 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - - /@smithy/eventstream-serde-universal@2.0.5: - resolution: {integrity: sha512-+vHvbQtlSVYTQ/20tNpVaKi0EpTR7E8GoEUHJypRZIRgiT03b3h2MAWk+SNaqMrCJrYG9vKLkJFzDylRlUvDWg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/eventstream-codec': 2.0.5 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - /@smithy/fetch-http-handler@2.0.5: resolution: {integrity: sha512-EzFoMowdBNy1VqtvkiXgPFEdosIAt4/4bgZ8uiDiUyfhmNXq/3bV+CagPFFBsgFOR/X2XK4zFZHRsoa7PNHVVg==} dependencies: @@ -8713,15 +8247,6 @@ packages: '@smithy/util-base64': 2.0.0 tslib: 2.6.1 - /@smithy/hash-blob-browser@2.0.5: - resolution: {integrity: sha512-ZVAUBtJXGf9bEko4/RwWcTK6d3b/ZmQMxJMrxOOcQhVDiqny9zI0mzgstO4Oxz3135R7S3V/bbGw3w3woCYpQg==} - dependencies: - '@smithy/chunked-blob-reader': 2.0.0 - '@smithy/chunked-blob-reader-native': 2.0.0 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - /@smithy/hash-node@2.0.5: resolution: {integrity: sha512-mk551hIywBITT+kXruRNXk7f8Fy7DTzBjZJSr/V6nolYKmUHIG3w5QU6nO9qPYEQGKc/yEPtkpdS28ndeG93lA==} engines: {node: '>=14.0.0'} @@ -8731,15 +8256,6 @@ packages: '@smithy/util-utf8': 2.0.0 tslib: 2.6.1 - /@smithy/hash-stream-node@2.0.5: - resolution: {integrity: sha512-XiR4Aoux5kXy8OWPLQisKy3GPmm0l6deHepvPvr4MUzIwa5XWazG3JdbZXy+mk93CvEZrOwKPHU5Kul6QybJiQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.2.2 - '@smithy/util-utf8': 2.0.0 - tslib: 2.6.1 - dev: false - /@smithy/invalid-dependency@2.0.5: resolution: {integrity: sha512-0wEi+JT0hM+UUwrJVYbqjuGFhy5agY/zXyiN7BNAJ1XoCDjU5uaNSj8ekPWsXd/d4yM6NSe8UbPd8cOc1+3oBQ==} dependencies: @@ -8752,14 +8268,6 @@ packages: dependencies: tslib: 2.6.1 - /@smithy/md5-js@2.0.5: - resolution: {integrity: sha512-k5EOte/Ye2r7XBVaXv2rhiehk6l3T4uRiPF+pnxKEc+G9Fwd1xAXBDZrtOq1syFPBKBmVfNszG4nevngST7NKg==} - dependencies: - '@smithy/types': 2.2.2 - '@smithy/util-utf8': 2.0.0 - tslib: 2.6.1 - dev: false - /@smithy/middleware-content-length@2.0.5: resolution: {integrity: sha512-E7VwV5H02fgZIUGRli4GevBCAPvkyEI/fgl9SU47nPPi3DAAX3nEtUb8xfGbXjOcJ5BdSUoWWZn42tEd/blOqA==} engines: {node: '>=14.0.0'} @@ -8884,13 +8392,6 @@ packages: '@smithy/util-stream': 2.0.5 tslib: 2.6.1 - /@smithy/types@1.2.0: - resolution: {integrity: sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - /@smithy/types@2.2.2: resolution: {integrity: sha512-4PS0y1VxDnELGHGgBWlDksB2LJK8TG8lcvlWxIsgR+8vROI7Ms8h1P4FQUx+ftAX2QZv5g1CJCdhdRmQKyonyw==} engines: {node: '>=14.0.0'} @@ -9000,15 +8501,6 @@ packages: '@smithy/util-buffer-from': 2.0.0 tslib: 2.6.1 - /@smithy/util-waiter@2.0.5: - resolution: {integrity: sha512-1lkkUmI/bhaDX+LIT3RiUNAn+NzPmsWjE7beMq0oQ3H1/CffaILIN67riDA0aE1YBj6xll7uWMIy4tJqc+peXw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/abort-controller': 2.0.5 - '@smithy/types': 2.2.2 - tslib: 2.6.1 - dev: false - /@socket.io/component-emitter@3.1.0: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} dev: true @@ -11124,12 +10616,14 @@ packages: dependencies: '@types/eslint': 8.44.2 '@types/estree': 1.0.1 + dev: true /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 + dev: true /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} @@ -11843,15 +11337,19 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -11859,9 +11357,11 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true /@webassemblyjs/helper-wasm-section@1.11.6: resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} @@ -11870,19 +11370,23 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 + dev: true /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: true /@webassemblyjs/leb128@1.11.6: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true /@webassemblyjs/wasm-edit@1.11.6: resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} @@ -11895,6 +11399,7 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 + dev: true /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} @@ -11904,6 +11409,7 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: true /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} @@ -11912,6 +11418,7 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 + dev: true /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} @@ -11922,12 +11429,14 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: true /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 + dev: true /@welldone-software/why-did-you-render@7.0.1(react@18.2.0): resolution: {integrity: sha512-Qe/8Xxa2G+LMdI6VoazescPzjjkHYduCDa8aHOJR50e9Bgs8ihkfMBY+ev7B4oc3N59Zm547Sgjf8h5y0FOyoA==} @@ -11945,9 +11454,11 @@ packages: /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20): resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} @@ -12130,6 +11641,7 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 + dev: true /ajv-keywords@5.1.0(ajv@8.12.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -12147,6 +11659,7 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + dev: true /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} @@ -13070,18 +12583,6 @@ packages: run-applescript: 5.0.0 dev: false - /bundle-stats-webpack-plugin@4.6.3(webpack@5.88.2): - resolution: {integrity: sha512-Mkn1rmV1IKy++4Vdd/Kpb1ZTKT5uXwDNJLRXUiQm1kXX5tq7T0+aAhfyvjUxdyZDUPx51jI/A+jd04TwCAyqsw==} - engines: {node: '>= 14.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 || 5 - dependencies: - '@bundle-stats/cli-utils': 4.6.3(lodash@4.17.21) - core-js: 3.32.1 - lodash: 4.17.21 - webpack: 5.88.2 - dev: true - /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -13364,6 +12865,7 @@ packages: /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} + dev: true /ci-info@3.3.0: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} @@ -14103,6 +13605,7 @@ packages: /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} + dev: false /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -14484,10 +13987,6 @@ packages: stream-shift: 1.0.1 dev: true - /duration-fns@3.0.2: - resolution: {integrity: sha512-w82IXh/6aWNHFA0qlQazJYJrZTWieTItuuGTE7YX4cxPaZTWhmVImbsBBiMK1/OhGDgiinuCpJoSFILYLDSKDg==} - dev: false - /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -14621,6 +14120,7 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: true /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -14760,6 +14260,7 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + dev: true /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -15243,6 +14744,7 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} @@ -15329,14 +14831,17 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} + dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + dev: true /estree-to-babel@3.2.1: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} @@ -15403,6 +14908,7 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + dev: true /evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} @@ -15608,6 +15114,7 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -15708,6 +15215,7 @@ packages: /filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} + dev: false /filter-obj@2.0.2: resolution: {integrity: sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==} @@ -16856,23 +16364,10 @@ packages: /i18next-intervalplural-postprocessor@3.0.0: resolution: {integrity: sha512-ZJWg2Gcb0kQqVI7kygLj9wVwQHK3mzRAg94uLsdoHqss0M9n0HSPr1pThd2AttkBsJFWR26G18hnKCqcTB8shQ==} - /i18next-localstorage-backend@4.1.1: - resolution: {integrity: sha512-gz3OP6m0jygF2SAzarDSFpaziYzF8mS8DP/pEUze+kDquzHTz2sy/eshcSkmFEYyGXMC037xUtlT97bNGlpZPA==} - dependencies: - '@babel/runtime': 7.22.10 - dev: false - /i18next-multiload-backend-adapter@2.2.2: resolution: {integrity: sha512-GQ4PPRk7gTwWYblFavR2mJRHRwaFGfJ4Hk7JFGJLGKxGN7s0vtPFCkKYW6Re0bsywiCpoYqDOtB2ih+JLwjSwA==} dev: false - /i18next-resources-for-ts@1.3.0: - resolution: {integrity: sha512-tOjKisBF0j1XnjX5V/55eagHl996S7rYahtMlbdkuhkKJuYySmb/+sf7QZkiG/gTLZ7KqqCtGGj6jNejxXIKfg==} - hasBin: true - dependencies: - '@babel/runtime': 7.22.10 - dev: true - /i18next-resources-to-backend@1.1.4: resolution: {integrity: sha512-hMyr9AOmIea17AOaVe1srNxK/l3mbk81P7Uf3fdcjlw3ehZy3UNTd0OP3EEi6yu4J02kf9jzhCcjokz6AFlEOg==} dependencies: @@ -18252,6 +17747,7 @@ packages: '@types/node': 18.17.12 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true /jest-worker@28.1.3: resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} @@ -18428,6 +17924,7 @@ packages: /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -18789,6 +18286,7 @@ packages: /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + dev: true /loader-utils@2.0.4: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} @@ -20090,6 +19588,7 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true /new-github-issue-url@0.2.1: resolution: {integrity: sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA==} @@ -20138,25 +19637,6 @@ packages: react: 18.2.0 react-i18next: 13.2.0(i18next@23.4.6)(react-dom@18.2.0)(react@18.2.0) - /next-plugin-bundle-stats@4.6.3(webpack@5.88.2): - resolution: {integrity: sha512-1t26Ei4LGOEBpdUCc06/0TA4IUNbIm0DGH2zpatnJ2uLKEi5dB54pbfeE+Kah6LU9cVk0Kil3OXumdWe3yHGNg==} - engines: {node: '>= 14.0'} - dependencies: - bundle-stats-webpack-plugin: 4.6.3(webpack@5.88.2) - transitivePeerDependencies: - - webpack - dev: true - - /next-router-mock@0.9.9(next@13.4.19)(react@18.2.0): - resolution: {integrity: sha512-2o50zr+5pWj0zzcvBEWNHDlmWmlDExPdX5OuXKW2aCxV85XUA6MlELr0n0f0wtXj5dUVZ8qspHj6YwF7KZHrbA==} - peerDependencies: - next: '>=10.0.0 || 13' - react: ^18 || 18 - dependencies: - next: 13.4.19(@babel/core@7.22.11)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - dev: true - /next-seo@6.1.0(next@13.4.19)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-iMBpFoJsR5zWhguHJvsoBDxDSmdYTHtnVPB1ij+CD0NReQCP78ZxxbdL9qkKIf4oEuZEqZkrjAQLB0bkII7RYA==} peerDependencies: @@ -22026,6 +21506,7 @@ packages: filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 + dev: false /querystring-es3@0.2.1: resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} @@ -22100,6 +21581,7 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: true /randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} @@ -23173,6 +22655,7 @@ packages: '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true /schema-utils@4.2.0: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} @@ -23242,9 +22725,6 @@ packages: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 - - /serialize-query-params@2.0.2: - resolution: {integrity: sha512-1chMo1dST4pFA9RDXAtF0Rbjaut4is7bzFbI1Z26IuMub68pNCILku85aYmeFhvnY//BXUPUhoRMjYcsT93J/Q==} dev: true /serve-favicon@2.5.0: @@ -23619,6 +23099,7 @@ packages: /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} + dev: false /split-transform-stream@0.1.1: resolution: {integrity: sha512-nV8lOb9BKS3BqODBjmzELm0Kl878nWoTjdfn6z/v6d/zW8YS/EQ76fP11a/D6Fm6QTsbLdsFJBIpz6t17zHJnQ==} @@ -23765,10 +23246,6 @@ packages: readable-stream: 3.6.2 dev: true - /stream-chain@2.2.5: - resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} - dev: true - /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: @@ -23783,12 +23260,6 @@ packages: xtend: 4.0.2 dev: true - /stream-json@1.8.0: - resolution: {integrity: sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==} - dependencies: - stream-chain: 2.2.5 - dev: true - /stream-parser@0.3.1: resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} dependencies: @@ -23828,6 +23299,7 @@ packages: /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} + dev: false /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -24048,11 +23520,6 @@ packages: dependencies: copy-anything: 3.0.5 - /superstruct@1.0.3: - resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} - engines: {node: '>=14.0.0'} - dev: true - /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -24070,6 +23537,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} @@ -24124,6 +23592,7 @@ packages: /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + dev: true /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -24233,29 +23702,6 @@ packages: webpack: 5.88.2(@swc/core@1.3.76)(esbuild@0.18.20) dev: true - /terser-webpack-plugin@5.3.9(webpack@5.88.2): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 || 5 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.19 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.19.2 - webpack: 5.88.2 - /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} @@ -24265,6 +23711,7 @@ packages: acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 + dev: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -25530,45 +24977,6 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack@5.88.2: - resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.1 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.10.0 - acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.21.10 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - /webpack@5.88.2(@swc/core@1.3.76)(esbuild@0.18.20): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} From d736ac34e85f25d3bd731dc3a04be1a7d91667e6 Mon Sep 17 00:00:00 2001 From: Joe Karow <58997957+JoeKarow@users.noreply.github.com> Date: Mon, 28 Aug 2023 19:12:38 -0400 Subject: [PATCH 6/7] sentry config, bundle analyze --- apps/app/next.config.mjs | 25 ++++++++++++++++++++--- apps/app/package.json | 3 ++- apps/app/sentry.client.config.ts | 35 ++++++++++++++++---------------- apps/app/sentry.server.config.ts | 2 +- packages/util/logger/index.ts | 6 ++++-- pnpm-lock.yaml | 23 +++++++++++++++++++++ 6 files changed, 70 insertions(+), 24 deletions(-) diff --git a/apps/app/next.config.mjs b/apps/app/next.config.mjs index 2e91db8db2..e680c6cec9 100644 --- a/apps/app/next.config.mjs +++ b/apps/app/next.config.mjs @@ -4,6 +4,7 @@ import bundleAnalyze from '@next/bundle-analyzer' import { PrismaPlugin } from '@prisma/nextjs-monorepo-workaround-plugin' import { withSentryConfig } from '@sentry/nextjs' import routes from 'nextjs-routes/config' +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer' import path from 'path' import { fileURLToPath } from 'url' @@ -17,9 +18,10 @@ const isVercelActiveDev = process.env.VERCEL_ENV === 'preview' && process.env.VE const isVercelProd = process.env.VERCEL_ENV === 'production' const isLocalDev = process.env.NODE_ENV === 'development' && !['preview', 'production'].includes(process.env.VERCEL_ENV) +const shouldAnalyze = process.env.ANALYZE === 'true' const withRoutes = routes({ outDir: './src/types' }) -const withBundleAnalyzer = bundleAnalyze({ enabled: process.env.ANALYZE === 'true' }) +const withBundleAnalyzer = bundleAnalyze({ enabled: shouldAnalyze, openAnalyzer: false }) /** @type {import('next').NextConfig} */ const nextConfig = { i18n: i18nConfig.i18n, @@ -34,7 +36,7 @@ const nextConfig = { '@weareinreach/util', ], compiler: { - ...(process.env.VERCEL_ENV === 'production' ? { removeConsole: { exclude: ['error'] } } : {}), + ...(isVercelProd ? { removeConsole: { exclude: ['error'] } } : {}), }, experimental: { outputFileTracingExcludes: { @@ -58,11 +60,28 @@ const nextConfig = { if (isServer) { config.plugins = [...config.plugins, new PrismaPlugin()] } - if (process.env.VERCEL_ENV === 'production') { + if (!isLocalDev) { config.plugins.push(new webpack.DefinePlugin({ __SENTRY_DEBUG__: false })) + if (shouldAnalyze) { + config.plugins.push( + new BundleAnalyzerPlugin({ analyzerMode: 'static', generateStatsFile: true, openAnalyzer: false }) + ) + } } return config }, + async headers() { + return [ + { + source: '/(.*)', + headers: [ + { key: 'Access-Control-Allow-Headers', value: 'sentry-trace' }, + { key: 'Access-Control-Allow-Headers', value: 'baggage' }, + { key: 'Document-Policy', value: 'js-profiling' }, + ], + }, + ] + }, } /** diff --git a/apps/app/package.json b/apps/app/package.json index d2d758a5b6..e8c2bb82dd 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -129,7 +129,8 @@ "trpc-panel": "1.3.4", "trpc-playground": "1.0.4", "type-fest": "4.3.1", - "typescript": "5.2.2" + "typescript": "5.2.2", + "webpack-bundle-analyzer": "4.9.0" }, "ct3aMetadata": { "initVersion": "5.10.1" diff --git a/apps/app/sentry.client.config.ts b/apps/app/sentry.client.config.ts index cb741cf32e..ce62d5fb5f 100644 --- a/apps/app/sentry.client.config.ts +++ b/apps/app/sentry.client.config.ts @@ -2,11 +2,20 @@ // The config you add here will be used whenever a users loads a page in their browser. // https://docs.sentry.io/platforms/javascript/guides/nextjs/ -import * as Sentry from '@sentry/nextjs' +import { BrowserProfilingIntegration, BrowserTracing, init, Replay } from '@sentry/nextjs' -Sentry.init({ +// Sentry.init({ +init({ dsn: 'https://3398c2248c86498ab42fa8533e4f83f1@o1412293.ingest.sentry.io/6751163', - + integrations: [ + new Replay({ + // Additional Replay configuration goes in here, for example: + maskAllText: true, + blockAllMedia: true, + }), + new BrowserTracing(), + new BrowserProfilingIntegration(), + ], // Adjust this value in production, or use tracesSampler for greater control tracesSampleRate: 1, @@ -18,20 +27,12 @@ Sentry.init({ // This sets the sample rate to be 10%. You may want this to be 100% while // in development and sample at a lower rate in production replaysSessionSampleRate: 0.1, + profilesSampleRate: 1, - // You can remove this option if you're not planning to use the Sentry Session Replay feature: - integrations: [ - new Sentry.Replay({ - // Additional Replay configuration goes in here, for example: - maskAllText: true, - blockAllMedia: true, - }), - new Sentry.BrowserTracing(), + tracePropagationTargets: [ + /^https?:\/\/app\.inreach\.org(?:\/.*)?/i, + /^https?:\/\/.*-weareinreach\.vercel\.app(?:\/.*)?/i, + /^https?:\/\/localhost(?::\d+)?(?:\/.*)?/i, + /^\//i, ], - // tracePropagationTargets: [ - // / https:\/\/app.inreach.org\/.*/, - // /https:\/\/.*-weareinreach.vercel.app\//, - // 'localhost', - // /^\//, - // ], }) diff --git a/apps/app/sentry.server.config.ts b/apps/app/sentry.server.config.ts index d1e6a08e94..b4bc24750a 100644 --- a/apps/app/sentry.server.config.ts +++ b/apps/app/sentry.server.config.ts @@ -10,10 +10,10 @@ Sentry.init({ // Adjust this value in production, or use tracesSampler for greater control tracesSampleRate: 1, + profilesSampleRate: 1, // Setting this option to true will print useful information to the console while you're setting up Sentry. debug: false, instrumenter: 'otel', integrations: [new ProfilingIntegration()], - profilesSampleRate: 1, }) diff --git a/packages/util/logger/index.ts b/packages/util/logger/index.ts index a6836134b0..dbc3a4f8b0 100644 --- a/packages/util/logger/index.ts +++ b/packages/util/logger/index.ts @@ -1,7 +1,8 @@ +/* eslint-disable node/no-process-env */ import { type ISettingsParam, Logger } from 'tslog' -// eslint-disable-next-line node/no-process-env -const isDev = process.env.NODE_ENV === 'development' +const isDev = process.env.NODE_ENV === 'development' +const verboseLogging = Boolean(isDev && (!!process.env.NEXT_VERBOSE || !!process.env.PRISMA_VERBOSE)) export const appLog = new Logger({ name: 'app', type: isDev ? 'pretty' : 'json', @@ -12,6 +13,7 @@ export const appLog = new Logger({ stylePrettyLogs: true, prettyErrorLoggerNameDelimiter: '', prettyLogTimeZone: isDev ? 'local' : 'UTC', + minLevel: verboseLogging ? 0 : 3, }) export const createLoggerInstance = (name: string, opts?: Omit, 'name'>) => diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38b55b99f7..61e72b13f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -417,6 +417,9 @@ importers: typescript: specifier: 5.2.2 version: 5.2.2 + webpack-bundle-analyzer: + specifier: 4.9.0 + version: 4.9.0 apps/web: dependencies: @@ -24937,6 +24940,26 @@ packages: - bufferutil - utf-8-validate + /webpack-bundle-analyzer@4.9.0: + resolution: {integrity: sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.10.0 + acorn-walk: 8.2.0 + chalk: 4.1.2 + commander: 7.2.0 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /webpack-dev-middleware@6.1.1(webpack@5.88.2): resolution: {integrity: sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==} engines: {node: '>= 14.15.0'} From 6a0d3d111376b2c1106bec7d94fbadae954a167d Mon Sep 17 00:00:00 2001 From: Joe Karow <58997957+JoeKarow@users.noreply.github.com> Date: Mon, 28 Aug 2023 19:23:43 -0400 Subject: [PATCH 7/7] clean up config, add deps --- apps/app/next-i18next.config.mjs | 22 ++---- apps/app/package.json | 5 ++ packages/ui/package.json | 18 ++++- pnpm-lock.yaml | 125 +++++++++++++++++++++++++++++-- 4 files changed, 143 insertions(+), 27 deletions(-) diff --git a/apps/app/next-i18next.config.mjs b/apps/app/next-i18next.config.mjs index 46b35fb1d2..f23f105000 100644 --- a/apps/app/next-i18next.config.mjs +++ b/apps/app/next-i18next.config.mjs @@ -1,4 +1,3 @@ -/* eslint-disable turbo/no-undeclared-env-vars */ /* eslint-disable node/no-process-env */ // @ts-check import LanguageDetector from 'i18next-browser-languagedetector' @@ -10,20 +9,9 @@ import MultiBackend from 'i18next-multiload-backend-adapter' import path from 'path' -export const namespaces = [ - 'attribute', - 'common', - 'country', - 'gov-dist', - // 'org-data', - // 'org-description', - // 'org-service', - 'phone-type', - 'services', - 'user', -] const isBrowser = typeof window !== 'undefined' - +const isDev = process.env.NODE_ENV !== 'production' +const isVerbose = !!process.env.NEXT_VERBOSE // const Keys = z.record(z.string()) /** @@ -60,8 +48,8 @@ const config = { defaultNS: 'common', localePath: path.resolve('./public/locales'), fallbackLng: ['en'], - reloadOnPrerender: process.env.NODE_ENV !== 'production', - debug: process.env.NODE_ENV !== 'production' && isBrowser && !!process.env.NEXT_VERBOSE, + reloadOnPrerender: isDev, + debug: isDev && isBrowser && isVerbose, partialBundledLanguages: true, nonExplicitSupportedLngs: true, cleanCode: true, @@ -91,7 +79,7 @@ const config = { interpolation: { skipOnVariables: false, alwaysFormat: true, - format: (value, format, lng, edit) => { + format: (value, format) => { switch (format) { case 'lowercase': { if (typeof value === 'string') return value.toLowerCase() diff --git a/apps/app/package.json b/apps/app/package.json index e8c2bb82dd..45cc7d80ac 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -28,6 +28,7 @@ "@crowdin/ota-client": "1.0.0", "@emotion/react": "11.11.1", "@emotion/server": "11.11.0", + "@hookform/resolvers": "3.2.0", "@iconify/react": "4.1.1", "@mantine/carousel": "6.0.19", "@mantine/core": "6.0.19", @@ -98,10 +99,14 @@ "pretty-bytes": "6.1.1", "react": "18.2.0", "react-dom": "18.2.0", + "react-error-boundary": "4.0.11", + "react-hook-form": "7.45.4", + "react-hook-form-mantine": "2.0.0", "react-i18next": "13.2.0", "zod": "3.22.2" }, "devDependencies": { + "@hookform/devtools": "4.3.1", "@playwright/test": "1.37.1", "@prisma/nextjs-monorepo-workaround-plugin": "5.2.0", "@tanstack/react-query-devtools": "4.33.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index 5f701d556f..7eee146329 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -44,9 +44,9 @@ "localized-address-format": "1.3.1", "nextjs-routes": "2.0.1", "probe-image-size": "7.2.3", - "react-error-boundary": "4.0.11", "react-phone-number-input": "3.3.4", - "react-string-replace": "1.1.1" + "react-string-replace": "1.1.1", + "zustand": "4.4.1" }, "devDependencies": { "@babel/core": "7.22.11", @@ -58,7 +58,10 @@ "@emotion/server": "11.11.0", "@faker-js/faker": "8.0.2", "@geometricpanda/storybook-addon-badges": "2.0.0", + "@hookform/devtools": "4.3.1", + "@hookform/resolvers": "3.2.0", "@iconify-json/carbon": "1.1.20", + "@iconify-json/fluent-mdl2": "1.1.3", "@iconify-json/mdi": "1.1.54", "@iconify-json/ph": "1.1.6", "@iconify-json/simple-icons": "1.1.68", @@ -151,6 +154,9 @@ "react": "18.2.0", "react-docgen-typescript": "2.2.2", "react-dom": "18.2.0", + "react-error-boundary": "4.0.11", + "react-hook-form": "7.45.4", + "react-hook-form-mantine": "2.0.0", "react-hook-tracer": "1.4.0", "react-i18next": "13.2.0", "resolve-url-loader": "5.0.0", @@ -172,8 +178,9 @@ "peerDependencies": { "@emotion/react": "^11", "@emotion/server": "^11", - "@iconify-json/carbon": "1.1.20", - "@iconify-json/simple-icons": "1.1.68", + "@hookform/resolvers": "^3.2.0", + "@iconify-json/carbon": "^1.1.20", + "@iconify-json/simple-icons": "^1.1.67", "@iconify/react": "^4", "@iconify/utils": "^2", "@mantine/carousel": "^6", @@ -212,6 +219,9 @@ "next-i18next": "^14.0.0", "react": "^18", "react-dom": "^18", + "react-error-boundary": "^4", + "react-hook-form": "^7.45.4", + "react-hook-form-mantine": "^2.0.0", "react-i18next": "^13.0.0" }, "msw": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61e72b13f5..a0598078f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,6 +116,9 @@ importers: '@emotion/server': specifier: 11.11.0 version: 11.11.0 + '@hookform/resolvers': + specifier: 3.2.0 + version: 3.2.0(react-hook-form@7.45.4) '@iconify/react': specifier: 4.1.1 version: 4.1.1(react@18.2.0) @@ -326,6 +329,15 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + react-error-boundary: + specifier: 4.0.11 + version: 4.0.11(react@18.2.0) + react-hook-form: + specifier: 7.45.4 + version: 7.45.4(react@18.2.0) + react-hook-form-mantine: + specifier: 2.0.0 + version: 2.0.0(@mantine/core@6.0.19)(@mantine/dates@6.0.19)(react-dom@18.2.0)(react-hook-form@7.45.4)(react@18.2.0) react-i18next: specifier: 13.2.0 version: 13.2.0(i18next@23.4.6)(react-dom@18.2.0)(react@18.2.0) @@ -333,6 +345,9 @@ importers: specifier: 3.22.2 version: 3.22.2 devDependencies: + '@hookform/devtools': + specifier: 4.3.1 + version: 4.3.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) '@playwright/test': specifier: 1.37.1 version: 1.37.1 @@ -1397,15 +1412,15 @@ importers: probe-image-size: specifier: 7.2.3 version: 7.2.3 - react-error-boundary: - specifier: 4.0.11 - version: 4.0.11(react@18.2.0) react-phone-number-input: specifier: 3.3.4 version: 3.3.4(react-dom@18.2.0)(react@18.2.0) react-string-replace: specifier: 1.1.1 version: 1.1.1 + zustand: + specifier: 4.4.1 + version: 4.4.1(@types/react@18.2.21)(react@18.2.0) devDependencies: '@babel/core': specifier: 7.22.11 @@ -1434,9 +1449,18 @@ importers: '@geometricpanda/storybook-addon-badges': specifier: 2.0.0 version: 2.0.0(@storybook/blocks@7.3.2)(@storybook/components@7.3.2)(@storybook/core-events@7.3.2)(@storybook/manager-api@7.3.2)(@storybook/preview-api@7.3.2)(@storybook/theming@7.3.2)(@storybook/types@7.3.2)(react-dom@18.2.0)(react@18.2.0) + '@hookform/devtools': + specifier: 4.3.1 + version: 4.3.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + '@hookform/resolvers': + specifier: 3.2.0 + version: 3.2.0(react-hook-form@7.45.4) '@iconify-json/carbon': specifier: 1.1.20 version: 1.1.20 + '@iconify-json/fluent-mdl2': + specifier: 1.1.3 + version: 1.1.3 '@iconify-json/mdi': specifier: 1.1.54 version: 1.1.54 @@ -1713,6 +1737,15 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + react-error-boundary: + specifier: 4.0.11 + version: 4.0.11(react@18.2.0) + react-hook-form: + specifier: 7.45.4 + version: 7.45.4(react@18.2.0) + react-hook-form-mantine: + specifier: 2.0.0 + version: 2.0.0(@mantine/core@6.0.19)(@mantine/dates@6.0.19)(react-dom@18.2.0)(react-hook-form@7.45.4)(react@18.2.0) react-hook-tracer: specifier: 1.4.0 version: 1.4.0(react-dom@18.2.0)(react@18.2.0) @@ -4346,7 +4379,6 @@ packages: resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} dependencies: '@emotion/memoize': 0.8.1 - dev: false /@emotion/memoize@0.8.1: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} @@ -4415,7 +4447,6 @@ packages: '@emotion/utils': 1.2.1 '@types/react': 18.2.21 react: 18.2.0 - dev: false /@emotion/unitless@0.8.1: resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} @@ -5228,6 +5259,33 @@ packages: '@hapi/hoek': 9.3.0 dev: true + /@hookform/devtools@4.3.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CrWxEoHQZaOXJZVQ8KBgOuAa8p2LI8M0DAN5GTRTmdCieRwFVjVDEmuTAVazWVRRkpEQSgSt3KYp7VmmqXdEnw==} + peerDependencies: + react: ^18 || 18 + react-dom: ^18 || 18 + dependencies: + '@emotion/react': 11.11.1(@types/react@18.2.21)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.21)(react@18.2.0) + '@types/lodash': 4.14.197 + little-state-machine: 4.8.0(react@18.2.0) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-simple-animate: 3.5.2(react-dom@18.2.0) + use-deep-compare-effect: 1.8.1(react@18.2.0) + uuid: 9.0.0 + transitivePeerDependencies: + - '@types/react' + dev: true + + /@hookform/resolvers@3.2.0(react-hook-form@7.45.4): + resolution: {integrity: sha512-skXQHhLxq0Sz2xDwCyv5dygBCtXJe1GmWwxDzfdtl0X6agD6qcyTG8HrZWkjJoy8AkiLARqYvSYJ8z7+Nwmi7w==} + peerDependencies: + react-hook-form: ^7.0.0 + dependencies: + react-hook-form: 7.45.4(react@18.2.0) + /@humanwhocodes/config-array@0.11.10: resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} @@ -5254,6 +5312,12 @@ packages: '@iconify/types': 2.0.0 dev: true + /@iconify-json/fluent-mdl2@1.1.3: + resolution: {integrity: sha512-LtsZvgFjWK4fQwe0G6cNFDMXhvon4PqUfZY+E4vW6ruOyoFN/Bjzd/LSOVe2POwM785L6ChW2djgNu7fOjrT6Q==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + /@iconify-json/mdi@1.1.54: resolution: {integrity: sha512-3QAsxte90EalbN2e8J30OqSSZz9qN2x+kmykQwsPahoW2dOtSvj+BR9YdiUd9A5XKk2nuU4UH5Gj/cq6WZ6CzQ==} dependencies: @@ -18270,6 +18334,14 @@ packages: lit-html: 2.8.0 dev: true + /little-state-machine@4.8.0(react@18.2.0): + resolution: {integrity: sha512-xfi5+iDxTLhu0hbnNubUs+qoQQqxhtEZeObP5ELjUlHnl74bbasY7mOonsGQrAouyrbag3ebNLSse5xX1T7buQ==} + peerDependencies: + react: ^18 || 18 + dependencies: + react: 18.2.0 + dev: true + /load-plugin@5.1.0: resolution: {integrity: sha512-Lg1CZa1CFj2CbNaxijTL6PCbzd4qGTlZov+iH2p5Xwy/ApcZJh+i6jMN2cYePouTfjJfrNu3nXFdEw8LvbjPFQ==} dependencies: @@ -21694,7 +21766,29 @@ packages: dependencies: '@babel/runtime': 7.22.10 react: 18.2.0 - dev: false + + /react-hook-form-mantine@2.0.0(@mantine/core@6.0.19)(@mantine/dates@6.0.19)(react-dom@18.2.0)(react-hook-form@7.45.4)(react@18.2.0): + resolution: {integrity: sha512-/vHi2wm9sU2cWR/wAJ1hsH/TZzlu6z/zxQNR4jUVPcB6Bz9+HKGdWk6Di9snqYG3rOBbWqR93BIBE1cyxcK8OA==} + peerDependencies: + '@mantine/core': ^6.0.0 + '@mantine/dates': ^6.0.0 + react: ^18.2.0 || 18 + react-dom: ^18.2.0 || 18 + react-hook-form: ^7.43 + dependencies: + '@mantine/core': 6.0.19(@emotion/react@11.11.1)(@mantine/hooks@6.0.19)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + '@mantine/dates': 6.0.19(@mantine/core@6.0.19)(@mantine/hooks@6.0.19)(dayjs@1.11.9)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-hook-form: 7.45.4(react@18.2.0) + + /react-hook-form@7.45.4(react@18.2.0): + resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^18 || 18 + dependencies: + react: 18.2.0 /react-hook-tracer@1.4.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-RX3JFlDmw5Q8LWltp0XRtMQ2VgaZF0QeuL4IfNwAA2eG4ASF7qaxBu7UOMGk9wrZB0NC6zV4R63osRas5ZrQGA==} @@ -21833,6 +21927,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /react-simple-animate@3.5.2(react-dom@18.2.0): + resolution: {integrity: sha512-xLE65euP920QMTOmv5haPlml+hmOPDkbIr5WeF7ADIXWBYt5kW/vwpNfWg8EKMab8aeDxIZ6QjffVh8v2dUyhg==} + peerDependencies: + react-dom: ^18 || 18 + dependencies: + react-dom: 18.2.0(react@18.2.0) + dev: true + /react-ssr-prepass@1.5.0(react@18.2.0): resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} peerDependencies: @@ -24601,6 +24703,17 @@ packages: dependencies: react: 18.2.0 + /use-deep-compare-effect@1.8.1(react@18.2.0): + resolution: {integrity: sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: ^18 || 18 + dependencies: + '@babel/runtime': 7.22.10 + dequal: 2.0.3 + react: 18.2.0 + dev: true + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: