1 | import { init } from '@vect/vector-init';
|
2 | import { iso } from '@vect/object-init';
|
3 |
|
4 | function _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 |
|
18 | function _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 |
|
38 | let _Symbol$iterator;
|
39 | _Symbol$iterator = Symbol.iterator;
|
40 | class 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;
|
94 |
|
95 | }
|
96 |
|
97 | static build(pool) {
|
98 | return new RanchCows(pool);
|
99 | }
|
100 |
|
101 | }
|
102 |
|
103 | var _n = new WeakMap();
|
104 |
|
105 | var _pool = new WeakMap();
|
106 |
|
107 | export { RanchCows };
|