release: v4.3.1

This commit is contained in:
Amruth Pillai
2025-01-11 15:38:26 +01:00
parent 54bace451c
commit 58ef309b68
25 changed files with 303 additions and 131 deletions

View File

@ -104,7 +104,13 @@ export const AwardsDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -98,7 +98,13 @@ export const CertificationsDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -131,7 +131,13 @@ export const CustomSectionDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -141,7 +141,13 @@ export const EducationDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -117,7 +117,13 @@ export const ExperienceDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -74,10 +74,10 @@ export const LanguagesDialog = () => {
}} }}
/> />
{field.value === 0 ? ( {field.value > 0 ? (
<span className="text-base font-bold">{t`Hidden`}</span>
) : (
<span className="text-base font-bold">{field.value}</span> <span className="text-base font-bold">{field.value}</span>
) : (
<span className="text-base font-bold">{t`Hidden`}</span>
)} )}
</div> </div>
</FormControl> </FormControl>

View File

@ -51,7 +51,7 @@ export const ProfilesDialog = () => {
<FormLabel>{t`Network`}</FormLabel> <FormLabel>{t`Network`}</FormLabel>
<FormControl> <FormControl>
{/* eslint-disable-next-line lingui/no-unlocalized-strings */} {/* eslint-disable-next-line lingui/no-unlocalized-strings */}
<Input {...field} placeholder="LinkedIn" /> <Input {...field} placeholder="GitHub" />
</FormControl> </FormControl>
<FormMessage /> <FormMessage />
</FormItem> </FormItem>
@ -79,7 +79,7 @@ export const ProfilesDialog = () => {
<FormItem className="sm:col-span-2"> <FormItem className="sm:col-span-2">
<FormLabel>{t`Website`}</FormLabel> <FormLabel>{t`Website`}</FormLabel>
<FormControl> <FormControl>
<URLInput {...field} placeholder="https://linkedin.com/in/johndoe" /> <URLInput {...field} placeholder="https://github.com/johndoe" />
</FormControl> </FormControl>
<FormMessage /> <FormMessage />
</FormItem> </FormItem>
@ -100,7 +100,7 @@ export const ProfilesDialog = () => {
<Input <Input
{...field} {...field}
id="iconSlug" id="iconSlug"
placeholder="linkedin" placeholder="github"
onChange={(event) => { onChange={(event) => {
field.onChange(event); field.onChange(event);
handleIconChange(event); handleIconChange(event);

View File

@ -111,7 +111,13 @@ export const ProjectsDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -98,7 +98,13 @@ export const PublicationsDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -84,7 +84,13 @@ export const ReferencesDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -88,10 +88,10 @@ export const SkillsDialog = () => {
}} }}
/> />
{field.value === 0 ? ( {field.value > 0 ? (
<span className="text-base font-bold">{t`Hidden`}</span>
) : (
<span className="text-base font-bold">{field.value}</span> <span className="text-base font-bold">{field.value}</span>
) : (
<span className="text-base font-bold">{t`Hidden`}</span>
)} )}
</div> </div>
</FormControl> </FormControl>

View File

@ -112,7 +112,13 @@ export const VolunteerDialog = () => {
{...field} {...field}
content={field.value} content={field.value}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
field.onChange(value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
field.onChange(value); field.onChange(value);

View File

@ -1,4 +1,4 @@
import { t } from "@lingui/macro"; import { t, Trans } from "@lingui/macro";
import { createId } from "@paralleldrive/cuid2"; import { createId } from "@paralleldrive/cuid2";
import { DotsSixVertical, Envelope, Plus, X } from "@phosphor-icons/react"; import { DotsSixVertical, Envelope, Plus, X } from "@phosphor-icons/react";
import { CustomField as ICustomField } from "@reactive-resume/schema"; import { CustomField as ICustomField } from "@reactive-resume/schema";
@ -37,10 +37,10 @@ export const CustomField = ({ field, onChange, onRemove }: CustomFieldProps) =>
animate={{ opacity: 1, y: 0 }} animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -50 }} exit={{ opacity: 0, y: -50 }}
> >
<div className="flex items-end justify-between space-x-2"> <div className="flex items-end justify-between">
<Button <Button
size="icon" size="icon"
variant="link" variant="ghost"
className="shrink-0" className="shrink-0"
onPointerDown={(event) => { onPointerDown={(event) => {
controls.start(event); controls.start(event);
@ -52,12 +52,12 @@ export const CustomField = ({ field, onChange, onRemove }: CustomFieldProps) =>
<Popover> <Popover>
<Tooltip content={t`Icon`}> <Tooltip content={t`Icon`}>
<PopoverTrigger asChild> <PopoverTrigger asChild>
<Button size="icon" variant="ghost"> <Button size="icon" variant="ghost" className="shrink-0">
{field.icon ? <i className={cn(`ph ph-${field.icon}`)} /> : <Envelope />} {field.icon ? <i className={cn(`ph ph-${field.icon}`)} /> : <Envelope />}
</Button> </Button>
</PopoverTrigger> </PopoverTrigger>
</Tooltip> </Tooltip>
<PopoverContent className="p-1.5"> <PopoverContent side="bottom" align="start" className="flex flex-col gap-y-1.5 p-1.5">
<Input <Input
value={field.icon} value={field.icon}
placeholder={t`Enter Phosphor Icon`} placeholder={t`Enter Phosphor Icon`}
@ -65,19 +65,35 @@ export const CustomField = ({ field, onChange, onRemove }: CustomFieldProps) =>
onChange({ ...field, icon: event.target.value }); onChange({ ...field, icon: event.target.value });
}} }}
/> />
<p className="text-xs opacity-80">
<Trans>
Visit{" "}
<a
href="https://phosphoricons.com/"
target="_blank"
className="underline"
rel="noopener noreferrer nofollow"
>
Phosphor Icons
</a>{" "}
for a list of available icons
</Trans>
</p>
</PopoverContent> </PopoverContent>
</Popover> </Popover>
<Input <Input
className="mx-2"
placeholder={t`Name`} placeholder={t`Name`}
value={field.name} value={field.name}
className="!ml-0"
onChange={(event) => { onChange={(event) => {
handleChange("name", event.target.value); handleChange("name", event.target.value);
}} }}
/> />
<Input <Input
className="mx-2"
placeholder={t`Value`} placeholder={t`Value`}
value={field.value} value={field.value}
onChange={(event) => { onChange={(event) => {
@ -87,8 +103,8 @@ export const CustomField = ({ field, onChange, onRemove }: CustomFieldProps) =>
<Button <Button
size="icon" size="icon"
variant="link" variant="ghost"
className="!ml-0 shrink-0" className="shrink-0"
onClick={() => { onClick={() => {
onRemove(field.id); onRemove(field.id);
}} }}
@ -111,7 +127,7 @@ export const CustomFieldsSection = ({ className }: Props) => {
const onAddCustomField = () => { const onAddCustomField = () => {
setValue("basics.customFields", [ setValue("basics.customFields", [
...customFields, ...customFields,
{ id: createId(), icon: "", name: "", value: "" }, { id: createId(), icon: "envelope", name: "", value: "" },
]); ]);
}; };

View File

@ -70,12 +70,15 @@ export const SectionBase = <T extends SectionItem>({ id, title, description }: P
const onCreate = () => { const onCreate = () => {
open("create", { id }); open("create", { id });
}; };
const onUpdate = (item: T) => { const onUpdate = (item: T) => {
open("update", { id, item }); open("update", { id, item });
}; };
const onDuplicate = (item: T) => { const onDuplicate = (item: T) => {
open("duplicate", { id, item }); open("duplicate", { id, item });
}; };
const onDelete = (item: T) => { const onDelete = (item: T) => {
open("delete", { id, item }); open("delete", { id, item });
}; };

View File

@ -1,6 +1,7 @@
import { t } from "@lingui/macro"; import { t } from "@lingui/macro";
import { createId } from "@paralleldrive/cuid2"; import { createId } from "@paralleldrive/cuid2";
import { CopySimple, PencilSimple, Plus } from "@phosphor-icons/react"; import { CopySimple, PencilSimple, Plus } from "@phosphor-icons/react";
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
import { SectionItem, SectionWithItem } from "@reactive-resume/schema"; import { SectionItem, SectionWithItem } from "@reactive-resume/schema";
import { import {
AlertDialog, AlertDialog,
@ -14,6 +15,7 @@ import {
Button, Button,
Dialog, Dialog,
DialogContent, DialogContent,
DialogDescription,
DialogFooter, DialogFooter,
DialogHeader, DialogHeader,
DialogTitle, DialogTitle,
@ -158,6 +160,10 @@ export const SectionDialog = <T extends SectionItem>({
</h2> </h2>
</div> </div>
</DialogTitle> </DialogTitle>
<VisuallyHidden>
<DialogDescription />
</VisuallyHidden>
</DialogHeader> </DialogHeader>
{children} {children}

View File

@ -3,11 +3,12 @@ import { CSS } from "@dnd-kit/utilities";
import { t } from "@lingui/macro"; import { t } from "@lingui/macro";
import { CopySimple, DotsSixVertical, PencilSimple, TrashSimple } from "@phosphor-icons/react"; import { CopySimple, DotsSixVertical, PencilSimple, TrashSimple } from "@phosphor-icons/react";
import { import {
ContextMenu, DropdownMenu,
ContextMenuCheckboxItem, DropdownMenuCheckboxItem,
ContextMenuContent, DropdownMenuContent,
ContextMenuItem, DropdownMenuItem,
ContextMenuTrigger, DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@reactive-resume/ui"; } from "@reactive-resume/ui";
import { cn } from "@reactive-resume/utils"; import { cn } from "@reactive-resume/utils";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
@ -68,8 +69,8 @@ export const SectionListItem = ({
</div> </div>
{/* List Item */} {/* List Item */}
<ContextMenu> <DropdownMenu>
<ContextMenuTrigger asChild> <DropdownMenuTrigger asChild>
<div <div
className={cn( className={cn(
"flex-1 cursor-context-menu p-4 hover:bg-secondary-accent", "flex-1 cursor-context-menu p-4 hover:bg-secondary-accent",
@ -80,25 +81,26 @@ export const SectionListItem = ({
<h4 className="font-medium leading-relaxed">{title}</h4> <h4 className="font-medium leading-relaxed">{title}</h4>
{description && <p className="text-xs leading-relaxed opacity-50">{description}</p>} {description && <p className="text-xs leading-relaxed opacity-50">{description}</p>}
</div> </div>
</ContextMenuTrigger> </DropdownMenuTrigger>
<ContextMenuContent> <DropdownMenuContent>
<ContextMenuCheckboxItem checked={visible} onCheckedChange={onToggleVisibility}> <DropdownMenuCheckboxItem checked={visible} onCheckedChange={onToggleVisibility}>
<span className="-ml-0.5">{t`Visible`}</span> <span className="-ml-0.5">{t`Visible`}</span>
</ContextMenuCheckboxItem> </DropdownMenuCheckboxItem>
<ContextMenuItem onClick={onUpdate}> <DropdownMenuSeparator />
<DropdownMenuItem onClick={onUpdate}>
<PencilSimple size={14} /> <PencilSimple size={14} />
<span className="ml-2">{t`Edit`}</span> <span className="ml-2">{t`Edit`}</span>
</ContextMenuItem> </DropdownMenuItem>
<ContextMenuItem onClick={onDuplicate}> <DropdownMenuItem onClick={onDuplicate}>
<CopySimple size={14} /> <CopySimple size={14} />
<span className="ml-2">{t`Copy`}</span> <span className="ml-2">{t`Copy`}</span>
</ContextMenuItem> </DropdownMenuItem>
<ContextMenuItem className="text-error" onClick={onDelete}> <DropdownMenuItem className="text-error" onClick={onDelete}>
<TrashSimple size={14} /> <TrashSimple size={14} />
<span className="ml-2">{t`Remove`}</span> <span className="ml-2">{t`Remove`}</span>
</ContextMenuItem> </DropdownMenuItem>
</ContextMenuContent> </DropdownMenuContent>
</ContextMenu> </DropdownMenu>
</div> </div>
</motion.section> </motion.section>
); );

View File

@ -32,7 +32,13 @@ export const SummarySection = () => {
<RichInput <RichInput
content={section.content} content={section.content}
footer={(editor) => ( footer={(editor) => (
<AiActions value={editor.getText()} onChange={editor.commands.setContent} /> <AiActions
value={editor.getText()}
onChange={(value) => {
editor.commands.setContent(value, true);
setValue("sections.summary.content", value);
}}
/>
)} )}
onChange={(value) => { onChange={(value) => {
setValue("sections.summary.content", value); setValue("sections.summary.content", value);

View File

@ -1,5 +1,6 @@
import { Card } from "@reactive-resume/ui"; import { Card } from "@reactive-resume/ui";
import { cn } from "@reactive-resume/utils"; import { cn } from "@reactive-resume/utils";
import { forwardRef } from "react";
import Tilt from "react-parallax-tilt"; import Tilt from "react-parallax-tilt";
import { defaultTiltProps } from "@/client/constants/parallax-tilt"; import { defaultTiltProps } from "@/client/constants/parallax-tilt";
@ -10,9 +11,11 @@ type Props = {
children?: React.ReactNode; children?: React.ReactNode;
}; };
export const BaseCard = ({ children, className, onClick }: Props) => ( export const BaseCard = forwardRef<HTMLDivElement, Props>(
({ children, className, onClick }, ref) => (
<Tilt {...defaultTiltProps}> <Tilt {...defaultTiltProps}>
<Card <Card
ref={ref}
className={cn( className={cn(
"relative flex aspect-[1/1.4142] scale-100 cursor-pointer items-center justify-center bg-secondary/50 p-0 transition-transform active:scale-95", "relative flex aspect-[1/1.4142] scale-100 cursor-pointer items-center justify-center bg-secondary/50 p-0 transition-transform active:scale-95",
className, className,
@ -22,4 +25,5 @@ export const BaseCard = ({ children, className, onClick }: Props) => (
{children} {children}
</Card> </Card>
</Tilt> </Tilt>
),
); );

View File

@ -9,11 +9,11 @@ import {
} from "@phosphor-icons/react"; } from "@phosphor-icons/react";
import { ResumeDto } from "@reactive-resume/dto"; import { ResumeDto } from "@reactive-resume/dto";
import { import {
ContextMenu, DropdownMenu,
ContextMenuContent, DropdownMenuContent,
ContextMenuItem, DropdownMenuItem,
ContextMenuSeparator, DropdownMenuSeparator,
ContextMenuTrigger, DropdownMenuTrigger,
} from "@reactive-resume/ui"; } from "@reactive-resume/ui";
import { cn } from "@reactive-resume/utils"; import { cn } from "@reactive-resume/utils";
import dayjs from "dayjs"; import dayjs from "dayjs";
@ -33,6 +33,7 @@ export const ResumeCard = ({ resume }: Props) => {
const { open } = useDialog<ResumeDto>("resume"); const { open } = useDialog<ResumeDto>("resume");
const { open: lockOpen } = useDialog<ResumeDto>("lock"); const { open: lockOpen } = useDialog<ResumeDto>("lock");
const template = resume.data.metadata.template;
const lastUpdated = dayjs().to(resume.updatedAt); const lastUpdated = dayjs().to(resume.updatedAt);
const onOpen = () => { const onOpen = () => {
@ -56,9 +57,9 @@ export const ResumeCard = ({ resume }: Props) => {
}; };
return ( return (
<ContextMenu> <DropdownMenu>
<ContextMenuTrigger> <DropdownMenuTrigger className="text-left">
<BaseCard className="space-y-0" onClick={onOpen}> <BaseCard className="cursor-context-menu space-y-0">
<AnimatePresence> <AnimatePresence>
{resume.locked && ( {resume.locked && (
<motion.div <motion.div
@ -81,39 +82,45 @@ export const ResumeCard = ({ resume }: Props) => {
<h4 className="line-clamp-2 font-medium">{resume.title}</h4> <h4 className="line-clamp-2 font-medium">{resume.title}</h4>
<p className="line-clamp-1 text-xs opacity-75">{t`Last updated ${lastUpdated}`}</p> <p className="line-clamp-1 text-xs opacity-75">{t`Last updated ${lastUpdated}`}</p>
</div> </div>
</BaseCard>
</ContextMenuTrigger>
<ContextMenuContent> <img
<ContextMenuItem onClick={onOpen}> src={`/templates/jpg/${template}.jpg`}
alt={template}
className="rounded-sm opacity-80"
/>
</BaseCard>
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuItem onClick={onOpen}>
<FolderOpen size={14} className="mr-2" /> <FolderOpen size={14} className="mr-2" />
{t`Open`} {t`Open`}
</ContextMenuItem> </DropdownMenuItem>
<ContextMenuItem onClick={onUpdate}> <DropdownMenuItem onClick={onUpdate}>
<PencilSimple size={14} className="mr-2" /> <PencilSimple size={14} className="mr-2" />
{t`Rename`} {t`Rename`}
</ContextMenuItem> </DropdownMenuItem>
<ContextMenuItem onClick={onDuplicate}> <DropdownMenuItem onClick={onDuplicate}>
<CopySimple size={14} className="mr-2" /> <CopySimple size={14} className="mr-2" />
{t`Duplicate`} {t`Duplicate`}
</ContextMenuItem> </DropdownMenuItem>
{resume.locked ? ( {resume.locked ? (
<ContextMenuItem onClick={onLockChange}> <DropdownMenuItem onClick={onLockChange}>
<LockOpen size={14} className="mr-2" /> <LockOpen size={14} className="mr-2" />
{t`Unlock`} {t`Unlock`}
</ContextMenuItem> </DropdownMenuItem>
) : ( ) : (
<ContextMenuItem onClick={onLockChange}> <DropdownMenuItem onClick={onLockChange}>
<Lock size={14} className="mr-2" /> <Lock size={14} className="mr-2" />
{t`Lock`} {t`Lock`}
</ContextMenuItem> </DropdownMenuItem>
)} )}
<ContextMenuSeparator /> <DropdownMenuSeparator />
<ContextMenuItem className="text-error" onClick={onDelete}> <DropdownMenuItem className="text-error" onClick={onDelete}>
<TrashSimple size={14} className="mr-2" /> <TrashSimple size={14} className="mr-2" />
{t`Delete`} {t`Delete`}
</ContextMenuItem> </DropdownMenuItem>
</ContextMenuContent> </DropdownMenuContent>
</ContextMenu> </DropdownMenu>
); );
}; };

View File

@ -12,7 +12,6 @@ import {
FormMessage, FormMessage,
Input, Input,
} from "@reactive-resume/ui"; } from "@reactive-resume/ui";
import { cn } from "@reactive-resume/utils";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import { z } from "zod"; import { z } from "zod";
@ -29,6 +28,7 @@ const formSchema = z.object({
.string() .string()
// eslint-disable-next-line lingui/no-unlocalized-strings // eslint-disable-next-line lingui/no-unlocalized-strings
.regex(/https?:\/\/[^/]+\/?v1$/, "That doesn't look like a valid URL") .regex(/https?:\/\/[^/]+\/?v1$/, "That doesn't look like a valid URL")
.or(z.literal(""))
.default(""), .default(""),
model: z.string().default(DEFAULT_MODEL), model: z.string().default(DEFAULT_MODEL),
maxTokens: z.number().default(DEFAULT_MAX_TOKENS), maxTokens: z.number().default(DEFAULT_MAX_TOKENS),
@ -39,7 +39,8 @@ type FormValues = z.infer<typeof formSchema>;
export const OpenAISettings = () => { export const OpenAISettings = () => {
const { apiKey, setApiKey, baseURL, setBaseURL, model, setModel, maxTokens, setMaxTokens } = const { apiKey, setApiKey, baseURL, setBaseURL, model, setModel, maxTokens, setMaxTokens } =
useOpenAiStore(); useOpenAiStore();
const isEnabled = !!apiKey || !!baseURL || !!model || !!maxTokens;
const isEnabled = !!apiKey;
const form = useForm<FormValues>({ const form = useForm<FormValues>({
resolver: zodResolver(formSchema), resolver: zodResolver(formSchema),
@ -75,7 +76,7 @@ export const OpenAISettings = () => {
return ( return (
<div className="space-y-6"> <div className="space-y-6">
<div> <div>
<h3 className="text-2xl font-bold leading-relaxed tracking-tight">{t`OpenAI Integration`}</h3> <h3 className="text-2xl font-bold leading-relaxed tracking-tight">{t`OpenAI/Ollama Integration`}</h3>
<p className="leading-relaxed opacity-75"> <p className="leading-relaxed opacity-75">
{t`You can make use of the OpenAI API to help you generate content, or improve your writing while composing your resume.`} {t`You can make use of the OpenAI API to help you generate content, or improve your writing while composing your resume.`}
</p> </p>
@ -97,16 +98,13 @@ export const OpenAISettings = () => {
from your settings. from your settings.
</Trans> </Trans>
</p> </p>
</div>
<h3 className="text-2xl font-bold leading-relaxed tracking-tight">{t`Ollama Integration`}</h3>
<div className="prose prose-sm prose-zinc max-w-full dark:prose-invert">
<p> <p>
<Trans> <Trans>
You can integrate with Ollama simply by setting the API key to `sk-1234567890abcdef` and You can also integrate with Ollama simply by setting the API key to
the Base URL to your Ollama URL, i.e. `http://localhost:11434/v1`. You can also pick and `sk-1234567890abcdef` and the Base URL to your Ollama URL, i.e.
choose models and set the max tokens. `http://localhost:11434/v1`. You can also pick and choose models and set the max tokens
as per your preference.
</Trans> </Trans>
</p> </p>
</div> </div>
@ -118,7 +116,7 @@ export const OpenAISettings = () => {
control={form.control} control={form.control}
render={({ field }) => ( render={({ field }) => (
<FormItem> <FormItem>
<FormLabel>{t`OpenAI / Ollama API Key`}</FormLabel> <FormLabel>{t`OpenAI/Ollama API Key`}</FormLabel>
<FormControl> <FormControl>
<Input type="password" placeholder="sk-..." {...field} /> <Input type="password" placeholder="sk-..." {...field} />
</FormControl> </FormControl>
@ -172,12 +170,7 @@ export const OpenAISettings = () => {
</FormItem> </FormItem>
)} )}
/> />
<div <div className="flex items-center space-x-2 self-end sm:col-start-2">
className={cn(
"flex items-center space-x-2 self-end sm:col-start-2",
!!form.formState.errors.apiKey && "self-center",
)}
>
<Button type="submit" disabled={!form.formState.isValid}> <Button type="submit" disabled={!form.formState.isValid}>
{isEnabled && <FloppyDisk className="mr-2" />} {isEnabled && <FloppyDisk className="mr-2" />}
{isEnabled ? t`Saved` : t`Save Locally`} {isEnabled ? t`Saved` : t`Save Locally`}

View File

@ -14,6 +14,8 @@ export class MailService {
async sendEmail(options: ISendMailOptions) { async sendEmail(options: ISendMailOptions) {
const smtpUrl = this.configService.get("SMTP_URL"); const smtpUrl = this.configService.get("SMTP_URL");
console.log(smtpUrl);
// If `SMTP_URL` is not set, log the email to the console // If `SMTP_URL` is not set, log the email to the console
if (!smtpUrl) { if (!smtpUrl) {
Logger.log(options, "MailService#sendEmail"); Logger.log(options, "MailService#sendEmail");

View File

@ -6,7 +6,7 @@ import { defaultItem, itemSchema } from "../shared";
export const languageSchema = itemSchema.extend({ export const languageSchema = itemSchema.extend({
name: z.string().min(1), name: z.string().min(1),
description: z.string(), description: z.string(),
level: z.number().min(0).max(5).default(1), level: z.coerce.number().min(0).max(5).default(1),
}); });
// Type // Type

View File

@ -6,7 +6,7 @@ import { defaultItem, itemSchema } from "../shared";
export const skillSchema = itemSchema.extend({ export const skillSchema = itemSchema.extend({
name: z.string(), name: z.string(),
description: z.string(), description: z.string(),
level: z.number().min(0).max(5).default(1), level: z.coerce.number().min(0).max(5).default(1),
keywords: z.array(z.string()).default([]), keywords: z.array(z.string()).default([]),
}); });

View File

@ -1,7 +1,7 @@
{ {
"name": "@reactive-resume/source", "name": "@reactive-resume/source",
"description": "A free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.", "description": "A free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.",
"version": "4.3.0", "version": "4.3.1",
"license": "MIT", "license": "MIT",
"private": true, "private": true,
"author": { "author": {
@ -166,6 +166,7 @@
"@radix-ui/react-toggle": "^1.1.0", "@radix-ui/react-toggle": "^1.1.0",
"@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-toggle-group": "^1.1.0",
"@radix-ui/react-tooltip": "^1.1.2", "@radix-ui/react-tooltip": "^1.1.2",
"@radix-ui/react-visually-hidden": "^1.1.1",
"@swc/helpers": "^0.5.12", "@swc/helpers": "^0.5.12",
"@tanstack/react-query": "^5.53.2", "@tanstack/react-query": "^5.53.2",
"@tiptap/extension-highlight": "^2.6.6", "@tiptap/extension-highlight": "^2.6.6",

130
pnpm-lock.yaml generated
View File

@ -40,7 +40,7 @@ importers:
version: 4.11.3(react@18.3.1) version: 4.11.3(react@18.3.1)
'@nestjs-modules/mailer': '@nestjs-modules/mailer':
specifier: ^2.0.2 specifier: ^2.0.2
version: 2.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(nodemailer@6.9.14) version: 2.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(nodemailer@6.9.14)
'@nestjs/axios': '@nestjs/axios':
specifier: ^3.0.3 specifier: ^3.0.3
version: 3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1) version: 3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1)
@ -64,13 +64,13 @@ importers:
version: 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1) version: 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)
'@nestjs/serve-static': '@nestjs/serve-static':
specifier: ^4.0.2 specifier: ^4.0.2
version: 4.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(express@4.19.2) version: 4.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(express@4.19.2)
'@nestjs/swagger': '@nestjs/swagger':
specifier: ^7.4.0 specifier: ^7.4.0
version: 7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2) version: 7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(reflect-metadata@0.2.2)
'@nestjs/terminus': '@nestjs/terminus':
specifier: ^10.2.3 specifier: ^10.2.3
version: 10.2.3(@nestjs/axios@3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1))(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@prisma/client@5.19.0(prisma@5.19.0))(reflect-metadata@0.2.2)(rxjs@7.8.1) version: 10.2.3(@nestjs/axios@3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1))(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@prisma/client@5.19.0(prisma@5.19.0))(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@paralleldrive/cuid2': '@paralleldrive/cuid2':
specifier: ^2.2.2 specifier: ^2.2.2
version: 2.2.2 version: 2.2.2
@ -152,6 +152,9 @@ importers:
'@radix-ui/react-tooltip': '@radix-ui/react-tooltip':
specifier: ^1.1.2 specifier: ^1.1.2
version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-visually-hidden':
specifier: ^1.1.1
version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@swc/helpers': '@swc/helpers':
specifier: ^0.5.12 specifier: ^0.5.12
version: 0.5.12 version: 0.5.12
@ -247,16 +250,16 @@ importers:
version: 8.0.1 version: 8.0.1
nest-raven: nest-raven:
specifier: ^10.1.0 specifier: ^10.1.0
version: 10.1.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@sentry/node@8.2.1)(graphql@16.8.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) version: 10.1.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@sentry/node@8.2.1)(graphql@16.8.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
nestjs-minio-client: nestjs-minio-client:
specifier: ^2.2.0 specifier: ^2.2.0
version: 2.2.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)) version: 2.2.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)
nestjs-prisma: nestjs-prisma:
specifier: ^0.23.0 specifier: ^0.23.0
version: 0.23.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@prisma/client@5.19.0(prisma@5.19.0))(chokidar@3.6.0)(prisma@5.19.0) version: 0.23.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@prisma/client@5.19.0(prisma@5.19.0))(chokidar@3.6.0)(prisma@5.19.0)
nestjs-zod: nestjs-zod:
specifier: ^3.0.0 specifier: ^3.0.0
version: 3.0.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/swagger@7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2))(zod@3.23.8) version: 3.0.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@nestjs/swagger@7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(reflect-metadata@0.2.2))(zod@3.23.8)
nodemailer: nodemailer:
specifier: ^6.9.14 specifier: ^6.9.14
version: 6.9.14 version: 6.9.14
@ -389,7 +392,7 @@ importers:
version: 10.1.4(chokidar@3.6.0)(typescript@5.5.4) version: 10.1.4(chokidar@3.6.0)(typescript@5.5.4)
'@nestjs/testing': '@nestjs/testing':
specifier: ^10.4.1 specifier: ^10.4.1
version: 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)) version: 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@nestjs/platform-express@10.4.1)
'@nx/eslint': '@nx/eslint':
specifier: ^19.6.4 specifier: ^19.6.4
version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))) version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))
@ -413,7 +416,7 @@ importers:
version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4))(webpack@5.97.1(@swc/core@1.7.22(@swc/helpers@0.5.12))) version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4))(webpack@5.97.1(@swc/core@1.7.22(@swc/helpers@0.5.12)))
'@nx/vite': '@nx/vite':
specifier: ^19.6.4 specifier: ^19.6.4
version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5(@types/node@22.5.2)(@vitest/ui@2.0.5)(jsdom@25.0.0)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1)) version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5)
'@nx/web': '@nx/web':
specifier: ^19.6.4 specifier: ^19.6.4
version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4) version: 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)
@ -530,7 +533,7 @@ importers:
version: 3.7.0(@swc/helpers@0.5.12)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1)) version: 3.7.0(@swc/helpers@0.5.12)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))
'@vitest/coverage-v8': '@vitest/coverage-v8':
specifier: ^2.0.5 specifier: ^2.0.5
version: 2.0.5(vitest@2.0.5(@types/node@22.5.2)(@vitest/ui@2.0.5)(jsdom@25.0.0)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1)) version: 2.0.5(vitest@2.0.5)
'@vitest/ui': '@vitest/ui':
specifier: ^2.0.5 specifier: ^2.0.5
version: 2.0.5(vitest@2.0.5) version: 2.0.5(vitest@2.0.5)
@ -3096,6 +3099,15 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
'@radix-ui/react-compose-refs@1.1.1':
resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@radix-ui/react-context-menu@2.2.1': '@radix-ui/react-context-menu@2.2.1':
resolution: {integrity: sha512-wvMKKIeb3eOrkJ96s722vcidZ+2ZNfcYZWBPRHIB1VWrF+fiF851Io6LX0kmK5wTDQFKdulCCKJk2c3SBaQHvA==} resolution: {integrity: sha512-wvMKKIeb3eOrkJ96s722vcidZ+2ZNfcYZWBPRHIB1VWrF+fiF851Io6LX0kmK5wTDQFKdulCCKJk2c3SBaQHvA==}
peerDependencies: peerDependencies:
@ -3406,6 +3418,19 @@ packages:
'@types/react-dom': '@types/react-dom':
optional: true optional: true
'@radix-ui/react-primitive@2.0.1':
resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
'@radix-ui/react-roving-focus@1.1.0': '@radix-ui/react-roving-focus@1.1.0':
resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==}
peerDependencies: peerDependencies:
@ -3489,6 +3514,15 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
'@radix-ui/react-slot@1.1.1':
resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@radix-ui/react-switch@1.1.0': '@radix-ui/react-switch@1.1.0':
resolution: {integrity: sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==} resolution: {integrity: sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==}
peerDependencies: peerDependencies:
@ -3679,6 +3713,19 @@ packages:
'@types/react-dom': '@types/react-dom':
optional: true optional: true
'@radix-ui/react-visually-hidden@1.1.1':
resolution: {integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
'@radix-ui/rect@1.1.0': '@radix-ui/rect@1.1.0':
resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
@ -13185,7 +13232,7 @@ snapshots:
'@emnapi/runtime': 1.2.0 '@emnapi/runtime': 1.2.0
'@tybys/wasm-util': 0.9.0 '@tybys/wasm-util': 0.9.0
'@nestjs-modules/mailer@2.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(nodemailer@6.9.14)': '@nestjs-modules/mailer@2.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(nodemailer@6.9.14)':
dependencies: dependencies:
'@css-inline/css-inline': 0.14.1 '@css-inline/css-inline': 0.14.1
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -13243,7 +13290,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
'@nestjs/graphql@12.1.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(graphql@16.8.1)(reflect-metadata@0.2.2)': '@nestjs/graphql@12.1.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(graphql@16.8.1)(reflect-metadata@0.2.2)':
dependencies: dependencies:
'@graphql-tools/merge': 9.0.1(graphql@16.8.1) '@graphql-tools/merge': 9.0.1(graphql@16.8.1)
'@graphql-tools/schema': 10.0.2(graphql@16.8.1) '@graphql-tools/schema': 10.0.2(graphql@16.8.1)
@ -13317,7 +13364,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- chokidar - chokidar
'@nestjs/serve-static@4.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(express@4.19.2)': '@nestjs/serve-static@4.0.2(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(express@4.19.2)':
dependencies: dependencies:
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -13325,7 +13372,7 @@ snapshots:
optionalDependencies: optionalDependencies:
express: 4.19.2 express: 4.19.2
'@nestjs/swagger@7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)': '@nestjs/swagger@7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(reflect-metadata@0.2.2)':
dependencies: dependencies:
'@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc': 0.15.0
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -13337,7 +13384,7 @@ snapshots:
reflect-metadata: 0.2.2 reflect-metadata: 0.2.2
swagger-ui-dist: 5.17.14 swagger-ui-dist: 5.17.14
'@nestjs/terminus@10.2.3(@nestjs/axios@3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1))(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@prisma/client@5.19.0(prisma@5.19.0))(reflect-metadata@0.2.2)(rxjs@7.8.1)': '@nestjs/terminus@10.2.3(@nestjs/axios@3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1))(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@prisma/client@5.19.0(prisma@5.19.0))(reflect-metadata@0.2.2)(rxjs@7.8.1)':
dependencies: dependencies:
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -13349,7 +13396,7 @@ snapshots:
'@nestjs/axios': 3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1) '@nestjs/axios': 3.0.3(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.7)(rxjs@7.8.1)
'@prisma/client': 5.19.0(prisma@5.19.0) '@prisma/client': 5.19.0(prisma@5.19.0)
'@nestjs/testing@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1))': '@nestjs/testing@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@nestjs/platform-express@10.4.1)':
dependencies: dependencies:
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -13514,9 +13561,9 @@ snapshots:
- '@swc/core' - '@swc/core'
- debug - debug
'@nrwl/vite@19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5(@types/node@22.5.2)(@vitest/ui@2.0.5)(jsdom@25.0.0)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))': '@nrwl/vite@19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5)':
dependencies: dependencies:
'@nx/vite': 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5(@types/node@22.5.2)(@vitest/ui@2.0.5)(jsdom@25.0.0)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1)) '@nx/vite': 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5)
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/traverse' - '@babel/traverse'
- '@swc-node/register' - '@swc-node/register'
@ -13907,9 +13954,9 @@ snapshots:
- vue-tsc - vue-tsc
- webpack - webpack
'@nx/vite@19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5(@types/node@22.5.2)(@vitest/ui@2.0.5)(jsdom@25.0.0)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))': '@nx/vite@19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5)':
dependencies: dependencies:
'@nrwl/vite': 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5(@types/node@22.5.2)(@vitest/ui@2.0.5)(jsdom@25.0.0)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1)) '@nrwl/vite': 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.6(@types/node@22.5.2)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))(vitest@2.0.5)
'@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))) '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))
'@nx/js': 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4) '@nx/js': 19.6.4(@babel/traverse@7.25.4)(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12))(@types/node@22.5.2)(nx@19.6.4(@swc-node/register@1.10.9(@swc/core@1.7.22(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.22(@swc/helpers@0.5.12)))(typescript@5.5.4)
'@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4)
@ -14548,6 +14595,12 @@ snapshots:
optionalDependencies: optionalDependencies:
'@types/react': 18.3.5 '@types/react': 18.3.5
'@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.5)(react@18.3.1)':
dependencies:
react: 18.3.1
optionalDependencies:
'@types/react': 18.3.5
'@radix-ui/react-context-menu@2.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': '@radix-ui/react-context-menu@2.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies: dependencies:
'@radix-ui/primitive': 1.1.0 '@radix-ui/primitive': 1.1.0
@ -14872,6 +14925,15 @@ snapshots:
'@types/react': 18.3.5 '@types/react': 18.3.5
'@types/react-dom': 18.3.0 '@types/react-dom': 18.3.0
'@radix-ui/react-primitive@2.0.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/react-slot': 1.1.1(@types/react@18.3.5)(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
optionalDependencies:
'@types/react': 18.3.5
'@types/react-dom': 18.3.0
'@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies: dependencies:
'@radix-ui/primitive': 1.1.0 '@radix-ui/primitive': 1.1.0
@ -14978,6 +15040,13 @@ snapshots:
optionalDependencies: optionalDependencies:
'@types/react': 18.3.5 '@types/react': 18.3.5
'@radix-ui/react-slot@1.1.1(@types/react@18.3.5)(react@18.3.1)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.5)(react@18.3.1)
react: 18.3.1
optionalDependencies:
'@types/react': 18.3.5
'@radix-ui/react-switch@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': '@radix-ui/react-switch@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies: dependencies:
'@radix-ui/primitive': 1.1.0 '@radix-ui/primitive': 1.1.0
@ -15160,6 +15229,15 @@ snapshots:
'@types/react': 18.3.5 '@types/react': 18.3.5
'@types/react-dom': 18.3.0 '@types/react-dom': 18.3.0
'@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
optionalDependencies:
'@types/react': 18.3.5
'@types/react-dom': 18.3.0
'@radix-ui/rect@1.1.0': {} '@radix-ui/rect@1.1.0': {}
'@remirror/core-constants@2.0.2': {} '@remirror/core-constants@2.0.2': {}
@ -16340,7 +16418,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@22.5.2)(@vitest/ui@2.0.5)(jsdom@25.0.0)(less@4.1.3)(sass@1.71.1)(stylus@0.59.0)(terser@5.29.1))': '@vitest/coverage-v8@2.0.5(vitest@2.0.5)':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3 '@bcoe/v8-coverage': 0.2.3
@ -21086,13 +21164,13 @@ snapshots:
neo-async@2.6.2: {} neo-async@2.6.2: {}
nest-raven@10.1.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@sentry/node@8.2.1)(graphql@16.8.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): nest-raven@10.1.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@sentry/node@8.2.1)(graphql@16.8.1)(reflect-metadata@0.2.2)(rxjs@7.8.1):
dependencies: dependencies:
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@sentry/node': 8.2.1 '@sentry/node': 8.2.1
rxjs: 7.8.1 rxjs: 7.8.1
optionalDependencies: optionalDependencies:
'@nestjs/graphql': 12.1.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(graphql@16.8.1)(reflect-metadata@0.2.2) '@nestjs/graphql': 12.1.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(graphql@16.8.1)(reflect-metadata@0.2.2)
transitivePeerDependencies: transitivePeerDependencies:
- '@apollo/subgraph' - '@apollo/subgraph'
- '@nestjs/core' - '@nestjs/core'
@ -21104,7 +21182,7 @@ snapshots:
- ts-morph - ts-morph
- utf-8-validate - utf-8-validate
nestjs-minio-client@2.2.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)): nestjs-minio-client@2.2.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1):
dependencies: dependencies:
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -21123,14 +21201,14 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- chokidar - chokidar
nestjs-zod@3.0.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/swagger@7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2))(zod@3.23.8): nestjs-zod@3.0.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(@nestjs/swagger@7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(reflect-metadata@0.2.2))(zod@3.23.8):
dependencies: dependencies:
merge-deep: 3.0.3 merge-deep: 3.0.3
zod: 3.23.8 zod: 3.23.8
optionalDependencies: optionalDependencies:
'@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/swagger': 7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2) '@nestjs/swagger': 7.4.0(@nestjs/common@10.4.1(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.1)(reflect-metadata@0.2.2)
netmask@2.0.2: {} netmask@2.0.2: {}