All files session.ts

100% Statements 22/22
100% Branches 11/11
100% Functions 5/5
100% Lines 22/22

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              7x 7x 7x 7x 2x   1x 1x   1x     5x   7x                   4x 4x 2x 2x 2x 2x   2x   4x 4x               1x     1x         1x    
export default {
    /**
     * 获取对应key的session
     * @param {string} key 键值
     * @returns {any}
     */
    get: (key: string): any => {
        let result = null
        let _session = JSON.parse(sessionStorage.getItem(key))
        let isObj = Object.prototype.toString.call(_session) === '[object Object]'
        if (isObj && _session.$$ExpiryTime) {
            if (new Date().getTime() > new Date(_session.$$ExpiryTime).getTime()) {
                // 过期
                result = null
                sessionStorage.removeItem(key)
            } else {
                result = _session.data
            }
        } else {
            result = _session
        }
        return result
    },
    /**
     * 设置sessionStorage (可存对象)
     * @param {string} key 键值
     * @param {string} dataSource 数据
     * @param {number} second 过期时间(s)
     * @returns {any}
     */
    set: (key: string, dataSource: string = null, second?: number): any => {
        let result: any = {}
        if (second) {
            const d = new Date()
            d.setTime(d.getTime() + second * 1000)
            result.data = dataSource
            result.$$ExpiryTime = d
        } else {
            result = dataSource
        }
        sessionStorage.setItem(key, JSON.stringify(result))
        return result
    },
    /**
     * 移除对应key的session
     * @param {string} key 键值
     */
 
    remove: (key: string) => {
        key && sessionStorage.removeItem(key)
    },
    /** 清空sessionStorage */
    clear: () => sessionStorage.clear(),
    /**
     * 获取sessionStorage中第n+1个的key
     * @param {number} n
     */
    key: (n: number) => sessionStorage.key(n),
}