UNPKG

2.33 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
8
9exports.default = createData;
10
11var _lodash = require('lodash');
12
13var _buffer = require('./buffer');
14
15var _buffer2 = _interopRequireDefault(_buffer);
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19function createData(expires) {
20 var initial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
21
22 var raw = {};
23 var data = Object.freeze({
24 clear: function clear() {
25 raw = {};
26 },
27 delete: function _delete(key) {
28 if (expires.has(key)) {
29 expires.delete(key);
30 }
31
32 delete raw[key];
33 },
34 get: function get(key) {
35 if (expires.has(key) && expires.isExpired(key)) {
36 this.delete(key);
37 }
38
39 var value = raw[key];
40
41 if (Array.isArray(value)) {
42 return value.slice();
43 }
44
45 if (Buffer.isBuffer(value)) {
46 return (0, _buffer2.default)(value);
47 }
48
49 if (value instanceof Set) {
50 return new Set(value);
51 }
52
53 if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value) {
54 return (0, _lodash.assign)({}, value);
55 }
56
57 return value;
58 },
59 has: function has(key) {
60 if (expires.has(key) && expires.isExpired(key)) {
61 this.delete(key);
62 }
63
64 return {}.hasOwnProperty.call(raw, key);
65 },
66 keys: function keys() {
67 return Object.keys(raw);
68 },
69 set: function set(key, val) {
70 var item = val;
71
72 if (Array.isArray(val)) {
73 item = val.slice();
74 } else if (Buffer.isBuffer(val)) {
75 item = (0, _buffer2.default)(val);
76 } else if (val instanceof Set) {
77 item = new Set(val);
78 } else if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val) {
79 item = (0, _lodash.assign)({}, val);
80 }
81
82 raw[key] = item;
83 }
84 });
85
86 Object.keys(initial).forEach(function (key) {
87 return data.set(key, initial[key]);
88 });
89
90 return data;
91}
\No newline at end of file