From 8586fddac5707cddbf4e5db124540f4f17d19035 Mon Sep 17 00:00:00 2001 From: homura Date: Mon, 21 Aug 2023 21:27:27 +0800 Subject: [PATCH 01/20] feat: support spore nft --- packages/neuron-ui/package.json | 2 + .../src/components/SpecialAssetList/hooks.ts | 8 +- .../src/components/SpecialAssetList/index.tsx | 29 +- packages/neuron-ui/src/utils/formatters.ts | 37 ++ packages/neuron-wallet/package.json | 1 + .../src/models/asset-account-info.ts | 41 +++ packages/neuron-wallet/src/models/spore.ts | 27 ++ packages/neuron-wallet/src/services/cells.ts | 30 ++ yarn.lock | 315 +++++++++++++++++- 9 files changed, 478 insertions(+), 12 deletions(-) create mode 100644 packages/neuron-wallet/src/models/spore.ts diff --git a/packages/neuron-ui/package.json b/packages/neuron-ui/package.json index a1e5f3605e..8ef0b8b175 100644 --- a/packages/neuron-ui/package.json +++ b/packages/neuron-ui/package.json @@ -50,6 +50,8 @@ "last 2 chrome versions" ], "dependencies": { + "@ckb-lumos/base": "0.20.0", + "@ckb-lumos/codec": "0.20.0", "@nervosnetwork/ckb-sdk-core": "0.109.0", "@nervosnetwork/ckb-sdk-utils": "0.109.0", "canvg": "2.0.0", diff --git a/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts b/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts index 806abf076c..93a49cf1d4 100644 --- a/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts +++ b/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts @@ -9,6 +9,7 @@ import { nftFormatter, PresetScript, shannonToCKBFormatter, + sporeFormatter, sudtValueToAmount, toUint128Le, useDialogWrapper, @@ -16,7 +17,7 @@ import { } from 'utils' import { TFunction } from 'i18next' import { MILLISECONDS, MILLISECONDS_PER_DAY } from 'utils/const' -import { AssetInfo, ChequeAssetInfo, NFTType } from '.' +import { AssetInfo, ChequeAssetInfo, NFTType, SporeType } from '.' export interface SpecialAssetCell { blockHash: string @@ -193,15 +194,18 @@ export const useSpecialAssetColumnInfo = ({ const isLockedCheque = status === 'withdraw-asset' && targetTime && Date.now() < targetTime const isNFTTransferable = assetInfo.type === NFTType.NFT && assetInfo.data === 'transferable' const isNFTClassOrIssuer = assetInfo.type === NFTType.NFTClass || assetInfo.type === NFTType.NFTIssuer + const isSpore = assetInfo.type === SporeType.Spore if (assetInfo.type === NFTType.NFT) { amount = nftFormatter(type?.args) status = 'transfer-nft' } else if (isNFTClassOrIssuer || assetInfo.type === 'Unknown') { amount = t('special-assets.unknown-asset') + } else if (isSpore) { + amount = sporeFormatter(type?.args, item.data) } - return { amount, status, targetTime, isLockedCheque, isNFTTransferable, isNFTClassOrIssuer, epochsInfo } + return { amount, status, targetTime, isLockedCheque, isNFTTransferable, isNFTClassOrIssuer, epochsInfo, isSpore } }, [epoch, bestKnownBlockTimestamp, tokenInfoList, t] ) diff --git a/packages/neuron-ui/src/components/SpecialAssetList/index.tsx b/packages/neuron-ui/src/components/SpecialAssetList/index.tsx index beef7382d8..f4b4bcdd33 100644 --- a/packages/neuron-ui/src/components/SpecialAssetList/index.tsx +++ b/packages/neuron-ui/src/components/SpecialAssetList/index.tsx @@ -60,6 +60,11 @@ export enum NFTType { NFTIssuer = 'NFTIssuer', } +export enum SporeType { + Spore = 'Spore', + Cluster = 'SporeCluster', +} + export interface NFTAssetInfo { data: string lock: string @@ -400,8 +405,15 @@ const SpecialAssetList = () => { customizedAssetInfo, } = item - const { status, targetTime, isLockedCheque, isNFTTransferable, isNFTClassOrIssuer, epochsInfo } = - handleGetSpecialAssetColumnInfo(item) + const { + status, + targetTime, + isLockedCheque, + isNFTTransferable, + isNFTClassOrIssuer, + epochsInfo, + isSpore, + } = handleGetSpecialAssetColumnInfo(item) if (isNFTClassOrIssuer || (customizedAssetInfo.type === NFTType.NFT && !isNFTTransferable)) { return ( @@ -416,6 +428,19 @@ const SpecialAssetList = () => { ) } + if (isSpore) { + return ( +
+
+ ) + } + let tip = '' const showTip = diff --git a/packages/neuron-ui/src/utils/formatters.ts b/packages/neuron-ui/src/utils/formatters.ts index 8030c37fc2..1a7cd95d7a 100644 --- a/packages/neuron-ui/src/utils/formatters.ts +++ b/packages/neuron-ui/src/utils/formatters.ts @@ -1,3 +1,5 @@ +import { molecule } from '@ckb-lumos/codec' +import { blockchain } from '@ckb-lumos/base' import { TFunction } from 'i18next' import { FailureFromController } from 'services/remote/remoteApiWrapper' import { CapacityUnit } from './enums' @@ -295,6 +297,41 @@ export const nftFormatter = (hex?: string, idOnly = false) => { return `#${id} mNFT` } +export const sporeFormatter = (args?: string, data?: string) => { + let format = 'Spore' + + const SporeData = molecule.table( + { + contentType: blockchain.Bytes, + content: blockchain.Bytes, + clusterId: blockchain.BytesOpt, + }, + ['contentType', 'content', 'clusterId'] + ) + + if (!data) { + format = `[Unbound] ${format}` + } else { + try { + const unpacked = SporeData.unpack(data) + if (!unpacked.clusterId) { + format = `[Unbound] ${format}` + } else { + format = `[${unpacked.clusterId.slice(0, 8)}...${unpacked.clusterId.slice(-8)}] ${format}` + } + } catch { + // the Spore contract seems not guarantee the data always valid + // empty catch here to avoid crash + } + } + + if (args) { + format = `[${args.slice(0, 8)}...${args.slice(-8)}] ${format}` + } + + return format +} + export const errorFormatter = (error: string | FailureFromController['message'], t: TFunction) => { // empty string should return unknown error too const unknownError = t('messages.unknown-error') diff --git a/packages/neuron-wallet/package.json b/packages/neuron-wallet/package.json index 5a95b76015..716b69b5bd 100644 --- a/packages/neuron-wallet/package.json +++ b/packages/neuron-wallet/package.json @@ -46,6 +46,7 @@ "@ledgerhq/hw-transport-node-hid": "6.27.16", "@nervosnetwork/ckb-sdk-core": "0.109.0", "@nervosnetwork/ckb-sdk-utils": "0.109.0", + "@spore-sdk/core": "^0.1.0-beta.9", "archiver": "5.3.0", "async": "3.2.4", "bn.js": "4.12.0", diff --git a/packages/neuron-wallet/src/models/asset-account-info.ts b/packages/neuron-wallet/src/models/asset-account-info.ts index af97883dad..7fc89bdc5f 100644 --- a/packages/neuron-wallet/src/models/asset-account-info.ts +++ b/packages/neuron-wallet/src/models/asset-account-info.ts @@ -7,6 +7,8 @@ import Transaction from './chain/transaction' import SystemScriptInfo from './system-script-info' import { Address } from './address' import { createFixedHexBytesCodec } from '@ckb-lumos/codec/lib/blockchain' +import { predefinedSporeConfigs, SporeScript } from '@spore-sdk/core' +import { toScriptInfo } from './spore' export interface ScriptCellInfo { cellDep: CellDep @@ -25,6 +27,9 @@ export default class AssetAccountInfo { private nftClassInfo: ScriptCellInfo private nftInfo: ScriptCellInfo + private sporeInfos: ScriptCellInfo[] + private sporeClusterInfos: ScriptCellInfo[] + private static MAINNET_GENESIS_BLOCK_HASH: string = '0x92b197aa1fba0f63633922c61c92375c9c074a93e85963554f5499fe1450d0e5' @@ -110,6 +115,10 @@ export default class AssetAccountInfo { codeHash: process.env.MAINNET_NFT_SCRIPT_CODEHASH!, hashType: process.env.MAINNET_NFT_SCRIPT_HASH_TYPE! as ScriptHashType, } + + // TODO infos for mainnet + this.sporeInfos = [] + this.sporeClusterInfos = [] } else { this.sudt = { cellDep: new CellDep( @@ -183,6 +192,30 @@ export default class AssetAccountInfo { codeHash: process.env.TESTNET_NFT_SCRIPT_CODEHASH!, hashType: process.env.TESTNET_NFT_SCRIPT_HASH_TYPE! as ScriptHashType, } + + const { Spore, Cluster } = predefinedSporeConfigs.Aggron4.scripts + + this.sporeInfos = ( + [ + // TODO remove me, for devnet only + { + script: { + codeHash: '0xbbad126377d45f90a8ee120da988a2d7332c78ba8fd679aab478a19d6c133494', + hashType: 'data1', + }, + cellDep: { + outPoint: { + txHash: '0xe8d710a05265e9325e4f1f28333167368026fd364a0d82dbf2866c53607fb0c6', + index: '0x0', + }, + depType: 'code', + }, + }, + Spore, + ...(Spore.versions || []), + ] satisfies SporeScript[] + ).map(toScriptInfo) + this.sporeClusterInfos = [Cluster, ...(Cluster.versions || [])].map(toScriptInfo) } } @@ -222,6 +255,14 @@ export default class AssetAccountInfo { return this.nftInfo } + public getSporeInfos(): ScriptCellInfo[] { + return this.sporeInfos + } + + public getSporeClusterInfo(): ScriptCellInfo[] { + return this.sporeClusterInfos + } + public getAcpCodeHash(): string { return this.anyoneCanPayInfo.codeHash } diff --git a/packages/neuron-wallet/src/models/spore.ts b/packages/neuron-wallet/src/models/spore.ts new file mode 100644 index 0000000000..c9cbeaff48 --- /dev/null +++ b/packages/neuron-wallet/src/models/spore.ts @@ -0,0 +1,27 @@ +import { ScriptCellInfo } from './asset-account-info' +import { SporeScript } from '@spore-sdk/core' +import OutPoint from './chain/out-point' +import CellDep, { DepType } from './chain/cell-dep' +import { ScriptHashType } from './chain/script' + +export function toScriptInfo(sporeConfig: SporeScript): ScriptCellInfo { + const cellDep = sporeConfig.cellDep + + const hashType: ScriptHashType = (() => { + const sporeScriptHashType = sporeConfig.script.hashType + if (sporeScriptHashType === 'type') return ScriptHashType.Type + if (sporeScriptHashType === 'data') return ScriptHashType.Data + if (sporeScriptHashType === 'data1') return ScriptHashType.Data1 + + throw new Error(`Invalid hash type: ${sporeScriptHashType}`) + })() + + return { + cellDep: new CellDep( + new OutPoint(cellDep.outPoint.txHash, cellDep.outPoint.index), + cellDep.depType === 'depGroup' ? DepType.DepGroup : DepType.Code + ), + hashType: hashType, + codeHash: sporeConfig.script.codeHash, + } +} diff --git a/packages/neuron-wallet/src/services/cells.ts b/packages/neuron-wallet/src/services/cells.ts index 44e0e10d84..b9f18c0cec 100644 --- a/packages/neuron-wallet/src/services/cells.ts +++ b/packages/neuron-wallet/src/services/cells.ts @@ -30,6 +30,9 @@ import NFT from '../models/nft' import MultisigConfigModel from '../models/multisig-config' import MultisigOutput from '../database/chain/entities/multisig-output' import { MIN_CELL_CAPACITY } from '../utils/const' +import { bytes } from '@ckb-lumos/codec' +import { generateRPC } from '../utils/ckb-rpc' +import NodeService from './node' export interface PaginationResult { totalCount: number @@ -46,7 +49,12 @@ export enum CustomizedType { NFT = 'NFT', NFTClass = 'NFTClass', NFTIssuer = 'NFTIssuer', + SUDT = 'SUDT', + + Spore = 'Spore', + SporeCluster = 'SporeCluster', + Unknown = 'Unknown', } @@ -264,6 +272,8 @@ export default class CellsService { const nftCodehash = assetAccountInfo.getNftInfo().codeHash const acpCodehash = assetAccountInfo.getAcpCodeHash() const sudtCodehash = assetAccountInfo.getSudtCodeHash() + const sporeInfos = assetAccountInfo.getSporeInfos() + const secp256k1LockHashes = [...blake160Hashes].map(blake160 => SystemScriptInfo.generateSecpScript(blake160).computeHash() ) @@ -324,6 +334,20 @@ export default class CellsService { .orderBy('tx.timestamp', 'ASC') .getMany() + // datum in outputs has been spliced when sync + // to make the Spore NFT data available, + // we need to fetch it from RPC instead of database + const rpc = generateRPC(NodeService.getInstance().nodeUrl) + const sporeOutputs = allMultiSignOutputs.filter(item => + sporeInfos.some(info => item.typeCodeHash && bytes.equal(info.codeHash, item.typeCodeHash)) + ) + await Promise.all( + sporeOutputs.map(async output => { + const tx = await rpc.getTransaction(output.outPointTxHash) + output.data = tx.transaction.outputsData[Number(output.outPointIndex)] + }) + ) + const matchedOutputs = allMultiSignOutputs.filter(o => { if (o.multiSignBlake160) { return multiSignHashes.has(o.multiSignBlake160) @@ -401,6 +425,12 @@ export default class CellsService { type: CustomizedType.SUDT, data: '', }) + } else if (sporeInfos.some(info => o.typeCodeHash && bytes.equal(info.codeHash, o.typeCodeHash))) { + cell.setCustomizedAssetInfo({ + lock: '', + type: CustomizedType.Spore, + data: '', + }) } else { cell.setCustomizedAssetInfo({ lock: '', diff --git a/yarn.lock b/yarn.lock index 528f8c429b..821e768f10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1366,13 +1366,20 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" + integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.20.7", "@babel/template@^7.22.5", "@babel/template@^7.3.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" @@ -1442,6 +1449,34 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@ckb-lumos/base@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.0.0-canary-1cb43fe-20230816060512.tgz#991cd6518a48ab9436668d7144d58f533effbc0f" + integrity sha512-SDb5arYtmQNbxhh/B12Ggf20NSb5fTsDs2WlJ4KtZXQq/Ud22xwdjyMCjQC/Dw08XuJsZw/suTX1FCKOiFYMtw== + dependencies: + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" + "@types/blake2b" "^2.1.0" + "@types/lodash.isequal" "^4.5.5" + blake2b "^2.1.3" + js-xxhash "^1.0.4" + lodash.isequal "^4.5.0" + +"@ckb-lumos/base@0.20.0", "@ckb-lumos/base@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.20.0.tgz#d18164ec60eae3f3a97a4bc48e1399e6e0c190d9" + integrity sha512-Zz4+iO7d7dJBMtn/7icD9uuld2fBUGI+RqoBumXW8mem3xDw41Vb4vL0knxVdOFF1EkuSX5yZ796f83h8Q/6zw== + dependencies: + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + "@types/blake2b" "^2.1.0" + "@types/lodash.isequal" "^4.5.5" + blake2b "^2.1.3" + js-xxhash "^1.0.4" + lodash.isequal "^4.5.0" + "@ckb-lumos/base@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.20.0-alpha.3.tgz#5cc257b708e4fc894f11028ec46616fb4750fc49" @@ -1456,6 +1491,20 @@ js-xxhash "^1.0.4" lodash.isequal "^4.5.0" +"@ckb-lumos/bi@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.0.0-canary-1cb43fe-20230816060512.tgz#07935767a3b13949d86449adf4aa8eb8815dfbd2" + integrity sha512-gW69UP905RLCmCy57JIt2/67gWW8TDUGwVrBs2O7JrB9kqkPVUb0Nlujev4xAwJaBb3oV9rtU6/g11B9cnu/yg== + dependencies: + jsbi "^4.1.0" + +"@ckb-lumos/bi@0.20.0", "@ckb-lumos/bi@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.20.0.tgz#4fa3beca641737b7b83a64d56668067e38cc288d" + integrity sha512-cJtv1NnvC11oQbDC8f3jIGTYdyEs2m8GvSrZgGL5KjBoaHTWghH8v6Z2XkwFgHmmCwfX5KrdXekrsOWrcIXyqw== + dependencies: + jsbi "^4.1.0" + "@ckb-lumos/bi@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.20.0-alpha.3.tgz#7c20776558d33b838e54550be22ff8eed909a3e4" @@ -1463,6 +1512,31 @@ dependencies: jsbi "^4.1.0" +"@ckb-lumos/ckb-indexer@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.0.0-canary-1cb43fe-20230816060512.tgz#dacb8105ee17cd0db27942df4be8d9f9c927c075" + integrity sha512-5lLfS5LfPL3l/AxGtDudhCg15iWpu3uFEq/GFq2TKAzQVion5BjVNQwarHtg4OgSjkXi5eFpaDt5RNoR2tySaQ== + dependencies: + "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/rpc" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" + cross-fetch "^3.1.5" + events "^3.3.0" + +"@ckb-lumos/ckb-indexer@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.20.0.tgz#c6792821e3b903f998a891b14892ff67229d3957" + integrity sha512-bw5HiuAleTa9D4l3xW+0+kYh49CH3bjRNPHxv/ySVy1TxTAYEJA6qjcIOE81T8U6qSnUxY1KKiAjk2bO+mo05w== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/rpc" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + cross-fetch "^3.1.5" + events "^3.3.0" + "@ckb-lumos/ckb-indexer@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.20.0-alpha.3.tgz#6d20f59b197d90ff83f8c73508416019a49a4865" @@ -1475,6 +1549,20 @@ cross-fetch "^3.1.5" events "^3.3.0" +"@ckb-lumos/codec@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.0.0-canary-1cb43fe-20230816060512.tgz#884fa89b42e3a39f0ef16ffb677d397e523d157e" + integrity sha512-yJszCpZdC52oza0f0mF1g26YODxVznaN77DfeVAD7ziEOFOYdly1mCzWkP/qdBDggxPO8WIoYwUlv85HgBfu4w== + dependencies: + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + +"@ckb-lumos/codec@0.20.0", "@ckb-lumos/codec@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.20.0.tgz#bb07707c5976b3b706b78f253e680cdc431ca898" + integrity sha512-NHBPIaiNYz5yX0RGSM0Qz1effLnVTt0wJHPfLVAkuzNRBg5/xRZySjYOemOsogbX1t4s3Yk7N0Q17tr02AUh3A== + dependencies: + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.20.0-alpha.3.tgz#e177efc177cc9200c793b52281ab5bdf350b40ef" @@ -1482,6 +1570,159 @@ dependencies: "@ckb-lumos/bi" "0.20.0-alpha.3" +"@ckb-lumos/common-scripts@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/common-scripts/-/common-scripts-0.0.0-canary-1cb43fe-20230816060512.tgz#e8c81103773f20a41bb332f8207dccfe308adf16" + integrity sha512-U+D01tA+kEcuNbkcN6Vs6Y4Ay1fBFD2QbHRfEoFk3JzjAERtpYqRVuoq4fGrRZUjL0yQRWNqWsZVeu9TobqPJQ== + dependencies: + "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/config-manager" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/helpers" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/rpc" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" + immutable "^4.3.0" + +"@ckb-lumos/common-scripts@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/common-scripts/-/common-scripts-0.20.0.tgz#7f95fb91d3c275ff557197269225a15a634811b6" + integrity sha512-GSCayhyt+G0k9fNGK3bjVif2PDWbo47ovUEM0CiRuG0YrhvBYbuq69mpQ3nKezI1IKI3UZyYOax7SqhYBCJ5VQ== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec" "0.20.0" + "@ckb-lumos/config-manager" "0.20.0" + "@ckb-lumos/helpers" "0.20.0" + "@ckb-lumos/rpc" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + immutable "^4.0.0-rc.12" + +"@ckb-lumos/config-manager@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.0.0-canary-1cb43fe-20230816060512.tgz#55d50fe6fae940907c09ee5ce5be94d64999b7b7" + integrity sha512-y6rhuISa/RQtx4GRZAPUsqwHfbHBTGHHt2fyjJJAdBzvLP/iDJ8xLV2qy+tF/wT0q1Tuqs2VE3wG8QEYoi2Evw== + dependencies: + "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" + "@types/deep-freeze-strict" "^1.1.0" + deep-freeze-strict "^1.1.1" + +"@ckb-lumos/config-manager@0.20.0", "@ckb-lumos/config-manager@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.20.0.tgz#f24946971005f62df62e22c3306947b5e820c181" + integrity sha512-YNhowInBGuOVMRBuhDWznhcB+83vLzYSL6HAlGCBbm2yT7lDmIrrVWh731hISmuaXeMt4IFupLfGXxpelB6zCA== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec" "0.20.0" + "@types/deep-freeze-strict" "^1.1.0" + deep-freeze-strict "^1.1.1" + +"@ckb-lumos/hd@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/hd/-/hd-0.0.0-canary-1cb43fe-20230816060512.tgz#b3120f5fe2fdcd7fb74ba5dc48a1a64d7fa6e29a" + integrity sha512-N/1XsB039czBrF9lTC5CCoCB3ToUD6iU7YBlaf6nYLaNeomggxXoUboGNA4m59ZNgxS3byX9NIx6syAFB/RuxA== + dependencies: + "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + bn.js "^5.1.3" + elliptic "^6.5.4" + scrypt-js "^3.0.1" + sha3 "^2.1.3" + uuid "^8.3.0" + +"@ckb-lumos/hd@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/hd/-/hd-0.20.0.tgz#4b51fb881313ca193a876ae93257f2d5a13df46c" + integrity sha512-vPzMFZwYpuOVEiQ8WeY6+TVGy0Hcdau7okbMX6mks87Kt1f8qEyW5uAP8xFWA0UmsOGucdJKirjRfSvsAPzbIw== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + bn.js "^5.1.3" + elliptic "^6.5.4" + scrypt-js "^3.0.1" + sha3 "^2.1.3" + uuid "^8.3.0" + +"@ckb-lumos/helpers@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.0.0-canary-1cb43fe-20230816060512.tgz#0b5b9427599427c980b829ca54107b164264e902" + integrity sha512-xqREWtCf4nOCCTHS1zCgJ+D0oInb5Eja2eIUbuKPUk1BklDIl6Kl7LYEF+NVtzCnxjzpxJh2mk90EAe3I3hDFQ== + dependencies: + "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/config-manager" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" + bech32 "^2.0.0" + immutable "^4.3.0" + +"@ckb-lumos/helpers@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.20.0.tgz#bc0555aeaba146ce90726ac87acad7e2200112c7" + integrity sha512-UWxiJSljZcN1zH6Blv5HyjNGgA9VSXyXFh8VSYD7W1xEeHYK05LP00rRWtEr8Z+KSfuuZ0ASg2sJofBDv/UZ9w== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/config-manager" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + bech32 "^2.0.0" + immutable "^4.0.0-rc.12" + +"@ckb-lumos/lumos@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/lumos/-/lumos-0.0.0-canary-1cb43fe-20230816060512.tgz#c044f2f161199e5be071e1251fb36bc066cb5e36" + integrity sha512-WpSczDNtiq6DlmYCJaew6S+qCwjra+TxgFQqtgIOs6bOWDKy+rms7rkDeuIl/OuejoCq6cT0JeZt2ifcrPe8Cw== + dependencies: + "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/ckb-indexer" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/common-scripts" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/config-manager" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/hd" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/helpers" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/rpc" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" + +"@ckb-lumos/lumos@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/lumos/-/lumos-0.20.0.tgz#47cd173affa81051f8a8fa60c91c366001d82d6c" + integrity sha512-LIKf1tDNk0HkK3DQ+BV4dmj/B7nfkbVXlPbzqxwLRaqHTbAArXs8g3JXGfmjZIgpoU6sfXdArO1jVpGRN1xnYg== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/ckb-indexer" "0.20.0" + "@ckb-lumos/common-scripts" "0.20.0" + "@ckb-lumos/config-manager" "0.20.0" + "@ckb-lumos/hd" "0.20.0" + "@ckb-lumos/helpers" "0.20.0" + "@ckb-lumos/rpc" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + +"@ckb-lumos/rpc@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.0.0-canary-1cb43fe-20230816060512.tgz#9ed696b8754f2e43aea178b04be9af36629bf12a" + integrity sha512-YvpoRmiYV0jRYwDbHljBdXAykDQ0X/OW0yr89A4UX2a9C5VGrMcNdxKUP1mxUgIK9hNEp7vrKSk8S8uA09AtZA== + dependencies: + "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" + "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" + "@vespaiach/axios-fetch-adapter" "^0.3.1" + axios "0.27.2" + tslib "2.3.1" + +"@ckb-lumos/rpc@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.20.0.tgz#7da342c6db0403ecf654c0281e004653c1220dc0" + integrity sha512-vAH/rXMnKYcyKVW8/vg5EvY9roW46FlDod/efLGN5FQyROn0O5Y9PTO/7bs4U1KyPeceHQpRW0ZAQ/KEHBWEzA== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@vespaiach/axios-fetch-adapter" "^0.3.1" + axios "0.27.2" + tslib "2.3.1" + "@ckb-lumos/rpc@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.20.0-alpha.3.tgz#e1c7d1aaaaedfca1d7da75aac699ffd2fa060cc5" @@ -1493,6 +1734,16 @@ axios "0.27.2" tslib "2.3.1" +"@ckb-lumos/toolkit@0.0.0-canary-1cb43fe-20230816060512": + version "0.0.0-canary-1cb43fe-20230816060512" + resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.0.0-canary-1cb43fe-20230816060512.tgz#e275bf3fca1dad0dcc1fa7010b5ca0954318bf09" + integrity sha512-yXrzvFMqkH/zu+xznllqBulmiBob9Nq4pUJ8wBcR1/wYbAQ78jqJZwgIYbHFvOlCbNcoQa45GElX18oaCbtsLQ== + +"@ckb-lumos/toolkit@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.20.0.tgz#8f71043324e50c8a3e94c65414325482d874cfca" + integrity sha512-nLNXRPG20NqUdXwHAnKwr0T7nZyDrf4fGwIrsxo+7ffqWeg9wNEhZoqTBJLgxEpoe0I+WHRLwYLiwUbkkqR1SQ== + "@ckb-lumos/toolkit@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.20.0-alpha.3.tgz#17ccd898abf00a601a58d4776031bc8de0df7a8e" @@ -2957,6 +3208,19 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@spore-sdk/core@^0.1.0-beta.9": + version "0.1.0-beta.9" + resolved "https://registry.yarnpkg.com/@spore-sdk/core/-/core-0.1.0-beta.9.tgz#0ec68155367f72c5dcd40de7dcdbc12029a69e5d" + integrity sha512-Bku2Wrya1bFBAvBhWnzCnHMrZF1y4qWKES27dKYVOIZghBPK5WAYU2fDGWRCuU8YhueUOdqeUnkbVxc0mgyfuA== + dependencies: + "@ckb-lumos/base" "^0.20.0" + "@ckb-lumos/bi" "^0.20.0" + "@ckb-lumos/codec" "^0.20.0" + "@ckb-lumos/config-manager" "^0.20.0" + "@ckb-lumos/lumos" "^0.20.0" + lodash "^4.17.21" + whatwg-mimetype "^3.0.0" + "@sqltools/formatter@^1.2.2": version "1.2.5" resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" @@ -4076,6 +4340,11 @@ dependencies: "@types/ms" "*" +"@types/deep-freeze-strict@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/deep-freeze-strict/-/deep-freeze-strict-1.1.0.tgz#447a6a2576191344aa42310131dd3df5c41492c4" + integrity sha512-fILflsS66kGQ4iIBzYoxuQCWK1wQdy/ooguTofUk0KSxA+G5ZzH8WdU8mf6IU+5cMBW+j9u+eh+7kv63R3O9Tw== + "@types/detect-port@^1.3.0": version "1.3.3" resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.3.tgz#124c5d4c283f48a21f80826bcf39433b3e64aa81" @@ -5980,7 +6249,7 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -bech32@2.0.0: +bech32@2.0.0, bech32@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== @@ -6083,6 +6352,11 @@ bn.js@4.12.0, bn.js@^4.11.9: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bn.js@^5.1.3: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -7571,6 +7845,11 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze-strict@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-freeze-strict/-/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0" + integrity sha512-QemROZMM2IvhAcCFvahdX2Vbm4S/txeq5rFYU9fh4mQP79WTMW5c/HkQ2ICl1zuzcDZdPZ6zarDxQeQMsVYoNA== + deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -8145,7 +8424,7 @@ electron@24.6.0: "@types/node" "^18.11.18" extract-zip "^2.0.1" -elliptic@6.5.4: +elliptic@6.5.4, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -10444,6 +10723,11 @@ immutable@^4.0.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== +immutable@^4.0.0-rc.12, immutable@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.2.tgz#f89d910f8dfb6e15c03b2cae2faaf8c1f66455fe" + integrity sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA== + import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -15200,9 +15484,9 @@ react-error-overlay@^6.0.11: integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-i18next@12.1.5, react-i18next@>=11.16.4: - version "13.0.1" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.0.1.tgz#4d047d2d63d9616f7f5fd4ca88b1cc449cc15290" - integrity sha512-gMO6N2GfSfuH7xlHSsZ/mZf+Py9bLm/+EDKIn5fNTuDTjcCcwmMU5UEuGCDk5mdfivbo7ySyYXBN7B9tbGUxiA== + version "13.1.2" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.1.2.tgz#dbb1b18c364295af2a9072333ee4e0b43cbc2da8" + integrity sha512-D/OJ/8ZQYscabsvbCAiOgvJq8W3feQF/VIV0to1w7V7UvrUE1IZ3hcalOckUYvKBd7BP3b8EPm+hop3J8sS+Mw== dependencies: "@babel/runtime" "^7.22.5" html-parse-stringify "^3.0.1" @@ -15548,6 +15832,11 @@ regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + regenerator-transform@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" @@ -16019,6 +16308,11 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -16177,7 +16471,7 @@ sha.js@^2.4.11: inherits "^2.0.1" safe-buffer "^5.0.1" -sha3@2.1.4: +sha3@2.1.4, sha3@^2.1.3: version "2.1.4" resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== @@ -17805,7 +18099,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@8.3.2, uuid@^8.3.2: +uuid@8.3.2, uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -18104,6 +18398,11 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" From 918b9137c193e84424dfd0f1e8e9a0efe27cb251 Mon Sep 17 00:00:00 2001 From: homura Date: Mon, 28 Aug 2023 21:18:28 +0800 Subject: [PATCH 02/20] feat: display cluster name in asset list --- .../src/components/SpecialAssetList/hooks.ts | 2 +- packages/neuron-ui/src/utils/formatters.ts | 6 +- .../src/models/asset-account-info.ts | 21 ++- packages/neuron-wallet/src/models/spore.ts | 39 +++++- packages/neuron-wallet/src/services/cells.ts | 41 +++++- yarn.lock | 125 +----------------- 6 files changed, 100 insertions(+), 134 deletions(-) diff --git a/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts b/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts index 93a49cf1d4..fde6599e5b 100644 --- a/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts +++ b/packages/neuron-ui/src/components/SpecialAssetList/hooks.ts @@ -202,7 +202,7 @@ export const useSpecialAssetColumnInfo = ({ } else if (isNFTClassOrIssuer || assetInfo.type === 'Unknown') { amount = t('special-assets.unknown-asset') } else if (isSpore) { - amount = sporeFormatter(type?.args, item.data) + amount = sporeFormatter(type?.args, item.data, item.customizedAssetInfo.data) } return { amount, status, targetTime, isLockedCheque, isNFTTransferable, isNFTClassOrIssuer, epochsInfo, isSpore } diff --git a/packages/neuron-ui/src/utils/formatters.ts b/packages/neuron-ui/src/utils/formatters.ts index 1a7cd95d7a..306feb47b0 100644 --- a/packages/neuron-ui/src/utils/formatters.ts +++ b/packages/neuron-ui/src/utils/formatters.ts @@ -297,7 +297,7 @@ export const nftFormatter = (hex?: string, idOnly = false) => { return `#${id} mNFT` } -export const sporeFormatter = (args?: string, data?: string) => { +export const sporeFormatter = (args?: string, data?: string, name?: string) => { let format = 'Spore' const SporeData = molecule.table( @@ -316,8 +316,10 @@ export const sporeFormatter = (args?: string, data?: string) => { const unpacked = SporeData.unpack(data) if (!unpacked.clusterId) { format = `[Unbound] ${format}` - } else { + } else if (!name) { format = `[${unpacked.clusterId.slice(0, 8)}...${unpacked.clusterId.slice(-8)}] ${format}` + } else { + format = `[${name}] ${format}` } } catch { // the Spore contract seems not guarantee the data always valid diff --git a/packages/neuron-wallet/src/models/asset-account-info.ts b/packages/neuron-wallet/src/models/asset-account-info.ts index 7fc89bdc5f..141111f93c 100644 --- a/packages/neuron-wallet/src/models/asset-account-info.ts +++ b/packages/neuron-wallet/src/models/asset-account-info.ts @@ -215,7 +215,26 @@ export default class AssetAccountInfo { ...(Spore.versions || []), ] satisfies SporeScript[] ).map(toScriptInfo) - this.sporeClusterInfos = [Cluster, ...(Cluster.versions || [])].map(toScriptInfo) + this.sporeClusterInfos = ( + [ + // TODO remove me, for dev net only + { + script: { + codeHash: '0x598d793defef36e2eeba54a9b45130e4ca92822e1d193671f490950c3b856080', + hashType: 'data1', + }, + cellDep: { + outPoint: { + txHash: '0x251ca5eb94f4d14f532e3962cfeb356e02580db31d4d53a09e5aa080f75a2407', + index: '0x0', + }, + depType: 'code', + }, + }, + Cluster, + ...(Cluster.versions || []), + ] satisfies SporeScript[] + ).map(toScriptInfo) } } diff --git a/packages/neuron-wallet/src/models/spore.ts b/packages/neuron-wallet/src/models/spore.ts index c9cbeaff48..f7d7a2c06d 100644 --- a/packages/neuron-wallet/src/models/spore.ts +++ b/packages/neuron-wallet/src/models/spore.ts @@ -1,8 +1,10 @@ -import { ScriptCellInfo } from './asset-account-info' -import { SporeScript } from '@spore-sdk/core' +import AssetAccountInfo, { ScriptCellInfo } from './asset-account-info' +import { SporeConfig, SporeScript } from '@spore-sdk/core' import OutPoint from './chain/out-point' import CellDep, { DepType } from './chain/cell-dep' import { ScriptHashType } from './chain/script' +import NetworksService from '../services/networks' +import NodeService from '../services/node' export function toScriptInfo(sporeConfig: SporeScript): ScriptCellInfo { const cellDep = sporeConfig.cellDep @@ -25,3 +27,36 @@ export function toScriptInfo(sporeConfig: SporeScript): ScriptCellInfo { codeHash: sporeConfig.script.codeHash, } } + +export function toSporeScript(info: ScriptCellInfo): SporeScript { + return { + script: { codeHash: info.codeHash, hashType: info.hashType }, + cellDep: info.cellDep, + } +} + +export function getSporeConfig(): SporeConfig { + const spore = new AssetAccountInfo().getSporeInfos() + const cluster = new AssetAccountInfo().getSporeClusterInfo() + + return { + scripts: { + Spore: { + ...toSporeScript(spore[0]), + versions: spore.slice(1).map(toSporeScript), + }, + + Cluster: { + ...toSporeScript(cluster[0]), + versions: cluster.slice(1).map(toSporeScript), + }, + }, + lumos: { + PREFIX: NetworksService.getInstance().isMainnet() ? 'ckb' : 'ckt', + SCRIPTS: {}, + }, + ckbIndexerUrl: NodeService.getInstance().nodeUrl, + ckbNodeUrl: NodeService.getInstance().nodeUrl, + extensions: [], + } +} diff --git a/packages/neuron-wallet/src/services/cells.ts b/packages/neuron-wallet/src/services/cells.ts index b9f18c0cec..237a02f3c2 100644 --- a/packages/neuron-wallet/src/services/cells.ts +++ b/packages/neuron-wallet/src/services/cells.ts @@ -13,7 +13,8 @@ import InputEntity from '../database/chain/entities/input' import TransactionEntity from '../database/chain/entities/transaction' import TransactionSize from '../models/transaction-size' import TransactionFee from '../models/transaction-fee' -import Cell, { OutputStatus } from '../models/chain/output' +import Cell from '../models/chain/output' +import Output, { OutputStatus } from '../models/chain/output' import { TransactionStatus } from '../models/chain/transaction' import OutPoint from '../models/chain/out-point' import Input from '../models/chain/input' @@ -21,7 +22,6 @@ import WitnessArgs from '../models/chain/witness-args' import Multisig from '../models/multisig' import BufferUtils from '../utils/buffer' import LiveCell from '../models/chain/live-cell' -import Output from '../models/chain/output' import SystemScriptInfo from '../models/system-script-info' import Script, { ScriptHashType } from '../models/chain/script' import LiveCellService from './live-cell-service' @@ -33,6 +33,8 @@ import { MIN_CELL_CAPACITY } from '../utils/const' import { bytes } from '@ckb-lumos/codec' import { generateRPC } from '../utils/ckb-rpc' import NodeService from './node' +import { getClusterCellById, SporeData, unpackToRawClusterData } from '@spore-sdk/core' +import { getSporeConfig } from '../models/spore' export interface PaginationResult { totalCount: number @@ -341,10 +343,28 @@ export default class CellsService { const sporeOutputs = allMultiSignOutputs.filter(item => sporeInfos.some(info => item.typeCodeHash && bytes.equal(info.codeHash, item.typeCodeHash)) ) + + type ClusterId = string + const clusterNames: Record = {} await Promise.all( sporeOutputs.map(async output => { const tx = await rpc.getTransaction(output.outPointTxHash) - output.data = tx.transaction.outputsData[Number(output.outPointIndex)] + const data = tx.transaction.outputsData[Number(output.outPointIndex)] + output.data = data + + try { + const { clusterId } = SporeData.unpack(data) + + if (!clusterId) { + return + } + + const clusterCell = await getClusterCellById(clusterId, getSporeConfig()) + const { name } = unpackToRawClusterData(clusterCell.data) + clusterNames[clusterId] = name + } catch { + // avoid crash + } }) ) @@ -426,10 +446,23 @@ export default class CellsService { data: '', }) } else if (sporeInfos.some(info => o.typeCodeHash && bytes.equal(info.codeHash, o.typeCodeHash))) { + const data = (() => { + try { + const { clusterId } = SporeData.unpack(o.data) + + if (clusterId && clusterNames[clusterId]) { + return clusterNames[clusterId] + } + + return '' + } catch { + return '' + } + })() cell.setCustomizedAssetInfo({ lock: '', type: CustomizedType.Spore, - data: '', + data: data, }) } else { cell.setCustomizedAssetInfo({ diff --git a/yarn.lock b/yarn.lock index 821e768f10..71599e37d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1449,20 +1449,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@ckb-lumos/base@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.0.0-canary-1cb43fe-20230816060512.tgz#991cd6518a48ab9436668d7144d58f533effbc0f" - integrity sha512-SDb5arYtmQNbxhh/B12Ggf20NSb5fTsDs2WlJ4KtZXQq/Ud22xwdjyMCjQC/Dw08XuJsZw/suTX1FCKOiFYMtw== - dependencies: - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" - "@types/blake2b" "^2.1.0" - "@types/lodash.isequal" "^4.5.5" - blake2b "^2.1.3" - js-xxhash "^1.0.4" - lodash.isequal "^4.5.0" - "@ckb-lumos/base@0.20.0", "@ckb-lumos/base@^0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.20.0.tgz#d18164ec60eae3f3a97a4bc48e1399e6e0c190d9" @@ -1491,13 +1477,6 @@ js-xxhash "^1.0.4" lodash.isequal "^4.5.0" -"@ckb-lumos/bi@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.0.0-canary-1cb43fe-20230816060512.tgz#07935767a3b13949d86449adf4aa8eb8815dfbd2" - integrity sha512-gW69UP905RLCmCy57JIt2/67gWW8TDUGwVrBs2O7JrB9kqkPVUb0Nlujev4xAwJaBb3oV9rtU6/g11B9cnu/yg== - dependencies: - jsbi "^4.1.0" - "@ckb-lumos/bi@0.20.0", "@ckb-lumos/bi@^0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.20.0.tgz#4fa3beca641737b7b83a64d56668067e38cc288d" @@ -1512,19 +1491,6 @@ dependencies: jsbi "^4.1.0" -"@ckb-lumos/ckb-indexer@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.0.0-canary-1cb43fe-20230816060512.tgz#dacb8105ee17cd0db27942df4be8d9f9c927c075" - integrity sha512-5lLfS5LfPL3l/AxGtDudhCg15iWpu3uFEq/GFq2TKAzQVion5BjVNQwarHtg4OgSjkXi5eFpaDt5RNoR2tySaQ== - dependencies: - "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/rpc" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" - cross-fetch "^3.1.5" - events "^3.3.0" - "@ckb-lumos/ckb-indexer@0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.20.0.tgz#c6792821e3b903f998a891b14892ff67229d3957" @@ -1549,13 +1515,6 @@ cross-fetch "^3.1.5" events "^3.3.0" -"@ckb-lumos/codec@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.0.0-canary-1cb43fe-20230816060512.tgz#884fa89b42e3a39f0ef16ffb677d397e523d157e" - integrity sha512-yJszCpZdC52oza0f0mF1g26YODxVznaN77DfeVAD7ziEOFOYdly1mCzWkP/qdBDggxPO8WIoYwUlv85HgBfu4w== - dependencies: - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/codec@0.20.0", "@ckb-lumos/codec@^0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.20.0.tgz#bb07707c5976b3b706b78f253e680cdc431ca898" @@ -1570,20 +1529,6 @@ dependencies: "@ckb-lumos/bi" "0.20.0-alpha.3" -"@ckb-lumos/common-scripts@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/common-scripts/-/common-scripts-0.0.0-canary-1cb43fe-20230816060512.tgz#e8c81103773f20a41bb332f8207dccfe308adf16" - integrity sha512-U+D01tA+kEcuNbkcN6Vs6Y4Ay1fBFD2QbHRfEoFk3JzjAERtpYqRVuoq4fGrRZUjL0yQRWNqWsZVeu9TobqPJQ== - dependencies: - "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/config-manager" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/helpers" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/rpc" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" - immutable "^4.3.0" - "@ckb-lumos/common-scripts@0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/common-scripts/-/common-scripts-0.20.0.tgz#7f95fb91d3c275ff557197269225a15a634811b6" @@ -1598,17 +1543,6 @@ "@ckb-lumos/toolkit" "0.20.0" immutable "^4.0.0-rc.12" -"@ckb-lumos/config-manager@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.0.0-canary-1cb43fe-20230816060512.tgz#55d50fe6fae940907c09ee5ce5be94d64999b7b7" - integrity sha512-y6rhuISa/RQtx4GRZAPUsqwHfbHBTGHHt2fyjJJAdBzvLP/iDJ8xLV2qy+tF/wT0q1Tuqs2VE3wG8QEYoi2Evw== - dependencies: - "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" - "@types/deep-freeze-strict" "^1.1.0" - deep-freeze-strict "^1.1.1" - "@ckb-lumos/config-manager@0.20.0", "@ckb-lumos/config-manager@^0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.20.0.tgz#f24946971005f62df62e22c3306947b5e820c181" @@ -1620,19 +1554,6 @@ "@types/deep-freeze-strict" "^1.1.0" deep-freeze-strict "^1.1.1" -"@ckb-lumos/hd@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/hd/-/hd-0.0.0-canary-1cb43fe-20230816060512.tgz#b3120f5fe2fdcd7fb74ba5dc48a1a64d7fa6e29a" - integrity sha512-N/1XsB039czBrF9lTC5CCoCB3ToUD6iU7YBlaf6nYLaNeomggxXoUboGNA4m59ZNgxS3byX9NIx6syAFB/RuxA== - dependencies: - "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - bn.js "^5.1.3" - elliptic "^6.5.4" - scrypt-js "^3.0.1" - sha3 "^2.1.3" - uuid "^8.3.0" - "@ckb-lumos/hd@0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/hd/-/hd-0.20.0.tgz#4b51fb881313ca193a876ae93257f2d5a13df46c" @@ -1646,19 +1567,6 @@ sha3 "^2.1.3" uuid "^8.3.0" -"@ckb-lumos/helpers@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.0.0-canary-1cb43fe-20230816060512.tgz#0b5b9427599427c980b829ca54107b164264e902" - integrity sha512-xqREWtCf4nOCCTHS1zCgJ+D0oInb5Eja2eIUbuKPUk1BklDIl6Kl7LYEF+NVtzCnxjzpxJh2mk90EAe3I3hDFQ== - dependencies: - "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/codec" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/config-manager" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" - bech32 "^2.0.0" - immutable "^4.3.0" - "@ckb-lumos/helpers@0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.20.0.tgz#bc0555aeaba146ce90726ac87acad7e2200112c7" @@ -1671,21 +1579,6 @@ bech32 "^2.0.0" immutable "^4.0.0-rc.12" -"@ckb-lumos/lumos@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/lumos/-/lumos-0.0.0-canary-1cb43fe-20230816060512.tgz#c044f2f161199e5be071e1251fb36bc066cb5e36" - integrity sha512-WpSczDNtiq6DlmYCJaew6S+qCwjra+TxgFQqtgIOs6bOWDKy+rms7rkDeuIl/OuejoCq6cT0JeZt2ifcrPe8Cw== - dependencies: - "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/ckb-indexer" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/common-scripts" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/config-manager" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/hd" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/helpers" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/rpc" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/toolkit" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/lumos@^0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/lumos/-/lumos-0.20.0.tgz#47cd173affa81051f8a8fa60c91c366001d82d6c" @@ -1701,17 +1594,6 @@ "@ckb-lumos/rpc" "0.20.0" "@ckb-lumos/toolkit" "0.20.0" -"@ckb-lumos/rpc@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.0.0-canary-1cb43fe-20230816060512.tgz#9ed696b8754f2e43aea178b04be9af36629bf12a" - integrity sha512-YvpoRmiYV0jRYwDbHljBdXAykDQ0X/OW0yr89A4UX2a9C5VGrMcNdxKUP1mxUgIK9hNEp7vrKSk8S8uA09AtZA== - dependencies: - "@ckb-lumos/base" "0.0.0-canary-1cb43fe-20230816060512" - "@ckb-lumos/bi" "0.0.0-canary-1cb43fe-20230816060512" - "@vespaiach/axios-fetch-adapter" "^0.3.1" - axios "0.27.2" - tslib "2.3.1" - "@ckb-lumos/rpc@0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.20.0.tgz#7da342c6db0403ecf654c0281e004653c1220dc0" @@ -1734,11 +1616,6 @@ axios "0.27.2" tslib "2.3.1" -"@ckb-lumos/toolkit@0.0.0-canary-1cb43fe-20230816060512": - version "0.0.0-canary-1cb43fe-20230816060512" - resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.0.0-canary-1cb43fe-20230816060512.tgz#e275bf3fca1dad0dcc1fa7010b5ca0954318bf09" - integrity sha512-yXrzvFMqkH/zu+xznllqBulmiBob9Nq4pUJ8wBcR1/wYbAQ78jqJZwgIYbHFvOlCbNcoQa45GElX18oaCbtsLQ== - "@ckb-lumos/toolkit@0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.20.0.tgz#8f71043324e50c8a3e94c65414325482d874cfca" @@ -10723,7 +10600,7 @@ immutable@^4.0.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== -immutable@^4.0.0-rc.12, immutable@^4.3.0: +immutable@^4.0.0-rc.12: version "4.3.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.2.tgz#f89d910f8dfb6e15c03b2cae2faaf8c1f66455fe" integrity sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA== From f4bbc4a75ff045d44ce094bcfe8026190ba41886 Mon Sep 17 00:00:00 2001 From: homura Date: Mon, 28 Aug 2023 21:23:00 +0800 Subject: [PATCH 03/20] chore: update lockfile --- yarn.lock | 228 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 205 insertions(+), 23 deletions(-) diff --git a/yarn.lock b/yarn.lock index eff599eb87..bb4773899b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1373,10 +1373,10 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.20.6": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== +"@babel/runtime@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4" + integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA== dependencies: regenerator-runtime "^0.14.0" @@ -1449,6 +1449,20 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@ckb-lumos/base@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.20.0.tgz#d18164ec60eae3f3a97a4bc48e1399e6e0c190d9" + integrity sha512-Zz4+iO7d7dJBMtn/7icD9uuld2fBUGI+RqoBumXW8mem3xDw41Vb4vL0knxVdOFF1EkuSX5yZ796f83h8Q/6zw== + dependencies: + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + "@types/blake2b" "^2.1.0" + "@types/lodash.isequal" "^4.5.5" + blake2b "^2.1.3" + js-xxhash "^1.0.4" + lodash.isequal "^4.5.0" + "@ckb-lumos/base@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.20.0-alpha.3.tgz#5cc257b708e4fc894f11028ec46616fb4750fc49" @@ -1463,6 +1477,27 @@ js-xxhash "^1.0.4" lodash.isequal "^4.5.0" +"@ckb-lumos/base@0.21.0-next.0", "@ckb-lumos/base@^0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.21.0-next.0.tgz#452fe5e84f458fe0cf4bf1a418a124f40e2f5009" + integrity sha512-acxE9xNmetJwB3Eld9R9iosGhqaYFibExKQa0zEHoRqKPkrt4+CntbOW515tJyjmftRW8WA95WXFJD7rDgp3aw== + dependencies: + "@ckb-lumos/bi" "0.21.0-next.0" + "@ckb-lumos/codec" "0.21.0-next.0" + "@ckb-lumos/toolkit" "0.21.0-next.0" + "@types/blake2b" "^2.1.0" + "@types/lodash.isequal" "^4.5.5" + blake2b "^2.1.3" + js-xxhash "^1.0.4" + lodash.isequal "^4.5.0" + +"@ckb-lumos/bi@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.20.0.tgz#4fa3beca641737b7b83a64d56668067e38cc288d" + integrity sha512-cJtv1NnvC11oQbDC8f3jIGTYdyEs2m8GvSrZgGL5KjBoaHTWghH8v6Z2XkwFgHmmCwfX5KrdXekrsOWrcIXyqw== + dependencies: + jsbi "^4.1.0" + "@ckb-lumos/bi@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.20.0-alpha.3.tgz#7c20776558d33b838e54550be22ff8eed909a3e4" @@ -1470,6 +1505,13 @@ dependencies: jsbi "^4.1.0" +"@ckb-lumos/bi@0.21.0-next.0", "@ckb-lumos/bi@^0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.21.0-next.0.tgz#52ac6e660190a9bb3f5ed929e6a2473310d86795" + integrity sha512-3VB8cDjOqzZQMNU2soOt0g6fooO0IbpX25Llk9oqhcnWCk6Su0CPP0qCFiDnb2wMqdWaqOEpAKQ5mhSkg3SLKA== + dependencies: + jsbi "^4.1.0" + "@ckb-lumos/ckb-indexer@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.20.0-alpha.3.tgz#6d20f59b197d90ff83f8c73508416019a49a4865" @@ -1482,6 +1524,26 @@ cross-fetch "^3.1.5" events "^3.3.0" +"@ckb-lumos/ckb-indexer@0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.21.0-next.0.tgz#092de39131778c3473f2e7e550c2a161151c57b7" + integrity sha512-hiKYH+y306TW6HZBtjOeK0JjZ9IIYbv8cWjuovXB6rO5W5LrrPs8Exr4PJwdfhofm6SMyC+N4jjOH83NZJtP2w== + dependencies: + "@ckb-lumos/base" "0.21.0-next.0" + "@ckb-lumos/bi" "0.21.0-next.0" + "@ckb-lumos/codec" "0.21.0-next.0" + "@ckb-lumos/rpc" "0.21.0-next.0" + "@ckb-lumos/toolkit" "0.21.0-next.0" + cross-fetch "^3.1.5" + events "^3.3.0" + +"@ckb-lumos/codec@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.20.0.tgz#bb07707c5976b3b706b78f253e680cdc431ca898" + integrity sha512-NHBPIaiNYz5yX0RGSM0Qz1effLnVTt0wJHPfLVAkuzNRBg5/xRZySjYOemOsogbX1t4s3Yk7N0Q17tr02AUh3A== + dependencies: + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.20.0-alpha.3.tgz#e177efc177cc9200c793b52281ab5bdf350b40ef" @@ -1489,6 +1551,27 @@ dependencies: "@ckb-lumos/bi" "0.20.0-alpha.3" +"@ckb-lumos/codec@0.21.0-next.0", "@ckb-lumos/codec@^0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.21.0-next.0.tgz#4aa32295ed06bb42977fbafffd385fa7f8e83f02" + integrity sha512-L8q5HW5VEq3IjgNDDlpK1JMZ2tA8IOF0KOXDhErC0PlBv63fFrl6mbKHWDzI1llNp0iDl7S9ZdWBjytZQrg38A== + dependencies: + "@ckb-lumos/bi" "0.21.0-next.0" + +"@ckb-lumos/common-scripts@0.21.0-next.0", "@ckb-lumos/common-scripts@^0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/common-scripts/-/common-scripts-0.21.0-next.0.tgz#012df2d60d67fcc28a9244bcd022517a6ad174f7" + integrity sha512-QyHrGca7ZXMq8kdWeSohEOAaCzWJeY6GMOo5FZqyV07FLBO5wy6yGo5RY99lX1lf/Qnl1C4E5t1+0Cz/Jo2Dqg== + dependencies: + "@ckb-lumos/base" "0.21.0-next.0" + "@ckb-lumos/bi" "0.21.0-next.0" + "@ckb-lumos/codec" "0.21.0-next.0" + "@ckb-lumos/config-manager" "0.21.0-next.0" + "@ckb-lumos/helpers" "0.21.0-next.0" + "@ckb-lumos/rpc" "0.21.0-next.0" + "@ckb-lumos/toolkit" "0.21.0-next.0" + immutable "^4.3.0" + "@ckb-lumos/config-manager@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.20.0-alpha.3.tgz#160b02e46074b75bfd6065b5eeb9546739649e88" @@ -1500,6 +1583,30 @@ "@types/deep-freeze-strict" "^1.1.0" deep-freeze-strict "^1.1.1" +"@ckb-lumos/config-manager@0.21.0-next.0", "@ckb-lumos/config-manager@^0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.21.0-next.0.tgz#1308edab43a2ff679a390119989f79dc52ba6b3b" + integrity sha512-E9/7yYfkas5ZaiUz/k+ys17BZTDuBxN9jwJRp5pQ4oOteHv3swxrqrA2CEkKxq96iOjgueksWb5zdNGrKdoewQ== + dependencies: + "@ckb-lumos/base" "0.21.0-next.0" + "@ckb-lumos/bi" "0.21.0-next.0" + "@ckb-lumos/codec" "0.21.0-next.0" + "@types/deep-freeze-strict" "^1.1.0" + deep-freeze-strict "^1.1.1" + +"@ckb-lumos/hd@0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/hd/-/hd-0.21.0-next.0.tgz#f177275363415d96dfd70d77372594eab36f2986" + integrity sha512-bMuSSRnhlGCgkrmSi7KUoA8V4HYUyahgxoCM6d2DCs2E0hixFrloppEjjAo69SU/KfFFexzkpBmpzHjrZlAqxQ== + dependencies: + "@ckb-lumos/base" "0.21.0-next.0" + "@ckb-lumos/bi" "0.21.0-next.0" + bn.js "^5.1.3" + elliptic "^6.5.4" + scrypt-js "^3.0.1" + sha3 "^2.1.3" + uuid "^8.3.0" + "@ckb-lumos/helpers@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.20.0-alpha.3.tgz#17e715664b871fdb0b20cc9d146b0ccb3a7e288e" @@ -1512,6 +1619,34 @@ bech32 "^2.0.0" immutable "^4.0.0-rc.12" +"@ckb-lumos/helpers@0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.21.0-next.0.tgz#eb290383f594e5582c7bdbf52f19a904ef684c84" + integrity sha512-o1k54cVIsDoX9vuGMKI4KjuYle34oDggQO4euxIjXVrL8ochkbuV88FKjgM1b7+T5VoV1QYzb7xS4Yn3UPpV4Q== + dependencies: + "@ckb-lumos/base" "0.21.0-next.0" + "@ckb-lumos/bi" "0.21.0-next.0" + "@ckb-lumos/codec" "0.21.0-next.0" + "@ckb-lumos/config-manager" "0.21.0-next.0" + "@ckb-lumos/toolkit" "0.21.0-next.0" + bech32 "^2.0.0" + immutable "^4.3.0" + +"@ckb-lumos/lumos@^0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/lumos/-/lumos-0.21.0-next.0.tgz#b9de0995267c8212ff845553487cc5c515e88203" + integrity sha512-eUbDMISmj0pLu8yBVxwXgyl9w96555hdAdRNRLl56zt9YVbjUWkY4qykdSOHDPoiKzXRdIiKXVUajd9tVmMB9A== + dependencies: + "@ckb-lumos/base" "0.21.0-next.0" + "@ckb-lumos/bi" "0.21.0-next.0" + "@ckb-lumos/ckb-indexer" "0.21.0-next.0" + "@ckb-lumos/common-scripts" "0.21.0-next.0" + "@ckb-lumos/config-manager" "0.21.0-next.0" + "@ckb-lumos/hd" "0.21.0-next.0" + "@ckb-lumos/helpers" "0.21.0-next.0" + "@ckb-lumos/rpc" "0.21.0-next.0" + "@ckb-lumos/toolkit" "0.21.0-next.0" + "@ckb-lumos/rpc@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.20.0-alpha.3.tgz#e1c7d1aaaaedfca1d7da75aac699ffd2fa060cc5" @@ -1523,11 +1658,32 @@ axios "0.27.2" tslib "2.3.1" +"@ckb-lumos/rpc@0.21.0-next.0", "@ckb-lumos/rpc@^0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.21.0-next.0.tgz#2dbe367d7c934bea7fbe32343d7e2839754b97bb" + integrity sha512-pAUHZ3GjuNw9YLREyTqtOQ6Ot9eP/7lyx+uZ7vk0ly9RHcq/KvRCDX6MXufAheqtDppp7BIQomKyIMrdVdnu5A== + dependencies: + "@ckb-lumos/base" "0.21.0-next.0" + "@ckb-lumos/bi" "0.21.0-next.0" + "@vespaiach/axios-fetch-adapter" "^0.3.1" + axios "0.27.2" + tslib "2.3.1" + +"@ckb-lumos/toolkit@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.20.0.tgz#8f71043324e50c8a3e94c65414325482d874cfca" + integrity sha512-nLNXRPG20NqUdXwHAnKwr0T7nZyDrf4fGwIrsxo+7ffqWeg9wNEhZoqTBJLgxEpoe0I+WHRLwYLiwUbkkqR1SQ== + "@ckb-lumos/toolkit@0.20.0-alpha.3": version "0.20.0-alpha.3" resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.20.0-alpha.3.tgz#17ccd898abf00a601a58d4776031bc8de0df7a8e" integrity sha512-mDwrYcu34o1rRd1YhWKW7ye0SK+9cQRyB/LnxXE7L/8iNIl9JgaIUGRjIoQr2+OPxzUxorvCEwgh1WzywNrZmQ== +"@ckb-lumos/toolkit@0.21.0-next.0": + version "0.21.0-next.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.21.0-next.0.tgz#e7f6a4d65e406fc20e6c4c6d996a8aad9d51ed65" + integrity sha512-UADzUphlL5jKWRgkE3MBNtxgZ/TgS4Z4cSjKrx8XAa1Ijblkms6vHF3bsA+J+QAxLuZD5uKtP0s1y8aIrbc9iQ== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -2987,6 +3143,21 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@spore-sdk/core@^0.1.0-beta.9": + version "0.1.0-beta.11" + resolved "https://registry.yarnpkg.com/@spore-sdk/core/-/core-0.1.0-beta.11.tgz#e0a6d7dfc8eb3a24a10abaa204201fc492a807ad" + integrity sha512-WakKVXYu68pV48LqrWQul1ECNrzJDf3eQks304SAGjQybX0OHFz07MJPsnmrnh8McY/8ulHvlmRmRqww5ItiQA== + dependencies: + "@ckb-lumos/base" "^0.21.0-next.0" + "@ckb-lumos/bi" "^0.21.0-next.0" + "@ckb-lumos/codec" "^0.21.0-next.0" + "@ckb-lumos/common-scripts" "^0.21.0-next.0" + "@ckb-lumos/config-manager" "^0.21.0-next.0" + "@ckb-lumos/lumos" "^0.21.0-next.0" + "@ckb-lumos/rpc" "^0.21.0-next.0" + lodash "^4.17.21" + whatwg-mimetype "^3.0.0" + "@sqltools/formatter@^1.2.2": version "1.2.5" resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" @@ -4550,7 +4721,7 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*", "@types/react@17.0.62", "@types/react@>=16", "@types/react@^17": +"@types/react@*", "@types/react@17.0.62", "@types/react@>=16", "@types/react@^16", "@types/react@^17": version "17.0.62" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.62.tgz#2efe8ddf8533500ec44b1334dd1a97caa2f860e3" integrity sha512-eANCyz9DG8p/Vdhr0ZKST8JV12PhH2ACCDYlFw6DIO+D+ca+uP4jtEDEpVqXZrh/uZdXQGwk7whJa3ah5DtyLw== @@ -4559,15 +4730,6 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@^16": - version "16.14.45" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.45.tgz#c505c96adf959971fc97b4687187c871765a6ae4" - integrity sha512-XFtKkY3yuPO5VJSE6Lru9yLkVQvYE+l6NbmLp6IWCg4jo5S8Ijbpke8wC9q4NmQ5pJErT8KKboG5eY7n5n718A== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -6127,6 +6289,11 @@ bn.js@4.12.0, bn.js@^4.11.9: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bn.js@^5.1.3: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -8194,7 +8361,7 @@ electron@24.6.0: "@types/node" "^18.11.18" extract-zip "^2.0.1" -elliptic@6.5.4: +elliptic@6.5.4, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -10498,6 +10665,11 @@ immutable@^4.0.0-rc.12: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.2.tgz#f89d910f8dfb6e15c03b2cae2faaf8c1f66455fe" integrity sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA== +immutable@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -15253,12 +15425,12 @@ react-error-overlay@^6.0.11: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -react-i18next@12.1.5: - version "12.1.5" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-12.1.5.tgz#b65f5733dd2f96188a9359c009b7dbe27443f009" - integrity sha512-7PQAv6DA0TcStG96fle+8RfTwxVbHVlZZJPoEszwUNvDuWpGldJmNWa3ZPesEsZQZGF6GkzwvEh6p57qpFD2gQ== +react-i18next@12.1.5, react-i18next@>=11.16.4: + version "13.2.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.2.0.tgz#9d7a574144738e46dd4c66573907f56942435ced" + integrity sha512-YD8xMc+I0jkHHLotd8ERMzZ53hMaCBVLCndbcbBveJn3FbppRP4jyYOAkmR8XItN01sTD9ilAjoEjpH1i42IgA== dependencies: - "@babel/runtime" "^7.20.6" + "@babel/runtime" "^7.22.5" html-parse-stringify "^3.0.1" react-inspector@^6.0.0, react-inspector@^6.0.1: @@ -16078,6 +16250,11 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -16236,7 +16413,7 @@ sha.js@^2.4.11: inherits "^2.0.1" safe-buffer "^5.0.1" -sha3@2.1.4: +sha3@2.1.4, sha3@^2.1.3: version "2.1.4" resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== @@ -17803,7 +17980,7 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -usb@^1.7.0: +usb@1.8.8, usb@^1.7.0: version "1.8.8" resolved "https://registry.yarnpkg.com/usb/-/usb-1.8.8.tgz#54de33f9e57dc4efc1b5b5f72b6624a275775e80" integrity sha512-xpRAoek268RE3ATqK8l6LjrF4ADHn/A3V3cXEFbYo3/D83ZCLSO0A5tFKO093F4w5IbDfBVlB9VsYzoGz6EJGw== @@ -17864,7 +18041,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@8.3.2, uuid@^8.3.2: +uuid@8.3.2, uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -18163,6 +18340,11 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" From 0b657e114d7732671dfea283a66b7fbc5f4438eb Mon Sep 17 00:00:00 2001 From: homura Date: Wed, 30 Aug 2023 14:34:36 +0800 Subject: [PATCH 04/20] fix: avoid circular dep --- .../src/models/asset-account-info.ts | 59 +++++++++++++++++- packages/neuron-wallet/src/models/spore.ts | 62 ------------------- packages/neuron-wallet/src/services/cells.ts | 3 +- 3 files changed, 58 insertions(+), 66 deletions(-) delete mode 100644 packages/neuron-wallet/src/models/spore.ts diff --git a/packages/neuron-wallet/src/models/asset-account-info.ts b/packages/neuron-wallet/src/models/asset-account-info.ts index 141111f93c..0439f196d9 100644 --- a/packages/neuron-wallet/src/models/asset-account-info.ts +++ b/packages/neuron-wallet/src/models/asset-account-info.ts @@ -7,8 +7,8 @@ import Transaction from './chain/transaction' import SystemScriptInfo from './system-script-info' import { Address } from './address' import { createFixedHexBytesCodec } from '@ckb-lumos/codec/lib/blockchain' -import { predefinedSporeConfigs, SporeScript } from '@spore-sdk/core' -import { toScriptInfo } from './spore' +import { predefinedSporeConfigs, SporeConfig, SporeScript } from '@spore-sdk/core' +import NodeService from '../services/node' export interface ScriptCellInfo { cellDep: CellDep @@ -372,4 +372,59 @@ export default class AssetAccountInfo { return foundSender || null } + + public getSporeConfig(): SporeConfig { + const spore = this.sporeInfos + const cluster = this.sporeClusterInfos + + return { + scripts: { + Spore: { + ...toSporeScript(spore[0]), + versions: spore.slice(1).map(toSporeScript), + }, + + Cluster: { + ...toSporeScript(cluster[0]), + versions: cluster.slice(1).map(toSporeScript), + }, + }, + lumos: { + PREFIX: NetworksService.getInstance().isMainnet() ? 'ckb' : 'ckt', + SCRIPTS: {}, + }, + ckbIndexerUrl: NodeService.getInstance().nodeUrl, + ckbNodeUrl: NodeService.getInstance().nodeUrl, + extensions: [], + } + } +} + +function toSporeScript(info: ScriptCellInfo): SporeScript { + return { + script: { codeHash: info.codeHash, hashType: info.hashType }, + cellDep: info.cellDep, + } +} + +function toScriptInfo(sporeConfig: SporeScript): ScriptCellInfo { + const cellDep = sporeConfig.cellDep + + const hashType: ScriptHashType = (() => { + const sporeScriptHashType = sporeConfig.script.hashType + if (sporeScriptHashType === 'type') return ScriptHashType.Type + if (sporeScriptHashType === 'data') return ScriptHashType.Data + if (sporeScriptHashType === 'data1') return ScriptHashType.Data1 + + throw new Error(`Invalid hash type: ${sporeScriptHashType}`) + })() + + return { + cellDep: new CellDep( + new OutPoint(cellDep.outPoint.txHash, cellDep.outPoint.index), + cellDep.depType === 'depGroup' ? DepType.DepGroup : DepType.Code + ), + hashType: hashType, + codeHash: sporeConfig.script.codeHash, + } } diff --git a/packages/neuron-wallet/src/models/spore.ts b/packages/neuron-wallet/src/models/spore.ts deleted file mode 100644 index f7d7a2c06d..0000000000 --- a/packages/neuron-wallet/src/models/spore.ts +++ /dev/null @@ -1,62 +0,0 @@ -import AssetAccountInfo, { ScriptCellInfo } from './asset-account-info' -import { SporeConfig, SporeScript } from '@spore-sdk/core' -import OutPoint from './chain/out-point' -import CellDep, { DepType } from './chain/cell-dep' -import { ScriptHashType } from './chain/script' -import NetworksService from '../services/networks' -import NodeService from '../services/node' - -export function toScriptInfo(sporeConfig: SporeScript): ScriptCellInfo { - const cellDep = sporeConfig.cellDep - - const hashType: ScriptHashType = (() => { - const sporeScriptHashType = sporeConfig.script.hashType - if (sporeScriptHashType === 'type') return ScriptHashType.Type - if (sporeScriptHashType === 'data') return ScriptHashType.Data - if (sporeScriptHashType === 'data1') return ScriptHashType.Data1 - - throw new Error(`Invalid hash type: ${sporeScriptHashType}`) - })() - - return { - cellDep: new CellDep( - new OutPoint(cellDep.outPoint.txHash, cellDep.outPoint.index), - cellDep.depType === 'depGroup' ? DepType.DepGroup : DepType.Code - ), - hashType: hashType, - codeHash: sporeConfig.script.codeHash, - } -} - -export function toSporeScript(info: ScriptCellInfo): SporeScript { - return { - script: { codeHash: info.codeHash, hashType: info.hashType }, - cellDep: info.cellDep, - } -} - -export function getSporeConfig(): SporeConfig { - const spore = new AssetAccountInfo().getSporeInfos() - const cluster = new AssetAccountInfo().getSporeClusterInfo() - - return { - scripts: { - Spore: { - ...toSporeScript(spore[0]), - versions: spore.slice(1).map(toSporeScript), - }, - - Cluster: { - ...toSporeScript(cluster[0]), - versions: cluster.slice(1).map(toSporeScript), - }, - }, - lumos: { - PREFIX: NetworksService.getInstance().isMainnet() ? 'ckb' : 'ckt', - SCRIPTS: {}, - }, - ckbIndexerUrl: NodeService.getInstance().nodeUrl, - ckbNodeUrl: NodeService.getInstance().nodeUrl, - extensions: [], - } -} diff --git a/packages/neuron-wallet/src/services/cells.ts b/packages/neuron-wallet/src/services/cells.ts index ccf291d034..52a179288e 100644 --- a/packages/neuron-wallet/src/services/cells.ts +++ b/packages/neuron-wallet/src/services/cells.ts @@ -35,7 +35,6 @@ import { bytes } from '@ckb-lumos/codec' import { generateRPC } from '../utils/ckb-rpc' import NodeService from './node' import { getClusterCellById, SporeData, unpackToRawClusterData } from '@spore-sdk/core' -import { getSporeConfig } from '../models/spore' export interface PaginationResult { totalCount: number @@ -360,7 +359,7 @@ export default class CellsService { return } - const clusterCell = await getClusterCellById(clusterId, getSporeConfig()) + const clusterCell = await getClusterCellById(clusterId, assetAccountInfo.getSporeConfig()) const { name } = unpackToRawClusterData(clusterCell.data) clusterNames[clusterId] = name } catch { From 634ffafed55f0c99b62c9713902bd1cce7dfdefb Mon Sep 17 00:00:00 2001 From: homura Date: Wed, 30 Aug 2023 16:13:26 +0800 Subject: [PATCH 05/20] fix: avoid circular dep --- packages/neuron-wallet/src/models/asset-account-info.ts | 7 +++---- packages/neuron-wallet/src/services/cells.ts | 5 ++++- yarn.lock | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/neuron-wallet/src/models/asset-account-info.ts b/packages/neuron-wallet/src/models/asset-account-info.ts index 0439f196d9..f06eba42eb 100644 --- a/packages/neuron-wallet/src/models/asset-account-info.ts +++ b/packages/neuron-wallet/src/models/asset-account-info.ts @@ -8,7 +8,6 @@ import SystemScriptInfo from './system-script-info' import { Address } from './address' import { createFixedHexBytesCodec } from '@ckb-lumos/codec/lib/blockchain' import { predefinedSporeConfigs, SporeConfig, SporeScript } from '@spore-sdk/core' -import NodeService from '../services/node' export interface ScriptCellInfo { cellDep: CellDep @@ -373,7 +372,7 @@ export default class AssetAccountInfo { return foundSender || null } - public getSporeConfig(): SporeConfig { + public getSporeConfig(nodeUrl: string): SporeConfig { const spore = this.sporeInfos const cluster = this.sporeClusterInfos @@ -393,8 +392,8 @@ export default class AssetAccountInfo { PREFIX: NetworksService.getInstance().isMainnet() ? 'ckb' : 'ckt', SCRIPTS: {}, }, - ckbIndexerUrl: NodeService.getInstance().nodeUrl, - ckbNodeUrl: NodeService.getInstance().nodeUrl, + ckbIndexerUrl: nodeUrl, + ckbNodeUrl: nodeUrl, extensions: [], } } diff --git a/packages/neuron-wallet/src/services/cells.ts b/packages/neuron-wallet/src/services/cells.ts index 52a179288e..992905f83b 100644 --- a/packages/neuron-wallet/src/services/cells.ts +++ b/packages/neuron-wallet/src/services/cells.ts @@ -359,7 +359,10 @@ export default class CellsService { return } - const clusterCell = await getClusterCellById(clusterId, assetAccountInfo.getSporeConfig()) + const clusterCell = await getClusterCellById( + clusterId, + assetAccountInfo.getSporeConfig(NodeService.getInstance().nodeUrl) + ) const { name } = unpackToRawClusterData(clusterCell.data) clusterNames[clusterId] = name } catch { diff --git a/yarn.lock b/yarn.lock index bb4773899b..3b562377fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15426,9 +15426,9 @@ react-error-overlay@^6.0.11: integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-i18next@12.1.5, react-i18next@>=11.16.4: - version "13.2.0" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.2.0.tgz#9d7a574144738e46dd4c66573907f56942435ced" - integrity sha512-YD8xMc+I0jkHHLotd8ERMzZ53hMaCBVLCndbcbBveJn3FbppRP4jyYOAkmR8XItN01sTD9ilAjoEjpH1i42IgA== + version "13.2.1" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.2.1.tgz#57cf7c07778281bdb1e0a1fd60ca5fcc35c0a786" + integrity sha512-XhMsnGgJnytWfi2Q70HMYfm+zysPUu1Pz+It6I87WwaeclGY+W8W1c11uENEMNg+Xb+mNrGuo8GEDuQDOgO+oQ== dependencies: "@babel/runtime" "^7.22.5" html-parse-stringify "^3.0.1" From aab28b1d710a3f966ace50f936b294dea6dba8c4 Mon Sep 17 00:00:00 2001 From: homura Date: Tue, 5 Sep 2023 14:42:59 +0800 Subject: [PATCH 06/20] refactor: rm unused devnet config of spore --- .../src/models/asset-account-info.ts | 42 +------------------ 1 file changed, 2 insertions(+), 40 deletions(-) diff --git a/packages/neuron-wallet/src/models/asset-account-info.ts b/packages/neuron-wallet/src/models/asset-account-info.ts index f06eba42eb..de4de46073 100644 --- a/packages/neuron-wallet/src/models/asset-account-info.ts +++ b/packages/neuron-wallet/src/models/asset-account-info.ts @@ -194,46 +194,8 @@ export default class AssetAccountInfo { const { Spore, Cluster } = predefinedSporeConfigs.Aggron4.scripts - this.sporeInfos = ( - [ - // TODO remove me, for devnet only - { - script: { - codeHash: '0xbbad126377d45f90a8ee120da988a2d7332c78ba8fd679aab478a19d6c133494', - hashType: 'data1', - }, - cellDep: { - outPoint: { - txHash: '0xe8d710a05265e9325e4f1f28333167368026fd364a0d82dbf2866c53607fb0c6', - index: '0x0', - }, - depType: 'code', - }, - }, - Spore, - ...(Spore.versions || []), - ] satisfies SporeScript[] - ).map(toScriptInfo) - this.sporeClusterInfos = ( - [ - // TODO remove me, for dev net only - { - script: { - codeHash: '0x598d793defef36e2eeba54a9b45130e4ca92822e1d193671f490950c3b856080', - hashType: 'data1', - }, - cellDep: { - outPoint: { - txHash: '0x251ca5eb94f4d14f532e3962cfeb356e02580db31d4d53a09e5aa080f75a2407', - index: '0x0', - }, - depType: 'code', - }, - }, - Cluster, - ...(Cluster.versions || []), - ] satisfies SporeScript[] - ).map(toScriptInfo) + this.sporeInfos = ([Spore, ...(Spore.versions || [])] satisfies SporeScript[]).map(toScriptInfo) + this.sporeClusterInfos = ([Cluster, ...(Cluster.versions || [])] satisfies SporeScript[]).map(toScriptInfo) } } From dbc5a5b46dc108f660c443d43aba54ea47e233ac Mon Sep 17 00:00:00 2001 From: homura Date: Tue, 5 Sep 2023 16:22:45 +0800 Subject: [PATCH 07/20] refactor: rm unused spore's unbound mark --- packages/neuron-ui/src/utils/formatters.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/neuron-ui/src/utils/formatters.ts b/packages/neuron-ui/src/utils/formatters.ts index 306feb47b0..ca7798085d 100644 --- a/packages/neuron-ui/src/utils/formatters.ts +++ b/packages/neuron-ui/src/utils/formatters.ts @@ -309,16 +309,17 @@ export const sporeFormatter = (args?: string, data?: string, name?: string) => { ['contentType', 'content', 'clusterId'] ) - if (!data) { - format = `[Unbound] ${format}` - } else { + if (data) { try { - const unpacked = SporeData.unpack(data) - if (!unpacked.clusterId) { - format = `[Unbound] ${format}` - } else if (!name) { - format = `[${unpacked.clusterId.slice(0, 8)}...${unpacked.clusterId.slice(-8)}] ${format}` - } else { + const { clusterId } = SporeData.unpack(data) + + // the name may be empty when it works with the light client. + // a spore cell may appear before the cluster cell is found in the light client. + // So we need a placeholder for the name. + if (clusterId && !name) { + format = `[${clusterId.slice(0, 8)}...${clusterId.slice(-8)}] ${format}` + } + if (clusterId && name) { format = `[${name}] ${format}` } } catch { From 9c564063318ab5aea32dcea71fc034b81e53a2a6 Mon Sep 17 00:00:00 2001 From: homura Date: Wed, 6 Sep 2023 14:46:24 +0800 Subject: [PATCH 08/20] refactor: rm unsuitable button type --- packages/neuron-ui/src/components/SpecialAssetList/index.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/neuron-ui/src/components/SpecialAssetList/index.tsx b/packages/neuron-ui/src/components/SpecialAssetList/index.tsx index f4b4bcdd33..3275c00b94 100644 --- a/packages/neuron-ui/src/components/SpecialAssetList/index.tsx +++ b/packages/neuron-ui/src/components/SpecialAssetList/index.tsx @@ -419,7 +419,6 @@ const SpecialAssetList = () => { return (
- ) - } - let tip = '' const showTip = @@ -580,7 +570,12 @@ const SpecialAssetList = () => { ) : null} {nFTSendCell ? ( - setNFTSendCell(undefined)} onSuccess={handleActionSuccess} /> + setNFTSendCell(undefined)} + onSuccess={handleActionSuccess} + /> ) : null} setNotice('')} /> diff --git a/packages/neuron-ui/src/services/remote/remoteApiWrapper.ts b/packages/neuron-ui/src/services/remote/remoteApiWrapper.ts index d8f798b382..666b98095c 100644 --- a/packages/neuron-ui/src/services/remote/remoteApiWrapper.ts +++ b/packages/neuron-ui/src/services/remote/remoteApiWrapper.ts @@ -151,6 +151,8 @@ type Action = | 'get-hold-sudt-cell-capacity' | 'start-migrate' | 'get-sync-progress-by-addresses' + // spore + | 'generate-transfer-spore-tx' export const remoteApi =

(action: Action) => diff --git a/packages/neuron-ui/src/services/remote/spore.ts b/packages/neuron-ui/src/services/remote/spore.ts new file mode 100644 index 0000000000..653569118a --- /dev/null +++ b/packages/neuron-ui/src/services/remote/spore.ts @@ -0,0 +1,7 @@ +import { remoteApi } from './remoteApiWrapper' + +// eslint-disable-next-line import/prefer-default-export +export const generateSporeSendTransaction = remoteApi< + Controller.CreateNFTSendTransaction.Params, + Controller.CreateNFTSendTransaction.Response +>('generate-transfer-spore-tx') diff --git a/packages/neuron-wallet/src/controllers/api.ts b/packages/neuron-wallet/src/controllers/api.ts index f54ed36331..bbce91c50f 100644 --- a/packages/neuron-wallet/src/controllers/api.ts +++ b/packages/neuron-wallet/src/controllers/api.ts @@ -520,6 +520,10 @@ export default class ApiController { return this.#customizedAssetsController.generateTransferNftTx(params) }) + handle('generate-transfer-spore-tx', async (_, params: Controller.Params.GenerateTransferNftTxParams) => { + return this.#customizedAssetsController.generateTransferSporeTx(params) + }) + // Networks handle('get-all-networks', async () => { diff --git a/packages/neuron-wallet/src/controllers/customized-assets.ts b/packages/neuron-wallet/src/controllers/customized-assets.ts index e2a63db5a8..64dc2b7894 100644 --- a/packages/neuron-wallet/src/controllers/customized-assets.ts +++ b/packages/neuron-wallet/src/controllers/customized-assets.ts @@ -51,6 +51,29 @@ export default class CustomizedAssetsController { } } + public async generateTransferSporeTx(params: Controller.Params.GenerateTransferNftTxParams) { + const tx = await new TransactionSender().generateTransferSporeTx( + params.walletID, + params.outPoint, + params.receiveAddress, + undefined, + params.feeRate + ) + + if (!tx) { + throw new ServiceHasNoResponse('GenerateTransferNftTx') + } + + if (params.description) { + tx.description = params.description + } + + return { + status: ResponseCode.Success, + result: tx, + } + } + public async generateWithdrawCustomizedCellTx( params: Controller.Params.GenerateWithdrawCustomizedCellTxParams ): Promise> { diff --git a/packages/neuron-wallet/src/services/transaction-sender.ts b/packages/neuron-wallet/src/services/transaction-sender.ts index 893fb90a9a..6423a56e47 100644 --- a/packages/neuron-wallet/src/services/transaction-sender.ts +++ b/packages/neuron-wallet/src/services/transaction-sender.ts @@ -2,7 +2,7 @@ import signWitnesses from '@nervosnetwork/ckb-sdk-core/lib/signWitnesses' import NodeService from './node' import { serializeWitnessArgs } from '../utils/serialization' import { scriptToAddress } from '../utils/scriptAndAddress' -import { TransactionPersistor, TransactionGenerator, TargetOutput } from './tx' +import { TargetOutput, TransactionGenerator, TransactionPersistor } from './tx' import AddressService from './addresses' import WalletService, { Wallet } from '../services/wallets' import RpcService from '../services/rpc-service' @@ -28,10 +28,10 @@ import HardwareWalletService from './hardware' import { CapacityNotEnoughForChange, CapacityNotEnoughForChangeByTransfer, + CellIsNotYetLive, MultisigConfigNeedError, NoMatchAddressForSign, SignTransactionFailed, - CellIsNotYetLive, TransactionIsNotCommittedYet, } from '../exceptions' import AssetAccountInfo from '../models/asset-account-info' @@ -45,6 +45,8 @@ import { generateRPC } from '../utils/ckb-rpc' import CKB from '@nervosnetwork/ckb-sdk-core' import CellsService from './cells' import hd from '@ckb-lumos/hd' +import { getClusterCellByOutPoint } from '@spore-sdk/core' +import CellDep, { DepType } from '../models/chain/cell-dep' interface SignInfo { witnessArgs: WitnessArgs @@ -557,6 +559,50 @@ export default class TransactionSender { return tx } + public generateTransferSporeTx = async ( + walletId: string, + outPoint: OutPoint, + receiveAddress: string, + fee: string = '0', + feeRate: string = '0' + ): Promise => { + const changeAddress: string = await this.getChangeAddress() + const nftCellOutput = await CellsService.getLiveCell(new OutPoint(outPoint.txHash, outPoint.index)) + if (!nftCellOutput) { + throw new CellIsNotYetLive() + } + + const assetAccountInfo = new AssetAccountInfo() + const rpcUrl: string = NodeService.getInstance().nodeUrl + + // https://github.com/sporeprotocol/spore-sdk/blob/05f2cbe1c03d03e334ebd3b440b5b3b20ec67da7/packages/core/src/api/joints/spore.ts#L154-L158 + const clusterDep = await (async () => { + const clusterCell = await getClusterCellByOutPoint(outPoint, assetAccountInfo.getSporeConfig(rpcUrl)).then( + _ => _, + () => undefined + ) + + if (!clusterCell?.outPoint) { + return undefined + } + + return new CellDep(OutPoint.fromSDK(clusterCell.outPoint), DepType.Code) + })() + + const tx = await TransactionGenerator.generateTransferNftTx( + walletId, + outPoint, + nftCellOutput, + receiveAddress, + changeAddress, + fee, + feeRate, + [assetAccountInfo.getSporeInfos()[0].cellDep].concat(clusterDep ?? []) + ) + + return tx + } + public generateDepositTx = async ( walletID: string = '', capacity: string, diff --git a/packages/neuron-wallet/src/services/tx/transaction-generator.ts b/packages/neuron-wallet/src/services/tx/transaction-generator.ts index 711fffb03b..7f3a6d2ec2 100644 --- a/packages/neuron-wallet/src/services/tx/transaction-generator.ts +++ b/packages/neuron-wallet/src/services/tx/transaction-generator.ts @@ -54,13 +54,30 @@ export class TransactionGenerator { receiveAddress: string, changeAddress: string, fee: string = '0', - feeRate: string = '0' + feeRate: string = '0', + nftDeps?: CellDep[] ) => { + // defaults to the mNFT cell dep const assetAccount = new AssetAccountInfo() - const secpCellDep = await SystemScriptInfo.getInstance().getSecpCellDep() const nftCellDep = assetAccount.getNftInfo().cellDep + nftDeps = nftDeps ?? [nftCellDep] + + const secpCellDep = await SystemScriptInfo.getInstance().getSecpCellDep() const op = new OutPoint(outPoint.txHash, outPoint.index) const nftCell = await CellsService.getLiveCell(op) + + // the data has been sliced, so we need to get the full data from the rpc + // https://github.com/nervosnetwork/neuron/blob/dbc5a5b46dc108f660c443d43aba54ea47e233ac/packages/neuron-wallet/src/services/tx/transaction-persistor.ts#L70 + await (async () => { + if (!nftCell) return + + const nftTx = await this.getRpcService().getTransaction(outPoint.txHash) + const nftOriginalOutputData = nftTx?.transaction.outputsData[Number(outPoint.index)] + if (!nftOriginalOutputData) return + + nftCell.data = nftOriginalOutputData + })() + const receiverLockScript = AddressParser.parse(receiveAddress) const assetAccountInfo = new AssetAccountInfo() const anyoneCanPayDep = assetAccountInfo.anyoneCanPayCellDep @@ -92,7 +109,7 @@ export class TransactionGenerator { const outputs: Output[] = [nftCell] const tx = Transaction.fromObject({ version: '0', - cellDeps: [secpCellDep, nftCellDep, anyoneCanPayDep], + cellDeps: [secpCellDep, anyoneCanPayDep, ...nftDeps], headerDeps: [], inputs: [nftInput], outputs, @@ -346,6 +363,10 @@ export class TransactionGenerator { return tipHeader } + private static getRpcService(): RpcService { + return new RpcService(NodeService.getInstance().nodeUrl) + } + public static generateDepositTx = async ( walletId: string, capacity: string, From 0f011a5b1b1380c8701079d711b83a07dce1dc34 Mon Sep 17 00:00:00 2001 From: homura Date: Wed, 27 Sep 2023 18:16:44 +0800 Subject: [PATCH 18/20] fix: hide spore when invisible --- packages/neuron-ui/src/components/SpecialAssetList/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/neuron-ui/src/components/SpecialAssetList/index.tsx b/packages/neuron-ui/src/components/SpecialAssetList/index.tsx index 4ebb0d9e96..336307e3ff 100644 --- a/packages/neuron-ui/src/components/SpecialAssetList/index.tsx +++ b/packages/neuron-ui/src/components/SpecialAssetList/index.tsx @@ -404,7 +404,7 @@ const SpecialAssetList = () => { render(_, __, item, show) { const { amount, isSpore, sporeClusterInfo } = handleGetSpecialAssetColumnInfo(item) - if (isSpore && item.type) { + if (isSpore && item.type && show) { const formattedSporeInfo = sporeFormatter({ args: item.type.args, data: item.data, From a4e6f46a40eaf75c13c413903028cafef14aad17 Mon Sep 17 00:00:00 2001 From: homura Date: Mon, 6 Nov 2023 16:50:20 +0800 Subject: [PATCH 19/20] feat: support the nft transferring in light client mode --- .../src/block-sync-renderer/sync/light-connector.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/neuron-wallet/src/block-sync-renderer/sync/light-connector.ts b/packages/neuron-wallet/src/block-sync-renderer/sync/light-connector.ts index 313c3b9414..dd1f771b11 100644 --- a/packages/neuron-wallet/src/block-sync-renderer/sync/light-connector.ts +++ b/packages/neuron-wallet/src/block-sync-renderer/sync/light-connector.ts @@ -69,6 +69,8 @@ export default class LightConnector extends Connector { assetAccountInfo.getNftIssuerInfo().cellDep, assetAccountInfo.getLegacyAnyoneCanPayInfo().cellDep, assetAccountInfo.getChequeInfo().cellDep, + ...assetAccountInfo.getSporeInfos().map(info => info.cellDep), + ...assetAccountInfo.getSporeClusterInfo().map(info => info.cellDep), ] const fetchTxHashes = fetchCellDeps.map(v => v.outPoint.txHash).map<[string, string]>(v => ['fetchTransaction', v]) const txs = await this.lightRpc From 5107afdb253a1590f2b9c2ce474068f6891ca9f9 Mon Sep 17 00:00:00 2001 From: homura Date: Wed, 15 Nov 2023 17:14:58 +0800 Subject: [PATCH 20/20] refactor: migrate NodeService to NetworksService --- packages/neuron-ui/package.json | 4 +- packages/neuron-wallet/src/services/cells.ts | 8 +- .../src/services/transaction-sender.ts | 3 +- .../src/services/tx/transaction-generator.ts | 6 +- yarn.lock | 141 +++++++++++++++++- 5 files changed, 152 insertions(+), 10 deletions(-) diff --git a/packages/neuron-ui/package.json b/packages/neuron-ui/package.json index 7531e9833f..2bb23a319b 100644 --- a/packages/neuron-ui/package.json +++ b/packages/neuron-ui/package.json @@ -50,8 +50,8 @@ "last 2 chrome versions" ], "dependencies": { - "@ckb-lumos/base": "0.20.0", - "@ckb-lumos/codec": "0.20.0", + "@ckb-lumos/base": "0.21.0-next.1", + "@ckb-lumos/codec": "0.21.0-next.1", "@nervosnetwork/ckb-sdk-core": "0.109.0", "@nervosnetwork/ckb-sdk-utils": "0.109.0", "canvg": "2.0.0", diff --git a/packages/neuron-wallet/src/services/cells.ts b/packages/neuron-wallet/src/services/cells.ts index 4452e8aff1..45dc514a3f 100644 --- a/packages/neuron-wallet/src/services/cells.ts +++ b/packages/neuron-wallet/src/services/cells.ts @@ -33,8 +33,8 @@ import MultisigOutput from '../database/chain/entities/multisig-output' import { MIN_CELL_CAPACITY } from '../utils/const' import { bytes } from '@ckb-lumos/codec' import { generateRPC } from '../utils/ckb-rpc' -import NodeService from './node' import { getClusterCellById, SporeData, unpackToRawClusterData } from '@spore-sdk/core' +import NetworksService from './networks' export interface PaginationResult { totalCount: number @@ -336,11 +336,13 @@ export default class CellsService { .orderBy('tx.timestamp', 'ASC') .getMany() + const currentNetwork = NetworksService.getInstance().getCurrent() + // https://github.com/nervosnetwork/neuron/blob/dbc5a5b46dc108f660c443d43aba54ea47e233ac/packages/neuron-wallet/src/services/tx/transaction-persistor.ts#L70 // datum in outputs has been sliced when sync // to make the Spore NFT data available, // we need to fetch it from RPC instead of database - const rpc = generateRPC(NodeService.getInstance().nodeUrl) + const rpc = generateRPC(currentNetwork.remote, currentNetwork.type) const sporeOutputs = allMultiSignOutputs.filter(item => sporeInfos.some(info => item.typeCodeHash && bytes.equal(info.codeHash, item.typeCodeHash)) ) @@ -362,7 +364,7 @@ export default class CellsService { const clusterCell = await getClusterCellById( clusterId, - assetAccountInfo.getSporeConfig(NodeService.getInstance().nodeUrl) + assetAccountInfo.getSporeConfig(currentNetwork.remote) ) const { name, description } = unpackToRawClusterData(clusterCell.data) clusterInfos[clusterId] = { name, description } diff --git a/packages/neuron-wallet/src/services/transaction-sender.ts b/packages/neuron-wallet/src/services/transaction-sender.ts index 7bc4d4e16c..65eaa02ccd 100644 --- a/packages/neuron-wallet/src/services/transaction-sender.ts +++ b/packages/neuron-wallet/src/services/transaction-sender.ts @@ -574,7 +574,8 @@ export default class TransactionSender { } const assetAccountInfo = new AssetAccountInfo() - const rpcUrl: string = NodeService.getInstance().nodeUrl + // const rpcUrl: string = NodeService.getInstance().nodeUrl + const rpcUrl = NetworksService.getInstance().getCurrent().remote // https://github.com/sporeprotocol/spore-sdk/blob/05f2cbe1c03d03e334ebd3b440b5b3b20ec67da7/packages/core/src/api/joints/spore.ts#L154-L158 const clusterDep = await (async () => { diff --git a/packages/neuron-wallet/src/services/tx/transaction-generator.ts b/packages/neuron-wallet/src/services/tx/transaction-generator.ts index 1e20e9eedf..1584c102b9 100644 --- a/packages/neuron-wallet/src/services/tx/transaction-generator.ts +++ b/packages/neuron-wallet/src/services/tx/transaction-generator.ts @@ -358,14 +358,14 @@ export class TransactionGenerator { } private static async getTipHeader(): Promise { - const network = NetworksService.getInstance().getCurrent() - const rpcService = new RpcService(network.remote, network.type) + const rpcService = TransactionGenerator.getRpcService() const tipHeader = await rpcService.getTipHeader() return tipHeader } private static getRpcService(): RpcService { - return new RpcService(NodeService.getInstance().nodeUrl) + const network = NetworksService.getInstance().getCurrent() + return new RpcService(network.remote, network.type) } public static generateDepositTx = async ( diff --git a/yarn.lock b/yarn.lock index e2a6d28b10..03d90a91d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1449,6 +1449,20 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@ckb-lumos/base@0.20.0", "@ckb-lumos/base@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.20.0.tgz#d18164ec60eae3f3a97a4bc48e1399e6e0c190d9" + integrity sha512-Zz4+iO7d7dJBMtn/7icD9uuld2fBUGI+RqoBumXW8mem3xDw41Vb4vL0knxVdOFF1EkuSX5yZ796f83h8Q/6zw== + dependencies: + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + "@types/blake2b" "^2.1.0" + "@types/lodash.isequal" "^4.5.5" + blake2b "^2.1.3" + js-xxhash "^1.0.4" + lodash.isequal "^4.5.0" + "@ckb-lumos/base@0.21.0-next.1", "@ckb-lumos/base@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/base/-/base-0.21.0-next.1.tgz#ad82d0147c479b84bc0e80c3e32ad6a39ee75285" @@ -1463,6 +1477,13 @@ js-xxhash "^1.0.4" lodash.isequal "^4.5.0" +"@ckb-lumos/bi@0.20.0", "@ckb-lumos/bi@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.20.0.tgz#4fa3beca641737b7b83a64d56668067e38cc288d" + integrity sha512-cJtv1NnvC11oQbDC8f3jIGTYdyEs2m8GvSrZgGL5KjBoaHTWghH8v6Z2XkwFgHmmCwfX5KrdXekrsOWrcIXyqw== + dependencies: + jsbi "^4.1.0" + "@ckb-lumos/bi@0.21.0-next.1", "@ckb-lumos/bi@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/bi/-/bi-0.21.0-next.1.tgz#357b8da31882ab5e3e3f8aca54c30dd576e4544d" @@ -1470,6 +1491,18 @@ dependencies: jsbi "^4.1.0" +"@ckb-lumos/ckb-indexer@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.20.0.tgz#c6792821e3b903f998a891b14892ff67229d3957" + integrity sha512-bw5HiuAleTa9D4l3xW+0+kYh49CH3bjRNPHxv/ySVy1TxTAYEJA6qjcIOE81T8U6qSnUxY1KKiAjk2bO+mo05w== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/rpc" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + cross-fetch "^3.1.5" + events "^3.3.0" + "@ckb-lumos/ckb-indexer@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/ckb-indexer/-/ckb-indexer-0.21.0-next.1.tgz#bc2fd6fcd2c482040565c255d7a9f8fd9269b462" @@ -1483,6 +1516,13 @@ cross-fetch "^3.1.5" events "^3.3.0" +"@ckb-lumos/codec@0.20.0", "@ckb-lumos/codec@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.20.0.tgz#bb07707c5976b3b706b78f253e680cdc431ca898" + integrity sha512-NHBPIaiNYz5yX0RGSM0Qz1effLnVTt0wJHPfLVAkuzNRBg5/xRZySjYOemOsogbX1t4s3Yk7N0Q17tr02AUh3A== + dependencies: + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec@0.21.0-next.1", "@ckb-lumos/codec@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/codec/-/codec-0.21.0-next.1.tgz#a75f5331026039799afb4f3419bea388e220d26c" @@ -1490,6 +1530,31 @@ dependencies: "@ckb-lumos/bi" "0.21.0-next.1" +"@ckb-lumos/common-scripts@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/common-scripts/-/common-scripts-0.20.0.tgz#7f95fb91d3c275ff557197269225a15a634811b6" + integrity sha512-GSCayhyt+G0k9fNGK3bjVif2PDWbo47ovUEM0CiRuG0YrhvBYbuq69mpQ3nKezI1IKI3UZyYOax7SqhYBCJ5VQ== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec" "0.20.0" + "@ckb-lumos/config-manager" "0.20.0" + "@ckb-lumos/helpers" "0.20.0" + "@ckb-lumos/rpc" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + immutable "^4.0.0-rc.12" + +"@ckb-lumos/config-manager@0.20.0", "@ckb-lumos/config-manager@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.20.0.tgz#f24946971005f62df62e22c3306947b5e820c181" + integrity sha512-YNhowInBGuOVMRBuhDWznhcB+83vLzYSL6HAlGCBbm2yT7lDmIrrVWh731hISmuaXeMt4IFupLfGXxpelB6zCA== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/codec" "0.20.0" + "@types/deep-freeze-strict" "^1.1.0" + deep-freeze-strict "^1.1.1" + "@ckb-lumos/config-manager@0.21.0-next.1", "@ckb-lumos/config-manager@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/config-manager/-/config-manager-0.21.0-next.1.tgz#927e21a5d9450155ebf766422a707fd3b0856a14" @@ -1501,6 +1566,19 @@ "@types/deep-freeze-strict" "^1.1.0" deep-freeze-strict "^1.1.1" +"@ckb-lumos/hd@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/hd/-/hd-0.20.0.tgz#4b51fb881313ca193a876ae93257f2d5a13df46c" + integrity sha512-vPzMFZwYpuOVEiQ8WeY6+TVGy0Hcdau7okbMX6mks87Kt1f8qEyW5uAP8xFWA0UmsOGucdJKirjRfSvsAPzbIw== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + bn.js "^5.1.3" + elliptic "^6.5.4" + scrypt-js "^3.0.1" + sha3 "^2.1.3" + uuid "^8.3.0" + "@ckb-lumos/hd@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/hd/-/hd-0.21.0-next.1.tgz#ffa4b80b974187982bbfa280138ca1dab0b2df0e" @@ -1514,6 +1592,18 @@ sha3 "^2.1.3" uuid "^8.3.0" +"@ckb-lumos/helpers@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.20.0.tgz#bc0555aeaba146ce90726ac87acad7e2200112c7" + integrity sha512-UWxiJSljZcN1zH6Blv5HyjNGgA9VSXyXFh8VSYD7W1xEeHYK05LP00rRWtEr8Z+KSfuuZ0ASg2sJofBDv/UZ9w== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/config-manager" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + bech32 "^2.0.0" + immutable "^4.0.0-rc.12" + "@ckb-lumos/helpers@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/helpers/-/helpers-0.21.0-next.1.tgz#f0f2d9e231f5a266d53df0c60e7b7610b87e10b5" @@ -1527,6 +1617,32 @@ bech32 "^2.0.0" immutable "^4.3.0" +"@ckb-lumos/lumos@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/lumos/-/lumos-0.20.0.tgz#47cd173affa81051f8a8fa60c91c366001d82d6c" + integrity sha512-LIKf1tDNk0HkK3DQ+BV4dmj/B7nfkbVXlPbzqxwLRaqHTbAArXs8g3JXGfmjZIgpoU6sfXdArO1jVpGRN1xnYg== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@ckb-lumos/ckb-indexer" "0.20.0" + "@ckb-lumos/common-scripts" "0.20.0" + "@ckb-lumos/config-manager" "0.20.0" + "@ckb-lumos/hd" "0.20.0" + "@ckb-lumos/helpers" "0.20.0" + "@ckb-lumos/rpc" "0.20.0" + "@ckb-lumos/toolkit" "0.20.0" + +"@ckb-lumos/rpc@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.20.0.tgz#7da342c6db0403ecf654c0281e004653c1220dc0" + integrity sha512-vAH/rXMnKYcyKVW8/vg5EvY9roW46FlDod/efLGN5FQyROn0O5Y9PTO/7bs4U1KyPeceHQpRW0ZAQ/KEHBWEzA== + dependencies: + "@ckb-lumos/base" "0.20.0" + "@ckb-lumos/bi" "0.20.0" + "@vespaiach/axios-fetch-adapter" "^0.3.1" + axios "0.27.2" + tslib "2.3.1" + "@ckb-lumos/rpc@0.21.0-next.1", "@ckb-lumos/rpc@^0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/rpc/-/rpc-0.21.0-next.1.tgz#f31610fc1713ae63e25475d3653ee8cc3eeabc0f" @@ -1538,6 +1654,11 @@ axios "0.27.2" tslib "2.3.1" +"@ckb-lumos/toolkit@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.20.0.tgz#8f71043324e50c8a3e94c65414325482d874cfca" + integrity sha512-nLNXRPG20NqUdXwHAnKwr0T7nZyDrf4fGwIrsxo+7ffqWeg9wNEhZoqTBJLgxEpoe0I+WHRLwYLiwUbkkqR1SQ== + "@ckb-lumos/toolkit@0.21.0-next.1": version "0.21.0-next.1" resolved "https://registry.yarnpkg.com/@ckb-lumos/toolkit/-/toolkit-0.21.0-next.1.tgz#f8ce7b5fa5b388f1870efd309a114f3df2e74c61" @@ -3009,6 +3130,19 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@spore-sdk/core@0.1.0-beta.9": + version "0.1.0-beta.9" + resolved "https://registry.yarnpkg.com/@spore-sdk/core/-/core-0.1.0-beta.9.tgz#0ec68155367f72c5dcd40de7dcdbc12029a69e5d" + integrity sha512-Bku2Wrya1bFBAvBhWnzCnHMrZF1y4qWKES27dKYVOIZghBPK5WAYU2fDGWRCuU8YhueUOdqeUnkbVxc0mgyfuA== + dependencies: + "@ckb-lumos/base" "^0.20.0" + "@ckb-lumos/bi" "^0.20.0" + "@ckb-lumos/codec" "^0.20.0" + "@ckb-lumos/config-manager" "^0.20.0" + "@ckb-lumos/lumos" "^0.20.0" + lodash "^4.17.21" + whatwg-mimetype "^3.0.0" + "@sqltools/formatter@^1.2.2": version "1.2.5" resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" @@ -10504,7 +10638,7 @@ immutable@^4.0.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== -immutable@^4.3.0: +immutable@^4.0.0-rc.12, immutable@^4.3.0: version "4.3.4" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== @@ -18174,6 +18308,11 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"