feat: fix eslint settings & linting (#310)

This commit is contained in:
Kalidou Diagne
2025-03-14 14:53:58 +00:00
committed by GitHub
parent 2d6f4b7adc
commit cf4f0c7ab6
36 changed files with 537 additions and 460 deletions

View File

@@ -1,41 +0,0 @@
{
"$schema": "https://json.schemastore.org/eslintrc",
"root": true,
"extends": [
"next/core-web-vitals",
"prettier",
"plugin:tailwindcss/recommended"
],
"plugins": ["tailwindcss"],
"rules": {
"@next/next/no-html-link-for-pages": "off",
"react/jsx-key": "off",
"tailwindcss/no-custom-classname": "off",
"react/react-in-jsx-scope": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/ban-types": "off"
},
"settings": {
"tailwindcss": {
"callees": ["cn"],
"config": "tailwind.config.js"
},
"next": {
"rootDir": ["./"]
}
},
"overrides": [
{
"files": ["*.ts", "*.tsx"],
"parser": "@typescript-eslint/parser"
}
],
"ignores": [
"dist/*",
".cache",
"public",
"node_modules",
"*.esm.js",
".next/*"
]
}

View File

@@ -85,7 +85,7 @@ export default function IndexPage({ params: { lang } }: any) {
</div>
}
actions={
<Link href={`/projects`} className="flex items-center gap-2 group">
<Link href={'/projects'} className="flex items-center gap-2 group">
<Button className="w-full sm:w-auto">
<div className="flex items-center gap-1">
<span className="text-base font-medium uppercase">

View File

@@ -122,7 +122,7 @@ export const ProgramPageContent = ({ lang }: any) => {
useEffect(() => {
if (sectionsRef.current === null)
sectionsRef.current = document.querySelectorAll(`div[data-section]`)
sectionsRef.current = document.querySelectorAll('div[data-section]')
if (!activeId) setActiveId(ProgramSections?.[0] ?? '')
const handleScroll = () => {

View File

@@ -101,7 +101,7 @@ const ResourceNav = ({ lang }: LangProps['params']) => {
useEffect(() => {
if (sectionsRef.current === null)
sectionsRef.current = document.querySelectorAll(`div[data-section]`)
sectionsRef.current = document.querySelectorAll('div[data-section]')
if (!activeId) setActiveId('get-involved')
const handleScroll = () => {

View File

@@ -1,4 +1,4 @@
import NextLink from "next/link"
import NextLink from 'next/link'
interface Props {
path: string[]
@@ -17,8 +17,8 @@ const Breadcrumbs = ({ path }: Props) => {
)
}
return (
<NextLink key={index} href={`/${item}`} className={`capitalize`}>
{item === "projects" ? "All Projects" : item}
<NextLink key={index} href={`/${item}`} className={'capitalize'}>
{item === 'projects' ? 'All Projects' : item}
<span className="mx-2">/</span>
</NextLink>
)

View File

@@ -128,7 +128,7 @@ export default function ProjectFiltersBar({ lang }: LangProps['params']) {
projects,
})
setSearchQuery('') // clear input
router.push(`/projects`)
router.push('/projects')
}
useDebounce(

View File

@@ -62,7 +62,7 @@ export const ProjectList = ({ lang }: LangProps['params']) => {
useEffect(() => {
setIsMounted(true)
if (typeof window !== 'undefined') {
sectionsRef.current = document.querySelectorAll(`div[data-section]`)
sectionsRef.current = document.querySelectorAll('div[data-section]')
const handleScroll = () => {
if (isManualScroll) return

View File

@@ -103,7 +103,8 @@ export const events = [
],
event: {
title: 'Introduction to Cryptography, New and Old',
description: `Data can be useful, and also dangerous. This talk will raise questions and concerns that data enthusiasts might want to consider.`,
description:
'Data can be useful, and also dangerous. This talk will raise questions and concerns that data enthusiasts might want to consider.',
url: 'https://app.devcon.org/schedule/R3JC8U',
date: 'Tuesday, Nov 12',
time: '4:30 PM - 4:55 PM',

View File

@@ -112,5 +112,5 @@ export const projects: ProjectInterface[] = [
postQuantumCryptography,
machinaIo,
plasmaFold,
vOPRF
vOPRF,
]

View File

@@ -3,46 +3,47 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.",
},
}
export const anonKlub: ProjectInterface = {
id: "anon-klub",
id: 'anon-klub',
category: ProjectCategory.APPLICATION,
section: "archived",
section: 'archived',
content,
projectStatus: ProjectStatus.INACTIVE,
image: "anonklub.svg",
name: "AnonKlub",
image: 'anonklub.svg',
name: 'AnonKlub',
links: {
github: "https://github.com/anonklub",
website: "https://anonklub.github.io",
github: 'https://github.com/anonklub',
website: 'https://anonklub.github.io',
},
extraLinks: {
learn: [
{
label:
"Sunsetting Blog Post: Reflections on Our Journey in Privacy-Preserving Solutions",
url: "https://mirror.xyz/privacy-scaling-explorations.eth/7VTKFVR4PM75WtNnBzuQSBZW-UYoJOsnzBBQmB9MWbY",
'Sunsetting Blog Post: Reflections on Our Journey in Privacy-Preserving Solutions',
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/7VTKFVR4PM75WtNnBzuQSBZW-UYoJOsnzBBQmB9MWbY',
},
],
},
tags: {
keywords: [
"Transaction privacy",
"Anonymity/privacy",
"Social",
"Identity",
"Voting/governance",
'Transaction privacy',
'Anonymity/privacy',
'Social',
'Identity',
'Voting/governance',
],
themes: ["build", "play"],
types: ["Infrastructure/protocol", "Prototype", "Proof of concept"],
builtWith: ["circom", "snarkjs", "halo2"],
themes: ['build', 'play'],
types: ['Infrastructure/protocol', 'Prototype', 'Proof of concept'],
builtWith: ['circom', 'snarkjs', 'halo2'],
},
}

View File

@@ -3,32 +3,33 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.",
},
}
export const channel4: ProjectInterface = {
id: "channel-4",
id: 'channel-4',
content,
category: ProjectCategory.APPLICATION,
section: "archived",
section: 'archived',
projectStatus: ProjectStatus.INACTIVE,
image: "channel4.svg",
name: "Channel 4",
image: 'channel4.svg',
name: 'Channel 4',
links: {
github: "https://github.com/State-Channel-4",
website: "https://channel4.wtf/",
discord: "https://discord.gg/76UrYgVyEx",
github: 'https://github.com/State-Channel-4',
website: 'https://channel4.wtf/',
discord: 'https://discord.gg/76UrYgVyEx',
},
tags: {
keywords: ["Scaling"],
themes: ["play"],
types: ["Application"],
builtWith: ["state channel", "smart contract"],
keywords: ['Scaling'],
themes: ['play'],
types: ['Application'],
builtWith: ['state channel', 'smart contract'],
},
}

View File

@@ -3,38 +3,39 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "A modern ZKP language and compiler for plonkish and AIR arithmetizations",
description: `Chiquito is a high-level structured language for implementing zero knowledge proof circuits, currently being implemented in the DSL Working Group of PSE. It is a state machine zk-language that provides better syntax and abstraction. It can automatically compiler arbitrary boolean expressions for state machine transitions. It can optimise the resulting arithmetization. Chiquito has a Halo2 backend, which is a low level zkDSL that writes circuits using the PLONKish arithmetization and is working on supporting additional backends. Chiquito circuits can be written using both Python and Rust. `,
tldr: 'A modern ZKP language and compiler for plonkish and AIR arithmetizations',
description:
'Chiquito is a high-level structured language for implementing zero knowledge proof circuits, currently being implemented in the DSL Working Group of PSE. It is a state machine zk-language that provides better syntax and abstraction. It can automatically compiler arbitrary boolean expressions for state machine transitions. It can optimise the resulting arithmetization. Chiquito has a Halo2 backend, which is a low level zkDSL that writes circuits using the PLONKish arithmetization and is working on supporting additional backends. Chiquito circuits can be written using both Python and Rust. ',
},
}
export const chiquito: ProjectInterface = {
id: "chiquito",
id: 'chiquito',
category: ProjectCategory.DEVTOOLS,
projectStatus: ProjectStatus.INACTIVE,
section: "pse",
section: 'pse',
content,
image: "",
name: "chiquito",
image: '',
name: 'chiquito',
links: {
github: "https://github.com/privacy-scaling-explorations/chiquito",
website: "https://docs.pecadorplonkish.xyz/",
twitter: "",
github: 'https://github.com/privacy-scaling-explorations/chiquito',
website: 'https://docs.pecadorplonkish.xyz/',
twitter: '',
},
tags: {
themes: ["build"],
themes: ['build'],
types: [
"Legos/dev tools",
"Lego sets/toolkits",
"Proof of concept",
"language",
"dsl",
'Legos/dev tools',
'Lego sets/toolkits',
'Proof of concept',
'language',
'dsl',
],
keywords: ["DSL", "language", "rust", "python", "halo2"],
builtWith: ["halo2", "rust"],
keywords: ['DSL', 'language', 'rust', 'python', 'halo2'],
builtWith: ['halo2', 'rust'],
},
}

View File

@@ -3,45 +3,46 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "Integrating Nova into the EVM involves wrapping Liam Eagen's theoretical ECIP argument in Halo 2",
description: `With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.`,
description:
"With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.",
},
}
export const Coco: ProjectInterface = {
id: "coco",
image: "coco.svg",
id: 'coco',
image: 'coco.svg',
category: ProjectCategory.APPLICATION,
section: "archived",
name: "COCO",
section: 'archived',
name: 'COCO',
projectStatus: ProjectStatus.INACTIVE,
content,
tags: {
keywords: ["prediction market", "scaling"],
keywords: ['prediction market', 'scaling'],
},
extraLinks: {
learn: [
{
label: "Meet COCO!",
url: "https://mirror.xyz/privacy-scaling-explorations.eth/tEf7iYa8l7ECZwN2T57yyiws7h9Uchip30CQvx-JBBQ",
label: 'Meet COCO!',
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/tEf7iYa8l7ECZwN2T57yyiws7h9Uchip30CQvx-JBBQ',
},
],
buildWith: [
{
label: "Smart contracts",
url: "https://github.com/Janmajayamall/coco-contracts",
label: 'Smart contracts',
url: 'https://github.com/Janmajayamall/coco-contracts',
},
{
label: "Frontend",
url: "https://github.com/Janmajayamall/coco-frontend",
label: 'Frontend',
url: 'https://github.com/Janmajayamall/coco-frontend',
},
{
label: "Frontend (General)",
url: "https://github.com/Janmajayamall/coco-frontend-general",
label: 'Frontend (General)',
url: 'https://github.com/Janmajayamall/coco-frontend-general',
},
],
},

View File

@@ -3,30 +3,31 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.',
},
}
export const cryptkeeper: ProjectInterface = {
id: "cryptkeeper",
id: 'cryptkeeper',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.APPLICATION,
section: "archived",
section: 'archived',
content,
image: "cryptkeeper.webp",
name: "CryptKeeper",
image: 'cryptkeeper.webp',
name: 'CryptKeeper',
links: {
github: "https://github.com/CryptKeeperZK",
github: 'https://github.com/CryptKeeperZK',
},
tags: {
keywords: ["Anonymity/privacy", "Social", "Identity"],
themes: ["build"],
types: ["Application", "Infrastructure/protocol", "Lego sets/toolkits"],
builtWith: ["semaphore", "rln"],
keywords: ['Anonymity/privacy', 'Social', 'Identity'],
themes: ['build'],
types: ['Application', 'Infrastructure/protocol', 'Lego sets/toolkits'],
builtWith: ['semaphore', 'rln'],
},
}

View File

@@ -1,28 +1,34 @@
import { ProjectCategory, ProjectContent, ProjectInterface, ProjectStatus } from "@/lib/types"
import {
ProjectCategory,
ProjectContent,
ProjectInterface,
ProjectStatus,
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "An anonymous, federated, chat application using ZK.",
description: `An anonymous, federated, chat application that uses Rate-Limiting Nullifier for spam prevention.`,
tldr: 'An anonymous, federated, chat application using ZK.',
description:
'An anonymous, federated, chat application that uses Rate-Limiting Nullifier for spam prevention.',
},
}
export const discreetly: ProjectInterface = {
id: "discreetly",
id: 'discreetly',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.APPLICATION,
section: "pse",
section: 'pse',
content,
image: "discreetly.svg",
name: "Discreetly",
image: 'discreetly.svg',
name: 'Discreetly',
links: {
github: "https://github.com/Discreetly",
website: "https://app.discreetly.chat/",
github: 'https://github.com/Discreetly',
website: 'https://app.discreetly.chat/',
},
tags: {
keywords: ["Anonymity/privacy", "Social"],
themes: ["play"],
types: ["Legos/dev tools", "Proof of concept", "Application"],
builtWith: ["rln", "semaphore"],
keywords: ['Anonymity/privacy', 'Social'],
themes: ['play'],
types: ['Legos/dev tools', 'Proof of concept', 'Application'],
builtWith: ['rln', 'semaphore'],
},
}

View File

@@ -3,31 +3,32 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.",
},
}
export const dslWorkingGroup: ProjectInterface = {
id: "dsl-working-group",
id: 'dsl-working-group',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.RESEARCH,
section: "pse",
section: 'pse',
content,
image: "",
imageAlt: "DSL Working Group",
name: "DSL Working Group",
image: '',
imageAlt: 'DSL Working Group',
name: 'DSL Working Group',
links: {
github: "https://github.com/privacy-scaling-explorations/chiquito/",
github: 'https://github.com/privacy-scaling-explorations/chiquito/',
},
tags: {
types: ["Legos/dev tools", "Proof of concept", "Developer tooling"],
types: ['Legos/dev tools', 'Proof of concept', 'Developer tooling'],
keywords: [],
themes: ["research"],
themes: ['research'],
builtWith: [],
},
}

View File

@@ -3,37 +3,38 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "Integrating Nova into the EVM involves wrapping Liam Eagen's theoretical ECIP argument in Halo 2",
description: `Liam Eagen has developed a ZK proof for Elliptic Curve Inner Products (ECIPs) to overcome a significant bottle neck in recursive proof composition over elliptic curve cycles. The process of integrating Nova into the EVM requires an efficient method or "argument" for handling large elliptic Multi-Scalar Multiplications (MSMs). The final step in this integration process involves wrapping this argument Halo 2.`,
description:
'Liam Eagen has developed a ZK proof for Elliptic Curve Inner Products (ECIPs) to overcome a significant bottle neck in recursive proof composition over elliptic curve cycles. The process of integrating Nova into the EVM requires an efficient method or "argument" for handling large elliptic Multi-Scalar Multiplications (MSMs). The final step in this integration process involves wrapping this argument Halo 2.',
},
}
export const ECIPHalo2: ProjectInterface = {
id: "ecip-halo2",
image: "",
id: 'ecip-halo2',
image: '',
category: ProjectCategory.DEVTOOLS,
projectStatus: ProjectStatus.INACTIVE,
section: "pse",
section: 'pse',
content,
imageAlt: "ECIP + Halo 2",
name: "ECIP (Elliptic Curve Inner Products) Halo 2 Implementation",
imageAlt: 'ECIP + Halo 2',
name: 'ECIP (Elliptic Curve Inner Products) Halo 2 Implementation',
links: {
github: "https://github.com/levs57/sage-circuits/",
github: 'https://github.com/levs57/sage-circuits/',
},
extraLinks: {
learn: [
{
label: "Designing a plonk circuit for Liam Eagen's protocol",
url: "https://hackmd.io/@levs57/r1n77YvP3",
url: 'https://hackmd.io/@levs57/r1n77YvP3',
},
{
label:
"ZKPs of Elliptic Curve Inner Products from Principal Divisors and Weil Reciprocity",
url: "https://eprint.iacr.org/2022/596",
'ZKPs of Elliptic Curve Inner Products from Principal Divisors and Weil Reciprocity',
url: 'https://eprint.iacr.org/2022/596',
},
],
},

View File

@@ -1,27 +1,33 @@
import { ProjectCategory, ProjectContent, ProjectInterface, ProjectStatus } from "@/lib/types"
import {
ProjectCategory,
ProjectContent,
ProjectInterface,
ProjectStatus,
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.',
},
}
export const eigenTrust: ProjectInterface = {
id: "eigen-trust",
id: 'eigen-trust',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.RESEARCH,
section: "archived",
section: 'archived',
content,
image: "",
name: "EigenTrust",
image: '',
name: 'EigenTrust',
links: {
github: "https://github.com/eigen-trust/protocol",
github: 'https://github.com/eigen-trust/protocol',
},
tags: {
keywords: ["Reputation", "Identity"],
themes: ["build"],
types: ["Infrastructure/protocol"],
builtWith: ["ethereum attestation service", "halo2", "ethers.rs"],
keywords: ['Reputation', 'Identity'],
themes: ['build'],
types: ['Infrastructure/protocol'],
builtWith: ['ethereum attestation service', 'halo2', 'ethers.rs'],
},
}

View File

@@ -3,36 +3,37 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "An identity bridge from web2 to web3",
description: `Interep aims to provide an identity solution for Ethereum users by bridging from an established digital identity source such as Reddit, Twitter, and Github. The product provides an identity layer in the application stack and uses the Semaphore framework to ensure privacy. Interep allows users to establish sybil-resistant decentralized identities on web3 without starting from scratch. By leveraging zero-knowledge proofs, Interep ensures only essential information is disclosed.`,
tldr: 'An identity bridge from web2 to web3',
description:
'Interep aims to provide an identity solution for Ethereum users by bridging from an established digital identity source such as Reddit, Twitter, and Github. The product provides an identity layer in the application stack and uses the Semaphore framework to ensure privacy. Interep allows users to establish sybil-resistant decentralized identities on web3 without starting from scratch. By leveraging zero-knowledge proofs, Interep ensures only essential information is disclosed.',
},
}
export const Interep: ProjectInterface = {
id: "interep",
image: "interep.svg",
name: "Interep",
id: 'interep',
image: 'interep.svg',
name: 'Interep',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.DEVTOOLS,
section: "archived",
section: 'archived',
content,
tags: {
keywords: ["social", "reputation"],
keywords: ['social', 'reputation'],
},
links: {
website: "https://docs.interep.link/",
github: "https://github.com/interep-project",
youtube: "https://www.youtube.com/watch?v=dYKgHkb_aqk",
website: 'https://docs.interep.link/',
github: 'https://github.com/interep-project',
youtube: 'https://www.youtube.com/watch?v=dYKgHkb_aqk',
},
extraLinks: {
learn: [
{
label: "Interep: An on-ramp for reputation",
url: "https://mirror.xyz/privacy-scaling-explorations.eth/w7zCHj0xoxIfhoJIxI-ZeYIXwvNatP1t4w0TsqSIBe4",
label: 'Interep: An on-ramp for reputation',
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/w7zCHj0xoxIfhoJIxI-ZeYIXwvNatP1t4w0TsqSIBe4',
},
],
},

View File

@@ -3,37 +3,38 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "OpenPassport lets you check a passport is valid in zero-knowledge",
description: `OpenPassport is developing tools to let users generate proofs of humanity, nationality and age using their government-issued passport. It unlocks uses cases in proof of unique identity, sybil resistance and selective disclosure of private data.`,
tldr: 'OpenPassport lets you check a passport is valid in zero-knowledge',
description:
'OpenPassport is developing tools to let users generate proofs of humanity, nationality and age using their government-issued passport. It unlocks uses cases in proof of unique identity, sybil resistance and selective disclosure of private data.',
},
}
export const OpenPassport: ProjectInterface = {
id: "openpassport",
id: 'openpassport',
category: ProjectCategory.APPLICATION,
projectStatus: ProjectStatus.ACTIVE,
section: "grant",
section: 'grant',
content,
image: "openpassport.jpg",
name: "OpenPassport",
image: 'openpassport.jpg',
name: 'OpenPassport',
links: {
github: "https://github.com/zk-passport/openpassport",
website: "https://openpassport.app",
twitter: "https://x.com/openpassportapp",
telegram: "https://t.me/openpassport",
github: 'https://github.com/zk-passport/openpassport',
website: 'https://openpassport.app',
twitter: 'https://x.com/openpassportapp',
telegram: 'https://t.me/openpassport',
},
tags: {
keywords: [
"Passports",
"Identity",
"Anonymity/privacy",
"Signatures",
"Social",
'Passports',
'Identity',
'Anonymity/privacy',
'Signatures',
'Social',
],
builtWith: ["circom", "snarkjs"],
builtWith: ['circom', 'snarkjs'],
},
}

