UNPKG

1.36 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.DefaultWeakMap = exports.DefaultMap = void 0;
7
8function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
10class DefaultMap extends Map {
11 constructor(getDefault, entries) {
12 super(entries);
13
14 _defineProperty(this, "_getDefault", void 0);
15
16 this._getDefault = getDefault;
17 }
18
19 get(key) {
20 let ret;
21
22 if (this.has(key)) {
23 ret = super.get(key);
24 } else {
25 ret = this._getDefault(key);
26 this.set(key, ret);
27 } // $FlowFixMe
28
29
30 return ret;
31 }
32
33} // Duplicated from DefaultMap implementation for Flow
34// Roughly mirrors https://github.com/facebook/flow/blob/2eb5a78d92c167117ba9caae070afd2b9f598599/lib/core.js#L617
35
36
37exports.DefaultMap = DefaultMap;
38
39class DefaultWeakMap extends WeakMap {
40 constructor(getDefault, entries) {
41 super(entries);
42
43 _defineProperty(this, "_getDefault", void 0);
44
45 this._getDefault = getDefault;
46 }
47
48 get(key) {
49 let ret;
50
51 if (this.has(key)) {
52 ret = super.get(key);
53 } else {
54 ret = this._getDefault(key);
55 this.set(key, ret);
56 } // $FlowFixMe
57
58
59 return ret;
60 }
61
62}
63
64exports.DefaultWeakMap = DefaultWeakMap;
\No newline at end of file