UNPKG

@lyncworld/fuel-marketplace

Version:

Marketplace NPM SDK on Fuel blockchain. Powered by LYNC, it allows anyone to create their own decentralized marketplace which includes listing and buying of Non-fungible tokens (NFTs) and Semi-fungible tokens (SFTs) in a few lines of code.

45 lines (34 loc) 1.72 kB
import { MarketplaceErrorCodes } from '@/enums'; import { MarketplaceError } from '@/interfaces'; export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); export const checkArguments = (args: Array<unknown>, type: 'arguments' | 'properties') => { const validArgs = args.every((arg) => arg !== undefined && arg !== null); if (!validArgs) { const argsString = args.map((arg) => String(arg)).join(', '); const errorMsg = type === 'arguments' ? `Invalid argument${args.length > 1 ? 's' : ''} Error: ${argsString} ${args.length > 1 ? 'are' : 'is'} required.` : `${args.length > 1 ? 'Properties' : 'Property'} Undefined Error: ${argsString} ${args.length > 1 ? 'are' : 'is'} not defined.`; throw new MarketplaceError( `${type === 'arguments' ? 'Invalid Arguments Error' : 'Properties Undefined Error'}: ${errorMsg}`, type === 'arguments' ? MarketplaceErrorCodes.InvalidArgumentsError : MarketplaceErrorCodes.PropertyUndefinedError, type === 'arguments' ? { arguments: args } : { properties: args } ); } }; export const getDecimalPlaces = (n: number) => { const numStr = n.toString(); if (numStr.includes('e-')) { const [base, exp] = numStr.split('e-'); const decimals = parseInt(exp, 10) + (base.includes('.') ? base.split('.')[1].length : 0); return decimals; } else if (numStr.includes('e')) { const [_, exp] = numStr.split('e'); return parseInt(exp, 10) * -1; } else if (numStr.includes('.')) { return numStr.split('.')[1].length; } return 0; }; export const getFormattedPrice = (price: string) => (parseFloat(price) / 10 ** 9).toFixed(getDecimalPlaces(parseFloat(price) / 10 ** 9));