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