UNPKG

2.47 kBJavaScriptView Raw
1import { init } from '@vect/vector-init';
2import { iso } from '@vect/object-init';
3
4function _classPrivateFieldGet(receiver, privateMap) {
5 var descriptor = privateMap.get(receiver);
6
7 if (!descriptor) {
8 throw new TypeError("attempted to get private field on non-instance");
9 }
10
11 if (descriptor.get) {
12 return descriptor.get.call(receiver);
13 }
14
15 return descriptor.value;
16}
17
18function _classPrivateFieldSet(receiver, privateMap, value) {
19 var descriptor = privateMap.get(receiver);
20
21 if (!descriptor) {
22 throw new TypeError("attempted to set private field on non-instance");
23 }
24
25 if (descriptor.set) {
26 descriptor.set.call(receiver, value);
27 } else {
28 if (!descriptor.writable) {
29 throw new TypeError("attempted to set read only private field");
30 }
31
32 descriptor.value = value;
33 }
34
35 return value;
36}
37
38let _Symbol$iterator;
39_Symbol$iterator = Symbol.iterator;
40class RanchCows {
41 constructor(pool) {
42 _n.set(this, {
43 writable: true,
44 value: 0
45 });
46
47 _pool.set(this, {
48 writable: true,
49 value: null
50 });
51
52 pool ? (_classPrivateFieldSet(this, _pool, pool), _classPrivateFieldSet(this, _n, Object.keys(pool).length)) : (_classPrivateFieldSet(this, _pool, {}), _classPrivateFieldSet(this, _n, 0));
53 }
54
55 get size() {
56 return _classPrivateFieldGet(this, _n);
57 }
58
59 *[_Symbol$iterator]() {
60 for (let kv of Object.entries(_classPrivateFieldGet(this, _pool))) {
61 yield kv;
62 }
63 }
64
65 add(id, member) {
66 _classPrivateFieldGet(this, _pool)[id] = member;
67 return _classPrivateFieldSet(this, _n, +_classPrivateFieldGet(this, _n) + 1);
68 }
69
70 retire(id) {
71 const member = _classPrivateFieldGet(this, _pool)[id];
72
73 delete _classPrivateFieldGet(this, _pool)[id];
74
75 _classPrivateFieldSet(this, _n, +_classPrivateFieldGet(this, _n) - 1);
76
77 return member;
78 }
79
80 histogram(indicator = 'age', ticksBound = {
81 max: 7,
82 min: 0
83 }) {
84 const {
85 max,
86 min
87 } = ticksBound;
88 const ticks = init(max - min + 1, i => min + i);
89 const histo = iso(ticks, 0);
90 Object.values(_classPrivateFieldGet(this, _pool)).forEach(x => {
91 histo[x[indicator]]++;
92 });
93 return histo; // const values = Object.values(this.#pool).map(x => x[indicator])
94 // return Histo.fromSamples(values, 8).statistics({ keyType: NUM })
95 }
96
97 static build(pool) {
98 return new RanchCows(pool);
99 }
100
101}
102
103var _n = new WeakMap();
104
105var _pool = new WeakMap();
106
107export { RanchCows };