npm.io
1.4.19 • Published 3 years ago

lc-js-common

Licence
—
Version
1.4.19
Deps
6
Size
39 kB
Vulns
14
Weekly
0

lc-js-common

项目中,用到的一些公共函数方法集合。

使用方法

例如:

import { L, TimeUnit, array, doConsoleConfig } from 'lc-js-common';
const { assert } = require('chai');
describe('公共库测试', () => {

  it("1.驼峰命名转换数据库命名", () => {
    assert.equal(L.toDBField("tMyTable"), "t_my_table")
    assert.equal(L.toDBField("userName"), "user_name")
    assert.equal(L.toDBField(" id "), "id")
    assert.equal(L.toDBField(), "")
  })

  it("2.首字母大写", () => {
    assert.equal(L.toFirstWordUpperCase("linc"), "Linc")
    assert.equal(L.toFirstWordUpperCase("Linc"), "Linc")
    assert.equal(L.toFirstWordUpperCase(" linc"), "Linc")
    assert.equal(L.toFirstWordUpperCase(" 123linc"), "123linc")
    assert.equal(L.toFirstWordUpperCase(), "")
  })

  it("3.获取当前秒的时间戳", () => {
    assert.equal(L.now(), parseInt(new Date() / 1000))
  })

  it("4.数据库字端转小驼峰", () => {
    assert.equal(L.toLittleHump("user_name"), "userName")
    assert.equal(L.toLittleHump(" user_name "), "userName")
    assert.equal(L.toLittleHump(), "")
  })

  it("5.判断是否为空", () => {
    assert.equal(L.isNullOrEmpty(""), true)
    assert.equal(L.isNullOrEmpty(), true)
    assert.equal(L.isNullOrEmpty(null), true)
    assert.equal(L.isNullOrEmpty(undefined), true)
    assert.equal(L.isNullOrEmpty(() => {
    }), false)
    assert.equal(L.isNullOrEmpty([]), true)
    assert.equal(L.isNullOrEmpty({}), true)
    assert.equal(L.isNullOrEmpty(123), false)
    assert.equal(L.isNullOrEmpty("123"), false)
  })

  it("6.去掉左右两边空格", () => {
    assert.equal(L.trim("  linc  "), 'linc')
    assert.equal(L.trim("linc  "), 'linc')
    assert.equal(L.trim("  linc"), 'linc')
    assert.equal(L.trim("  l inc"), 'l inc')
  })

  it("7.TimeUnit", () => {
    assert.equal(TimeUnit.days.toMinutes(1), 24 * 60) //1天=24小时*60分钟
    assert.equal(TimeUnit.days.toMillis(1), 24 * 60 * 60 * 1000) //1天=24*60*60*1000毫秒
    assert.equal(TimeUnit.seconds.toMillis(1), 1000) //1天=24*60*60*1000毫秒
    assert.equal(TimeUnit.microseconds.toMillis(1000), 1) //1000毫秒=1微秒
    assert.equal(TimeUnit.milliseconds.toMillis(1), 1) //1毫秒=1毫秒
  })

  it("8.全局间隔执行", (done) => {
    let i = 1;
    const id = 1234;
    const priorityExecution = true; //put之前先执行一次。
    L.timer.putTrigger({
      id,
      priorityExecution,
      timeUnit: TimeUnit.seconds, interval: 2, trigger: () => {
        console.log(`当前方法被触发了:${ i }次`);
        if (i++ === 10) {
          done();
        }
      }
    });
    L.timer.deleteTrigger({ id });
  }).timeout(100000)

  it("9.日期格式化", () => {
    const format = 'yyyy-MM-dd hh:mm:ss';
    assert.equal(L.dateFormatter(new Date(), format), L.now({ format }))
  })

  it("10.身份证号校验", () => {
    assert.equal(L.checkIDNumber("110101199003074530"), true);
  })

  it("11.删除数组元素", () => {
    const deleteIndexArray = [ 1, 2, 3, 4, 5, 9, 2, 3, 5, 4, 3 ];
    //删除下标
    array.deleteIndex(deleteIndexArray, 3, 2, 4, 5, 2)
    assert.equal(JSON.stringify(deleteIndexArray),
        JSON.stringify([ 1, 2, 2, 3, 5, 4, 3 ]))
    const deleteLastArray = [ 1, 2, 3 ];
    array.deleteLast(deleteLastArray)
    assert.equal(JSON.stringify(deleteLastArray), JSON.stringify([ 1, 2 ]))
  })

  it("12.获取当天日期", () => {
    console.log(L.now())
    console.log(L.getCurrentDay())
  })
  it("13.range", () => {
    L.range(1001, (i) => {
      console.log(i);
    });
  })

  it("14.获取当前日期的之前N天", () => {
    console.log(L.getCurrentDay()-(TimeUnit.days.toSeconds(60)))
  })

  it("15.md5", () => {
    console.log(L.md5(123456))
  })

  it("16.hash512", () => {
    console.log(L.hash512("666", 123456))
  })

  it("17.base64", () => {
    const base64 = L.base64;
    const message = base64.encrypt(1);
    console.log(message)
    console.log(base64.decrypt(message))
  })
  it("18.uuid", () => {
    console.log(L.uuid())
  })

jwt = jsonWebToken(key) jwt.sign(payload, secretOrPrivateKey options:

  • algorithm (default: HS256)
  • expiresIn: expressed in seconds or a string describing a time span zeit/ms.

    Eg: 60, "2 days", "10h", "7d". A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default ("120" is equal to "120ms").

  • notBefore: expressed in seconds or a string describing a time span zeit/ms.

    Eg: 60, "2 days", "10h", "7d". A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default ("120" is equal to "120ms").

  • audience
  • issuer
  • jwtid
  • subject
  • noTimestamp
  • header
  • keyid
  • mutatePayload: if true, the sign function will modify the payload object directly. This is useful if you need a raw reference to the payload after claims
it("19.jwt", async () => {
 const jwt = jsonWebToken("bd82oGov07WK^f.@");
 const authorization = await jwt.sign(
         {
           name: 'Linc',
           age: 32
         },
         {
           expiresIn: '2day', header: {
             userId: 1001, name: "Linc"
           }
         });
 console.log("verify", await jwt.verify(authorization, { complete: true }))
 console.log(authorization)
 console.log(await jwt.getUserInfo({ authorization }));
})
it("20.mapper", () => {
    const a = {}
    const array = [ 1, 2, 3, 4 ];
    const map = {
      'a': 1,
      'b': 2
    };
    L.mapper(a)({ array, map }, 't')
    assert.equal(a.t(), array)
    assert.equal(a.t('map'), map)
    console.log(a.t())
    console.log(a.t('map'))
  })
 it("21.元转换为分,分转为元", () => {
   const fenToYuan = L.convertAmount(100000001)
   console.log(fenToYuan)
   assert.equal(fenToYuan, "1,000,000.01")
   const yuanToFen = L.convertAmount("1,000,000.01")
   console.log(yuanToFen)
   assert.equal(yuanToFen, 100000001)
 })
 it("22.随机串", () => {
   console.log(L.randomCode(16))
 })
 it("23.随机数", () => {
   console.log(L.randomNumber(16))
 })
 it("24.AES加密", () => {
   const key = L.randomCode(16);
   const { encrypt, decrypt } = L.aes;
   const data = encrypt({ data: 'absdafadfasdfcdefg', key });
   console.log(data)
   const data1 = decrypt({ data, key });
   console.log(data1)
 })
 it("25.替换末尾为0的方法", () => {
   assert.equal(L.replaceNumWith0AtEnd("0.000128800",2), "0.0001288")
   assert.equal(L.replaceNumWith0AtEnd("12340.8000",2), "12340.80")
   assert.equal(L.replaceNumWith0AtEnd("0.80000",3), "0.800")
   assert.equal(L.replaceNumWith0AtEnd("12340.8000", 3, true), "12,340.800")
   assert.equal(L.replaceNumWith0AtEnd("12340", 3, true), "12,340.000")
   assert.equal(L.replaceNumWith0AtEndEx({ num: "12340", thousandCharacter: true }),"12,340.00")
 }) 
 it("26.rsa", () => {
   console.log(L.rsa.createKey())
 })
 
  it("27.数组去重", () => {
   const values = [
       { id: 1, name: 'a', b: 1 },
     { id: 1, name: 'a', b: 2 },
     { id: 1, name: 'a', b: 3 },
     { id: 2, name: 'b', b: 3 } ]
   const primaryKeys = ['id']; //去重主键
   const targetKeys = ['id','name']; // 返回对象。
   console.log(array.deDuplication(values, primaryKeys, targetKeys))
   // 控制台打印值:[ { id: 1, name: 'a' }, { id: 2, name: 'b' } ]
 })
 it("28.时间段内只被执行一次。", () => {
   const key = L.uuid();
   const fun = function () {
     console.log('被执行了。')
   };
   const lockTime = 3;
   const timeUnit = TimeUnit.seconds;
   // lockTime= 3 与TimeUnit.seconds ,3秒内,只能被执行一次。
   L.defineExecution(fun, {
     key, lockTime, timeUnit
   })
   setTimeout(() => L.defineExecution(fun, {
     key, lockTime, timeUnit
   }), 2000);
   setTimeout(() => L.defineExecution(fun, {
     key, lockTime, timeUnit
   }), 2000);
   //方法在4秒内被执行了,3次,开始执行一次,睡2秒后被执行一次,第4秒又被执行了一次,
   //最后结果会出现两次被执行了。分别是开始调用与第三次调用。
 }).timeout(100000)
 it("29.signMd5", () => {
   console.log(L.signMd5("abcd122354",{
     a1:"123",
     c2:"456",
     b:"dfsgf"
   }))
 })
 it("30.add console.log time add code line", () => {
   doConsoleConfig()
   console.log("hello world.","4466","7788","15458")
 })
 
 it("39.includeSlash = false value = https://127.0.0.1:8080/ => https://127.0.0.1:8080 value = https://127.0.0.1:8080 => https://127.0.0.1:8080 includeSlash = true value = https://127.0.0.1:8080/ => https://127.0.0.1:8080/ value = https://127.0.0.1:8080 => https://127.0.0.1:8080/", () => {
   assert.equal(L.replacePathLastSlash({ value:'https://127.0.0.1:8080/', includeSlash: true }), 'https://127.0.0.1:8080/')
   assert.equal(L.replacePathLastSlash({ value:'https://127.0.0.1:8080/', includeSlash: false }), 'https://127.0.0.1:8080')
   assert.equal(L.replacePathLastSlash({ value:'https://127.0.0.1:8080', includeSlash: true }), 'https://127.0.0.1:8080/')
   assert.equal(L.removeLashSlash('https://127.0.0.1:8080/'), 'https://127.0.0.1:8080')
   assert.equal(L.removeLashSlash('https://127.0.0.1:8080'), 'https://127.0.0.1:8080')
   assert.equal(L.addLashSlash('https://127.0.0.1:8080'), 'https://127.0.0.1:8080/')
   assert.equal(L.addLashSlash('https://127.0.0.1:8080/'), 'https://127.0.0.1:8080/')
 })
 it("40.includeSlash = false value = /abc/efg => abc/efg value = abc/efg => abc/efg includeSlash = true value = /abc/efg => /abc/efg value = abc/efg => /abc/efg", () => {
   assert.equal(L.replacePathFirstSlash({ value:'/abc/efg', includeSlash: true }), '/abc/efg')
   assert.equal(L.replacePathFirstSlash({ value:'abc/efg', includeSlash: true }), '/abc/efg')
   assert.equal(L.replacePathFirstSlash({ value:'abc/efg', includeSlash: false }), 'abc/efg')
   assert.equal(L.replacePathFirstSlash({ value:'/abc/efg', includeSlash: false }), 'abc/efg')
   assert.equal(L.removeFirstSlash('/abc/efg'), 'abc/efg')
   assert.equal(L.removeFirstSlash('abc/efg'), 'abc/efg')
   assert.equal(L.addFirstSlash('/abc/efg'), '/abc/efg')
   assert.equal(L.addFirstSlash('abc/efg'), '/abc/efg')
 })
 it("41.防抖", () => {
   const obj = {}

   for (let i = 0; i < 10; i++) {
     L.useDebounce(obj,function (){
       console.log(i)
     })
   }
 })

更多事例与覆盖请查看单元测试test\test.js

Keywords