View File

@@ -8,7 +8,8 @@ import {
const content: ProjectContent = {
en: {
tldr: 'Smart contract wallet enabling transactions through familiar flows like touchID, faceID, WebAuth, and Passkeys.',
description: `P256 is an ERC-4337 smart contract wallet that leverages zk-SNARKs for WebAuthn and P-256 signature verification. It aims to simplify Ethereum transactions by incorporating familiar authentication methods like touchID and faceID. The project addresses the challenges of seed phrase management and leverages the biometric capabilities of billions of cellphones to create a more user-friendly crypto experience. Technically, it is an end-to-end ERC-4337 smart contract wallet that verifies ZK proofs of Passkey signatures using the Halo2 proving system.`,
description:
'P256 is an ERC-4337 smart contract wallet that leverages zk-SNARKs for WebAuthn and P-256 signature verification. It aims to simplify Ethereum transactions by incorporating familiar authentication methods like touchID and faceID. The project addresses the challenges of seed phrase management and leverages the biometric capabilities of billions of cellphones to create a more user-friendly crypto experience. Technically, it is an end-to-end ERC-4337 smart contract wallet that verifies ZK proofs of Passkey signatures using the Halo2 proving system.',
},
}

View File

@@ -3,36 +3,37 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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",
id: 'pse-security',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.RESEARCH,
section: "pse",
section: 'pse',
content,
image: "pse-security.png",
name: "PSE Security",
image: 'pse-security.png',
name: 'PSE Security',
links: {
github: "https://github.com/privacy-scaling-explorations/security",
github: 'https://github.com/privacy-scaling-explorations/security',
},
tags: {
keywords: [
"Anonymity/privacy",
"Education",
"Key management",
"Scaling",
"Security",
'Anonymity/privacy',
'Education',
'Key management',
'Scaling',
'Security',
],
themes: ["build"],
types: ["Legos/dev tools"],
builtWith: ["slither", "ecne", "circomspect", "echidna"],
themes: ['build'],
types: ['Legos/dev tools'],
builtWith: ['slither', 'ecne', 'circomspect', 'echidna'],
},
}

