@bestagentkits/render 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/CHANGELOG.md +29 -0
- package/LICENSE +21 -0
- package/README.md +166 -0
- package/dist/cli.d.ts +18 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +336 -0
- package/dist/cli.js.map +1 -0
- package/dist/diagnostics.d.ts +45 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +57 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/diagram/adapter.d.ts +71 -0
- package/dist/diagram/adapter.d.ts.map +1 -0
- package/dist/diagram/adapter.js +87 -0
- package/dist/diagram/adapter.js.map +1 -0
- package/dist/errors.d.ts +37 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +42 -0
- package/dist/errors.js.map +1 -0
- package/dist/hash.d.ts +14 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +27 -0
- package/dist/hash.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/yaml-error.d.ts +14 -0
- package/dist/internal/yaml-error.d.ts.map +1 -0
- package/dist/internal/yaml-error.js +12 -0
- package/dist/internal/yaml-error.js.map +1 -0
- package/dist/ir.d.ts +77 -0
- package/dist/ir.d.ts.map +1 -0
- package/dist/ir.js +20 -0
- package/dist/ir.js.map +1 -0
- package/dist/json.d.ts +23 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +47 -0
- package/dist/json.js.map +1 -0
- package/dist/registry/actions.d.ts +48 -0
- package/dist/registry/actions.d.ts.map +1 -0
- package/dist/registry/actions.js +274 -0
- package/dist/registry/actions.js.map +1 -0
- package/dist/registry/prop-schema.d.ts +108 -0
- package/dist/registry/prop-schema.d.ts.map +1 -0
- package/dist/registry/prop-schema.js +400 -0
- package/dist/registry/prop-schema.js.map +1 -0
- package/dist/registry/registry.d.ts +47 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +201 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/registry/roster.d.ts +53 -0
- package/dist/registry/roster.d.ts.map +1 -0
- package/dist/registry/roster.js +692 -0
- package/dist/registry/roster.js.map +1 -0
- package/dist/render/blocks.d.ts +41 -0
- package/dist/render/blocks.d.ts.map +1 -0
- package/dist/render/blocks.js +749 -0
- package/dist/render/blocks.js.map +1 -0
- package/dist/render/charts.d.ts +29 -0
- package/dist/render/charts.d.ts.map +1 -0
- package/dist/render/charts.js +235 -0
- package/dist/render/charts.js.map +1 -0
- package/dist/render/document.d.ts +40 -0
- package/dist/render/document.d.ts.map +1 -0
- package/dist/render/document.js +90 -0
- package/dist/render/document.js.map +1 -0
- package/dist/render/escape.d.ts +46 -0
- package/dist/render/escape.d.ts.map +1 -0
- package/dist/render/escape.js +108 -0
- package/dist/render/escape.js.map +1 -0
- package/dist/render/render.d.ts +52 -0
- package/dist/render/render.d.ts.map +1 -0
- package/dist/render/render.js +216 -0
- package/dist/render/render.js.map +1 -0
- package/dist/render/runtime.d.ts +25 -0
- package/dist/render/runtime.d.ts.map +1 -0
- package/dist/render/runtime.js +451 -0
- package/dist/render/runtime.js.map +1 -0
- package/dist/render/styles.d.ts +15 -0
- package/dist/render/styles.d.ts.map +1 -0
- package/dist/render/styles.js +163 -0
- package/dist/render/styles.js.map +1 -0
- package/dist/render/verify.d.ts +25 -0
- package/dist/render/verify.d.ts.map +1 -0
- package/dist/render/verify.js +168 -0
- package/dist/render/verify.js.map +1 -0
- package/dist/spec/bindings.d.ts +19 -0
- package/dist/spec/bindings.d.ts.map +1 -0
- package/dist/spec/bindings.js +51 -0
- package/dist/spec/bindings.js.map +1 -0
- package/dist/spec/bounds.d.ts +43 -0
- package/dist/spec/bounds.d.ts.map +1 -0
- package/dist/spec/bounds.js +144 -0
- package/dist/spec/bounds.js.map +1 -0
- package/dist/spec/forbidden.d.ts +27 -0
- package/dist/spec/forbidden.d.ts.map +1 -0
- package/dist/spec/forbidden.js +91 -0
- package/dist/spec/forbidden.js.map +1 -0
- package/dist/spec/migrate.d.ts +33 -0
- package/dist/spec/migrate.d.ts.map +1 -0
- package/dist/spec/migrate.js +113 -0
- package/dist/spec/migrate.js.map +1 -0
- package/dist/spec/normalize.d.ts +29 -0
- package/dist/spec/normalize.d.ts.map +1 -0
- package/dist/spec/normalize.js +649 -0
- package/dist/spec/normalize.js.map +1 -0
- package/dist/spec/parse.d.ts +22 -0
- package/dist/spec/parse.d.ts.map +1 -0
- package/dist/spec/parse.js +62 -0
- package/dist/spec/parse.js.map +1 -0
- package/dist/spec/providers.d.ts +30 -0
- package/dist/spec/providers.d.ts.map +1 -0
- package/dist/spec/providers.js +64 -0
- package/dist/spec/providers.js.map +1 -0
- package/dist/spec/validate.d.ts +28 -0
- package/dist/spec/validate.d.ts.map +1 -0
- package/dist/spec/validate.js +68 -0
- package/dist/spec/validate.js.map +1 -0
- package/dist/theme/load-theme.d.ts +55 -0
- package/dist/theme/load-theme.d.ts.map +1 -0
- package/dist/theme/load-theme.js +219 -0
- package/dist/theme/load-theme.js.map +1 -0
- package/dist/theme/presets.d.ts +50 -0
- package/dist/theme/presets.d.ts.map +1 -0
- package/dist/theme/presets.js +304 -0
- package/dist/theme/presets.js.map +1 -0
- package/dist/theme/theme-catalog.d.ts +68 -0
- package/dist/theme/theme-catalog.d.ts.map +1 -0
- package/dist/theme/theme-catalog.js +198 -0
- package/dist/theme/theme-catalog.js.map +1 -0
- package/dist/theme/tokens.d.ts +38 -0
- package/dist/theme/tokens.d.ts.map +1 -0
- package/dist/theme/tokens.js +190 -0
- package/dist/theme/tokens.js.map +1 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +12 -0
- package/dist/version.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/render/blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic SVG charts.
|
|
3
|
+
*
|
|
4
|
+
* Common chart types are rendered as SVG rather than with a charting library:
|
|
5
|
+
* no dependency, no network, and byte-identical output. Every chart also emits a
|
|
6
|
+
* text summary and a data table, so the values are available to assistive
|
|
7
|
+
* technology and to anyone who cannot read the plot.
|
|
8
|
+
*
|
|
9
|
+
* All geometry is rounded to two decimals before it reaches the markup, because
|
|
10
|
+
* floating-point noise would otherwise break byte-determinism across engines.
|
|
11
|
+
*/
|
|
12
|
+
import { escapeAttribute } from './escape.js';
|
|
13
|
+
export interface ChartSeries {
|
|
14
|
+
label: string;
|
|
15
|
+
values: number[];
|
|
16
|
+
}
|
|
17
|
+
export interface ChartInput {
|
|
18
|
+
kind: string;
|
|
19
|
+
id: string;
|
|
20
|
+
labels: string[];
|
|
21
|
+
series: ChartSeries[];
|
|
22
|
+
title?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
}
|
|
25
|
+
/** Render one chart block as a figure containing SVG, a summary, and a table. */
|
|
26
|
+
export declare function renderChart(input: ChartInput): string;
|
|
27
|
+
/** Escape helper re-exported for chart consumers that build their own chart markup. */
|
|
28
|
+
export { escapeAttribute };
|
|
29
|
+
//# sourceMappingURL=charts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../src/render/charts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAgC,MAAM,aAAa,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+OD,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CA+CrD;AAED,uFAAuF;AACvF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic SVG charts.
|
|
3
|
+
*
|
|
4
|
+
* Common chart types are rendered as SVG rather than with a charting library:
|
|
5
|
+
* no dependency, no network, and byte-identical output. Every chart also emits a
|
|
6
|
+
* text summary and a data table, so the values are available to assistive
|
|
7
|
+
* technology and to anyone who cannot read the plot.
|
|
8
|
+
*
|
|
9
|
+
* All geometry is rounded to two decimals before it reaches the markup, because
|
|
10
|
+
* floating-point noise would otherwise break byte-determinism across engines.
|
|
11
|
+
*/
|
|
12
|
+
import { escapeAttribute, escapeText, renderAttributes } from './escape.js';
|
|
13
|
+
const WIDTH = 640;
|
|
14
|
+
const HEIGHT = 240;
|
|
15
|
+
const PADDING = { top: 16, right: 16, bottom: 36, left: 44 };
|
|
16
|
+
function round(value) {
|
|
17
|
+
return Math.round(value * 100) / 100;
|
|
18
|
+
}
|
|
19
|
+
function extent(series) {
|
|
20
|
+
const values = series.flatMap((entry) => entry.values);
|
|
21
|
+
if (values.length === 0)
|
|
22
|
+
return { min: 0, max: 1 };
|
|
23
|
+
const min = Math.min(0, ...values);
|
|
24
|
+
const max = Math.max(...values);
|
|
25
|
+
return max === min ? { min, max: min + 1 } : { min, max };
|
|
26
|
+
}
|
|
27
|
+
function plotWidth() {
|
|
28
|
+
return WIDTH - PADDING.left - PADDING.right;
|
|
29
|
+
}
|
|
30
|
+
function plotHeight() {
|
|
31
|
+
return HEIGHT - PADDING.top - PADDING.bottom;
|
|
32
|
+
}
|
|
33
|
+
function scaleY(value, bounds) {
|
|
34
|
+
const ratio = (value - bounds.min) / (bounds.max - bounds.min);
|
|
35
|
+
return round(PADDING.top + plotHeight() * (1 - ratio));
|
|
36
|
+
}
|
|
37
|
+
function scaleX(index, count) {
|
|
38
|
+
if (count <= 1)
|
|
39
|
+
return round(PADDING.left + plotWidth() / 2);
|
|
40
|
+
return round(PADDING.left + (plotWidth() * index) / (count - 1));
|
|
41
|
+
}
|
|
42
|
+
function axisLabels(labels, bounds) {
|
|
43
|
+
const parts = [];
|
|
44
|
+
const step = Math.max(1, Math.ceil(labels.length / 8));
|
|
45
|
+
for (let index = 0; index < labels.length; index += step) {
|
|
46
|
+
const x = scaleX(index, labels.length);
|
|
47
|
+
parts.push(`<text class="ak-chart-label" x="${x}" y="${HEIGHT - PADDING.bottom + 16}" text-anchor="middle">${escapeText(labels[index] ?? '')}</text>`);
|
|
48
|
+
}
|
|
49
|
+
parts.push(`<line class="ak-chart-axis" x1="${PADDING.left}" y1="${PADDING.top}" x2="${PADDING.left}" y2="${HEIGHT - PADDING.bottom}"/>`);
|
|
50
|
+
parts.push(`<line class="ak-chart-axis" x1="${PADDING.left}" y1="${HEIGHT - PADDING.bottom}" x2="${WIDTH - PADDING.right}" y2="${HEIGHT - PADDING.bottom}"/>`);
|
|
51
|
+
parts.push(`<text class="ak-chart-label" x="${PADDING.left - 6}" y="${scaleY(bounds.max, bounds) + 3}" text-anchor="end">${escapeText(String(round(bounds.max)))}</text>`);
|
|
52
|
+
if (bounds.min < 0) {
|
|
53
|
+
parts.push(`<text class="ak-chart-label" x="${PADDING.left - 6}" y="${scaleY(bounds.min, bounds) + 3}" text-anchor="end">${escapeText(String(round(bounds.min)))}</text>`);
|
|
54
|
+
}
|
|
55
|
+
return parts.join('');
|
|
56
|
+
}
|
|
57
|
+
function pointTitle(label, series, index) {
|
|
58
|
+
return `${label}: ${series.label} ${series.values[index] ?? 0}`;
|
|
59
|
+
}
|
|
60
|
+
function barChart(input, bounds) {
|
|
61
|
+
const groups = input.labels.length;
|
|
62
|
+
const seriesCount = Math.max(input.series.length, 1);
|
|
63
|
+
const groupWidth = plotWidth() / Math.max(groups, 1);
|
|
64
|
+
const barWidth = round(Math.max(2, (groupWidth - 8) / seriesCount));
|
|
65
|
+
const parts = [];
|
|
66
|
+
const zeroY = scaleY(Math.max(bounds.min, 0), bounds);
|
|
67
|
+
input.series.forEach((series, seriesIndex) => {
|
|
68
|
+
input.labels.forEach((label, index) => {
|
|
69
|
+
const value = series.values[index] ?? 0;
|
|
70
|
+
const x = round(PADDING.left + groupWidth * index + 4 + seriesIndex * barWidth);
|
|
71
|
+
const y = scaleY(value, bounds);
|
|
72
|
+
const height = round(Math.abs(zeroY - y));
|
|
73
|
+
const top = Math.min(y, zeroY);
|
|
74
|
+
parts.push(`<rect class="ak-chart-bar${seriesIndex % 2 === 1 ? ' ak-chart-bar--alt' : ''}" tabindex="0" x="${x}" y="${top}" width="${barWidth}" height="${height}"><title>${escapeText(pointTitle(label, series, index))}</title></rect>`);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
return `${axisLabels(input.labels, bounds)}${parts.join('')}`;
|
|
78
|
+
}
|
|
79
|
+
function linePath(series, bounds) {
|
|
80
|
+
return series.values
|
|
81
|
+
.map((value, index) => `${index === 0 ? 'M' : 'L'}${scaleX(index, series.values.length)},${scaleY(value, bounds)}`)
|
|
82
|
+
.join(' ');
|
|
83
|
+
}
|
|
84
|
+
function lineChart(input, bounds, area) {
|
|
85
|
+
const parts = [];
|
|
86
|
+
input.series.forEach((series) => {
|
|
87
|
+
const path = linePath(series, bounds);
|
|
88
|
+
if (area) {
|
|
89
|
+
const baseY = scaleY(Math.max(bounds.min, 0), bounds);
|
|
90
|
+
parts.push(`<path class="ak-chart-area" d="${path} L${scaleX(series.values.length - 1, series.values.length)},${baseY} L${PADDING.left},${baseY} Z"/>`);
|
|
91
|
+
}
|
|
92
|
+
parts.push(`<path class="ak-chart-line" d="${path}"/>`);
|
|
93
|
+
series.values.forEach((value, index) => {
|
|
94
|
+
const label = input.labels[Math.min(index, input.labels.length - 1)] ?? '';
|
|
95
|
+
parts.push(`<circle class="ak-chart-bar" tabindex="0" cx="${scaleX(index, series.values.length)}" cy="${scaleY(value, bounds)}" r="3"><title>${escapeText(pointTitle(label, series, index))}</title></circle>`);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
const axis = area ? '' : axisLabels(input.labels, bounds);
|
|
99
|
+
return `${axis}${parts.join('')}`;
|
|
100
|
+
}
|
|
101
|
+
function sparkline(input, bounds) {
|
|
102
|
+
const parts = [];
|
|
103
|
+
for (const series of input.series) {
|
|
104
|
+
parts.push(`<path class="ak-chart-line" d="${linePath(series, bounds)}"/>`);
|
|
105
|
+
}
|
|
106
|
+
return parts.join('');
|
|
107
|
+
}
|
|
108
|
+
function radialChart(input, donut) {
|
|
109
|
+
const series = input.series[0];
|
|
110
|
+
if (series === undefined)
|
|
111
|
+
return '';
|
|
112
|
+
const values = input.labels.map((_, index) => Math.max(series.values[index] ?? 0, 0));
|
|
113
|
+
const total = values.reduce((sum, value) => sum + value, 0) || 1;
|
|
114
|
+
const centreX = WIDTH / 2;
|
|
115
|
+
const centreY = HEIGHT / 2;
|
|
116
|
+
const radius = 84;
|
|
117
|
+
const inner = donut ? 46 : 0;
|
|
118
|
+
const parts = [];
|
|
119
|
+
let angle = -Math.PI / 2;
|
|
120
|
+
values.forEach((value, index) => {
|
|
121
|
+
const sweep = (value / total) * Math.PI * 2;
|
|
122
|
+
const start = angle;
|
|
123
|
+
const end = angle + sweep;
|
|
124
|
+
angle = end;
|
|
125
|
+
const large = sweep > Math.PI ? 1 : 0;
|
|
126
|
+
const x1 = round(centreX + radius * Math.cos(start));
|
|
127
|
+
const y1 = round(centreY + radius * Math.sin(start));
|
|
128
|
+
const x2 = round(centreX + radius * Math.cos(end));
|
|
129
|
+
const y2 = round(centreY + radius * Math.sin(end));
|
|
130
|
+
const label = input.labels[index] ?? '';
|
|
131
|
+
const title = `<title>${escapeText(`${label}: ${value} (${round((value / total) * 100)}%)`)}</title>`;
|
|
132
|
+
if (inner > 0) {
|
|
133
|
+
const ix1 = round(centreX + inner * Math.cos(start));
|
|
134
|
+
const iy1 = round(centreY + inner * Math.sin(start));
|
|
135
|
+
const ix2 = round(centreX + inner * Math.cos(end));
|
|
136
|
+
const iy2 = round(centreY + inner * Math.sin(end));
|
|
137
|
+
parts.push(`<path class="ak-chart-bar${index % 2 === 1 ? ' ak-chart-bar--alt' : ''}" tabindex="0" d="M${x1},${y1} A${radius},${radius} 0 ${large} 1 ${x2},${y2} L${ix2},${iy2} A${inner},${inner} 0 ${large} 0 ${ix1},${iy1} Z">${title}</path>`);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
parts.push(`<path class="ak-chart-bar${index % 2 === 1 ? ' ak-chart-bar--alt' : ''}" tabindex="0" d="M${centreX},${centreY} L${x1},${y1} A${radius},${radius} 0 ${large} 1 ${x2},${y2} Z">${title}</path>`);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
return parts.join('');
|
|
144
|
+
}
|
|
145
|
+
function progressChart(input) {
|
|
146
|
+
const series = input.series[0];
|
|
147
|
+
if (series === undefined)
|
|
148
|
+
return '';
|
|
149
|
+
const max = Math.max(1, ...series.values);
|
|
150
|
+
const rowHeight = 26;
|
|
151
|
+
const barWidth = plotWidth();
|
|
152
|
+
const parts = [];
|
|
153
|
+
input.labels.forEach((label, index) => {
|
|
154
|
+
const value = series.values[index] ?? 0;
|
|
155
|
+
const y = PADDING.top + index * rowHeight;
|
|
156
|
+
if (y > HEIGHT - PADDING.bottom)
|
|
157
|
+
return;
|
|
158
|
+
parts.push(`<text class="ak-chart-label" x="0" y="${y + 12}" text-anchor="start">${escapeText(label)}</text>`);
|
|
159
|
+
parts.push(`<rect x="${PADDING.left}" y="${y + 4}" width="${barWidth}" height="10" fill="var(--ak-color-surface-raised)"/>`);
|
|
160
|
+
parts.push(`<rect class="ak-chart-bar" tabindex="0" x="${PADDING.left}" y="${y + 4}" width="${round((barWidth * Math.max(0, Math.min(value, max))) / max)}" height="10"><title>${escapeText(`${label}: ${value}`)}</title></rect>`);
|
|
161
|
+
});
|
|
162
|
+
return parts.join('');
|
|
163
|
+
}
|
|
164
|
+
function dataTable(input) {
|
|
165
|
+
const head = input.labels.map((label) => `<th scope="col">${escapeText(label)}</th>`).join('');
|
|
166
|
+
const rows = input.series
|
|
167
|
+
.map((series) => {
|
|
168
|
+
const cells = input.labels
|
|
169
|
+
.map((_, index) => `<td>${escapeText(String(series.values[index] ?? ''))}</td>`)
|
|
170
|
+
.join('');
|
|
171
|
+
return `<tr><th scope="row">${escapeText(series.label)}</th>${cells}</tr>`;
|
|
172
|
+
})
|
|
173
|
+
.join('');
|
|
174
|
+
return `<table class="ak-chart-table"><caption>${escapeText(input.title ?? 'Chart data')}</caption><thead><tr><th scope="col">Series</th>${head}</tr></thead><tbody>${rows}</tbody></table>`;
|
|
175
|
+
}
|
|
176
|
+
function textSummary(input) {
|
|
177
|
+
if (input.description !== undefined && input.description !== '')
|
|
178
|
+
return input.description;
|
|
179
|
+
const lines = input.series.map((series) => {
|
|
180
|
+
const pairs = input.labels
|
|
181
|
+
.map((label, index) => `${label} ${series.values[index] ?? ''}`.trim())
|
|
182
|
+
.join(', ');
|
|
183
|
+
return `${series.label}: ${pairs}`;
|
|
184
|
+
});
|
|
185
|
+
return lines.join('. ');
|
|
186
|
+
}
|
|
187
|
+
/** Render one chart block as a figure containing SVG, a summary, and a table. */
|
|
188
|
+
export function renderChart(input) {
|
|
189
|
+
const bounds = extent(input.series);
|
|
190
|
+
let body;
|
|
191
|
+
switch (input.kind) {
|
|
192
|
+
case 'bar':
|
|
193
|
+
body = barChart(input, bounds);
|
|
194
|
+
break;
|
|
195
|
+
case 'line':
|
|
196
|
+
body = lineChart(input, bounds, false);
|
|
197
|
+
break;
|
|
198
|
+
case 'area':
|
|
199
|
+
body = lineChart(input, bounds, true);
|
|
200
|
+
break;
|
|
201
|
+
case 'pie':
|
|
202
|
+
body = radialChart(input, false);
|
|
203
|
+
break;
|
|
204
|
+
case 'donut':
|
|
205
|
+
body = radialChart(input, true);
|
|
206
|
+
break;
|
|
207
|
+
case 'sparkline':
|
|
208
|
+
body = sparkline(input, bounds);
|
|
209
|
+
break;
|
|
210
|
+
case 'progress':
|
|
211
|
+
body = progressChart(input);
|
|
212
|
+
break;
|
|
213
|
+
default:
|
|
214
|
+
body = '';
|
|
215
|
+
}
|
|
216
|
+
const summary = textSummary(input);
|
|
217
|
+
const ariaLabel = input.title === undefined ? summary : `${input.title}. ${summary}`;
|
|
218
|
+
const caption = input.title === undefined ? '' : `<figcaption>${escapeText(input.title)}</figcaption>`;
|
|
219
|
+
return [
|
|
220
|
+
`<figure class="ak-chart"${renderAttributes({ 'data-ak-kind': input.kind })}>`,
|
|
221
|
+
caption,
|
|
222
|
+
`<svg viewBox="0 0 ${WIDTH} ${HEIGHT}" role="img"${renderAttributes({
|
|
223
|
+
'aria-label': ariaLabel,
|
|
224
|
+
'data-ak-chart': input.id,
|
|
225
|
+
})}><title>${escapeText(input.title ?? 'Chart')}</title>${body}</svg>`,
|
|
226
|
+
`<p class="ak-sr">${escapeText(summary)}</p>`,
|
|
227
|
+
`<details class="ak-details"><summary>Chart data table</summary>${dataTable(input)}</details>`,
|
|
228
|
+
'</figure>',
|
|
229
|
+
]
|
|
230
|
+
.filter((part) => part !== '')
|
|
231
|
+
.join('');
|
|
232
|
+
}
|
|
233
|
+
/** Escape helper re-exported for chart consumers that build their own chart markup. */
|
|
234
|
+
export { escapeAttribute };
|
|
235
|
+
//# sourceMappingURL=charts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.js","sourceRoot":"","sources":["../../src/render/charts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document assembly.
|
|
3
|
+
*
|
|
4
|
+
* The emitted artifact is a single file that must be self-defending: it is
|
|
5
|
+
* opened from `file://`, so it cannot rely on response headers. The Content
|
|
6
|
+
* Security Policy is therefore embedded, derived from the page's own network
|
|
7
|
+
* policy, and the inline style and script elements carry deterministic nonces
|
|
8
|
+
* so the policy can name exactly what is allowed instead of falling back to
|
|
9
|
+
* `'unsafe-inline'`.
|
|
10
|
+
*
|
|
11
|
+
* Nonces are derived from a content hash, not from randomness: a random nonce
|
|
12
|
+
* would break byte-determinism, and a nonce does not need to be unpredictable
|
|
13
|
+
* to be useful here (it only has to distinguish the compiler's own elements).
|
|
14
|
+
*/
|
|
15
|
+
import type { IrDocument } from '../ir.js';
|
|
16
|
+
export interface DocumentInput {
|
|
17
|
+
ir: IrDocument;
|
|
18
|
+
compilerVersion: string;
|
|
19
|
+
css: string;
|
|
20
|
+
js: string;
|
|
21
|
+
body: string;
|
|
22
|
+
/** Extra origins a permitted capability needs in the policy, deduplicated. */
|
|
23
|
+
allowedOrigins: string[];
|
|
24
|
+
themeToggle: boolean;
|
|
25
|
+
/** Resolved theme density, emitted as a document-level attribute. */
|
|
26
|
+
density: string;
|
|
27
|
+
}
|
|
28
|
+
export interface AssembledDocument {
|
|
29
|
+
html: string;
|
|
30
|
+
csp: string;
|
|
31
|
+
styleNonce: string;
|
|
32
|
+
scriptNonce: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function buildContentSecurityPolicy(input: DocumentInput): {
|
|
35
|
+
csp: string;
|
|
36
|
+
styleNonce: string;
|
|
37
|
+
scriptNonce: string;
|
|
38
|
+
};
|
|
39
|
+
export declare function assembleDocument(input: DocumentInput): AssembledDocument;
|
|
40
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/render/document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,UAAU,CAAC;AAI1D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,UAAU,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AA8BD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAQA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CA6CxE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document assembly.
|
|
3
|
+
*
|
|
4
|
+
* The emitted artifact is a single file that must be self-defending: it is
|
|
5
|
+
* opened from `file://`, so it cannot rely on response headers. The Content
|
|
6
|
+
* Security Policy is therefore embedded, derived from the page's own network
|
|
7
|
+
* policy, and the inline style and script elements carry deterministic nonces
|
|
8
|
+
* so the policy can name exactly what is allowed instead of falling back to
|
|
9
|
+
* `'unsafe-inline'`.
|
|
10
|
+
*
|
|
11
|
+
* Nonces are derived from a content hash, not from randomness: a random nonce
|
|
12
|
+
* would break byte-determinism, and a nonce does not need to be unpredictable
|
|
13
|
+
* to be useful here (it only has to distinguish the compiler's own elements).
|
|
14
|
+
*/
|
|
15
|
+
import { stableHash } from '../hash.js';
|
|
16
|
+
import { escapeAttribute, escapeText } from './escape.js';
|
|
17
|
+
import { needsLiveRegion } from './runtime.js';
|
|
18
|
+
function directives(policy, input, styleNonce, scriptNonce) {
|
|
19
|
+
const origins = [...new Set(input.allowedOrigins)].sort();
|
|
20
|
+
const imageSources = ['data:', 'file:', ...origins];
|
|
21
|
+
const mediaSources = ['file:', ...origins];
|
|
22
|
+
const parts = [
|
|
23
|
+
"default-src 'none'",
|
|
24
|
+
"base-uri 'none'",
|
|
25
|
+
"form-action 'none'",
|
|
26
|
+
"frame-src 'none'",
|
|
27
|
+
"object-src 'none'",
|
|
28
|
+
"connect-src 'none'",
|
|
29
|
+
"font-src 'none'",
|
|
30
|
+
`img-src ${imageSources.join(' ')}`,
|
|
31
|
+
`media-src ${mediaSources.join(' ')}`,
|
|
32
|
+
`style-src 'nonce-${styleNonce}'`,
|
|
33
|
+
];
|
|
34
|
+
parts.push(input.js === '' ? "script-src 'none'" : `script-src 'nonce-${scriptNonce}'`);
|
|
35
|
+
if (policy !== 'deny' && policy.allow.length > 0) {
|
|
36
|
+
parts.push(`/* network capabilities: ${policy.allow.join(', ')} */`);
|
|
37
|
+
}
|
|
38
|
+
return parts.join('; ');
|
|
39
|
+
}
|
|
40
|
+
export function buildContentSecurityPolicy(input) {
|
|
41
|
+
const styleNonce = `ak${stableHash(input.css).slice(0, 16)}`;
|
|
42
|
+
const scriptNonce = `ak${stableHash(input.js).slice(0, 16)}`;
|
|
43
|
+
return {
|
|
44
|
+
csp: directives(input.ir.policy.network, input, styleNonce, scriptNonce),
|
|
45
|
+
styleNonce,
|
|
46
|
+
scriptNonce,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export function assembleDocument(input) {
|
|
50
|
+
const { csp, styleNonce, scriptNonce } = buildContentSecurityPolicy(input);
|
|
51
|
+
const { meta } = input.ir;
|
|
52
|
+
const liveRegion = needsLiveRegion(new Set(input.ir.nodes.flatMap((node) => node.runtimeFeatures)))
|
|
53
|
+
? `<div class="ak-sr" data-ak-live role="status" aria-live="polite"></div>`
|
|
54
|
+
: '';
|
|
55
|
+
const themeToggle = input.themeToggle
|
|
56
|
+
? `<div class="ak-page-bar"><button type="button" class="ak-btn ak-theme-toggle" data-ak-theme-toggle aria-pressed="false" aria-label="Toggle dark theme">Dark</button></div>`
|
|
57
|
+
: '';
|
|
58
|
+
const description = meta.description === undefined
|
|
59
|
+
? ''
|
|
60
|
+
: `<meta name="description" content="${escapeAttribute(meta.description)}" />`;
|
|
61
|
+
const html = [
|
|
62
|
+
'<!DOCTYPE html>',
|
|
63
|
+
`<html lang="${escapeAttribute(meta.locale)}" data-density="${escapeAttribute(input.density)}">`,
|
|
64
|
+
'<head>',
|
|
65
|
+
'<meta charset="utf-8" />',
|
|
66
|
+
'<meta name="viewport" content="width=device-width, initial-scale=1" />',
|
|
67
|
+
'<meta name="color-scheme" content="light dark" />',
|
|
68
|
+
`<meta name="generator" content="@bestagentkits/render ${escapeAttribute(input.compilerVersion)}" />`,
|
|
69
|
+
`<meta http-equiv="Content-Security-Policy" content="${escapeAttribute(csp)}" />`,
|
|
70
|
+
`<title>${escapeText(meta.title)}</title>`,
|
|
71
|
+
description,
|
|
72
|
+
`<style nonce="${escapeAttribute(styleNonce)}">${input.css}</style>`,
|
|
73
|
+
'</head>',
|
|
74
|
+
'<body>',
|
|
75
|
+
'<a class="ak-skip" href="#ak-main-content">Skip to main content</a>',
|
|
76
|
+
'<div class="ak-shell">',
|
|
77
|
+
themeToggle,
|
|
78
|
+
input.body,
|
|
79
|
+
'</div>',
|
|
80
|
+
liveRegion,
|
|
81
|
+
input.js === '' ? '' : `<script nonce="${escapeAttribute(scriptNonce)}">${input.js}</script>`,
|
|
82
|
+
'</body>',
|
|
83
|
+
'</html>',
|
|
84
|
+
'',
|
|
85
|
+
]
|
|
86
|
+
.filter((line) => line !== '')
|
|
87
|
+
.join('\n');
|
|
88
|
+
return { html, csp, styleNonce, scriptNonce };
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/render/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escaping and serialization.
|
|
3
|
+
*
|
|
4
|
+
* Escaping happens at emission, per context. Nothing here is applied at parse
|
|
5
|
+
* time: a value that is safe as text is not automatically safe as an attribute,
|
|
6
|
+
* in a URL, or inside a `script` element, and the compiler must not pretend
|
|
7
|
+
* otherwise.
|
|
8
|
+
*/
|
|
9
|
+
/** Escape text content for an element body. */
|
|
10
|
+
export declare function escapeText(value: string): string;
|
|
11
|
+
/** Escape a value for a double-quoted attribute. */
|
|
12
|
+
export declare function escapeAttribute(value: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Percent-encode a URL for emission.
|
|
15
|
+
*
|
|
16
|
+
* Scheme policy is enforced by the URL policy module before this runs; this
|
|
17
|
+
* function only guarantees that the emitted reference cannot break out of the
|
|
18
|
+
* attribute or introduce a control character.
|
|
19
|
+
*/
|
|
20
|
+
export declare function escapeUrl(value: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Serialize embedded data for a `script type="application/json"` element.
|
|
23
|
+
*
|
|
24
|
+
* `<` and `>` are escaped so a value can never close the element, and the two
|
|
25
|
+
* Unicode line separators are escaped because they terminate a JavaScript line
|
|
26
|
+
* even inside a string literal.
|
|
27
|
+
*/
|
|
28
|
+
export declare function serializeJsonForScript(value: unknown): string;
|
|
29
|
+
/**
|
|
30
|
+
* Serialize a JSON payload for a `data-*` attribute (not for a script body).
|
|
31
|
+
* Kept separate from `serializeJsonForScript` so the two contexts cannot be
|
|
32
|
+
* confused.
|
|
33
|
+
*/
|
|
34
|
+
export declare function serializeJsonForAttribute(value: unknown): string;
|
|
35
|
+
export interface AttributeValue {
|
|
36
|
+
[name: string]: string | number | boolean | undefined | null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Render attributes in a fixed order.
|
|
40
|
+
*
|
|
41
|
+
* Ordering is deterministic regardless of the object's insertion order, so two
|
|
42
|
+
* runs of the compiler cannot differ because of how a renderer happened to
|
|
43
|
+
* build its attribute map.
|
|
44
|
+
*/
|
|
45
|
+
export declare function renderAttributes(attributes: AttributeValue): string;
|
|
46
|
+
//# sourceMappingURL=escape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/render/escape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMrD;AAMD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAO7D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;CAC9D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAkBnE"}
|