Remove the local fork

"Fork Locally" ran the selected chain in the browser through
@acala-network/chopsticks-core, which brings its own @polkadot stack
(types, rpc-provider, util-crypto 13 and 14) and @polkadot/wasm-crypto
7.5.4 with the crate versions pezkuwi-wasm 7.5.21 moved off. The app
shipped that second wasm twice, next to ours, for a developer tool;
chopsticks itself stays available from the command line.

Gone: the button, the overlay, the "Local" mock-account modal and the
chopsticks account group, the fork path in the API context, and their
69 locale strings. Mock accounts a fork left in a browser's keyring are
address-only; they now show with the test accounts.

yarn.lock: 32 @polkadot and 2 @acala-network entries -> 0.
This commit is contained in:
Satoshi Qazi Muhammed authored and SatoshiQaziMuhammed committed 2026-10-12 11:20:27 +04:00
1 parent 8f49d487dc
commit b77006ccfc
20 files changed
+35 -1154

No files matched your search

-1
View File
@@ -16,7 +16,6 @@
"type": "module", "type": "module",
"version": "1.0.2-1-x", "version": "1.0.2-1-x",
"dependencies": { "dependencies": {
"@acala-network/chopsticks-core": "^1.2.1",
"@pezkuwi/apps-config": "^1.0.2-1-x", "@pezkuwi/apps-config": "^1.0.2-1-x",
"@pezkuwi/apps-routing": "^1.0.2-1-x", "@pezkuwi/apps-routing": "^1.0.2-1-x",
"@pezkuwi/dev": "^0.86.8", "@pezkuwi/dev": "^0.86.8",
@@ -46,7 +46,6 @@
"Active nominations ({{count}})": "", "Active nominations ({{count}})": "",
"Add": "", "Add": "",
"Add Bounty": "", "Add Bounty": "",
"Add a mock account to chopsticks": "",
"Add account via Ledger": "", "Add account via Ledger": "",
"Add account via Qr": "", "Add account via Qr": "",
"Add an account via seed {{step}}/{{STEPS_COUNT}}": "", "Add an account via seed {{step}}/{{STEPS_COUNT}}": "",
@@ -97,7 +96,6 @@
"Announcements ({{count}})": "", "Announcements ({{count}})": "",
"Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "", "Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "",
"Any account set as proxy will be able to perform actions in place of the proxied account": "", "Any account set as proxy will be able to perform actions in place of the proxied account": "",
"Any address, this can override other accounts": "",
"Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "", "Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "",
"Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "", "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "",
"Application of slashes from era {{id}}": "", "Application of slashes from era {{id}}": "",
@@ -319,7 +317,6 @@
"Forget": "", "Forget": "",
"Forget this account": "", "Forget this account": "",
"Forget this address": "", "Forget this address": "",
"Fork Locally": "",
"Forks": "", "Forks": "",
"Free balance": "", "Free balance": "",
"From JSON": "", "From JSON": "",
@@ -384,8 +381,6 @@
"Lifetime (# of blocks)": "", "Lifetime (# of blocks)": "",
"Light theme": "", "Light theme": "",
"Loading": "", "Loading": "",
"Local": "",
"Local fork powered by ": "",
"Locked funds (e.g. for staking) are counted.": "", "Locked funds (e.g. for staking) are counted.": "",
"Locked1x": "", "Locked1x": "",
"Locked2x": "", "Locked2x": "",
@@ -928,7 +923,6 @@
"The minimum balance allowed for the asset.": "", "The minimum balance allowed for the asset.": "",
"The minimum balance for the asset. This is specified in the units and decimals as requested.": "", "The minimum balance for the asset. This is specified in the units and decimals as requested.": "",
"The moment of enactment, either at a specific block, or after a specific number of blocks.": "", "The moment of enactment, either at a specific block, or after a specific number of blocks.": "",
"The name for this account": "",
"The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "", "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "",
"The name for this account as it will appear under your accounts.": "", "The name for this account as it will appear under your accounts.": "",
"The name for this teyrchain, the id and the allocated/requested balance.": "", "The name for this teyrchain, the id and the allocated/requested balance.": "",
@@ -1329,7 +1323,6 @@
"chain specifications": "", "chain specifications": "",
"challenge": "", "challenge": "",
"children": "", "children": "",
"chopsticks": "",
"claim to account": "", "claim to account": "",
"claimable": "", "claimable": "",
"click to copy": "", "click to copy": "",
@@ -1452,7 +1445,6 @@
"dissolve crowdloan": "", "dissolve crowdloan": "",
"do not include empty strings in the generated file": "", "do not include empty strings in the generated file": "",
"does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "", "does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "",
"e.g. 5Gg3...": "",
"ed25519, Edwards": "", "ed25519, Edwards": "",
"elapsed": "", "elapsed": "",
"elected stake": "", "elected stake": "",
@@ -1602,8 +1594,6 @@
"lifetime": "", "lifetime": "",
"link": "", "link": "",
"links": "", "links": "",
"local account name": "",
"local accounts added via chopsticks fork": "",
"lock": "", "lock": "",
"lock expired": "", "lock expired": "",
"lock periods": "", "lock periods": "",
@@ -14,7 +14,6 @@
"Account type {{index}}": "Account type {{index}}", "Account type {{index}}": "Account type {{index}}",
"Accounts injected from any of these extensions will appear in this application and be available for use. The above list is updated as more extensions with external signing capability become available.": "Accounts injected from any of these extensions will appear in this application and be available for use. The above list is updated as more extensions with external signing capability become available.", "Accounts injected from any of these extensions will appear in this application and be available for use. The above list is updated as more extensions with external signing capability become available.": "Accounts injected from any of these extensions will appear in this application and be available for use. The above list is updated as more extensions with external signing capability become available.",
"Add": "Add", "Add": "Add",
"Add a mock account to chopsticks": "Add a mock account to chopsticks",
"Add account via Ledger": "Add account via Ledger", "Add account via Ledger": "Add account via Ledger",
"Add account via Qr": "Add account via Qr", "Add account via Qr": "Add account via Qr",
"Add an account via seed {{step}}/{{STEPS_COUNT}}": "Add an account via seed {{step}}/{{STEPS_COUNT}}", "Add an account via seed {{step}}/{{STEPS_COUNT}}": "Add an account via seed {{step}}/{{STEPS_COUNT}}",
@@ -28,7 +27,6 @@
"After Asset Hub migration, all funds have been moved to Asset Hub. Please switch to the ": "After Asset Hub migration, all funds have been moved to Asset Hub. Please switch to the ", "After Asset Hub migration, all funds have been moved to Asset Hub. Please switch to the ": "After Asset Hub migration, all funds have been moved to Asset Hub. Please switch to the ",
"An encrypted backup file will be created once you have pressed the \"Download\" button. This can be used to re-import your account on any other machine.": "An encrypted backup file will be created once you have pressed the \"Download\" button. This can be used to re-import your account on any other machine.", "An encrypted backup file will be created once you have pressed the \"Download\" button. This can be used to re-import your account on any other machine.": "An encrypted backup file will be created once you have pressed the \"Download\" button. This can be used to re-import your account on any other machine.",
"Any account set as proxy will be able to perform actions in place of the proxied account": "Any account set as proxy will be able to perform actions in place of the proxied account", "Any account set as proxy will be able to perform actions in place of the proxied account": "Any account set as proxy will be able to perform actions in place of the proxied account",
"Any address, this can override other accounts": "Any address, this can override other accounts",
"Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account", "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account",
"Approve this call hash": "Approve this call hash", "Approve this call hash": "Approve this call hash",
"Asset Hub chain": "Asset Hub chain", "Asset Hub chain": "Asset Hub chain",
@@ -83,7 +81,6 @@
"It is recommended that you create/store your accounts securely and externally from the app. On {{yourBrowser}} the following browser extensions are available for use -": "It is recommended that you create/store your accounts securely and externally from the app. On {{yourBrowser}} the following browser extensions are available for use -", "It is recommended that you create/store your accounts securely and externally from the app. On {{yourBrowser}} the following browser extensions are available for use -": "It is recommended that you create/store your accounts securely and externally from the app. On {{yourBrowser}} the following browser extensions are available for use -",
"Learn more...": "Learn more...", "Learn more...": "Learn more...",
"Ledger app type (originated from)": "Ledger app type (originated from)", "Ledger app type (originated from)": "Ledger app type (originated from)",
"Local": "Local",
"Make recoverable": "Make recoverable", "Make recoverable": "Make recoverable",
"Manage delegation": "Manage delegation", "Manage delegation": "Manage delegation",
"Manage proxies": "Manage proxies", "Manage proxies": "Manage proxies",
@@ -155,7 +152,6 @@
"The helpers should be able to verify, via an off-chain mechanism, that the account owner indeed wishes to recover access and as such provide any approvals. In the cases of malicious recovery procedures, they will have the power to stop it.": "The helpers should be able to verify, via an off-chain mechanism, that the account owner indeed wishes to recover access and as such provide any approvals. In the cases of malicious recovery procedures, they will have the power to stop it.", "The helpers should be able to verify, via an off-chain mechanism, that the account owner indeed wishes to recover access and as such provide any approvals. In the cases of malicious recovery procedures, they will have the power to stop it.": "The helpers should be able to verify, via an off-chain mechanism, that the account owner indeed wishes to recover access and as such provide any approvals. In the cases of malicious recovery procedures, they will have the power to stop it.",
"The local name for this account. Changing this does not affect your on-line identity, so this is only used to indicate the name of the account locally.": "The local name for this account. Changing this does not affect your on-line identity, so this is only used to indicate the name of the account locally.", "The local name for this account. Changing this does not affect your on-line identity, so this is only used to indicate the name of the account locally.": "The local name for this account. Changing this does not affect your on-line identity, so this is only used to indicate the name of the account locally.",
"The maximum amount you can delegate is the amount of funds available on the delegating account.": "The maximum amount you can delegate is the amount of funds available on the delegating account.", "The maximum amount you can delegate is the amount of funds available on the delegating account.": "The maximum amount you can delegate is the amount of funds available on the delegating account.",
"The name for this account": "The name for this account",
"The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.", "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.",
"The name for this account as it will appear under your accounts.": "The name for this account as it will appear under your accounts.", "The name for this account as it will appear under your accounts.": "The name for this account as it will appear under your accounts.",
"The name is for unique identification of the account in your owner lists.": "The name is for unique identification of the account in your owner lists.", "The name is for unique identification of the account in your owner lists.": "The name is for unique identification of the account in your owner lists.",
@@ -225,7 +221,6 @@
"bonded": "bonded", "bonded": "bonded",
"call data for final approval": "call data for final approval", "call data for final approval": "call data for final approval",
"case sensitive": "case sensitive", "case sensitive": "case sensitive",
"chopsticks": "chopsticks",
"conviction": "conviction", "conviction": "conviction",
"created account": "created account", "created account": "created account",
"created multisig": "created multisig", "created multisig": "created multisig",
@@ -243,7 +238,6 @@
"development seed": "development seed", "development seed": "development seed",
"discord": "discord", "discord": "discord",
"display name": "display name", "display name": "display name",
"e.g. 5Gg3...": "e.g. 5Gg3...",
"email": "email", "email": "email",
"ethereum private key": "ethereum private key", "ethereum private key": "ethereum private key",
"export all accounts": "export all accounts", "export all accounts": "export all accounts",
@@ -257,8 +251,6 @@
"keypair crypto type": "keypair crypto type", "keypair crypto type": "keypair crypto type",
"keypair type": "keypair type", "keypair type": "keypair type",
"legal name": "legal name", "legal name": "legal name",
"local account name": "local account name",
"local accounts added via chopsticks fork": "local accounts added via chopsticks fork",
"matches": "matches", "matches": "matches",
"matrix name": "matrix name", "matrix name": "matrix name",
"mnemonic": "mnemonic", "mnemonic": "mnemonic",
@@ -2,10 +2,8 @@
"Accounts": "Accounts", "Accounts": "Accounts",
"Developer": "Developer", "Developer": "Developer",
"Files": "Files", "Files": "Files",
"Fork Locally": "Fork Locally",
"Governance": "Governance", "Governance": "Governance",
"Initializing connection": "Initializing connection", "Initializing connection": "Initializing connection",
"Local fork powered by ": "Local fork powered by ",
"Network": "Network", "Network": "Network",
"Relay chain": "Relay chain", "Relay chain": "Relay chain",
"Settings": "Settings", "Settings": "Settings",
@@ -46,7 +46,6 @@
"Active nominations ({{count}})": "", "Active nominations ({{count}})": "",
"Add": "", "Add": "",
"Add Bounty": "", "Add Bounty": "",
"Add a mock account to chopsticks": "",
"Add account via Ledger": "", "Add account via Ledger": "",
"Add account via Qr": "", "Add account via Qr": "",
"Add an account via seed {{step}}/{{STEPS_COUNT}}": "", "Add an account via seed {{step}}/{{STEPS_COUNT}}": "",
@@ -97,7 +96,6 @@
"Announcements ({{count}})": "", "Announcements ({{count}})": "",
"Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "", "Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "",
"Any account set as proxy will be able to perform actions in place of the proxied account": "", "Any account set as proxy will be able to perform actions in place of the proxied account": "",
"Any address, this can override other accounts": "",
"Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "", "Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "",
"Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "", "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "",
"Application of slashes from era {{id}}": "", "Application of slashes from era {{id}}": "",
@@ -319,7 +317,6 @@
"Forget": "", "Forget": "",
"Forget this account": "", "Forget this account": "",
"Forget this address": "", "Forget this address": "",
"Fork Locally": "",
"Forks": "", "Forks": "",
"Free balance": "", "Free balance": "",
"From JSON": "", "From JSON": "",
@@ -384,8 +381,6 @@
"Lifetime (# of blocks)": "", "Lifetime (# of blocks)": "",
"Light theme": "", "Light theme": "",
"Loading": "", "Loading": "",
"Local": "",
"Local fork powered by ": "",
"Locked funds (e.g. for staking) are counted.": "", "Locked funds (e.g. for staking) are counted.": "",
"Locked1x": "", "Locked1x": "",
"Locked2x": "", "Locked2x": "",
@@ -928,7 +923,6 @@
"The minimum balance allowed for the asset.": "", "The minimum balance allowed for the asset.": "",
"The minimum balance for the asset. This is specified in the units and decimals as requested.": "", "The minimum balance for the asset. This is specified in the units and decimals as requested.": "",
"The moment of enactment, either at a specific block, or after a specific number of blocks.": "", "The moment of enactment, either at a specific block, or after a specific number of blocks.": "",
"The name for this account": "",
"The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "", "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "",
"The name for this account as it will appear under your accounts.": "", "The name for this account as it will appear under your accounts.": "",
"The name for this teyrchain, the id and the allocated/requested balance.": "", "The name for this teyrchain, the id and the allocated/requested balance.": "",
@@ -1329,7 +1323,6 @@
"chain specifications": "", "chain specifications": "",
"challenge": "", "challenge": "",
"children": "", "children": "",
"chopsticks": "",
"claim to account": "", "claim to account": "",
"claimable": "", "claimable": "",
"click to copy": "", "click to copy": "",
@@ -1452,7 +1445,6 @@
"dissolve crowdloan": "", "dissolve crowdloan": "",
"do not include empty strings in the generated file": "", "do not include empty strings in the generated file": "",
"does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "", "does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "",
"e.g. 5Gg3...": "",
"ed25519, Edwards": "", "ed25519, Edwards": "",
"elapsed": "", "elapsed": "",
"elected stake": "", "elected stake": "",
@@ -1602,8 +1594,6 @@
"lifetime": "", "lifetime": "",
"link": "", "link": "",
"links": "", "links": "",
"local account name": "",
"local accounts added via chopsticks fork": "",
"lock": "", "lock": "",
"lock expired": "", "lock expired": "",
"lock periods": "", "lock periods": "",
@@ -46,7 +46,6 @@
"Active nominations ({{count}})": "", "Active nominations ({{count}})": "",
"Add": "", "Add": "",
"Add Bounty": "", "Add Bounty": "",
"Add a mock account to chopsticks": "",
"Add account via Ledger": "", "Add account via Ledger": "",
"Add account via Qr": "", "Add account via Qr": "",
"Add an account via seed {{step}}/{{STEPS_COUNT}}": "", "Add an account via seed {{step}}/{{STEPS_COUNT}}": "",
@@ -97,7 +96,6 @@
"Announcements ({{count}})": "", "Announcements ({{count}})": "",
"Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "", "Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "",
"Any account set as proxy will be able to perform actions in place of the proxied account": "", "Any account set as proxy will be able to perform actions in place of the proxied account": "",
"Any address, this can override other accounts": "",
"Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "", "Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "",
"Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "", "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "",
"Application of slashes from era {{id}}": "", "Application of slashes from era {{id}}": "",
@@ -319,7 +317,6 @@
"Forget": "", "Forget": "",
"Forget this account": "", "Forget this account": "",
"Forget this address": "", "Forget this address": "",
"Fork Locally": "",
"Forks": "", "Forks": "",
"Free balance": "", "Free balance": "",
"From JSON": "", "From JSON": "",
@@ -384,8 +381,6 @@
"Lifetime (# of blocks)": "", "Lifetime (# of blocks)": "",
"Light theme": "", "Light theme": "",
"Loading": "", "Loading": "",
"Local": "",
"Local fork powered by ": "",
"Locked funds (e.g. for staking) are counted.": "", "Locked funds (e.g. for staking) are counted.": "",
"Locked1x": "", "Locked1x": "",
"Locked2x": "", "Locked2x": "",
@@ -928,7 +923,6 @@
"The minimum balance allowed for the asset.": "", "The minimum balance allowed for the asset.": "",
"The minimum balance for the asset. This is specified in the units and decimals as requested.": "", "The minimum balance for the asset. This is specified in the units and decimals as requested.": "",
"The moment of enactment, either at a specific block, or after a specific number of blocks.": "", "The moment of enactment, either at a specific block, or after a specific number of blocks.": "",
"The name for this account": "",
"The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "", "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "",
"The name for this account as it will appear under your accounts.": "", "The name for this account as it will appear under your accounts.": "",
"The name for this teyrchain, the id and the allocated/requested balance.": "", "The name for this teyrchain, the id and the allocated/requested balance.": "",
@@ -1329,7 +1323,6 @@
"chain specifications": "", "chain specifications": "",
"challenge": "", "challenge": "",
"children": "", "children": "",
"chopsticks": "",
"claim to account": "", "claim to account": "",
"claimable": "", "claimable": "",
"click to copy": "", "click to copy": "",
@@ -1452,7 +1445,6 @@
"dissolve crowdloan": "", "dissolve crowdloan": "",
"do not include empty strings in the generated file": "", "do not include empty strings in the generated file": "",
"does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "", "does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "",
"e.g. 5Gg3...": "",
"ed25519, Edwards": "", "ed25519, Edwards": "",
"elapsed": "", "elapsed": "",
"elected stake": "", "elected stake": "",
@@ -1602,8 +1594,6 @@
"lifetime": "", "lifetime": "",
"link": "", "link": "",
"links": "", "links": "",
"local account name": "",
"local accounts added via chopsticks fork": "",
"lock": "", "lock": "",
"lock expired": "", "lock expired": "",
"lock periods": "", "lock periods": "",
@@ -41,7 +41,6 @@
"Accounts injected from any of these extensions will appear in this application and be available for use. The above list is updated as more extensions with external signing capability become available.": "Akun terinjeksi dari salah satu eksistensi ini akan muncul di aplikasi dan dapat digunakan. Daftar diatas diperbaharui karena lebih banyak ekstensi dengan tersedia kemampuan penandangan eksternal.", "Accounts injected from any of these extensions will appear in this application and be available for use. The above list is updated as more extensions with external signing capability become available.": "Akun terinjeksi dari salah satu eksistensi ini akan muncul di aplikasi dan dapat digunakan. Daftar diatas diperbaharui karena lebih banyak ekstensi dengan tersedia kemampuan penandangan eksternal.",
"Active nominations ({{count}})": "Nominasi aktif ({{count}})", "Active nominations ({{count}})": "Nominasi aktif ({{count}})",
"Add": "Tambahkan", "Add": "Tambahkan",
"Add a mock account to chopsticks": "Tambahkan akun tiruan ke sumpit",
"Add a tip to this extrinsic, paying the block author for greater priority": "Tambahkan tip ke ekstrinsik ini, membayar penulis blok untuk prioritas yang lebih besar", "Add a tip to this extrinsic, paying the block author for greater priority": "Tambahkan tip ke ekstrinsik ini, membayar penulis blok untuk prioritas yang lebih besar",
"Add account": "Tambahkan akun", "Add account": "Tambahkan akun",
"Add account via Ledger": "Tambah akun melalui Ledger", "Add account via Ledger": "Tambah akun melalui Ledger",
@@ -77,7 +76,6 @@
"An encrypted backup file will be created once you have pressed the \"Download\" button. This can be used to re-import your account on any other machine.": "File cadangan terenkripsi akan dibuat setelah Anda menekan tombol \"Unduh\". Ini dapat digunakan untuk mengimpor ulang akun anda di mesin mana pun.", "An encrypted backup file will be created once you have pressed the \"Download\" button. This can be used to re-import your account on any other machine.": "File cadangan terenkripsi akan dibuat setelah Anda menekan tombol \"Unduh\". Ini dapat digunakan untuk mengimpor ulang akun anda di mesin mana pun.",
"Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "Akun apa pun dapat meminta pembayaran untuk pemegang taruhan, ini tidak terbatas pada akun yang akan diberi hadiah.", "Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "Akun apa pun dapat meminta pembayaran untuk pemegang taruhan, ini tidak terbatas pada akun yang akan diberi hadiah.",
"Any account set as proxy will be able to perform actions in place of the proxied account": "Setiap akun yang ditetapkan sebagai proxy akan dapat melakukan tindakan sebagai pengganti akun yang diproksikan", "Any account set as proxy will be able to perform actions in place of the proxied account": "Setiap akun yang ditetapkan sebagai proxy akan dapat melakukan tindakan sebagai pengganti akun yang diproksikan",
"Any address, this can override other accounts": "Alamat mana pun, ini dapat menggantikan akun lain.",
"Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "Kombinasi dari keempat opsi tersebut dapat disetujui oleh pemilih. Tidak perlu hanya memilih satu opsi!", "Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "Kombinasi dari keempat opsi tersebut dapat disetujui oleh pemilih. Tidak perlu hanya memilih satu opsi!",
"Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "Setiap pemungutan suara demokrasi yang dilakukan oleh akun yang didelegasikan akan menghasilkan suara tambahan dari akun yang didelegasikan", "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "Setiap pemungutan suara demokrasi yang dilakukan oleh akun yang didelegasikan akan menghasilkan suara tambahan dari akun yang didelegasikan",
"Application of slashes from era {{id}}": "Penerapan slash dari era {{id}}", "Application of slashes from era {{id}}": "Penerapan slash dari era {{id}}",
@@ -287,7 +285,6 @@
"Lifetime (# of blocks)": "Usia (# pada blok)", "Lifetime (# of blocks)": "Usia (# pada blok)",
"Light theme (default)": "Tema Terang (default)", "Light theme (default)": "Tema Terang (default)",
"Loading": "Memuat", "Loading": "Memuat",
"Local": "Lokal",
"Locked funds (e.g. for staking) are counted.": "Dana yang terkunci (misalnya untuk staking) dihitung.", "Locked funds (e.g. for staking) are counted.": "Dana yang terkunci (misalnya untuk staking) dihitung.",
"Locked1x": "Kunci1x", "Locked1x": "Kunci1x",
"Locked2x": "Kunci2x", "Locked2x": "Kunci2x",
@@ -762,7 +759,6 @@
"The minimum number of committee votes required to approve this motion": "Jumlah minimum suara komite yang diperlukan untuk menyetujui mosi ini", "The minimum number of committee votes required to approve this motion": "Jumlah minimum suara komite yang diperlukan untuk menyetujui mosi ini",
"The minimum number of council votes required to approve this motion": "Jumlah minimum suara dewan yang diperlukan untuk menyetujui mosi ini", "The minimum number of council votes required to approve this motion": "Jumlah minimum suara dewan yang diperlukan untuk menyetujui mosi ini",
"The multisig signatory for this transaction.": "Penandatangan multisig untuk transaksi ini.", "The multisig signatory for this transaction.": "Penandatangan multisig untuk transaksi ini.",
"The name for this account": "Nama untuk akun ini",
"The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "Nama untuk akun ini dan tampilannya di bawah alamat anda. Dengan identitas on-chain, itu dapat tersedia untuk yang lain.", "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "Nama untuk akun ini dan tampilannya di bawah alamat anda. Dengan identitas on-chain, itu dapat tersedia untuk yang lain.",
"The name for this account as it will appear under your accounts.": "Nama untuk akun ini seperti yang akan muncul di bawah akun Anda.", "The name for this account as it will appear under your accounts.": "Nama untuk akun ini seperti yang akan muncul di bawah akun Anda.",
"The name is for unique identification of the account in your owner lists.": "Nama ini untuk identifikasi akun unik dalam daftar pemilik anda.", "The name is for unique identification of the account in your owner lists.": "Nama ini untuk identifikasi akun unik dalam daftar pemilik anda.",
@@ -1063,7 +1059,6 @@
"candidates": "kandidat", "candidates": "kandidat",
"case sensitive": "kepekaan kapital", "case sensitive": "kepekaan kapital",
"challenge": "tantangan", "challenge": "tantangan",
"chopsticks": "sumpit",
"claim to account": "klaim kepada akun", "claim to account": "klaim kepada akun",
"click to copy": "klik untuk salin", "click to copy": "klik untuk salin",
"click to select or drag and drop a JSON ABI file": "klik untuk memilih atau drag dan drop berkas JSON ABI", "click to select or drag and drop a JSON ABI file": "klik untuk memilih atau drag dan drop berkas JSON ABI",
@@ -1122,7 +1117,6 @@
"display name": "nama tampilan", "display name": "nama tampilan",
"do not include empty strings in the generated file": "jangan menyertakan string kosong di file yang dihasilkan", "do not include empty strings in the generated file": "jangan menyertakan string kosong di file yang dihasilkan",
"does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "tampaknya tidak memiliki klaim yang valid. Harap periksa kembali apakah anda telah menandatangani transaksi dengan benar di akun ETH yang benar.", "does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "tampaknya tidak memiliki klaim yang valid. Harap periksa kembali apakah anda telah menandatangani transaksi dengan benar di akun ETH yang benar.",
"e.g. 5Gg3...": "cth. 5Gg3...",
"ed25519, Edwards": "ed25519, Edwards", "ed25519, Edwards": "ed25519, Edwards",
"elected stake": "stake terpilih", "elected stake": "stake terpilih",
"email": "email", "email": "email",
@@ -1192,8 +1186,6 @@
"legal name": "nama resmi", "legal name": "nama resmi",
"lifetime": "seumur hidup", "lifetime": "seumur hidup",
"lng.detect": "Default bahasa browser (otomatis-deteksi)", "lng.detect": "Default bahasa browser (otomatis-deteksi)",
"local account name": "nama akun lokal",
"local accounts added via chopsticks fork": "akun lokal ditambahkan melalui fork chopsticks",
"lock expired": "kunci kadaluarsa", "lock expired": "kunci kadaluarsa",
"locked": "terkunci", "locked": "terkunci",
"locked balance": "kunci saldo", "locked balance": "kunci saldo",
@@ -46,7 +46,6 @@
"Active nominations ({{count}})": "", "Active nominations ({{count}})": "",
"Add": "", "Add": "",
"Add Bounty": "", "Add Bounty": "",
"Add a mock account to chopsticks": "",
"Add account via Ledger": "", "Add account via Ledger": "",
"Add account via Qr": "", "Add account via Qr": "",
"Add an account via seed {{step}}/{{STEPS_COUNT}}": "", "Add an account via seed {{step}}/{{STEPS_COUNT}}": "",
@@ -97,7 +96,6 @@
"Announcements ({{count}})": "", "Announcements ({{count}})": "",
"Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "", "Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "",
"Any account set as proxy will be able to perform actions in place of the proxied account": "", "Any account set as proxy will be able to perform actions in place of the proxied account": "",
"Any address, this can override other accounts": "",
"Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "", "Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "",
"Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "", "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "",
"Application of slashes from era {{id}}": "", "Application of slashes from era {{id}}": "",
@@ -319,7 +317,6 @@
"Forget": "", "Forget": "",
"Forget this account": "", "Forget this account": "",
"Forget this address": "", "Forget this address": "",
"Fork Locally": "",
"Forks": "", "Forks": "",
"Free balance": "", "Free balance": "",
"From JSON": "", "From JSON": "",
@@ -384,8 +381,6 @@
"Lifetime (# of blocks)": "", "Lifetime (# of blocks)": "",
"Light theme": "", "Light theme": "",
"Loading": "", "Loading": "",
"Local": "",
"Local fork powered by ": "",
"Locked funds (e.g. for staking) are counted.": "", "Locked funds (e.g. for staking) are counted.": "",
"Locked1x": "", "Locked1x": "",
"Locked2x": "", "Locked2x": "",
@@ -928,7 +923,6 @@
"The minimum balance allowed for the asset.": "", "The minimum balance allowed for the asset.": "",
"The minimum balance for the asset. This is specified in the units and decimals as requested.": "", "The minimum balance for the asset. This is specified in the units and decimals as requested.": "",
"The moment of enactment, either at a specific block, or after a specific number of blocks.": "", "The moment of enactment, either at a specific block, or after a specific number of blocks.": "",
"The name for this account": "",
"The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "", "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "",
"The name for this account as it will appear under your accounts.": "", "The name for this account as it will appear under your accounts.": "",
"The name for this teyrchain, the id and the allocated/requested balance.": "", "The name for this teyrchain, the id and the allocated/requested balance.": "",
@@ -1329,7 +1323,6 @@
"chain specifications": "", "chain specifications": "",
"challenge": "", "challenge": "",
"children": "", "children": "",
"chopsticks": "",
"claim to account": "", "claim to account": "",
"claimable": "", "claimable": "",
"click to copy": "", "click to copy": "",
@@ -1452,7 +1445,6 @@
"dissolve crowdloan": "", "dissolve crowdloan": "",
"do not include empty strings in the generated file": "", "do not include empty strings in the generated file": "",
"does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "", "does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "",
"e.g. 5Gg3...": "",
"ed25519, Edwards": "", "ed25519, Edwards": "",
"elapsed": "", "elapsed": "",
"elected stake": "", "elected stake": "",
@@ -1602,8 +1594,6 @@
"lifetime": "", "lifetime": "",
"link": "", "link": "",
"links": "", "links": "",
"local account name": "",
"local accounts added via chopsticks fork": "",
"lock": "", "lock": "",
"lock expired": "", "lock expired": "",
"lock periods": "", "lock periods": "",
@@ -46,7 +46,6 @@
"Active nominations ({{count}})": "", "Active nominations ({{count}})": "",
"Add": "", "Add": "",
"Add Bounty": "", "Add Bounty": "",
"Add a mock account to chopsticks": "",
"Add account via Ledger": "", "Add account via Ledger": "",
"Add account via Qr": "", "Add account via Qr": "",
"Add an account via seed {{step}}/{{STEPS_COUNT}}": "", "Add an account via seed {{step}}/{{STEPS_COUNT}}": "",
@@ -97,7 +96,6 @@
"Announcements ({{count}})": "", "Announcements ({{count}})": "",
"Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "", "Any account can request payout for stakers, this is not limited to accounts that will be rewarded.": "",
"Any account set as proxy will be able to perform actions in place of the proxied account": "", "Any account set as proxy will be able to perform actions in place of the proxied account": "",
"Any address, this can override other accounts": "",
"Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "", "Any combination of the four options may be approved of by the voter. There is no need to select only one option!": "",
"Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "", "Any democracy vote performed by the delegated account will result in an additional vote from the delegating account": "",
"Application of slashes from era {{id}}": "", "Application of slashes from era {{id}}": "",
@@ -319,7 +317,6 @@
"Forget": "", "Forget": "",
"Forget this account": "", "Forget this account": "",
"Forget this address": "", "Forget this address": "",
"Fork Locally": "",
"Forks": "", "Forks": "",
"Free balance": "", "Free balance": "",
"From JSON": "", "From JSON": "",
@@ -384,8 +381,6 @@
"Lifetime (# of blocks)": "", "Lifetime (# of blocks)": "",
"Light theme": "", "Light theme": "",
"Loading": "", "Loading": "",
"Local": "",
"Local fork powered by ": "",
"Locked funds (e.g. for staking) are counted.": "", "Locked funds (e.g. for staking) are counted.": "",
"Locked1x": "", "Locked1x": "",
"Locked2x": "", "Locked2x": "",
@@ -928,7 +923,6 @@
"The minimum balance allowed for the asset.": "", "The minimum balance allowed for the asset.": "",
"The minimum balance for the asset. This is specified in the units and decimals as requested.": "", "The minimum balance for the asset. This is specified in the units and decimals as requested.": "",
"The moment of enactment, either at a specific block, or after a specific number of blocks.": "", "The moment of enactment, either at a specific block, or after a specific number of blocks.": "",
"The name for this account": "",
"The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "", "The name for this account and how it will appear under your addresses. With an on-chain identity, it can be made available to others.": "",
"The name for this account as it will appear under your accounts.": "", "The name for this account as it will appear under your accounts.": "",
"The name for this teyrchain, the id and the allocated/requested balance.": "", "The name for this teyrchain, the id and the allocated/requested balance.": "",
@@ -1329,7 +1323,6 @@
"chain specifications": "", "chain specifications": "",
"challenge": "", "challenge": "",
"children": "", "children": "",
"chopsticks": "",
"claim to account": "", "claim to account": "",
"claimable": "", "claimable": "",
"click to copy": "", "click to copy": "",
@@ -1452,7 +1445,6 @@
"dissolve crowdloan": "", "dissolve crowdloan": "",
"do not include empty strings in the generated file": "", "do not include empty strings in the generated file": "",
"does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "", "does not appear to have a valid claim. Please double check that you have signed the transaction correctly on the correct ETH account.": "",
"e.g. 5Gg3...": "",
"ed25519, Edwards": "", "ed25519, Edwards": "",
"elapsed": "", "elapsed": "",
"elected stake": "", "elected stake": "",
@@ -1602,8 +1594,6 @@
"lifetime": "", "lifetime": "",
"link": "", "link": "",
"links": "", "links": "",
"local account name": "",
"local accounts added via chopsticks fork": "",
"lock": "", "lock": "",
"lock expired": "", "lock expired": "",
"lock periods": "", "lock periods": "",
@@ -219,7 +219,6 @@
"Forget this asset": "忘记这个资产", "Forget this asset": "忘记这个资产",
"Forget this code hash": "忘记这个代码哈希", "Forget this code hash": "忘记这个代码哈希",
"Forget this contract": "忘记该合约", "Forget this contract": "忘记该合约",
"Fork Locally": "本地分叉",
"Forks": "(Forks)分叉", "Forks": "(Forks)分叉",
"Full Legal Name": "法定全称", "Full Legal Name": "法定全称",
"Future versions of the web-only interface will drop support for non-external accounts, much like the IPFS version.": "未来版本的纯 web 界面将不再支持非外部帐户,这与 IPFS 版本非常相似。", "Future versions of the web-only interface will drop support for non-external accounts, much like the IPFS version.": "未来版本的纯 web 界面将不再支持非外部帐户,这与 IPFS 版本非常相似。",
+12 -62
View File
@@ -164,31 +164,11 @@ function loadAffinities (groups: Group[]): Record<string, string> {
}), {}); }), {});
} }
function isSwitchDisabled (hasUrlChanged: boolean, apiUrl: string, isUrlValid: boolean, isLocalFork?: boolean): boolean { function isSwitchDisabled (hasUrlChanged: boolean, apiUrl: string, isUrlValid: boolean): boolean {
if (!hasUrlChanged) { if (!hasUrlChanged) {
if (isLocalFork) {
return false;
} else {
return true;
}
} else if (apiUrl.startsWith('light://')) {
return false;
} else if (isUrlValid) {
return false;
}
return true;
}
function isLocalForkDisabled (hasUrlChanged: boolean, apiUrl: string, isUrlValid: boolean, isLocalFork?: boolean): boolean {
if (!hasUrlChanged) {
if (isLocalFork) {
return true;
} else {
return false;
}
} else if (apiUrl.startsWith('light://')) {
return true; return true;
} else if (apiUrl.startsWith('light://')) {
return false;
} else if (isUrlValid) { } else if (isUrlValid) {
return false; return false;
} }
@@ -199,7 +179,7 @@ function isLocalForkDisabled (hasUrlChanged: boolean, apiUrl: string, isUrlValid
function Endpoints ({ className = '', offset, onClose }: Props): React.ReactElement<Props> { function Endpoints ({ className = '', offset, onClose }: Props): React.ReactElement<Props> {
const { t } = useTranslation(); const { t } = useTranslation();
const linkOptions = createWsEndpoints(t); const linkOptions = createWsEndpoints(t);
const { apiEndpoint, isLocalFork } = useApi(); const { apiEndpoint } = useApi();
const [favoriteChains, setFavoriteChains] = useState(() => getFavoriteChains()); const [favoriteChains, setFavoriteChains] = useState(() => getFavoriteChains());
const [groups, setGroups] = useState(() => combineEndpoints(linkOptions)); const [groups, setGroups] = useState(() => combineEndpoints(linkOptions));
const [{ apiUrl, groupIndex, hasUrlChanged, isUrlValid }, setApiUrl] = useState<UrlState>(() => extractUrlState(settings.get().apiUrl, groups)); const [{ apiUrl, groupIndex, hasUrlChanged, isUrlValid }, setApiUrl] = useState<UrlState>(() => extractUrlState(settings.get().apiUrl, groups));
@@ -297,22 +277,6 @@ function Endpoints ({ className = '', offset, onClose }: Props): React.ReactElem
const _onApply = useCallback( const _onApply = useCallback(
(): void => { (): void => {
store.set('localFork', '');
settings.set({ ...(settings.get()), apiUrl });
window.location.assign(`${window.location.origin}${window.location.pathname}?rpc=${encodeURIComponent(apiUrl)}${window.location.hash}`);
if (!hasUrlChanged) {
window.location.reload();
}
onClose();
},
[apiUrl, onClose, hasUrlChanged]
);
const _onLocalFork = useCallback(
(): void => {
store.set('localFork', apiUrl);
settings.set({ ...(settings.get()), apiUrl }); settings.set({ ...(settings.get()), apiUrl });
window.location.assign(`${window.location.origin}${window.location.pathname}?rpc=${encodeURIComponent(apiUrl)}${window.location.hash}`); window.location.assign(`${window.location.origin}${window.location.pathname}?rpc=${encodeURIComponent(apiUrl)}${window.location.hash}`);
@@ -339,33 +303,19 @@ function Endpoints ({ className = '', offset, onClose }: Props): React.ReactElem
); );
const canSwitch = useMemo( const canSwitch = useMemo(
() => isSwitchDisabled(hasUrlChanged, apiUrl, isUrlValid, isLocalFork), () => isSwitchDisabled(hasUrlChanged, apiUrl, isUrlValid),
[hasUrlChanged, apiUrl, isUrlValid, isLocalFork] [hasUrlChanged, apiUrl, isUrlValid]
);
const canLocalFork = useMemo(
() => isLocalForkDisabled(hasUrlChanged, apiUrl, isUrlValid, isLocalFork),
[hasUrlChanged, apiUrl, isUrlValid, isLocalFork]
); );
return ( return (
<StyledSidebar <StyledSidebar
buttons={ buttons={
<> <Button
<Button icon='sync'
icon='code-fork' isDisabled={canSwitch}
isDisabled={canLocalFork} label={t('Switch')}
label={t('Fork Locally')} onClick={_onApply}
onClick={_onLocalFork} />
tooltip='fork-locally-btn'
/>
<Button
icon='sync'
isDisabled={canSwitch}
label={t('Switch')}
onClick={_onApply}
/>
</>
} }
className={className} className={className}
offset={offset} offset={offset}
-2
View File
@@ -6,7 +6,6 @@ import React from 'react';
import { styled } from '@pezkuwi/react-components'; import { styled } from '@pezkuwi/react-components';
import DotApps from './DotApps.js'; import DotApps from './DotApps.js';
import LocalFork from './LocalFork.js';
interface Props { interface Props {
className?: string; className?: string;
@@ -15,7 +14,6 @@ interface Props {
function Bottom ({ className }: Props): React.ReactElement<Props> | null { function Bottom ({ className }: Props): React.ReactElement<Props> | null {
return ( return (
<StyledDiv className={className}> <StyledDiv className={className}>
<LocalFork />
<DotApps /> <DotApps />
</StyledDiv> </StyledDiv>
); );
-46
View File
@@ -1,46 +0,0 @@
// Copyright 2017-2026 @pezkuwi/apps authors & contributors
// SPDX-License-Identifier: Apache-2.0
import React from 'react';
import { useApi } from '@pezkuwi/react-hooks';
import { useTranslation } from '../translate.js';
import BaseOverlay from './Base.js';
interface Props {
className?: string;
}
function LocalFork ({ className }: Props): React.ReactElement<Props> | null {
const { t } = useTranslation();
const { isLocalFork } = useApi();
if (isLocalFork) {
return (
<BaseOverlay
className={className}
icon='link'
isBottom
isFull
type='info'
>
<div>
{t('Local fork powered by ')}
<a
href='https://github.com/AcalaNetwork/chopsticks'
rel='noreferrer'
target='_blank'
>
Chopsticks
</a>
.
</div>
</BaseOverlay>
);
}
return null;
}
export default React.memo(LocalFork);
+7 -23
View File
@@ -21,7 +21,6 @@ import ExportAll from '../modals/ExportAll.js';
import ImportModal from '../modals/Import.js'; import ImportModal from '../modals/Import.js';
import ImportAll from '../modals/ImportAll.js'; import ImportAll from '../modals/ImportAll.js';
import Ledger from '../modals/Ledger.js'; import Ledger from '../modals/Ledger.js';
import Local from '../modals/LocalAdd.js';
import Multisig from '../modals/MultisigCreate.js'; import Multisig from '../modals/MultisigCreate.js';
import Proxy from '../modals/ProxiedAdd.js'; import Proxy from '../modals/ProxiedAdd.js';
import Qr from '../modals/Qr.js'; import Qr from '../modals/Qr.js';
@@ -48,18 +47,17 @@ interface SortControls {
sortFromMax: boolean; sortFromMax: boolean;
} }
type GroupName = 'accounts' | 'chopsticks' | 'hardware' | 'injected' | 'multisig' | 'proxied' | 'qr' | 'testing'; type GroupName = 'accounts' | 'hardware' | 'injected' | 'multisig' | 'proxied' | 'qr' | 'testing';
const DEFAULT_SORT_CONTROLS: SortControls = { sortBy: 'date', sortFromMax: true }; const DEFAULT_SORT_CONTROLS: SortControls = { sortBy: 'date', sortFromMax: true };
const STORE_FAVS = 'accounts:favorites'; const STORE_FAVS = 'accounts:favorites';
const GROUP_ORDER: GroupName[] = ['accounts', 'injected', 'qr', 'hardware', 'proxied', 'multisig', 'testing', 'chopsticks']; const GROUP_ORDER: GroupName[] = ['accounts', 'injected', 'qr', 'hardware', 'proxied', 'multisig', 'testing'];
function groupAccounts (accounts: SortedAccount[]): Record<GroupName, string[]> { function groupAccounts (accounts: SortedAccount[]): Record<GroupName, string[]> {
const ret: Record<GroupName, string[]> = { const ret: Record<GroupName, string[]> = {
accounts: [], accounts: [],
chopsticks: [],
hardware: [], hardware: [],
injected: [], injected: [],
multisig: [], multisig: [],
@@ -74,7 +72,10 @@ function groupAccounts (accounts: SortedAccount[]): Record<GroupName, string[]>
if (account?.meta.isHardware) { if (account?.meta.isHardware) {
ret.hardware.push(address); ret.hardware.push(address);
} else if (account?.meta.isTesting) { } else if (account?.meta.isTesting || account?.meta.isLocal) {
// isLocal: address-only mock accounts from the local fork, removed in
// 2026-10. They never could sign outside a fork, so they sit with the
// test accounts.
ret.testing.push(address); ret.testing.push(address);
} else if (cryptoType === 'injected') { } else if (cryptoType === 'injected') {
ret.injected.push(address); ret.injected.push(address);
@@ -82,8 +83,6 @@ function groupAccounts (accounts: SortedAccount[]): Record<GroupName, string[]>
ret.multisig.push(address); ret.multisig.push(address);
} else if (cryptoType === 'proxied') { } else if (cryptoType === 'proxied') {
ret.proxied.push(address); ret.proxied.push(address);
} else if (cryptoType === 'chopsticks') {
ret.chopsticks.push(address);
} else if (cryptoType === 'qr') { } else if (cryptoType === 'qr') {
ret.qr.push(address); ret.qr.push(address);
} else { } else {
@@ -96,7 +95,7 @@ function groupAccounts (accounts: SortedAccount[]): Record<GroupName, string[]>
function Overview ({ className = '', onStatusChange }: Props): React.ReactElement<Props> { function Overview ({ className = '', onStatusChange }: Props): React.ReactElement<Props> {
const { t } = useTranslation(); const { t } = useTranslation();
const { api, fork } = useApi(); const { api } = useApi();
const { allAccounts, hasAccounts } = useAccounts(); const { allAccounts, hasAccounts } = useAccounts();
const { isIpfs } = useIpfs(); const { isIpfs } = useIpfs();
const { isLedgerEnabled } = useLedger(); const { isLedgerEnabled } = useLedger();
@@ -105,7 +104,6 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen
const [isLedgerOpen, toggleLedger] = useToggle(); const [isLedgerOpen, toggleLedger] = useToggle();
const [isMultisigOpen, toggleMultisig] = useToggle(); const [isMultisigOpen, toggleMultisig] = useToggle();
const [isProxyOpen, toggleProxy] = useToggle(); const [isProxyOpen, toggleProxy] = useToggle();
const [isLocalOpen, toggleLocal] = useToggle();
const [isQrOpen, toggleQr] = useToggle(); const [isQrOpen, toggleQr] = useToggle();
const [isExportAll, toggleExportAll] = useToggle(); const [isExportAll, toggleExportAll] = useToggle();
const [isImportAll, toggleImportAll] = useToggle(); const [isImportAll, toggleImportAll] = useToggle();
@@ -207,7 +205,6 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen
(): Record<GroupName, [React.ReactNode?, string?, number?, (() => void)?][]> => { (): Record<GroupName, [React.ReactNode?, string?, number?, (() => void)?][]> => {
const ret: Record<GroupName, [React.ReactNode?, string?, number?, (() => void)?][]> = { const ret: Record<GroupName, [React.ReactNode?, string?, number?, (() => void)?][]> = {
accounts: [[<>{t('accounts')}<div className='sub'>{t('all locally stored accounts')}</div></>]], accounts: [[<>{t('accounts')}<div className='sub'>{t('all locally stored accounts')}</div></>]],
chopsticks: [[<>{t('chopsticks')}<div className='sub'>{t('local accounts added via chopsticks fork')}</div></>]],
hardware: [[<>{t('hardware')}<div className='sub'>{t('accounts managed via hardware devices')}</div></>]], hardware: [[<>{t('hardware')}<div className='sub'>{t('accounts managed via hardware devices')}</div></>]],
injected: [[<>{t('extension')}<div className='sub'>{t('accounts available via browser extensions')}</div></>]], injected: [[<>{t('extension')}<div className='sub'>{t('accounts available via browser extensions')}</div></>]],
multisig: [[<>{t('multisig')}<div className='sub'>{t('on-chain multisig accounts')}</div></>]], multisig: [[<>{t('multisig')}<div className='sub'>{t('on-chain multisig accounts')}</div></>]],
@@ -299,12 +296,6 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen
{isLedgerOpen && ( {isLedgerOpen && (
<Ledger onClose={toggleLedger} /> <Ledger onClose={toggleLedger} />
)} )}
{isLocalOpen && (
<Local
onClose={toggleLocal}
onStatusChange={onStatusChange}
/>
)}
{isMultisigOpen && ( {isMultisigOpen && (
<Multisig <Multisig
onClose={toggleMultisig} onClose={toggleMultisig}
@@ -419,13 +410,6 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen
)} )}
</> </>
)} )}
{fork && (
<Button
icon='plus'
label={t('Local')}
onClick={toggleLocal}
/>
)}
</Button.Group> </Button.Group>
</SummaryBox> </SummaryBox>
{!isNextTick || !sortedAccounts.length {!isNextTick || !sortedAccounts.length
@@ -1,107 +0,0 @@
// Copyright 2017-2026 @pezkuwi/app-accounts authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ActionStatus } from '@pezkuwi/react-components/Status/types';
import type { ModalProps } from '../types.js';
import React, { useCallback, useState } from 'react';
import { Button, Input, InputAddressSimple, Modal } from '@pezkuwi/react-components';
import { keyring } from '@pezkuwi/ui-keyring';
import { useTranslation } from '../translate.js';
interface Props extends ModalProps {
className?: string;
onClose: () => void;
onStatusChange: (status: ActionStatus) => void;
}
interface CreateOptions {
name: string;
tags?: string[];
}
export function createLocalAccount (address: string, { name }: CreateOptions): ActionStatus {
const status = { action: 'create' } as ActionStatus;
try {
keyring.addExternal(address, { isLocal: true, name, tags: ['local'] });
status.account = address;
status.status = 'success';
status.message = 'Local account created.';
} catch (error) {
status.status = 'error';
status.message = (error as Error).message;
}
return status;
}
function LocalAdd ({ className = '', onClose, onStatusChange }: Props): React.ReactElement<Props> {
const { t } = useTranslation();
const [{ isNameValid, name }, setName] = useState({ isNameValid: false, name: '' });
const [address, setAdress] = useState<string | null>(null);
const _createLocalAccount = useCallback(
() => {
if (!address) {
return;
}
const options = { name: name.trim() };
const status = createLocalAccount(address, options);
onStatusChange(status);
onClose();
},
[address, name, onClose, onStatusChange]
);
const _onChangeName = useCallback(
(name: string) => setName({ isNameValid: (name.trim().length >= 3), name }),
[]
);
const isValid = isNameValid && !!address;
return (
<Modal
className={className}
header={t('Add a mock account to chopsticks')}
onClose={onClose}
size='large'
>
<Modal.Content>
<Modal.Columns hint={t('Any address, this can override other accounts')}>
<InputAddressSimple
autoFocus
label={t('address')}
onChange={setAdress}
placeholder={t('e.g. 5Gg3...')}
/>
</Modal.Columns>
<Modal.Columns hint={t('The name for this account')}>
<Input
className='full'
isError={!isNameValid}
label={t('name')}
onChange={_onChangeName}
placeholder={t('local account name')}
/>
</Modal.Columns>
</Modal.Content>
<Modal.Actions>
<Button
icon='plus'
isDisabled={!isValid}
label={t('Add')}
onClick={_createLocalAccount}
/>
</Modal.Actions>
</Modal>
);
}
export default React.memo(LocalAdd);
+9 -49
View File
@@ -1,14 +1,12 @@
// Copyright 2017-2026 @pezkuwi/react-api authors & contributors // Copyright 2017-2026 @pezkuwi/react-api authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { Blockchain } from '@acala-network/chopsticks-core';
import type { LinkOption } from '@pezkuwi/apps-config/endpoints/types'; import type { LinkOption } from '@pezkuwi/apps-config/endpoints/types';
import type { InjectedExtension } from '@pezkuwi/extension-inject/types'; import type { InjectedExtension } from '@pezkuwi/extension-inject/types';
import type { ChainProperties, ChainType } from '@pezkuwi/types/interfaces'; import type { ChainProperties, ChainType } from '@pezkuwi/types/interfaces';
import type { KeyringStore } from '@pezkuwi/ui-keyring/types'; import type { KeyringStore } from '@pezkuwi/ui-keyring/types';
import type { ApiProps, ApiState, InjectedAccountExt } from './types.js'; import type { ApiProps, ApiState, InjectedAccountExt } from './types.js';
import { ChopsticksProvider, setStorage } from '@acala-network/chopsticks-core';
import * as Sc from '@bizinikiwi/connect'; import * as Sc from '@bizinikiwi/connect';
import React, { useEffect, useMemo, useState } from 'react'; import React, { useEffect, useMemo, useState } from 'react';
import store from 'store'; import store from 'store';
@@ -48,7 +46,6 @@ interface ChainData {
interface CreateApiReturn { interface CreateApiReturn {
types: Record<string, Record<string, string>>; types: Record<string, Record<string, string>>;
fork: Blockchain | null;
} }
export const DEFAULT_DECIMALS = statics.registry.createType('u32', 12); export const DEFAULT_DECIMALS = statics.registry.createType('u32', 12);
@@ -129,7 +126,7 @@ async function retrieve (api: ApiPromise, injectedPromise: Promise<InjectedExten
}; };
} }
async function loadOnReady (api: ApiPromise, endpoint: LinkOption | null, fork: Blockchain | null, injectedPromise: Promise<InjectedExtension[]>, store: KeyringStore | undefined, types: Record<string, Record<string, string>>, urlIsEthereum = false): Promise<ApiState> { async function loadOnReady (api: ApiPromise, endpoint: LinkOption | null, injectedPromise: Promise<InjectedExtension[]>, store: KeyringStore | undefined, types: Record<string, Record<string, string>>, urlIsEthereum = false): Promise<ApiState> {
statics.registry.register(types); statics.registry.register(types);
const { injectedAccounts, properties, systemChain, systemChainType, systemName, systemVersion } = await retrieve(api, injectedPromise); const { injectedAccounts, properties, systemChain, systemChainType, systemName, systemVersion } = await retrieve(api, injectedPromise);
@@ -194,7 +191,6 @@ async function loadOnReady (api: ApiPromise, endpoint: LinkOption | null, fork:
apiDefaultTx, apiDefaultTx,
apiDefaultTxSudo, apiDefaultTxSudo,
chainSS58, chainSS58,
fork,
hasInjectedAccounts: injectedAccounts.length !== 0, hasInjectedAccounts: injectedAccounts.length !== 0,
isApiReady: true, isApiReady: true,
isDevelopment, isDevelopment,
@@ -234,42 +230,14 @@ async function getLightProvider (chain: string): Promise<ScProvider> {
/** /**
* @internal * @internal
*/ */
async function createApi (apiUrl: string, signer: ApiSigner, isLocalFork: boolean, onError: (error: unknown) => void): Promise<CreateApiReturn> { async function createApi (apiUrl: string, signer: ApiSigner, onError: (error: unknown) => void): Promise<CreateApiReturn> {
const types = getDevTypes(); const types = getDevTypes();
const isLight = apiUrl.startsWith('light://'); const isLight = apiUrl.startsWith('light://');
let provider; let provider;
let chopsticksFork: Blockchain | null = null;
let chopsticksProvider;
let setupChopsticksSuccess = false;
if (isLocalFork) {
try {
chopsticksProvider = await ChopsticksProvider.fromEndpoint(apiUrl);
chopsticksFork = chopsticksProvider.chain;
await setStorage(chopsticksFork, {
System: {
Account: [
[['5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'], { data: { free: 5000 * 1e12 }, providers: 1 }]
]
}
});
setupChopsticksSuccess = true;
} catch (error) {
store.set('localFork', '');
const msg = `Local fork failed, please refresh to switch back to default API provider. This is likely due to chain not supported by chopsticks.
Please consider to send an issue to https://github.com/AcalaNetwork/chopsticks.`;
onError(new Error(msg));
throw error;
}
}
try { try {
if (isLight) { if (isLight) {
provider = await getLightProvider(apiUrl.replace('light://', '')); provider = await getLightProvider(apiUrl.replace('light://', ''));
} else if (isLocalFork && setupChopsticksSuccess) {
provider = chopsticksProvider;
} else { } else {
provider = new WsProvider(apiUrl); provider = new WsProvider(apiUrl);
} }
@@ -299,7 +267,7 @@ async function createApi (apiUrl: string, signer: ApiSigner, isLocalFork: boolea
onError(error); onError(error);
} }
return { fork: chopsticksFork, types }; return { types };
} }
export function ApiCtxRoot ({ apiUrl, beforeApiInit, children, store: keyringStore }: Props): React.ReactElement<Props> | null { export function ApiCtxRoot ({ apiUrl, beforeApiInit, children, store: keyringStore }: Props): React.ReactElement<Props> | null {
@@ -309,7 +277,6 @@ export function ApiCtxRoot ({ apiUrl, beforeApiInit, children, store: keyringSto
const [isApiInitialized, setIsApiInitialized] = useState(false); const [isApiInitialized, setIsApiInitialized] = useState(false);
const [apiError, setApiError] = useState<null | string>(null); const [apiError, setApiError] = useState<null | string>(null);
const [extensions, setExtensions] = useState<InjectedExtension[] | undefined>(); const [extensions, setExtensions] = useState<InjectedExtension[] | undefined>();
const isLocalFork = useMemo(() => store.get('localFork') === apiUrl, [apiUrl]);
const apiEndpoint = useEndpoint(apiUrl); const apiEndpoint = useEndpoint(apiUrl);
const peopleEndpoint = usePeopleEndpoint(apiEndpoint?.relayName || apiEndpoint?.info); const peopleEndpoint = usePeopleEndpoint(apiEndpoint?.relayName || apiEndpoint?.info);
const coreTimeEndpoint = useCoretimeEndpoint(apiEndpoint?.relayName || apiEndpoint?.info); const coreTimeEndpoint = useCoretimeEndpoint(apiEndpoint?.relayName || apiEndpoint?.info);
@@ -344,8 +311,8 @@ export function ApiCtxRoot ({ apiUrl, beforeApiInit, children, store: keyringSto
// Ensure that when isPeopleForIdentity is set to false that it enables the identity pallet access. // Ensure that when isPeopleForIdentity is set to false that it enables the identity pallet access.
(typeof apiEndpoint?.isPeopleForIdentity === 'boolean' && !apiEndpoint?.isPeopleForIdentity); (typeof apiEndpoint?.isPeopleForIdentity === 'boolean' && !apiEndpoint?.isPeopleForIdentity);
const value = useMemo<ApiProps>( const value = useMemo<ApiProps>(
() => objectSpread({}, state, { api: statics.api, apiCoretime, apiEndpoint, apiError, apiIdentity: ((apiEndpoint?.isPeopleForIdentity && apiSystemPeople) || statics.api), apiRelay, apiSystemPeople, apiUrl, createLink, enableIdentity, extensions, isApiConnected, isApiInitialized, isLocalFork, isWaitingInjected: !extensions }), () => objectSpread({}, state, { api: statics.api, apiCoretime, apiEndpoint, apiError, apiIdentity: ((apiEndpoint?.isPeopleForIdentity && apiSystemPeople) || statics.api), apiRelay, apiSystemPeople, apiUrl, createLink, enableIdentity, extensions, isApiConnected, isApiInitialized, isWaitingInjected: !extensions }),
[apiError, createLink, extensions, isApiConnected, isApiInitialized, isLocalFork, state, apiEndpoint, apiCoretime, apiRelay, apiUrl, apiSystemPeople, enableIdentity] [apiError, createLink, extensions, isApiConnected, isApiInitialized, state, apiEndpoint, apiCoretime, apiRelay, apiUrl, apiSystemPeople, enableIdentity]
); );
// initial initialization // initial initialization
@@ -356,8 +323,8 @@ export function ApiCtxRoot ({ apiUrl, beforeApiInit, children, store: keyringSto
setApiError((error as Error).message); setApiError((error as Error).message);
}; };
createApi(apiUrl, new ApiSigner(statics.registry, queuePayload, queueSetTxStatus), isLocalFork, onError) createApi(apiUrl, new ApiSigner(statics.registry, queuePayload, queueSetTxStatus), onError)
.then(({ fork, types }): void => { .then(({ types }): void => {
statics.api.on('connected', () => setIsApiConnected(true)); statics.api.on('connected', () => setIsApiConnected(true));
statics.api.on('disconnected', () => setIsApiConnected(false)); statics.api.on('disconnected', () => setIsApiConnected(false));
statics.api.on('error', onError); statics.api.on('error', onError);
@@ -370,22 +337,15 @@ export function ApiCtxRoot ({ apiUrl, beforeApiInit, children, store: keyringSto
const urlIsEthereum = !!location.href.includes('keyring-type=ethereum'); const urlIsEthereum = !!location.href.includes('keyring-type=ethereum');
loadOnReady(statics.api, apiEndpoint, fork, injectedPromise, keyringStore, types, urlIsEthereum) loadOnReady(statics.api, apiEndpoint, injectedPromise, keyringStore, types, urlIsEthereum)
.then(setState) .then(setState)
.catch(onError); .catch(onError);
}); });
if (isLocalFork) {
// clear localFork from local storage onMount after api setup
store.set('localFork', '');
statics.api.connect()
.catch(onError);
}
setIsApiInitialized(true); setIsApiInitialized(true);
}) })
.catch(onError); .catch(onError);
}, [apiEndpoint, apiUrl, queuePayload, queueSetTxStatus, keyringStore, isLocalFork]); }, [apiEndpoint, apiUrl, queuePayload, queueSetTxStatus, keyringStore]);
if (!value.isApiInitialized) { if (!value.isApiInitialized) {
return <>{beforeApiInit}</>; return <>{beforeApiInit}</>;
-3
View File
@@ -1,7 +1,6 @@
// Copyright 2017-2026 @pezkuwi/react-api authors & contributors // Copyright 2017-2026 @pezkuwi/react-api authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { Blockchain } from '@acala-network/chopsticks-core';
import type React from 'react'; import type React from 'react';
import type { ApiPromise } from '@pezkuwi/api'; import type { ApiPromise } from '@pezkuwi/api';
import type { SubmittableExtrinsicFunction } from '@pezkuwi/api/promise/types'; import type { SubmittableExtrinsicFunction } from '@pezkuwi/api/promise/types';
@@ -55,7 +54,6 @@ export interface ApiState {
apiDefaultTx: SubmittableExtrinsicFunction; apiDefaultTx: SubmittableExtrinsicFunction;
apiDefaultTxSudo: SubmittableExtrinsicFunction; apiDefaultTxSudo: SubmittableExtrinsicFunction;
chainSS58: number; chainSS58: number;
fork: Blockchain | null;
hasInjectedAccounts: boolean; hasInjectedAccounts: boolean;
isApiReady: boolean; isApiReady: boolean;
isDevelopment: boolean; isDevelopment: boolean;
@@ -88,7 +86,6 @@ export interface ApiProps extends ApiState {
isApiConnected: boolean; isApiConnected: boolean;
isApiInitialized: boolean; isApiInitialized: boolean;
isWaitingInjected: boolean; isWaitingInjected: boolean;
isLocalFork?: boolean;
} }
export interface OnChangeCbObs { export interface OnChangeCbObs {
@@ -21,9 +21,7 @@ export function getAccountCryptoType (accountId: AccountIdIsh): string {
? 'multisig' ? 'multisig'
: current.meta.isProxied : current.meta.isProxied
? 'proxied' ? 'proxied'
: current.meta.isLocal : 'qr'
? 'chopsticks'
: 'qr'
: current.type; : current.type;
} }
} catch { } catch {
-3
View File
@@ -1,7 +1,6 @@
// Copyright 2017-2026 @pezkuwi/react-hooks authors & contributors // Copyright 2017-2026 @pezkuwi/react-hooks authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { Blockchain } from '@acala-network/chopsticks-core';
import type { ApiPromise } from '@pezkuwi/api'; import type { ApiPromise } from '@pezkuwi/api';
import type { SubmittableExtrinsicFunction } from '@pezkuwi/api/promise/types'; import type { SubmittableExtrinsicFunction } from '@pezkuwi/api/promise/types';
import type { Signer as InjectedSigner } from '@pezkuwi/api/types'; import type { Signer as InjectedSigner } from '@pezkuwi/api/types';
@@ -40,7 +39,6 @@ export interface ApiState {
apiDefaultTx: SubmittableExtrinsicFunction; apiDefaultTx: SubmittableExtrinsicFunction;
apiDefaultTxSudo: SubmittableExtrinsicFunction; apiDefaultTxSudo: SubmittableExtrinsicFunction;
chainSS58: number; chainSS58: number;
fork: Blockchain | null;
hasInjectedAccounts: boolean; hasInjectedAccounts: boolean;
isApiReady: boolean; isApiReady: boolean;
isDevelopment: boolean; isDevelopment: boolean;
@@ -67,7 +65,6 @@ export interface ApiProps extends ApiState {
isApiConnected: boolean; isApiConnected: boolean;
isApiInitialized: boolean; isApiInitialized: boolean;
isWaitingInjected: boolean; isWaitingInjected: boolean;
isLocalFork?: boolean;
} }
export interface Accounts { export interface Accounts {
+6 -786
View File
@@ -5,39 +5,6 @@ __metadata:
version: 8 version: 8
cacheKey: 10 cacheKey: 10
"@acala-network/chopsticks-core@npm:^1.2.1":
version: 1.2.5
resolution: "@acala-network/chopsticks-core@npm:1.2.5"
dependencies:
"@acala-network/chopsticks-executor": "npm:1.2.5"
"@polkadot/rpc-provider": "npm:^16.4.1"
"@polkadot/types": "npm:^16.4.1"
"@polkadot/types-codec": "npm:^16.4.1"
"@polkadot/types-known": "npm:^16.4.1"
"@polkadot/util": "npm:^13.5.3"
"@polkadot/util-crypto": "npm:^13.5.3"
comlink: "npm:^4.4.2"
eventemitter3: "npm:^5.0.1"
lodash: "npm:^4.17.21"
lru-cache: "npm:^11.1.0"
pino: "npm:^9.7.0"
pino-pretty: "npm:^13.0.0"
rxjs: "npm:^7.8.2"
zod: "npm:^3.25.76"
checksum: 10/25e10af36a5eb9d56e6d3922277c37a906dee715d3c071149d25c1b60a80adffe1cf4e479d4892b12a8dcbbd5a4033a4bc2abfcd12520343c9c41478e7a527c2
languageName: node
linkType: hard
"@acala-network/chopsticks-executor@npm:1.2.5":
version: 1.2.5
resolution: "@acala-network/chopsticks-executor@npm:1.2.5"
dependencies:
"@polkadot/util": "npm:^13.5.3"
"@polkadot/wasm-util": "npm:^7.4.1"
checksum: 10/897da956ac210e115070edeac0f6fcce59acf4c0c566b832a5c3085b536fc434617bc5b0af459b8826bcd3ce2281d65d8c153fb154b765bc00c71f475cddda02
languageName: node
linkType: hard
"@adobe/css-tools@npm:^4.0.1": "@adobe/css-tools@npm:^4.0.1":
version: 4.4.4 version: 4.4.4
resolution: "@adobe/css-tools@npm:4.4.4" resolution: "@adobe/css-tools@npm:4.4.4"
@@ -1290,7 +1257,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@noble/curves@npm:^1.3.0, @noble/curves@npm:^1.9.7, @noble/curves@npm:~1.9.2": "@noble/curves@npm:^1.9.7, @noble/curves@npm:~1.9.2":
version: 1.9.7 version: 1.9.7
resolution: "@noble/curves@npm:1.9.7" resolution: "@noble/curves@npm:1.9.7"
dependencies: dependencies:
@@ -1306,7 +1273,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.8.0, @noble/hashes@npm:~1.8.0": "@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.8.0, @noble/hashes@npm:~1.8.0":
version: 1.8.0 version: 1.8.0
resolution: "@noble/hashes@npm:1.8.0" resolution: "@noble/hashes@npm:1.8.0"
checksum: 10/474b7f56bc6fb2d5b3a42132561e221b0ea4f91e590f4655312ca13667840896b34195e2b53b7f097ec080a1fdd3b58d902c2a8d0fbdf51d2e238b53808a177e checksum: 10/474b7f56bc6fb2d5b3a42132561e221b0ea4f91e590f4655312ca13667840896b34195e2b53b7f097ec080a1fdd3b58d902c2a8d0fbdf51d2e238b53808a177e
@@ -2333,7 +2300,6 @@ __metadata:
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "@pezkuwi/apps@workspace:packages/apps" resolution: "@pezkuwi/apps@workspace:packages/apps"
dependencies: dependencies:
"@acala-network/chopsticks-core": "npm:^1.2.1"
"@pezkuwi/apps-config": "npm:^1.0.2-1-x" "@pezkuwi/apps-config": "npm:^1.0.2-1-x"
"@pezkuwi/apps-routing": "npm:^1.0.2-1-x" "@pezkuwi/apps-routing": "npm:^1.0.2-1-x"
"@pezkuwi/dev": "npm:^0.86.8" "@pezkuwi/dev": "npm:^0.86.8"
@@ -3201,491 +3167,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@pinojs/redact@npm:^0.4.0":
version: 0.4.0
resolution: "@pinojs/redact@npm:0.4.0"
checksum: 10/2210ffb6b38357853d47239fd0532cc9edb406325270a81c440a35cece22090127c30c2ead3eefa3e608f2244087485308e515c431f4f69b6bd2e16cbd32812b
languageName: node
linkType: hard
"@polkadot-api/json-rpc-provider-proxy@npm:^0.1.0":
version: 0.1.0
resolution: "@polkadot-api/json-rpc-provider-proxy@npm:0.1.0"
checksum: 10/1a232337a4f6f32f3ec0350d5aaceaab21547ccee3cca63318d4b9238982efa5ff2406b033c320318c72d067b73508c0a1af21eb47acabaff714c1c21477bafa
languageName: node
linkType: hard
"@polkadot-api/json-rpc-provider@npm:0.0.1, @polkadot-api/json-rpc-provider@npm:^0.0.1":
version: 0.0.1
resolution: "@polkadot-api/json-rpc-provider@npm:0.0.1"
checksum: 10/1f315bdadcba7def7145011132e6127b983c6f91f976be217ad7d555bb96a67f3a270fe4a46e427531822c5d54d353d84a6439d112a99cdfc07013d3b662ee3c
languageName: node
linkType: hard
"@polkadot-api/metadata-builders@npm:0.3.2":
version: 0.3.2
resolution: "@polkadot-api/metadata-builders@npm:0.3.2"
dependencies:
"@polkadot-api/substrate-bindings": "npm:0.6.0"
"@polkadot-api/utils": "npm:0.1.0"
checksum: 10/874b38e1fb92beea99b98b889143f25671f137e54113767aeabb79ff5cdf7d61cadb0121f08c7a9a40718b924d7c9a1dd700f81e7e287bc55923b0129e2a6160
languageName: node
linkType: hard
"@polkadot-api/observable-client@npm:^0.3.0":
version: 0.3.2
resolution: "@polkadot-api/observable-client@npm:0.3.2"
dependencies:
"@polkadot-api/metadata-builders": "npm:0.3.2"
"@polkadot-api/substrate-bindings": "npm:0.6.0"
"@polkadot-api/utils": "npm:0.1.0"
peerDependencies:
"@polkadot-api/substrate-client": 0.1.4
rxjs: ">=7.8.0"
checksum: 10/91b95a06e3ddd477c2489110d7cffdcfaf87a222054b437013c701dc43eac6a5d30438b1ac8fb130166ba039a67808e6199ccb3b2eaac7dcf8d2ef7a835f047b
languageName: node
linkType: hard
"@polkadot-api/substrate-bindings@npm:0.6.0":
version: 0.6.0
resolution: "@polkadot-api/substrate-bindings@npm:0.6.0"
dependencies:
"@noble/hashes": "npm:^1.3.1"
"@polkadot-api/utils": "npm:0.1.0"
"@scure/base": "npm:^1.1.1"
scale-ts: "npm:^1.6.0"
checksum: 10/01926a9083f608514a55c3d23563ebef139e2963d4adbebe7dcd99b65e1a08f1551fc0e147e787a31c749402767333c96eb1399f85a6c71654cfa1cc9d26e445
languageName: node
linkType: hard
"@polkadot-api/substrate-client@npm:^0.1.2":
version: 0.1.4
resolution: "@polkadot-api/substrate-client@npm:0.1.4"
dependencies:
"@polkadot-api/json-rpc-provider": "npm:0.0.1"
"@polkadot-api/utils": "npm:0.1.0"
checksum: 10/e7172696db404676d297cd5661b195de110593769f9ce37f32bdb5576ca00c56d32fcb04172a91102986fdda27a13962d909ad9466869a2991611d658ee6ac92
languageName: node
linkType: hard
"@polkadot-api/utils@npm:0.1.0":
version: 0.1.0
resolution: "@polkadot-api/utils@npm:0.1.0"
checksum: 10/c557daea91ddb03e16b93c7c5a75533495c7b77cbbbdc2b4f5e97af0c1e1132a47e434c9c729a08241bd7b3624b6644ac0950f914aa8b29a0f419bf0fd224c7c
languageName: node
linkType: hard
"@polkadot/keyring@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/keyring@npm:14.0.1"
dependencies:
"@polkadot/util": "npm:14.0.1"
"@polkadot/util-crypto": "npm:14.0.1"
tslib: "npm:^2.8.0"
peerDependencies:
"@polkadot/util": 14.0.1
"@polkadot/util-crypto": 14.0.1
checksum: 10/b1bc206bdf0a59f04920787e62afc9b8278a9aeb4e7b6ca4219d5677e6688b479cd64ba9b8e6e6fa91c629004ae9aa14e616f1d1f64d854d6ff254b7ba52b6f4
languageName: node
linkType: hard
"@polkadot/networks@npm:13.5.9":
version: 13.5.9
resolution: "@polkadot/networks@npm:13.5.9"
dependencies:
"@polkadot/util": "npm:13.5.9"
"@substrate/ss58-registry": "npm:^1.51.0"
tslib: "npm:^2.8.0"
checksum: 10/b418f4950e4713244164b304eabdb512d12a47f2366c72e443925a7fec3af638bfac8e9e59c7ddb35dad7ae9d6e464529aad297cd433f7e7743442301a6b0a66
languageName: node
linkType: hard
"@polkadot/networks@npm:14.0.1, @polkadot/networks@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/networks@npm:14.0.1"
dependencies:
"@polkadot/util": "npm:14.0.1"
"@substrate/ss58-registry": "npm:^1.51.0"
tslib: "npm:^2.8.0"
checksum: 10/ccb4e24ac5d7bc1af49b875bc4cd39b135e86e6518f8345ac5b8d3acea576380de73d4175c19e6f58a2f3f173779e6c71a75b6c1d77a95241cdc5e776849432b
languageName: node
linkType: hard
"@polkadot/rpc-provider@npm:^16.4.1":
version: 16.5.4
resolution: "@polkadot/rpc-provider@npm:16.5.4"
dependencies:
"@polkadot/keyring": "npm:^14.0.1"
"@polkadot/types": "npm:16.5.4"
"@polkadot/types-support": "npm:16.5.4"
"@polkadot/util": "npm:^14.0.1"
"@polkadot/util-crypto": "npm:^14.0.1"
"@polkadot/x-fetch": "npm:^14.0.1"
"@polkadot/x-global": "npm:^14.0.1"
"@polkadot/x-ws": "npm:^14.0.1"
"@substrate/connect": "npm:0.8.11"
eventemitter3: "npm:^5.0.1"
mock-socket: "npm:^9.3.1"
nock: "npm:^13.5.5"
tslib: "npm:^2.8.1"
dependenciesMeta:
"@substrate/connect":
optional: true
checksum: 10/d15e0702f81c36124115c63c2702975188a7bb50886f5fbc54a98ebe6697b8aaef0a616ce13df2da99d6db0b06b7228d4f93dc44b0188e81aa62242bf6257b44
languageName: node
linkType: hard
"@polkadot/types-augment@npm:16.5.4":
version: 16.5.4
resolution: "@polkadot/types-augment@npm:16.5.4"
dependencies:
"@polkadot/types": "npm:16.5.4"
"@polkadot/types-codec": "npm:16.5.4"
"@polkadot/util": "npm:^14.0.1"
tslib: "npm:^2.8.1"
checksum: 10/5addbd3a2391d394abd8d4fa4f0f10945cb79ee724e189961bc6fcbb3ca893d4192d4f3aeeeb3eb02ad400d7007b9f71a48cdf94330eb8ef2f84105d95c6701d
languageName: node
linkType: hard
"@polkadot/types-codec@npm:16.5.4, @polkadot/types-codec@npm:^16.4.1":
version: 16.5.4
resolution: "@polkadot/types-codec@npm:16.5.4"
dependencies:
"@polkadot/util": "npm:^14.0.1"
"@polkadot/x-bigint": "npm:^14.0.1"
tslib: "npm:^2.8.1"
checksum: 10/9eb7adb2084394df159b4542cc28ea57935f260fc2a4e3a0179f70a3214fdbd612c1cf9053a4eb3e427efe9ce6a64ac6887d1b10b1f67ef112550b8c38d56600
languageName: node
linkType: hard
"@polkadot/types-create@npm:16.5.4":
version: 16.5.4
resolution: "@polkadot/types-create@npm:16.5.4"
dependencies:
"@polkadot/types-codec": "npm:16.5.4"
"@polkadot/util": "npm:^14.0.1"
tslib: "npm:^2.8.1"
checksum: 10/949f918c36c8ef1356f142d39b6bd6f670b2396e7c5f233c9dd5df6d1c377c36338a853962bb22ce2de02f3131df89d7bc9dcad8645bf57358117ace66677a21
languageName: node
linkType: hard
"@polkadot/types-known@npm:^16.4.1":
version: 16.5.4
resolution: "@polkadot/types-known@npm:16.5.4"
dependencies:
"@polkadot/networks": "npm:^14.0.1"
"@polkadot/types": "npm:16.5.4"
"@polkadot/types-codec": "npm:16.5.4"
"@polkadot/types-create": "npm:16.5.4"
"@polkadot/util": "npm:^14.0.1"
tslib: "npm:^2.8.1"
checksum: 10/75a8e26052fcb1a4d5c293cd545615c923020ad0d6f4d65a6e2694fb427e33c3b237854912583bb16dcc24b667b0084aa954233decc8b39409a4ab0f38b2f97b
languageName: node
linkType: hard
"@polkadot/types-support@npm:16.5.4":
version: 16.5.4
resolution: "@polkadot/types-support@npm:16.5.4"
dependencies:
"@polkadot/util": "npm:^14.0.1"
tslib: "npm:^2.8.1"
checksum: 10/db884bc7e5edeb9744dade8a9b7d48950ae0424d0d6cd2ec291c19620ae4b451bab4d116283b20bece948fae348b71c70f3688a087573a5d60d6e9eb8e6b2348
languageName: node
linkType: hard
"@polkadot/types@npm:16.5.4, @polkadot/types@npm:^16.4.1":
version: 16.5.4
resolution: "@polkadot/types@npm:16.5.4"
dependencies:
"@polkadot/keyring": "npm:^14.0.1"
"@polkadot/types-augment": "npm:16.5.4"
"@polkadot/types-codec": "npm:16.5.4"
"@polkadot/types-create": "npm:16.5.4"
"@polkadot/util": "npm:^14.0.1"
"@polkadot/util-crypto": "npm:^14.0.1"
rxjs: "npm:^7.8.1"
tslib: "npm:^2.8.1"
checksum: 10/837137deee5e5785a601a93cb8305a68d771ade15f2ac716583d14ad1892a11c658a79aed99426fd358eecce385ad828972ef55f95f072c9ab76dffdadcf4c79
languageName: node
linkType: hard
"@polkadot/util-crypto@npm:14.0.1, @polkadot/util-crypto@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/util-crypto@npm:14.0.1"
dependencies:
"@noble/curves": "npm:^1.3.0"
"@noble/hashes": "npm:^1.3.3"
"@polkadot/networks": "npm:14.0.1"
"@polkadot/util": "npm:14.0.1"
"@polkadot/wasm-crypto": "npm:^7.5.3"
"@polkadot/wasm-util": "npm:^7.5.3"
"@polkadot/x-bigint": "npm:14.0.1"
"@polkadot/x-randomvalues": "npm:14.0.1"
"@scure/base": "npm:^1.1.7"
"@scure/sr25519": "npm:^0.2.0"
tslib: "npm:^2.8.0"
peerDependencies:
"@polkadot/util": 14.0.1
checksum: 10/132a89d4e80ba0076213ca03991e6195ad8abb3b469b4fdca1826187c4bc879f0310c9c99a73b8a2e5ca2af427c6715af7e43c99c3c9199090091ab354281d95
languageName: node
linkType: hard
"@polkadot/util-crypto@npm:^13.5.3":
version: 13.5.9
resolution: "@polkadot/util-crypto@npm:13.5.9"
dependencies:
"@noble/curves": "npm:^1.3.0"
"@noble/hashes": "npm:^1.3.3"
"@polkadot/networks": "npm:13.5.9"
"@polkadot/util": "npm:13.5.9"
"@polkadot/wasm-crypto": "npm:^7.5.3"
"@polkadot/wasm-util": "npm:^7.5.3"
"@polkadot/x-bigint": "npm:13.5.9"
"@polkadot/x-randomvalues": "npm:13.5.9"
"@scure/base": "npm:^1.1.7"
tslib: "npm:^2.8.0"
peerDependencies:
"@polkadot/util": 13.5.9
checksum: 10/0c388e9afe2eb000e721a9b03472b53943c090b1a6042b98164524367dcaf45a6d8f43c56c9929f1c3ea65dceef196f86df4979f83e64a90a5f1044fe0f73960
languageName: node
linkType: hard
"@polkadot/util@npm:13.5.9, @polkadot/util@npm:^13.5.3":
version: 13.5.9
resolution: "@polkadot/util@npm:13.5.9"
dependencies:
"@polkadot/x-bigint": "npm:13.5.9"
"@polkadot/x-global": "npm:13.5.9"
"@polkadot/x-textdecoder": "npm:13.5.9"
"@polkadot/x-textencoder": "npm:13.5.9"
"@types/bn.js": "npm:^5.1.6"
bn.js: "npm:^5.2.1"
tslib: "npm:^2.8.0"
checksum: 10/f3b9d66dff334e1204f3f8fecd74fe64dafec014551c99bcfde1d1270e1559fa68129fd3a47f090c6c174cdd3b9b0d9cbe95a4de4cb5172ca84c9fdd6147a0bb
languageName: node
linkType: hard
"@polkadot/util@npm:14.0.1, @polkadot/util@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/util@npm:14.0.1"
dependencies:
"@polkadot/x-bigint": "npm:14.0.1"
"@polkadot/x-global": "npm:14.0.1"
"@polkadot/x-textdecoder": "npm:14.0.1"
"@polkadot/x-textencoder": "npm:14.0.1"
"@types/bn.js": "npm:^5.1.6"
bn.js: "npm:^5.2.1"
tslib: "npm:^2.8.0"
checksum: 10/c6f8f3d2fa1a68f1af0396090fce191eab58a4256c201d60231b697051c0db34e4a7bcbcd2cf833796d839762366f0d7553e8613ccadeb03c422c3d159563aea
languageName: node
linkType: hard
"@polkadot/wasm-bridge@npm:7.5.4":
version: 7.5.4
resolution: "@polkadot/wasm-bridge@npm:7.5.4"
dependencies:
"@polkadot/wasm-util": "npm:7.5.4"
tslib: "npm:^2.7.0"
peerDependencies:
"@polkadot/util": "*"
"@polkadot/x-randomvalues": "*"
checksum: 10/64db5db90a82396032c31e6745b2e77817b8e9258841b72e506370ecf3ac63497efc654ca113419baf3c9b5fabda86bb21b29e1b508f192ab4e07beab8ef6d04
languageName: node
linkType: hard
"@polkadot/wasm-crypto-asmjs@npm:7.5.4":
version: 7.5.4
resolution: "@polkadot/wasm-crypto-asmjs@npm:7.5.4"
dependencies:
tslib: "npm:^2.7.0"
peerDependencies:
"@polkadot/util": "*"
checksum: 10/9e03f052b871bc9e33268b01025fe43789f2af40e4aabbe3b7d8348a0752001cd137c20ba66c58ee7d692e798d957024c7cbd0cbf1a8cf3e6baebbe67696e781
languageName: node
linkType: hard
"@polkadot/wasm-crypto-init@npm:7.5.4":
version: 7.5.4
resolution: "@polkadot/wasm-crypto-init@npm:7.5.4"
dependencies:
"@polkadot/wasm-bridge": "npm:7.5.4"
"@polkadot/wasm-crypto-asmjs": "npm:7.5.4"
"@polkadot/wasm-crypto-wasm": "npm:7.5.4"
"@polkadot/wasm-util": "npm:7.5.4"
tslib: "npm:^2.7.0"
peerDependencies:
"@polkadot/util": "*"
"@polkadot/x-randomvalues": "*"
checksum: 10/c1077a74156bd6356487043b23a849b214274c74fc44f1e2c203ec58f152c47c577f9da920ebf79ef746cfdfd2f246b1dd6a97c5796556f1c00e63d795eb896f
languageName: node
linkType: hard
"@polkadot/wasm-crypto-wasm@npm:7.5.4":
version: 7.5.4
resolution: "@polkadot/wasm-crypto-wasm@npm:7.5.4"
dependencies:
"@polkadot/wasm-util": "npm:7.5.4"
tslib: "npm:^2.7.0"
peerDependencies:
"@polkadot/util": "*"
checksum: 10/338b5d4b347116efa09aba7f27f1d13e84a4ef62680ab02e2c47bbd43180844434cf49f8c954528cbb8bebef69bdf101be33e3a6fe093efd3f5ab2245f5e7faf
languageName: node
linkType: hard
"@polkadot/wasm-crypto@npm:^7.5.3":
version: 7.5.4
resolution: "@polkadot/wasm-crypto@npm:7.5.4"
dependencies:
"@polkadot/wasm-bridge": "npm:7.5.4"
"@polkadot/wasm-crypto-asmjs": "npm:7.5.4"
"@polkadot/wasm-crypto-init": "npm:7.5.4"
"@polkadot/wasm-crypto-wasm": "npm:7.5.4"
"@polkadot/wasm-util": "npm:7.5.4"
tslib: "npm:^2.7.0"
peerDependencies:
"@polkadot/util": "*"
"@polkadot/x-randomvalues": "*"
checksum: 10/d4edce7bc9e8fa8387abe1d3fa4433937ab40faf4889a949a5a64c42f852837e3da96c00a73fb383fc8ef3fe177ac40dc85a13bcd43b059f2d04bab52f537801
languageName: node
linkType: hard
"@polkadot/wasm-util@npm:7.5.4, @polkadot/wasm-util@npm:^7.4.1, @polkadot/wasm-util@npm:^7.5.3":
version: 7.5.4
resolution: "@polkadot/wasm-util@npm:7.5.4"
dependencies:
tslib: "npm:^2.7.0"
peerDependencies:
"@polkadot/util": "*"
checksum: 10/4dda837f3ac84705d709a2e62fc0f9ec54518dbae88d3bf9dc68b65f17f50eadf7fff4289f3deaf51f93d79d5ac0631ecf57ad572d55f98a11149beaa3b2bcc4
languageName: node
linkType: hard
"@polkadot/x-bigint@npm:13.5.9":
version: 13.5.9
resolution: "@polkadot/x-bigint@npm:13.5.9"
dependencies:
"@polkadot/x-global": "npm:13.5.9"
tslib: "npm:^2.8.0"
checksum: 10/8b9c5f40d31a226e5222e5a837bf730fed288f2b4d525966a4f8645afc8c17919ccf8f18e7ae6452698fb8f9d92fa7c7760b275f139ba0318d20bfbadff9679e
languageName: node
linkType: hard
"@polkadot/x-bigint@npm:14.0.1, @polkadot/x-bigint@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/x-bigint@npm:14.0.1"
dependencies:
"@polkadot/x-global": "npm:14.0.1"
tslib: "npm:^2.8.0"
checksum: 10/e56c4086c19ecf93b18d6613ae1c03c28755899f7baf817ed870ade4c39be610e5cf5d098944845943a3d713f2c0aabe80b4762d7a7f89df87891ba83625c322
languageName: node
linkType: hard
"@polkadot/x-fetch@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/x-fetch@npm:14.0.1"
dependencies:
"@polkadot/x-global": "npm:14.0.1"
node-fetch: "npm:^3.3.2"
tslib: "npm:^2.8.0"
checksum: 10/a358687605e3c622d36ebfd94607ceb74b5430a247f83bb675b085d8baaca740f004bb4f23626f0119219d8971bb415e7dfc13c78f1f6711a6d4b5f082eb1130
languageName: node
linkType: hard
"@polkadot/x-global@npm:13.5.9":
version: 13.5.9
resolution: "@polkadot/x-global@npm:13.5.9"
dependencies:
tslib: "npm:^2.8.0"
checksum: 10/07ef477f428c73bfbdb242a4511fbbdc2c31ea2641fb577bd1ac479b6567e780a2df0a9aeb1913efe3128703c8f81366b0cf48c491d53663d3c7eff2ebcf4d2e
languageName: node
linkType: hard
"@polkadot/x-global@npm:14.0.1, @polkadot/x-global@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/x-global@npm:14.0.1"
dependencies:
tslib: "npm:^2.8.0"
checksum: 10/f5486c836b4cf95e1a84921961ba7c2fb4426b4f28af3a9e33fb78f7ae846dbe6d39bd2d9916e6eb7e0aed3e7e743c5b432a9437ecff944ed96db1640f25e288
languageName: node
linkType: hard
"@polkadot/x-randomvalues@npm:13.5.9":
version: 13.5.9
resolution: "@polkadot/x-randomvalues@npm:13.5.9"
dependencies:
"@polkadot/x-global": "npm:13.5.9"
tslib: "npm:^2.8.0"
peerDependencies:
"@polkadot/util": 13.5.9
"@polkadot/wasm-util": "*"
checksum: 10/0a1d4066d60ca2e21d129fcd4798634f0d05e67acd86da17d48dd3e79cda1ebcf59861738dc68357068f8fdb2c2894c32e652aee66ee393ecde4b3288f237430
languageName: node
linkType: hard
"@polkadot/x-randomvalues@npm:14.0.1":
version: 14.0.1
resolution: "@polkadot/x-randomvalues@npm:14.0.1"
dependencies:
"@polkadot/x-global": "npm:14.0.1"
tslib: "npm:^2.8.0"
peerDependencies:
"@polkadot/util": 14.0.1
"@polkadot/wasm-util": "*"
checksum: 10/0c382109938786cfe159920de28d53bfe949e54fb60e15a45ce97a3a311c0b62b37051f978aaff1d342a92a8d0684d9065eac6d46138b769dca69fbf61c57fa7
languageName: node
linkType: hard
"@polkadot/x-textdecoder@npm:13.5.9":
version: 13.5.9
resolution: "@polkadot/x-textdecoder@npm:13.5.9"
dependencies:
"@polkadot/x-global": "npm:13.5.9"
tslib: "npm:^2.8.0"
checksum: 10/30d7838f40181add484635c22cecf3be1b8ef53f8ff03a83f16b5bb8881332ef4952a9c564696941d3477a4c2aa83a040a6a45544d19adebf2980568cb46889b
languageName: node
linkType: hard
"@polkadot/x-textdecoder@npm:14.0.1":
version: 14.0.1
resolution: "@polkadot/x-textdecoder@npm:14.0.1"
dependencies:
"@polkadot/x-global": "npm:14.0.1"
tslib: "npm:^2.8.0"
checksum: 10/b33f51f93046fdab0c20b6cc764f52051a06403467fbe8c8742bca5e89ed492ecbb69e4f90a1f8090c330c3ccdcd63311cc695b8f7401212e9085c3804724970
languageName: node
linkType: hard
"@polkadot/x-textencoder@npm:13.5.9":
version: 13.5.9
resolution: "@polkadot/x-textencoder@npm:13.5.9"
dependencies:
"@polkadot/x-global": "npm:13.5.9"
tslib: "npm:^2.8.0"
checksum: 10/c72352f3b603ad9d88192889901ec78088cdac4913b6c147a2b0078e230816d25f7baa0f734636bfeeecbea74c6597aa453e5b2de87e4ca0f2c02ea87a2ad376
languageName: node
linkType: hard
"@polkadot/x-textencoder@npm:14.0.1":
version: 14.0.1
resolution: "@polkadot/x-textencoder@npm:14.0.1"
dependencies:
"@polkadot/x-global": "npm:14.0.1"
tslib: "npm:^2.8.0"
checksum: 10/9627aed6c660c04ee7c633fbe99c68fb172c35ce5e9bdb9afa3ef4d245f8f99ff5da552d6088b25343238d243adedaab7cbd54b7fba5121fe5e3c612337ef404
languageName: node
linkType: hard
"@polkadot/x-ws@npm:^14.0.1":
version: 14.0.1
resolution: "@polkadot/x-ws@npm:14.0.1"
dependencies:
"@polkadot/x-global": "npm:14.0.1"
tslib: "npm:^2.8.0"
ws: "npm:^8.18.0"
checksum: 10/7504fd086619476599bab21aecfdd3699eb9a00518d1bf2e25d07cd838c46d2b887819f1070ad552373a3b33f2484de94d8689f95a67de1aa9d402938e26d19b
languageName: node
linkType: hard
"@rollup/plugin-alias@npm:^5.1.1": "@rollup/plugin-alias@npm:^5.1.1":
version: 5.1.1 version: 5.1.1
resolution: "@rollup/plugin-alias@npm:5.1.1" resolution: "@rollup/plugin-alias@npm:5.1.1"
@@ -3975,7 +3456,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@scure/base@npm:^1.1.1, @scure/base@npm:^1.1.7": "@scure/base@npm:^1.1.7":
version: 1.2.6 version: 1.2.6
resolution: "@scure/base@npm:1.2.6" resolution: "@scure/base@npm:1.2.6"
checksum: 10/c1a7bd5e0b0c8f94c36fbc220f4a67cc832b00e2d2065c7d8a404ed81ab1c94c5443def6d361a70fc382db3496e9487fb9941728f0584782b274c18a4bed4187 checksum: 10/c1a7bd5e0b0c8f94c36fbc220f4a67cc832b00e2d2065c7d8a404ed81ab1c94c5443def6d361a70fc382db3496e9487fb9941728f0584782b274c18a4bed4187
@@ -4017,16 +3498,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@scure/sr25519@npm:^0.2.0":
version: 0.2.0
resolution: "@scure/sr25519@npm:0.2.0"
dependencies:
"@noble/curves": "npm:~1.9.2"
"@noble/hashes": "npm:~1.8.0"
checksum: 10/3c47b474811642b43fd8c96f7846c9d88c9a06eefa7d6360b6421ebdfb6cf582e1e8fdce9ae4708b088a0e323cd6519c883c3a33a284c2fad592414b02f19049
languageName: node
linkType: hard
"@semantic-ui-react/event-stack@npm:^3.1.0": "@semantic-ui-react/event-stack@npm:^3.1.0":
version: 3.1.3 version: 3.1.3
resolution: "@semantic-ui-react/event-stack@npm:3.1.3" resolution: "@semantic-ui-react/event-stack@npm:3.1.3"
@@ -4097,49 +3568,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@substrate/connect-extension-protocol@npm:^2.0.0":
version: 2.2.2
resolution: "@substrate/connect-extension-protocol@npm:2.2.2"
checksum: 10/b5427526dafcbd0ec45d3ce7ef7a3d1018496cae7d8ef60f545d4e143420b3e51fe37af966f493e73f4cb9383bc78af756cdc19294e633240c8a86c620b3d8b5
languageName: node
linkType: hard
"@substrate/connect-known-chains@npm:^1.1.5":
version: 1.10.3
resolution: "@substrate/connect-known-chains@npm:1.10.3"
checksum: 10/b0b4e2914a9c8c0576196ff78f7d0a1ccaf3ee2a02f0b710ee5e79153fdcd4be36e5b7a58998ea72d13f9251dc13d448967114da14efc6aa1891eda284d066bb
languageName: node
linkType: hard
"@substrate/connect@npm:0.8.11":
version: 0.8.11
resolution: "@substrate/connect@npm:0.8.11"
dependencies:
"@substrate/connect-extension-protocol": "npm:^2.0.0"
"@substrate/connect-known-chains": "npm:^1.1.5"
"@substrate/light-client-extension-helpers": "npm:^1.0.0"
smoldot: "npm:2.0.26"
checksum: 10/380ba85aa3aec4439fae2ee42173376615ca60262d9c37e6e43d1d65d0d0f63f38c009bb476e9a612b0b9985c1b5808c4d9a75aff9e1828c77e75c8b7584d824
languageName: node
linkType: hard
"@substrate/light-client-extension-helpers@npm:^1.0.0":
version: 1.0.0
resolution: "@substrate/light-client-extension-helpers@npm:1.0.0"
dependencies:
"@polkadot-api/json-rpc-provider": "npm:^0.0.1"
"@polkadot-api/json-rpc-provider-proxy": "npm:^0.1.0"
"@polkadot-api/observable-client": "npm:^0.3.0"
"@polkadot-api/substrate-client": "npm:^0.1.2"
"@substrate/connect-extension-protocol": "npm:^2.0.0"
"@substrate/connect-known-chains": "npm:^1.1.5"
rxjs: "npm:^7.8.1"
peerDependencies:
smoldot: 2.x
checksum: 10/ca0726e8271aa9eb4f1edbb13e7f6986d45c9a4ae9a73a1a14aa9a41552821ca291a33459b7e8fc1ec1bde1ead9336a8bca4fb8781c060d5cbdd7e59ca96cb2d
languageName: node
linkType: hard
"@substrate/ss58-registry@npm:^1.51.0": "@substrate/ss58-registry@npm:^1.51.0":
version: 1.51.0 version: 1.51.0
resolution: "@substrate/ss58-registry@npm:1.51.0" resolution: "@substrate/ss58-registry@npm:1.51.0"
@@ -5912,13 +5340,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"atomic-sleep@npm:^1.0.0":
version: 1.0.0
resolution: "atomic-sleep@npm:1.0.0"
checksum: 10/3ab6d2cf46b31394b4607e935ec5c1c3c4f60f3e30f0913d35ea74b51b3585e84f590d09e58067f11762eec71c87d25314ce859030983dc0e4397eed21daa12e
languageName: node
linkType: hard
"attr-accept@npm:^2.2.4": "attr-accept@npm:^2.2.4":
version: 2.2.5 version: 2.2.5
resolution: "attr-accept@npm:2.2.5" resolution: "attr-accept@npm:2.2.5"
@@ -6614,13 +6035,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"colorette@npm:^2.0.7":
version: 2.0.20
resolution: "colorette@npm:2.0.20"
checksum: 10/0b8de48bfa5d10afc160b8eaa2b9938f34a892530b2f7d7897e0458d9535a066e3998b49da9d21161c78225b272df19ae3a64d6df28b4c9734c0e55bbd02406f
languageName: node
linkType: hard
"combined-stream@npm:^1.0.8": "combined-stream@npm:^1.0.8":
version: 1.0.8 version: 1.0.8
resolution: "combined-stream@npm:1.0.8" resolution: "combined-stream@npm:1.0.8"
@@ -6630,13 +6044,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"comlink@npm:^4.4.2":
version: 4.4.2
resolution: "comlink@npm:4.4.2"
checksum: 10/ecee53b5b4536b3aa3f7636c383f831e68fbc013def77665cc7fad873d72cfa23b994e1ec4b49e83e4e909c1089a03acae03a523e33a5e5ed938cdb613456434
languageName: node
linkType: hard
"comma-separated-tokens@npm:^2.0.0": "comma-separated-tokens@npm:^2.0.0":
version: 2.0.3 version: 2.0.3
resolution: "comma-separated-tokens@npm:2.0.3" resolution: "comma-separated-tokens@npm:2.0.3"
@@ -7042,13 +6449,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"dateformat@npm:^4.6.3":
version: 4.6.3
resolution: "dateformat@npm:4.6.3"
checksum: 10/5c149c91bf9ce2142c89f84eee4c585f0cb1f6faf2536b1af89873f862666a28529d1ccafc44750aa01384da2197c4f76f4e149a3cc0c1cb2c46f5cc45f2bcb5
languageName: node
linkType: hard
"debug@npm:2.6.9": "debug@npm:2.6.9":
version: 2.6.9 version: 2.6.9
resolution: "debug@npm:2.6.9" resolution: "debug@npm:2.6.9"
@@ -8541,13 +7941,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fast-copy@npm:^4.0.0":
version: 4.1.2
resolution: "fast-copy@npm:4.1.2"
checksum: 10/4198167e409f9e82796db958a6445d94be776721124e5b2eebc91c3cf321840ae700695c356d3f69d9c2fcbe6d19e49eb38ce0d27f39396d2ed39c45064b0a79
languageName: node
linkType: hard
"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3 version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3" resolution: "fast-deep-equal@npm:3.1.3"
@@ -8589,13 +7982,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fast-safe-stringify@npm:^2.1.1":
version: 2.1.1
resolution: "fast-safe-stringify@npm:2.1.1"
checksum: 10/dc1f063c2c6ac9533aee14d406441f86783a8984b2ca09b19c2fe281f9ff59d315298bc7bc22fd1f83d26fe19ef2f20e2ddb68e96b15040292e555c5ced0c1e4
languageName: node
linkType: hard
"fast-uri@npm:^3.0.1": "fast-uri@npm:^3.0.1":
version: 3.1.8 version: 3.1.8
resolution: "fast-uri@npm:3.1.8" resolution: "fast-uri@npm:3.1.8"
@@ -9499,13 +8885,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"help-me@npm:^5.0.0":
version: 5.0.0
resolution: "help-me@npm:5.0.0"
checksum: 10/5f99bd91dae93d02867175c3856c561d7e3a24f16999b08f5fc79689044b938d7ed58457f4d8c8744c01403e6e0470b7896baa344d112b2355842fd935a75d69
languageName: node
linkType: hard
"hermes-estree@npm:0.25.1": "hermes-estree@npm:0.25.1":
version: 0.25.1 version: 0.25.1
resolution: "hermes-estree@npm:0.25.1" resolution: "hermes-estree@npm:0.25.1"
@@ -10620,13 +9999,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"joycon@npm:^3.1.1":
version: 3.1.1
resolution: "joycon@npm:3.1.1"
checksum: 10/4b36e3479144ec196425f46b3618f8a96ce7e1b658f091a309cd4906215f5b7a402d7df331a3e0a09681381a658d0c5f039cb3cf6907e0a1e17ed847f5d37775
languageName: node
linkType: hard
"jquery@npm:x.*": "jquery@npm:x.*":
version: 3.7.1 version: 3.7.1
resolution: "jquery@npm:3.7.1" resolution: "jquery@npm:3.7.1"
@@ -12190,13 +11562,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"on-exit-leak-free@npm:^2.1.0":
version: 2.1.2
resolution: "on-exit-leak-free@npm:2.1.2"
checksum: 10/f7b4b7200026a08f6e4a17ba6d72e6c5cbb41789ed9cf7deaf9d9e322872c7dc5a7898549a894651ee0ee9ae635d34a678115bf8acdfba8ebd2ba2af688b563c
languageName: node
linkType: hard
"on-finished@npm:^2.4.1": "on-finished@npm:^2.4.1":
version: 2.4.1 version: 2.4.1
resolution: "on-finished@npm:2.4.1" resolution: "on-finished@npm:2.4.1"
@@ -12582,75 +11947,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"pino-abstract-transport@npm:^2.0.0":
version: 2.0.0
resolution: "pino-abstract-transport@npm:2.0.0"
dependencies:
split2: "npm:^4.0.0"
checksum: 10/e5699ecb06c7121055978e988e5cecea5b6892fc2589c64f1f86df5e7386bbbfd2ada268839e911b021c6b3123428aed7c6be3ac7940eee139556c75324c7e83
languageName: node
linkType: hard
"pino-abstract-transport@npm:^3.0.0":
version: 3.0.0
resolution: "pino-abstract-transport@npm:3.0.0"
dependencies:
split2: "npm:^4.0.0"
checksum: 10/f42b85b2663c8520839124a55b27801e88c89c65e9569384b49bb4c81b022ae24860020c2375b92a03db699113969007cc155e1fb2dfe53754403920c1cbe18c
languageName: node
linkType: hard
"pino-pretty@npm:^13.0.0":
version: 13.1.3
resolution: "pino-pretty@npm:13.1.3"
dependencies:
colorette: "npm:^2.0.7"
dateformat: "npm:^4.6.3"
fast-copy: "npm:^4.0.0"
fast-safe-stringify: "npm:^2.1.1"
help-me: "npm:^5.0.0"
joycon: "npm:^3.1.1"
minimist: "npm:^1.2.6"
on-exit-leak-free: "npm:^2.1.0"
pino-abstract-transport: "npm:^3.0.0"
pump: "npm:^3.0.0"
secure-json-parse: "npm:^4.0.0"
sonic-boom: "npm:^4.0.1"
strip-json-comments: "npm:^5.0.2"
bin:
pino-pretty: bin.js
checksum: 10/4bb721e1ece378c1c9000457e4fe4a914ea5b8e036551608f5681ca58c8fbacc6b8a31807e93bc0c66d17fb5d96e74b3e4051fb53152955dc51ac58848428e27
languageName: node
linkType: hard
"pino-std-serializers@npm:^7.0.0":
version: 7.1.0
resolution: "pino-std-serializers@npm:7.1.0"
checksum: 10/6e27f6f885927b6df3b424ddb8a9e0e9854f3b59f4abd51afa74e1c2cf33436a505277b004bb00ce61884a962c8fdfd977391205c7baab885d6afb35fce7396a
languageName: node
linkType: hard
"pino@npm:^9.7.0":
version: 9.14.0
resolution: "pino@npm:9.14.0"
dependencies:
"@pinojs/redact": "npm:^0.4.0"
atomic-sleep: "npm:^1.0.0"
on-exit-leak-free: "npm:^2.1.0"
pino-abstract-transport: "npm:^2.0.0"
pino-std-serializers: "npm:^7.0.0"
process-warning: "npm:^5.0.0"
quick-format-unescaped: "npm:^4.0.3"
real-require: "npm:^0.2.0"
safe-stable-stringify: "npm:^2.3.1"
sonic-boom: "npm:^4.0.1"
thread-stream: "npm:^3.0.0"
bin:
pino: bin.js
checksum: 10/918e1fc764885150cb2b4fae8249a0ece53275020a7ca389f994fa2fbbb17b6353cd736c2db3a3794fbac0351f8e3d58411fabe127e875e24151a8fa4cd0b2b5
languageName: node
linkType: hard
"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": "pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0":
version: 4.2.0 version: 4.2.0
resolution: "pkg-dir@npm:4.2.0" resolution: "pkg-dir@npm:4.2.0"
@@ -12928,13 +12224,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"process-warning@npm:^5.0.0":
version: 5.0.0
resolution: "process-warning@npm:5.0.0"
checksum: 10/10f3e00ac9fc1943ec4566ff41fff2b964e660f853c283e622257719839d340b4616e707d62a02d6aa0038761bb1fa7c56bc7308d602d51bd96f05f9cd305dcd
languageName: node
linkType: hard
"process@npm:^0.11.10": "process@npm:^0.11.10":
version: 0.11.10 version: 0.11.10
resolution: "process@npm:0.11.10" resolution: "process@npm:0.11.10"
@@ -13101,13 +12390,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"quick-format-unescaped@npm:^4.0.3":
version: 4.0.4
resolution: "quick-format-unescaped@npm:4.0.4"
checksum: 10/591eca457509a99368b623db05248c1193aa3cedafc9a077d7acab09495db1231017ba3ad1b5386e5633271edd0a03b312d8640a59ee585b8516a42e15438aa7
languageName: node
linkType: hard
"quick-lru@npm:^4.0.1": "quick-lru@npm:^4.0.1":
version: 4.0.1 version: 4.0.1
resolution: "quick-lru@npm:4.0.1" resolution: "quick-lru@npm:4.0.1"
@@ -13446,13 +12728,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"real-require@npm:^0.2.0":
version: 0.2.0
resolution: "real-require@npm:0.2.0"
checksum: 10/ddf44ee76301c774e9c9f2826da8a3c5c9f8fc87310f4a364e803ef003aa1a43c378b4323051ced212097fff1af459070f4499338b36a7469df1d4f7e8c0ba4c
languageName: node
linkType: hard
"recast@npm:^0.11.17": "recast@npm:^0.11.17":
version: 0.11.23 version: 0.11.23
resolution: "recast@npm:0.11.23" resolution: "recast@npm:0.11.23"
@@ -13975,7 +13250,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"rxjs@npm:7.8.2, rxjs@npm:^7.8.1, rxjs@npm:^7.8.2": "rxjs@npm:7.8.2, rxjs@npm:^7.8.1":
version: 7.8.2 version: 7.8.2
resolution: "rxjs@npm:7.8.2" resolution: "rxjs@npm:7.8.2"
dependencies: dependencies:
@@ -14032,13 +13307,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"safe-stable-stringify@npm:^2.3.1":
version: 2.5.0
resolution: "safe-stable-stringify@npm:2.5.0"
checksum: 10/2697fa186c17c38c3ca5309637b4ac6de2f1c3d282da27cd5e1e3c88eca0fb1f9aea568a6aabdf284111592c8782b94ee07176f17126031be72ab1313ed46c5c
languageName: node
linkType: hard
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2 version: 2.1.2
resolution: "safer-buffer@npm:2.1.2" resolution: "safer-buffer@npm:2.1.2"
@@ -14067,7 +13335,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"scale-ts@npm:^1.6.0, scale-ts@npm:^1.6.1": "scale-ts@npm:^1.6.1":
version: 1.6.1 version: 1.6.1
resolution: "scale-ts@npm:1.6.1" resolution: "scale-ts@npm:1.6.1"
checksum: 10/f1f9bf1d9abfcfcaf8ae2ae326270beca5c2456cc72f6b6b8230aa175a30bdcd6387678746a4d873c834efbba9c8e015698d42ee67bd71b70f7adfe2e0ba1d39 checksum: 10/f1f9bf1d9abfcfcaf8ae2ae326270beca5c2456cc72f6b6b8230aa175a30bdcd6387678746a4d873c834efbba9c8e015698d42ee67bd71b70f7adfe2e0ba1d39
@@ -14107,13 +13375,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"secure-json-parse@npm:^4.0.0":
version: 4.1.0
resolution: "secure-json-parse@npm:4.1.0"
checksum: 10/1025c6fd0b8fa0e8c6ac7225fc0b79ecc528b2e51a8446e4bb73bfc47a2450b9e9e9813b84bc9e6735ce30c947b52e5b9d90771521aa9bb2ec216afd24c2da4e
languageName: node
linkType: hard
"selfsigned@npm:^5.5.0": "selfsigned@npm:^5.5.0":
version: 5.5.0 version: 5.5.0
resolution: "selfsigned@npm:5.5.0" resolution: "selfsigned@npm:5.5.0"
@@ -14458,15 +13719,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"smoldot@npm:2.0.26":
version: 2.0.26
resolution: "smoldot@npm:2.0.26"
dependencies:
ws: "npm:^8.8.1"
checksum: 10/b975c8ef16e2286b2eddc8c19c18080bd528f27e9abc0e2731304823e67ebe1fc71b01bed2c070d00da1f7e2f69e25c159c976d27eb1796de4a978362dae701e
languageName: node
linkType: hard
"smoldot@npm:^2.0.34": "smoldot@npm:^2.0.34":
version: 2.0.40 version: 2.0.40
resolution: "smoldot@npm:2.0.40" resolution: "smoldot@npm:2.0.40"
@@ -14497,15 +13749,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"sonic-boom@npm:^4.0.1":
version: 4.2.0
resolution: "sonic-boom@npm:4.2.0"
dependencies:
atomic-sleep: "npm:^1.0.0"
checksum: 10/385ef7fb5ea5976c1d2a1fef0b6df8df6b7caba8696d2d67f689d60c05e3ea2d536752ce7e1c69b9fad844635f1036d07c446f8e8149f5c6a80e0040a455b310
languageName: node
linkType: hard
"sortobject@npm:^4.0.0": "sortobject@npm:^4.0.0":
version: 4.17.0 version: 4.17.0
resolution: "sortobject@npm:4.17.0" resolution: "sortobject@npm:4.17.0"
@@ -14638,13 +13881,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"split2@npm:^4.0.0":
version: 4.2.0
resolution: "split2@npm:4.2.0"
checksum: 10/09bbefc11bcf03f044584c9764cd31a252d8e52cea29130950b26161287c11f519807c5e54bd9e5804c713b79c02cefe6a98f4688630993386be353e03f534ab
languageName: node
linkType: hard
"ssri@npm:^13.0.0": "ssri@npm:^13.0.0":
version: 13.0.0 version: 13.0.0
resolution: "ssri@npm:13.0.0" resolution: "ssri@npm:13.0.0"
@@ -14896,13 +14132,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"strip-json-comments@npm:^5.0.2":
version: 5.0.3
resolution: "strip-json-comments@npm:5.0.3"
checksum: 10/3ccbf26f278220f785e4b71f8a719a6a063d72558cc63cb450924254af258a4f4c008b8c9b055373a680dc7bd525be9e543ad742c177f8a7667e0b726258e0e4
languageName: node
linkType: hard
"strip-json-comments@npm:~2.0.1": "strip-json-comments@npm:~2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "strip-json-comments@npm:2.0.1" resolution: "strip-json-comments@npm:2.0.1"
@@ -15160,15 +14389,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"thread-stream@npm:^3.0.0":
version: 3.1.0
resolution: "thread-stream@npm:3.1.0"
dependencies:
real-require: "npm:^0.2.0"
checksum: 10/ea2d816c4f6077a7062fac5414a88e82977f807c82ee330938fb9691fe11883bb03f078551c0518bb649c239e47ba113d44014fcbb5db42c5abd5996f35e4213
languageName: node
linkType: hard
"through2@npm:^2.0.1": "through2@npm:^2.0.1":
version: 2.0.5 version: 2.0.5
resolution: "through2@npm:2.0.5" resolution: "through2@npm:2.0.5"
@@ -16785,7 +16005,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"zod@npm:^3.21.4, zod@npm:^3.25.76": "zod@npm:^3.21.4":
version: 3.25.76 version: 3.25.76
resolution: "zod@npm:3.25.76" resolution: "zod@npm:3.25.76"
checksum: 10/f0c963ec40cd96858451d1690404d603d36507c1fc9682f2dae59ab38b578687d542708a7fdbf645f77926f78c9ed558f57c3d3aa226c285f798df0c4da16995 checksum: 10/f0c963ec40cd96858451d1690404d603d36507c1fc9682f2dae59ab38b578687d542708a7fdbf645f77926f78c9ed558f57c3d3aa226c285f798df0c4da16995