Fixed type errors

This commit is contained in:
Matt Aitken
2022-12-07 11:56:19 +00:00
parent 4cddf19dd9
commit 0ceea323b0
16 changed files with 735 additions and 42 deletions
+28
View File
@@ -0,0 +1,28 @@
import React, { useCallback } from "react";
export type CopyTextProps = {
children?: React.ReactNode;
value: string;
className?: string;
onCopied?: () => void;
};
export function CopyText({
children,
value,
className,
onCopied,
}: CopyTextProps) {
const onClick = useCallback(() => {
navigator.clipboard.writeText(value);
if (onCopied) {
onCopied();
}
}, [value, onCopied]);
return (
<div onClick={onClick} className={`${className}`}>
{children}
</div>
);
}
@@ -1,7 +1,7 @@
import { ClipboardIcon } from "@heroicons/react/24/outline";
import classNames from "classnames";
import { useCallback, useState } from "react";
import { CopyText } from "../libraries/ui/src/components/CopyText";
import { CopyText } from "./CopyText";
const variantStyle = {
slate:
@@ -0,0 +1,53 @@
import classNames from "classnames";
type GitHubLoginButtonProps = {
label?: string;
className?: string;
onClick?: () => void;
};
export function GitHubLoginButton({
label = "Login with GitHub",
className,
onClick,
}: GitHubLoginButtonProps) {
return (
<button
className={classNames(
"flex items-center justify-center gap-2 rounded-md bg-gray-800 py-3 pl-5 pr-6 text-lg font-medium text-white hover:bg-slate-900 transition",
className
)}
onClick={onClick}
>
<OctoKitty className="h-5 w-5" />
{label}
</button>
);
}
export function OctoKitty({ className }: { className?: string }) {
return (
<svg
version="1.2"
baseProfile="tiny"
id="Layer_1"
xmlns="http://www.w3.org/2000/svg"
x="0px"
y="0px"
viewBox="0 0 2350 2314.8"
xmlSpace="preserve"
fill="currentColor"
className={className}
>
<path
d="M1175,0C525.8,0,0,525.8,0,1175c0,552.2,378.9,1010.5,890.1,1139.7c-5.9-14.7-8.8-35.3-8.8-55.8v-199.8H734.4
c-79.3,0-152.8-35.2-185.1-99.9c-38.2-70.5-44.1-179.2-141-246.8c-29.4-23.5-5.9-47,26.4-44.1c61.7,17.6,111.6,58.8,158.6,120.4
c47,61.7,67.6,76.4,155.7,76.4c41.1,0,105.7-2.9,164.5-11.8c32.3-82.3,88.1-155.7,155.7-190.9c-393.6-47-581.6-240.9-581.6-505.3
c0-114.6,49.9-223.3,132.2-317.3c-26.4-91.1-61.7-279.1,11.8-352.5c176.3,0,282,114.6,308.4,143.9c88.1-29.4,185.1-47,284.9-47
c102.8,0,196.8,17.6,284.9,47c26.4-29.4,132.2-143.9,308.4-143.9c70.5,70.5,38.2,261.4,8.8,352.5c82.3,91.1,129.3,202.7,129.3,317.3
c0,264.4-185.1,458.3-575.7,499.4c108.7,55.8,185.1,214.4,185.1,331.9V2256c0,8.8-2.9,17.6-2.9,26.4
C2021,2123.8,2350,1689.1,2350,1175C2350,525.8,1824.2,0,1175,0L1175,0z"
/>
</svg>
);
}
@@ -0,0 +1,83 @@
import {
EyeIcon,
BoltIcon,
BanknotesIcon,
BugAntIcon,
BellAlertIcon,
} from "@heroicons/react/24/outline";
export function LoginPromoPanel() {
return (
<div className="hidden lg:flex flex-col justify-center p-12 min-w-[30vw] h-full bg-midnight border-r border-white/10">
<ul>
<li className="flex gap-2 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<EyeIcon className="h-8 w-8 text-toxic" />
<div className="w-0.5 h-full bg-toxic/50"></div>
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl">Full observability</h2>
<p className="mb-10 text-white/80">
View every single API request and response in real-time from your
dashboard.
</p>
</div>
</li>
<li className="flex gap-2 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<BoltIcon className="h-8 w-8 text-toxic" />
<div className="w-0.5 h-full bg-toxic/50"></div>
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl">Faster responses</h2>
<p className="mb-10 text-white/80">
Get less than 10ms response times.
</p>
</div>
</li>
<li className="flex gap-2 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<BanknotesIcon className="h-8 w-8 text-toxic" />
<div className="w-0.5 h-full bg-toxic/50"></div>
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl">Save money</h2>
<p className="mb-10 text-white/80">
Avoid annoying rate limits by enabling caching  while also saving
money.
</p>
</div>
</li>
<li className="flex gap-2 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<BugAntIcon className="h-8 w-8 text-toxic" />
<div className="w-0.5 h-full bg-toxic/50"></div>
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl">Problem solved</h2>
<p className="mb-10 text-white/80">
We deal with CORS issues for you.
</p>
</div>
</li>
<li className="flex gap-3 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<BellAlertIcon className="ml-1.5 h-5 w-5 text-toxic" />
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl">Automatic alerts</h2>
<p className="mb-10 text-white/80">
Get alerts when issues arise and debug them using our inline help
prompts.
</p>
</div>
</li>
</ul>
</div>
);
}
@@ -5,7 +5,7 @@ import type {
UseCodeMirror,
} from "@uiw/react-codemirror";
import { useCodeMirror } from "@uiw/react-codemirror";
import clsx from "clsx";
import classNames from "classnames";
import { useRef, useEffect } from "react";
import { getEditorSetup } from "./codeMirrorSetup";
import { lightTheme } from "./codeMirrorTheme";
@@ -77,7 +77,7 @@ export function JSONEditor(opts: JSONEditorProps) {
return (
<div
className={clsx("no-scrollbar overflow-y-auto", opts.className)}
className={classNames("no-scrollbar overflow-y-auto", opts.className)}
ref={editor}
onBlur={() => {
if (!onBlur) return;
@@ -5,7 +5,7 @@ import type {
UseCodeMirror,
} from "@uiw/react-codemirror";
import { useCodeMirror } from "@uiw/react-codemirror";
import clsx from "clsx";
import classNames from "classnames";
import { useRef, useEffect } from "react";
import { getEditorSetup } from "./codeMirrorSetup";
import { darkTheme } from "./codeMirrorTheme";
@@ -68,7 +68,7 @@ export function CodeEditor(opts: CodeEditorProps) {
return (
<div
className={clsx("no-scrollbar overflow-y-auto", opts.className)}
className={classNames("no-scrollbar overflow-y-auto", opts.className)}
ref={editor}
onBlur={() => {
if (!onBlur) return;
@@ -1,4 +1,4 @@
import clsx from "clsx";
import classNames from "classnames";
const roundedStyles = {
roundedLeft:
@@ -21,7 +21,7 @@ export function Input({
roundedEdges = "roundedFull",
...props
}: InputProps) {
const classes = clsx(roundedStyles[roundedEdges], className);
const classes = classNames(roundedStyles[roundedEdges], className);
return (
<input
+3
View File
@@ -11,6 +11,9 @@ const EnvironmentSchema = z.object({
MAGIC_LINK_SECRET: z.string(),
GITHUB_CLIENT_ID: z.string(),
GITHUB_SECRET: z.string(),
MAILGUN_KEY: z.string(),
FROM_EMAIL: z.string(),
MERGENT_KEY: z.string(),
});
export type Environment = z.infer<typeof EnvironmentSchema>;
+174
View File
@@ -0,0 +1,174 @@
import type { ActionArgs, LoaderArgs, MetaFunction } from "@remix-run/node";
import { redirect } from "@remix-run/node";
import { Form, Link, useLoaderData, useTransition } from "@remix-run/react";
import {
commitSession,
getUserSession,
} from "~/services/sessionStorage.server";
import { authenticator } from "~/services/auth.server";
import { ArrowLeftIcon } from "@heroicons/react/24/solid";
import { InboxArrowDownIcon } from "@heroicons/react/24/outline";
import { z } from "zod";
import { LoginPromoPanel } from "~/components/LoginPromoPanel";
import { Logo } from "~/components/Logo";
export async function loader({ request }: LoaderArgs) {
await authenticator.isAuthenticated(request, {
successRedirect: "/",
});
const session = await getUserSession(request);
return { magicLinkSent: session.has("apihero:magiclink") };
}
export async function action({ request }: ActionArgs) {
const clonedRequest = request.clone();
const payload = Object.fromEntries(await clonedRequest.formData());
const { action } = z
.object({
action: z.enum(["send", "reset"]),
})
.parse(payload);
if (action === "send") {
await authenticator.authenticate("email-link", request, {
successRedirect: "/login/magic",
failureRedirect: "/login/magic",
});
} else {
const session = await getUserSession(request);
session.unset("apihero:magiclink");
return redirect("/login/magic", {
headers: {
"Set-Cookie": await commitSession(session),
},
});
}
}
export const meta: MetaFunction = () => {
return {
title: "Login",
};
};
export default function LoginMagicLinkPage() {
const { magicLinkSent } = useLoaderData<typeof loader>();
const transition = useTransition();
return (
<div className="flex h-screen w-screen justify-between overflow-y-scroll">
<LoginPromoPanel />
<div className="flex grow items-center justify-center bg-gradient-background h-full w-full p-4">
<div className="mt-[100px] flex w-full max-w-xl flex-col justify-between rounded-lg border bg-white shadow-md lg:mt-0 lg:min-h-[430px]">
<Form className="flex h-full flex-grow flex-col" method="post">
<div className="flex flex-grow flex-col items-center justify-between px-4 pt-6 pb-2 text-center lg:px-4">
<a href="https://apihero.run">
<Logo className="mb-4 h-10 w-auto lg:mb-6 lg:mt-8 lg:h-14" />
</a>
{magicLinkSent ? (
<>
<InboxArrowDownIcon className="mt-0 h-12 w-12 text-blue-500" />
<h3 className="mb-2 text-xl">We've sent you a magic link!</h3>
<p className="max-w-sm text-base text-slate-500">
We sent you an email which contains a magic link that will
log you in to your account.
</p>
<div className="mt-10 flex w-full justify-between">
<button
type="submit"
name="action"
value="reset"
className="flex items-center justify-center gap-1 text-sm text-slate-500 transition hover:text-slate-800"
>
<ArrowLeftIcon className="h-3 w-3" />
Re-enter email
</button>
<Link
className="flex items-center justify-center gap-1 text-sm text-slate-500 transition hover:text-slate-800"
to="/login"
>
Log in using another option
</Link>
</div>
</>
) : (
<>
<h2 className="mb-2 text-2xl font-bold tracking-tight text-slate-700 lg:text-4xl">
Welcome to Trigger.dev
</h2>
<p className="mb-5 text-base lg:text-lg text-slate-600">
Enter your email address to get started.
</p>
<div className="flex w-full max-w-sm flex-col">
<input
className="w-full rounded-lg border border-slate-300 bg-slate-50 px-4 py-2 text-sm text-slate-700 focus:border-blue-500 focus:outline-none"
type="email"
name="email"
placeholder="Email Address"
required
/>
{transition.state === "submitting" &&
transition.type === "actionSubmission" &&
transition.submission.formData.get("action") === "send" ? (
<button
className="mt-2 mb-6 flex w-full items-center justify-center rounded-lg border border-transparent bg-blue-500 px-4 py-2 text-sm font-medium text-white transition hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
name="action"
value="send"
type="submit"
>
Sending...
</button>
) : (
<button
className="mt-2 mb-6 flex w-full items-center justify-center rounded-lg border border-transparent bg-blue-500 px-4 py-2 text-sm font-medium text-white transition hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
name="action"
value="send"
type="submit"
>
Send a magic link
</button>
)}
<Link
className="flex items-center justify-center gap-1 text-sm text-slate-500 transition hover:text-slate-800"
to="/login"
>
<ArrowLeftIcon className="h-3 w-3" />
All login options
</Link>
</div>
</>
)}
</div>
</Form>
<div className="w-full rounded-b-lg border-t bg-slate-50 px-8 py-4">
<p className="text-center text-xs text-slate-500">
By logging in with your email you agree to our{" "}
<Link
className="underline transition hover:text-blue-500"
to="/legal/terms"
>
terms
</Link>{" "}
and{" "}
<Link
className="underline transition hover:text-blue-500"
to="/legal/privacy"
>
privacy
</Link>{" "}
policies.
</p>
</div>
</div>
</div>
</div>
);
}
+103
View File
@@ -0,0 +1,103 @@
import { EnvelopeIcon } from "@heroicons/react/24/solid";
import type { LoaderFunction, MetaFunction } from "@remix-run/node";
import { json, redirect } from "@remix-run/node";
import { Form, Link, useLoaderData } from "@remix-run/react";
import { GitHubLoginButton } from "~/components/GitHubLoginButton";
import { LoginPromoPanel } from "~/components/LoginPromoPanel";
import { Logo } from "~/components/Logo";
import { commitSession, setRedirectTo } from "~/services/redirectTo.server";
import { getUserId } from "~/services/session.server";
type LoaderData = {
redirectTo?: string;
};
export const loader: LoaderFunction = async ({ request }) => {
const userId = await getUserId(request);
if (userId) return redirect("/");
const url = new URL(request.url);
const redirectTo = url.searchParams.get("redirectTo");
if (redirectTo) {
const session = await setRedirectTo(request, redirectTo);
return json<LoaderData>(
{ redirectTo },
{
headers: {
"Set-Cookie": await commitSession(session),
},
}
);
} else {
return json({});
}
};
export const meta: MetaFunction = () => {
return {
title: "Login",
};
};
export default function LoginPage() {
const data = useLoaderData<LoaderData>();
return (
<div className="flex h-screen w-screen justify-between overflow-y-scroll">
<LoginPromoPanel />
<div className="flex grow items-center justify-center bg-gradient-background h-full w-full p-4">
<div className="mt-[100px] flex w-full max-w-xl flex-col justify-between rounded-lg border bg-white shadow-md lg:mt-0 lg:min-h-[430px]">
<Form
className="flex flex-col"
action={`/auth/github${
data.redirectTo ? `?redirectTo=${data.redirectTo}` : ""
}`}
method="post"
>
<div className="flex flex-col items-center px-4 pt-6 pb-4 text-center lg:px-10">
<a href="https://apihero.run">
<Logo className="mb-4 h-10 w-auto lg:mb-6 lg:mt-8 lg:h-14" />
</a>
<h2 className="mb-2 text-2xl font-bold tracking-tight text-slate-700 lg:text-4xl">
Welcome to Trigger.dev
</h2>
<p className="mb-4 text-base lg:mb-12 lg:text-lg">
Connect your GitHub account to get started.
</p>
<GitHubLoginButton className="mx-auto whitespace-nowrap" />
</div>
</Form>
{
<Link
className="mb-4 flex items-center justify-center gap-1 text-sm text-slate-500 transition hover:text-slate-800"
to="/login/magic"
>
<EnvelopeIcon className="h-4 w-4" />
Continue with email
</Link>
}
<div className="w-full rounded-b-lg border-t bg-slate-50 px-8 py-4">
<p className="text-center text-xs text-slate-500">
By connecting your GitHub account you agree to our{" "}
<Link
className="underline transition hover:text-blue-500"
to="/legal/terms"
>
terms
</Link>{" "}
and{" "}
<Link
className="underline transition hover:text-blue-500"
to="/legal/privacy"
>
privacy
</Link>{" "}
policies.
</p>
</div>
</div>
</div>
</div>
);
}
+10
View File
@@ -0,0 +1,10 @@
import type { ActionFunction, LoaderFunction } from "@remix-run/node";
import { authenticator } from "~/services/auth.server";
export const action: ActionFunction = async ({ request }) => {
return await authenticator.logout(request, { redirectTo: "/" });
};
export const loader: LoaderFunction = async ({ request }) => {
return await authenticator.logout(request, { redirectTo: "/" });
};
+12
View File
@@ -0,0 +1,12 @@
import type { LoaderArgs } from "@remix-run/server-runtime";
import { authenticator } from "~/services/auth.server";
import { getRedirectTo } from "~/services/redirectTo.server";
export async function loader({ request }: LoaderArgs) {
const redirectTo = await getRedirectTo(request);
await authenticator.authenticate("email-link", request, {
successRedirect: redirectTo ?? "/",
failureRedirect: "/login",
});
}
+3 -3
View File
@@ -1,7 +1,7 @@
import type { User } from "~/models/user.server";
import mailgun from "mailgun-js";
import { env } from "~/env.server";
import { mergent } from "~/mergent.server";
import { mergent } from "./mergent.server";
const mailgunDomain = "apihero.run";
@@ -16,7 +16,7 @@ export async function sendEmail(
body: string
) {
const data = {
from: `API Hero <${env.SENDGRID_FROM_EMAIL}>`,
from: `API Hero <${env.FROM_EMAIL}>`,
to: emailAddress,
subject,
html: body,
@@ -27,7 +27,7 @@ export async function sendEmail(
export async function sendWelcomeEmail(user: User) {
const data = {
from: `API Hero <${env.SENDGRID_FROM_EMAIL}>`,
from: `API Hero <${env.FROM_EMAIL}>`,
to: user.email,
subject: "🤝 Welcome to API Hero!",
template: "welcome_email_test1",
@@ -0,0 +1,4 @@
import Mergent from "mergent";
import { env } from "~/env.server";
export const mergent = new Mergent(env.MERGENT_KEY);
+4
View File
@@ -53,12 +53,15 @@
"@remix-run/react": "^1.7.2",
"@remix-run/server-runtime": "^1.7.0",
"@sentry/remix": "^7.19.0",
"@types/mailgun-js": "^0.22.12",
"@uiw/react-codemirror": "^4.13.2",
"classnames": "^2.3.1",
"compression": "^1.7.4",
"cross-env": "^7.0.3",
"cuid": "^2.1.8",
"express": "^4.18.1",
"mailgun-js": "^0.22.0",
"mergent": "^1.4.0",
"morgan": "^1.10.0",
"nanoid": "^3.3.4",
"postcss-import": "^14.1.0",
@@ -80,6 +83,7 @@
},
"devDependencies": {
"@apihero/tailwind-config": "*",
"@faker-js/faker": "^7.6.0",
"@remix-run/dev": "^1.7.2",
"@remix-run/eslint-config": "^1.7.2",
"@swc/core": "^1.3.4",
+251 -32
View File
@@ -37,6 +37,7 @@ importers:
'@codemirror/search': ^6.2.3
'@codemirror/state': ^6.1.3
'@codemirror/view': ^6.5.0
'@faker-js/faker': ^7.6.0
'@headlessui/react': ^1.6.4
'@heroicons/react': ^2.0.12
'@lezer/highlight': ^1.1.2
@@ -59,6 +60,7 @@ importers:
'@types/eslint': ^8.4.6
'@types/express': ^4.17.13
'@types/jest': ^29.2.0
'@types/mailgun-js': ^0.22.12
'@types/morgan': ^1.9.3
'@types/node': ^18.8.0
'@types/react': ^18.0.21
@@ -82,6 +84,8 @@ importers:
express: ^4.18.1
glob: ^8.0.3
happy-dom: ^6.0.4
mailgun-js: ^0.22.0
mergent: ^1.4.0
morgan: ^1.10.0
msw: ^0.47.0
nanoid: ^3.3.4
@@ -134,12 +138,15 @@ importers:
'@remix-run/react': 1.8.1_biqbaboplfbrettd7655fr4n2y
'@remix-run/server-runtime': 1.8.1_biqbaboplfbrettd7655fr4n2y
'@sentry/remix': 7.23.0_dfehptsum4bkg2mncqmjuvk644
'@types/mailgun-js': 0.22.12
'@uiw/react-codemirror': 4.17.1_c746qxthrd2ism2rvn4crnq5om
classnames: 2.3.2
compression: 1.7.4
cross-env: 7.0.3
cuid: 2.1.8
express: 4.18.2
mailgun-js: 0.22.0
mergent: 1.4.0
morgan: 1.10.0
nanoid: 3.3.4
postcss-import: 14.1.0_postcss@8.4.19
@@ -160,6 +167,7 @@ importers:
zod: 3.19.1
devDependencies:
'@apihero/tailwind-config': link:../../config-packages/tailwind-config
'@faker-js/faker': 7.6.0
'@remix-run/dev': 1.8.1_biqbaboplfbrettd7655fr4n2y
'@remix-run/eslint-config': 1.8.1_3d7osmpeeoyqkoluqnkoj2u33y
'@swc/core': 1.3.21
@@ -1834,6 +1842,11 @@ packages:
- supports-color
dev: true
/@faker-js/faker/7.6.0:
resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==}
engines: {node: '>=14.0.0', npm: '>=6.0.0'}
dev: true
/@gar/promisify/1.1.3:
resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
dev: true
@@ -2953,6 +2966,13 @@ packages:
'@types/node': 18.11.11
dev: true
/@types/mailgun-js/0.22.12:
resolution: {integrity: sha512-fTjuh2mOPoJF2BN0QAhE5iPOBls333KIJrmrrJHObMDuBCgEfaENLX2LH1FjKqhfuWfGotKOfPFZMuSok5Ow7g==}
dependencies:
'@types/node': 18.11.11
form-data: 2.5.1
dev: false
/@types/mdast/3.0.10:
resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==}
dependencies:
@@ -2995,7 +3015,6 @@ packages:
/@types/node/18.11.11:
resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==}
dev: true
/@types/node/8.10.66:
resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==}
@@ -3384,6 +3403,20 @@ packages:
hasBin: true
dev: true
/agent-base/4.2.1:
resolution: {integrity: sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==}
engines: {node: '>= 4.0.0'}
dependencies:
es6-promisify: 5.0.0
dev: false
/agent-base/4.3.0:
resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==}
engines: {node: '>= 4.0.0'}
dependencies:
es6-promisify: 5.0.0
dev: false
/agent-base/6.0.2:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
@@ -3628,7 +3661,6 @@ packages:
engines: {node: '>=4'}
dependencies:
tslib: 2.4.1
dev: true
/ast-types/0.15.2:
resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==}
@@ -3647,13 +3679,18 @@ packages:
hasBin: true
dev: true
/async/2.6.4:
resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
dependencies:
lodash: 4.17.21
dev: false
/async/3.2.4:
resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
dev: true
/asynckit/0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: true
/at-least-node/1.0.0:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
@@ -4243,6 +4280,11 @@ packages:
engines: {node: '>=0.8'}
dev: true
/co/4.6.0:
resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
dev: false
/code-point-at/1.1.0:
resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
engines: {node: '>=0.10.0'}
@@ -4303,7 +4345,6 @@ packages:
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: 1.0.0
dev: true
/comma-separated-tokens/2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -4550,6 +4591,10 @@ packages:
assert-plus: 1.0.0
dev: true
/data-uri-to-buffer/1.2.0:
resolution: {integrity: sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==}
dev: false
/data-uri-to-buffer/3.0.1:
resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==}
engines: {node: '>= 6'}
@@ -4578,6 +4623,17 @@ packages:
dependencies:
ms: 2.0.0
/debug/3.1.0:
resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.0.0
dev: false
/debug/3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
@@ -4587,7 +4643,6 @@ packages:
optional: true
dependencies:
ms: 2.1.3
dev: true
/debug/3.2.7_supports-color@5.5.0:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
@@ -4708,7 +4763,6 @@ packages:
/deep-is/0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
/defaults/1.0.4:
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
@@ -4764,6 +4818,14 @@ packages:
resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
dev: true
/degenerator/1.0.4:
resolution: {integrity: sha512-EMAC+riLSC64jKfOs1jp8J7M4ZXstUUwTdwFBEv6HOzL/Ae+eAzMKEK0nJnpof2fnw9IOjmE6u6qXFejVyk8AA==}
dependencies:
ast-types: 0.14.2
escodegen: 1.14.3
esprima: 3.1.3
dev: false
/degenerator/3.0.2:
resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==}
engines: {node: '>= 6'}
@@ -4777,7 +4839,6 @@ packages:
/delayed-stream/1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
dev: true
/delegates/1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
@@ -5001,6 +5062,16 @@ packages:
is-symbol: 1.0.4
dev: true
/es6-promise/4.2.8:
resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
dev: false
/es6-promisify/5.0.0:
resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
dependencies:
es6-promise: 4.2.8
dev: false
/esbuild-android-64/0.15.12:
resolution: {integrity: sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==}
engines: {node: '>=12'}
@@ -5433,7 +5504,6 @@ packages:
optionator: 0.8.3
optionalDependencies:
source-map: 0.6.1
dev: true
/eslint-config-next/12.3.4_s5ps7njkmjlaqajutnox5ntcla:
resolution: {integrity: sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==}
@@ -5915,11 +5985,16 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
/esprima/3.1.3:
resolution: {integrity: sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==}
engines: {node: '>=4'}
hasBin: true
dev: false
/esprima/4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
hasBin: true
dev: true
/esquery/1.4.0:
resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
@@ -5938,7 +6013,6 @@ packages:
/estraverse/4.3.0:
resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
engines: {node: '>=4.0'}
dev: true
/estraverse/5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
@@ -5996,7 +6070,6 @@ packages:
/esutils/2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
dev: true
/etag/1.8.1:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
@@ -6151,7 +6224,6 @@ packages:
/extend/3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
dev: true
/external-editor/3.1.0:
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
@@ -6229,7 +6301,6 @@ packages:
/fast-levenshtein/2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
/fastq/1.14.0:
resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==}
@@ -6269,8 +6340,6 @@ packages:
/file-uri-to-path/1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: true
optional: true
/file-uri-to-path/2.0.0:
resolution: {integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==}
@@ -6407,7 +6476,6 @@ packages:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
dev: true
/format/0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
@@ -6493,7 +6561,6 @@ packages:
dependencies:
readable-stream: 1.1.14
xregexp: 2.0.0
dev: true
/function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
@@ -6599,6 +6666,19 @@ packages:
/get-tsconfig/4.2.0:
resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==}
/get-uri/2.0.4:
resolution: {integrity: sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==}
dependencies:
data-uri-to-buffer: 1.2.0
debug: 2.6.9
extend: 3.0.2
file-uri-to-path: 1.0.0
ftp: 0.3.10
readable-stream: 2.3.7
transitivePeerDependencies:
- supports-color
dev: false
/get-uri/3.0.2:
resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==}
engines: {node: '>= 6'}
@@ -7001,6 +7081,16 @@ packages:
statuses: 2.0.1
toidentifier: 1.0.1
/http-proxy-agent/2.1.0:
resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==}
engines: {node: '>= 4.5.0'}
dependencies:
agent-base: 4.3.0
debug: 3.1.0
transitivePeerDependencies:
- supports-color
dev: false
/http-proxy-agent/4.0.1:
resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
engines: {node: '>= 6'}
@@ -7035,6 +7125,16 @@ packages:
resolve-alpn: 1.2.1
dev: true
/https-proxy-agent/3.0.1:
resolution: {integrity: sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==}
engines: {node: '>= 4.5.0'}
dependencies:
agent-base: 4.3.0
debug: 3.2.7
transitivePeerDependencies:
- supports-color
dev: false
/https-proxy-agent/5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
@@ -7106,6 +7206,16 @@ packages:
resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
dev: true
/inflection/1.12.0:
resolution: {integrity: sha512-lRy4DxuIFWXlJU7ed8UiTJOSTqStqYdEb4CEbtXfNbkdj3nH1L+reUWiE10VWcJS2yR7tge8Z74pJjtBjNwj0w==}
engines: {'0': node >= 0.4.0}
dev: false
/inflection/1.3.8:
resolution: {integrity: sha512-xRvG6XhAkbneGO5BXP0uKyGkzmZ2bBbrFkx4ZVNx2TmsECbiq/pJapbbx/NECh+E85IfZwW5+IeVNJfkQgavag==}
engines: {'0': node >= 0.4.0}
dev: false
/inflight/1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
@@ -7169,9 +7279,12 @@ packages:
engines: {node: '>=8'}
dev: false
/ip/1.1.5:
resolution: {integrity: sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==}
dev: false
/ip/1.1.8:
resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==}
dev: true
/ip/2.0.0:
resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==}
@@ -7469,6 +7582,11 @@ packages:
call-bind: 1.0.2
dev: true
/is-stream/1.1.0:
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
engines: {node: '>=0.10.0'}
dev: false
/is-stream/2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
@@ -7538,7 +7656,6 @@ packages:
/isarray/0.0.1:
resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
dev: true
/isarray/1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
@@ -7867,7 +7984,6 @@ packages:
dependencies:
prelude-ls: 1.1.2
type-check: 0.3.2
dev: true
/levn/0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
@@ -7986,7 +8102,6 @@ packages:
/lodash/4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
dev: true
/log-symbols/4.1.0:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
@@ -8043,7 +8158,6 @@ packages:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
yallist: 3.1.1
dev: true
/lru-cache/6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
@@ -8074,6 +8188,24 @@ packages:
sourcemap-codec: 1.4.8
dev: true
/mailgun-js/0.22.0:
resolution: {integrity: sha512-a2alg5nuTZA9Psa1pSEIEsbxr1Zrmqx4VkgGCQ30xVh0kIH7Bu57AYILo+0v8QLSdXtCyLaS+KVmdCrQo0uWFA==}
engines: {node: '>=6.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
dependencies:
async: 2.6.4
debug: 4.3.4
form-data: 2.5.1
inflection: 1.12.0
is-stream: 1.1.0
path-proxy: 1.0.0
promisify-call: 2.0.4
proxy-agent: 3.1.1
tsscmp: 1.0.6
transitivePeerDependencies:
- supports-color
dev: false
/make-dir/2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
engines: {node: '>=6'}
@@ -8249,6 +8381,14 @@ packages:
engines: {node: '>= 8'}
dev: true
/mergent/1.4.0:
resolution: {integrity: sha512-OTkCBu/28brBtxSW6VaMxdmImH37CrclmLfZhSC64qinCLyDgZ56TiUeelMGefvWf+2ZojK2506vFPFrraYGsA==}
dependencies:
node-fetch: 2.6.7
transitivePeerDependencies:
- encoding
dev: false
/methods/1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'}
@@ -8787,6 +8927,11 @@ packages:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
dev: true
/netmask/1.0.6:
resolution: {integrity: sha512-3DWDqAtIiPSkBXZyYEjwebfK56nrlQfRGt642fu8RPaL+ePu750+HCMHxjJCG3iEHq/0aeMvX6KIzlv7nuhfrA==}
engines: {node: '>= 0.4.0'}
dev: false
/netmask/2.0.2:
resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
engines: {node: '>= 0.4.0'}
@@ -9065,7 +9210,6 @@ packages:
prelude-ls: 1.1.2
type-check: 0.3.2
word-wrap: 1.2.3
dev: true
/optionator/0.9.1:
resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
@@ -9164,6 +9308,21 @@ packages:
engines: {node: '>=6'}
dev: true
/pac-proxy-agent/3.0.1:
resolution: {integrity: sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==}
dependencies:
agent-base: 4.3.0
debug: 4.3.4
get-uri: 2.0.4
http-proxy-agent: 2.1.0
https-proxy-agent: 3.0.1
pac-resolver: 3.0.0
raw-body: 2.5.1
socks-proxy-agent: 4.0.2
transitivePeerDependencies:
- supports-color
dev: false
/pac-proxy-agent/5.0.0:
resolution: {integrity: sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==}
engines: {node: '>= 8'}
@@ -9181,6 +9340,16 @@ packages:
- supports-color
dev: true
/pac-resolver/3.0.0:
resolution: {integrity: sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==}
dependencies:
co: 4.6.0
degenerator: 1.0.4
ip: 1.1.8
netmask: 1.0.6
thunkify: 2.1.2
dev: false
/pac-resolver/5.0.1:
resolution: {integrity: sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==}
engines: {node: '>= 8'}
@@ -9283,6 +9452,12 @@ packages:
/path-parse/1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
/path-proxy/1.0.0:
resolution: {integrity: sha512-p9IuY9FRY1nU59RDW+tnLL6qMxmBnY03WGYxzy1FcqE5OMO5ggz7ahmOBH0JBS+9f95Yc7V5TZ+kHpTeFWaLQA==}
dependencies:
inflection: 1.3.8
dev: false
/path-to-regexp/0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
@@ -9484,7 +9659,6 @@ packages:
/prelude-ls/1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
engines: {node: '>= 0.8.0'}
dev: true
/prelude-ls/1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
@@ -9583,6 +9757,13 @@ packages:
asap: 2.0.6
dev: true
/promisify-call/2.0.4:
resolution: {integrity: sha512-ZX68J1+1Pe0I8NC0P6Ji3fDDcJceVfpoygfDLgdb1fp5vW9IRlwSpDaxe1T5HgwchyHV2DsL/pWzWikUiWEbLQ==}
engines: {node: '>=4.0'}
dependencies:
with-callback: 1.0.2
dev: false
/prop-types/15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
dependencies:
@@ -9602,6 +9783,22 @@ packages:
forwarded: 0.2.0
ipaddr.js: 1.9.1
/proxy-agent/3.1.1:
resolution: {integrity: sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==}
engines: {node: '>=6'}
dependencies:
agent-base: 4.3.0
debug: 4.3.4
http-proxy-agent: 2.1.0
https-proxy-agent: 3.0.1
lru-cache: 5.1.1
pac-proxy-agent: 3.0.1
proxy-from-env: 1.1.0
socks-proxy-agent: 4.0.2
transitivePeerDependencies:
- supports-color
dev: false
/proxy-agent/5.0.0:
resolution: {integrity: sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==}
engines: {node: '>= 8'}
@@ -9821,7 +10018,6 @@ packages:
inherits: 2.0.4
isarray: 0.0.1
string_decoder: 0.10.31
dev: true
/readable-stream/2.3.7:
resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==}
@@ -10448,7 +10644,6 @@ packages:
/smart-buffer/4.2.0:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
dev: true
/snapdragon-node/2.1.1:
resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
@@ -10482,6 +10677,14 @@ packages:
- supports-color
dev: true
/socks-proxy-agent/4.0.2:
resolution: {integrity: sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==}
engines: {node: '>= 6'}
dependencies:
agent-base: 4.2.1
socks: 2.3.3
dev: false
/socks-proxy-agent/5.0.1:
resolution: {integrity: sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==}
engines: {node: '>= 6'}
@@ -10493,6 +10696,14 @@ packages:
- supports-color
dev: true
/socks/2.3.3:
resolution: {integrity: sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
dependencies:
ip: 1.1.5
smart-buffer: 4.2.0
dev: false
/socks/2.7.1:
resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==}
engines: {node: '>= 10.13.0', npm: '>= 3.0.0'}
@@ -10747,7 +10958,6 @@ packages:
/string_decoder/0.10.31:
resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
dev: true
/string_decoder/1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
@@ -11053,6 +11263,10 @@ packages:
xtend: 4.0.2
dev: true
/thunkify/2.1.2:
resolution: {integrity: sha512-w9foI80XcGImrhMQ19pxunaEC5Rp2uzxZZg4XBAFRfiLOplk3F0l7wo+bO16vC2/nlQfR/mXZxcduo0MF2GWLg==}
dev: false
/tiny-glob/0.2.9:
resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
dependencies:
@@ -11223,7 +11437,11 @@ packages:
/tslib/2.4.1:
resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
dev: true
/tsscmp/1.0.6:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
engines: {node: '>=0.6.x'}
dev: false
/tsutils/3.21.0_typescript@4.9.3:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
@@ -11321,7 +11539,6 @@ packages:
engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.1.2
dev: true
/type-check/0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
@@ -11855,10 +12072,14 @@ packages:
string-width: 4.2.3
dev: false
/with-callback/1.0.2:
resolution: {integrity: sha512-zaUhn7OWgikdqWlPYpZ4rTX/6IAV0czMVyd+C6QLVrif2tATF28CYUnHBmHs2a5EaZo7bB1+plBUPHto+HW8uA==}
engines: {node: '>=4'}
dev: false
/word-wrap/1.2.3:
resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
engines: {node: '>=0.10.0'}
dev: true
/wrap-ansi/6.2.0:
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
@@ -11934,7 +12155,6 @@ packages:
/xregexp/2.0.0:
resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==}
dev: true
/xtend/4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
@@ -11951,7 +12171,6 @@ packages:
/yallist/3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
dev: true
/yallist/4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}