From 96b95948d71edef9bc2da3770b856979ba246163 Mon Sep 17 00:00:00 2001 From: cedoor Date: Thu, 9 May 2024 15:22:52 +0100 Subject: [PATCH 1/9] feat(identity-proof): add identity-proof circuit --- README.md | 19 + packages/identity-proof/.gitignore | 3 + packages/identity-proof/.mocharc.json | 7 + packages/identity-proof/LICENSE | 21 + packages/identity-proof/README.md | 58 ++ packages/identity-proof/circomkit.json | 17 + packages/identity-proof/circuits.json | 7 + packages/identity-proof/package.json | 36 ++ .../identity-proof/src/identity-proof.circom | 37 ++ packages/identity-proof/tests/common.ts | 11 + .../tests/identity-proof.test.ts | 35 ++ packages/identity-proof/tsconfig.json | 8 + yarn.lock | 568 ++++++++++++++++-- 13 files changed, 782 insertions(+), 45 deletions(-) create mode 100644 packages/identity-proof/.gitignore create mode 100644 packages/identity-proof/.mocharc.json create mode 100644 packages/identity-proof/LICENSE create mode 100644 packages/identity-proof/README.md create mode 100644 packages/identity-proof/circomkit.json create mode 100644 packages/identity-proof/circuits.json create mode 100644 packages/identity-proof/package.json create mode 100644 packages/identity-proof/src/identity-proof.circom create mode 100644 packages/identity-proof/tests/common.ts create mode 100644 packages/identity-proof/tests/identity-proof.test.ts create mode 100644 packages/identity-proof/tsconfig.json diff --git a/README.md b/README.md index 6a50e28..dfe5a05 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,25 @@ + + + + @semaphore-extensions/identity-proof.circom + + + + + + NPM Version + + + + + + NPM Downloads + + + diff --git a/packages/identity-proof/.gitignore b/packages/identity-proof/.gitignore new file mode 100644 index 0000000..317889d --- /dev/null +++ b/packages/identity-proof/.gitignore @@ -0,0 +1,3 @@ +ptau +main +test diff --git a/packages/identity-proof/.mocharc.json b/packages/identity-proof/.mocharc.json new file mode 100644 index 0000000..0319b93 --- /dev/null +++ b/packages/identity-proof/.mocharc.json @@ -0,0 +1,7 @@ +{ + "extension": ["ts"], + "require": "ts-node/register", + "spec": "./tests/*.test.ts", + "timeout": 100000, + "exit": true +} diff --git a/packages/identity-proof/LICENSE b/packages/identity-proof/LICENSE new file mode 100644 index 0000000..8ef16f7 --- /dev/null +++ b/packages/identity-proof/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 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 +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/identity-proof/README.md b/packages/identity-proof/README.md new file mode 100644 index 0000000..083f2d3 --- /dev/null +++ b/packages/identity-proof/README.md @@ -0,0 +1,58 @@ +

+

+ Semaphore Identity Proof +

+

A circuit to prove the ownership of a Semaphore identity without revealing the private key.

+

+ +

+ + + + + NPM license + + + NPM version + + + Downloads + +

+ +
+

+ + 👥 Contributing + +   |   + + 🤝 Code of conduct + +   |   + + 🔎 Issues + +   |   + + 🗣️ Chat & Support + +

