Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d99c5644c9 | ||
|
|
1dc597a175 | ||
|
|
b55bf7fd4d | ||
|
|
496e18ecab | ||
|
|
d4fb23a7af | ||
|
|
411667f5c7 | ||
|
|
87709224a3 | ||
|
|
0e20c6884f | ||
|
|
e1e893004d | ||
|
|
2e6bef51d4 | ||
|
|
9e7b2900cf | ||
|
|
cd02f49173 | ||
|
|
a8787bd1fc | ||
|
|
2c6f7846d7 |
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
|
Before Width: | Height: | Size: 315 KiB After Width: | Height: | Size: 322 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 223 KiB After Width: | Height: | Size: 267 KiB |
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 215 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 124 KiB |
@@ -19,7 +19,7 @@
|
||||
"@docusaurus/core": "3.5.2",
|
||||
"@docusaurus/preset-classic": "3.5.2",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"@svgr/webpack": "^5.5.0",
|
||||
"clsx": "^1.2.1",
|
||||
"docusaurus-plugin-sass": "^0.2.5",
|
||||
|
||||
@@ -42,13 +42,13 @@ Chip: Apple M2 Pro
|
||||
|
||||
Memory (RAM): 16 GB
|
||||
|
||||
Operating System: macOS Sequoia version 15.0.1
|
||||
Operating System: macOS Sequoia version 15.6.1
|
||||
|
||||
**Software environment**
|
||||
|
||||
Node.js version: 20.18.0
|
||||
Node.js version: 23.10.0
|
||||
|
||||
Browser: Google Chrome Version 130.0.6723.92 (Official Build) (arm64)
|
||||
Browser: Google Chrome Version 139.0.7258.156 (Official Build) (arm64)
|
||||
|
||||
## Running the benchmarks
|
||||
|
||||
@@ -60,6 +60,8 @@ GitHub repository to the run Node.js, browser and Circom benchmarks: https://git
|
||||
|
||||
GitHub repository to run the Solidity benchmarks: https://github.com/semaphore-protocol/semaphore
|
||||
|
||||
Semaphore V3 benchmarks were obtained using the code from the latest v3 Git tag (`v3.15.2`), with the Solidity optimizer enabled.
|
||||
|
||||
## Node.js benchmarks
|
||||
|
||||
### Identities
|
||||
@@ -98,6 +100,8 @@ Main functions used in the browser.
|
||||
|
||||
## Circuit benchmarks
|
||||
|
||||
Tree depth = 20
|
||||
|
||||
### Semaphore V3
|
||||
|
||||
<img
|
||||
@@ -119,7 +123,7 @@ style={{ width: '300px', height: 'auto' }}
|
||||
<img
|
||||
src={require('../../assets/img-benchmarks/contracts/contract-benchmarks.png').default}
|
||||
alt="Contract Benchmarks"
|
||||
style={{ width: '590px', height: 'auto' }}
|
||||
style={{ width: '560px', height: 'auto' }}
|
||||
/>
|
||||
|
||||
### Semaphore V3 gas report
|
||||
|
||||
@@ -59,6 +59,8 @@ Supported networks:
|
||||
- `linea-sepolia`
|
||||
- `linea`
|
||||
- `scroll-sepolia`
|
||||
- `gnosis-chiado`
|
||||
- `gnosis`
|
||||
|
||||
## 🛠 Install
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"@emotion/react": "^11.11.1",
|
||||
"@emotion/styled": "^11.11.0",
|
||||
"framer-motion": "^10.16.4",
|
||||
"next": "13.5.5",
|
||||
"next": "14.2.35",
|
||||
"react": "^18",
|
||||
"react-code-blocks": "^0.1.4",
|
||||
"react-dom": "^18"
|
||||
|
||||
@@ -586,5 +586,26 @@
|
||||
"github": "https://github.com/jimmychu0807/semaphore-msa-modules",
|
||||
"website": "https://semaphore-msa-modules.jimmychu0807.hk"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Poll.cc",
|
||||
"categories": ["Voting", "Social"],
|
||||
"tagline": "Public online voting on social and political issues. Semaphore is used for anonymous voting while proving you're a real human verified by KYC.",
|
||||
"pse": false,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"website": "https://poll.cc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BringID",
|
||||
"tagline": "Privacy-preserving proof of humanity using verifiable Internet credentials",
|
||||
"categories": ["Identity", "Authenticity", "Trust"],
|
||||
"pse": false,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"website": "https://www.bringid.org",
|
||||
"github": "https://github.com/BringID/whitepaper"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "Support more Testnets/Mainnets",
|
||||
"name": "Support more Testnets & Mainnets",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
@@ -37,10 +37,14 @@
|
||||
},
|
||||
{
|
||||
"name": "Semaphore Noir Implementation",
|
||||
"done": false
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "Scaling Semaphore with PIR",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "Maintenance",
|
||||
"done": false
|
||||
}
|
||||
]
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* This function takes an array and divides it into smaller arrays,
|
||||
* or "chunks", each containing a specified number of elements.
|
||||
* @param array The array to be split into chunks.
|
||||
* @param size The size of each chunk. The default size is 10.
|
||||
* @param size The size of each chunk. The default size is 15.
|
||||
* @returns An array containing smaller subarrays (chunks), each with a length defined by the size.
|
||||
*/
|
||||
export function chunkArray(array: any[], size = 15): any[] {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/circuits",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "Semaphore Circom circuits to generate zero-knowledge proofs.",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-contracts-foundry",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "Semaphore Foundry template.",
|
||||
"license": "Unlicense",
|
||||
"devDependencies": {
|
||||
"@semaphore-protocol/contracts": "4.13.1",
|
||||
"@semaphore-protocol/contracts": "4.14.0",
|
||||
"@zk-kit/lean-imt.sol": "2.0.1",
|
||||
"forge-std": "github:foundry-rs/forge-std#v1.9.4",
|
||||
"poseidon-solidity": "0.0.5",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-contracts-hardhat",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "Semaphore Hardhat template.",
|
||||
"license": "Unlicense",
|
||||
"files": [
|
||||
@@ -42,9 +42,9 @@
|
||||
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
|
||||
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
|
||||
"@nomicfoundation/hardhat-verify": "^2.0.0",
|
||||
"@semaphore-protocol/core": "4.13.1",
|
||||
"@semaphore-protocol/hardhat": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/core": "4.14.0",
|
||||
"@semaphore-protocol/hardhat": "4.14.0",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -72,7 +72,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.13.1"
|
||||
"@semaphore-protocol/contracts": "4.14.0"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
|
||||
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
|
||||
"@nomicfoundation/hardhat-verify": "^2.0.0",
|
||||
"@semaphore-protocol/core": "4.13.1",
|
||||
"@semaphore-protocol/hardhat": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/core": "4.14.0",
|
||||
"@semaphore-protocol/hardhat": "4.14.0",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -50,7 +50,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.13.1"
|
||||
"@semaphore-protocol/contracts": "4.14.0"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/core": "4.13.1",
|
||||
"@semaphore-protocol/data": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/core": "4.14.0",
|
||||
"@semaphore-protocol/data": "4.14.0",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"ethers": "^6.13.4",
|
||||
"next": "14.1.0",
|
||||
"next-pwa": "^5.6.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-monorepo-ethers",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "Semaphore Hardhat + Next.js + SemaphoreEthers template.",
|
||||
"license": "Unlicense",
|
||||
"files": [
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
|
||||
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
|
||||
"@nomicfoundation/hardhat-verify": "^2.0.0",
|
||||
"@semaphore-protocol/core": "4.13.1",
|
||||
"@semaphore-protocol/hardhat": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/core": "4.14.0",
|
||||
"@semaphore-protocol/hardhat": "4.14.0",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -50,7 +50,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.13.1"
|
||||
"@semaphore-protocol/contracts": "4.14.0"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/core": "4.13.1",
|
||||
"@semaphore-protocol/data": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/core": "4.14.0",
|
||||
"@semaphore-protocol/data": "4.14.0",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"ethers": "^6.13.4",
|
||||
"next": "14.1.0",
|
||||
"next-pwa": "^5.6.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-monorepo-subgraph",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "Semaphore Hardhat + Next.js + SemaphoreSubgraph template.",
|
||||
"license": "Unlicense",
|
||||
"files": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli",
|
||||
"type": "module",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "A command line tool to set up your Semaphore project and get group data.",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
@@ -41,8 +41,8 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/data": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/data": "4.14.0",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"axios": "^1.6.7",
|
||||
"boxen": "^7.1.1",
|
||||
"chalk": "^5.3.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/contracts",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "Semaphore contracts to manage groups and broadcast anonymous signals.",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
|
||||
@@ -72,6 +72,22 @@ const hardhatConfig: HardhatUserConfig = {
|
||||
apiURL: "https://api-sepolia.scrollscan.com/api",
|
||||
browserURL: "https://sepolia.scrollscan.com"
|
||||
}
|
||||
},
|
||||
{
|
||||
network: "gnosis-chiado",
|
||||
chainId: 10200,
|
||||
urls: {
|
||||
apiURL: "https://gnosis-chiado.blockscout.com/api",
|
||||
browserURL: "https://gnosis-chiado.blockscout.com"
|
||||
}
|
||||
},
|
||||
{
|
||||
network: "gnosis",
|
||||
chainId: 100,
|
||||
urls: {
|
||||
apiURL: "https://api.etherscan.io/v2/api?chainid=100",
|
||||
browserURL: "https://gnosisscan.io"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/core",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "Core library for the essential Semaphore features.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -42,8 +42,8 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/group": "4.13.1",
|
||||
"@semaphore-protocol/identity": "4.13.1",
|
||||
"@semaphore-protocol/proof": "4.13.1"
|
||||
"@semaphore-protocol/group": "4.14.0",
|
||||
"@semaphore-protocol/identity": "4.14.0",
|
||||
"@semaphore-protocol/proof": "4.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/data",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "A library for querying Semaphore smart contract.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -37,7 +37,7 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"@zk-kit/utils": "1.3.0",
|
||||
"axios": "1.6.6",
|
||||
"ethers": "6.13.4",
|
||||
|
||||
@@ -208,7 +208,7 @@ export default class SemaphoreEthers {
|
||||
|
||||
const membersAddedEvents = await getEvents(this._contract, "MembersAdded", [groupId], this._options.startBlock)
|
||||
|
||||
const membersAddedEventsMap = new Map<string, [string]>()
|
||||
const membersAddedEventsMap = new Map<string, string[]>()
|
||||
|
||||
for (const [, startIndex, identityCommitments] of membersAddedEvents) {
|
||||
membersAddedEventsMap.set(
|
||||
@@ -295,4 +295,156 @@ export default class SemaphoreEthers {
|
||||
|
||||
return this._contract.hasMember(groupId, member)
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to the GroupCreated event.
|
||||
* @param callback Called with the groupId of the newly created group.
|
||||
*/
|
||||
onGroupCreated(callback: (groupId: string, event: any) => void): void {
|
||||
this._contract.on("GroupCreated", (groupId, event) => {
|
||||
callback(groupId.toString(), event)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all listeners for the GroupCreated event.
|
||||
* Stop receiving group creation notifications.
|
||||
*/
|
||||
offGropupCreated(): void {
|
||||
this._contract.removeAllListeners("GroupCreated")
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to MemberAdded events.
|
||||
* @param callback Receives the groupId, identityCommitment and event metadata.
|
||||
*/
|
||||
onMemberAdded(
|
||||
callback: (groupId: string, identityCommitment: string, merkleTreeRoot: string, event: any) => void
|
||||
): void {
|
||||
this._contract.on("MemberAdded", (groupId, _index, identityCommitment, merkleTreeRoot, event) => {
|
||||
callback(groupId.toString(), identityCommitment.toString(), merkleTreeRoot.toString(), event)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all listeners for the MemberAdded event.
|
||||
* Stop tracking when new members are added.
|
||||
*/
|
||||
offMemberAdded(): void {
|
||||
this._contract.removeAllListeners("MemberAdded")
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to MemberUpdated events.
|
||||
* @param callback Receives the groupId, old identityCommitment, new identityCommitment, and event metadata.
|
||||
*/
|
||||
onMemberUpdated(
|
||||
callback: (
|
||||
groupId: string,
|
||||
oldIdentityCommitment: string,
|
||||
newIdentityCommitment: string,
|
||||
merkleTreeRoot: string,
|
||||
event: any
|
||||
) => void
|
||||
): void {
|
||||
this._contract.on(
|
||||
"MemberUpdated",
|
||||
(groupId, _index, oldIdentityCommitment, newIdentityCommitment, merkleTreeRoot, event) => {
|
||||
callback(
|
||||
groupId.toString(),
|
||||
oldIdentityCommitment.toString(),
|
||||
newIdentityCommitment.toString(),
|
||||
merkleTreeRoot.toString(),
|
||||
event
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all listeners for the MemberUpdated event.
|
||||
* Stop receiving updates when members change their commitment.
|
||||
*/
|
||||
offMemberUpdated(): void {
|
||||
this._contract.removeAllListeners("MemberUpdated")
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to MemberRemoved events.
|
||||
* @param callback Receives the groupId, identityCommitment and event metadata.
|
||||
*/
|
||||
onMemberRemoved(
|
||||
callback: (groupId: string, identityCommitment: string, merkleTreeRoot: string, event: any) => void
|
||||
): void {
|
||||
this._contract.on("MemberRemoved", (groupId, _index, identityCommitment, merkleTreeRoot, event) => {
|
||||
callback(groupId.toString(), identityCommitment.toString(), merkleTreeRoot.toString(), event)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all listeners for the MemberRemoved event.
|
||||
* Stop listening for member removals.
|
||||
*/
|
||||
offMemberRemoved(): void {
|
||||
this._contract.removeAllListeners("MemberRemoved")
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to the ProofValidated event.
|
||||
* @param callback Called with proof parameters and event metadata.
|
||||
*/
|
||||
onProofValidated(
|
||||
callback: (proof: {
|
||||
groupId: string
|
||||
merkleTreeDepth: number
|
||||
merkleTreeRoot: string
|
||||
nullifier: string
|
||||
message: string
|
||||
scope: string
|
||||
points: string[]
|
||||
event: any
|
||||
}) => void
|
||||
): void {
|
||||
this._contract.on(
|
||||
"ProofValidated",
|
||||
(groupId, merkleTreeDepth, merkleTreeRoot, nullifier, message, scope, points, event) => {
|
||||
callback({
|
||||
groupId: groupId.toString(),
|
||||
merkleTreeDepth: Number(merkleTreeDepth),
|
||||
merkleTreeRoot: merkleTreeRoot.toString(),
|
||||
nullifier: nullifier.toString(),
|
||||
message: message.toString(),
|
||||
scope: scope.toString(),
|
||||
points: points.map((p: any) => p.toString()),
|
||||
event
|
||||
})
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all listeners for the ProofValidated event.
|
||||
* Stop receiving proof validation notifications.
|
||||
*/
|
||||
offProofValidated(): void {
|
||||
this._contract.removeAllListeners("ProofValidated")
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to the GroupAdminUpdated event.
|
||||
* @param callback Receives the groupId, old admin and new admin addresses and event metadata.
|
||||
*/
|
||||
onGroupAdminUpdated(callback: (groupId: string, oldAdmin: string, newAdmin: string, event: any) => void): void {
|
||||
this._contract.on("GroupAdminUpdated", (groupId, oldAdmin, newAdmin, event) => {
|
||||
callback(groupId.toString(), oldAdmin.toString(), newAdmin.toString(), event)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all listeners for the GroupAdminUpdated event.
|
||||
* Stop tracking when a group's admin is updated.
|
||||
*/
|
||||
offGroupAdminUpdated(): void {
|
||||
this._contract.removeAllListeners("GroupAdminUpdated")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,4 +257,140 @@ describe("SemaphoreEthers", () => {
|
||||
expect(isMember).toBeFalsy()
|
||||
})
|
||||
})
|
||||
|
||||
describe("Event listeners", () => {
|
||||
let mockOn: jest.Mock
|
||||
let mockRemove: jest.Mock
|
||||
|
||||
beforeEach(() => {
|
||||
mockOn = jest.fn()
|
||||
mockRemove = jest.fn()
|
||||
|
||||
ContractMocked.mockImplementation(
|
||||
() =>
|
||||
({
|
||||
on: mockOn,
|
||||
removeAllListeners: mockRemove
|
||||
}) as any
|
||||
)
|
||||
})
|
||||
|
||||
it("onGroupCreated should call the callback with groupId and event", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
const cb = jest.fn()
|
||||
|
||||
semaphore.onGroupCreated(cb)
|
||||
|
||||
const handler = mockOn.mock.calls.find(([e]) => e === "GroupCreated")![1]
|
||||
const fakeEvent = { blockNumber: 123 }
|
||||
handler("42", fakeEvent)
|
||||
|
||||
expect(cb).toHaveBeenCalledWith("42", fakeEvent)
|
||||
expect(mockOn).toHaveBeenCalledWith("GroupCreated", expect.any(Function))
|
||||
})
|
||||
|
||||
it("offGroupCreated should remove all listeners for GroupCreated", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
semaphore.offGropupCreated()
|
||||
expect(mockRemove).toHaveBeenCalledWith("GroupCreated")
|
||||
})
|
||||
|
||||
it("onMemberAdded should call callback with groupId, identityCommitment and event", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
const cb = jest.fn()
|
||||
|
||||
semaphore.onMemberAdded(cb)
|
||||
const handler = mockOn.mock.calls.find(([e]) => e === "MemberAdded")![1]
|
||||
const fakeEvent = { txHash: "0xabc" }
|
||||
|
||||
handler("group1", 0, "identity123", "root111", fakeEvent)
|
||||
|
||||
expect(cb).toHaveBeenCalledWith("group1", "identity123", "root111", fakeEvent)
|
||||
})
|
||||
|
||||
it("onMemberUpdated should call callback with groupId, old and new identity commitments", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
const cb = jest.fn()
|
||||
|
||||
semaphore.onMemberUpdated(cb)
|
||||
const handler = mockOn.mock.calls.find(([e]) => e === "MemberUpdated")![1]
|
||||
const fakeEvent = { blockNumber: 200 }
|
||||
|
||||
handler("groupX", 1, "old123", "new456", "root111", fakeEvent)
|
||||
|
||||
expect(cb).toHaveBeenCalledWith("groupX", "old123", "new456", "root111", fakeEvent)
|
||||
})
|
||||
|
||||
it("onMemberRemoved should call callback with groupId, identityCommitment and event", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
const cb = jest.fn()
|
||||
|
||||
semaphore.onMemberRemoved(cb)
|
||||
const handler = mockOn.mock.calls.find(([e]) => e === "MemberRemoved")![1]
|
||||
const fakeEvent = { txHash: "0xdeadbeef" }
|
||||
|
||||
handler("groupZ", 2, "identity999", "root111", fakeEvent)
|
||||
|
||||
expect(cb).toHaveBeenCalledWith("groupZ", "identity999", "root111", fakeEvent)
|
||||
})
|
||||
|
||||
it("offMemberAdded/Updated/Removed should remove all corresponding listeners", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
|
||||
semaphore.offMemberAdded()
|
||||
semaphore.offMemberUpdated()
|
||||
semaphore.offMemberRemoved()
|
||||
|
||||
expect(mockRemove).toHaveBeenCalledWith("MemberAdded")
|
||||
expect(mockRemove).toHaveBeenCalledWith("MemberUpdated")
|
||||
expect(mockRemove).toHaveBeenCalledWith("MemberRemoved")
|
||||
})
|
||||
|
||||
it("onProofValidated should call callback with proof object", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
const cb = jest.fn()
|
||||
|
||||
semaphore.onProofValidated(cb)
|
||||
const handler = mockOn.mock.calls.find(([e]) => e === "ProofValidated")![1]
|
||||
|
||||
const fakeEvent = { blockNumber: 400 }
|
||||
handler("group1", 3, "root123", "nullifierXYZ", "msg1", "scope1", ["p1", "p2"], fakeEvent)
|
||||
|
||||
expect(cb).toHaveBeenCalledWith({
|
||||
groupId: "group1",
|
||||
merkleTreeDepth: 3,
|
||||
merkleTreeRoot: "root123",
|
||||
nullifier: "nullifierXYZ",
|
||||
message: "msg1",
|
||||
scope: "scope1",
|
||||
points: ["p1", "p2"],
|
||||
event: fakeEvent
|
||||
})
|
||||
})
|
||||
|
||||
it("offProofValidated should remove all ProofValidated listeners", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
semaphore.offProofValidated()
|
||||
expect(mockRemove).toHaveBeenCalledWith("ProofValidated")
|
||||
})
|
||||
|
||||
it("onGroupAdminUpdated should call callback with groupId, oldAdmin, newAdmin and event", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
const cb = jest.fn()
|
||||
|
||||
semaphore.onGroupAdminUpdated(cb)
|
||||
const handler = mockOn.mock.calls.find(([e]) => e === "GroupAdminUpdated")![1]
|
||||
const fakeEvent = { txHash: "0xbeef" }
|
||||
|
||||
handler("group1", "0xOLD", "0xNEW", fakeEvent)
|
||||
|
||||
expect(cb).toHaveBeenCalledWith("group1", "0xOLD", "0xNEW", fakeEvent)
|
||||
})
|
||||
|
||||
it("offGroupAdminUpdated should remove all GroupAdminUpdated listeners", () => {
|
||||
const semaphore = new SemaphoreEthers("sepolia", { address: "0x0000" })
|
||||
semaphore.offGroupAdminUpdated()
|
||||
expect(mockRemove).toHaveBeenCalledWith("GroupAdminUpdated")
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/group",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "A library to create and manage Semaphore groups.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/hardhat",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "A Hardhat plugin to deploy Semaphore contracts.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -41,7 +41,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@nomicfoundation/hardhat-ethers": "^3.0.0",
|
||||
"@semaphore-protocol/contracts": "4.13.1",
|
||||
"@semaphore-protocol/contracts": "4.14.0",
|
||||
"ethers": "^6.13.4",
|
||||
"hardhat-dependency-compiler": "^1.1.3"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/identity",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "A library to create Semaphore identities.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -62,7 +62,7 @@ export class Identity {
|
||||
|
||||
/**
|
||||
* Returns the secret scalar.
|
||||
* @returns The secret scalar as a string.
|
||||
* @returns The secret scalar as a bigint.
|
||||
*/
|
||||
public get secretScalar(): bigint {
|
||||
return this._secretScalar
|
||||
@@ -78,7 +78,7 @@ export class Identity {
|
||||
|
||||
/**
|
||||
* Returns the commitment hash of the public key.
|
||||
* @returns The commitment as a string.
|
||||
* @returns The commitment as a bigint.
|
||||
*/
|
||||
public get commitment(): bigint {
|
||||
return this._commitment
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -116,3 +116,25 @@ import { verifyProof } from "@semaphore-protocol/proof"
|
||||
|
||||
await verifyProof(proof1)
|
||||
```
|
||||
|
||||
## Resource management: Terminating the bn128 curve
|
||||
|
||||
When using the Semaphore proof library in Node.js environments, especially in tests or scripts that create and use the `bn128` curve (for example, via `getCurveFromName("bn128")` from the `ffjavascript` package), it is important to properly release resources associated with the curve after use. Failing to do so can result in leaked handles (such as `MessagePort` handles), which may prevent Node.js from exiting cleanly. This is particularly relevant when running test suites.
|
||||
|
||||
**How to terminate the bn128 curve:**
|
||||
|
||||
If you create a curve instance using `getCurveFromName("bn128")`, you should call its `terminate()` method when you are done with it. For example:
|
||||
|
||||
```typescript
|
||||
import { getCurveFromName } from "ffjavascript"
|
||||
|
||||
let curve
|
||||
beforeAll(async () => {
|
||||
curve = await getCurveFromName("bn128")
|
||||
})
|
||||
afterAll(async () => {
|
||||
await curve.terminate()
|
||||
})
|
||||
```
|
||||
|
||||
This ensures that all resources are properly released and Node.js can exit cleanly after your script or tests finish.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/proof",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "A library to generate and verify Semaphore proofs.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -47,11 +47,11 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@semaphore-protocol/group": "4.13.1",
|
||||
"@semaphore-protocol/identity": "4.13.1"
|
||||
"@semaphore-protocol/group": "4.14.0",
|
||||
"@semaphore-protocol/identity": "4.14.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/utils": "4.13.1",
|
||||
"@semaphore-protocol/utils": "4.14.0",
|
||||
"@zk-kit/artifacts": "2.0.1",
|
||||
"@zk-kit/utils": "1.3.0",
|
||||
"ethers": "6.13.4",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ethereum Foundation
|
||||
Copyright (c) 2025 Ethereum Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/utils",
|
||||
"version": "4.13.1",
|
||||
"version": "4.14.0",
|
||||
"description": "A library to provide utility functions to the other Semaphore packages.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -258,5 +258,45 @@
|
||||
"startBlock": 11979239
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "gnosis-chiado",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0x4DeC9E3784EcC1eE002001BfE91deEf4A48931f8",
|
||||
"startBlock": 18246899
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 18246899
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x8A1fd199516489B0Fb7153EB5f075cDAC83c693D",
|
||||
"startBlock": 18246899
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "gnosis",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0x4DeC9E3784EcC1eE002001BfE91deEf4A48931f8",
|
||||
"startBlock": 42592252
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 42592252
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x8A1fd199516489B0Fb7153EB5f075cDAC83c693D",
|
||||
"startBlock": 42592252
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -76,5 +76,17 @@ export default {
|
||||
url: "https://sepolia-rpc.scroll.io",
|
||||
chainId: 534351,
|
||||
explorer: "https://sepolia.scrollscan.com"
|
||||
},
|
||||
"gnosis-chiado": {
|
||||
name: "Gnosis Chiado",
|
||||
url: "https://rpc.chiadochain.net",
|
||||
chainId: 10200,
|
||||
explorer: "https://blockscout.com/gnosis/chiado"
|
||||
},
|
||||
gnosis: {
|
||||
name: "Gnosis",
|
||||
url: "https://rpc.gnosischain.com",
|
||||
chainId: 100,
|
||||
explorer: "https://gnosisscan.io"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,9 @@ async function main() {
|
||||
.filter((file) => file.isDirectory())
|
||||
.map((dir) => dir.name)
|
||||
|
||||
folders.map((app) => gitIgnored.map((f) => rmSync(`${folderName}/${app}/${f}`, { recursive: true, force: true })))
|
||||
folders.forEach((app) =>
|
||||
gitIgnored.forEach((f) => rmSync(`${folderName}/${app}/${f}`, { recursive: true, force: true }))
|
||||
)
|
||||
}
|
||||
|
||||
main()
|
||||
|
||||
@@ -14,8 +14,8 @@ const gitIgnored = [
|
||||
const folders = ["cli-template-monorepo-ethers", "cli-template-monorepo-subgraph"]
|
||||
|
||||
async function main() {
|
||||
folders.map((pkg) =>
|
||||
gitIgnored.map((f) => rmSync(`${folderName}/${pkg}/apps/${f}`, { recursive: true, force: true }))
|
||||
folders.forEach((pkg) =>
|
||||
gitIgnored.forEach((f) => rmSync(`${folderName}/${pkg}/apps/${f}`, { recursive: true, force: true }))
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,9 @@ async function main() {
|
||||
.filter((file) => file.isDirectory())
|
||||
.map((dir) => dir.name)
|
||||
|
||||
folders.map((app) => gitIgnored.map((f) => rmSync(`${folderName}/${app}/${f}`, { recursive: true, force: true })))
|
||||
folders.forEach((app) =>
|
||||
gitIgnored.forEach((f) => rmSync(`${folderName}/${app}/${f}`, { recursive: true, force: true }))
|
||||
)
|
||||
|
||||
rmSync(`${folderName}/circuit/main`, { recursive: true, force: true })
|
||||
rmSync(`${folderName}/circuit/test`, { recursive: true, force: true })
|
||||
|
||||
312
yarn.lock
@@ -6408,13 +6408,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/env@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/env@npm:13.5.5"
|
||||
checksum: 10/519dc30be6db82d57194b6bfe50b397a37b7189a8f35d33061ae0d4f93bb8774ca7710f7da7150b3c85f329d412a35b49782d70e08e44816716b19c7ac463ae1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/env@npm:14.1.0":
|
||||
version: 14.1.0
|
||||
resolution: "@next/env@npm:14.1.0"
|
||||
@@ -6422,6 +6415,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/env@npm:14.2.35":
|
||||
version: 14.2.35
|
||||
resolution: "@next/env@npm:14.2.35"
|
||||
checksum: 10/5685145c9a6e6d21a85c012b023092ff50cfee61b73424d3c913d4155a89c85cf02867e79b5b3bde6ef9f6e6b2bec662cecd644d0d428082801e95c4cbe2393f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/eslint-plugin-next@npm:14.1.0":
|
||||
version: 14.1.0
|
||||
resolution: "@next/eslint-plugin-next@npm:14.1.0"
|
||||
@@ -6431,13 +6431,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-darwin-arm64@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-darwin-arm64@npm:13.5.5"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-darwin-arm64@npm:14.1.0":
|
||||
version: 14.1.0
|
||||
resolution: "@next/swc-darwin-arm64@npm:14.1.0"
|
||||
@@ -6445,10 +6438,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-darwin-x64@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-darwin-x64@npm:13.5.5"
|
||||
conditions: os=darwin & cpu=x64
|
||||
"@next/swc-darwin-arm64@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-darwin-arm64@npm:14.2.33"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6459,10 +6452,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-arm64-gnu@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-linux-arm64-gnu@npm:13.5.5"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
"@next/swc-darwin-x64@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-darwin-x64@npm:14.2.33"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6473,10 +6466,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-arm64-musl@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-linux-arm64-musl@npm:13.5.5"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
"@next/swc-linux-arm64-gnu@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-linux-arm64-gnu@npm:14.2.33"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6487,10 +6480,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-x64-gnu@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-linux-x64-gnu@npm:13.5.5"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
"@next/swc-linux-arm64-musl@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-linux-arm64-musl@npm:14.2.33"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6501,10 +6494,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-x64-musl@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-linux-x64-musl@npm:13.5.5"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
"@next/swc-linux-x64-gnu@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-linux-x64-gnu@npm:14.2.33"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6515,10 +6508,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-win32-arm64-msvc@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-win32-arm64-msvc@npm:13.5.5"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
"@next/swc-linux-x64-musl@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-linux-x64-musl@npm:14.2.33"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6529,10 +6522,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-win32-ia32-msvc@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-win32-ia32-msvc@npm:13.5.5"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
"@next/swc-win32-arm64-msvc@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-win32-arm64-msvc@npm:14.2.33"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6543,10 +6536,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-win32-x64-msvc@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "@next/swc-win32-x64-msvc@npm:13.5.5"
|
||||
conditions: os=win32 & cpu=x64
|
||||
"@next/swc-win32-ia32-msvc@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-win32-ia32-msvc@npm:14.2.33"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6557,6 +6550,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-win32-x64-msvc@npm:14.2.33":
|
||||
version: 14.2.33
|
||||
resolution: "@next/swc-win32-x64-msvc@npm:14.2.33"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@noble/curves@npm:1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "@noble/curves@npm:1.2.0"
|
||||
@@ -7613,7 +7613,7 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/cli-template-contracts-foundry@workspace:packages/cli-template-contracts-foundry"
|
||||
dependencies:
|
||||
"@semaphore-protocol/contracts": "npm:4.13.1"
|
||||
"@semaphore-protocol/contracts": "npm:4.14.0"
|
||||
"@zk-kit/lean-imt.sol": "npm:2.0.1"
|
||||
forge-std: "github:foundry-rs/forge-std#v1.9.4"
|
||||
poseidon-solidity: "npm:0.0.5"
|
||||
@@ -7633,10 +7633,10 @@ __metadata:
|
||||
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0"
|
||||
"@nomicfoundation/hardhat-toolbox": "npm:^4.0.0"
|
||||
"@nomicfoundation/hardhat-verify": "npm:^2.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.13.1"
|
||||
"@semaphore-protocol/core": "npm:4.13.1"
|
||||
"@semaphore-protocol/hardhat": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/contracts": "npm:4.14.0"
|
||||
"@semaphore-protocol/core": "npm:4.14.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.14.0"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -7686,8 +7686,8 @@ __metadata:
|
||||
resolution: "@semaphore-protocol/cli@workspace:packages/cli"
|
||||
dependencies:
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/data": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/data": "npm:4.14.0"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@types/figlet": "npm:^1.5.8"
|
||||
"@types/inquirer": "npm:^9.0.7"
|
||||
"@types/pacote": "npm:^11.1.8"
|
||||
@@ -7711,7 +7711,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/contracts@npm:4.13.1, @semaphore-protocol/contracts@workspace:packages/contracts/contracts":
|
||||
"@semaphore-protocol/contracts@npm:4.14.0, @semaphore-protocol/contracts@workspace:packages/contracts/contracts":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/contracts@workspace:packages/contracts/contracts"
|
||||
dependencies:
|
||||
@@ -7719,23 +7719,23 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/core@npm:4.13.1, @semaphore-protocol/core@workspace:^, @semaphore-protocol/core@workspace:packages/core":
|
||||
"@semaphore-protocol/core@npm:4.14.0, @semaphore-protocol/core@workspace:^, @semaphore-protocol/core@workspace:packages/core":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/core@workspace:packages/core"
|
||||
dependencies:
|
||||
"@semaphore-protocol/group": "npm:4.13.1"
|
||||
"@semaphore-protocol/identity": "npm:4.13.1"
|
||||
"@semaphore-protocol/proof": "npm:4.13.1"
|
||||
"@semaphore-protocol/group": "npm:4.14.0"
|
||||
"@semaphore-protocol/identity": "npm:4.14.0"
|
||||
"@semaphore-protocol/proof": "npm:4.14.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/data@npm:4.13.1, @semaphore-protocol/data@workspace:packages/data":
|
||||
"@semaphore-protocol/data@npm:4.14.0, @semaphore-protocol/data@workspace:packages/data":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/data@workspace:packages/data"
|
||||
dependencies:
|
||||
"@rollup/plugin-json": "npm:^6.1.0"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@zk-kit/utils": "npm:1.3.0"
|
||||
axios: "npm:1.6.6"
|
||||
ethers: "npm:6.13.4"
|
||||
@@ -7746,7 +7746,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/group@npm:4.13.1, @semaphore-protocol/group@workspace:packages/group":
|
||||
"@semaphore-protocol/group@npm:4.14.0, @semaphore-protocol/group@workspace:packages/group":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/group@workspace:packages/group"
|
||||
dependencies:
|
||||
@@ -7760,13 +7760,13 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/hardhat@npm:4.13.1, @semaphore-protocol/hardhat@workspace:packages/hardhat":
|
||||
"@semaphore-protocol/hardhat@npm:4.14.0, @semaphore-protocol/hardhat@workspace:packages/hardhat":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/hardhat@workspace:packages/hardhat"
|
||||
dependencies:
|
||||
"@nomicfoundation/hardhat-ethers": "npm:^3.0.0"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/contracts": "npm:4.13.1"
|
||||
"@semaphore-protocol/contracts": "npm:4.14.0"
|
||||
ethers: "npm:^6.13.4"
|
||||
hardhat: "npm:^2.19.4"
|
||||
hardhat-dependency-compiler: "npm:^1.1.3"
|
||||
@@ -7778,7 +7778,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/identity@npm:4.13.1, @semaphore-protocol/identity@workspace:packages/identity":
|
||||
"@semaphore-protocol/identity@npm:4.14.0, @semaphore-protocol/identity@workspace:packages/identity":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/identity@workspace:packages/identity"
|
||||
dependencies:
|
||||
@@ -7794,14 +7794,14 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/proof@npm:4.13.1, @semaphore-protocol/proof@workspace:packages/proof":
|
||||
"@semaphore-protocol/proof@npm:4.14.0, @semaphore-protocol/proof@workspace:packages/proof":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/proof@workspace:packages/proof"
|
||||
dependencies:
|
||||
"@rollup/plugin-alias": "npm:^5.1.0"
|
||||
"@rollup/plugin-json": "npm:^6.1.0"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@types/snarkjs": "npm:^0"
|
||||
"@zk-kit/artifacts": "npm:2.0.1"
|
||||
"@zk-kit/utils": "npm:1.3.0"
|
||||
@@ -7811,12 +7811,12 @@ __metadata:
|
||||
rollup-plugin-cleanup: "npm:^3.2.1"
|
||||
snarkjs: "npm:0.7.5"
|
||||
peerDependencies:
|
||||
"@semaphore-protocol/group": 4.13.1
|
||||
"@semaphore-protocol/identity": 4.13.1
|
||||
"@semaphore-protocol/group": 4.14.0
|
||||
"@semaphore-protocol/identity": 4.14.0
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/utils@npm:4.13.1, @semaphore-protocol/utils@workspace:packages/utils":
|
||||
"@semaphore-protocol/utils@npm:4.14.0, @semaphore-protocol/utils@workspace:packages/utils":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/utils@workspace:packages/utils"
|
||||
dependencies:
|
||||
@@ -8373,6 +8373,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/counter@npm:^0.1.3":
|
||||
version: 0.1.3
|
||||
resolution: "@swc/counter@npm:0.1.3"
|
||||
checksum: 10/df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/helpers@npm:0.5.2":
|
||||
version: 0.5.2
|
||||
resolution: "@swc/helpers@npm:0.5.2"
|
||||
@@ -8382,6 +8389,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/helpers@npm:0.5.5":
|
||||
version: 0.5.5
|
||||
resolution: "@swc/helpers@npm:0.5.5"
|
||||
dependencies:
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
tslib: "npm:^2.4.0"
|
||||
checksum: 10/1c5ef04f642542212df28c669438f3e0f459dcde7b448a5b1fcafb2e9e4f13e76d8428535a270e91ed123dd2a21189dbed34086b88a8cf68baf84984d6d0e39b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@szmarczak/http-timer@npm:^5.0.1":
|
||||
version: 5.0.1
|
||||
resolution: "@szmarczak/http-timer@npm:5.0.1"
|
||||
@@ -11664,7 +11681,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001579, caniuse-lite@npm:^1.0.30001587, caniuse-lite@npm:^1.0.30001599":
|
||||
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001579, caniuse-lite@npm:^1.0.30001587, caniuse-lite@npm:^1.0.30001599":
|
||||
version: 1.0.30001620
|
||||
resolution: "caniuse-lite@npm:1.0.30001620"
|
||||
checksum: 10/d615ab66eb14d9b621004297a8f61e435dca67e9311f3979e47ee1af1be2a8f14997b947a101073d949b5454dad745cc35134bc3c4295c7f33968f3f665eba19
|
||||
@@ -21721,10 +21738,10 @@ __metadata:
|
||||
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0"
|
||||
"@nomicfoundation/hardhat-toolbox": "npm:^4.0.0"
|
||||
"@nomicfoundation/hardhat-verify": "npm:^2.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.13.1"
|
||||
"@semaphore-protocol/core": "npm:4.13.1"
|
||||
"@semaphore-protocol/hardhat": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/contracts": "npm:4.14.0"
|
||||
"@semaphore-protocol/core": "npm:4.14.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.14.0"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -21757,9 +21774,9 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "monorepo-ethers-web-app@workspace:packages/cli-template-monorepo-ethers/apps/web-app"
|
||||
dependencies:
|
||||
"@semaphore-protocol/core": "npm:4.13.1"
|
||||
"@semaphore-protocol/data": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/core": "npm:4.14.0"
|
||||
"@semaphore-protocol/data": "npm:4.14.0"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@types/node": "npm:^20"
|
||||
"@types/react": "npm:^18"
|
||||
"@types/react-dom": "npm:^18"
|
||||
@@ -21784,10 +21801,10 @@ __metadata:
|
||||
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0"
|
||||
"@nomicfoundation/hardhat-toolbox": "npm:^4.0.0"
|
||||
"@nomicfoundation/hardhat-verify": "npm:^2.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.13.1"
|
||||
"@semaphore-protocol/core": "npm:4.13.1"
|
||||
"@semaphore-protocol/hardhat": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/contracts": "npm:4.14.0"
|
||||
"@semaphore-protocol/core": "npm:4.14.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.14.0"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -21820,9 +21837,9 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "monorepo-subgraph-web-app@workspace:packages/cli-template-monorepo-subgraph/apps/web-app"
|
||||
dependencies:
|
||||
"@semaphore-protocol/core": "npm:4.13.1"
|
||||
"@semaphore-protocol/data": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/core": "npm:4.14.0"
|
||||
"@semaphore-protocol/data": "npm:4.14.0"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@types/node": "npm:^20"
|
||||
"@types/react": "npm:^18"
|
||||
"@types/react-dom": "npm:^18"
|
||||
@@ -22009,61 +22026,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"next@npm:13.5.5":
|
||||
version: 13.5.5
|
||||
resolution: "next@npm:13.5.5"
|
||||
dependencies:
|
||||
"@next/env": "npm:13.5.5"
|
||||
"@next/swc-darwin-arm64": "npm:13.5.5"
|
||||
"@next/swc-darwin-x64": "npm:13.5.5"
|
||||
"@next/swc-linux-arm64-gnu": "npm:13.5.5"
|
||||
"@next/swc-linux-arm64-musl": "npm:13.5.5"
|
||||
"@next/swc-linux-x64-gnu": "npm:13.5.5"
|
||||
"@next/swc-linux-x64-musl": "npm:13.5.5"
|
||||
"@next/swc-win32-arm64-msvc": "npm:13.5.5"
|
||||
"@next/swc-win32-ia32-msvc": "npm:13.5.5"
|
||||
"@next/swc-win32-x64-msvc": "npm:13.5.5"
|
||||
"@swc/helpers": "npm:0.5.2"
|
||||
busboy: "npm:1.6.0"
|
||||
caniuse-lite: "npm:^1.0.30001406"
|
||||
postcss: "npm:8.4.31"
|
||||
styled-jsx: "npm:5.1.1"
|
||||
watchpack: "npm:2.4.0"
|
||||
peerDependencies:
|
||||
"@opentelemetry/api": ^1.1.0
|
||||
react: ^18.2.0
|
||||
react-dom: ^18.2.0
|
||||
sass: ^1.3.0
|
||||
dependenciesMeta:
|
||||
"@next/swc-darwin-arm64":
|
||||
optional: true
|
||||
"@next/swc-darwin-x64":
|
||||
optional: true
|
||||
"@next/swc-linux-arm64-gnu":
|
||||
optional: true
|
||||
"@next/swc-linux-arm64-musl":
|
||||
optional: true
|
||||
"@next/swc-linux-x64-gnu":
|
||||
optional: true
|
||||
"@next/swc-linux-x64-musl":
|
||||
optional: true
|
||||
"@next/swc-win32-arm64-msvc":
|
||||
optional: true
|
||||
"@next/swc-win32-ia32-msvc":
|
||||
optional: true
|
||||
"@next/swc-win32-x64-msvc":
|
||||
optional: true
|
||||
peerDependenciesMeta:
|
||||
"@opentelemetry/api":
|
||||
optional: true
|
||||
sass:
|
||||
optional: true
|
||||
bin:
|
||||
next: dist/bin/next
|
||||
checksum: 10/9e6aa7fd7df96caeeaaf5436b839fa85aedd8f1f9ee695add0e0346bf9941683dd5d81dbcc60d5e19e5b630959a8abee29c523856b21e13419c795882fcb8ef6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"next@npm:14.1.0":
|
||||
version: 14.1.0
|
||||
resolution: "next@npm:14.1.0"
|
||||
@@ -22119,6 +22081,64 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"next@npm:14.2.35":
|
||||
version: 14.2.35
|
||||
resolution: "next@npm:14.2.35"
|
||||
dependencies:
|
||||
"@next/env": "npm:14.2.35"
|
||||
"@next/swc-darwin-arm64": "npm:14.2.33"
|
||||
"@next/swc-darwin-x64": "npm:14.2.33"
|
||||
"@next/swc-linux-arm64-gnu": "npm:14.2.33"
|
||||
"@next/swc-linux-arm64-musl": "npm:14.2.33"
|
||||
"@next/swc-linux-x64-gnu": "npm:14.2.33"
|
||||
"@next/swc-linux-x64-musl": "npm:14.2.33"
|
||||
"@next/swc-win32-arm64-msvc": "npm:14.2.33"
|
||||
"@next/swc-win32-ia32-msvc": "npm:14.2.33"
|
||||
"@next/swc-win32-x64-msvc": "npm:14.2.33"
|
||||
"@swc/helpers": "npm:0.5.5"
|
||||
busboy: "npm:1.6.0"
|
||||
caniuse-lite: "npm:^1.0.30001579"
|
||||
graceful-fs: "npm:^4.2.11"
|
||||
postcss: "npm:8.4.31"
|
||||
styled-jsx: "npm:5.1.1"
|
||||
peerDependencies:
|
||||
"@opentelemetry/api": ^1.1.0
|
||||
"@playwright/test": ^1.41.2
|
||||
react: ^18.2.0
|
||||
react-dom: ^18.2.0
|
||||
sass: ^1.3.0
|
||||
dependenciesMeta:
|
||||
"@next/swc-darwin-arm64":
|
||||
optional: true
|
||||
"@next/swc-darwin-x64":
|
||||
optional: true
|
||||
"@next/swc-linux-arm64-gnu":
|
||||
optional: true
|
||||
"@next/swc-linux-arm64-musl":
|
||||
optional: true
|
||||
"@next/swc-linux-x64-gnu":
|
||||
optional: true
|
||||
"@next/swc-linux-x64-musl":
|
||||
optional: true
|
||||
"@next/swc-win32-arm64-msvc":
|
||||
optional: true
|
||||
"@next/swc-win32-ia32-msvc":
|
||||
optional: true
|
||||
"@next/swc-win32-x64-msvc":
|
||||
optional: true
|
||||
peerDependenciesMeta:
|
||||
"@opentelemetry/api":
|
||||
optional: true
|
||||
"@playwright/test":
|
||||
optional: true
|
||||
sass:
|
||||
optional: true
|
||||
bin:
|
||||
next: dist/bin/next
|
||||
checksum: 10/3647056e208cf0b19821d761841b378c8fb489b291acc8dc4d80a7afe6b1850b30dad91e1766301feda03360275347881d6ead068f1f944d823b4f91177f35ae
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"no-case@npm:^3.0.4":
|
||||
version: 3.0.4
|
||||
resolution: "no-case@npm:3.0.4"
|
||||
@@ -26328,7 +26348,7 @@ __metadata:
|
||||
"@docusaurus/preset-classic": "npm:3.5.2"
|
||||
"@docusaurus/tsconfig": "npm:3.5.2"
|
||||
"@mdx-js/react": "npm:^3.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.13.1"
|
||||
"@semaphore-protocol/utils": "npm:4.14.0"
|
||||
"@svgr/webpack": "npm:^5.5.0"
|
||||
"@types/react": "npm:^18.2.29"
|
||||
clsx: "npm:^1.2.1"
|
||||
@@ -26416,7 +26436,7 @@ __metadata:
|
||||
"@types/react": "npm:^18"
|
||||
"@types/react-dom": "npm:^18"
|
||||
framer-motion: "npm:^10.16.4"
|
||||
next: "npm:13.5.5"
|
||||
next: "npm:14.2.35"
|
||||
react: "npm:^18"
|
||||
react-code-blocks: "npm:^0.1.4"
|
||||
react-dom: "npm:^18"
|
||||
@@ -29463,16 +29483,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"watchpack@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "watchpack@npm:2.4.0"
|
||||
dependencies:
|
||||
glob-to-regexp: "npm:^0.4.1"
|
||||
graceful-fs: "npm:^4.1.2"
|
||||
checksum: 10/4280b45bc4b5d45d5579113f2a4af93b67ae1b9607cc3d86ae41cdd53ead10db5d9dc3237f24256d05ef88b28c69a02712f78e434cb7ecc8edaca134a56e8cab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"watchpack@npm:^2.4.1":
|
||||
version: 2.4.1
|
||||
resolution: "watchpack@npm:2.4.1"
|
||||
|
||||