@reicek/neataptic-ts 0.1.25 → 0.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/.github/copilot-instructions.md +11 -0
  2. package/.github/skills/trace-analyzer-extension/SKILL.md +3 -3
  3. package/.github/skills/trace-analyzer-extension/assets/extension-checklist.md +1 -1
  4. package/.github/skills/trace-analyzer-extension/references/analyzer-extension-workflow.md +1 -1
  5. package/.github/skills/trace-audit-reporting/SKILL.md +3 -3
  6. package/.github/skills/trace-audit-reporting/references/trace-analysis-workflow.md +1 -1
  7. package/package.json +19 -13
  8. package/plans/Flappy_Bird_Folder_Documentation_Pass.md +4 -4
  9. package/plans/README.md +24 -0
  10. package/plans/Roadmap.md +62 -40
  11. package/plans/analyze-trace-solid-split.plans.md +66 -0
  12. package/plans/architecture-solid-split.plans.md +9 -15
  13. package/plans/asciiMaze-typescript-repair.plans.md +1 -1
  14. package/plans/generate-docs-solid-split.plans.md +87 -0
  15. package/plans/methods-docs.plans.md +25 -1
  16. package/plans/methods-solid-split.plans.md +14 -14
  17. package/plans/neat-docs.plans.md +9 -1
  18. package/plans/neat-test-surface-repair.plans.md +1 -1
  19. package/plans/render-docs-html-solid-split.plans.md +68 -0
  20. package/plans/src-no-explicit-any-cleanup.plans.md +1 -1
  21. package/plans/utils-docs.plans.md +6 -1
  22. package/scripts/analyze-trace/analyze-trace.analysis.ts +479 -0
  23. package/scripts/analyze-trace/analyze-trace.constants.ts +35 -0
  24. package/scripts/analyze-trace/analyze-trace.io.ts +69 -0
  25. package/scripts/analyze-trace/analyze-trace.report.ts +100 -0
  26. package/scripts/analyze-trace/analyze-trace.shared.ts +116 -0
  27. package/scripts/analyze-trace/analyze-trace.ts +45 -0
  28. package/scripts/analyze-trace/analyze-trace.types.ts +72 -0
  29. package/scripts/assets/theme.css +80 -23
  30. package/scripts/copy-examples.ts +239 -0
  31. package/scripts/export-onnx.ts +223 -0
  32. package/scripts/generate-bench-tables.ts +378 -37
  33. package/scripts/generate-docs/generate-docs.constants.ts +107 -0
  34. package/scripts/generate-docs/generate-docs.order.ts +355 -0
  35. package/scripts/generate-docs/generate-docs.state.ts +31 -0
  36. package/scripts/generate-docs/generate-docs.targets.ts +165 -0
  37. package/scripts/generate-docs/generate-docs.ts +63 -0
  38. package/scripts/generate-docs/generate-docs.types.ts +112 -0
  39. package/scripts/generate-docs/output/generate-docs.output.folder-index.utils.ts +167 -0
  40. package/scripts/generate-docs/output/generate-docs.output.ordering.utils.ts +353 -0
  41. package/scripts/generate-docs/output/generate-docs.output.readme.utils.ts +420 -0
  42. package/scripts/generate-docs/output/generate-docs.output.ts +123 -0
  43. package/scripts/generate-docs/output/generate-docs.output.warnings.utils.ts +219 -0
  44. package/scripts/generate-docs/symbols/generate-docs.symbols.collection.utils.ts +365 -0
  45. package/scripts/generate-docs/symbols/generate-docs.symbols.jsdoc.utils.ts +373 -0
  46. package/scripts/generate-docs/symbols/generate-docs.symbols.normalize.utils.ts +155 -0
  47. package/scripts/generate-docs/symbols/generate-docs.symbols.render.utils.ts +149 -0
  48. package/scripts/generate-docs/symbols/generate-docs.symbols.signature.utils.ts +289 -0
  49. package/scripts/generate-docs/symbols/generate-docs.symbols.ts +11 -0
  50. package/scripts/mermaid-cli.mjs +102 -22
  51. package/scripts/mermaid-cli.ts +736 -0
  52. package/scripts/render-docs-html/render-docs-html.assets.ts +54 -0
  53. package/scripts/render-docs-html/render-docs-html.mermaid.ts +245 -0
  54. package/scripts/{render-docs-html.sidebar.ts → render-docs-html/render-docs-html.navigation.ts} +141 -144
  55. package/scripts/render-docs-html/render-docs-html.pages.ts +333 -0
  56. package/scripts/render-docs-html/render-docs-html.shared.ts +333 -0
  57. package/scripts/render-docs-html/render-docs-html.types.ts +42 -0
  58. package/scripts/render-docs-html.ts +23 -587
  59. package/scripts/run-docs.ts +238 -0
  60. package/scripts/write-dist-docs-pkg.ts +40 -0
  61. package/src/README.md +75 -75
  62. package/src/architecture/connection/README.md +5 -5
  63. package/src/architecture/layer/README.md +508 -508
  64. package/src/architecture/network/README.md +1458 -1458
  65. package/src/architecture/network/activate/README.md +694 -694
  66. package/src/architecture/network/bootstrap/README.md +77 -77
  67. package/src/architecture/network/connect/README.md +74 -74
  68. package/src/architecture/network/deterministic/README.md +135 -135
  69. package/src/architecture/network/evolve/README.md +364 -364
  70. package/src/architecture/network/gating/README.md +130 -130
  71. package/src/architecture/network/genetic/README.md +399 -399
  72. package/src/architecture/network/mutate/README.md +897 -897
  73. package/src/architecture/network/onnx/README.md +720 -720
  74. package/src/architecture/network/onnx/export/README.md +728 -728
  75. package/src/architecture/network/onnx/export/layers/README.md +450 -450
  76. package/src/architecture/network/onnx/import/README.md +618 -618
  77. package/src/architecture/network/onnx/schema/README.md +32 -32
  78. package/src/architecture/network/prune/README.md +245 -245
  79. package/src/architecture/network/remove/README.md +135 -135
  80. package/src/architecture/network/runtime/README.md +106 -106
  81. package/src/architecture/network/serialize/README.md +542 -542
  82. package/src/architecture/network/slab/README.md +608 -608
  83. package/src/architecture/network/standalone/README.md +212 -212
  84. package/src/architecture/network/stats/README.md +84 -84
  85. package/src/architecture/network/topology/README.md +465 -465
  86. package/src/architecture/network/training/README.md +200 -200
  87. package/src/architecture/node/README.md +5 -5
  88. package/src/architecture/nodePool/README.md +14 -14
  89. package/src/methods/README.md +99 -99
  90. package/src/methods/activation/README.md +189 -189
  91. package/src/methods/cost/README.md +131 -131
  92. package/src/methods/rate/README.md +86 -86
  93. package/src/multithreading/README.md +77 -77
  94. package/src/multithreading/workers/browser/README.md +8 -8
  95. package/src/multithreading/workers/node/README.md +8 -8
  96. package/src/neat/README.md +148 -148
  97. package/src/neat/adaptive/README.md +120 -120
  98. package/src/neat/adaptive/acceptance/README.md +40 -40
  99. package/src/neat/adaptive/complexity/README.md +137 -137
  100. package/src/neat/adaptive/core/README.md +197 -197
  101. package/src/neat/adaptive/lineage/README.md +90 -90
  102. package/src/neat/adaptive/mutation/README.md +284 -284
  103. package/src/neat/compat/README.md +43 -43
  104. package/src/neat/compat/core/README.md +90 -90
  105. package/src/neat/diversity/README.md +35 -35
  106. package/src/neat/diversity/core/README.md +88 -88
  107. package/src/neat/evaluate/README.md +85 -85
  108. package/src/neat/evaluate/auto-distance/README.md +75 -75
  109. package/src/neat/evaluate/entropy-compat/README.md +37 -37
  110. package/src/neat/evaluate/entropy-sharing/README.md +43 -43
  111. package/src/neat/evaluate/fitness/README.md +23 -23
  112. package/src/neat/evaluate/novelty/README.md +120 -120
  113. package/src/neat/evaluate/objectives/README.md +17 -17
  114. package/src/neat/evaluate/shared/README.md +94 -94
  115. package/src/neat/evolve/README.md +96 -96
  116. package/src/neat/evolve/adaptive/README.md +60 -60
  117. package/src/neat/evolve/objectives/README.md +63 -63
  118. package/src/neat/evolve/offspring/README.md +56 -56
  119. package/src/neat/evolve/population/README.md +171 -171
  120. package/src/neat/evolve/runtime/README.md +79 -79
  121. package/src/neat/evolve/speciation/README.md +74 -74
  122. package/src/neat/evolve/warnings/README.md +10 -10
  123. package/src/neat/export/README.md +114 -114
  124. package/src/neat/helpers/README.md +50 -50
  125. package/src/neat/init/README.md +9 -9
  126. package/src/neat/lineage/core/README.md +101 -101
  127. package/src/neat/multiobjective/category/README.md +74 -74
  128. package/src/neat/multiobjective/crowding/README.md +272 -272
  129. package/src/neat/multiobjective/dominance/README.md +171 -171
  130. package/src/neat/multiobjective/fronts/README.md +68 -68
  131. package/src/neat/multiobjective/metrics/README.md +43 -43
  132. package/src/neat/multiobjective/objectives/README.md +31 -31
  133. package/src/neat/multiobjective/shared/README.md +27 -27
  134. package/src/neat/mutation/README.md +97 -97
  135. package/src/neat/mutation/add-conn/README.md +115 -115
  136. package/src/neat/mutation/add-node/README.md +126 -126
  137. package/src/neat/mutation/flow/README.md +149 -149
  138. package/src/neat/mutation/repair/README.md +185 -185
  139. package/src/neat/mutation/select/README.md +117 -117
  140. package/src/neat/mutation/shared/README.md +32 -32
  141. package/src/neat/objectives/README.md +25 -25
  142. package/src/neat/objectives/core/README.md +67 -67
  143. package/src/neat/pruning/README.md +40 -40
  144. package/src/neat/pruning/core/README.md +171 -171
  145. package/src/neat/pruning/facade/README.md +32 -32
  146. package/src/neat/rng/README.md +104 -104
  147. package/src/neat/rng/core/README.md +137 -137
  148. package/src/neat/rng/facade/README.md +50 -50
  149. package/src/neat/selection/README.md +111 -111
  150. package/src/neat/selection/core/README.md +227 -227
  151. package/src/neat/selection/facade/README.md +61 -61
  152. package/src/neat/shared/README.md +163 -163
  153. package/src/neat/speciation/README.md +31 -31
  154. package/src/neat/speciation/threshold/README.md +35 -35
  155. package/src/neat/species/README.md +25 -25
  156. package/src/neat/species/core/README.md +20 -20
  157. package/src/neat/species/core/shared/README.md +18 -18
  158. package/src/neat/species/history/context/README.md +22 -22
  159. package/src/neat/telemetry/accessors/README.md +58 -58
  160. package/src/neat/telemetry/exports/README.md +233 -233
  161. package/src/neat/telemetry/facade/README.md +252 -252
  162. package/src/neat/telemetry/facade/archive/README.md +57 -57
  163. package/src/neat/telemetry/facade/buffer/README.md +43 -43
  164. package/src/neat/telemetry/facade/lineage/README.md +12 -12
  165. package/src/neat/telemetry/facade/objectives/README.md +44 -44
  166. package/src/neat/telemetry/facade/runtime/README.md +26 -26
  167. package/src/neat/telemetry/facade/species/README.md +27 -27
  168. package/src/neat/telemetry/metrics/README.md +696 -696
  169. package/src/neat/telemetry/recorder/README.md +57 -57
  170. package/src/neat/telemetry/types/README.md +32 -32
  171. package/src/neat/topology-intent/README.md +75 -75
  172. package/src/utils/README.md +193 -193
  173. package/test/examples/asciiMaze/browser-entry/README.md +92 -92
  174. package/test/examples/asciiMaze/dashboardManager/README.md +109 -109
  175. package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +28 -28
  176. package/test/examples/asciiMaze/evolutionEngine/README.md +1527 -1527
  177. package/test/examples/asciiMaze/mazeMovement/README.md +105 -105
  178. package/test/examples/asciiMaze/mazeMovement/finalization/README.md +16 -16
  179. package/test/examples/asciiMaze/mazeMovement/policy/README.md +57 -57
  180. package/test/examples/asciiMaze/mazeMovement/runtime/README.md +52 -52
  181. package/test/examples/asciiMaze/mazeMovement/shaping/README.md +46 -46
  182. package/test/examples/flappy_bird/browser-entry/README.md +508 -508
  183. package/test/examples/flappy_bird/browser-entry/host/README.md +101 -101
  184. package/test/examples/flappy_bird/browser-entry/host/resize/README.md +144 -144
  185. package/test/examples/flappy_bird/browser-entry/network-view/README.md +194 -194
  186. package/test/examples/flappy_bird/browser-entry/playback/README.md +278 -278
  187. package/test/examples/flappy_bird/browser-entry/playback/background/README.md +129 -129
  188. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +502 -502
  189. package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +139 -139
  190. package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +10 -10
  191. package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +43 -43
  192. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +30 -30
  193. package/test/examples/flappy_bird/browser-entry/runtime/README.md +59 -59
  194. package/test/examples/flappy_bird/browser-entry/visualization/README.md +276 -276
  195. package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +16 -16
  196. package/test/examples/flappy_bird/constants/README.md +1070 -1070
  197. package/test/examples/flappy_bird/environment/README.md +22 -22
  198. package/test/examples/flappy_bird/evaluation/README.md +32 -32
  199. package/test/examples/flappy_bird/evaluation/rollout/README.md +141 -141
  200. package/test/examples/flappy_bird/flappy-evolution-worker/README.md +425 -425
  201. package/test/examples/flappy_bird/simulation-shared/README.md +170 -170
  202. package/test/examples/flappy_bird/simulation-shared/observation/README.md +109 -109
  203. package/test/examples/flappy_bird/trainer/README.md +325 -325
  204. package/test/examples/flappy_bird/trainer/evaluation/README.md +74 -74
  205. package/scripts/analyze-trace.ts +0 -590
  206. package/scripts/copy-examples.mjs +0 -114
  207. package/scripts/export-onnx.mjs +0 -86
  208. package/scripts/generate-bench-tables.mjs +0 -182
  209. package/scripts/generate-docs.ts +0 -2900
  210. package/scripts/write-dist-docs-pkg.mjs +0 -16
