All files anonymizer.ts

100% Statements 50/50
100% Branches 33/33
100% Functions 5/5
100% Lines 50/50

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            6x   1x   6x 3x   2x 2x 2x   1x     3x       7x 1x     7x 4x 3x 3x 3x 3x   1x     3x       6x 1x     6x 3x 2x 2x 2x   1x     3x       7x 1x     7x 4x 2x 2x 2x   2x     3x       8x 5x   1x 1x     4x 2x 2x 2x 2x 2x 1x   1x       3x        
/**
 * this util module is about to anonymize strings like phone, user name, account no and so on
 * @module angle-util/anonymizer
 */
export default {
  fixMobileNo (phone: number | string): string {
    if (typeof (phone) === 'number') {
      // change phone into string type at first
      phone = phone.toString()
    }
    if (phone) {
      if (phone.length === 11) {
        // valid mobile length
        let prefix = phone.substring(0, 3)
        let suffix = phone.substring(phone.length - 4)
        return `${prefix}****${suffix}`
      } else {
        return phone
      }
    } else {
      return ''
    }
  },
  fixTelNo (tel: number | string): string {
    if (typeof (tel) === 'number') {
      tel = tel.toString()
    }
    // NOTE 保留前3,后4,其他位隐匿
    if (tel) {
      if (tel.length >= 8) {
        let prefix = tel.substring(0, 3)
        let suffix = tel.substring(tel.length - 4)
        let anonyLength = tel.length - 7
        return `${prefix}${'*'.repeat(anonyLength)}${suffix}`
      } else {
        return tel
      }
    } else {
      return ''
    }
  },
  fixCardNo (cardNo: number | string): string {
    if (typeof (cardNo) === 'number') {
      cardNo = cardNo.toString()
    }
    // NOTE 隐匿倒数第5位至往前共9位内容
    if (cardNo) {
      if (cardNo.length >= 16) {
        const prefix = cardNo.substring(0, cardNo.length - 13)
        const suffix = cardNo.substring(cardNo.length - 4)
        return `${prefix}*********${suffix}`
      } else {
        return cardNo
      }
    } else {
      return ''
    }
  },
  fixCertNo (certNo: number | string): string {
    if (typeof (certNo) === 'number') {
      certNo = certNo.toString()
    }
    // NOTE 隐匿倒数第6位至往前共4位内容
    if (certNo) {
      if (certNo.length >= 15) {
        const prefix = certNo.substring(0, certNo.length - 9)
        const suffix = certNo.substring(certNo.length - 5)
        return `${prefix}****${suffix}`
      } else {
        return certNo
      }
    } else {
      return ''
    }
  },
  fixName (name: string, hideFirst = false): string {
    if (name) {
      if (hideFirst) {
        // 隐藏姓,显示名
        let suffix = name.substring(1)
        return `*${suffix}`
      } else {
        // 隐藏除首尾的其他内容
        if (name.length > 2) {
          let prefix = name[0]
          let suffix = name[name.length - 1]
          let anonyLength = name.length - 2
          return `${prefix}${'*'.repeat(anonyLength)}${suffix}`
        } else if (name.length === 2) {
          return `${name[0]}*`
        } else {
          return name
        }
      }
    } else {
      return ''
    }
  }
}