diff --git a/data/blog/2023-01-13-edge-rate-limiting.mdx b/data/blog/2023-01-13-edge-rate-limiting.mdx index b619058c..28e94d73 100644 --- a/data/blog/2023-01-13-edge-rate-limiting.mdx +++ b/data/blog/2023-01-13-edge-rate-limiting.mdx @@ -103,7 +103,7 @@ Refresh the page, you should be redirected to the blocked page after 3 times. ### Less Remote Call with Caching -It is not efficient to make a remote call with each request. A useful feature of the @uptash/ratelimit package is that it caches data as long as the edge function is "hot". This means that data is only fetched from Redis when the function is "cold", reducing the number of remote calls. Caching can be implemented by declaring the `ratelimit` object outside the handler `function middleware`. +It is not efficient to make a remote call with each request. A useful feature of the @upstash/ratelimit package is that it caches data as long as the edge function is "hot". This means that data is only fetched from Redis when the function is "cold", reducing the number of remote calls. Caching can be implemented by declaring the `ratelimit` object outside the handler `function middleware`. ### Rate Limiting Algorithms diff --git a/next-env.d.ts b/next-env.d.ts index 725dd6f2..40c3d680 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,5 @@ /// /// -/// // NOTE: This file should not be edited // see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 17348ea2..d35c9867 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -1,13 +1,16 @@ -import Bg from "@/components/bg"; -import Container from "@/components/container"; -import * as AboutIcon from "@/components/investor/icons"; -import Investors from "@/components/investor/investors"; -import PageBodyGradient from "@/components/page-body-gradient"; -import PageHeaderDesc from "@/components/page-header-desc"; -import PageHeaderTitle from "@/components/page-header-title"; import { Metadata } from "next"; + import Balancer from "react-wrap-balancer"; +import { Investors, InvestorsIcons } from "@/components/investor"; +import { + Bg, + Container, + PageBodyGradient, + PageHeaderDesc, + PageHeaderTitle, +} from "@/components"; + export const metadata: Metadata = { title: "About", description: "We manage everything for you.", @@ -86,21 +89,21 @@ const MISSIONS = [ title: "Fast", desc: "We understand that every millisecond matters to you.", icon: ( - + ), }, { title: "Simple", desc: "Keep the things as simple as possible but not simpler.", icon: ( - + ), }, { title: "Robust", desc: "We aim to earn your trust with robust solutions.", icon: ( - + ), }, ]; diff --git a/src/app/blog/[slug]/page.tsx b/src/app/blog/[slug]/page.tsx index ee45dfc4..085fd747 100644 --- a/src/app/blog/[slug]/page.tsx +++ b/src/app/blog/[slug]/page.tsx @@ -1,15 +1,17 @@ -import Bg from "@/components/bg"; -import Container from "@/components/container"; -import PageBodyGradient from "@/components/page-body-gradient"; -import Clap from "@/components/post/claps"; -import PostHeader from "@/components/post/header"; -import { Mdx } from "@/components/post/mdx"; -import OtherPostCard from "@/components/post/other-post"; -import PostTags from "@/components/post/tags"; +import { notFound } from "next/navigation"; + // import { generateBlogSchema } from "@/utils/structured-schema-generators"; import type { Post } from "@content"; import { allPosts } from "@content"; -import { notFound } from "next/navigation"; + +import { + Clap, + Mdx, + OtherPostCard, + PostHeader, + PostTags, +} from "@/components/post"; +import { Bg, Container, PageBodyGradient } from "@/components"; type Props = { params: { diff --git a/src/app/blog/all/page.tsx b/src/app/blog/all/page.tsx index 62934f33..b701c97c 100644 --- a/src/app/blog/all/page.tsx +++ b/src/app/blog/all/page.tsx @@ -1,9 +1,8 @@ -import Bg from "@/components/bg"; -import PostListCard from "@/components/blog/list-item"; -import Container from "@/components/container"; -import PageHeaderDesc from "@/components/page-header-desc"; -import PageHeaderTitle from "@/components/page-header-title"; import type { Post } from "@content"; + +import { PostListCard } from "@/components/blog"; +import { Bg, Container, PageHeaderDesc, PageHeaderTitle } from "@/components"; + import { getData } from "../utils/helpers"; export default async function BlogPage() { diff --git a/src/app/blog/author/[author]/page.tsx b/src/app/blog/author/[author]/page.tsx index b11c221e..bb93c366 100644 --- a/src/app/blog/author/[author]/page.tsx +++ b/src/app/blog/author/[author]/page.tsx @@ -1,10 +1,11 @@ -import Bg from "@/components/bg"; -import PostGridCard from "@/components/blog/grid-item"; -import Container from "@/components/container"; -import PageHeaderTitle from "@/components/page-header-title"; +import Link from "next/link"; + import type { Post } from "@content"; import { uniq } from "lodash"; -import Link from "next/link"; + +import { PostGridCard } from "@/components/blog"; +import { Bg, Container, PageHeaderTitle } from "@/components"; + import { getData } from "../../utils/helpers"; type Props = { diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index c26d8b07..e772560f 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -1,13 +1,12 @@ -import Bg from "@/components/bg"; -import PostGridCard from "@/components/blog/grid-item"; -import PopularTag from "@/components/blog/popular-tag"; -import Container from "@/components/container"; -import PageHeaderDesc from "@/components/page-header-desc"; -import PageHeaderTitle from "@/components/page-header-title"; +import Link from "next/link"; + import { BANNED_TAGS } from "@/utils/const"; import type { Post } from "@content"; import { countBy, flatten, omit } from "lodash"; -import Link from "next/link"; + +import { PopularTag, PostGridCard } from "@/components/blog"; +import { Bg, Container, PageHeaderDesc, PageHeaderTitle } from "@/components"; + import { getData } from "./utils/helpers"; export default async function BlogPage() { diff --git a/src/app/blog/tag/[tag]/page.tsx b/src/app/blog/tag/[tag]/page.tsx index 19673375..fc58c8db 100644 --- a/src/app/blog/tag/[tag]/page.tsx +++ b/src/app/blog/tag/[tag]/page.tsx @@ -1,10 +1,11 @@ -import Bg from "@/components/bg"; -import PostGridCard from "@/components/blog/grid-item"; -import Container from "@/components/container"; -import PageHeaderTitle from "@/components/page-header-title"; +import Link from "next/link"; + import type { Post } from "@content"; import { uniq } from "lodash"; -import Link from "next/link"; + +import { PostGridCard } from "@/components/blog"; +import { Bg, Container, PageHeaderTitle } from "@/components"; + import { getData } from "../../utils/helpers"; type Props = { diff --git a/src/app/brand/page.tsx b/src/app/brand/page.tsx index 80f6e6d9..a5631413 100644 --- a/src/app/brand/page.tsx +++ b/src/app/brand/page.tsx @@ -1,10 +1,9 @@ -import Bg from "@/components/bg"; -import Container from "@/components/container"; -import CopyButton from "@/components/copy-button"; -import PageHeaderTitle from "@/components/page-header-title"; -import cx from "@/utils/cx"; -import { Metadata } from "next"; import { HTMLAttributes } from "react"; +import { Metadata } from "next"; + +import cx from "@/utils/cx"; + +import {Bg, Container, CopyButton, PageHeaderTitle} from "@/components"; export const metadata: Metadata = { title: "Brand Assets", diff --git a/src/app/careers/[slug]/page.tsx b/src/app/careers/[slug]/page.tsx index 669a0948..9ebd351b 100644 --- a/src/app/careers/[slug]/page.tsx +++ b/src/app/careers/[slug]/page.tsx @@ -1,12 +1,12 @@ -import Bg from "@/components/bg"; -import CareerHeader from "@/components/career/header"; -import Container from "@/components/container"; -import PageBodyGradient from "@/components/page-body-gradient"; -import { Mdx } from "@/components/post/mdx"; +import { notFound } from "next/navigation"; + import { SITE_URL } from "@/utils/const"; import { allJobs } from "@content"; import type { Job } from "@content"; -import { notFound } from "next/navigation"; + +import CareerHeader from "@/components/career/header"; +import { Mdx } from "@/components/post"; +import { Bg, Container, PageBodyGradient } from "@/components"; type Props = { params: { diff --git a/src/app/careers/page.tsx b/src/app/careers/page.tsx index 99a0046e..71bdf033 100644 --- a/src/app/careers/page.tsx +++ b/src/app/careers/page.tsx @@ -1,11 +1,10 @@ -import Bg from "@/components/bg"; -import Container from "@/components/container"; -import PageHeaderDesc from "@/components/page-header-desc"; -import PageHeaderTitle from "@/components/page-header-title"; -import { allJobs } from "@content"; import { Metadata } from "next"; import Link from "next/link"; +import { allJobs } from "@content"; + +import {Bg, Container, PageHeaderDesc, PageHeaderTitle} from "@/components"; + const description = "Help us build the cutting edge data platform for the serverless era."; diff --git a/src/app/customers/[slug]/page.tsx b/src/app/customers/[slug]/page.tsx index 668e67f0..67975982 100644 --- a/src/app/customers/[slug]/page.tsx +++ b/src/app/customers/[slug]/page.tsx @@ -1,11 +1,13 @@ -import Container from "@/components/container"; -import { Mdx } from "@/components/post/mdx"; -import { allCustomers } from "@content"; -import type { Customer } from "@content"; import Image from "next/image"; import Link from "next/link"; import { notFound } from "next/navigation"; +import { allCustomers } from "@content"; +import type { Customer } from "@content"; + +import { Mdx } from "@/components/post"; +import { Container } from "@/components"; + type Props = { params: { slug: string; diff --git a/src/app/customers/page.tsx b/src/app/customers/page.tsx index e53a4f9f..d79d9b09 100644 --- a/src/app/customers/page.tsx +++ b/src/app/customers/page.tsx @@ -1,14 +1,18 @@ "use client"; -import Bg from "@/components/bg"; -import Button from "@/components/button"; -import Container from "@/components/container"; -import PageHeaderDesc from "@/components/page-header-desc"; -import PageHeaderTitle from "@/components/page-header-title"; -import { allCustomers } from "@content"; import Image from "next/image"; import Link from "next/link"; +import { allCustomers } from "@content"; + +import { + Bg, + Button, + Container, + PageHeaderDesc, + PageHeaderTitle, +} from "@/components"; + export default function CustomerPage() { let customers = allCustomers.filter((o) => !o.draft); customers = customers.sort((a, b) => (a.order || 99) - (b.order || 99)); diff --git a/src/app/examples/[slug]/page.tsx b/src/app/examples/[slug]/page.tsx index deb6211e..c9782747 100644 --- a/src/app/examples/[slug]/page.tsx +++ b/src/app/examples/[slug]/page.tsx @@ -1,14 +1,14 @@ -import Button from "@/components/button"; -import Container from "@/components/container"; -import { ICON_NAMES } from "@/components/icon"; -import IconQStash from "@/components/icon-qstash"; -import IconRedis from "@/components/icon-redis"; -import { authors } from "@/utils/authors"; -import markdownToHtml from "@/utils/markdownToHtml"; +import { HTMLProps } from "react"; import Link from "next/link"; import { notFound } from "next/navigation"; -import { HTMLProps } from "react"; + +import { authors } from "@/utils/authors"; +import markdownToHtml from "@/utils/markdownToHtml"; import Balancer from "react-wrap-balancer"; + +import { ICON_NAMES } from "@/components/icon"; +import { Button, Container, IconQStash, IconRedis } from "@/components"; + import { getData, type Example } from "../get-data"; type Props = { diff --git a/src/app/examples/page.tsx b/src/app/examples/page.tsx index bfded3bc..f568b073 100644 --- a/src/app/examples/page.tsx +++ b/src/app/examples/page.tsx @@ -1,9 +1,8 @@ -import Bg from "@/components/bg"; -import Container from "@/components/container"; -import { Client } from "@/components/example/client"; -import PageHeaderDesc from "@/components/page-header-desc"; -import PageHeaderTitle from "@/components/page-header-title"; import React from "react"; + +import { Client } from "@/components/example/client"; +import { Bg, Container, PageHeaderDesc, PageHeaderTitle } from "@/components"; + import { getData, type Example } from "./get-data"; // TODO: set canonical url diff --git a/src/app/fast/page.tsx b/src/app/fast/page.tsx index a5299334..1403271d 100644 --- a/src/app/fast/page.tsx +++ b/src/app/fast/page.tsx @@ -1,10 +1,12 @@ -import Container from "@/components/container"; -import FastResult from "@/components/fast/result"; -import cx from "@/utils/cx"; import { Metadata } from "next"; import dynamic from "next/dynamic"; import Link from "next/link"; +import cx from "@/utils/cx"; + +import {Container} from "@/components"; +import FastResult from "@/components/fast/result"; + const Globe = dynamic(() => import("@/components/home/fast/globe2"), { ssr: false, }); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 3dabac01..cbda2f8c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,17 +1,18 @@ import "@upstash/claps/style.css"; import "./globals.css"; -import Analytics from "@/components/Analytics"; -import Footer from "@/components/master/footer"; -import Header from "@/components/master/header"; -import HeaderMobile from "@/components/master/header-mobile"; -import { PHProvider } from "@/lib/posthog"; -import { SegmentProvider } from "@/lib/segment/provider"; -import { SITE_URL } from "@/utils/const"; -import cx from "@/utils/cx"; + +import { ReactNode, Suspense } from "react"; import dynamic from "next/dynamic"; import { Inter, Inter_Tight } from "next/font/google"; -import Script from "next/script"; -import { ReactNode, Suspense } from "react"; + +import { SITE_URL } from "@/utils/const"; +import cx from "@/utils/cx"; + +import { PHProvider } from "@/lib/posthog"; +import { SegmentProvider } from "@/lib/segment/provider"; + +import { Footer, Header, HeaderMobile } from "@/components/master"; +import { Analytics, ThirdPartyScripts } from "@/components"; const PostHogPageView = dynamic(() => import("@/lib/posthog/page-view"), { ssr: false, @@ -51,43 +52,7 @@ export default function RootLayout({ children }: { children: ReactNode }) { {children}