@blumintinc/typescript-memoize 1.2.0 → 1.3.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,10 +1,10 @@
1
- interface MemoizeArgs {
2
- expiring?: number;
3
- hashFunction?: boolean | ((...args: any[]) => any);
4
- tags?: string[];
5
- useDeepEqual?: boolean;
6
- }
7
- export declare function Memoize(args?: MemoizeArgs | MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
8
- export declare function MemoizeExpiring(expiring: number, hashFunction?: MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
9
- export declare function clear(tags: string[]): number;
10
- export {};
1
+ interface MemoizeArgs {
2
+ expiring?: number;
3
+ hashFunction?: boolean | ((...args: any[]) => any);
4
+ tags?: string[];
5
+ useDeepEqual?: boolean;
6
+ }
7
+ export declare function Memoize(args?: MemoizeArgs | MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
8
+ export declare function MemoizeExpiring(expiring: number, hashFunction?: MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
9
+ export declare function clear(tags: string[]): number;
10
+ export {};
@@ -1,219 +1,219 @@
1
- const equal = require('fast-deep-equal');
2
- export function Memoize(args) {
3
- var _a;
4
- let hashFunction;
5
- let duration;
6
- let tags;
7
- let useDeepEqual = false;
8
- if (typeof args === 'object') {
9
- hashFunction = args.hashFunction;
10
- duration = args.expiring;
11
- tags = args.tags;
12
- useDeepEqual = (_a = args.useDeepEqual) !== null && _a !== void 0 ? _a : false;
13
- }
14
- else {
15
- hashFunction = args;
16
- }
17
- return (target, propertyKey, descriptor) => {
18
- if (descriptor.value != null) {
19
- descriptor.value = getNewFunction(descriptor.value, hashFunction, duration, tags, useDeepEqual);
20
- }
21
- else if (descriptor.get != null) {
22
- descriptor.get = getNewFunction(descriptor.get, hashFunction, duration, tags, useDeepEqual);
23
- }
24
- else {
25
- throw 'Only put a Memoize() decorator on a method or get accessor.';
26
- }
27
- };
28
- }
29
- export function MemoizeExpiring(expiring, hashFunction) {
30
- return Memoize({
31
- expiring,
32
- hashFunction
33
- });
34
- }
35
- const clearCacheTagsMap = new Map();
36
- export function clear(tags) {
37
- const cleared = new Set();
38
- for (const tag of tags) {
39
- const maps = clearCacheTagsMap.get(tag);
40
- if (maps) {
41
- for (const mp of maps) {
42
- if (!cleared.has(mp)) {
43
- mp.clear();
44
- cleared.add(mp);
45
- }
46
- }
47
- }
48
- }
49
- return cleared.size;
50
- }
51
- class DeepEqualMap {
52
- constructor() {
53
- this.map = new Map();
54
- }
55
- has(key) {
56
- const entries = Array.from(this.map.values());
57
- for (const entry of entries) {
58
- if (equal(entry.key, key)) {
59
- return true;
60
- }
61
- }
62
- return false;
63
- }
64
- get(key) {
65
- const entries = Array.from(this.map.values());
66
- for (const entry of entries) {
67
- if (equal(entry.key, key)) {
68
- return entry.value;
69
- }
70
- }
71
- return undefined;
72
- }
73
- set(key, value) {
74
- const entries = Array.from(this.map.entries());
75
- for (const [serializedKey, entry] of entries) {
76
- if (equal(entry.key, key)) {
77
- this.map.delete(serializedKey);
78
- break;
79
- }
80
- }
81
- const serializedKey = `${Date.now()}_${Math.random()}`;
82
- this.map.set(serializedKey, { key, value });
83
- return this;
84
- }
85
- clear() {
86
- this.map.clear();
87
- }
88
- }
89
- function getNewFunction(originalMethod, hashFunction, duration = 0, tags, useDeepEqual = false) {
90
- const propMapName = Symbol(`__memoized_map__`);
91
- const propDeepMapName = Symbol(`__memoized_deep_map__`);
92
- return function (...args) {
93
- let returnedValue;
94
- if (useDeepEqual) {
95
- if (!this.hasOwnProperty(propDeepMapName)) {
96
- Object.defineProperty(this, propDeepMapName, {
97
- configurable: false,
98
- enumerable: false,
99
- writable: false,
100
- value: new DeepEqualMap()
101
- });
102
- }
103
- let myMap = this[propDeepMapName];
104
- if (Array.isArray(tags)) {
105
- for (const tag of tags) {
106
- const mapWrapper = {
107
- clear: () => myMap.clear()
108
- };
109
- if (clearCacheTagsMap.has(tag)) {
110
- clearCacheTagsMap.get(tag).push(mapWrapper);
111
- }
112
- else {
113
- clearCacheTagsMap.set(tag, [mapWrapper]);
114
- }
115
- }
116
- }
117
- let hashKey;
118
- if (hashFunction === true) {
119
- hashKey = args;
120
- }
121
- else if (hashFunction) {
122
- hashKey = hashFunction.apply(this, args);
123
- }
124
- else if (args.length > 0) {
125
- hashKey = args.length === 1 ? args[0] : args;
126
- }
127
- else {
128
- hashKey = this;
129
- }
130
- const timestampKey = { __timestamp: true, key: hashKey };
131
- let isExpired = false;
132
- if (duration > 0) {
133
- if (!myMap.has(timestampKey)) {
134
- isExpired = true;
135
- }
136
- else {
137
- let timestamp = myMap.get(timestampKey);
138
- isExpired = (Date.now() - timestamp) > duration;
139
- }
140
- }
141
- if (myMap.has(hashKey) && !isExpired) {
142
- returnedValue = myMap.get(hashKey);
143
- }
144
- else {
145
- returnedValue = originalMethod.apply(this, args);
146
- myMap.set(hashKey, returnedValue);
147
- if (duration > 0) {
148
- myMap.set(timestampKey, Date.now());
149
- }
150
- }
151
- }
152
- else {
153
- if (!this.hasOwnProperty(propMapName)) {
154
- Object.defineProperty(this, propMapName, {
155
- configurable: false,
156
- enumerable: false,
157
- writable: false,
158
- value: new Map()
159
- });
160
- }
161
- let myMap = this[propMapName];
162
- if (Array.isArray(tags)) {
163
- for (const tag of tags) {
164
- if (clearCacheTagsMap.has(tag)) {
165
- clearCacheTagsMap.get(tag).push(myMap);
166
- }
167
- else {
168
- clearCacheTagsMap.set(tag, [myMap]);
169
- }
170
- }
171
- }
172
- if (hashFunction || args.length > 0 || duration > 0) {
173
- let hashKey;
174
- if (hashFunction === true) {
175
- hashKey = args.map(a => a.toString()).join('!');
176
- }
177
- else if (hashFunction) {
178
- hashKey = hashFunction.apply(this, args);
179
- }
180
- else {
181
- hashKey = args[0];
182
- }
183
- const timestampKey = `${hashKey}__timestamp`;
184
- let isExpired = false;
185
- if (duration > 0) {
186
- if (!myMap.has(timestampKey)) {
187
- isExpired = true;
188
- }
189
- else {
190
- let timestamp = myMap.get(timestampKey);
191
- isExpired = (Date.now() - timestamp) > duration;
192
- }
193
- }
194
- if (myMap.has(hashKey) && !isExpired) {
195
- returnedValue = myMap.get(hashKey);
196
- }
197
- else {
198
- returnedValue = originalMethod.apply(this, args);
199
- myMap.set(hashKey, returnedValue);
200
- if (duration > 0) {
201
- myMap.set(timestampKey, Date.now());
202
- }
203
- }
204
- }
205
- else {
206
- const hashKey = this;
207
- if (myMap.has(hashKey)) {
208
- returnedValue = myMap.get(hashKey);
209
- }
210
- else {
211
- returnedValue = originalMethod.apply(this, args);
212
- myMap.set(hashKey, returnedValue);
213
- }
214
- }
215
- }
216
- return returnedValue;
217
- };
218
- }
1
+ import equal from '@blumintinc/fast-deep-equal';
2
+ export function Memoize(args) {
3
+ var _a;
4
+ let hashFunction;
5
+ let duration;
6
+ let tags;
7
+ let useDeepEqual = true;
8
+ if (typeof args === 'object') {
9
+ hashFunction = args.hashFunction;
10
+ duration = args.expiring;
11
+ tags = args.tags;
12
+ useDeepEqual = (_a = args.useDeepEqual) !== null && _a !== void 0 ? _a : true;
13
+ }
14
+ else {
15
+ hashFunction = args;
16
+ }
17
+ return (target, propertyKey, descriptor) => {
18
+ if (descriptor.value != null) {
19
+ descriptor.value = getNewFunction(descriptor.value, hashFunction, duration, tags, useDeepEqual);
20
+ }
21
+ else if (descriptor.get != null) {
22
+ descriptor.get = getNewFunction(descriptor.get, hashFunction, duration, tags, useDeepEqual);
23
+ }
24
+ else {
25
+ throw 'Only put a Memoize() decorator on a method or get accessor.';
26
+ }
27
+ };
28
+ }
29
+ export function MemoizeExpiring(expiring, hashFunction) {
30
+ return Memoize({
31
+ expiring,
32
+ hashFunction
33
+ });
34
+ }
35
+ const clearCacheTagsMap = new Map();
36
+ export function clear(tags) {
37
+ const cleared = new Set();
38
+ for (const tag of tags) {
39
+ const maps = clearCacheTagsMap.get(tag);
40
+ if (maps) {
41
+ for (const mp of maps) {
42
+ if (!cleared.has(mp)) {
43
+ mp.clear();
44
+ cleared.add(mp);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ return cleared.size;
50
+ }
51
+ class DeepEqualMap {
52
+ constructor() {
53
+ this.map = new Map();
54
+ }
55
+ has(key) {
56
+ const entries = Array.from(this.map.values());
57
+ for (const entry of entries) {
58
+ if (equal(entry.key, key)) {
59
+ return true;
60
+ }
61
+ }
62
+ return false;
63
+ }
64
+ get(key) {
65
+ const entries = Array.from(this.map.values());
66
+ for (const entry of entries) {
67
+ if (equal(entry.key, key)) {
68
+ return entry.value;
69
+ }
70
+ }
71
+ return undefined;
72
+ }
73
+ set(key, value) {
74
+ const entries = Array.from(this.map.entries());
75
+ for (const [serializedKey, entry] of entries) {
76
+ if (equal(entry.key, key)) {
77
+ this.map.delete(serializedKey);
78
+ break;
79
+ }
80
+ }
81
+ const serializedKey = `${Date.now()}_${Math.random()}`;
82
+ this.map.set(serializedKey, { key, value });
83
+ return this;
84
+ }
85
+ clear() {
86
+ this.map.clear();
87
+ }
88
+ }
89
+ function getNewFunction(originalMethod, hashFunction, duration = 0, tags, useDeepEqual = true) {
90
+ const propMapName = Symbol(`__memoized_map__`);
91
+ const propDeepMapName = Symbol(`__memoized_deep_map__`);
92
+ return function (...args) {
93
+ let returnedValue;
94
+ if (useDeepEqual) {
95
+ if (!this.hasOwnProperty(propDeepMapName)) {
96
+ Object.defineProperty(this, propDeepMapName, {
97
+ configurable: false,
98
+ enumerable: false,
99
+ writable: false,
100
+ value: new DeepEqualMap()
101
+ });
102
+ }
103
+ let myMap = this[propDeepMapName];
104
+ if (Array.isArray(tags)) {
105
+ for (const tag of tags) {
106
+ const mapWrapper = {
107
+ clear: () => myMap.clear()
108
+ };
109
+ if (clearCacheTagsMap.has(tag)) {
110
+ clearCacheTagsMap.get(tag).push(mapWrapper);
111
+ }
112
+ else {
113
+ clearCacheTagsMap.set(tag, [mapWrapper]);
114
+ }
115
+ }
116
+ }
117
+ let hashKey;
118
+ if (hashFunction === true) {
119
+ hashKey = args;
120
+ }
121
+ else if (hashFunction) {
122
+ hashKey = hashFunction.apply(this, args);
123
+ }
124
+ else if (args.length > 0) {
125
+ hashKey = args.length === 1 ? args[0] : args;
126
+ }
127
+ else {
128
+ hashKey = this;
129
+ }
130
+ const timestampKey = { __timestamp: true, key: hashKey };
131
+ let isExpired = false;
132
+ if (duration > 0) {
133
+ if (!myMap.has(timestampKey)) {
134
+ isExpired = true;
135
+ }
136
+ else {
137
+ let timestamp = myMap.get(timestampKey);
138
+ isExpired = (Date.now() - timestamp) > duration;
139
+ }
140
+ }
141
+ if (myMap.has(hashKey) && !isExpired) {
142
+ returnedValue = myMap.get(hashKey);
143
+ }
144
+ else {
145
+ returnedValue = originalMethod.apply(this, args);
146
+ myMap.set(hashKey, returnedValue);
147
+ if (duration > 0) {
148
+ myMap.set(timestampKey, Date.now());
149
+ }
150
+ }
151
+ }
152
+ else {
153
+ if (!this.hasOwnProperty(propMapName)) {
154
+ Object.defineProperty(this, propMapName, {
155
+ configurable: false,
156
+ enumerable: false,
157
+ writable: false,
158
+ value: new Map()
159
+ });
160
+ }
161
+ let myMap = this[propMapName];
162
+ if (Array.isArray(tags)) {
163
+ for (const tag of tags) {
164
+ if (clearCacheTagsMap.has(tag)) {
165
+ clearCacheTagsMap.get(tag).push(myMap);
166
+ }
167
+ else {
168
+ clearCacheTagsMap.set(tag, [myMap]);
169
+ }
170
+ }
171
+ }
172
+ if (hashFunction || args.length > 0 || duration > 0) {
173
+ let hashKey;
174
+ if (hashFunction === true) {
175
+ hashKey = args.map(a => a.toString()).join('!');
176
+ }
177
+ else if (hashFunction) {
178
+ hashKey = hashFunction.apply(this, args);
179
+ }
180
+ else {
181
+ hashKey = args[0];
182
+ }
183
+ const timestampKey = `${hashKey}__timestamp`;
184
+ let isExpired = false;
185
+ if (duration > 0) {
186
+ if (!myMap.has(timestampKey)) {
187
+ isExpired = true;
188
+ }
189
+ else {
190
+ let timestamp = myMap.get(timestampKey);
191
+ isExpired = (Date.now() - timestamp) > duration;
192
+ }
193
+ }
194
+ if (myMap.has(hashKey) && !isExpired) {
195
+ returnedValue = myMap.get(hashKey);
196
+ }
197
+ else {
198
+ returnedValue = originalMethod.apply(this, args);
199
+ myMap.set(hashKey, returnedValue);
200
+ if (duration > 0) {
201
+ myMap.set(timestampKey, Date.now());
202
+ }
203
+ }
204
+ }
205
+ else {
206
+ const hashKey = this;
207
+ if (myMap.has(hashKey)) {
208
+ returnedValue = myMap.get(hashKey);
209
+ }
210
+ else {
211
+ returnedValue = originalMethod.apply(this, args);
212
+ myMap.set(hashKey, returnedValue);
213
+ }
214
+ }
215
+ }
216
+ return returnedValue;
217
+ };
218
+ }
219
219
  //# 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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"}
@@ -1,10 +1,10 @@
1
- interface MemoizeArgs {
2
- expiring?: number;
3
- hashFunction?: boolean | ((...args: any[]) => any);
4
- tags?: string[];
5
- useDeepEqual?: boolean;
6
- }
7
- export declare function Memoize(args?: MemoizeArgs | MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
8
- export declare function MemoizeExpiring(expiring: number, hashFunction?: MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
9
- export declare function clear(tags: string[]): number;
10
- export {};
1
+ interface MemoizeArgs {
2
+ expiring?: number;
3
+ hashFunction?: boolean | ((...args: any[]) => any);
4
+ tags?: string[];
5
+ useDeepEqual?: boolean;
6
+ }
7
+ export declare function Memoize(args?: MemoizeArgs | MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
8
+ export declare function MemoizeExpiring(expiring: number, hashFunction?: MemoizeArgs['hashFunction']): (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => void;
9
+ export declare function clear(tags: string[]): number;
10
+ export {};