@robosystems/report-components 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +39 -0
- package/dist/adapters/cypher.d.ts +21 -0
- package/dist/adapters/cypher.d.ts.map +1 -0
- package/dist/adapters/cypher.js +9 -0
- package/dist/adapters/cypher.js.map +1 -0
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/trig.d.ts +7 -0
- package/dist/adapters/trig.d.ts.map +1 -0
- package/dist/adapters/trig.js +183 -0
- package/dist/adapters/trig.js.map +1 -0
- package/dist/adapters/types.d.ts +16 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/components/FactInspector.d.ts +11 -0
- package/dist/components/FactInspector.d.ts.map +1 -0
- package/dist/components/FactInspector.js +79 -0
- package/dist/components/FactInspector.js.map +1 -0
- package/dist/components/ReportView.d.ts +9 -0
- package/dist/components/ReportView.d.ts.map +1 -0
- package/dist/components/ReportView.js +51 -0
- package/dist/components/ReportView.js.map +1 -0
- package/dist/components/StatementTable.d.ts +15 -0
- package/dist/components/StatementTable.d.ts.map +1 -0
- package/dist/components/StatementTable.js +86 -0
- package/dist/components/StatementTable.js.map +1 -0
- package/dist/constants.d.ts +71 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +115 -0
- package/dist/constants.js.map +1 -0
- package/dist/format.d.ts +17 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +34 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/model.d.ts +148 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +15 -0
- package/dist/model.js.map +1 -0
- package/dist/project.d.ts +39 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +201 -0
- package/dist/project.js.map +1 -0
- package/package.json +90 -0
package/dist/project.js
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reconstruction: a `NormalizedReport` → renderable `Statement`s.
|
|
3
|
+
*
|
|
4
|
+
* This is the source-agnostic half of the library — the part that is identical
|
|
5
|
+
* for every adapter. It is a TypeScript port of the RoboSystems platform's
|
|
6
|
+
* DataBook converter:
|
|
7
|
+
*
|
|
8
|
+
* - **presentation walk** — a post-order DFS of the presentation network, so a
|
|
9
|
+
* total renders *after* its components (cash + receivables … then *Assets,
|
|
10
|
+
* Current*; the section subtotals last). `order` is the flattened post-order
|
|
11
|
+
* position; `depth` is the tree depth (drives indentation).
|
|
12
|
+
* - **subtotal detection** — a concept is a subtotal iff it is a *calculation
|
|
13
|
+
* parent*. A presentation leaf can still be a subtotal (Gross Profit is a
|
|
14
|
+
* presentation sibling but a calculation parent), so bolding off the calc
|
|
15
|
+
* tree marks exactly the right rows.
|
|
16
|
+
* - **table projection** — collect a block's facts by `factSet`, key by
|
|
17
|
+
* element, derive period columns from the facts themselves, lay rows out in
|
|
18
|
+
* presentation order.
|
|
19
|
+
*/
|
|
20
|
+
import { BLOCK_ORDER, BLOCK_TITLES, humanize, qname } from './constants';
|
|
21
|
+
import { formatDate } from './format';
|
|
22
|
+
function fallbackElement(id) {
|
|
23
|
+
return {
|
|
24
|
+
id,
|
|
25
|
+
qname: qname(id),
|
|
26
|
+
label: humanize(id),
|
|
27
|
+
balance: null,
|
|
28
|
+
periodType: null,
|
|
29
|
+
abstract: false,
|
|
30
|
+
monetary: false,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Post-order the presentation arcs of one structure → `{element: {order, depth}}`.
|
|
35
|
+
* Roots (a `from` that is never a `to`) are visited by their subtree's leading
|
|
36
|
+
* arc order, so a balance sheet's roots (Assets, then Liabilities and Equity)
|
|
37
|
+
* come out in the right sequence.
|
|
38
|
+
*/
|
|
39
|
+
export function presentationOrder(model, structureId) {
|
|
40
|
+
const children = new Map();
|
|
41
|
+
const froms = new Set();
|
|
42
|
+
const tos = new Set();
|
|
43
|
+
for (const assoc of model.presAssociations) {
|
|
44
|
+
if (assoc.structure !== structureId)
|
|
45
|
+
continue;
|
|
46
|
+
const kids = children.get(assoc.parent) ?? [];
|
|
47
|
+
kids.push([assoc.order, assoc.child]);
|
|
48
|
+
children.set(assoc.parent, kids);
|
|
49
|
+
froms.add(assoc.parent);
|
|
50
|
+
tos.add(assoc.child);
|
|
51
|
+
}
|
|
52
|
+
for (const kids of children.values()) {
|
|
53
|
+
kids.sort((a, b) => a[0] - b[0]);
|
|
54
|
+
}
|
|
55
|
+
const out = new Map();
|
|
56
|
+
const seen = new Set();
|
|
57
|
+
let counter = 0;
|
|
58
|
+
const walk = (node, depth) => {
|
|
59
|
+
if (seen.has(node))
|
|
60
|
+
return;
|
|
61
|
+
seen.add(node);
|
|
62
|
+
for (const [, child] of children.get(node) ?? []) {
|
|
63
|
+
walk(child, depth + 1);
|
|
64
|
+
}
|
|
65
|
+
out.set(node, { order: counter, depth });
|
|
66
|
+
counter += 1;
|
|
67
|
+
};
|
|
68
|
+
const rootKey = (root) => {
|
|
69
|
+
const kids = children.get(root);
|
|
70
|
+
return kids && kids.length ? kids[0][0] : 0;
|
|
71
|
+
};
|
|
72
|
+
const roots = [...froms].filter((f) => !tos.has(f)).sort((a, b) => rootKey(a) - rootKey(b));
|
|
73
|
+
for (const root of roots)
|
|
74
|
+
walk(root, 0);
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
/** Concepts that are calculation parents — the authoritative subtotal set. */
|
|
78
|
+
export function calcSubtotals(model) {
|
|
79
|
+
const out = new Set();
|
|
80
|
+
for (const assoc of model.calcAssociations)
|
|
81
|
+
out.add(assoc.parent);
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
function structureForBlock(model, blockType) {
|
|
85
|
+
return model.structures.find((s) => s.blockType === blockType) ?? null;
|
|
86
|
+
}
|
|
87
|
+
function columnLabel(period) {
|
|
88
|
+
return formatDate(period.end);
|
|
89
|
+
}
|
|
90
|
+
/** Period columns derived from the facts in one block, keyed and sorted by end. */
|
|
91
|
+
function deriveColumns(model, facts) {
|
|
92
|
+
const byEnd = new Map();
|
|
93
|
+
for (const fact of facts) {
|
|
94
|
+
const period = model.periods[fact.period];
|
|
95
|
+
if (!period || !period.end)
|
|
96
|
+
continue;
|
|
97
|
+
const existing = byEnd.get(period.end);
|
|
98
|
+
// Prefer a duration as the column representative — it carries the span.
|
|
99
|
+
if (!existing || (existing.type === 'instant' && period.type === 'duration')) {
|
|
100
|
+
byEnd.set(period.end, period);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return [...byEnd.values()]
|
|
104
|
+
.sort((a, b) => {
|
|
105
|
+
const aStart = a.startDate ?? a.end;
|
|
106
|
+
const bStart = b.startDate ?? b.end;
|
|
107
|
+
return aStart.localeCompare(bStart) || a.end.localeCompare(b.end);
|
|
108
|
+
})
|
|
109
|
+
.map((period) => ({ key: period.end, label: columnLabel(period), period }));
|
|
110
|
+
}
|
|
111
|
+
function buildStatement(model, ib, subtotals) {
|
|
112
|
+
const structure = structureForBlock(model, ib.blockType);
|
|
113
|
+
const order = structure ? presentationOrder(model, structure.id) : new Map();
|
|
114
|
+
const facts = model.facts.filter((f) => f.factSet !== null && f.factSet === ib.factSet);
|
|
115
|
+
const columns = deriveColumns(model, facts);
|
|
116
|
+
const colIndex = new Map(columns.map((c, i) => [c.key, i]));
|
|
117
|
+
const cellsByElement = new Map();
|
|
118
|
+
for (const fact of facts) {
|
|
119
|
+
const period = model.periods[fact.period];
|
|
120
|
+
if (!period)
|
|
121
|
+
continue;
|
|
122
|
+
const idx = colIndex.get(period.end);
|
|
123
|
+
if (idx === undefined)
|
|
124
|
+
continue;
|
|
125
|
+
let cells = cellsByElement.get(fact.element);
|
|
126
|
+
if (!cells) {
|
|
127
|
+
cells = columns.map(() => ({ value: null, fact: null }));
|
|
128
|
+
cellsByElement.set(fact.element, cells);
|
|
129
|
+
}
|
|
130
|
+
cells[idx] = { value: fact.value, fact };
|
|
131
|
+
}
|
|
132
|
+
const rows = [...cellsByElement.keys()]
|
|
133
|
+
.map((id) => {
|
|
134
|
+
const entry = order.get(id);
|
|
135
|
+
return {
|
|
136
|
+
id,
|
|
137
|
+
order: entry ? entry.order : Number.MAX_SAFE_INTEGER,
|
|
138
|
+
depth: entry ? entry.depth : 0,
|
|
139
|
+
};
|
|
140
|
+
})
|
|
141
|
+
.sort((a, b) => a.order - b.order || a.id.localeCompare(b.id))
|
|
142
|
+
.map(({ id, depth }) => ({
|
|
143
|
+
element: model.elements[id] ?? fallbackElement(id),
|
|
144
|
+
depth,
|
|
145
|
+
isSubtotal: subtotals.has(id),
|
|
146
|
+
cells: cellsByElement.get(id),
|
|
147
|
+
}));
|
|
148
|
+
return {
|
|
149
|
+
ib,
|
|
150
|
+
blockType: ib.blockType,
|
|
151
|
+
title: BLOCK_TITLES[ib.blockType] ?? ib.label ?? ib.blockType,
|
|
152
|
+
structureName: structure?.structureName ?? ib.label ?? null,
|
|
153
|
+
columns,
|
|
154
|
+
rows,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/** Reconstruct every statement in the report, in canonical block order. */
|
|
158
|
+
export function buildStatements(model) {
|
|
159
|
+
const subtotals = calcSubtotals(model);
|
|
160
|
+
return [...model.informationBlocks]
|
|
161
|
+
.sort((a, b) => (BLOCK_ORDER[a.blockType] ?? 99) - (BLOCK_ORDER[b.blockType] ?? 99) ||
|
|
162
|
+
a.blockType.localeCompare(b.blockType))
|
|
163
|
+
.map((ib) => buildStatement(model, ib, subtotals));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Foot a subtotal live: sum its calculation children (× weight) and compare to
|
|
167
|
+
* its reported value, e.g. `13,550 + 900 = 14,450 ✓`. Returns `null` when the
|
|
168
|
+
* element is not a calculation parent (nothing to foot).
|
|
169
|
+
*/
|
|
170
|
+
export function footCheck(model, statement, elementId, columnIndex) {
|
|
171
|
+
const kids = model.calcAssociations.filter((a) => a.parent === elementId);
|
|
172
|
+
if (!kids.length)
|
|
173
|
+
return null;
|
|
174
|
+
const valueOf = (id) => {
|
|
175
|
+
const row = statement.rows.find((r) => r.element.id === id);
|
|
176
|
+
return row ? (row.cells[columnIndex]?.value ?? null) : null;
|
|
177
|
+
};
|
|
178
|
+
const terms = kids
|
|
179
|
+
.slice()
|
|
180
|
+
.sort((a, b) => a.order - b.order)
|
|
181
|
+
.map((a) => ({
|
|
182
|
+
element: model.elements[a.child] ?? fallbackElement(a.child),
|
|
183
|
+
weight: a.weight,
|
|
184
|
+
value: valueOf(a.child),
|
|
185
|
+
}));
|
|
186
|
+
const present = terms.filter((t) => t.value !== null);
|
|
187
|
+
const expected = present.length
|
|
188
|
+
? present.reduce((sum, t) => sum + t.value * t.weight, 0)
|
|
189
|
+
: null;
|
|
190
|
+
const actual = valueOf(elementId);
|
|
191
|
+
const ok = expected !== null && actual !== null && Math.abs(expected - actual) < 0.005;
|
|
192
|
+
return {
|
|
193
|
+
element: model.elements[elementId] ?? fallbackElement(elementId),
|
|
194
|
+
columnIndex,
|
|
195
|
+
terms,
|
|
196
|
+
expected,
|
|
197
|
+
actual,
|
|
198
|
+
ok,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@robosystems/report-components",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Source-agnostic React components for rendering XBRL-grade financial statements",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "RFS LLC",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./adapters": {
|
|
16
|
+
"types": "./dist/adapters/index.d.ts",
|
|
17
|
+
"import": "./dist/adapters/index.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist/**/*",
|
|
22
|
+
"README.md",
|
|
23
|
+
"LICENSE"
|
|
24
|
+
],
|
|
25
|
+
"sideEffects": false,
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsc -p tsconfig.build.json",
|
|
28
|
+
"format": "prettier . --write",
|
|
29
|
+
"format:check": "prettier . --check",
|
|
30
|
+
"lint": "eslint .",
|
|
31
|
+
"lint:fix": "eslint . --fix",
|
|
32
|
+
"typecheck": "tsc --noEmit",
|
|
33
|
+
"test": "vitest run",
|
|
34
|
+
"test:watch": "vitest",
|
|
35
|
+
"test:all": "npm run format:check && npm run lint && npm run typecheck && npm run test && npm run build",
|
|
36
|
+
"prepublishOnly": "npm run build",
|
|
37
|
+
"feature:create": "./bin/create-feature.sh",
|
|
38
|
+
"release:create": "./bin/create-release.sh"
|
|
39
|
+
},
|
|
40
|
+
"keywords": [
|
|
41
|
+
"robosystems",
|
|
42
|
+
"financial",
|
|
43
|
+
"xbrl",
|
|
44
|
+
"react",
|
|
45
|
+
"report",
|
|
46
|
+
"holon",
|
|
47
|
+
"rdf"
|
|
48
|
+
],
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"react": ">=18",
|
|
51
|
+
"react-dom": ">=18"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"n3": "^1.26.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@eslint/js": "^9.39.2",
|
|
58
|
+
"@testing-library/react": "^16.3.0",
|
|
59
|
+
"@types/n3": "^1.26.0",
|
|
60
|
+
"@types/node": "^22.0.0",
|
|
61
|
+
"@types/react": "^19.1.9",
|
|
62
|
+
"@types/react-dom": "^19.1.9",
|
|
63
|
+
"eslint": "^9.39.2",
|
|
64
|
+
"eslint-config-prettier": "^10.0.0",
|
|
65
|
+
"eslint-plugin-prettier": "^5.0.0",
|
|
66
|
+
"happy-dom": "^20.0.8",
|
|
67
|
+
"prettier": "^3.0.0",
|
|
68
|
+
"prettier-plugin-organize-imports": "^4.0.0",
|
|
69
|
+
"react": "^19.2.0",
|
|
70
|
+
"react-dom": "^19.2.0",
|
|
71
|
+
"typescript": "^5.7.2",
|
|
72
|
+
"typescript-eslint": "^8.54.0",
|
|
73
|
+
"vitest": "^4.1.4"
|
|
74
|
+
},
|
|
75
|
+
"engines": {
|
|
76
|
+
"node": ">=18.0.0"
|
|
77
|
+
},
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"access": "public",
|
|
80
|
+
"registry": "https://registry.npmjs.org/"
|
|
81
|
+
},
|
|
82
|
+
"repository": {
|
|
83
|
+
"type": "git",
|
|
84
|
+
"url": "https://github.com/RoboFinSystems/robosystems-report-components.git"
|
|
85
|
+
},
|
|
86
|
+
"bugs": {
|
|
87
|
+
"url": "https://github.com/RoboFinSystems/robosystems-report-components/issues"
|
|
88
|
+
},
|
|
89
|
+
"homepage": "https://github.com/RoboFinSystems/robosystems-report-components#readme"
|
|
90
|
+
}
|