Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | 21x 21x 21x 6x 3x 3x 3x 3x 3x 1x 1x 2x 38x 38x 26x 10x 10x 10x 10x 10x 10x 13x 13x 1x 1x 21x 21x 21x 21x 21x 21x 21x | import { Address, LengthPrefixedString, createAddress, addressToString, createLPString, } from '../common/utils'; import { ClarityType } from '../common/constants'; import { utf8ToBytes } from 'micro-stacks/common'; type PrincipalCV = StandardPrincipalCV | ContractPrincipalCV; interface StandardPrincipalCV { readonly type: ClarityType.PrincipalStandard; readonly address: Address; } interface ContractPrincipalCV { readonly type: ClarityType.PrincipalContract; readonly address: Address; readonly contractName: LengthPrefixedString; } function principalToString(principal: PrincipalCV): string { if (principal.type === ClarityType.PrincipalStandard) { return addressToString(principal.address); } else if (principal.type === ClarityType.PrincipalContract) { const address = addressToString(principal.address); return `${address}.${principal.contractName.content}`; } else E{ throw new Error(`Unexpected principal data: ${JSON.stringify(principal)}`); } } function principalCV(principal: string): PrincipalCV { if (principal.includes('.')) { const [address, contractName] = principal.split('.'); return contractPrincipalCV(address, contractName); } else { return standardPrincipalCV(principal); } } function standardPrincipalCV(addressString: string): StandardPrincipalCV { const addr = createAddress(addressString); return { type: ClarityType.PrincipalStandard, address: addr }; } function standardPrincipalCVFromAddress(address: Address): StandardPrincipalCV { return { type: ClarityType.PrincipalStandard, address }; } function _contractPrincipalCV(contractAddress: string, contractName: string): ContractPrincipalCV { const addr = createAddress(contractAddress); const lengthPrefixedContractName = createLPString(contractName); return contractPrincipalCVFromAddress(addr, lengthPrefixedContractName); } function contractPrincipalCV( /** pass either the contract_id or contract address */ addressOrContractId: string, /** pass the contract name if the previous argument is only the address */ contractName?: string ): ContractPrincipalCV { Iif (addressOrContractId.includes('.')) { const [address, name] = addressOrContractId.split('.'); return _contractPrincipalCV(address, name); } Iif (!contractName) throw TypeError(`[micro-stacks] contractPrincipalCV requires contractName value`); return _contractPrincipalCV(addressOrContractId, contractName); } function contractPrincipalCVFromAddress( address: Address, contractName: LengthPrefixedString ): ContractPrincipalCV { Iif (utf8ToBytes(contractName.content).byteLength >= 128) { throw new Error('Contract name must be less than 128 bytes'); } return { type: ClarityType.PrincipalContract, address, contractName }; } function contractPrincipalCVFromStandard( sp: StandardPrincipalCV, contractName: string ): ContractPrincipalCV { const lengthPrefixedContractName = createLPString(contractName); return { type: ClarityType.PrincipalContract, address: sp.address, contractName: lengthPrefixedContractName, }; } export { PrincipalCV, StandardPrincipalCV, ContractPrincipalCV, principalCV, principalToString, standardPrincipalCV, standardPrincipalCVFromAddress, contractPrincipalCV, contractPrincipalCVFromAddress, contractPrincipalCVFromStandard, }; |