@blumintinc/typescript-memoize 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,249 +1,292 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.clear = exports.MemoizeExpiring = exports.Memoize = void 0;
13
- var equal = require('fast-deep-equal');
14
- function Memoize(args) {
15
- var _a;
16
- var hashFunction;
17
- var duration;
18
- var tags;
19
- var useDeepEqual = true;
20
- if (typeof args === 'object') {
21
- hashFunction = args.hashFunction;
22
- duration = args.expiring;
23
- tags = args.tags;
24
- useDeepEqual = (_a = args.useDeepEqual) !== null && _a !== void 0 ? _a : true;
25
- }
26
- else {
27
- hashFunction = args;
28
- }
29
- return function (target, propertyKey, descriptor) {
30
- if (descriptor.value != null) {
31
- descriptor.value = getNewFunction(descriptor.value, hashFunction, duration, tags, useDeepEqual);
32
- }
33
- else if (descriptor.get != null) {
34
- descriptor.get = getNewFunction(descriptor.get, hashFunction, duration, tags, useDeepEqual);
35
- }
36
- else {
37
- throw 'Only put a Memoize() decorator on a method or get accessor.';
38
- }
39
- };
40
- }
41
- exports.Memoize = Memoize;
42
- function MemoizeExpiring(expiring, hashFunction) {
43
- return Memoize({
44
- expiring: expiring,
45
- hashFunction: hashFunction
46
- });
47
- }
48
- exports.MemoizeExpiring = MemoizeExpiring;
49
- var clearCacheTagsMap = new Map();
50
- function clear(tags) {
51
- var cleared = new Set();
52
- for (var _i = 0, tags_1 = tags; _i < tags_1.length; _i++) {
53
- var tag = tags_1[_i];
54
- var maps = clearCacheTagsMap.get(tag);
55
- if (maps) {
56
- for (var _a = 0, maps_1 = maps; _a < maps_1.length; _a++) {
57
- var mp = maps_1[_a];
58
- if (!cleared.has(mp)) {
59
- mp.clear();
60
- cleared.add(mp);
61
- }
62
- }
63
- }
64
- }
65
- return cleared.size;
66
- }
67
- exports.clear = clear;
68
- var DeepEqualMap = (function () {
69
- function DeepEqualMap() {
70
- this.map = new Map();
71
- }
72
- DeepEqualMap.prototype.has = function (key) {
73
- var entries = Array.from(this.map.values());
74
- for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
75
- var entry = entries_1[_i];
76
- if (equal(entry.key, key)) {
77
- return true;
78
- }
79
- }
80
- return false;
81
- };
82
- DeepEqualMap.prototype.get = function (key) {
83
- var entries = Array.from(this.map.values());
84
- for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {
85
- var entry = entries_2[_i];
86
- if (equal(entry.key, key)) {
87
- return entry.value;
88
- }
89
- }
90
- return undefined;
91
- };
92
- DeepEqualMap.prototype.set = function (key, value) {
93
- var entries = Array.from(this.map.entries());
94
- for (var _i = 0, entries_3 = entries; _i < entries_3.length; _i++) {
95
- var _a = entries_3[_i], serializedKey_1 = _a[0], entry = _a[1];
96
- if (equal(entry.key, key)) {
97
- this.map.delete(serializedKey_1);
98
- break;
99
- }
100
- }
101
- var serializedKey = Date.now() + "_" + Math.random();
102
- this.map.set(serializedKey, { key: key, value: value });
103
- return this;
104
- };
105
- DeepEqualMap.prototype.clear = function () {
106
- this.map.clear();
107
- };
108
- return DeepEqualMap;
109
- }());
110
- function getNewFunction(originalMethod, hashFunction, duration, tags, useDeepEqual) {
111
- if (duration === void 0) { duration = 0; }
112
- if (useDeepEqual === void 0) { useDeepEqual = true; }
113
- var propMapName = Symbol("__memoized_map__");
114
- var propDeepMapName = Symbol("__memoized_deep_map__");
115
- return function () {
116
- var args = [];
117
- for (var _i = 0; _i < arguments.length; _i++) {
118
- args[_i] = arguments[_i];
119
- }
120
- var returnedValue;
121
- if (useDeepEqual) {
122
- if (!this.hasOwnProperty(propDeepMapName)) {
123
- Object.defineProperty(this, propDeepMapName, {
124
- configurable: false,
125
- enumerable: false,
126
- writable: false,
127
- value: new DeepEqualMap()
128
- });
129
- }
130
- var myMap_1 = this[propDeepMapName];
131
- if (Array.isArray(tags)) {
132
- for (var _a = 0, tags_2 = tags; _a < tags_2.length; _a++) {
133
- var tag = tags_2[_a];
134
- var mapWrapper = {
135
- clear: function () { return myMap_1.clear(); }
136
- };
137
- if (clearCacheTagsMap.has(tag)) {
138
- clearCacheTagsMap.get(tag).push(mapWrapper);
139
- }
140
- else {
141
- clearCacheTagsMap.set(tag, [mapWrapper]);
142
- }
143
- }
144
- }
145
- var hashKey = void 0;
146
- if (hashFunction === true) {
147
- hashKey = args;
148
- }
149
- else if (hashFunction) {
150
- hashKey = hashFunction.apply(this, args);
151
- }
152
- else if (args.length > 0) {
153
- hashKey = args.length === 1 ? args[0] : args;
154
- }
155
- else {
156
- hashKey = this;
157
- }
158
- var timestampKey = { __timestamp: true, key: hashKey };
159
- var isExpired = false;
160
- if (duration > 0) {
161
- if (!myMap_1.has(timestampKey)) {
162
- isExpired = true;
163
- }
164
- else {
165
- var timestamp = myMap_1.get(timestampKey);
166
- isExpired = (Date.now() - timestamp) > duration;
167
- }
168
- }
169
- if (myMap_1.has(hashKey) && !isExpired) {
170
- returnedValue = myMap_1.get(hashKey);
171
- }
172
- else {
173
- returnedValue = originalMethod.apply(this, args);
174
- myMap_1.set(hashKey, returnedValue);
175
- if (duration > 0) {
176
- myMap_1.set(timestampKey, Date.now());
177
- }
178
- }
179
- }
180
- else {
181
- if (!this.hasOwnProperty(propMapName)) {
182
- Object.defineProperty(this, propMapName, {
183
- configurable: false,
184
- enumerable: false,
185
- writable: false,
186
- value: new Map()
187
- });
188
- }
189
- var myMap = this[propMapName];
190
- if (Array.isArray(tags)) {
191
- for (var _b = 0, tags_3 = tags; _b < tags_3.length; _b++) {
192
- var tag = tags_3[_b];
193
- if (clearCacheTagsMap.has(tag)) {
194
- clearCacheTagsMap.get(tag).push(myMap);
195
- }
196
- else {
197
- clearCacheTagsMap.set(tag, [myMap]);
198
- }
199
- }
200
- }
201
- if (hashFunction || args.length > 0 || duration > 0) {
202
- var hashKey = void 0;
203
- if (hashFunction === true) {
204
- hashKey = args.map(function (a) { return a.toString(); }).join('!');
205
- }
206
- else if (hashFunction) {
207
- hashKey = hashFunction.apply(this, args);
208
- }
209
- else {
210
- hashKey = args[0];
211
- }
212
- var timestampKey = hashKey + "__timestamp";
213
- var isExpired = false;
214
- if (duration > 0) {
215
- if (!myMap.has(timestampKey)) {
216
- isExpired = true;
217
- }
218
- else {
219
- var timestamp = myMap.get(timestampKey);
220
- isExpired = (Date.now() - timestamp) > duration;
221
- }
222
- }
223
- if (myMap.has(hashKey) && !isExpired) {
224
- returnedValue = myMap.get(hashKey);
225
- }
226
- else {
227
- returnedValue = originalMethod.apply(this, args);
228
- myMap.set(hashKey, returnedValue);
229
- if (duration > 0) {
230
- myMap.set(timestampKey, Date.now());
231
- }
232
- }
233
- }
234
- else {
235
- var hashKey = this;
236
- if (myMap.has(hashKey)) {
237
- returnedValue = myMap.get(hashKey);
238
- }
239
- else {
240
- returnedValue = originalMethod.apply(this, args);
241
- myMap.set(hashKey, returnedValue);
242
- }
243
- }
244
- }
245
- return returnedValue;
246
- };
247
- }
248
- });
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "tslib", "@blumintinc/fast-deep-equal"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.clear = exports.MemoizeExpiring = exports.Memoize = void 0;
13
+ var tslib_1 = require("tslib");
14
+ var fast_deep_equal_1 = tslib_1.__importDefault(require("@blumintinc/fast-deep-equal"));
15
+ function isOpaqueClassInstance(obj) {
16
+ if (obj == null || typeof obj !== 'object' || Array.isArray(obj))
17
+ return false;
18
+ var proto = Object.getPrototypeOf(obj);
19
+ if (proto === null || proto === Object.prototype)
20
+ return false;
21
+ if (proto.constructor === Object)
22
+ return false;
23
+ if (obj instanceof Date || obj instanceof RegExp ||
24
+ obj instanceof Map || obj instanceof Set)
25
+ return false;
26
+ return Object.keys(obj).length === 0;
27
+ }
28
+ function containsOpaqueValue(obj) {
29
+ if (typeof obj !== 'object' || obj === null)
30
+ return false;
31
+ return Object.values(obj).some(isOpaqueClassInstance);
32
+ }
33
+ function memoizeEqual(a, b) {
34
+ if (a === b)
35
+ return true;
36
+ if (a == null || b == null)
37
+ return false;
38
+ if (typeof a !== 'object' || typeof b !== 'object')
39
+ return fast_deep_equal_1.default(a, b);
40
+ if (isOpaqueClassInstance(a) || isOpaqueClassInstance(b))
41
+ return false;
42
+ if (Array.isArray(a) && Array.isArray(b)) {
43
+ if (a.length !== b.length)
44
+ return false;
45
+ return a.every(function (el, i) { return memoizeEqual(el, b[i]); });
46
+ }
47
+ if (!containsOpaqueValue(a) && !containsOpaqueValue(b)) {
48
+ return fast_deep_equal_1.default(a, b);
49
+ }
50
+ var keysA = Object.keys(a);
51
+ var keysB = Object.keys(b);
52
+ if (keysA.length !== keysB.length)
53
+ return false;
54
+ return keysA.every(function (key) { return key in b &&
55
+ memoizeEqual(a[key], b[key]); });
56
+ }
57
+ function Memoize(args) {
58
+ var _a;
59
+ var hashFunction;
60
+ var duration;
61
+ var tags;
62
+ var useDeepEqual = true;
63
+ if (typeof args === 'object') {
64
+ hashFunction = args.hashFunction;
65
+ duration = args.expiring;
66
+ tags = args.tags;
67
+ useDeepEqual = (_a = args.useDeepEqual) !== null && _a !== void 0 ? _a : true;
68
+ }
69
+ else {
70
+ hashFunction = args;
71
+ }
72
+ return function (target, propertyKey, descriptor) {
73
+ if (descriptor.value != null) {
74
+ descriptor.value = getNewFunction(descriptor.value, hashFunction, duration, tags, useDeepEqual);
75
+ }
76
+ else if (descriptor.get != null) {
77
+ descriptor.get = getNewFunction(descriptor.get, hashFunction, duration, tags, useDeepEqual);
78
+ }
79
+ else {
80
+ throw 'Only put a Memoize() decorator on a method or get accessor.';
81
+ }
82
+ };
83
+ }
84
+ exports.Memoize = Memoize;
85
+ function MemoizeExpiring(expiring, hashFunction) {
86
+ return Memoize({
87
+ expiring: expiring,
88
+ hashFunction: hashFunction
89
+ });
90
+ }
91
+ exports.MemoizeExpiring = MemoizeExpiring;
92
+ var clearCacheTagsMap = new Map();
93
+ function clear(tags) {
94
+ var cleared = new Set();
95
+ for (var _i = 0, tags_1 = tags; _i < tags_1.length; _i++) {
96
+ var tag = tags_1[_i];
97
+ var maps = clearCacheTagsMap.get(tag);
98
+ if (maps) {
99
+ for (var _a = 0, maps_1 = maps; _a < maps_1.length; _a++) {
100
+ var mp = maps_1[_a];
101
+ if (!cleared.has(mp)) {
102
+ mp.clear();
103
+ cleared.add(mp);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ return cleared.size;
109
+ }
110
+ exports.clear = clear;
111
+ var DeepEqualMap = (function () {
112
+ function DeepEqualMap() {
113
+ this.map = new Map();
114
+ }
115
+ DeepEqualMap.prototype.has = function (key) {
116
+ var entries = Array.from(this.map.values());
117
+ for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
118
+ var entry = entries_1[_i];
119
+ if (memoizeEqual(entry.key, key)) {
120
+ return true;
121
+ }
122
+ }
123
+ return false;
124
+ };
125
+ DeepEqualMap.prototype.get = function (key) {
126
+ var entries = Array.from(this.map.values());
127
+ for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {
128
+ var entry = entries_2[_i];
129
+ if (memoizeEqual(entry.key, key)) {
130
+ return entry.value;
131
+ }
132
+ }
133
+ return undefined;
134
+ };
135
+ DeepEqualMap.prototype.set = function (key, value) {
136
+ var entries = Array.from(this.map.entries());
137
+ for (var _i = 0, entries_3 = entries; _i < entries_3.length; _i++) {
138
+ var _a = entries_3[_i], serializedKey_1 = _a[0], entry = _a[1];
139
+ if (memoizeEqual(entry.key, key)) {
140
+ this.map.delete(serializedKey_1);
141
+ break;
142
+ }
143
+ }
144
+ var serializedKey = Date.now() + "_" + Math.random();
145
+ this.map.set(serializedKey, { key: key, value: value });
146
+ return this;
147
+ };
148
+ DeepEqualMap.prototype.clear = function () {
149
+ this.map.clear();
150
+ };
151
+ return DeepEqualMap;
152
+ }());
153
+ function getNewFunction(originalMethod, hashFunction, duration, tags, useDeepEqual) {
154
+ if (duration === void 0) { duration = 0; }
155
+ if (useDeepEqual === void 0) { useDeepEqual = true; }
156
+ var propMapName = Symbol("__memoized_map__");
157
+ var propDeepMapName = Symbol("__memoized_deep_map__");
158
+ return function () {
159
+ var args = [];
160
+ for (var _i = 0; _i < arguments.length; _i++) {
161
+ args[_i] = arguments[_i];
162
+ }
163
+ var returnedValue;
164
+ if (useDeepEqual) {
165
+ if (!this.hasOwnProperty(propDeepMapName)) {
166
+ Object.defineProperty(this, propDeepMapName, {
167
+ configurable: false,
168
+ enumerable: false,
169
+ writable: false,
170
+ value: new DeepEqualMap()
171
+ });
172
+ }
173
+ var myMap_1 = this[propDeepMapName];
174
+ if (Array.isArray(tags)) {
175
+ for (var _a = 0, tags_2 = tags; _a < tags_2.length; _a++) {
176
+ var tag = tags_2[_a];
177
+ var mapWrapper = {
178
+ clear: function () { return myMap_1.clear(); }
179
+ };
180
+ if (clearCacheTagsMap.has(tag)) {
181
+ clearCacheTagsMap.get(tag).push(mapWrapper);
182
+ }
183
+ else {
184
+ clearCacheTagsMap.set(tag, [mapWrapper]);
185
+ }
186
+ }
187
+ }
188
+ var hashKey = void 0;
189
+ if (hashFunction === true) {
190
+ hashKey = args;
191
+ }
192
+ else if (hashFunction) {
193
+ hashKey = hashFunction.apply(this, args);
194
+ }
195
+ else if (args.length > 0) {
196
+ hashKey = args.length === 1 ? args[0] : args;
197
+ }
198
+ else {
199
+ hashKey = this;
200
+ }
201
+ var timestampKey = { __timestamp: true, key: hashKey };
202
+ var isExpired = false;
203
+ if (duration > 0) {
204
+ if (!myMap_1.has(timestampKey)) {
205
+ isExpired = true;
206
+ }
207
+ else {
208
+ var timestamp = myMap_1.get(timestampKey);
209
+ isExpired = (Date.now() - timestamp) > duration;
210
+ }
211
+ }
212
+ if (myMap_1.has(hashKey) && !isExpired) {
213
+ returnedValue = myMap_1.get(hashKey);
214
+ }
215
+ else {
216
+ returnedValue = originalMethod.apply(this, args);
217
+ myMap_1.set(hashKey, returnedValue);
218
+ if (duration > 0) {
219
+ myMap_1.set(timestampKey, Date.now());
220
+ }
221
+ }
222
+ }
223
+ else {
224
+ if (!this.hasOwnProperty(propMapName)) {
225
+ Object.defineProperty(this, propMapName, {
226
+ configurable: false,
227
+ enumerable: false,
228
+ writable: false,
229
+ value: new Map()
230
+ });
231
+ }
232
+ var myMap = this[propMapName];
233
+ if (Array.isArray(tags)) {
234
+ for (var _b = 0, tags_3 = tags; _b < tags_3.length; _b++) {
235
+ var tag = tags_3[_b];
236
+ if (clearCacheTagsMap.has(tag)) {
237
+ clearCacheTagsMap.get(tag).push(myMap);
238
+ }
239
+ else {
240
+ clearCacheTagsMap.set(tag, [myMap]);
241
+ }
242
+ }
243
+ }
244
+ if (hashFunction || args.length > 0 || duration > 0) {
245
+ var hashKey = void 0;
246
+ if (hashFunction === true) {
247
+ hashKey = args.map(function (a) { return a.toString(); }).join('!');
248
+ }
249
+ else if (hashFunction) {
250
+ hashKey = hashFunction.apply(this, args);
251
+ }
252
+ else {
253
+ hashKey = args[0];
254
+ }
255
+ var timestampKey = hashKey + "__timestamp";
256
+ var isExpired = false;
257
+ if (duration > 0) {
258
+ if (!myMap.has(timestampKey)) {
259
+ isExpired = true;
260
+ }
261
+ else {
262
+ var timestamp = myMap.get(timestampKey);
263
+ isExpired = (Date.now() - timestamp) > duration;
264
+ }
265
+ }
266
+ if (myMap.has(hashKey) && !isExpired) {
267
+ returnedValue = myMap.get(hashKey);
268
+ }
269
+ else {
270
+ returnedValue = originalMethod.apply(this, args);
271
+ myMap.set(hashKey, returnedValue);
272
+ if (duration > 0) {
273
+ myMap.set(timestampKey, Date.now());
274
+ }
275
+ }
276
+ }
277
+ else {
278
+ var hashKey = this;
279
+ if (myMap.has(hashKey)) {
280
+ returnedValue = myMap.get(hashKey);
281
+ }
282
+ else {
283
+ returnedValue = originalMethod.apply(this, args);
284
+ myMap.set(hashKey, returnedValue);
285
+ }
286
+ }
287
+ }
288
+ return returnedValue;
289
+ };
290
+ }
291
+ });
249
292
  //# sourceMappingURL=memoize-decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memoize-decorator.js","sourceRoot":"","sources":["../src/memoize-decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoize-decorator.js","sourceRoot":"","sources":["../src/memoize-decorator.ts"],"names":[],"mappings":"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"}