stringUtils.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. export function capitalizeFirstLetter(string) {
  2. return string.charAt(0).toUpperCase() + string.slice(1)
  3. }
  4. export const hashRender = (hash, size = 4, separator = '...') => {
  5. return hash.slice(0, size) + separator + hash.slice(-size)
  6. }
  7. export const sliceAddress = (address) => {
  8. return '0x' + hashRender(address.slice(2))
  9. }
  10. export const sliceEnsName = (name, size = 4, separator = '...') => {
  11. const chars = [...name]
  12. const last = name
  13. .split('.')
  14. .pop()
  15. .slice(-size)
  16. if (chars[0]?.length === 2 && last) {
  17. // 🐵🍆💦.eth -> 🐵🍆💦.eth
  18. if (chars.length - 4 <= 4) return name
  19. // 🦍🦍🦍🦍🦍🦍🦍.eth -> 🦍🦍🦍...eth
  20. return [].concat(chars.slice(0, 3), separator, last).join('')
  21. }
  22. if (chars.length <= 2 * size + 2 + separator.length) return name
  23. if (!name.includes('.')) return sliceAddress(name, size, separator)
  24. return last.length
  25. ? [].concat(chars.slice(0, 2 * size - last.length), separator, last).join('')
  26. : [].concat(chars.slice(0, size), separator, chars.slice(-size)).join('')
  27. }
  28. const semVerRegex = /^(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)(?:-(?<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
  29. export const parseSemanticVersion = (version) => {
  30. const { groups } = semVerRegex.exec(version)
  31. return groups
  32. }
  33. export const isWalletRejection = (err) => {
  34. return /cance(l)+ed|denied|rejected/im.test(err.message)
  35. }