+
+ +> [!WARNING] +> This library has **not** been audited. + +## 🛠 Install + +Install the `@zk-kit/circuits` package with npm: + +```bash +npm i @zk-kit/circuits --save +``` + +or yarn: + +```bash +yarn add @zk-kit/circuits +``` diff --git a/packages/identity-proof/circomkit.json b/packages/identity-proof/circomkit.json new file mode 100644 index 0000000..90bc93a --- /dev/null +++ b/packages/identity-proof/circomkit.json @@ -0,0 +1,17 @@ +{ + "protocol": "groth16", + "prime": "bn128", + "version": "2.1.5", + "circuits": "./circuits.json", + "dirPtau": "./ptau", + "dirCircuits": "./src", + "dirInputs": "./inputs", + "dirBuild": "./build", + "optimization": 2, + "inspect": true, + "include": ["../../node_modules/circomlib/circuits"], + "groth16numContributions": 1, + "groth16askForEntropy": false, + "logLevel": "INFO", + "verbose": true +} diff --git a/packages/identity-proof/circuits.json b/packages/identity-proof/circuits.json new file mode 100644 index 0000000..e87028f --- /dev/null +++ b/packages/identity-proof/circuits.json @@ -0,0 +1,7 @@ +{ + "identity-proof": { + "file": "identity-proof", + "template": "IdentityProof", + "pubs": ["scope"] + } +} diff --git a/packages/identity-proof/package.json b/packages/identity-proof/package.json new file mode 100644 index 0000000..4cce02e --- /dev/null +++ b/packages/identity-proof/package.json @@ -0,0 +1,36 @@ +{ + "name": "@semaphore-extensions/identity-proof.circom", + "version": "1.0.0-beta", + "description": "A circuit to prove the ownership of a Semaphore identity without revealing the private key.", + "license": "MIT", + "files": [ + "**/*.circom", + "!main", + "!test", + "LICENSE", + "README.md" + ], + "repository": "https://github.com/semaphore-protocol/extensions", + "homepage": "https://github.com/semaphore-protocol/extensions/tree/main/packages/identity-proof", + "bugs": { + "url": "https://github.com/semaphore-protocol/extensions.git/issues" + }, + "scripts": { + "compile": "circomkit compile identity-proof", + "setup": "circomkit setup identity-proof", + "test": "mocha" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "circomlib": "2.0.5" + }, + "devDependencies": { + "@types/mocha": "^10.0.6", + "@zk-kit/eddsa-poseidon": "^1.0.0-beta", + "circomkit": "^0.0.19", + "mocha": "^10.2.0", + "poseidon-lite": "^0.2.0" + } +} diff --git a/packages/identity-proof/src/identity-proof.circom b/packages/identity-proof/src/identity-proof.circom new file mode 100644 index 0000000..59b0e2f --- /dev/null +++ b/packages/identity-proof/src/identity-proof.circom @@ -0,0 +1,37 @@ +pragma circom 2.1.5; + +include "babyjub.circom"; +include "poseidon.circom"; +include "comparators.circom"; + +// This circuit can be used to prove the possession of a Semaphore private key +// without revealing the private key itself. It utilizes +// the {@link https://eips.ethereum.org/EIPS/eip-2494|Baby Jubjub} elliptic curve, the Poseidon hash function which a highly efficient +// and secure hash function suited for zero-knowledge proof contexts. +// A scope value can be used to define a nullifier to prevent the same +// proof from being re-used twice. +template IdentityProof() { + // The circuit takes two inputs: the private key and an additional scope parameter. + signal input secret; + signal input scope; + + signal output commitment; + + // The secret scalar must be in the prime subgroup order 'l'. + var l = 2736030358979909402780800718157159386076813972158567259200215660948447373041; + + component isLessThan = LessThan(251); + isLessThan.in <== [secret, l]; + isLessThan.out === 1; + + var Ax, Ay; + + // Get the two Baby Jubjub points using the private key. + (Ax, Ay) = BabyPbk()(secret); + + // It applies the Poseidon hash function to the to Baby Jubjub points to produce the commitment. + commitment <== Poseidon(2)([Ax, Ay]); + + // Dummy constraint to prevent compiler from optimizing it. + signal dummySquare <== scope * scope; +} diff --git a/packages/identity-proof/tests/common.ts b/packages/identity-proof/tests/common.ts new file mode 100644 index 0000000..9adb499 --- /dev/null +++ b/packages/identity-proof/tests/common.ts @@ -0,0 +1,11 @@ +import { Circomkit } from "circomkit" +import { readFileSync } from "fs" +import path from "path" + +const configFilePath = path.join(__dirname, "../circomkit.json") +const config = JSON.parse(readFileSync(configFilePath, "utf-8")) + +export const circomkit = new Circomkit({ + ...config, + verbose: false +}) diff --git a/packages/identity-proof/tests/identity-proof.test.ts b/packages/identity-proof/tests/identity-proof.test.ts new file mode 100644 index 0000000..b660392 --- /dev/null +++ b/packages/identity-proof/tests/identity-proof.test.ts @@ -0,0 +1,35 @@ +import { WitnessTester } from "circomkit" +import { poseidon2 } from "poseidon-lite" +import { deriveSecretScalar, derivePublicKey } from "@zk-kit/eddsa-poseidon" +import { circomkit } from "./common" + +describe("identity-proof", () => { + let circuit: WitnessTester<["secret", "scope"], ["commitment"]> + + const privateKey = Buffer.from("secret") + const scope = 2 + + const publicKey = derivePublicKey(privateKey) + const commitment = poseidon2(publicKey) + + const INPUT = { + secret: deriveSecretScalar(privateKey), + scope + } + + const OUTPUT = { + commitment + } + + before(async () => { + circuit = await circomkit.WitnessTester("identity-proof", { + file: "identity-proof", + template: "IdentityProof", + pubs: ["scope"] + }) + }) + + it("Should compute the commitment correctly", async () => { + await circuit.expectPass(INPUT, OUTPUT) + }) +}) diff --git a/packages/identity-proof/tsconfig.json b/packages/identity-proof/tsconfig.json new file mode 100644 index 0000000..26dae10 --- /dev/null +++ b/packages/identity-proof/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true + }, + "include": ["tests/**/*"] +} diff --git a/yarn.lock b/yarn.lock index c2948ef..0b66b83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2376,6 +2376,16 @@ __metadata: languageName: node linkType: hard +"@iden3/binfileutils@npm:0.0.11": + version: 0.0.11 + resolution: "@iden3/binfileutils@npm:0.0.11" + dependencies: + fastfile: "npm:0.0.20" + ffjavascript: "npm:^0.2.48" + checksum: 10/c9c59e781478d13033d4beb3c574606fae3626e0bd8722c062d0acdb52d3331c4f23a454d8dffa64d436feae530441750cc9469c56085c14089d41e6b13ba9e0 + languageName: node + linkType: hard + "@iden3/binfileutils@npm:0.0.12": version: 0.0.12 resolution: "@iden3/binfileutils@npm:0.0.12" @@ -2994,6 +3004,19 @@ __metadata: languageName: unknown linkType: soft +"@semaphore-extensions/identity-proof.circom@workspace:packages/identity-proof": + version: 0.0.0-use.local + resolution: "@semaphore-extensions/identity-proof.circom@workspace:packages/identity-proof" + dependencies: + "@types/mocha": "npm:^10.0.6" + "@zk-kit/eddsa-poseidon": "npm:^1.0.0-beta" + circomkit: "npm:^0.0.19" + circomlib: "npm:2.0.5" + mocha: "npm:^10.2.0" + poseidon-lite: "npm:^0.2.0" + languageName: unknown + linkType: soft + "@semaphore-protocol/core@npm:4.0.0-beta.9": version: 4.0.0-beta.9 resolution: "@semaphore-protocol/core@npm:4.0.0-beta.9" @@ -3352,6 +3375,13 @@ __metadata: languageName: node linkType: hard +"@types/mocha@npm:^10.0.6": + version: 10.0.6 + resolution: "@types/mocha@npm:10.0.6" + checksum: 10/fc73626e81e89c32d06b7ff9b72c4177b46d579cdd932f796614adc026852d84cb849d743473ba572cb4d9ea6d8c04e3749552d326c26495ec1c4b46e6e0a0c0 + languageName: node + linkType: hard + "@types/ms@npm:*": version: 0.7.34 resolution: "@types/ms@npm:0.7.34" @@ -3687,6 +3717,15 @@ __metadata: languageName: node linkType: hard +"@zk-kit/baby-jubjub@npm:1.0.0-beta": + version: 1.0.0-beta + resolution: "@zk-kit/baby-jubjub@npm:1.0.0-beta" + dependencies: + "@zk-kit/utils": "npm:1.0.0-beta" + checksum: 10/417b15946916a398117e55c7293391c3231d5d9b59deda7a745e80ca8816fa79048bcfc0dec9ed490fec9599e1bee1d73c3148b53e373a1faea57f20d5af9afd + languageName: node + linkType: hard + "@zk-kit/eddsa-poseidon@npm:0.10.0": version: 0.10.0 resolution: "@zk-kit/eddsa-poseidon@npm:0.10.0" @@ -3698,6 +3737,17 @@ __metadata: languageName: node linkType: hard +"@zk-kit/eddsa-poseidon@npm:^1.0.0-beta": + version: 1.0.0-beta + resolution: "@zk-kit/eddsa-poseidon@npm:1.0.0-beta" + dependencies: + "@zk-kit/baby-jubjub": "npm:1.0.0-beta" + "@zk-kit/utils": "npm:1.0.0-beta.4" + buffer: "npm:6.0.3" + checksum: 10/630986ae3d32debf796a29eed7a6e1cd8c3dd8bae48f58f2756c5d92f524d9d2bc586662da7726d9fe40c2e2a43e4011b64916a75f4b61c803ca7255bd5e3670 + languageName: node + linkType: hard + "@zk-kit/groth16@npm:0.3.0": version: 0.3.0 resolution: "@zk-kit/groth16@npm:0.3.0" @@ -3859,6 +3909,13 @@ __metadata: languageName: node linkType: hard +"ansi-colors@npm:4.1.1": + version: 4.1.1 + resolution: "ansi-colors@npm:4.1.1" + checksum: 10/e862fddd0a9ca88f1e7c9312ea70674cec3af360c994762309f6323730525e92c77d2715ee5f08aa8f438b7ca18efe378af647f501fc92b15b8e4b3b52d09db4 + languageName: node + linkType: hard + "ansi-escapes@npm:^4.2.1": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -4121,6 +4178,13 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: 10/fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf + languageName: node + linkType: hard + "ast-types-flow@npm:^0.0.8": version: 0.0.8 resolution: "ast-types-flow@npm:0.0.8" @@ -4384,6 +4448,13 @@ __metadata: languageName: node linkType: hard +"browser-stdout@npm:1.3.1": + version: 1.3.1 + resolution: "browser-stdout@npm:1.3.1" + checksum: 10/ac70a84e346bb7afc5045ec6f22f6a681b15a4057447d4cc1c48a25c6dedb302a49a46dd4ddfb5cdd9c96e0c905a8539be1b98ae7bc440512152967009ec7015 + languageName: node + linkType: hard + "browserslist@npm:^4.22.2": version: 4.23.0 resolution: "browserslist@npm:4.23.0" @@ -4516,7 +4587,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0": +"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d @@ -4573,6 +4644,21 @@ __metadata: languageName: node linkType: hard +"chai@npm:^4.3.6, chai@npm:^4.3.7": + version: 4.4.1 + resolution: "chai@npm:4.4.1" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.0.8" + checksum: 10/c6d7aba913a67529c68dbec3673f94eb9c586c5474cc5142bd0b587c9c9ec9e5fbaa937e038ecaa6475aea31433752d5fabdd033b9248bde6ae53befcde774ae + languageName: node + linkType: hard + "chalk@npm:5.3.0, chalk@npm:^5.3.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" @@ -4591,7 +4677,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.0.2": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -4669,6 +4755,15 @@ __metadata: languageName: node linkType: hard +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: 10/e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399 + languageName: node + linkType: hard + "check-types@npm:^11.2.3": version: 11.2.3 resolution: "check-types@npm:11.2.3" @@ -4676,6 +4771,32 @@ __metadata: languageName: node linkType: hard +"child_process@npm:^1.0.2": + version: 1.0.2 + resolution: "child_process@npm:1.0.2" + checksum: 10/bd814d82bc8c6e85ed6fb157878978121cd03b5296c09f6135fa3d081fd9a6a617a6d509c50397711df713af403331241a9c0397a7fad30672051485e156c2a1 + languageName: node + linkType: hard + +"chokidar@npm:3.5.3": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10/863e3ff78ee7a4a24513d2a416856e84c8e4f5e60efbe03e8ab791af1a183f569b62fc6f6b8044e2804966cb81277ddbbc1dc374fba3265bd609ea8efd62f5b3 + languageName: node + linkType: hard + "chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" @@ -4709,6 +4830,17 @@ __metadata: languageName: node linkType: hard +"circom_runtime@npm:0.1.21": + version: 0.1.21 + resolution: "circom_runtime@npm:0.1.21" + dependencies: + ffjavascript: "npm:0.2.56" + bin: + calcwit: calcwit.js + checksum: 10/7290a832fcdfc0f5840351ebdcb5fafb030121f122b27e17b06c241e83bf93f57ddf555e03e21e2dd726758537701dd3dcb4b09dd5825cb36d816137f8161e58 + languageName: node + linkType: hard + "circom_runtime@npm:0.1.24": version: 0.1.24 resolution: "circom_runtime@npm:0.1.24" @@ -4731,6 +4863,43 @@ __metadata: languageName: node linkType: hard +"circom_tester@npm:^0.0.19": + version: 0.0.19 + resolution: "circom_tester@npm:0.0.19" + dependencies: + chai: "npm:^4.3.6" + child_process: "npm:^1.0.2" + ffjavascript: "npm:^0.2.56" + fnv-plus: "npm:^1.3.1" + r1csfile: "npm:^0.0.41" + snarkjs: "npm:0.5.0" + tmp-promise: "npm:^3.0.3" + util: "npm:^0.12.4" + checksum: 10/af2415a09ca7ca2692c798d7070a01c4145ec79767043e2c964c28447d7a50dfe4bd15da319e31140864148c840488424030a02bf24c340fbb1c2ffdae5748de + languageName: node + linkType: hard + +"circomkit@npm:^0.0.19": + version: 0.0.19 + resolution: "circomkit@npm:0.0.19" + dependencies: + chai: "npm:^4.3.7" + circom_tester: "npm:^0.0.19" + loglevel: "npm:^1.8.1" + snarkjs: "npm:^0.7.0" + bin: + circomkit: dist/bin/index.js + checksum: 10/eaed7b3494d1269c4fa347e9eeef2efb8e119870e14a06b1adeca5b0d58c60d05730f23d9b5aa4bc917ee482ebb13334098b0a8d5a1ada27b3b0f18b42b2f5dc + languageName: node + linkType: hard + +"circomlib@npm:2.0.5": + version: 2.0.5 + resolution: "circomlib@npm:2.0.5" + checksum: 10/eb9413d2deb5664345c5a74b293d18ffd89c92262d403bdb568a2294f80fc6b0d300f54252607d57c2fc7f6732c62d017ed417eea385fa0d36a82a9937a1a790 + languageName: node + linkType: hard + "citty@npm:^0.1.6": version: 0.1.6 resolution: "citty@npm:0.1.6" @@ -4773,6 +4942,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10/db858c49af9d59a32d603987e6fddaca2ce716cd4602ba5a2bb3a5af1351eebe82aba8dff3ef3e1b331f7fa9d40ca66e67bdf8e7c327ce0ea959747ead65c0ef + languageName: node + linkType: hard + "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" @@ -5146,6 +5326,13 @@ __metadata: languageName: node linkType: hard +"decamelize@npm:^4.0.0": + version: 4.0.0 + resolution: "decamelize@npm:4.0.0" + checksum: 10/b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 + languageName: node + linkType: hard + "dedent@npm:^1.0.0": version: 1.5.1 resolution: "dedent@npm:1.5.1" @@ -5158,6 +5345,15 @@ __metadata: languageName: node linkType: hard +"deep-eql@npm:^4.1.3": + version: 4.1.3 + resolution: "deep-eql@npm:4.1.3" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 10/12ce93ae63de187e77b076d3d51bfc28b11f98910a22c18714cce112791195e86a94f97788180994614b14562a86c9763f67c69f785e4586f806b5df39bf9301 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -5272,6 +5468,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:5.0.0": + version: 5.0.0 + resolution: "diff@npm:5.0.0" + checksum: 10/4a179a75b17cbb420eb9145be913f9ddb34b47cb2ba4301e80ae745122826a468f02ca8f5e56945958de26ace594899c8381acb6659c88e7803ef078b53d690c + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -5623,6 +5826,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:4.0.0, escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -5637,13 +5847,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 - languageName: node - linkType: hard - "escodegen@npm:^1.8.1": version: 1.14.3 resolution: "escodegen@npm:1.14.3" @@ -6190,6 +6393,17 @@ __metadata: languageName: node linkType: hard +"ffjavascript@npm:0.2.56": + version: 0.2.56 + resolution: "ffjavascript@npm:0.2.56" + dependencies: + wasmbuilder: "npm:0.0.16" + wasmcurves: "npm:0.2.0" + web-worker: "npm:^1.2.0" + checksum: 10/d6ce417158cb4cad94ec21b75c3e083ef2daaddc30f168e731abaa017600e8447e17c21249b9bb7186710144a62af7c06f5f0f0351d025525f0c186b2c8ab4b0 + languageName: node + linkType: hard + "ffjavascript@npm:0.2.60": version: 0.2.60 resolution: "ffjavascript@npm:0.2.60" @@ -6212,6 +6426,17 @@ __metadata: languageName: node linkType: hard +"ffjavascript@npm:^0.2.48, ffjavascript@npm:^0.2.56": + version: 0.2.63 + resolution: "ffjavascript@npm:0.2.63" + dependencies: + wasmbuilder: "npm:0.0.16" + wasmcurves: "npm:0.2.2" + web-worker: "npm:1.2.0" + checksum: 10/2886a8737eb200dcb3f592a168d525bbde270e362589b5cb7dfa1cc86b78a3c455858664be994dae5c7acbf7eb831250afdf4270fc900d90b02ac6023a74c302 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -6246,23 +6471,23 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" +"find-up@npm:5.0.0, find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" dependencies: - locate-path: "npm:^5.0.0" + locate-path: "npm:^6.0.0" path-exists: "npm:^4.0.0" - checksum: 10/4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 languageName: node linkType: hard -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" dependencies: - locate-path: "npm:^6.0.0" + locate-path: "npm:^5.0.0" path-exists: "npm:^4.0.0" - checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + checksum: 10/4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 languageName: node linkType: hard @@ -6304,6 +6529,13 @@ __metadata: languageName: node linkType: hard +"fnv-plus@npm:^1.3.1": + version: 1.3.1 + resolution: "fnv-plus@npm:1.3.1" + checksum: 10/40d9e772de591eb32c73f86d5980b3fe40deef7ed60864793c1eb0a98099da53ede7cf00d3d2ab133f64fb383519e9009f6eb7413eaed6f4af1ad2fb0791df60 + languageName: node + linkType: hard + "focus-lock@npm:^1.3.2": version: 1.3.5 resolution: "focus-lock@npm:1.3.5" @@ -6453,6 +6685,13 @@ __metadata: languageName: node linkType: hard +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10/3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + languageName: node + linkType: hard + "get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" @@ -6554,6 +6793,19 @@ __metadata: languageName: node linkType: hard +"glob@npm:8.1.0": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10/9aab1c75eb087c35dbc41d1f742e51d0507aa2b14c910d96fb8287107a10a22f4bbdce26fc0a3da4c69a20f7b26d62f1640b346a4f6e6becfff47f335bb1dc5e + languageName: node + linkType: hard + "glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": version: 10.3.12 resolution: "glob@npm:10.3.12" @@ -6716,6 +6968,15 @@ __metadata: languageName: node linkType: hard +"he@npm:1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 10/d09b2243da4e23f53336e8de3093e5c43d2c39f8d0d18817abfa32ce3e9355391b2edb4bb5edc376aea5d4b0b59d6a0482aab4c52bc02ef95751e4b818e847f1 + languageName: node + linkType: hard + "hoist-non-react-statics@npm:^3.3.1": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -7165,6 +7426,13 @@ __metadata: languageName: node linkType: hard +"is-plain-obj@npm:^2.1.0": + version: 2.1.0 + resolution: "is-plain-obj@npm:2.1.0" + checksum: 10/cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa + languageName: node + linkType: hard + "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -7241,6 +7509,13 @@ __metadata: languageName: node linkType: hard +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10/a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 + languageName: node + linkType: hard + "is-weakmap@npm:^2.0.2": version: 2.0.2 resolution: "is-weakmap@npm:2.0.2" @@ -7882,26 +8157,26 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" +"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" + argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379 + checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140 languageName: node linkType: hard -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" dependencies: - argparse: "npm:^2.0.1" + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140 + checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379 languageName: node linkType: hard @@ -8224,6 +8499,16 @@ __metadata: languageName: node linkType: hard +"log-symbols@npm:4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10/fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 + languageName: node + linkType: hard + "log-update@npm:^6.0.0": version: 6.0.0 resolution: "log-update@npm:6.0.0" @@ -8237,6 +8522,13 @@ __metadata: languageName: node linkType: hard +"loglevel@npm:^1.8.1": + version: 1.9.1 + resolution: "loglevel@npm:1.9.1" + checksum: 10/863cbbcddf850a937482c604e2d11586574a5110b746bb49c7cc04739e01f6035f6db841d25377106dd330bca7142d74995f15a97c5f3ea0af86d9472d4a99f4 + languageName: node + linkType: hard + "logplease@npm:^1.2.15": version: 1.2.15 resolution: "logplease@npm:1.2.15" @@ -8255,6 +8547,15 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^2.3.6": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 10/635c8f0914c2ce7ecfe4e239fbaf0ce1d2c00e4246fafcc4ed000bfdb1b8f89d05db1a220054175cca631ebf3894872a26fffba0124477fcb562f78762848fb1 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.2.0 resolution: "lru-cache@npm:10.2.0" @@ -8403,6 +8704,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:5.0.1": + version: 5.0.1 + resolution: "minimatch@npm:5.0.1" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/2656580f18d9f38ada186196fcc72dc9076d70f7227adc664e72614d464e075dc4ae3936e6742519e09e336996ef33c6035e606888b12f65ca7fda792ddd2085 + languageName: node + linkType: hard + "minimatch@npm:9.0.3": version: 9.0.3 resolution: "minimatch@npm:9.0.3" @@ -8551,6 +8861,37 @@ __metadata: languageName: node linkType: hard +"mocha@npm:^10.2.0": + version: 10.4.0 + resolution: "mocha@npm:10.4.0" + dependencies: + ansi-colors: "npm:4.1.1" + browser-stdout: "npm:1.3.1" + chokidar: "npm:3.5.3" + debug: "npm:4.3.4" + diff: "npm:5.0.0" + escape-string-regexp: "npm:4.0.0" + find-up: "npm:5.0.0" + glob: "npm:8.1.0" + he: "npm:1.2.0" + js-yaml: "npm:4.1.0" + log-symbols: "npm:4.1.0" + minimatch: "npm:5.0.1" + ms: "npm:2.1.3" + serialize-javascript: "npm:6.0.0" + strip-json-comments: "npm:3.1.1" + supports-color: "npm:8.1.1" + workerpool: "npm:6.2.1" + yargs: "npm:16.2.0" + yargs-parser: "npm:20.2.4" + yargs-unparser: "npm:2.0.0" + bin: + _mocha: bin/_mocha + mocha: bin/mocha.js + checksum: 10/0147b2a86c8a3b134b3bda949006aa5f2b08db606b9394e38eb3fa0d97dd2f54f06eb4afb270d4ae08aa6fb7674282737ed556b9a8bc407f9b8488380852eca4 + languageName: node + linkType: hard + "mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" @@ -8565,7 +8906,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -9052,6 +9393,13 @@ __metadata: languageName: node linkType: hard +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: 10/b50a4751068aa3a5428f5a0b480deecedc6f537666a3630a0c2ae2d5e7c0f4bf0ee77b48404441ec1220bef0c91625e6030b3d3cf5a32ab0d9764018d1d9dbb6 + languageName: node + linkType: hard + "perf-regexes@npm:^1.0.1": version: 1.0.1 resolution: "perf-regexes@npm:1.0.1" @@ -9116,7 +9464,7 @@ __metadata: languageName: node linkType: hard -"poseidon-lite@npm:0.2.0": +"poseidon-lite@npm:0.2.0, poseidon-lite@npm:^0.2.0": version: 0.2.0 resolution: "poseidon-lite@npm:0.2.0" checksum: 10/63c7668b480ee3d57aaca0eda7e56d563ab2bfcc40bbce0e4bccdc9deed4c0d68255749356e328b622ce8715b1f1ba689fe1a86ca78eb1056a51a18daa252ee1 @@ -9257,6 +9605,18 @@ __metadata: languageName: node linkType: hard +"r1csfile@npm:0.0.41, r1csfile@npm:^0.0.41": + version: 0.0.41 + resolution: "r1csfile@npm:0.0.41" + dependencies: + "@iden3/bigarray": "npm:0.0.2" + "@iden3/binfileutils": "npm:0.0.11" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.56" + checksum: 10/a1cf69502ec7cbbaa934684a2fc0f67d1279312edb7dc45e9fff6c1368277d60f110c9b0c976f8ba33264d27cb9be4d6a21b7961b20cfb9b7ddb3494b6fe1936 + languageName: node + linkType: hard + "r1csfile@npm:0.0.48": version: 0.0.48 resolution: "r1csfile@npm:0.0.48" @@ -9269,6 +9629,15 @@ __metadata: languageName: node linkType: hard +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10/4efd1ad3d88db77c2d16588dc54c2b52fd2461e70fe5724611f38d283857094fe09040fa2c9776366803c3152cf133171b452ef717592b65631ce5dc3a2bdafc + languageName: node + linkType: hard + "rc9@npm:^2.1.1": version: 2.1.1 resolution: "rc9@npm:2.1.1" @@ -9738,6 +10107,13 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:^5.1.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 + languageName: node + linkType: hard + "safe-regex-test@npm:^1.0.3": version: 1.0.3 resolution: "safe-regex-test@npm:1.0.3" @@ -9825,6 +10201,15 @@ __metadata: languageName: node linkType: hard +"serialize-javascript@npm:6.0.0": + version: 6.0.0 + resolution: "serialize-javascript@npm:6.0.0" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10/ed3dabfbb565c48c9eb1ca8fe58f0d256902ab70a8a605be634ddd68388d5f728bb0bd1268e94fab628748ba8ad8392f01b05f3cbe1e4878b5c58c669fd3d1b4 + languageName: node + linkType: hard + "set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -9953,7 +10338,27 @@ __metadata: languageName: node linkType: hard -"snarkjs@npm:0.7.4": +"snarkjs@npm:0.5.0": + version: 0.5.0 + resolution: "snarkjs@npm:0.5.0" + dependencies: + "@iden3/binfileutils": "npm:0.0.11" + bfj: "npm:^7.0.2" + blake2b-wasm: "npm:^2.4.0" + circom_runtime: "npm:0.1.21" + ejs: "npm:^3.1.6" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.56" + js-sha3: "npm:^0.8.0" + logplease: "npm:^1.2.15" + r1csfile: "npm:0.0.41" + bin: + snarkjs: build/cli.cjs + checksum: 10/6f8100e4817e127cbd89d66f11d560c1e8d0d2cb1595c9cc9dc4769a54b29da72d1ac6c6d75f8472620703d31491f33924b77052f7772e5b6b79dd63f12fd518 + languageName: node + linkType: hard + +"snarkjs@npm:0.7.4, snarkjs@npm:^0.7.0": version: 0.7.4 resolution: "snarkjs@npm:0.7.4" dependencies: @@ -10237,7 +10642,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -10251,6 +10656,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:8.1.1, supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -10269,15 +10683,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -10345,6 +10750,22 @@ __metadata: languageName: node linkType: hard +"tmp-promise@npm:^3.0.3": + version: 3.0.3 + resolution: "tmp-promise@npm:3.0.3" + dependencies: + tmp: "npm:^0.2.0" + checksum: 10/0ca65b4f233b1d2b01e17a7a62961d32923e4b27383a370bf4d8d52f1062d79c3250e6b6b706ec390e73c9c58c13dc130b3855eedc89c86c7d90beb28b8382e5 + languageName: node + linkType: hard + +"tmp@npm:^0.2.0": + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 10/7b13696787f159c9754793a83aa79a24f1522d47b87462ddb57c18ee93ff26c74cbb2b8d9138f571d2e0e765c728fb2739863a672b280528512c6d83d511c6fa + languageName: node + linkType: hard + "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -10531,7 +10952,7 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8": +"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d @@ -10779,7 +11200,7 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.12.5": +"util@npm:^0.12.4, util@npm:^0.12.5": version: 0.12.5 resolution: "util@npm:0.12.5" dependencies: @@ -10880,6 +11301,15 @@ __metadata: languageName: node linkType: hard +"wasmcurves@npm:0.2.0": + version: 0.2.0 + resolution: "wasmcurves@npm:0.2.0" + dependencies: + wasmbuilder: "npm:0.0.16" + checksum: 10/38a8e500ba4faa6fc928bc28eb01e65936648ebcf07fb32acb3effe551bfa006ff853eb77280eeeb7093983ce0eb6870c40bbefb42a30768b825f69f12925fe3 + languageName: node + linkType: hard + "wasmcurves@npm:0.2.2": version: 0.2.2 resolution: "wasmcurves@npm:0.2.2" @@ -11007,6 +11437,13 @@ __metadata: languageName: node linkType: hard +"workerpool@npm:6.2.1": + version: 6.2.1 + resolution: "workerpool@npm:6.2.1" + checksum: 10/3e637f76320cab92eaeffa4fbefb351db02e20aa29245d8ee05fa7c088780ef7b4446bfafff2668a22fd94b7d9d97c7020117036ac77a76370ecea278b9a9b91 + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -11116,6 +11553,20 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:20.2.4": + version: 20.2.4 + resolution: "yargs-parser@npm:20.2.4" + checksum: 10/db8f251ae40e24782d5c089ed86883ba3c0ce7f3c174002a67ec500802f928df9d505fea5d04829769221ce20b0f69f6fb1138fbb2e2fb102e3e9d426d20edab + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.2": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 10/0188f430a0f496551d09df6719a9132a3469e47fe2747208b1dd0ab2bb0c512a95d0b081628bbca5400fb20dbf2fabe63d22badb346cecadffdd948b049f3fcc + languageName: node + linkType: hard + "yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -11123,6 +11574,33 @@ __metadata: languageName: node linkType: hard +"yargs-unparser@npm:2.0.0": + version: 2.0.0 + resolution: "yargs-unparser@npm:2.0.0" + dependencies: + camelcase: "npm:^6.0.0" + decamelize: "npm:^4.0.0" + flat: "npm:^5.0.2" + is-plain-obj: "npm:^2.1.0" + checksum: 10/68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 + languageName: node + linkType: hard + +"yargs@npm:16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^20.2.2" + checksum: 10/807fa21211d2117135d557f95fcd3c3d390530cda2eca0c840f1d95f0f40209dcfeb5ec18c785a1f3425896e623e3b2681e8bb7b6600060eda1c3f4804e7957e + languageName: node + linkType: hard + "yargs@npm:^17.0.0, yargs@npm:^17.3.1": version: 17.7.2 resolution: "yargs@npm:17.7.2" From 6e6dda9d84e10f993834613402f5ca603555b979 Mon Sep 17 00:00:00 2001 From: cedoor Date: Thu, 9 May 2024 16:30:46 +0100 Subject: [PATCH 2/9] feat(identity-proof): add identity-proof library --- .eslintignore | 3 + .prettierrc.json | 3 +- jest.config.ts | 2 +- package.json | 3 + .../.gitignore | 0 .../.mocharc.json | 0 packages/identity-proof.circom/LICENSE | 21 + packages/identity-proof.circom/README.md | 58 ++ .../circomkit.json | 0 .../circuits.json | 0 packages/identity-proof.circom/package.json | 36 ++ .../src/identity-proof.circom | 0 .../tests/common.ts | 0 .../tests/identity-proof.test.ts | 1 + packages/identity-proof.circom/tsconfig.json | 8 + packages/identity-proof/.npmrc | 1 + packages/identity-proof/README.md | 112 +++- packages/identity-proof/Verifier.sol | 176 ++++++ packages/identity-proof/build.tsconfig.json | 9 + packages/identity-proof/package.json | 55 +- packages/identity-proof/rollup.config.ts | 24 + packages/identity-proof/src/generate.ts | 51 ++ packages/identity-proof/src/hash.ts | 13 + packages/identity-proof/src/index.ts | 5 + packages/identity-proof/src/to-bigint.ts | 20 + packages/identity-proof/src/types/index.ts | 8 + .../identity-proof/src/verification-key.json | 90 ++++ packages/identity-proof/src/verify.ts | 14 + packages/identity-proof/tests/index.test.ts | 52 ++ packages/identity-proof/tsconfig.json | 8 +- packages/identity-proof/typedoc.json | 3 + types/ffjavascript/index.d.ts | 509 ++++++++++++++++++ yarn.lock | 374 ++++++++++++- 33 files changed, 1609 insertions(+), 50 deletions(-) rename packages/{identity-proof => identity-proof.circom}/.gitignore (100%) rename packages/{identity-proof => identity-proof.circom}/.mocharc.json (100%) create mode 100644 packages/identity-proof.circom/LICENSE create mode 100644 packages/identity-proof.circom/README.md rename packages/{identity-proof => identity-proof.circom}/circomkit.json (100%) rename packages/{identity-proof => identity-proof.circom}/circuits.json (100%) create mode 100644 packages/identity-proof.circom/package.json rename packages/{identity-proof => identity-proof.circom}/src/identity-proof.circom (100%) rename packages/{identity-proof => identity-proof.circom}/tests/common.ts (100%) rename packages/{identity-proof => identity-proof.circom}/tests/identity-proof.test.ts (94%) create mode 100644 packages/identity-proof.circom/tsconfig.json create mode 100644 packages/identity-proof/.npmrc create mode 100644 packages/identity-proof/Verifier.sol create mode 100644 packages/identity-proof/build.tsconfig.json create mode 100644 packages/identity-proof/rollup.config.ts create mode 100644 packages/identity-proof/src/generate.ts create mode 100644 packages/identity-proof/src/hash.ts create mode 100644 packages/identity-proof/src/index.ts create mode 100644 packages/identity-proof/src/to-bigint.ts create mode 100644 packages/identity-proof/src/types/index.ts create mode 100644 packages/identity-proof/src/verification-key.json create mode 100644 packages/identity-proof/src/verify.ts create mode 100644 packages/identity-proof/tests/index.test.ts create mode 100644 packages/identity-proof/typedoc.json create mode 100644 types/ffjavascript/index.d.ts diff --git a/.eslintignore b/.eslintignore index 7bf1f8e..dc46688 100644 --- a/.eslintignore +++ b/.eslintignore @@ -21,3 +21,6 @@ build npm-debug.log* yarn-debug.log* yarn-error.log* + +# types +types diff --git a/.prettierrc.json b/.prettierrc.json index 27140f2..717fb52 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,5 +1,6 @@ { "semi": false, "arrowParens": "always", - "trailingComma": "none" + "trailingComma": "none", + "plugins": ["prettier-plugin-solidity"] } diff --git a/jest.config.ts b/jest.config.ts index 5f2f586..2b9f54b 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,7 +1,7 @@ import fs from "fs" import type { Config } from "jest" -const exclude = ["circuits", "contracts"] +const exclude = ["identity-proof.circom"] const projects: any = fs .readdirSync("./packages", { withFileTypes: true }) diff --git a/package.json b/package.json index 3597a11..a1ad400 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@commitlint/config-conventional": "^19.1.0", "@types/jest": "^29.5.12", "@types/node": "^20.12.4", + "@types/snarkjs": "^0", "@typescript-eslint/eslint-plugin": "^7.5.0", "@typescript-eslint/parser": "^7.5.0", "changelogithub": "patch:changelogithub@npm%3A0.13.5#~/.yarn/patches/changelogithub-npm-0.13.5-9884734389.patch", @@ -52,7 +53,9 @@ "jest": "^29.7.0", "lint-staged": "^15.2.2", "prettier": "^3.2.5", + "prettier-plugin-solidity": "^1.3.1", "rimraf": "^5.0.5", + "snarkjs": "^0.7.4", "ts-jest": "^29.1.2", "ts-node": "^10.9.2", "typedoc": "^0.25.13", diff --git a/packages/identity-proof/.gitignore b/packages/identity-proof.circom/.gitignore similarity index 100% rename from packages/identity-proof/.gitignore rename to packages/identity-proof.circom/.gitignore diff --git a/packages/identity-proof/.mocharc.json b/packages/identity-proof.circom/.mocharc.json similarity index 100% rename from packages/identity-proof/.mocharc.json rename to packages/identity-proof.circom/.mocharc.json diff --git a/packages/identity-proof.circom/LICENSE b/packages/identity-proof.circom/LICENSE new file mode 100644 index 0000000..8ef16f7 --- /dev/null +++ b/packages/identity-proof.circom/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 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 +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/identity-proof.circom/README.md b/packages/identity-proof.circom/README.md new file mode 100644 index 0000000..96f8d91 --- /dev/null +++ b/packages/identity-proof.circom/README.md @@ -0,0 +1,58 @@ +

+

+ Semaphore Identity Proof (circuit) +

+

A circuit to prove the ownership of a Semaphore identity without revealing the private key.

+

+ +

+ + + + + NPM license + + + NPM version + + + Downloads + +

+ +
+

+ + 👥 Contributing + +   |   + + 🤝 Code of conduct + +   |   + + 🔎 Issues + +   |   + + 🗣️ Chat & Support + +

+
+ +> [!WARNING] +> This library has **not** been audited. + +## 🛠 Install + +Install the `@semaphore-extensions/identity-proof.circom` package with npm: + +```bash +npm i @semaphore-extensions/identity-proof.circom --save +``` + +or yarn: + +```bash +yarn add @semaphore-extensions/identity-proof.circom +``` diff --git a/packages/identity-proof/circomkit.json b/packages/identity-proof.circom/circomkit.json similarity index 100% rename from packages/identity-proof/circomkit.json rename to packages/identity-proof.circom/circomkit.json diff --git a/packages/identity-proof/circuits.json b/packages/identity-proof.circom/circuits.json similarity index 100% rename from packages/identity-proof/circuits.json rename to packages/identity-proof.circom/circuits.json diff --git a/packages/identity-proof.circom/package.json b/packages/identity-proof.circom/package.json new file mode 100644 index 0000000..b3538ce --- /dev/null +++ b/packages/identity-proof.circom/package.json @@ -0,0 +1,36 @@ +{ + "name": "@semaphore-extensions/identity-proof.circom", + "version": "1.0.0-beta", + "description": "A circuit to prove the ownership of a Semaphore identity without revealing the private key.", + "license": "MIT", + "files": [ + "**/*.circom", + "!main", + "!test", + "LICENSE", + "README.md" + ], + "repository": "https://github.com/semaphore-protocol/extensions", + "homepage": "https://github.com/semaphore-protocol/extensions/tree/main/packages/identity-proof.circom", + "bugs": { + "url": "https://github.com/semaphore-protocol/extensions.git/issues" + }, + "scripts": { + "compile": "circomkit compile identity-proof", + "setup": "circomkit setup identity-proof", + "test": "mocha" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "circomlib": "2.0.5" + }, + "devDependencies": { + "@types/mocha": "^10.0.6", + "@zk-kit/eddsa-poseidon": "^1.0.0-beta", + "circomkit": "^0.0.19", + "mocha": "^10.2.0", + "poseidon-lite": "^0.2.0" + } +} diff --git a/packages/identity-proof/src/identity-proof.circom b/packages/identity-proof.circom/src/identity-proof.circom similarity index 100% rename from packages/identity-proof/src/identity-proof.circom rename to packages/identity-proof.circom/src/identity-proof.circom diff --git a/packages/identity-proof/tests/common.ts b/packages/identity-proof.circom/tests/common.ts similarity index 100% rename from packages/identity-proof/tests/common.ts rename to packages/identity-proof.circom/tests/common.ts diff --git a/packages/identity-proof/tests/identity-proof.test.ts b/packages/identity-proof.circom/tests/identity-proof.test.ts similarity index 94% rename from packages/identity-proof/tests/identity-proof.test.ts rename to packages/identity-proof.circom/tests/identity-proof.test.ts index b660392..0e98acb 100644 --- a/packages/identity-proof/tests/identity-proof.test.ts +++ b/packages/identity-proof.circom/tests/identity-proof.test.ts @@ -29,6 +29,7 @@ describe("identity-proof", () => { }) }) + // eslint-disable-next-line jest/expect-expect it("Should compute the commitment correctly", async () => { await circuit.expectPass(INPUT, OUTPUT) }) diff --git a/packages/identity-proof.circom/tsconfig.json b/packages/identity-proof.circom/tsconfig.json new file mode 100644 index 0000000..26dae10 --- /dev/null +++ b/packages/identity-proof.circom/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true + }, + "include": ["tests/**/*"] +} diff --git a/packages/identity-proof/.npmrc b/packages/identity-proof/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/packages/identity-proof/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/packages/identity-proof/README.md b/packages/identity-proof/README.md index 083f2d3..c1900fd 100644 --- a/packages/identity-proof/README.md +++ b/packages/identity-proof/README.md @@ -2,7 +2,7 @@

