From 37935c59ca64a195e19c528bf4475a863680c99b Mon Sep 17 00:00:00 2001
From: Mamadou DICKO <63923024+mamadoudicko@users.noreply.github.com>
Date: Wed, 20 Sep 2023 09:35:09 +0200
Subject: [PATCH] feat: add public brain creation (#1218)
* feat: add brain status input
* feat: update translations
* feat: add confirmation modal for brain status changing to public
---
frontend/lib/api/brain/types.ts | 3 +-
.../AddBrainModal/AddBrainModal.tsx | 297 ++++++++++--------
.../PublicAccessConfirmationModal.tsx | 42 +++
.../AddBrainModal/hooks/useAddBrainModal.ts | 46 ++-
.../lib/components/AddBrainModal/styles.css | 3 +
frontend/lib/components/ui/Modal.tsx | 7 +-
frontend/lib/components/ui/Radio.tsx | 48 +++
frontend/lib/config/defaultBrainConfig.ts | 1 +
frontend/lib/types/brainConfig.ts | 5 +
frontend/package.json | 1 +
frontend/public/locales/en/brain.json | 9 +-
frontend/public/locales/es/brain.json | 9 +-
frontend/public/locales/fr/brain.json | 9 +-
frontend/public/locales/pt-br/brain.json | 9 +-
frontend/public/locales/ru/brain.json | 9 +-
frontend/public/locales/zh-cn/brain.json | 9 +-
frontend/yarn.lock | 110 ++++---
17 files changed, 424 insertions(+), 193 deletions(-)
create mode 100644 frontend/lib/components/AddBrainModal/components/PublicAccessConfirmationModal.tsx
create mode 100644 frontend/lib/components/AddBrainModal/styles.css
create mode 100644 frontend/lib/components/ui/Radio.tsx
diff --git a/frontend/lib/api/brain/types.ts b/frontend/lib/api/brain/types.ts
index 32b846911..ddd8437ba 100644
--- a/frontend/lib/api/brain/types.ts
+++ b/frontend/lib/api/brain/types.ts
@@ -1,4 +1,5 @@
import { BrainRoleType } from "@/lib/components/BrainUsers/types";
+import { BrainStatus } from "@/lib/types/brainConfig";
export type SubscriptionUpdatableProperties = {
role: BrainRoleType | null;
@@ -7,7 +8,7 @@ export type SubscriptionUpdatableProperties = {
export type CreateBrainInput = {
name: string;
description?: string;
- status?: string;
+ status?: BrainStatus;
model?: string;
temperature?: number;
max_tokens?: number;
diff --git a/frontend/lib/components/AddBrainModal/AddBrainModal.tsx b/frontend/lib/components/AddBrainModal/AddBrainModal.tsx
index 6742eb657..2d2c33256 100644
--- a/frontend/lib/components/AddBrainModal/AddBrainModal.tsx
+++ b/frontend/lib/components/AddBrainModal/AddBrainModal.tsx
@@ -1,5 +1,6 @@
+/* eslint-disable max-lines */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
-/* eslint-disable */
+
import { useTranslation } from "react-i18next";
import { MdAdd } from "react-icons/md";
@@ -9,9 +10,11 @@ import Field from "@/lib/components/ui/Field";
import { Modal } from "@/lib/components/ui/Modal";
import { defineMaxTokens } from "@/lib/helpers/defineMaxTokens";
-import { Divider } from "../ui/Divider";
-import { TextArea } from "../ui/TextArea";
+import { PublicAccessConfirmationModal } from "./components/PublicAccessConfirmationModal";
import { useAddBrainModal } from "./hooks/useAddBrainModal";
+import { Divider } from "../ui/Divider";
+import { Radio } from "../ui/Radio";
+import { TextArea } from "../ui/TextArea";
export const AddBrainModal = (): JSX.Element => {
const { t } = useTranslation(["translation", "brain", "config"]);
@@ -20,150 +23,170 @@ export const AddBrainModal = (): JSX.Element => {
isShareModalOpen,
setIsShareModalOpen,
register,
- openAiKey,
temperature,
maxTokens,
model,
isPending,
pickPublicPrompt,
accessibleModels,
+ brainStatusOptions,
+ status,
+ isPublicAccessConfirmationModalOpened,
+ onCancelPublicAccess,
+ onConfirmPublicAccess,
} = useAddBrainModal();
return (
- void 0}
- variant={"tertiary"}
- className="border-0"
- data-testid="add-brain-button"
- >
- {t("newBrain", { ns: "brain" })}
-
-
- }
- title={t("newBrainTitle", { ns: "brain" })}
- desc={t("newBrainSubtitle", { ns: "brain" })}
- isOpen={isShareModalOpen}
- setOpen={setIsShareModalOpen}
- CloseTrigger={
}
- >
- {
+ e.preventDefault();
+ void handleSubmit();
+ }}
+ className="my-10 flex flex-col items-center gap-2"
>
- {t("createButton")}
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ {t("modelLabel", { ns: "config" })}
+
+
+ {accessibleModels.map((availableModel) => (
+
+ {availableModel}
+
+ ))}
+
+
+
+
+
+ {t("temperature", { ns: "config" })}: {temperature}
+
+
+
+
+
+ {t("maxTokens", { ns: "config" })}: {maxTokens}
+
+
+
+
+
+
+
+
+
+
+ {t("setDefaultBrain", { ns: "brain" })}
+
+
+
+
+
+
+ {t("createButton")}
+
+
+
+
+
+ >
);
};
diff --git a/frontend/lib/components/AddBrainModal/components/PublicAccessConfirmationModal.tsx b/frontend/lib/components/AddBrainModal/components/PublicAccessConfirmationModal.tsx
new file mode 100644
index 000000000..0abab8507
--- /dev/null
+++ b/frontend/lib/components/AddBrainModal/components/PublicAccessConfirmationModal.tsx
@@ -0,0 +1,42 @@
+import { useTranslation } from "react-i18next";
+
+import Button from "../../ui/Button";
+import { Modal } from "../../ui/Modal";
+
+type PublicAccessConfirmationModalProps = {
+ opened: boolean;
+ onClose: () => void;
+ onConfirm: () => void;
+ onCancel: () => void;
+};
+export const PublicAccessConfirmationModal = ({
+ opened,
+ onClose,
+ onConfirm,
+ onCancel,
+}: PublicAccessConfirmationModalProps): JSX.Element => {
+ const { t } = useTranslation(["brain"]);
+
+ return (
+ }>
+
+
+
+
+ {t("confirm_set_brain_status_to_public")}
+
+
+ {t("cancel_set_brain_status_to_public")}
+
+
+
+ );
+};
diff --git a/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts b/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts
index 15a286afc..3c93b757c 100644
--- a/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts
+++ b/frontend/lib/components/AddBrainModal/hooks/useAddBrainModal.ts
@@ -13,6 +13,7 @@ import { useBrainContext } from "@/lib/context/BrainProvider/hooks/useBrainConte
import { defineMaxTokens } from "@/lib/helpers/defineMaxTokens";
import { getAccessibleModels } from "@/lib/helpers/getAccessibleModels";
import { useToast } from "@/lib/hooks";
+import { BrainStatus } from "@/lib/types/brainConfig";
import { useQuery } from "@tanstack/react-query";
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
@@ -24,13 +25,31 @@ export const useAddBrainModal = () => {
const { setAsDefaultBrain } = useBrainApi();
const { createPrompt } = usePromptApi();
const [isShareModalOpen, setIsShareModalOpen] = useState(false);
-
+ const [
+ isPublicAccessConfirmationModalOpened,
+ setIsPublicAccessConfirmationModalOpened,
+ ] = useState(false);
const { getUser } = useUserApi();
+ const brainStatusOptions: {
+ label: string;
+ value: BrainStatus;
+ }[] = [
+ {
+ label: t("private_brain_label", { ns: "brain" }),
+ value: "private",
+ },
+ {
+ label: t("public_brain_label", { ns: "brain" }),
+ value: "public",
+ },
+ ];
+
const { data: userData } = useQuery({
queryKey: [USER_DATA_KEY],
queryFn: getUser,
});
+
const defaultValues = {
...defaultBrainConfig,
name: "",
@@ -50,12 +69,19 @@ export const useAddBrainModal = () => {
const model = watch("model");
const temperature = watch("temperature");
const maxTokens = watch("maxTokens");
+ const status = watch("status");
const accessibleModels = getAccessibleModels({
openAiKey,
userData,
});
+ useEffect(() => {
+ if (status === "public") {
+ setIsPublicAccessConfirmationModalOpened(true);
+ }
+ }, [status]);
+
useEffect(() => {
setValue("maxTokens", Math.min(maxTokens, defineMaxTokens(model)));
}, [maxTokens, model, setValue]);
@@ -95,6 +121,7 @@ export const useAddBrainModal = () => {
openai_api_key: openAiKey,
temperature,
prompt_id,
+ status,
});
if (createdBrainId === undefined) {
@@ -157,17 +184,32 @@ export const useAddBrainModal = () => {
});
};
+ const onConfirmPublicAccess = () => {
+ setIsPublicAccessConfirmationModalOpened(false);
+ };
+
+ const onCancelPublicAccess = () => {
+ setValue("status", "private", {
+ shouldDirty: true,
+ });
+ setIsPublicAccessConfirmationModalOpened(false);
+ };
+
return {
isShareModalOpen,
setIsShareModalOpen,
handleSubmit,
register,
- openAiKey: openAiKey === "" ? undefined : openAiKey,
model,
temperature,
maxTokens,
isPending,
accessibleModels,
pickPublicPrompt,
+ brainStatusOptions,
+ status,
+ isPublicAccessConfirmationModalOpened,
+ onConfirmPublicAccess,
+ onCancelPublicAccess,
};
};
diff --git a/frontend/lib/components/AddBrainModal/styles.css b/frontend/lib/components/AddBrainModal/styles.css
new file mode 100644
index 000000000..386acec86
--- /dev/null
+++ b/frontend/lib/components/AddBrainModal/styles.css
@@ -0,0 +1,3 @@
+.foo {
+ white-space: 'pre-wrap';
+}
\ No newline at end of file
diff --git a/frontend/lib/components/ui/Modal.tsx b/frontend/lib/components/ui/Modal.tsx
index e3db4e5d0..5715528e3 100644
--- a/frontend/lib/components/ui/Modal.tsx
+++ b/frontend/lib/components/ui/Modal.tsx
@@ -11,7 +11,7 @@ type CommonModalProps = {
title?: string;
desc?: string;
children?: ReactNode;
- Trigger: ReactNode;
+ Trigger?: ReactNode;
CloseTrigger?: ReactNode;
isOpen?: undefined;
setOpen?: undefined;
@@ -38,7 +38,9 @@ export const Modal = ({
return (
- {Trigger}
+ {Trigger !== undefined && (
+ {Trigger}
+ )}
{customIsOpen ?? isOpen ? (
@@ -48,7 +50,6 @@ export const Modal = ({
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
- // transition={{ duration: 0.4, ease: "easeInOut" }}
>
,
+ HTMLInputElement
+ > {
+ name: string;
+ items: RadioItem[];
+ label?: string;
+ className?: string;
+}
+
+export const Radio = forwardRef(
+ ({ items, label, className, value, ...props }, ref) => (
+
+ {label !== undefined && (
+
{label}
+ )}
+
+ {items.map((item) => (
+
+
+
+ {item.label}
+
+
+ ))}
+
+
+ )
+);
+
+Radio.displayName = "Radio";
diff --git a/frontend/lib/config/defaultBrainConfig.ts b/frontend/lib/config/defaultBrainConfig.ts
index 361fcdfad..3930b50e1 100644
--- a/frontend/lib/config/defaultBrainConfig.ts
+++ b/frontend/lib/config/defaultBrainConfig.ts
@@ -11,4 +11,5 @@ export const defaultBrainConfig: BrainConfig = {
supabaseKey: undefined,
supabaseUrl: undefined,
prompt_id: undefined,
+ status: "private",
};
diff --git a/frontend/lib/types/brainConfig.ts b/frontend/lib/types/brainConfig.ts
index 46cf38e47..a97813fc5 100644
--- a/frontend/lib/types/brainConfig.ts
+++ b/frontend/lib/types/brainConfig.ts
@@ -1,5 +1,9 @@
import { UUID } from "crypto";
+export const brainStatuses = ["private", "public"] as const;
+
+export type BrainStatus = (typeof brainStatuses)[number];
+
export type BrainConfig = {
model: Model;
temperature: number;
@@ -11,6 +15,7 @@ export type BrainConfig = {
supabaseUrl?: string;
supabaseKey?: string;
prompt_id?: UUID;
+ status: BrainStatus;
};
export type BrainConfigContextType = {
diff --git a/frontend/package.json b/frontend/package.json
index 265e39826..db235540d 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -26,6 +26,7 @@
"@radix-ui/react-accordion": "^1.1.2",
"@radix-ui/react-dialog": "^1.0.3",
"@radix-ui/react-popover": "^1.0.6",
+ "@radix-ui/react-radio-group": "^1.1.3",
"@radix-ui/react-select": "^1.2.2",
"@radix-ui/react-tabs": "^1.0.4",
"@radix-ui/react-toast": "^1.1.3",
diff --git a/frontend/public/locales/en/brain.json b/frontend/public/locales/en/brain.json
index d4d55e71f..48a51926b 100644
--- a/frontend/public/locales/en/brain.json
+++ b/frontend/public/locales/en/brain.json
@@ -26,5 +26,12 @@
"userRemoveFailed": "Failed to remove {{email}} from brain",
"defaultBrain": "Default Brain",
"setDefaultBrain": "Set as default brain",
- "errorCreatingBrain": "Error occurred while creating a brain"
+ "errorCreatingBrain": "Error occurred while creating a brain",
+ "private_brain_label": "Private",
+ "public_brain_label": "Public",
+ "brain_status_label":"Access",
+ "set_brain_status_to_public_modal_title": "Are you sure you want to set this as Public ? ",
+ "set_brain_status_to_public_modal_description": "Every Quivr user will be able to: - Subscribe to your brain in the 'brains library'. - Use this brain and check the prompt and model configurations. They won't have access to your uploaded files and people section.",
+ "confirm_set_brain_status_to_public": "Yes, set as public",
+ "cancel_set_brain_status_to_public": "No, keep it private"
}
\ No newline at end of file
diff --git a/frontend/public/locales/es/brain.json b/frontend/public/locales/es/brain.json
index ded48cf56..70848835c 100644
--- a/frontend/public/locales/es/brain.json
+++ b/frontend/public/locales/es/brain.json
@@ -26,5 +26,12 @@
"userRoleUpdated": "Actualizado {{email}} a {{newRole}}",
"userRoleUpdateFailed": "Error actualizado {{email}} a {{newRole}} ",
"usersInvited": "Usuarios invitados correctamente",
- "usersWithAccess": "Usuarios con acceso"
+ "usersWithAccess": "Usuarios con acceso",
+ "private_brain_label": "Privado",
+ "public_brain_label": "Público",
+ "brain_status_label": "Estado",
+ "set_brain_status_to_public_modal_title": "¿Estás seguro de querer establecer esto como Público ? ",
+ "set_brain_status_to_public_modal_description": "Cada usuario de Quivr podrá: - Suscribirse a tu cerebro en la 'biblioteca de cerebros'. - Usar este cerebro y comprobar las configuraciones de las indicaciones y el modelo. No tendrán acceso a tus archivos cargados ni a la sección de personas.",
+ "confirm_set_brain_status_to_public": "Sí, establecer como público",
+ "cancel_set_brain_status_to_public": "No, mantenerlo privado"
}
\ No newline at end of file
diff --git a/frontend/public/locales/fr/brain.json b/frontend/public/locales/fr/brain.json
index 12c8188a6..7424ec777 100644
--- a/frontend/public/locales/fr/brain.json
+++ b/frontend/public/locales/fr/brain.json
@@ -26,5 +26,12 @@
"userRoleUpdated": "Mis à jour {{email}} en {{newRole}}",
"userRoleUpdateFailed": "Échec de la mise à jour de {{email}} en {{newRole}}",
"usersInvited": "Utilisateurs invités avec succès",
- "usersWithAccess": "Utilisateurs ayant accès"
+ "usersWithAccess": "Utilisateurs ayant accès",
+ "private_brain_label": "Privé",
+ "public_brain_label": "Public",
+ "brain_status_label": "Statut",
+ "set_brain_status_to_public_modal_title": "Êtes-vous sûr de vouloir définir ceci comme Public ? ",
+ "set_brain_status_to_public_modal_description": "Chaque utilisateur de Quivr pourra : - S'abonner à votre cerveau dans la 'bibliothèque des cerveaux'. - Utiliser ce cerveau et vérifier les configurations de prompts et de modèles. Ils n'auront pas accès à vos fichiers téléchargés et à la section des personnes.",
+ "confirm_set_brain_status_to_public": "Oui, définir comme public",
+ "cancel_set_brain_status_to_public": "Non, le garder privé"
}
\ No newline at end of file
diff --git a/frontend/public/locales/pt-br/brain.json b/frontend/public/locales/pt-br/brain.json
index 22cd7b484..74d897ec8 100644
--- a/frontend/public/locales/pt-br/brain.json
+++ b/frontend/public/locales/pt-br/brain.json
@@ -26,5 +26,12 @@
"userRemoveFailed": "Remoção do e-mail {{email}} do cérebro falhou",
"defaultBrain": "Cérebro padrão",
"setDefaultBrain": "Defina como o cérebro padrão",
- "errorCreatingBrain": "Um erro aconteceu ao criar o cérebro"
+ "errorCreatingBrain": "Um erro aconteceu ao criar o cérebro",
+ "private_brain_label": "Privado",
+ "public_brain_label": "Público",
+ "brain_status_label": "Status",
+ "set_brain_status_to_public_modal_title": "Tem certeza de que deseja definir isso como Público ? ",
+ "set_brain_status_to_public_modal_description": "Cada usuário do Quivr poderá: - Se inscrever em seu cérebro na 'biblioteca de cérebros'. - Usar este cérebro e verificar as configurações de prompts e modelos. Eles não terão acesso aos seus arquivos enviados e à seção de pessoas.",
+ "confirm_set_brain_status_to_public": "Sim, definir como público",
+ "cancel_set_brain_status_to_public": "Não, mantê-lo privado"
}
\ No newline at end of file
diff --git a/frontend/public/locales/ru/brain.json b/frontend/public/locales/ru/brain.json
index c15653c83..1b4b10444 100644
--- a/frontend/public/locales/ru/brain.json
+++ b/frontend/public/locales/ru/brain.json
@@ -26,5 +26,12 @@
"userRemoveFailed": "Не удалось удалить {{email}} из мозга",
"defaultBrain": "Мозг по умолчанию",
"setDefaultBrain": "Установить как мозг по умолчанию",
- "errorCreatingBrain": "Произошла ошибка при создании мозга"
+ "errorCreatingBrain": "Произошла ошибка при создании мозга",
+ "private_brain_label": "Приватный",
+ "public_brain_label": "Публичный",
+ "brain_status_label": "Статус",
+ "set_brain_status_to_public_modal_title": "Вы уверены, что хотите установить это как Публичный ? ",
+ "set_brain_status_to_public_modal_description": "Каждый пользователь Quivr сможет: - Подписаться на ваш мозг в 'библиотеке мозгов'. - Использовать этот мозг и проверить настройки подсказок и модели. У них не будет доступа к вашим загруженным файлам и разделу 'люди'.",
+ "confirm_set_brain_status_to_public": "Да, установить как публичный",
+ "cancel_set_brain_status_to_public": "Нет, оставить приватным"
}
\ No newline at end of file
diff --git a/frontend/public/locales/zh-cn/brain.json b/frontend/public/locales/zh-cn/brain.json
index 1bc1b071b..e337f508e 100644
--- a/frontend/public/locales/zh-cn/brain.json
+++ b/frontend/public/locales/zh-cn/brain.json
@@ -26,5 +26,12 @@
"userRemoveFailed": "无法从大脑中删除 {{email}}",
"defaultBrain": "默认大脑",
"setDefaultBrain": "设置为默认大脑",
- "errorCreatingBrain": "创建大脑时发生错误"
+ "errorCreatingBrain": "创建大脑时发生错误",
+ "private_brain_label": "私有",
+ "public_brain_label": "公开",
+ "brain_status_label": "状态",
+ "set_brain_status_to_public_modal_title": "您确定要将此设置为公共 吗? ",
+ "set_brain_status_to_public_modal_description": "每个 Quivr 用户将能够: - 在 '大脑库' 中订阅您的大脑。 - 使用此大脑并检查提示和模型配置。 他们将无法访问您上传的文件和人员部分。",
+ "confirm_set_brain_status_to_public": "是的,设为公共",
+ "cancel_set_brain_status_to_public": "不,保持私密"
}
\ No newline at end of file
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 0e6368c99..3706f8e18 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -950,6 +950,23 @@
"@babel/runtime" "^7.13.10"
"@radix-ui/react-slot" "1.0.2"
+"@radix-ui/react-radio-group@^1.1.3":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz#3197f5dcce143bcbf961471bf89320735c0212d3"
+ integrity sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-presence" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-roving-focus" "1.0.4"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+ "@radix-ui/react-use-previous" "1.0.1"
+ "@radix-ui/react-use-size" "1.0.1"
+
"@radix-ui/react-roving-focus@1.0.4":
version "1.0.4"
resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz"
@@ -2388,7 +2405,7 @@
"@types/debug@^4.0.0":
version "4.1.8"
- resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317"
integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==
dependencies:
"@types/ms" "*"
@@ -2440,14 +2457,14 @@
"@types/mdast@^3.0.0":
version "3.0.12"
- resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz"
+ resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.12.tgz#beeb511b977c875a5b0cc92eab6fcac2f0895514"
integrity sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==
dependencies:
"@types/unist" "^2"
"@types/ms@*":
version "0.7.31"
- resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
"@types/node@*", "@types/node@20.1.7":
@@ -2465,11 +2482,16 @@
resolved "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz"
integrity sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==
-"@types/prop-types@*", "@types/prop-types@^15.0.0":
+"@types/prop-types@*":
version "15.7.5"
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
+"@types/prop-types@^15.0.0":
+ version "15.7.6"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.6.tgz#bbf819813d6be21011b8f5801058498bec555572"
+ integrity sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==
+
"@types/react-dom@18", "@types/react-dom@^18.0.0":
version "18.2.7"
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz"
@@ -3085,7 +3107,7 @@ chalk@^4.0.0, chalk@^4.1.0:
character-entities@^2.0.0:
version "2.0.2"
- resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
check-error@^1.0.2:
@@ -3423,7 +3445,7 @@ decimal.js@^10.4.3:
decode-named-character-reference@^1.0.0:
version "1.0.2"
- resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e"
integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
dependencies:
character-entities "^2.0.0"
@@ -3551,7 +3573,7 @@ diff-sequences@^29.4.3:
diff@^5.0.0:
version "5.1.0"
- resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40"
integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==
dir-glob@^3.0.1:
@@ -4539,7 +4561,7 @@ hast-util-to-text@^3.0.0:
hast-util-whitespace@^2.0.0:
version "2.0.1"
- resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557"
integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==
highlight.js@~11.8.0:
@@ -4679,7 +4701,7 @@ ini@~1.3.0:
inline-style-parser@0.1.1:
version "0.1.1"
- resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz"
+ resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
inline-style-prefixer@^6.0.0:
@@ -5065,7 +5087,7 @@ jsonc-parser@^3.2.0:
kleur@^4.0.3:
version "4.1.5"
- resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
language-subtag-registry@~0.3.2:
@@ -5212,7 +5234,7 @@ magic-string@^0.30.0:
mdast-util-definitions@^5.0.0:
version "5.1.2"
- resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz"
+ resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz#9910abb60ac5d7115d6819b57ae0bcef07a3f7a7"
integrity sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==
dependencies:
"@types/mdast" "^3.0.0"
@@ -5221,7 +5243,7 @@ mdast-util-definitions@^5.0.0:
mdast-util-from-markdown@^1.0.0:
version "1.3.1"
- resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0"
integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==
dependencies:
"@types/mdast" "^3.0.0"
@@ -5239,7 +5261,7 @@ mdast-util-from-markdown@^1.0.0:
mdast-util-to-hast@^12.1.0:
version "12.3.0"
- resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz#045d2825fb04374e59970f5b3f279b5700f6fb49"
integrity sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==
dependencies:
"@types/hast" "^2.0.0"
@@ -5253,7 +5275,7 @@ mdast-util-to-hast@^12.1.0:
mdast-util-to-string@^3.1.0:
version "3.2.0"
- resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789"
integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==
dependencies:
"@types/mdast" "^3.0.0"
@@ -5275,7 +5297,7 @@ merge2@^1.3.0, merge2@^1.4.1:
micromark-core-commonmark@^1.0.1:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8"
integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==
dependencies:
decode-named-character-reference "^1.0.0"
@@ -5297,7 +5319,7 @@ micromark-core-commonmark@^1.0.1:
micromark-factory-destination@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f"
integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==
dependencies:
micromark-util-character "^1.0.0"
@@ -5306,7 +5328,7 @@ micromark-factory-destination@^1.0.0:
micromark-factory-label@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68"
integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==
dependencies:
micromark-util-character "^1.0.0"
@@ -5316,7 +5338,7 @@ micromark-factory-label@^1.0.0:
micromark-factory-space@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf"
integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==
dependencies:
micromark-util-character "^1.0.0"
@@ -5324,7 +5346,7 @@ micromark-factory-space@^1.0.0:
micromark-factory-title@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1"
integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==
dependencies:
micromark-factory-space "^1.0.0"
@@ -5334,7 +5356,7 @@ micromark-factory-title@^1.0.0:
micromark-factory-whitespace@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705"
integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==
dependencies:
micromark-factory-space "^1.0.0"
@@ -5344,7 +5366,7 @@ micromark-factory-whitespace@^1.0.0:
micromark-util-character@^1.0.0:
version "1.2.0"
- resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc"
integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==
dependencies:
micromark-util-symbol "^1.0.0"
@@ -5352,14 +5374,14 @@ micromark-util-character@^1.0.0:
micromark-util-chunked@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b"
integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==
dependencies:
micromark-util-symbol "^1.0.0"
micromark-util-classify-character@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d"
integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==
dependencies:
micromark-util-character "^1.0.0"
@@ -5368,7 +5390,7 @@ micromark-util-classify-character@^1.0.0:
micromark-util-combine-extensions@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84"
integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==
dependencies:
micromark-util-chunked "^1.0.0"
@@ -5376,14 +5398,14 @@ micromark-util-combine-extensions@^1.0.0:
micromark-util-decode-numeric-character-reference@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6"
integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==
dependencies:
micromark-util-symbol "^1.0.0"
micromark-util-decode-string@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c"
integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==
dependencies:
decode-named-character-reference "^1.0.0"
@@ -5393,31 +5415,31 @@ micromark-util-decode-string@^1.0.0:
micromark-util-encode@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5"
integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==
micromark-util-html-tag-name@^1.0.0:
version "1.2.0"
- resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588"
integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==
micromark-util-normalize-identifier@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7"
integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==
dependencies:
micromark-util-symbol "^1.0.0"
micromark-util-resolve-all@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188"
integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==
dependencies:
micromark-util-types "^1.0.0"
micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0:
version "1.2.0"
- resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d"
integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==
dependencies:
micromark-util-character "^1.0.0"
@@ -5426,7 +5448,7 @@ micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0:
micromark-util-subtokenize@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1"
integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==
dependencies:
micromark-util-chunked "^1.0.0"
@@ -5436,17 +5458,17 @@ micromark-util-subtokenize@^1.0.0:
micromark-util-symbol@^1.0.0:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142"
integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==
micromark-util-types@^1.0.0, micromark-util-types@^1.0.1:
version "1.1.0"
- resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283"
integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==
micromark@^3.0.0:
version "3.2.0"
- resolved "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9"
integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==
dependencies:
"@types/debug" "^4.0.0"
@@ -5545,7 +5567,7 @@ mlly@^1.2.0, mlly@^1.4.0:
mri@^1.1.0:
version "1.2.0"
- resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
ms@2.0.0:
@@ -6240,7 +6262,7 @@ react-is@^18.0.0:
react-markdown@^8.0.7:
version "8.0.7"
- resolved "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz"
+ resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.7.tgz#c8dbd1b9ba5f1c5e7e5f2a44de465a3caafdf89b"
integrity sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==
dependencies:
"@types/hast" "^2.0.0"
@@ -6382,7 +6404,7 @@ rehype-highlight@^6.0.0:
remark-parse@^10.0.0:
version "10.0.2"
- resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.2.tgz#ca241fde8751c2158933f031a4e3efbaeb8bc262"
integrity sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==
dependencies:
"@types/mdast" "^3.0.0"
@@ -6391,7 +6413,7 @@ remark-parse@^10.0.0:
remark-rehype@^10.0.0:
version "10.1.0"
- resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz"
+ resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279"
integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==
dependencies:
"@types/hast" "^2.0.0"
@@ -6491,7 +6513,7 @@ run-parallel@^1.1.9:
sade@^1.7.3:
version "1.8.1"
- resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz"
+ resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
dependencies:
mri "^1.1.0"
@@ -6832,7 +6854,7 @@ strip-literal@^1.0.1:
style-to-object@^0.4.0:
version "0.4.2"
- resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.2.tgz#a8247057111dea8bd3b8a1a66d2d0c9cf9218a54"
integrity sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==
dependencies:
inline-style-parser "0.1.1"
@@ -7260,7 +7282,7 @@ unist-util-find-after@^4.0.0:
unist-util-generated@^2.0.0:
version "2.0.1"
- resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae"
integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==
unist-util-is@^5.0.0:
@@ -7272,7 +7294,7 @@ unist-util-is@^5.0.0:
unist-util-position@^4.0.0:
version "4.0.4"
- resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037"
integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==
dependencies:
"@types/unist" "^2.0.0"
@@ -7368,7 +7390,7 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2:
uvu@^0.5.0:
version "0.5.6"
- resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz"
+ resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df"
integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==
dependencies:
dequal "^2.0.0"