mirror of
https://github.com/AtHeartEngineer/website-v2.git
synced 2026-01-10 13:28:03 -05:00
Merge pull request #59 from privacy-scaling-explorations/44-update-project-detail-page-to-markdown-format
add support for markdown format
This commit is contained in:
@@ -6,6 +6,8 @@ import GithubVector from "@/public/social-medias/github-fill.svg"
|
||||
import GlobalVector from "@/public/social-medias/global-line.svg"
|
||||
import TwitterVector from "@/public/social-medias/twitter-fill.svg"
|
||||
|
||||
import { Markdown } from "@/components/ui/markdown"
|
||||
|
||||
type PageProps = {
|
||||
params: { id: string }
|
||||
searchParams: { [key: string]: string | string[] | undefined }
|
||||
@@ -37,7 +39,7 @@ export default function ProjectDetailPage({ params }: PageProps) {
|
||||
(project) => String(project.id) === params.id
|
||||
)[0]
|
||||
|
||||
const { github, twitter, website } = currProject.links
|
||||
const { github, twitter, website } = currProject.links ?? {}
|
||||
|
||||
return (
|
||||
<section className="flex flex-col items-center">
|
||||
@@ -84,7 +86,7 @@ export default function ProjectDetailPage({ params }: PageProps) {
|
||||
<p className="text-slate-600">{currProject.tldr}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex w-full flex-col items-center justify-center gap-5 bg-anakiwa px-6 py-10 md:px-0">
|
||||
<div className="flex flex-col items-center justify-center w-full gap-5 px-6 py-10 bg-anakiwa md:px-0">
|
||||
<div className="w-full md:w-[700px]">
|
||||
<div className="relative flex items-center justify-center overflow-hidden rounded-lg">
|
||||
<Image
|
||||
@@ -94,11 +96,11 @@ export default function ProjectDetailPage({ params }: PageProps) {
|
||||
alt={`${currProject.name} banner`}
|
||||
width={1200}
|
||||
height={630}
|
||||
className="w-full rounded-t-lg object-cover"
|
||||
className="object-cover w-full rounded-t-lg"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex w-full flex-col gap-5 py-10 text-base font-normal leading-relaxed">
|
||||
<p>{currProject.description}</p>
|
||||
<div className="flex flex-col w-full gap-5 py-10 text-base font-normal leading-relaxed">
|
||||
<Markdown>{currProject.description}</Markdown>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -32,7 +32,7 @@ export default function ProjectsPage() {
|
||||
return (
|
||||
<section>
|
||||
<div className="bg-second-gradient">
|
||||
<div className="container mx-auto py-12 lg:py-24">
|
||||
<div className="container py-12 mx-auto lg:py-24">
|
||||
<h1 className="text-4xl font-bold md:text-5xl">
|
||||
Explore the project library
|
||||
</h1>
|
||||
@@ -50,7 +50,7 @@ export default function ProjectsPage() {
|
||||
<div className="flex flex-wrap justify-center gap-6 py-6">
|
||||
{projects.map((project, index) => {
|
||||
const { id, image, links, name, tldr } = project
|
||||
const { github, website } = links
|
||||
const { github, website } = links ?? {}
|
||||
return (
|
||||
<div key={index}>
|
||||
<Link href={`/projects/${id}`}>
|
||||
@@ -62,16 +62,16 @@ export default function ProjectsPage() {
|
||||
alt={`${name} banner`}
|
||||
width={1200}
|
||||
height={630}
|
||||
className="w-full rounded-t-lg object-cover"
|
||||
className="object-cover w-full rounded-t-lg"
|
||||
/>
|
||||
<div className="flex h-full flex-col justify-between gap-5 rounded-b-lg bg-white p-5">
|
||||
<div className="flex flex-col justify-between h-full gap-5 p-5 bg-white rounded-b-lg">
|
||||
<div className="flex flex-col justify-start gap-2">
|
||||
<h1 className="text-xl font-bold text-black">
|
||||
{name}
|
||||
</h1>
|
||||
<p className="text-slate-900/80">{tldr}</p>
|
||||
</div>
|
||||
<div className="mr-auto flex items-center justify-start gap-2">
|
||||
<div className="flex items-center justify-start gap-2 mr-auto">
|
||||
{github && (
|
||||
<Link
|
||||
href={`${github}`}
|
||||
|
||||
69
components/ui/markdown.tsx
Normal file
69
components/ui/markdown.tsx
Normal file
@@ -0,0 +1,69 @@
|
||||
import React from "react"
|
||||
import ReactMarkdown, { Components } from "react-markdown"
|
||||
import remarkGfm from "remark-gfm"
|
||||
|
||||
const createMarkdownElement = (tag: keyof JSX.IntrinsicElements, props: any) =>
|
||||
React.createElement(tag, {
|
||||
...props,
|
||||
})
|
||||
|
||||
const Table = (props: any) => {
|
||||
return <table data-component="table">{props.children}</table>
|
||||
}
|
||||
|
||||
// Styling for HTML attributes for markdown component
|
||||
const REACT_MARKDOWN_CONFIG: Components = {
|
||||
a: ({ node, ...props }) =>
|
||||
createMarkdownElement("a", {
|
||||
className: "text-orange",
|
||||
target: "_blank",
|
||||
...props,
|
||||
}),
|
||||
h1: ({ node, ...props }) =>
|
||||
createMarkdownElement("h1", {
|
||||
className: "text-neutral-800 text-4xl md:text-5xl font-bold",
|
||||
...props,
|
||||
}),
|
||||
h2: ({ node, ...props }) =>
|
||||
createMarkdownElement("h2", {
|
||||
className: "text-neutral-800 text-4xl",
|
||||
...props,
|
||||
}),
|
||||
h3: ({ node, ...props }) =>
|
||||
createMarkdownElement("h3", {
|
||||
className: "text-neutral-800 text-3xl",
|
||||
...props,
|
||||
}),
|
||||
h4: ({ node, ...props }) =>
|
||||
createMarkdownElement("h4", {
|
||||
className: "text-neutral-800 text-xl",
|
||||
...props,
|
||||
}),
|
||||
h5: ({ node, ...props }) =>
|
||||
createMarkdownElement("h5", {
|
||||
className: "text-neutral-800 text-lg font-bold",
|
||||
...props,
|
||||
}),
|
||||
h6: ({ node, ...props }) =>
|
||||
createMarkdownElement("h6", {
|
||||
className: "text-neutral-800 text-md font-bold",
|
||||
...props,
|
||||
}),
|
||||
table: Table,
|
||||
}
|
||||
|
||||
interface MarkdownProps {
|
||||
children: string
|
||||
}
|
||||
|
||||
export const Markdown = ({ children }: MarkdownProps) => {
|
||||
return (
|
||||
<ReactMarkdown
|
||||
skipHtml={false}
|
||||
components={REACT_MARKDOWN_CONFIG}
|
||||
remarkPlugins={[remarkGfm]}
|
||||
>
|
||||
{children}
|
||||
</ReactMarkdown>
|
||||
)
|
||||
}
|
||||
520
data/projects.ts
520
data/projects.ts
@@ -1,470 +1,56 @@
|
||||
export const projects = [
|
||||
{
|
||||
id: "rln",
|
||||
image: "rln.webp",
|
||||
name: "Rate-Limiting Nullifier",
|
||||
tldr: "A protocol for deterring spam and maintaining anonymity in communication systems.",
|
||||
description:
|
||||
"Rate-Limiting Nullifier (RLN) is a protocol designed to combat spam and denial of service attacks in privacy-preserving environments. It allows users in an anonymous system to penalize those who exceed the rate limit, either by withdrawing the offender's stake or revealing their secrets. This mechanism helps maintain system integrity and deters abuse. RLN is built on the Semaphore protocol and uses zero-knowledge proofs and the Shamir’s Secret Sharing scheme to reveal the spammer's private key. It's particularly useful for developers working on communication systems that require privacy and anonymity, such as chat apps, client-server communications, and peer-to-peer communications. It's already being used in projects like Zerokit and Waku, and is also being developed for use with the KZG polynomial commitment scheme.",
|
||||
links: {
|
||||
github: "https://github.com/Rate-Limiting-Nullifier/circom-rln",
|
||||
website: "https://rate-limiting-nullifier.github.io/rln-docs/",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy"],
|
||||
types: ["Infrastructure/protocol"],
|
||||
builtWith: ["Circom", "Solidity", "Semaphore"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "zkitter",
|
||||
image: "zkitter.webp",
|
||||
name: "Zkitter",
|
||||
tldr: "A decentralized social network prioritizing privacy and anonymity",
|
||||
description:
|
||||
"Zkitter is a decentralized social network that emphasizes privacy by default. It allows users to share thoughts and communicate in various modes: as known identities, as a member of a group, or entirely anonymously. Built with Semaphore and RLN, Zkitter offers familiar social media features such as posting, chatting, following, and liking, but with a strong focus on user privacy and anonymity. It serves as an experiment to explore new ways of engaging in conversations without the fear of damaging one’s personal reputation and is an example of a user-facing application using zero-knowledge primitives such as Semaphore, CryptKeeper, ZK-Chat, and Interep. Users can sign up using an Ethereum address or ENS name, or create an anonymous account, with options for anonymous chat and posting.",
|
||||
links: {
|
||||
github: "https://github.com/zkitter",
|
||||
website: "https://www.zkitter.com/explore/",
|
||||
discord: "https://discord.gg/Em4Z9yE8eW",
|
||||
},
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity"],
|
||||
types: ["Application", "Infrastructure/protocol"],
|
||||
builtWith: ["Semaphore", "RLN", "Interep", "zkchat"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "maci",
|
||||
image: "maci.webp",
|
||||
name: "MACI",
|
||||
tldr: "A secure e-voting solution minimizing the risk of collusion and bribery",
|
||||
description:
|
||||
"Minimal Anti-Collusion Infrastructure (MACI) is a protocol designed to provide a highly secure e-voting solution. It enables organizations to conduct on-chain voting processes with a significantly reduced risk of cheating, such as bribery or collusion. MACI uses zero-knowledge proofs to implement a receipt-free voting scheme, making it impossible for anyone other than the vote coordinator to verify how a specific user voted. This ensures the correct execution of votes and allows anyone to verify the results. It's particularly beneficial for governance and funding events, where its anti-collusion mechanisms help ensure fair and transparent outcomes.",
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/maci",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Voting/governance"],
|
||||
types: ["Lego sets/toolkits", "Infrastructure/protocol"],
|
||||
builtWith: ["P0tion", "JubjubLib"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "wax",
|
||||
image: "wax.webp",
|
||||
name: "Wallet Account eXperiments (WAX)",
|
||||
tldr: "Streamlines web3 product development with smart account components for enhanced wallets, dApps, and SDKs.",
|
||||
description:
|
||||
"Wallet Account eXperiments (WAX), formerly known as BLS Wallet, is a suite of production-ready smart account components that provide advanced features for wallets, SDKs, and dApps. It's designed to lower gas costs on EVM rollups through aggregated BLS signatures, simplifying the integration of contract wallets and reducing the cost of layer 2 transactions. This makes WAX particularly beneficial for web3 projects targeting developing economies. WAX components incorporate advanced cryptographic primitives in a secure and intuitive way, using Safe contracts for a familiar and battle-tested foundation. Each additional module can be audited and added or removed at the account holder's discretion. WAX offers features like cheaper L2 transactions, modular smart contract components, ERC 4337 compatibility, zk email verification, passkeys verification, multi-action transactions, gasless transactions, and wallet upgradability. The primary use cases for WAX include scaling, key management, and the creation of prototypes for the web3 ecosystem.",
|
||||
links: {
|
||||
github: "https://github.com/getwax",
|
||||
website: "https://getwax.org/",
|
||||
discord: "https://discord.gg/hGDmAhcRyz",
|
||||
},
|
||||
tags: {
|
||||
builtWith: [
|
||||
"Hardhat",
|
||||
"Node",
|
||||
"Solidity BLS library",
|
||||
"sqlite",
|
||||
"docker",
|
||||
"ethers",
|
||||
"deno",
|
||||
],
|
||||
import { anonAadhaar } from "./projects/anon-aadhaar"
|
||||
import { anonKlub } from "./projects/anon-klub"
|
||||
import { bandada } from "./projects/bandada"
|
||||
import { channel4 } from "./projects/channel-4"
|
||||
import { cryptkeeper } from "./projects/cryptkeeper"
|
||||
import { discreetly } from "./projects/discreetly"
|
||||
import { dslWorkingGroup } from "./projects/dsl-working-group"
|
||||
import { eigenTrust } from "./projects/eigen-trust"
|
||||
import { maci } from "./projects/maci"
|
||||
import { pollenLabs } from "./projects/pollen-labs"
|
||||
import { pseSecurity } from "./projects/pse-security"
|
||||
import { rln } from "./projects/rln"
|
||||
import { semaphore } from "./projects/semaphore"
|
||||
import { summa } from "./projects/summa"
|
||||
import { tlsn } from "./projects/tlsn"
|
||||
import { trustedSetups } from "./projects/trusted-setups"
|
||||
import { unirepProtocol } from "./projects/unirep-protocol"
|
||||
import { wax } from "./projects/wax"
|
||||
import { zk3 } from "./projects/zk3"
|
||||
import { zkevmCommunity } from "./projects/zkevm-community"
|
||||
import { zkitter } from "./projects/zkitter"
|
||||
import { zkml } from "./projects/zkml"
|
||||
import { zkp2p } from "./projects/zkp2p"
|
||||
|
||||
themes: ["Scaling", "Key management"],
|
||||
types: ["Prototype", "Proof of concept", "Lego sets/toolkits"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "discreetly",
|
||||
image: "discreetly.svg",
|
||||
name: "Discreetly",
|
||||
tldr: "An anonymous, federated, chat application using ZK.",
|
||||
description:
|
||||
"An anonymous, federated, chat application that uses Rate-Limiting Nullifier for spam prevention.",
|
||||
links: {
|
||||
github: "https://github.com/Discreetly",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social"],
|
||||
types: ["Legos/dev tools", "Proof of concept", "Application"],
|
||||
builtWith: ["RLN", "Semaphore", "Waku"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "cryptkeeper",
|
||||
image: "cryptkeeper.webp",
|
||||
name: "CryptKeeper",
|
||||
tldr: "A browser extension for secure, portable anonymous identity management across applications.",
|
||||
description:
|
||||
"CryptKeeper is a browser extension that generates Semaphore and RLN proofs for websites, providing a secure and portable solution for managing anonymous identity secrets across different applications. It simplifies the integration of zero-knowledge (ZK) identities and proofs into applications, allowing developers to focus on building the front-end and logic of their applications. By handling complex aspects of cryptography, circuits, caching, and storage, CryptKeeper enables users to interact with decentralized applications (dapps) without revealing their private identity secrets. It is aimed at building secure community standards for the growing ZK ecosystem.",
|
||||
links: {
|
||||
github: "https://github.com/CryptKeeperZK",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity"],
|
||||
types: ["Application", "Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
|
||||
builtWith: ["Semaphore", "RLN"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "semaphore",
|
||||
image: "semaphore.webp",
|
||||
name: "Semaphore",
|
||||
tldr: "A zero-knowledge protocol enabling anonymous group membership proof and signaling.",
|
||||
description:
|
||||
"Semaphore is a protocol that allows users to prove their membership in a group and transmit anonymous data, such as votes or feedback, without revealing their identities. It is designed for developers aiming to build privacy-preserving applications. Semaphore enables the creation of identities and their corresponding public values, which can be added to Merkle trees. This facilitates the authentication of anonymous user messages through zero-knowledge proofs, where membership is proven using Merkle proofs within the circuit. Key use cases include anonymous voting applications, receiving anonymous feedback from event attendees, and anonymous text messages. It is currently in production and is being used in a wide variety of projects.",
|
||||
links: {
|
||||
github: "https://github.com/semaphore-protocol",
|
||||
website: "https://semaphore.appliedzkp.org/",
|
||||
discord: "https://semaphore.appliedzkp.org/discord",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Transaction privacy",
|
||||
"Voting/governance",
|
||||
"Reputation",
|
||||
"Education",
|
||||
"Scaling",
|
||||
"Key management",
|
||||
"Other (group membership)",
|
||||
],
|
||||
|
||||
types: [
|
||||
"Legos/dev tools",
|
||||
"Lego sets/toolkits",
|
||||
"Infrastructure/protocol",
|
||||
],
|
||||
builtWith: ["ZK-kit", "circom", "snarkjs"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "pse-security",
|
||||
image: "",
|
||||
name: "PSE Security",
|
||||
tldr: "Proactively securing Ethereum's L2 and ZK ecosystems.",
|
||||
description:
|
||||
"PSE Security is a division of the Privacy & Scaling Explorations team at the Ethereum Foundation. Its primary goal is to identify and rectify bugs, thereby enhancing the security of the Ethereum Layer 2 and Zero-Knowledge ecosystems. Recognizing the potential for critical bugs to cause significant setbacks, PSE Security is committed to preemptively addressing these issues. The team offers open-source projects like the ZK Bug Tracker and Bridge Bug Tracker, which track real bugs and exploits in production code, and encourages community contributions. PSE Security also conducts manual audits and plans to help teach the community more about security and ways they can prevent bugs themselves.",
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/security",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Anonymity/privacy",
|
||||
"Education",
|
||||
"Key management",
|
||||
"Scaling",
|
||||
"Security",
|
||||
],
|
||||
types: ["Legos/dev tools"],
|
||||
builtWith: ["Slither", "Ecne", "Circomspect", "Echidna"],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "zkevm-community",
|
||||
image: "",
|
||||
name: "zkEVM Community Edition",
|
||||
tldr: "A zero-knowledge proof mechanism for Ethereum block verification.",
|
||||
description:
|
||||
"zkEVM Community Edition is a project aimed at validating Ethereum blocks using zero-knowledge proofs. It is designed to be fully compatible with Ethereum's EVM and serves two primary goals. First, it enables the creation of a layer 2 network (zkRollup) compatible with the Ethereum ecosystem, which uses zero-knowledge proofs to validate blocks, thus enhancing scalability. Second, it allows the generation of zero-knowledge proofs for blocks from the existing layer 1 Ethereum network, enabling light clients to quickly synchronize many blocks with low resource consumption while ensuring block correctness without needing trust in external parties.",
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/zkevm-circuits",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling"],
|
||||
types: ["Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
builtWith: ["halo2 from zcash", "Rust", "geth"],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "bandada",
|
||||
image: "bandada.webp",
|
||||
name: "Bandada",
|
||||
tldr: "An open-source system for managing privacy-preserving groups of anonymous individuals.",
|
||||
description:
|
||||
"Bandada is a project designed to simplify the management of privacy-preserving Semaphore groups. It is aimed at developers who want to build privacy-based applications and integrate anonymity sets, as well as non-developers working in DAOs, governments, international institutions, non-profit organizations, and associations that want to create and manage anonymous groups. Bandada offers a plug-and-play infrastructure, reducing the time and complexity required for managing anonymity sets. It enables anonymous signaling, such as voting, messaging, login, or endorsing, in various use cases like private organizations, GitHub repository contributors, and groups of wallets holding a specific NFT.",
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/bandada",
|
||||
website: "https://bandada.appliedzkp.org/",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Transaction privacy",
|
||||
"Voting/governance",
|
||||
"Reputation",
|
||||
"Education",
|
||||
"Scaling",
|
||||
"Key management",
|
||||
],
|
||||
type: [
|
||||
"Legos/dev tools",
|
||||
"Lego sets/toolkits",
|
||||
"Prototype",
|
||||
"Proof of concept",
|
||||
"Infrastructure/protocol",
|
||||
"Plugin",
|
||||
"Application",
|
||||
],
|
||||
builtWith: ["Semaphore", "ZK-kit"],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "dsl-working-group",
|
||||
image: "",
|
||||
name: "DSL Working Group",
|
||||
tldr: "Exploration of languages for writing zk circuits",
|
||||
description:
|
||||
"The DSL Working Group is focused on the exploration and improvement of languages used to write zero-knowledge circuits. The group's primary goal is to enhance the state of zk circuit languages, making them easier to write and review by offering the right abstractions. They also aim to make it harder to write unsound circuits by implementing static analysis and enforcing safer patterns. Additionally, they are working to support next-generation (Incrementally Verifiable Computation or IVC) proving systems. The group is currently working on Chiquito, a high-level Domain-Specific Language (DSL) for Halo2 circuits that lowers the entry barrier to write zk circuits with a state-machine abstraction API.",
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/chiquito/",
|
||||
},
|
||||
tags: {
|
||||
type: ["Legos/dev tools", "Proof of concept", "Developer tooling"],
|
||||
themes: [],
|
||||
builtWith: [],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "zkml",
|
||||
image: "",
|
||||
name: "ZKML",
|
||||
tldr: "ZKML (Zero-Knowledge Machine Learning) leverages zero-knowledge proofs for privacy-preserving machine learning, enabling model and data privacy with transparent verification.",
|
||||
description:
|
||||
"ZKML is a solution that combines the power of zero-knowledge proofs (ZKPs) and machine learning to address the privacy concerns in traditional machine learning. It provides a platform for machine learning developers to convert their TensorFlow Keras models into ZK-compatible versions, ensuring model privacy, data privacy, and transparent verification. ZKML can be used to verify if a specific machine learning model was used to generate a particular piece of content, without revealing the input or the model used. It has potential use cases in on-chain biometric authentication, private data marketplace, proprietary ML model sharing, and AIGC NFTs.",
|
||||
links: {
|
||||
github: "https://github.com/socathie/circomlib-ml",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Scaling"],
|
||||
type: ["Proof of concept", "Infrastructure/protocol"],
|
||||
builtWith: ["circom", "halo2", "nova"],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "trusted-setups",
|
||||
image: "trusted-setups.svg",
|
||||
name: "Trusted Setups",
|
||||
tldr: "Aiding developers with tools for trusted setups.",
|
||||
description:
|
||||
"The Trusted Setups project is dedicated to simplifying the process of trusted setups, which are crucial for privacy or scaling solutions. Trusted setups involve multiple participants contributing to the generation of secrets. As long as one participant forgets their part of the secret, the final solution remains secure. The team recognizes the complexity of developing contribution programs and coordinating the participants' queue in a trusted setup. To address this, they are developing tools, including scripts, WebApps, and APIs, to streamline the contribution and coordination effort. This allows developers to focus on building their circuits and applications, enhancing efficiency and productivity in the development of zero-knowledge applications.",
|
||||
links: {
|
||||
github: "https://github.com/zkparty",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling", "Education"],
|
||||
type: ["Legos/dev tools", "Lego sets/toolkits"],
|
||||
builtWith: [],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "zk3",
|
||||
image: "zk3.svg",
|
||||
name: "zk3",
|
||||
tldr: "Utilizing ZK proofs in social networks",
|
||||
description:
|
||||
"Zk3 is a protocol that leverages Zero Knowledge Proofs (ZKPs) to allow users to prove their membership in a group without revealing their identity. This is particularly useful for social media applications built on Lens or other on-chain platforms. The protocol helps to moderate conversations and reduce bot activity while preserving user privacy. It provides developers with the tools to verify group eligibility, create ZK proofs, and use ZK proofs in Lens. ZK3 consists of a smart contract system for user interactions and network rules, and a GraphQL API for flexible interaction, enabling the development of diverse applications, including web 2.0 integrations.",
|
||||
links: {
|
||||
github: "http://github.com/monemetrics/semaphore-zk3",
|
||||
website: "http://zk3.io/",
|
||||
twitter: "http://twitter.com/zk3org",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
type: [
|
||||
"Legos/dev tools",
|
||||
"Lego sets/toolkits",
|
||||
"Infrastructure/protocol",
|
||||
"Plugin",
|
||||
],
|
||||
builtWith: ["Semaphore", "Lens protocol"],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "tlsn",
|
||||
image: "tlsn.webp",
|
||||
name: "TLSNotary",
|
||||
tldr: "A protocol for creating cryptographic proofs of authenticity for any data on the web.",
|
||||
description:
|
||||
"TLSNotary is useful for developers of privacy focused projects that need data provenance from secure web servers. It leverages the widely-used Transport Layer Security (TLS) protocol to securely and privately prove a transcript of communications took place with a webserver. The protocol involves splitting TLS session keys between two parties: the User and the Notary. Neither the User nor Notary are in possession of the full TLS session keys, they only hold a share of those keys. This ensures the security assumptions of TLS while enabling the User to prove the authenticity of the communication to the Notary. The Notary remains unaware of which webserver is being queried, and the Notary never has access to the unencrypted communications. All of this is achieved while maintaining full privacy.",
|
||||
links: {
|
||||
github: "https://github.com/tlsnotary/tlsn",
|
||||
website: "https://tlsnotary.org/",
|
||||
discord: "https://discord.gg/9XwESXtcN7",
|
||||
},
|
||||
tags: {
|
||||
themes: [],
|
||||
type: [],
|
||||
builtWith: [],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "eigen-trust",
|
||||
image: "",
|
||||
name: "EigenTrust",
|
||||
tldr: "A distributed reputation system with zero-knowledge features.",
|
||||
description:
|
||||
"EigenTrust is a library designed to manage trust within a distributed network, incorporating zero-knowledge features. It serves as a reputation bank for the Ethereum ecosystem, providing an interoperable layer for managing reputation and trust. The protocol creates zero-knowledge proofs of reputation scores based on ratings given by network participants. This allows for the creation of a reputation system for peer-to-peer marketplaces and exchanges, reputation-weighted voting, and community gatekeeping.",
|
||||
links: {
|
||||
github: "https://github.com/eigen-trust/protocol",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Reputation", "Identity"],
|
||||
type: ["Infrastructure/protocol"],
|
||||
builtWith: ["Ethereum Attestation Service", "Halo2", "ethers.rs"],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "anon-klub",
|
||||
image: "anonklub.svg",
|
||||
name: "AnonKlub",
|
||||
tldr: "A mechanism for anonymous proof of Ethereum address ownership.",
|
||||
description:
|
||||
"AnonKlub is a tool designed for Ethereum developers that allows for anonymous proof of Ethereum address ownership. It doesn't directly address the public observability of Ethereum transactions but provides a workaround for privacy. Users can prepare a list of Ethereum addresses, sign a message from an address they own, and use that signature to generate a zero-knowledge proof. This proof enables users to perform actions anonymously that would typically require ownership of an address from the initial list. Use cases include anonymous NFT minting and Discord verification for DAOs without disclosing the public address.",
|
||||
links: {
|
||||
github: "https://github.com/anonklub",
|
||||
website: "https://anonklub.github.io",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Transaction privacy",
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Voting/governance",
|
||||
],
|
||||
type: ["Infrastructure/protocol", "Prototype", "Proof of concept"],
|
||||
builtWith: ["Circom", "snarkjs", "halo2"],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
id: "summa",
|
||||
image: "",
|
||||
name: "Summa",
|
||||
tldr: "Protocol enabling centralized exchanges to prove solvency without compromising private information.",
|
||||
description:
|
||||
"Summa allows centralized exchanges to demonstrate that their assets exceed their liabilities without revealing critical business information such as individual user balances, total number of users, and total liabilities or assets. It uses zero-knowledge proofs to ensure that exchanges can demonstrate they have sufficient assets to cover all user balances. The protocol involves building a Merkle Sum Tree of user balances, generating proofs for each user, and allowing users to verify these proofs.",
|
||||
links: {
|
||||
github: "https://github.com/summa-dev",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Computational Integrity"],
|
||||
type: ["Infrastructure/protocol", "Application"],
|
||||
builtWith: ["Halo2 PSE"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "anon-aadhaar",
|
||||
image: "",
|
||||
name: "Anon Aadhaar",
|
||||
tldr: "Tools for building build privacy-preserving applications using government ID cards, specifically Aadhaar cards in India.",
|
||||
description:
|
||||
"Anon Aadhaar is a project that allows individuals to prove their citizenship anonymously. The project provides circuits, an SDK, and demo applications that generate and verify proofs of valid Aadhaar cards, integrating with the PCD framework to support a wide range of applications.",
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/anon-aadhaar",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Voting/governance"],
|
||||
type: ["Legos/dev tools", "Lego sets/toolkits", "Proof of concept"],
|
||||
builtWith: ["Circom, RSA"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "channel-4",
|
||||
image: "channel4.svg",
|
||||
name: "Channel 4",
|
||||
tldr: "Content discovery through community contributions, using state channels to reward users for popular posts.",
|
||||
description:
|
||||
"Channel 4 is a community-driven platform where users can submit and discover content. It uses state channels to incentivize user engagement. When a user likes the content you've submitted, a state channel closes and rewards are dropped into their wallet. This approach combines entertainment with the power of state channels, enabling community members to earn while they engage.",
|
||||
links: {
|
||||
github: "https://github.com/State-Channel-4",
|
||||
website: "https://channel4.wtf/",
|
||||
discord: "https://discord.gg/76UrYgVyEx",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling"],
|
||||
type: ["Application"],
|
||||
builtWith: ["State channel", "Smart contract"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "pollen-labs",
|
||||
image: "pollen-labs.svg",
|
||||
name: "Pollen Labs",
|
||||
tldr: "Champions of freedom of speech and expression through decentralized innovation.",
|
||||
description:
|
||||
"Pollen Labs is driven by a mission to make a significant impact on global lives by addressing complex, pressing issues. They work alongside their community to break barriers, preserve privacy, and build a future where every voice is heard, and a free web is accessible to all. Their projects, like Channel 4, a content discovery engine, and Daisy, focusing on information transparency, embody this mission., enabling community members to earn while they engage.",
|
||||
links: {
|
||||
website: "https://pollenlabs.org/",
|
||||
twitter: "https://twitter.com/PollenLabs_",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Scaling"],
|
||||
type: ["Application"],
|
||||
builtWith: [""],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "unirep-protocol",
|
||||
image: "unirep.svg",
|
||||
name: "UniRep Protocol",
|
||||
tldr: "A Zero-Knowledge Protocol for user data & reputation management",
|
||||
description:
|
||||
"UniRep is a zero-knowledge protocol that securely manages user data through anonymous identifiers, enabling trustless interactions and enhanced user privacy in applications. It expands the concept of reputation to include various user data aspects, such as preferences, activity, alignments, and ownership. UniRep promotes non-custodial applications that don't hold user data, reducing data breach risks and emphasizing security for both users and developers.",
|
||||
links: {
|
||||
github: "https://github.com/Unirep",
|
||||
website: "https://developer.unirep.io/docs/welcome",
|
||||
twitter: "https://twitter.com/UniRep_Protocol",
|
||||
discord: "https://discord.gg/VzMMDJmYc5",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
type: ["Legos/dev tools, Protocol"],
|
||||
builtWith: ["Semaphore", "Circom"],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "zkp2p",
|
||||
image: "zkp2p.webp",
|
||||
name: "ZKP2P",
|
||||
tldr: "Instant fiat to crypto onramp connecting traditional peer-to-peer payment services with zero-knowledge proofs.",
|
||||
description:
|
||||
"ZKP2P is for defi consumers looking to onramp assets on chain quickly without going through a CEX as an intermediary. ZKP2P generates a privacy-preserving proof of payment between two users on existing payment rails like Venmo or Paypal and uses said proof to unlock escrowed digital assets on-chain.",
|
||||
links: {
|
||||
github: "https://github.com/zkp2p",
|
||||
website: "https://zkp2p.xyz/",
|
||||
twitter: "https://twitter.com/zkp2p",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Anonymity/privacy",
|
||||
"Payments",
|
||||
"On-ramping",
|
||||
],
|
||||
type: [
|
||||
"Proof of concept",
|
||||
"Application",
|
||||
],
|
||||
builtWith: ["Circom", "Halo2"],
|
||||
},
|
||||
},
|
||||
/**
|
||||
* List of Projects
|
||||
*
|
||||
* Every 'description' props supports markdown syntax https://www.markdownguide.org/basic-syntax/
|
||||
*/
|
||||
export const projects: ProjectInterface[] = [
|
||||
rln,
|
||||
zkitter,
|
||||
maci,
|
||||
wax,
|
||||
discreetly,
|
||||
cryptkeeper,
|
||||
semaphore,
|
||||
pseSecurity,
|
||||
zkevmCommunity,
|
||||
bandada,
|
||||
dslWorkingGroup,
|
||||
zkml,
|
||||
trustedSetups,
|
||||
zk3,
|
||||
tlsn,
|
||||
eigenTrust,
|
||||
anonKlub,
|
||||
summa,
|
||||
anonAadhaar,
|
||||
channel4,
|
||||
pollenLabs,
|
||||
unirepProtocol,
|
||||
zkp2p,
|
||||
]
|
||||
|
||||
21
data/projects/anon-aadhaar.ts
Normal file
21
data/projects/anon-aadhaar.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Anon Aadhaar is a project that allows individuals to prove their citizenship anonymously. The project provides circuits, an SDK, and demo applications that generate and verify proofs of valid Aadhaar cards, integrating with the PCD framework to support a wide range of applications.
|
||||
`
|
||||
|
||||
export const anonAadhaar: ProjectInterface = {
|
||||
id: "anon-aadhaar",
|
||||
image: "",
|
||||
name: "Anon Aadhaar",
|
||||
tldr: "Tools for building build privacy-preserving applications using government ID cards, specifically Aadhaar cards in India.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/anon-aadhaar",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Voting/governance"],
|
||||
type: ["Legos/dev tools", "Lego sets/toolkits", "Proof of concept"],
|
||||
builtWith: ["Circom, RSA"],
|
||||
},
|
||||
}
|
||||
28
data/projects/anon-klub.ts
Normal file
28
data/projects/anon-klub.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
AnonKlub is a tool designed for Ethereum developers that allows for anonymous proof of Ethereum address ownership. It doesn't directly address the public observability of Ethereum transactions but provides a workaround for privacy. Users can prepare a list of Ethereum addresses, sign a message from an address they own, and use that signature to generate a zero-knowledge proof. This proof enables users to perform actions anonymously that would typically require ownership of an address from the initial list. Use cases include anonymous NFT minting and Discord verification for DAOs without disclosing the public address.
|
||||
`
|
||||
|
||||
export const anonKlub: ProjectInterface = {
|
||||
id: "anon-klub",
|
||||
image: "anonklub.svg",
|
||||
name: "AnonKlub",
|
||||
tldr: "A mechanism for anonymous proof of Ethereum address ownership.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/anonklub",
|
||||
website: "https://anonklub.github.io",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Transaction privacy",
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Voting/governance",
|
||||
],
|
||||
type: ["Infrastructure/protocol", "Prototype", "Proof of concept"],
|
||||
builtWith: ["Circom", "snarkjs", "halo2"],
|
||||
},
|
||||
}
|
||||
40
data/projects/bandada.ts
Normal file
40
data/projects/bandada.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Bandada is a project designed to simplify the management of privacy-preserving Semaphore groups. It is aimed at developers who want to build privacy-based applications and integrate anonymity sets, as well as non-developers working in DAOs, governments, international institutions, non-profit organizations, and associations that want to create and manage anonymous groups. Bandada offers a plug-and-play infrastructure, reducing the time and complexity required for managing anonymity sets. It enables anonymous signaling, such as voting, messaging, login, or endorsing, in various use cases like private organizations, GitHub repository contributors, and groups of wallets holding a specific NFT.
|
||||
`
|
||||
|
||||
export const bandada: ProjectInterface = {
|
||||
id: "bandada",
|
||||
image: "bandada.webp",
|
||||
name: "Bandada",
|
||||
tldr: "An open-source system for managing privacy-preserving groups of anonymous individuals.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/bandada",
|
||||
website: "https://bandada.appliedzkp.org/",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Transaction privacy",
|
||||
"Voting/governance",
|
||||
"Reputation",
|
||||
"Education",
|
||||
"Scaling",
|
||||
"Key management",
|
||||
],
|
||||
type: [
|
||||
"Legos/dev tools",
|
||||
"Lego sets/toolkits",
|
||||
"Prototype",
|
||||
"Proof of concept",
|
||||
"Infrastructure/protocol",
|
||||
"Plugin",
|
||||
"Application",
|
||||
],
|
||||
builtWith: ["Semaphore", "ZK-kit"],
|
||||
},
|
||||
}
|
||||
23
data/projects/channel-4.ts
Normal file
23
data/projects/channel-4.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Channel 4 is a community-driven platform where users can submit and discover content. It uses state channels to incentivize user engagement. When a user likes the content you've submitted, a state channel closes and rewards are dropped into their wallet. This approach combines entertainment with the power of state channels, enabling community members to earn while they engage.
|
||||
`
|
||||
|
||||
export const channel4: ProjectInterface = {
|
||||
id: "channel-4",
|
||||
image: "channel4.svg",
|
||||
name: "Channel 4",
|
||||
tldr: "Content discovery through community contributions, using state channels to reward users for popular posts.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/State-Channel-4",
|
||||
website: "https://channel4.wtf/",
|
||||
discord: "https://discord.gg/76UrYgVyEx",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling"],
|
||||
type: ["Application"],
|
||||
builtWith: ["State channel", "Smart contract"],
|
||||
},
|
||||
}
|
||||
22
data/projects/cryptkeeper.ts
Normal file
22
data/projects/cryptkeeper.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
CryptKeeper is a browser extension that generates Semaphore and RLN proofs for websites, providing a secure and portable solution for managing anonymous identity secrets across different applications. It simplifies the integration of zero-knowledge (ZK) identities and proofs into applications, allowing developers to focus on building the front-end and logic of their applications. By handling complex aspects of cryptography, circuits, caching, and storage, CryptKeeper enables users to interact with decentralized applications (dapps) without revealing their private identity secrets. It is aimed at building secure community standards for the growing ZK ecosystem.
|
||||
`
|
||||
|
||||
export const cryptkeeper: ProjectInterface = {
|
||||
id: "cryptkeeper",
|
||||
image: "cryptkeeper.webp",
|
||||
name: "CryptKeeper",
|
||||
tldr: "A browser extension for secure, portable anonymous identity management across applications.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/CryptKeeperZK",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity"],
|
||||
types: ["Application", "Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
|
||||
builtWith: ["Semaphore", "RLN"],
|
||||
},
|
||||
}
|
||||
21
data/projects/discreetly.ts
Normal file
21
data/projects/discreetly.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
An anonymous, federated, chat application that uses Rate-Limiting Nullifier for spam prevention.
|
||||
`
|
||||
|
||||
export const discreetly: ProjectInterface = {
|
||||
id: "discreetly",
|
||||
image: "discreetly.svg",
|
||||
name: "Discreetly",
|
||||
tldr: "An anonymous, federated, chat application using ZK.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/Discreetly",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social"],
|
||||
types: ["Legos/dev tools", "Proof of concept", "Application"],
|
||||
builtWith: ["RLN", "Semaphore", "Waku"],
|
||||
},
|
||||
}
|
||||
21
data/projects/dsl-working-group.ts
Normal file
21
data/projects/dsl-working-group.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
The DSL Working Group is focused on the exploration and improvement of languages used to write zero-knowledge circuits. The group's primary goal is to enhance the state of zk circuit languages, making them easier to write and review by offering the right abstractions. They also aim to make it harder to write unsound circuits by implementing static analysis and enforcing safer patterns. Additionally, they are working to support next-generation (Incrementally Verifiable Computation or IVC) proving systems. The group is currently working on Chiquito, a high-level Domain-Specific Language (DSL) for Halo2 circuits that lowers the entry barrier to write zk circuits with a state-machine abstraction API.
|
||||
`
|
||||
|
||||
export const dslWorkingGroup: ProjectInterface = {
|
||||
id: "dsl-working-group",
|
||||
image: "",
|
||||
name: "DSL Working Group",
|
||||
tldr: "Exploration of languages for writing zk circuits",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/chiquito/",
|
||||
},
|
||||
tags: {
|
||||
type: ["Legos/dev tools", "Proof of concept", "Developer tooling"],
|
||||
themes: [],
|
||||
builtWith: [],
|
||||
},
|
||||
}
|
||||
21
data/projects/eigen-trust.ts
Normal file
21
data/projects/eigen-trust.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
EigenTrust is a library designed to manage trust within a distributed network, incorporating zero-knowledge features. It serves as a reputation bank for the Ethereum ecosystem, providing an interoperable layer for managing reputation and trust. The protocol creates zero-knowledge proofs of reputation scores based on ratings given by network participants. This allows for the creation of a reputation system for peer-to-peer marketplaces and exchanges, reputation-weighted voting, and community gatekeeping.
|
||||
`
|
||||
|
||||
export const eigenTrust: ProjectInterface = {
|
||||
id: "eigen-trust",
|
||||
image: "",
|
||||
name: "EigenTrust",
|
||||
tldr: "A distributed reputation system with zero-knowledge features.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/eigen-trust/protocol",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Reputation", "Identity"],
|
||||
type: ["Infrastructure/protocol"],
|
||||
builtWith: ["Ethereum Attestation Service", "Halo2", "ethers.rs"],
|
||||
},
|
||||
}
|
||||
21
data/projects/maci.ts
Normal file
21
data/projects/maci.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Minimal Anti-Collusion Infrastructure (MACI) is a protocol designed to provide a highly secure e-voting solution. It enables organizations to conduct on-chain voting processes with a significantly reduced risk of cheating, such as bribery or collusion. MACI uses zero-knowledge proofs to implement a receipt-free voting scheme, making it impossible for anyone other than the vote coordinator to verify how a specific user voted. This ensures the correct execution of votes and allows anyone to verify the results. It's particularly beneficial for governance and funding events, where its anti-collusion mechanisms help ensure fair and transparent outcomes.
|
||||
`
|
||||
|
||||
export const maci: ProjectInterface = {
|
||||
id: "maci",
|
||||
image: "maci.webp",
|
||||
name: "MACI",
|
||||
tldr: "A secure e-voting solution minimizing the risk of collusion and bribery",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/maci",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Voting/governance"],
|
||||
types: ["Lego sets/toolkits", "Infrastructure/protocol"],
|
||||
builtWith: ["P0tion", "JubjubLib"],
|
||||
},
|
||||
}
|
||||
22
data/projects/pollen-labs.ts
Normal file
22
data/projects/pollen-labs.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Pollen Labs is driven by a mission to make a significant impact on global lives by addressing complex, pressing issues. They work alongside their community to break barriers, preserve privacy, and build a future where every voice is heard, and a free web is accessible to all. Their projects, like Channel 4, a content discovery engine, and Daisy, focusing on information transparency, embody this mission., enabling community members to earn while they engage.
|
||||
`
|
||||
|
||||
export const pollenLabs: ProjectInterface = {
|
||||
id: "pollen-labs",
|
||||
image: "pollen-labs.svg",
|
||||
name: "Pollen Labs",
|
||||
tldr: "Champions of freedom of speech and expression through decentralized innovation.",
|
||||
description,
|
||||
links: {
|
||||
website: "https://pollenlabs.org/",
|
||||
twitter: "https://twitter.com/PollenLabs_",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Scaling"],
|
||||
type: ["Application"],
|
||||
builtWith: [""],
|
||||
},
|
||||
}
|
||||
27
data/projects/pse-security.ts
Normal file
27
data/projects/pse-security.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
PSE Security is a division of the Privacy & Scaling Explorations team at the Ethereum Foundation. Its primary goal is to identify and rectify bugs, thereby enhancing the security of the Ethereum Layer 2 and Zero-Knowledge ecosystems. Recognizing the potential for critical bugs to cause significant setbacks, PSE Security is committed to preemptively addressing these issues. The team offers open-source projects like the ZK Bug Tracker and Bridge Bug Tracker, which track real bugs and exploits in production code, and encourages community contributions. PSE Security also conducts manual audits and plans to help teach the community more about security and ways they can prevent bugs themselves.
|
||||
`
|
||||
|
||||
export const pseSecurity: ProjectInterface = {
|
||||
id: "pse-security",
|
||||
image: "",
|
||||
name: "PSE Security",
|
||||
tldr: "Proactively securing Ethereum's L2 and ZK ecosystems.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/security",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Anonymity/privacy",
|
||||
"Education",
|
||||
"Key management",
|
||||
"Scaling",
|
||||
"Security",
|
||||
],
|
||||
types: ["Legos/dev tools"],
|
||||
builtWith: ["Slither", "Ecne", "Circomspect", "Echidna"],
|
||||
},
|
||||
}
|
||||
22
data/projects/rln.ts
Normal file
22
data/projects/rln.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Rate-Limiting Nullifier (RLN) is a protocol designed to combat spam and denial of service attacks in privacy-preserving environments. It allows users in an anonymous system to penalize those who exceed the rate limit, either by withdrawing the offender's stake or revealing their secrets. This mechanism helps maintain system integrity and deters abuse. RLN is built on the Semaphore protocol and uses zero-knowledge proofs and the Shamir’s Secret Sharing scheme to reveal the spammer's private key. It's particularly useful for developers working on communication systems that require privacy and anonymity, such as chat apps, client-server communications, and peer-to-peer communications. It's already being used in projects like Zerokit and Waku, and is also being developed for use with the KZG polynomial commitment scheme.
|
||||
`
|
||||
|
||||
export const rln: ProjectInterface = {
|
||||
id: "rln",
|
||||
image: "rln.webp",
|
||||
name: "Rate-Limiting Nullifier",
|
||||
tldr: "A protocol for deterring spam and maintaining anonymity in communication systems.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/Rate-Limiting-Nullifier/circom-rln",
|
||||
website: "https://rate-limiting-nullifier.github.io/rln-docs/",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy"],
|
||||
types: ["Infrastructure/protocol"],
|
||||
builtWith: ["Circom", "Solidity", "Semaphore"],
|
||||
},
|
||||
}
|
||||
35
data/projects/semaphore.ts
Normal file
35
data/projects/semaphore.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Semaphore is a protocol that allows users to prove their membership in a group and transmit anonymous data, such as votes or feedback, without revealing their identities. It is designed for developers aiming to build privacy-preserving applications. Semaphore enables the creation of identities and their corresponding public values, which can be added to Merkle trees. This facilitates the authentication of anonymous user messages through zero-knowledge proofs, where membership is proven using Merkle proofs within the circuit. Key use cases include anonymous voting applications, receiving anonymous feedback from event attendees, and anonymous text messages. It is currently in production and is being used in a wide variety of projects.
|
||||
`
|
||||
|
||||
export const semaphore: ProjectInterface = {
|
||||
id: "semaphore",
|
||||
image: "semaphore.webp",
|
||||
name: "Semaphore",
|
||||
tldr: "A zero-knowledge protocol enabling anonymous group membership proof and signaling.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/semaphore-protocol",
|
||||
website: "https://semaphore.appliedzkp.org/",
|
||||
discord: "https://semaphore.appliedzkp.org/discord",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Transaction privacy",
|
||||
"Voting/governance",
|
||||
"Reputation",
|
||||
"Education",
|
||||
"Scaling",
|
||||
"Key management",
|
||||
"Other (group membership)",
|
||||
],
|
||||
|
||||
types: ["Legos/dev tools", "Lego sets/toolkits", "Infrastructure/protocol"],
|
||||
builtWith: ["ZK-kit", "circom", "snarkjs"],
|
||||
},
|
||||
}
|
||||
21
data/projects/summa.ts
Normal file
21
data/projects/summa.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Summa allows centralized exchanges to demonstrate that their assets exceed their liabilities without revealing critical business information such as individual user balances, total number of users, and total liabilities or assets. It uses zero-knowledge proofs to ensure that exchanges can demonstrate they have sufficient assets to cover all user balances. The protocol involves building a Merkle Sum Tree of user balances, generating proofs for each user, and allowing users to verify these proofs.
|
||||
`
|
||||
|
||||
export const summa: ProjectInterface = {
|
||||
id: "summa",
|
||||
image: "",
|
||||
name: "Summa",
|
||||
tldr: "Protocol enabling centralized exchanges to prove solvency without compromising private information.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/summa-dev",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Computational Integrity"],
|
||||
type: ["Infrastructure/protocol", "Application"],
|
||||
builtWith: ["Halo2 PSE"],
|
||||
},
|
||||
}
|
||||
23
data/projects/tlsn.ts
Normal file
23
data/projects/tlsn.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
TLSNotary is useful for developers of privacy focused projects that need data provenance from secure web servers. It leverages the widely-used Transport Layer Security (TLS) protocol to securely and privately prove a transcript of communications took place with a webserver. The protocol involves splitting TLS session keys between two parties: the User and the Notary. Neither the User nor Notary are in possession of the full TLS session keys, they only hold a share of those keys. This ensures the security assumptions of TLS while enabling the User to prove the authenticity of the communication to the Notary. The Notary remains unaware of which webserver is being queried, and the Notary never has access to the unencrypted communications. All of this is achieved while maintaining full privacy.
|
||||
`
|
||||
|
||||
export const tlsn: ProjectInterface = {
|
||||
id: "tlsn",
|
||||
image: "tlsn.webp",
|
||||
name: "TLSNotary",
|
||||
tldr: "A protocol for creating cryptographic proofs of authenticity for any data on the web.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/tlsnotary/tlsn",
|
||||
website: "https://tlsnotary.org/",
|
||||
discord: "https://discord.gg/9XwESXtcN7",
|
||||
},
|
||||
tags: {
|
||||
themes: [],
|
||||
type: [],
|
||||
builtWith: [],
|
||||
},
|
||||
}
|
||||
20
data/projects/trusted-setups.ts
Normal file
20
data/projects/trusted-setups.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
The Trusted Setups project is dedicated to simplifying the process of trusted setups, which are crucial for privacy or scaling solutions. Trusted setups involve multiple participants contributing to the generation of secrets. As long as one participant forgets their part of the secret, the final solution remains secure. The team recognizes the complexity of developing contribution programs and coordinating the participants' queue in a trusted setup. To address this, they are developing tools, including scripts, WebApps, and APIs, to streamline the contribution and coordination effort. This allows developers to focus on building their circuits and applications, enhancing efficiency and productivity in the development of zero-knowledge applications.
|
||||
`
|
||||
export const trustedSetups: ProjectInterface = {
|
||||
id: "trusted-setups",
|
||||
image: "trusted-setups.svg",
|
||||
name: "Trusted Setups",
|
||||
tldr: "Aiding developers with tools for trusted setups.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/zkparty",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling", "Education"],
|
||||
type: ["Legos/dev tools", "Lego sets/toolkits"],
|
||||
builtWith: [],
|
||||
},
|
||||
}
|
||||
24
data/projects/unirep-protocol.ts
Normal file
24
data/projects/unirep-protocol.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
UniRep is a zero-knowledge protocol that securely manages user data through anonymous identifiers, enabling trustless interactions and enhanced user privacy in applications. It expands the concept of reputation to include various user data aspects, such as preferences, activity, alignments, and ownership. UniRep promotes non-custodial applications that don't hold user data, reducing data breach risks and emphasizing security for both users and developers.
|
||||
`
|
||||
|
||||
export const unirepProtocol: ProjectInterface = {
|
||||
id: "unirep-protocol",
|
||||
image: "unirep.svg",
|
||||
name: "UniRep Protocol",
|
||||
tldr: "A Zero-Knowledge Protocol for user data & reputation management",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/Unirep",
|
||||
website: "https://developer.unirep.io/docs/welcome",
|
||||
twitter: "https://twitter.com/UniRep_Protocol",
|
||||
discord: "https://discord.gg/VzMMDJmYc5",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
type: ["Legos/dev tools, Protocol"],
|
||||
builtWith: ["Semaphore", "Circom"],
|
||||
},
|
||||
}
|
||||
32
data/projects/wax.ts
Normal file
32
data/projects/wax.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Wallet Account eXperiments (WAX), formerly known as BLS Wallet, is a suite of production-ready smart account components that provide advanced features for wallets, SDKs, and dApps. It's designed to lower gas costs on EVM rollups through aggregated BLS signatures, simplifying the integration of contract wallets and reducing the cost of layer 2 transactions. This makes WAX particularly beneficial for web3 projects targeting developing economies. WAX components incorporate advanced cryptographic primitives in a secure and intuitive way, using Safe contracts for a familiar and battle-tested foundation. Each additional module can be audited and added or removed at the account holder's discretion. WAX offers features like cheaper L2 transactions, modular smart contract components, ERC 4337 compatibility, zk email verification, passkeys verification, multi-action transactions, gasless transactions, and wallet upgradability. The primary use cases for WAX include scaling, key management, and the creation of prototypes for the web3 ecosystem.
|
||||
`
|
||||
|
||||
export const wax: ProjectInterface = {
|
||||
id: "wax",
|
||||
image: "wax.webp",
|
||||
name: "Wallet Account eXperiments (WAX)",
|
||||
tldr: "Streamlines web3 product development with smart account components for enhanced wallets, dApps, and SDKs.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/getwax",
|
||||
website: "https://getwax.org/",
|
||||
discord: "https://discord.gg/hGDmAhcRyz",
|
||||
},
|
||||
tags: {
|
||||
builtWith: [
|
||||
"Hardhat",
|
||||
"Node",
|
||||
"Solidity BLS library",
|
||||
"sqlite",
|
||||
"docker",
|
||||
"ethers",
|
||||
"deno",
|
||||
],
|
||||
|
||||
themes: ["Scaling", "Key management"],
|
||||
types: ["Prototype", "Proof of concept", "Lego sets/toolkits"],
|
||||
},
|
||||
}
|
||||
28
data/projects/zk3.ts
Normal file
28
data/projects/zk3.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Zk3 is a protocol that leverages Zero Knowledge Proofs (ZKPs) to allow users to prove their membership in a group without revealing their identity. This is particularly useful for social media applications built on Lens or other on-chain platforms. The protocol helps to moderate conversations and reduce bot activity while preserving user privacy. It provides developers with the tools to verify group eligibility, create ZK proofs, and use ZK proofs in Lens. ZK3 consists of a smart contract system for user interactions and network rules, and a GraphQL API for flexible interaction, enabling the development of diverse applications, including web 2.0 integrations.
|
||||
`
|
||||
|
||||
export const zk3: ProjectInterface = {
|
||||
id: "zk3",
|
||||
image: "zk3.svg",
|
||||
name: "zk3",
|
||||
tldr: "Utilizing ZK proofs in social networks",
|
||||
description,
|
||||
links: {
|
||||
github: "http://github.com/monemetrics/semaphore-zk3",
|
||||
website: "http://zk3.io/",
|
||||
twitter: "http://twitter.com/zk3org",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
type: [
|
||||
"Legos/dev tools",
|
||||
"Lego sets/toolkits",
|
||||
"Infrastructure/protocol",
|
||||
"Plugin",
|
||||
],
|
||||
builtWith: ["Semaphore", "Lens protocol"],
|
||||
},
|
||||
}
|
||||
21
data/projects/zkevm-community.ts
Normal file
21
data/projects/zkevm-community.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
zkEVM Community Edition is a project aimed at validating Ethereum blocks using zero-knowledge proofs. It is designed to be fully compatible with Ethereum's EVM and serves two primary goals. First, it enables the creation of a layer 2 network (zkRollup) compatible with the Ethereum ecosystem, which uses zero-knowledge proofs to validate blocks, thus enhancing scalability. Second, it allows the generation of zero-knowledge proofs for blocks from the existing layer 1 Ethereum network, enabling light clients to quickly synchronize many blocks with low resource consumption while ensuring block correctness without needing trust in external parties.
|
||||
`
|
||||
|
||||
export const zkevmCommunity: ProjectInterface = {
|
||||
id: "zkevm-community",
|
||||
image: "",
|
||||
name: "zkEVM Community Edition",
|
||||
tldr: "A zero-knowledge proof mechanism for Ethereum block verification.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/zkevm-circuits",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling"],
|
||||
types: ["Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
builtWith: ["halo2 from zcash", "Rust", "geth"],
|
||||
},
|
||||
}
|
||||
24
data/projects/zkitter.ts
Normal file
24
data/projects/zkitter.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
Zkitter is a decentralized social network that emphasizes privacy by default. It allows users to share thoughts and communicate in various modes: as known identities, as a member of a group, or entirely anonymously. Built with Semaphore and RLN, Zkitter offers familiar social media features such as posting, chatting, following, and liking, but with a strong focus on user privacy and anonymity. It serves as an experiment to explore new ways of engaging in conversations without the fear of damaging one’s personal reputation and is an example of a user-facing application using zero-knowledge primitives such as Semaphore, CryptKeeper, ZK-Chat, and Interep. Users can sign up using an Ethereum address or ENS name, or create an anonymous account, with options for anonymous chat and posting.
|
||||
`
|
||||
|
||||
export const zkitter: ProjectInterface = {
|
||||
id: "zkitter",
|
||||
image: "zkitter.webp",
|
||||
name: "Zkitter",
|
||||
tldr: "A decentralized social network prioritizing privacy and anonymity",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/zkitter",
|
||||
website: "https://www.zkitter.com/explore/",
|
||||
discord: "https://discord.gg/Em4Z9yE8eW",
|
||||
},
|
||||
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity"],
|
||||
types: ["Application", "Infrastructure/protocol"],
|
||||
builtWith: ["Semaphore", "RLN", "Interep", "zkchat"],
|
||||
},
|
||||
}
|
||||
21
data/projects/zkml.ts
Normal file
21
data/projects/zkml.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
ZKML is a solution that combines the power of zero-knowledge proofs (ZKPs) and machine learning to address the privacy concerns in traditional machine learning. It provides a platform for machine learning developers to convert their TensorFlow Keras models into ZK-compatible versions, ensuring model privacy, data privacy, and transparent verification. ZKML can be used to verify if a specific machine learning model was used to generate a particular piece of content, without revealing the input or the model used. It has potential use cases in on-chain biometric authentication, private data marketplace, proprietary ML model sharing, and AIGC NFTs.
|
||||
`
|
||||
|
||||
export const zkml: ProjectInterface = {
|
||||
id: "zkml",
|
||||
image: "",
|
||||
name: "ZKML",
|
||||
tldr: "ZKML (Zero-Knowledge Machine Learning) leverages zero-knowledge proofs for privacy-preserving machine learning, enabling model and data privacy with transparent verification.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/socathie/circomlib-ml",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Scaling"],
|
||||
type: ["Proof of concept", "Infrastructure/protocol"],
|
||||
builtWith: ["circom", "halo2", "nova"],
|
||||
},
|
||||
}
|
||||
23
data/projects/zkp2p.ts
Normal file
23
data/projects/zkp2p.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
const description = `
|
||||
ZKP2P is for defi consumers looking to onramp assets on chain quickly without going through a CEX as an intermediary. ZKP2P generates a privacy-preserving proof of payment between two users on existing payment rails like Venmo or Paypal and uses said proof to unlock escrowed digital assets on-chain.
|
||||
`
|
||||
|
||||
export const zkp2p: ProjectInterface = {
|
||||
id: "zkp2p",
|
||||
image: "zkp2p.webp",
|
||||
name: "ZKP2P",
|
||||
tldr: "Instant fiat to crypto onramp connecting traditional peer-to-peer payment services with zero-knowledge proofs.",
|
||||
description,
|
||||
links: {
|
||||
github: "https://github.com/zkp2p",
|
||||
website: "https://zkp2p.xyz/",
|
||||
twitter: "https://twitter.com/zkp2p",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Payments", "On-ramping"],
|
||||
type: ["Proof of concept", "Application"],
|
||||
builtWith: ["Circom", "Halo2"],
|
||||
},
|
||||
}
|
||||
13
lib/types.ts
13
lib/types.ts
@@ -7,3 +7,16 @@ export interface NewsInterface {
|
||||
url: string
|
||||
}
|
||||
}
|
||||
|
||||
export type ProjectLinkType = Partial<
|
||||
Record<"github" | "website" | "discord" | "twitter", string>
|
||||
>
|
||||
export interface ProjectInterface {
|
||||
id: string
|
||||
image: string
|
||||
name: string
|
||||
tldr: string
|
||||
description: string
|
||||
links?: ProjectLinkType
|
||||
tags?: Record<string, string[]>
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
"next-themes": "^0.2.1",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-markdown": "^8.0.7",
|
||||
"remark-gfm": "^3.0.1",
|
||||
"sharp": "^0.31.3",
|
||||
"tailwind-merge": "^1.12.0",
|
||||
"tailwindcss-animate": "^1.0.5"
|
||||
|
||||
664
pnpm-lock.yaml
generated
664
pnpm-lock.yaml
generated
@@ -1,5 +1,9 @@
|
||||
lockfileVersion: '6.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
'@radix-ui/react-slot':
|
||||
specifier: ^1.0.2
|
||||
@@ -31,6 +35,12 @@ dependencies:
|
||||
react-dom:
|
||||
specifier: ^18.2.0
|
||||
version: 18.2.0(react@18.2.0)
|
||||
react-markdown:
|
||||
specifier: ^8.0.7
|
||||
version: 8.0.7(@types/react@18.2.7)(react@18.2.0)
|
||||
remark-gfm:
|
||||
specifier: ^3.0.1
|
||||
version: 3.0.1
|
||||
sharp:
|
||||
specifier: ^0.31.3
|
||||
version: 0.31.3
|
||||
@@ -291,6 +301,7 @@ packages:
|
||||
|
||||
/@emotion/memoize@0.7.4:
|
||||
resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
@@ -549,10 +560,32 @@ packages:
|
||||
tslib: 2.5.2
|
||||
dev: false
|
||||
|
||||
/@types/debug@4.1.8:
|
||||
resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
|
||||
dependencies:
|
||||
'@types/ms': 0.7.31
|
||||
dev: false
|
||||
|
||||
/@types/hast@2.3.5:
|
||||
resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
dev: false
|
||||
|
||||
/@types/json5@0.0.29:
|
||||
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
|
||||
dev: true
|
||||
|
||||
/@types/mdast@3.0.12:
|
||||
resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
dev: false
|
||||
|
||||
/@types/ms@0.7.31:
|
||||
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
|
||||
dev: false
|
||||
|
||||
/@types/node@17.0.45:
|
||||
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||
dev: true
|
||||
@@ -576,6 +609,10 @@ packages:
|
||||
/@types/scheduler@0.16.3:
|
||||
resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
|
||||
|
||||
/@types/unist@2.0.7:
|
||||
resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==}
|
||||
dev: false
|
||||
|
||||
/@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
@@ -791,6 +828,10 @@ packages:
|
||||
deep-equal: 2.2.1
|
||||
dev: true
|
||||
|
||||
/bail@2.0.2:
|
||||
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
|
||||
dev: false
|
||||
|
||||
/balanced-match@1.0.2:
|
||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||
|
||||
@@ -865,6 +906,10 @@ packages:
|
||||
/caniuse-lite@1.0.30001489:
|
||||
resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==}
|
||||
|
||||
/ccount@2.0.1:
|
||||
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
||||
dev: false
|
||||
|
||||
/chalk@2.4.2:
|
||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -881,6 +926,10 @@ packages:
|
||||
supports-color: 7.2.0
|
||||
dev: true
|
||||
|
||||
/character-entities@2.0.2:
|
||||
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
|
||||
dev: false
|
||||
|
||||
/chokidar@3.5.3:
|
||||
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
|
||||
engines: {node: '>= 8.10.0'}
|
||||
@@ -951,6 +1000,10 @@ packages:
|
||||
color-string: 1.9.1
|
||||
dev: false
|
||||
|
||||
/comma-separated-tokens@2.0.3:
|
||||
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
|
||||
dev: false
|
||||
|
||||
/commander@4.1.1:
|
||||
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
||||
engines: {node: '>= 6'}
|
||||
@@ -1004,6 +1057,12 @@ packages:
|
||||
dependencies:
|
||||
ms: 2.1.2
|
||||
|
||||
/decode-named-character-reference@1.0.2:
|
||||
resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
|
||||
dependencies:
|
||||
character-entities: 2.0.2
|
||||
dev: false
|
||||
|
||||
/decompress-response@6.0.0:
|
||||
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -1051,6 +1110,11 @@ packages:
|
||||
object-keys: 1.1.1
|
||||
dev: true
|
||||
|
||||
/dequal@2.0.3:
|
||||
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/detect-libc@2.0.1:
|
||||
resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -1059,6 +1123,11 @@ packages:
|
||||
/didyoumean@1.2.2:
|
||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
||||
|
||||
/diff@5.1.0:
|
||||
resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==}
|
||||
engines: {node: '>=0.3.1'}
|
||||
dev: false
|
||||
|
||||
/dir-glob@3.0.1:
|
||||
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -1187,6 +1256,11 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/escape-string-regexp@5.0.0:
|
||||
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
||||
engines: {node: '>=12'}
|
||||
dev: false
|
||||
|
||||
/eslint-config-next@13.0.0(eslint@8.41.0)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-y2nqWS2tycWySdVhb+rhp6CuDmDazGySqkzzQZf3UTyfHyC7og1m5m/AtMFwCo5mtvDqvw1BENin52kV9733lg==}
|
||||
peerDependencies:
|
||||
@@ -1480,6 +1554,10 @@ packages:
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/extend@3.0.2:
|
||||
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
|
||||
dev: false
|
||||
|
||||
/fast-deep-equal@3.1.3:
|
||||
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
|
||||
dev: true
|
||||
@@ -1762,6 +1840,10 @@ packages:
|
||||
dependencies:
|
||||
function-bind: 1.1.1
|
||||
|
||||
/hast-util-whitespace@2.0.1:
|
||||
resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
|
||||
dev: false
|
||||
|
||||
/ieee754@1.2.1:
|
||||
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
|
||||
dev: false
|
||||
@@ -1797,6 +1879,10 @@ packages:
|
||||
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
|
||||
dev: false
|
||||
|
||||
/inline-style-parser@0.1.1:
|
||||
resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
|
||||
dev: false
|
||||
|
||||
/internal-slot@1.0.5:
|
||||
resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@@ -1846,6 +1932,11 @@ packages:
|
||||
has-tostringtag: 1.0.0
|
||||
dev: true
|
||||
|
||||
/is-buffer@2.0.5:
|
||||
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/is-callable@1.2.7:
|
||||
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@@ -1898,6 +1989,11 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/is-plain-obj@4.1.0:
|
||||
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
|
||||
engines: {node: '>=12'}
|
||||
dev: false
|
||||
|
||||
/is-regex@1.1.4:
|
||||
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@@ -2017,6 +2113,11 @@ packages:
|
||||
object.assign: 4.1.4
|
||||
dev: true
|
||||
|
||||
/kleur@4.1.5:
|
||||
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/language-subtag-registry@0.3.22:
|
||||
resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
|
||||
dev: true
|
||||
@@ -2061,6 +2162,10 @@ packages:
|
||||
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
|
||||
dev: true
|
||||
|
||||
/longest-streak@3.1.0:
|
||||
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
|
||||
dev: false
|
||||
|
||||
/loose-envify@1.4.0:
|
||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
@@ -2086,10 +2191,392 @@ packages:
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/markdown-table@3.0.3:
|
||||
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
|
||||
dev: false
|
||||
|
||||
/mdast-util-definitions@5.1.2:
|
||||
resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
'@types/unist': 2.0.7
|
||||
unist-util-visit: 4.1.2
|
||||
dev: false
|
||||
|
||||
/mdast-util-find-and-replace@2.2.2:
|
||||
resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
escape-string-regexp: 5.0.0
|
||||
unist-util-is: 5.2.1
|
||||
unist-util-visit-parents: 5.1.3
|
||||
dev: false
|
||||
|
||||
/mdast-util-from-markdown@1.3.1:
|
||||
resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
'@types/unist': 2.0.7
|
||||
decode-named-character-reference: 1.0.2
|
||||
mdast-util-to-string: 3.2.0
|
||||
micromark: 3.2.0
|
||||
micromark-util-decode-numeric-character-reference: 1.1.0
|
||||
micromark-util-decode-string: 1.1.0
|
||||
micromark-util-normalize-identifier: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
unist-util-stringify-position: 3.0.3
|
||||
uvu: 0.5.6
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-autolink-literal@1.0.3:
|
||||
resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
ccount: 2.0.1
|
||||
mdast-util-find-and-replace: 2.2.2
|
||||
micromark-util-character: 1.2.0
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-footnote@1.0.2:
|
||||
resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
mdast-util-to-markdown: 1.5.0
|
||||
micromark-util-normalize-identifier: 1.1.0
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-strikethrough@1.0.3:
|
||||
resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
mdast-util-to-markdown: 1.5.0
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-table@1.0.7:
|
||||
resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
markdown-table: 3.0.3
|
||||
mdast-util-from-markdown: 1.3.1
|
||||
mdast-util-to-markdown: 1.5.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-task-list-item@1.0.2:
|
||||
resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
mdast-util-to-markdown: 1.5.0
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm@2.0.2:
|
||||
resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
|
||||
dependencies:
|
||||
mdast-util-from-markdown: 1.3.1
|
||||
mdast-util-gfm-autolink-literal: 1.0.3
|
||||
mdast-util-gfm-footnote: 1.0.2
|
||||
mdast-util-gfm-strikethrough: 1.0.3
|
||||
mdast-util-gfm-table: 1.0.7
|
||||
mdast-util-gfm-task-list-item: 1.0.2
|
||||
mdast-util-to-markdown: 1.5.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-phrasing@3.0.1:
|
||||
resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
unist-util-is: 5.2.1
|
||||
dev: false
|
||||
|
||||
/mdast-util-to-hast@12.3.0:
|
||||
resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==}
|
||||
dependencies:
|
||||
'@types/hast': 2.3.5
|
||||
'@types/mdast': 3.0.12
|
||||
mdast-util-definitions: 5.1.2
|
||||
micromark-util-sanitize-uri: 1.2.0
|
||||
trim-lines: 3.0.1
|
||||
unist-util-generated: 2.0.1
|
||||
unist-util-position: 4.0.4
|
||||
unist-util-visit: 4.1.2
|
||||
dev: false
|
||||
|
||||
/mdast-util-to-markdown@1.5.0:
|
||||
resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
'@types/unist': 2.0.7
|
||||
longest-streak: 3.1.0
|
||||
mdast-util-phrasing: 3.0.1
|
||||
mdast-util-to-string: 3.2.0
|
||||
micromark-util-decode-string: 1.1.0
|
||||
unist-util-visit: 4.1.2
|
||||
zwitch: 2.0.4
|
||||
dev: false
|
||||
|
||||
/mdast-util-to-string@3.2.0:
|
||||
resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
dev: false
|
||||
|
||||
/merge2@1.4.1:
|
||||
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
/micromark-core-commonmark@1.1.0:
|
||||
resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==}
|
||||
dependencies:
|
||||
decode-named-character-reference: 1.0.2
|
||||
micromark-factory-destination: 1.1.0
|
||||
micromark-factory-label: 1.1.0
|
||||
micromark-factory-space: 1.1.0
|
||||
micromark-factory-title: 1.1.0
|
||||
micromark-factory-whitespace: 1.1.0
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-chunked: 1.1.0
|
||||
micromark-util-classify-character: 1.1.0
|
||||
micromark-util-html-tag-name: 1.2.0
|
||||
micromark-util-normalize-identifier: 1.1.0
|
||||
micromark-util-resolve-all: 1.1.0
|
||||
micromark-util-subtokenize: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-autolink-literal@1.0.5:
|
||||
resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==}
|
||||
dependencies:
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-sanitize-uri: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-footnote@1.1.2:
|
||||
resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==}
|
||||
dependencies:
|
||||
micromark-core-commonmark: 1.1.0
|
||||
micromark-factory-space: 1.1.0
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-normalize-identifier: 1.1.0
|
||||
micromark-util-sanitize-uri: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-strikethrough@1.0.7:
|
||||
resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==}
|
||||
dependencies:
|
||||
micromark-util-chunked: 1.1.0
|
||||
micromark-util-classify-character: 1.1.0
|
||||
micromark-util-resolve-all: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-table@1.0.7:
|
||||
resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==}
|
||||
dependencies:
|
||||
micromark-factory-space: 1.1.0
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-tagfilter@1.0.2:
|
||||
resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==}
|
||||
dependencies:
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-task-list-item@1.0.5:
|
||||
resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==}
|
||||
dependencies:
|
||||
micromark-factory-space: 1.1.0
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm@2.0.3:
|
||||
resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==}
|
||||
dependencies:
|
||||
micromark-extension-gfm-autolink-literal: 1.0.5
|
||||
micromark-extension-gfm-footnote: 1.1.2
|
||||
micromark-extension-gfm-strikethrough: 1.0.7
|
||||
micromark-extension-gfm-table: 1.0.7
|
||||
micromark-extension-gfm-tagfilter: 1.0.2
|
||||
micromark-extension-gfm-task-list-item: 1.0.5
|
||||
micromark-util-combine-extensions: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-factory-destination@1.1.0:
|
||||
resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==}
|
||||
dependencies:
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-factory-label@1.1.0:
|
||||
resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==}
|
||||
dependencies:
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-factory-space@1.1.0:
|
||||
resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
|
||||
dependencies:
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-factory-title@1.1.0:
|
||||
resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==}
|
||||
dependencies:
|
||||
micromark-factory-space: 1.1.0
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-factory-whitespace@1.1.0:
|
||||
resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==}
|
||||
dependencies:
|
||||
micromark-factory-space: 1.1.0
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-character@1.2.0:
|
||||
resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
|
||||
dependencies:
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-chunked@1.1.0:
|
||||
resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
|
||||
dependencies:
|
||||
micromark-util-symbol: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-classify-character@1.1.0:
|
||||
resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==}
|
||||
dependencies:
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-combine-extensions@1.1.0:
|
||||
resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==}
|
||||
dependencies:
|
||||
micromark-util-chunked: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-decode-numeric-character-reference@1.1.0:
|
||||
resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==}
|
||||
dependencies:
|
||||
micromark-util-symbol: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-decode-string@1.1.0:
|
||||
resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==}
|
||||
dependencies:
|
||||
decode-named-character-reference: 1.0.2
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-decode-numeric-character-reference: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-encode@1.1.0:
|
||||
resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
|
||||
dev: false
|
||||
|
||||
/micromark-util-html-tag-name@1.2.0:
|
||||
resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
|
||||
dev: false
|
||||
|
||||
/micromark-util-normalize-identifier@1.1.0:
|
||||
resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==}
|
||||
dependencies:
|
||||
micromark-util-symbol: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-resolve-all@1.1.0:
|
||||
resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==}
|
||||
dependencies:
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-sanitize-uri@1.2.0:
|
||||
resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==}
|
||||
dependencies:
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-encode: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-util-subtokenize@1.1.0:
|
||||
resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
|
||||
dependencies:
|
||||
micromark-util-chunked: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-util-symbol@1.1.0:
|
||||
resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
|
||||
dev: false
|
||||
|
||||
/micromark-util-types@1.1.0:
|
||||
resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
|
||||
dev: false
|
||||
|
||||
/micromark@3.2.0:
|
||||
resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
|
||||
dependencies:
|
||||
'@types/debug': 4.1.8
|
||||
debug: 4.3.4
|
||||
decode-named-character-reference: 1.0.2
|
||||
micromark-core-commonmark: 1.1.0
|
||||
micromark-factory-space: 1.1.0
|
||||
micromark-util-character: 1.2.0
|
||||
micromark-util-chunked: 1.1.0
|
||||
micromark-util-combine-extensions: 1.1.0
|
||||
micromark-util-decode-numeric-character-reference: 1.1.0
|
||||
micromark-util-encode: 1.1.0
|
||||
micromark-util-normalize-identifier: 1.1.0
|
||||
micromark-util-resolve-all: 1.1.0
|
||||
micromark-util-sanitize-uri: 1.2.0
|
||||
micromark-util-subtokenize: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
uvu: 0.5.6
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/micromatch@4.0.5:
|
||||
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
|
||||
engines: {node: '>=8.6'}
|
||||
@@ -2114,6 +2601,11 @@ packages:
|
||||
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
|
||||
dev: false
|
||||
|
||||
/mri@1.2.0:
|
||||
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/ms@2.1.2:
|
||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||
|
||||
@@ -2471,7 +2963,10 @@ packages:
|
||||
loose-envify: 1.4.0
|
||||
object-assign: 4.1.1
|
||||
react-is: 16.13.1
|
||||
dev: true
|
||||
|
||||
/property-information@6.2.0:
|
||||
resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==}
|
||||
dev: false
|
||||
|
||||
/pump@3.0.0:
|
||||
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
|
||||
@@ -2510,7 +3005,37 @@ packages:
|
||||
|
||||
/react-is@16.13.1:
|
||||
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
||||
dev: true
|
||||
|
||||
/react-is@18.2.0:
|
||||
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
|
||||
dev: false
|
||||
|
||||
/react-markdown@8.0.7(@types/react@18.2.7)(react@18.2.0):
|
||||
resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==}
|
||||
peerDependencies:
|
||||
'@types/react': '>=16'
|
||||
react: '>=16'
|
||||
dependencies:
|
||||
'@types/hast': 2.3.5
|
||||
'@types/prop-types': 15.7.5
|
||||
'@types/react': 18.2.7
|
||||
'@types/unist': 2.0.7
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-whitespace: 2.0.1
|
||||
prop-types: 15.8.1
|
||||
property-information: 6.2.0
|
||||
react: 18.2.0
|
||||
react-is: 18.2.0
|
||||
remark-parse: 10.0.2
|
||||
remark-rehype: 10.1.0
|
||||
space-separated-tokens: 2.0.2
|
||||
style-to-object: 0.4.2
|
||||
unified: 10.1.2
|
||||
unist-util-visit: 4.1.2
|
||||
vfile: 5.3.7
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/react@18.2.0:
|
||||
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
|
||||
@@ -2551,6 +3076,36 @@ packages:
|
||||
functions-have-names: 1.2.3
|
||||
dev: true
|
||||
|
||||
/remark-gfm@3.0.1:
|
||||
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
mdast-util-gfm: 2.0.2
|
||||
micromark-extension-gfm: 2.0.3
|
||||
unified: 10.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/remark-parse@10.0.2:
|
||||
resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.12
|
||||
mdast-util-from-markdown: 1.3.1
|
||||
unified: 10.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/remark-rehype@10.1.0:
|
||||
resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==}
|
||||
dependencies:
|
||||
'@types/hast': 2.3.5
|
||||
'@types/mdast': 3.0.12
|
||||
mdast-util-to-hast: 12.3.0
|
||||
unified: 10.1.2
|
||||
dev: false
|
||||
|
||||
/resolve-from@4.0.0:
|
||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -2589,6 +3144,13 @@ packages:
|
||||
dependencies:
|
||||
queue-microtask: 1.2.3
|
||||
|
||||
/sade@1.8.1:
|
||||
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
|
||||
engines: {node: '>=6'}
|
||||
dependencies:
|
||||
mri: 1.2.0
|
||||
dev: false
|
||||
|
||||
/safe-buffer@5.2.1:
|
||||
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
||||
dev: false
|
||||
@@ -2680,6 +3242,10 @@ packages:
|
||||
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
/space-separated-tokens@2.0.2:
|
||||
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
|
||||
dev: false
|
||||
|
||||
/stop-iteration-iterator@1.0.0:
|
||||
resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@@ -2758,6 +3324,12 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/style-to-object@0.4.2:
|
||||
resolution: {integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==}
|
||||
dependencies:
|
||||
inline-style-parser: 0.1.1
|
||||
dev: false
|
||||
|
||||
/styled-jsx@5.1.1(@babel/core@7.22.1)(react@18.2.0):
|
||||
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
@@ -2894,6 +3466,14 @@ packages:
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
|
||||
/trim-lines@3.0.1:
|
||||
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
|
||||
dev: false
|
||||
|
||||
/trough@2.1.0:
|
||||
resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
|
||||
dev: false
|
||||
|
||||
/ts-interface-checker@0.1.13:
|
||||
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
|
||||
|
||||
@@ -2964,6 +3544,55 @@ packages:
|
||||
which-boxed-primitive: 1.0.2
|
||||
dev: true
|
||||
|
||||
/unified@10.1.2:
|
||||
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
bail: 2.0.2
|
||||
extend: 3.0.2
|
||||
is-buffer: 2.0.5
|
||||
is-plain-obj: 4.1.0
|
||||
trough: 2.1.0
|
||||
vfile: 5.3.7
|
||||
dev: false
|
||||
|
||||
/unist-util-generated@2.0.1:
|
||||
resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==}
|
||||
dev: false
|
||||
|
||||
/unist-util-is@5.2.1:
|
||||
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
dev: false
|
||||
|
||||
/unist-util-position@4.0.4:
|
||||
resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
dev: false
|
||||
|
||||
/unist-util-stringify-position@3.0.3:
|
||||
resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
dev: false
|
||||
|
||||
/unist-util-visit-parents@5.1.3:
|
||||
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
unist-util-is: 5.2.1
|
||||
dev: false
|
||||
|
||||
/unist-util-visit@4.1.2:
|
||||
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
unist-util-is: 5.2.1
|
||||
unist-util-visit-parents: 5.1.3
|
||||
dev: false
|
||||
|
||||
/update-browserslist-db@1.0.11(browserslist@4.21.7):
|
||||
resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
|
||||
hasBin: true
|
||||
@@ -2983,6 +3612,33 @@ packages:
|
||||
/util-deprecate@1.0.2:
|
||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||
|
||||
/uvu@0.5.6:
|
||||
resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
|
||||
engines: {node: '>=8'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
dequal: 2.0.3
|
||||
diff: 5.1.0
|
||||
kleur: 4.1.5
|
||||
sade: 1.8.1
|
||||
dev: false
|
||||
|
||||
/vfile-message@3.1.4:
|
||||
resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
unist-util-stringify-position: 3.0.3
|
||||
dev: false
|
||||
|
||||
/vfile@5.3.7:
|
||||
resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
is-buffer: 2.0.5
|
||||
unist-util-stringify-position: 3.0.3
|
||||
vfile-message: 3.1.4
|
||||
dev: false
|
||||
|
||||
/watchpack@2.4.0:
|
||||
resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
@@ -3056,3 +3712,7 @@ packages:
|
||||
/zod@3.21.4:
|
||||
resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
|
||||
dev: false
|
||||
|
||||
/zwitch@2.0.4:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
dev: false
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
@apply font-sans;
|
||||
}
|
||||
body {
|
||||
@apply bg-background text-foreground font-sans;
|
||||
@apply font-sans bg-background text-foreground;
|
||||
font-feature-settings: "rlig" 1, "calt" 1;
|
||||
}
|
||||
h1,
|
||||
@@ -87,10 +87,32 @@
|
||||
h3,
|
||||
h4,
|
||||
h5, h6 {
|
||||
@apply font-display font-bold;
|
||||
@apply font-bold font-display;
|
||||
}
|
||||
|
||||
#privacy, #scaling, #explorations{
|
||||
@apply fill-gray-900;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom styles for Markdown component
|
||||
*/
|
||||
@layer base {
|
||||
table[data-component="table"] {
|
||||
@apply overflow-hidden rounded-lg table-auto bg-anakiwa-100;
|
||||
}
|
||||
|
||||
table[data-component="table"] thead > tr > th {
|
||||
@apply px-4 py-1 text-sm font-medium text-left text-anakiwa-500;
|
||||
@apply border-b border-b-white;
|
||||
}
|
||||
|
||||
table[data-component="table"] tbody > tr > td {
|
||||
@apply px-4 py-1 text-xs font-medium text-left text-turata-700;
|
||||
}
|
||||
|
||||
table[data-component="table"] tbody > tr:not(:last-child) {
|
||||
@apply border-b border-b-white;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@ module.exports = {
|
||||
orange: "#E1523A",
|
||||
orangeDark: "#E3533A",
|
||||
anakiwa: "hsl(var(--anakiwa))",
|
||||
"anakiwa-100": "#E4F3FA",
|
||||
"anakiwa-500": "#29ACCE",
|
||||
"turata-700": "#4A4C54",
|
||||
border: "hsl(var(--border))",
|
||||
input: "hsl(var(--input))",
|
||||
ring: "hsl(var(--ring))",
|
||||
|
||||
Reference in New Issue
Block a user