@blackglory/structures 0.5.0 → 0.5.1
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.
- package/dist/es2015/index.min.mjs +2 -2
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +98 -144
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +98 -144
- package/dist/es2015/index.umd.js.map +1 -1
- package/dist/es2015/index.umd.min.js +2 -2
- package/dist/es2015/index.umd.min.js.map +1 -1
- package/dist/es2018/index.min.mjs +2 -2
- package/dist/es2018/index.min.mjs.map +1 -1
- package/dist/es2018/index.mjs +98 -144
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +98 -144
- package/dist/es2018/index.umd.js.map +1 -1
- package/dist/es2018/index.umd.min.js +2 -2
- package/dist/es2018/index.umd.min.js.map +1 -1
- package/lib/es2015/box.d.ts +1 -1
- package/lib/es2015/box.js +3 -17
- package/lib/es2015/box.js.map +1 -1
- package/lib/es2015/emitter.d.ts +1 -1
- package/lib/es2015/emitter.js +10 -16
- package/lib/es2015/emitter.js.map +1 -1
- package/lib/es2015/expirable-map.d.ts +2 -1
- package/lib/es2015/expirable-map.js +14 -27
- package/lib/es2015/expirable-map.js.map +1 -1
- package/lib/es2015/finite-state-machine.d.ts +1 -1
- package/lib/es2015/finite-state-machine.js +4 -18
- package/lib/es2015/finite-state-machine.js.map +1 -1
- package/lib/es2015/hash-map.d.ts +1 -1
- package/lib/es2015/hash-map.js +8 -14
- package/lib/es2015/hash-map.js.map +1 -1
- package/lib/es2015/hash-set.d.ts +1 -1
- package/lib/es2015/hash-set.js +9 -15
- package/lib/es2015/hash-set.js.map +1 -1
- package/lib/es2015/lru-map.d.ts +2 -1
- package/lib/es2015/lru-map.js +15 -28
- package/lib/es2015/lru-map.js.map +1 -1
- package/lib/es2015/queue.d.ts +1 -1
- package/lib/es2015/queue.js +8 -14
- package/lib/es2015/queue.js.map +1 -1
- package/lib/es2015/tlru-map.d.ts +4 -2
- package/lib/es2015/tlru-map.js +21 -35
- package/lib/es2015/tlru-map.js.map +1 -1
- package/lib/es2015/trie-map.d.ts +1 -1
- package/lib/es2015/trie-map.js +6 -12
- package/lib/es2015/trie-map.js.map +1 -1
- package/lib/es2018/box.d.ts +1 -1
- package/lib/es2018/box.js +3 -17
- package/lib/es2018/box.js.map +1 -1
- package/lib/es2018/emitter.d.ts +1 -1
- package/lib/es2018/emitter.js +10 -16
- package/lib/es2018/emitter.js.map +1 -1
- package/lib/es2018/expirable-map.d.ts +2 -1
- package/lib/es2018/expirable-map.js +14 -27
- package/lib/es2018/expirable-map.js.map +1 -1
- package/lib/es2018/finite-state-machine.d.ts +1 -1
- package/lib/es2018/finite-state-machine.js +4 -18
- package/lib/es2018/finite-state-machine.js.map +1 -1
- package/lib/es2018/hash-map.d.ts +1 -1
- package/lib/es2018/hash-map.js +8 -14
- package/lib/es2018/hash-map.js.map +1 -1
- package/lib/es2018/hash-set.d.ts +1 -1
- package/lib/es2018/hash-set.js +9 -15
- package/lib/es2018/hash-set.js.map +1 -1
- package/lib/es2018/lru-map.d.ts +2 -1
- package/lib/es2018/lru-map.js +15 -28
- package/lib/es2018/lru-map.js.map +1 -1
- package/lib/es2018/queue.d.ts +1 -1
- package/lib/es2018/queue.js +8 -14
- package/lib/es2018/queue.js.map +1 -1
- package/lib/es2018/tlru-map.d.ts +4 -2
- package/lib/es2018/tlru-map.js +21 -35
- package/lib/es2018/tlru-map.js.map +1 -1
- package/lib/es2018/trie-map.d.ts +1 -1
- package/lib/es2018/trie-map.js +6 -12
- package/lib/es2018/trie-map.js.map +1 -1
- package/package.json +1 -1
package/lib/es2018/hash-set.js
CHANGED
|
@@ -1,41 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var _HashSet_map;
|
|
8
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
3
|
exports.HashSet = void 0;
|
|
10
4
|
class HashSet {
|
|
11
5
|
constructor(hash) {
|
|
12
6
|
this.hash = hash;
|
|
13
|
-
|
|
7
|
+
this.map = new Map();
|
|
14
8
|
}
|
|
15
|
-
get [
|
|
9
|
+
get [Symbol.toStringTag]() {
|
|
16
10
|
return this.constructor.name;
|
|
17
11
|
}
|
|
18
12
|
get size() {
|
|
19
|
-
return
|
|
13
|
+
return this.map.size;
|
|
20
14
|
}
|
|
21
15
|
[Symbol.iterator]() {
|
|
22
|
-
return
|
|
16
|
+
return this.map.values();
|
|
23
17
|
}
|
|
24
18
|
add(value) {
|
|
25
|
-
|
|
19
|
+
this.map.set(this.hash(value), value);
|
|
26
20
|
return this;
|
|
27
21
|
}
|
|
28
22
|
delete(value) {
|
|
29
|
-
return
|
|
23
|
+
return this.map.delete(this.hash(value));
|
|
30
24
|
}
|
|
31
25
|
has(value) {
|
|
32
|
-
return
|
|
26
|
+
return this.map.has(this.hash(value));
|
|
33
27
|
}
|
|
34
28
|
clear() {
|
|
35
|
-
|
|
29
|
+
this.map.clear();
|
|
36
30
|
}
|
|
37
31
|
values() {
|
|
38
|
-
return
|
|
32
|
+
return this.map.values();
|
|
39
33
|
}
|
|
40
34
|
}
|
|
41
35
|
exports.HashSet = HashSet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash-set.js","sourceRoot":"","sources":["../../src/hash-set.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hash-set.js","sourceRoot":"","sources":["../../src/hash-set.ts"],"names":[],"mappings":";;;AAAA,MAAa,OAAO;IAelB,YAAoB,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;QAdjC,QAAG,GAAG,IAAI,GAAG,EAAQ,CAAA;IAce,CAAC;IAZ7C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;IACtB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;IAID,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;CACF;AArCD,0BAqCC"}
|
package/lib/es2018/lru-map.d.ts
CHANGED
package/lib/es2018/lru-map.js
CHANGED
|
@@ -1,68 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _LRUMap_limit, _LRUMap_map;
|
|
14
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
3
|
exports.LRUMap = void 0;
|
|
16
4
|
const errors_1 = require("@blackglory/errors");
|
|
17
5
|
const iterable_operator_1 = require("iterable-operator");
|
|
18
6
|
class LRUMap {
|
|
19
7
|
constructor(limit) {
|
|
20
|
-
|
|
21
|
-
_LRUMap_map.set(this, new Map());
|
|
8
|
+
this.map = new Map();
|
|
22
9
|
(0, errors_1.assert)(Number.isInteger(limit), 'The parameter limit must be an integer');
|
|
23
10
|
(0, errors_1.assert)(limit > 0, 'The parameter limit must be a positive value');
|
|
24
|
-
|
|
11
|
+
this.limit = limit;
|
|
25
12
|
}
|
|
26
|
-
get [
|
|
13
|
+
get [Symbol.toStringTag]() {
|
|
27
14
|
return this.constructor.name;
|
|
28
15
|
}
|
|
29
16
|
get size() {
|
|
30
|
-
return
|
|
17
|
+
return this.map.size;
|
|
31
18
|
}
|
|
32
19
|
set(key, value) {
|
|
33
|
-
if (
|
|
20
|
+
if (this.map.has(key)) {
|
|
34
21
|
this.updateItem(key, value);
|
|
35
22
|
}
|
|
36
23
|
else {
|
|
37
|
-
if (
|
|
38
|
-
|
|
24
|
+
if (this.map.size === this.limit) {
|
|
25
|
+
this.map.delete(this.getColdestKey());
|
|
39
26
|
}
|
|
40
|
-
|
|
27
|
+
this.map.set(key, value);
|
|
41
28
|
}
|
|
42
29
|
return this;
|
|
43
30
|
}
|
|
44
31
|
has(key) {
|
|
45
|
-
return
|
|
32
|
+
return this.map.has(key);
|
|
46
33
|
}
|
|
47
34
|
get(key) {
|
|
48
35
|
if (!this.has(key))
|
|
49
36
|
return undefined;
|
|
50
|
-
const value =
|
|
37
|
+
const value = this.map.get(key);
|
|
51
38
|
this.updateItem(key, value);
|
|
52
39
|
return value;
|
|
53
40
|
}
|
|
54
41
|
delete(key) {
|
|
55
|
-
return
|
|
42
|
+
return this.map.delete(key);
|
|
56
43
|
}
|
|
57
44
|
clear() {
|
|
58
|
-
|
|
45
|
+
this.map.clear();
|
|
59
46
|
}
|
|
60
47
|
updateItem(key, value) {
|
|
61
|
-
|
|
62
|
-
|
|
48
|
+
this.map.delete(key);
|
|
49
|
+
this.map.set(key, value);
|
|
63
50
|
}
|
|
64
51
|
getColdestKey() {
|
|
65
|
-
return (0, iterable_operator_1.first)(
|
|
52
|
+
return (0, iterable_operator_1.first)(this.map.keys());
|
|
66
53
|
}
|
|
67
54
|
}
|
|
68
55
|
exports.LRUMap = LRUMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-map.js","sourceRoot":"","sources":["../../src/lru-map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lru-map.js","sourceRoot":"","sources":["../../src/lru-map.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,yDAAyC;AAEzC,MAAa,MAAM;IAYjB,YAAY,KAAa;QAVjB,QAAG,GAAG,IAAI,GAAG,EAAQ,CAAA;QAW3B,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,wCAAwC,CAAC,CAAA;QACzE,IAAA,eAAM,EAAC,KAAK,GAAG,CAAC,EAAE,8CAA8C,CAAC,CAAA;QAEjE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAbD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;IACtB,CAAC;IASD,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;SAC5B;aAAM;YACL,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;gBAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAG,CAAC,CAAA;aACvC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;SACzB;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;IAKO,UAAU,CAAC,GAAM,EAAE,KAAQ;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAKO,aAAa;QACnB,OAAO,IAAA,yBAAK,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/B,CAAC;CACF;AAjED,wBAiEC"}
|
package/lib/es2018/queue.d.ts
CHANGED
package/lib/es2018/queue.js
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var _Queue_items;
|
|
8
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
3
|
exports.Queue = void 0;
|
|
10
4
|
class Queue {
|
|
11
5
|
constructor() {
|
|
12
|
-
|
|
6
|
+
this.items = [];
|
|
13
7
|
}
|
|
14
|
-
get [
|
|
8
|
+
get [Symbol.toStringTag]() {
|
|
15
9
|
return this.constructor.name;
|
|
16
10
|
}
|
|
17
11
|
get size() {
|
|
18
|
-
return
|
|
12
|
+
return this.items.length;
|
|
19
13
|
}
|
|
20
14
|
empty() {
|
|
21
|
-
|
|
15
|
+
this.items.length = 0;
|
|
22
16
|
}
|
|
23
17
|
enqueue(...items) {
|
|
24
|
-
|
|
18
|
+
this.items.push(...items);
|
|
25
19
|
}
|
|
26
20
|
dequeue() {
|
|
27
|
-
return
|
|
21
|
+
return this.items.shift();
|
|
28
22
|
}
|
|
29
23
|
remove(item) {
|
|
30
24
|
let index;
|
|
31
|
-
while ((index =
|
|
32
|
-
|
|
25
|
+
while ((index = this.items.indexOf(item)) >= 0) {
|
|
26
|
+
this.items.splice(index, 1);
|
|
33
27
|
}
|
|
34
28
|
}
|
|
35
29
|
}
|
package/lib/es2018/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/queue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/queue.ts"],"names":[],"mappings":";;;AAAA,MAAa,KAAK;IAAlB;QACU,UAAK,GAAQ,EAAE,CAAA;IA4BzB,CAAC;IA1BC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,OAAO,CAAC,GAAG,KAAU;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,IAAO;QACZ,IAAI,KAAa,CAAA;QACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;SAC5B;IACH,CAAC;CACF;AA7BD,sBA6BC"}
|
package/lib/es2018/tlru-map.d.ts
CHANGED
package/lib/es2018/tlru-map.js
CHANGED
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _TLRUMap_limit, _TLRUMap_map, _TLRUMap_cancelClearTimeout;
|
|
14
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
3
|
exports.TLRUMap = void 0;
|
|
16
4
|
const errors_1 = require("@blackglory/errors");
|
|
@@ -18,41 +6,39 @@ const iterable_operator_1 = require("iterable-operator");
|
|
|
18
6
|
const extra_timers_1 = require("extra-timers");
|
|
19
7
|
class TLRUMap {
|
|
20
8
|
constructor(limit) {
|
|
21
|
-
|
|
22
|
-
_TLRUMap_map.set(this, new Map());
|
|
23
|
-
_TLRUMap_cancelClearTimeout.set(this, void 0);
|
|
9
|
+
this.map = new Map();
|
|
24
10
|
this.itemMetadataSortedByExpirationTime = [];
|
|
25
11
|
(0, errors_1.assert)(Number.isInteger(limit), 'The parameter limit must be an integer');
|
|
26
12
|
(0, errors_1.assert)(limit > 0, 'The parameter limit must be a positive value');
|
|
27
|
-
|
|
13
|
+
this.limit = limit;
|
|
28
14
|
}
|
|
29
|
-
get [
|
|
15
|
+
get [Symbol.toStringTag]() {
|
|
30
16
|
return this.constructor.name;
|
|
31
17
|
}
|
|
32
18
|
get size() {
|
|
33
|
-
return
|
|
19
|
+
return this.map.size;
|
|
34
20
|
}
|
|
35
21
|
set(key, value, maxAge) {
|
|
36
|
-
if (
|
|
22
|
+
if (this.map.has(key)) {
|
|
37
23
|
this.updateItem(key, value);
|
|
38
24
|
this.removeItemMetadata(key);
|
|
39
25
|
this.addItemMetadata(key, Date.now() + maxAge);
|
|
40
26
|
}
|
|
41
27
|
else {
|
|
42
|
-
if (
|
|
43
|
-
|
|
28
|
+
if (this.map.size === this.limit) {
|
|
29
|
+
this.map.delete(this.getColdestKey());
|
|
44
30
|
}
|
|
45
|
-
|
|
31
|
+
this.map.set(key, value);
|
|
46
32
|
this.addItemMetadata(key, Date.now() + maxAge);
|
|
47
33
|
}
|
|
48
34
|
return this;
|
|
49
35
|
}
|
|
50
36
|
has(key) {
|
|
51
|
-
return
|
|
37
|
+
return this.map.has(key);
|
|
52
38
|
}
|
|
53
39
|
get(key) {
|
|
54
40
|
if (this.has(key)) {
|
|
55
|
-
const value =
|
|
41
|
+
const value = this.map.get(key);
|
|
56
42
|
this.updateItem(key, value);
|
|
57
43
|
return value;
|
|
58
44
|
}
|
|
@@ -61,7 +47,7 @@ class TLRUMap {
|
|
|
61
47
|
}
|
|
62
48
|
}
|
|
63
49
|
delete(key) {
|
|
64
|
-
const result =
|
|
50
|
+
const result = this.map.delete(key);
|
|
65
51
|
if (result) {
|
|
66
52
|
const index = this.itemMetadataSortedByExpirationTime.findIndex(x => x.key === key);
|
|
67
53
|
this.itemMetadataSortedByExpirationTime.splice(index, 1);
|
|
@@ -73,13 +59,13 @@ class TLRUMap {
|
|
|
73
59
|
}
|
|
74
60
|
clear() {
|
|
75
61
|
var _a;
|
|
76
|
-
|
|
77
|
-
(_a =
|
|
62
|
+
this.map.clear();
|
|
63
|
+
(_a = this.cancelClearTimeout) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
78
64
|
this.itemMetadataSortedByExpirationTime = [];
|
|
79
65
|
}
|
|
80
66
|
updateItem(key, value) {
|
|
81
|
-
|
|
82
|
-
|
|
67
|
+
this.map.delete(key);
|
|
68
|
+
this.map.set(key, value);
|
|
83
69
|
}
|
|
84
70
|
addItemMetadata(key, expirationTime) {
|
|
85
71
|
for (let i = 0; i < this.itemMetadataSortedByExpirationTime.length; i++) {
|
|
@@ -111,11 +97,11 @@ class TLRUMap {
|
|
|
111
97
|
const expiredItemKeys = indexOfFirstUnexpiredItem >= 0
|
|
112
98
|
? this.itemMetadataSortedByExpirationTime.splice(0, indexOfFirstUnexpiredItem)
|
|
113
99
|
: this.itemMetadataSortedByExpirationTime.splice(0, this.itemMetadataSortedByExpirationTime.length);
|
|
114
|
-
expiredItemKeys.forEach(x =>
|
|
100
|
+
expiredItemKeys.forEach(x => this.map.delete(x.key));
|
|
115
101
|
}
|
|
116
102
|
rescheduleClearTimeout() {
|
|
117
103
|
var _a;
|
|
118
|
-
(_a =
|
|
104
|
+
(_a = this.cancelClearTimeout) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
119
105
|
if (this.itemMetadataSortedByExpirationTime.length > 0) {
|
|
120
106
|
const item = this.itemMetadataSortedByExpirationTime[0];
|
|
121
107
|
if (Number.isFinite(item.expirationTime)) {
|
|
@@ -123,15 +109,15 @@ class TLRUMap {
|
|
|
123
109
|
this.clearExpiredItems(Date.now());
|
|
124
110
|
this.rescheduleClearTimeout();
|
|
125
111
|
});
|
|
126
|
-
|
|
112
|
+
this.cancelClearTimeout = () => {
|
|
127
113
|
cancel();
|
|
128
|
-
|
|
129
|
-
}
|
|
114
|
+
this.cancelClearTimeout = undefined;
|
|
115
|
+
};
|
|
130
116
|
}
|
|
131
117
|
}
|
|
132
118
|
}
|
|
133
119
|
getColdestKey() {
|
|
134
|
-
return (0, iterable_operator_1.first)(
|
|
120
|
+
return (0, iterable_operator_1.first)(this.map.keys());
|
|
135
121
|
}
|
|
136
122
|
}
|
|
137
123
|
exports.TLRUMap = TLRUMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tlru-map.js","sourceRoot":"","sources":["../../src/tlru-map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tlru-map.js","sourceRoot":"","sources":["../../src/tlru-map.ts"],"names":[],"mappings":"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"}
|
package/lib/es2018/trie-map.d.ts
CHANGED
package/lib/es2018/trie-map.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var _TrieMap_root;
|
|
8
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
3
|
exports.TrieMap = void 0;
|
|
10
4
|
const iterable_operator_1 = require("iterable-operator");
|
|
@@ -16,13 +10,13 @@ class TrieNode {
|
|
|
16
10
|
}
|
|
17
11
|
class TrieMap {
|
|
18
12
|
constructor() {
|
|
19
|
-
|
|
13
|
+
this.root = new TrieNode();
|
|
20
14
|
}
|
|
21
|
-
get [
|
|
15
|
+
get [Symbol.toStringTag]() {
|
|
22
16
|
return this.constructor.name;
|
|
23
17
|
}
|
|
24
18
|
set(key, value) {
|
|
25
|
-
let node =
|
|
19
|
+
let node = this.root;
|
|
26
20
|
for (const part of key) {
|
|
27
21
|
if (!node.children.has(part)) {
|
|
28
22
|
node.children.set(part, new TrieNode());
|
|
@@ -33,7 +27,7 @@ class TrieMap {
|
|
|
33
27
|
return this;
|
|
34
28
|
}
|
|
35
29
|
has(key) {
|
|
36
|
-
let node =
|
|
30
|
+
let node = this.root;
|
|
37
31
|
for (const part of key) {
|
|
38
32
|
if (node.children.has(part)) {
|
|
39
33
|
node = node.children.get(part);
|
|
@@ -45,7 +39,7 @@ class TrieMap {
|
|
|
45
39
|
return node.value !== undefined;
|
|
46
40
|
}
|
|
47
41
|
get(key) {
|
|
48
|
-
let node =
|
|
42
|
+
let node = this.root;
|
|
49
43
|
for (const part of key) {
|
|
50
44
|
if (node.children.has(part)) {
|
|
51
45
|
node = node.children.get(part);
|
|
@@ -58,7 +52,7 @@ class TrieMap {
|
|
|
58
52
|
}
|
|
59
53
|
delete(key) {
|
|
60
54
|
const parentNodes = [];
|
|
61
|
-
let node =
|
|
55
|
+
let node = this.root;
|
|
62
56
|
for (const part of key) {
|
|
63
57
|
if (node.children.has(part)) {
|
|
64
58
|
parentNodes.push(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trie-map.js","sourceRoot":"","sources":["../../src/trie-map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trie-map.js","sourceRoot":"","sources":["../../src/trie-map.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAGhD,MAAM,QAAQ;IAGZ,YAAmB,KAAS;QAAT,UAAK,GAAL,KAAK,CAAI;QAF5B,aAAQ,GAAG,IAAI,GAAG,EAAqB,CAAA;IAER,CAAC;CACjC;AAED,MAAa,OAAO;IAApB;QACU,SAAI,GAAG,IAAI,QAAQ,EAAQ,CAAA;IAoErC,CAAC;IAlEC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,QAAQ,EAAQ,CAAC,CAAA;aAC9C;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;SAChC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,GAAM;QACR,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;aAChC;iBAAM;gBACL,OAAO,KAAK,CAAA;aACb;SACF;QAED,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,GAAM;QACR,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;aAChC;iBAAM;gBACL,OAAO,SAAS,CAAA;aACjB;SACF;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,GAAM;QACX,MAAM,WAAW,GAAqB,EAAE,CAAA;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACtB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;aAChC;iBAAM;gBACL,OAAO,KAAK,CAAA;aACb;SACF;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;QAGjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAA,2BAAO,EAAC,IAAA,uBAAG,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;gBACzE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAChC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;oBAAE,MAAK;aAC1C;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AArED,0BAqEC"}
|