@axiom-core/invariant-engine 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.
@@ -0,0 +1,14 @@
1
+ import type { Token } from '@axiom-core/token-schema';
2
+ export { assertNoPrimitiveLeak, assertNoRawHex, assertAllAxesRegistered, assertNoCyclicReferences, assertAllReferencesResolvable, assertAllReferencesResolvableShallow, assertAllReferencesResolvableDeep, validateTheme, InvariantLevel } from './invariants.js';
3
+ export declare const processToken: (t: Token) => {
4
+ processed: boolean;
5
+ tokenId: string;
6
+ };
7
+ export declare const checkInvariant: (t: Token) => {
8
+ invariantOk: boolean;
9
+ result: {
10
+ processed: boolean;
11
+ tokenId: string;
12
+ };
13
+ };
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,iCAAiC,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElQ,eAAO,MAAM,YAAY,GAAI,GAAG,KAAK;;;CAEpC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,GAAG,KAAK;;;;;;CAGtC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export { assertNoPrimitiveLeak, assertNoRawHex, assertAllAxesRegistered, assertNoCyclicReferences, assertAllReferencesResolvable, assertAllReferencesResolvableShallow, assertAllReferencesResolvableDeep, validateTheme, InvariantLevel } from './invariants.js';
2
+ export const processToken = (t) => {
3
+ return { processed: true, tokenId: t.id };
4
+ };
5
+ export const checkInvariant = (t) => {
6
+ const res = processToken(t);
7
+ return { invariantOk: true, result: res };
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,iCAAiC,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElQ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAQ,EAAE,EAAE;IACvC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAQ,EAAE,EAAE;IACzC,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5C,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { PrimitiveTokens, SemanticTokens } from '@axiom-core/token-schema';
2
+ import type { AxisRegistry } from '@axiom-core/core-engine';
3
+ /**
4
+ * Invariant levels describe the scope and cost of checks performed.
5
+ * - `runtime`: inexpensive, fast checks that should run in production to catch common problems.
6
+ * - `ci`: expensive, deep-graph analysis and performance guards intended for CI jobs only.
7
+ */
8
+ export type InvariantLevel = 'runtime' | 'ci';
9
+ export declare const InvariantLevel: {
10
+ readonly Runtime: InvariantLevel;
11
+ readonly CI: InvariantLevel;
12
+ };
13
+ export declare function assertNoPrimitiveLeak(semantic: SemanticTokens): void;
14
+ export declare function assertNoRawHex(semantic: SemanticTokens): void;
15
+ export declare function assertNoCyclicReferences(semantic: SemanticTokens, primitives: PrimitiveTokens): void;
16
+ export declare function assertAllReferencesResolvable(semantic: SemanticTokens, primitives: PrimitiveTokens): void;
17
+ export declare function assertAllReferencesResolvableShallow(semantic: SemanticTokens, primitives: PrimitiveTokens): void;
18
+ export declare function assertAllReferencesResolvableDeep(semantic: SemanticTokens, primitives: PrimitiveTokens): void;
19
+ export declare function assertAllAxesRegistered(expectedAxes: readonly string[], registry: AxisRegistry | Record<string, unknown>): void;
20
+ /**
21
+ * Runtime invariants:
22
+ * Must remain O(n).
23
+ * Safe for theme switching at runtime.
24
+ */
25
+ export declare function runRuntimeInvariants(semantic: SemanticTokens, primitives: PrimitiveTokens, expectedAxes: readonly string[], registry: AxisRegistry | Record<string, unknown>): void;
26
+ /**
27
+ * Runtime single-pass semantic validator.
28
+ * Visits each leaf exactly once and enforces:
29
+ * - leaf must be a TokenReference
30
+ * - raw hex string leaves are rejected
31
+ * - token references are shallowly resolvable against `primitives`
32
+ *
33
+ * Complexity: O(n) where n is number of nodes in `semantic` (plus shallow path checks).
34
+ */
35
+ export declare function validateRuntimeSemantic(semantic: SemanticTokens, primitives: PrimitiveTokens): void;
36
+ export declare function assertStateExhaustive(semantic: SemanticTokens): void;
37
+ export declare function assertTypographyExhaustive(semantic: SemanticTokens): void;
38
+ /**
39
+ * validateTheme runs configured invariants on the provided token graphs.
40
+ *
41
+ * Options:
42
+ * - `level` (default: `InvariantLevel.Runtime`) — selects check set:
43
+ * - `Compile`: documented-only; no runtime checks performed here. Intended to indicate TypeScript-enforced rules.
44
+ * - `Runtime`: lightweight checks suitable for production (no deep graph analysis).
45
+ * - `CI`: includes expensive deep-graph and performance checks intended for CI.
46
+ */
47
+ export declare function validateTheme(semantic: SemanticTokens, primitives: PrimitiveTokens, expectedAxes: readonly string[], registry: AxisRegistry, options?: {
48
+ level?: InvariantLevel;
49
+ }): void;
50
+ /**
51
+ * CI invariants:
52
+ * Exhaustive validation.
53
+ * May be O(n + e).
54
+ * Intended for build/CI enforcement.
55
+ */
56
+ export declare function runCIInvariants(semantic: SemanticTokens, primitives: PrimitiveTokens): void;
57
+ //# sourceMappingURL=invariants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../src/invariants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,IAAI,CAAC;AAG9C,eAAO,MAAM,cAAc;sBACH,cAAc;iBACxB,cAAc;CAClB,CAAC;AAuCX,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CA4BpE;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAuB7D;AAqFD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAkEpG;AAGD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAazG;AAGD,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAsDhH;AAGD,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAa7G;AAGD,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAK/H;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,QAAQ,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAQjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CA8BnG;AAyED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CA4CpE;AAGD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CA0DzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,cAAc,CAAA;CAAE,GACnC,IAAI,CAYN;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,QAiBpF"}
@@ -0,0 +1,589 @@
1
+ import { AxiomInvariantError } from '@axiom-core/internal-utils';
2
+ // Backwards-compatible runtime value object used by callers in the codebase.
3
+ export const InvariantLevel = {
4
+ Runtime: 'runtime',
5
+ CI: 'ci'
6
+ };
7
+ function isPlainObject(v) {
8
+ return typeof v === 'object' && v !== null && !Array.isArray(v) && (Object.getPrototypeOf(v) === Object.prototype || Object.getPrototypeOf(v) === null);
9
+ }
10
+ function isPrimitiveValue(v) {
11
+ return typeof v === 'string' || typeof v === 'number';
12
+ }
13
+ function isTokenReference(obj) {
14
+ return isPlainObject(obj) && typeof obj.ref === 'string';
15
+ }
16
+ function joinPath(path) {
17
+ return path.map(String).join('.');
18
+ }
19
+ // Traverse semantic tokens and call callback for each leaf value, providing path
20
+ function traverseSemantic(obj, cb, path = []) {
21
+ if (isTokenReference(obj)) {
22
+ cb(obj, path);
23
+ return;
24
+ }
25
+ if (isPlainObject(obj)) {
26
+ for (const [key, val] of Object.entries(obj)) {
27
+ traverseSemantic(val, cb, path.concat(key));
28
+ }
29
+ return;
30
+ }
31
+ cb(obj, path);
32
+ }
33
+ // 1. assertNoPrimitiveLeak
34
+ export function assertNoPrimitiveLeak(semantic) {
35
+ // Ensure explicit checks for surface, elevation, and effect namespaces
36
+ const checkNamespaces = (nsObj) => {
37
+ if (nsObj !== undefined)
38
+ traverseSemantic(nsObj, (value, path) => {
39
+ if (isTokenReference(value))
40
+ return; // ok
41
+ if (value === undefined || value === null)
42
+ return;
43
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
44
+ throw new AxiomInvariantError('invariant-engine', `Primitive leak detected at semantic.${joinPath(path)} — found primitive value (${String(value)}). Leaves must be TokenReference objects.`, { path: joinPath(path) });
45
+ }
46
+ });
47
+ };
48
+ // Check explicit namespaces first
49
+ checkNamespaces(semantic.surface);
50
+ checkNamespaces(semantic.elevation);
51
+ checkNamespaces(semantic.typography);
52
+ checkNamespaces(semantic.state);
53
+ checkNamespaces(semantic.effect);
54
+ // Fallback: traverse entire semantic object to catch any other primitive leaks
55
+ traverseSemantic(semantic, (value, path) => {
56
+ if (isTokenReference(value))
57
+ return; // ok
58
+ // if it's an object, it's nested map and was traversed; only primitives reach here
59
+ if (value === undefined || value === null)
60
+ return; // allow empty? treat as ok
61
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
62
+ throw new AxiomInvariantError('invariant-engine', `Primitive leak detected at semantic.${joinPath(path)} — found primitive value (${String(value)}). Leaves must be TokenReference objects.`, { path: joinPath(path) });
63
+ }
64
+ });
65
+ }
66
+ // 2. assertNoRawHex
67
+ const HEX_RE = /^#[0-9A-Fa-f]{3,8}$/;
68
+ export function assertNoRawHex(semantic) {
69
+ const checkNs = (nsObj) => {
70
+ if (nsObj === undefined)
71
+ return;
72
+ traverseSemantic(nsObj, (value, path) => {
73
+ if (typeof value === 'string' && HEX_RE.test(value)) {
74
+ throw new AxiomInvariantError('invariant-engine', `Raw hex value detected at semantic.${joinPath(path)} — found "${value}". Use TokenReference instead.`, { path: joinPath(path), value });
75
+ }
76
+ }, []);
77
+ };
78
+ // Explicit namespaces
79
+ checkNs(semantic.surface);
80
+ checkNs(semantic.elevation);
81
+ checkNs(semantic.typography);
82
+ checkNs(semantic.state);
83
+ checkNs(semantic.effect);
84
+ // Fallback full traverse
85
+ traverseSemantic(semantic, (value, path) => {
86
+ if (typeof value === 'string' && HEX_RE.test(value)) {
87
+ throw new AxiomInvariantError('invariant-engine', `Raw hex value detected at semantic.${joinPath(path)} — found "${value}". Use TokenReference instead.`, { path: joinPath(path), value });
88
+ }
89
+ });
90
+ }
91
+ // Helpers to collect primitive paths and map values
92
+ function collectPrimitiveMap(primitives) {
93
+ const map = new Map();
94
+ function walk(obj, parts) {
95
+ if (isPlainObject(obj)) {
96
+ for (const [k, v] of Object.entries(obj))
97
+ walk(v, parts.concat(k));
98
+ return;
99
+ }
100
+ if (isPrimitiveValue(obj) || isTokenReference(obj)) {
101
+ map.set(parts.join('.'), obj);
102
+ return;
103
+ }
104
+ if (obj === null || obj === undefined) {
105
+ // allow empty categories? treat as absent
106
+ return;
107
+ }
108
+ throw new AxiomInvariantError('invariant-engine', `collectPrimitiveMap: unsupported primitive value at ${parts.join('.')}: ${String(obj)}`, { path: parts.join('.') });
109
+ }
110
+ for (const [cat, val] of Object.entries(primitives)) {
111
+ walk(val, [cat]);
112
+ }
113
+ return map;
114
+ }
115
+ // Lightweight key set collector optimized for runtime validation.
116
+ // Builds a Set of primitive paths (e.g., 'color.gray.50') using an iterative
117
+ // traversal that minimizes intermediate array/string allocations.
118
+ function collectPrimitiveKeySet(primitives) {
119
+ const out = new Set();
120
+ const root = primitives;
121
+ const stack = [];
122
+ const path = [];
123
+ if (!isPlainObject(root))
124
+ return out;
125
+ stack.push({ node: root, keys: Object.keys(root), idx: 0 });
126
+ while (stack.length) {
127
+ const frame = stack[stack.length - 1];
128
+ if (frame.idx >= frame.keys.length) {
129
+ stack.pop();
130
+ if (path.length)
131
+ path.pop();
132
+ continue;
133
+ }
134
+ const key = frame.keys[frame.idx++];
135
+ const val = frame.node[key];
136
+ if (isPlainObject(val)) {
137
+ path.push(key);
138
+ stack.push({ node: val, keys: Object.keys(val), idx: 0 });
139
+ continue;
140
+ }
141
+ if (isPrimitiveValue(val) || isTokenReference(val)) {
142
+ const full = path.length ? path.concat(key).join('.') : key;
143
+ out.add(full);
144
+ continue;
145
+ }
146
+ // ignore null/undefined categories
147
+ if (val === null || val === undefined)
148
+ continue;
149
+ throw new AxiomInvariantError('invariant-engine', `collectPrimitiveKeySet: unsupported primitive value at ${path.concat(key).join('.')}: ${String(val)}`, { path: path.concat(key).join('.') });
150
+ }
151
+ return out;
152
+ }
153
+ // Module-scoped cache to avoid rebuilding the key set when `primitives`
154
+ // object identity is stable across calls (common at runtime).
155
+ const primitiveKeyCache = new WeakMap();
156
+ function getPrimitiveKeySet(primitives) {
157
+ const cached = primitiveKeyCache.get(primitives);
158
+ if (cached)
159
+ return cached;
160
+ const set = collectPrimitiveKeySet(primitives);
161
+ primitiveKeyCache.set(primitives, set);
162
+ return set;
163
+ }
164
+ // 4. assertNoCyclicReferences
165
+ export function assertNoCyclicReferences(semantic, primitives) {
166
+ const primMap = collectPrimitiveMap(primitives);
167
+ // Build graph edges for primitive refs only
168
+ const edges = new Map();
169
+ for (const [key, val] of primMap.entries()) {
170
+ if (isTokenReference(val)) {
171
+ const target = val.ref;
172
+ edges.set(key, [target]);
173
+ }
174
+ }
175
+ // DFS for cycles
176
+ const temp = new Set();
177
+ const perm = new Set();
178
+ function visit(n, stack) {
179
+ if (perm.has(n))
180
+ return;
181
+ if (temp.has(n)) {
182
+ const cycleStart = stack.indexOf(n);
183
+ const cycle = stack.slice(cycleStart).concat(n);
184
+ throw new AxiomInvariantError('invariant-engine', `Cyclic token reference detected: ${cycle.join(' -> ')}`, { cycle });
185
+ }
186
+ temp.add(n);
187
+ stack.push(n);
188
+ const nbrs = edges.get(n) || [];
189
+ for (const m of nbrs) {
190
+ visit(m, stack);
191
+ }
192
+ stack.pop();
193
+ temp.delete(n);
194
+ perm.add(n);
195
+ }
196
+ for (const n of edges.keys()) {
197
+ visit(n, []);
198
+ }
199
+ // Also check chains starting from semantic refs following primitive edges
200
+ const semanticRefs = new Set();
201
+ traverseSemantic(semantic, (value) => {
202
+ if (isTokenReference(value))
203
+ semanticRefs.add(value.ref);
204
+ });
205
+ for (const ref of semanticRefs) {
206
+ // follow chain until resolves to non-ref or detect cycle
207
+ const visited = new Set();
208
+ let current = ref;
209
+ const path = [];
210
+ while (true) {
211
+ if (visited.has(current)) {
212
+ const cycleStart = path.indexOf(current);
213
+ const cycle = path.slice(cycleStart).concat(current);
214
+ throw new AxiomInvariantError('invariant-engine', `Cyclic token reference chain detected starting from semantic ref ${ref}: ${cycle.join(' -> ')}`, { ref, cycle });
215
+ }
216
+ visited.add(current);
217
+ path.push(current);
218
+ const target = primMap.get(current);
219
+ if (target === undefined)
220
+ break; // unresolved handled elsewhere
221
+ if (isTokenReference(target)) {
222
+ current = target.ref;
223
+ continue;
224
+ }
225
+ break;
226
+ }
227
+ }
228
+ }
229
+ // 5. assertAllReferencesResolvable
230
+ export function assertAllReferencesResolvable(semantic, primitives) {
231
+ const primMap = collectPrimitiveMap(primitives);
232
+ const missing = [];
233
+ traverseSemantic(semantic, (value, path) => {
234
+ if (isTokenReference(value)) {
235
+ const ref = value.ref;
236
+ if (!primMap.has(ref))
237
+ missing.push(`semantic.${joinPath(path)} -> ${ref}`);
238
+ }
239
+ });
240
+ if (missing.length) {
241
+ throw new AxiomInvariantError('invariant-engine', `Unresolvable TokenReferences found:\n${missing.join('\n')}`, { missing });
242
+ }
243
+ }
244
+ // Shallow/resolved checks for runtime
245
+ export function assertAllReferencesResolvableShallow(semantic, primitives) {
246
+ const missing = [];
247
+ // shallow-check references in primary namespaces including surface/elevation/effect
248
+ const checkNs = (nsObj) => {
249
+ if (nsObj === undefined)
250
+ return;
251
+ traverseSemantic(nsObj, (value, path) => {
252
+ if (isTokenReference(value)) {
253
+ const ref = String(value.ref);
254
+ const parts = ref.split('.');
255
+ let node = primitives;
256
+ for (let i = 0; i < parts.length; i++) {
257
+ const p = parts[i];
258
+ if (node && typeof node === 'object' && p in node) {
259
+ node = node[p];
260
+ }
261
+ else {
262
+ missing.push(`semantic.${joinPath(path)} -> ${ref}`);
263
+ return;
264
+ }
265
+ }
266
+ if (node === undefined)
267
+ missing.push(`semantic.${joinPath(path)} -> ${ref}`);
268
+ }
269
+ });
270
+ };
271
+ checkNs(semantic.surface);
272
+ checkNs(semantic.elevation);
273
+ checkNs(semantic.typography);
274
+ checkNs(semantic.state);
275
+ checkNs(semantic.effect);
276
+ // fallback full traversal to catch any other namespaces
277
+ traverseSemantic(semantic, (value, path) => {
278
+ if (isTokenReference(value)) {
279
+ const ref = value.ref;
280
+ const parts = ref.split('.');
281
+ // walk primitives object shallowly to ensure path exists
282
+ let node = primitives;
283
+ for (let i = 0; i < parts.length; i++) {
284
+ const p = parts[i];
285
+ if (node && typeof node === 'object' && p in node) {
286
+ node = node[p];
287
+ }
288
+ else {
289
+ missing.push(`semantic.${joinPath(path)} -> ${ref}`);
290
+ break;
291
+ }
292
+ }
293
+ // if we walked to the end and found undefined/null, treat as missing
294
+ if (node === undefined)
295
+ missing.push(`semantic.${joinPath(path)} -> ${ref}`);
296
+ }
297
+ });
298
+ if (missing.length) {
299
+ throw new AxiomInvariantError('invariant-engine', `Unresolvable TokenReferences found (shallow):\n${missing.join('\n')}`, { missing });
300
+ }
301
+ }
302
+ // Deep resolver retained for CI and callers expecting full primitive map behavior
303
+ export function assertAllReferencesResolvableDeep(semantic, primitives) {
304
+ // original behavior: build primitive map and check existence of exact ref keys
305
+ const primMap = collectPrimitiveMap(primitives);
306
+ const missing = [];
307
+ traverseSemantic(semantic, (value, path) => {
308
+ if (isTokenReference(value)) {
309
+ const ref = value.ref;
310
+ if (!primMap.has(ref))
311
+ missing.push(`semantic.${joinPath(path)} -> ${ref}`);
312
+ }
313
+ });
314
+ if (missing.length) {
315
+ throw new AxiomInvariantError('invariant-engine', `Unresolvable TokenReferences found (deep):\n${missing.join('\n')}`, { missing });
316
+ }
317
+ }
318
+ // 3. assertAllAxesRegistered
319
+ export function assertAllAxesRegistered(expectedAxes, registry) {
320
+ const missing = expectedAxes.filter(a => !(a in registry));
321
+ if (missing.length) {
322
+ throw new AxiomInvariantError('invariant-engine', `AxisRegistry missing handlers for axes: ${missing.join(', ')}`, { missing });
323
+ }
324
+ }
325
+ /**
326
+ * Runtime invariants:
327
+ * Must remain O(n).
328
+ * Safe for theme switching at runtime.
329
+ */
330
+ export function runRuntimeInvariants(semantic, primitives, expectedAxes, registry) {
331
+ // Single-pass runtime validation combining primitive leak, raw-hex detection,
332
+ // and shallow reference resolvability in one DFS to remain O(n).
333
+ validateRuntimeSemantic(semantic, primitives);
334
+ // Axis existence check is cheap
335
+ assertAllAxesRegistered(expectedAxes, registry);
336
+ }
337
+ /**
338
+ * Runtime single-pass semantic validator.
339
+ * Visits each leaf exactly once and enforces:
340
+ * - leaf must be a TokenReference
341
+ * - raw hex string leaves are rejected
342
+ * - token references are shallowly resolvable against `primitives`
343
+ *
344
+ * Complexity: O(n) where n is number of nodes in `semantic` (plus shallow path checks).
345
+ */
346
+ export function validateRuntimeSemantic(semantic, primitives) {
347
+ // Precompute primitive key set once for O(n) shallow lookups (cached)
348
+ const primSet = getPrimitiveKeySet(primitives);
349
+ traverseSemantic(semantic, (value, path) => {
350
+ if (value === undefined || value === null)
351
+ return; // allow empty nodes
352
+ if (isTokenReference(value)) {
353
+ // shallow resolvability check using precomputed map
354
+ const ref = value.ref;
355
+ if (!primSet.has(ref)) {
356
+ throw new AxiomInvariantError('invariant-engine', `Unresolvable TokenReference found: semantic.${joinPath(path)} -> ${ref}`, { path: joinPath(path), ref });
357
+ }
358
+ return;
359
+ }
360
+ if (typeof value === 'string') {
361
+ if (HEX_RE.test(value)) {
362
+ throw new AxiomInvariantError('invariant-engine', `Raw hex value detected at semantic.${joinPath(path)} — found \"${value}\". Use TokenReference instead.`, { path: joinPath(path), value });
363
+ }
364
+ // any other string leaf is considered a primitive leak
365
+ throw new AxiomInvariantError('invariant-engine', `Primitive leak detected at semantic.${joinPath(path)} — found primitive value (${String(value)}). Leaves must be TokenReference objects.`, { path: joinPath(path) });
366
+ }
367
+ if (typeof value === 'number' || typeof value === 'boolean') {
368
+ throw new AxiomInvariantError('invariant-engine', `Primitive leak detected at semantic.${joinPath(path)} — found primitive value (${String(value)}). Leaves must be TokenReference objects.`, { path: joinPath(path) });
369
+ }
370
+ // other unexpected types are caught by original checks in full traversal
371
+ });
372
+ }
373
+ // CI-only expensive check: detect deep chains and very large resolution depth
374
+ function assertResolutionDepthWithinLimit(semantic, primitives, maxDepth = 1000) {
375
+ const primMap = collectPrimitiveMap(primitives);
376
+ // follow reference chains starting from every primitive and semantic ref
377
+ const startPoints = new Set();
378
+ for (const k of primMap.keys())
379
+ startPoints.add(k);
380
+ traverseSemantic(semantic, (value) => {
381
+ if (isTokenReference(value))
382
+ startPoints.add(value.ref);
383
+ });
384
+ const visitedGlobal = new Set();
385
+ function depthVisit(node, depth, stack) {
386
+ if (depth > maxDepth) {
387
+ throw new AxiomInvariantError('invariant-engine', `Resolution depth exceeded ${maxDepth} while following chain: ${stack.concat(node).join(' -> ')}`, { maxDepth, stack });
388
+ }
389
+ if (visitedGlobal.has(node))
390
+ return;
391
+ visitedGlobal.add(node);
392
+ const target = primMap.get(node);
393
+ if (!target)
394
+ return; // unresolved handled elsewhere
395
+ if (isTokenReference(target)) {
396
+ depthVisit(target.ref, depth + 1, stack.concat(node));
397
+ }
398
+ }
399
+ for (const s of startPoints) {
400
+ depthVisit(s, 0, []);
401
+ }
402
+ }
403
+ // CI-only: run a more exhaustive cycle detection across the flattened graph.
404
+ function assertNoDeepGraphCycles(semantic, primitives) {
405
+ const primMap = collectPrimitiveMap(primitives);
406
+ const edges = new Map();
407
+ // Build edges for primitives where value is a reference
408
+ for (const [k, v] of primMap.entries()) {
409
+ if (isTokenReference(v)) {
410
+ edges.set(k, [v.ref]);
411
+ }
412
+ else {
413
+ edges.set(k, []);
414
+ }
415
+ }
416
+ // Standard DFS cycle detection across all nodes
417
+ const temp = new Set();
418
+ const perm = new Set();
419
+ function visit(n, stack) {
420
+ if (perm.has(n))
421
+ return;
422
+ if (temp.has(n)) {
423
+ const cycleStart = stack.indexOf(n);
424
+ const cycle = stack.slice(cycleStart).concat(n);
425
+ throw new AxiomInvariantError('invariant-engine', `CI Deep cycle detected: ${cycle.join(' -> ')}`, { cycle });
426
+ }
427
+ temp.add(n);
428
+ stack.push(n);
429
+ const nbrs = edges.get(n) || [];
430
+ for (const m of nbrs) {
431
+ visit(m, stack);
432
+ }
433
+ stack.pop();
434
+ temp.delete(n);
435
+ perm.add(n);
436
+ }
437
+ for (const n of edges.keys())
438
+ visit(n, []);
439
+ }
440
+ // CI-only: ensure state namespace contains required roles and no unexpected keys
441
+ export function assertStateExhaustive(semantic) {
442
+ const st = semantic?.state;
443
+ if (!isPlainObject(st)) {
444
+ throw new AxiomInvariantError('invariant-engine', 'Missing or invalid state namespace in semantic tokens', { path: 'state' });
445
+ }
446
+ const allowedTop = new Set(['hover', 'active', 'focus', 'disabled', 'selected']);
447
+ for (const k of Object.keys(st)) {
448
+ if (!allowedTop.has(k)) {
449
+ throw new AxiomInvariantError('invariant-engine', `Unexpected state namespace key: state.${k}`, { path: `state.${k}` });
450
+ }
451
+ }
452
+ // Expected structure
453
+ const expected = {
454
+ hover: ['overlay'],
455
+ active: ['overlay', 'elevation'],
456
+ focus: ['border'],
457
+ disabled: ['opacity'],
458
+ selected: ['overlay', 'border']
459
+ };
460
+ for (const [section, subs] of Object.entries(expected)) {
461
+ if (!(section in st)) {
462
+ throw new AxiomInvariantError('invariant-engine', `Missing state.${section} namespace`, { path: `state.${section}` });
463
+ }
464
+ const node = st[section];
465
+ if (!isPlainObject(node)) {
466
+ throw new AxiomInvariantError('invariant-engine', `state.${section} must be an object`, { path: `state.${section}` });
467
+ }
468
+ const foundKeys = Object.keys(node);
469
+ for (const want of subs) {
470
+ if (!(want in node)) {
471
+ throw new AxiomInvariantError('invariant-engine', `Missing state.${section}.${want}`, { path: `state.${section}.${want}` });
472
+ }
473
+ }
474
+ for (const found of foundKeys) {
475
+ if (!subs.includes(found)) {
476
+ throw new AxiomInvariantError('invariant-engine', `Unexpected state role found: state.${section}.${found}`, { path: `state.${section}.${found}` });
477
+ }
478
+ }
479
+ }
480
+ }
481
+ // CI-only: ensure typography namespace contains required roles and no unexpected keys
482
+ export function assertTypographyExhaustive(semantic) {
483
+ const ty = semantic?.typography;
484
+ if (!isPlainObject(ty)) {
485
+ throw new AxiomInvariantError('invariant-engine', 'Missing or invalid typography namespace in semantic tokens', { path: 'typography' });
486
+ }
487
+ const allowedTop = new Set(['display', 'heading', 'title', 'body', 'label', 'caption', 'overline']);
488
+ // no unknown top-level keys under typography
489
+ for (const k of Object.keys(ty)) {
490
+ if (!allowedTop.has(k)) {
491
+ throw new AxiomInvariantError('invariant-engine', `Unexpected typography namespace key: typography.${k}`, { path: `typography.${k}` });
492
+ }
493
+ }
494
+ const expected = {
495
+ display: ['xl', 'lg'],
496
+ heading: ['h1', 'h2', 'h3', 'h4'],
497
+ title: ['lg', 'md', 'sm'],
498
+ body: ['lg', 'md', 'sm'],
499
+ label: ['lg', 'md', 'sm'],
500
+ caption: null,
501
+ overline: null
502
+ };
503
+ for (const [section, subs] of Object.entries(expected)) {
504
+ if (!(section in ty)) {
505
+ throw new AxiomInvariantError('invariant-engine', `Missing typography.${section} namespace`, { path: `typography.${section}` });
506
+ }
507
+ const node = ty[section];
508
+ if (subs === null) {
509
+ // caption/overline should exist and be an object (leaf role definition)
510
+ if (!isPlainObject(node)) {
511
+ throw new AxiomInvariantError('invariant-engine', `Typography.${section} must be an object role definition`, { path: `typography.${section}` });
512
+ }
513
+ continue;
514
+ }
515
+ if (!isPlainObject(node)) {
516
+ throw new AxiomInvariantError('invariant-engine', `Typography.${section} must be an object containing roles`, { path: `typography.${section}` });
517
+ }
518
+ const foundKeys = Object.keys(node);
519
+ // ensure all expected roles present
520
+ for (const want of subs) {
521
+ if (!(want in node)) {
522
+ throw new AxiomInvariantError('invariant-engine', `Missing typography.${section}.${want}`, { path: `typography.${section}.${want}` });
523
+ }
524
+ }
525
+ // reject unexpected role keys
526
+ for (const found of foundKeys) {
527
+ if (!subs.includes(found)) {
528
+ throw new AxiomInvariantError('invariant-engine', `Unexpected typography role found: typography.${section}.${found}`, { path: `typography.${section}.${found}` });
529
+ }
530
+ }
531
+ }
532
+ }
533
+ /**
534
+ * validateTheme runs configured invariants on the provided token graphs.
535
+ *
536
+ * Options:
537
+ * - `level` (default: `InvariantLevel.Runtime`) — selects check set:
538
+ * - `Compile`: documented-only; no runtime checks performed here. Intended to indicate TypeScript-enforced rules.
539
+ * - `Runtime`: lightweight checks suitable for production (no deep graph analysis).
540
+ * - `CI`: includes expensive deep-graph and performance checks intended for CI.
541
+ */
542
+ export function validateTheme(semantic, primitives, expectedAxes, registry, options) {
543
+ const level = options?.level ?? 'runtime';
544
+ // Route runtime-safe checks through a single helper that guarantees O(n) behavior.
545
+ if (level === 'runtime' || level === 'ci') {
546
+ runRuntimeInvariants(semantic, primitives, expectedAxes, registry);
547
+ }
548
+ // CI-only invariants (expensive, deep graph analysis)
549
+ if (level === 'ci') {
550
+ runCIInvariants(semantic, primitives);
551
+ }
552
+ }
553
+ /**
554
+ * CI invariants:
555
+ * Exhaustive validation.
556
+ * May be O(n + e).
557
+ * Intended for build/CI enforcement.
558
+ */
559
+ export function runCIInvariants(semantic, primitives) {
560
+ // CI-only structural checks for specific namespaces
561
+ // Ensure typography namespace contains required roles and no unknown keys
562
+ assertTypographyExhaustive(semantic);
563
+ // Ensure state namespace contains required roles and no unknown keys
564
+ assertStateExhaustive(semantic);
565
+ // 1) Re-run cyclic checks that inspect primitive graphs and semantic->primitive chains
566
+ assertNoCyclicReferences(semantic, primitives);
567
+ // 2) Deep graph cycle detection across the flattened primitive graph (expensive)
568
+ assertNoDeepGraphCycles(semantic, primitives);
569
+ // 3) Performance guard: detect extremely long resolution chains
570
+ assertResolutionDepthWithinLimit(semantic, primitives, 1000);
571
+ // 4) Deep reference resolvability check
572
+ assertAllReferencesResolvableDeep(semantic, primitives);
573
+ }
574
+ // Example usage (no runtime resolution):
575
+ /*
576
+ import { validateTheme } from './invariants';
577
+ import type { SemanticTokens, PrimitiveTokens } from '@axiom-core/token-schema';
578
+ import type { ThemeAxis } from '@axiom-core/core-engine';
579
+
580
+ const primitives: PrimitiveTokens = { color: { gray100: '#f7f7f7' }, spacing: {}, radius: {}, typography: {} };
581
+ const semantic: SemanticTokens = {
582
+ surface: { card: { background: { ref: 'color.gray100' } } },
583
+ content: {}, border: {}, overlay: {}, elevation: {}, shadow: {}
584
+ };
585
+ const axes: ThemeAxis[] = ['mode','brand','density','contrast','material'];
586
+ const registry = { mode: {}, brand: {}, density: {}, contrast: {}, material: {} };
587
+ validateTheme(semantic, primitives, axes, registry);
588
+ */
589
+ //# sourceMappingURL=invariants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invariants.js","sourceRoot":"","sources":["../src/invariants.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@axiom-core/invariant-engine",
3
+ "version": "0.1.0",
4
+ "description": "Axiom Core — runtime invariant validation engine",
5
+ "private": false,
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./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
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "sideEffects": false,
20
+ "dependencies": {
21
+ "@axiom-core/token-schema": "0.1.0",
22
+ "@axiom-core/core-engine": "0.1.0"
23
+ },
24
+ "license": "MIT",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/Haneefe/Axiom-Core.git"
28
+ },
29
+ "homepage": "https://github.com/Haneefe/Axiom-Core",
30
+ "bugs": {
31
+ "url": "https://github.com/Haneefe/Axiom-Core/issues"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "scripts": {
37
+ "build": "tsc -b",
38
+ "clean": "rimraf dist",
39
+ "dev": "tsc -w -p tsconfig.json"
40
+ }
41
+ }