From eda14fa8aa9ad5580b14cd76d4456c0d5051ec31 Mon Sep 17 00:00:00 2001 From: David <32268383+dbrxnds@users.noreply.github.com> Date: Mon, 1 May 2023 18:30:15 +0200 Subject: [PATCH] Add formatError property to Blitz server- & rpchandler setup (#4124) Co-authored-by: Siddharth Suresh --- .changeset/chatty-gifts-whisper.md | 6 + .../src/auth/components/SignupForm.tsx | 1 + apps/toolkit-app/src/auth/mutations/signup.ts | 1 - apps/toolkit-app/src/blitz-server.ts | 8 +- .../src/pages/api/rpc/[[...blitz]].ts | 10 +- apps/toolkit-app/src/pages/index.tsx | 2 +- .../auth-with-rpc/test/index.test.ts | 12 +- .../next-13-app-dir/next-env.d.ts | 1 + .../next-13-app-dir/test/index.test.ts | 15 +- .../next-13-app-dir/tsconfig.json | 3 +- .../app/queries/getCustomStatusCodeFailure.js | 12 ++ integration-tests/rpc/test/index.test.js | 9 +- packages/blitz-next/src/index-server.ts | 43 ++--- packages/blitz-rpc/src/index-server.ts | 6 +- .../blitz/src/cli/utils/routes-manifest.ts | 9 +- packages/blitz/src/middleware.ts | 2 +- pnpm-lock.yaml | 152 +++++++++--------- 17 files changed, 158 insertions(+), 134 deletions(-) create mode 100644 .changeset/chatty-gifts-whisper.md create mode 100644 integration-tests/rpc/app/queries/getCustomStatusCodeFailure.js diff --git a/.changeset/chatty-gifts-whisper.md b/.changeset/chatty-gifts-whisper.md new file mode 100644 index 0000000000..67317f8fe5 --- /dev/null +++ b/.changeset/chatty-gifts-whisper.md @@ -0,0 +1,6 @@ +--- +"@blitzjs/next": minor +"@blitzjs/rpc": minor +--- + +Add ability to format the error on the server before returning it to the client. diff --git a/apps/toolkit-app/src/auth/components/SignupForm.tsx b/apps/toolkit-app/src/auth/components/SignupForm.tsx index f827397d3c..de2eff41f3 100644 --- a/apps/toolkit-app/src/auth/components/SignupForm.tsx +++ b/apps/toolkit-app/src/auth/components/SignupForm.tsx @@ -10,6 +10,7 @@ type SignupFormProps = { export const SignupForm = (props: SignupFormProps) => { const [signupMutation] = useMutation(signup) + return (

Create an Account

diff --git a/apps/toolkit-app/src/auth/mutations/signup.ts b/apps/toolkit-app/src/auth/mutations/signup.ts index 0d4db13548..9b5f29dbb5 100644 --- a/apps/toolkit-app/src/auth/mutations/signup.ts +++ b/apps/toolkit-app/src/auth/mutations/signup.ts @@ -1,5 +1,4 @@ import db from "db" -import { SecurePassword } from "@blitzjs/auth/secure-password" import { Role } from "types" export default async function signup(input, ctx) { diff --git a/apps/toolkit-app/src/blitz-server.ts b/apps/toolkit-app/src/blitz-server.ts index da318fbcdb..237188378c 100644 --- a/apps/toolkit-app/src/blitz-server.ts +++ b/apps/toolkit-app/src/blitz-server.ts @@ -1,9 +1,8 @@ import type { BlitzCliConfig } from "blitz" +import { BlitzLogger } from "blitz" import { setupBlitzServer } from "@blitzjs/next" -import { AuthServerPlugin, PrismaStorage } from "@blitzjs/auth" +import { AuthServerPlugin, PrismaStorage, simpleRolesIsAuthorized } from "@blitzjs/auth" import db from "db" -import { simpleRolesIsAuthorized } from "@blitzjs/auth" -import { BlitzLogger } from "blitz" export const cliConfig: BlitzCliConfig = { customTemplates: "src/templates", @@ -27,6 +26,9 @@ const { gSSP, gSP, api } = setupBlitzServer({ isAuthorized: simpleRolesIsAuthorized, }), ], + formatError: (error) => { + return new Error("Formatted error" + error.message) + }, logger: BlitzLogger({}), }) diff --git a/apps/toolkit-app/src/pages/api/rpc/[[...blitz]].ts b/apps/toolkit-app/src/pages/api/rpc/[[...blitz]].ts index c6096b0115..a838eee3ee 100644 --- a/apps/toolkit-app/src/pages/api/rpc/[[...blitz]].ts +++ b/apps/toolkit-app/src/pages/api/rpc/[[...blitz]].ts @@ -1,4 +1,12 @@ import { rpcHandler } from "@blitzjs/rpc" import { api } from "src/blitz-server" -export default api(rpcHandler({ onError: console.log })) +export default api( + rpcHandler({ + onError: console.log, + formatError: (error) => { + error.message = `FormatError handler: ${error.message}` + return error + }, + }) +) diff --git a/apps/toolkit-app/src/pages/index.tsx b/apps/toolkit-app/src/pages/index.tsx index dc4f53c84b..e1e3d07538 100644 --- a/apps/toolkit-app/src/pages/index.tsx +++ b/apps/toolkit-app/src/pages/index.tsx @@ -44,7 +44,7 @@ const UserInfo = () => { Login - + Sign in with GitHub diff --git a/integration-tests/auth-with-rpc/test/index.test.ts b/integration-tests/auth-with-rpc/test/index.test.ts index 4f878831ef..a69ece936a 100644 --- a/integration-tests/auth-with-rpc/test/index.test.ts +++ b/integration-tests/auth-with-rpc/test/index.test.ts @@ -1,11 +1,11 @@ -import {describe, it, expect, beforeAll, afterAll} from "vitest" +import {afterAll, beforeAll, describe, expect, it} from "vitest" import { - killApp, - findPort, - runBlitzCommand, - blitzLaunchApp, blitzBuild, + blitzLaunchApp, blitzStart, + findPort, + killApp, + runBlitzCommand, waitFor, } from "../../utils/next-test-utils" import webdriver from "../../utils/next-webdriver" @@ -15,7 +15,7 @@ let appPort: number const runTests = () => { describe("Auth", () => { - /* TODO - Add a non flaky Integration Test for custom plugin + /* TODO - Add a non flaky Integration Test for custom plugin describe("custom plugin", () => { it("custom plugin - events", async () => { const browser = await webdriver(appPort, "/custom-plugin") diff --git a/integration-tests/next-13-app-dir/next-env.d.ts b/integration-tests/next-13-app-dir/next-env.d.ts index 4f11a03dc6..fd36f9494e 100644 --- a/integration-tests/next-13-app-dir/next-env.d.ts +++ b/integration-tests/next-13-app-dir/next-env.d.ts @@ -1,5 +1,6 @@ /// /// +/// // NOTE: This file should not be edited // see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/integration-tests/next-13-app-dir/test/index.test.ts b/integration-tests/next-13-app-dir/test/index.test.ts index c1896818c6..3674138bd9 100644 --- a/integration-tests/next-13-app-dir/test/index.test.ts +++ b/integration-tests/next-13-app-dir/test/index.test.ts @@ -1,13 +1,6 @@ -import {describe, it, expect, beforeAll, afterAll} from "vitest" +import {afterAll, beforeAll, describe, expect, it} from "vitest" import waitPort from "wait-port" -import { - killApp, - findPort, - runBlitzCommand, - blitzLaunchApp, - blitzBuild, - blitzStart, -} from "../../utils/next-test-utils" +import {blitzLaunchApp, findPort, killApp, runBlitzCommand} from "../../utils/next-test-utils" import webdriver from "../../utils/next-webdriver" import fetch from "node-fetch" @@ -43,7 +36,7 @@ const runTests = (mode?: string) => { const browser = await webdriver(appPort, "/authenticated-client") let errorMsg = await browser.elementById(`error`).text() expect(errorMsg).toMatch(/Error: You are not authenticated/) - if (browser) browser.close() + if (browser) await browser.close() }, 5000 * 60 * 2, ) @@ -55,7 +48,7 @@ const runTests = (mode?: string) => { const browser = await webdriver(appPort, "/authenticated-server") let errorMsg = await browser.elementById(`error`).text() expect(errorMsg).toMatch(/Error: You are not authenticated/) - if (browser) browser.close() + if (browser) await browser.close() }, 5000 * 60 * 2, ) diff --git a/integration-tests/next-13-app-dir/tsconfig.json b/integration-tests/next-13-app-dir/tsconfig.json index 1bb4531529..e39f5a770e 100644 --- a/integration-tests/next-13-app-dir/tsconfig.json +++ b/integration-tests/next-13-app-dir/tsconfig.json @@ -9,7 +9,8 @@ { "name": "next" } - ] + ], + "strictNullChecks": true }, "exclude": ["node_modules"], "baseUrl": "." diff --git a/integration-tests/rpc/app/queries/getCustomStatusCodeFailure.js b/integration-tests/rpc/app/queries/getCustomStatusCodeFailure.js new file mode 100644 index 0000000000..6db260e725 --- /dev/null +++ b/integration-tests/rpc/app/queries/getCustomStatusCodeFailure.js @@ -0,0 +1,12 @@ +class ErrorWithStatusCode extends Error { + statusCode + + constructor(message, statusCode) { + super(message) + this.statusCode = statusCode + } +} + +export default async function getCustomStatusCodeFailure() { + throw new ErrorWithStatusCode("Error with custom status code for test", 418) +} diff --git a/integration-tests/rpc/test/index.test.js b/integration-tests/rpc/test/index.test.js index cb397fa625..c28a75e8a4 100644 --- a/integration-tests/rpc/test/index.test.js +++ b/integration-tests/rpc/test/index.test.js @@ -1,14 +1,13 @@ -import {describe, it, expect, beforeAll, afterAll} from "vitest" -import fs from "fs-extra" +import {afterAll, beforeAll, describe, expect, it} from "vitest" import {join} from "path" import { - killApp, + fetchViaHTTP, findPort, + killApp, launchApp, - fetchViaHTTP, nextBuild, - nextStart, nextExport, + nextStart, } from "../../utils/next-test-utils" // jest.setTimeout(1000 * 60 * 2) diff --git a/packages/blitz-next/src/index-server.ts b/packages/blitz-next/src/index-server.ts index c8756893a8..cb8142401e 100644 --- a/packages/blitz-next/src/index-server.ts +++ b/packages/blitz-next/src/index-server.ts @@ -1,41 +1,43 @@ import type { - NextConfig, GetServerSideProps, GetServerSidePropsResult, GetStaticProps, GetStaticPropsResult, NextApiRequest, NextApiResponse, + NextConfig, } from "next" import { AddParameters, AsyncFunc, + BlitzLogger, BlitzServerPlugin, Ctx as BlitzCtx, FirstParam, - RequestMiddleware, - MiddlewareResponse, - BlitzLogger, + handleRequestWithMiddleware, initializeLogger, - Simplify, - UnionToIntersection, + isRouteUrlObject, + MiddlewareResponse, reduceBlitzServerPlugins, + RouteUrlObject, + startWatcher, + stopWatcher, } from "blitz" -import {handleRequestWithMiddleware, startWatcher, stopWatcher} from "blitz" -import {installWebpackConfig, InstallWebpackConfigOptions, ResolverPathOptions} from "@blitzjs/rpc" import { DefaultOptions, - QueryClient, - getQueryKey, - getInfiniteQueryKey, dehydrate, + getInfiniteQueryKey, + getQueryKey, + installWebpackConfig, + InstallWebpackConfigOptions, + QueryClient, + ResolverPathOptions, } from "@blitzjs/rpc" import {IncomingMessage, ServerResponse} from "http" import {withSuperJsonProps} from "./superjson" import {ParsedUrlQuery} from "querystring" import {PreviewData} from "next/types" import {resolveHref} from "next/dist/shared/lib/router/utils/resolve-href" -import {RouteUrlObject, isRouteUrlObject} from "blitz" export * from "./index-browser" @@ -130,10 +132,12 @@ export const setupBlitzServer = void logger?: ReturnType + formatError?: (err: Error) => Error }) => { initializeLogger(logger ?? BlitzLogger()) @@ -168,9 +172,9 @@ export const setupBlitzServer = { interface RpcConfig { onError?: (error: Error) => void + formatError?: (error: Error) => Error } export function rpcHandler(config: RpcConfig) { @@ -265,7 +266,8 @@ export function rpcHandler(config: RpcConfig) { error.statusCode = 500 } - const serializedError = superjsonSerialize(error) + const formattedError = config.formatError?.(error) ?? error + const serializedError = superjsonSerialize(formattedError) res.json({ result: null, diff --git a/packages/blitz/src/cli/utils/routes-manifest.ts b/packages/blitz/src/cli/utils/routes-manifest.ts index 3ccec818a1..651d95b68c 100644 --- a/packages/blitz/src/cli/utils/routes-manifest.ts +++ b/packages/blitz/src/cli/utils/routes-manifest.ts @@ -1,13 +1,10 @@ -import {join, dirname} from "path" +import {join} from "path" import os from "os" import {promises} from "fs" -const readFile = promises.readFile -import {outputFile, readdir} from "fs-extra" -import findUp from "find-up" -import resolveFrom from "resolve-from" +import {outputFile, readdir, readFile} from "fs-extra" import Watchpack from "watchpack" -import {isInternalBlitzMonorepoDevelopment} from "./helpers" import {findNodeModulesRoot} from "./find-node-modules" + const debug = require("debug")("blitz") export const CONFIG_FILE = ".blitz.config.compiled.js" export const NEXT_CONFIG_FILE = "next.config.js" diff --git a/packages/blitz/src/middleware.ts b/packages/blitz/src/middleware.ts index 4c8a877f0c..56dac5aeea 100644 --- a/packages/blitz/src/middleware.ts +++ b/packages/blitz/src/middleware.ts @@ -1,5 +1,5 @@ import {IncomingMessage, ServerResponse} from "http" -import {compose, Ctx, RequestMiddleware, MiddlewareNext, MiddlewareResponse} from "./index-server" +import {compose, Ctx, MiddlewareNext, MiddlewareResponse, RequestMiddleware} from "./index-server" export async function handleRequestWithMiddleware< Req extends IncomingMessage = IncomingMessage, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db62a64e11..a6543e6e0a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1758,7 +1758,6 @@ packages: source-map: 0.5.7 transitivePeerDependencies: - supports-color - dev: false /@babel/core/7.18.2: resolution: @@ -1778,7 +1777,7 @@ packages: "@babel/traverse": 7.18.2 "@babel/types": 7.18.4 convert-source-map: 1.8.0 - debug: 4.3.3 + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.1 semver: 6.3.0 @@ -1803,13 +1802,12 @@ packages: "@babel/traverse": 7.18.2_supports-color@8.1.1 "@babel/types": 7.18.4 convert-source-map: 1.8.0 - debug: 4.3.3_supports-color@8.1.1 + debug: 4.3.4_supports-color@8.1.1 gensync: 1.0.0-beta.2 json5: 2.2.1 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/core/7.20.2: resolution: @@ -1829,7 +1827,7 @@ packages: "@babel/traverse": 7.20.1 "@babel/types": 7.20.2 convert-source-map: 1.8.0 - debug: 4.3.3 + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.1 semver: 6.3.0 @@ -1854,7 +1852,7 @@ packages: "@babel/traverse": 7.20.1_supports-color@8.1.1 "@babel/types": 7.20.2 convert-source-map: 1.8.0 - debug: 4.3.3_supports-color@8.1.1 + debug: 4.3.4_supports-color@8.1.1 gensync: 1.0.0-beta.2 json5: 2.2.1 semver: 6.3.0 @@ -1923,7 +1921,7 @@ packages: "@babel/core": ^7.0.0 dependencies: "@babel/compat-data": 7.17.10 - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-validator-option": 7.16.7 browserslist: 4.20.3 semver: 6.3.0 @@ -1938,7 +1936,7 @@ packages: "@babel/core": ^7.0.0 dependencies: "@babel/compat-data": 7.17.10 - "@babel/core": 7.18.2 + "@babel/core": 7.18.2_supports-color@8.1.1 "@babel/helper-validator-option": 7.16.7 browserslist: 4.20.3 semver: 6.3.0 @@ -2091,7 +2089,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-annotate-as-pure": 7.16.7 regexpu-core: 5.0.1 @@ -2220,7 +2218,6 @@ packages: "@babel/types": 7.18.4 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-module-transforms/7.20.2: resolution: @@ -2475,7 +2472,6 @@ packages: "@babel/types": 7.18.4 transitivePeerDependencies: - supports-color - dev: false /@babel/helpers/7.20.1: resolution: @@ -2651,7 +2647,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-dynamic-import": 7.8.3_@babel+core@7.12.10 @@ -2664,7 +2660,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-export-namespace-from": 7.8.3_@babel+core@7.12.10 @@ -2677,7 +2673,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-json-strings": 7.8.3_@babel+core@7.12.10 @@ -2690,7 +2686,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-logical-assignment-operators": 7.10.4_@babel+core@7.12.10 @@ -2703,7 +2699,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3_@babel+core@7.12.10 @@ -2730,7 +2726,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-numeric-separator": 7.10.4_@babel+core@7.12.10 @@ -2744,7 +2740,7 @@ packages: "@babel/core": ^7.0.0-0 dependencies: "@babel/compat-data": 7.17.10 - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-compilation-targets": 7.18.2_@babel+core@7.12.10 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-object-rest-spread": 7.8.3_@babel+core@7.12.10 @@ -2759,7 +2755,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-syntax-optional-catch-binding": 7.8.3_@babel+core@7.12.10 @@ -2772,7 +2768,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/helper-skip-transparent-expression-wrappers": 7.16.0 "@babel/plugin-syntax-optional-chaining": 7.8.3_@babel+core@7.12.10 @@ -2832,7 +2828,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-create-regexp-features-plugin": 7.17.12_@babel+core@7.12.10 "@babel/helper-plugin-utils": 7.17.12 @@ -2844,7 +2840,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.2: @@ -2877,7 +2873,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.2: @@ -2899,7 +2895,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.12.10: @@ -2910,7 +2906,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-flow/7.17.12_@babel+core@7.18.2: @@ -2945,7 +2941,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.2: @@ -3018,7 +3014,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.2: @@ -3040,7 +3036,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.2: @@ -3074,7 +3070,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.2: @@ -3096,7 +3092,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.2: @@ -3118,7 +3114,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.2: @@ -3140,7 +3136,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.2: @@ -3175,7 +3171,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.2: @@ -3237,7 +3233,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-async-to-generator/7.17.12_@babel+core@7.12.10: @@ -3282,7 +3278,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-block-scoping/7.18.4_@babel+core@7.12.10: @@ -3294,7 +3290,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-classes/7.18.4_@babel+core@7.12.10: @@ -3349,7 +3345,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-destructuring/7.18.0_@babel+core@7.12.10: @@ -3361,7 +3357,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.12.10: @@ -3373,7 +3369,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-create-regexp-features-plugin": 7.17.12_@babel+core@7.12.10 "@babel/helper-plugin-utils": 7.17.12 @@ -3386,7 +3382,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.12.10: @@ -3398,7 +3394,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-builder-binary-assignment-operator-visitor": 7.16.7 "@babel/helper-plugin-utils": 7.17.12 @@ -3425,7 +3421,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.12.10: @@ -3437,7 +3433,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-compilation-targets": 7.18.2_@babel+core@7.12.10 "@babel/helper-function-name": 7.17.9 "@babel/helper-plugin-utils": 7.17.12 @@ -3451,7 +3447,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.12.10: @@ -3463,7 +3459,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-modules-amd/7.18.0_@babel+core@7.12.10: @@ -3647,7 +3643,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-create-regexp-features-plugin": 7.17.12_@babel+core@7.12.10 "@babel/helper-plugin-utils": 7.17.12 @@ -3660,7 +3656,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.12.10: @@ -3703,7 +3699,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.12.10: @@ -3715,7 +3711,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.18.2: @@ -3839,7 +3835,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 regenerator-transform: 0.15.0 @@ -3852,7 +3848,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.12.10: @@ -3864,7 +3860,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-spread/7.17.12_@babel+core@7.12.10: @@ -3876,7 +3872,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/helper-skip-transparent-expression-wrappers": 7.16.0 @@ -3889,7 +3885,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-template-literals/7.18.2_@babel+core@7.12.10: @@ -3901,7 +3897,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-typeof-symbol/7.17.12_@babel+core@7.12.10: @@ -3913,7 +3909,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-typescript/7.12.1_ps3yxa7qdojvlda5ukda3zlwie: @@ -3975,7 +3971,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.12.10: @@ -3987,7 +3983,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-create-regexp-features-plugin": 7.17.12_@babel+core@7.12.10 "@babel/helper-plugin-utils": 7.17.12 @@ -4171,7 +4167,7 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 dependencies: - "@babel/core": 7.12.10 + "@babel/core": 7.12.10_supports-color@8.1.1 "@babel/helper-plugin-utils": 7.17.12 "@babel/plugin-proposal-unicode-property-regex": 7.17.12_@babel+core@7.12.10 "@babel/plugin-transform-dotall-regex": 7.16.7_@babel+core@7.12.10 @@ -4293,7 +4289,7 @@ packages: "@babel/helper-split-export-declaration": 7.16.7 "@babel/parser": 7.18.4 "@babel/types": 7.18.4 - debug: 4.3.3 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4313,11 +4309,10 @@ packages: "@babel/helper-split-export-declaration": 7.16.7 "@babel/parser": 7.18.4 "@babel/types": 7.18.4 - debug: 4.3.3_supports-color@8.1.1 + debug: 4.3.4_supports-color@8.1.1 globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false /@babel/traverse/7.20.1: resolution: @@ -4334,7 +4329,7 @@ packages: "@babel/helper-split-export-declaration": 7.18.6 "@babel/parser": 7.20.3 "@babel/types": 7.20.2 - debug: 4.3.3 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4354,7 +4349,7 @@ packages: "@babel/helper-split-export-declaration": 7.18.6 "@babel/parser": 7.20.3 "@babel/types": 7.20.2 - debug: 4.3.3_supports-color@8.1.1 + debug: 4.3.4_supports-color@8.1.1 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -5567,7 +5562,7 @@ packages: glob: 7.2.0 is-reference: 1.2.1 magic-string: 0.25.9 - resolve: 1.22.0 + resolve: 1.22.1 rollup: 2.77.2 dev: true @@ -7192,7 +7187,6 @@ packages: typescript: 4.8.4 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/parser/5.43.0_wyqvi574yv7oiwfeinomdzmc3m: resolution: @@ -7215,6 +7209,7 @@ packages: typescript: 4.8.4 transitivePeerDependencies: - supports-color + dev: true /@typescript-eslint/parser/5.9.1_nw6v2wse7au2evadw7vu3hneg4: resolution: @@ -7808,7 +7803,7 @@ packages: } engines: {node: ">= 6.0.0"} dependencies: - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -11436,7 +11431,6 @@ packages: tsconfig-paths: 3.14.1 transitivePeerDependencies: - supports-color - dev: false /eslint-import-resolver-typescript/2.7.1_mynvxvmq5qtyojffiqgev4x7mm: resolution: @@ -11457,6 +11451,7 @@ packages: tsconfig-paths: 3.14.1 transitivePeerDependencies: - supports-color + dev: true /eslint-import-resolver-typescript/3.5.2_dcpv4nbdr5ks2h5677xdltrk6e: resolution: @@ -11532,10 +11527,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - "@typescript-eslint/parser": 5.43.0_wyqvi574yv7oiwfeinomdzmc3m + "@typescript-eslint/parser": 5.43.0_typescript@4.8.4 debug: 3.2.7 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.7.1_mynvxvmq5qtyojffiqgev4x7mm + eslint-import-resolver-typescript: 2.7.1_fkfqfehjtk7sk2efaqbgxsuasa find-up: 2.1.0 transitivePeerDependencies: - supports-color @@ -11606,6 +11601,7 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true /eslint-plugin-import/2.26.0_thmqqzpxv5mluo3coertzplf2y: resolution: @@ -11638,7 +11634,6 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false /eslint-plugin-import/2.26.0_ttnp75sbivpcvanbhjbkcsh3ly: resolution: @@ -11915,6 +11910,7 @@ packages: dependencies: eslint: 8.26.0 eslint-visitor-keys: 2.1.0 + dev: true /eslint-utils/3.0.0_eslint@8.27.0: resolution: @@ -11991,6 +11987,7 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true /eslint/8.27.0: resolution: @@ -13606,7 +13603,7 @@ packages: dependencies: "@tootallnate/once": 2.0.0 agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -14430,7 +14427,7 @@ packages: } engines: {node: ">=10"} dependencies: - debug: 4.3.3 + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -14842,7 +14839,7 @@ packages: jest-pnp-resolver: 1.2.2_jest-resolve@29.3.0 jest-util: 29.2.1 jest-validate: 29.2.2 - resolve: 1.22.0 + resolve: 1.22.1 resolve.exports: 1.1.0 slash: 3.0.0 @@ -16797,7 +16794,7 @@ packages: } dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.0 + resolve: 1.22.1 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: false @@ -18763,6 +18760,7 @@ packages: is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /resolve/1.22.1: resolution: @@ -18894,7 +18892,7 @@ packages: rollup: ^1.20.0 || ^2.0.0 dependencies: "@rollup/pluginutils": 4.2.1 - debug: 4.3.3 + debug: 4.3.4 es-module-lexer: 0.9.3 esbuild: 0.14.51 joycon: 3.1.1 @@ -18915,7 +18913,7 @@ packages: rollup: ^1.20.0 || ^2.0.0 dependencies: "@rollup/pluginutils": 4.2.1 - debug: 4.3.3_supports-color@8.1.1 + debug: 4.3.4_supports-color@8.1.1 es-module-lexer: 0.9.3 esbuild: 0.14.51 joycon: 3.1.1