View File

@@ -3,37 +3,38 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.',
},
}
export const summa: ProjectInterface = {
id: "summa",
id: 'summa',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.DEVTOOLS,
section: "pse",
section: 'pse',
content,
image: "summa.svg",
name: "Summa",
image: 'summa.svg',
name: 'Summa',
links: {
github: "https://github.com/summa-dev",
github: 'https://github.com/summa-dev',
},
tags: {
keywords: ["Anonymity/privacy", "Computational Integrity"],
themes: ["build", "play"],
types: ["Infrastructure/protocol", "Application"],
builtWith: ["halo2"],
keywords: ['Anonymity/privacy', 'Computational Integrity'],
themes: ['build', 'play'],
types: ['Infrastructure/protocol', 'Application'],
builtWith: ['halo2'],
},
extraLinks: {
learn: [
{
label: "Documentation",
url: "https://summa.gitbook.io/summa",
label: 'Documentation',
url: 'https://summa.gitbook.io/summa',
},
],
},

View File

@@ -3,32 +3,33 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "From Individual Actions to Collective Impact, Every Voice Makes a Difference",
description: `VoiceDeck isn't just a platform; it's a movement. By enabling citizens to fund journalism that makes a real difference, we're crafting a narrative where every contribution paints a stroke on the canvas of our collective future. Join us to foster a legacy where journalism is powered by the very communities it serves.`,
tldr: 'From Individual Actions to Collective Impact, Every Voice Makes a Difference',
description:
"VoiceDeck isn't just a platform; it's a movement. By enabling citizens to fund journalism that makes a real difference, we're crafting a narrative where every contribution paints a stroke on the canvas of our collective future. Join us to foster a legacy where journalism is powered by the very communities it serves.",
},
}
export const voicedeck: ProjectInterface = {
id: "voice-deck",
id: 'voice-deck',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.APPLICATION,
section: "collaboration",
section: 'collaboration',
content,
image: "voiceDeck.svg",
name: "VoiceDeck",
image: 'voiceDeck.svg',
name: 'VoiceDeck',
links: {
github: "https://github.com/VoiceDeck",
website: "https://voicedeck.org/",
twitter: "https://twitter.com/VoiceDeckDAO",
github: 'https://github.com/VoiceDeck',
website: 'https://voicedeck.org/',
twitter: 'https://twitter.com/VoiceDeckDAO',
},
tags: {
keywords: ["Public goods"],
themes: ["play"],
types: ["Application"],
builtWith: ["anonAadhaar", "Hypercerts"],
keywords: ['Public goods'],
themes: ['play'],
types: ['Application'],
builtWith: ['anonAadhaar', 'Hypercerts'],
},
}

