patch applied

This commit is contained in:
zomars 2022-02-15 15:48:19 -07:00
parent 801e4c4600
commit 010d82ec00
27 changed files with 87 additions and 67 deletions

View File

@ -21,7 +21,7 @@ export default function AppsShell({ children }: { children: React.ReactNode }) {
return (
<>
<div className="block mb-12 lg:hidden">
<div className="mb-12 block lg:hidden">
{status === "authenticated" && <NavTabs tabs={tabs} linkProps={{ shallow: true }} />}
</div>
<main>{children}</main>

View File

@ -67,7 +67,7 @@ const DestinationCalendarSelector = ({
placeholder={!hidePlaceholder ? `${t("select_destination_calendar")}:` : undefined}
options={options}
isSearchable={false}
className="focus:border-primary-500 focus:ring-primary-500 mt-1 mb-2 block w-full min-w-0 flex-1 rounded-none rounded-r-md border-gray-300 sm:text-sm"
className="focus:ring-primary-500 focus:border-primary-500 mt-1 mb-2 block w-full min-w-0 flex-1 rounded-none rounded-r-md border-gray-300 sm:text-sm"
onChange={(option) => {
setSelectedOption(option);
if (!option) {

View File

@ -11,7 +11,7 @@ export default function AllApps() {
return (
<div className="mb-16">
<h2 className="mb-2 text-lg font-semibold text-gray-900">{t("all_apps")}</h2>
<div className="grid gap-3 grid-col-1 md:grid-cols-3">
<div className="grid-col-1 grid gap-3 md:grid-cols-3">
{apps.map((app) => (
<AppCard
key={app.name}

View File

@ -16,12 +16,12 @@ interface AppCardProps {
export default function AppCard(props: AppCardProps) {
return (
<Link href={"/apps/" + props.slug}>
<a className="block p-5 border border-gray-300 rounded-sm hover:bg-neutral-50">
<a className="block rounded-sm border border-gray-300 p-5 hover:bg-neutral-50">
<div className="flex">
<img src={props.logo} alt={props.name + " Logo"} className="w-12 h-12 mb-4 rounded-sm" />
<img src={props.logo} alt={props.name + " Logo"} className="mb-4 h-12 w-12 rounded-sm" />
<Button
color="secondary"
className="flex self-start ml-auto"
className="ml-auto flex self-start"
onClick={() => {
// TODO: Actually add the integration
console.log("The magic is supposed to happen here");
@ -31,7 +31,7 @@ export default function AppCard(props: AppCardProps) {
</div>
<h3 className="font-medium">{props.name}</h3>
<div className="flex text-sm text-gray-800">
<span>{props.rating} stars</span> <StarIcon className="w-4 h-4 ml-1 text-yellow-600 mt-0.5" />
<span>{props.rating} stars</span> <StarIcon className="ml-1 mt-0.5 h-4 w-4 text-yellow-600" />
<span className="pl-1 text-gray-500">{props.reviews} reviews</span>
</div>
<p className="mt-2 text-sm text-gray-500">{props.description}</p>

View File

@ -11,9 +11,9 @@ export default function AppStoreCategories(props: any) {
<div className="grid grid-cols-1 gap-3 md:grid-cols-3">
{props.categories.map((category: any) => (
<Link key={category.name} href={"/apps/categories/" + category.name}>
<a className="flex px-6 py-4 bg-gray-100 rounded-sm">
<div className="flex w-12 h-12 mr-4 bg-white rounded-sm">
<CreditCardIcon className="self-center w-6 h-6 mx-auto" />
<a className="flex rounded-sm bg-gray-100 px-6 py-4">
<div className="mr-4 flex h-12 w-12 rounded-sm bg-white">
<CreditCardIcon className="mx-auto h-6 w-6 self-center" />
</div>
<div>
<h3 className="font-medium">{category.name}</h3>

View File

@ -36,12 +36,12 @@ export default function Slider() {
<div>
<h2 className="mb-2 text-lg font-semibold text-gray-900">{t("trending_apps")}</h2>
</div>
<div className="ml-auto glide__arrows" data-glide-el="controls">
<div className="glide__arrows ml-auto" data-glide-el="controls">
<button data-glide-dir="<" className="mr-4">
<ArrowLeftIcon className="w-5 h-5 text-gray-600 hover:text-black" />
<ArrowLeftIcon className="h-5 w-5 text-gray-600 hover:text-black" />
</button>
<button data-glide-dir=">">
<ArrowRightIcon className="w-5 h-5 text-gray-600 hover:text-black" />
<ArrowRightIcon className="h-5 w-5 text-gray-600 hover:text-black" />
</button>
</div>
</div>

View File

@ -10,8 +10,8 @@ export default function LinkIconButton(props: LinkIconButtonProps) {
return (
<div className="-ml-2">
<button
type="button"
{...props}
type="button"
className="text-md flex items-center rounded-sm px-2 py-1 text-sm font-medium text-gray-700 hover:bg-gray-200 hover:text-gray-900">
<props.Icon className="h-4 w-4 text-neutral-500 ltr:mr-2 rtl:ml-2" />
{props.children}

View File

@ -16,7 +16,7 @@ export const DatePicker = ({ date, onDatesChange, className }: Props) => {
return (
<PrimitiveDatePicker
className={classNames(
"focus:border-primary-500 focus:ring-primary-500 rounded-sm border border-gray-300 p-1 pl-2 shadow-sm sm:text-sm",
"focus:ring-primary-500 focus:border-primary-500 rounded-sm border border-gray-300 p-1 pl-2 shadow-sm sm:text-sm",
className
)}
clearIcon={null}

View File

@ -19,7 +19,7 @@ const TrialBanner = () => {
return (
<div
className="m-4 hidden rounded-md bg-yellow-200 p-4 text-center text-sm font-medium text-gray-600 lg:block"
className="m-4 hidden rounded-md bg-yellow-200 p-4 text-center text-sm font-medium text-gray-600 sm:block"
data-testid="trial-banner">
<div className="mb-2 text-left">{t("trial_days_left", { days: trialDaysLeft })}</div>
<Button

View File

@ -74,7 +74,7 @@ export default function TeamAvailabilityModal(props: Props) {
]}
isSearchable={false}
classNamePrefix="react-select"
className="react-select-container focus:border-primary-500 focus:ring-primary-500 block w-full min-w-0 flex-1 rounded-sm border border-gray-300 sm:text-sm"
className="react-select-container focus:ring-primary-500 focus:border-primary-500 block w-full min-w-0 flex-1 rounded-sm border border-gray-300 sm:text-sm"
value={{ value: frequency, label: `${frequency} minutes` }}
onChange={(newFrequency) => setFrequency(newFrequency?.value ?? 30)}
/>

View File

@ -47,7 +47,7 @@ export default function TeamAvailabilityScreen(props: Props) {
<Avatar
imageSrc={getPlaceholderAvatar(member?.avatar, member?.name as string)}
alt={member?.name || ""}
className="min-h-10 min-w-10 mt-1 h-10 w-10 rounded-full"
className="min-w-10 min-h-10 mt-1 h-10 w-10 rounded-full"
/>
<div className="ml-3 inline-block overflow-hidden pt-1">
<span className="truncate text-lg font-bold text-neutral-700">{member?.name}</span>
@ -93,7 +93,7 @@ export default function TeamAvailabilityScreen(props: Props) {
]}
isSearchable={false}
classNamePrefix="react-select"
className="react-select-container focus:border-primary-500 focus:ring-primary-500 block w-full min-w-0 flex-1 rounded-sm border border-gray-300 sm:text-sm"
className="react-select-container focus:ring-primary-500 focus:border-primary-500 block w-full min-w-0 flex-1 rounded-sm border border-gray-300 sm:text-sm"
value={{ value: frequency, label: `${frequency} minutes` }}
onChange={(newFrequency) => setFrequency(newFrequency?.value ?? 30)}
/>

View File

@ -59,7 +59,7 @@ export default function TeamAvailabilityTimes(props: Props) {
{times.map((time) => (
<div key={time.format()} className="flex flex-row items-center">
<a
className="min-w-48 border-brand text-primary-500 hover:bg-brand hover:text-brandcontrast mb-2 mr-3 block flex-grow rounded-sm border bg-white py-2 text-center font-medium dark:border-transparent dark:bg-gray-600 dark:text-neutral-200 dark:hover:border-black dark:hover:bg-black dark:hover:text-white"
className="min-w-48 text-primary-500 border-brand hover:bg-brand hover:text-brandcontrast mb-2 mr-3 block flex-grow rounded-sm border bg-white py-2 text-center font-medium dark:border-transparent dark:bg-gray-600 dark:text-neutral-200 dark:hover:border-black dark:hover:bg-black dark:hover:text-white"
data-testid="time">
{time.format("HH:mm")}
</a>

View File

@ -9,15 +9,14 @@ import { trpc } from "@lib/trpc";
import DestinationCalendarSelector from "@components/DestinationCalendarSelector";
import { List } from "@components/List";
import { ShellSubHeading } from "@components/Shell";
import ConnectIntegration from "@components/integrations/ConnectIntegrations";
import DisconnectIntegration from "@components/integrations/DisconnectIntegration";
import IntegrationListItem from "@components/integrations/IntegrationListItem";
import SubHeadingTitleWithConnections from "@components/integrations/SubHeadingTitleWithConnections";
import { Alert } from "@components/ui/Alert";
import Button from "@components/ui/Button";
import Switch from "@components/ui/Switch";
import ConnectIntegration from "../../../../components/integrations/ConnectIntegrations";
import DisconnectIntegration from "../../../../components/integrations/DisconnectIntegration";
import IntegrationListItem from "../../../../components/integrations/IntegrationListItem";
import SubHeadingTitleWithConnections from "../../../../components/integrations/SubHeadingTitleWithConnections";
type Props = {
onChanged: () => unknown | Promise<unknown>;
};
@ -105,7 +104,7 @@ function ConnectedCalendarsList(props: Props) {
}
return (
<List>
{data.connectedCalendars.map((item: any) => (
{data.connectedCalendars.map((item) => (
<Fragment key={item.credentialId}>
{item.calendars ? (
<IntegrationListItem
@ -126,8 +125,8 @@ function ConnectedCalendarsList(props: Props) {
{item.calendars.map((cal) => (
<CalendarSwitch
key={cal.externalId}
externalId={cal.externalId as string}
title={cal.name as string}
externalId={cal.externalId}
title={cal.name || "Nameless calendar"}
type={item.integration.type}
defaultSelected={cal.isSelected}
/>
@ -170,7 +169,7 @@ function CalendarList(props: Props) {
query={query}
success={({ data }) => (
<List>
{data.calendar.items.map((item: any) => (
{data.calendar.items.map((item) => (
<IntegrationListItem
key={item.title}
{...item}

View File

@ -1,5 +1,4 @@
import { DestinationCalendar, SelectedCalendar } from "@prisma/client";
import { TFunction } from "next-i18next";
import { PaymentInfo } from "@ee/lib/stripe/server";
@ -7,15 +6,8 @@ import type { Event } from "@lib/events/EventManager";
import { Ensure } from "@lib/types/utils";
import { VideoCallData } from "@lib/videoClient";
import { NewCalendarEventType } from "../constants/types";
import { ConferenceData } from "./GoogleCalendar";
export type Person = {
name: string;
email: string;
timeZone: string;
language: { translate: TFunction; locale: string };
};
import { ConferenceData } from "../../google_calendar/interfaces/GoogleCalendar";
import { NewCalendarEventType, Person } from "../types/CalendarTypes";
export interface EntryPoint {
entryPointType?: string;

View File

@ -21,10 +21,10 @@ import { symmetricDecrypt } from "@lib/crypto";
import type { Event } from "@lib/events/EventManager";
import logger from "@lib/logger";
import { TIMEZONE_FORMAT } from "../constants/formats";
import { CALDAV_CALENDAR_TYPE } from "../constants/generals";
import { CalendarEventType, EventBusyDate, NewCalendarEventType } from "../constants/types";
import { TIMEZONE_FORMAT } from "../constants/format";
import { DEFAULT_CALENDAR_TYPE } from "../constants/general";
import { Calendar, CalendarEvent, IntegrationCalendar } from "../interfaces/Calendar";
import { CalendarEventType, EventBusyDate, NewCalendarEventType } from "../types/CalendarTypes";
import { convertDate, getAttendees, getDuration } from "../utils/CalendarUtils";
dayjs.extend(utc);

View File

@ -1,13 +1,12 @@
import parser from "accept-language-parser";
import { IncomingMessage } from "http";
import { i18n } from "next-i18next.config";
import { getSession } from "@lib/auth";
import prisma from "@lib/prisma";
import { Maybe } from "@trpc/server";
import { i18n } from "../../../next-i18next.config";
export function getLocaleFromHeaders(req: IncomingMessage): string {
let preferredLocale: string | null | undefined;
if (req.headers["accept-language"]) {

View File

@ -1,4 +1,4 @@
import { CalendarEvent } from "@lib/calendar/interfaces/Calendar";
import { CalendarEvent } from "@lib/apps/calendar/interfaces/Calendar";
import AttendeeAwaitingPaymentEmail from "@lib/emails/templates/attendee-awaiting-payment-email";
import AttendeeCancelledEmail from "@lib/emails/templates/attendee-cancelled-email";
import AttendeeDeclinedEmail from "@lib/emails/templates/attendee-declined-email";
@ -12,7 +12,6 @@ import OrganizerRequestReminderEmail from "@lib/emails/templates/organizer-reque
import OrganizerRescheduledEmail from "@lib/emails/templates/organizer-rescheduled-email";
import OrganizerScheduledEmail from "@lib/emails/templates/organizer-scheduled-email";
import TeamInviteEmail, { TeamInvite } from "@lib/emails/templates/team-invite-email";
import { CalendarEvent } from "@lib/integrations/calendar/interfaces/Calendar";
export const sendScheduledEmails = async (calEvent: CalendarEvent) => {
const emailsToSend: Promise<unknown>[] = [];

View File

@ -7,9 +7,9 @@ import { createEvent, DateArray } from "ics";
import nodemailer from "nodemailer";
import { getCancelLink, getRichDescription } from "@lib/CalEventParser";
import { getErrorFromUnknown } from "@lib/errors";
import { getIntegrationName } from "@lib/integrations";
import { CalendarEvent, Person } from "@lib/integrations/calendar/interfaces/Calendar";
import { CalendarEvent } from "@lib/apps/calendar/interfaces/Calendar";
import { getAppName } from "@lib/apps/utils/AppUtils";
import { getErrorFromUnknown, Person } from "@lib/errors";
import { serverConfig } from "@lib/serverConfig";
import {

View File

@ -5,12 +5,13 @@ import { v5 as uuidv5 } from "uuid";
import { FAKE_DAILY_CREDENTIAL } from "@lib/integrations/Daily/DailyVideoApiAdapter";
import { FAKE_HUDDLE_CREDENTIAL } from "@lib/integrations/Huddle01/Huddle01VideoApiAdapter";
import { createEvent, updateEvent } from "@lib/integrations/calendar/CalendarManager";
import { AdditionInformation, CalendarEvent } from "@lib/integrations/calendar/interfaces/Calendar";
import { LocationType } from "@lib/location";
import prisma from "@lib/prisma";
import { createMeeting, updateMeeting, VideoCallData } from "@lib/videoClient";
import { AdditionInformation, CalendarEvent } from "../apps/calendar/interfaces/Calendar";
import { createEvent, updateEvent } from "../apps/calendar/managers/CalendarManager";
export type Event = AdditionInformation & VideoCallData;
export interface EventResult {

View File

@ -31,6 +31,7 @@
"@calcom/tsconfig": "*",
"@calcom/ui": "*",
"@daily-co/daily-js": "^0.21.0",
"@glidejs/glide": "^3.5.2",
"@headlessui/react": "^1.4.2",
"@heroicons/react": "^1.0.5",
"@hookform/error-message": "^2.0.0",
@ -108,9 +109,11 @@
"@microsoft/microsoft-graph-types-beta": "0.15.0-preview",
"@playwright/test": "^1.18.1",
"@tailwindcss/forms": "^0.4.0",
"@tailwindcss/typography": "^0.5.1",
"@types/accept-language-parser": "1.5.2",
"@types/async": "^3.2.10",
"@types/bcryptjs": "^2.4.2",
"@types/glidejs__glide": "^3.4.1",
"@types/jest": "^27.0.3",
"@types/lodash": "^4.14.177",
"@types/micro": "^7.3.6",

View File

@ -3,12 +3,12 @@ import type { NextApiRequest, NextApiResponse } from "next";
import { refund } from "@ee/lib/stripe/server";
import { CalendarEvent, AdditionInformation } from "@lib/apps/calendar/interfaces/Calendar";
import { asStringOrNull } from "@lib/asStringOrNull";
import { getSession } from "@lib/auth";
import { sendDeclinedEmails } from "@lib/emails/email-manager";
import { sendScheduledEmails } from "@lib/emails/email-manager";
import EventManager from "@lib/events/EventManager";
import { CalendarEvent, AdditionInformation } from "@lib/integrations/calendar/interfaces/Calendar";
import logger from "@lib/logger";
import prisma from "@lib/prisma";
import { BookingConfirmBody } from "@lib/types/booking";

View File

@ -21,7 +21,7 @@ export default function Apps() {
large>
<div className="mb-8">
<Button color="secondary" href="/apps">
<ChevronLeftIcon className="w-5 h-5" />
<ChevronLeftIcon className="h-5 w-5" />
</Button>
</div>
<div className="mb-16">

View File

@ -57,7 +57,7 @@ function WebhookListItem(props: { webhook: TWebhook; onEditWebhook: () => void }
</span>
</div>
<div className="mt-2 flex">
<span className="flex flex-col space-x-2 space-y-1 text-xs sm:flex-row sm:space-y-0 sm:rtl:space-x-reverse">
<span className="flex flex-col space-x-2 space-y-1 space-x-2 text-xs sm:flex-row sm:space-y-0 sm:rtl:space-x-reverse">
{props.webhook.eventTriggers.map((eventTrigger, ind) => (
<span
key={ind}
@ -336,7 +336,7 @@ function WebhookListContainer() {
<ListItem className={classNames("flex-col")}>
<div
className={classNames("flex w-full flex-1 items-center space-x-2 p-3 rtl:space-x-reverse")}>
<Image width={40} height={40} src="/integrations/webhooks.svg" alt="Webhooks" />
<Image width={40} height={40} src="/apps/webhooks.svg" alt="Webhooks" />
<div className="flex-grow truncate pl-2">
<ListItemTitle component="h3">Webhooks</ListItemTitle>
<ListItemText component="p">{t("automation")}</ListItemText>
@ -409,7 +409,7 @@ function IframeEmbedContainer() {
<List>
<ListItem className={classNames("flex-col")}>
<div className={classNames("flex w-full flex-1 items-center space-x-2 p-3 rtl:space-x-reverse")}>
<Image width={40} height={40} src="/integrations/embed.svg" alt="Embed" />
<Image width={40} height={40} src="/apps/embed.svg" alt="Embed" />
<div className="flex-grow truncate pl-2">
<ListItemTitle component="h3">{t("standard_iframe")}</ListItemTitle>
<ListItemText component="p">{t("embed_your_calendar")}</ListItemText>
@ -434,7 +434,7 @@ function IframeEmbedContainer() {
</ListItem>
<ListItem className={classNames("flex-col")}>
<div className={classNames("flex w-full flex-1 items-center space-x-2 p-3 rtl:space-x-reverse")}>
<Image width={40} height={40} src="/integrations/embed.svg" alt="Embed" />
<Image width={40} height={40} src="/apps/embed.svg" alt="Embed" />
<div className="flex-grow truncate pl-2">
<ListItemTitle component="h3">{t("responsive_fullscreen_iframe")}</ListItemTitle>
<ListItemText component="p">A fullscreen scheduling experience on your website</ListItemText>
@ -583,7 +583,7 @@ function Web3Container() {
<List>
<ListItem className={classNames("flex-col")}>
<div className={classNames("flex w-full flex-1 items-center space-x-2 p-3")}>
<Image width={40} height={40} src="/integrations/metamask.svg" alt="Embed" />
<Image width={40} height={40} src="/apps/metamask.svg" alt="Embed" />
<div className="flex-grow truncate pl-2">
<ListItemTitle component="h3">
MetaMask (

View File

@ -17,6 +17,8 @@ import { useForm } from "react-hook-form";
import TimezoneSelect from "react-timezone-select";
import * as z from "zod";
import { getCalendarCredentials, getConnectedCalendars } from "@lib/apps/calendar/managers/CalendarManager";
import getApps from "@lib/apps/utils/AppUtils";
import { asStringOrNull } from "@lib/asStringOrNull";
import { getSession } from "@lib/auth";
import { DEFAULT_SCHEDULE } from "@lib/availability";
@ -30,14 +32,12 @@ import { Schedule as ScheduleType } from "@lib/types/schedule";
import { ClientSuspense } from "@components/ClientSuspense";
import Loader from "@components/Loader";
import { Form } from "@components/form/fields";
import { CalendarListContainer } from "@components/integrations/CalendarListContainer";
import { Alert } from "@components/ui/Alert";
import Button from "@components/ui/Button";
import Text from "@components/ui/Text";
import Schedule from "@components/ui/form/Schedule";
import { CalendarListContainer } from "../lib/apps/calendar/components/CalendarListContainer";
import { getCalendarCredentials, getConnectedCalendars } from "../lib/apps/calendar/managers/CalendarManager";
import getApps from "../lib/apps/utils/AppUtils";
import getEventTypes from "../lib/queries/event-types/get-event-types";
dayjs.extend(utc);
@ -704,7 +704,7 @@ export async function getServerSideProps(context: NextPageContext) {
},
});
const integrations = getIntegrations(credentials)
const integrations = getApps(credentials)
.filter((item) => item.type.endsWith("_calendar"))
.map((item) => omit(item, "key"));

View File

@ -5,6 +5,7 @@ import { z } from "zod";
import { checkPremiumUsername } from "@ee/lib/core/checkPremiumUsername";
import { getCalendarCredentials, getConnectedCalendars } from "@lib/apps/calendar/managers/CalendarManager";
import { ALL_APPS } from "@lib/apps/utils/AppUtils";
import { checkRegularUsername } from "@lib/core/checkRegularUsername";
import jackson from "@lib/jackson";
@ -23,10 +24,6 @@ import { Schedule } from "@lib/types/schedule";
import { eventTypesRouter } from "@server/routers/viewer/eventTypes";
import { TRPCError } from "@trpc/server";
import {
getCalendarCredentials,
getConnectedCalendars,
} from "../../lib/apps/calendar/managers/CalendarManager";
import { createProtectedRouter, createRouter } from "../createRouter";
import { resizeBase64Image } from "../lib/resizeBase64Image";
import { viewerTeamsRouter } from "./viewer/teams";

View File

@ -6,7 +6,8 @@
"@components/*": ["components/*"],
"@lib/*": ["lib/*"],
"@server/*": ["server/*"],
"@ee/*": ["ee/*"]
"@ee/*": ["ee/*"],
"@apps/*": ["lib/apps/*"]
},
"typeRoots": ["./types"],
"types": ["@types/jest"]

View File

@ -969,6 +969,11 @@
intl-messageformat "9.11.4"
tslib "^2.1.0"
"@glidejs/glide@^3.5.2":
version "3.5.2"
resolved "https://registry.yarnpkg.com/@glidejs/glide/-/glide-3.5.2.tgz#7012c5920ecf202bbda44d8526fc979984b6dd54"
integrity sha512-7jGciNJ2bQ4eZLSNlSZ+VAyW63kALf420CvkEpK4lEsUfWJq9odqimci0YCiyNyMUFB+pWHwLYyNc57dijYsCg==
"@headlessui/react@^1.4.2":
version "1.4.3"
resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.4.3.tgz#f77c6bb5cb4a614a5d730fb880cab502d48abf37"
@ -2505,6 +2510,15 @@
dependencies:
mini-svg-data-uri "^1.2.3"
"@tailwindcss/typography@^0.5.1":
version "0.5.2"
resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.2.tgz#24b069dab24d7a2467d01aca0dd432cb4b29f0ee"
integrity sha512-coq8DBABRPFcVhVIk6IbKyyHUt7YTEC/C992tatFB+yEx5WGBQrCgsSFjxHUr8AWXphWckadVJbominEduYBqw==
dependencies:
lodash.castarray "^4.4.0"
lodash.isplainobject "^4.0.6"
lodash.merge "^4.6.2"
"@tootallnate/once@1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
@ -2725,6 +2739,11 @@
resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.29.tgz#a48795ecadf957f6c0d10e0c34af86c098fa5bee"
integrity sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==
"@types/glidejs__glide@^3.4.1":
version "3.4.1"
resolved "https://registry.yarnpkg.com/@types/glidejs__glide/-/glidejs__glide-3.4.1.tgz#220bbce087500eda3700e476c728e17d096eb6f0"
integrity sha512-ib2VRchnLSXGOdiZFfCt6QEIYviw5g+Yey8Q2+kMzUxGXsnR9ZwZi1qPXI1ttrvR/AtUYZmSSHDVVSoIyt6LPw==
"@types/graceful-fs@^4.1.2":
version "4.1.5"
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
@ -8502,11 +8521,21 @@ lodash-es@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash.castarray@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=
lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
lodash.isplainobject@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"