@blumintinc/typescript-memoize 1.3.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,4 +1,46 @@
1
1
  import equal from '@blumintinc/fast-deep-equal';
2
+ function isOpaqueClassInstance(obj) {
3
+ if (obj == null || typeof obj !== 'object' || Array.isArray(obj))
4
+ return false;
5
+ const proto = Object.getPrototypeOf(obj);
6
+ if (proto === null || proto === Object.prototype)
7
+ return false;
8
+ if (proto.constructor === Object)
9
+ return false;
10
+ if (obj instanceof Date || obj instanceof RegExp ||
11
+ obj instanceof Map || obj instanceof Set)
12
+ return false;
13
+ return Object.keys(obj).length === 0;
14
+ }
15
+ function containsOpaqueValue(obj) {
16
+ if (typeof obj !== 'object' || obj === null)
17
+ return false;
18
+ return Object.values(obj).some(isOpaqueClassInstance);
19
+ }
20
+ function memoizeEqual(a, b) {
21
+ if (a === b)
22
+ return true;
23
+ if (a == null || b == null)
24
+ return false;
25
+ if (typeof a !== 'object' || typeof b !== 'object')
26
+ return equal(a, b);
27
+ if (isOpaqueClassInstance(a) || isOpaqueClassInstance(b))
28
+ return false;
29
+ if (Array.isArray(a) && Array.isArray(b)) {
30
+ if (a.length !== b.length)
31
+ return false;
32
+ return a.every((el, i) => memoizeEqual(el, b[i]));
33
+ }
34
+ if (!containsOpaqueValue(a) && !containsOpaqueValue(b)) {
35
+ return equal(a, b);
36
+ }
37
+ const keysA = Object.keys(a);
38
+ const keysB = Object.keys(b);
39
+ if (keysA.length !== keysB.length)
40
+ return false;
41
+ return keysA.every(key => key in b &&
42
+ memoizeEqual(a[key], b[key]));
43
+ }
2
44
  export function Memoize(args) {
3
45
  var _a;
4
46
  let hashFunction;
@@ -55,7 +97,7 @@ class DeepEqualMap {
55
97
  has(key) {
56
98
  const entries = Array.from(this.map.values());
57
99
  for (const entry of entries) {
58
- if (equal(entry.key, key)) {
100
+ if (memoizeEqual(entry.key, key)) {
59
101
  return true;
60
102
  }
61
103
  }
@@ -64,7 +106,7 @@ class DeepEqualMap {
64
106
  get(key) {
65
107
  const entries = Array.from(this.map.values());
66
108
  for (const entry of entries) {
67
- if (equal(entry.key, key)) {
109
+ if (memoizeEqual(entry.key, key)) {
68
110
  return entry.value;
69
111
  }
70
112
  }
@@ -73,7 +115,7 @@ class DeepEqualMap {
73
115
  set(key, value) {
74
116
  const entries = Array.from(this.map.entries());
75
117
  for (const [serializedKey, entry] of entries) {
76
- if (equal(entry.key, key)) {
118
+ if (memoizeEqual(entry.key, key)) {
77
119
  this.map.delete(serializedKey);
78
120
  break;
79
121
  }
@@ -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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"}
@@ -12,6 +12,48 @@
12
12
  exports.clear = exports.MemoizeExpiring = exports.Memoize = void 0;
13
13
  var tslib_1 = require("tslib");
14
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
+ }
15
57
  function Memoize(args) {
16
58
  var _a;
17
59
  var hashFunction;
@@ -74,7 +116,7 @@
74
116
  var entries = Array.from(this.map.values());
75
117
  for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
76
118
  var entry = entries_1[_i];
77
- if (fast_deep_equal_1.default(entry.key, key)) {
119
+ if (memoizeEqual(entry.key, key)) {
78
120
  return true;
79
121
  }
80
122
  }
@@ -84,7 +126,7 @@
84
126
  var entries = Array.from(this.map.values());
85
127
  for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {
86
128
  var entry = entries_2[_i];
87
- if (fast_deep_equal_1.default(entry.key, key)) {
129
+ if (memoizeEqual(entry.key, key)) {
88
130
  return entry.value;
89
131
  }
90
132
  }
@@ -94,7 +136,7 @@
94
136
  var entries = Array.from(this.map.entries());
95
137
  for (var _i = 0, entries_3 = entries; _i < entries_3.length; _i++) {
96
138
  var _a = entries_3[_i], serializedKey_1 = _a[0], entry = _a[1];
97
- if (fast_deep_equal_1.default(entry.key, key)) {
139
+ if (memoizeEqual(entry.key, key)) {
98
140
  this.map.delete(serializedKey_1);
99
141
  break;
100
142
  }
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blumintinc/typescript-memoize",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Memoize decorator for Typescript with deep equality",
5
5
  "main": "./dist/memoize-decorator.js",
6
6
  "module": "./dist/es2015/memoize-decorator.js",
@@ -1,5 +1,62 @@
1
1
  import equal from '@blumintinc/fast-deep-equal';
2
2
 
3
+ // Detects class instances with no enumerable properties (e.g., Firestore Transaction,
4
+ // WriteBatch). Deep equality cannot meaningfully compare these — it always returns true
5
+ // because there are no enumerable keys to diff. Reference equality is strictly more
6
+ // correct: "same reference" is a valid identity check, while "always equal" is not.
7
+ function isOpaqueClassInstance(obj: unknown): boolean {
8
+ if (obj == null || typeof obj !== 'object' || Array.isArray(obj)) return false;
9
+ const proto = Object.getPrototypeOf(obj);
10
+ // Plain objects ({}) and null-prototype objects (Object.create(null))
11
+ if (proto === null || proto === Object.prototype) return false;
12
+ // Objects whose prototype was created via Object.create({}) — still plain-like
13
+ if (proto.constructor === Object) return false;
14
+ // Known value types that fast-deep-equal handles correctly
15
+ if (obj instanceof Date || obj instanceof RegExp ||
16
+ obj instanceof Map || obj instanceof Set) return false;
17
+ return Object.keys(obj as Record<string, unknown>).length === 0;
18
+ }
19
+
20
+ function containsOpaqueValue(obj: unknown): boolean {
21
+ if (typeof obj !== 'object' || obj === null) return false;
22
+ return Object.values(obj as Record<string, unknown>).some(isOpaqueClassInstance);
23
+ }
24
+
25
+ // Uses reference equality for opaque class instances while preserving deep equality
26
+ // for everything else. When no opaque values are present, delegates entirely to
27
+ // fast-deep-equal for full edge-case handling (TypedArrays, circular refs, etc.).
28
+ function memoizeEqual(a: unknown, b: unknown): boolean {
29
+ if (a === b) return true;
30
+ if (a == null || b == null) return false;
31
+ if (typeof a !== 'object' || typeof b !== 'object') return equal(a, b);
32
+
33
+ // Opaque class instances: reference equality (already checked a === b above)
34
+ if (isOpaqueClassInstance(a) || isOpaqueClassInstance(b)) return false;
35
+
36
+ // Arrays: element-wise with opaque awareness
37
+ if (Array.isArray(a) && Array.isArray(b)) {
38
+ if (a.length !== b.length) return false;
39
+ return a.every((el, i) => memoizeEqual(el, (b as unknown[])[i]));
40
+ }
41
+
42
+ // Objects: if no value is opaque, delegate to fast-deep-equal
43
+ if (!containsOpaqueValue(a) && !containsOpaqueValue(b)) {
44
+ return equal(a, b);
45
+ }
46
+
47
+ // Recursive property comparison with opaque awareness
48
+ const keysA = Object.keys(a);
49
+ const keysB = Object.keys(b);
50
+ if (keysA.length !== keysB.length) return false;
51
+ return keysA.every(
52
+ key => key in (b as Record<string, unknown>) &&
53
+ memoizeEqual(
54
+ (a as Record<string, unknown>)[key],
55
+ (b as Record<string, unknown>)[key],
56
+ ),
57
+ );
58
+ }
59
+
3
60
  interface MemoizeArgs {
4
61
  expiring?: number;
5
62
  hashFunction?: boolean | ((...args: any[]) => any);
@@ -66,7 +123,7 @@ class DeepEqualMap<K, V> {
66
123
  has(key: K): boolean {
67
124
  const entries = Array.from(this.map.values());
68
125
  for (const entry of entries) {
69
- if (equal(entry.key, key)) {
126
+ if (memoizeEqual(entry.key, key)) {
70
127
  return true;
71
128
  }
72
129
  }
@@ -76,7 +133,7 @@ class DeepEqualMap<K, V> {
76
133
  get(key: K): V | undefined {
77
134
  const entries = Array.from(this.map.values());
78
135
  for (const entry of entries) {
79
- if (equal(entry.key, key)) {
136
+ if (memoizeEqual(entry.key, key)) {
80
137
  return entry.value;
81
138
  }
82
139
  }
@@ -86,7 +143,7 @@ class DeepEqualMap<K, V> {
86
143
  set(key: K, value: V): this {
87
144
  const entries = Array.from(this.map.entries());
88
145
  for (const [serializedKey, entry] of entries) {
89
- if (equal(entry.key, key)) {
146
+ if (memoizeEqual(entry.key, key)) {
90
147
  this.map.delete(serializedKey);
91
148
  break;
92
149
  }