UNPKG

2.59 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5var vectorInit = require('@vect/vector-init');
6var objectInit = require('@vect/object-init');
7
8function _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
22function _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
42let _Symbol$iterator;
43_Symbol$iterator = Symbol.iterator;
44class 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; // const values = Object.values(this.#pool).map(x => x[indicator])
98 // return Histo.fromSamples(values, 8).statistics({ keyType: NUM })
99 }
100
101 static build(pool) {
102 return new RanchCows(pool);
103 }
104
105}
106
107var _n = new WeakMap();
108
109var _pool = new WeakMap();
110
111exports.RanchCows = RanchCows;