1.4.19 • Published 10 months ago

lc-js-common v1.4.19

Weekly downloads
159
License
-
Repository
github
Last release
10 months ago

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 }));
    })
 ```javascript  
 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

1.4.17

12 months ago

1.4.16

12 months ago

1.4.19

10 months ago

1.4.18

10 months ago

1.4.15

1 year ago

1.4.14

1 year ago

1.4.13

2 years ago

1.4.6

2 years ago

1.4.5

2 years ago

1.4.9

2 years ago

1.4.11

2 years ago

1.4.8

2 years ago

1.4.10

2 years ago

1.4.7

2 years ago

1.4.12

2 years ago

1.4.4

3 years ago

1.4.3

3 years ago

1.4.2

3 years ago

1.4.1

3 years ago

1.4.0

3 years ago

1.0.39

3 years ago

1.0.38

3 years ago

1.0.37

3 years ago

1.0.36

3 years ago

1.0.34

3 years ago

1.0.33

3 years ago

1.0.32

4 years ago

1.0.31

4 years ago

1.0.30

4 years ago

1.0.29

4 years ago

1.0.28

4 years ago

1.0.26

4 years ago

1.0.27

4 years ago

1.0.25

4 years ago

1.0.24

4 years ago

1.0.22

4 years ago

1.0.23

4 years ago

1.0.21

4 years ago

1.0.20

4 years ago

1.0.19

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago