UNPKG

3.31 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 _es6Set = require('es6-set');
12
13var _es6Set2 = _interopRequireDefault(_es6Set);
14
15var _es6Map = require('es6-map');
16
17var _es6Map2 = _interopRequireDefault(_es6Map);
18
19var _lodash = require('lodash');
20
21var _buffer = require('./buffer');
22
23var _buffer2 = _interopRequireDefault(_buffer);
24
25function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
27function createData(expiresInstance) {
28 var initial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
29 var keyPrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
30
31 var raw = {};
32
33 function createInstance(prefix, expires) {
34 return Object.freeze({
35 clear: function clear() {
36 raw = {};
37 },
38 delete: function _delete(key) {
39 if (expires.has(key)) {
40 expires.delete(key);
41 }
42 delete raw['' + prefix + key];
43 },
44 get: function get(key) {
45 if (expires.has(key) && expires.isExpired(key)) {
46 this.delete(key);
47 }
48
49 var value = raw['' + prefix + key];
50
51 if (Array.isArray(value)) {
52 return value.slice();
53 }
54
55 if (Buffer.isBuffer(value)) {
56 return (0, _buffer2.default)(value);
57 }
58
59 if (value instanceof _es6Set2.default) {
60 return new _es6Set2.default(value);
61 }
62
63 if (value instanceof _es6Map2.default) {
64 return new _es6Map2.default(value);
65 }
66
67 if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value) {
68 return (0, _lodash.assign)({}, value);
69 }
70
71 return value;
72 },
73 has: function has(key) {
74 if (expires.has(key) && expires.isExpired(key)) {
75 this.delete(key);
76 }
77
78 return {}.hasOwnProperty.call(raw, '' + prefix + key);
79 },
80 keys: function keys() {
81 return Object.keys(raw);
82 },
83 set: function set(key, val) {
84 var item = val;
85
86 if (Array.isArray(val)) {
87 item = val.slice();
88 } else if (Buffer.isBuffer(val)) {
89 item = (0, _buffer2.default)(val);
90 } else if (val instanceof _es6Set2.default) {
91 item = new _es6Set2.default(val);
92 } else if (val instanceof _es6Map2.default) {
93 item = new _es6Map2.default(val);
94 } else if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val) {
95 item = (0, _lodash.assign)({}, val);
96 }
97
98 raw['' + prefix + key] = item;
99 },
100 withKeyPrefix: function withKeyPrefix(newKeyPrefix) {
101 if (newKeyPrefix === prefix) return this;
102 return createInstance(newKeyPrefix, expires.withKeyPrefix(newKeyPrefix));
103 }
104 });
105 }
106
107 var data = createInstance(keyPrefix, expiresInstance);
108
109 Object.keys(initial).forEach(function (key) {
110 return data.set(key, initial[key]);
111 });
112
113 return data;
114}
\No newline at end of file