From 093faa752c41f15d8ffe7849a284b88ddd6d3a14 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Thu, 24 Aug 2023 16:37:22 -0600 Subject: [PATCH 1/7] all tests passing (with some node_modules changes in remix-utils) --- app/root.tsx | 10 +- app/routes/_auth+/forgot-password.tsx | 4 +- app/routes/_auth+/login.tsx | 9 +- app/routes/_auth+/onboarding.tsx | 4 +- app/routes/_auth+/onboarding_.$provider.tsx | 4 +- app/routes/_auth+/reset-password.tsx | 4 +- app/routes/_auth+/signup.tsx | 4 +- app/routes/_marketing+/index.tsx | 4 +- app/routes/settings+/profile.tsx | 17 +- app/routes/users+/$username.tsx | 9 +- .../users+/$username_+/notes.$noteId.tsx | 4 +- app/routes/users+/$username_+/notes.index.tsx | 4 +- package-lock.json | 3506 +++++------------ package.json | 22 +- remix.config.js | 8 - tests/mocks/index.ts | 4 +- 16 files changed, 929 insertions(+), 2688 deletions(-) diff --git a/app/root.tsx b/app/root.tsx index b19c8e6b3..e0d185091 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -6,7 +6,7 @@ import { type DataFunctionArgs, type HeadersFunction, type LinksFunction, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/node' import { Form, @@ -59,7 +59,7 @@ import { type Theme, setTheme, getTheme } from './utils/theme.server.ts' import { makeTimings, time } from './utils/timing.server.ts' import { getToast } from './utils/toast.server.ts' import { useOptionalUser, useUser } from './utils/user.ts' - + const RemixDevTools = process.env.NODE_ENV === 'development' ? lazy(() => import('remix-development-tools')) @@ -93,7 +93,7 @@ export const links: LinksFunction = () => { ].filter(Boolean) } -export const meta: V2_MetaFunction = ({ data }) => { +export const meta: MetaFunction = ({ data }) => { return [ { title: data ? 'Epic Notes' : 'Error | Epic Notes' }, { name: 'description', content: `Your own captain's log` }, @@ -282,8 +282,8 @@ function App() { - - + + {RemixDevTools ? ( diff --git a/app/routes/_auth+/forgot-password.tsx b/app/routes/_auth+/forgot-password.tsx index 6e2a67d61..82ad1aa21 100644 --- a/app/routes/_auth+/forgot-password.tsx +++ b/app/routes/_auth+/forgot-password.tsx @@ -5,7 +5,7 @@ import { json, redirect, type DataFunctionArgs, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/node' import { Link, useFetcher } from '@remix-run/react' import { z } from 'zod' @@ -108,7 +108,7 @@ function ForgotPasswordEmail({ ) } -export const meta: V2_MetaFunction = () => { +export const meta: MetaFunction = () => { return [{ title: 'Password Recovery for Epic Notes' }] } diff --git a/app/routes/_auth+/login.tsx b/app/routes/_auth+/login.tsx index 1514ba557..f1bfb5b16 100644 --- a/app/routes/_auth+/login.tsx +++ b/app/routes/_auth+/login.tsx @@ -4,7 +4,7 @@ import { json, redirect, type DataFunctionArgs, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/node' import { Form, Link, useActionData, useSearchParams } from '@remix-run/react' import { safeRedirect } from 'remix-utils' @@ -81,9 +81,8 @@ export async function handleNewSession( combineResponseInits( { headers: { - 'set-cookie': await verifySessionStorage.commitSession( - verifySession, - ), + 'set-cookie': + await verifySessionStorage.commitSession(verifySession), }, }, responseInit, @@ -346,7 +345,7 @@ export default function LoginPage() { ) } -export const meta: V2_MetaFunction = () => { +export const meta: MetaFunction = () => { return [{ title: 'Login to Epic Notes' }] } diff --git a/app/routes/_auth+/onboarding.tsx b/app/routes/_auth+/onboarding.tsx index 15935bf15..2065f6d09 100644 --- a/app/routes/_auth+/onboarding.tsx +++ b/app/routes/_auth+/onboarding.tsx @@ -4,7 +4,7 @@ import { json, redirect, type DataFunctionArgs, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/node' import { Form, @@ -142,7 +142,7 @@ export async function handleVerification({ }) } -export const meta: V2_MetaFunction = () => { +export const meta: MetaFunction = () => { return [{ title: 'Setup Epic Notes Account' }] } diff --git a/app/routes/_auth+/onboarding_.$provider.tsx b/app/routes/_auth+/onboarding_.$provider.tsx index 07e3c99ea..4afb21238 100644 --- a/app/routes/_auth+/onboarding_.$provider.tsx +++ b/app/routes/_auth+/onboarding_.$provider.tsx @@ -4,7 +4,7 @@ import { json, redirect, type DataFunctionArgs, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/node' import { Form, @@ -182,7 +182,7 @@ export async function handleVerification({ }) } -export const meta: V2_MetaFunction = () => { +export const meta: MetaFunction = () => { return [{ title: 'Setup Epic Notes Account' }] } diff --git a/app/routes/_auth+/reset-password.tsx b/app/routes/_auth+/reset-password.tsx index dff7047d3..49036dd1d 100644 --- a/app/routes/_auth+/reset-password.tsx +++ b/app/routes/_auth+/reset-password.tsx @@ -4,7 +4,7 @@ import { json, redirect, type DataFunctionArgs, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/node' import { Form, useActionData, useLoaderData } from '@remix-run/react' import { z } from 'zod' @@ -102,7 +102,7 @@ export async function action({ request }: DataFunctionArgs) { }) } -export const meta: V2_MetaFunction = () => { +export const meta: MetaFunction = () => { return [{ title: 'Reset Password | Epic Notes' }] } diff --git a/app/routes/_auth+/signup.tsx b/app/routes/_auth+/signup.tsx index de8fa41db..06c5fe390 100644 --- a/app/routes/_auth+/signup.tsx +++ b/app/routes/_auth+/signup.tsx @@ -5,7 +5,7 @@ import { json, redirect, type DataFunctionArgs, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/node' import { Form, useActionData, useSearchParams } from '@remix-run/react' import { z } from 'zod' @@ -100,7 +100,7 @@ export function SignupEmail({ ) } -export const meta: V2_MetaFunction = () => { +export const meta: MetaFunction = () => { return [{ title: 'Sign Up | Epic Notes' }] } diff --git a/app/routes/_marketing+/index.tsx b/app/routes/_marketing+/index.tsx index cd34a96c9..a7bc81978 100644 --- a/app/routes/_marketing+/index.tsx +++ b/app/routes/_marketing+/index.tsx @@ -1,4 +1,4 @@ -import { type V2_MetaFunction } from '@remix-run/node' +import { type MetaFunction } from '@remix-run/node' import { Tooltip, TooltipContent, @@ -7,7 +7,7 @@ import { } from '#app/components/ui/tooltip.tsx' import { logos, stars } from './logos/logos.ts' -export const meta: V2_MetaFunction = () => [{ title: 'Epic Notes' }] +export const meta: MetaFunction = () => [{ title: 'Epic Notes' }] export default function Index() { return ( diff --git a/app/routes/settings+/profile.tsx b/app/routes/settings+/profile.tsx index 26cb44a40..717747992 100644 --- a/app/routes/settings+/profile.tsx +++ b/app/routes/settings+/profile.tsx @@ -6,6 +6,7 @@ import { requireUserId } from '#app/utils/auth.server.ts' import { prisma } from '#app/utils/db.server.ts' import { cn, invariantResponse } from '#app/utils/misc.tsx' import { useUser } from '#app/utils/user.ts' +import { z } from 'zod' export const handle = { breadcrumb: Edit Profile, @@ -21,17 +22,23 @@ export async function loader({ request }: DataFunctionArgs) { return json({}) } +const BreadcrumbHandleMatch = z.object({ + handle: z.object({ breadcrumb: z.any() }), +}) + export default function EditUserProfile() { const user = useUser() const matches = useMatches() const breadcrumbs = matches - .map(m => - m.handle?.breadcrumb ? ( + .map(m => { + const result = BreadcrumbHandleMatch.safeParse(m) + if (!result.success) return null + return ( - {m.handle.breadcrumb} + {result.data.handle.breadcrumb} - ) : null, - ) + ) + }) .filter(Boolean) return ( diff --git a/app/routes/users+/$username.tsx b/app/routes/users+/$username.tsx index b44ccb964..519a52595 100644 --- a/app/routes/users+/$username.tsx +++ b/app/routes/users+/$username.tsx @@ -1,10 +1,5 @@ import { json, type DataFunctionArgs } from '@remix-run/node' -import { - Form, - Link, - useLoaderData, - type V2_MetaFunction, -} from '@remix-run/react' +import { Form, Link, useLoaderData, type MetaFunction } from '@remix-run/react' import { GeneralErrorBoundary } from '#app/components/error-boundary.tsx' import { Spacer } from '#app/components/spacer.tsx' import { Button } from '#app/components/ui/button.tsx' @@ -102,7 +97,7 @@ export default function ProfileRoute() { ) } -export const meta: V2_MetaFunction = ({ data, params }) => { +export const meta: MetaFunction = ({ data, params }) => { const displayName = data?.user.name ?? params.username return [ { title: `${displayName} | Epic Notes` }, diff --git a/app/routes/users+/$username_+/notes.$noteId.tsx b/app/routes/users+/$username_+/notes.$noteId.tsx index 15ad015d3..3f440ec60 100644 --- a/app/routes/users+/$username_+/notes.$noteId.tsx +++ b/app/routes/users+/$username_+/notes.$noteId.tsx @@ -6,7 +6,7 @@ import { Link, useActionData, useLoaderData, - type V2_MetaFunction, + type MetaFunction, } from '@remix-run/react' import { formatDistanceToNow } from 'date-fns' import { z } from 'zod' @@ -191,7 +191,7 @@ export function DeleteNote({ id }: { id: string }) { ) } -export const meta: V2_MetaFunction< +export const meta: MetaFunction< typeof loader, { 'routes/users+/$username_+/notes': typeof notesLoader } > = ({ data, params, matches }) => { diff --git a/app/routes/users+/$username_+/notes.index.tsx b/app/routes/users+/$username_+/notes.index.tsx index e4a8714d2..2e676e98e 100644 --- a/app/routes/users+/$username_+/notes.index.tsx +++ b/app/routes/users+/$username_+/notes.index.tsx @@ -1,4 +1,4 @@ -import { type V2_MetaFunction } from '@remix-run/react' +import { type MetaFunction } from '@remix-run/react' import { type loader as notesLoader } from './notes.tsx' export default function NotesIndexRoute() { @@ -9,7 +9,7 @@ export default function NotesIndexRoute() { ) } -export const meta: V2_MetaFunction< +export const meta: MetaFunction< null, { 'routes/users+/$username_+/notes': typeof notesLoader } > = ({ params, matches }) => { diff --git a/package-lock.json b/package-lock.json index b46be3504..51fad470b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,12 +19,12 @@ "@radix-ui/react-toast": "^1.1.4", "@radix-ui/react-tooltip": "^1.0.6", "@react-email/components": "^0.0.7", - "@remix-run/css-bundle": "1.19.3", - "@remix-run/express": "1.19.3", - "@remix-run/node": "1.19.3", - "@remix-run/react": "1.19.3", + "@remix-run/css-bundle": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/express": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/node": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/react": "0.0.0-nightly-49e8da1-20230823", "@remix-run/router": "^1.8.0", - "@remix-run/server-runtime": "1.19.3", + "@remix-run/server-runtime": "0.0.0-nightly-49e8da1-20230823", "@sentry/remix": "^7.64.0", "address": "^1.2.2", "autoprefixer": "^10.4.15", @@ -60,7 +60,7 @@ "remix-auth-form": "^1.3.0", "remix-auth-github": "^1.6.0", "remix-development-tools": "^2.1.1", - "remix-utils": "^6.6.0", + "remix-utils": "^7.0.0", "set-cookie-parser": "^2.6.0", "sonner": "^0.6.2", "source-map-support": "^0.5.21", @@ -74,10 +74,10 @@ "devDependencies": { "@faker-js/faker": "^8.0.2", "@playwright/test": "^1.37.1", - "@remix-run/dev": "1.19.3", - "@remix-run/eslint-config": "1.19.3", - "@remix-run/serve": "1.19.3", - "@remix-run/testing": "^1.19.3", + "@remix-run/dev": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/eslint-config": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/serve": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/testing": "^0.0.0-nightly-49e8da1-20230823", "@sly-cli/sly": "^1.4.10", "@testing-library/jest-dom": "^6.0.1", "@testing-library/react": "^14.0.0", @@ -289,18 +289,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", - "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.22.9", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", @@ -376,48 +364,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", - "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", @@ -516,23 +462,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/@babel/helper-replace-supers": { "version": "7.22.9", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", @@ -613,20 +542,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", - "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", @@ -711,10 +626,10 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", + "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -722,86 +637,17 @@ "engines": { "node": ">=6.9.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -810,34 +656,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { + "node_modules/@babel/plugin-syntax-typescript": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -849,13 +671,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { + "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -864,34 +688,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { + "node_modules/@babel/plugin-transform-react-display-name": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -903,85 +703,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -990,13 +722,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/plugin-transform-react-jsx": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1005,10 +737,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { + "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1020,26 +752,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { + "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1051,990 +767,35 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", - "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { + "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", - "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", - "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", - "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", - "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", - "dev": true, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", - "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", - "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", - "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", - "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.7", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.5", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.6", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.5", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.5", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", + "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -2079,12 +840,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "node_modules/@babel/runtime": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", @@ -3147,12 +1902,6 @@ "react-dom": ">=16.8.0" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", @@ -3373,6 +2122,45 @@ "integrity": "sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==", "dev": true }, + "node_modules/@mdx-js/mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", + "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/mdx": "^2.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/estree-util-is-identifier-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@mswjs/cookies": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.0.0.tgz", @@ -3408,15 +2196,6 @@ "eslint-scope": "5.1.1" } }, - "node_modules/@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", - "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -3461,39 +2240,148 @@ } }, "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "dependencies": { - "@gar/promisify": "^1.0.1", "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "node_modules/@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", "dev": true, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", - "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "@npmcli/git": "^4.1.0", + "glob": "^10.2.2", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/package-json/node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@open-draft/deferred-promise": { @@ -4673,46 +3561,44 @@ } }, "node_modules/@remix-run/css-bundle": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-1.19.3.tgz", - "integrity": "sha512-XccfuPmTdtXT+Kx7Df62cyk8d2I6DrHIB02uDyIGOTq8lPlMXznErMW14asVcbGOV5ieAOvnch/pUJrsKoWRmw==", + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-xYZVBWg0P1+4VkiobC8YTLfkl9BJ4WPK1yiq0OM7BNen86BPS8mb0G/TOrjEdAF8/2jl6V+NJhd5gqQbJI1OOw==", "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@remix-run/dev": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-1.19.3.tgz", - "integrity": "sha512-Yh733OI0AxR7QbPaJbocujxSF1S5CToDmfZnmv5SlTTIXEw5KfnbCceHy9qhUp0nrkz2YT7pd1zbTEVYIi/Vug==", + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-F/phSZpU1TAYxSsvQhZviKW7JCF0YWcB7t1u0wHqYNZ4P9Wq9PK6cMHR1M+CZI7ps/sIKOOzAjQEr0S4hUFarQ==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", "@babel/generator": "^7.21.5", "@babel/parser": "^7.21.8", + "@babel/plugin-syntax-decorators": "^7.22.10", "@babel/plugin-syntax-jsx": "^7.21.4", - "@babel/plugin-syntax-typescript": "^7.21.4", - "@babel/preset-env": "^7.21.5", "@babel/preset-typescript": "^7.21.5", "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "@npmcli/package-json": "^2.0.0", - "@remix-run/server-runtime": "1.19.3", + "@mdx-js/mdx": "^2.3.0", + "@npmcli/package-json": "^4.0.1", + "@remix-run/server-runtime": "0.0.0-nightly-49e8da1-20230823", + "@types/mdx": "^2.0.5", "@vanilla-extract/integration": "^6.2.0", "arg": "^5.0.1", - "cacache": "^15.0.5", + "cacache": "^17.1.3", "chalk": "^4.1.2", "chokidar": "^3.5.1", "dotenv": "^16.0.0", "esbuild": "0.17.6", - "esbuild-plugins-node-modules-polyfill": "^1.3.0", + "esbuild-plugins-node-modules-polyfill": "^1.4.0", "execa": "5.1.1", "exit-hook": "2.2.1", "express": "^4.17.1", - "fast-glob": "3.2.11", "fs-extra": "^10.0.0", "get-port": "^5.1.1", "gunzip-maybe": "^1.4.2", - "inquirer": "^8.2.1", "jsesc": "3.0.2", "json5": "^2.2.2", "lodash": "^4.17.21", @@ -4729,30 +3615,31 @@ "postcss-modules": "^6.0.0", "prettier": "^2.7.1", "pretty-ms": "^7.0.1", - "proxy-agent": "^6.3.0", "react-refresh": "^0.14.0", - "recast": "^0.21.5", "remark-frontmatter": "4.0.1", "remark-mdx-frontmatter": "^1.0.1", "semver": "^7.3.7", "sort-package-json": "^1.55.0", "tar-fs": "^2.1.1", "tsconfig-paths": "^4.0.0", - "ws": "^7.4.5", - "xdm": "^2.0.0" + "ws": "^7.4.5" }, "bin": { "remix": "dist/cli.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "peerDependencies": { - "@remix-run/serve": "^1.19.3" + "@remix-run/serve": "^0.0.0-nightly-49e8da1-20230823", + "typescript": "^5.1.0" }, "peerDependenciesMeta": { "@remix-run/serve": { "optional": true + }, + "typescript": { + "optional": true } } }, @@ -5325,9 +4212,9 @@ } }, "node_modules/@remix-run/eslint-config": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-1.19.3.tgz", - "integrity": "sha512-8yvPtsJj1hBKp6ypTTDhHmJ2ftoPmBV1xPPOIqhMLDQ1fwmzocwnkz9RHTeMYkdNSzUuqGnpGaMTHgrT3WfckQ==", + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-ZteDW0HKm9sZvQBkxqFNq/KP4WtxoeQ5l5yuEFGSEmkNDp1Q8KhlQ13HHiTxH6AYNoVPLCPgu30tgDV9p+U0Xw==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", @@ -5348,12 +4235,142 @@ "eslint-plugin-testing-library": "^5.10.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.0.0" }, "peerDependencies": { "eslint": "^8.0.0", - "react": "^17.0.0 || ^18.0.0", - "typescript": "^4.0.0 || ^5.0.0" + "react": "^18.0.0", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/express": { + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-2BzhkvMm26JeKIBWleIIMpp/+eSwIQorRXw5m0+Lnj2WM2cIYKXThM7lkko2lNpFvcvpk5mnfFJsGVHpYvRZOw==", + "dependencies": { + "@remix-run/node": "0.0.0-nightly-49e8da1-20230823" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "express": "^4.17.1", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/node": { + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-fwP2gq18J+0vJXJFMwAF8PFzS9kuLNoRC/P/wHe9HxSH/+7INODTsy1RejreSkzAeJ7JmxyZ1lYceWWGTF3QGg==", + "dependencies": { + "@remix-run/server-runtime": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/web-fetch": "^4.3.7", + "@remix-run/web-file": "^3.0.3", + "@remix-run/web-stream": "^1.0.4", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie-signature": "^1.1.0", + "source-map-support": "^0.5.21", + "stream-slice": "^0.1.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/react": { + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-8LNgwlqJiL+hRkBUG9f9O4TTBhATK+XVf6MClhhGJ8+PIrTupr8cCU60skxEdsZTSwxP/6SA871SBBwjIoZG6A==", + "dependencies": { + "@remix-run/router": "0.0.0-experimental-4286521e", + "@remix-run/server-runtime": "0.0.0-nightly-49e8da1-20230823", + "react-router-dom": "0.0.0-experimental-4286521e" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/react/node_modules/@remix-run/router": { + "version": "0.0.0-experimental-4286521e", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-4286521e.tgz", + "integrity": "sha512-tVqZUnmYwcfTMgo9sF4Ny8MdAWzLMeq5NY3Xsw36jmy9i3PQwM+hXlqE8Ilg43WeJQyP3Co5gdegKHdd7aC/zQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz", + "integrity": "sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@remix-run/serve": { + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-KnoMmIvdjkmIDSBWIIG6gH3tgLjY+vfjk9YEOZD1XlneZKmk9+dfCz5Fb005JPtZ4Qiwsq5QJm6Ns2qO4/BcWw==", + "dev": true, + "dependencies": { + "@remix-run/express": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/node": "0.0.0-nightly-49e8da1-20230823", + "compression": "^1.7.4", + "express": "^4.17.1", + "morgan": "^1.10.0", + "source-map-support": "^0.5.21" + }, + "bin": { + "remix-serve": "dist/cli.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@remix-run/server-runtime": { + "version": "0.0.0-nightly-49e8da1-20230823", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-0.0.0-nightly-49e8da1-20230823.tgz", + "integrity": "sha512-hmjdl9Zc8o231ObYCM5yGD5/CZHjy/GXBLqTdiEyVM1kznCQ7DS8zMzA86TMhOUgzJq4ri6EWMIJpvG4CL2hng==", + "dependencies": { + "@remix-run/router": "0.0.0-experimental-4286521e", + "@types/cookie": "^0.4.1", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.4.1", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3", + "type-fest": "^4.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" }, "peerDependenciesMeta": { "typescript": { @@ -5361,29 +4378,66 @@ } } }, - "node_modules/@remix-run/express": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-1.19.3.tgz", - "integrity": "sha512-jeWZ9xFyaarKSbpN/sQWx53QApGs16IiB8XC7CkOAEVDtLfOhXkJ9jOZNScOFUn6JXPx2oAwBBRRdbwOmryScQ==", + "node_modules/@remix-run/server-runtime/node_modules/@remix-run/router": { + "version": "0.0.0-experimental-4286521e", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-4286521e.tgz", + "integrity": "sha512-tVqZUnmYwcfTMgo9sF4Ny8MdAWzLMeq5NY3Xsw36jmy9i3PQwM+hXlqE8Ilg43WeJQyP3Co5gdegKHdd7aC/zQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@remix-run/server-runtime/node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/@remix-run/server-runtime/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@remix-run/server-runtime/node_modules/type-fest": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.2.0.tgz", + "integrity": "sha512-5zknd7Dss75pMSED270A1RQS3KloqRJA9XbXLe0eCxyw7xXFb3rd+9B0UQ/0E+LQT6lnrLviEolYORlRWamn4w==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@remix-run/testing": { + "version": "0.0.0-nightly-ff40409-20230514", + "resolved": "https://registry.npmjs.org/@remix-run/testing/-/testing-0.0.0-nightly-ff40409-20230514.tgz", + "integrity": "sha512-+Jy8S8W3EjGA6FrxKk1SYQwORYHGY8bNcqcOSWUzAB44e9MvEGwkWpYV9ZE3VcBTHCSjBKwjY3SWe+xziJA1bg==", + "dev": true, "dependencies": { - "@remix-run/node": "1.19.3" + "@remix-run/node": "0.0.0-nightly-ff40409-20230514", + "@remix-run/react": "0.0.0-nightly-ff40409-20230514", + "@remix-run/router": "1.6.0", + "react-router-dom": "6.11.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" }, "peerDependencies": { - "express": "^4.17.1" + "react": "^17.0.0 || ^18.0.0" } }, - "node_modules/@remix-run/node": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-1.19.3.tgz", - "integrity": "sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==", + "node_modules/@remix-run/testing/node_modules/@remix-run/node": { + "version": "0.0.0-nightly-ff40409-20230514", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-0.0.0-nightly-ff40409-20230514.tgz", + "integrity": "sha512-iMELIXY2fBFY6Ornuv/OjQiCt3kupQLN0uw55o+88cb5f4wFAXj/elQ4CBo40W5TjerlYkK/h4eJTEP4iAbuqA==", + "dev": true, "dependencies": { - "@remix-run/server-runtime": "1.19.3", - "@remix-run/web-fetch": "^4.3.6", - "@remix-run/web-file": "^3.0.3", - "@remix-run/web-stream": "^1.0.4", + "@remix-run/server-runtime": "0.0.0-nightly-ff40409-20230514", + "@remix-run/web-fetch": "^4.3.4", + "@remix-run/web-file": "^3.0.2", + "@remix-run/web-stream": "^1.0.3", "@web3-storage/multipart-parser": "^1.0.0", "abort-controller": "^3.0.0", "cookie-signature": "^1.1.0", @@ -5391,123 +4445,90 @@ "stream-slice": "^0.1.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" } }, - "node_modules/@remix-run/react": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-1.19.3.tgz", - "integrity": "sha512-iP37MZ+oG1n4kv4rX77pKT/knra51lNwKo5tinPPF0SuNJhF3+XjWo5nwEjvisKTXLZ/OHeicinhgX2JHHdDvA==", + "node_modules/@remix-run/testing/node_modules/@remix-run/react": { + "version": "0.0.0-nightly-ff40409-20230514", + "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-0.0.0-nightly-ff40409-20230514.tgz", + "integrity": "sha512-lffRwEBm+ejKydb6X6AkREQ16eNNJvWf8p4OduGAbXMn1XeTYgO7oup6XOvjaeG3sWm5m9K08u7u3LD+6wUKsg==", + "dev": true, "dependencies": { - "@remix-run/router": "1.7.2", - "react-router-dom": "6.14.2" + "@remix-run/router": "1.6.0", + "react-router-dom": "6.11.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" }, "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "react": ">=16.8", + "react-dom": ">=16.8" } }, - "node_modules/@remix-run/react/node_modules/@remix-run/router": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", - "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "node_modules/@remix-run/testing/node_modules/@remix-run/router": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.0.tgz", + "integrity": "sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==", + "dev": true, "engines": { "node": ">=14" } }, - "node_modules/@remix-run/router": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz", - "integrity": "sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@remix-run/serve": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-1.19.3.tgz", - "integrity": "sha512-RUVEy7EBYvHO1hIuyVQJyIYZeFfXecC+Uaw6GvZscLywIGnhcAj+5dpeK6HVayNuV4kKLvBp0F4ZGHbwW1oWaA==", + "node_modules/@remix-run/testing/node_modules/@remix-run/server-runtime": { + "version": "0.0.0-nightly-ff40409-20230514", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-0.0.0-nightly-ff40409-20230514.tgz", + "integrity": "sha512-aFwGBKiU4v+JGsk7u+cxDPtt4TjGrDiMX9yFAetRnWErgBJjdXqrMVi1bxiA7adXdVvxlCuVLMzmuGnnm2+jnQ==", "dev": true, "dependencies": { - "@remix-run/express": "1.19.3", - "@remix-run/node": "1.19.3", - "compression": "^1.7.4", - "express": "^4.17.1", - "morgan": "^1.10.0", - "source-map-support": "^0.5.21" - }, - "bin": { - "remix-serve": "dist/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@remix-run/server-runtime": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-1.19.3.tgz", - "integrity": "sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==", - "dependencies": { - "@remix-run/router": "1.7.2", - "@types/cookie": "^0.4.1", + "@remix-run/router": "1.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.4.1", "set-cookie-parser": "^2.4.8", "source-map": "^0.7.3" }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@remix-run/server-runtime/node_modules/@remix-run/router": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", - "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", "engines": { "node": ">=14" } }, - "node_modules/@remix-run/server-runtime/node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "node_modules/@remix-run/server-runtime/node_modules/cookie": { + "node_modules/@remix-run/testing/node_modules/cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, "engines": { "node": ">= 0.6" } }, - "node_modules/@remix-run/testing": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@remix-run/testing/-/testing-1.19.3.tgz", - "integrity": "sha512-qO485TWDxHUnWuWX8PotBdq4xa5W3WUQ+iYvoWNCyILw6iJG0WeBTgd2qN44GFEOE1Hd80RqDXVuAlTkG33rCA==", + "node_modules/@remix-run/testing/node_modules/react-router": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.0.tgz", + "integrity": "sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==", "dev": true, "dependencies": { - "@remix-run/node": "1.19.3", - "@remix-run/react": "1.19.3", - "@remix-run/router": "1.7.2", - "react-router-dom": "6.14.2" + "@remix-run/router": "1.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0" + "react": ">=16.8" } }, - "node_modules/@remix-run/testing/node_modules/@remix-run/router": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", - "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "node_modules/@remix-run/testing/node_modules/react-router-dom": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.0.tgz", + "integrity": "sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==", "dev": true, + "dependencies": { + "@remix-run/router": "1.6.0", + "react-router": "6.11.0" + }, "engines": { "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" } }, "node_modules/@remix-run/v1-route-convention": { @@ -5547,9 +4568,9 @@ } }, "node_modules/@remix-run/web-fetch": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.3.6.tgz", - "integrity": "sha512-ifadyJS+/7W6LhKyA8tIR9fBIPwLCFVpl1YCYg5i0ikykiXxE3IWtPVB1G51AJFghc1YgR7rq8BRJLsJeUbE5Q==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.3.7.tgz", + "integrity": "sha512-Ha6TuLiVHBbLuSNRgEQTz01pgG+bZVNogkKZt1cVi0asOuKISl0X2UgPLv+dWBqfcFvTi8CQvYUNuk5c89TcZw==", "dependencies": { "@remix-run/web-blob": "^3.0.5", "@remix-run/web-form-data": "^3.0.5", @@ -5587,25 +4608,6 @@ "web-streams-polyfill": "^3.1.1" } }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, "node_modules/@rushstack/eslint-patch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz", @@ -5796,18 +4798,6 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, "node_modules/@sly-cli/sly": { "version": "1.4.10", "resolved": "https://registry.npmjs.org/@sly-cli/sly/-/sly-1.4.10.tgz", @@ -5983,18 +4973,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@testing-library/dom": { "version": "8.20.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", @@ -6340,12 +5318,6 @@ "node": ">= 10" } }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true - }, "node_modules/@total-typescript/ts-reset": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.5.1.tgz", @@ -6392,18 +5364,6 @@ "@types/node": "*" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, "node_modules/@types/chai": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", @@ -6469,9 +5429,9 @@ "dev": true }, "node_modules/@types/estree-jsx": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-0.0.1.tgz", - "integrity": "sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", + "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", "dev": true, "dependencies": { "@types/estree": "*" @@ -6530,12 +5490,6 @@ "@types/unist": "^2" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, "node_modules/@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -6574,15 +5528,6 @@ "@types/node": "*" } }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/mdast": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", @@ -6592,10 +5537,10 @@ "@types/unist": "^2" } }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "node_modules/@types/mdx": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.7.tgz", + "integrity": "sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw==", "dev": true }, "node_modules/@types/mime": { @@ -6678,15 +5623,6 @@ "@types/react": "*" } }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/scheduler": { "version": "0.16.3", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", @@ -7977,18 +6913,6 @@ "node": "*" } }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -8075,45 +6999,6 @@ "dequal": "^2.0.3" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", - "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", - "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1", - "core-js-compat": "^3.31.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", - "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -8159,15 +7044,6 @@ "node": ">= 0.8" } }, - "node_modules/basic-ftp": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", - "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", @@ -8191,15 +7067,6 @@ "node": ">=0.6" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -8374,160 +7241,76 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "semver": "^7.0.0" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", "dependencies": { - "brace-expansion": "^1.1.7" + "run-applescript": "^5.0.0" }, "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "engines": { - "node": ">=10.6.0" + "node": ">= 0.8" } }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, "dependencies": { - "pump": "^3.0.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/cachified": { @@ -8591,6 +7374,16 @@ } ] }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -8785,27 +7578,6 @@ "node": ">=0.8" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone-response/node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/close-with-grace": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/close-with-grace/-/close-with-grace-1.2.0.tgz", @@ -9019,19 +7791,6 @@ "node": ">=6.6.0" } }, - "node_modules/core-js-compat": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", - "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.9" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -9104,6 +7863,11 @@ "node": ">= 8" } }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -9210,21 +7974,6 @@ "url": "https://opencollective.com/date-fns" } }, - "node_modules/deasync": { - "version": "0.1.28", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.28.tgz", - "integrity": "sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - }, - "engines": { - "node": ">=0.11.0" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -9395,15 +8144,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/define-lazy-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", @@ -9439,20 +8179,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "dev": true, - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -9782,15 +8508,6 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/encode-utf8": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", @@ -9842,6 +8559,12 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -10002,9 +8725,9 @@ } }, "node_modules/esbuild-plugins-node-modules-polyfill": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/esbuild-plugins-node-modules-polyfill/-/esbuild-plugins-node-modules-polyfill-1.3.0.tgz", - "integrity": "sha512-r/aNOvAlIaIzqJwvFHWhDGrPF/Aj5qI1zKVeHbCFpKH+bnKW1BG2LGixMd3s6hyWcZHcfdl2QZRucVuOLzFRrA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esbuild-plugins-node-modules-polyfill/-/esbuild-plugins-node-modules-polyfill-1.5.0.tgz", + "integrity": "sha512-EqfUvofbFSh8sjlZd0NcF2nv2GFIGRXke83sUztsGYiYV+XF9ySmyora5M1HZEmj//6BuA549EzpT8/BaJqMpQ==", "dev": true, "dependencies": { "@jspm/core": "^2.0.1", @@ -10015,7 +8738,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "esbuild": "^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0" + "esbuild": "^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0 || ^0.19.0" } }, "node_modules/escalade": { @@ -10043,37 +8766,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint": { "version": "8.47.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz", @@ -10893,19 +9585,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -10965,15 +9644,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/estree-util-build-jsx/node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/estree-util-build-jsx/node_modules/estree-util-is-identifier-name": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", @@ -10994,6 +9664,21 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/estree-util-to-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", + "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-util-value-to-estree": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", @@ -11020,15 +9705,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/estree-util-visit/node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -11536,15 +10212,15 @@ } }, "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/fs.realpath": { @@ -11722,62 +10398,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/get-uri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", - "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", - "dev": true, - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^5.0.1", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/get-uri/node_modules/data-uri-to-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", - "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/get-uri/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/get-uri/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/git-hooks-list": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-1.0.3.tgz", @@ -11825,15 +10445,6 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -11888,31 +10499,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -12060,15 +10646,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree/node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/hast-util-to-estree/node_modules/estree-util-is-identifier-name": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", @@ -12200,12 +10777,6 @@ "entities": "^4.3.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -12235,19 +10806,6 @@ "node": ">= 6" } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -12352,12 +10910,6 @@ "node": ">=8" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -12487,12 +11039,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, "node_modules/ip-regex": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", @@ -13300,12 +11846,6 @@ "node": ">=6" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -13372,16 +11912,7 @@ "object.values": "^1.1.6" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" + "node": ">=4.0" } }, "node_modules/kind-of": { @@ -13631,15 +12162,6 @@ "get-func-name": "^2.0.0" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", @@ -13761,14 +12283,16 @@ } }, "node_modules/mdast-util-mdx": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-1.1.0.tgz", - "integrity": "sha512-leKb9uG7laXdyFlTleYV4ZEaCpsxeU1LlkkR/xp35pgKrfV1Y0fNCuOw9vaRc2a9YDpH22wd145Wt7UY5yzeZw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", + "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", "dev": true, "dependencies": { + "mdast-util-from-markdown": "^1.0.0", "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0" + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" }, "funding": { "type": "opencollective", @@ -13792,24 +12316,19 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdx-expression/node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/mdast-util-mdx-jsx": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-1.2.0.tgz", - "integrity": "sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", + "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", "dev": true, "dependencies": { - "@types/estree-jsx": "^0.0.1", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "mdast-util-from-markdown": "^1.1.0", + "mdast-util-to-markdown": "^1.3.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-remove-position": "^4.0.0", @@ -13838,15 +12357,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/mdast-util-phrasing": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", @@ -13862,17 +12372,16 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-11.3.0.tgz", - "integrity": "sha512-4o3Cli3hXPmm1LhB+6rqhfsIUBjnKFlIUZvudaermXB+4/KONdd/W4saWWkC+LBLbPMqhFSSTSRgafHsT5fVJw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", "dev": true, "dependencies": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", - "@types/mdurl": "^1.0.0", "mdast-util-definitions": "^5.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^3.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", "unist-util-generated": "^2.0.0", "unist-util-position": "^4.0.0", "unist-util-visit": "^4.0.0" @@ -13915,12 +12424,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, "node_modules/media-query-parser": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/media-query-parser/-/media-query-parser-2.0.2.tgz", @@ -14692,15 +13195,12 @@ } }, "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect": { @@ -14715,6 +13215,18 @@ "node": ">= 8" } }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -14727,6 +13239,18 @@ "node": ">= 8" } }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -14739,6 +13263,18 @@ "node": ">=8" } }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -14752,6 +13288,18 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -15051,15 +13599,6 @@ "node": ">= 0.6" } }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -15077,13 +13616,6 @@ "node": ">=10" } }, - "node_modules/node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true, - "optional": true - }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -15219,16 +13751,76 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "node_modules/npm-install-checks": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.2.0.tgz", + "integrity": "sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g==", "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-run-all": { @@ -15737,15 +14329,6 @@ "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==", "dev": true }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -15799,77 +14382,6 @@ "node": ">=6" } }, - "node_modules/pac-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz", - "integrity": "sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA==", - "dev": true, - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "pac-resolver": "^7.0.0", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", - "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", - "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", - "dev": true, - "dependencies": { - "degenerator": "^5.0.0", - "ip": "^1.1.8", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -16007,15 +14519,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -16601,6 +15104,15 @@ "node": ">=16.13" } }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -16621,6 +15133,19 @@ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -16673,78 +15198,12 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-agent": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", - "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", - "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.10" } }, "node_modules/proxy-from-env": { @@ -17167,29 +15626,29 @@ } }, "node_modules/react-router": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz", - "integrity": "sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==", + "version": "0.0.0-experimental-4286521e", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-0.0.0-experimental-4286521e.tgz", + "integrity": "sha512-hLyGDdQOVLEMnJ0xflGtLmCPX10cI7dLBJKnPq5BGG8dixE5L+Av9imM8j9rU7Qm67NDHrp1xcPkVLS9oCFuvg==", "dependencies": { - "@remix-run/router": "1.7.2" + "@remix-run/router": "0.0.0-experimental-4286521e" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz", - "integrity": "sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==", + "version": "0.0.0-experimental-4286521e", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-0.0.0-experimental-4286521e.tgz", + "integrity": "sha512-+ByHVuOeVABXbZe/enX32/QvJ8g47ILx6r7Iu8xqUxrE7vN1Gk4DTuB/s4frLRT8RtDC5xw+xoMTG9Ojzc+H9A==", "dependencies": { - "@remix-run/router": "1.7.2", - "react-router": "6.14.2" + "@remix-run/router": "0.0.0-experimental-4286521e", + "react-router": "0.0.0-experimental-4286521e" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8", @@ -17197,19 +15656,19 @@ } }, "node_modules/react-router-dom/node_modules/@remix-run/router": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", - "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "version": "0.0.0-experimental-4286521e", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-4286521e.tgz", + "integrity": "sha512-tVqZUnmYwcfTMgo9sF4Ny8MdAWzLMeq5NY3Xsw36jmy9i3PQwM+hXlqE8Ilg43WeJQyP3Co5gdegKHdd7aC/zQ==", "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, "node_modules/react-router/node_modules/@remix-run/router": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", - "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "version": "0.0.0-experimental-4286521e", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-4286521e.tgz", + "integrity": "sha512-tVqZUnmYwcfTMgo9sF4Ny8MdAWzLMeq5NY3Xsw36jmy9i3PQwM+hXlqE8Ilg43WeJQyP3Co5gdegKHdd7aC/zQ==", "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, "node_modules/react-style-singleton": { @@ -17309,42 +15768,6 @@ "node": ">=8.10.0" } }, - "node_modules/recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "dev": true, - "dependencies": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/recast/node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/recast/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -17358,38 +15781,11 @@ "node": ">=8" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", @@ -17419,44 +15815,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/remark-frontmatter": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz", @@ -17473,6 +15831,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", + "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", + "dev": true, + "dependencies": { + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-mdx-frontmatter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/remark-mdx-frontmatter/-/remark-mdx-frontmatter-1.1.1.tgz", @@ -17504,14 +15876,14 @@ } }, "node_modules/remark-rehype": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-9.1.0.tgz", - "integrity": "sha512-oLa6YmgAYg19zb0ZrBACh40hpBLteYROaPLhBXzLgjqyHQrN+gVP9N/FJvfzuNNuzCutktkroXEZBrxAxKhh7Q==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", "dev": true, "dependencies": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^11.0.0", + "mdast-util-to-hast": "^12.1.0", "unified": "^10.0.0" }, "funding": { @@ -17614,10 +15986,11 @@ } }, "node_modules/remix-utils": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-6.6.0.tgz", - "integrity": "sha512-4r4ifahU61Aa54m6Yu8B8GTzXyo+9RUzkFZdBNZOErpZ1LUMQ/ng4LeCJX2M6m4obdMjq0ot0pPlnAzeZOSttg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.0.tgz", + "integrity": "sha512-6cSGMd1mlycKRaaMGIvwqPbzW477lEE1BkD/4xntFb0STQdKodmIJWoU/mjvrV09lKgbgBeyPdQQm+pHjys6Fg==", "dependencies": { + "crypto-js": "^4.1.1", "intl-parse-accept-language": "^1.0.0", "is-ip": "^3.1.0", "schema-dts": "^1.1.0", @@ -17625,12 +15998,13 @@ "uuid": "^8.3.2" }, "engines": { - "node": ">=14" + "node": ">=18.0.0" }, "peerDependencies": { - "@remix-run/react": "^1.10.0", - "@remix-run/server-runtime": "^1.10.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "@remix-run/react": "^1.19.1", + "@remix-run/router": "^1.7.2", + "@remix-run/server-runtime": "^1.19.1", + "react": "^18.0.0", "zod": "^3.19.1" } }, @@ -17698,12 +16072,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -17731,18 +16099,6 @@ "node": ">=10" } }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -17789,6 +16145,15 @@ "node": ">=0.12" } }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -18315,62 +16680,6 @@ "node": ">=8" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz", - "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, "node_modules/sonner": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/sonner/-/sonner-0.6.2.tgz", @@ -18580,15 +16889,15 @@ } }, "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/stackback": { @@ -19217,6 +17526,30 @@ "node": ">=6" } }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -19478,6 +17811,16 @@ "node": ">=14" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -19885,46 +18228,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", @@ -19980,34 +18283,27 @@ } }, "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "dependencies": { - "unique-slug": "^2.0.0" + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4" - } - }, - "node_modules/unist-builder": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.1.tgz", - "integrity": "sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unist-util-generated": { @@ -20304,6 +18600,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -21253,66 +19561,6 @@ } } }, - "node_modules/xdm": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/xdm/-/xdm-2.1.0.tgz", - "integrity": "sha512-3LxxbxKcRogYY7cQSMy1tUuU1zKNK9YPqMT7/S0r7Cz2QpyF8O9yFySGD7caOZt+LWUOQioOIX+6ZzCoBCpcAA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^4.0.0", - "@types/estree-jsx": "^0.0.1", - "astring": "^1.6.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0", - "got": "^11.0.0", - "hast-util-to-estree": "^2.0.0", - "loader-utils": "^2.0.0", - "markdown-extensions": "^1.0.0", - "mdast-util-mdx": "^1.0.0", - "micromark-extension-mdxjs": "^1.0.0", - "periscopic": "^3.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^9.0.0", - "source-map": "^0.7.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - }, - "optionalDependencies": { - "deasync": "^0.1.0" - } - }, - "node_modules/xdm/node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/xdm/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", diff --git a/package.json b/package.json index 23706952a..5b46a46b5 100644 --- a/package.json +++ b/package.json @@ -52,12 +52,12 @@ "@radix-ui/react-toast": "^1.1.4", "@radix-ui/react-tooltip": "^1.0.6", "@react-email/components": "^0.0.7", - "@remix-run/css-bundle": "1.19.3", - "@remix-run/express": "1.19.3", - "@remix-run/node": "1.19.3", - "@remix-run/react": "1.19.3", + "@remix-run/css-bundle": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/express": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/node": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/react": "0.0.0-nightly-49e8da1-20230823", "@remix-run/router": "^1.8.0", - "@remix-run/server-runtime": "1.19.3", + "@remix-run/server-runtime": "0.0.0-nightly-49e8da1-20230823", "@sentry/remix": "^7.64.0", "address": "^1.2.2", "autoprefixer": "^10.4.15", @@ -93,7 +93,7 @@ "remix-auth-form": "^1.3.0", "remix-development-tools": "^2.1.1", "remix-auth-github": "^1.6.0", - "remix-utils": "^6.6.0", + "remix-utils": "^7.0.0", "set-cookie-parser": "^2.6.0", "sonner": "^0.6.2", "source-map-support": "^0.5.21", @@ -107,10 +107,10 @@ "devDependencies": { "@faker-js/faker": "^8.0.2", "@playwright/test": "^1.37.1", - "@remix-run/dev": "1.19.3", - "@remix-run/eslint-config": "1.19.3", - "@remix-run/serve": "1.19.3", - "@remix-run/testing": "^1.19.3", + "@remix-run/dev": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/eslint-config": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/serve": "0.0.0-nightly-49e8da1-20230823", + "@remix-run/testing": "^0.0.0-nightly-49e8da1-20230823", "@sly-cli/sly": "^1.4.10", "@testing-library/jest-dom": "^6.0.1", "@testing-library/react": "^14.0.0", @@ -159,4 +159,4 @@ "prisma": { "seed": "tsx prisma/seed.ts" } -} \ No newline at end of file +} diff --git a/remix.config.js b/remix.config.js index 86f0cdc73..58cfcad7a 100644 --- a/remix.config.js +++ b/remix.config.js @@ -11,14 +11,6 @@ export default { tailwind: true, postcss: true, watchPaths: ['./tailwind.config.ts'], - future: { - v2_headers: true, - v2_meta: true, - v2_errorBoundary: true, - v2_normalizeFormMethod: true, - v2_routeConvention: true, - v2_dev: true, - }, routes: async defineRoutes => { return flatRoutes('routes', defineRoutes, { ignoredRouteFiles: [ diff --git a/tests/mocks/index.ts b/tests/mocks/index.ts index 642a79103..38cbf388e 100644 --- a/tests/mocks/index.ts +++ b/tests/mocks/index.ts @@ -5,8 +5,8 @@ import { handlers as githubHandlers } from './github.ts' import { handlers as resendHandlers } from './resend.ts' const miscHandlers = [ - process.env.REMIX_DEV_HTTP_ORIGIN - ? http.post(`${process.env.REMIX_DEV_HTTP_ORIGIN}ping`, passthrough) + process.env.REMIX_DEV_ORIGIN + ? http.post(`${process.env.REMIX_DEV_ORIGIN}ping`, passthrough) : null, ].filter(Boolean) From e1e38fdba0f7464fec25398a97adc104e8a8bed5 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Thu, 24 Aug 2023 17:17:57 -0600 Subject: [PATCH 2/7] add honeypot --- .env.example | 1 + app/routes/_auth+/signup.tsx | 16 +- app/utils/env.server.ts | 1 + app/utils/honeypot.server.ts | 5 + other/patches/remix-utils+7.0.0.patch | 442 ++++++++++++++++++++++++++ package-lock.json | 233 +++++++++++++- package.json | 4 +- 7 files changed, 692 insertions(+), 10 deletions(-) create mode 100644 app/utils/honeypot.server.ts create mode 100644 other/patches/remix-utils+7.0.0.patch diff --git a/.env.example b/.env.example index d117323c2..d37843908 100644 --- a/.env.example +++ b/.env.example @@ -3,6 +3,7 @@ DATABASE_PATH="./prisma/data.db" DATABASE_URL="file:./data.db?connection_limit=1" CACHE_DATABASE_PATH="./other/cache.db" SESSION_SECRET="super-duper-s3cret" +HONEYPOT_SECRET="secret-honey" INTERNAL_COMMAND_TOKEN="some-made-up-token" RESEND_API_KEY="re_blAh_blaHBlaHblahBLAhBlAh" SENTRY_DSN="your-dsn" diff --git a/app/routes/_auth+/signup.tsx b/app/routes/_auth+/signup.tsx index 06c5fe390..930af28ed 100644 --- a/app/routes/_auth+/signup.tsx +++ b/app/routes/_auth+/signup.tsx @@ -7,7 +7,12 @@ import { type DataFunctionArgs, type MetaFunction, } from '@remix-run/node' -import { Form, useActionData, useSearchParams } from '@remix-run/react' +import { + Form, + useActionData, + useLoaderData, + useSearchParams, +} from '@remix-run/react' import { z } from 'zod' import { GeneralErrorBoundary } from '#app/components/error-boundary.tsx' import { ErrorList, Field } from '#app/components/forms.tsx' @@ -21,13 +26,20 @@ import { sendEmail } from '#app/utils/email.server.ts' import { useIsPending } from '#app/utils/misc.tsx' import { EmailSchema } from '#app/utils/user-validation.ts' import { prepareVerification } from './verify.tsx' +import { honeypot } from '#app/utils/honeypot.server.ts' +import { HoneypotInputs } from 'remix-utils' const SignupSchema = z.object({ email: EmailSchema, }) +export async function loader() { + return json({ honepotProps: honeypot.getInputProps() }) +} + export async function action({ request }: DataFunctionArgs) { const formData = await request.formData() + honeypot.check(formData) const submission = await parse(formData, { schema: SignupSchema.superRefine(async (data, ctx) => { const existingUser = await prisma.user.findUnique({ @@ -105,6 +117,7 @@ export const meta: MetaFunction = () => { } export default function SignupRoute() { + const data = useLoaderData() const actionData = useActionData() const isPending = useIsPending() const [searchParams] = useSearchParams() @@ -140,6 +153,7 @@ export default function SignupRoute() { errors={fields.email.errors} /> + + import type { AppData } from "@remix-run/server-runtime"; +-import { HandleConventionArguments } from "./handle-conventions"; ++import { HandleConventionArguments } from "./handle-conventions.js"; + type ReferrerPolicy = + | "no-referrer-when-downgrade" + | "no-referrer" +diff --git a/node_modules/remix-utils/build/react/honeypot-inputs.d.ts b/node_modules/remix-utils/build/react/honeypot-inputs.d.ts +index 60056da..0c18cb6 100644 +--- a/node_modules/remix-utils/build/react/honeypot-inputs.d.ts ++++ b/node_modules/remix-utils/build/react/honeypot-inputs.d.ts +@@ -1,2 +1,2 @@ + /// +-export declare function HoneypotInputs(): JSX.Element; ++export declare function HoneypotInputs(props: {nameFieldName: string, validFromFieldName: string, encryptedValidFrom: string}): JSX.Element; +diff --git a/node_modules/remix-utils/build/react/honeypot-inputs.js b/node_modules/remix-utils/build/react/honeypot-inputs.js +index a42c3b8..8234570 100644 +--- a/node_modules/remix-utils/build/react/honeypot-inputs.js ++++ b/node_modules/remix-utils/build/react/honeypot-inputs.js +@@ -1,38 +1,23 @@ + import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +-import { useRouteLoaderData } from "@remix-run/react"; +-export function HoneypotInputs() { +- let rootLoaderData = useRouteLoaderData("root"); +- if (!rootLoaderData) throw new Error("Missing loader data from root"); +- if (!rootLoaderData.nameFieldName) { +- throw new Error("Missing Honeypot's nameFieldName on root loader data"); +- } +- if (!rootLoaderData.validFromFieldName) { +- throw new Error( +- "Missing Honeypot's validFromFieldName on root loader data", +- ); +- } +- if (!rootLoaderData.encryptedValidFrom) { +- throw new Error( +- "Missing Honeypot's encryptedValidFrom on root loader data", +- ); +- } ++export function HoneypotInputs({nameFieldName, validFromFieldName, encryptedValidFrom}) { + return _jsxs("div", { +- id: `${rootLoaderData.nameFieldName}_wrap`, ++ id: `${nameFieldName}_wrap`, + style: { display: "none" }, + "aria-hidden": "true", + children: [ + _jsx("input", { +- id: rootLoaderData.nameFieldName, +- name: rootLoaderData.nameFieldName, ++ id: nameFieldName, ++ name: nameFieldName, + type: "text", + defaultValue: "", + autoComplete: "off", + tabIndex: -1, + }), + _jsx("input", { +- name: rootLoaderData.validFromFieldName, ++ name: validFromFieldName, + type: "text", +- value: rootLoaderData.encryptedValidFrom, ++ value: encryptedValidFrom, ++ readOnly: true, + autoComplete: "off", + tabIndex: -1, + }), +diff --git a/node_modules/remix-utils/build/react/server-only.js b/node_modules/remix-utils/build/react/server-only.js +index de8dfa7..35dd0a1 100644 +--- a/node_modules/remix-utils/build/react/server-only.js ++++ b/node_modules/remix-utils/build/react/server-only.js +@@ -1,5 +1,5 @@ + import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; +-import { useHydrated } from "./use-hydrated"; ++import { useHydrated } from "./use-hydrated.js"; + /** + * Render the children only before the JS has loaded client-side. Use an + * optional fallback component for once the JS has loaded. +diff --git a/node_modules/remix-utils/build/react/use-locales.d.ts b/node_modules/remix-utils/build/react/use-locales.d.ts +index 166536a..c6ba7d1 100644 +--- a/node_modules/remix-utils/build/react/use-locales.d.ts ++++ b/node_modules/remix-utils/build/react/use-locales.d.ts +@@ -1,4 +1,4 @@ +-import type { Locales } from "../server/get-client-locales"; ++import type { Locales } from "../server/get-client-locales.js"; + /** + * Get the locales returned by the loader of the root route. + * +diff --git a/node_modules/remix-utils/build/server.d.ts b/node_modules/remix-utils/build/server.d.ts +index ac70b60..db11359 100644 +--- a/node_modules/remix-utils/build/server.d.ts ++++ b/node_modules/remix-utils/build/server.d.ts +@@ -1,17 +1,17 @@ +-export * from "./server/cors"; +-export * from "./server/csrf"; +-export * from "./server/event-stream"; +-export * from "./server/get-client-ip-address"; +-export * from "./server/get-client-locales"; +-export * from "./server/honeypot"; +-export * from "./server/is-prefetch"; +-export * from "./server/named-action"; +-export * from "./server/parse-accept-header"; +-export * from "./server/preload-route-assets"; +-export * from "./server/respond-to"; +-export * from "./server/json-hash"; +-export * from "./server/responses"; +-export * from "./server/rolling-cookie"; +-export * from "./server/safe-redirect"; +-export * from "./server/typed-cookie"; +-export * from "./server/typed-session"; ++export * from "./server/cors.js"; ++export * from "./server/csrf.js"; ++export * from "./server/event-stream.js"; ++export * from "./server/get-client-ip-address.js"; ++export * from "./server/get-client-locales.js"; ++export * from "./server/honeypot.js"; ++export * from "./server/is-prefetch.js"; ++export * from "./server/named-action.js"; ++export * from "./server/parse-accept-header.js"; ++export * from "./server/preload-route-assets.js"; ++export * from "./server/respond-to.js"; ++export * from "./server/json-hash.js"; ++export * from "./server/responses.js"; ++export * from "./server/rolling-cookie.js"; ++export * from "./server/safe-redirect.js"; ++export * from "./server/typed-cookie.js"; ++export * from "./server/typed-session.js"; +diff --git a/node_modules/remix-utils/build/server.js b/node_modules/remix-utils/build/server.js +index ac70b60..db11359 100644 +--- a/node_modules/remix-utils/build/server.js ++++ b/node_modules/remix-utils/build/server.js +@@ -1,17 +1,17 @@ +-export * from "./server/cors"; +-export * from "./server/csrf"; +-export * from "./server/event-stream"; +-export * from "./server/get-client-ip-address"; +-export * from "./server/get-client-locales"; +-export * from "./server/honeypot"; +-export * from "./server/is-prefetch"; +-export * from "./server/named-action"; +-export * from "./server/parse-accept-header"; +-export * from "./server/preload-route-assets"; +-export * from "./server/respond-to"; +-export * from "./server/json-hash"; +-export * from "./server/responses"; +-export * from "./server/rolling-cookie"; +-export * from "./server/safe-redirect"; +-export * from "./server/typed-cookie"; +-export * from "./server/typed-session"; ++export * from "./server/cors.js"; ++export * from "./server/csrf.js"; ++export * from "./server/event-stream.js"; ++export * from "./server/get-client-ip-address.js"; ++export * from "./server/get-client-locales.js"; ++export * from "./server/honeypot.js"; ++export * from "./server/is-prefetch.js"; ++export * from "./server/named-action.js"; ++export * from "./server/parse-accept-header.js"; ++export * from "./server/preload-route-assets.js"; ++export * from "./server/respond-to.js"; ++export * from "./server/json-hash.js"; ++export * from "./server/responses.js"; ++export * from "./server/rolling-cookie.js"; ++export * from "./server/safe-redirect.js"; ++export * from "./server/typed-cookie.js"; ++export * from "./server/typed-session.js"; +diff --git a/node_modules/remix-utils/build/server/get-client-ip-address.js b/node_modules/remix-utils/build/server/get-client-ip-address.js +index 72dfc3e..0dd8d89 100644 +--- a/node_modules/remix-utils/build/server/get-client-ip-address.js ++++ b/node_modules/remix-utils/build/server/get-client-ip-address.js +@@ -1,5 +1,5 @@ + import isIP from "is-ip"; +-import { getHeaders } from "./get-headers"; ++import { getHeaders } from "./get-headers.js"; + /** + * This is the list of headers, in order of preference, that will be used to + * determine the client's IP address. +diff --git a/node_modules/remix-utils/build/server/get-client-locales.js b/node_modules/remix-utils/build/server/get-client-locales.js +index 0f26b08..e6e0d8f 100644 +--- a/node_modules/remix-utils/build/server/get-client-locales.js ++++ b/node_modules/remix-utils/build/server/get-client-locales.js +@@ -1,5 +1,5 @@ + import { parseAcceptLanguage } from "intl-parse-accept-language"; +-import { getHeaders } from "./get-headers"; ++import { getHeaders } from "./get-headers.js"; + export function getClientLocales(requestOrHeaders) { + let headers = getHeaders(requestOrHeaders); + let acceptLanguage = headers.get("Accept-Language"); +diff --git a/node_modules/remix-utils/build/server/honeypot.d.ts b/node_modules/remix-utils/build/server/honeypot.d.ts +index 0032819..aa8f10e 100644 +--- a/node_modules/remix-utils/build/server/honeypot.d.ts ++++ b/node_modules/remix-utils/build/server/honeypot.d.ts +@@ -7,19 +7,16 @@ export interface HonetpotConfig { + randomizeNameFieldName?: boolean; + nameFieldName?: string; + validFromFieldName?: string; +- validFromTimestamp?: number; + encryptionSeed?: string; + } +-export declare class SpamError extends Error {} + export declare class Honeypot { + protected config: HonetpotConfig; + private generatedEncryptionSeed; + constructor(config?: HonetpotConfig); +- getInputProps(): HoneypotInputProps; ++ getInputProps(config?: {validFromTimestamp?: Date}): HoneypotInputProps; + check(formData: FormData): void; + protected get nameFieldName(): string; + protected get validFromFieldName(): string; +- protected get validFromTimestamp(): number; + protected get encryptionSeed(): string; + protected getRandomizedNameFieldName( + nameFieldName: string, +diff --git a/node_modules/remix-utils/build/server/honeypot.js b/node_modules/remix-utils/build/server/honeypot.js +index 65586c9..37bb1c3 100644 +--- a/node_modules/remix-utils/build/server/honeypot.js ++++ b/node_modules/remix-utils/build/server/honeypot.js +@@ -1,15 +1,15 @@ + import CryptoJS from "crypto-js"; +-export class SpamError extends Error {} ++const getErrorResponse = () => new Response("Error submitting the form", {status: 400}); + export class Honeypot { + constructor(config = {}) { + this.config = config; + this.generatedEncryptionSeed = this.randomValue(); + } +- getInputProps() { ++ getInputProps({validFromTimestamp = new Date()} = {}) { + return { + nameFieldName: this.nameFieldName, + validFromFieldName: this.validFromFieldName, +- encryptedValidFrom: this.encrypt(this.validFromTimestamp.toString()), ++ encryptedValidFrom: this.encrypt(validFromTimestamp.toString()), + }; + } + check(formData) { +@@ -17,27 +17,27 @@ export class Honeypot { + let nameFieldName = + (_a = this.config.nameFieldName) !== null && _a !== void 0 + ? _a +- : "honeypot"; ++ : "name__confirm"; + if (this.config.randomizeNameFieldName) { + let actualName = this.getRandomizedNameFieldName(nameFieldName, formData); + if (actualName) nameFieldName = actualName; + } + if (!this.shouldCheckHoneypot(formData, nameFieldName)) return; + if (!formData.has(nameFieldName)) { +- throw new SpamError("Missing honeypot input"); ++ throw getErrorResponse() + } + let honeypotValue = formData.get(nameFieldName); +- if (honeypotValue !== "") throw new SpamError("Honeypot input not empty"); ++ if (honeypotValue !== "") throw getErrorResponse() + if (!this.config.validFromTimestamp) return; + let validFrom = formData.get(this.validFromFieldName); +- if (!validFrom) throw new SpamError("Missing honeypot valid from input"); ++ if (!validFrom) throw getErrorResponse() + let time = this.decrypt(validFrom); +- if (!time) throw new SpamError("Invalid honeypot valid from input"); ++ if (!time) throw getErrorResponse() + if (!this.isValidTimeStamp(Number(time))) { +- throw new SpamError("Invalid honeypot valid from input"); ++ throw getErrorResponse() + } + if (this.isFuture(Number(time))) { +- throw new SpamError("Honeypot valid from is in future"); ++ throw getErrorResponse() + } + } + get nameFieldName() { +@@ -45,7 +45,7 @@ export class Honeypot { + let fieldName = + (_a = this.config.nameFieldName) !== null && _a !== void 0 + ? _a +- : "honeypot"; ++ : "name__confirm"; + if (!this.config.randomizeNameFieldName) return fieldName; + return `${fieldName}_${this.randomValue()}`; + } +@@ -53,13 +53,7 @@ export class Honeypot { + var _a; + return (_a = this.config.validFromFieldName) !== null && _a !== void 0 + ? _a +- : "honeypot_from"; +- } +- get validFromTimestamp() { +- var _a; +- return (_a = this.config.validFromTimestamp) !== null && _a !== void 0 +- ? _a +- : Date.now(); ++ : "from__confirm"; + } + get encryptionSeed() { + var _a; +diff --git a/node_modules/remix-utils/build/server/is-prefetch.js b/node_modules/remix-utils/build/server/is-prefetch.js +index fe0d820..93362ff 100644 +--- a/node_modules/remix-utils/build/server/is-prefetch.js ++++ b/node_modules/remix-utils/build/server/is-prefetch.js +@@ -1,4 +1,4 @@ +-import { getHeaders } from "./get-headers"; ++import { getHeaders } from "./get-headers.js"; + export function isPrefetch(requestOrHeaders) { + let headers = getHeaders(requestOrHeaders); + let purpose = +diff --git a/node_modules/remix-utils/build/server/respond-to.js b/node_modules/remix-utils/build/server/respond-to.js +index bc8fc5e..296f90a 100644 +--- a/node_modules/remix-utils/build/server/respond-to.js ++++ b/node_modules/remix-utils/build/server/respond-to.js +@@ -1,5 +1,5 @@ +-import { getHeaders } from "./get-headers"; +-import { parseAcceptHeader } from "./parse-accept-header"; ++import { getHeaders } from "./get-headers.js"; ++import { parseAcceptHeader } from "./parse-accept-header.js"; + export function respondTo(requestOrHeaders, handlers) { + let headers = getHeaders(requestOrHeaders); + let accept = headers.get("accept"); +diff --git a/node_modules/remix-utils/build/server/rolling-cookie.d.ts b/node_modules/remix-utils/build/server/rolling-cookie.d.ts +index 8bbc7e1..5e3b9f8 100644 +--- a/node_modules/remix-utils/build/server/rolling-cookie.d.ts ++++ b/node_modules/remix-utils/build/server/rolling-cookie.d.ts +@@ -1,6 +1,6 @@ + import type { Cookie } from "@remix-run/server-runtime"; + import { z } from "zod"; +-import { TypedCookie } from "./typed-cookie"; ++import { TypedCookie } from "./typed-cookie.js"; + export declare function rollingCookie( + cookie: Cookie | TypedCookie, + request: Request, diff --git a/package-lock.json b/package-lock.json index 51fad470b..17d47d418 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,6 +52,7 @@ "litefs-js": "^1.1.2", "lru-cache": "^10.0.1", "morgan": "^1.10.0", + "patch-package": "^8.0.0", "prisma": "^5.1.1", "qrcode": "^1.5.3", "react": "^18.2.0", @@ -6537,6 +6538,11 @@ "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz", "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==" }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, "node_modules/@zxing/text-encoding": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", @@ -6934,6 +6940,14 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.15", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz", @@ -7503,6 +7517,20 @@ "node": ">=10" } }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/class-variance-authority": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", @@ -10064,6 +10092,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -10502,8 +10538,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -10561,7 +10596,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -11864,6 +11898,17 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "dependencies": { + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -11892,7 +11937,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -11900,6 +11944,14 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", @@ -11926,6 +11978,14 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -14219,6 +14279,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -14312,7 +14387,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -14474,6 +14548,152 @@ "node": ">= 0.8" } }, + "node_modules/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/patch-package/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -17334,7 +17554,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -17733,7 +17952,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -18415,7 +18633,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, "engines": { "node": ">= 10.0.0" } diff --git a/package.json b/package.json index 5b46a46b5..608fe9008 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "#*": "./*" }, "scripts": { + "postinstall": "patch-package --patch-dir other/patches", "build": "run-s build:*", "build:icons": "tsx ./other/build-icons.ts", "build:remix": "remix build --sourcemap", @@ -85,14 +86,15 @@ "litefs-js": "^1.1.2", "lru-cache": "^10.0.1", "morgan": "^1.10.0", + "patch-package": "^8.0.0", "prisma": "^5.1.1", "qrcode": "^1.5.3", "react": "^18.2.0", "react-dom": "^18.2.0", "remix-auth": "^3.5.1", "remix-auth-form": "^1.3.0", - "remix-development-tools": "^2.1.1", "remix-auth-github": "^1.6.0", + "remix-development-tools": "^2.1.1", "remix-utils": "^7.0.0", "set-cookie-parser": "^2.6.0", "sonner": "^0.6.2", From 0c783525459ac56626b2d65e93d308561aac4b6b Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Thu, 24 Aug 2023 17:24:07 -0600 Subject: [PATCH 3/7] reduced setup for a form --- app/components/honeypot.tsx | 9 +++++++++ app/root.tsx | 2 ++ app/routes/_auth+/signup.tsx | 8 ++------ 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 app/components/honeypot.tsx diff --git a/app/components/honeypot.tsx b/app/components/honeypot.tsx new file mode 100644 index 000000000..7967cb83e --- /dev/null +++ b/app/components/honeypot.tsx @@ -0,0 +1,9 @@ +import { useRouteLoaderData } from '@remix-run/react' +import { HoneypotInputs } from 'remix-utils' +import { loader as rootLoader } from '#app/root.tsx' + +export function HoneypotFields() { + const data = useRouteLoaderData('root') + if (!data) return null + return +} diff --git a/app/root.tsx b/app/root.tsx index e0d185091..527ae0a1f 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -59,6 +59,7 @@ import { type Theme, setTheme, getTheme } from './utils/theme.server.ts' import { makeTimings, time } from './utils/timing.server.ts' import { getToast } from './utils/toast.server.ts' import { useOptionalUser, useUser } from './utils/user.ts' +import { honeypot } from './utils/honeypot.server.ts' const RemixDevTools = process.env.NODE_ENV === 'development' @@ -151,6 +152,7 @@ export async function loader({ request }: DataFunctionArgs) { theme: getTheme(request), }, }, + honeypot: honeypot.getInputProps(), ENV: getEnv(), toast, confettiId, diff --git a/app/routes/_auth+/signup.tsx b/app/routes/_auth+/signup.tsx index 930af28ed..27648d8cf 100644 --- a/app/routes/_auth+/signup.tsx +++ b/app/routes/_auth+/signup.tsx @@ -28,15 +28,12 @@ import { EmailSchema } from '#app/utils/user-validation.ts' import { prepareVerification } from './verify.tsx' import { honeypot } from '#app/utils/honeypot.server.ts' import { HoneypotInputs } from 'remix-utils' +import { HoneypotFields } from '#app/components/honeypot.tsx' const SignupSchema = z.object({ email: EmailSchema, }) -export async function loader() { - return json({ honepotProps: honeypot.getInputProps() }) -} - export async function action({ request }: DataFunctionArgs) { const formData = await request.formData() honeypot.check(formData) @@ -117,7 +114,6 @@ export const meta: MetaFunction = () => { } export default function SignupRoute() { - const data = useLoaderData() const actionData = useActionData() const isPending = useIsPending() const [searchParams] = useSearchParams() @@ -153,7 +149,7 @@ export default function SignupRoute() { errors={fields.email.errors} /> - + Date: Thu, 24 Aug 2023 20:20:25 -0600 Subject: [PATCH 4/7] improve honeypot impl --- app/components/honeypot.tsx | 9 -------- app/root.tsx | 17 ++++++++++++--- app/routes/_auth+/signup.tsx | 10 ++------- other/patches/remix-utils+7.0.0.patch | 31 ++++++++++++++++++++------- 4 files changed, 39 insertions(+), 28 deletions(-) delete mode 100644 app/components/honeypot.tsx diff --git a/app/components/honeypot.tsx b/app/components/honeypot.tsx deleted file mode 100644 index 7967cb83e..000000000 --- a/app/components/honeypot.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { useRouteLoaderData } from '@remix-run/react' -import { HoneypotInputs } from 'remix-utils' -import { loader as rootLoader } from '#app/root.tsx' - -export function HoneypotFields() { - const data = useRouteLoaderData('root') - if (!data) return null - return -} diff --git a/app/root.tsx b/app/root.tsx index 527ae0a1f..89f75aba8 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -25,6 +25,7 @@ import { } from '@remix-run/react' import { withSentry } from '@sentry/remix' import { Suspense, lazy, useRef } from 'react' +import { HoneypotProvider } from 'remix-utils' import { z } from 'zod' import { Confetti } from './components/confetti.tsx' import { GeneralErrorBoundary } from './components/error-boundary.tsx' @@ -47,6 +48,7 @@ import { ClientHintCheck, getHints, useHints } from './utils/client-hints.tsx' import { getConfetti } from './utils/confetti.server.ts' import { prisma } from './utils/db.server.ts' import { getEnv } from './utils/env.server.ts' +import { honeypot } from './utils/honeypot.server.ts' import { combineHeaders, getDomainUrl, @@ -55,11 +57,10 @@ import { } from './utils/misc.tsx' import { useNonce } from './utils/nonce-provider.ts' import { useRequestInfo } from './utils/request-info.ts' -import { type Theme, setTheme, getTheme } from './utils/theme.server.ts' +import { getTheme, setTheme, type Theme } from './utils/theme.server.ts' import { makeTimings, time } from './utils/timing.server.ts' import { getToast } from './utils/toast.server.ts' import { useOptionalUser, useUser } from './utils/user.ts' -import { honeypot } from './utils/honeypot.server.ts' const RemixDevTools = process.env.NODE_ENV === 'development' @@ -294,7 +295,17 @@ function App() { ) } -export default withSentry(App) + +function AppWithProviders() { + const data = useLoaderData() + return ( + + + + ) +} + +export default withSentry(AppWithProviders) function UserDropdown() { const user = useUser() diff --git a/app/routes/_auth+/signup.tsx b/app/routes/_auth+/signup.tsx index 27648d8cf..0b00fb275 100644 --- a/app/routes/_auth+/signup.tsx +++ b/app/routes/_auth+/signup.tsx @@ -7,12 +7,7 @@ import { type DataFunctionArgs, type MetaFunction, } from '@remix-run/node' -import { - Form, - useActionData, - useLoaderData, - useSearchParams, -} from '@remix-run/react' +import { Form, useActionData, useSearchParams } from '@remix-run/react' import { z } from 'zod' import { GeneralErrorBoundary } from '#app/components/error-boundary.tsx' import { ErrorList, Field } from '#app/components/forms.tsx' @@ -28,7 +23,6 @@ import { EmailSchema } from '#app/utils/user-validation.ts' import { prepareVerification } from './verify.tsx' import { honeypot } from '#app/utils/honeypot.server.ts' import { HoneypotInputs } from 'remix-utils' -import { HoneypotFields } from '#app/components/honeypot.tsx' const SignupSchema = z.object({ email: EmailSchema, @@ -149,7 +143,7 @@ export default function SignupRoute() { errors={fields.email.errors} /> - + --export declare function HoneypotInputs(): JSX.Element; -+export declare function HoneypotInputs(props: {nameFieldName: string, validFromFieldName: string, encryptedValidFrom: string}): JSX.Element; + export declare function HoneypotInputs(): JSX.Element; ++export declare function HoneypotProvider(props: {children: React.ReactNode, nameFieldName: string, validFromFieldName: string, encryptedValidFrom: string}): JSX.Element; diff --git a/node_modules/remix-utils/build/react/honeypot-inputs.js b/node_modules/remix-utils/build/react/honeypot-inputs.js -index a42c3b8..8234570 100644 +index a42c3b8..fa88785 100644 --- a/node_modules/remix-utils/build/react/honeypot-inputs.js +++ b/node_modules/remix-utils/build/react/honeypot-inputs.js -@@ -1,38 +1,23 @@ +@@ -1,41 +1,39 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; -import { useRouteLoaderData } from "@remix-run/react"; --export function HoneypotInputs() { ++import { createContext, useContext } from "react"; ++const HoneyPotContext = createContext(null); + export function HoneypotInputs() { - let rootLoaderData = useRouteLoaderData("root"); - if (!rootLoaderData) throw new Error("Missing loader data from root"); - if (!rootLoaderData.nameFieldName) { @@ -151,7 +153,7 @@ index a42c3b8..8234570 100644 - "Missing Honeypot's encryptedValidFrom on root loader data", - ); - } -+export function HoneypotInputs({nameFieldName, validFromFieldName, encryptedValidFrom}) { ++ const {nameFieldName, validFromFieldName, encryptedValidFrom} = useContext(HoneyPotContext); return _jsxs("div", { - id: `${rootLoaderData.nameFieldName}_wrap`, + id: `${nameFieldName}_wrap`, @@ -178,6 +180,19 @@ index a42c3b8..8234570 100644 autoComplete: "off", tabIndex: -1, }), + ], + }); + } ++export function HoneypotProvider({children, nameFieldName, validFromFieldName, encryptedValidFrom}) { ++ return _jsx(HoneyPotContext.Provider, { ++ value: { ++ nameFieldName, ++ validFromFieldName, ++ encryptedValidFrom, ++ }, ++ children: children, ++ }); ++} diff --git a/node_modules/remix-utils/build/react/server-only.js b/node_modules/remix-utils/build/react/server-only.js index de8dfa7..35dd0a1 100644 --- a/node_modules/remix-utils/build/react/server-only.js From 878eaf261406d507bce7d04362e787c9992504d8 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Thu, 24 Aug 2023 20:29:40 -0600 Subject: [PATCH 5/7] implement csrf --- .env.example | 1 + app/root.tsx | 13 ++++++++++--- app/routes/_auth+/signup.tsx | 29 ++++++++++++++++------------- app/utils/csrf.server.ts | 27 +++++++++++++++++++++++++++ app/utils/env.server.ts | 1 + 5 files changed, 55 insertions(+), 16 deletions(-) create mode 100644 app/utils/csrf.server.ts diff --git a/.env.example b/.env.example index d37843908..29face9cd 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,7 @@ DATABASE_URL="file:./data.db?connection_limit=1" CACHE_DATABASE_PATH="./other/cache.db" SESSION_SECRET="super-duper-s3cret" HONEYPOT_SECRET="secret-honey" +CSRF_SECRET="secret-csrf" INTERNAL_COMMAND_TOKEN="some-made-up-token" RESEND_API_KEY="re_blAh_blaHBlaHblahBLAhBlAh" SENTRY_DSN="your-dsn" diff --git a/app/root.tsx b/app/root.tsx index 89f75aba8..57fe3a803 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -61,6 +61,8 @@ import { getTheme, setTheme, type Theme } from './utils/theme.server.ts' import { makeTimings, time } from './utils/timing.server.ts' import { getToast } from './utils/toast.server.ts' import { useOptionalUser, useUser } from './utils/user.ts' +import { csrf } from './utils/csrf.server.ts' +import { AuthenticityTokenProvider } from 'remix-utils' const RemixDevTools = process.env.NODE_ENV === 'development' @@ -141,6 +143,7 @@ export async function loader({ request }: DataFunctionArgs) { } const { toast, headers: toastHeaders } = await getToast(request) const { confettiId, headers: confettiHeaders } = getConfetti(request) + const [csrfToken, csrfCookieHeader] = await csrf.commitToken() return json( { @@ -157,12 +160,14 @@ export async function loader({ request }: DataFunctionArgs) { ENV: getEnv(), toast, confettiId, + csrfToken, }, { headers: combineHeaders( { 'Server-Timing': timings.toString() }, toastHeaders, confettiHeaders, + { 'set-cookie': csrfCookieHeader }, ), }, ) @@ -299,9 +304,11 @@ function App() { function AppWithProviders() { const data = useLoaderData() return ( - - - + + + + + ) } diff --git a/app/routes/_auth+/signup.tsx b/app/routes/_auth+/signup.tsx index 0b00fb275..f974e3508 100644 --- a/app/routes/_auth+/signup.tsx +++ b/app/routes/_auth+/signup.tsx @@ -1,14 +1,3 @@ -import { conform, useForm } from '@conform-to/react' -import { getFieldsetConstraint, parse } from '@conform-to/zod' -import * as E from '@react-email/components' -import { - json, - redirect, - type DataFunctionArgs, - type MetaFunction, -} from '@remix-run/node' -import { Form, useActionData, useSearchParams } from '@remix-run/react' -import { z } from 'zod' import { GeneralErrorBoundary } from '#app/components/error-boundary.tsx' import { ErrorList, Field } from '#app/components/forms.tsx' import { StatusButton } from '#app/components/ui/status-button.tsx' @@ -18,11 +7,23 @@ import { } from '#app/utils/connections.tsx' import { prisma } from '#app/utils/db.server.ts' import { sendEmail } from '#app/utils/email.server.ts' +import { honeypot } from '#app/utils/honeypot.server.ts' import { useIsPending } from '#app/utils/misc.tsx' import { EmailSchema } from '#app/utils/user-validation.ts' +import { conform, useForm } from '@conform-to/react' +import { getFieldsetConstraint, parse } from '@conform-to/zod' +import * as E from '@react-email/components' +import { + json, + redirect, + type DataFunctionArgs, + type MetaFunction, +} from '@remix-run/node' +import { Form, useActionData, useSearchParams } from '@remix-run/react' +import { AuthenticityTokenInput, HoneypotInputs } from 'remix-utils' +import { z } from 'zod' import { prepareVerification } from './verify.tsx' -import { honeypot } from '#app/utils/honeypot.server.ts' -import { HoneypotInputs } from 'remix-utils' +import { validateCSRF } from '#app/utils/csrf.server.ts' const SignupSchema = z.object({ email: EmailSchema, @@ -31,6 +32,7 @@ const SignupSchema = z.object({ export async function action({ request }: DataFunctionArgs) { const formData = await request.formData() honeypot.check(formData) + await validateCSRF(formData, request.headers) const submission = await parse(formData, { schema: SignupSchema.superRefine(async (data, ctx) => { const existingUser = await prisma.user.findUnique({ @@ -143,6 +145,7 @@ export default function SignupRoute() { errors={fields.email.errors} /> + Date: Thu, 24 Aug 2023 20:40:21 -0600 Subject: [PATCH 6/7] finish honeypot implementation --- app/routes/_auth+/signup.tsx | 6 +-- app/utils/honeypot.server.ts | 13 +++++- other/patches/remix-utils+7.0.0.patch | 57 ++++++++------------------- 3 files changed, 32 insertions(+), 44 deletions(-) diff --git a/app/routes/_auth+/signup.tsx b/app/routes/_auth+/signup.tsx index f974e3508..37ba61b99 100644 --- a/app/routes/_auth+/signup.tsx +++ b/app/routes/_auth+/signup.tsx @@ -5,9 +5,10 @@ import { ProviderConnectionForm, providerNames, } from '#app/utils/connections.tsx' +import { validateCSRF } from '#app/utils/csrf.server.ts' import { prisma } from '#app/utils/db.server.ts' import { sendEmail } from '#app/utils/email.server.ts' -import { honeypot } from '#app/utils/honeypot.server.ts' +import { checkHoneypot } from '#app/utils/honeypot.server.ts' import { useIsPending } from '#app/utils/misc.tsx' import { EmailSchema } from '#app/utils/user-validation.ts' import { conform, useForm } from '@conform-to/react' @@ -23,7 +24,6 @@ import { Form, useActionData, useSearchParams } from '@remix-run/react' import { AuthenticityTokenInput, HoneypotInputs } from 'remix-utils' import { z } from 'zod' import { prepareVerification } from './verify.tsx' -import { validateCSRF } from '#app/utils/csrf.server.ts' const SignupSchema = z.object({ email: EmailSchema, @@ -31,7 +31,7 @@ const SignupSchema = z.object({ export async function action({ request }: DataFunctionArgs) { const formData = await request.formData() - honeypot.check(formData) + checkHoneypot(formData) await validateCSRF(formData, request.headers) const submission = await parse(formData, { schema: SignupSchema.superRefine(async (data, ctx) => { diff --git a/app/utils/honeypot.server.ts b/app/utils/honeypot.server.ts index cb87cbfa8..92d070e47 100644 --- a/app/utils/honeypot.server.ts +++ b/app/utils/honeypot.server.ts @@ -1,5 +1,16 @@ -import { Honeypot } from 'remix-utils' +import { Honeypot, SpamError } from 'remix-utils' export const honeypot = new Honeypot({ encryptionSeed: process.env.HONEYPOT_SECRET, }) + +export function checkHoneypot(formData: FormData) { + try { + honeypot.check(formData) + } catch (error) { + if (error instanceof SpamError) { + throw new Response('Form not submitted properly', { status: 400 }) + } + throw error + } +} diff --git a/other/patches/remix-utils+7.0.0.patch b/other/patches/remix-utils+7.0.0.patch index 01e84057f..f895018e4 100644 --- a/other/patches/remix-utils+7.0.0.patch +++ b/other/patches/remix-utils+7.0.0.patch @@ -129,10 +129,10 @@ index 60056da..2ebb235 100644 export declare function HoneypotInputs(): JSX.Element; +export declare function HoneypotProvider(props: {children: React.ReactNode, nameFieldName: string, validFromFieldName: string, encryptedValidFrom: string}): JSX.Element; diff --git a/node_modules/remix-utils/build/react/honeypot-inputs.js b/node_modules/remix-utils/build/react/honeypot-inputs.js -index a42c3b8..fa88785 100644 +index a42c3b8..fb47966 100644 --- a/node_modules/remix-utils/build/react/honeypot-inputs.js +++ b/node_modules/remix-utils/build/react/honeypot-inputs.js -@@ -1,41 +1,39 @@ +@@ -1,41 +1,47 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; -import { useRouteLoaderData } from "@remix-run/react"; +import { createContext, useContext } from "react"; @@ -160,6 +160,10 @@ index a42c3b8..fa88785 100644 style: { display: "none" }, "aria-hidden": "true", children: [ ++ _jsx("label", { ++ htmlFor: nameFieldName, ++ children: "Please leave this field blank", ++ }), _jsx("input", { - id: rootLoaderData.nameFieldName, - name: rootLoaderData.nameFieldName, @@ -170,6 +174,10 @@ index a42c3b8..fa88785 100644 autoComplete: "off", tabIndex: -1, }), ++ _jsx("label", { ++ htmlFor: validFromFieldName, ++ children: "Please leave this field blank", ++ }), _jsx("input", { - name: rootLoaderData.validFromFieldName, + name: validFromFieldName, @@ -315,18 +323,18 @@ index 0f26b08..e6e0d8f 100644 let headers = getHeaders(requestOrHeaders); let acceptLanguage = headers.get("Accept-Language"); diff --git a/node_modules/remix-utils/build/server/honeypot.d.ts b/node_modules/remix-utils/build/server/honeypot.d.ts -index 0032819..aa8f10e 100644 +index 0032819..3ea0268 100644 --- a/node_modules/remix-utils/build/server/honeypot.d.ts +++ b/node_modules/remix-utils/build/server/honeypot.d.ts -@@ -7,19 +7,16 @@ export interface HonetpotConfig { +@@ -7,7 +7,6 @@ export interface HonetpotConfig { randomizeNameFieldName?: boolean; nameFieldName?: string; validFromFieldName?: string; - validFromTimestamp?: number; encryptionSeed?: string; } --export declare class SpamError extends Error {} - export declare class Honeypot { + export declare class SpamError extends Error {} +@@ -15,11 +14,10 @@ export declare class Honeypot { protected config: HonetpotConfig; private generatedEncryptionSeed; constructor(config?: HonetpotConfig); @@ -340,15 +348,10 @@ index 0032819..aa8f10e 100644 protected getRandomizedNameFieldName( nameFieldName: string, diff --git a/node_modules/remix-utils/build/server/honeypot.js b/node_modules/remix-utils/build/server/honeypot.js -index 65586c9..37bb1c3 100644 +index 65586c9..fb77a74 100644 --- a/node_modules/remix-utils/build/server/honeypot.js +++ b/node_modules/remix-utils/build/server/honeypot.js -@@ -1,15 +1,15 @@ - import CryptoJS from "crypto-js"; --export class SpamError extends Error {} -+const getErrorResponse = () => new Response("Error submitting the form", {status: 400}); - export class Honeypot { - constructor(config = {}) { +@@ -5,11 +5,11 @@ export class Honeypot { this.config = config; this.generatedEncryptionSeed = this.randomValue(); } @@ -362,7 +365,7 @@ index 65586c9..37bb1c3 100644 }; } check(formData) { -@@ -17,27 +17,27 @@ export class Honeypot { +@@ -17,7 +17,7 @@ export class Honeypot { let nameFieldName = (_a = this.config.nameFieldName) !== null && _a !== void 0 ? _a @@ -371,32 +374,6 @@ index 65586c9..37bb1c3 100644 if (this.config.randomizeNameFieldName) { let actualName = this.getRandomizedNameFieldName(nameFieldName, formData); if (actualName) nameFieldName = actualName; - } - if (!this.shouldCheckHoneypot(formData, nameFieldName)) return; - if (!formData.has(nameFieldName)) { -- throw new SpamError("Missing honeypot input"); -+ throw getErrorResponse() - } - let honeypotValue = formData.get(nameFieldName); -- if (honeypotValue !== "") throw new SpamError("Honeypot input not empty"); -+ if (honeypotValue !== "") throw getErrorResponse() - if (!this.config.validFromTimestamp) return; - let validFrom = formData.get(this.validFromFieldName); -- if (!validFrom) throw new SpamError("Missing honeypot valid from input"); -+ if (!validFrom) throw getErrorResponse() - let time = this.decrypt(validFrom); -- if (!time) throw new SpamError("Invalid honeypot valid from input"); -+ if (!time) throw getErrorResponse() - if (!this.isValidTimeStamp(Number(time))) { -- throw new SpamError("Invalid honeypot valid from input"); -+ throw getErrorResponse() - } - if (this.isFuture(Number(time))) { -- throw new SpamError("Honeypot valid from is in future"); -+ throw getErrorResponse() - } - } - get nameFieldName() { @@ -45,7 +45,7 @@ export class Honeypot { let fieldName = (_a = this.config.nameFieldName) !== null && _a !== void 0 From aa0d552e63fea4de023f95147ea0c7cf9296a9f3 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Fri, 25 Aug 2023 11:51:07 -0600 Subject: [PATCH 7/7] upgrade to remix-utils@7.0.0-pre.1 --- other/patches/remix-utils+7.0.0-pre.1.patch | 166 ++++++++ other/patches/remix-utils+7.0.0.patch | 434 -------------------- package-lock.json | 9 +- package.json | 2 +- 4 files changed, 172 insertions(+), 439 deletions(-) create mode 100644 other/patches/remix-utils+7.0.0-pre.1.patch delete mode 100644 other/patches/remix-utils+7.0.0.patch diff --git a/other/patches/remix-utils+7.0.0-pre.1.patch b/other/patches/remix-utils+7.0.0-pre.1.patch new file mode 100644 index 000000000..c93e24cd3 --- /dev/null +++ b/other/patches/remix-utils+7.0.0-pre.1.patch @@ -0,0 +1,166 @@ +diff --git a/node_modules/remix-utils/build/react/honeypot-inputs.js b/node_modules/remix-utils/build/react/honeypot-inputs.js +index 9b2aabb..fb47966 100644 +--- a/node_modules/remix-utils/build/react/honeypot-inputs.js ++++ b/node_modules/remix-utils/build/react/honeypot-inputs.js +@@ -1,42 +1,47 @@ +-import * as React from "react"; +-import { useRouteLoaderData } from "@remix-run/react"; ++import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; ++import { createContext, useContext } from "react"; ++const HoneyPotContext = createContext(null); + export function HoneypotInputs() { +- let rootLoaderData = useRouteLoaderData("root"); +- if (!rootLoaderData) throw new Error("Missing loader data from root"); +- if (!rootLoaderData.nameFieldName) { +- throw new Error("Missing Honeypot's nameFieldName on root loader data"); +- } +- if (!rootLoaderData.validFromFieldName) { +- throw new Error( +- "Missing Honeypot's validFromFieldName on root loader data" +- ); +- } +- if (!rootLoaderData.encryptedValidFrom) { +- throw new Error( +- "Missing Honeypot's encryptedValidFrom on root loader data" +- ); +- } +- return React.createElement( +- "div", +- { +- id: `${rootLoaderData.nameFieldName}_wrap`, +- style: { display: "none" }, +- "aria-hidden": "true", ++ const {nameFieldName, validFromFieldName, encryptedValidFrom} = useContext(HoneyPotContext); ++ return _jsxs("div", { ++ id: `${nameFieldName}_wrap`, ++ style: { display: "none" }, ++ "aria-hidden": "true", ++ children: [ ++ _jsx("label", { ++ htmlFor: nameFieldName, ++ children: "Please leave this field blank", ++ }), ++ _jsx("input", { ++ id: nameFieldName, ++ name: nameFieldName, ++ type: "text", ++ defaultValue: "", ++ autoComplete: "off", ++ tabIndex: -1, ++ }), ++ _jsx("label", { ++ htmlFor: validFromFieldName, ++ children: "Please leave this field blank", ++ }), ++ _jsx("input", { ++ name: validFromFieldName, ++ type: "text", ++ value: encryptedValidFrom, ++ readOnly: true, ++ autoComplete: "off", ++ tabIndex: -1, ++ }), ++ ], ++ }); ++} ++export function HoneypotProvider({children, nameFieldName, validFromFieldName, encryptedValidFrom}) { ++ return _jsx(HoneyPotContext.Provider, { ++ value: { ++ nameFieldName, ++ validFromFieldName, ++ encryptedValidFrom, + }, +- React.createElement("input", { +- id: rootLoaderData.nameFieldName, +- name: rootLoaderData.nameFieldName, +- type: "text", +- defaultValue: "", +- autoComplete: "off", +- tabIndex: -1, +- }), +- React.createElement("input", { +- name: rootLoaderData.validFromFieldName, +- type: "text", +- value: rootLoaderData.encryptedValidFrom, +- autoComplete: "off", +- tabIndex: -1, +- }) +- ); ++ children: children, ++ }); + } +diff --git a/node_modules/remix-utils/build/server/honeypot.d.ts b/node_modules/remix-utils/build/server/honeypot.d.ts +index d1b2154..eb334b3 100644 +--- a/node_modules/remix-utils/build/server/honeypot.d.ts ++++ b/node_modules/remix-utils/build/server/honeypot.d.ts +@@ -7,7 +7,6 @@ export interface HonetpotConfig { + randomizeNameFieldName?: boolean; + nameFieldName?: string; + validFromFieldName?: string; +- validFromTimestamp?: number; + encryptionSeed?: string; + } + export declare class SpamError extends Error {} +@@ -15,11 +14,10 @@ export declare class Honeypot { + protected config: HonetpotConfig; + private generatedEncryptionSeed; + constructor(config?: HonetpotConfig); +- getInputProps(): HoneypotInputProps; ++ getInputProps(config?: {validFromTimestamp?: Date}): HoneypotInputProps; + check(formData: FormData): void; + protected get nameFieldName(): string; + protected get validFromFieldName(): string; +- protected get validFromTimestamp(): number; + protected get encryptionSeed(): string; + protected getRandomizedNameFieldName( + nameFieldName: string, +diff --git a/node_modules/remix-utils/build/server/honeypot.js b/node_modules/remix-utils/build/server/honeypot.js +index 1a876c5..a71adeb 100644 +--- a/node_modules/remix-utils/build/server/honeypot.js ++++ b/node_modules/remix-utils/build/server/honeypot.js +@@ -6,15 +6,15 @@ export class Honeypot { + constructor(config = {}) { + this.config = config; + } +- getInputProps() { ++ getInputProps({validFromTimestamp = new Date()} = {}) { + return { + nameFieldName: this.nameFieldName, + validFromFieldName: this.validFromFieldName, +- encryptedValidFrom: this.encrypt(this.validFromTimestamp.toString()), ++ encryptedValidFrom: this.encrypt(validFromTimestamp.toString()), + }; + } + check(formData) { +- let nameFieldName = this.config.nameFieldName ?? "honeypot"; ++ let nameFieldName = this.config.nameFieldName ?? "name__confirm"; + if (this.config.randomizeNameFieldName) { + let actualName = this.getRandomizedNameFieldName(nameFieldName, formData); + if (actualName) nameFieldName = actualName; +@@ -25,7 +25,7 @@ export class Honeypot { + } + let honeypotValue = formData.get(nameFieldName); + if (honeypotValue !== "") throw new SpamError("Honeypot input not empty"); +- if (!this.config.validFromTimestamp) return; ++ if (!this.validFromFieldName) return; + let validFrom = formData.get(this.validFromFieldName); + if (!validFrom) throw new SpamError("Missing honeypot valid from input"); + let time = this.decrypt(validFrom); +@@ -38,15 +38,12 @@ export class Honeypot { + } + } + get nameFieldName() { +- let fieldName = this.config.nameFieldName ?? "honeypot"; ++ let fieldName = this.config.nameFieldName ?? "name__confirm"; + if (!this.config.randomizeNameFieldName) return fieldName; + return `${fieldName}_${this.randomValue()}`; + } + get validFromFieldName() { +- return this.config.validFromFieldName ?? "honeypot_from"; +- } +- get validFromTimestamp() { +- return this.config.validFromTimestamp ?? Date.now(); ++ return this.config.validFromFieldName ?? "from__confirm"; + } + get encryptionSeed() { + return this.config.encryptionSeed ?? this.generatedEncryptionSeed; diff --git a/other/patches/remix-utils+7.0.0.patch b/other/patches/remix-utils+7.0.0.patch deleted file mode 100644 index f895018e4..000000000 --- a/other/patches/remix-utils+7.0.0.patch +++ /dev/null @@ -1,434 +0,0 @@ -diff --git a/node_modules/remix-utils/build/common.js b/node_modules/remix-utils/build/common.js -index 6c9c9e9..b24cd0e 100644 ---- a/node_modules/remix-utils/build/common.js -+++ b/node_modules/remix-utils/build/common.js -@@ -1 +1 @@ --export * from "./common/promise"; -+export * from "./common/promise.js"; -diff --git a/node_modules/remix-utils/build/index.d.ts b/node_modules/remix-utils/build/index.d.ts -index b667262..b98bf08 100644 ---- a/node_modules/remix-utils/build/index.d.ts -+++ b/node_modules/remix-utils/build/index.d.ts -@@ -1,3 +1,3 @@ --export * from "./common"; --export * from "./react"; --export * from "./server"; -+export * from "./common.js"; -+export * from "./react.js"; -+export * from "./server.js"; -diff --git a/node_modules/remix-utils/build/index.js b/node_modules/remix-utils/build/index.js -index b667262..b98bf08 100644 ---- a/node_modules/remix-utils/build/index.js -+++ b/node_modules/remix-utils/build/index.js -@@ -1,3 +1,3 @@ --export * from "./common"; --export * from "./react"; --export * from "./server"; -+export * from "./common.js"; -+export * from "./react.js"; -+export * from "./server.js"; -diff --git a/node_modules/remix-utils/build/react.d.ts b/node_modules/remix-utils/build/react.d.ts -index 250f9d8..8999764 100644 ---- a/node_modules/remix-utils/build/react.d.ts -+++ b/node_modules/remix-utils/build/react.d.ts -@@ -1,15 +1,15 @@ --export * from "./react/cache-assets"; --export * from "./react/client-only"; --export * from "./react/csrf"; --export * from "./react/external-scripts"; --export * from "./react/fetcher-type"; --export * from "./react/honeypot-inputs"; --export * from "./react/matches-type"; --export * from "./react/server-only"; --export * from "./react/use-debounced-fetcher"; --export * from "./react/use-delegated-anchors"; --export * from "./react/use-event-source"; --export * from "./react/use-global-pending-state"; --export * from "./react/use-hydrated"; --export * from "./react/use-locales"; --export * from "./react/use-should-hydrate"; -+export * from "./react/cache-assets.js"; -+export * from "./react/client-only.js"; -+export * from "./react/csrf.js"; -+export * from "./react/external-scripts.js"; -+export * from "./react/fetcher-type.js"; -+export * from "./react/honeypot-inputs.js"; -+export * from "./react/matches-type.js"; -+export * from "./react/server-only.js"; -+export * from "./react/use-debounced-fetcher.js"; -+export * from "./react/use-delegated-anchors.js"; -+export * from "./react/use-event-source.js"; -+export * from "./react/use-global-pending-state.js"; -+export * from "./react/use-hydrated.js"; -+export * from "./react/use-locales.js"; -+export * from "./react/use-should-hydrate.js"; -diff --git a/node_modules/remix-utils/build/react.js b/node_modules/remix-utils/build/react.js -index 250f9d8..8999764 100644 ---- a/node_modules/remix-utils/build/react.js -+++ b/node_modules/remix-utils/build/react.js -@@ -1,15 +1,15 @@ --export * from "./react/cache-assets"; --export * from "./react/client-only"; --export * from "./react/csrf"; --export * from "./react/external-scripts"; --export * from "./react/fetcher-type"; --export * from "./react/honeypot-inputs"; --export * from "./react/matches-type"; --export * from "./react/server-only"; --export * from "./react/use-debounced-fetcher"; --export * from "./react/use-delegated-anchors"; --export * from "./react/use-event-source"; --export * from "./react/use-global-pending-state"; --export * from "./react/use-hydrated"; --export * from "./react/use-locales"; --export * from "./react/use-should-hydrate"; -+export * from "./react/cache-assets.js"; -+export * from "./react/client-only.js"; -+export * from "./react/csrf.js"; -+export * from "./react/external-scripts.js"; -+export * from "./react/fetcher-type.js"; -+export * from "./react/honeypot-inputs.js"; -+export * from "./react/matches-type.js"; -+export * from "./react/server-only.js"; -+export * from "./react/use-debounced-fetcher.js"; -+export * from "./react/use-delegated-anchors.js"; -+export * from "./react/use-event-source.js"; -+export * from "./react/use-global-pending-state.js"; -+export * from "./react/use-hydrated.js"; -+export * from "./react/use-locales.js"; -+export * from "./react/use-should-hydrate.js"; -diff --git a/node_modules/remix-utils/build/react/client-only.js b/node_modules/remix-utils/build/react/client-only.js -index a6bdf86..34e2e0f 100644 ---- a/node_modules/remix-utils/build/react/client-only.js -+++ b/node_modules/remix-utils/build/react/client-only.js -@@ -1,5 +1,5 @@ - import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; --import { useHydrated } from "./use-hydrated"; -+import { useHydrated } from "./use-hydrated.js"; - /** - * Render the children only after the JS has loaded client-side. Use an optional - * fallback component if the JS is not yet loaded. -diff --git a/node_modules/remix-utils/build/react/external-scripts.d.ts b/node_modules/remix-utils/build/react/external-scripts.d.ts -index 3d016c5..5cb38a6 100644 ---- a/node_modules/remix-utils/build/react/external-scripts.d.ts -+++ b/node_modules/remix-utils/build/react/external-scripts.d.ts -@@ -1,6 +1,6 @@ - /// - import type { AppData } from "@remix-run/server-runtime"; --import { HandleConventionArguments } from "./handle-conventions"; -+import { HandleConventionArguments } from "./handle-conventions.js"; - type ReferrerPolicy = - | "no-referrer-when-downgrade" - | "no-referrer" -diff --git a/node_modules/remix-utils/build/react/honeypot-inputs.d.ts b/node_modules/remix-utils/build/react/honeypot-inputs.d.ts -index 60056da..2ebb235 100644 ---- a/node_modules/remix-utils/build/react/honeypot-inputs.d.ts -+++ b/node_modules/remix-utils/build/react/honeypot-inputs.d.ts -@@ -1,2 +1,3 @@ - /// - export declare function HoneypotInputs(): JSX.Element; -+export declare function HoneypotProvider(props: {children: React.ReactNode, nameFieldName: string, validFromFieldName: string, encryptedValidFrom: string}): JSX.Element; -diff --git a/node_modules/remix-utils/build/react/honeypot-inputs.js b/node_modules/remix-utils/build/react/honeypot-inputs.js -index a42c3b8..fb47966 100644 ---- a/node_modules/remix-utils/build/react/honeypot-inputs.js -+++ b/node_modules/remix-utils/build/react/honeypot-inputs.js -@@ -1,41 +1,47 @@ - import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; --import { useRouteLoaderData } from "@remix-run/react"; -+import { createContext, useContext } from "react"; -+const HoneyPotContext = createContext(null); - export function HoneypotInputs() { -- let rootLoaderData = useRouteLoaderData("root"); -- if (!rootLoaderData) throw new Error("Missing loader data from root"); -- if (!rootLoaderData.nameFieldName) { -- throw new Error("Missing Honeypot's nameFieldName on root loader data"); -- } -- if (!rootLoaderData.validFromFieldName) { -- throw new Error( -- "Missing Honeypot's validFromFieldName on root loader data", -- ); -- } -- if (!rootLoaderData.encryptedValidFrom) { -- throw new Error( -- "Missing Honeypot's encryptedValidFrom on root loader data", -- ); -- } -+ const {nameFieldName, validFromFieldName, encryptedValidFrom} = useContext(HoneyPotContext); - return _jsxs("div", { -- id: `${rootLoaderData.nameFieldName}_wrap`, -+ id: `${nameFieldName}_wrap`, - style: { display: "none" }, - "aria-hidden": "true", - children: [ -+ _jsx("label", { -+ htmlFor: nameFieldName, -+ children: "Please leave this field blank", -+ }), - _jsx("input", { -- id: rootLoaderData.nameFieldName, -- name: rootLoaderData.nameFieldName, -+ id: nameFieldName, -+ name: nameFieldName, - type: "text", - defaultValue: "", - autoComplete: "off", - tabIndex: -1, - }), -+ _jsx("label", { -+ htmlFor: validFromFieldName, -+ children: "Please leave this field blank", -+ }), - _jsx("input", { -- name: rootLoaderData.validFromFieldName, -+ name: validFromFieldName, - type: "text", -- value: rootLoaderData.encryptedValidFrom, -+ value: encryptedValidFrom, -+ readOnly: true, - autoComplete: "off", - tabIndex: -1, - }), - ], - }); - } -+export function HoneypotProvider({children, nameFieldName, validFromFieldName, encryptedValidFrom}) { -+ return _jsx(HoneyPotContext.Provider, { -+ value: { -+ nameFieldName, -+ validFromFieldName, -+ encryptedValidFrom, -+ }, -+ children: children, -+ }); -+} -diff --git a/node_modules/remix-utils/build/react/server-only.js b/node_modules/remix-utils/build/react/server-only.js -index de8dfa7..35dd0a1 100644 ---- a/node_modules/remix-utils/build/react/server-only.js -+++ b/node_modules/remix-utils/build/react/server-only.js -@@ -1,5 +1,5 @@ - import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; --import { useHydrated } from "./use-hydrated"; -+import { useHydrated } from "./use-hydrated.js"; - /** - * Render the children only before the JS has loaded client-side. Use an - * optional fallback component for once the JS has loaded. -diff --git a/node_modules/remix-utils/build/react/use-locales.d.ts b/node_modules/remix-utils/build/react/use-locales.d.ts -index 166536a..c6ba7d1 100644 ---- a/node_modules/remix-utils/build/react/use-locales.d.ts -+++ b/node_modules/remix-utils/build/react/use-locales.d.ts -@@ -1,4 +1,4 @@ --import type { Locales } from "../server/get-client-locales"; -+import type { Locales } from "../server/get-client-locales.js"; - /** - * Get the locales returned by the loader of the root route. - * -diff --git a/node_modules/remix-utils/build/server.d.ts b/node_modules/remix-utils/build/server.d.ts -index ac70b60..db11359 100644 ---- a/node_modules/remix-utils/build/server.d.ts -+++ b/node_modules/remix-utils/build/server.d.ts -@@ -1,17 +1,17 @@ --export * from "./server/cors"; --export * from "./server/csrf"; --export * from "./server/event-stream"; --export * from "./server/get-client-ip-address"; --export * from "./server/get-client-locales"; --export * from "./server/honeypot"; --export * from "./server/is-prefetch"; --export * from "./server/named-action"; --export * from "./server/parse-accept-header"; --export * from "./server/preload-route-assets"; --export * from "./server/respond-to"; --export * from "./server/json-hash"; --export * from "./server/responses"; --export * from "./server/rolling-cookie"; --export * from "./server/safe-redirect"; --export * from "./server/typed-cookie"; --export * from "./server/typed-session"; -+export * from "./server/cors.js"; -+export * from "./server/csrf.js"; -+export * from "./server/event-stream.js"; -+export * from "./server/get-client-ip-address.js"; -+export * from "./server/get-client-locales.js"; -+export * from "./server/honeypot.js"; -+export * from "./server/is-prefetch.js"; -+export * from "./server/named-action.js"; -+export * from "./server/parse-accept-header.js"; -+export * from "./server/preload-route-assets.js"; -+export * from "./server/respond-to.js"; -+export * from "./server/json-hash.js"; -+export * from "./server/responses.js"; -+export * from "./server/rolling-cookie.js"; -+export * from "./server/safe-redirect.js"; -+export * from "./server/typed-cookie.js"; -+export * from "./server/typed-session.js"; -diff --git a/node_modules/remix-utils/build/server.js b/node_modules/remix-utils/build/server.js -index ac70b60..db11359 100644 ---- a/node_modules/remix-utils/build/server.js -+++ b/node_modules/remix-utils/build/server.js -@@ -1,17 +1,17 @@ --export * from "./server/cors"; --export * from "./server/csrf"; --export * from "./server/event-stream"; --export * from "./server/get-client-ip-address"; --export * from "./server/get-client-locales"; --export * from "./server/honeypot"; --export * from "./server/is-prefetch"; --export * from "./server/named-action"; --export * from "./server/parse-accept-header"; --export * from "./server/preload-route-assets"; --export * from "./server/respond-to"; --export * from "./server/json-hash"; --export * from "./server/responses"; --export * from "./server/rolling-cookie"; --export * from "./server/safe-redirect"; --export * from "./server/typed-cookie"; --export * from "./server/typed-session"; -+export * from "./server/cors.js"; -+export * from "./server/csrf.js"; -+export * from "./server/event-stream.js"; -+export * from "./server/get-client-ip-address.js"; -+export * from "./server/get-client-locales.js"; -+export * from "./server/honeypot.js"; -+export * from "./server/is-prefetch.js"; -+export * from "./server/named-action.js"; -+export * from "./server/parse-accept-header.js"; -+export * from "./server/preload-route-assets.js"; -+export * from "./server/respond-to.js"; -+export * from "./server/json-hash.js"; -+export * from "./server/responses.js"; -+export * from "./server/rolling-cookie.js"; -+export * from "./server/safe-redirect.js"; -+export * from "./server/typed-cookie.js"; -+export * from "./server/typed-session.js"; -diff --git a/node_modules/remix-utils/build/server/get-client-ip-address.js b/node_modules/remix-utils/build/server/get-client-ip-address.js -index 72dfc3e..0dd8d89 100644 ---- a/node_modules/remix-utils/build/server/get-client-ip-address.js -+++ b/node_modules/remix-utils/build/server/get-client-ip-address.js -@@ -1,5 +1,5 @@ - import isIP from "is-ip"; --import { getHeaders } from "./get-headers"; -+import { getHeaders } from "./get-headers.js"; - /** - * This is the list of headers, in order of preference, that will be used to - * determine the client's IP address. -diff --git a/node_modules/remix-utils/build/server/get-client-locales.js b/node_modules/remix-utils/build/server/get-client-locales.js -index 0f26b08..e6e0d8f 100644 ---- a/node_modules/remix-utils/build/server/get-client-locales.js -+++ b/node_modules/remix-utils/build/server/get-client-locales.js -@@ -1,5 +1,5 @@ - import { parseAcceptLanguage } from "intl-parse-accept-language"; --import { getHeaders } from "./get-headers"; -+import { getHeaders } from "./get-headers.js"; - export function getClientLocales(requestOrHeaders) { - let headers = getHeaders(requestOrHeaders); - let acceptLanguage = headers.get("Accept-Language"); -diff --git a/node_modules/remix-utils/build/server/honeypot.d.ts b/node_modules/remix-utils/build/server/honeypot.d.ts -index 0032819..3ea0268 100644 ---- a/node_modules/remix-utils/build/server/honeypot.d.ts -+++ b/node_modules/remix-utils/build/server/honeypot.d.ts -@@ -7,7 +7,6 @@ export interface HonetpotConfig { - randomizeNameFieldName?: boolean; - nameFieldName?: string; - validFromFieldName?: string; -- validFromTimestamp?: number; - encryptionSeed?: string; - } - export declare class SpamError extends Error {} -@@ -15,11 +14,10 @@ export declare class Honeypot { - protected config: HonetpotConfig; - private generatedEncryptionSeed; - constructor(config?: HonetpotConfig); -- getInputProps(): HoneypotInputProps; -+ getInputProps(config?: {validFromTimestamp?: Date}): HoneypotInputProps; - check(formData: FormData): void; - protected get nameFieldName(): string; - protected get validFromFieldName(): string; -- protected get validFromTimestamp(): number; - protected get encryptionSeed(): string; - protected getRandomizedNameFieldName( - nameFieldName: string, -diff --git a/node_modules/remix-utils/build/server/honeypot.js b/node_modules/remix-utils/build/server/honeypot.js -index 65586c9..fb77a74 100644 ---- a/node_modules/remix-utils/build/server/honeypot.js -+++ b/node_modules/remix-utils/build/server/honeypot.js -@@ -5,11 +5,11 @@ export class Honeypot { - this.config = config; - this.generatedEncryptionSeed = this.randomValue(); - } -- getInputProps() { -+ getInputProps({validFromTimestamp = new Date()} = {}) { - return { - nameFieldName: this.nameFieldName, - validFromFieldName: this.validFromFieldName, -- encryptedValidFrom: this.encrypt(this.validFromTimestamp.toString()), -+ encryptedValidFrom: this.encrypt(validFromTimestamp.toString()), - }; - } - check(formData) { -@@ -17,7 +17,7 @@ export class Honeypot { - let nameFieldName = - (_a = this.config.nameFieldName) !== null && _a !== void 0 - ? _a -- : "honeypot"; -+ : "name__confirm"; - if (this.config.randomizeNameFieldName) { - let actualName = this.getRandomizedNameFieldName(nameFieldName, formData); - if (actualName) nameFieldName = actualName; -@@ -45,7 +45,7 @@ export class Honeypot { - let fieldName = - (_a = this.config.nameFieldName) !== null && _a !== void 0 - ? _a -- : "honeypot"; -+ : "name__confirm"; - if (!this.config.randomizeNameFieldName) return fieldName; - return `${fieldName}_${this.randomValue()}`; - } -@@ -53,13 +53,7 @@ export class Honeypot { - var _a; - return (_a = this.config.validFromFieldName) !== null && _a !== void 0 - ? _a -- : "honeypot_from"; -- } -- get validFromTimestamp() { -- var _a; -- return (_a = this.config.validFromTimestamp) !== null && _a !== void 0 -- ? _a -- : Date.now(); -+ : "from__confirm"; - } - get encryptionSeed() { - var _a; -diff --git a/node_modules/remix-utils/build/server/is-prefetch.js b/node_modules/remix-utils/build/server/is-prefetch.js -index fe0d820..93362ff 100644 ---- a/node_modules/remix-utils/build/server/is-prefetch.js -+++ b/node_modules/remix-utils/build/server/is-prefetch.js -@@ -1,4 +1,4 @@ --import { getHeaders } from "./get-headers"; -+import { getHeaders } from "./get-headers.js"; - export function isPrefetch(requestOrHeaders) { - let headers = getHeaders(requestOrHeaders); - let purpose = -diff --git a/node_modules/remix-utils/build/server/respond-to.js b/node_modules/remix-utils/build/server/respond-to.js -index bc8fc5e..296f90a 100644 ---- a/node_modules/remix-utils/build/server/respond-to.js -+++ b/node_modules/remix-utils/build/server/respond-to.js -@@ -1,5 +1,5 @@ --import { getHeaders } from "./get-headers"; --import { parseAcceptHeader } from "./parse-accept-header"; -+import { getHeaders } from "./get-headers.js"; -+import { parseAcceptHeader } from "./parse-accept-header.js"; - export function respondTo(requestOrHeaders, handlers) { - let headers = getHeaders(requestOrHeaders); - let accept = headers.get("accept"); -diff --git a/node_modules/remix-utils/build/server/rolling-cookie.d.ts b/node_modules/remix-utils/build/server/rolling-cookie.d.ts -index 8bbc7e1..5e3b9f8 100644 ---- a/node_modules/remix-utils/build/server/rolling-cookie.d.ts -+++ b/node_modules/remix-utils/build/server/rolling-cookie.d.ts -@@ -1,6 +1,6 @@ - import type { Cookie } from "@remix-run/server-runtime"; - import { z } from "zod"; --import { TypedCookie } from "./typed-cookie"; -+import { TypedCookie } from "./typed-cookie.js"; - export declare function rollingCookie( - cookie: Cookie | TypedCookie, - request: Request, diff --git a/package-lock.json b/package-lock.json index 17d47d418..b26dda873 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "packages": { "": { "name": "epic-stack-template", + "hasInstallScript": true, "license": "MIT", "dependencies": { "@conform-to/react": "^0.8.0", @@ -61,7 +62,7 @@ "remix-auth-form": "^1.3.0", "remix-auth-github": "^1.6.0", "remix-development-tools": "^2.1.1", - "remix-utils": "^7.0.0", + "remix-utils": "^7.0.0-pre.1", "set-cookie-parser": "^2.6.0", "sonner": "^0.6.2", "source-map-support": "^0.5.21", @@ -16206,9 +16207,9 @@ } }, "node_modules/remix-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.0.tgz", - "integrity": "sha512-6cSGMd1mlycKRaaMGIvwqPbzW477lEE1BkD/4xntFb0STQdKodmIJWoU/mjvrV09lKgbgBeyPdQQm+pHjys6Fg==", + "version": "7.0.0-pre.1", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.0-pre.1.tgz", + "integrity": "sha512-cMx8AWcRYiQo7kH4je1dz4/YqVAA6jZ2eMduMZm/+jCQjmOxYzw0bfSJ8tkF2a0GF5SxO+4H/ljtDz6+dTxbIg==", "dependencies": { "crypto-js": "^4.1.1", "intl-parse-accept-language": "^1.0.0", diff --git a/package.json b/package.json index 608fe9008..0307a46c1 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "remix-auth-form": "^1.3.0", "remix-auth-github": "^1.6.0", "remix-development-tools": "^2.1.1", - "remix-utils": "^7.0.0", + "remix-utils": "^7.0.0-pre.1", "set-cookie-parser": "^2.6.0", "sonner": "^0.6.2", "source-map-support": "^0.5.21",