@@ -1,86 +0,0 @@
1
- /**
2
- * Minimal CLI to export a JSON ONNX model from a serialized Network state.
3
- * Usage (Node >=20):
4
- * node scripts/export-onnx.mjs --in network.json --out model.onnx.json [--metadata] [--batch] [--legacy] [--partial] [--mixed]
5
- *
6
- * This is a lightweight helper; for production pipelines integrate directly with the API.
7
- */
8
- import fs from 'fs';
9
- import path from 'path';
10
- import { fileURLToPath, pathToFileURL } from 'url';
11
-
12
- const __filename = fileURLToPath(import.meta.url);
13
- const __dirname = path.dirname(__filename);
14
-
15
- const args = process.argv.slice(2);
16
- const arg = (name, def) => {
17
- const idx = args.indexOf(name);
18
- return idx >= 0 ? args[idx + 1] : def;
19
- };
20
- const flag = (name) => args.includes(name);
21
-
22
- if (flag('--help') || flag('-h')) {
23
- console.log(
24
- `Usage: node scripts/export-onnx.mjs --in network.json --out model.onnx.json [--metadata] [--batch] [--legacy] [--partial] [--mixed]\n`,
25
- );
26
- process.exit(0);
27
- }
28
-
29
- const inputFile = arg('--in');
30
- const outputFile = arg('--out');
31
- if (!inputFile || !outputFile) {
32
- console.error('Error: --in and --out are required.');
33
- process.exit(1);
34
- }
35
-
36
- const includeMetadata = flag('--metadata');
37
- const batchDimension = flag('--batch');
38
- const legacyNodeOrdering = flag('--legacy');
39
- const allowPartialConnectivity = flag('--partial');
40
- const allowMixedActivations = flag('--mixed');
41
-
42
- // Dynamic import of built library (dist) in ESM context
43
- async function loadDist() {
44
- // Use pathToFileURL to avoid Windows path issues
45
- const onnxMod = await import(
46
- pathToFileURL(path.resolve('dist', 'architecture', 'onnx.js')).href
47
- ).catch(async () => {
48
- // Fallback to network/network.onnx if direct path changed
49
- return import(
50
- pathToFileURL(
51
- path.resolve('dist', 'architecture', 'network', 'network.onnx.js'),
52
- ).href
53
- );
54
- });
55
- // network default export
56
- const netMod = await import(
57
- pathToFileURL(path.resolve('dist', 'architecture', 'network.js')).href
58
- );
59
- const Network = netMod.default;
60
- const { exportToONNX, importFromONNX } = onnxMod; // importFromONNX unused but re-exported for completeness
61
- return { Network, exportToONNX, importFromONNX };
62
- }
63
-
64
- (async () => {
65
- try {
66
- const { Network, exportToONNX } = await loadDist();
67
- const raw = JSON.parse(fs.readFileSync(path.resolve(inputFile), 'utf8'));
68
- const net = Network.fromJSON(raw);
69
- const onnx = exportToONNX(net, {
70
- includeMetadata,
71
- batchDimension,
72
- legacyNodeOrdering,
73
- allowPartialConnectivity,
74
- allowMixedActivations,
75
- });
76
- fs.writeFileSync(
77
- path.resolve(outputFile),
78
- JSON.stringify(onnx, null, 2),
79
- 'utf8',
80
- );
81
- console.log(`ONNX JSON written to ${outputFile}`);
82
- } catch (err) {
83
- console.error('Export failed:', err.message || err);
84
- process.exit(1);
85
- }
86
- })();
@@ -1,182 +0,0 @@
1
- /**
2
- * generate-bench-tables.mjs (ESM version)
3
- * Emits markdown tables derived from test/benchmarks/benchmark.results.json.
4
- */
5
- import fs from 'fs';
6
- import path from 'path';
7
-
8
- function cell(v, w) {
9
- const s = String(v ?? '');
10
- return s.length >= w ? s.slice(0, w) : s + ' '.repeat(w - s.length);
11
- }
12
- function fmtNum(n, digits = 4) {
13
- if (typeof n !== 'number' || !isFinite(n)) return '';
14
- return n.toFixed(digits).replace(/0+$/, '').replace(/\.$/, '');
15
- }
16
- function loadArtifact() {
17
- const file = path.resolve('test/benchmarks/benchmark.results.json');
18
- if (!fs.existsSync(file)) {
19
- console.error('[bench:tables] Artifact not found:', file);
20
- return null;
21
- }
22
- try {
23
- return JSON.parse(fs.readFileSync(file, 'utf8'));
24
- } catch (e) {
25
- console.error('[bench:tables] Parse error', e);
26
- return null;
27
- }
28
- }
29
- function normalizeAggregated(artifact) {
30
- const raw = artifact.aggregated;
31
- if (Array.isArray(raw)) {
32
- const out = { src: {}, dist: {} };
33
- for (const entry of raw) {
34
- const mode = entry.mode;
35
- const sizeKey = String(entry.size);
36
- out[mode] = out[mode] || {};
37
- out[mode][sizeKey] = out[mode][sizeKey] || {}; // scenario bucket
38
- out[mode][sizeKey].all = out[mode][sizeKey].all || {};
39
- const metrics = [
40
- 'buildMs',
41
- 'fwdAvgMs',
42
- 'bytesPerConn',
43
- 'heapUsed',
44
- 'rss',
45
- ];
46
- out[mode][sizeKey].all = out[mode][sizeKey].all || {};
47
- for (const m of metrics) {
48
- const meanKey = m + 'Mean';
49
- if (meanKey in entry) {
50
- out[mode][sizeKey].all[m] = { mean: entry[meanKey] };
51
- }
52
- }
53
- }
54
- return out;
55
- }
56
- return raw || { src: {}, dist: {} };
57
- }
58
- function buildVariantDeltaTable(artifact) {
59
- const agg = normalizeAggregated(artifact);
60
- const sizes = new Set(Object.keys(agg.src || {}));
61
- const ordered = Array.from(sizes).sort((a, b) => parseInt(a) - parseInt(b));
62
- const rows = [];
63
- rows.push(
64
- 'Size Metric Src Mean Dist Mean Δ Abs Δ % Flag Result',
65
- );
66
- rows.push(
67
- '------ ----------------- ------------- ------------- ------------- ---------- ------------- ------------------------------------------------------------',
68
- );
69
- const metrics = ['buildMs', 'fwdAvgMs', 'bytesPerConn'];
70
- for (const size of ordered) {
71
- for (const metric of metrics) {
72
- const srcAgg = agg.src?.[size]?.all?.[metric];
73
- const distAgg = agg.dist?.[size]?.all?.[metric];
74
- const sMean = srcAgg?.mean;
75
- const dMean = distAgg?.mean;
76
- let dAbs, dPct;
77
- if (typeof sMean === 'number' && typeof dMean === 'number') {
78
- dAbs = dMean - sMean;
79
- dPct = sMean === 0 ? undefined : (dAbs / sMean) * 100;
80
- }
81
- const threshold = metric === 'bytesPerConn' ? 3 : 5;
82
- const flag =
83
- typeof dPct === 'number'
84
- ? Math.abs(dPct) > threshold
85
- ? '(REG)'
86
- : 'OK'
87
- : '';
88
- const note =
89
- metric === 'bytesPerConn'
90
- ? flag === '(REG)'
91
- ? 'Dist bytes divergence'
92
- : 'Parity'
93
- : flag === '(REG)'
94
- ? `Dist ${dAbs > 0 ? 'slower' : 'faster'} ${metric}`
95
- : 'Parity';
96
- rows.push(
97
- cell(size, 6) +
98
- ' ' +
99
- cell(metric + 'Mean', 17) +
100
- ' ' +
101
- cell(typeof sMean === 'number' ? fmtNum(sMean, 4) : '', 13) +
102
- ' ' +
103
- cell(typeof dMean === 'number' ? fmtNum(dMean, 4) : '', 13) +
104
- ' ' +
105
- cell(
106
- typeof dAbs === 'number'
107
- ? (dAbs >= 0 ? '+' : '') + fmtNum(dAbs, 4)
108
- : '',
109
- 13,
110
- ) +
111
- ' ' +
112
- cell(
113
- typeof dPct === 'number'
114
- ? (dPct >= 0 ? '+' : '') + fmtNum(dPct, 2)
115
- : '',
116
- 10,
117
- ) +
118
- ' ' +
119
- cell(flag, 13) +
120
- ' ' +
121
- note,
122
- );
123
- }
124
- }
125
- return rows.join('\n');
126
- }
127
- function buildHeapTable(artifact) {
128
- const agg = normalizeAggregated(artifact);
129
- const sizes = new Set(Object.keys(agg.src || {}));
130
- const ordered = Array.from(sizes).sort((a, b) => parseInt(a) - parseInt(b));
131
- const rows = [];
132
- rows.push(
133
- 'Size Metric Src Bytes Dist Bytes Src MB Dist MB Δ Bytes Δ % Note',
134
- );
135
- rows.push(
136
- '------ -------------- ------------ ------------ --------- --------- ----------- ------- -------------------------------------------------',
137
- );
138
- for (const size of ordered) {
139
- for (const metric of ['heapUsed', 'rss']) {
140
- const s = agg.src?.[size]?.all?.[metric]?.mean;
141
- const d = agg.dist?.[size]?.all?.[metric]?.mean;
142
- if (typeof s !== 'number' || typeof d !== 'number') continue;
143
- const dBytes = d - s;
144
- const dPct = s === 0 ? 0 : (dBytes / s) * 100;
145
- rows.push(
146
- cell(size, 6) +
147
- ' ' +
148
- cell(metric + 'Mean', 14) +
149
- ' ' +
150
- cell(s, 12) +
151
- ' ' +
152
- cell(d, 12) +
153
- ' ' +
154
- cell((s / 1048576).toFixed(1), 9) +
155
- ' ' +
156
- cell((d / 1048576).toFixed(1), 9) +
157
- ' ' +
158
- cell((dBytes >= 0 ? '+' : '') + dBytes, 11) +
159
- ' ' +
160
- cell((dPct >= 0 ? '+' : '') + dPct.toFixed(2), 7) +
161
- ' ' +
162
- 'Informational',
163
- );
164
- }
165
- }
166
- return rows.join('\n');
167
- }
168
- function main() {
169
- const artifact = loadArtifact();
170
- if (!artifact) process.exit(1);
171
- const out = [
172
- '```',
173
- buildVariantDeltaTable(artifact),
174
- '```',
175
- '',
176
- '```',
177
- buildHeapTable(artifact),
178
- '```',
179
- ].join('\n');
180
- console.log(out);
181
- }
182
- main();