本文整理汇总了TypeScript中ts/utils/utils.utils.assert方法的典型用法代码示例。如果您正苦于以下问题:TypeScript utils.assert方法的具体用法?TypeScript utils.assert怎么用?TypeScript utils.assert使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ts/utils/utils.utils
的用法示例。
在下文中一共展示了utils.assert方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: _startListeningForExchangeLogFillEventsAsync
private async _startListeningForExchangeLogFillEventsAsync(indexFilterValues: IndexedFilterValues): Promise<void> {
utils.assert(!_.isUndefined(this._zeroEx), 'ZeroEx must be instantiated.');
utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses);
// Fetch historical logs
await this._fetchHistoricalExchangeLogFillEventsAsync(indexFilterValues);
// Start a subscription for new logs
this._zeroEx.exchange.subscribe(
ExchangeEvents.LogFill,
indexFilterValues,
async (err: Error, decodedLogEvent: DecodedLogEvent<LogFillContractEventArgs>) => {
if (err) {
// Note: it's not entirely clear from the documentation which
// errors will be thrown by `watch`. For now, let's log the error
// to rollbar and stop watching when one occurs
// tslint:disable-next-line:no-floating-promises
errorReporter.reportAsync(err); // fire and forget
return;
} else {
const decodedLog = decodedLogEvent.log;
if (!this._doesLogEventInvolveUser(decodedLog)) {
return; // We aren't interested in the fill event
}
this._updateLatestFillsBlockIfNeeded(decodedLog.blockNumber);
const fill = await this._convertDecodedLogToFillAsync(decodedLog);
if (decodedLogEvent.isRemoved) {
tradeHistoryStorage.removeFillFromUser(this._userAddressIfExists, this.networkId, fill);
} else {
tradeHistoryStorage.addFillToUser(this._userAddressIfExists, this.networkId, fill);
}
}
},
);
}
示例2: transferAsync
public async transferAsync(token: Token, toAddress: string, amountInBaseUnits: BigNumber): Promise<void> {
utils.assert(!_.isUndefined(this._zeroEx), 'ZeroEx must be instantiated.');
utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses);
this._showFlashMessageIfLedger();
const txHash = await this._zeroEx.token.transferAsync(
token.address,
this._userAddressIfExists,
toAddress,
amountInBaseUnits,
{
gasPrice: this._defaultGasPrice,
},
);
await this._showEtherScanLinkAndAwaitTransactionMinedAsync(txHash);
const etherScanLinkIfExists = sharedUtils.getEtherScanLinkIfExists(
txHash,
this.networkId,
EtherscanLinkSuffixes.Tx,
);
this._dispatcher.showFlashMessage(
React.createElement(TokenSendCompleted, {
etherScanLinkIfExists,
token,
toAddress,
amountInBaseUnits,
}),
);
}
示例3: startListeningForExchangeLogFillEventsAsync
private async startListeningForExchangeLogFillEventsAsync(indexFilterValues: IndexedFilterValues): Promise<void> {
utils.assert(!_.isUndefined(this.zeroEx), 'ZeroEx must be instantiated.');
utils.assert(this.doesUserAddressExist(), BlockchainCallErrs.USER_HAS_NO_ASSOCIATED_ADDRESSES);
const fromBlock = tradeHistoryStorage.getFillsLatestBlock(this.userAddress, this.networkId);
const subscriptionOpts: SubscriptionOpts = {
fromBlock,
toBlock: 'latest',
};
const exchangeAddress = this.getExchangeContractAddressIfExists();
const exchangeLogFillEventEmitter = await this.zeroEx.exchange.subscribeAsync(
ExchangeEvents.LogFill, subscriptionOpts, indexFilterValues, exchangeAddress,
);
this.exchangeLogFillEventEmitters.push(exchangeLogFillEventEmitter);
exchangeLogFillEventEmitter.watch(async (err: Error, event: ContractEvent) => {
if (err) {
// Note: it's not entirely clear from the documentation which
// errors will be thrown by `watch`. For now, let's log the error
// to rollbar and stop watching when one occurs
errorReporter.reportAsync(err); // fire and forget
this.stopWatchingExchangeLogFillEventsAsync(); // fire and forget
return;
} else {
const args = event.args as LogFillContractEventArgs;
const isBlockPending = _.isNull(event.blockNumber);
if (!isBlockPending) {
// Hack: I've observed the behavior where a client won't register certain fill events
// and lowering the cache blockNumber fixes the issue. As a quick fix for now, simply
// set the cached blockNumber 50 below the one returned. This way, upon refreshing, a user
// would still attempt to re-fetch events from the previous 50 blocks, but won't need to
// re-fetch all events in all blocks.
// TODO: Debug if this is a race condition, and apply a more precise fix
const blockNumberToSet = event.blockNumber - 50 < 0 ? 0 : event.blockNumber - 50;
tradeHistoryStorage.setFillsLatestBlock(this.userAddress, this.networkId, blockNumberToSet);
}
const isUserMakerOrTaker = args.maker === this.userAddress ||
args.taker === this.userAddress;
if (!isUserMakerOrTaker) {
return; // We aren't interested in the fill event
}
const blockTimestamp = await this.web3Wrapper.getBlockTimestampAsync(event.blockHash);
const fill = {
filledTakerTokenAmount: args.filledTakerTokenAmount,
filledMakerTokenAmount: args.filledMakerTokenAmount,
logIndex: event.logIndex,
maker: args.maker,
orderHash: args.orderHash,
taker: args.taker,
makerToken: args.makerToken,
takerToken: args.takerToken,
paidMakerFee: args.paidMakerFee,
paidTakerFee: args.paidTakerFee,
transactionHash: event.transactionHash,
blockTimestamp,
};
tradeHistoryStorage.addFillToUser(this.userAddress, this.networkId, fill);
}
});
}
示例4: setProxyAllowanceAsync
public async setProxyAllowanceAsync(token: Token, amountInBaseUnits: BigNumber.BigNumber): Promise<void> {
utils.assert(this.isValidAddress(token.address), BlockchainCallErrs.TOKEN_ADDRESS_IS_INVALID);
utils.assert(this.doesUserAddressExist(), BlockchainCallErrs.USER_HAS_NO_ASSOCIATED_ADDRESSES);
utils.assert(!_.isUndefined(this.zeroEx), 'ZeroEx must be instantiated.');
await this.zeroEx.token.setProxyAllowanceAsync(
token.address, this.userAddress, amountInBaseUnits,
);
const allowance = amountInBaseUnits;
this.dispatcher.replaceTokenAllowanceByAddress(token.address, allowance);
}
示例5: convertWrappedEthTokensToEthAsync
public async convertWrappedEthTokensToEthAsync(etherTokenAddress: string, amount: BigNumber): Promise<void> {
utils.assert(!_.isUndefined(this._zeroEx), 'ZeroEx must be instantiated.');
utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses);
this._showFlashMessageIfLedger();
const txHash = await this._zeroEx.etherToken.withdrawAsync(
etherTokenAddress,
amount,
this._userAddressIfExists,
{
gasPrice: this._defaultGasPrice,
},
);
await this._showEtherScanLinkAndAwaitTransactionMinedAsync(txHash);
}
示例6: fetchTokenInformationAsync
private async fetchTokenInformationAsync() {
utils.assert(!_.isUndefined(this.networkId),
'Cannot call fetchTokenInformationAsync if disconnected from Ethereum node');
this.dispatcher.updateBlockchainIsLoaded(false);
this.dispatcher.clearTokenByAddress();
const tokenArrays = await Promise.all([
this.getTokenRegistryTokensAsync(),
this.getCustomTokensAsync(),
]);
const tokens = _.flatten(tokenArrays);
// HACK: We need to fetch the userAddress here because otherwise we cannot fetch the token
// balances and allowances and we need to do this in order not to trigger the blockchain
// loading dialog to show up twice. First to load the contracts, and second to load the
// balances and allowances.
this.userAddress = await this.web3Wrapper.getFirstAccountIfExistsAsync();
if (!_.isEmpty(this.userAddress)) {
this.dispatcher.updateUserAddress(this.userAddress);
}
await this.updateTokenBalancesAndAllowancesAsync(tokens);
const mostPopularTradingPairTokens: Token[] = [
_.find(tokens, {symbol: configs.mostPopularTradingPairSymbols[0]}),
_.find(tokens, {symbol: configs.mostPopularTradingPairSymbols[1]}),
];
this.dispatcher.updateChosenAssetTokenAddress(Side.deposit, mostPopularTradingPairTokens[0].address);
this.dispatcher.updateChosenAssetTokenAddress(Side.receive, mostPopularTradingPairTokens[1].address);
this.dispatcher.updateBlockchainIsLoaded(true);
}
示例7: getTokenRegistryTokensAsync
private async getTokenRegistryTokensAsync(): Promise<Token[]> {
utils.assert(!_.isUndefined(this.zeroEx), 'ZeroEx must be instantiated.');
const tokenRegistryTokens = await this.zeroEx.tokenRegistry.getTokensAsync();
const tokenBalanceAllowancePromises: Array<Promise<BigNumber.BigNumber[]>> = _.map(
tokenRegistryTokens,
(token: ZeroExToken) => (this.getTokenBalanceAndAllowanceAsync(this.userAddress, token.address)),
);
const balancesAndAllowances = await Promise.all(tokenBalanceAllowancePromises);
const tokens = _.map(tokenRegistryTokens, (t: ZeroExToken, i: number) => {
const [
balance,
allowance,
] = balancesAndAllowances[i];
// HACK: For now we have a hard-coded list of iconUrls for the dummyTokens
// TODO: Refactor this out and pull the iconUrl directly from the TokenRegistry
const iconUrl = constants.iconUrlBySymbol[t.symbol];
const token: Token = {
iconUrl: !_.isUndefined(iconUrl) ? iconUrl : constants.DEFAULT_TOKEN_ICON_URL,
address: t.address,
balance,
allowance,
name: t.name,
symbol: t.symbol,
decimals: t.decimals,
};
return token;
});
return tokens;
}
示例8: pollTokenBalanceAsync
public async pollTokenBalanceAsync(token: Token) {
utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses);
const [currBalance] = await this.getTokenBalanceAndAllowanceAsync(this._userAddressIfExists, token.address);
const newTokenBalancePromise = new Promise((resolve: (balance: BigNumber) => void, reject) => {
const tokenPollInterval = intervalUtils.setAsyncExcludingInterval(
async () => {
const [balance] = await this.getTokenBalanceAndAllowanceAsync(
this._userAddressIfExists,
token.address,
);
if (!balance.eq(currBalance)) {
intervalUtils.clearAsyncExcludingInterval(tokenPollInterval);
resolve(balance);
}
},
5000,
(err: Error) => {
logUtils.log(`Polling tokenBalance failed: ${err}`);
intervalUtils.clearAsyncExcludingInterval(tokenPollInterval);
reject(err);
},
);
});
return newTokenBalancePromise;
}
示例9: signOrderHashAsync
public async signOrderHashAsync(orderHash: string): Promise<ECSignature> {
utils.assert(!_.isUndefined(this._zeroEx), 'ZeroEx must be instantiated.');
const makerAddress = this._userAddressIfExists;
// If makerAddress is undefined, this means they have a web3 instance injected into their browser
// but no account addresses associated with it.
if (_.isUndefined(makerAddress)) {
throw new Error('Tried to send a sign request but user has no associated addresses');
}
this._showFlashMessageIfLedger();
const nodeVersion = await this._web3Wrapper.getNodeVersionAsync();
const isParityNode = utils.isParityNode(nodeVersion);
const isTestRpc = utils.isTestRpc(nodeVersion);
const isLedgerSigner = !_.isUndefined(this._ledgerSubprovider);
let shouldAddPersonalMessagePrefix = true;
if ((isParityNode && !isLedgerSigner) || isTestRpc || isLedgerSigner) {
shouldAddPersonalMessagePrefix = false;
}
const ecSignature = await this._zeroEx.signOrderHashAsync(
orderHash,
makerAddress,
shouldAddPersonalMessagePrefix,
);
this._dispatcher.updateECSignature(ecSignature);
return ecSignature;
}
示例10: fillOrderAsync
public async fillOrderAsync(maker: string, taker: string, makerTokenAddress: string,
takerTokenAddress: string, makerTokenAmount: BigNumber.BigNumber,
takerTokenAmount: BigNumber.BigNumber, makerFee: BigNumber.BigNumber,
takerFee: BigNumber.BigNumber, expirationUnixTimestampSec: BigNumber.BigNumber,
feeRecipient: string, fillTakerTokenAmount: BigNumber.BigNumber,
signatureData: SignatureData, salt: BigNumber.BigNumber): Promise<BigNumber.BigNumber> {
utils.assert(this.doesUserAddressExist(), BlockchainCallErrs.USER_HAS_NO_ASSOCIATED_ADDRESSES);
taker = taker === '' ? constants.NULL_ADDRESS : taker;
const ecSignature = signatureData;
const exchangeContractAddress = this.getExchangeContractAddressIfExists();
const signedOrder = {
ecSignature,
exchangeContractAddress,
expirationUnixTimestampSec,
feeRecipient,
maker,
makerFee,
makerTokenAddress,
makerTokenAmount,
salt,
taker,
takerFee,
takerTokenAddress,
takerTokenAmount,
};
const shouldThrowOnInsufficientBalanceOrAllowance = true;
const amountFilledInTakerTokens = await this.zeroEx.exchange.fillOrderAsync(
signedOrder, fillTakerTokenAmount, shouldThrowOnInsufficientBalanceOrAllowance, this.userAddress,
);
return amountFilledInTakerTokens;
}