tools-for-js
Version:
基于babel构建的JavaScript前端工具库
150 lines (142 loc) • 6.16 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setExpires = exports.setCookie = exports.session = exports.removeExpires = exports.removeCookies = exports.removeCookie = exports.local = exports.getExpires = exports.getCookies = exports.getCookie = exports["default"] = void 0;
var _store = _interopRequireDefault(require("store2"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /*******
* @description: 缓存工具
* @author: 琴时
*/
var _default = exports["default"] = _store["default"];
/*******
* @description: localStorage缓存
* get:获取缓存|set:设置缓存|remove:删除缓存
*/
var local = exports.local = _store["default"].local;
local.getItem = local.get;
local.setItem = local.set;
local.removeItem = local.remove;
/*******
* @description: sessionStorage缓存
* get:获取缓存|set:设置缓存|remove:删除缓存
*/
var session = exports.session = _store["default"].session;
session.getItem = session.get;
session.setItem = session.set;
session.removeItem = session.remove;
/*******
* @description: 设置有效期信息
* @author: 琴时
* @param {Number} value [到期时间,单位毫秒] [默认30分钟]
*/
var setExpires = exports.setExpires = function setExpires() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30 * 60 * 1000;
session.set('user_last_time', +new Date()); //最后一次设置缓存时间
session.set('user_expires', value); //设置到期时间,单位毫秒
};
/*******
* @description: 获取有效期信息
* @author: 琴时
* @return {Boolean} true:未过期 false:已过期
*/
var getExpires = exports.getExpires = function getExpires() {
var lastTime = session.get('user_last_time'); //最后登录时间
var expires = session.get('user_expires'); //过期时间
if (!lastTime || !expires) return false; //无记录==>过期
var nowTime = +new Date(); // 当前时间戳
var times = nowTime - (lastTime + expires); // 剩余时间总毫秒数
return times < 0;
};
/*******
* @description: 移除有效期信息
* @author: 琴时
*/
var removeExpires = exports.removeExpires = function removeExpires() {
session.remove('user_last_time');
session.remove('user_expires');
};
/*******
* @description: 获取cookie
* @author: 琴时
* @param {String} key
* @return {String}
*/
var getCookie = exports.getCookie = function getCookie(key) {
if (typeof document === 'undefined') return '';
var name = key + '=';
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) {
return c.substring(name.length, c.length);
}
}
return '';
};
/*******
* @description: 获取所有cookie
* @author: 琴时
* @return {Array}
*/
var getCookies = exports.getCookies = function getCookies() {
var cookies = [];
if (typeof document === 'undefined') return cookies;
if (document.cookie.length === 0) return cookies;
var array = document.cookie.split('; '); //通过分号连空格将字符串切割成数组
cookies = array.map(function (item) {
var _item$split = item.split('='),
_item$split2 = _slicedToArray(_item$split, 2),
key = _item$split2[0],
value = _item$split2[1]; // 通过=再次切割
return {
key: key,
value: value
};
});
return cookies;
};
/*******
* @description: 设置cookie
* @author: 琴时
* @param {String} key [键名]
* @param {String} value [键值]
* @param {Number} day [有效期/天] | 不传默认当前会话有效
* @return {*}
*/
var setCookie = exports.setCookie = function setCookie(key, value, day) {
var cookie = key + '=' + value + '; path=/';
if (day != undefined) {
var d = new Date();
d.setTime(d.getTime() + day * 24 * 60 * 60 * 1000);
var expires = '; expires=' + d.toGMTString();
cookie += expires;
}
if (typeof document === 'undefined') return;
document.cookie = cookie;
};
/*******
* @description: 删除指定cookie
* @author: 琴时
* @param {*} key [指定cookies的键]
* @return {*}
*/
var removeCookie = exports.removeCookie = function removeCookie(key) {
setCookie(key, '', -1); // 将生命周期改为-1
};
/*******
* @description:删除所有cookie
* @author: 琴时
* @return {*}
*/
var removeCookies = exports.removeCookies = function removeCookies() {
getCookies().forEach(function (cookie) {
setCookie(cookie.key, '', -1); //将生命周期改为-1==>使其失效
});
};
;