upd
This commit is contained in:
@@ -5,6 +5,7 @@ interface Props {
|
|||||||
icon?: JSX.Element;
|
icon?: JSX.Element;
|
||||||
onlyIcon?: boolean;
|
onlyIcon?: boolean;
|
||||||
children?: React.ReactNode;
|
children?: React.ReactNode;
|
||||||
|
className?: string;
|
||||||
onClick?: () => void;
|
onClick?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,13 +27,16 @@ function Button2({
|
|||||||
icon,
|
icon,
|
||||||
onlyIcon = false,
|
onlyIcon = false,
|
||||||
children,
|
children,
|
||||||
|
className,
|
||||||
onClick,
|
onClick,
|
||||||
}: Props) {
|
}: Props) {
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
className={`flex items-center transition-colors w-fit ${
|
className={`flex items-center transition-colors w-fit ${
|
||||||
variantClasses[variant]
|
variantClasses[variant]
|
||||||
} ${sizeClasses[size]} ${roundedFull ? "rounded-full" : "rounded-lg"} `}
|
} ${sizeClasses[size]} ${
|
||||||
|
roundedFull ? "rounded-full" : "rounded-lg"
|
||||||
|
} ${className}`}
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
{onlyIcon ? (
|
{onlyIcon ? (
|
||||||
|
|||||||
@@ -8,11 +8,13 @@ import SocialButton from "./SocialButton";
|
|||||||
|
|
||||||
function Footer2() {
|
function Footer2() {
|
||||||
return (
|
return (
|
||||||
<div className="bg-white p-10 rounded-t-2xl">
|
<div className="relative bg-white lg:p-10 px-4 py-8 rounded-t-2xl">
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="absolute top-0 left-0 lg:p-10 px-4 py-8">
|
||||||
<div className="flex flex-col justify-between">
|
<Logo2Icon />
|
||||||
<Logo2Icon />
|
</div>
|
||||||
<div className="flex gap-10">
|
<div className="grid lg:grid-cols-2 gap-4 lg:w-full sm:w-1/2 w-full ml-auto max-sm:py-12">
|
||||||
|
<div className="flex flex-col justify-between self-end max-lg:order-last">
|
||||||
|
<div className="flex max-lg:flex-col lg:gap-10 gap-6">
|
||||||
<p className="text-[#0D192266] text-sm">
|
<p className="text-[#0D192266] text-sm">
|
||||||
For more information, visit our
|
For more information, visit our
|
||||||
<br />
|
<br />
|
||||||
@@ -52,24 +54,23 @@ function Footer2() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="grid grid-cols-3 gap-4">
|
<div className="grid lg:grid-cols-3 grid-cols-2 gap-4 max-lg:border-y border-[#E2E2DC] max-lg:py-3 max-lg:text-sm">
|
||||||
<div className="border-l border-[#E2E2DC] px-6 py-3.5 flex flex-col items-start gap-6">
|
<div className="lg:border-l border-[#E2E2DC] lg:px-6 py-3.5 flex flex-col items-start lg:gap-6 gap-5">
|
||||||
<a href="/masterplan">Map</a>
|
<a href="/masterplan">Map</a>
|
||||||
<a href="/unit-types">Unit Types</a>
|
<a href="/unit-types">Unit Types</a>
|
||||||
<a href="/about">About IRTH</a>
|
<a href="/about">About IRTH</a>
|
||||||
</div>
|
</div>
|
||||||
<div className="border-l border-[#E2E2DC] px-6 py-3.5 flex flex-col items-start gap-6">
|
<div className="lg:border-l border-[#E2E2DC] lg:px-6 py-3.5 flex flex-col items-start lg:gap-6 gap-5">
|
||||||
<a href="/favorites">Favorites</a>
|
<a href="/favorites">Favorites</a>
|
||||||
<a href="/search">Search</a>
|
<a href="/search">Search</a>
|
||||||
{/* <a href="#">Brochures</a> */}
|
|
||||||
</div>
|
|
||||||
<div className="px-2.5 py-1 flex flex-col items-end justify-end gap-6">
|
|
||||||
<a href="#" className="text-xs font-semibold">
|
|
||||||
Privacy Policy
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="absolute bottom-0 lg:right-0 max-lg:left-0 flex flex-col items-end justify-end lg:p-10 px-4 py-8">
|
||||||
|
<a href="#" className="text-xs font-semibold">
|
||||||
|
Privacy Policy
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
import { NavLink } from "react-router-dom";
|
||||||
|
import LocationIcon from "./icons/LocationIcon";
|
||||||
|
import Logo2Icon from "./icons/Logo2Icon";
|
||||||
|
import Button2 from "./Button2";
|
||||||
|
import BurgerIcon from "./icons/activities/BurgerIcon";
|
||||||
|
import useModal from "../store/useModal";
|
||||||
|
import NavbarModal from "./modals/NavbarModal";
|
||||||
|
import { useState } from "react";
|
||||||
|
import CloseIcon from "./icons/CloseIcon";
|
||||||
|
|
||||||
|
function Header() {
|
||||||
|
const [showNavbar, setShowNavbar] = useState<boolean>(false);
|
||||||
|
const { setModal } = useModal();
|
||||||
|
|
||||||
|
function handleClick() {
|
||||||
|
setShowNavbar((prev) => !prev);
|
||||||
|
|
||||||
|
if (!showNavbar) {
|
||||||
|
setModal(<NavbarModal />);
|
||||||
|
} else {
|
||||||
|
setModal(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="fixed top-0 left-0 w-full flex justify-between bg-white z-50">
|
||||||
|
<div className="flex">
|
||||||
|
<div className="px-6 py-4 border-r border-[#E2E2DC]">
|
||||||
|
<Logo2Icon />
|
||||||
|
</div>
|
||||||
|
<div className="text-[#0D192266] flex gap-1 items-center px-4 py-[18px]">
|
||||||
|
<LocationIcon className="w-5 h-5" />
|
||||||
|
<p className="text-sm">Dubai</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-1 max-xl:hidden">
|
||||||
|
<NavLink to="/masterplan" className="p-4">
|
||||||
|
Map
|
||||||
|
</NavLink>
|
||||||
|
<div className="w-px h-3 bg-[#E2E2DC]"></div>
|
||||||
|
<NavLink to="/unit-types" className="p-4">
|
||||||
|
Unit Types
|
||||||
|
</NavLink>
|
||||||
|
<div className="w-px h-3 bg-[#E2E2DC]"></div>
|
||||||
|
<NavLink to="/about" className="p-4">
|
||||||
|
About IRTH
|
||||||
|
</NavLink>
|
||||||
|
<div className="w-px h-3 bg-[#E2E2DC]"></div>
|
||||||
|
<NavLink to="/favorites" className="p-4">
|
||||||
|
Favorites
|
||||||
|
</NavLink>
|
||||||
|
<div className="w-px h-3 bg-[#E2E2DC]"></div>
|
||||||
|
<NavLink to="#" className="p-4">
|
||||||
|
Brochures
|
||||||
|
</NavLink>
|
||||||
|
<div className="w-px h-3 bg-[#E2E2DC]"></div>
|
||||||
|
<NavLink to="/search" className="p-4">
|
||||||
|
Search
|
||||||
|
</NavLink>
|
||||||
|
</div>
|
||||||
|
<div className="w-[230px]"></div>
|
||||||
|
<div className="xl:hidden px-4 py-2">
|
||||||
|
<Button2
|
||||||
|
variant="secondary"
|
||||||
|
size="small"
|
||||||
|
icon={
|
||||||
|
showNavbar ? (
|
||||||
|
<CloseIcon className="w-5 h-5" />
|
||||||
|
) : (
|
||||||
|
<BurgerIcon className="w-5 h-5" />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
onlyIcon
|
||||||
|
className="ring-1 ring-[#E2E2DC]"
|
||||||
|
onClick={handleClick}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Header;
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
|
import { useEffect } from "react";
|
||||||
|
import { useLocation } from "react-router-dom";
|
||||||
|
|
||||||
|
function ScrollToTop() {
|
||||||
|
const { pathname } = useLocation();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
window.scrollTo(0, 0);
|
||||||
|
}, [pathname]);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ScrollToTop;
|
||||||
@@ -1,20 +1,25 @@
|
|||||||
const LocationIcon = () => {
|
interface Props {
|
||||||
|
className?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LocationIcon({ className }: Props) {
|
||||||
return (
|
return (
|
||||||
<svg
|
<svg
|
||||||
width="20"
|
width={24}
|
||||||
height="20"
|
height={24}
|
||||||
viewBox="0 0 20 20"
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
className={className}
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
fillRule="evenodd"
|
fillRule="evenodd"
|
||||||
clipRule="evenodd"
|
clipRule="evenodd"
|
||||||
d="M4.16675 8.125C4.16675 7.38632 4.31763 6.65486 4.61078 5.97241C4.90394 5.28995 5.33362 4.66985 5.87529 4.14752C6.41697 3.6252 7.06003 3.21086 7.76776 2.92818C8.47549 2.6455 9.23404 2.5 10.0001 2.5C10.7661 2.5 11.5247 2.64549 12.2324 2.92818C12.9401 3.21086 13.5832 3.62519 14.1249 4.14752C14.6665 4.66985 15.0962 5.28995 15.3894 5.97241C15.6825 6.65486 15.8334 7.38631 15.8334 8.125C15.8334 12.2469 12.7012 15.3619 11.0271 16.7324C10.4211 17.2286 9.57906 17.2286 8.97304 16.7324C7.299 15.3619 4.16675 12.2469 4.16675 8.125ZM10.0001 11.6667C11.841 11.6667 13.3334 10.1743 13.3334 8.33333C13.3334 6.49238 11.841 5 10.0001 5C8.15913 5 6.66675 6.49238 6.66675 8.33333C6.66675 10.1743 8.15913 11.6667 10.0001 11.6667Z"
|
d="M5 9.75C5 8.86358 5.18106 7.98584 5.53284 7.16689C5.88463 6.34794 6.40024 5.60382 7.05025 4.97703C7.70026 4.35023 8.47194 3.85303 9.32122 3.51381C10.1705 3.17459 11.0807 3 12 3C12.9193 3 13.8295 3.17459 14.6788 3.51381C15.5281 3.85303 16.2997 4.35023 16.9497 4.97703C17.5998 5.60382 18.1154 6.34794 18.4672 7.16689C18.8189 7.98583 19 8.86358 19 9.75C19 14.8652 14.9802 18.6882 13.033 20.2401C12.4205 20.7282 11.5795 20.7282 10.967 20.2401C9.01984 18.6882 5 14.8652 5 9.75ZM12 14C14.2091 14 16 12.2091 16 10C16 7.79086 14.2091 6 12 6C9.79086 6 8 7.79086 8 10C8 12.2091 9.79086 14 12 14Z"
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
);
|
);
|
||||||
};
|
}
|
||||||
|
|
||||||
export default LocationIcon;
|
export default LocationIcon;
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
interface Props {
|
||||||
|
className?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function BurgerIcon({ className }: Props) {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
width={24}
|
||||||
|
height={24}
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
className={className}
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fillRule="evenodd"
|
||||||
|
clipRule="evenodd"
|
||||||
|
d="M19.75 17C19.75 17.4142 19.4142 17.75 19 17.75L5 17.75C4.58579 17.75 4.25 17.4142 4.25 17C4.25 16.5858 4.58579 16.25 5 16.25L19 16.25C19.4142 16.25 19.75 16.5858 19.75 17Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
fillRule="evenodd"
|
||||||
|
clipRule="evenodd"
|
||||||
|
d="M19.75 12C19.75 12.4142 19.4142 12.75 19 12.75L5 12.75C4.58579 12.75 4.25 12.4142 4.25 12C4.25 11.5858 4.58579 11.25 5 11.25L19 11.25C19.4142 11.25 19.75 11.5858 19.75 12Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
fillRule="evenodd"
|
||||||
|
clipRule="evenodd"
|
||||||
|
d="M19.75 7C19.75 7.41421 19.4142 7.75 19 7.75L5 7.75C4.58579 7.75 4.25 7.41421 4.25 7C4.25 6.58579 4.58579 6.25 5 6.25L19 6.25C19.4142 6.25 19.75 6.58579 19.75 7Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default BurgerIcon;
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
|
import { useEffect } from "react";
|
||||||
|
import DownloadIcon from "../icons/DownloadIcon";
|
||||||
|
|
||||||
|
function NavbarModal() {
|
||||||
|
useEffect(() => {
|
||||||
|
document.body.style.overflow = "hidden";
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
document.body.style.overflow = "auto";
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="fixed top-[56px] left-0 w-full h-[calc(100vh-56px)] bg-[#F3F3F2] z-50 sm:p-4 p-3 space-y-4 overflow-y-auto">
|
||||||
|
<div className="grid sm:grid-cols-2 gap-2 border-b border-[#E2E2DC] pb-4">
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
<a
|
||||||
|
href="/masterplan"
|
||||||
|
className="p-4 bg-white rounded-lg text-[#0D1922]"
|
||||||
|
>
|
||||||
|
Map
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/unit-types"
|
||||||
|
className="p-4 bg-white rounded-lg text-[#0D1922]"
|
||||||
|
>
|
||||||
|
Unit Types
|
||||||
|
</a>
|
||||||
|
<a href="/about" className="p-4 bg-white rounded-lg text-[#0D1922]">
|
||||||
|
About IRTH
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
<a
|
||||||
|
href="/favorites"
|
||||||
|
className="p-4 bg-white rounded-lg text-[#0D1922]"
|
||||||
|
>
|
||||||
|
Favorites
|
||||||
|
</a>
|
||||||
|
<a href="/search" className="p-4 bg-white rounded-lg text-[#0D1922]">
|
||||||
|
Search
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="font-semibold text-[#0D1922]">Brochures</p>
|
||||||
|
<div className="grid sm:grid-cols-2 gap-4">
|
||||||
|
<div className="space-y-3">
|
||||||
|
<p className="text-sm text-[#0D1922]">Rove Home Marasi Drive</p>
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="flex items-center justify-between text-xs font-semibold rounded-lg bg-white px-3 py-2"
|
||||||
|
download
|
||||||
|
>
|
||||||
|
<p>Rove Main Brochure</p>
|
||||||
|
<DownloadIcon />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="flex items-center justify-between text-xs font-semibold rounded-lg bg-white px-3 py-2"
|
||||||
|
download
|
||||||
|
>
|
||||||
|
<p>Rove Amenties Brochure</p>
|
||||||
|
<DownloadIcon />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="flex items-center justify-between text-xs font-semibold rounded-lg bg-white px-3 py-2"
|
||||||
|
download
|
||||||
|
>
|
||||||
|
<p>Rove Technical Brochure</p>
|
||||||
|
<DownloadIcon />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="space-y-3">
|
||||||
|
<p className="text-sm text-[#0D1922]">Rove Home Downtown</p>
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="flex items-center justify-between text-xs font-semibold rounded-lg bg-white px-3 py-2"
|
||||||
|
download
|
||||||
|
>
|
||||||
|
<p>Rove Main Brochure</p>
|
||||||
|
<DownloadIcon />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="flex items-center justify-between text-xs font-semibold rounded-lg bg-white px-3 py-2"
|
||||||
|
download
|
||||||
|
>
|
||||||
|
<p>Rove Amenties Brochure</p>
|
||||||
|
<DownloadIcon />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="flex items-center justify-between text-xs font-semibold rounded-lg bg-white px-3 py-2"
|
||||||
|
download
|
||||||
|
>
|
||||||
|
<p>Rove Technical Brochure</p>
|
||||||
|
<DownloadIcon />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default NavbarModal;
|
||||||
@@ -40,6 +40,7 @@ body {
|
|||||||
font-family: "Usual";
|
font-family: "Usual";
|
||||||
background-color: #f3f3f2;
|
background-color: #f3f3f2;
|
||||||
color: #0d1922b2;
|
color: #0d1922b2;
|
||||||
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.font-usual {
|
.font-usual {
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
import { Outlet } from "react-router-dom";
|
import { Outlet } from "react-router-dom";
|
||||||
import { isMobile } from "react-device-detect";
|
|
||||||
import { FullScreen, useFullScreenHandle } from "react-full-screen";
|
import { FullScreen, useFullScreenHandle } from "react-full-screen";
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import useModal from "../store/useModal";
|
import useModal from "../store/useModal";
|
||||||
import useFullScreen from "../store/useFullScreen";
|
import useFullScreen from "../store/useFullScreen";
|
||||||
import DesktopHeader from "../components/header/Header/DesktopHeader";
|
import ScrollToTop from "../components/ScrollToTop";
|
||||||
import MobileHeader from "../components/header/Header/MobileHeader";
|
import Header from "../components/Header";
|
||||||
|
|
||||||
const DefaultLayout = () => {
|
const DefaultLayout = () => {
|
||||||
const { modal } = useModal();
|
const { modal } = useModal();
|
||||||
@@ -19,10 +18,14 @@ const DefaultLayout = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FullScreen handle={onFullscreenHandle} className="flex flex-col min-h-screen">
|
<FullScreen
|
||||||
{isMobile ? <MobileHeader /> : <DesktopHeader />}
|
handle={onFullscreenHandle}
|
||||||
{modal}
|
className="flex flex-col min-h-screen"
|
||||||
|
>
|
||||||
|
<ScrollToTop />
|
||||||
|
<Header />
|
||||||
<Outlet />
|
<Outlet />
|
||||||
|
{modal}
|
||||||
</FullScreen>
|
</FullScreen>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
import { Outlet } from "react-router-dom";
|
import { Outlet } from "react-router-dom";
|
||||||
import { isMobile } from "react-device-detect";
|
|
||||||
import { FullScreen, useFullScreenHandle } from "react-full-screen";
|
import { FullScreen, useFullScreenHandle } from "react-full-screen";
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import useModal from "../store/useModal";
|
import useModal from "../store/useModal";
|
||||||
import useFullScreen from "../store/useFullScreen";
|
import useFullScreen from "../store/useFullScreen";
|
||||||
import DesktopHeader from "../components/header/Header/DesktopHeader";
|
|
||||||
import MobileHeader from "../components/header/Header/MobileHeader";
|
|
||||||
// import Footer from "../components/Footer";
|
// import Footer from "../components/Footer";
|
||||||
import Footer2 from "../components/Footer2";
|
import Footer2 from "../components/Footer2";
|
||||||
|
import ScrollToTop from "../components/ScrollToTop";
|
||||||
|
import Header from "../components/Header";
|
||||||
|
|
||||||
function WithFooterLayout() {
|
function WithFooterLayout() {
|
||||||
const { modal } = useModal();
|
const { modal } = useModal();
|
||||||
@@ -25,10 +24,11 @@ function WithFooterLayout() {
|
|||||||
handle={onFullscreenHandle}
|
handle={onFullscreenHandle}
|
||||||
className="flex flex-col min-h-screen"
|
className="flex flex-col min-h-screen"
|
||||||
>
|
>
|
||||||
{isMobile ? <MobileHeader /> : <DesktopHeader />}
|
<ScrollToTop />
|
||||||
{modal}
|
<Header />
|
||||||
<Outlet />
|
<Outlet />
|
||||||
<Footer2 />
|
<Footer2 />
|
||||||
|
{modal}
|
||||||
</FullScreen>
|
</FullScreen>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import WithFooterLayout from "./layouts/WithFooterLayout";
|
|||||||
import AboutProjectsPage from "./pages/AboutProjectsPage";
|
import AboutProjectsPage from "./pages/AboutProjectsPage";
|
||||||
import SearchPage from "./pages/SearchPage";
|
import SearchPage from "./pages/SearchPage";
|
||||||
import FavoritesPage from "./pages/FavoritesPage";
|
import FavoritesPage from "./pages/FavoritesPage";
|
||||||
|
import TestPage from "./pages/TestPage";
|
||||||
|
|
||||||
const router = createBrowserRouter([
|
const router = createBrowserRouter([
|
||||||
{
|
{
|
||||||
@@ -39,6 +40,10 @@ const router = createBrowserRouter([
|
|||||||
path: "virtual-tour/:unitType",
|
path: "virtual-tour/:unitType",
|
||||||
element: <VirtualTourPage />,
|
element: <VirtualTourPage />,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "test",
|
||||||
|
element: <TestPage />,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
const AboutPage = () => {
|
const AboutPage = () => {
|
||||||
return (
|
return (
|
||||||
<div className="mt-[58px] px-6 py-16 space-y-[140px] select-none">
|
<div className="mt-[58px] lg:px-6 px-4 sm:py-16 py-8 lg:space-y-[140px] sm:space-y-[120px] space-y-[80px] select-none">
|
||||||
<div className="space-y-10">
|
<div className="space-y-10">
|
||||||
<p className="text-[56px] text-[#0D1922] font-mixcase leading-[56px] -tracking-[1.68px]">
|
<p className="lg:text-[56px] sm:text-[40px] text-[28px] lg:leading-[56px] sm:leading-[40px] leading-[28px] text-[#0D1922] font-mixcase -tracking-[1.68px]">
|
||||||
Welcome to IRTH – a name etched in legacy
|
Welcome to IRTH – a name etched in legacy
|
||||||
</p>
|
</p>
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
@@ -14,7 +14,7 @@ const AboutPage = () => {
|
|||||||
loop
|
loop
|
||||||
></video>
|
></video>
|
||||||
</div>
|
</div>
|
||||||
<div className="grid grid-cols-2 gap-4 text-[#73787C] leading-[27px]">
|
<div className="grid sm:grid-cols-2 gap-4 text-[#73787C] leading-[27px] lg:text-xl">
|
||||||
<p>
|
<p>
|
||||||
IRTH is a privately held real estate investment platform. Based on
|
IRTH is a privately held real estate investment platform. Based on
|
||||||
the philosophy of value creation, innovation and building
|
the philosophy of value creation, innovation and building
|
||||||
@@ -30,13 +30,13 @@ const AboutPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="grid grid-cols-2 gap-10 border-t border-b border-[#E2E2DC] py-6">
|
<div className="grid lg:grid-cols-2 gap-10 border-t border-b border-[#E2E2DC] py-6">
|
||||||
<div className="flex flex-col justify-between gap-6">
|
<div className="flex flex-col justify-between gap-6">
|
||||||
<div className="space-y-10 text-[#73787C] leading-[27px]">
|
<div className="space-y-10 text-[#73787C] leading-[27px]">
|
||||||
<p className="text-[56px] text-[#0D1922] font-mixcase leading-[56px] -tracking-[1.68px]">
|
<p className="lg:text-[56px] sm:text-[40px] text-[28px] lg:leading-[56px] sm:leading-[40px] leading-[28px] text-[#0D1922] font-mixcase -tracking-[1.68px]">
|
||||||
Our Portfolio
|
Our Portfolio
|
||||||
</p>
|
</p>
|
||||||
<div className="space-y-4">
|
<div className="grid sm:grid-cols-2 gap-4 lg:text-xl">
|
||||||
<p>
|
<p>
|
||||||
IRTH group’s real estate portfolio is spread across various
|
IRTH group’s real estate portfolio is spread across various
|
||||||
sectors and countries. With thorough market research, IRTH
|
sectors and countries. With thorough market research, IRTH
|
||||||
@@ -53,7 +53,7 @@ const AboutPage = () => {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-2xl font-semibold leading-[32.4px]">
|
<p className="lg:text-2xl text-xl font-semibold leading-[32.4px]">
|
||||||
We take pride in offering the best-in-class locations and properties
|
We take pride in offering the best-in-class locations and properties
|
||||||
for value-based investment opportunities - setting new standards in
|
for value-based investment opportunities - setting new standards in
|
||||||
the real estate market in the region.
|
the real estate market in the region.
|
||||||
@@ -75,16 +75,16 @@ const AboutPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-10">
|
<div className="space-y-10">
|
||||||
<p className="text-[56px] text-[#0D1922] font-mixcase leading-[56px] -tracking-[1.68px]">
|
<p className="lg:text-[56px] sm:text-[40px] text-[28px] lg:leading-[56px] sm:leading-[40px] leading-[28px] text-[#0D1922] font-mixcase -tracking-[1.68px]">
|
||||||
Our foundation is built upon three core values
|
Our foundation is built upon three core values
|
||||||
</p>
|
</p>
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<div className="grid grid-cols-3 gap-4">
|
<div className="grid md:grid-cols-3 lg:gap-4 gap-3">
|
||||||
<div className="space-y-9 p-10 bg-white rounded-2xl">
|
<div className="lg:space-y-9 sm:space-y-6 space-y-6 lg:p-10 p-5 bg-white rounded-2xl">
|
||||||
<p className="text-2xl text-[#0D1922] font-semibold leading-[32.4px]">
|
<p className="lg:text-2xl sm:text-xl text-[#0D1922] font-semibold leading-[32.4px]">
|
||||||
Trust
|
Trust
|
||||||
</p>
|
</p>
|
||||||
<div className="space-y-3 text-sm text-[#73787C] leading-[19.6px]">
|
<div className="space-y-3 lg:text-sm text-xs text-[#73787C] leading-[19.6px]">
|
||||||
<p>
|
<p>
|
||||||
Trust is the cornerstone of IRTH's foundation. We uphold an
|
Trust is the cornerstone of IRTH's foundation. We uphold an
|
||||||
unshakeable commitment to transparency, integrity, and ethical
|
unshakeable commitment to transparency, integrity, and ethical
|
||||||
@@ -98,11 +98,11 @@ const AboutPage = () => {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-9 p-10 bg-white rounded-2xl">
|
<div className="lg:space-y-9 sm:space-y-6 space-y-6 lg:p-10 p-5 bg-white rounded-2xl">
|
||||||
<p className="text-2xl text-[#0D1922] font-semibold leading-[32.4px]">
|
<p className="lg:text-2xl sm:text-xl text-[#0D1922] font-semibold leading-[32.4px]">
|
||||||
Strength
|
Strength
|
||||||
</p>
|
</p>
|
||||||
<div className="space-y-3 text-sm text-[#73787C] leading-[19.6px]">
|
<div className="space-y-3 lg:text-sm text-xs text-[#73787C] leading-[19.6px]">
|
||||||
<p>
|
<p>
|
||||||
Strength isn't just a physical attribute; it's a reflection of
|
Strength isn't just a physical attribute; it's a reflection of
|
||||||
our resilience, determination, and unwavering resolve.
|
our resilience, determination, and unwavering resolve.
|
||||||
@@ -115,11 +115,11 @@ const AboutPage = () => {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-9 p-10 bg-white rounded-2xl">
|
<div className="lg:space-y-9 sm:space-y-6 space-y-6 lg:p-10 p-5 bg-white rounded-2xl">
|
||||||
<p className="text-2xl text-[#0D1922] font-semibold leading-[32.4px]">
|
<p className="lg:text-2xl sm:text-xl text-[#0D1922] font-semibold leading-[32.4px]">
|
||||||
Agility
|
Agility
|
||||||
</p>
|
</p>
|
||||||
<div className="space-y-3 text-sm text-[#73787C] leading-[19.6px]">
|
<div className="space-y-3 lg:text-sm text-xs text-[#73787C] leading-[19.6px]">
|
||||||
<p>
|
<p>
|
||||||
In a rapidly evolving landscape, adaptability is paramount.
|
In a rapidly evolving landscape, adaptability is paramount.
|
||||||
IRTH embraces agility as a guiding principle, allowing us to
|
IRTH embraces agility as a guiding principle, allowing us to
|
||||||
@@ -133,7 +133,7 @@ const AboutPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="w-1/2 text-2xl font-semibold leading-[32.4px]">
|
<p className="lg:w-1/2 lg:text-2xl sm:text-xl font-semibold lg:leading-[32.4px] sm:leading-[28px] leading-[18.4px]">
|
||||||
These principles serve as our guiding light, propelling us forward
|
These principles serve as our guiding light, propelling us forward
|
||||||
as a prominent player in the realm of real estate investment. We
|
as a prominent player in the realm of real estate investment. We
|
||||||
proudly stand among the elite establishments within the UAE, a
|
proudly stand among the elite establishments within the UAE, a
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ function AboutProjectsPage() {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Button2>Learn more</Button2>
|
<Button2 onClick={() => navigate("/about")}>Learn more</Button2>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
<img
|
<img
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import api from "../utils/api";
|
||||||
|
|
||||||
|
function TestPage() {
|
||||||
|
const [data, setData] = useState<any[]>([]);
|
||||||
|
|
||||||
|
async function getData() {
|
||||||
|
try {
|
||||||
|
const result: any = await api.get("test").json();
|
||||||
|
|
||||||
|
setData(result);
|
||||||
|
} catch (error) {
|
||||||
|
alert((error as Error).message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getData();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="mt-[58px] p-8">
|
||||||
|
<div className="space-y-8">
|
||||||
|
<p className="text-2xl">Test Page</p>
|
||||||
|
<p>Count units: {data.length}</p>
|
||||||
|
<div className="grid grid-cols-6 gap-4">
|
||||||
|
{data.length > 0
|
||||||
|
? data.map((item) => (
|
||||||
|
<div key={item.id} className="bg-white p-4 rounded-2xl">
|
||||||
|
<p>{item.Product_Name}</p>
|
||||||
|
{/* <p>{item.Project_Name.name}</p> */}
|
||||||
|
<p>{item.Property_Status}</p>
|
||||||
|
<p>{item.Purchse_Price}</p>
|
||||||
|
<p>{item.Unit_Type1}</p>
|
||||||
|
<p>{item.Floor}</p>
|
||||||
|
<p>{item.Unit_No}</p>
|
||||||
|
<p>{item.Unit_View}</p>
|
||||||
|
<p>{item.Total_Area_Sqft}</p>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
: "Loading..."}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TestPage;
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
|
"got": "^14.4.2",
|
||||||
"mongoose": "^8.5.1",
|
"mongoose": "^8.5.1",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"winston": "^3.13.0"
|
"winston": "^3.13.0"
|
||||||
|
|||||||
+3
-6
@@ -8,10 +8,8 @@ import connectDB from "./config/db.js";
|
|||||||
import morgan from "morgan";
|
import morgan from "morgan";
|
||||||
import apartmentRoute from "./routes/apartment.js";
|
import apartmentRoute from "./routes/apartment.js";
|
||||||
import apartmentsRoute from "./routes/apartments.js";
|
import apartmentsRoute from "./routes/apartments.js";
|
||||||
import updateAccessToken from "./routes/zohoAccessToken.js";
|
|
||||||
import unitsRoute from "./routes/unitsRoute.js";
|
import unitsRoute from "./routes/unitsRoute.js";
|
||||||
import updateApartments2Route from "./routes/updateApartments2Route.js";
|
import testRoute from "./routes/testRoute.js";
|
||||||
// import updateApartmentsRoute from "./routes/updateApartmentsRoute.js";
|
|
||||||
|
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = path.dirname(__filename);
|
const __dirname = path.dirname(__filename);
|
||||||
@@ -33,10 +31,9 @@ app.use(morgan("combined", { stream: accessLogStream }));
|
|||||||
|
|
||||||
app.use("/apartments", apartmentsRoute);
|
app.use("/apartments", apartmentsRoute);
|
||||||
app.use("/apartment", apartmentRoute);
|
app.use("/apartment", apartmentRoute);
|
||||||
app.use("/updateAccessToken", updateAccessToken);
|
// app.use("/updateAccessToken", updateAccessToken);
|
||||||
app.use("/units", unitsRoute);
|
app.use("/units", unitsRoute);
|
||||||
// app.use("/update-apartments", updateApartmentsRoute);
|
app.use("/test", testRoute);
|
||||||
// app.use("/update-apartments-2", updateApartments2Route);
|
|
||||||
|
|
||||||
app.listen(port, () => {
|
app.listen(port, () => {
|
||||||
console.log(`Server is listening on port ${port}`);
|
console.log(`Server is listening on port ${port}`);
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
import { Router } from "express";
|
||||||
|
import got from "got";
|
||||||
|
import getAccessToken from "../utils/getAccessToken.js";
|
||||||
|
|
||||||
|
const router = Router();
|
||||||
|
|
||||||
|
async function getData(accessToken: string, page: number) {
|
||||||
|
try {
|
||||||
|
const result: any = await got
|
||||||
|
.get(
|
||||||
|
`https://www.zohoapis.com/crm/v7/Products?fields=Product_Name,Project_Name,Property_Status,Purchse_Price,Unit_Type1,Floor,Unit_No,Unit_View,Total_Area_Sqft&page=${page}`,
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
Authorization: `Zoho-oauthtoken ${accessToken}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.json();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
} catch (error) {
|
||||||
|
return (error as Error).message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
router.get("/", async (req, res) => {
|
||||||
|
let accessToken;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const result = await getAccessToken();
|
||||||
|
|
||||||
|
if (!("accessToken" in result)) {
|
||||||
|
return res.json(result.error);
|
||||||
|
}
|
||||||
|
|
||||||
|
accessToken = result.accessToken;
|
||||||
|
} catch (error) {
|
||||||
|
return res.json({ error: (error as Error).message });
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("accessToken", accessToken);
|
||||||
|
|
||||||
|
let page = 1;
|
||||||
|
const data: any[] = [];
|
||||||
|
|
||||||
|
if (!accessToken) {
|
||||||
|
return res.json({ error: "No accessToken" });
|
||||||
|
}
|
||||||
|
|
||||||
|
const get = async () => {
|
||||||
|
const result: any = await getData(accessToken, page);
|
||||||
|
data.push(...(result.data as any[]));
|
||||||
|
page++;
|
||||||
|
|
||||||
|
if (result.info.next_page_token) {
|
||||||
|
await get();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
await get();
|
||||||
|
|
||||||
|
return res.json(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
export default router;
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import got from "got";
|
||||||
|
|
||||||
|
interface IResult {
|
||||||
|
access_token: string;
|
||||||
|
scope: string;
|
||||||
|
api_domain: string;
|
||||||
|
token_type: string;
|
||||||
|
expires_in: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getAccessToken() {
|
||||||
|
try {
|
||||||
|
const refreshToken =
|
||||||
|
"1000.3fe84b5d46a29eda6ea809f87f9bd763.41ed80716ca3cc53c149d0c2c238456b";
|
||||||
|
const grantType = "refresh_token";
|
||||||
|
const clientId = "1000.AXAHCN0E0GKQMDP4K8LM0XJ5KQQMCL";
|
||||||
|
const clientSecret = "59f54273e498401489bbf211e63c14a7c747a26afe";
|
||||||
|
|
||||||
|
const result: IResult = await got
|
||||||
|
.post(
|
||||||
|
`https://accounts.zoho.com/oauth/v2/token?refresh_token=${refreshToken}&grant_type=${grantType}&client_id=${clientId}&client_secret=${clientSecret}`
|
||||||
|
)
|
||||||
|
.json();
|
||||||
|
|
||||||
|
console.log("result", result);
|
||||||
|
|
||||||
|
return { accessToken: result.access_token };
|
||||||
|
} catch (error) {
|
||||||
|
return { error: (error as Error).message };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default getAccessToken;
|
||||||
@@ -48,6 +48,23 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
sparse-bitfield "^3.0.3"
|
sparse-bitfield "^3.0.3"
|
||||||
|
|
||||||
|
"@sec-ant/readable-stream@^0.4.1":
|
||||||
|
version "0.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c"
|
||||||
|
integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==
|
||||||
|
|
||||||
|
"@sindresorhus/is@^7.0.0":
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-7.0.0.tgz#af4d8061cd325782355e7716633e03f7758d4f17"
|
||||||
|
integrity sha512-WDTlVTyvFivSOuyvMeedzg2hdoBLZ3f1uNVuEida2Rl9BrfjrIRjWA/VZIrMRLvSwJYCAlCRA3usDt1THytxWQ==
|
||||||
|
|
||||||
|
"@szmarczak/http-timer@^5.0.1":
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a"
|
||||||
|
integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==
|
||||||
|
dependencies:
|
||||||
|
defer-to-connect "^2.0.1"
|
||||||
|
|
||||||
"@tsconfig/node10@^1.0.7":
|
"@tsconfig/node10@^1.0.7":
|
||||||
version "1.0.11"
|
version "1.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2"
|
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2"
|
||||||
@@ -110,6 +127,11 @@
|
|||||||
"@types/qs" "*"
|
"@types/qs" "*"
|
||||||
"@types/serve-static" "*"
|
"@types/serve-static" "*"
|
||||||
|
|
||||||
|
"@types/http-cache-semantics@^4.0.4":
|
||||||
|
version "4.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
|
||||||
|
integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
|
||||||
|
|
||||||
"@types/http-errors@*":
|
"@types/http-errors@*":
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f"
|
resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f"
|
||||||
@@ -281,6 +303,24 @@ bytes@3.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
|
||||||
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
|
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
|
||||||
|
|
||||||
|
cacheable-lookup@^7.0.0:
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27"
|
||||||
|
integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==
|
||||||
|
|
||||||
|
cacheable-request@^12.0.1:
|
||||||
|
version "12.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-12.0.1.tgz#e6f473b5b76c02e72a0ec2cd44c7cfb7c751d7c5"
|
||||||
|
integrity sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==
|
||||||
|
dependencies:
|
||||||
|
"@types/http-cache-semantics" "^4.0.4"
|
||||||
|
get-stream "^9.0.1"
|
||||||
|
http-cache-semantics "^4.1.1"
|
||||||
|
keyv "^4.5.4"
|
||||||
|
mimic-response "^4.0.0"
|
||||||
|
normalize-url "^8.0.1"
|
||||||
|
responselike "^3.0.0"
|
||||||
|
|
||||||
call-bind@^1.0.7:
|
call-bind@^1.0.7:
|
||||||
version "1.0.7"
|
version "1.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
|
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
|
||||||
@@ -402,6 +442,18 @@ debug@4.x, debug@^4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "2.1.2"
|
ms "2.1.2"
|
||||||
|
|
||||||
|
decompress-response@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
|
||||||
|
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
|
||||||
|
dependencies:
|
||||||
|
mimic-response "^3.1.0"
|
||||||
|
|
||||||
|
defer-to-connect@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
|
||||||
|
integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
|
||||||
|
|
||||||
define-data-property@^1.1.4:
|
define-data-property@^1.1.4:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
||||||
@@ -535,6 +587,11 @@ fn.name@1.x.x:
|
|||||||
resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
|
resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
|
||||||
integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
|
integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
|
||||||
|
|
||||||
|
form-data-encoder@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12"
|
||||||
|
integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==
|
||||||
|
|
||||||
forwarded@0.2.0:
|
forwarded@0.2.0:
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
|
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
|
||||||
@@ -566,6 +623,14 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
|
|||||||
has-symbols "^1.0.3"
|
has-symbols "^1.0.3"
|
||||||
hasown "^2.0.0"
|
hasown "^2.0.0"
|
||||||
|
|
||||||
|
get-stream@^9.0.1:
|
||||||
|
version "9.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-9.0.1.tgz#95157d21df8eb90d1647102b63039b1df60ebd27"
|
||||||
|
integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==
|
||||||
|
dependencies:
|
||||||
|
"@sec-ant/readable-stream" "^0.4.1"
|
||||||
|
is-stream "^4.0.1"
|
||||||
|
|
||||||
glob-parent@~5.1.2:
|
glob-parent@~5.1.2:
|
||||||
version "5.1.2"
|
version "5.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||||
@@ -580,6 +645,23 @@ gopd@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
get-intrinsic "^1.1.3"
|
get-intrinsic "^1.1.3"
|
||||||
|
|
||||||
|
got@^14.4.2:
|
||||||
|
version "14.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/got/-/got-14.4.2.tgz#988ed18d8deca3a3933915fbeff36065f8f58db7"
|
||||||
|
integrity sha512-+Te/qEZ6hr7i+f0FNgXx/6WQteSM/QqueGvxeYQQFm0GDfoxLVJ/oiwUKYMTeioColWUTdewZ06hmrBjw6F7tw==
|
||||||
|
dependencies:
|
||||||
|
"@sindresorhus/is" "^7.0.0"
|
||||||
|
"@szmarczak/http-timer" "^5.0.1"
|
||||||
|
cacheable-lookup "^7.0.0"
|
||||||
|
cacheable-request "^12.0.1"
|
||||||
|
decompress-response "^6.0.0"
|
||||||
|
form-data-encoder "^4.0.2"
|
||||||
|
http2-wrapper "^2.2.1"
|
||||||
|
lowercase-keys "^3.0.0"
|
||||||
|
p-cancelable "^4.0.1"
|
||||||
|
responselike "^3.0.0"
|
||||||
|
type-fest "^4.19.0"
|
||||||
|
|
||||||
has-flag@^3.0.0:
|
has-flag@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||||
@@ -609,6 +691,11 @@ hasown@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.1.2"
|
function-bind "^1.1.2"
|
||||||
|
|
||||||
|
http-cache-semantics@^4.1.1:
|
||||||
|
version "4.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
|
||||||
|
integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
|
||||||
|
|
||||||
http-errors@2.0.0:
|
http-errors@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
||||||
@@ -620,6 +707,14 @@ http-errors@2.0.0:
|
|||||||
statuses "2.0.1"
|
statuses "2.0.1"
|
||||||
toidentifier "1.0.1"
|
toidentifier "1.0.1"
|
||||||
|
|
||||||
|
http2-wrapper@^2.2.1:
|
||||||
|
version "2.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a"
|
||||||
|
integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==
|
||||||
|
dependencies:
|
||||||
|
quick-lru "^5.1.1"
|
||||||
|
resolve-alpn "^1.2.0"
|
||||||
|
|
||||||
iconv-lite@0.4.24:
|
iconv-lite@0.4.24:
|
||||||
version "0.4.24"
|
version "0.4.24"
|
||||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||||
@@ -676,11 +771,28 @@ is-stream@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
|
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
|
||||||
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
|
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
|
||||||
|
|
||||||
|
is-stream@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b"
|
||||||
|
integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==
|
||||||
|
|
||||||
|
json-buffer@3.0.1:
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
|
||||||
|
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
|
||||||
|
|
||||||
kareem@2.6.3:
|
kareem@2.6.3:
|
||||||
version "2.6.3"
|
version "2.6.3"
|
||||||
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.6.3.tgz#23168ec8ffb6c1abfd31b7169a6fb1dd285992ac"
|
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.6.3.tgz#23168ec8ffb6c1abfd31b7169a6fb1dd285992ac"
|
||||||
integrity sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==
|
integrity sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==
|
||||||
|
|
||||||
|
keyv@^4.5.4:
|
||||||
|
version "4.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
|
||||||
|
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
|
||||||
|
dependencies:
|
||||||
|
json-buffer "3.0.1"
|
||||||
|
|
||||||
kuler@^2.0.0:
|
kuler@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
|
resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
|
||||||
@@ -698,6 +810,11 @@ logform@^2.3.2, logform@^2.4.0:
|
|||||||
safe-stable-stringify "^2.3.1"
|
safe-stable-stringify "^2.3.1"
|
||||||
triple-beam "^1.3.0"
|
triple-beam "^1.3.0"
|
||||||
|
|
||||||
|
lowercase-keys@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2"
|
||||||
|
integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==
|
||||||
|
|
||||||
make-error@^1.1.1:
|
make-error@^1.1.1:
|
||||||
version "1.3.6"
|
version "1.3.6"
|
||||||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||||
@@ -740,6 +857,16 @@ mime@1.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||||
|
|
||||||
|
mimic-response@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
|
||||||
|
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
|
||||||
|
|
||||||
|
mimic-response@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f"
|
||||||
|
integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==
|
||||||
|
|
||||||
minimatch@^3.1.2:
|
minimatch@^3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||||
@@ -841,6 +968,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||||
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
||||||
|
|
||||||
|
normalize-url@^8.0.1:
|
||||||
|
version "8.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a"
|
||||||
|
integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==
|
||||||
|
|
||||||
object-assign@^4:
|
object-assign@^4:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||||
@@ -877,6 +1009,11 @@ one-time@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fn.name "1.x.x"
|
fn.name "1.x.x"
|
||||||
|
|
||||||
|
p-cancelable@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-4.0.1.tgz#2d1edf1ab8616b72c73db41c4bc9ecdd10af640e"
|
||||||
|
integrity sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg==
|
||||||
|
|
||||||
parseurl@~1.3.3:
|
parseurl@~1.3.3:
|
||||||
version "1.3.3"
|
version "1.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||||
@@ -917,6 +1054,11 @@ qs@6.11.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
side-channel "^1.0.4"
|
side-channel "^1.0.4"
|
||||||
|
|
||||||
|
quick-lru@^5.1.1:
|
||||||
|
version "5.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
|
||||||
|
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
|
||||||
|
|
||||||
range-parser@~1.2.1:
|
range-parser@~1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
|
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
|
||||||
@@ -948,6 +1090,18 @@ readdirp@~3.6.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
picomatch "^2.2.1"
|
picomatch "^2.2.1"
|
||||||
|
|
||||||
|
resolve-alpn@^1.2.0:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
|
||||||
|
integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
|
||||||
|
|
||||||
|
responselike@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626"
|
||||||
|
integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==
|
||||||
|
dependencies:
|
||||||
|
lowercase-keys "^3.0.0"
|
||||||
|
|
||||||
safe-buffer@5.1.2:
|
safe-buffer@5.1.2:
|
||||||
version "5.1.2"
|
version "5.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||||
@@ -1132,6 +1286,11 @@ ts-node@^10.9.2:
|
|||||||
v8-compile-cache-lib "^3.0.1"
|
v8-compile-cache-lib "^3.0.1"
|
||||||
yn "3.1.1"
|
yn "3.1.1"
|
||||||
|
|
||||||
|
type-fest@^4.19.0:
|
||||||
|
version "4.24.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.24.0.tgz#28d18f2d2afb020e46f6d1236e944d7aa4f92dde"
|
||||||
|
integrity sha512-spAaHzc6qre0TlZQQ2aA/nGMe+2Z/wyGk5Z+Ru2VUfdNwT6kWO6TjevOlpebsATEG1EIQ2sOiDszud3lO5mt/Q==
|
||||||
|
|
||||||
type-is@~1.6.18:
|
type-is@~1.6.18:
|
||||||
version "1.6.18"
|
version "1.6.18"
|
||||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
|
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
|
||||||
|
|||||||
Reference in New Issue
Block a user