Semaphore Identity Proof

-

A circuit to prove the ownership of a Semaphore identity without revealing the private key.

+

A library to prove the ownership of a Semaphore identity without revealing the private key.

@@ -10,7 +10,7 @@ - NPM license + NPM license NPM version @@ -18,41 +18,117 @@ Downloads + + npm bundle size (scoped) + + + Linter eslint + + + Code style prettier +

- - 👥 Contributing - -   |   - - 🤝 Code of conduct - -   |   - - 🔎 Issues + + 🗣️ Chat & Support   |   - - 🗣️ Chat & Support + + 📘 Docs

+| This zero-knowledge library allows you to prove and verify that you have the private key of a Semaphore identity. It will be mainly used on-chain because you can get the same result off-chain using EdDSA signatures with the `@semaphore-protocol/identity` package. It facilitates the demonstration of having an EdDSA hash pre-image while keeping the pre-image value confidential. Additionally, it offers a mechanism to prevent the same proof from being reused. The circuit that forms the foundation of this library is accessible via this [link](https://github.com/semaphore-protocol/extensions/blob/main/packages/identity-proof.circom). | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + > [!WARNING] -> This library has **not** been audited. +> The Snark artifacts currently used to generate zero-knowledge proofs are the result of an insecure trusted setup, and the library has not yet been audited. Therefore, it is advised not to use it in production. ## 🛠 Install -Install the `@zk-kit/circuits` package with npm: +Install the `@semaphore-extensions/identity-proof` package: ```bash -npm i @zk-kit/circuits --save +npm i @semaphore-extensions/identity-proof ``` or yarn: ```bash -yarn add @zk-kit/circuits +yarn add @semaphore-extensions/identity-proof +``` + +## 📜 Usage + +```typescript +import { generate, verify } from "@semaphore-extensions/identity-proof" + +// Your private key (secret) associated with your commitment. +const privateKey = "secret" +// A public value used to contextualize the cryptographic proof and calculate the nullifier. +const scope = "scope" + +// Generate the proof. +const fullProof = await generate(privateKey, scope) + +/* + nb. commitment and scope are always the same - proof is variable. +{ + commitment: '21756852044673293804725356853298692762259855200429755225624171532449447776732', + scope: '52191664570483756643537362991541193331102618014473399276861326740461293928448', + proof: [ + '14987543977537638797613616391807211498102534775759297152458980015937921301475', + '3399335485250714998192957632691923175498432819155620830553382340417897595836', + '458847933923791518779258584891719351511628278818450523853640641455008133942', + '9130558865745328382423837376229933835283742789420937388990076948167771186665', + '2527867303822223913583586720705858457538165210401589969189198821632271648294', + '870032122185130505849909299495220614500026484724112145131565329210361970548', + '7499124546917660821334566902083675362480525785493429715971012094306224236446', + '4681140599918274218600441523225984097742730174371377925026448119492671129895' + ] +} + +*/ +console.log(fullProof) + +// If not specified, the Snark artifacts are downloaded automatically. +// You can specify them as follows. + +// const fullProof = await generate(privateKey, scope, { +// wasm: "/identity-proof.wasm", +// zkey: "/identity-proof.zkey" +// }) + +// Verify the proof. +const response = await verify(fullProof) + +// true. +console.log(response) +``` + +## 📈 Benchmarks + +Benchmarks were run on an Intel Core i7-1165G7, 16 GB RAM machine. + +| Generate proof | Verify proof | Constraints | +| -------------- | ------------ | ----------- | +| `258ms` | `15ms` | `1017` | + +```ts +import { generate, verify } from "@semaphore-extensions/identity-proof" + +console.time("generate") + +const proof = await generate("secret", "scope") + +console.timeEnd("generate") + +console.time("verify") + +console.log(await verify(proof)) + +console.timeEnd("verify") ``` diff --git a/packages/identity-proof/Verifier.sol b/packages/identity-proof/Verifier.sol new file mode 100644 index 0000000..095bed8 --- /dev/null +++ b/packages/identity-proof/Verifier.sol @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: GPL-3.0 +/* + Copyright 2021 0KIMS association. + + This file is generated with [snarkJS](https://github.com/iden3/snarkjs). + + snarkJS is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + snarkJS is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with snarkJS. If not, see . +*/ + +pragma solidity >=0.7.0 <0.9.0; + +contract Groth16Verifier { + // Scalar field size + uint256 constant r = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + // Base field size + uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; + + // Verification Key data + uint256 constant alphax = 20491192805390485299153009773594534940189261866228447918068658471970481763042; + uint256 constant alphay = 9383485363053290200918347156157836566562967994039712273449902621266178545958; + uint256 constant betax1 = 4252822878758300859123897981450591353533073413197771768651442665752259397132; + uint256 constant betax2 = 6375614351688725206403948262868962793625744043794305715222011528459656738731; + uint256 constant betay1 = 21847035105528745403288232691147584728191162732299865338377159692350059136679; + uint256 constant betay2 = 10505242626370262277552901082094356697409835680220590971873171140371331206856; + uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + uint256 constant deltax1 = 14381664854498005118543371756774844762863015670089215881646079065501660023715; + uint256 constant deltax2 = 796050066914203101097245827910071582852842848155644136800537329683431712718; + uint256 constant deltay1 = 16052676143085304141690820162536864117438427484710685649820347128696157072987; + uint256 constant deltay2 = 14273080315087026572088933687689418094081503302642266009992857370242068761972; + + uint256 constant IC0x = 10243422115502146676837455057541680434675611269488294776242088455276085694270; + uint256 constant IC0y = 18859860337015502592844896084593646475099922090399077280453658863271664884044; + + uint256 constant IC1x = 16503228729186129498319382249683264864691719729303949286386244728950804184688; + uint256 constant IC1y = 2199953009475995191877884297503764868113670449819008551559213316803678004212; + + uint256 constant IC2x = 15664509648018555555809375149859393401200797106531390386716416381733847132253; + uint256 constant IC2y = 6083954291384592112763291419368558059608863495959189659808243744249660225625; + + // Memory data + uint16 constant pVk = 0; + uint16 constant pPairing = 128; + + uint16 constant pLastMem = 896; + + function verifyProof( + uint[2] calldata _pA, + uint[2][2] calldata _pB, + uint[2] calldata _pC, + uint[2] calldata _pubSignals + ) public view returns (bool) { + assembly { + function checkField(v) { + if iszero(lt(v, r)) { + mstore(0, 0) + return(0, 0x20) + } + } + + // G1 function to multiply a G1 value(x,y) to value in an address + function g1_mulAccC(pR, x, y, s) { + let success + let mIn := mload(0x40) + mstore(mIn, x) + mstore(add(mIn, 32), y) + mstore(add(mIn, 64), s) + + success := staticcall(sub(gas(), 2000), 7, mIn, 96, mIn, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + + mstore(add(mIn, 64), mload(pR)) + mstore(add(mIn, 96), mload(add(pR, 32))) + + success := staticcall(sub(gas(), 2000), 6, mIn, 128, pR, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + } + + function checkPairing(pA, pB, pC, pubSignals, pMem) -> isOk { + let _pPairing := add(pMem, pPairing) + let _pVk := add(pMem, pVk) + + mstore(_pVk, IC0x) + mstore(add(_pVk, 32), IC0y) + + // Compute the linear combination vk_x + + g1_mulAccC(_pVk, IC1x, IC1y, calldataload(add(pubSignals, 0))) + + g1_mulAccC(_pVk, IC2x, IC2y, calldataload(add(pubSignals, 32))) + + // -A + mstore(_pPairing, calldataload(pA)) + mstore(add(_pPairing, 32), mod(sub(q, calldataload(add(pA, 32))), q)) + + // B + mstore(add(_pPairing, 64), calldataload(pB)) + mstore(add(_pPairing, 96), calldataload(add(pB, 32))) + mstore(add(_pPairing, 128), calldataload(add(pB, 64))) + mstore(add(_pPairing, 160), calldataload(add(pB, 96))) + + // alpha1 + mstore(add(_pPairing, 192), alphax) + mstore(add(_pPairing, 224), alphay) + + // beta2 + mstore(add(_pPairing, 256), betax1) + mstore(add(_pPairing, 288), betax2) + mstore(add(_pPairing, 320), betay1) + mstore(add(_pPairing, 352), betay2) + + // vk_x + mstore(add(_pPairing, 384), mload(add(pMem, pVk))) + mstore(add(_pPairing, 416), mload(add(pMem, add(pVk, 32)))) + + // gamma2 + mstore(add(_pPairing, 448), gammax1) + mstore(add(_pPairing, 480), gammax2) + mstore(add(_pPairing, 512), gammay1) + mstore(add(_pPairing, 544), gammay2) + + // C + mstore(add(_pPairing, 576), calldataload(pC)) + mstore(add(_pPairing, 608), calldataload(add(pC, 32))) + + // delta2 + mstore(add(_pPairing, 640), deltax1) + mstore(add(_pPairing, 672), deltax2) + mstore(add(_pPairing, 704), deltay1) + mstore(add(_pPairing, 736), deltay2) + + let success := staticcall(sub(gas(), 2000), 8, _pPairing, 768, _pPairing, 0x20) + + isOk := and(success, mload(_pPairing)) + } + + let pMem := mload(0x40) + mstore(0x40, add(pMem, pLastMem)) + + // Validate that all evaluations ∈ F + + checkField(calldataload(add(_pubSignals, 0))) + + checkField(calldataload(add(_pubSignals, 32))) + + checkField(calldataload(add(_pubSignals, 64))) + + // Validate all evaluations + let isValid := checkPairing(_pA, _pB, _pC, _pubSignals, pMem) + + mstore(0, isValid) + return(0, 0x20) + } + } +} diff --git a/packages/identity-proof/build.tsconfig.json b/packages/identity-proof/build.tsconfig.json new file mode 100644 index 0000000..09b37d9 --- /dev/null +++ b/packages/identity-proof/build.tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "declarationDir": "dist/types", + "resolveJsonModule": true + }, + "include": ["src"] +} diff --git a/packages/identity-proof/package.json b/packages/identity-proof/package.json index 4cce02e..3e20314 100644 --- a/packages/identity-proof/package.json +++ b/packages/identity-proof/package.json @@ -1,36 +1,53 @@ { - "name": "@semaphore-extensions/identity-proof.circom", + "name": "@semaphore-extensions/identity-proof", "version": "1.0.0-beta", - "description": "A circuit to prove the ownership of a Semaphore identity without revealing the private key.", + "description": "A library to prove the ownership of a Semaphore identity without revealing the private key.", + "type": "module", "license": "MIT", + "main": "dist/index.browser.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + } + }, "files": [ - "**/*.circom", - "!main", - "!test", + "dist/", + "src/", "LICENSE", "README.md" ], - "repository": "https://github.com/semaphore-protocol/extensions", - "homepage": "https://github.com/semaphore-protocol/extensions/tree/main/packages/identity-proof", + "repository": "git@github.com:semaphore-protocol/semaphore-extensions.git", + "homepage": "https://github.com/semaphore-protocol/semaphore-extensions/tree/main/packages/identity-proof", "bugs": { - "url": "https://github.com/semaphore-protocol/extensions.git/issues" + "url": "https://github.com/semaphore-protocol/semaphore-extensions.git/issues" }, "scripts": { - "compile": "circomkit compile identity-proof", - "setup": "circomkit setup identity-proof", - "test": "mocha" + "build": "rimraf dist && rollup -c rollup.config.ts --configPlugin typescript", + "prepublishOnly": "yarn build" }, "publishConfig": { "access": "public" }, - "dependencies": { - "circomlib": "2.0.5" - }, "devDependencies": { - "@types/mocha": "^10.0.6", - "@zk-kit/eddsa-poseidon": "^1.0.0-beta", - "circomkit": "^0.0.19", - "mocha": "^10.2.0", - "poseidon-lite": "^0.2.0" + "@rollup/plugin-alias": "^5.1.0", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-typescript": "^11.1.6", + "@types/download": "^8.0.5", + "@types/snarkjs": "^0", + "@types/tmp": "^0.2.6", + "ffjavascript": "^0.3.0", + "poseidon-lite": "^0.2.0", + "rimraf": "^5.0.5", + "rollup": "^4.12.0", + "rollup-plugin-cleanup": "^3.2.1" + }, + "dependencies": { + "@zk-kit/eddsa-poseidon": "1.0.0-beta", + "@zk-kit/utils": "1.0.0-beta.4", + "ethers": "^6.12.0", + "snarkjs": "^0.7.3" } } diff --git a/packages/identity-proof/rollup.config.ts b/packages/identity-proof/rollup.config.ts new file mode 100644 index 0000000..4980a07 --- /dev/null +++ b/packages/identity-proof/rollup.config.ts @@ -0,0 +1,24 @@ +import json from "@rollup/plugin-json" +import typescript from "@rollup/plugin-typescript" +import fs from "fs" +import cleanup from "rollup-plugin-cleanup" + +const pkg = JSON.parse(fs.readFileSync("./package.json", "utf8")) +const banner = `/** + * @module ${pkg.name} + * @version ${pkg.version} + * @file ${pkg.description} + * @copyright Ethereum Foundation ${new Date().getFullYear()} + * @license ${pkg.license} + * @see [Github]{@link ${pkg.homepage}} +*/` + +export default { + input: "src/index.ts", + output: [ + { file: pkg.exports["."].require, format: "cjs", banner }, + { file: pkg.exports["."].default, format: "es", banner } + ], + external: Object.keys(pkg.dependencies), + plugins: [typescript({ tsconfig: "./build.tsconfig.json" }), cleanup({ comments: "jsdoc" }), json()] +} diff --git a/packages/identity-proof/src/generate.ts b/packages/identity-proof/src/generate.ts new file mode 100644 index 0000000..38f5da8 --- /dev/null +++ b/packages/identity-proof/src/generate.ts @@ -0,0 +1,51 @@ +import { deriveSecretScalar } from "@zk-kit/eddsa-poseidon" +import { SnarkArtifacts, maybeGetEdDSASnarkArtifacts, packGroth16Proof } from "@zk-kit/utils" +import type { BigNumberish } from "ethers" +import { NumericString, groth16 } from "snarkjs" +import hash from "./hash" +import toBigInt from "./to-bigint" +import { IdentityProof } from "./types" + +/** + * Creates a zero-knowledge proof to prove that you have the pre-image of a Semaphore commitment, + * without disclosing the actual preimage itself. + * The use of a scope parameter along with a nullifier helps ensure the uniqueness + * and non-reusability of the proofs, enhancing security in applications like + * blockchain transactions or private data verification. + * If, for example, this package were used with Semaphore to demonstrate possession + * of a Semaphore identity of a group of voters, the scope could be the poll's ID. + * @param privateKey The private key of the commitment. + * @param scope A public value used to contextualize the cryptographic proof + * and calculate the nullifier. + * @param snarkArtifacts The Snark artifacts (wasm and zkey files) generated in + * a trusted setup of the circuit are necessary to generate valid proofs + * @returns The Poseidon zero-knowledge proof. + */ +export default async function generate( + privateKey: Buffer | Uint8Array | string, + scope: BigNumberish | Uint8Array | string, + snarkArtifacts?: SnarkArtifacts +): Promise { + scope = toBigInt(scope) + + // allow user to override our artifacts + // otherwise they'll be downloaded if not already in local tmp folder + snarkArtifacts ??= await maybeGetEdDSASnarkArtifacts() + const { wasm, zkey } = snarkArtifacts + const secretScalar = deriveSecretScalar(privateKey) + + const { proof, publicSignals } = await groth16.fullProve( + { + secret: secretScalar, + scope: hash(scope) + }, + wasm, + zkey + ) + + return { + commitment: publicSignals[0], + scope: scope.toString() as NumericString, + proof: packGroth16Proof(proof) + } +} diff --git a/packages/identity-proof/src/hash.ts b/packages/identity-proof/src/hash.ts new file mode 100644 index 0000000..0781fe3 --- /dev/null +++ b/packages/identity-proof/src/hash.ts @@ -0,0 +1,13 @@ +import type { BigNumberish } from "ethers" +import { keccak256 } from "ethers/crypto" +import { toBeHex } from "ethers/utils" +import { NumericString } from "snarkjs" + +/** + * Creates a keccak256 hash of a message compatible with the SNARK scalar modulus. + * @param message The message to be hashed. + * @returns The message digest. + */ +export default function hash(message: BigNumberish): NumericString { + return (BigInt(keccak256(toBeHex(message, 32))) >> BigInt(8)).toString() +} diff --git a/packages/identity-proof/src/index.ts b/packages/identity-proof/src/index.ts new file mode 100644 index 0000000..78f8eb6 --- /dev/null +++ b/packages/identity-proof/src/index.ts @@ -0,0 +1,5 @@ +import generate from "./generate" +import verify from "./verify" + +export * from "./types" +export { generate, verify } diff --git a/packages/identity-proof/src/to-bigint.ts b/packages/identity-proof/src/to-bigint.ts new file mode 100644 index 0000000..4424e18 --- /dev/null +++ b/packages/identity-proof/src/to-bigint.ts @@ -0,0 +1,20 @@ +import type { BigNumberish } from "ethers" +import { encodeBytes32String } from "ethers/abi" +import { toBigInt as _toBigInt } from "ethers/utils" + +/** + * Converts a bignumberish or a text to a bigint. + * @param value The value to be converted to bigint. + * @return The value converted to bigint. + */ +export default function toBigInt(value: BigNumberish | Uint8Array | string): bigint { + try { + return _toBigInt(value) + } catch (error: any) { + if (typeof value === "string") { + return _toBigInt(encodeBytes32String(value)) + } + + throw TypeError(error.message) + } +} diff --git a/packages/identity-proof/src/types/index.ts b/packages/identity-proof/src/types/index.ts new file mode 100644 index 0000000..cb0dcfa --- /dev/null +++ b/packages/identity-proof/src/types/index.ts @@ -0,0 +1,8 @@ +import { NumericString } from "snarkjs" +import { PackedGroth16Proof } from "@zk-kit/utils" + +export type IdentityProof = { + commitment: NumericString + scope: NumericString + proof: PackedGroth16Proof +} diff --git a/packages/identity-proof/src/verification-key.json b/packages/identity-proof/src/verification-key.json new file mode 100644 index 0000000..3704366 --- /dev/null +++ b/packages/identity-proof/src/verification-key.json @@ -0,0 +1,90 @@ +{ + "protocol": "groth16", + "curve": "bn128", + "nPublic": 2, + "vk_alpha_1": [ + "20491192805390485299153009773594534940189261866228447918068658471970481763042", + "9383485363053290200918347156157836566562967994039712273449902621266178545958", + "1" + ], + "vk_beta_2": [ + [ + "6375614351688725206403948262868962793625744043794305715222011528459656738731", + "4252822878758300859123897981450591353533073413197771768651442665752259397132" + ], + [ + "10505242626370262277552901082094356697409835680220590971873171140371331206856", + "21847035105528745403288232691147584728191162732299865338377159692350059136679" + ], + ["1", "0"] + ], + "vk_gamma_2": [ + [ + "10857046999023057135944570762232829481370756359578518086990519993285655852781", + "11559732032986387107991004021392285783925812861821192530917403151452391805634" + ], + [ + "8495653923123431417604973247489272438418190587263600148770280649306958101930", + "4082367875863433681332203403145435568316851327593401208105741076214120093531" + ], + ["1", "0"] + ], + "vk_delta_2": [ + [ + "796050066914203101097245827910071582852842848155644136800537329683431712718", + "14381664854498005118543371756774844762863015670089215881646079065501660023715" + ], + [ + "14273080315087026572088933687689418094081503302642266009992857370242068761972", + "16052676143085304141690820162536864117438427484710685649820347128696157072987" + ], + ["1", "0"] + ], + "vk_alphabeta_12": [ + [ + [ + "2029413683389138792403550203267699914886160938906632433982220835551125967885", + "21072700047562757817161031222997517981543347628379360635925549008442030252106" + ], + [ + "5940354580057074848093997050200682056184807770593307860589430076672439820312", + "12156638873931618554171829126792193045421052652279363021382169897324752428276" + ], + [ + "7898200236362823042373859371574133993780991612861777490112507062703164551277", + "7074218545237549455313236346927434013100842096812539264420499035217050630853" + ] + ], + [ + [ + "7077479683546002997211712695946002074877511277312570035766170199895071832130", + "10093483419865920389913245021038182291233451549023025229112148274109565435465" + ], + [ + "4595479056700221319381530156280926371456704509942304414423590385166031118820", + "19831328484489333784475432780421641293929726139240675179672856274388269393268" + ], + [ + "11934129596455521040620786944827826205713621633706285934057045369193958244500", + "8037395052364110730298837004334506829870972346962140206007064471173334027475" + ] + ] + ], + "IC": [ + [ + "10243422115502146676837455057541680434675611269488294776242088455276085694270", + "18859860337015502592844896084593646475099922090399077280453658863271664884044", + "1" + ], + [ + "16503228729186129498319382249683264864691719729303949286386244728950804184688", + "2199953009475995191877884297503764868113670449819008551559213316803678004212", + "1" + ], + [ + "15664509648018555555809375149859393401200797106531390386716416381733847132253", + "6083954291384592112763291419368558059608863495959189659808243744249660225625", + "1" + ] + ] +} diff --git a/packages/identity-proof/src/verify.ts b/packages/identity-proof/src/verify.ts new file mode 100644 index 0000000..2d8b4fb --- /dev/null +++ b/packages/identity-proof/src/verify.ts @@ -0,0 +1,14 @@ +import { groth16 } from "snarkjs" +import { unpackGroth16Proof } from "@zk-kit/utils" +import hash from "./hash" +import { IdentityProof } from "./types" +import verificationKey from "./verification-key.json" + +/** + * Verifies that a Identity proof is valid. + * @param identityProof The Identity zero-knowledge proof. + * @returns True if the proof is valid, false otherwise. + */ +export default function verify({ commitment, scope, proof }: IdentityProof): Promise { + return groth16.verify(verificationKey, [commitment, hash(scope)], unpackGroth16Proof(proof)) +} diff --git a/packages/identity-proof/tests/index.test.ts b/packages/identity-proof/tests/index.test.ts new file mode 100644 index 0000000..c95826c --- /dev/null +++ b/packages/identity-proof/tests/index.test.ts @@ -0,0 +1,52 @@ +import { derivePublicKey } from "@zk-kit/eddsa-poseidon" +import { getCurveFromName } from "ffjavascript" +import { decodeBytes32String, toBeHex } from "ethers" +import { poseidon2 } from "poseidon-lite" +import generate from "../src/generate" +import { IdentityProof } from "../src/types" +import verify from "../src/verify" + +describe("IdentityProof", () => { + const privateKey = Buffer.from("secret") + const scope = "scope" + + let fullProof: IdentityProof + let curve: any + + beforeAll(async () => { + curve = await getCurveFromName("bn128") + fullProof = await generate(privateKey, scope) + }, 10_000) + + afterAll(async () => { + await curve.terminate() + }) + + describe("# generate", () => { + it("Should generate an Identity proof", async () => { + const publicKey = derivePublicKey(privateKey) + + const commitment = poseidon2(publicKey) + + expect(fullProof.proof).toHaveLength(8) + expect(decodeBytes32String(toBeHex(fullProof.scope, 32))).toBe(scope.toString()) + expect(fullProof.commitment).toBe(commitment.toString()) + }) + }) + + describe("# verify", () => { + it("Should verify a valid Identity proof", async () => { + const response = await verify(fullProof) + + expect(response).toBe(true) + }) + + it("Should verify an invalid Identity proof", async () => { + fullProof.commitment = "3" + + const response = await verify(fullProof) + + expect(response).toBe(false) + }) + }) +}) diff --git a/packages/identity-proof/tsconfig.json b/packages/identity-proof/tsconfig.json index 26dae10..71510a0 100644 --- a/packages/identity-proof/tsconfig.json +++ b/packages/identity-proof/tsconfig.json @@ -1,8 +1,4 @@ { - "compilerOptions": { - "target": "es2020", - "module": "commonjs", - "esModuleInterop": true - }, - "include": ["tests/**/*"] + "extends": "../../tsconfig.json", + "include": ["src", "tests", "rollup.config.ts"] } diff --git a/packages/identity-proof/typedoc.json b/packages/identity-proof/typedoc.json new file mode 100644 index 0000000..77a471c --- /dev/null +++ b/packages/identity-proof/typedoc.json @@ -0,0 +1,3 @@ +{ + "entryPoints": ["src/index.ts"] +} diff --git a/types/ffjavascript/index.d.ts b/types/ffjavascript/index.d.ts new file mode 100644 index 0000000..f754ad7 --- /dev/null +++ b/types/ffjavascript/index.d.ts @@ -0,0 +1,509 @@ +/** Declaration file generated by dts-gen */ + +declare module "ffjavascript" { + export class BigBuffer { + constructor(...args: any[]) + + set(...args: any[]): void + + slice(...args: any[]): void + } + + export class ChaCha { + constructor(...args: any[]) + + nextBool(...args: any[]): void + + nextU32(...args: any[]): void + + nextU64(...args: any[]): void + + update(...args: any[]): void + } + + export class EC { + constructor(...args: any[]) + + add(...args: any[]): void + + affine(...args: any[]): void + + double(...args: any[]): void + + eq(...args: any[]): void + + fromRng(...args: any[]): void + + fromRprBE(...args: any[]): void + + fromRprBEM(...args: any[]): void + + fromRprCompressed(...args: any[]): void + + fromRprLE(...args: any[]): void + + fromRprLEJM(...args: any[]): void + + fromRprLEM(...args: any[]): void + + fromRprUncompressed(...args: any[]): void + + isZero(...args: any[]): void + + mulScalar(...args: any[]): void + + multiAffine(...args: any[]): void + + neg(...args: any[]): void + + sub(...args: any[]): void + + timesScalar(...args: any[]): void + + toRprBE(...args: any[]): void + + toRprBEM(...args: any[]): void + + toRprCompressed(...args: any[]): void + + toRprLE(...args: any[]): void + + toRprLEJM(...args: any[]): void + + toRprLEM(...args: any[]): void + + toRprUncompressed(...args: any[]): void + + toString(...args: any[]): void + } + + export class F1Field { + constructor(...args: any[]) + + e(...args: any[]): any + add(...args: any[]): any + sub(...args: any[]): any + neg(...args: any[]): any + mul(...args: any[]): any + mulScalar(...args: any[]): any + square(...args: any[]): any + eq(...args: any[]): any + neq(...args: any[]): any + lt(...args: any[]): any + gt(...args: any[]): any + leq(...args: any[]): any + geq(...args: any[]): any + div(...args: any[]): any + idiv(...args: any[]): any + inv(...args: any[]): any + mod(...args: any[]): any + pow(...args: any[]): any + exp(...args: any[]): any + band(...args: any[]): any + bor(...args: any[]): any + bxor(...args: any[]): any + bnot(...args: any[]): any + shl(...args: any[]): any + shr(...args: any[]): any + land(...args: any[]): any + lor(...args: any[]): any + lnot(...args: any[]): any + sqrt_old(...args: any[]): any + normalize(...args: any[]): any + random(...args: any[]): any + toString(...args: any[]): any + isZero(...args: any[]): any + fromRng(...args: any[]): any + + fromRprBE(...args: any[]): void + + fromRprBEM(...args: any[]): void + + fromRprLE(...args: any[]): void + + fromRprLEM(...args: any[]): void + + toRprBE(...args: any[]): void + + toRprBEM(...args: any[]): void + + toRprLE(...args: any[]): void + + toRprLEM(...args: any[]): void + } + + export class F2Field { + constructor(...args: any[]) + + add(...args: any[]): void + + conjugate(...args: any[]): void + + copy(...args: any[]): void + + div(...args: any[]): void + + double(...args: any[]): void + + eq(...args: any[]): void + + exp(...args: any[]): void + + fromRng(...args: any[]): void + + fromRprBE(...args: any[]): void + + fromRprBEM(...args: any[]): void + + fromRprLE(...args: any[]): void + + fromRprLEM(...args: any[]): void + + geq(...args: any[]): void + + gt(...args: any[]): void + + inv(...args: any[]): void + + isZero(...args: any[]): void + + leq(...args: any[]): void + + lt(...args: any[]): void + + mul(...args: any[]): void + + mulScalar(...args: any[]): void + + neg(...args: any[]): void + + neq(...args: any[]): void + + pow(...args: any[]): void + + random(...args: any[]): void + + square(...args: any[]): void + + sub(...args: any[]): void + + toRprBE(...args: any[]): void + + toRprBEM(...args: any[]): void + + toRprLE(...args: any[]): void + + toRprLEM(...args: any[]): void + + toString(...args: any[]): void + } + + export class F3Field { + constructor(...args: any[]) + + add(...args: any[]): void + + affine(...args: any[]): void + + copy(...args: any[]): void + + div(...args: any[]): void + + double(...args: any[]): void + + eq(...args: any[]): void + + exp(...args: any[]): void + + fromRng(...args: any[]): void + + fromRprBE(...args: any[]): void + + fromRprBEM(...args: any[]): void + + fromRprLE(...args: any[]): void + + fromRprLEM(...args: any[]): void + + geq(...args: any[]): void + + gt(...args: any[]): void + + inv(...args: any[]): void + + isZero(...args: any[]): void + + leq(...args: any[]): void + + lt(...args: any[]): void + + mul(...args: any[]): void + + mulScalar(...args: any[]): void + + neg(...args: any[]): void + + neq(...args: any[]): void + + pow(...args: any[]): void + + random(...args: any[]): void + + square(...args: any[]): void + + sub(...args: any[]): void + + toRprBE(...args: any[]): void + + toRprBEM(...args: any[]): void + + toRprLE(...args: any[]): void + + toRprLEM(...args: any[]): void + + toString(...args: any[]): void + } + + export class PolField { + constructor(...args: any[]) + + add(...args: any[]): void + + computeVanishingPolinomial(...args: any[]): void + + div(...args: any[]): void + + double(...args: any[]): void + + eq(...args: any[]): void + + eval(...args: any[]): void + + eval2(...args: any[]): void + + evaluateLagrangePolynomials(...args: any[]): void + + extend(...args: any[]): void + + fft(...args: any[]): void + + fft2(...args: any[]): void + + ifft(...args: any[]): void + + ifft2(...args: any[]): void + + lagrange(...args: any[]): void + + log2(...args: any[]): void + + mul(...args: any[]): void + + mulFFT(...args: any[]): void + + mulNormal(...args: any[]): void + + mulScalar(...args: any[]): void + + normalize(...args: any[]): void + + oneRoot(...args: any[]): void + + reduce(...args: any[]): void + + ruffini(...args: any[]): void + + scaleX(...args: any[]): void + + square(...args: any[]): void + + sub(...args: any[]): void + + toString(...args: any[]): void + } + + export class ZqField { + constructor(...args: any[]) + + e(...args: any[]): any + add(...args: any[]): any + sub(...args: any[]): any + neg(...args: any[]): any + mul(...args: any[]): any + mulScalar(...args: any[]): any + square(...args: any[]): any + eq(...args: any[]): any + neq(...args: any[]): any + lt(...args: any[]): any + gt(...args: any[]): any + leq(...args: any[]): any + geq(...args: any[]): any + div(...args: any[]): any + idiv(...args: any[]): any + inv(...args: any[]): any + mod(...args: any[]): any + pow(...args: any[]): any + exp(...args: any[]): any + band(...args: any[]): any + bor(...args: any[]): any + bxor(...args: any[]): any + bnot(...args: any[]): any + shl(...args: any[]): any + shr(...args: any[]): any + land(...args: any[]): any + lor(...args: any[]): any + lnot(...args: any[]): any + sqrt_old(...args: any[]): any + normalize(...args: any[]): any + random(...args: any[]): any + toString(...args: any[]): any + isZero(...args: any[]): any + fromRng(...args: any[]): any + + fromRprBE(...args: any[]): void + + fromRprBEM(...args: any[]): void + + fromRprLE(...args: any[]): void + + fromRprLEM(...args: any[]): void + + toRprBE(...args: any[]): void + + toRprBEM(...args: any[]): void + + toRprLE(...args: any[]): void + + toRprLEM(...args: any[]): void + } + + export function buildBls12381(singleThread: any, plugins: any): any + + export function buildBn128(singleThread: any, plugins: any): any + + export function getCurveFromName(name: any, singleThread?: any, plugins?: any): any + + export function getCurveFromQ(q: any, singleThread: any, plugins: any): any + + export function getCurveFromR(r: any, singleThread: any, plugins: any): any + + export namespace Scalar { + const one: any + + const zero: any + + function abs(a: any): any + + function add(a: any, b: any): any + + function band(a: any, b: any): any + + function bitLength(a: any): any + + function bits(n: any): any + + function bor(a: any, b: any): any + + function bxor(a: any, b: any): any + + function div(a: any, b: any): any + + function e(s: any, radix: any): any + + function eq(a: any, b: any): any + + function exp(a: any, b: any): any + + function fromArray(a: any, radix: any): any + + function fromRprBE(buff: any, o: any, n8: any): any + + function fromRprLE(buff: any, o: any, n8: any): any + + function fromString(s: any, radix: any): any + + function geq(a: any, b: any): any + + function gt(a: any, b: any): any + + function isNegative(a: any): any + + function isOdd(a: any): any + + function isZero(a: any): any + + function land(a: any, b: any): any + + function leq(a: any, b: any): any + + function lnot(a: any): any + + function lor(a: any, b: any): any + + function lt(a: any, b: any): any + + function mod(a: any, b: any): any + + function mul(a: any, b: any): any + + function naf(n: any): any + + function neg(a: any): any + + function neq(a: any, b: any): any + + function pow(a: any, b: any): any + + function shiftLeft(a: any, n: any): any + + function shiftRight(a: any, n: any): any + + function shl(a: any, n: any): any + + function shr(a: any, n: any): any + + function square(a: any): any + + function sub(a: any, b: any): any + + function toArray(s: any, radix: any): any + + function toLEBuff(a: any): any + + function toNumber(s: any): any + + function toRprBE(buff: any, o: any, e: any, n8: any): void + + function toRprLE(buff: any, o: any, e: any, n8: any): void + + function toString(a: any, radix: any): any + } + + export namespace utils { + function array2buffer(arr: any, sG: any): any + + function beBuff2int(buff: any): any + + function beInt2Buff(n: any, len: any): any + + function bitReverse(idx: any, bits: any): any + + function buffReverseBits(buff: any, eSize: any): void + + function buffer2array(buff: any, sG: any): any + + function leBuff2int(buff: any): any + + function leInt2Buff(n: any, len: any): any + + function log2(V: any): any + + function stringifyBigInts(o: any): any + + function stringifyFElements(F: any, o: any): any + + function unstringifyBigInts(o: any): any + + function unstringifyFElements(F: any, o: any): any + } +} diff --git a/yarn.lock b/yarn.lock index 0b66b83..891d914 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2850,6 +2850,34 @@ __metadata: languageName: node linkType: hard +"@rollup/plugin-alias@npm:^5.1.0": + version: 5.1.0 + resolution: "@rollup/plugin-alias@npm:5.1.0" + dependencies: + slash: "npm:^4.0.0" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/2749f9563dba9274e4324fcd14ffe761fa66ee3baab307ba583d0348adfa2c1d2a164f59eac8c26a9ce7c713a99a991a831c072101e83697157ccf082c362310 + languageName: node + linkType: hard + +"@rollup/plugin-json@npm:^6.1.0": + version: 6.1.0 + resolution: "@rollup/plugin-json@npm:6.1.0" + dependencies: + "@rollup/pluginutils": "npm:^5.1.0" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/cc018d20c80242a2b8b44fae61a968049cf31bb8406218187cc7cda35747616594e79452dd65722e7da6dd825b392e90d4599d43cd4461a02fefa2865945164e + languageName: node + linkType: hard + "@rollup/plugin-typescript@npm:^11.1.6": version: 11.1.6 resolution: "@rollup/plugin-typescript@npm:11.1.6" @@ -2892,6 +2920,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.17.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-android-arm64@npm:4.14.0" @@ -2899,6 +2934,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-android-arm64@npm:4.17.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.14.0" @@ -2906,6 +2948,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.17.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-darwin-x64@npm:4.14.0" @@ -2913,6 +2962,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.17.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.14.0" @@ -2920,6 +2976,20 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.17.2" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.17.2" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.14.0" @@ -2927,6 +2997,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.17.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.14.0" @@ -2934,6 +3011,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.17.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.0" @@ -2941,6 +3025,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.17.2" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.14.0" @@ -2948,6 +3039,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.17.2" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.14.0" @@ -2955,6 +3053,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.17.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.14.0" @@ -2962,6 +3067,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.17.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.14.0" @@ -2969,6 +3081,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.17.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.14.0" @@ -2976,6 +3095,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.17.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.14.0" @@ -2983,6 +3109,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.17.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.14.0": version: 4.14.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.14.0" @@ -2990,6 +3123,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.17.2": + version: 4.17.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.17.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@semaphore-extensions/heyauthn@workspace:packages/heyauthn": version: 0.0.0-use.local resolution: "@semaphore-extensions/heyauthn@workspace:packages/heyauthn" @@ -3004,9 +3144,9 @@ __metadata: languageName: unknown linkType: soft -"@semaphore-extensions/identity-proof.circom@workspace:packages/identity-proof": +"@semaphore-extensions/identity-proof.circom@workspace:packages/identity-proof.circom": version: 0.0.0-use.local - resolution: "@semaphore-extensions/identity-proof.circom@workspace:packages/identity-proof" + resolution: "@semaphore-extensions/identity-proof.circom@workspace:packages/identity-proof.circom" dependencies: "@types/mocha": "npm:^10.0.6" "@zk-kit/eddsa-poseidon": "npm:^1.0.0-beta" @@ -3017,6 +3157,28 @@ __metadata: languageName: unknown linkType: soft +"@semaphore-extensions/identity-proof@workspace:packages/identity-proof": + version: 0.0.0-use.local + resolution: "@semaphore-extensions/identity-proof@workspace:packages/identity-proof" + dependencies: + "@rollup/plugin-alias": "npm:^5.1.0" + "@rollup/plugin-json": "npm:^6.1.0" + "@rollup/plugin-typescript": "npm:^11.1.6" + "@types/download": "npm:^8.0.5" + "@types/snarkjs": "npm:^0" + "@types/tmp": "npm:^0.2.6" + "@zk-kit/eddsa-poseidon": "npm:1.0.0-beta" + "@zk-kit/utils": "npm:1.0.0-beta.4" + ethers: "npm:^6.12.0" + ffjavascript: "npm:^0.3.0" + poseidon-lite: "npm:^0.2.0" + rimraf: "npm:^5.0.5" + rollup: "npm:^4.12.0" + rollup-plugin-cleanup: "npm:^3.2.1" + snarkjs: "npm:^0.7.3" + languageName: unknown + linkType: soft + "@semaphore-protocol/core@npm:4.0.0-beta.9": version: 4.0.0-beta.9 resolution: "@semaphore-protocol/core@npm:4.0.0-beta.9" @@ -3207,6 +3369,13 @@ __metadata: languageName: node linkType: hard +"@solidity-parser/parser@npm:^0.17.0": + version: 0.17.0 + resolution: "@solidity-parser/parser@npm:0.17.0" + checksum: 10/76de7d1268de676c101b9a41576c324c0d0b9699e3ba3d846b5e580d6cae454fd7ec088011c316ce18af1b23a1482da88768d30f0e41becfd9da90f692fb9a65 + languageName: node + linkType: hard + "@tsconfig/node10@npm:^1.0.7": version: 1.0.11 resolution: "@tsconfig/node10@npm:1.0.11" @@ -3294,6 +3463,26 @@ __metadata: languageName: node linkType: hard +"@types/decompress@npm:*": + version: 4.2.7 + resolution: "@types/decompress@npm:4.2.7" + dependencies: + "@types/node": "npm:*" + checksum: 10/f2fcc588e0bbeed4f3897e25980d3a5cceba334b900f83c9ad91b9885e3b25b50bdc283a6d684b73442368f9f12f34b4eabfc7f422067c6a882591ed844aa65b + languageName: node + linkType: hard + +"@types/download@npm:^8.0.5": + version: 8.0.5 + resolution: "@types/download@npm:8.0.5" + dependencies: + "@types/decompress": "npm:*" + "@types/got": "npm:^9" + "@types/node": "npm:*" + checksum: 10/10e807e9e4a6dc21918ff3ec302c41db529ba5488c7b296cd6ee7d5cefc872b35f0078d6f47671eb5dd40661d5128eab552c1882982c69fb4825b8a4943f30c9 + languageName: node + linkType: hard + "@types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" @@ -3301,6 +3490,17 @@ __metadata: languageName: node linkType: hard +"@types/got@npm:^9": + version: 9.6.12 + resolution: "@types/got@npm:9.6.12" + dependencies: + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + form-data: "npm:^2.5.0" + checksum: 10/21d300355d0ce460490659763fa761b79d8ca381c0fce3fcc98002ace7e43abe7806aed5905cbf3b1e754aec079afc08417ae489d0a8dc63a430d978b16e04b3 + languageName: node + linkType: hard + "@types/graceful-fs@npm:^4.1.3": version: 4.1.9 resolution: "@types/graceful-fs@npm:4.1.9" @@ -3454,6 +3654,13 @@ __metadata: languageName: node linkType: hard +"@types/snarkjs@npm:^0": + version: 0.7.8 + resolution: "@types/snarkjs@npm:0.7.8" + checksum: 10/26b2f8b8329ca9e6a0f027990262504faeae4154fbd60f18218f94623d26e2cf5abbad7048b1a0c859e19f7a7848e28f40d212a2feb4f6ff975cad23b8bd55c4 + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" @@ -3461,6 +3668,20 @@ __metadata: languageName: node linkType: hard +"@types/tmp@npm:^0.2.6": + version: 0.2.6 + resolution: "@types/tmp@npm:0.2.6" + checksum: 10/e14a094c10569d3b56805552b21417860ef21060d969000d5d5b53604a78c2bdac216f064b03797d4b07a081e0141dd3ab22bc36923e75300eb1c023f7252cc7 + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10/01fd82efc8202670865928629697b62fe9bf0c0dcbc5b1c115831caeb073a2c0abb871ff393d7df1ae94ea41e256cb87d2a5a91fd03cdb1b0b4384e08d4ee482 + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 21.0.3 resolution: "@types/yargs-parser@npm:21.0.3" @@ -3737,7 +3958,7 @@ __metadata: languageName: node linkType: hard -"@zk-kit/eddsa-poseidon@npm:^1.0.0-beta": +"@zk-kit/eddsa-poseidon@npm:1.0.0-beta, @zk-kit/eddsa-poseidon@npm:^1.0.0-beta": version: 1.0.0-beta resolution: "@zk-kit/eddsa-poseidon@npm:1.0.0-beta" dependencies: @@ -4199,6 +4420,13 @@ __metadata: languageName: node linkType: hard +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.7": version: 1.0.7 resolution: "available-typed-arrays@npm:1.0.7" @@ -5024,6 +5252,15 @@ __metadata: languageName: node linkType: hard +"combined-stream@npm:^1.0.6": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 + languageName: node + linkType: hard + "commander@npm:11.1.0": version: 11.1.0 resolution: "commander@npm:11.1.0" @@ -5426,6 +5663,13 @@ __metadata: languageName: node linkType: hard +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + "dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -6227,7 +6471,7 @@ __metadata: languageName: node linkType: hard -"ethers@npm:^6.11.1": +"ethers@npm:^6.11.1, ethers@npm:^6.12.0": version: 6.12.1 resolution: "ethers@npm:6.12.1" dependencies: @@ -6564,6 +6808,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^2.5.0": + version: 2.5.1 + resolution: "form-data@npm:2.5.1" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.6" + mime-types: "npm:^2.1.12" + checksum: 10/2e2e5e927979ba3623f9b4c4bcc939275fae3f2dea9dafc8db3ca656a3d75476605de2c80f0e6f1487987398e056f0b4c738972d6e1edd83392d5686d0952eed + languageName: node + linkType: hard + "framer-motion@npm:^10.12.12": version: 10.18.0 resolution: "framer-motion@npm:10.18.0" @@ -8690,6 +8945,22 @@ __metadata: languageName: node linkType: hard +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a + languageName: node + linkType: hard + "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -9503,6 +9774,19 @@ __metadata: languageName: node linkType: hard +"prettier-plugin-solidity@npm:^1.3.1": + version: 1.3.1 + resolution: "prettier-plugin-solidity@npm:1.3.1" + dependencies: + "@solidity-parser/parser": "npm:^0.17.0" + semver: "npm:^7.5.4" + solidity-comments-extractor: "npm:^0.0.8" + peerDependencies: + prettier: ">=2.3.0" + checksum: 10/45c1bf16ca960e43e8dc518db95a9eecfce941480e2737272ab259ea9dcb9796a7830a8884de21637f286f80f06d4b4163418d4d55e41347aee96ee93bc4e8f0 + languageName: node + linkType: hard + "prettier@npm:^3.2.5": version: 3.2.5 resolution: "prettier@npm:3.2.5" @@ -10017,6 +10301,69 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.12.0": + version: 4.17.2 + resolution: "rollup@npm:4.17.2" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.17.2" + "@rollup/rollup-android-arm64": "npm:4.17.2" + "@rollup/rollup-darwin-arm64": "npm:4.17.2" + "@rollup/rollup-darwin-x64": "npm:4.17.2" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.17.2" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.17.2" + "@rollup/rollup-linux-arm64-gnu": "npm:4.17.2" + "@rollup/rollup-linux-arm64-musl": "npm:4.17.2" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.17.2" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.17.2" + "@rollup/rollup-linux-s390x-gnu": "npm:4.17.2" + "@rollup/rollup-linux-x64-gnu": "npm:4.17.2" + "@rollup/rollup-linux-x64-musl": "npm:4.17.2" + "@rollup/rollup-win32-arm64-msvc": "npm:4.17.2" + "@rollup/rollup-win32-ia32-msvc": "npm:4.17.2" + "@rollup/rollup-win32-x64-msvc": "npm:4.17.2" + "@types/estree": "npm:1.0.5" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10/a021d57f73d746340a1c2b3a03ef0b3bb7f3c837e6acd9aa78b1b1234011aa5b5271b0ef25abba2c1ed268b5e2c90c39a0f8194bcf825728be720f9f2496b248 + languageName: node + linkType: hard + "rollup@npm:^4.14.0": version: 4.14.0 resolution: "rollup@npm:4.14.0" @@ -10156,6 +10503,7 @@ __metadata: "@commitlint/config-conventional": "npm:^19.1.0" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.4" + "@types/snarkjs": "npm:^0" "@typescript-eslint/eslint-plugin": "npm:^7.5.0" "@typescript-eslint/parser": "npm:^7.5.0" changelogithub: "patch:changelogithub@npm%3A0.13.5#~/.yarn/patches/changelogithub-npm-0.13.5-9884734389.patch" @@ -10173,7 +10521,9 @@ __metadata: jest: "npm:^29.7.0" lint-staged: "npm:^15.2.2" prettier: "npm:^3.2.5" + prettier-plugin-solidity: "npm:^1.3.1" rimraf: "npm:^5.0.5" + snarkjs: "npm:^0.7.4" ts-jest: "npm:^29.1.2" ts-node: "npm:^10.9.2" typedoc: "npm:^0.25.13" @@ -10311,6 +10661,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: 10/da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d + languageName: node + linkType: hard + "slice-ansi@npm:^5.0.0": version: 5.0.0 resolution: "slice-ansi@npm:5.0.0" @@ -10358,7 +10715,7 @@ __metadata: languageName: node linkType: hard -"snarkjs@npm:0.7.4, snarkjs@npm:^0.7.0": +"snarkjs@npm:0.7.4, snarkjs@npm:^0.7.0, snarkjs@npm:^0.7.3, snarkjs@npm:^0.7.4": version: 0.7.4 resolution: "snarkjs@npm:0.7.4" dependencies: @@ -10399,6 +10756,13 @@ __metadata: languageName: node linkType: hard +"solidity-comments-extractor@npm:^0.0.8": + version: 0.0.8 + resolution: "solidity-comments-extractor@npm:0.0.8" + checksum: 10/615d53c2e8f5e7a1ad26e4e7e3bdc8b7c7885420611fcd690864bb54a9af2813a93cf30bdede16273791bda16eebc7a4ce1379d458ac2d7834074eb4936dea70 + languageName: node + linkType: hard + "source-map-js@npm:^1.2.0": version: 1.2.0 resolution: "source-map-js@npm:1.2.0" From ea55bd0a09124b0811539bb7dbea58d3bd8af3c4 Mon Sep 17 00:00:00 2001 From: cedoor Date: Thu, 9 May 2024 16:35:11 +0100 Subject: [PATCH 3/9] ci: add circuit tests to ci --- .github/workflows/production.yml | 3 +++ .github/workflows/pull-requests.yml | 3 +++ package.json | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index 055412e..6bc3617 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -48,6 +48,9 @@ jobs: - name: Test libraries run: yarn test:libraries + - name: Test circuits + run: yarn test:circuits + - name: Coveralls uses: coverallsapp/github-action@v2.2.3 with: diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index a600e58..1fb8bc3 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -45,3 +45,6 @@ jobs: - name: Test libraries run: yarn test + + - name: Test circuits + run: yarn test:circuits diff --git a/package.json b/package.json index a1ad400..3cee8b0 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,10 @@ "scripts": { "build": "yarn build:libraries", "build:libraries": "yarn workspaces foreach -A -t --no-private run build", - "test": "yarn test:libraries", + "test": "yarn test:libraries && yarn test:circuits", "test:libraries": "jest --coverage", "test:library": "jest packages/${0}", + "test:circuits": "yarn workspace @semaphore-extensions/identity-proof.circom test", "lint:eslint": "eslint . --ext .js,.ts,.tsx", "lint": "yarn lint:eslint", "lint:fix": "yarn lint:eslint --fix", From fc4ea04b1023cfe222d045df6a714e327ccee402 Mon Sep 17 00:00:00 2001 From: cedoor Date: Mon, 20 May 2024 12:14:21 -0500 Subject: [PATCH 4/9] chore(identity-proof): replace utils with artifacts package --- packages/identity-proof/package.json | 1 + packages/identity-proof/src/generate.ts | 5 +++-- yarn.lock | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/identity-proof/package.json b/packages/identity-proof/package.json index 3e20314..765dda9 100644 --- a/packages/identity-proof/package.json +++ b/packages/identity-proof/package.json @@ -45,6 +45,7 @@ "rollup-plugin-cleanup": "^3.2.1" }, "dependencies": { + "@zk-kit/artifacts": "^1.3.2", "@zk-kit/eddsa-poseidon": "1.0.0-beta", "@zk-kit/utils": "1.0.0-beta.4", "ethers": "^6.12.0", diff --git a/packages/identity-proof/src/generate.ts b/packages/identity-proof/src/generate.ts index 38f5da8..7fc8ea6 100644 --- a/packages/identity-proof/src/generate.ts +++ b/packages/identity-proof/src/generate.ts @@ -1,5 +1,6 @@ import { deriveSecretScalar } from "@zk-kit/eddsa-poseidon" -import { SnarkArtifacts, maybeGetEdDSASnarkArtifacts, packGroth16Proof } from "@zk-kit/utils" +import { SnarkArtifacts, packGroth16Proof } from "@zk-kit/utils" +import { Project, maybeGetSnarkArtifacts } from "@zk-kit/artifacts" import type { BigNumberish } from "ethers" import { NumericString, groth16 } from "snarkjs" import hash from "./hash" @@ -30,7 +31,7 @@ export default async function generate( // allow user to override our artifacts // otherwise they'll be downloaded if not already in local tmp folder - snarkArtifacts ??= await maybeGetEdDSASnarkArtifacts() + snarkArtifacts ??= await maybeGetSnarkArtifacts(Project.SEMAPHORE_IDENTITY) const { wasm, zkey } = snarkArtifacts const secretScalar = deriveSecretScalar(privateKey) diff --git a/yarn.lock b/yarn.lock index 891d914..8eb51cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3167,6 +3167,7 @@ __metadata: "@types/download": "npm:^8.0.5" "@types/snarkjs": "npm:^0" "@types/tmp": "npm:^0.2.6" + "@zk-kit/artifacts": "npm:^1.3.2" "@zk-kit/eddsa-poseidon": "npm:1.0.0-beta" "@zk-kit/utils": "npm:1.0.0-beta.4" ethers: "npm:^6.12.0" @@ -3929,6 +3930,13 @@ __metadata: languageName: node linkType: hard +"@zk-kit/artifacts@npm:^1.3.2": + version: 1.3.2 + resolution: "@zk-kit/artifacts@npm:1.3.2" + checksum: 10/e3480397505dad5dbaeb704748c87045c268cccf614d9d3275fbbc45178657b83b1a7a12f3b4ddf561cf9e585bd6f1ca8ec65a03531c484bec1d154ff9252921 + languageName: node + linkType: hard + "@zk-kit/baby-jubjub@npm:0.3.0": version: 0.3.0 resolution: "@zk-kit/baby-jubjub@npm:0.3.0" From 64344ac9a77052098b4cfd3c7fd658cf2fa8c20b Mon Sep 17 00:00:00 2001 From: cedoor Date: Mon, 20 May 2024 12:21:50 -0500 Subject: [PATCH 5/9] chore(identity-proof): update utils dependency --- packages/identity-proof/package.json | 2 +- yarn.lock | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/identity-proof/package.json b/packages/identity-proof/package.json index 765dda9..7bb139a 100644 --- a/packages/identity-proof/package.json +++ b/packages/identity-proof/package.json @@ -47,7 +47,7 @@ "dependencies": { "@zk-kit/artifacts": "^1.3.2", "@zk-kit/eddsa-poseidon": "1.0.0-beta", - "@zk-kit/utils": "1.0.0-beta.4", + "@zk-kit/utils": "1.0.0-beta.5", "ethers": "^6.12.0", "snarkjs": "^0.7.3" } diff --git a/yarn.lock b/yarn.lock index 8eb51cc..494404d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3169,7 +3169,7 @@ __metadata: "@types/tmp": "npm:^0.2.6" "@zk-kit/artifacts": "npm:^1.3.2" "@zk-kit/eddsa-poseidon": "npm:1.0.0-beta" - "@zk-kit/utils": "npm:1.0.0-beta.4" + "@zk-kit/utils": "npm:1.0.0-beta.5" ethers: "npm:^6.12.0" ffjavascript: "npm:^0.3.0" poseidon-lite: "npm:^0.2.0" @@ -4044,6 +4044,15 @@ __metadata: languageName: node linkType: hard +"@zk-kit/utils@npm:1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@zk-kit/utils@npm:1.0.0-beta.5" + dependencies: + buffer: "npm:^6.0.3" + checksum: 10/9f658b04b461524a68d8594f72165b2d79d78fe3dfea9a3b555f44e5d8cc94faefad12820ce9d9f3f8137ac44187b5bcc731d3d9b56a2f0c8fabb2a2a6a90194 + languageName: node + linkType: hard + "JSONStream@npm:^1.3.5": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" From b165fcd4040c7201df708ad656985573ac8425a9 Mon Sep 17 00:00:00 2001 From: cedoor Date: Mon, 20 May 2024 12:35:34 -0500 Subject: [PATCH 6/9] chore: set new lockfile --- yarn.lock | 902 ++++++++++++++++++++++-------------------------------- 1 file changed, 362 insertions(+), 540 deletions(-) diff --git a/yarn.lock b/yarn.lock index 494404d..b2e3bd2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,13 +5,6 @@ __metadata: version: 8 cacheKey: 10 -"@aashutoshrathi/word-wrap@npm:^1.2.3": - version: 1.2.6 - resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: 10/6eebd12a5cd03cee38fcb915ef9f4ea557df6a06f642dfc7fe8eb4839eb5c9ca55a382f3604d52c14200b0c214c12af5e1f23d2a6d8e23ef2d016b105a9d6c0a - languageName: node - linkType: hard - "@adraffy/ens-normalize@npm:1.10.0": version: 1.10.0 resolution: "@adraffy/ens-normalize@npm:1.10.0" @@ -37,13 +30,13 @@ __metadata: linkType: hard "@antfu/utils@npm:^0.7.7": - version: 0.7.7 - resolution: "@antfu/utils@npm:0.7.7" - checksum: 10/28b1a9caecc26bb43c5b08ea18c384f97a1eccc29763ad19c719e57f252fc12296f13849917fdf6611bd3aceff17137011363703e7ac0a07a083c9dce4676e42 + version: 0.7.8 + resolution: "@antfu/utils@npm:0.7.8" + checksum: 10/9efffb78a9683add047b0e2be96a059c3a29baee1565a2d127500bc433def25a0375c1e84c9479cbb3f1dcec797b2c1f0a24e5d85c830ea64f9a8a6a6ca5b9c3 languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.1, @babel/code-frame@npm:^7.24.2": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.2": version: 7.24.2 resolution: "@babel/code-frame@npm:7.24.2" dependencies: @@ -61,37 +54,37 @@ __metadata: linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.9": - version: 7.24.4 - resolution: "@babel/core@npm:7.24.4" + version: 7.24.5 + resolution: "@babel/core@npm:7.24.5" dependencies: "@ampproject/remapping": "npm:^2.2.0" "@babel/code-frame": "npm:^7.24.2" - "@babel/generator": "npm:^7.24.4" + "@babel/generator": "npm:^7.24.5" "@babel/helper-compilation-targets": "npm:^7.23.6" - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.24.4" - "@babel/parser": "npm:^7.24.4" + "@babel/helper-module-transforms": "npm:^7.24.5" + "@babel/helpers": "npm:^7.24.5" + "@babel/parser": "npm:^7.24.5" "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.1" - "@babel/types": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.5" + "@babel/types": "npm:^7.24.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10/1e049f8df26be0fe5be36173fd7c33dfb004eeeec28152fea83c90e71784f9a6f2237296f43a2ee7d9041e2a33a05f43da48ce2d4e0cd473a682328ca07ce7e0 + checksum: 10/b0d02c51f39cc4c6f8fcaab7052d17dea63aab36d7e2567bfbad074e5a027df737ebcaf3029c3a659bc719bbac806311c2e8786be1d686abd093c48a6068395c languageName: node linkType: hard -"@babel/generator@npm:^7.24.1, @babel/generator@npm:^7.24.4, @babel/generator@npm:^7.7.2": - version: 7.24.4 - resolution: "@babel/generator@npm:7.24.4" +"@babel/generator@npm:^7.24.5, @babel/generator@npm:^7.7.2": + version: 7.24.5 + resolution: "@babel/generator@npm:7.24.5" dependencies: - "@babel/types": "npm:^7.24.0" + "@babel/types": "npm:^7.24.5" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^2.5.1" - checksum: 10/69e1772dcf8f95baec951f422cca091d59a3f29b5eedc989ad87f7262289b94625983f6fe654302ca17aae0a32f9232332b83fcc85533311d6267b09c58b1061 + checksum: 10/7a3782f1d2f824025a538444a0fce44f5b30a7b013984279561bcb3450eec91a41526533fd0b25b1a6fde627bebd0e645c0ea2aa907cc15c7f3da2d9eb71f069 languageName: node linkType: hard @@ -134,7 +127,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15": +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.24.3": version: 7.24.3 resolution: "@babel/helper-module-imports@npm:7.24.3" dependencies: @@ -143,57 +136,57 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/helper-module-transforms@npm:7.23.3" +"@babel/helper-module-transforms@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-module-transforms@npm:7.24.5" dependencies: "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-simple-access": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/helper-validator-identifier": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.24.3" + "@babel/helper-simple-access": "npm:^7.24.5" + "@babel/helper-split-export-declaration": "npm:^7.24.5" + "@babel/helper-validator-identifier": "npm:^7.24.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/583fa580f8e50e6f45c4f46aa76a8e49c2528deb84e25f634d66461b9a0e2420e13979b0a607b67aef67eaf8db8668eb9edc038b4514b16e3879fe09e8fd294b + checksum: 10/1a91e8abc2f427f8273ce3b99ef7b9c013eb3628221428553e0d4bc9c6db2e73bc4fc1b8535bd258544936accab9380e0d095f2449f913cad650ddee744b2124 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.24.0 - resolution: "@babel/helper-plugin-utils@npm:7.24.0" - checksum: 10/dc8c7af321baf7653d93315beffee1790eb2c464b4f529273a24c8743a3f3095bf3f2d11828cb2c52d56282ef43a4bdc67a79c9ab8dd845e35d01871f3f28a0e +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.5, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.24.5 + resolution: "@babel/helper-plugin-utils@npm:7.24.5" + checksum: 10/6e11ca5da73e6bd366848236568c311ac10e433fc2034a6fe6243af28419b07c93b4386f87bbc940aa058b7c83f370ef58f3b0fd598106be040d21a3d1c14276 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" +"@babel/helper-simple-access@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-simple-access@npm:7.24.5" dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/7d5430eecf880937c27d1aed14245003bd1c7383ae07d652b3932f450f60bfcf8f2c1270c593ab063add185108d26198c69d1aca0e6fb7c6fdada4bcf72ab5b7 + "@babel/types": "npm:^7.24.5" + checksum: 10/db8768a16592faa1bde9061cac3d903bdbb2ddb2a7e9fb73c5904daee1f1b1dc69ba4d249dc22c45885c0d4b54fd0356ee78e6d67a9a90330c7dd37e6cd3acff languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" +"@babel/helper-split-export-declaration@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-split-export-declaration@npm:7.24.5" dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + "@babel/types": "npm:^7.24.5" + checksum: 10/84777b6304ef0fe6501038985b61aaa118082688aa54eca8265f14f3ae2e01adf137e9111f4eb9870e0e9bc23901e0b8859bb2a9e4362ddf89d05e1c409c2422 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.23.4": +"@babel/helper-string-parser@npm:^7.24.1": version: 7.24.1 resolution: "@babel/helper-string-parser@npm:7.24.1" checksum: 10/04c0ede77b908b43e6124753b48bc485528112a9335f0a21a226bff1ace75bb6e64fab24c85cb4b1610ef3494dacd1cb807caeb6b79a7b36c43d48c289b35949 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 10/df882d2675101df2d507b95b195ca2f86a3ef28cb711c84f37e79ca23178e13b9f0d8b522774211f51e40168bf5142be4c1c9776a150cddb61a0d5bf3e95750b +"@babel/helper-validator-identifier@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helper-validator-identifier@npm:7.24.5" + checksum: 10/38aaf6a64a0ea2e84766165b461deda3c24fd2173dff18419a2cc9e1ea1d3e709039aee94db29433a07011492717c80900a5eb564cdca7d137757c3c69e26898 languageName: node linkType: hard @@ -204,35 +197,35 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.24.4": - version: 7.24.4 - resolution: "@babel/helpers@npm:7.24.4" +"@babel/helpers@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/helpers@npm:7.24.5" dependencies: "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.1" - "@babel/types": "npm:^7.24.0" - checksum: 10/54a9d0f86f2803fcc216cfa23b66b871ea0fa0a892af1c9a79075872c2437de71afbb150ed8216f30e00b19a0b9c5c9d5845173d170e1ebfbbf8887839b89dde + "@babel/traverse": "npm:^7.24.5" + "@babel/types": "npm:^7.24.5" + checksum: 10/efd74325823c70a32aa9f5e263c8eb0a1f729f5e9ea168e3226fa92a10b1702593b76034812e9f7b560d6447f9cd446bad231d7086af842129c6596306300094 languageName: node linkType: hard "@babel/highlight@npm:^7.24.2": - version: 7.24.2 - resolution: "@babel/highlight@npm:7.24.2" + version: 7.24.5 + resolution: "@babel/highlight@npm:7.24.5" dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.20" + "@babel/helper-validator-identifier": "npm:^7.24.5" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10/4555124235f34403bb28f55b1de58edf598491cc181c75f8afc8fe529903cb598cd52fe3bf2faab9bc1f45c299681ef0e44eea7a848bb85c500c5a4fe13f54f6 + checksum: 10/afde0403154ad69ecd58a98903058e776760444bf4d0363fb740a8596bc6278b72c5226637c4f6b3674d70acb1665207fe2fcecfe93a74f2f4ab033e89fd7e8c languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.1, @babel/parser@npm:^7.24.4": - version: 7.24.4 - resolution: "@babel/parser@npm:7.24.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/parser@npm:7.24.5" bin: parser: ./bin/babel-parser.js - checksum: 10/3742cc5068036287e6395269dce5a2735e6349cdc8d4b53297c75f98c580d7e1c8cb43235623999d151f2ef975d677dbc2c2357573a1855caa71c271bf3046c9 + checksum: 10/f5ed1c5fd4b0045a364fb906f54fd30e2fff93a45069068b6d80d3ab2b64f5569c90fb41d39aff80fb7e925ca4d44917965a76776a3ca11924ec1fae3be5d1ea languageName: node linkType: hard @@ -391,13 +384,13 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx-self@npm:^7.18.6": - version: 7.24.1 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.1" + version: 7.24.5 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.5" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-plugin-utils": "npm:^7.24.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/a0ff893b946bb0e501ad5aab43ce4b321ed9e74b94c0bc7191e2ee6409014fc96ee1a47dcb1ecdf445c44868564667ae16507ed4516dcacf6aa9c37a0ad28382 + checksum: 10/45097a376e30f8f12f7e719559c498f108f7135e8ae8bf807cf0b1c8664a5dcb8eed1b84bbb75e38e590636afa7c7459cc7f7471ea8c96de756c4c9eb76fadcf languageName: node linkType: hard @@ -413,11 +406,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.23.2": - version: 7.24.4 - resolution: "@babel/runtime@npm:7.24.4" + version: 7.24.5 + resolution: "@babel/runtime@npm:7.24.5" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10/8ec8ce2c145bc7e31dd39ab66df124f357f65c11489aefacb30f431bae913b9aaa66aa5efe5321ea2bf8878af3fcee338c87e7599519a952e3a6f83aa1b03308 + checksum: 10/e0f4f4d4503f7338749d1dd92361ad132d683bde64e6b61d6c855e100dcd01592295fcfdcc960c946b85ef7908dc2f501080da58447c05812cf3cd80c599bb62 languageName: node linkType: hard @@ -432,32 +425,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/traverse@npm:7.24.1" +"@babel/traverse@npm:^7.24.5": + version: 7.24.5 + resolution: "@babel/traverse@npm:7.24.5" dependencies: - "@babel/code-frame": "npm:^7.24.1" - "@babel/generator": "npm:^7.24.1" + "@babel/code-frame": "npm:^7.24.2" + "@babel/generator": "npm:^7.24.5" "@babel/helper-environment-visitor": "npm:^7.22.20" "@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.24.1" - "@babel/types": "npm:^7.24.0" + "@babel/helper-split-export-declaration": "npm:^7.24.5" + "@babel/parser": "npm:^7.24.5" + "@babel/types": "npm:^7.24.5" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10/b9b0173c286ef549e179f3725df3c4958069ad79fe5b9840adeb99692eb4a5a08db4e735c0f086aab52e7e08ec711cee9e7c06cb908d8035641d1382172308d3 + checksum: 10/e237de56e0c30795293fdb6f2cb09a75e6230836e3dc67dc4fa21781eb4d5842996bf3af95bc57ac5c7e6e97d06446f14732d0952eb57d5d9643de7c4f95bee6 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.24.0 - resolution: "@babel/types@npm:7.24.0" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": + version: 7.24.5 + resolution: "@babel/types@npm:7.24.5" dependencies: - "@babel/helper-string-parser": "npm:^7.23.4" - "@babel/helper-validator-identifier": "npm:^7.22.20" + "@babel/helper-string-parser": "npm:^7.24.1" + "@babel/helper-validator-identifier": "npm:^7.24.5" to-fast-properties: "npm:^2.0.0" - checksum: 10/a0b4875ce2e132f9daff0d5b27c7f4c4fcc97f2b084bdc5834e92c9d32592778489029e65d99d00c406da612d87b72d7a236c0afccaa1435c028d0c94c9b6da4 + checksum: 10/259e7512476ae64830e73f2addf143159232bcbf0eba6a6a27cab25a960cd353a11c826eb54185fdf7d8d9865922cbcd6522149e9ec55b967131193f9c9111a1 languageName: node linkType: hard @@ -1703,11 +1696,11 @@ __metadata: linkType: hard "@commitlint/cli@npm:^19.2.1": - version: 19.2.1 - resolution: "@commitlint/cli@npm:19.2.1" + version: 19.3.0 + resolution: "@commitlint/cli@npm:19.3.0" dependencies: - "@commitlint/format": "npm:^19.0.3" - "@commitlint/lint": "npm:^19.1.0" + "@commitlint/format": "npm:^19.3.0" + "@commitlint/lint": "npm:^19.2.2" "@commitlint/load": "npm:^19.2.0" "@commitlint/read": "npm:^19.2.1" "@commitlint/types": "npm:^19.0.3" @@ -1715,17 +1708,17 @@ __metadata: yargs: "npm:^17.0.0" bin: commitlint: cli.js - checksum: 10/6d3555039c96e21664d5159b06317558d31ca150f3326a2bd75aa82335032956c8f09481bf30b3aa3a2f8a2037b0a8e1947a787d57f4cb2007e3f69814e9c31f + checksum: 10/b1565c0529b8a27ebb3313230f5ddf2f72c5dd819073b2ec141ea1547dfc4de3400a7208ae4f93b071cf8a6a2736aaeb1348c722f6e4627dc964dd0976a37810 languageName: node linkType: hard "@commitlint/config-conventional@npm:^19.1.0": - version: 19.1.0 - resolution: "@commitlint/config-conventional@npm:19.1.0" + version: 19.2.2 + resolution: "@commitlint/config-conventional@npm:19.2.2" dependencies: "@commitlint/types": "npm:^19.0.3" conventional-changelog-conventionalcommits: "npm:^7.0.2" - checksum: 10/e3a6ccb521d8849600b7db1d777eed4861ab85c83f26bba56057f05a3cd3481bcce2bbfa29cada03929d3560c4b5509c3d0089ee1d3f530fdbc658e8e6311f26 + checksum: 10/9ee17ba00f9182fda544c247bc1d130f65d1bb0d4d9953d5c3d1e4fd36211386c1e849a28e823574546a8bc3df3d0c269122258e21a55d3c12b3e64c00ab50b6 languageName: node linkType: hard @@ -1760,35 +1753,35 @@ __metadata: languageName: node linkType: hard -"@commitlint/format@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/format@npm:19.0.3" +"@commitlint/format@npm:^19.3.0": + version: 19.3.0 + resolution: "@commitlint/format@npm:19.3.0" dependencies: "@commitlint/types": "npm:^19.0.3" chalk: "npm:^5.3.0" - checksum: 10/ccd71c669e43272fc7d55aba38b149ebc1fab40364ddb4182d4067210592981d42e51d2295a5c0476a34a7a296f14eaee54cc3aa246e3e5d477ed2ae5917a532 + checksum: 10/cc0e1e0e6d5eea76b856ad1be879de166c3d1385e1ae0e1bb78c575f9b78b53d92a56cd4719427cdba9cbb9a10235768da29144da9892596525c923d126951dd languageName: node linkType: hard -"@commitlint/is-ignored@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/is-ignored@npm:19.0.3" +"@commitlint/is-ignored@npm:^19.2.2": + version: 19.2.2 + resolution: "@commitlint/is-ignored@npm:19.2.2" dependencies: "@commitlint/types": "npm:^19.0.3" semver: "npm:^7.6.0" - checksum: 10/1a2fcd1dadb37334ed025a0f2bf07493a69d6c8afa126119f2b13f57f7a406babc99b5e8dbf5a624e810f30e4f7c612b64281b139cf61e7923fb3123a107c1bd + checksum: 10/f412734496aba808c8bcbddd59c615600d62447ad2b62049805a044b1f299ff6628e2c9ce5022e55848099edc2591f62a7780842d9dffcd60ab3889bc93fea62 languageName: node linkType: hard -"@commitlint/lint@npm:^19.1.0": - version: 19.1.0 - resolution: "@commitlint/lint@npm:19.1.0" +"@commitlint/lint@npm:^19.2.2": + version: 19.2.2 + resolution: "@commitlint/lint@npm:19.2.2" dependencies: - "@commitlint/is-ignored": "npm:^19.0.3" + "@commitlint/is-ignored": "npm:^19.2.2" "@commitlint/parse": "npm:^19.0.3" "@commitlint/rules": "npm:^19.0.3" "@commitlint/types": "npm:^19.0.3" - checksum: 10/caeac7a989e186fb2e0fbd42ea6f32e3eff68525fbd8cd0a8c9bd242e038c3bfaac89c0da9c8f98dd07247b5656d6986163746eed225c3dd5374cd39cc7664a8 + checksum: 10/9bf2ffa0f6cdde3d53d755b95ca717afd193f4560ae5bb0f5ffd7f1bbd571ddc99b27417733c70e1adbd74a5197e4525493b2dfc116680a939db7728fefa805c languageName: node linkType: hard @@ -2239,7 +2232,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": version: 4.10.0 resolution: "@eslint-community/regexpp@npm:4.10.0" checksum: 10/8c36169c815fc5d726078e8c71a5b592957ee60d08c6470f9ce0187c8046af1a00afbda0a065cc40ff18d5d83f82aed9793c6818f7304a74a7488dc9f3ecbd42 @@ -2769,11 +2762,11 @@ __metadata: linkType: hard "@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" dependencies: semver: "npm:^7.3.5" - checksum: 10/f3a7ab3a31de65e42aeb6ed03ed035ef123d2de7af4deb9d4a003d27acc8618b57d9fb9d259fe6c28ca538032a028f37337264388ba27d26d37fff7dde22476e + checksum: 10/1e0e04087049b24b38bc0b30d87a9388ee3ca1d3fdfc347c2f77d84fcfe6a51f250bc57ba2c1f614d7e4285c6c62bf8c769bc19aa0949ea39e5b043ee023b0bd languageName: node linkType: hard @@ -2913,13 +2906,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.14.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-android-arm-eabi@npm:4.17.2" @@ -2927,13 +2913,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-android-arm64@npm:4.14.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-android-arm64@npm:4.17.2" @@ -2941,13 +2920,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.14.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-darwin-arm64@npm:4.17.2" @@ -2955,13 +2927,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.14.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-darwin-x64@npm:4.17.2" @@ -2969,13 +2934,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.14.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.17.2" @@ -2990,13 +2948,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.14.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.17.2" @@ -3004,13 +2955,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.14.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.17.2" @@ -3018,13 +2962,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.0" - conditions: os=linux & cpu=ppc64le & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.17.2" @@ -3032,13 +2969,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.14.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.17.2" @@ -3046,13 +2976,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.14.0" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.17.2" @@ -3060,13 +2983,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.14.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.17.2" @@ -3074,13 +2990,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.14.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-linux-x64-musl@npm:4.17.2" @@ -3088,13 +2997,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.14.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.17.2" @@ -3102,13 +3004,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.14.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.17.2" @@ -3116,13 +3011,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.14.0": - version: 4.14.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.14.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.17.2": version: 4.17.2 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.17.2" @@ -3546,7 +3434,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -3570,9 +3458,9 @@ __metadata: linkType: hard "@types/lodash@npm:*": - version: 4.17.0 - resolution: "@types/lodash@npm:4.17.0" - checksum: 10/2053203292b5af99352d108656ceb15d39da5922fc3fb8186e1552d65c82d6e545372cc97f36c95873aa7186404d59d9305e9d49254d4ae55e77df1e27ab7b5d + version: 4.17.4 + resolution: "@types/lodash@npm:4.17.4" + checksum: 10/3ec19f9fc48200006e71733e08bcb1478b0398673657fcfb21a8643d41a80bcce09a01000077c3b23a3c6d86b9b314abe0672a8fdfc0fd66b893bd41955cfab8 languageName: node linkType: hard @@ -3591,11 +3479,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:^20.12.4": - version: 20.12.4 - resolution: "@types/node@npm:20.12.4" + version: 20.12.12 + resolution: "@types/node@npm:20.12.12" dependencies: undici-types: "npm:~5.26.4" - checksum: 10/eab4ed07774b96ea77fc23eb27508dbfe094b52c8326764f5044c609c036a1570fd8708ba770e13db7ad7b69d8a834bf3a4e59fc2f1ade31d6501db76cf5a39b + checksum: 10/e3945da0a3017bdc1f88f15bdfb823f526b2a717bd58d4640082d6eb0bd2794b5c99bfb914b9e9324ec116dce36066990353ed1c777e8a7b0641f772575793c4 languageName: node linkType: hard @@ -3607,11 +3495,11 @@ __metadata: linkType: hard "@types/node@npm:^18.11.9": - version: 18.19.29 - resolution: "@types/node@npm:18.19.29" + version: 18.19.33 + resolution: "@types/node@npm:18.19.33" dependencies: undici-types: "npm:~5.26.4" - checksum: 10/9a3572b488f875ca1b545cc96980f1cb54dd05da16b2dc0cc3c3cb49ceafc3a5e417f4741c711c7bb81a67a0ddd29f546dcb077e4cb9b98a492fbaf373b1fbdc + checksum: 10/e5816356e3bcf1af272587d6a95c172199532a86bdb379e4d314a10605463908b36316af51ff6d3c19d9f1965e14a6f62c6a5cbab876aafffe71e1211512084a languageName: node linkType: hard @@ -3630,25 +3518,25 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.0.10": - version: 18.2.24 - resolution: "@types/react-dom@npm:18.2.24" + version: 18.3.0 + resolution: "@types/react-dom@npm:18.3.0" dependencies: "@types/react": "npm:*" - checksum: 10/bbd4005f2f65b7606505e9b8759b6e99e222d503602765594ea327893fb7061de8951279baef47a1932f04d94d1865daea05a32f9fcf6f9f1143dbabce5b33de + checksum: 10/6ff53f5a7b7fba952a68e114d3b542ebdc1e87a794234785ebab0bcd9bde7fb4885f21ebaf93d26dc0a1b5b93287f42cad68b78ae04dddf6b20da7aceff0beaf languageName: node linkType: hard "@types/react@npm:*, @types/react@npm:^18.0.27": - version: 18.2.74 - resolution: "@types/react@npm:18.2.74" + version: 18.3.2 + resolution: "@types/react@npm:18.3.2" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/4057aa7d082d434f8e580e5aebd4007e5dbe7f8e9ae5e506a34a629e382070694a0401bf3f0d38fe8d64f4b38622e5794341e634b9739784deae19b037ae43fa + checksum: 10/a85eed82c1009dc9d979281d9ea1f5322255003de3378390f35d897b4bdaf1d34ea748636c03e9e9b4b7cc97c2f4582993d2d60e40846226ad497d97c7d8565a languageName: node linkType: hard -"@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": +"@types/semver@npm:^7.3.12": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178 @@ -3700,45 +3588,43 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.5.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:7.5.0" - "@typescript-eslint/type-utils": "npm:7.5.0" - "@typescript-eslint/utils": "npm:7.5.0" - "@typescript-eslint/visitor-keys": "npm:7.5.0" - debug: "npm:^4.3.4" + version: 7.10.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.10.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:7.10.0" + "@typescript-eslint/type-utils": "npm:7.10.0" + "@typescript-eslint/utils": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.4" + ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" + ts-api-utils: "npm:^1.3.0" peerDependencies: "@typescript-eslint/parser": ^7.0.0 eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/5469900a0c2f485dcae10fc8509e2e1d981538d4c90a13330672fbd10cb7b9bb6d55445d6edea876e2c1719f1f0e25f6af0eb2d413e0c458a8930a371481b9e6 + checksum: 10/dfe505cdf718dd29e8637b902e4c544c6b7d246d2051fd1936090423eb3dadfe2bd757de51e565e6fd80e74cf1918e191c26fee6df515100484ec3efd9b8d111 languageName: node linkType: hard "@typescript-eslint/parser@npm:^7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/parser@npm:7.5.0" + version: 7.10.0 + resolution: "@typescript-eslint/parser@npm:7.10.0" dependencies: - "@typescript-eslint/scope-manager": "npm:7.5.0" - "@typescript-eslint/types": "npm:7.5.0" - "@typescript-eslint/typescript-estree": "npm:7.5.0" - "@typescript-eslint/visitor-keys": "npm:7.5.0" + "@typescript-eslint/scope-manager": "npm:7.10.0" + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/typescript-estree": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/a5414fb2fbd78bf7337125f4a3040318bdffa996a94e27b4f791d51535d5d9286c3e0ae43652b251c48549bbfece0e3a33553b30ed986af6b4f715d76361d6bb + checksum: 10/1fa71049b2debf2f7f5366fb433e3d4c8e1591c2061a15fa8797d14623a2b6984340a59e7717acc013ce8c6a2ed32c5c0e811fe948b5936d41c2a5a09b61d130 languageName: node linkType: hard @@ -3752,30 +3638,30 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/scope-manager@npm:7.5.0" +"@typescript-eslint/scope-manager@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/scope-manager@npm:7.10.0" dependencies: - "@typescript-eslint/types": "npm:7.5.0" - "@typescript-eslint/visitor-keys": "npm:7.5.0" - checksum: 10/9446c07290a7f7f539a0bdaaf2fb97ae57095a01cd0baad9ecac532da88e7d0d207e5180131c0608542aee2fd1270caf700a2788fa460ffc6e65e966baf34135 + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" + checksum: 10/838a7a9573577d830b2f65801ce045abe6fad08ac7e04bac4cc9b2e5b7cbac07e645de9c79b9485f4cc361fe25da5319025aa0336fad618023fff62e4e980638 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/type-utils@npm:7.5.0" +"@typescript-eslint/type-utils@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/type-utils@npm:7.10.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.5.0" - "@typescript-eslint/utils": "npm:7.5.0" + "@typescript-eslint/typescript-estree": "npm:7.10.0" + "@typescript-eslint/utils": "npm:7.10.0" debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.0.1" + ts-api-utils: "npm:^1.3.0" peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/257730553760fa943538db9648a11f4253efb722ab3394cd325bd775ee0c9d93af84c62540dee9377d4a669eb1cd801faed5e1bcb673d1606c9225eee82b420a + checksum: 10/e62db9ffbfbccce60258108f7ed025005e04df18da897ff1b30049e3c10a47150e94c2fb5ac0ab9711ebb60517521213dcccbea6d08125107a87a67088a79042 languageName: node linkType: hard @@ -3786,10 +3672,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/types@npm:7.5.0" - checksum: 10/12eac46d0dfbbeb1db7d0658b841d554d38365420f42b699dea531e0c475b77d6fd838ac4046b7672e53d9bb76a021eaf6198cf3210fe1ecf1056ea44b6699a9 +"@typescript-eslint/types@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/types@npm:7.10.0" + checksum: 10/76075a7b87ddfff8e7e4aebf3d225e67bf79ead12a7709999d4d5c31611d9c0813ca69a9298f320efb018fe493ce3763c964a0e670a4c953d8eff000f10672c0 languageName: node linkType: hard @@ -3811,39 +3697,36 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.5.0" +"@typescript-eslint/typescript-estree@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.10.0" dependencies: - "@typescript-eslint/types": "npm:7.5.0" - "@typescript-eslint/visitor-keys": "npm:7.5.0" + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^1.3.0" peerDependenciesMeta: typescript: optional: true - checksum: 10/7487293a9ab9459b133322e695435b4540ffcad89f2bea917c3389676d68283297a663c77d6bda298144d3581361733ae4af632213fa7ef48be67e9aa792b4cc + checksum: 10/d11d0c45749c9bd4a187b6dfdf5600e36ba8c87667cd2020d9158667c47c32ec0bcb1ef3b7eee5577b667def5f7f33d8131092a0f221b3d3e8105078800f923f languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/utils@npm:7.5.0" +"@typescript-eslint/utils@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/utils@npm:7.10.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:7.5.0" - "@typescript-eslint/types": "npm:7.5.0" - "@typescript-eslint/typescript-estree": "npm:7.5.0" - semver: "npm:^7.5.4" + "@typescript-eslint/scope-manager": "npm:7.10.0" + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/typescript-estree": "npm:7.10.0" peerDependencies: eslint: ^8.56.0 - checksum: 10/a0b2f206a1c35dd77b292d1cd385443f42d00ccf8a5151811fe6bdd6b5f3a450372bf99b8757c307988d14d99587424c59ed59e78cf56c17b43c9c3fd8932871 + checksum: 10/62327b585295f9c3aa2508aefac639d562b6f7f270a229aa3a2af8dbd055f4a4d230a8facae75a8a53bb8222b0041162072d259add56b541f8bdfda8da36ea5f languageName: node linkType: hard @@ -3875,13 +3758,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:7.5.0": - version: 7.5.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.5.0" +"@typescript-eslint/visitor-keys@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.10.0" dependencies: - "@typescript-eslint/types": "npm:7.5.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/ba83113110b13bc65120ea3d1e21e1dcea6010b0a1a3d07da2fd274bb0feb552a92276b6052e659d2fe40178938b17368ede64752c4937f41685c53bdf9d2634 + "@typescript-eslint/types": "npm:7.10.0" + eslint-visitor-keys: "npm:^3.4.3" + checksum: 10/44b555a075bdff38e3e13c454ceaac50aa2546635e81f907d1ea84822c8887487d1d6bb4ff690f627da9585dc19ad07e228847c162c30bb06c46fb119899d8cc languageName: node linkType: hard @@ -3966,7 +3849,7 @@ __metadata: languageName: node linkType: hard -"@zk-kit/eddsa-poseidon@npm:1.0.0-beta, @zk-kit/eddsa-poseidon@npm:^1.0.0-beta": +"@zk-kit/eddsa-poseidon@npm:1.0.0-beta": version: 1.0.0-beta resolution: "@zk-kit/eddsa-poseidon@npm:1.0.0-beta" dependencies: @@ -3977,6 +3860,17 @@ __metadata: languageName: node linkType: hard +"@zk-kit/eddsa-poseidon@npm:^1.0.0-beta": + version: 1.0.0 + resolution: "@zk-kit/eddsa-poseidon@npm:1.0.0" + dependencies: + "@zk-kit/baby-jubjub": "npm:1.0.0-beta" + "@zk-kit/utils": "npm:1.0.0-beta.4" + buffer: "npm:6.0.3" + checksum: 10/17ba32bfa6802944bf7d3e1b8b1d48119574a38d0079e768cc9898bfaf39d5d72b41214e4ba98da3e42af4433d29bf5232118afbeabc6bb1a88bcd22d06cefc4 + languageName: node + linkType: hard + "@zk-kit/groth16@npm:0.3.0": version: 0.3.0 resolution: "@zk-kit/groth16@npm:0.3.0" @@ -4136,14 +4030,14 @@ __metadata: linkType: hard "ajv@npm:^8.11.0": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" + version: 8.13.0 + resolution: "ajv@npm:8.13.0" dependencies: - fast-deep-equal: "npm:^3.1.1" + fast-deep-equal: "npm:^3.1.3" json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10/b406f3b79b5756ac53bfe2c20852471b08e122bc1ee4cde08ae4d6a800574d9cd78d60c81c69c63ff81e4da7cd0b638fafbb2303ae580d49cf1600b9059efb85 + uri-js: "npm:^4.4.1" + checksum: 10/4ada268c9a6e44be87fd295df0f0a91267a7bae8dbc8a67a2d5799c3cb459232839c99d18b035597bb6e3ffe88af6979f7daece854f590a81ebbbc2dfa80002c languageName: node linkType: hard @@ -4786,8 +4680,8 @@ __metadata: linkType: hard "cacache@npm:^18.0.0": - version: 18.0.2 - resolution: "cacache@npm:18.0.2" + version: 18.0.3 + resolution: "cacache@npm:18.0.3" dependencies: "@npmcli/fs": "npm:^3.1.0" fs-minipass: "npm:^3.0.0" @@ -4801,7 +4695,7 @@ __metadata: ssri: "npm:^10.0.0" tar: "npm:^6.1.11" unique-filename: "npm:^3.0.0" - checksum: 10/5ca58464f785d4d64ac2019fcad95451c8c89bea25949f63acd8987fcc3493eaef1beccc0fa39e673506d879d3fc1ab420760f8a14f8ddf46ea2d121805a5e96 + checksum: 10/d4c161f071524bb636334b8cf94780c014e29c180a886b8184da8f2f44d2aca88d5664797c661e9f74bdbd34697c2f231ed7c24c256cecbb0a0563ad1ada2219 languageName: node linkType: hard @@ -4840,9 +4734,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001587": - version: 1.0.30001606 - resolution: "caniuse-lite@npm:1.0.30001606" - checksum: 10/55ee377f9b5e09d290d2a60d339aa1fbab949d3086cfd0546d2896bc57f4df693cf69e9a0c828cb9622df039403927c66ec2d6a7ff4b7580f38846314bdb4800 + version: 1.0.30001620 + resolution: "caniuse-lite@npm:1.0.30001620" + checksum: 10/d615ab66eb14d9b621004297a8f61e435dca67e9311f3979e47ee1af1be2a8f14997b947a101073d949b5454dad745cc35134bc3c4295c7f33968f3f665eba19 languageName: node linkType: hard @@ -5155,9 +5049,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.2.3 - resolution: "cjs-module-lexer@npm:1.2.3" - checksum: 10/f96a5118b0a012627a2b1c13bd2fcb92509778422aaa825c5da72300d6dcadfb47134dd2e9d97dfa31acd674891dd91642742772d19a09a8adc3e56bd2f5928c + version: 1.3.1 + resolution: "cjs-module-lexer@npm:1.3.1" + checksum: 10/6629188d5ce74b57e5dce2222db851b5496a8d65b533a05957fb24089a3cec8d769378013c375a954c5a0f7522cde6a36d5a65bfd88f5575cb2de3176046fa8e languageName: node linkType: hard @@ -5309,10 +5203,10 @@ __metadata: languageName: node linkType: hard -"confbox@npm:^0.1.3": - version: 0.1.3 - resolution: "confbox@npm:0.1.3" - checksum: 10/5a5b05169f9efb3dbb34452275fd3667004903782146027b5c44e9630de13cc797612d312f9cc167d82591dcbaede127401704045055dcb32e94d264826be3fd +"confbox@npm:^0.1.3, confbox@npm:^0.1.7": + version: 0.1.7 + resolution: "confbox@npm:0.1.7" + checksum: 10/3086687b9a2a70d44d4b40a2d376536fe7e1baec4a2a34261b21b8a836026b419cbf89ded6054216631823e7d63c415dad4b4d53591d6edbb202bb9820dfa6fa languageName: node linkType: hard @@ -5588,14 +5482,14 @@ __metadata: linkType: hard "dedent@npm:^1.0.0": - version: 1.5.1 - resolution: "dedent@npm:1.5.1" + version: 1.5.3 + resolution: "dedent@npm:1.5.3" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 10/fc00a8bc3dfb7c413a778dc40ee8151b6c6ff35159d641f36ecd839c1df5c6e0ec5f4992e658c82624a1a62aaecaffc23b9c965ceb0bbf4d698bfc16469ac27d + checksum: 10/e5277f6268f288649503125b781a7b7a2c9b22d011139688c0b3619fe40121e600eb1f077c891938d4b2428bdb6326cc3c77a763e4b1cc681bd9666ab1bad2a1 languageName: node linkType: hard @@ -5662,7 +5556,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -5673,7 +5567,7 @@ __metadata: languageName: node linkType: hard -"defu@npm:^6.1.2, defu@npm:^6.1.4": +"defu@npm:^6.1.4": version: 6.1.4 resolution: "defu@npm:6.1.4" checksum: 10/aeffdb47300f45b4fdef1c5bd3880ac18ea7a1fd5b8a8faf8df29350ff03bf16dd34f9800205cab513d476e4c0a3783aa0cff0a433aff0ac84a67ddc4c8a2d64 @@ -5694,7 +5588,7 @@ __metadata: languageName: node linkType: hard -"destr@npm:^2.0.0, destr@npm:^2.0.3": +"destr@npm:^2.0.3": version: 2.0.3 resolution: "destr@npm:2.0.3" checksum: 10/dbb756baa876810ec0ca4bcb702d86cc3b480ed14f36bf5747718ed211f96bca5520b63a4109eb181ad940ee2a645677d9a63d4a0ed11a7510619dae97317201 @@ -5805,9 +5699,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.668": - version: 1.4.728 - resolution: "electron-to-chromium@npm:1.4.728" - checksum: 10/f0b99884e4ad47dd2243671efffb6803575ff63f60312e0bb8b19de371d7c48bc1e65f663927c188993b61f3e2fad20daee5df0aa0db3fe2772fb19bd37dd6f5 + version: 1.4.774 + resolution: "electron-to-chromium@npm:1.4.774" + checksum: 10/1424a1d4c89b498eaa02146ed89d79b3d9536b8c745753433b1f8b9ed12cc701aa3528e87a86c6c07ac4e35490dc1c44a3955408274a32d1446fbb56a0cffc2d languageName: node linkType: hard @@ -5871,7 +5765,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2": +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": version: 1.23.3 resolution: "es-abstract@npm:1.23.3" dependencies: @@ -5942,12 +5836,12 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.0.17": - version: 1.0.18 - resolution: "es-iterator-helpers@npm:1.0.18" + version: 1.0.19 + resolution: "es-iterator-helpers@npm:1.0.19" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.0" + es-abstract: "npm:^1.23.3" es-errors: "npm:^1.3.0" es-set-tostringtag: "npm:^2.0.3" function-bind: "npm:^1.1.2" @@ -5959,7 +5853,7 @@ __metadata: internal-slot: "npm:^1.0.7" iterator.prototype: "npm:^1.1.2" safe-array-concat: "npm:^1.1.2" - checksum: 10/a4fd067e148736fbe6a9883f449e0de88be14a4dff9065c457572ede10ba02a4a15c4ae18b9b7baa5c868860d2be9a6764906c3308135e57ec5bfd386bbd2836 + checksum: 10/980a8081cf6798fe17fcea193b0448d784d72d76aca7240b10813207c67e3dc0d8a23992263870c4fc291da5a946935b0c56dec4fa1a9de8fee0165e4fa1fc58 languageName: node linkType: hard @@ -6080,7 +5974,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": version: 3.1.2 resolution: "escalade@npm:3.1.2" checksum: 10/a1e07fea2f15663c30e40b9193d658397846ffe28ce0a3e4da0d8e485fedfeca228ab846aee101a05015829adf39f9934ff45b2a3fca47bed37a29646bd05cd3 @@ -6278,11 +6172,11 @@ __metadata: linkType: hard "eslint-plugin-react-hooks@npm:^4.6.0": - version: 4.6.0 - resolution: "eslint-plugin-react-hooks@npm:4.6.0" + version: 4.6.2 + resolution: "eslint-plugin-react-hooks@npm:4.6.2" peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10/3c63134e056a6d98d66e2c475c81f904169db817e89316d14e36269919e31f4876a2588aa0e466ec8ef160465169c627fe823bfdaae7e213946584e4a165a3ac + checksum: 10/5a0680941f34e70cf505bcb6082df31a3e445d193ee95a88ff3483041eb944f4cefdaf7e81b0eb1feb4eeceee8c7c6ddb8a2a6e8c4c0388514a42e16ac7b7a69 languageName: node linkType: hard @@ -6797,7 +6691,7 @@ __metadata: languageName: node linkType: hard -"focus-lock@npm:^1.3.2": +"focus-lock@npm:^1.3.5": version: 1.3.5 resolution: "focus-lock@npm:1.3.5" dependencies: @@ -7079,17 +6973,17 @@ __metadata: linkType: hard "glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": - version: 10.3.12 - resolution: "glob@npm:10.3.12" + version: 10.3.15 + resolution: "glob@npm:10.3.15" dependencies: foreground-child: "npm:^3.1.0" jackspeak: "npm:^2.3.6" minimatch: "npm:^9.0.1" minipass: "npm:^7.0.4" - path-scurry: "npm:^1.10.2" + path-scurry: "npm:^1.11.0" bin: glob: dist/esm/bin.mjs - checksum: 10/9e8186abc22dc824b5dd86cefd8e6b5621a72d1be7f68bacc0fd681e8c162ec5546660a6ec0553d6a74757a585e655956c7f8f1a6d24570e8d865c307323d178 + checksum: 10/b2b1c74309979b34fd6010afb50418a12525def32f1d3758d5827fc75d6143fc3ee5d1f3180a43111f6386c9e297c314f208d9d09955a6c6b69f22e92ee97635 languageName: node linkType: hard @@ -7133,11 +7027,12 @@ __metadata: linkType: hard "globalthis@npm:^1.0.3": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" dependencies: - define-properties: "npm:^1.1.3" - checksum: 10/45ae2f3b40a186600d0368f2a880ae257e8278b4c7704f0417d6024105ad7f7a393661c5c2fa1334669cd485ea44bc883a08fdd4516df2428aec40c99f52aa89 + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10/1f1fd078fb2f7296306ef9dd51019491044ccf17a59ed49d375b576ca108ff37e47f3d29aead7add40763574a992f16a5367dd1e2173b8634ef18556ab719ac4 languageName: node linkType: hard @@ -7345,7 +7240,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:^5.2.0, ignore@npm:^5.3.1": version: 5.3.1 resolution: "ignore@npm:5.3.1" checksum: 10/0a884c2fbc8c316f0b9f92beaf84464253b73230a4d4d286697be45fca081199191ca33e1c2e82d9e5f851f5e9a48a78e25a35c951e7eb41e59f150db3530065 @@ -7375,9 +7270,9 @@ __metadata: linkType: hard "import-meta-resolve@npm:^4.0.0": - version: 4.0.0 - resolution: "import-meta-resolve@npm:4.0.0" - checksum: 10/73f0f1d68f7280cb4415e3a212a6e5d57fbfe61ab6f467df3dad5361529fbd89ac7d8ea2b694412b74985a4226d218ad3fb22fd8f06f5429beda521dc9f0229c + version: 4.1.0 + resolution: "import-meta-resolve@npm:4.1.0" + checksum: 10/40162f67eb406c8d5d49266206ef12ff07b54f5fad8cfd806db9efe3a055958e9969be51d6efaf82e34b8bea6758113dcc17bb79ff148292a4badcabc3472f22 languageName: node linkType: hard @@ -7450,9 +7345,9 @@ __metadata: linkType: hard "ipaddr.js@npm:^2.1.0": - version: 2.1.0 - resolution: "ipaddr.js@npm:2.1.0" - checksum: 10/42c16d95cf451399707c2c46e605b88db1ea2b1477b25774b5a7ee96852b0bb1efdc01adbff01fedbe702ff246e1aca5c5e915a6f5a1f1485233a5f7c2eb73c2 + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 10/9e1cdd9110b3bca5d910ab70d7fb1933e9c485d9b92cb14ef39f30c412ba3fe02a553921bf696efc7149cc653453c48ccf173adb996ec27d925f1f340f872986 languageName: node linkType: hard @@ -7936,8 +7831,8 @@ __metadata: linkType: hard "jake@npm:^10.8.5": - version: 10.8.7 - resolution: "jake@npm:10.8.7" + version: 10.9.1 + resolution: "jake@npm:10.9.1" dependencies: async: "npm:^3.2.3" chalk: "npm:^4.0.2" @@ -7945,7 +7840,7 @@ __metadata: minimatch: "npm:^3.1.2" bin: jake: bin/cli.js - checksum: 10/ad1cfe398836df4e6962954e5095597c21c5af1ea5a4182f6adf0869df8aca467a2eeca7869bf44f47120f4dd4ea52589d16050d295c87a5906c0d744775acc3 + checksum: 10/82603513de5a61bc12360d2b8ba2be9f6bb52495b73f4d1b541cdfef9e43314b132ca10e73d2b41e3c1ea16bf79ec30a64afc9b9e2d2c72a4d4575a8db61cbc8 languageName: node linkType: hard @@ -8829,9 +8724,9 @@ __metadata: linkType: hard "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.2.0 - resolution: "lru-cache@npm:10.2.0" - checksum: 10/502ec42c3309c0eae1ce41afca471f831c278566d45a5273a0c51102dee31e0e250a62fa9029c3370988df33a14188a38e682c16143b794de78668de3643e302 + version: 10.2.2 + resolution: "lru-cache@npm:10.2.2" + checksum: 10/ff1a496d30b5eaec2c9079080965bb0cede203cf878371f7033a007f1e54cd4aa13cc8abf7ccec4c994a83a22ed5476e83a55bb57cc07e6c1547a42937e42c37 languageName: node linkType: hard @@ -8844,15 +8739,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10/fc1fe2ee205f7c8855fa0f34c1ab0bcf14b6229e35579ec1fd1079f31d6fc8ef8eb6fd17f2f4d99788d7e339f50e047555551ebd5e434dda503696e7c6591825 - languageName: node - linkType: hard - "lunr@npm:^2.3.9": version: 2.3.9 resolution: "lunr@npm:2.3.9" @@ -8895,8 +8781,8 @@ __metadata: linkType: hard "make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" dependencies: "@npmcli/agent": "npm:^2.0.0" cacache: "npm:^18.0.0" @@ -8907,9 +8793,10 @@ __metadata: minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" promise-retry: "npm:^2.0.1" ssri: "npm:^10.0.0" - checksum: 10/ded5a91a02b76381b06a4ec4d5c1d23ebbde15d402b3c3e4533b371dac7e2f7ca071ae71ae6dae72aa261182557b7b1b3fd3a705b39252dc17f74fa509d3e76f + checksum: 10/11bae5ad6ac59b654dbd854f30782f9de052186c429dfce308eda42374528185a100ee40ac9ffdc36a2b6c821ecaba43913e4730a12f06f15e895ea9cb23fa59 languageName: node linkType: hard @@ -9001,15 +8888,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 - languageName: node - linkType: hard - "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -9028,7 +8906,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": +"minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": version: 9.0.4 resolution: "minimatch@npm:9.0.4" dependencies: @@ -9054,8 +8932,8 @@ __metadata: linkType: hard "minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" @@ -9064,7 +8942,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 10/3edf72b900e30598567eafe96c30374432a8709e61bb06b87198fa3192d466777e2ec21c52985a0999044fa6567bd6f04651585983a1cbb27e2c1770a07ed2a2 + checksum: 10/c669948bec1373313aaa8f104b962a3ced9f45c49b26366a4b0ae27ccdfa9c5740d72c8a84d3f8623d7a61c5fc7afdfda44789008c078f61a62441142efc4a97 languageName: node linkType: hard @@ -9112,9 +8990,9 @@ __metadata: linkType: hard "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 10/e864bd02ceb5e0707696d58f7ce3a0b89233f0d686ef0d447a66db705c0846a8dc6f34865cd85256c1472ff623665f616b90b8ff58058b2ad996c5de747d2d18 + version: 7.1.1 + resolution: "minipass@npm:7.1.1" + checksum: 10/6f4f920f1b5ea585d08fa3739b9bd81726cd85a0c972fb371c0fa6c1544d468813fb1694c7bc64ad81f138fd8abf665e2af0f406de9ba5741d8e4a377ed346b1 languageName: node linkType: hard @@ -9137,15 +9015,15 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.2.0, mlly@npm:^1.6.1": - version: 1.6.1 - resolution: "mlly@npm:1.6.1" +"mlly@npm:^1.6.1, mlly@npm:^1.7.0": + version: 1.7.0 + resolution: "mlly@npm:1.7.0" dependencies: acorn: "npm:^8.11.3" pathe: "npm:^1.1.2" - pkg-types: "npm:^1.0.3" - ufo: "npm:^1.3.2" - checksum: 10/00b4c355236eb3d0294106f208718db486f6e34e28bbb7f6965bd9d6237db338e566f2e13489fbf8bfa9b1337c0f2568d4aeac1840f9963054c91881acc974a9 + pkg-types: "npm:^1.1.0" + ufo: "npm:^1.5.3" + checksum: 10/a52f17767f1aa8133ad4354065e579c3d1cc72e866102bde7e466123772f5e571327b95ce777d1d655724f0c479a82acaafc6e81e25781851779d865682c8823 languageName: node linkType: hard @@ -9300,13 +9178,13 @@ __metadata: linkType: hard "nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" + version: 7.2.1 + resolution: "nopt@npm:7.2.1" dependencies: abbrev: "npm:^2.0.0" bin: nopt: bin/nopt.js - checksum: 10/1e7489f17cbda452c8acaf596a8defb4ae477d2a9953b76eb96f4ec3f62c6b421cd5174eaa742f88279871fde9586d8a1d38fb3f53fa0c405585453be31dff4c + checksum: 10/95a1f6dec8a81cd18cdc2fed93e6f0b4e02cf6bdb4501c848752c6e34f9883d9942f036a5e3b21a699047d8a448562d891e67492df68ec9c373e6198133337ae languageName: node linkType: hard @@ -9511,16 +9389,16 @@ __metadata: linkType: hard "optionator@npm:^0.9.3": - version: 0.9.3 - resolution: "optionator@npm:0.9.3" + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: - "@aashutoshrathi/word-wrap": "npm:^1.2.3" deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" levn: "npm:^0.4.1" prelude-ls: "npm:^1.2.1" type-check: "npm:^0.4.0" - checksum: 10/fa28d3016395974f7fc087d6bbf0ac7f58ac3489f4f202a377e9c194969f329a7b88c75f8152b33fb08794a30dcd5c079db6bb465c28151357f113d80bbf67da + word-wrap: "npm:^1.2.5" + checksum: 10/a8398559c60aef88d7f353a4f98dcdff6090a4e70f874c827302bf1213d9106a1c4d5fcb68dacb1feb3c30a04c4102f41047aa55d4c576b863d6fc876e001af6 languageName: node linkType: hard @@ -9657,13 +9535,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.2": - version: 1.10.2 - resolution: "path-scurry@npm:1.10.2" +"path-scurry@npm:^1.11.0": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" dependencies: lru-cache: "npm:^10.2.0" minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10/a2bbbe8dc284c49dd9be78ca25f3a8b89300e0acc24a77e6c74824d353ef50efbf163e64a69f4330b301afca42d0e2229be0560d6d616ac4e99d48b4062016b1 + checksum: 10/5e8845c159261adda6f09814d7725683257fcc85a18f329880ab4d7cc1d12830967eae5d5894e453f341710d5484b8fdbbd4d75181b4d6e1eb2f4dc7aeadc434 languageName: node linkType: hard @@ -9674,7 +9552,7 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": +"pathe@npm:^1.1.1, pathe@npm:^1.1.2": version: 1.1.2 resolution: "pathe@npm:1.1.2" checksum: 10/f201d796351bf7433d147b92c20eb154a4e0ea83512017bf4ec4e492a5d6e738fb45798be4259a61aa81270179fce11026f6ff0d3fa04173041de044defe9d80 @@ -9702,10 +9580,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: 10/a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: 10/fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 languageName: node linkType: hard @@ -9741,14 +9619,14 @@ __metadata: languageName: node linkType: hard -"pkg-types@npm:^1.0.3": - version: 1.0.3 - resolution: "pkg-types@npm:1.0.3" +"pkg-types@npm:^1.0.3, pkg-types@npm:^1.1.0": + version: 1.1.1 + resolution: "pkg-types@npm:1.1.1" dependencies: - jsonc-parser: "npm:^3.2.0" - mlly: "npm:^1.2.0" - pathe: "npm:^1.1.0" - checksum: 10/e17e1819ce579c9ea390e4c41a9ed9701d8cff14b463f9577cc4f94688da8917c66dabc40feacd47a21eb3de9b532756a78becd882b76add97053af307c1240a + confbox: "npm:^0.1.7" + mlly: "npm:^1.7.0" + pathe: "npm:^1.1.2" + checksum: 10/225eaf7c0339027e176dd0d34a6d9a1384c21e0aab295e57dfbef1f1b7fc132f008671da7e67553e352b80b17ba38c531c720c914061d277410eef1bdd9d9608 languageName: node linkType: hard @@ -9831,6 +9709,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10/4e1394491b717f6c1ade15c570ecd4c2b681698474d3ae2d303c1e4b6ab9455bd5a81566211e82890d5a5ae9859718cc6954d5150bb18b09b72ecb297beae90a + languageName: node + linkType: hard + "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" @@ -9940,13 +9825,12 @@ __metadata: linkType: hard "rc9@npm:^2.1.1": - version: 2.1.1 - resolution: "rc9@npm:2.1.1" + version: 2.1.2 + resolution: "rc9@npm:2.1.2" dependencies: - defu: "npm:^6.1.2" - destr: "npm:^2.0.0" - flat: "npm:^5.0.2" - checksum: 10/d704e4f4ecf321b691b37e5cfeee11bb2c5d3eb7393cef32096ed4bc3c7f7a64d2c79e2ad159b5e20c15917290ca80a1343fc25c86a3c8d0c67f4601ce8c4085 + defu: "npm:^6.1.4" + destr: "npm:^2.0.3" + checksum: 10/0694d2a80579983a5e4f0452092d9f6a06b785b104b32f48f3d6bb263f637e53d9ebd1fd77a41b157b84c1c7e8e4ecc87c3824907738653a296e6d2faf3d1844 languageName: node linkType: hard @@ -9962,14 +9846,14 @@ __metadata: linkType: hard "react-dom@npm:^18.2.0": - version: 18.2.0 - resolution: "react-dom@npm:18.2.0" + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" dependencies: loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.0" + scheduler: "npm:^0.23.2" peerDependencies: - react: ^18.2.0 - checksum: 10/ca5e7762ec8c17a472a3605b6f111895c9f87ac7d43a610ab7024f68cd833d08eda0625ce02ec7178cc1f3c957cf0b9273cdc17aa2cd02da87544331c43b1d21 + react: ^18.3.1 + checksum: 10/3f4b73a3aa083091173b29812b10394dd06f4ac06aff410b74702cfb3aa29d7b0ced208aab92d5272919b612e5cda21aeb1d54191848cf6e46e9e354f3541f81 languageName: node linkType: hard @@ -9981,14 +9865,14 @@ __metadata: linkType: hard "react-focus-lock@npm:^2.9.4": - version: 2.11.2 - resolution: "react-focus-lock@npm:2.11.2" + version: 2.12.1 + resolution: "react-focus-lock@npm:2.12.1" dependencies: "@babel/runtime": "npm:^7.0.0" - focus-lock: "npm:^1.3.2" + focus-lock: "npm:^1.3.5" prop-types: "npm:^15.6.2" react-clientside-effect: "npm:^1.2.6" - use-callback-ref: "npm:^1.3.0" + use-callback-ref: "npm:^1.3.2" use-sidecar: "npm:^1.1.2" peerDependencies: "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -9996,7 +9880,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/cad626e1325ac9791f6c3e640bebf8d424f5d78a6d9a1042d1092c1fde1be051eef9335a38c162812aedf2bb0a319c3624d565413784f5ef605735b9967b6e07 + checksum: 10/4183e713668e49b5954ab4124307fee220826fa5ca26c400646132fbad02a8d9047fc688cf94b20f7afbd29c84857a5bd7e8341f3674f464a0d4ad6776735f7a languageName: node linkType: hard @@ -10017,16 +9901,16 @@ __metadata: linkType: hard "react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: 10/200cd65bf2e0be7ba6055f647091b725a45dd2a6abef03bf2380ce701fd5edccee40b49b9d15edab7ac08a762bf83cb4081e31ec2673a5bfb549a36ba21570df + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22 languageName: node linkType: hard "react-refresh@npm:^0.14.0": - version: 0.14.0 - resolution: "react-refresh@npm:0.14.0" - checksum: 10/75941262ce3ed4fc79b52492943fd59692f29b84f30f3822713b7e920f28e85c62a4386f85cbfbaea95ed62d3e74209f0a0bb065904b7ab2f166a74ac3812e2a + version: 0.14.2 + resolution: "react-refresh@npm:0.14.2" + checksum: 10/512abf97271ab8623486061be04b608c39d932e3709f9af1720b41573415fa4993d0009fa5138b6705b60a98f4102f744d4e26c952b14f41a0e455521c6be4cc languageName: node linkType: hard @@ -10047,8 +9931,8 @@ __metadata: linkType: hard "react-remove-scroll@npm:^2.5.6": - version: 2.5.9 - resolution: "react-remove-scroll@npm:2.5.9" + version: 2.5.10 + resolution: "react-remove-scroll@npm:2.5.10" dependencies: react-remove-scroll-bar: "npm:^2.3.6" react-style-singleton: "npm:^2.2.1" @@ -10061,7 +9945,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/cbda17d8c97de235476d519cf27f261bcbf5488af4b6b9c99a7a372bde618124dc6bb8f1bbdae342c1de4620250db600e6bd076fbc78a46bcb54e0044f1c2e88 + checksum: 10/15f606482a614a92f8f65692cf27a1c1621d77a63c36f53a7bc4f2243799f2b04770083b313c4b3c2ed76f47d4046f52e86f95280ad5599389818fb882de7d6b languageName: node linkType: hard @@ -10083,11 +9967,11 @@ __metadata: linkType: hard "react@npm:^18.2.0": - version: 18.2.0 - resolution: "react@npm:18.2.0" + version: 18.3.1 + resolution: "react@npm:18.3.1" dependencies: loose-envify: "npm:^1.1.0" - checksum: 10/b9214a9bd79e99d08de55f8bef2b7fc8c39630be97c4e29d7be173d14a9a10670b5325e94485f74cd8bff4966ef3c78ee53c79a7b0b9b70cba20aa8973acc694 + checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf languageName: node linkType: hard @@ -10273,13 +10157,13 @@ __metadata: linkType: hard "rimraf@npm:^5.0.5": - version: 5.0.5 - resolution: "rimraf@npm:5.0.5" + version: 5.0.7 + resolution: "rimraf@npm:5.0.7" dependencies: glob: "npm:^10.3.7" bin: rimraf: dist/esm/bin.mjs - checksum: 10/a612c7184f96258b7d1328c486b12ca7b60aa30e04229a08bbfa7e964486deb1e9a1b52d917809311bdc39a808a4055c0f950c0280fba194ba0a09e6f0d404f6 + checksum: 10/1e3cecfe59ee2383dfd9ba5373caeed48ed941318a0360119419b7dffc63115661408b9427f67e1f66b5bbb8855a3953db09e55a7362b3df904a44453dfa22fb languageName: node linkType: hard @@ -10318,7 +10202,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.12.0": +"rollup@npm:^4.12.0, rollup@npm:^4.14.0": version: 4.17.2 resolution: "rollup@npm:4.17.2" dependencies: @@ -10381,66 +10265,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.14.0": - version: 4.14.0 - resolution: "rollup@npm:4.14.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.14.0" - "@rollup/rollup-android-arm64": "npm:4.14.0" - "@rollup/rollup-darwin-arm64": "npm:4.14.0" - "@rollup/rollup-darwin-x64": "npm:4.14.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.14.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.14.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.14.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.14.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.14.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.14.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.14.0" - "@rollup/rollup-linux-x64-musl": "npm:4.14.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.14.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.14.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.14.0" - "@types/estree": "npm:1.0.5" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10/803b45976dfc73843a48083dc345821860e960aede010b0e765201cc2827fe131b6f29296da3186a48813b83f823cd26b77adcafcf32ba859efb1b62adb8f4e0 - languageName: node - linkType: hard - "run-applescript@npm:^5.0.0": version: 5.0.0 resolution: "run-applescript@npm:5.0.0" @@ -10496,12 +10320,12 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.0": - version: 0.23.0 - resolution: "scheduler@npm:0.23.0" +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" dependencies: loose-envify: "npm:^1.1.0" - checksum: 10/0c4557aa37bafca44ff21dc0ea7c92e2dbcb298bc62eae92b29a39b029134f02fb23917d6ebc8b1fa536b4184934314c20d8864d156a9f6357f3398aaf7bfda8 + checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9 languageName: node linkType: hard @@ -10558,13 +10382,11 @@ __metadata: linkType: hard "semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: "npm:^6.0.0" + version: 7.6.2 + resolution: "semver@npm:7.6.2" bin: semver: bin/semver.js - checksum: 10/1b41018df2d8aca5a1db4729985e8e20428c650daea60fcd16e926e9383217d00f574fab92d79612771884a98d2ee2a1973f49d630829a8d54d6570defe62535 + checksum: 10/296b17d027f57a87ef645e9c725bff4865a38dfc9caf29b26aa084b85820972fbe7372caea1ba6857162fa990702c6d9c1d82297cecb72d56c78ab29070d2ca2 languageName: node linkType: hard @@ -10764,12 +10586,12 @@ __metadata: linkType: hard "socks@npm:^2.7.1": - version: 2.8.1 - resolution: "socks@npm:2.8.1" + version: 2.8.3 + resolution: "socks@npm:2.8.3" dependencies: ip-address: "npm:^9.0.5" smart-buffer: "npm:^4.2.0" - checksum: 10/a3cc38e0716ab53a2db3fa00c703ca682ad54dbbc9ed4c7461624a999be6fa7cdc79fc904c411618e698d5eff55a55aa6d9329169a7db11636d0200814a2b5aa + checksum: 10/ffcb622c22481dfcd7589aae71fbfd71ca34334064d181df64bf8b7feaeee19706aba4cffd1de35cc7bbaeeaa0af96be2d7f40fcbc7bc0ab69533a7ae9ffc4fb languageName: node linkType: hard @@ -10840,11 +10662,11 @@ __metadata: linkType: hard "ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" + version: 10.0.6 + resolution: "ssri@npm:10.0.6" dependencies: minipass: "npm:^7.0.3" - checksum: 10/453f9a1c241c13f5dfceca2ab7b4687bcff354c3ccbc932f35452687b9ef0ccf8983fd13b8a3baa5844c1a4882d6e3ddff48b0e7fd21d743809ef33b80616d79 + checksum: 10/f92c1b3cc9bfd0a925417412d07d999935917bc87049f43ebec41074661d64cf720315661844106a77da9f8204b6d55ae29f9514e673083cae39464343af2a8b languageName: node linkType: hard @@ -11191,7 +11013,7 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": +"ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" peerDependencies: @@ -11433,12 +11255,12 @@ __metadata: linkType: hard "typescript@npm:^5.4.4": - version: 5.4.4 - resolution: "typescript@npm:5.4.4" + version: 5.4.5 + resolution: "typescript@npm:5.4.5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/bade322d88fd93c8179e262aca9ba7f7b4417c09117879819c87946578c782ab123e3acb4733046a6e38714c47ef927360045a1f9292a1bff3a05a6577d27ca2 + checksum: 10/d04a9e27e6d83861f2126665aa8d84847e8ebabcea9125b9ebc30370b98cb38b5dff2508d74e2326a744938191a83a69aa9fddab41f193ffa43eabfdf3f190a5 languageName: node linkType: hard @@ -11453,16 +11275,16 @@ __metadata: linkType: hard "typescript@patch:typescript@npm%3A^5.4.4#optional!builtin": - version: 5.4.4 - resolution: "typescript@patch:typescript@npm%3A5.4.4#optional!builtin::version=5.4.4&hash=5adc0c" + version: 5.4.5 + resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/88aff3244c31d4c6ede05b4fd28732fc8935a7fc638f2a3dcbbb767d1ac98e4b077f21ec74bc97f43c9307bc3f27e2359def1d793f9918c3429a744408fd75b4 + checksum: 10/760f7d92fb383dbf7dee2443bf902f4365db2117f96f875cf809167f6103d55064de973db9f78fe8f31ec08fff52b2c969aee0d310939c0a3798ec75d0bca2e1 languageName: node linkType: hard -"ufo@npm:^1.3.2, ufo@npm:^1.4.0, ufo@npm:^1.5.3": +"ufo@npm:^1.4.0, ufo@npm:^1.5.3": version: 1.5.3 resolution: "ufo@npm:1.5.3" checksum: 10/2b30dddd873c643efecdb58cfe457183cd4d95937ccdacca6942c697b87a2c578232c25a5149fda85436696bf0fdbc213bf2b220874712bc3e58c0fb00a2c950 @@ -11528,20 +11350,20 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" + version: 1.0.16 + resolution: "update-browserslist-db@npm:1.0.16" dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" + escalade: "npm:^3.1.2" + picocolors: "npm:^1.0.1" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/9074b4ef34d2ed931f27d390aafdd391ee7c45ad83c508e8fed6aaae1eb68f81999a768ed8525c6f88d4001a4fbf1b8c0268f099d0e8e72088ec5945ac796acf + checksum: 10/071bf0b2fb8568db6cd42ee2598ac9b87c794a7229fcbf1b035ae7f883e770c07143f16a5371525d5bcb94b99f9a1b279036142b0195ffd4cf5a0008fc4a500e languageName: node linkType: hard -"uri-js@npm:^4.2.2": +"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: @@ -11550,7 +11372,7 @@ __metadata: languageName: node linkType: hard -"use-callback-ref@npm:^1.3.0": +"use-callback-ref@npm:^1.3.0, use-callback-ref@npm:^1.3.2": version: 1.3.2 resolution: "use-callback-ref@npm:1.3.2" dependencies: @@ -11811,7 +11633,7 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:~1.2.3": +"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854 @@ -11926,11 +11748,11 @@ __metadata: linkType: hard "yaml@npm:^2.3.1": - version: 2.4.1 - resolution: "yaml@npm:2.4.1" + version: 2.4.2 + resolution: "yaml@npm:2.4.2" bin: yaml: bin.mjs - checksum: 10/2c54fd69ef59126758ae710f9756405a7d41abcbb61aca894250d0e81e76057c14dc9bb00a9528f72f99b8f24077f694a6f7fd09cdd6711fcec2eebfbb5df409 + checksum: 10/6eafbcd68dead734035f6f72af21bd820c29214caf7d8e40c595671a3c908535cef8092b9660a1c055c5833aa148aa640e0c5fa4adb5af2dacd6d28296ccd81c languageName: node linkType: hard From 73cb08d14f4769eb17c139e88609de6c097db8fb Mon Sep 17 00:00:00 2001 From: cedoor Date: Mon, 20 May 2024 12:38:53 -0500 Subject: [PATCH 7/9] chore: updat lockfile --- yarn.lock | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 817b941..39180bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3858,7 +3858,7 @@ __metadata: languageName: node linkType: hard -"@zk-kit/eddsa-poseidon@npm:1.0.0": +"@zk-kit/eddsa-poseidon@npm:1.0.0, @zk-kit/eddsa-poseidon@npm:^1.0.0-beta": version: 1.0.0 resolution: "@zk-kit/eddsa-poseidon@npm:1.0.0" dependencies: @@ -3869,6 +3869,17 @@ __metadata: languageName: node linkType: hard +"@zk-kit/eddsa-poseidon@npm:1.0.0-beta": + version: 1.0.0-beta + resolution: "@zk-kit/eddsa-poseidon@npm:1.0.0-beta" + dependencies: + "@zk-kit/baby-jubjub": "npm:1.0.0-beta" + "@zk-kit/utils": "npm:1.0.0-beta.4" + buffer: "npm:6.0.3" + checksum: 10/630986ae3d32debf796a29eed7a6e1cd8c3dd8bae48f58f2756c5d92f524d9d2bc586662da7726d9fe40c2e2a43e4011b64916a75f4b61c803ca7255bd5e3670 + languageName: node + linkType: hard + "@zk-kit/groth16@npm:0.3.0": version: 0.3.0 resolution: "@zk-kit/groth16@npm:0.3.0" From c6910fdd68d68f3445c54aeaacde9044be723901 Mon Sep 17 00:00:00 2001 From: cedoor Date: Mon, 20 May 2024 12:41:49 -0500 Subject: [PATCH 8/9] fix(identity-proof): set correct import types --- packages/identity-proof/src/generate.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/identity-proof/src/generate.ts b/packages/identity-proof/src/generate.ts index 7fc8ea6..dc89fc4 100644 --- a/packages/identity-proof/src/generate.ts +++ b/packages/identity-proof/src/generate.ts @@ -1,6 +1,6 @@ import { deriveSecretScalar } from "@zk-kit/eddsa-poseidon" -import { SnarkArtifacts, packGroth16Proof } from "@zk-kit/utils" -import { Project, maybeGetSnarkArtifacts } from "@zk-kit/artifacts" +import { packGroth16Proof } from "@zk-kit/utils" +import { Project, type SnarkArtifacts, maybeGetSnarkArtifacts } from "@zk-kit/artifacts" import type { BigNumberish } from "ethers" import { NumericString, groth16 } from "snarkjs" import hash from "./hash" From 3bf606b646dcd547a6f294d6fdb4863383c602e2 Mon Sep 17 00:00:00 2001 From: cedoor Date: Mon, 20 May 2024 12:46:39 -0500 Subject: [PATCH 9/9] ci: add scripts to install circom --- .github/workflows/production.yml | 23 ++++++++++------------- .github/workflows/pull-requests.yml | 10 ++++++++++ jest.config.ts | 2 +- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index 6bc3617..b409efd 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -39,6 +39,16 @@ jobs: node-version: 20 cache: yarn + # https://github.com/iden3/circuits/blob/8fffb6609ecad0b7bcda19bb908bdb544bdb3cf7/.github/workflows/main.yml#L18-L22 + # https://stackoverflow.com/a/78377916 + - name: Setup Circom deps + run: | + sudo rm /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update && sudo apt-get install -y wget nlohmann-json3-dev libgmp-dev nasm g++ build-essential + + - name: Setup Circom + run: wget https://github.com/iden3/circom/releases/latest/download/circom-linux-amd64 && sudo mv ./circom-linux-amd64 /usr/bin/circom && sudo chmod +x /usr/bin/circom + - name: Install dependencies run: yarn @@ -55,16 +65,3 @@ jobs: uses: coverallsapp/github-action@v2.2.3 with: github-token: ${{ secrets.GITHUB_TOKEN }} - flag-name: run-libraries - parallel: true - - coverage: - runs-on: ubuntu-latest - needs: test - - steps: - - name: Coveralls Finished - uses: coverallsapp/github-action@v2.2.3 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - parallel-finished: true diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index 1fb8bc3..bd2dfcb 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -37,6 +37,16 @@ jobs: node-version: 20 cache: yarn + # https://github.com/iden3/circuits/blob/8fffb6609ecad0b7bcda19bb908bdb544bdb3cf7/.github/workflows/main.yml#L18-L22 + # https://stackoverflow.com/a/78377916 + - name: Setup Circom deps + run: | + sudo rm /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update && sudo apt-get install -y wget nlohmann-json3-dev libgmp-dev nasm g++ build-essential + + - name: Setup Circom + run: wget https://github.com/iden3/circom/releases/latest/download/circom-linux-amd64 && sudo mv ./circom-linux-amd64 /usr/bin/circom && sudo chmod +x /usr/bin/circom + - name: Install dependencies run: yarn diff --git a/jest.config.ts b/jest.config.ts index 2b9f54b..8819795 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -21,7 +21,7 @@ const projects: any = fs const config: Config = { projects, verbose: true, - coverageDirectory: "./coverage/libraries", + coverageDirectory: "./coverage", coverageThreshold: { global: { branches: 90,