View File

@@ -3,32 +3,33 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "ZK Email is a library that allows for anonymous verification of email signatures while masking specific data.",
description: `ZK Email is a library for anonymous verification of emails while selectively revealing specific data. It allows a prover to demonstrate receipt of an email from a specific sender or domain or the presence of certain text in the subject or body. This can be used for Web 2.0 interoperability, email recovery solutions of smart accounts, anonymous KYC, or to create interesting applications based on anonymity sets.`,
tldr: 'ZK Email is a library that allows for anonymous verification of email signatures while masking specific data.',
description:
'ZK Email is a library for anonymous verification of emails while selectively revealing specific data. It allows a prover to demonstrate receipt of an email from a specific sender or domain or the presence of certain text in the subject or body. This can be used for Web 2.0 interoperability, email recovery solutions of smart accounts, anonymous KYC, or to create interesting applications based on anonymity sets.',
},
}
export const zkemail: ProjectInterface = {
id: "zk-email",
id: 'zk-email',
category: ProjectCategory.APPLICATION,
projectStatus: ProjectStatus.ACTIVE,
section: "collaboration",
section: 'collaboration',
content,
image: "zk-email.jpeg",
name: "zk-email",
image: 'zk-email.jpeg',
name: 'zk-email',
links: {
github: "https://github.com/zkemail",
twitter: "https://twitter.com/zkemail",
website: "https://www.prove.email",
github: 'https://github.com/zkemail',
twitter: 'https://twitter.com/zkemail',
website: 'https://www.prove.email',
},
tags: {
themes: [],
types: [],
keywords: ["email", "identity", "anonymity/privacy", "DKIM", "signatures"],
builtWith: ["circom", "snarkjs", "halo2"],
keywords: ['email', 'identity', 'anonymity/privacy', 'DKIM', 'signatures'],
builtWith: ['circom', 'snarkjs', 'halo2'],
},
}

View File

@@ -3,27 +3,28 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "Fostering SSI with zero-knowledge and privacy-driven solutions.",
description: `ZK-ID is a dedicated team committed to advancing self-sovereign identity (SSI) technologies and driving privacy-focused solutions in the digital identity space, utilizing the PSE team's expertise in zero-knowledge technologies`,
tldr: 'Fostering SSI with zero-knowledge and privacy-driven solutions.',
description:
"ZK-ID is a dedicated team committed to advancing self-sovereign identity (SSI) technologies and driving privacy-focused solutions in the digital identity space, utilizing the PSE team's expertise in zero-knowledge technologies",
},
}
export const zkID: ProjectInterface = {
id: "zk-id",
id: 'zk-id',
projectStatus: ProjectStatus.ACTIVE,
category: ProjectCategory.RESEARCH,
section: "pse",
section: 'pse',
content,
image: "",
imageAlt: "ZK Identity Explorations",
name: "ZK-ID",
image: '',
imageAlt: 'ZK Identity Explorations',
name: 'ZK-ID',
tags: {
keywords: ["Identity", "Credentials", "Standards", "SSI"],
themes: ["research"],
types: ["Legos/dev tools", "Lego sets/toolkits"],
keywords: ['Identity', 'Credentials', 'Standards', 'SSI'],
themes: ['research'],
types: ['Legos/dev tools', 'Lego sets/toolkits'],
},
}

View File

@@ -3,30 +3,31 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.",
},
}
export const zkevmCommunity: ProjectInterface = {
id: "zkevm-community",
id: 'zkevm-community',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.DEVTOOLS,
section: "pse",
section: 'pse',
content,
image: "zkevm.jpg",
name: "zkEVM Community Edition",
image: 'zkevm.jpg',
name: 'zkEVM Community Edition',
links: {
github: "https://github.com/privacy-scaling-explorations/zkevm-circuits",
github: 'https://github.com/privacy-scaling-explorations/zkevm-circuits',
},
tags: {
keywords: ["Scaling"],
themes: ["build"],
types: ["Infrastructure/protocol", "Lego sets/toolkits"],
builtWith: ["halo2", "rust", "geth"],
keywords: ['Scaling'],
themes: ['build'],
types: ['Infrastructure/protocol', 'Lego sets/toolkits'],
builtWith: ['halo2', 'rust', 'geth'],
},
}

