@cristianormazabal/triton-core 0.1.10 → 0.1.12

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.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * validateThemeInput
3
+ *
4
+ * Pure validator for external `.triton-theme.json` files. No file or network
5
+ * I/O — only validates an already-parsed JSON value against the ThemeInput
6
+ * contract. Returns a Result so callers never need try/catch.
7
+ *
8
+ * Policy (Cristian's decision): unknown keys at any level are a HARD ERROR,
9
+ * not a warning. This catches typos early and keeps the schema unambiguous.
10
+ */
11
+ import type { ThemeInput } from '../contracts/theme.js';
12
+ import { type Result } from '../contracts/result.js';
13
+ /** Returns true iff `name` is one of the built-in preset names. */
14
+ export declare function isBuiltinThemeName(name: string): boolean;
15
+ /**
16
+ * Validate an unknown value against the ThemeInput contract.
17
+ *
18
+ * Pure and synchronous — never throws, never reads files.
19
+ * Returns ok(ThemeInput) on success, err(...) on any violation.
20
+ */
21
+ export declare function validateThemeInput(json: unknown): Result<ThemeInput>;
22
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/theme/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAK9D,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAwKD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAiEpE"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * validateThemeInput
3
+ *
4
+ * Pure validator for external `.triton-theme.json` files. No file or network
5
+ * I/O — only validates an already-parsed JSON value against the ThemeInput
6
+ * contract. Returns a Result so callers never need try/catch.
7
+ *
8
+ * Policy (Cristian's decision): unknown keys at any level are a HARD ERROR,
9
+ * not a warning. This catches typos early and keeps the schema unambiguous.
10
+ */
11
+ import { ok, err } from '../contracts/result.js';
12
+ import { themePresetNames } from './preset.js';
13
+ // ─── isBuiltinThemeName ───────────────────────────────────────────────────────
14
+ /** Returns true iff `name` is one of the built-in preset names. */
15
+ export function isBuiltinThemeName(name) {
16
+ return themePresetNames.includes(name);
17
+ }
18
+ // ─── Known key sets ───────────────────────────────────────────────────────────
19
+ const TOP_LEVEL_KEYS = new Set([
20
+ 'name', 'base', 'palette', 'typography', 'spacing', 'edges', 'panel',
21
+ ]);
22
+ const PALETTE_KEYS = new Set([
23
+ 'primary', 'secondary', 'background', 'surface', 'border',
24
+ 'text', 'textMuted', 'success', 'warning', 'error',
25
+ ]);
26
+ const TYPOGRAPHY_KEYS = new Set([
27
+ 'fontFamily', 'monoFamily', 'baseFontSize', 'titleFontSize', 'smallFontSize', 'lineHeight',
28
+ ]);
29
+ const SPACING_KEYS = new Set([
30
+ 'unit', 'nodePadding', 'nodeGap', 'diagramMargin',
31
+ ]);
32
+ const EDGES_KEYS = new Set([
33
+ 'strokeWidth', 'arrowSize', 'labelFontSize', 'curveTension',
34
+ ]);
35
+ const PANEL_KEYS = new Set([
36
+ 'titleAlign', 'titlePosition', 'titleChrome',
37
+ ]);
38
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
39
+ const HEX_COLOR = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
40
+ const SLUG = /^[a-z0-9-]+$/;
41
+ const CSS_INJECTION = /url\s*\(|expression\s*\(/i;
42
+ function isPlainObject(v) {
43
+ return v !== null && typeof v === 'object' && !Array.isArray(v);
44
+ }
45
+ function fail(message) {
46
+ return err('THEME_VALIDATION_ERROR', message);
47
+ }
48
+ // ─── Group validators ─────────────────────────────────────────────────────────
49
+ function validatePalette(obj) {
50
+ if (!isPlainObject(obj))
51
+ return fail('"palette" must be a plain object');
52
+ for (const key of Object.keys(obj)) {
53
+ if (!PALETTE_KEYS.has(key))
54
+ return fail(`Unknown key in palette: "${key}"`);
55
+ }
56
+ for (const key of Object.keys(obj)) {
57
+ const val = obj[key];
58
+ if (typeof val !== 'string' || !HEX_COLOR.test(val)) {
59
+ return fail(`palette.${key} must be a CSS hex color (e.g. "#RGB" or "#RRGGBB"), got ${JSON.stringify(val)}`);
60
+ }
61
+ }
62
+ return ok(obj);
63
+ }
64
+ function validateTypography(obj) {
65
+ if (!isPlainObject(obj))
66
+ return fail('"typography" must be a plain object');
67
+ for (const key of Object.keys(obj)) {
68
+ if (!TYPOGRAPHY_KEYS.has(key))
69
+ return fail(`Unknown key in typography: "${key}"`);
70
+ }
71
+ const stringFields = ['fontFamily', 'monoFamily'];
72
+ for (const key of stringFields) {
73
+ if (key in obj) {
74
+ const val = obj[key];
75
+ if (typeof val !== 'string')
76
+ return fail(`typography.${key} must be a string`);
77
+ if (CSS_INJECTION.test(val))
78
+ return fail(`typography.${key} contains disallowed CSS expression`);
79
+ }
80
+ }
81
+ const positiveFields = ['baseFontSize', 'titleFontSize', 'smallFontSize', 'lineHeight'];
82
+ for (const key of positiveFields) {
83
+ if (key in obj) {
84
+ const val = obj[key];
85
+ if (typeof val !== 'number' || val <= 0) {
86
+ return fail(`typography.${key} must be a positive number, got ${JSON.stringify(val)}`);
87
+ }
88
+ }
89
+ }
90
+ return ok(obj);
91
+ }
92
+ function validateSpacing(obj) {
93
+ if (!isPlainObject(obj))
94
+ return fail('"spacing" must be a plain object');
95
+ for (const key of Object.keys(obj)) {
96
+ if (!SPACING_KEYS.has(key))
97
+ return fail(`Unknown key in spacing: "${key}"`);
98
+ }
99
+ for (const key of Object.keys(obj)) {
100
+ const val = obj[key];
101
+ if (typeof val !== 'number' || val < 0) {
102
+ return fail(`spacing.${key} must be a non-negative number, got ${JSON.stringify(val)}`);
103
+ }
104
+ }
105
+ return ok(obj);
106
+ }
107
+ function validateEdges(obj) {
108
+ if (!isPlainObject(obj))
109
+ return fail('"edges" must be a plain object');
110
+ for (const key of Object.keys(obj)) {
111
+ if (!EDGES_KEYS.has(key))
112
+ return fail(`Unknown key in edges: "${key}"`);
113
+ }
114
+ const nonNegativeFields = ['strokeWidth', 'arrowSize', 'labelFontSize'];
115
+ for (const key of nonNegativeFields) {
116
+ if (key in obj) {
117
+ const val = obj[key];
118
+ if (typeof val !== 'number' || val < 0) {
119
+ return fail(`edges.${key} must be a non-negative number, got ${JSON.stringify(val)}`);
120
+ }
121
+ }
122
+ }
123
+ if ('curveTension' in obj) {
124
+ const val = obj['curveTension'];
125
+ if (typeof val !== 'number' || val < 0 || val > 1) {
126
+ return fail(`edges.curveTension must be a number between 0 and 1, got ${JSON.stringify(val)}`);
127
+ }
128
+ }
129
+ return ok(obj);
130
+ }
131
+ function validatePanel(obj) {
132
+ if (!isPlainObject(obj))
133
+ return fail('"panel" must be a plain object');
134
+ for (const key of Object.keys(obj)) {
135
+ if (!PANEL_KEYS.has(key))
136
+ return fail(`Unknown key in panel: "${key}"`);
137
+ }
138
+ if ('titleAlign' in obj) {
139
+ const val = obj['titleAlign'];
140
+ if (val !== 'left' && val !== 'center' && val !== 'right') {
141
+ return fail(`panel.titleAlign must be "left", "center", or "right", got ${JSON.stringify(val)}`);
142
+ }
143
+ }
144
+ if ('titlePosition' in obj) {
145
+ const val = obj['titlePosition'];
146
+ if (val !== 'inside' && val !== 'on-border' && val !== 'above') {
147
+ return fail(`panel.titlePosition must be "inside", "on-border", or "above", got ${JSON.stringify(val)}`);
148
+ }
149
+ }
150
+ if ('titleChrome' in obj) {
151
+ const val = obj['titleChrome'];
152
+ if (val !== 'none' && val !== 'box' && val !== 'pill') {
153
+ return fail(`panel.titleChrome must be "none", "box", or "pill", got ${JSON.stringify(val)}`);
154
+ }
155
+ }
156
+ return ok(obj);
157
+ }
158
+ // ─── Main validator ───────────────────────────────────────────────────────────
159
+ /**
160
+ * Validate an unknown value against the ThemeInput contract.
161
+ *
162
+ * Pure and synchronous — never throws, never reads files.
163
+ * Returns ok(ThemeInput) on success, err(...) on any violation.
164
+ */
165
+ export function validateThemeInput(json) {
166
+ if (!isPlainObject(json)) {
167
+ return fail(`ThemeInput must be a non-null plain object, got ${json === null ? 'null' : Array.isArray(json) ? 'array' : typeof json}`);
168
+ }
169
+ // Strict unknown-key check at top level
170
+ for (const key of Object.keys(json)) {
171
+ if (!TOP_LEVEL_KEYS.has(key))
172
+ return fail(`Unknown top-level key: "${key}"`);
173
+ }
174
+ const result = {};
175
+ // name
176
+ if ('name' in json) {
177
+ const v = json['name'];
178
+ if (typeof v !== 'string')
179
+ return fail(`"name" must be a string, got ${JSON.stringify(v)}`);
180
+ if (v.length < 1 || v.length > 64)
181
+ return fail(`"name" must be 1–64 characters, got length ${v.length}`);
182
+ if (!SLUG.test(v))
183
+ return fail(`"name" must match ^[a-z0-9-]+$, got ${JSON.stringify(v)}`);
184
+ result['name'] = v;
185
+ }
186
+ // base
187
+ if ('base' in json) {
188
+ const v = json['base'];
189
+ if (typeof v !== 'string')
190
+ return fail(`"base" must be a string, got ${JSON.stringify(v)}`);
191
+ if (!isBuiltinThemeName(v))
192
+ return fail(`"base" must be a built-in preset name; "${v}" is not recognised`);
193
+ result['base'] = v;
194
+ }
195
+ // palette
196
+ if ('palette' in json) {
197
+ const r = validatePalette(json['palette']);
198
+ if (!r.ok)
199
+ return r;
200
+ result['palette'] = r.value;
201
+ }
202
+ // typography
203
+ if ('typography' in json) {
204
+ const r = validateTypography(json['typography']);
205
+ if (!r.ok)
206
+ return r;
207
+ result['typography'] = r.value;
208
+ }
209
+ // spacing
210
+ if ('spacing' in json) {
211
+ const r = validateSpacing(json['spacing']);
212
+ if (!r.ok)
213
+ return r;
214
+ result['spacing'] = r.value;
215
+ }
216
+ // edges
217
+ if ('edges' in json) {
218
+ const r = validateEdges(json['edges']);
219
+ if (!r.ok)
220
+ return r;
221
+ result['edges'] = r.value;
222
+ }
223
+ // panel
224
+ if ('panel' in json) {
225
+ const r = validatePanel(json['panel']);
226
+ if (!r.ok)
227
+ return r;
228
+ result['panel'] = r.value;
229
+ }
230
+ return ok(result);
231
+ }
232
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/theme/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cristianormazabal/triton-core",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Triton diagram compiler — deterministic SVG rendering for 50+ diagram types (Mermaid-compatible, trees, data structures, posters).",
5
5
  "type": "module",
6
6
  "license": "MIT",