From 2aeff4f27d819f0b849000997ae89e01599fb3a4 Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Sun, 15 Dec 2024 00:12:49 +0900 Subject: [PATCH] Add circuit unit tests for production emails and update relayer-utils in the circuit tests --- .github/workflows/unit-tests.yml | 5 + Cargo.lock | 819 ++++++++++++------ packages/circuits/helpers/email_auth.ts | 11 +- packages/circuits/helpers/recipient.ts | 12 +- packages/circuits/package.json | 4 +- .../tests/emai_auth_legacy_recipient.test.ts | 73 +- .../tests/emai_auth_recipient.test.ts | 36 +- packages/circuits/tests/email_auth.test.ts | 138 +-- .../circuits/tests/email_auth_legacy.test.ts | 102 +-- .../tests/email_auth_production.test.ts | 381 ++++++++ .../emails/recovery_gmail_english_mobile.eml | 288 ++++++ .../emails/recovery_gmail_english_pc.eml | 285 ++++++ .../emails/recovery_gmail_turkish_mobile.eml | 284 ++++++ .../emails/recovery_gmail_turkish_pc.eml | 290 +++++++ .../tests/forced_subject_regex.test.ts | 5 +- .../tests/invitation_code_regex.test.ts | 8 +- packages/circuits/tests/wasm_init.ts | 10 + yarn.lock | 809 ++++------------- 18 files changed, 2487 insertions(+), 1073 deletions(-) create mode 100644 packages/circuits/tests/email_auth_production.test.ts create mode 100644 packages/circuits/tests/emails/recovery_gmail_english_mobile.eml create mode 100644 packages/circuits/tests/emails/recovery_gmail_english_pc.eml create mode 100644 packages/circuits/tests/emails/recovery_gmail_turkish_mobile.eml create mode 100644 packages/circuits/tests/emails/recovery_gmail_turkish_pc.eml create mode 100644 packages/circuits/tests/wasm_init.ts diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index f816a17c..680268bd 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -30,6 +30,11 @@ jobs: - name: Install yarn run: npm install -g yarn + - name: Install bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + - name: Install dependencies run: yarn install --frozen-lockfile diff --git a/Cargo.lock b/Cargo.lock index ae1e9532..c97648d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,9 +62,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -83,9 +83,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arrayref" @@ -167,7 +167,7 @@ dependencies = [ "pin-utils", "self_cell", "stop-token", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -189,7 +189,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9343dc5acf07e79ff82d0c37899f079db3534d99f189a1837c8e549c99405bec" dependencies = [ "native-tls", - "thiserror", + "thiserror 1.0.69", "tokio", "url", ] @@ -202,7 +202,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -243,7 +243,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -496,9 +496,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -534,7 +534,7 @@ dependencies = [ "hashbrown 0.14.5", "instant", "once_cell", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -566,7 +566,7 @@ dependencies = [ "serde", "serde_bytes", "stacker", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -578,14 +578,14 @@ dependencies = [ "lazy_static", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -601,14 +601,14 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "cc" -version = "1.1.31" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "jobserver", "libc", @@ -659,6 +659,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "charset" version = "0.1.5" @@ -713,7 +719,7 @@ dependencies = [ "k256", "serde", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -729,7 +735,7 @@ dependencies = [ "pbkdf2 0.12.2", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -749,7 +755,7 @@ dependencies = [ "serde_derive", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -796,9 +802,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -843,9 +849,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -978,7 +984,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -1022,13 +1028,22 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -1094,6 +1109,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "dotenv" version = "0.15.0" @@ -1147,7 +1173,7 @@ dependencies = [ "rand_core", "serde", "sha2 0.9.9", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -1221,9 +1247,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1266,12 +1292,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1303,7 +1329,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid 0.8.2", ] @@ -1320,7 +1346,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -1399,7 +1425,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1421,7 +1447,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.82", + "syn 2.0.90", "toml", "walkdir", ] @@ -1439,7 +1465,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -1465,9 +1491,9 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.82", + "syn 2.0.90", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -1484,7 +1510,7 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1508,7 +1534,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -1540,7 +1566,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite", "tracing", @@ -1567,7 +1593,7 @@ dependencies = [ "ethers-core", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1595,7 +1621,7 @@ dependencies = [ "serde_json", "solang-parser", "svm-rs", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "tokio", "tracing", @@ -1622,9 +1648,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ "event-listener 5.3.1", "pin-project-lite", @@ -1662,9 +1688,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "ff" @@ -1713,9 +1739,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1855,7 +1881,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -1971,7 +1997,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" dependencies = [ "combine 3.8.1", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2037,7 +2063,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -2100,7 +2126,7 @@ dependencies = [ "pest_derive", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2121,9 +2147,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "hashers" @@ -2304,7 +2330,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2 0.5.8", "tokio", "tower-service", "tracing", @@ -2313,9 +2339,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", @@ -2352,14 +2378,14 @@ checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.5.0", + "hyper 1.5.1", "hyper-util", - "rustls 0.23.15", + "rustls 0.23.19", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", "tower-service", - "webpki-roots 0.26.6", + "webpki-roots 0.26.7", ] [[package]] @@ -2377,18 +2403,18 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.5.0", + "hyper 1.5.1", "pin-project-lite", - "socket2 0.5.7", + "socket2 0.5.8", "tokio", "tower-service", "tracing", @@ -2442,7 +2468,7 @@ dependencies = [ "pkcs8", "rand", "rangemap", - "reqwest 0.12.8", + "reqwest 0.12.9", "ring 0.17.8", "rustls-webpki 0.102.8", "sec1", @@ -2452,7 +2478,7 @@ dependencies = [ "serde_repr", "sha2 0.10.8", "simple_asn1", - "thiserror", + "thiserror 1.0.69", "time", "tokio", "url", @@ -2484,7 +2510,7 @@ dependencies = [ "serde_bytes", "serde_repr", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2504,7 +2530,7 @@ dependencies = [ "sha2 0.10.8", "strum", "strum_macros", - "thiserror", + "thiserror 1.0.69", "time", "tokio", ] @@ -2547,7 +2573,125 @@ dependencies = [ "data-encoding", "serde", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -2573,12 +2717,23 @@ dependencies = [ [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -2619,13 +2774,13 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.90", ] [[package]] @@ -2646,12 +2801,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.2", ] [[package]] @@ -2678,7 +2833,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.7", + "socket2 0.5.8", "widestring", "windows-sys 0.48.0", "winreg", @@ -2730,9 +2885,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -2745,7 +2900,7 @@ dependencies = [ "combine 4.6.7", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -2767,10 +2922,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2884,15 +3040,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.161" +version = "0.2.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" @@ -2927,6 +3083,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -3014,9 +3176,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minicov" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71e683cd655513b99affab7d317deb690528255a0d5f717f1024093c12b169" +checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b" dependencies = [ "cc", "walkdir", @@ -3039,11 +3201,10 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi", "windows-sys 0.52.0", @@ -3086,7 +3247,7 @@ checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ "bitflags 2.6.0", "cfg-if", - "cfg_aliases", + "cfg_aliases 0.1.1", "libc", ] @@ -3194,7 +3355,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -3213,7 +3374,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", "url", ] @@ -3295,7 +3456,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -3524,7 +3685,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.69", "ucd-trie", ] @@ -3548,7 +3709,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -3569,7 +3730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.7.0", ] [[package]] @@ -3612,7 +3773,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -3635,29 +3796,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3701,7 +3862,7 @@ dependencies = [ "halo2curves", "once_cell", "serde", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3738,12 +3899,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910d41a655dac3b764f1ade94821093d3610248694320cd072303a8eedcf221d" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -3780,9 +3941,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -3805,9 +3966,9 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" dependencies = [ "cc", ] @@ -3826,48 +3987,52 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.15", - "socket2 0.5.7", - "thiserror", + "rustls 0.23.19", + "socket2 0.5.8", + "thiserror 2.0.3", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom", "rand", "ring 0.17.8", "rustc-hash", - "rustls 0.23.15", + "rustls 0.23.19", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.3", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" dependencies = [ + "cfg_aliases 0.2.1", "libc", "once_cell", - "socket2 0.5.7", + "socket2 0.5.8", "tracing", "windows-sys 0.59.0", ] @@ -3996,14 +4161,14 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -4013,9 +4178,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -4069,7 +4234,7 @@ dependencies = [ "slog-json", "slog-term", "sqlx", - "thiserror", + "thiserror 1.0.69", "tiny_http", "tokio", "tower-http", @@ -4080,7 +4245,7 @@ dependencies = [ [[package]] name = "relayer-utils" version = "0.4.2" -source = "git+https://github.com/zkemail/relayer-utils.git#298a0f90c49b232fd749a4a361c4999a83c713c4" +source = "git+https://github.com/zkemail/relayer-utils.git#0663df1271beac13ec14c731ee1ce7ae4be54d16" dependencies = [ "anyhow", "base64 0.22.1", @@ -4159,9 +4324,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.1", "bytes", @@ -4171,7 +4336,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.0", + "hyper 1.5.1", "hyper-rustls 0.27.3", "hyper-util", "ipnet", @@ -4182,13 +4347,13 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.15", + "rustls 0.23.19", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-rustls 0.26.0", "tokio-util", @@ -4198,7 +4363,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.26.6", + "webpki-roots 0.26.7", "windows-registry", ] @@ -4285,9 +4450,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" dependencies = [ "const-oid", "digest 0.10.7", @@ -4313,9 +4478,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustc-hex" @@ -4334,9 +4499,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", @@ -4359,9 +4524,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "once_cell", "ring 0.17.8", @@ -4394,6 +4559,9 @@ name = "rustls-pki-types" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -4448,9 +4616,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", "derive_more", @@ -4460,21 +4628,21 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.90", ] [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -4542,9 +4710,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -4579,9 +4747,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.211" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac55e59090389fb9f0dd9e0f3c09615afed1d19094284d0b200441f13550793" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -4618,20 +4786,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.211" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be4f245ce16bc58d57ef2716271d0d4519e0f6defa147f6e081005bcb278ff" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -4657,7 +4825,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -4770,7 +4938,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 1.0.69", "time", ] @@ -4866,9 +5034,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4884,7 +5052,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] @@ -4958,7 +5126,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.6.0", + "indexmap 2.7.0", "log", "memchr", "native-tls", @@ -4970,7 +5138,7 @@ dependencies = [ "sha2 0.10.8", "smallvec", "sqlformat", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -5054,7 +5222,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.69", "tracing", "whoami", ] @@ -5093,7 +5261,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.69", "tracing", "whoami", ] @@ -5121,6 +5289,12 @@ dependencies = [ "urlencoding", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "stacker" version = "0.1.17" @@ -5195,7 +5369,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -5225,7 +5399,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", "url", "zip", ] @@ -5243,9 +5417,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -5260,13 +5434,24 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5302,12 +5487,12 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", - "fastrand 2.1.1", + "fastrand 2.2.0", "once_cell", "rustix", "windows-sys 0.59.0", @@ -5326,22 +5511,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -5356,9 +5561,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -5377,9 +5582,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -5406,6 +5611,16 @@ dependencies = [ "log", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -5423,9 +5638,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", @@ -5434,7 +5649,7 @@ dependencies = [ "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2 0.5.8", "tokio-macros", "windows-sys 0.52.0", ] @@ -5447,7 +5662,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] @@ -5476,7 +5691,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.15", + "rustls 0.23.19", "rustls-pki-types", "tokio", ] @@ -5547,7 +5762,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -5600,9 +5815,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -5612,20 +5827,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", ] @@ -5658,7 +5873,7 @@ dependencies = [ "lazy_static", "rand", "smallvec", - "thiserror", + "thiserror 1.0.69", "tinyvec", "tokio", "tracing", @@ -5679,7 +5894,7 @@ dependencies = [ "parking_lot 0.12.3", "resolv-conf", "smallvec", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "trust-dns-proto", @@ -5706,7 +5921,7 @@ dependencies = [ "rand", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -5755,9 +5970,9 @@ checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -5831,12 +6046,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna 1.0.3", "percent-encoding", "serde", ] @@ -5853,6 +6068,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "uuid" version = "0.8.2" @@ -5920,9 +6147,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" dependencies = [ "cfg-if", "once_cell", @@ -5933,36 +6160,37 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5970,32 +6198,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" [[package]] name = "wasm-bindgen-test" -version = "0.3.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d381749acb0943d357dcbd8f0b100640679883fcdeeef04def49daf8d33a5426" +checksum = "3d919bb60ebcecb9160afee6c71b43a58a4f0517a2de0054cd050d02cec08201" dependencies = [ - "console_error_panic_hook", "js-sys", "minicov", + "once_cell", "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", @@ -6004,20 +6232,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c97b2ef2c8d627381e51c071c2ab328eac606d3f69dd82bcbca20a9e389d95f0" +checksum = "222ebde6ea87fbfa6bdd2e9f1fd8a91d60aee5db68792632176c4e16a74fc7d8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", ] [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -6028,9 +6256,19 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -6061,9 +6299,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -6387,6 +6625,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "ws_stream_wasm" version = "0.7.4" @@ -6400,7 +6650,7 @@ dependencies = [ "pharos", "rustc_version", "send_wrapper 0.6.0", - "thiserror", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -6421,6 +6671,30 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6439,7 +6713,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", ] [[package]] @@ -6448,6 +6743,28 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "zip" version = "0.6.6" @@ -6470,8 +6787,8 @@ dependencies = [ [[package]] name = "zk-regex-apis" -version = "2.2.0" -source = "git+https://github.com/zkemail/zk-regex.git#3319327ef3599989071ab2ea3cb9340a2c48b354" +version = "2.3.1" +source = "git+https://github.com/zkemail/zk-regex.git#7002a2179e076449b84e3e7e8ba94e88d0a2dc2f" dependencies = [ "fancy-regex", "itertools 0.13.0", @@ -6479,7 +6796,7 @@ dependencies = [ "serde", "serde-wasm-bindgen", "serde_json", - "thiserror", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-test", ] diff --git a/packages/circuits/helpers/email_auth.ts b/packages/circuits/helpers/email_auth.ts index 4103af76..458ecc01 100644 --- a/packages/circuits/helpers/email_auth.ts +++ b/packages/circuits/helpers/email_auth.ts @@ -1,6 +1,6 @@ import fs from "fs"; import { promisify } from "util"; -const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; export async function genEmailCircuitInput( emailFilePath: string, @@ -30,10 +30,15 @@ export async function genEmailCircuitInput( padded_cleaned_body: string[]; }> { const emailRaw = await promisify(fs.readFile)(emailFilePath, "utf8"); - const jsonStr = await relayerUtils.genEmailCircuitInput( + const jsonStr = await relayerUtils.generateEmailCircuitInput( emailRaw, accountCode, - options + { + ignore_body_hash_check: options?.ignoreBodyHashCheck, + max_header_length: options?.maxHeaderLength, + max_body_length: options?.maxBodyLength, + sha_precompute_selector: options?.shaPrecomputeSelector, + } ); return JSON.parse(jsonStr); } diff --git a/packages/circuits/helpers/recipient.ts b/packages/circuits/helpers/recipient.ts index cb2c78fb..00198dae 100644 --- a/packages/circuits/helpers/recipient.ts +++ b/packages/circuits/helpers/recipient.ts @@ -1,7 +1,7 @@ import fs from "fs"; import { promisify } from "util"; import path from "path"; -const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; export async function genRecipientInputLegacy(emailFilePath: string): Promise<{ subject_email_addr_idx: number; @@ -10,9 +10,9 @@ export async function genRecipientInputLegacy(emailFilePath: string): Promise<{ const emailRaw = await promisify(fs.readFile)(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); const subjectEmailIdxes = relayerUtils.extractSubjectAllIdxes( - parsedEmail.canonicalizedHeader + parsedEmail.canonicalized_header )[0]; - const subject = parsedEmail.canonicalizedHeader.slice( + const subject = parsedEmail.canonicalized_header.slice( subjectEmailIdxes[0], subjectEmailIdxes[1] ); @@ -23,14 +23,14 @@ export async function genRecipientInputLegacy(emailFilePath: string): Promise<{ console.log("No email address in subject"); subjectEmailAddrIdx = 0; } - const rand = relayerUtils.extractRandFromSignature(parsedEmail.signature); + const rand = await relayerUtils.extractRandFromSignature(parsedEmail.signature); return { subject_email_addr_idx: subjectEmailAddrIdx, rand: rand, }; } -export async function genRecipientInput(command: string, signature: string): Promise<{ +export async function genRecipientInput(command: string, signature: Uint8Array): Promise<{ command_email_addr_idx: number; rand: string; }> { @@ -40,7 +40,7 @@ export async function genRecipientInput(command: string, signature: string): Pro } catch (e) { console.log("No email address in command"); } - const rand = relayerUtils.extractRandFromSignature(signature); + const rand: string = await relayerUtils.extractRandFromSignature(signature); return { command_email_addr_idx: commandEmailAddrIdx, rand: rand, diff --git a/packages/circuits/package.json b/packages/circuits/package.json index afc57f44..cedc461e 100644 --- a/packages/circuits/package.json +++ b/packages/circuits/package.json @@ -8,11 +8,11 @@ "build-recipient": "mkdir -p build && circom src/email_auth_with_recipient.circom --r1cs --wasm --sym --c -l ../../node_modules -o ./build", "dev-setup": "NODE_OPTIONS=--max_old_space_size=16384 npx ts-node scripts/dev-setup.ts --output ./build", "gen-input": "NODE_OPTIONS=--max_old_space_size=8192 npx ts-node scripts/gen_input.ts", - "test": "NODE_OPTIONS=--max_old_space_size=8192 jest" + "test": "bun test" }, "dependencies": { "@zk-email/circuits": "=6.3.2", - "@zk-email/relayer-utils": "=0.3.7", + "@zk-email/relayer-utils": "=0.4.59", "@zk-email/zk-regex-circom": "=2.3.1", "commander": "^12.1.0", "snarkjs": "=0.7.5" diff --git a/packages/circuits/tests/emai_auth_legacy_recipient.test.ts b/packages/circuits/tests/emai_auth_legacy_recipient.test.ts index 85fd7815..33952595 100644 --- a/packages/circuits/tests/emai_auth_legacy_recipient.test.ts +++ b/packages/circuits/tests/emai_auth_legacy_recipient.test.ts @@ -1,10 +1,12 @@ const circom_tester = require("circom_tester"); const wasm_tester = circom_tester.wasm; import * as path from "path"; -const relayerUtils = require("@zk-email/relayer-utils"); +// const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; import { genEmailCircuitInput } from "../helpers/email_auth"; import { genRecipientInputLegacy } from "../helpers/recipient"; import { readFileSync } from "fs"; +import { init } from "./wasm_init"; jest.setTimeout(1440000); describe("Email Auth Legacy with Recipient", () => { @@ -17,6 +19,7 @@ describe("Email Auth Legacy with Recipient", () => { path.join(__dirname, "./circuits/email_auth_with_recipient.circom"), option ); + await init(); }); it("Verify a sent email whose subject has an email address", async () => { @@ -26,8 +29,7 @@ describe("Email Auth Legacy with Recipient", () => { ); const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); - console.log(parsedEmail.canonicalizedHeader); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { body_hash_idx, precomputed_sha, @@ -49,17 +51,17 @@ describe("Email Auth Legacy with Recipient", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -70,14 +72,14 @@ describe("Email Auth Legacy with Recipient", () => { const maskedSubject = "Send 0.1 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -92,7 +94,7 @@ describe("Email Auth Legacy with Recipient", () => { ] ); const recipientEmailAddr = "alice@gmail.com"; - const emailAddrCommit = relayerUtils.emailAddrCommitWithSignature( + const emailAddrCommit = await relayerUtils.emailAddrCommitWithSignature( recipientEmailAddr, parsedEmail.signature ); @@ -110,8 +112,7 @@ describe("Email Auth Legacy with Recipient", () => { ); const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); - console.log(parsedEmail.canonicalizedHeader); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { body_hash_idx, precomputed_sha, @@ -133,17 +134,17 @@ describe("Email Auth Legacy with Recipient", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -154,14 +155,14 @@ describe("Email Auth Legacy with Recipient", () => { const maskedSubject = "Send 1 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -176,7 +177,7 @@ describe("Email Auth Legacy with Recipient", () => { ] ); const recipientEmailAddr = "bob@example.com"; - const emailAddrCommit = relayerUtils.emailAddrCommitWithSignature( + const emailAddrCommit = await relayerUtils.emailAddrCommitWithSignature( recipientEmailAddr, parsedEmail.signature ); @@ -194,8 +195,7 @@ describe("Email Auth Legacy with Recipient", () => { ); const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); - console.log(parsedEmail.canonicalizedHeader); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { body_hash_idx, precomputed_sha, @@ -217,17 +217,17 @@ describe("Email Auth Legacy with Recipient", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -238,14 +238,14 @@ describe("Email Auth Legacy with Recipient", () => { const maskedSubject = "Send 1 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -260,7 +260,7 @@ describe("Email Auth Legacy with Recipient", () => { ] ); const recipientEmailAddr = "bob@example.com"; - const emailAddrCommit = relayerUtils.emailAddrCommitWithSignature( + const emailAddrCommit = await relayerUtils.emailAddrCommitWithSignature( recipientEmailAddr, parsedEmail.signature ); @@ -275,7 +275,6 @@ describe("Email Auth Legacy with Recipient", () => { const emailFilePath = path.join(__dirname, "./emails/email_auth_legacy_test5.eml"); const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); - console.log(parsedEmail.canonicalizedHeader); const accountCode = "0x01eb9b204cc24c3baee11accc37d253a9c53e92b1a2cc07763475c135d575b76"; const { @@ -299,17 +298,17 @@ describe("Email Auth Legacy with Recipient", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -319,14 +318,14 @@ describe("Email Auth Legacy with Recipient", () => { expect(timestamp).toEqual(witness[1 + domainFields.length + 2]); const maskedSubject = "Send 0.12 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); - const maskedSubjectFields = relayerUtils.bytes2Fields(paddedMaskedSubject); + const maskedSubjectFields = await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -337,7 +336,7 @@ describe("Email Auth Legacy with Recipient", () => { witness[1 + domainFields.length + 3 + maskedSubjectFields.length + 2] ); const recipientEmailAddr = "alice@gmail.com"; - const emailAddrCommit = relayerUtils.emailAddrCommitWithSignature( + const emailAddrCommit = await relayerUtils.emailAddrCommitWithSignature( recipientEmailAddr, parsedEmail.signature ); @@ -372,6 +371,6 @@ describe("Email Auth Legacy with Recipient", () => { const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); }); diff --git a/packages/circuits/tests/emai_auth_recipient.test.ts b/packages/circuits/tests/emai_auth_recipient.test.ts index a4b960fa..21fde5f7 100644 --- a/packages/circuits/tests/emai_auth_recipient.test.ts +++ b/packages/circuits/tests/emai_auth_recipient.test.ts @@ -1,10 +1,12 @@ const circom_tester = require("circom_tester"); const wasm_tester = circom_tester.wasm; import * as path from "path"; -const relayerUtils = require("@zk-email/relayer-utils"); +// const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; import { genEmailCircuitInput } from "../helpers/email_auth"; import { readFileSync } from "fs"; import { genRecipientInput } from "../helpers/recipient"; +import { init } from "./wasm_init"; const option = { include: path.join(__dirname, "../../../node_modules"), @@ -23,6 +25,7 @@ describe("Email Auth with Recipient", () => { ), option ); + await init(); }); it("Verify a sent email whose body has an email address with the recipient's email address commitment", async () => { @@ -34,7 +37,7 @@ describe("Email Auth with Recipient", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); console.log(parsedEmail); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { subject_idx, @@ -52,24 +55,25 @@ describe("Email Auth with Recipient", () => { ...emailAuthInput, command_email_addr_idx: recipientInput.command_email_addr_idx, }; + console.log(circuitInputs); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -82,7 +86,7 @@ describe("Email Auth with Recipient", () => { const maskedCommand = "Send 0.1 ETH to "; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] @@ -90,7 +94,7 @@ describe("Email Auth with Recipient", () => { } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -102,7 +106,7 @@ describe("Email Auth with Recipient", () => { ); const recipientEmailAddr = "alice@gmail.com"; - const emailAddrCommit = relayerUtils.emailAddrCommitWithSignature( + const emailAddrCommit = await relayerUtils.emailAddrCommitWithSignature( recipientEmailAddr, parsedEmail.signature ); @@ -127,7 +131,7 @@ describe("Email Auth with Recipient", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); console.log(parsedEmail); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { subject_idx, @@ -150,19 +154,19 @@ describe("Email Auth with Recipient", () => { const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -175,7 +179,7 @@ describe("Email Auth with Recipient", () => { const maskedCommand = "Swap 1 ETH to DAI"; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] @@ -183,7 +187,7 @@ describe("Email Auth with Recipient", () => { } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); diff --git a/packages/circuits/tests/email_auth.test.ts b/packages/circuits/tests/email_auth.test.ts index 7a638c9d..ac5c14d2 100644 --- a/packages/circuits/tests/email_auth.test.ts +++ b/packages/circuits/tests/email_auth.test.ts @@ -1,10 +1,10 @@ const circom_tester = require("circom_tester"); const wasm_tester = circom_tester.wasm; import * as path from "path"; -const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; import { genEmailCircuitInput } from "../helpers/email_auth"; import { readFileSync } from "fs"; -import { genRecipientInput } from "../helpers/recipient"; +import { init } from "./wasm_init"; const option = { include: path.join(__dirname, "../../../node_modules"), @@ -12,6 +12,8 @@ const option = { recompile: true, }; +const shaPrecomputeSelector = '
]*>[^<>/]+
'; + jest.setTimeout(1440000); describe("Email Auth", () => { let circuit; @@ -23,6 +25,7 @@ describe("Email Auth", () => { ), option ); + await init(); }); it("Verify a sent email whose body has an email address", async () => { @@ -33,34 +36,33 @@ describe("Email Auth", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); - console.log(parsedEmail); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const circuitInputs = await genEmailCircuitInput(emailFilePath, accountCode, { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -72,8 +74,8 @@ describe("Email Auth", () => { const maskedCommand = "Send 0.1 ETH to "; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); - const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + const maskedCommandFields = await + relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] @@ -81,7 +83,7 @@ describe("Email Auth", () => { } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -101,32 +103,32 @@ describe("Email Auth", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const circuitInputs = await genEmailCircuitInput(emailFilePath, accountCode, { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -139,7 +141,7 @@ describe("Email Auth", () => { const maskedCommand = "Swap 1 ETH to DAI"; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] @@ -147,7 +149,7 @@ describe("Email Auth", () => { } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -167,33 +169,33 @@ describe("Email Auth", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const circuitInputs = await genEmailCircuitInput(emailFilePath, accountCode, { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -206,7 +208,7 @@ describe("Email Auth", () => { const maskedCommand = "Send 1 ETH to "; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] @@ -214,7 +216,7 @@ describe("Email Auth", () => { } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -241,26 +243,26 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -273,7 +275,7 @@ describe("Email Auth", () => { const maskedCommand = "Send 1 ETH to "; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] @@ -281,7 +283,7 @@ describe("Email Auth", () => { } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -309,26 +311,26 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -342,14 +344,14 @@ describe("Email Auth", () => { "Accept guardian request for 0x04884491560f38342C56E26BDD0fEAbb68E2d2FC"; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -377,26 +379,26 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -410,14 +412,14 @@ describe("Email Auth", () => { "Accept guardian request for 0x04884491560f38342C56E26BDD0fEAbb68E2d2FC"; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -445,26 +447,26 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -478,14 +480,14 @@ describe("Email Auth", () => { "Accept guardian request for 0x04884491560f38342C56E26BDD0fEAbb68E2d2FC"; const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); const maskedCommandFields = - relayerUtils.bytes2Fields(paddedMaskedCommand); + await relayerUtils.bytesToFields(paddedMaskedCommand); for (let idx = 0; idx < maskedCommandFields.length; ++idx) { expect(BigInt(maskedCommandFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "emaiwallet.alice@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedCommandFields.length] ); @@ -511,14 +513,14 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); circuitInputs.from_addr_idx = 640; async function failFn() { const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large domain_idx", async () => { @@ -535,14 +537,14 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); circuitInputs.domain_idx = 256; async function failFn() { const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large timestamp_idx", async () => { @@ -559,14 +561,14 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); circuitInputs.timestamp_idx = 640; async function failFn() { const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large code_idx", async () => { @@ -583,14 +585,14 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); circuitInputs.code_idx = 768; async function failFn() { const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email without the forced subject", async () => { @@ -607,13 +609,13 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); async function failFn() { const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a non-utf8 character", async () => { @@ -630,12 +632,12 @@ describe("Email Auth", () => { maxHeaderLength: 640, maxBodyLength: 768, ignoreBodyHashCheck: false, - shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + shaPrecomputeSelector, }); async function failFn() { const witness = await circuit.calculateWitness(circuitInputs); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); }); diff --git a/packages/circuits/tests/email_auth_legacy.test.ts b/packages/circuits/tests/email_auth_legacy.test.ts index bd83465b..6033c9f1 100644 --- a/packages/circuits/tests/email_auth_legacy.test.ts +++ b/packages/circuits/tests/email_auth_legacy.test.ts @@ -1,10 +1,11 @@ const circom_tester = require("circom_tester"); const wasm_tester = circom_tester.wasm; import * as path from "path"; -const relayerUtils = require("@zk-email/relayer-utils"); - +// const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; import { genEmailCircuitInput } from "../helpers/email_auth"; import { readFileSync } from "fs"; +import { init } from "./wasm_init"; jest.setTimeout(1440000); describe("Email Auth Legacy", () => { @@ -18,6 +19,7 @@ describe("Email Auth Legacy", () => { path.join(__dirname, "../src/email_auth_legacy.circom"), option ); + await init(); }); it("Verify a sent email whose subject has an email address", async () => { @@ -28,7 +30,7 @@ describe("Email Auth Legacy", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); console.log(parsedEmail.canonicalizedHeader); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { body_hash_idx, precomputed_sha, @@ -46,17 +48,17 @@ describe("Email Auth Legacy", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -67,14 +69,14 @@ describe("Email Auth Legacy", () => { const maskedSubject = "Send 0.1 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -93,7 +95,7 @@ describe("Email Auth Legacy", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); console.log(parsedEmail.canonicalizedHeader); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { body_hash_idx, precomputed_sha, @@ -110,17 +112,17 @@ describe("Email Auth Legacy", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -131,14 +133,14 @@ describe("Email Auth Legacy", () => { const maskedSubject = "Swap 1 ETH to DAI"; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -157,7 +159,7 @@ describe("Email Auth Legacy", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); console.log(parsedEmail.canonicalizedHeader); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { body_hash_idx, precomputed_sha, @@ -174,17 +176,17 @@ describe("Email Auth Legacy", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -195,14 +197,14 @@ describe("Email Auth Legacy", () => { const maskedSubject = "Send 1 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -221,7 +223,7 @@ describe("Email Auth Legacy", () => { const emailRaw = readFileSync(emailFilePath, "utf8"); const parsedEmail = await relayerUtils.parseEmail(emailRaw); console.log(parsedEmail.canonicalizedHeader); - const accountCode = await relayerUtils.genAccountCode(); + const accountCode = await relayerUtils.generateAccountCode(); const { body_hash_idx, precomputed_sha, @@ -238,17 +240,17 @@ describe("Email Auth Legacy", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -259,14 +261,14 @@ describe("Email Auth Legacy", () => { const maskedSubject = "Send 1 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -303,17 +305,17 @@ describe("Email Auth Legacy", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -324,14 +326,14 @@ describe("Email Auth Legacy", () => { const maskedSubject = "Send 0.12 ETH to "; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -367,17 +369,17 @@ describe("Email Auth Legacy", () => { await circuit.checkConstraints(witness); const domainName = "gmail.com"; const paddedDomain = relayerUtils.padString(domainName, 255); - const domainFields = relayerUtils.bytes2Fields(paddedDomain); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); for (let idx = 0; idx < domainFields.length; ++idx) { expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); } - const expectedPubKeyHash = relayerUtils.publicKeyHash( - parsedEmail.publicKey + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key ); expect(BigInt(expectedPubKeyHash)).toEqual( witness[1 + domainFields.length] ); - const expectedEmailNullifier = relayerUtils.emailNullifier( + const expectedEmailNullifier = await relayerUtils.emailNullifier( parsedEmail.signature ); expect(BigInt(expectedEmailNullifier)).toEqual( @@ -389,14 +391,14 @@ describe("Email Auth Legacy", () => { "Re: Accept guardian request for 0x04884491560f38342C56E26BDD0fEAbb68E2d2FC"; const paddedMaskedSubject = relayerUtils.padString(maskedSubject, 605); const maskedSubjectFields = - relayerUtils.bytes2Fields(paddedMaskedSubject); + await relayerUtils.bytesToFields(paddedMaskedSubject); for (let idx = 0; idx < maskedSubjectFields.length; ++idx) { expect(BigInt(maskedSubjectFields[idx])).toEqual( witness[1 + domainFields.length + 3 + idx] ); } const fromAddr = "suegamisora@gmail.com"; - const accountSalt = relayerUtils.accountSalt(fromAddr, accountCode); + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); expect(BigInt(accountSalt)).toEqual( witness[1 + domainFields.length + 3 + maskedSubjectFields.length] ); @@ -428,7 +430,7 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large domain_idx", async () => { @@ -452,7 +454,7 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large subject_idx", async () => { @@ -476,7 +478,7 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large timestamp_idx", async () => { @@ -500,7 +502,7 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large code_idx", async () => { @@ -524,7 +526,7 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with a too large code_idx 2", async () => { @@ -548,7 +550,7 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email whose subject tries to forge the From field", async () => { @@ -572,7 +574,7 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); it("Verify a sent email with non-utf8 character", async () => { @@ -595,6 +597,6 @@ describe("Email Auth Legacy", () => { const witness = await circuit.calculateWitness(circuitInputsRelevant); await circuit.checkConstraints(witness); } - await expect(failFn).rejects.toThrow(); + await expect(failFn()).rejects.toThrow(); }); }); diff --git a/packages/circuits/tests/email_auth_production.test.ts b/packages/circuits/tests/email_auth_production.test.ts new file mode 100644 index 00000000..8e6a595f --- /dev/null +++ b/packages/circuits/tests/email_auth_production.test.ts @@ -0,0 +1,381 @@ +const circom_tester = require("circom_tester"); +const wasm_tester = circom_tester.wasm; +import * as path from "path"; +// const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; +import { genEmailCircuitInput } from "../helpers/email_auth"; +import { readFileSync } from "fs"; +import { init } from "./wasm_init"; + +const option = { + include: path.join(__dirname, "../../../node_modules"), + output: path.join(__dirname, "../build"), + recompile: true, +}; + +jest.setTimeout(1440000); +describe("Email Auth Production", () => { + let circuit; + beforeAll(async () => { + circuit = await wasm_tester( + path.join( + __dirname, + "../src/email_auth.circom" + ), + option + ); + await init(); + }); + + it("Verify a production email for recovery sent from mobile with the English setting", async () => { + const emailFilePath = path.join( + __dirname, + "./emails/recovery_gmail_english_mobile.eml" + ); + + const emailRaw = readFileSync(emailFilePath, "utf8"); + const parsedEmail = await relayerUtils.parseEmail(emailRaw); + const accountCode = + "0x276695464b95b7401535c10a28f804e9c158732fb9e5d974325b498e05cafe7e"; + + const circuitInputs = + await genEmailCircuitInput(emailFilePath, accountCode, { + maxHeaderLength: 1024, + maxBodyLength: 1024, + ignoreBodyHashCheck: false, + shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + }); + console.log(circuitInputs); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + + const domainName = "gmail.com"; + const paddedDomain = relayerUtils.padString(domainName, 255); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); + for (let idx = 0; idx < domainFields.length; ++idx) { + expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); + } + + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key + ); + expect(BigInt(expectedPubKeyHash)).toEqual( + witness[1 + domainFields.length] + ); + + const expectedEmailNullifier = await relayerUtils.emailNullifier( + parsedEmail.signature + ); + expect(BigInt(expectedEmailNullifier)).toEqual( + witness[1 + domainFields.length + 1] + ); + + const timestamp = BigInt(1733834024); + expect(timestamp).toEqual(witness[1 + domainFields.length + 2]); + + const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201"; + const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); + const maskedCommandFields = + await relayerUtils.bytesToFields(paddedMaskedCommand); + for (let idx = 0; idx < maskedCommandFields.length; ++idx) { + expect(BigInt(maskedCommandFields[idx])).toEqual( + witness[1 + domainFields.length + 3 + idx] + ); + } + + const fromAddr = "clavertest1@gmail.com"; + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); + expect(BigInt(accountSalt)).toEqual( + witness[1 + domainFields.length + 3 + maskedCommandFields.length] + ); + + expect(BigInt(1)).toEqual( + witness[ + 1 + domainFields.length + 3 + maskedCommandFields.length + 1 + ] + ); + }); + + + it("Verify a production email for recovery sent from PC with the English setting", async () => { + const emailFilePath = path.join( + __dirname, + "./emails/recovery_gmail_english_pc.eml" + ); + + const emailRaw = readFileSync(emailFilePath, "utf8"); + const parsedEmail = await relayerUtils.parseEmail(emailRaw); + const accountCode = + "0x2cf32a52285eb1f62fabeeb143e91314d1d2f8df39e572e26f19d6c9fd301a28"; + + const circuitInputs = + await genEmailCircuitInput(emailFilePath, accountCode, { + maxHeaderLength: 1024, + maxBodyLength: 1024, + ignoreBodyHashCheck: false, + shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + }); + console.log(circuitInputs); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + + const domainName = "gmail.com"; + const paddedDomain = relayerUtils.padString(domainName, 255); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); + for (let idx = 0; idx < domainFields.length; ++idx) { + expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); + } + + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key + ); + expect(BigInt(expectedPubKeyHash)).toEqual( + witness[1 + domainFields.length] + ); + + const expectedEmailNullifier = await relayerUtils.emailNullifier( + parsedEmail.signature + ); + expect(BigInt(expectedEmailNullifier)).toEqual( + witness[1 + domainFields.length + 1] + ); + + const timestamp = BigInt(1733832799); + expect(timestamp).toEqual(witness[1 + domainFields.length + 2]); + + const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201"; + const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); + const maskedCommandFields = + await relayerUtils.bytesToFields(paddedMaskedCommand); + for (let idx = 0; idx < maskedCommandFields.length; ++idx) { + expect(BigInt(maskedCommandFields[idx])).toEqual( + witness[1 + domainFields.length + 3 + idx] + ); + } + + const fromAddr = "clavertest1@gmail.com"; + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); + expect(BigInt(accountSalt)).toEqual( + witness[1 + domainFields.length + 3 + maskedCommandFields.length] + ); + + expect(BigInt(1)).toEqual( + witness[ + 1 + domainFields.length + 3 + maskedCommandFields.length + 1 + ] + ); + }); + + it("Verify a production email for recovery sent from mobile with the Turkish setting", async () => { + const emailFilePath = path.join( + __dirname, + "./emails/recovery_gmail_turkish_mobile.eml" + ); + + const emailRaw = readFileSync(emailFilePath, "utf8"); + const parsedEmail = await relayerUtils.parseEmail(emailRaw); + const accountCode = + "0x207c337c09f4196dac142567a9e0ddc955b89b42ce30aae71806a6a5c8626570"; + + const circuitInputs = + await genEmailCircuitInput(emailFilePath, accountCode, { + maxHeaderLength: 1024, + maxBodyLength: 1024, + ignoreBodyHashCheck: false, + shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + }); + console.log(circuitInputs); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + + const domainName = "gmail.com"; + const paddedDomain = relayerUtils.padString(domainName, 255); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); + for (let idx = 0; idx < domainFields.length; ++idx) { + expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); + } + + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key + ); + expect(BigInt(expectedPubKeyHash)).toEqual( + witness[1 + domainFields.length] + ); + + const expectedEmailNullifier = await relayerUtils.emailNullifier( + parsedEmail.signature + ); + expect(BigInt(expectedEmailNullifier)).toEqual( + witness[1 + domainFields.length + 1] + ); + + const timestamp = BigInt(1733834333); + expect(timestamp).toEqual(witness[1 + domainFields.length + 2]); + + const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201"; + const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); + const maskedCommandFields = + await relayerUtils.bytesToFields(paddedMaskedCommand); + for (let idx = 0; idx < maskedCommandFields.length; ++idx) { + expect(BigInt(maskedCommandFields[idx])).toEqual( + witness[1 + domainFields.length + 3 + idx] + ); + } + + const fromAddr = "clavertest1@gmail.com"; + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); + expect(BigInt(accountSalt)).toEqual( + witness[1 + domainFields.length + 3 + maskedCommandFields.length] + ); + + expect(BigInt(1)).toEqual( + witness[ + 1 + domainFields.length + 3 + maskedCommandFields.length + 1 + ] + ); + }); + + it("Verify a production email for recovery sent from PC with the Turkish setting", async () => { + const emailFilePath = path.join( + __dirname, + "./emails/recovery_gmail_turkish_pc.eml" + ); + + const emailRaw = readFileSync(emailFilePath, "utf8"); + const parsedEmail = await relayerUtils.parseEmail(emailRaw); + const accountCode = + "0x2ea2aea6391028aa5e1c5a8b1de277ba6b2d04b1a2da0bef66d3311ab2679347"; + + const circuitInputs = + await genEmailCircuitInput(emailFilePath, accountCode, { + maxHeaderLength: 1024, + maxBodyLength: 1024, + ignoreBodyHashCheck: false, + shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + }); + console.log(circuitInputs); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + + const domainName = "gmail.com"; + const paddedDomain = relayerUtils.padString(domainName, 255); + const domainFields = await relayerUtils.bytesToFields(paddedDomain); + for (let idx = 0; idx < domainFields.length; ++idx) { + expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); + } + + const expectedPubKeyHash = await relayerUtils.publicKeyHash( + parsedEmail.public_key + ); + expect(BigInt(expectedPubKeyHash)).toEqual( + witness[1 + domainFields.length] + ); + + const expectedEmailNullifier = await relayerUtils.emailNullifier( + parsedEmail.signature + ); + expect(BigInt(expectedEmailNullifier)).toEqual( + witness[1 + domainFields.length + 1] + ); + + const timestamp = BigInt(1733834168); + expect(timestamp).toEqual(witness[1 + domainFields.length + 2]); + + const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201"; + const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); + const maskedCommandFields = + await relayerUtils.bytesToFields(paddedMaskedCommand); + for (let idx = 0; idx < maskedCommandFields.length; ++idx) { + expect(BigInt(maskedCommandFields[idx])).toEqual( + witness[1 + domainFields.length + 3 + idx] + ); + } + + const fromAddr = "clavertest1@gmail.com"; + const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); + expect(BigInt(accountSalt)).toEqual( + witness[1 + domainFields.length + 3 + maskedCommandFields.length] + ); + + expect(BigInt(1)).toEqual( + witness[ + 1 + domainFields.length + 3 + maskedCommandFields.length + 1 + ] + ); + }); + + // it("Verify a production email for recovery sent from outlook pc with the English setting", async () => { + // const emailFilePath = path.join( + // __dirname, + // "./emails/recovery_outlook_english_pc.eml" + // ); + + // const emailRaw = readFileSync(emailFilePath, "utf8"); + // const parsedEmail = await relayerUtils.parseEmail(emailRaw); + // console.log(parsedEmail); + // const accountCode = + // "0x1162ebff40918afe5305e68396f0283eb675901d0387f97d21928d423aaa0b20"; + + // const circuitInputs = + // await genEmailCircuitInput(emailFilePath, accountCode, { + // maxHeaderLength: 1024, + // maxBodyLength: 1024, + // ignoreBodyHashCheck: false, + // shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)', + // }); + // console.log(circuitInputs); + // const witness = await circuit.calculateWitness(circuitInputs); + // await circuit.checkConstraints(witness); + // console.log("checkConstraints done"); + + // const domainName = "outlook.com"; + // const paddedDomain = relayerUtils.padString(domainName, 255); + // const domainFields = await relayerUtils.bytesToFields(paddedDomain); + // for (let idx = 0; idx < domainFields.length; ++idx) { + // expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]); + // } + // console.log("domainFields done"); + + // const expectedPubKeyHash = await relayerUtils.publicKeyHash( + // parsedEmail.public_key + // ); + // expect(BigInt(expectedPubKeyHash)).toEqual( + // witness[1 + domainFields.length] + // ); + // console.log("expectedPubKeyHash done"); + + // const expectedEmailNullifier = await relayerUtils.emailNullifier( + // parsedEmail.signature + // ); + // expect(BigInt(expectedEmailNullifier)).toEqual( + // witness[1 + domainFields.length + 1] + // ); + // console.log("expectedEmailNullifier done"); + + // const timestamp = BigInt(0); + // expect(timestamp).toEqual(witness[1 + domainFields.length + 2]); + // console.log("timestamp done"); + + // const maskedCommand = "Accept guardian request for 0x4AB749201F0D9b4c19624e0e7820ACBfD80eD992"; + // const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605); + // const maskedCommandFields = + // await relayerUtils.bytesToFields(paddedMaskedCommand); + // for (let idx = 0; idx < maskedCommandFields.length; ++idx) { + // expect(BigInt(maskedCommandFields[idx])).toEqual( + // witness[1 + domainFields.length + 3 + idx] + // ); + // } + + // const fromAddr = "suegamisora@outlook.com"; + // const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode); + // expect(BigInt(accountSalt)).toEqual( + // witness[1 + domainFields.length + 3 + maskedCommandFields.length] + // ); + + // expect(BigInt(0)).toEqual( + // witness[ + // 1 + domainFields.length + 3 + maskedCommandFields.length + 1 + // ] + // ); + // }); +}); diff --git a/packages/circuits/tests/emails/recovery_gmail_english_mobile.eml b/packages/circuits/tests/emails/recovery_gmail_english_mobile.eml new file mode 100644 index 00000000..f1ba2473 --- /dev/null +++ b/packages/circuits/tests/emails/recovery_gmail_english_mobile.eml @@ -0,0 +1,288 @@ +Delivered-To: recovery@clave.team +Received: by 2002:a05:7022:429:b0:92:8c8d:508f with SMTP id 41csp915797dlf; + Tue, 10 Dec 2024 04:33:45 -0800 (PST) +X-Received: by 2002:a05:6214:1c4a:b0:6cb:ef8d:b10 with SMTP id 6a1803df08f44-6d8e71c752cmr302541266d6.39.1733834024726; + Tue, 10 Dec 2024 04:33:44 -0800 (PST) +ARC-Seal: i=1; a=rsa-sha256; t=1733834024; cv=none; + d=google.com; s=arc-20240605; + b=Bz3npx+Xiz8PCxABZM/pE2RC2j1lcM5rpsbG8t8mxfMJHWTLwNA7tmPeXejeBuxvpZ + newhjPva1/4cdNVX6lT+a3GqbyFZc9miLvBI2PwBFN7KT6I7p2ic7ox5WfLMBdqryRbE + bWH6vHNx+AgJyeULduGi+lQQ8xVR3Vkf7hlwIJoa5FLTA0Dzf7lCTdhrEoqXeEQ8/BYg + nKFDRSYpw+0WFVrlXiZHCe3wbzt5SESNo974JS6rQq+P6h3KoQj8FqVAqEFpmuhpPcCx + JcboaIJPQ1280psDQB8p9ho6k6fIXGW98LqHO7ihnwom5rFDK7wFciS2EupLAKiX6zc4 + KD9Q== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :dkim-signature; + bh=BQa0fDYj4SQFznJ08GQQ5VfyHxSqDpQ61GYUErKxhJQ=; + fh=nYPCYrstWhfZgSWNhux6i7gDLgD1V03P71DEyaIEAt0=; + b=LCHAKPZo4Eye/9XO7afcaDQ1HjsEz908xMIM8DzTTb+KlHDnT8mUl3VhD+54J/HwnZ + +8hJutT52fPUifC/jVNs/wAtZMldq69ubuaP34HvECMhsQZZopvC9yFkgQasxY961oHy + ApV5af4221ffNDjRWL1acS2dAfFJUjaDqPj+FS4SlaDIa5PPtLYRNPQPHnpTTaJjdibs + tebQ7eSX0R1NuH/4agQT6kXHxrVG66ySl1ZlDD77p6EdxfzlGVp9XCC45U/nUoEi7Y+e + wZiqQTDdgMP4t8xh+gRtQ2v4eL1Xv82yph1pgTCr+Gk6xNdTwr62PzN4u1AYAW5DBIbB + 1yqw==; + dara=google.com +ARC-Authentication-Results: i=1; mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=erugaHZQ; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +Return-Path: +Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) + by mx.google.com with SMTPS id 6a1803df08f44-6d9167d5888sor16559636d6.9.2024.12.10.04.33.44 + for + (Google Transport Security); + Tue, 10 Dec 2024 04:33:44 -0800 (PST) +Received-SPF: pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; +Authentication-Results: mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=erugaHZQ; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20230601; t=1733834024; x=1734438824; darn=clave.team; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :from:to:cc:subject:date:message-id:reply-to; + bh=BQa0fDYj4SQFznJ08GQQ5VfyHxSqDpQ61GYUErKxhJQ=; + b=erugaHZQtC2jx2bQfsrYLvZJ/rehO4ruXS56vserg4WyO3HQWGYivbsTf0n/Y3tTrT + JVr6bhUsQtOQMdJ4kUaGMVzDcEv/xE0WcEnjqYPXGKuM23QM4s0wefyxCLPGP0VgTOoP + xv/QHzHJ76V49JUzypoVFjjDkN0RS5GbkmDWrSOK7ke9oe/y0CYlrC0KyxvjpnyAUoYO + dWPR0Xo3RgytJspN1yYeupcj7ldaBknxi9AqA7A0HT8Q0n8eq1L7E7XhkfSdm5wB5t9M + 89ROi/VtIkMKEE+Ll65xD80+2dRyRkGM7tpEMX1zHcU4ayzToI4Yg4KjEgK0xf6A5Xyt + mpnw== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1733834024; x=1734438824; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; + bh=BQa0fDYj4SQFznJ08GQQ5VfyHxSqDpQ61GYUErKxhJQ=; + b=oTDIimlphRMxAkiulZWKQgrmgcaJ6Vc1zDQvRhzCJcp/e/fOXr1IM1hS4lkoOpJVJ9 + bYHjUxjWau5yOvRz0mM4rC3ycWcsBC3uztogBA55dfN/cuwG5Kp1l66xozI9ygyxT55X + A10i9QRojCzVVF7fJhWP+zlyqVkC8TEIRYQ1gdJykW/TmBnkabax2kLpsRdU4cUjITk0 + wPpOA0OLbwMwJEi3tgzRVhW4NHpI/kpbyIXTteAWEeRTwaPj9gbjxpG4uSAprrHqw/O8 + X1rUNg0V2v3ZLv9VikXgB0UTE/bH7oF7rojsvfoK4rSGS7fjqjWM1JIFlOO0L+09MjZV + 2iaw== +X-Gm-Message-State: AOJu0Yzoso72PGhb1JRExNPrErsRXrz1Vm0eCKNejbJkiv9RRxxMdTCj + 7EPukAAW23At2Z/veY3Wyv/wrzkPdFVTLElG0PS+zhvzJXvY0A4+7pfp+5pN2RwgUB9do0vEpzs + C5u9pDFTnyvpoFExFOjolLlJbvNyFwQ== +X-Gm-Gg: ASbGncuONi5k+oVN1sAM3uTBtYghs6AAsFIl/bzqUo8gN/7DhDytS7nBwFW7D62Sonj + Cm3qbbQAayyD5U+GJZqv9PUw/z5cvBnbcnx99FZh6rtsqip9C/V+4Xy3vXEliLhWxOQC+ +X-Google-Smtp-Source: AGHT+IFWvcdRI7oJ3IdUcziL5CF5LaSh1d5oY87aWHs61Ta0iBZEMmYFtNtuu5oZc1QOhX9Zl+3+AlZ3m8xB871fGcs= +X-Received: by 2002:ad4:5ce3:0:b0:6d8:ae2c:503a with SMTP id + 6a1803df08f44-6d8e71eebc7mr305367536d6.48.1733834024130; Tue, 10 Dec 2024 + 04:33:44 -0800 (PST) +MIME-Version: 1.0 +References: +In-Reply-To: +From: Clav Er +Date: Tue, 10 Dec 2024 13:33:33 +0100 +Message-ID: +Subject: Re: [Reply Needed] Recovery: Acceptance Request +To: recovery@clave.team +Content-Type: multipart/alternative; boundary="0000000000001b9e890628e9b106" + +--0000000000001b9e890628e9b106 +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +Confirm. + +On Tue, Dec 10, 2024 at 1:33=E2=80=AFPM wrote: + +> Acceptance Request +> +> [image: Logo of Clave] +> +> Clave +> +> Hi, clavertest1@gmail.com! +> +> You have received an guardian request from the wallet address +> *0xac09b60d0bd4370545f1f56db21cd33606c1f201*. Reply "*Confirm*" to this +> email to accept the request. +> +> Your request ID is #4041864629. +> ------------------------------ +> +> Stay Secure, +> +> Clave Team +> +> Connect with us: +> +> +> +> Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 +> Code 276695464b95b7401535c10a28f804e9c158732fb9e5d974325b498e05cafe7e +> + +--0000000000001b9e890628e9b106 +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +
Confirm.=C2=A0

On Tue, Dec 10, 2024 a= +t 1:33=E2=80=AFPM <recovery@clave.team> wrote:
= + + + =20 + =20 + =20 + =20 + =20 + =20 +
+ Acceptance Request + + + + + + +
=C2=A0 +
+ =20 + + + + + +
+ 3D"Logo + +

+ Clave +

+
+ =20 + + =20 + + + + =20 +
+ + + + +
+

+ Hi, clavertest1@gmail.com! +

+

+ You have received an guardian request from the wa= +llet + address 0xac09b60d0bd4370545f1f56db21cd33= +606c1f201. Reply + "Confirm" to this emai= +l to accept the + request. +

+ Your request ID is #4041864629. +

+
+
+ =20 + =20 +
+

+ Stay Secure, +

+

+ Clave Team +

+
+ + + + + +
+

+ Connect with us: +

+ + + + + + + +
+ + + + + + + +
+
+ +
+
+ =20 +
+
=C2=A0
+
Ac= +cept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 Code 2= +76695464b95b7401535c10a28f804e9c158732fb9e5d974325b498e05cafe7e
+
+ +
+ +--0000000000001b9e890628e9b106-- diff --git a/packages/circuits/tests/emails/recovery_gmail_english_pc.eml b/packages/circuits/tests/emails/recovery_gmail_english_pc.eml new file mode 100644 index 00000000..ede1b831 --- /dev/null +++ b/packages/circuits/tests/emails/recovery_gmail_english_pc.eml @@ -0,0 +1,285 @@ +Delivered-To: recovery@clave.team +Received: by 2002:a05:7022:429:b0:92:8c8d:508f with SMTP id 41csp902022dlf; + Tue, 10 Dec 2024 04:13:20 -0800 (PST) +X-Received: by 2002:a05:620a:6283:b0:7b6:d998:4fc5 with SMTP id af79cd13be357-7b6dce6b309mr619276985a.35.1733832800193; + Tue, 10 Dec 2024 04:13:20 -0800 (PST) +ARC-Seal: i=1; a=rsa-sha256; t=1733832800; cv=none; + d=google.com; s=arc-20240605; + b=OQ4Tc67GzP1L3xFBSC+M9SGQhm65RCFS/fhqBF2NqOp04APmZI4dFRcCV2972e63XA + 2N/pW1Ouk0XEw1ibaRe/6xcY54zBV3Q9br0qGIFfSfi+Z0pJIR+SkYXdeD8VxPKOCWJl + jwbEy43KvpMrQDwrsy7FCKPNA8MXzrs6aHHZu/Sxnxw2VV5EZh3EL+jKF4JR/K9aFLq6 + 3q3qJ8QEGwLA/Ionhoo3kqbqgewl8IlzzCZoLWKML9mz3RyCKbQzcQxVKwepI/TiORvE + EfWOcyfPCCTe2A9i3TdMVqSA5immXw6gT4N5zov6Rpzcab8xoFDvj8pOCRxevSRnCNhs + 2YgA== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :dkim-signature; + bh=8vovzfKhmEoFSBZ5+uj2kepPv+tTjfCjCeVEd7IeJ6I=; + fh=nYPCYrstWhfZgSWNhux6i7gDLgD1V03P71DEyaIEAt0=; + b=RFKBfpyzvNu1TXp2tU8QAyOJ7bnn051RJl+rPBkuwcUKmcxKAdnOSjtJRnJH6umiBo + D/39J4eisqdcfXO+3PdUjW6HHkZWFq1qnbK1sjC1P3p2//als9ooDqzIjFEF1XrJiJms + +/8Z65JfOSde/HzGAJEmkDg0BNmqtobeUZrcOA6YqRyaVKLh4UKofrUQecwI7ffzrCFa + Ue9z7AffZpzpIPXUxCkprwveIrOfewHaF2jfXBFFhVQVV+pGsfBlYOW2XFJnRN6B+Pf+ + UCbsgc3GKRr5tTYdyjUysBNgosjn8+kDP8TfgVPbxsfIQeLJDxWQJ5l2wmv47HVK/+B2 + AUiA==; + dara=google.com +ARC-Authentication-Results: i=1; mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=MiWz1+jT; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +Return-Path: +Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) + by mx.google.com with SMTPS id af79cd13be357-7b6b5a53ffesor1368033685a.1.2024.12.10.04.13.20 + for + (Google Transport Security); + Tue, 10 Dec 2024 04:13:20 -0800 (PST) +Received-SPF: pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; +Authentication-Results: mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=MiWz1+jT; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20230601; t=1733832799; x=1734437599; darn=clave.team; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :from:to:cc:subject:date:message-id:reply-to; + bh=8vovzfKhmEoFSBZ5+uj2kepPv+tTjfCjCeVEd7IeJ6I=; + b=MiWz1+jT85xXh6oebhAyDgUHQ+MXaLz/he8RW93uIJp72fTMKE+58aBhitTdQ20CWU + ZC0fe+2E20VLT2SYXfLajwSpUlE41xQOemDEOeFVI5utX/RKXiS2BsMFsohuyYLMccsp + Pp4+ipdqBxprblHW6IVMYOd+VNCzi58SC46ms4KPP4UMpYMQicSPhIIkcE+HWt2X0sJ9 + R3X9WD9FRvatQigWZoWeMIwAm39DUmYdCPPpT4m31H1+YpKkZNoms/MK5g1Jm40Ja7qO + 6oWVyq2V2+vcfBzFH/Scsm69qLztY9K+CUvIhN38ztc6FR+kLJALrcrljJ99vsmFS6qi + H9pw== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1733832799; x=1734437599; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; + bh=8vovzfKhmEoFSBZ5+uj2kepPv+tTjfCjCeVEd7IeJ6I=; + b=kJOR/4tiZMrzilueEo+myzFJ3KZRa9A6l/1kqQedG9z33+yOwlZMaIKXJVu5HM82I5 + PHyDOiEv5Fr5sXDkhpApuv7nQVmorNmy8/P5vWG21/K4ObeHiSAXVZSNv11QTc8vMQva + Iypsx71suBf3H2luoVXreFYA6OWMWSJIAqlMgisc5AXhu75lFFN/UjlQxt1j7cHpeUIL + Dtw2wELYUyMTIkeHiLbrHF9/HKdkH9yHQFf/j2j7bTpHa3auuo57KEWdnRAO7Kixu8CP + MQ+1h6gENyRBazAYKQmNjXqgHGX6PssbMRGfBD59qssIiqTKQOVFg83Nj4qVcEmRXC05 + MysA== +X-Gm-Message-State: AOJu0Yydf51ndXYSQHErisFX29djAsve7eW0+hn4uyvjuAMelyJ3ubP5 + Kr2h/ZtzYFskOPejSnIerE/40XMBywEA0cvinnGQ1nhjggdIN/LUk5J/+lgbtV2XQgujN+NoyiU + ho8j95WQC4gGekHcqa8g3HWmuYTdcZA== +X-Gm-Gg: ASbGnctxZJimQv8di0QibCuiroVtvclcQyNlilYBlYttFK1cet/mBxeMrqYJ2ENDFm/ + p/G7J0n4Tr0YlFe7S7Cye13lsCvONCDzQXxsLcAQ4VfL6pwX1vkdJdNVv/XgauSSuAvql +X-Google-Smtp-Source: AGHT+IF2XfK+qBhglI4FORnxJ8lsvFWlyYuBmQgXQNSvaSY4mNVyBfCCBI8fh3Rvmkf1JGj1jIF7uR4KSwffs3HX548= +X-Received: by 2002:ad4:5945:0:b0:6d8:a84b:b508 with SMTP id + 6a1803df08f44-6d91e36effcmr66684966d6.12.1733832799570; Tue, 10 Dec 2024 + 04:13:19 -0800 (PST) +MIME-Version: 1.0 +References: +In-Reply-To: +From: Clav Er +Date: Tue, 10 Dec 2024 13:13:05 +0100 +Message-ID: +Subject: Re: [Reply Needed] Recovery: Acceptance Request +To: recovery@clave.team +Content-Type: multipart/alternative; boundary="0000000000001e53d70628e96849" + +--0000000000001e53d70628e96849 +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +Confirm. + +10 Ara 2024 Sal 13:12 tarihinde =C5=9Funu yazd=C4=B1: + +> Acceptance Request +> +> [image: Logo of Clave] +> +> Clave +> +> Hi, clavertest1@gmail.com! +> +> You have received an guardian request from the wallet address +> *0xac09b60d0bd4370545f1f56db21cd33606c1f201*. Reply "*Confirm*" to this +> email to accept the request. +> +> Your request ID is #3485948547. +> ------------------------------ +> +> Stay Secure, +> +> Clave Team +> +> Connect with us: +> +> +> +> Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 +> Code 2cf32a52285eb1f62fabeeb143e91314d1d2f8df39e572e26f19d6c9fd301a28 +> + +--0000000000001e53d70628e96849 +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +

Confirm.

+
10 Ara= + 2024 Sal 13:12 tarihinde <recovery@clave.team> =C5=9Funu yazd=C4=B1= +:
+ + =20 + =20 + =20 + =20 + =20 + =20 +
+ Acceptance Request + + + + + + +
=C2=A0 +
+ =20 + + + + + +
+ 3D"Logo + +

+ Clave +

+
+ =20 + + =20 + + + + =20 +
+ + + + +
+

+ Hi, clavertest1@gmail.com! +

+

+ You have received an guardian request from the wa= +llet + address 0xac09b60d0bd4370545f1f56db21cd33= +606c1f201. Reply + "Confirm" to this emai= +l to accept the + request. +

+ Your request ID is #3485948547. +

+
+
+ =20 + =20 +
+

+ Stay Secure, +

+

+ Clave Team +

+
+ + + + + +
+

+ Connect with us: +

+ + + + + + + +
+ + + + + + + +
+
+ +
+
+ =20 +
+
=C2=A0
+
A= +ccept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 Code = +2cf32a52285eb1f62fabeeb143e91314d1d2f8df39e572e26f19d6c9fd301a28
+
+ +
+ +--0000000000001e53d70628e96849-- diff --git a/packages/circuits/tests/emails/recovery_gmail_turkish_mobile.eml b/packages/circuits/tests/emails/recovery_gmail_turkish_mobile.eml new file mode 100644 index 00000000..1c60cdfd --- /dev/null +++ b/packages/circuits/tests/emails/recovery_gmail_turkish_mobile.eml @@ -0,0 +1,284 @@ +Delivered-To: recovery@clave.team +Received: by 2002:a05:7022:429:b0:92:8c8d:508f with SMTP id 41csp919017dlf; + Tue, 10 Dec 2024 04:38:54 -0800 (PST) +X-Received: by 2002:a05:620a:63c8:b0:7b6:d632:37be with SMTP id af79cd13be357-7b6d63238a8mr1205237885a.4.1733834334191; + Tue, 10 Dec 2024 04:38:54 -0800 (PST) +ARC-Seal: i=1; a=rsa-sha256; t=1733834334; cv=none; + d=google.com; s=arc-20240605; + b=fRs6NBmjvrSuP53kHbApFum6myPQdWUrWjxthCD+n8h53xzQ/Jw0WnoI3Gw79DNXr8 + IYNnDA7LE0WOm7zQ30pH9UDRgavFGWFeP9L0VnPabIAFaUM5LAoRb/8gvq2/bM6vLLZJ + 9a4auh6FD3rKcvOe8otRFlhmQLpy4qVWg2WnsEfFrV9WShh0zFhtV8w41rIg553/ykxY + LIW1SxAD1IXHFLdOmEaP6Lik90EzDJ8fyERgoLQqje32nmFly+SaWRfGM8ZhvPodzmFe + Wxj0eUtJK0+S0wgw4T3AB1mZKwj5eqA6Lu6aEZ/rksjPUa5YP12gPNmVQKKGrMIR7yJS + ADIg== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :dkim-signature; + bh=RYdnEPKMQIQcgRaMzvzKmsuK2XbuIoX7E/RsPcJPrCs=; + fh=nYPCYrstWhfZgSWNhux6i7gDLgD1V03P71DEyaIEAt0=; + b=EbqrSxCjtij9vyJ/eQpJ9QlOyjgL15HBsVE5PCqGdVHZlS81u2TvNx4FNzIRnLmbCU + Tp/UiBGM/UDEEYZnRAYLXbvf8iwXUMQfiWBzSLEYz0Mf7fB4BUoBgHMG7PofDpeAj1nH + 4/ZBxANGqTZ3uur1CxZSIOUIDLModQoIl/YK6Yqpup/2+pA4Q6eypWGtW0tFHXjzUuCh + 08NR+ku3erSv9fVThkXU3OnJr4a4psCsXty2mDuJ/qPSB34jqkzBbaWB630zsitWM8uT + BTeVw9ck0mPusnZpKFw00cUZnQcyTyWC0s7VWqDtjaIkqppH3eXCDLtN9t6sXslOYknf + sRmA==; + dara=google.com +ARC-Authentication-Results: i=1; mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=ZduB+OuH; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +Return-Path: +Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) + by mx.google.com with SMTPS id af79cd13be357-7b6d34eb49bsor463420785a.9.2024.12.10.04.38.54 + for + (Google Transport Security); + Tue, 10 Dec 2024 04:38:54 -0800 (PST) +Received-SPF: pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; +Authentication-Results: mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b=ZduB+OuH; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20230601; t=1733834333; x=1734439133; darn=clave.team; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :from:to:cc:subject:date:message-id:reply-to; + bh=RYdnEPKMQIQcgRaMzvzKmsuK2XbuIoX7E/RsPcJPrCs=; + b=ZduB+OuHk6SVfow+/jM34b9qhtew31goXRXXyInVtR2QtSG/qJy4vUX2ps5cqgqSdI + Z9J5nUadQyVZoW9qt5pbrvG99x/tUw4ZVsOPw6BHY5t5avup9bTrMA3maYifEeMjniU3 + taEAGh2C0KH6Zvz5AtjdHJfJUfrxsuN/ZlZ5yn6BhUKMtysWYQlG+uy8XpzncCz7bdlk + oIjK/9yHWJWGj9cseXRwPlLVyD3CJjZXyENZcJ/79y78U9lybhZTq6EIgGL1L650Tzti + iJo0OKXhzM/pB6AFSGMSkovP4nFM4siyJ8m8wTT4Vjn/TnfFjm0kX+/UVOxA6QvczNFD + gi3A== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1733834333; x=1734439133; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; + bh=RYdnEPKMQIQcgRaMzvzKmsuK2XbuIoX7E/RsPcJPrCs=; + b=UVUnmHzQ2KUeDXZUyqTesa/jZjmyhCG9Ndf+IGu5v+RLKWm9fqvRUAnscBKFZoGh3H + ffvdUOnr8J+nBuU1GMWtdH16YfsiZvpuOspmV0lgWM2zHByrKh8HaadUkPm6n8AJLsAW + vD9ckZ/pHrA8deWDxuSdfnM/OYlZo8xIP9641QwJOTDbmULO5+t9P3lj85nkulg/L1vG + i/83ESyMNpq7WUjxKUpHI2O5r7Fl78sD+x2sevubFgrp3nx8E/VhzxhCswS3r5iSVhv0 + r/MGnEGP17ebazKdiGQeJcbQ24YcSnXzJ/M6HaeA4R3myoIZbkpOZYSErz4pp4qTFIV+ + LDeQ== +X-Gm-Message-State: AOJu0Ywgu87+hIUZcTd5QCcuAkhn5i5SZBbdik2CKRPuIvncy/Z30tZ7 + jpiFbwUhwqdel1hAnbl+NscdAolGS1IyHBT7Cuhyh5VgG5qMmQlOa0/CN95YfZpQDvB9G0koJ7p + kKLJNXcwtazIbbscPBl4arg8dbphclQ== +X-Gm-Gg: ASbGnctWXMcmA46mGdfqCkxBA+CYd5Pcp8KfDvD5yzvOw2VyQyMHCDOIRoN/gA4pNag + 2lKiWAHI7hMf4yYgg6wzfAacVwYNZdWU0VrXltw91WSO/CfcN2OrPTzqgZ/n+2Oo8FaJC +X-Google-Smtp-Source: AGHT+IGpIHe/n2KraEpu8GMzO/2pWEmUyeNBm2gJO2eSU875MYkPo9CgPMyx/w/XkTILVb88R5oOn5Y8RS6Q3XLgVz8= +X-Received: by 2002:a05:6214:2684:b0:6d8:b3a7:75a0 with SMTP id + 6a1803df08f44-6d8e7205319mr273695916d6.47.1733834333567; Tue, 10 Dec 2024 + 04:38:53 -0800 (PST) +MIME-Version: 1.0 +References: <93be17f7-92b0-4178-9371-d90b00678400@mail.gmail.com> +In-Reply-To: <93be17f7-92b0-4178-9371-d90b00678400@mail.gmail.com> +From: Clav Er +Date: Tue, 10 Dec 2024 13:38:40 +0100 +Message-ID: +Subject: Re: [Reply Needed] Recovery: Acceptance Request +To: recovery@clave.team +Content-Type: multipart/alternative; boundary="0000000000008d44f20628e9c360" + +--0000000000008d44f20628e9c360 +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +Confirm. + +On Tue, Dec 10, 2024, 1:38=E2=80=AFPM wrote: + +> Acceptance Request +> +> [image: Logo of Clave] +> +> Clave +> +> Hi, clavertest1@gmail.com! +> +> You have received an guardian request from the wallet address +> *0xac09b60d0bd4370545f1f56db21cd33606c1f201*. Reply "*Confirm*" to this +> email to accept the request. +> +> Your request ID is #3770729711. +> ------------------------------ +> +> Stay Secure, +> +> Clave Team +> +> Connect with us: +> +> +> +> Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 +> Code 207c337c09f4196dac142567a9e0ddc955b89b42ce30aae71806a6a5c8626570 +> + +--0000000000008d44f20628e9c360 +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +

Confirm.

+
On Tue= +, Dec 10, 2024, 1:38=E2=80=AFPM <recovery@clave.team> wrote:
+ + =20 + =20 + =20 + =20 + =20 + =20 +
+ Acceptance Request + + + + + + +
=C2=A0 +
+ =20 + + + + + +
+ 3D"Logo + +

+ Clave +

+
+ =20 + + =20 + + + + =20 +
+ + + + +
+

+ Hi, clavertest1@gmail.com! +

+

+ You have received an guardian request from the wa= +llet + address 0xac09b60d0bd4370545f1f56db21cd33= +606c1f201. Reply + "Confirm" to this emai= +l to accept the + request. +

+ Your request ID is #3770729711. +

+
+
+ =20 + =20 +
+

+ Stay Secure, +

+

+ Clave Team +

+
+ + + + + +
+

+ Connect with us: +

+ + + + + + + +
+ + + <= +/a> + + + + +
+
+ +
+
+ =20 +
+
=C2=A0
+
Acc= +ept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 Code 20= +7c337c09f4196dac142567a9e0ddc955b89b42ce30aae71806a6a5c8626570
+
+ +
+ +--0000000000008d44f20628e9c360-- diff --git a/packages/circuits/tests/emails/recovery_gmail_turkish_pc.eml b/packages/circuits/tests/emails/recovery_gmail_turkish_pc.eml new file mode 100644 index 00000000..993dbce3 --- /dev/null +++ b/packages/circuits/tests/emails/recovery_gmail_turkish_pc.eml @@ -0,0 +1,290 @@ +Delivered-To: recovery@clave.team +Received: by 2002:a05:7022:429:b0:92:8c8d:508f with SMTP id 41csp917279dlf; + Tue, 10 Dec 2024 04:36:08 -0800 (PST) +X-Received: by 2002:a05:620a:461e:b0:7b6:c695:fb88 with SMTP id af79cd13be357-7b6dcebcf49mr527351785a.62.1733834168413; + Tue, 10 Dec 2024 04:36:08 -0800 (PST) +ARC-Seal: i=1; a=rsa-sha256; t=1733834168; cv=none; + d=google.com; s=arc-20240605; + b=IYoIqoBEvlGmOVzReoa9EuQWc7ygIXCmmib6e+Xq1g5Bfu+Kxzwr4tlEJwQ0DOvTYO + VeIQWe+9S1/3P5zVqgtmmxXimezv6WWRZ/V2j7GRbhcQ5WyPH1MuiXix/e0fZg4VdR1G + wjowzI+PZphLLITsIRXRgYI1d0pOuxs/6USs6Phl3z6FbxHQU1uE9zzuCQ5675tYuSWN + RNrycJ90A32IcjxHm83ApOi0AdIqcjT5t+hs36BEP21PNUFHxv+YVhzKrmNqjV/Z2rXA + KEWcay+8JdMmjmjJBGC2UMUCESl63lzWyGsnddoCkjD9wADL2Nz22tFr9PYiX+g7Wo8n + xOPQ== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :dkim-signature; + bh=ZqdrVw3rjSHqBXBrOhCL15Aq3iFatLRKcpShZk2CK/0=; + fh=nYPCYrstWhfZgSWNhux6i7gDLgD1V03P71DEyaIEAt0=; + b=IXa5r+avVGNMZ0OtYa7Pv6E0TG47+HmKDuAIXOEsiBQxR5KUvg5hpHoGtfQLpH3ryV + xAl1S3R5AnR6PLN8XbFUo3Mdto7CA2h8EAg+Ij5UN3oAkC9LRHzbQYq5xg+7WUnHe5L/ + MeG8sOCkTYk2PnIhnaRV8wOl1h4KMyP3O1sbTvstBRkcl0qxre+BfhDMtu3lKETVpgF9 + smnO5MWzuah7/bDpyWSpzmnJVmfEYIRDVQ+TGQn9TaUxXaBjPnj07Mgj6834KTqq/ye0 + 5Bc7N6pW4vJukiMtHTuYf0zn5+NR7vXPRrGgqWdnUGJjiviREaNuRbQnspTmrL/Rt1K9 + JitQ==; + dara=google.com +ARC-Authentication-Results: i=1; mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b="OYp/F0Zx"; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +Return-Path: +Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) + by mx.google.com with SMTPS id 6a1803df08f44-6d900cb1593sor57630296d6.2.2024.12.10.04.36.08 + for + (Google Transport Security); + Tue, 10 Dec 2024 04:36:08 -0800 (PST) +Received-SPF: pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; +Authentication-Results: mx.google.com; + dkim=pass header.i=@gmail.com header.s=20230601 header.b="OYp/F0Zx"; + spf=pass (google.com: domain of clavertest1@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=clavertest1@gmail.com; + dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; + dara=pass header.i=@clave.team +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20230601; t=1733834168; x=1734438968; darn=clave.team; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :from:to:cc:subject:date:message-id:reply-to; + bh=ZqdrVw3rjSHqBXBrOhCL15Aq3iFatLRKcpShZk2CK/0=; + b=OYp/F0ZxObh4+MkEm1f2PBhrYJwnPwWHXlpWYnDL8A6yG3SfnQ2LBhApRx8QaP1tRw + ssQQnL9XDPaWrAFSR3VQMnYqJZ2EM8ePDbb/sNuzY3UGVxWFf484x/oUHme1jow7gc4c + yoaJVwSie40MMtcsMXO72/M3VFDQuDbl2vuaUs7zZCQ/VjC902GIYodLHfh199ntaa3l + QV0qVTMNz+Rkc5UfXW9iya+rCG1ok9YvmYyz7r0oSWp15IIQtguMIfCjUxX+UuvLfter + vBzWPHBvWoGuDEVS+OgOe0MwSlojaBqomgtP14B8YSXIs1TNmSY+3rI9rjcEfX5ciNBF + JBXA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1733834168; x=1734438968; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; + bh=ZqdrVw3rjSHqBXBrOhCL15Aq3iFatLRKcpShZk2CK/0=; + b=jHgL3shukNlN7kr6CjxeBwEgEWserCNsfzcOiG9vS3Z/kQtwEPSmqWdhrW3qi9fey7 + yUqnwox5HgGuAMRyclWEB8buf+SquTPNpwBQX0C2KFh+vLknXyuj5/heRtW7/3Cabr7O + zSiTH7TRaJTeKpHpq6/nUEOsyVVb3xzzc92NfVxyYDw/SVzy+69hHcUXyrwFt0MhvyPH + 9sAoy1aScHqQ98DoHEiRBkFUEKby+pjjUQLGXzPsryLeKilRhXwN1rygBCDeKnviCLoY + tuhC+hKLb0WF44LnClCU8QS9FT3TteKqcu4l/Ltpl00Uj5p+wXV5oY+OD06OjiFI42MM + Kf5w== +X-Gm-Message-State: AOJu0YyDBKNJST+GS6lnRqEQ09q/gNWruBbdxa5SztUNCjq9kSMq5Ou+ + FZfCnnlwNRzPlSJ5Q6FfWCelux68wNG1glJsfkxRcpgja/VXnlY9R/OjbG11viKOvB0c2arRx+5 + YYhNmv7CRvHp90/PK51kLQDkarKAiyA== +X-Gm-Gg: ASbGncsn+/Xm0GufbnuAbz6bpk2OtMRS+M5J2ea2XUSSsZxHf21TQyHdQC37H1yJ56F + icKWOjiUB5lQeiiVm16yZXmPL/b3zrff3bviiREO0x9hHLOPFDmLrbfz0IZA2ixsOXqr/ +X-Google-Smtp-Source: AGHT+IHNVsV4/v5g3ZqBahcn4FIT0+1hJimYU1YwTGSm56CAa7ibxpKjG++aj62bHj1XIKglIOlwESTV4nBsposwmjU= +X-Received: by 2002:a05:6214:c6e:b0:6d8:98eb:451c with SMTP id + 6a1803df08f44-6d91e3415d7mr76275626d6.9.1733834167822; Tue, 10 Dec 2024 + 04:36:07 -0800 (PST) +MIME-Version: 1.0 +References: <9d5aff3e-0eef-4811-bbf3-05f979b8d304@mail.gmail.com> +In-Reply-To: <9d5aff3e-0eef-4811-bbf3-05f979b8d304@mail.gmail.com> +From: Clav Er +Date: Tue, 10 Dec 2024 13:35:57 +0100 +Message-ID: +Subject: Re: [Reply Needed] Recovery: Acceptance Request +To: recovery@clave.team +Content-Type: multipart/alternative; boundary="000000000000ac305a0628e9b9eb" + +--000000000000ac305a0628e9b9eb +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +Confirm. + + adresine sahip kullan=C4=B1c=C4=B1 10 Ara 2024 Sal, 1= +3:35 +tarihinde =C5=9Funu yazd=C4=B1: + +> Acceptance Request +> +> [image: Logo of Clave] +> +> Clave +> +> Hi, clavertest1@gmail.com! +> +> You have received an guardian request from the wallet address +> *0xac09b60d0bd4370545f1f56db21cd33606c1f201*. Reply "*Confirm*" to this +> email to accept the request. +> +> Your request ID is #2645306140. +> ------------------------------ +> +> Stay Secure, +> +> Clave Team +> +> Connect with us: +> +> +> +> Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 +> Code 2ea2aea6391028aa5e1c5a8b1de277ba6b2d04b1a2da0bef66d3311ab2679347 +> + +--000000000000ac305a0628e9b9eb +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +
Confirm.=C2=A0

<recovery@clave.tea= +m> adresine sahip kullan=C4=B1c=C4=B1 10 Ara 2024 Sal, 13:35 tarihinde = +=C5=9Funu yazd=C4=B1:
+ + =20 + =20 + =20 + =20 + =20 + =20 +
+ Acceptance Request + + + + + + +
=C2=A0 +
+ =20 + + + + + +
+ 3D"Logo + +

+ Clave +

+
+ =20 + + =20 + + + + =20 +
+ + + + +
+

+ Hi, clavertest1@gmail.com! +

+

+ You have received an guardian request from the wa= +llet + address 0xac09b60d0bd4370545f1f56db21cd33= +606c1f201. Reply + "Confirm" to this emai= +l to accept the + request. +

+ Your request ID is #2645306140. +

+
+
+ =20 + =20 +
+

+ Stay Secure, +

+

+ Clave Team +

+
+ + + + + +
+

+ Connect with us: +

+ + + + + + + +
+ + + + + + + +
+
+ +
+
+ =20 +
+
=C2=A0
+
Ac= +cept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201 Code 2= +ea2aea6391028aa5e1c5a8b1de277ba6b2d04b1a2da0bef66d3311ab2679347
+
+ +
+ +--000000000000ac305a0628e9b9eb-- diff --git a/packages/circuits/tests/forced_subject_regex.test.ts b/packages/circuits/tests/forced_subject_regex.test.ts index 6bf16121..1e25b814 100644 --- a/packages/circuits/tests/forced_subject_regex.test.ts +++ b/packages/circuits/tests/forced_subject_regex.test.ts @@ -1,7 +1,9 @@ const circom_tester = require("circom_tester"); const wasm_tester = circom_tester.wasm; import * as path from "path"; -const relayerUtils = require("@zk-email/relayer-utils"); +// const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; +import { init } from "./wasm_init"; // const grumpkin = require("circom-grumpkin"); jest.setTimeout(120000); @@ -20,6 +22,7 @@ describe("Forced Subject Regex", () => { ), option ); + await init(); }); it("forced subject valid case", async () => { diff --git a/packages/circuits/tests/invitation_code_regex.test.ts b/packages/circuits/tests/invitation_code_regex.test.ts index 19f126fb..b7882e9a 100644 --- a/packages/circuits/tests/invitation_code_regex.test.ts +++ b/packages/circuits/tests/invitation_code_regex.test.ts @@ -1,7 +1,9 @@ const circom_tester = require("circom_tester"); const wasm_tester = circom_tester.wasm; import * as path from "path"; -const relayerUtils = require("@zk-email/relayer-utils"); +// const relayerUtils = require("@zk-email/relayer-utils"); +import * as relayerUtils from "@zk-email/relayer-utils"; +import { init } from "./wasm_init"; const option = { include: path.join(__dirname, "../../../node_modules"), }; @@ -9,6 +11,10 @@ const option = { // const grumpkin = require("circom-grumpkin"); jest.setTimeout(120000); describe("Invitation Code Regex", () => { + beforeAll(async () => { + await init(); + }); + it("invitation code", async () => { const codeStr = " Code 123abc"; const paddedStr = relayerUtils.padString(codeStr, 256); diff --git a/packages/circuits/tests/wasm_init.ts b/packages/circuits/tests/wasm_init.ts new file mode 100644 index 00000000..9be9c4d7 --- /dev/null +++ b/packages/circuits/tests/wasm_init.ts @@ -0,0 +1,10 @@ +import * as relayerUtils from "@zk-email/relayer-utils"; + +let inited = false; + +export async function init() { + if (!inited) { + await relayerUtils.init(); + inited = true; + } +} diff --git a/yarn.lock b/yarn.lock index 48726afa..d3f919ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -20,9 +20,9 @@ picocolors "^1.0.0" "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" - integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" + integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.5", "@babel/core@^7.23.9": version "7.26.0" @@ -45,13 +45,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" - integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== +"@babel/generator@^7.26.0", "@babel/generator@^7.26.3", "@babel/generator@^7.7.2": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== dependencies: - "@babel/parser" "^7.26.2" - "@babel/types" "^7.26.0" + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" @@ -63,14 +63,6 @@ dependencies: "@babel/types" "^7.25.9" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz#f41752fe772a578e67286e6779a68a5a92de1ee9" - integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" @@ -96,18 +88,18 @@ semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz#3e8999db94728ad2b2458d7a470e7770b7764e26" - integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw== + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz#5169756ecbe1d95f7866b90bb555b022595302a0" + integrity sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" - regexpu-core "^6.1.1" + regexpu-core "^6.2.0" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== +"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" + integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -170,14 +162,6 @@ "@babel/helper-optimise-call-expression" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-simple-access@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" - integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" @@ -218,12 +202,12 @@ "@babel/template" "^7.25.9" "@babel/types" "^7.26.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" - integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== dependencies: - "@babel/types" "^7.26.0" + "@babel/types" "^7.26.3" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" @@ -516,11 +500,10 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-exponentiation-operator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz#ece47b70d236c1d99c263a1e22b62dc20a4c8b0f" - integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA== + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" + integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-export-namespace-from@^7.25.9": @@ -584,13 +567,12 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz#d165c8c569a080baf5467bda88df6425fc060686" - integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg== + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" + integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== dependencies: - "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-simple-access" "^7.25.9" "@babel/plugin-transform-modules-systemjs@^7.25.9": version "7.25.9" @@ -795,9 +777,9 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-typescript@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz#69267905c2b33c2ac6d8fe765e9dc2ddc9df3849" - integrity sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ== + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz#3d6add9c78735623317387ee26d5ada540eee3fd" + integrity sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" "@babel/helper-create-class-features-plugin" "^7.25.9" @@ -921,9 +903,9 @@ esutils "^2.0.2" "@babel/preset-react@^7.22.0": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.25.9.tgz#5f473035dc2094bcfdbc7392d0766bd42dce173e" - integrity sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw== + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" + integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw== dependencies: "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-validator-option" "^7.25.9" @@ -960,22 +942,22 @@ "@babel/types" "^7.25.9" "@babel/traverse@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" - integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + version "7.26.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" + integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/generator" "^7.25.9" - "@babel/parser" "^7.25.9" + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" "@babel/template" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/types" "^7.26.3" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" - integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" + integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== dependencies: "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" @@ -1588,41 +1570,11 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@mapbox/node-pre-gyp@^1.0": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - "@matterlabs/zksync-contracts@^0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@matterlabs/zksync-contracts/-/zksync-contracts-0.6.1.tgz#39f061959d5890fd0043a2f1ae710f764b172230" integrity sha512-+hucLw4DhGmTmQlXOTEtpboYCaOm/X2VJcWmnW4abNcOgQXEHX+mTxQrxEfPjIZT0ZE6z5FTUrOK9+RgUZwBMQ== -"@octokit/rest@^15.9.5": - version "15.18.3" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.3.tgz#ff4ecbb784ca286c40cc1d568abceda6d99b36fc" - integrity sha512-oHABAvvC83tPIuvUfWRaw9eLThFrCxBgywl+KvEwfTFjoCrMOfEaMh0r39+Ub/EEbV345GJiMzN+zPZ4kqOvbA== - dependencies: - before-after-hook "^1.1.0" - btoa-lite "^1.0.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.0" - lodash "^4.17.4" - node-fetch "^2.1.1" - universal-user-agent "^2.0.0" - url-template "^2.0.8" - "@openzeppelin/contracts-upgradeable@^5.0.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.1.0.tgz#4d37648b7402929c53e2ff6e45749ecff91eb2b6" @@ -1732,11 +1684,11 @@ pretty-format "^29.0.0" "@types/node@*": - version "22.9.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" - integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== + version "22.10.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" + integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ== dependencies: - undici-types "~6.19.8" + undici-types "~6.20.0" "@types/stack-utils@^2.0.0": version "2.0.3" @@ -1772,14 +1724,8 @@ "@openzeppelin/contracts-upgradeable" "^5.0.0" dotenv "^16.3.1" -"@zk-email/relayer-utils@=0.3.7": - version "0.3.7" - resolved "https://registry.yarnpkg.com/@zk-email/relayer-utils/-/relayer-utils-0.3.7.tgz#a3cdcc02e3607ac2fe9a9c1d90077df702011a02" - integrity sha512-+/SYjuwO22kKp9n0syoOeRoifx7RDzZ8ycr1mAAIpEKgnySibTfGJpcFEkBTpv5eIK/a7vEev8KE6uG1Sj49EQ== - dependencies: - "@mapbox/node-pre-gyp" "^1.0" - cargo-cp-artifact "^0.1" - node-pre-gyp-github "https://github.com/ultamatt/node-pre-gyp-github.git" +"@zk-email/relayer-utils@file:../relayer-utils-1/pkg": + version "0.4.55" "@zk-email/zk-regex-circom@=2.3.1", "@zk-email/zk-regex-circom@^2.3.1": version "2.3.1" @@ -1789,30 +1735,11 @@ commander "^11.0.0" snarkjs "^0.7.5" -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -1880,19 +1807,6 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1972,12 +1886,12 @@ babel-plugin-jest-hoist@^29.6.3: "@types/babel__traverse" "^7.0.6" babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + version "0.4.12" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz#ca55bbec8ab0edeeef3d7b8ffd75322e210879a9" + integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.10.6: @@ -1989,11 +1903,11 @@ babel-plugin-polyfill-corejs3@^0.10.6: core-js-compat "^3.38.0" babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + version "0.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" + integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" babel-preset-current-node-syntax@^1.0.0: version "1.1.0" @@ -2034,11 +1948,6 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -before-after-hook@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" - integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== - bfj@^7.0.2: version "7.1.0" resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.1.0.tgz#c5177d522103f9040e1b12980fe8c38cf41d3f8b" @@ -2086,9 +1995,9 @@ bluebird@^3.7.2: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + version "4.12.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.1.tgz#215741fe3c9dba2d7e12c001d0cfdbae43975ba7" + integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg== bn.js@^5.2.1: version "5.2.1" @@ -2151,26 +2060,28 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -call-bind@^1.0.2, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== +call-bind-apply-helpers@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" + integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== dependencies: - es-define-property "^1.0.0" es-errors "^1.3.0" function-bind "^1.1.2" + +call-bind@^1.0.2, call-bind@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" get-intrinsic "^1.2.4" - set-function-length "^1.2.1" + set-function-length "^1.2.2" callsites@^3.0.0: version "3.1.0" @@ -2188,14 +2099,9 @@ camelcase@^6.0.0, camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001669: - version "1.0.30001678" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz#b930b04cd0b295136405634aa32ad540d7eeb71e" - integrity sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw== - -cargo-cp-artifact@^0.1: - version "0.1.9" - resolved "https://registry.yarnpkg.com/cargo-cp-artifact/-/cargo-cp-artifact-0.1.9.tgz#32264a0a48109e26c48da334daff9a1da9d9b7c8" - integrity sha512-6F+UYzTaGB+awsTXg0uSJA1/b/B3DDJzpKVRu0UmyI7DmNeaAl2RFHuTGIN6fEgpadRxoXGb7gbC1xo4C3IdyA== + version "1.0.30001687" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz#d0ac634d043648498eedf7a3932836beba90ebae" + integrity sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ== chai@^4.3.6, chai@^4.3.7: version "4.5.0" @@ -2250,11 +2156,6 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - ci-info@^3.2.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -2340,11 +2241,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" @@ -2360,21 +2256,11 @@ commander@^12.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== -commander@^2.17.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -2410,47 +2296,22 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.3: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.4.tgz#36d9cb36c32ae7a0df935f0191f79959962a2165" - integrity sha512-9KdyVPPtLHjPAD7tcuzSFs64UfHlLJt7U6qP4/bFVLyjLceyizj6s6jO6YBaV5d0G7g/9KnY/dOpLR4Rcg8YDg== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.5: - version "4.3.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.5: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -2487,16 +2348,6 @@ define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -detect-libc@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -2513,14 +2364,23 @@ diff@^5.2.0: integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dotenv@^16.3.1: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== "ds-test@https://github.com/dapphub/ds-test": version "1.0.0" resolved "https://github.com/dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0" +dunder-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80" + integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-errors "^1.3.0" + gopd "^1.2.0" + ejs@^3.1.10, ejs@^3.1.6: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" @@ -2529,9 +2389,9 @@ ejs@^3.1.10, ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.5.41: - version "1.5.52" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.52.tgz#2bed832c95a56a195504f918150e548474687da8" - integrity sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ== + version "1.5.72" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.72.tgz#a732805986d3a5b5fedd438ddf4616c7d78ac2df" + integrity sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw== elliptic@6.5.4: version "6.5.4" @@ -2556,13 +2416,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2570,30 +2423,16 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -2677,19 +2516,6 @@ ethers@^5.5.1: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -2843,14 +2669,7 @@ for-each@^0.3.3: "forge-std@https://github.com/foundry-rs/forge-std": version "1.9.4" - resolved "https://github.com/foundry-rs/forge-std#da591f56d8884c5824c0c1b3103fbcfd81123c4c" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" + resolved "https://github.com/foundry-rs/forge-std#d3db4ef90a72b7d24aa5a2e5c649593eaef7801d" fs.realpath@^1.0.0: version "1.0.0" @@ -2867,21 +2686,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -2897,29 +2701,25 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== +get-intrinsic@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.5.tgz#dfe7dd1b30761b464fe51bf4bb00ac7c37b681e7" + integrity sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg== dependencies: + call-bind-apply-helpers "^1.0.0" + dunder-proto "^1.0.0" + es-define-property "^1.0.1" es-errors "^1.3.0" function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -2960,12 +2760,10 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== graceful-fs@^4.2.9: version "4.2.11" @@ -2984,15 +2782,10 @@ has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" @@ -3001,11 +2794,6 @@ has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -3014,7 +2802,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasown@^2.0.0, hasown@^2.0.2: +hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -3045,30 +2833,6 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - -https-proxy-agent@^2.2.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -3184,11 +2948,6 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -3657,7 +3416,12 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsesc@^3.0.2, jsesc@~3.0.2: +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +jsesc@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== @@ -3743,7 +3507,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3775,18 +3539,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -macos-release@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.1.tgz#bccac4a8f7b93163a8d163b8ebf385b3c5f55bf9" - integrity sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A== - -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -3819,18 +3571,6 @@ micromatch@^4.0.4: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.19: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -3860,31 +3600,6 @@ minimatch@^5.0.1, minimatch@^5.1.6: dependencies: brace-expansion "^2.0.1" -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mocha@^10.2.0: version "10.8.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" @@ -3911,12 +3626,7 @@ mocha@^10.2.0: yargs-parser "^20.2.9" yargs-unparser "^2.0.0" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@^2.1.1, ms@^2.1.3: +ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3931,65 +3641,31 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - node-addon-api@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-fetch@^2.1.1, node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - node-gyp-build@^4.2.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" - integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -"node-pre-gyp-github@https://github.com/ultamatt/node-pre-gyp-github.git": - version "1.4.3" - resolved "https://github.com/ultamatt/node-pre-gyp-github.git#e4961827f77751489bc8d4760a0479f3f985f34f" - dependencies: - "@octokit/rest" "^15.9.5" - commander "^2.17.0" - mime-types "^2.1.19" - node-releases@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -3997,22 +3673,7 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -4038,19 +3699,6 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -os-name@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4111,11 +3759,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -4187,9 +3830,9 @@ prettier@^2.8.3: integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== prettier@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" @@ -4208,14 +3851,6 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -pump@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" - integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -4298,15 +3933,15 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexpu-core@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.1.1.tgz#b469b245594cb2d088ceebc6369dceb8c00becac" - integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw== +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== dependencies: regenerate "^1.4.2" regenerate-unicode-properties "^10.2.0" regjsgen "^0.8.0" - regjsparser "^0.11.0" + regjsparser "^0.12.0" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" @@ -4315,10 +3950,10 @@ regjsgen@^0.8.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== -regjsparser@^0.11.0: - version "0.11.2" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.11.2.tgz#7404ad42be00226d72bcf1f003f1f441861913d8" - integrity sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA== +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== dependencies: jsesc "~3.0.2" @@ -4350,9 +3985,9 @@ resolve-from@^5.0.0: integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== resolve@^1.14.2, resolve@^1.20.0: version "1.22.8" @@ -4363,13 +3998,6 @@ resolve@^1.14.2, resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -4380,17 +4008,12 @@ scrypt-js@3.0.1: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -semver@^5.5.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: +semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -4402,12 +4025,7 @@ serialize-javascript@^6.0.2: dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.2.1: +set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -4419,13 +4037,6 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4433,17 +4044,12 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -4557,7 +4163,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -4585,11 +4191,6 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -4620,9 +4221,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== table@^6.8.1: - version "6.8.2" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" - integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + version "6.9.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" + integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -4630,18 +4231,6 @@ table@^6.8.1: string-width "^4.2.3" strip-ansi "^6.0.1" -tar@^6.1.11: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -4680,11 +4269,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" @@ -4737,10 +4321,10 @@ underscore@1.12.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== -undici-types@~6.19.8: - version "6.19.8" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" - integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -4765,13 +4349,6 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -universal-user-agent@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.1.0.tgz#5abfbcc036a1ba490cb941f8fd68c46d3669e8e4" - integrity sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q== - dependencies: - os-name "^3.0.0" - update-browserslist-db@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" @@ -4787,11 +4364,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== - util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -4846,23 +4418,10 @@ web-worker@^1.2.0: resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA== -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-typed-array@^1.1.14, which-typed-array@^1.1.2: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + version "1.1.16" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.16.tgz#db4db429c4706feca2f01677a144278e4a8c216b" + integrity sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ== dependencies: available-typed-arrays "^1.0.7" call-bind "^1.0.7" @@ -4870,13 +4429,6 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.2: gopd "^1.0.1" has-tostringtag "^1.0.2" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -4884,20 +4436,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -windows-release@^3.1.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" - integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg== - dependencies: - execa "^1.0.0" - word-wrap@~1.2.3: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" @@ -4945,11 +4483,6 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"