{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcoroutine.html
More file actions
executable file
·291 lines (268 loc) · 45.6 KB
/
Copy pathcoroutine.html
File metadata and controls
executable file
·291 lines (268 loc) · 45.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>coroutine - Boost Library Dashboard</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
<style>
* { box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
max-width: 1600px; margin: 0 auto; padding: 30px 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
}
h1 { text-align: center; color: #fff; font-size: 2.5em; margin-bottom: 10px; text-shadow: 2px 2px 4px rgba(0,0,0,0.2); }
.panel { background: #fff; padding: 30px; margin: 25px 0; border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,0.12), 0 2px 6px rgba(0,0,0,0.08); }
.panel h2 { margin-top: 0; margin-bottom: 20px; color: #1a202c; font-size: 1.6em; border-bottom: 3px solid #667eea; padding-bottom: 15px; }
.panel-row { display: grid; grid-template-columns: 1.2fr 1fr; gap: 20px; align-items: start; }
.chart-container { margin: 25px 0; height: 450px; position: relative; background: #fafafa; border-radius: 8px; padding: 15px; border: 1px solid #e2e8f0; }
canvas { width: 100% !important; height: 100% !important; display: block; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
th { background-color: #f0f0f0; font-weight: 600; }
a { color: #0066cc; text-decoration: none; } a:hover { text-decoration: underline; }
.sortable { cursor: pointer; user-select: none; }
.sort-indicator { margin-left: 5px; color: #666; }
.table-controls { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.table-controls input { padding: 8px; border: 1px solid #ddd; border-radius: 4px; width: 260px; }
.pagination { display: flex; gap: 8px; align-items: center; }
.pagination button { padding: 6px 12px; border: 1px solid #ddd; border-radius: 4px; background: #fff; cursor: pointer; }
.pagination button:disabled { opacity: .5; cursor: not-allowed; }
.library-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-top: 20px; }
.library-item { padding: 12px 16px; border: 2px solid #e2e8f0; border-radius: 8px; background: #f7fafc; text-align: center; }
.tab-button { padding: 10px 20px; margin-right: 5px; cursor: pointer; border: 1px solid #ddd; border-radius: 4px 4px 0 0; background: #fff; font-weight: 600; }
.tab-button.active { background: #f5f5f5; }
.back-link a { color: rgba(255,255,255,0.95); font-weight: 500; padding: 8px 16px; background: rgba(255,255,255,0.15); border-radius: 6px; }
</style>
</head>
<body>
<div class="back-link"><a href="../index.html">← Back to Dashboard</a></div>
<h1>📚 coroutine</h1>
<div class="panel">
<h2>Overview</h2>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:30px; align-items:start;">
<div>
<p style="color:#666;">Coroutine library.</p>
<table><tbody>
<tr><td><strong>Created Version:</strong></td><td>boost-1.57.0</td></tr>
<tr><td><strong>Most Recent Modified Version:</strong></td><td>boost-1.87.0</td></tr>
<tr><td><strong>Total Repositories:</strong></td><td>186</td></tr>
<tr><td><strong>Average New Repositories Per Year:</strong></td><td>9.00</td></tr>
<tr><td><strong>Most Recent Year Repository Count:</strong></td><td>8</td></tr>
<tr><td><strong>Most Used Year:</strong></td><td>2015</td></tr>
<tr><td><strong>Average Stars:</strong></td><td>315</td></tr>
<tr><td><strong>Activity Score:</strong></td><td>-0.335</td></tr>
<tr><td><strong>Internal Consumers:</strong></td><td>7</td></tr>
<tr><td><strong>Contributors in Most Recent Version:</strong></td><td>1</td></tr>
<tr><td><strong>Total Contributors:</strong></td><td>24</td></tr>
</tbody></table>
</div>
<div>
<h3>Used Headers</h3>
<div class="table-controls">
<div><label for="search-headers">Search:</label> <input id="search-headers" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-headers">Showing 0-0 of 0</span>
<button id="prev-headers">Previous</button>
<button id="next-headers">Next</button>
</div>
</div>
<table id="table-headers"><thead><tr><th><button type='button' class='sortable' data-key='name' aria-label='Sort by Header'>Header <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='count' aria-label='Sort by Times Included'>Times Included <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
</div>
</div>
<div class="panel">
<h2>Internal Consumers</h2>
<div class="panel-row">
<div>
<h3>Consumer Libraries</h3>
<div class="table-controls">
<div><label for="search-internal">Search:</label> <input id="search-internal" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-internal">Showing 0-0 of 0</span>
<button id="prev-internal">Previous</button>
<button id="next-internal">Next</button>
</div>
</div>
<table id="table-internal"><thead><tr><th><button type='button' class='sortable' data-key='name' aria-label='Sort by Library'>Library <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='depth' aria-label='Sort by Depth'>Depth <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='last_version' aria-label='Sort by Last Version'>Last Version <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
<div class="chart-container"><canvas id="dependentsChart"></canvas></div>
</div>
</div>
<div class="panel">
<h2>External Consumers</h2>
<div class="panel-row">
<div>
<h3>External Repositories</h3>
<div class="table-controls">
<div><label for="search-external">Search:</label> <input id="search-external" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-external">Showing 0-0 of 0</span>
<button id="prev-external">Previous</button>
<button id="next-external">Next</button>
</div>
</div>
<table id="table-external"><thead><tr><th><button type='button' class='sortable' data-key='name' aria-label='Sort by Repository'>Repository <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='stars' aria-label='Sort by Stars'>Stars <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='usage_count' aria-label='Sort by Header Includes'>Header Includes <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='created_at' aria-label='Sort by Created'>Created <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='updated_at' aria-label='Sort by Updated'>Updated <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
<div class="chart-container"><canvas id="usageChart"></canvas></div>
</div>
</div>
<div class="panel">
<h2>Contribution</h2>
<div class="panel-row">
<div>
<h3>Contributors</h3>
<div class="table-controls">
<div><label for="search-contrib">Search:</label> <input id="search-contrib" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-contrib">Showing 0-0 of 0</span>
<button id="prev-contrib">Previous</button>
<button id="next-contrib">Next</button>
</div>
</div>
<table id="table-contrib"><thead><tr><th><button type='button' class='sortable' data-key='version' aria-label='Sort by Version'>Version <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='person' aria-label='Sort by Contributor'>Contributor <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='commit_count' aria-label='Sort by Commit Count'>Commit Count <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
<div class="chart-container"><canvas id="commitChart"></canvas></div>
</div>
</div>
<script>
function toNumber(v){ if (v === null || v === undefined || v === '') return 0; const n = Number(v); return Number.isFinite(n) ? n : 0; }
function toText(v){ return (v ?? '').toString().toLowerCase(); }
function toDate(v){ if(!v) return 0; const t = Date.parse(v); return Number.isFinite(t) ? t : 0; }
function esc(s){ if (s == null || s === undefined) return ''; const t = String(s); return t.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,'''); }
function initDataTable(cfg){
const pageSize = 10;
const data = [...cfg.data];
let filtered = [...data];
let page = 1;
let sortKey = cfg.defaultSortKey || cfg.columns[0].key;
let sortAsc = cfg.defaultSortAsc ?? false;
const table = document.getElementById(cfg.tableId);
const tbody = table.querySelector('tbody');
const info = document.getElementById(cfg.infoId);
const prev = document.getElementById(cfg.prevId);
const next = document.getElementById(cfg.nextId);
const search = document.getElementById(cfg.searchId);
function sortValue(row, col){
const v = row[col.key];
if(col.type === 'number') return toNumber(v);
if(col.type === 'date') return toDate(v);
return toText(v);
}
function applyFilter(){
const term = toText(search?.value || '');
if(!term){ filtered = [...data]; return; }
filtered = data.filter(row => cfg.columns.some(c => toText(row[c.key]).includes(term)));
}
function applySort(){
const col = cfg.columns.find(c => c.key === sortKey) || cfg.columns[0];
filtered.sort((a,b) => {
const av = sortValue(a,col), bv = sortValue(b,col);
if(av < bv) return sortAsc ? -1 : 1;
if(av > bv) return sortAsc ? 1 : -1;
return 0;
});
}
function updateIndicators(){
table.querySelectorAll('.sortable').forEach(th => {
const indicator = th.querySelector('.sort-indicator');
if(!indicator) return;
if(th.dataset.key === sortKey) indicator.textContent = sortAsc ? '↑' : '↓';
else indicator.textContent = '↕';
});
}
function render(){
applyFilter();
applySort();
const total = filtered.length;
const totalPages = Math.max(1, Math.ceil(total / pageSize));
if(page > totalPages) page = totalPages;
const start = (page - 1) * pageSize;
const end = Math.min(start + pageSize, total);
tbody.innerHTML = filtered.slice(start, end).map(cfg.rowHtml).join('');
info.textContent = total ? `Showing ${start + 1}-${end} of ${total}` : 'No data available';
prev.disabled = page <= 1;
next.disabled = page >= totalPages;
updateIndicators();
}
table.querySelectorAll('.sortable').forEach(th => {
th.addEventListener('click', () => {
const key = th.dataset.key;
if(sortKey === key) sortAsc = !sortAsc;
else { sortKey = key; sortAsc = true; }
page = 1; render();
});
});
if(search) search.addEventListener('input', () => { page = 1; render(); });
prev.addEventListener('click', () => { if(page > 1){ page -= 1; render(); } });
next.addEventListener('click', () => { page += 1; render(); });
render();
}
const headersRows = [{"name": "include/boost/coroutine/all.hpp", "count": 225}, {"name": "include/boost/coroutine/coroutine.hpp", "count": 34}, {"name": "include/boost/coroutine/stack_allocator.hpp", "count": 14}, {"name": "include/boost/coroutine/detail/config.hpp", "count": 10}, {"name": "include/boost/coroutine/stack_context.hpp", "count": 8}, {"name": "include/boost/coroutine/exceptions.hpp", "count": 7}, {"name": "include/boost/coroutine/symmetric_coroutine.hpp", "count": 6}, {"name": "include/boost/coroutine/stack_traits.hpp", "count": 6}, {"name": "include/boost/coroutine/detail/coroutine_context.hpp", "count": 5}, {"name": "include/boost/coroutine/asymmetric_coroutine.hpp", "count": 5}, {"name": "include/boost/coroutine/detail/exceptions.hpp", "count": 4}, {"name": "include/boost/coroutine/standard_stack_allocator.hpp", "count": 2}, {"name": "include/boost/coroutine/detail/flags.hpp", "count": 2}, {"name": "include/boost/coroutine/flags.hpp", "count": 2}, {"name": "include/boost/coroutine/detail/coroutine_base.hpp", "count": 1}, {"name": "include/boost/coroutine/detail/push_coroutine_impl.hpp", "count": 1}, {"name": "include/boost/coroutine/detail/trampoline_push.hpp", "count": 1}, {"name": "include/boost/coroutine/detail/parameters.hpp", "count": 1}, {"name": "include/boost/coroutine/detail/trampoline.hpp", "count": 1}, {"name": "include/boost/coroutine/attributes.hpp", "count": 1}, {"name": "include/boost/coroutine/v2/detail/pull_coroutine_base.hpp", "count": 1}];
const internalRows = [{"name": "asio", "depth": 1, "last_version": "boost-1.86.0"}, {"name": "beast", "depth": 2, "last_version": "boost-1.86.0"}, {"name": "cobalt", "depth": 2, "last_version": "boost-1.86.0"}, {"name": "log", "depth": 2, "last_version": "boost-1.86.0"}, {"name": "mysql", "depth": 2, "last_version": "boost-1.86.0"}, {"name": "process", "depth": 2, "last_version": "boost-1.86.0"}, {"name": "redis", "depth": 2, "last_version": "boost-1.86.0"}];
const externalRows = [{"name": "dmemsys/Aceso", "stars": 24, "usage_count": 1, "created_at": "2024-09-20", "updated_at": "2024-10-20"}, {"name": "Polarhigh/AmxxCurl", "stars": 35, "usage_count": 1, "created_at": "2016-07-25", "updated_at": "2024-09-10"}, {"name": "SJTU-ViSYS-team/Avoid-MPC", "stars": 130, "usage_count": 1, "created_at": "2025-05-07", "updated_at": "2025-12-02"}, {"name": "VDalibard/BOAT", "stars": 53, "usage_count": 1, "created_at": "2017-01-26", "updated_at": "2019-02-25"}, {"name": "ivan-zapreev/Basic-Phrase-Based-Decoding", "stars": 12, "usage_count": 1, "created_at": "2016-01-11", "updated_at": "2018-11-29"}, {"name": "ivan-zapreev/Basic-Translation-Infrastructure", "stars": 12, "usage_count": 1, "created_at": "2016-01-11", "updated_at": "2018-11-29"}, {"name": "PacktPublishing/Boost-Cpp-Application-Development-Cookbook-Second-Edition", "stars": 43, "usage_count": 1, "created_at": "2017-08-28", "updated_at": "2021-01-14"}, {"name": "falkTX/Carla", "stars": 2031, "usage_count": 1, "created_at": "2013-01-09", "updated_at": "2026-03-19"}, {"name": "benkuper/Chataigne", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "ccf19881030/Cplus_libs_wrapper", "stars": 38, "usage_count": 4, "created_at": "2019-03-31", "updated_at": "2024-01-23"}, {"name": "Pevernow/CreationEngine", "stars": 21, "usage_count": 1, "created_at": "2020-08-19", "updated_at": "2022-11-27"}, {"name": "vldr/Cubic", "stars": 15, "usage_count": 5, "created_at": "2023-05-08", "updated_at": "2026-07-05"}, {"name": "bombela/CxxCoroutine", "stars": 18, "usage_count": 20, "created_at": "2011-04-03", "updated_at": "2012-04-14"}, {"name": "sam1016yu/DB-Exp-Sensitivity", "stars": 11, "usage_count": 3, "created_at": "2022-01-08", "updated_at": "2022-05-31"}, {"name": "ivan-zapreev/Distributed-Translation-Infrastructure", "stars": 12, "usage_count": 1, "created_at": "2016-01-11", "updated_at": "2018-11-29"}, {"name": "DigitalKarnage/EMOS", "stars": 18, "usage_count": 1, "created_at": "2016-02-24", "updated_at": "2016-03-28"}, {"name": "JakeAllison/FRC-ROS", "stars": 14, "usage_count": 1, "created_at": "2019-07-22", "updated_at": "2021-02-17"}, {"name": "Fortiphyd/GRFICSv3", "stars": 234, "usage_count": 1, "created_at": "2025-10-21", "updated_at": "2026-09-09"}, {"name": "GamechainSystem/GameChainBase", "stars": 19, "usage_count": 1, "created_at": "2017-11-30", "updated_at": "2018-05-18"}, {"name": "BlockLink/HX-core", "stars": 13, "usage_count": 1, "created_at": "2017-09-11", "updated_at": "2018-07-24"}, {"name": "HcashOrg/Hcash", "stars": 54, "usage_count": 1, "created_at": "2017-06-18", "updated_at": "2018-02-06"}, {"name": "falkTX/Hylia", "stars": 11, "usage_count": 1, "created_at": "2017-02-09", "updated_at": "2021-08-20"}, {"name": "HcashOrg/HyperExchange", "stars": 39, "usage_count": 1, "created_at": "2018-06-15", "updated_at": "2021-10-26"}, {"name": "MisterTea/HyperNEAT", "stars": 98, "usage_count": 44, "created_at": "2011-08-23", "updated_at": "2017-09-12"}, {"name": "IainWinter/IwEngine", "stars": 220, "usage_count": 2, "created_at": "2018-11-07", "updated_at": "2023-02-23"}, {"name": "NUS-LinS-Lab/Jade", "stars": 12, "usage_count": 1, "created_at": "2023-10-25", "updated_at": "2024-02-22"}, {"name": "tekezo/Karabiner-Elements", "stars": 21168, "usage_count": 1, "created_at": "2016-07-11", "updated_at": "2025-12-19"}, {"name": "benkuper/LeGrandMechantLoop", "stars": 42, "usage_count": 1, "created_at": "2020-11-15", "updated_at": "2026-05-05"}, {"name": "rsjaffe/MIDI2LR", "stars": 744, "usage_count": 1, "created_at": "2015-09-04", "updated_at": "2025-12-09"}, {"name": "maidsafe/MaidSafe", "stars": 583, "usage_count": 1, "created_at": "2012-04-30", "updated_at": "2019-03-20"}, {"name": "ProjectRebirthMu/Main", "stars": 31, "usage_count": 1, "created_at": "2023-06-06", "updated_at": "2024-03-12"}, {"name": "LouisEmulator/Main5.2", "stars": 118, "usage_count": 1, "created_at": "2021-07-23", "updated_at": "2024-11-26"}, {"name": "bingwin/MicroChat", "stars": 280, "usage_count": 1, "created_at": "2017-12-27", "updated_at": "2018-11-05"}, {"name": "TylerTheFox/Monero-TipBot", "stars": 14, "usage_count": 1, "created_at": "2018-04-05", "updated_at": "2019-04-04"}, {"name": "WohlSoft/Moondust-Project", "stars": 275, "usage_count": 1, "created_at": "2014-05-22", "updated_at": "2026-04-27"}, {"name": "bhrama-br/Mu-Online-CrossPlataform", "stars": 20, "usage_count": 1, "created_at": "2026-04-10", "updated_at": "2026-04-13"}, {"name": "MuCrossEngine/MuMain", "stars": 18, "usage_count": 1, "created_at": "2026-04-11", "updated_at": "2026-05-08"}, {"name": "thiagoralves/OpenPLC_v2", "stars": 205, "usage_count": 1, "created_at": "2016-05-13", "updated_at": "2018-06-22"}, {"name": "thiagoralves/OpenPLC_v3", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "Siv3D/OpenSiv3D", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "FuturraGroup/OpenVPNXor", "stars": 20, "usage_count": 1, "created_at": "2023-03-05", "updated_at": "2026-06-24"}, {"name": "WohlSoft/PGE-Project", "stars": 268, "usage_count": 1, "created_at": "2014-05-22", "updated_at": "2025-12-16"}, {"name": "Wohlstand/PGE-Project", "stars": 11, "usage_count": 1, "created_at": "2014-03-19", "updated_at": "2020-11-29"}, {"name": "PenRed/PenRed", "stars": 35, "usage_count": 1, "created_at": "2020-02-22", "updated_at": "2026-08-31"}, {"name": "pluracoin/PluraCoin", "stars": 11, "usage_count": 1, "created_at": "2018-03-02", "updated_at": "2023-06-12"}, {"name": "amov-lab/Prometheus", "stars": 3241, "usage_count": 1, "created_at": "2019-12-03", "updated_at": "2026-04-03"}, {"name": "dushibaiyu/QAsioSocket", "stars": 121, "usage_count": 1, "created_at": "2014-12-08", "updated_at": "2015-09-06"}, {"name": "iotlpf/ROLEX", "stars": 81, "usage_count": 1, "created_at": "2023-01-04", "updated_at": "2023-06-08"}, {"name": "NetSys/S6", "stars": 18, "usage_count": 1, "created_at": "2018-02-21", "updated_at": "2018-06-29"}, {"name": "SDChain/SDChain-Core", "stars": 35, "usage_count": 2, "created_at": "2018-02-01", "updated_at": "2019-04-29"}, {"name": "binary1248/SFNUL", "stars": 52, "usage_count": 1, "created_at": "2013-07-22", "updated_at": "2018-06-12"}, {"name": "dato-code/SFrame", "stars": 901, "usage_count": 2, "created_at": "2015-09-03", "updated_at": "2018-09-30"}, {"name": "turi-code/SFrame", "stars": 901, "usage_count": 2, "created_at": "2015-09-03", "updated_at": "2018-09-30"}, {"name": "cpvrlab/SLProject", "stars": 67, "usage_count": 1, "created_at": "2015-02-03", "updated_at": "2023-09-12"}, {"name": "cpvrlab/SLProject4", "stars": 13, "usage_count": 1, "created_at": "2023-04-28", "updated_at": "2026-09-08"}, {"name": "dmemsys/SMART", "stars": 64, "usage_count": 1, "created_at": "2023-06-01", "updated_at": "2024-10-28"}, {"name": "proxysh/Safejumper-for-Android", "stars": 24, "usage_count": 1, "created_at": "2015-08-27", "updated_at": "2019-05-15"}, {"name": "thustorage/Sherman", "stars": 113, "usage_count": 1, "created_at": "2022-02-16", "updated_at": "2024-10-05"}, {"name": "AndrewAMD/SierraChartZorroPlugin", "stars": 49, "usage_count": 1, "created_at": "2018-09-19", "updated_at": "2021-04-20"}, {"name": "mikedaley/SpectREM", "stars": 13, "usage_count": 1, "created_at": "2016-10-14", "updated_at": "2017-08-20"}, {"name": "2black0/Stella-VSLAM-ROS-with-Pixi", "stars": 16, "usage_count": 1, "created_at": "2025-11-23", "updated_at": "2026-05-25"}, {"name": "tsbkelly/Streamdeck-Midibutton", "stars": 17, "usage_count": 1, "created_at": "2020-01-23", "updated_at": "2020-12-07"}, {"name": "thustorage/TeRM", "stars": 46, "usage_count": 1, "created_at": "2023-12-09", "updated_at": "2024-10-21"}, {"name": "dib-lab/TheGreatGenotyper", "stars": 11, "usage_count": 1, "created_at": "2022-07-20", "updated_at": "2025-01-04"}, {"name": "tivalueproject/TiValue", "stars": 79, "usage_count": 2, "created_at": "2017-12-25", "updated_at": "2018-08-03"}, {"name": "tidalcycles/Tidal", "stars": 2822, "usage_count": 1, "created_at": "2010-09-09", "updated_at": "2025-06-13"}, {"name": "New-Consensus-Concurrency-Control/Tiga", "stars": 12, "usage_count": 4, "created_at": "2025-07-30", "updated_at": "2025-12-02"}, {"name": "fengtt42/U2UData", "stars": 36, "usage_count": 1, "created_at": "2024-08-20", "updated_at": "2025-07-29"}, {"name": "Hyjarion/Witcher3-MP", "stars": 25, "usage_count": 1, "created_at": "2023-05-29", "updated_at": "2023-05-29"}, {"name": "PooyaEimandar/WolfEngine", "stars": 28, "usage_count": 1, "created_at": "2014-10-31", "updated_at": "2023-08-16"}, {"name": "sherry0319/YTSvrLib", "stars": 65, "usage_count": 2, "created_at": "2016-10-13", "updated_at": "2020-02-28"}, {"name": "qianqians/abelkhan", "stars": 134, "usage_count": 2, "created_at": "2016-06-28", "updated_at": "2025-08-04"}, {"name": "stevejims/acpp", "stars": 16, "usage_count": 1, "created_at": "2017-04-26", "updated_at": "2017-04-26"}, {"name": "yy199595/acs", "stars": 16, "usage_count": 1, "created_at": "2021-05-06", "updated_at": "2025-11-24"}, {"name": "sanguinariojoe/aquagpusph", "stars": 39, "usage_count": 3, "created_at": "2013-11-26", "updated_at": "2025-12-21"}, {"name": "huyuguang/asio_benchmark", "stars": 64, "usage_count": 1, "created_at": "2017-03-14", "updated_at": "2019-04-10"}, {"name": "alibaba/async_simple", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "yongxin-ms/asyncio", "stars": 63, "usage_count": 1, "created_at": "2021-08-14", "updated_at": "2026-07-19"}, {"name": "avplayer/avhtml", "stars": 29, "usage_count": 1, "created_at": "2015-02-10", "updated_at": "2017-08-01"}, {"name": "eclipse-basyx/basyx-cpp-sdk", "stars": 17, "usage_count": 1, "created_at": "2021-10-06", "updated_at": "2023-09-21"}, {"name": "bridgecommand/bc", "stars": 74, "usage_count": 1, "created_at": "2015-01-31", "updated_at": "2026-04-28"}, {"name": "Cocos-BCX/bcxLibrary-Cpp", "stars": 19, "usage_count": 1, "created_at": "2019-07-24", "updated_at": "2020-01-07"}, {"name": "bubichain/blockchain", "stars": 96, "usage_count": 2, "created_at": "2017-06-07", "updated_at": "2017-08-28"}, {"name": "sikuner/book-code", "stars": 38, "usage_count": 3, "created_at": "2018-08-28", "updated_at": "2018-08-28"}, {"name": "boost-cmake/boost", "stars": 57, "usage_count": 3, "created_at": "2017-07-03", "updated_at": "2019-10-29"}, {"name": "queertypes/boost-bloom-filters", "stars": 24, "usage_count": 4, "created_at": "2012-06-22", "updated_at": "2017-05-18"}, {"name": "kkodev/boost-ios", "stars": 23, "usage_count": 3, "created_at": "2013-01-09", "updated_at": "2013-04-19"}, {"name": "cmake-js/boost-lib", "stars": 13, "usage_count": 1, "created_at": "2015-05-04", "updated_at": "2022-12-05"}, {"name": "unbornchikken/boost-lib", "stars": 13, "usage_count": 1, "created_at": "2015-05-04", "updated_at": "2022-12-05"}, {"name": "OpenArkStudio/bsio", "stars": 40, "usage_count": 1, "created_at": "2019-05-07", "updated_at": "2022-04-05"}, {"name": "bubichain/bubichain", "stars": 96, "usage_count": 2, "created_at": "2017-06-07", "updated_at": "2017-08-28"}, {"name": "LCAD-UFES/carmen_lcad", "stars": 69, "usage_count": 1, "created_at": "2015-11-04", "updated_at": "2026-03-25"}, {"name": "spajak/cef-pdf", "stars": 83, "usage_count": 1, "created_at": "2016-06-22", "updated_at": "2022-07-30"}, {"name": "ChainSQL/chainsqld", "stars": 214, "usage_count": 1, "created_at": "2017-11-14", "updated_at": "2023-01-12"}, {"name": "helgebetzinger/coasync4cpp", "stars": 29, "usage_count": 1, "created_at": "2014-09-27", "updated_at": "2014-11-09"}, {"name": "Cocos-BCX/cocos-mainnet", "stars": 1279, "usage_count": 1, "created_at": "2019-11-18", "updated_at": "2021-01-08"}, {"name": "senlinzhan/code-for-blog", "stars": 19, "usage_count": 1, "created_at": "2017-09-09", "updated_at": "2018-01-19"}, {"name": "eranif/codelite", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "skarupke/compile_time", "stars": 12, "usage_count": 1, "created_at": "2014-03-23", "updated_at": "2014-04-05"}, {"name": "matrix-construct/construct", "stars": 395, "usage_count": 1, "created_at": "2018-09-04", "updated_at": "2023-05-02"}, {"name": "coschain/contentos", "stars": 14, "usage_count": 1, "created_at": "2018-06-05", "updated_at": "2018-12-27"}, {"name": "watson-intu/cpp-sdk", "stars": 17, "usage_count": 4, "created_at": "2016-11-09", "updated_at": "2018-04-16"}, {"name": "doraxcyle/cuehttp", "stars": 41, "usage_count": 2, "created_at": "2019-12-03", "updated_at": "2022-01-07"}, {"name": "baotonglu/dex", "stars": 26, "usage_count": 2, "created_at": "2023-12-01", "updated_at": "2024-07-25"}, {"name": "muhopensores/dmc3-inputs-thing", "stars": 22, "usage_count": 1, "created_at": "2020-05-16", "updated_at": "2026-06-23"}, {"name": "SJTU-IPADS/dst", "stars": 16, "usage_count": 3, "created_at": "2020-10-07", "updated_at": "2021-04-12"}, {"name": "efficient/fasst", "stars": 110, "usage_count": 4, "created_at": "2016-11-02", "updated_at": "2018-11-11"}, {"name": "bytemaster/fc", "stars": 78, "usage_count": 2, "created_at": "2012-09-08", "updated_at": "2023-10-01"}, {"name": "GregorAnderson/fukataf", "stars": 16, "usage_count": 1, "created_at": "2022-11-20", "updated_at": "2025-07-15"}, {"name": "MariaDB/galera", "stars": 53, "usage_count": 1, "created_at": "2015-07-23", "updated_at": "2025-11-24"}, {"name": "codership/galera", "stars": 487, "usage_count": 1, "created_at": "2014-04-19", "updated_at": "2025-10-06"}, {"name": "mariadb-corporation/galera", "stars": 488, "usage_count": 1, "created_at": "2014-04-19", "updated_at": "2026-03-16"}, {"name": "percona/galera", "stars": 26, "usage_count": 1, "created_at": "2014-05-20", "updated_at": "2025-11-29"}, {"name": "philkr/gamehook", "stars": 135, "usage_count": 1, "created_at": "2018-06-25", "updated_at": "2018-12-10"}, {"name": "aliceatlas/hexagen", "stars": 153, "usage_count": 3, "created_at": "2015-03-02", "updated_at": "2015-07-04"}, {"name": "fungosforks/icq-desktop", "stars": 54, "usage_count": 25, "created_at": "2016-03-15", "updated_at": "2016-03-15"}, {"name": "NYU-NEWS/janus", "stars": 51, "usage_count": 2, "created_at": "2016-01-08", "updated_at": "2024-03-13"}, {"name": "flipcoder/kit", "stars": 23, "usage_count": 2, "created_at": "2013-12-18", "updated_at": "2020-12-29"}, {"name": "msesia/knockoffgwas", "stars": 16, "usage_count": 1, "created_at": "2020-07-21", "updated_at": "2022-07-07"}, {"name": "kokua/kokua", "stars": 24, "usage_count": 4, "created_at": "2010-11-11", "updated_at": "2011-05-04"}, {"name": "lancedb/lancedb-c", "stars": 14, "usage_count": 1, "created_at": "2025-10-01", "updated_at": "2026-08-26"}, {"name": "smart-mapf/lifelong-smart", "stars": 25, "usage_count": 1, "created_at": "2025-06-03", "updated_at": "2026-08-31"}, {"name": "cpp11nullptr/lnetlib", "stars": 31, "usage_count": 1, "created_at": "2015-10-13", "updated_at": "2016-02-16"}, {"name": "makodb/mako", "stars": 0, "usage_count": 3, "created_at": "", "updated_at": ""}, {"name": "Tencent/mars", "stars": 17616, "usage_count": 1, "created_at": "2016-12-12", "updated_at": "2025-09-11"}, {"name": "aerys/minko", "stars": 906, "usage_count": 1, "created_at": "2011-03-23", "updated_at": "2025-10-21"}, {"name": "giomasce/mmpp", "stars": 14, "usage_count": 1, "created_at": "2017-01-02", "updated_at": "2019-06-04"}, {"name": "tnsc4502/mnwvs196", "stars": 37, "usage_count": 1, "created_at": "2017-11-29", "updated_at": "2019-05-08"}, {"name": "gqw/mrpc", "stars": 21, "usage_count": 1, "created_at": "2021-02-26", "updated_at": "2022-07-12"}, {"name": "ftomark/msgpack-rpc-cpp11", "stars": 15, "usage_count": 1, "created_at": "2018-09-07", "updated_at": "2018-10-21"}, {"name": "dontls/msnet", "stars": 13, "usage_count": 1, "created_at": "2019-09-27", "updated_at": "2024-12-06"}, {"name": "johnoneil/mupen64plus-web", "stars": 17, "usage_count": 1, "created_at": "2015-12-14", "updated_at": "2018-03-21"}, {"name": "nelson-lang/nelson", "stars": 124, "usage_count": 1, "created_at": "2016-12-25", "updated_at": "2026-04-27"}, {"name": "neutralinojs/neutralinojs", "stars": 8586, "usage_count": 1, "created_at": "2018-06-23", "updated_at": "2026-07-19"}, {"name": "keenon/nimblephysics", "stars": 490, "usage_count": 1, "created_at": "2020-05-30", "updated_at": "2025-09-14"}, {"name": "SparkyStudios/o3de-gem-ssbehaveai", "stars": 14, "usage_count": 1, "created_at": "2021-08-06", "updated_at": "2022-08-06"}, {"name": "StreamElements/obs-streamelements-core", "stars": 20, "usage_count": 1, "created_at": "2022-06-15", "updated_at": "2026-09-06"}, {"name": "octobanana/octavia", "stars": 36, "usage_count": 1, "created_at": "2020-08-28", "updated_at": "2020-10-05"}, {"name": "elliotwoods/ofxAsio", "stars": 13, "usage_count": 1, "created_at": "2015-12-13", "updated_at": "2022-04-20"}, {"name": "Ushio/ofxExtremeGpuVideo", "stars": 68, "usage_count": 1, "created_at": "2016-04-01", "updated_at": "2025-09-05"}, {"name": "OpenBW/openbw", "stars": 179, "usage_count": 1, "created_at": "2016-12-21", "updated_at": "2025-01-06"}, {"name": "liulilittle/openppp2", "stars": 127, "usage_count": 1, "created_at": "2023-07-02", "updated_at": "2026-08-14"}, {"name": "WukLab/pDPM", "stars": 52, "usage_count": 1, "created_at": "2020-06-18", "updated_at": "2020-11-02"}, {"name": "peerborough/peerapi", "stars": 69, "usage_count": 1, "created_at": "2016-02-27", "updated_at": "2017-10-30"}, {"name": "newrun/peerapi", "stars": 69, "usage_count": 1, "created_at": "2016-02-27", "updated_at": "2017-10-30"}, {"name": "peersio/peerconnect", "stars": 69, "usage_count": 1, "created_at": "2016-02-27", "updated_at": "2017-10-30"}, {"name": "naver/prism-live-studio", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "radrbiz/radard", "stars": 60, "usage_count": 1, "created_at": "2015-01-19", "updated_at": "2023-12-08"}, {"name": "marekesz/rbg", "stars": 15, "usage_count": 1, "created_at": "2018-11-12", "updated_at": "2025-11-11"}, {"name": "abumq/residue", "stars": 38, "usage_count": 1, "created_at": "2017-07-26", "updated_at": "2025-08-05"}, {"name": "chriskohlhoff/resumable-expressions", "stars": 12, "usage_count": 1, "created_at": "2015-04-02", "updated_at": "2018-06-26"}, {"name": "XRPLF/rippled", "stars": 5120, "usage_count": 1, "created_at": "2011-11-07", "updated_at": "2026-04-03"}, {"name": "SANS3R66/roblox-2016-source-code", "stars": 22, "usage_count": 1, "created_at": "2025-03-27", "updated_at": "2026-06-02"}, {"name": "rpclib/rpclib", "stars": 1826, "usage_count": 1, "created_at": "2015-11-23", "updated_at": "2024-04-09"}, {"name": "nelhage/rules_boost", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "Chukobyte/seika-engine", "stars": 22, "usage_count": 1, "created_at": "2021-04-30", "updated_at": "2022-06-11"}, {"name": "mmycly/serverTwo", "stars": 25, "usage_count": 3, "created_at": "2019-03-21", "updated_at": "2019-03-20"}, {"name": "jeanlemotan/silkopter", "stars": 40, "usage_count": 1, "created_at": "2015-02-12", "updated_at": "2019-01-07"}, {"name": "permutationlock/simple_web_game_server", "stars": 11, "usage_count": 1, "created_at": "2020-10-12", "updated_at": "2025-04-09"}, {"name": "smokenetwork/smoked", "stars": 11, "usage_count": 1, "created_at": "2018-04-11", "updated_at": "2021-06-03"}, {"name": "wells-wei-wei/smplify-x_in_docker", "stars": 22, "usage_count": 4, "created_at": "2020-04-24", "updated_at": "2021-03-29"}, {"name": "chris-hld/ssr", "stars": 14, "usage_count": 1, "created_at": "2015-09-28", "updated_at": "2023-06-06"}, {"name": "steemit/steem", "stars": 1955, "usage_count": 1, "created_at": "2016-03-23", "updated_at": "2026-01-15"}, {"name": "enertial/streamdeck-dcs-interface", "stars": 226, "usage_count": 1, "created_at": "2020-02-08", "updated_at": "2026-06-28"}, {"name": "ErikBongers/streamdeck-lightroom", "stars": 44, "usage_count": 1, "created_at": "2019-12-14", "updated_at": "2024-04-19"}, {"name": "elgatosf/streamdeck-memorygame", "stars": 23, "usage_count": 1, "created_at": "2019-01-08", "updated_at": "2019-11-12"}, {"name": "ZongyiYang/streamdeck-youtube-dl-plugin", "stars": 17, "usage_count": 1, "created_at": "2020-11-24", "updated_at": "2025-01-12"}, {"name": "nyorain/tokonoma", "stars": 37, "usage_count": 1, "created_at": "2018-05-12", "updated_at": "2022-04-26"}, {"name": "Penqle/tortoise-wow", "stars": 319, "usage_count": 1, "created_at": "2025-12-15", "updated_at": "2026-09-09"}, {"name": "mingjitianming/transmit_asio", "stars": 12, "usage_count": 1, "created_at": "2020-11-23", "updated_at": "2021-04-02"}, {"name": "tscmoo/tsc-bw", "stars": 33, "usage_count": 1, "created_at": "2015-01-02", "updated_at": "2017-06-01"}, {"name": "devovh/turtle-core", "stars": 18, "usage_count": 1, "created_at": "2026-04-21", "updated_at": "2026-06-11"}, {"name": "brian8544/turtle-wow", "stars": 77, "usage_count": 4, "created_at": "2024-08-06", "updated_at": "2026-01-06"}, {"name": "Winfidonarleyan/turtle-wow", "stars": 51, "usage_count": 4, "created_at": "2024-08-08", "updated_at": "2024-08-07"}, {"name": "pierr3/vSMR", "stars": 74, "usage_count": 1, "created_at": "2015-04-08", "updated_at": "2024-07-11"}, {"name": "bbc/vc2hqdecode", "stars": 13, "usage_count": 1, "created_at": "2015-11-19", "updated_at": "2020-06-16"}, {"name": "bbc/vc2hqencode", "stars": 14, "usage_count": 1, "created_at": "2015-11-19", "updated_at": "2021-04-08"}, {"name": "julien3/vertxbuspp", "stars": 17, "usage_count": 1, "created_at": "2015-06-18", "updated_at": "2017-04-10"}, {"name": "adamrehn/websocket-server-demo", "stars": 76, "usage_count": 1, "created_at": "2016-12-03", "updated_at": "2020-12-21"}, {"name": "wesnoth/wesnoth", "stars": 6499, "usage_count": 1, "created_at": "2013-04-14", "updated_at": "2026-03-23"}, {"name": "stamp6608/wildfirechat", "stars": 18, "usage_count": 1, "created_at": "2019-06-14", "updated_at": "2023-06-14"}, {"name": "Mrsandman327/windows-book-code-c-", "stars": 73, "usage_count": 3, "created_at": "2019-05-29", "updated_at": "2019-05-29"}, {"name": "Xahau/xahaud", "stars": 40, "usage_count": 1, "created_at": "2022-12-12", "updated_at": "2026-09-09"}, {"name": "XRPL-Labs/xrpld-hooks", "stars": 112, "usage_count": 1, "created_at": "2020-07-24", "updated_at": "2023-07-04"}, {"name": "yandex/yamail", "stars": 13, "usage_count": 1, "created_at": "2014-02-24", "updated_at": "2015-11-23"}, {"name": "zpublic/zpublic", "stars": 55, "usage_count": 1, "created_at": "2012-11-07", "updated_at": "2016-01-18"}];
const contribRows = [{"version": "boost-1.87.0", "person": "olk", "commit_count": 3}, {"version": "boost-1.86.0", "person": "grafikrobot", "commit_count": 6}, {"version": "boost-1.85.0", "person": "grafikrobot", "commit_count": 2}, {"version": "boost-1.85.0", "person": "karcherm", "commit_count": 1}, {"version": "boost-1.84.0", "person": "The Moisrex", "commit_count": 1}, {"version": "boost-1.78.0", "person": "olk", "commit_count": 1}, {"version": "boost-1.77.0", "person": "olk", "commit_count": 2}, {"version": "boost-1.77.0", "person": "Peter Dimov", "commit_count": 2}, {"version": "boost-1.77.0", "person": "Nikita Kniazev", "commit_count": 1}, {"version": "boost-1.77.0", "person": "brad0", "commit_count": 1}, {"version": "boost-1.76.0", "person": "olk", "commit_count": 1}, {"version": "boost-1.76.0", "person": "김남기(Kim Namki)(namk)", "commit_count": 1}, {"version": "boost-1.74.0", "person": "olk", "commit_count": 5}, {"version": "boost-1.74.0", "person": "EGuesnet", "commit_count": 4}, {"version": "boost-1.74.0", "person": "Vinnie Falco", "commit_count": 2}, {"version": "boost-1.73.0", "person": "olk", "commit_count": 1}, {"version": "boost-1.72.0", "person": "Nikita Kniazev", "commit_count": 8}, {"version": "boost-1.72.0", "person": "olk", "commit_count": 4}, {"version": "boost-1.70.0", "person": "olk", "commit_count": 6}, {"version": "boost-1.70.0", "person": "Vinnie Falco", "commit_count": 1}, {"version": "boost-1.70.0", "person": "Lastique", "commit_count": 1}, {"version": "boost-1.67.0", "person": "olk", "commit_count": 6}, {"version": "boost-1.67.0", "person": "Zaytsev Mikhail", "commit_count": 1}, {"version": "boost-1.67.0", "person": "Daniela Engert", "commit_count": 1}, {"version": "boost-1.66.0", "person": "olk", "commit_count": 1}, {"version": "boost-1.65.0", "person": "olk", "commit_count": 1}, {"version": "boost-1.63.0", "person": "olk", "commit_count": 2}, {"version": "boost-1.63.0", "person": "grafikrobot", "commit_count": 2}, {"version": "boost-1.63.0", "person": "Oliver Kowalke", "commit_count": 1}, {"version": "boost-1.62.0", "person": "olk", "commit_count": 3}, {"version": "boost-1.61.0", "person": "Oliver Kowalke", "commit_count": 8}, {"version": "boost-1.61.0", "person": "olk", "commit_count": 2}, {"version": "boost-1.60.0", "person": "Oliver Kowalke", "commit_count": 6}, {"version": "boost-1.60.0", "person": "BenWiederhake", "commit_count": 6}, {"version": "boost-1.60.0", "person": "olk", "commit_count": 2}, {"version": "boost-1.59.0", "person": "Oliver Kowalke", "commit_count": 10}, {"version": "boost-1.59.0", "person": "olk", "commit_count": 2}, {"version": "boost-1.59.0", "person": "nbougalis", "commit_count": 1}, {"version": "boost-1.59.0", "person": "giacomodrago", "commit_count": 1}, {"version": "boost-1.58.0", "person": "Oliver Kowalke", "commit_count": 4}, {"version": "boost-1.58.0", "person": "olk", "commit_count": 4}, {"version": "boost-1.58.0", "person": "jhunold", "commit_count": 1}, {"version": "boost-1.57.0", "person": "Oliver Kowalke", "commit_count": 13}, {"version": "boost-1.57.0", "person": "olk", "commit_count": 4}, {"version": "boost-1.57.0", "person": "jzmaddock", "commit_count": 2}, {"version": "boost-1.57.0", "person": "danieljames", "commit_count": 1}, {"version": "boost-1.57.0", "person": "anttirt", "commit_count": 1}, {"version": "boost-1.56.0", "person": "Oliver Kowalke", "commit_count": 190}, {"version": "boost-1.56.0", "person": "olk", "commit_count": 5}, {"version": "boost-1.56.0", "person": "nat-goodspeed", "commit_count": 2}, {"version": "boost-1.56.0", "person": "Linus Lewandowski", "commit_count": 1}, {"version": "boost-1.55.0", "person": "olk", "commit_count": 29}, {"version": "boost-1.54.0", "person": "olk", "commit_count": 24}, {"version": "boost-1.54.0", "person": "jzmaddock", "commit_count": 2}, {"version": "boost-1.53.0", "person": "olk", "commit_count": 20}, {"version": "boost-1.35.0", "person": "DougGregor", "commit_count": 1}];
const depVersions = ["boost-1.17.0", "boost-1.18.0", "boost-1.19.0", "boost-1.20.0", "boost-1.21.0", "boost-1.22.0", "boost-1.23.0", "boost-1.24.0", "boost-1.25.0", "boost-1.26.0", "boost-1.27.0", "boost-1.28.0", "boost-1.29.0", "boost-1.30.0", "boost-1.31.0", "boost-1.32.0", "boost-1.33.0", "boost-1.34.0", "boost-1.35.0", "boost-1.36.0", "boost-1.37.0", "boost-1.38.0", "boost-1.39.0", "boost-1.40.0", "boost-1.41.0", "boost-1.42.0", "boost-1.43.0", "boost-1.44.0", "boost-1.45.0", "boost-1.46.0", "boost-1.47.0", "boost-1.48.0", "boost-1.49.0", "boost-1.50.0", "boost-1.51.0", "boost-1.52.0", "boost-1.53.0", "boost-1.54.0", "boost-1.55.0", "boost-1.56.0", "boost-1.57.0", "boost-1.58.0", "boost-1.59.0", "boost-1.60.0", "boost-1.61.0", "boost-1.62.0", "boost-1.63.0", "boost-1.64.0", "boost-1.65.0", "boost-1.66.0", "boost-1.67.0", "boost-1.68.0", "boost-1.69.0", "boost-1.70.0", "boost-1.71.0", "boost-1.72.0", "boost-1.73.0", "boost-1.74.0", "boost-1.75.0", "boost-1.76.0", "boost-1.77.0", "boost-1.78.0", "boost-1.79.0", "boost-1.80.0", "boost-1.81.0", "boost-1.82.0", "boost-1.83.0", "boost-1.84.0", "boost-1.85.0", "boost-1.86.0", "boost-1.87.0", "boost-1.88.0", "boost-1.89.0", "boost-1.90.0", "boost-1.91.0", "boost-1.92.0"];
const depFirst = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0];
const depAll = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 7, 7, 7, 0, 0, 0, 0, 0, 0];
const usageYears = ["2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2028"];
const byCreated = [5, 66, 8, 11, 12, 29, 60, 23, 21, 21, 22, 7, 9, 16, 10, 14, 3, 0];
const byUpdated = [24, 0, 4, 5, 47, 19, 51, 25, 27, 19, 20, 16, 21, 22, 12, 13, 11, 1];
const repoCounts = [2, 4, 4, 6, 11, 25, 24, 18, 16, 13, 16, 7, 6, 11, 4, 8, 3, 0];
const commitVersions = ["boost-1.57.0", "boost-1.58.0", "boost-1.59.0", "boost-1.60.0", "boost-1.61.0", "boost-1.62.0", "boost-1.63.0", "boost-1.64.0", "boost-1.65.0", "boost-1.66.0", "boost-1.67.0", "boost-1.68.0", "boost-1.69.0", "boost-1.70.0", "boost-1.71.0", "boost-1.72.0", "boost-1.73.0", "boost-1.74.0", "boost-1.75.0", "boost-1.76.0", "boost-1.77.0", "boost-1.78.0", "boost-1.79.0", "boost-1.80.0", "boost-1.81.0", "boost-1.82.0", "boost-1.83.0", "boost-1.84.0", "boost-1.85.0", "boost-1.86.0", "boost-1.87.0", "boost-1.88.0", "boost-1.89.0", "boost-1.90.0", "boost-1.91.0", "boost-1.92.0"];
const commitCounts = [21, 9, 14, 14, 10, 3, 5, 0, 1, 1, 8, 0, 0, 8, 0, 12, 1, 11, 0, 2, 6, 1, 0, 0, 0, 0, 0, 1, 3, 6, 3, 0, 0, 0, 0, 0];
initDataTable({
data: headersRows, tableId:'table-headers', searchId:'search-headers',
infoId:'info-headers', prevId:'prev-headers', nextId:'next-headers',
defaultSortKey:'count', defaultSortAsc:false,
columns:[{key:'name',type:'text'},{key:'count',type:'number'}],
rowHtml:(r)=>`<tr><td>${esc(r.name || '')}</td><td>${toNumber(r.count).toLocaleString()}</td></tr>`
});
initDataTable({
data: internalRows, tableId:'table-internal', searchId:'search-internal',
infoId:'info-internal', prevId:'prev-internal', nextId:'next-internal',
defaultSortKey:'depth', defaultSortAsc:true,
columns:[{key:'name',type:'text'},{key:'depth',type:'number'},{key:'last_version',type:'text'}],
rowHtml:(r)=>`<tr><td><a href="${esc((r.name || '').replace(/[^\w\-.]/g,'_'))}.html">${esc(r.name || '')}</a></td><td>${toNumber(r.depth)}</td><td>${esc(r.last_version || '')}</td></tr>`
});
initDataTable({
data: externalRows, tableId:'table-external', searchId:'search-external',
infoId:'info-external', prevId:'prev-external', nextId:'next-external',
defaultSortKey:'stars', defaultSortAsc:false,
columns:[{key:'name',type:'text'},{key:'stars',type:'number'},{key:'usage_count',type:'number'},{key:'created_at',type:'date'},{key:'updated_at',type:'date'}],
rowHtml:(r)=>`<tr><td><a href="https://github.com/${esc(r.name || '')}" target="_blank">${esc(r.name || '')}</a></td><td>${toNumber(r.stars).toLocaleString()}</td><td>${toNumber(r.usage_count).toLocaleString()}</td><td>${esc((r.created_at || '').toString().slice(0,10) || 'N/A')}</td><td>${esc((r.updated_at || '').toString().slice(0,10) || 'N/A')}</td></tr>`
});
initDataTable({
data: contribRows, tableId:'table-contrib', searchId:'search-contrib',
infoId:'info-contrib', prevId:'prev-contrib', nextId:'next-contrib',
defaultSortKey:'commit_count', defaultSortAsc:false,
columns:[{key:'version',type:'text'},{key:'person',type:'text'},{key:'commit_count',type:'number'}],
rowHtml:(r)=>`<tr><td>${esc(r.version || '')}</td><td>${esc(r.person || '')}</td><td>${toNumber(r.commit_count).toLocaleString()}</td></tr>`
});
new Chart(document.getElementById('dependentsChart'), {
type:'bar',
data: { labels: depVersions, datasets:[
{label:'Primary Consumers', data: depFirst, backgroundColor:'rgba(59,130,246,0.7)'},
{label:'Transitive Consumers', data: depAll, backgroundColor:'rgba(16,185,129,0.7)'}
] },
options: { responsive:true, maintainAspectRatio:false, scales: { y: { beginAtZero:true } } }
});
new Chart(document.getElementById('usageChart'), {
type:'bar',
data: { labels: usageYears, datasets:[
{type:'line', label:'Created Repositories', data: repoCounts, borderColor:'rgba(255,99,132,0.8)', fill:false, yAxisID:'y1'},
{label:'Header Includes (New Repos)', data: byCreated, backgroundColor:'rgba(54,162,235,0.6)'},
{label:'Header Includes (Updated Repos)', data: byUpdated, backgroundColor:'rgba(75,192,192,0.6)'}
] },
options: { responsive:true, maintainAspectRatio:false, scales: { y: { beginAtZero:true }, y1: { beginAtZero:true, position:'right', grid: { drawOnChartArea:false } } } }
});
new Chart(document.getElementById('commitChart'), {
type:'bar',
data: { labels: commitVersions, datasets:[{ label:'Commit Count', data: commitCounts, backgroundColor:'rgba(255,99,132,0.6)' }] },
options: { responsive:true, maintainAspectRatio:false, scales: { y: { beginAtZero:true } } }
});
</script>
</body>
</html>
You can’t perform that action at this time.