View File

@@ -8,7 +8,8 @@ import {
const content: ProjectContent = {
en: {
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.`,
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.',
},
}

View File

@@ -3,41 +3,42 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
tldr: "Optimistic Rollup with zk-SNARKs for private Ethereum transactions.",
description: `ZKOPRU is one of the initial projects of EF's PSE team. It is a Layer 2 scaling solution for Ethereum, emphasizing private transactions through zk-SNARKs and optimistic rollups. It provides an economical Ethereum privacy wallet, enabling users to transact with ETH, ERC-20s, and NFTs anonymously`,
tldr: 'Optimistic Rollup with zk-SNARKs for private Ethereum transactions.',
description:
"ZKOPRU is one of the initial projects of EF's PSE team. It is a Layer 2 scaling solution for Ethereum, emphasizing private transactions through zk-SNARKs and optimistic rollups. It provides an economical Ethereum privacy wallet, enabling users to transact with ETH, ERC-20s, and NFTs anonymously",
},
}
export const Zkopru: ProjectInterface = {
id: "zkopru",
image: "zkopru.svg",
name: "ZKOPRU",
id: 'zkopru',
image: 'zkopru.svg',
name: 'ZKOPRU',
projectStatus: ProjectStatus.INACTIVE,
category: ProjectCategory.DEVTOOLS,
section: "archived",
section: 'archived',
content,
links: {
website: "https://zkopru.network/",
github: "https://github.com/zkopru-network",
youtube: "https://www.youtube.com/watch?v=GvRsJxu9X6w",
website: 'https://zkopru.network/',
github: 'https://github.com/zkopru-network',
youtube: 'https://www.youtube.com/watch?v=GvRsJxu9X6w',
},
extraLinks: {
learn: [
{
label: "ZKOPRU: Wat, Y & Wen",
url: "https://mirror.xyz/privacy-scaling-explorations.eth/kfuuBPtGtDjl_J2wBq-jrtyURGLmQpUhZfDTuZChEy8",
label: 'ZKOPRU: Wat, Y & Wen',
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/kfuuBPtGtDjl_J2wBq-jrtyURGLmQpUhZfDTuZChEy8',
},
{
label: "ZKOPRU on Testnet",
url: "https://mirror.xyz/privacy-scaling-explorations.eth/EB0KcMY0k9ucN8iQSBeOYksoupDYRBQ4ZffhRt477FE",
label: 'ZKOPRU on Testnet',
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/EB0KcMY0k9ucN8iQSBeOYksoupDYRBQ4ZffhRt477FE',
},
],
},
tags: {
keywords: ["anonymity/privacy", "private transactions"],
keywords: ['anonymity/privacy', 'private transactions'],
},
}

View File

@@ -3,32 +3,33 @@ import {
ProjectContent,
ProjectInterface,
ProjectStatus,
} from "@/lib/types"
} from '@/lib/types'
const content: ProjectContent = {
en: {
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.`,
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.',
},
}
export const zkp2p: ProjectInterface = {
id: "zkp2p",
id: 'zkp2p',
projectStatus: ProjectStatus.ACTIVE,
category: ProjectCategory.APPLICATION,
section: "grant",
section: 'grant',
content,
image: "zkp2p.png",
name: "ZKP2P",
image: 'zkp2p.png',
name: 'ZKP2P',
links: {
github: "https://github.com/zkp2p",
website: "https://zkp2p.xyz/",
twitter: "https://twitter.com/zkp2p",
github: 'https://github.com/zkp2p',
website: 'https://zkp2p.xyz/',
twitter: 'https://twitter.com/zkp2p',
},
tags: {
keywords: ["Private communications"],
themes: ["play"],
types: ["Proof of concept", "Application"],
builtWith: ["circom", "halo2"],
keywords: ['Private communications'],
themes: ['play'],
types: ['Proof of concept', 'Application'],
builtWith: ['circom', 'halo2'],
},
}

View File

@@ -1,23 +1,56 @@
import pluginJs from '@eslint/js'
import pluginReact from 'eslint-plugin-react'
import globals from 'globals'
import tseslint from 'typescript-eslint'
import pluginJs from "@eslint/js"
import pluginReact from "eslint-plugin-react"
import tailwindcssPlugin from "eslint-plugin-tailwindcss"
import globals from "globals"
import tseslint from "typescript-eslint"
import { nextEslintPlugin } from "./next.eslint.config.mjs"
/** @type {import('eslint').Linter.Config[]} */
export default [
{ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] },
{ files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"] },
{ ignores: ["dist/*", ".cache", "public", "node_modules", "*.esm.js", ".next/*"] },
{ languageOptions: { globals: globals.browser } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
pluginReact.configs.flat.recommended,
// Overrides of recommended rules
{
plugins: {
react: pluginReact,
},
settings: {
react: {
version: "detect",
},
},
rules: {
...pluginReact.configs.flat.recommended.rules,
"react/react-in-jsx-scope": "off",
"react/jsx-key": "off",
},
},
nextEslintPlugin,
{
plugins: {
tailwindcss: tailwindcssPlugin,
},
settings: {
tailwindcss: {
callees: ["cn"],
config: "tailwind.config.js"
},
next: {
rootDir: ["./"]
}
},
rules: {
"tailwindcss/no-custom-classname": "off",
},
},
{
rules: {
'react/react-in-jsx-scope': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/no-unused-vars': 'off',
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/ban-types": "off",
"@typescript-eslint/no-unused-vars": "off",
"quotes": ["error", "double"],
},
},
]

View File

@@ -1,13 +1,13 @@
import nextMdx from "@next/mdx";
import path from "path";
import { fileURLToPath } from 'url';
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const withMDX = nextMdx({
webpack: (config, { isServer }) => {
if (isServer) {
config.resolve.alias['zlib-sync'] = path.resolve(__dirname, 'lib/dummy-zlib-sync.js');
config.resolve.alias["zlib-sync"] = path.resolve(__dirname, "lib/dummy-zlib-sync.js");
config.externals.push("erlpack");
} else {
config.externals.push("discord.js", "@discordjs/rest");

19
next.eslint.config.mjs Normal file
View File

@@ -0,0 +1,19 @@
import { resolve } from "path"
export const nextEslintPlugin = {
plugins: {
"@next/next": {
files: ["app/**/*", "components/**/*", "layouts/**/*"],
settings: {
next: {
rootDir: resolve("./"),
},
},
rules: {
"@next/next/no-html-link-for-pages": "off",
"@next/next/no-img-element": "warn",
"@next/next/no-sync-scripts": "error",
},
},
},
}

View File

@@ -9,8 +9,8 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"lint:fix": "next lint --fix",
"lint": "eslint .",
"lint:fix": "eslint --fix .",
"preview": "next build && next start",
"typecheck": "tsc --noEmit",
"format:write": "prettier --write \"**/*.{ts,tsx,mdx}\" --cache",
@@ -58,6 +58,7 @@
"devDependencies": {
"@eslint/js": "^9.19.0",
"@ianvs/prettier-plugin-sort-imports": "^3.7.2",
"@next/eslint-plugin-next": "^15.2.2",
"@types/node": "^17.0.45",
"@types/react": "^18.2.7",
"@types/react-dom": "^18.2.4",
@@ -65,10 +66,10 @@
"@typescript-eslint/parser": "^5.59.7",
"autoprefixer": "^10.4.14",
"eslint": "^9.19.0",
"eslint-config-next": "13.0.0",
"eslint-config-next": "^15.2.2",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-react": "^7.37.4",
"eslint-plugin-tailwindcss": "^3.12.0",
"eslint-plugin-tailwindcss": "^3.18.0",
"globals": "^15.14.0",
"husky": "^9.1.7",
"lint-staged": "^15.4.3",
@@ -89,4 +90,4 @@
},
"packageManager": "yarn@4.7.0",
"engineStrict": true
}
}

View File

@@ -93,8 +93,8 @@ module.exports = {
},
},
borderRadius: {
lg: `var(--radius)`,
md: `calc(var(--radius) - 2px)`,
lg: 'var(--radius)',
md: 'calc(var(--radius) - 2px)',
sm: 'calc(var(--radius) - 4px)',
},
fontFamily: {

281
yarn.lock
View File

@@ -740,12 +740,12 @@ __metadata:
languageName: node
linkType: hard
"@next/eslint-plugin-next@npm:13.0.0":
version: 13.0.0
resolution: "@next/eslint-plugin-next@npm:13.0.0"
"@next/eslint-plugin-next@npm:15.2.2, @next/eslint-plugin-next@npm:^15.2.2":
version: 15.2.2
resolution: "@next/eslint-plugin-next@npm:15.2.2"
dependencies:
glob: "npm:7.1.7"
checksum: 10/090435e8bb8019eee32f84e689646d1a36a7ce5efb6ca98691536a491ed4848a5bbbc23aee882978dfd05dda1ba73b330be6634b155510d1ef4a0d6e215a0c66
fast-glob: "npm:3.3.1"
checksum: 10/4d6bffbfab275cdf291b5eaa2b4b42591fc1568f35874aed409eb887b1291b75ebbc0fd7069e1035244e1a70ac75ebbe570ac6cdb46e8ce29c7ec7d55c616177
languageName: node
linkType: hard
@@ -856,6 +856,13 @@ __metadata:
languageName: node
linkType: hard
"@nolyfill/is-core-module@npm:1.0.39":
version: 1.0.39
resolution: "@nolyfill/is-core-module@npm:1.0.39"
checksum: 10/0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815
languageName: node
linkType: hard
"@npmcli/agent@npm:^3.0.0":
version: 3.0.0
resolution: "@npmcli/agent@npm:3.0.0"
@@ -1458,7 +1465,7 @@ __metadata:
languageName: node
linkType: hard
"@rushstack/eslint-patch@npm:^1.1.3":
"@rushstack/eslint-patch@npm:^1.10.3":
version: 1.11.0
resolution: "@rushstack/eslint-patch@npm:1.11.0"
checksum: 10/9bb3eb4a48a9a55e31d302b8b99f405e0f3e436fc3cda8c869fdd3fefd3ac398f5a353cceaa6c8cc5e5baf03ccd88d7965fbd25eb111f1f334415f95fa0f996d
@@ -1668,7 +1675,7 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:8.26.1":
"@typescript-eslint/eslint-plugin@npm:8.26.1, @typescript-eslint/eslint-plugin@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0":
version: 8.26.1
resolution: "@typescript-eslint/eslint-plugin@npm:8.26.1"
dependencies:
@@ -1689,7 +1696,7 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:8.26.1":
"@typescript-eslint/parser@npm:8.26.1, @typescript-eslint/parser@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0":
version: 8.26.1
resolution: "@typescript-eslint/parser@npm:8.26.1"
dependencies:
@@ -1705,7 +1712,7 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^5.21.0, @typescript-eslint/parser@npm:^5.59.7":
"@typescript-eslint/parser@npm:^5.59.7":
version: 5.62.0
resolution: "@typescript-eslint/parser@npm:5.62.0"
dependencies:
@@ -2628,7 +2635,7 @@ __metadata:
languageName: node
linkType: hard
"debug@npm:4, debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0":
"debug@npm:4, debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:^4.4.0":
version: 4.4.0
resolution: "debug@npm:4.4.0"
dependencies:
@@ -2873,6 +2880,16 @@ __metadata:
languageName: node
linkType: hard
"enhanced-resolve@npm:^5.15.0":
version: 5.18.1
resolution: "enhanced-resolve@npm:5.18.1"
dependencies:
graceful-fs: "npm:^4.2.4"
tapable: "npm:^2.2.0"
checksum: 10/50e81c7fe2239fba5670ebce78a34709906ed3a79274aa416434f7307b252e0b7824d76a7dd403eca795571dc6afd9a44183fc45a68475e8f2fdfbae6e92fcc3
languageName: node
linkType: hard
"enquire.js@npm:^2.1.6":
version: 2.1.6
resolution: "enquire.js@npm:2.1.6"
@@ -3076,26 +3093,27 @@ __metadata:
languageName: node
linkType: hard
"eslint-config-next@npm:13.0.0":
version: 13.0.0
resolution: "eslint-config-next@npm:13.0.0"
"eslint-config-next@npm:^15.2.2":
version: 15.2.2
resolution: "eslint-config-next@npm:15.2.2"
dependencies:
"@next/eslint-plugin-next": "npm:13.0.0"
"@rushstack/eslint-patch": "npm:^1.1.3"
"@typescript-eslint/parser": "npm:^5.21.0"
"@next/eslint-plugin-next": "npm:15.2.2"
"@rushstack/eslint-patch": "npm:^1.10.3"
"@typescript-eslint/eslint-plugin": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0"
"@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0"
eslint-import-resolver-node: "npm:^0.3.6"
eslint-import-resolver-typescript: "npm:^2.7.1"
eslint-plugin-import: "npm:^2.26.0"
eslint-plugin-jsx-a11y: "npm:^6.5.1"
eslint-plugin-react: "npm:^7.31.7"
eslint-plugin-react-hooks: "npm:^4.5.0"
eslint-import-resolver-typescript: "npm:^3.5.2"
eslint-plugin-import: "npm:^2.31.0"
eslint-plugin-jsx-a11y: "npm:^6.10.0"
eslint-plugin-react: "npm:^7.37.0"
eslint-plugin-react-hooks: "npm:^5.0.0"
peerDependencies:
eslint: ^7.23.0 || ^8.0.0
eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
typescript: ">=3.3.1"
peerDependenciesMeta:
typescript:
optional: true
checksum: 10/69f04df8d831aba78df30edec2ce7a7cc5779af89159bfdc42f015d2e038a26e8b2b6e8407873a3827098f5abd21b5657aace0ff014d345465ae98d133ddb285
checksum: 10/3bfb85f1d6f5de36e5c9a892a401945e7f470627f040a080aaebc86eb79c14461080d75e5149c415b5eb38e039565a0664212ec6ba960c5183daa6b9b274795d
languageName: node
linkType: hard
@@ -3121,19 +3139,27 @@ __metadata:
languageName: node
linkType: hard
"eslint-import-resolver-typescript@npm:^2.7.1":
version: 2.7.1
resolution: "eslint-import-resolver-typescript@npm:2.7.1"
"eslint-import-resolver-typescript@npm:^3.5.2":
version: 3.8.7
resolution: "eslint-import-resolver-typescript@npm:3.8.7"
dependencies:
debug: "npm:^4.3.4"
glob: "npm:^7.2.0"
is-glob: "npm:^4.0.3"
resolve: "npm:^1.22.0"
tsconfig-paths: "npm:^3.14.1"
"@nolyfill/is-core-module": "npm:1.0.39"
debug: "npm:^4.3.7"
enhanced-resolve: "npm:^5.15.0"
get-tsconfig: "npm:^4.10.0"
is-bun-module: "npm:^1.0.2"
stable-hash: "npm:^0.0.4"
tinyglobby: "npm:^0.2.12"
peerDependencies:
eslint: "*"
eslint-plugin-import: "*"
checksum: 10/4a688440395673492b2e28347ba2173542dcec0bc597065469191be213e30f65b316697a950abf492f4191365626fb13231080c6ca326044df087f57d163e6c6
eslint-plugin-import-x: "*"
peerDependenciesMeta:
eslint-plugin-import:
optional: true
eslint-plugin-import-x:
optional: true
checksum: 10/e11a2ea4ffba11b33b6bd00146569c88bed0dbfb81f882d3c0f00aedbb7f2280caf4bbd38fb546583087560fadf80abd6e7928e14194c351416233c841f83d8d
languageName: node
linkType: hard
@@ -3149,7 +3175,7 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-import@npm:^2.26.0":
"eslint-plugin-import@npm:^2.31.0":
version: 2.31.0
resolution: "eslint-plugin-import@npm:2.31.0"
dependencies:
@@ -3178,7 +3204,7 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-jsx-a11y@npm:^6.5.1":
"eslint-plugin-jsx-a11y@npm:^6.10.0":
version: 6.10.2
resolution: "eslint-plugin-jsx-a11y@npm:6.10.2"
dependencies:
@@ -3203,16 +3229,16 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-react-hooks@npm:^4.5.0":
version: 4.6.2
resolution: "eslint-plugin-react-hooks@npm:4.6.2"
"eslint-plugin-react-hooks@npm:^5.0.0":
version: 5.2.0
resolution: "eslint-plugin-react-hooks@npm:5.2.0"
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
checksum: 10/5a0680941f34e70cf505bcb6082df31a3e445d193ee95a88ff3483041eb944f4cefdaf7e81b0eb1feb4eeceee8c7c6ddb8a2a6e8c4c0388514a42e16ac7b7a69
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
checksum: 10/ebb79e9cf69ae06e3a7876536653c5e556b5fd8cd9dc49577f10a6e728360e7b6f5ce91f4339b33e93b26e3bb23805418f8b5e75db80baddd617b1dffe73bed1
languageName: node
linkType: hard
"eslint-plugin-react@npm:^7.31.7, eslint-plugin-react@npm:^7.37.4":
"eslint-plugin-react@npm:^7.37.0, eslint-plugin-react@npm:^7.37.4":
version: 7.37.4
resolution: "eslint-plugin-react@npm:7.37.4"
dependencies:
@@ -3240,7 +3266,7 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-tailwindcss@npm:^3.12.0":
"eslint-plugin-tailwindcss@npm:^3.18.0":
version: 3.18.0
resolution: "eslint-plugin-tailwindcss@npm:3.18.0"
dependencies:
@@ -3428,6 +3454,19 @@ __metadata:
languageName: node
linkType: hard
"fast-glob@npm:3.3.1":
version: 3.3.1
resolution: "fast-glob@npm:3.3.1"
dependencies:
"@nodelib/fs.stat": "npm:^2.0.2"
"@nodelib/fs.walk": "npm:^1.2.3"
glob-parent: "npm:^5.1.2"
merge2: "npm:^1.3.0"
micromatch: "npm:^4.0.4"
checksum: 10/51bcd15472879dfe51d4b01c5b70bbc7652724d39cdd082ba11276dbd7d84db0f6b33757e1938af8b2768a4bf485d9be0c89153beae24ee8331d6dcc7550379f
languageName: node
linkType: hard
"fast-glob@npm:^3.2.5, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2":
version: 3.3.3
resolution: "fast-glob@npm:3.3.3"
@@ -3478,6 +3517,18 @@ __metadata:
languageName: node
linkType: hard
"fdir@npm:^6.4.3":
version: 6.4.3
resolution: "fdir@npm:6.4.3"
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
checksum: 10/8e6d20f4590dc168de1374a9cadaa37e20ca6e0b822aa247c230e7ea1d9e9674a68cd816146435e4ecc98f9285091462ab7e5e56eebc9510931a1794e4db68b2
languageName: node
linkType: hard
"file-entry-cache@npm:^8.0.0":
version: 8.0.0
resolution: "file-entry-cache@npm:8.0.0"
@@ -3590,13 +3641,6 @@ __metadata:
languageName: node
linkType: hard
"fs.realpath@npm:^1.0.0":
version: 1.0.0
resolution: "fs.realpath@npm:1.0.0"
checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96
languageName: node
linkType: hard
"fsevents@npm:~2.3.2":
version: 2.3.3
resolution: "fsevents@npm:2.3.3"
@@ -3718,6 +3762,15 @@ __metadata:
languageName: node
linkType: hard
"get-tsconfig@npm:^4.10.0":
version: 4.10.0
resolution: "get-tsconfig@npm:4.10.0"
dependencies:
resolve-pkg-maps: "npm:^1.0.0"
checksum: 10/5259b5c99a1957114337d9d0603b4a305ec9e29fa6cac7d2fbf634ba6754a0cc88bfd281a02416ce64e604b637d3cb239185381a79a5842b17fb55c097b38c4b
languageName: node
linkType: hard
"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2":
version: 5.1.2
resolution: "glob-parent@npm:5.1.2"
@@ -3736,20 +3789,6 @@ __metadata:
languageName: node
linkType: hard
"glob@npm:7.1.7":
version: 7.1.7
resolution: "glob@npm:7.1.7"
dependencies:
fs.realpath: "npm:^1.0.0"
inflight: "npm:^1.0.4"
inherits: "npm:2"
minimatch: "npm:^3.0.4"
once: "npm:^1.3.0"
path-is-absolute: "npm:^1.0.0"
checksum: 10/ff5aab0386e9cace92b0550d42085b71013c5ea382982dd7fdded998a559635f61413b8ba6fb7294eef289c83b52f4e64136f888300ac8afc4f3e5623182d6c8
languageName: node
linkType: hard
"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7":
version: 10.4.5
resolution: "glob@npm:10.4.5"
@@ -3766,20 +3805,6 @@ __metadata:
languageName: node
linkType: hard
"glob@npm:^7.2.0":
version: 7.2.3
resolution: "glob@npm:7.2.3"
dependencies:
fs.realpath: "npm:^1.0.0"
inflight: "npm:^1.0.4"
inherits: "npm:2"
minimatch: "npm:^3.1.1"
once: "npm:^1.3.0"
path-is-absolute: "npm:^1.0.0"
checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b
languageName: node
linkType: hard
"globals@npm:^11.1.0":
version: 11.12.0
resolution: "globals@npm:11.12.0"
@@ -3832,7 +3857,7 @@ __metadata:
languageName: node
linkType: hard
"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.6":
"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2
@@ -4091,23 +4116,6 @@ __metadata:
languageName: node
linkType: hard
"inflight@npm:^1.0.4":
version: 1.0.6
resolution: "inflight@npm:1.0.6"
dependencies:
once: "npm:^1.3.0"
wrappy: "npm:1"
checksum: 10/d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67
languageName: node
linkType: hard
"inherits@npm:2":
version: 2.0.4
resolution: "inherits@npm:2.0.4"
checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521
languageName: node
linkType: hard
"inline-style-parser@npm:0.1.1":
version: 0.1.1
resolution: "inline-style-parser@npm:0.1.1"
@@ -4211,6 +4219,15 @@ __metadata:
languageName: node
linkType: hard
"is-bun-module@npm:^1.0.2":
version: 1.3.0
resolution: "is-bun-module@npm:1.3.0"
dependencies:
semver: "npm:^7.6.3"
checksum: 10/b23d9ec7b4d4bfd89e4e72b5cd52e1bc153facad59fdd7394c656f8859a78740ef35996a2066240a32f39cc9a9da4b4eb69e68df3c71755a61ebbaf56d3daef0
languageName: node
linkType: hard
"is-callable@npm:^1.2.7":
version: 1.2.7
resolution: "is-callable@npm:1.2.7"
@@ -5355,7 +5372,7 @@ __metadata:
languageName: node
linkType: hard
"micromatch@npm:^4.0.8":
"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8":
version: 4.0.8
resolution: "micromatch@npm:4.0.8"
dependencies:
@@ -5379,7 +5396,7 @@ __metadata:
languageName: node
linkType: hard
"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
"minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@@ -5564,6 +5581,7 @@ __metadata:
"@discordjs/rest": "npm:2.0.0"
"@eslint/js": "npm:^9.19.0"
"@ianvs/prettier-plugin-sort-imports": "npm:^3.7.2"
"@next/eslint-plugin-next": "npm:^15.2.2"
"@next/mdx": "npm:^13.5.0"
"@radix-ui/react-accordion": "npm:^1.1.2"
"@radix-ui/react-checkbox": "npm:^1.0.4"
@@ -5582,10 +5600,10 @@ __metadata:
discord.js: "npm:14.4.0"
dotenv: "npm:^16.4.4"
eslint: "npm:^9.19.0"
eslint-config-next: "npm:13.0.0"
eslint-config-next: "npm:^15.2.2"
eslint-config-prettier: "npm:^8.8.0"
eslint-plugin-react: "npm:^7.37.4"
eslint-plugin-tailwindcss: "npm:^3.12.0"
eslint-plugin-tailwindcss: "npm:^3.18.0"
framer-motion: "npm:^10.12.17"
fuse.js: "npm:^6.6.2"
globals: "npm:^15.14.0"
@@ -5847,15 +5865,6 @@ __metadata:
languageName: node
linkType: hard
"once@npm:^1.3.0":
version: 1.4.0
resolution: "once@npm:1.4.0"
dependencies:
wrappy: "npm:1"
checksum: 10/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68
languageName: node
linkType: hard
"onetime@npm:^6.0.0":
version: 6.0.0
resolution: "onetime@npm:6.0.0"
@@ -5947,13 +5956,6 @@ __metadata:
languageName: node
linkType: hard
"path-is-absolute@npm:^1.0.0":
version: 1.0.1
resolution: "path-is-absolute@npm:1.0.1"
checksum: 10/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8
languageName: node
linkType: hard
"path-key@npm:^3.1.0":
version: 3.1.1
resolution: "path-key@npm:3.1.1"
@@ -6013,6 +6015,13 @@ __metadata:
languageName: node
linkType: hard
"picomatch@npm:^4.0.2":
version: 4.0.2
resolution: "picomatch@npm:4.0.2"
checksum: 10/ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717
languageName: node
linkType: hard
"pidtree@npm:^0.6.0":
version: 0.6.0
resolution: "pidtree@npm:0.6.0"
@@ -6534,7 +6543,14 @@ __metadata:
languageName: node
linkType: hard
"resolve@npm:^1.1.7, resolve@npm:^1.22.0, resolve@npm:^1.22.4, resolve@npm:^1.22.8":
"resolve-pkg-maps@npm:^1.0.0":
version: 1.0.0
resolution: "resolve-pkg-maps@npm:1.0.0"
checksum: 10/0763150adf303040c304009231314d1e84c6e5ebfa2d82b7d94e96a6e82bacd1dcc0b58ae257315f3c8adb89a91d8d0f12928241cba2df1680fbe6f60bf99b0e
languageName: node
linkType: hard
"resolve@npm:^1.1.7, resolve@npm:^1.22.4, resolve@npm:^1.22.8":
version: 1.22.10
resolution: "resolve@npm:1.22.10"
dependencies:
@@ -6560,7 +6576,7 @@ __metadata:
languageName: node
linkType: hard
"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin<compat/resolve>":
"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin<compat/resolve>":
version: 1.22.10
resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin<compat/resolve>::version=1.22.10&hash=c3c19d"
dependencies:
@@ -7054,6 +7070,13 @@ __metadata:
languageName: node
linkType: hard
"stable-hash@npm:^0.0.4":
version: 0.0.4
resolution: "stable-hash@npm:0.0.4"
checksum: 10/21c039d21c1cb739cf8342561753a5e007cb95ea682ccd452e76310bbb9c6987a89de8eda023e320b019f3e4691aabda75079cdbb7dadf7ab9013e931f2f23cd
languageName: node
linkType: hard
"stack-generator@npm:^2.0.5":
version: 2.0.10
resolution: "stack-generator@npm:2.0.10"
@@ -7407,6 +7430,13 @@ __metadata:
languageName: node
linkType: hard
"tapable@npm:^2.2.0":
version: 2.2.1
resolution: "tapable@npm:2.2.1"
checksum: 10/1769336dd21481ae6347611ca5fca47add0962fd8e80466515032125eca0084a4f0ede11e65341b9c0018ef4e1cf1ad820adbb0fba7cc99865c6005734000b0a
languageName: node
linkType: hard
"tar@npm:^7.4.3":
version: 7.4.3
resolution: "tar@npm:7.4.3"
@@ -7446,6 +7476,16 @@ __metadata:
languageName: node
linkType: hard
"tinyglobby@npm:^0.2.12":
version: 0.2.12
resolution: "tinyglobby@npm:0.2.12"
dependencies:
fdir: "npm:^6.4.3"
picomatch: "npm:^4.0.2"
checksum: 10/4ad28701fa9118b32ef0e27f409e0a6c5741e8b02286d50425c1f6f71e6d6c6ded9dd5bbbbb714784b08623c4ec4d150151f1d3d996cfabe0495f908ab4f7002
languageName: node
linkType: hard
"to-regex-range@npm:^5.0.1":
version: 5.0.1
resolution: "to-regex-range@npm:5.0.1"
@@ -7525,7 +7565,7 @@ __metadata:
languageName: node
linkType: hard
"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.15.0":
"tsconfig-paths@npm:^3.15.0":
version: 3.15.0
resolution: "tsconfig-paths@npm:3.15.0"
dependencies:
@@ -8027,13 +8067,6 @@ __metadata:
languageName: node
linkType: hard
"wrappy@npm:1":
version: 1.0.2
resolution: "wrappy@npm:1.0.2"
checksum: 10/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5
languageName: node
linkType: hard
"ws@npm:^8.8.1":
version: 8.18.1
resolution: "ws@npm:8.18.1"