@freeappstore/compliance 0.7.17 → 0.7.18
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/dist/checks/no-brand-overrides.d.ts +2 -0
- package/dist/checks/no-brand-overrides.d.ts.map +1 -1
- package/dist/checks/no-brand-overrides.js +17 -4
- package/dist/checks/no-brand-overrides.js.map +1 -1
- package/dist/lib/font-variables.d.ts +8 -0
- package/dist/lib/font-variables.d.ts.map +1 -0
- package/dist/lib/font-variables.js +202 -0
- package/dist/lib/font-variables.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FileSource } from '../lib/file-source.js';
|
|
2
|
+
import { type FontVariables } from '../lib/font-variables.js';
|
|
2
3
|
import type { CheckResult } from '../types.js';
|
|
3
4
|
/**
|
|
4
5
|
* Apps and games on the platform must look consistent with the storefront
|
|
@@ -21,5 +22,6 @@ import type { CheckResult } from '../types.js';
|
|
|
21
22
|
export declare function checkNoBrandOverrides(source: FileSource): Promise<CheckResult>;
|
|
22
23
|
export declare function scanContent(filename: string, content: string, opts?: {
|
|
23
24
|
skipVarRedefs?: boolean;
|
|
25
|
+
fontVariables?: FontVariables;
|
|
24
26
|
}): string[];
|
|
25
27
|
//# sourceMappingURL=no-brand-overrides.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-brand-overrides.d.ts","sourceRoot":"","sources":["../../src/checks/no-brand-overrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"no-brand-overrides.d.ts","sourceRoot":"","sources":["../../src/checks/no-brand-overrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAEL,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAmDpF;AA2DD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,aAAa,CAAA;CAAO,GACpE,MAAM,EAAE,CA0EV"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { collectFontVariables, resolveFontVariables, splitFontStack, } from '../lib/font-variables.js';
|
|
1
2
|
import { stripCommentsOnly, stripCssComments } from '../lib/strip.js';
|
|
2
3
|
/**
|
|
3
4
|
* Apps and games on the platform must look consistent with the storefront
|
|
@@ -19,6 +20,7 @@ import { stripCommentsOnly, stripCssComments } from '../lib/strip.js';
|
|
|
19
20
|
*/
|
|
20
21
|
export async function checkNoBrandOverrides(source) {
|
|
21
22
|
const issues = [];
|
|
23
|
+
const files = [];
|
|
22
24
|
for await (const path of source.list()) {
|
|
23
25
|
const ext = extOf(path);
|
|
24
26
|
if (!SCANNED_EXTS.has(ext))
|
|
@@ -32,13 +34,17 @@ export async function checkNoBrandOverrides(source) {
|
|
|
32
34
|
// we're auditing. For .css/.scss use the css-only stripper (no `//`
|
|
33
35
|
// syntax at the language level).
|
|
34
36
|
const content = ext === '.css' || ext === '.scss' ? stripCssComments(raw) : stripCommentsOnly(raw);
|
|
37
|
+
files.push({ path, content });
|
|
38
|
+
}
|
|
39
|
+
const fontVariables = collectFontVariables(files.map((file) => file.content));
|
|
40
|
+
for (const { path, content } of files) {
|
|
35
41
|
// Canonical theme file: the platform's CSS variables ARE defined here.
|
|
36
42
|
// Apps own this file post-scaffold (they can technically modify token
|
|
37
43
|
// values, and we accept the imperfection — the loud places where a
|
|
38
44
|
// brand override actually causes inconsistency are inline styles +
|
|
39
45
|
// per-component CSS, which this check still covers).
|
|
40
46
|
const isThemeFile = path === 'web/src/index.css' || path === 'web/src/main.css';
|
|
41
|
-
const fileIssues = scanContent(path, content, { skipVarRedefs: isThemeFile });
|
|
47
|
+
const fileIssues = scanContent(path, content, { skipVarRedefs: isThemeFile, fontVariables });
|
|
42
48
|
issues.push(...fileIssues);
|
|
43
49
|
// Cap at 10 — beyond that the user has bigger problems and we don't
|
|
44
50
|
// want a 200-line failure report.
|
|
@@ -151,6 +157,7 @@ export function scanContent(filename, content, opts = {}) {
|
|
|
151
157
|
// and false-positives. Real SVG-in-JSX with kebab fontFamily is rare
|
|
152
158
|
// enough to skip.
|
|
153
159
|
const fontHeadRe = /(font-family\s*:|fontFamily\s*[:=])/g;
|
|
160
|
+
const variables = opts.fontVariables ?? collectFontVariables([content]);
|
|
154
161
|
const quotedRe = /(['"`])([^'"`\n]+)\1/g;
|
|
155
162
|
let m;
|
|
156
163
|
while ((m = fontHeadRe.exec(content)) !== null) {
|
|
@@ -158,16 +165,22 @@ export function scanContent(filename, content, opts = {}) {
|
|
|
158
165
|
const start = m.index + m[0].length;
|
|
159
166
|
const value = sliceFontValue(content, start, isJsx);
|
|
160
167
|
const quotedStrings = [...value.matchAll(quotedRe)].map((x) => x[2]);
|
|
161
|
-
const candidates = quotedStrings.length > 0 ? quotedStrings : [value];
|
|
168
|
+
const candidates = isJsx && quotedStrings.length > 0 ? quotedStrings : [value];
|
|
162
169
|
let flagged = false;
|
|
163
170
|
for (const cand of candidates) {
|
|
164
|
-
const
|
|
165
|
-
|
|
171
|
+
const fontValue = isJsx ? cand : cand.replace(/\s*!important\s*$/i, '');
|
|
172
|
+
const resolved = resolveFontVariables(fontValue, variables) ?? [fontValue];
|
|
173
|
+
const tokens = resolved
|
|
174
|
+
.flatMap(splitFontStack)
|
|
166
175
|
.map((t) => t
|
|
167
176
|
.trim()
|
|
168
177
|
.replace(/^["']|["']$/g, '')
|
|
169
178
|
.toLowerCase())
|
|
170
179
|
.filter(Boolean);
|
|
180
|
+
if (tokens.length === 0 && /var\(/i.test(cand)) {
|
|
181
|
+
out.push(`${filename}:${lineNumberAt(content, m.index)} unresolved font "${cand.trim()}"`);
|
|
182
|
+
flagged = true;
|
|
183
|
+
}
|
|
171
184
|
for (const t of tokens) {
|
|
172
185
|
if (!ALLOWED_FONT_TOKENS.has(t)) {
|
|
173
186
|
const line = lineNumberAt(content, m.index);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-brand-overrides.js","sourceRoot":"","sources":["../../src/checks/no-brand-overrides.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGtE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAkB;IAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"no-brand-overrides.js","sourceRoot":"","sources":["../../src/checks/no-brand-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Keep every declaration: a different selector/file may shadow the theme. */
|
|
2
|
+
export type FontVariables = ReadonlyMap<string, ReadonlySet<string>>;
|
|
3
|
+
export declare function collectFontVariables(contents: Iterable<string>): FontVariables;
|
|
4
|
+
/** Split CSS lists without treating a var() fallback's commas as separators. */
|
|
5
|
+
export declare function splitFontStack(value: string): string[];
|
|
6
|
+
/** Null means unresolved/invalid, never an exemption from font validation. */
|
|
7
|
+
export declare function resolveFontVariables(value: string, variables: FontVariables): string[] | null;
|
|
8
|
+
//# sourceMappingURL=font-variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-variables.d.ts","sourceRoot":"","sources":["../../src/lib/font-variables.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAErE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa,CAsC9E;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA4BtD;AA+CD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,MAAM,EAAE,GAAG,IAAI,CAoE7F"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
export function collectFontVariables(contents) {
|
|
2
|
+
const variables = new Map();
|
|
3
|
+
for (const content of contents) {
|
|
4
|
+
const declarations = /(?:^|[;{\s])(--[\w-]+)\s*:/g;
|
|
5
|
+
for (const match of content.matchAll(declarations)) {
|
|
6
|
+
const start = match.index + match[0].length;
|
|
7
|
+
let end = start;
|
|
8
|
+
let quote = '';
|
|
9
|
+
let depth = 0;
|
|
10
|
+
for (; end < content.length; end++) {
|
|
11
|
+
const char = content[end];
|
|
12
|
+
if (char === '\\') {
|
|
13
|
+
end++;
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (quote) {
|
|
17
|
+
if (char === quote)
|
|
18
|
+
quote = '';
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (char === '"' || char === "'") {
|
|
22
|
+
quote = char;
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (char === '(')
|
|
26
|
+
depth++;
|
|
27
|
+
if (char === ')')
|
|
28
|
+
depth--;
|
|
29
|
+
if (!depth && /[;{}]/.test(char))
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
const values = variables.get(match[1]) ?? new Set();
|
|
33
|
+
values.add(content
|
|
34
|
+
.slice(start, end)
|
|
35
|
+
.trim()
|
|
36
|
+
.replace(/\s*!important\s*$/i, ''));
|
|
37
|
+
variables.set(match[1], values);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return variables;
|
|
41
|
+
}
|
|
42
|
+
/** Split CSS lists without treating a var() fallback's commas as separators. */
|
|
43
|
+
export function splitFontStack(value) {
|
|
44
|
+
const parts = [];
|
|
45
|
+
let quote = '';
|
|
46
|
+
let depth = 0;
|
|
47
|
+
let start = 0;
|
|
48
|
+
for (let i = 0; i < value.length; i++) {
|
|
49
|
+
const char = value[i];
|
|
50
|
+
if (char === '\\') {
|
|
51
|
+
i++;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (quote) {
|
|
55
|
+
if (char === quote)
|
|
56
|
+
quote = '';
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (char === '"' || char === "'") {
|
|
60
|
+
quote = char;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (char === '(')
|
|
64
|
+
depth++;
|
|
65
|
+
if (char === ')')
|
|
66
|
+
depth--;
|
|
67
|
+
if (char === ',' && !depth) {
|
|
68
|
+
parts.push(value.slice(start, i));
|
|
69
|
+
start = i + 1;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
parts.push(value.slice(start));
|
|
73
|
+
return parts;
|
|
74
|
+
}
|
|
75
|
+
/** CSS dependency cycles invalidate every variable in the cycle, including fallbacks. */
|
|
76
|
+
function cyclicVariables(variables) {
|
|
77
|
+
const graph = new Map();
|
|
78
|
+
for (const [name, values] of variables) {
|
|
79
|
+
const references = new Set();
|
|
80
|
+
for (const value of values) {
|
|
81
|
+
const unquoted = value.replace(/"[^"\n]*"|'[^'\n]*'/g, '');
|
|
82
|
+
for (const reference of unquoted.matchAll(/var\(\s*(--[\w-]+)/gi))
|
|
83
|
+
references.add(reference[1]);
|
|
84
|
+
}
|
|
85
|
+
graph.set(name, references);
|
|
86
|
+
}
|
|
87
|
+
const cyclic = new Set();
|
|
88
|
+
const indices = new Map();
|
|
89
|
+
const lows = new Map();
|
|
90
|
+
const stack = [];
|
|
91
|
+
const active = new Set();
|
|
92
|
+
let index = 0;
|
|
93
|
+
// Strongly connected components include cycles reached through already visited branches.
|
|
94
|
+
function visit(name) {
|
|
95
|
+
indices.set(name, index);
|
|
96
|
+
lows.set(name, index++);
|
|
97
|
+
stack.push(name);
|
|
98
|
+
active.add(name);
|
|
99
|
+
for (const next of graph.get(name) ?? []) {
|
|
100
|
+
if (!indices.has(next)) {
|
|
101
|
+
visit(next);
|
|
102
|
+
lows.set(name, Math.min(lows.get(name), lows.get(next)));
|
|
103
|
+
}
|
|
104
|
+
else if (active.has(next))
|
|
105
|
+
lows.set(name, Math.min(lows.get(name), indices.get(next)));
|
|
106
|
+
}
|
|
107
|
+
if (lows.get(name) !== indices.get(name))
|
|
108
|
+
return;
|
|
109
|
+
const component = [];
|
|
110
|
+
let next;
|
|
111
|
+
do {
|
|
112
|
+
next = stack.pop();
|
|
113
|
+
active.delete(next);
|
|
114
|
+
component.push(next);
|
|
115
|
+
} while (next !== name);
|
|
116
|
+
if (component.length > 1 || graph.get(name)?.has(name))
|
|
117
|
+
for (const member of component)
|
|
118
|
+
cyclic.add(member);
|
|
119
|
+
}
|
|
120
|
+
for (const name of graph.keys())
|
|
121
|
+
if (!indices.has(name))
|
|
122
|
+
visit(name);
|
|
123
|
+
return cyclic;
|
|
124
|
+
}
|
|
125
|
+
/** Null means unresolved/invalid, never an exemption from font validation. */
|
|
126
|
+
export function resolveFontVariables(value, variables) {
|
|
127
|
+
const cyclic = cyclicVariables(variables);
|
|
128
|
+
function expand(input, trail, depth) {
|
|
129
|
+
if (depth > 32)
|
|
130
|
+
return null;
|
|
131
|
+
let quote = '';
|
|
132
|
+
for (let i = 0; i < input.length; i++) {
|
|
133
|
+
const char = input[i];
|
|
134
|
+
if (char === '\\') {
|
|
135
|
+
i++;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (quote) {
|
|
139
|
+
if (char === quote)
|
|
140
|
+
quote = '';
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (char === '"' || char === "'") {
|
|
144
|
+
quote = char;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (input.slice(i, i + 4).toLowerCase() !== 'var(')
|
|
148
|
+
continue;
|
|
149
|
+
let end = i + 4;
|
|
150
|
+
let nesting = 1;
|
|
151
|
+
let innerQuote = '';
|
|
152
|
+
for (; end < input.length; end++) {
|
|
153
|
+
const inner = input[end];
|
|
154
|
+
if (inner === '\\') {
|
|
155
|
+
end++;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (innerQuote) {
|
|
159
|
+
if (inner === innerQuote)
|
|
160
|
+
innerQuote = '';
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (inner === '"' || inner === "'") {
|
|
164
|
+
innerQuote = inner;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (inner === '(')
|
|
168
|
+
nesting++;
|
|
169
|
+
if (inner === ')' && --nesting === 0)
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
if (nesting)
|
|
173
|
+
return null;
|
|
174
|
+
const args = splitFontStack(input.slice(i + 4, end));
|
|
175
|
+
const name = args.shift().trim();
|
|
176
|
+
if (!/^--[\w-]+$/.test(name))
|
|
177
|
+
return null;
|
|
178
|
+
const fallback = args.length ? args.join(',') : null;
|
|
179
|
+
const nextTrail = new Set([...trail, name]);
|
|
180
|
+
const declarations = !trail.has(name) && !cyclic.has(name) ? variables.get(name) : undefined;
|
|
181
|
+
const choices = declarations?.size ? [...declarations] : [null];
|
|
182
|
+
const output = [];
|
|
183
|
+
for (const declaration of choices) {
|
|
184
|
+
let values = declaration === null ? null : expand(declaration, nextTrail, depth + 1);
|
|
185
|
+
if (values === null && fallback !== null)
|
|
186
|
+
values = expand(fallback, trail, depth + 1);
|
|
187
|
+
if (values === null)
|
|
188
|
+
return null;
|
|
189
|
+
for (const resolved of values) {
|
|
190
|
+
const rest = expand(input.slice(0, i) + resolved + input.slice(end + 1), trail, depth + 1);
|
|
191
|
+
if (rest === null || output.length + rest.length > 32)
|
|
192
|
+
return null;
|
|
193
|
+
output.push(...rest);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return output;
|
|
197
|
+
}
|
|
198
|
+
return [input];
|
|
199
|
+
}
|
|
200
|
+
return expand(value, new Set(), 0);
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=font-variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-variables.js","sourceRoot":"","sources":["../../src/lib/font-variables.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED