@freegamestore/compliance 0.4.4 → 0.6.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/dist/checks/audio-mute-respect.d.ts.map +1 -1
- package/dist/checks/audio-mute-respect.js +9 -3
- package/dist/checks/audio-mute-respect.js.map +1 -1
- package/dist/checks/dark-mode.d.ts.map +1 -1
- package/dist/checks/dark-mode.js +10 -2
- package/dist/checks/dark-mode.js.map +1 -1
- package/dist/checks/html-meta.d.ts.map +1 -1
- package/dist/checks/html-meta.js +7 -2
- package/dist/checks/html-meta.js.map +1 -1
- package/dist/checks/no-brand-overrides.d.ts.map +1 -1
- package/dist/checks/no-brand-overrides.js +11 -2
- package/dist/checks/no-brand-overrides.js.map +1 -1
- package/dist/checks/no-tracking.d.ts.map +1 -1
- package/dist/checks/no-tracking.js +13 -3
- package/dist/checks/no-tracking.js.map +1 -1
- package/dist/checks/pwa-meta.d.ts.map +1 -1
- package/dist/checks/pwa-meta.js +6 -2
- package/dist/checks/pwa-meta.js.map +1 -1
- package/dist/checks/pwa-offline.d.ts +7 -4
- package/dist/checks/pwa-offline.d.ts.map +1 -1
- package/dist/checks/pwa-offline.js +13 -94
- package/dist/checks/pwa-offline.js.map +1 -1
- package/dist/checks/unsafe-vh.d.ts.map +1 -1
- package/dist/checks/unsafe-vh.js +18 -6
- package/dist/checks/unsafe-vh.js.map +1 -1
- package/dist/lib/strip.d.ts +60 -0
- package/dist/lib/strip.d.ts.map +1 -0
- package/dist/lib/strip.js +169 -0
- package/dist/lib/strip.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-mute-respect.d.ts","sourceRoot":"","sources":["../../src/checks/audio-mute-respect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"audio-mute-respect.d.ts","sourceRoot":"","sources":["../../src/checks/audio-mute-respect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAyB/C,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA4CpF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { stripForExt } from '../lib/strip.js';
|
|
1
2
|
/**
|
|
2
3
|
* Any code that produces sound from the page directly — Web Audio API,
|
|
3
4
|
* <audio> elements, or kaplay's loadSound. These all play on the user's
|
|
@@ -21,11 +22,16 @@ export async function checkAudioMuteRespect(source) {
|
|
|
21
22
|
const rawAudioFiles = [];
|
|
22
23
|
let sdkAware = false;
|
|
23
24
|
for await (const path of source.list()) {
|
|
24
|
-
|
|
25
|
+
const ext = extOf(path);
|
|
26
|
+
if (!SCAN_EXTS.has(ext))
|
|
25
27
|
continue;
|
|
26
|
-
const
|
|
27
|
-
if (!
|
|
28
|
+
const raw = await source.read(path);
|
|
29
|
+
if (!raw)
|
|
28
30
|
continue;
|
|
31
|
+
// Strip comments + string contents so a `// example: new Audio()`
|
|
32
|
+
// doc note doesn't fire, and a `const example = "useGameSounds"`
|
|
33
|
+
// string doesn't falsely satisfy the SDK marker.
|
|
34
|
+
const content = stripForExt(raw, ext);
|
|
29
35
|
if (RAW_AUDIO_RE.test(content))
|
|
30
36
|
rawAudioFiles.push(path);
|
|
31
37
|
if (SDK_MUTE_RE.test(content))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-mute-respect.js","sourceRoot":"","sources":["../../src/checks/audio-mute-respect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audio-mute-respect.js","sourceRoot":"","sources":["../../src/checks/audio-mute-respect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAChB,yFAAyF,CAAC;AAE5F;;;;GAIG;AACH,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAkB;IAC5D,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,kEAAkE;QAClE,iEAAiE;QACjE,iDAAiD;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,QAAQ,GAAG,IAAI,CAAC;IACjD,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0BAA0B;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,gBAAgB,aAAa,CAAC,MAAM,qCAAqC;SAClF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,qBAAqB,aAAa,CAAC,MAAM,0CAA0C,aAAa;aACrG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrD,WAAW,EAAE;YACX,kJAAkJ;YAClJ,yIAAyI;SAC1I;KACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dark-mode.d.ts","sourceRoot":"","sources":["../../src/checks/dark-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"dark-mode.d.ts","sourceRoot":"","sources":["../../src/checks/dark-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAmC5E"}
|
package/dist/checks/dark-mode.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isGameProject } from '../lib/project-type.js';
|
|
2
|
+
import { stripCommentsOnly, stripCssComments } from '../lib/strip.js';
|
|
2
3
|
/**
|
|
3
4
|
* Apps on FreeAppStore should respect the user's system colour-scheme
|
|
4
5
|
* preference — dark interfaces are the default for many users on iOS
|
|
@@ -28,9 +29,16 @@ export async function checkDarkMode(source) {
|
|
|
28
29
|
continue;
|
|
29
30
|
if (!/\.(?:css|scss|tsx?|jsx?|html)$/i.test(path))
|
|
30
31
|
continue;
|
|
31
|
-
const
|
|
32
|
-
if (!
|
|
32
|
+
const raw = await source.read(path);
|
|
33
|
+
if (!raw)
|
|
33
34
|
continue;
|
|
35
|
+
// Strip comments so a `// We could use prefers-color-scheme` note
|
|
36
|
+
// doesn't false-pass the check. Preserve string contents — the
|
|
37
|
+
// signal might be in a template literal that injects CSS.
|
|
38
|
+
const lower = path.toLowerCase();
|
|
39
|
+
const content = lower.endsWith('.css') || lower.endsWith('.scss')
|
|
40
|
+
? stripCssComments(raw)
|
|
41
|
+
: stripCommentsOnly(raw);
|
|
34
42
|
if (/prefers-color-scheme|data-theme|color-scheme\s*:/i.test(content)) {
|
|
35
43
|
return { name: 'Dark mode support', status: 'pass', detail: `signal in ${path}` };
|
|
36
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dark-mode.js","sourceRoot":"","sources":["../../src/checks/dark-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"dark-mode.js","sourceRoot":"","sources":["../../src/checks/dark-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGtE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAkB;IACpD,IAAI,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,8BAA8B;SACvC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QAC3C,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAC5D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,kEAAkE;QAClE,+DAA+D;QAC/D,0DAA0D;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GACX,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/C,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;YACvB,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,mDAAmD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE,EAAE,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,wEAAwE;QAChF,WAAW,EAAE;YACX,iFAAiF;YACjF,yFAAyF;SAC1F;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-meta.d.ts","sourceRoot":"","sources":["../../src/checks/html-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"html-meta.d.ts","sourceRoot":"","sources":["../../src/checks/html-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAkC5E"}
|
package/dist/checks/html-meta.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { stripHtmlComments } from '../lib/strip.js';
|
|
1
2
|
const HTML_PATH = 'web/index.html';
|
|
2
3
|
/**
|
|
3
4
|
* Verifies `web/index.html` declares the basics: a `lang` attribute, a
|
|
@@ -12,14 +13,18 @@ const HTML_PATH = 'web/index.html';
|
|
|
12
13
|
* something they needed.
|
|
13
14
|
*/
|
|
14
15
|
export async function checkHtmlMeta(source) {
|
|
15
|
-
const
|
|
16
|
-
if (
|
|
16
|
+
const rawHtml = await source.read(HTML_PATH);
|
|
17
|
+
if (rawHtml === null) {
|
|
17
18
|
return {
|
|
18
19
|
name: 'HTML meta tags',
|
|
19
20
|
status: 'fail',
|
|
20
21
|
detail: `${HTML_PATH} not found`,
|
|
21
22
|
};
|
|
22
23
|
}
|
|
24
|
+
// Strip HTML comment bodies before matching — `<!-- <meta name=
|
|
25
|
+
// "viewport" ...> -->` is not a real viewport meta, and a commented-
|
|
26
|
+
// out `<title>` shouldn't count either.
|
|
27
|
+
const html = stripHtmlComments(rawHtml);
|
|
23
28
|
const missing = [];
|
|
24
29
|
if (!/<html[^>]*\blang\s*=/i.test(html))
|
|
25
30
|
missing.push('lang attribute on <html>');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-meta.js","sourceRoot":"","sources":["../../src/checks/html-meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"html-meta.js","sourceRoot":"","sources":["../../src/checks/html-meta.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAEnC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAkB;IACpD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,SAAS,YAAY;SACjC,CAAC;IACJ,CAAC;IACD,gEAAgE;IAChE,qEAAqE;IACrE,wCAAwC;IACxC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClF,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1F,kEAAkE;IAClE,2EAA2E;IAC3E,yCAAyC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEnF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACxC,WAAW,EAAE;YACX,wJAAwJ;SACzJ;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAgDpF;AA2DD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,MAAM,EAAE,CAmDV"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { stripCommentsOnly, stripCssComments } from '../lib/strip.js';
|
|
1
2
|
/**
|
|
2
3
|
* Apps and games on the platform must look consistent with the storefront
|
|
3
4
|
* and with each other — brand colors, fonts, and layout rhythm come from
|
|
@@ -22,9 +23,17 @@ export async function checkNoBrandOverrides(source) {
|
|
|
22
23
|
const ext = extOf(path);
|
|
23
24
|
if (!SCANNED_EXTS.has(ext))
|
|
24
25
|
continue;
|
|
25
|
-
const
|
|
26
|
-
if (!
|
|
26
|
+
const raw = await source.read(path);
|
|
27
|
+
if (!raw)
|
|
27
28
|
continue;
|
|
29
|
+
// Strip comment bodies so a `// font-family: "Comic Sans"` note
|
|
30
|
+
// doesn't fire. Preserve string-literal contents — the JSX value
|
|
31
|
+
// `fontFamily: "Comic Sans"` IS a string literal and is the thing
|
|
32
|
+
// we're auditing. For .css/.scss use the css-only stripper (no `//`
|
|
33
|
+
// syntax at the language level).
|
|
34
|
+
const content = ext === '.css' || ext === '.scss'
|
|
35
|
+
? stripCssComments(raw)
|
|
36
|
+
: stripCommentsOnly(raw);
|
|
28
37
|
// Canonical theme file: the platform's CSS variables ARE defined here.
|
|
29
38
|
// Apps own this file post-scaffold (they can technically modify token
|
|
30
39
|
// values, and we accept the imperfection — the loud places where a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-brand-overrides.js","sourceRoot":"","sources":["../../src/checks/no-brand-overrides.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-brand-overrides.js","sourceRoot":"","sources":["../../src/checks/no-brand-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-tracking.d.ts","sourceRoot":"","sources":["../../src/checks/no-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"no-tracking.d.ts","sourceRoot":"","sources":["../../src/checks/no-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuE/C,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA6C9E"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { stripCommentsForExt } from '../lib/strip.js';
|
|
1
2
|
function wb(name) {
|
|
2
3
|
// word-boundary, case-insensitive: only matches the literal token surrounded
|
|
3
4
|
// by non-word chars (or string start/end). Avoids `segmentation`, `collideSegment`.
|
|
@@ -54,13 +55,22 @@ function isSelfReferenceTestFile(path) {
|
|
|
54
55
|
export async function checkNoTracking(source) {
|
|
55
56
|
const hits = [];
|
|
56
57
|
for await (const path of source.list()) {
|
|
57
|
-
|
|
58
|
+
const ext = extOf(path);
|
|
59
|
+
if (!SCAN_EXTS.has(ext))
|
|
58
60
|
continue;
|
|
59
61
|
if (isSelfReferenceTestFile(path))
|
|
60
62
|
continue;
|
|
61
|
-
const
|
|
62
|
-
if (!
|
|
63
|
+
const raw = await source.read(path);
|
|
64
|
+
if (!raw)
|
|
63
65
|
continue;
|
|
66
|
+
// Strip comments only — NOT string literals. Real tracker imports
|
|
67
|
+
// live inside strings (`import from "@amplitude/..."`,
|
|
68
|
+
// `<script src="https://www.google-analytics.com/...">`), so
|
|
69
|
+
// erasing string contents would erase the very evidence we need.
|
|
70
|
+
// A rare false positive remains if someone mentions a tracker name
|
|
71
|
+
// inside a non-import string literal; comment-stripping handles the
|
|
72
|
+
// common case (documentation comments).
|
|
73
|
+
const content = stripCommentsForExt(raw, ext);
|
|
64
74
|
const matches = TRACKERS.filter((t) => t.patterns.some((re) => re.test(content))).map((t) => t.name);
|
|
65
75
|
if (matches.length > 0) {
|
|
66
76
|
hits.push({ file: path, matches });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-tracking.js","sourceRoot":"","sources":["../../src/checks/no-tracking.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-tracking.js","sourceRoot":"","sources":["../../src/checks/no-tracking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AActD,SAAS,EAAE,CAAC,IAAY;IACtB,6EAA6E;IAC7E,oFAAoF;IACpF,OAAO,IAAI,MAAM,CAAC,sBAAsB,eAAe,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,QAAQ,GAAkB;IAC9B,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,EAAE;IACvF,8EAA8E;IAC9E,wEAAwE;IACxE,sEAAsE;IACtE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE;IACnF,6EAA6E;IAC7E,6EAA6E;IAC7E,WAAW;IACX;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE;YACR,eAAe;YACf,iBAAiB;YACjB,qEAAqE;YACrE,yBAAyB;YACzB,uBAAuB;SACxB;KACF;IACD,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE;IAChD,6EAA6E;IAC7E,8EAA8E;IAC9E,WAAW;IACX;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE;YACR,aAAa;YACb,cAAc;YACd,0BAA0B;YAC1B,oBAAoB;YACpB,2DAA2D;YAC3D,6BAA6B;SAC9B;KACF;IACD,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE;IAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;CAC/C,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5E,SAAS,eAAe,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,wEAAwE;AACxE,uEAAuE;AACvE,iEAAiE;AACjE,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAkB;IACtD,MAAM,IAAI,GAA0C,EAAE,CAAC;IAEvD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAClC,IAAI,uBAAuB,CAAC,IAAI,CAAC;YAAE,SAAS;QAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,kEAAkE;QAClE,uDAAuD;QACvD,6DAA6D;QAC7D,iEAAiE;QACjE,mEAAmE;QACnE,oEAAoE;QACpE,wCAAwC;QACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CACnF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACd,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,eAAe,QAAQ,CAAC,MAAM,iBAAiB;SACxD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,gCAAgC,IAAI;aACvD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5C,WAAW,EAAE;YACX,gFAAgF;YAChF,uFAAuF;SACxF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pwa-meta.d.ts","sourceRoot":"","sources":["../../src/checks/pwa-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"pwa-meta.d.ts","sourceRoot":"","sources":["../../src/checks/pwa-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAuB3E"}
|
package/dist/checks/pwa-meta.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { stripHtmlComments } from '../lib/strip.js';
|
|
1
2
|
const HTML_PATH = 'web/index.html';
|
|
2
3
|
/**
|
|
3
4
|
* For an "Add to Home Screen" install on iOS Safari to launch the app
|
|
@@ -15,14 +16,17 @@ const HTML_PATH = 'web/index.html';
|
|
|
15
16
|
* is specifically the iOS install hint that lives in the HTML head.
|
|
16
17
|
*/
|
|
17
18
|
export async function checkPwaMeta(source) {
|
|
18
|
-
const
|
|
19
|
-
if (
|
|
19
|
+
const rawHtml = await source.read(HTML_PATH);
|
|
20
|
+
if (rawHtml === null) {
|
|
20
21
|
return {
|
|
21
22
|
name: 'PWA meta tags',
|
|
22
23
|
status: 'fail',
|
|
23
24
|
detail: `${HTML_PATH} not found`,
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
// Strip HTML comments — `<!-- <meta name="apple-mobile-web-app-capable"> -->`
|
|
28
|
+
// doesn't tell iOS anything.
|
|
29
|
+
const html = stripHtmlComments(rawHtml);
|
|
26
30
|
if (/<meta[^>]*\bname\s*=\s*["'](?:apple-)?mobile-web-app-capable["']/i.test(html)) {
|
|
27
31
|
return { name: 'PWA meta tags', status: 'pass', detail: 'iOS install hint present' };
|
|
28
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pwa-meta.js","sourceRoot":"","sources":["../../src/checks/pwa-meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pwa-meta.js","sourceRoot":"","sources":["../../src/checks/pwa-meta.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAkB;IACnD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,SAAS,YAAY;SACjC,CAAC;IACJ,CAAC;IACD,8EAA8E;IAC9E,6BAA6B;IAC7B,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,mEAAmE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACvF,CAAC;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,+DAA+D;QACvE,WAAW,EAAE;YACX,+GAA+G;SAChH;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -4,10 +4,13 @@ import type { CheckResult } from '../types.js';
|
|
|
4
4
|
* Two things this check enforces:
|
|
5
5
|
*
|
|
6
6
|
* 1. Platform mandate — every game on freegamestore.online MUST be an
|
|
7
|
-
* installable PWA (service worker registered).
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* installable PWA (service worker registered). Triggered whenever
|
|
8
|
+
* a project has a `web/index.html` (the universal signal of a
|
|
9
|
+
* Vite-built app destined for the storefront). Hand-rolled
|
|
10
|
+
* `serviceWorker.register` counts; vite-plugin-pwa counts.
|
|
11
|
+
* Anything else fails. Non-game repos that don't ship a web
|
|
12
|
+
* entry (admin, auditor, leaderboard, etc.) are naturally exempt
|
|
13
|
+
* — they're not subject to compliance anyway.
|
|
11
14
|
*
|
|
12
15
|
* 2. Offline-correctness quality — among PWAs that ARE configured,
|
|
13
16
|
* the workbox setup actually has to work from the home screen
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pwa-offline.d.ts","sourceRoot":"","sources":["../../src/checks/pwa-offline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C
|
|
1
|
+
{"version":3,"file":"pwa-offline.d.ts","sourceRoot":"","sources":["../../src/checks/pwa-offline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAwM9E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { stripCommentsAndStrings, stripHtmlComments } from '../lib/strip.js';
|
|
2
2
|
const VITE_CONFIG = 'web/vite.config.ts';
|
|
3
3
|
const INDEX_HTML = 'web/index.html';
|
|
4
4
|
const PUBLIC_DIR = 'web/public';
|
|
@@ -6,10 +6,13 @@ const PUBLIC_DIR = 'web/public';
|
|
|
6
6
|
* Two things this check enforces:
|
|
7
7
|
*
|
|
8
8
|
* 1. Platform mandate — every game on freegamestore.online MUST be an
|
|
9
|
-
* installable PWA (service worker registered).
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* installable PWA (service worker registered). Triggered whenever
|
|
10
|
+
* a project has a `web/index.html` (the universal signal of a
|
|
11
|
+
* Vite-built app destined for the storefront). Hand-rolled
|
|
12
|
+
* `serviceWorker.register` counts; vite-plugin-pwa counts.
|
|
13
|
+
* Anything else fails. Non-game repos that don't ship a web
|
|
14
|
+
* entry (admin, auditor, leaderboard, etc.) are naturally exempt
|
|
15
|
+
* — they're not subject to compliance anyway.
|
|
13
16
|
*
|
|
14
17
|
* 2. Offline-correctness quality — among PWAs that ARE configured,
|
|
15
18
|
* the workbox setup actually has to work from the home screen
|
|
@@ -68,8 +71,11 @@ export async function checkPwaOffline(source) {
|
|
|
68
71
|
// installable PWA. "Installable" at the static-check level means a
|
|
69
72
|
// service worker registers — VitePWA (which also injects the
|
|
70
73
|
// manifest link), an injectManifest setup, or hand-rolled register.
|
|
71
|
-
//
|
|
72
|
-
|
|
74
|
+
// Triggered by the presence of `web/index.html` — the universal
|
|
75
|
+
// signal of a Vite-built game. Non-game repos in the org (admin,
|
|
76
|
+
// auditor, marketing site) don't ship index.html and are naturally
|
|
77
|
+
// exempt; compliance isn't run against them anyway.
|
|
78
|
+
if (html !== null && !hasServiceWorker) {
|
|
73
79
|
return {
|
|
74
80
|
name: 'PWA offline correctness',
|
|
75
81
|
status: 'fail',
|
|
@@ -233,93 +239,6 @@ function parseBundleCap(workbox) {
|
|
|
233
239
|
return null;
|
|
234
240
|
return parts.reduce((a, b) => a * b, 1);
|
|
235
241
|
}
|
|
236
|
-
/**
|
|
237
|
-
* Replace every `<!-- ... -->` comment body with spaces (preserving
|
|
238
|
-
* positions). Used before HTML regex matches so that commented-out
|
|
239
|
-
* tags don't false-positive — `<!-- <link rel="manifest"> -->` is not
|
|
240
|
-
* a live install claim.
|
|
241
|
-
*
|
|
242
|
-
* HTML comments don't nest in real-world docs; first `-->` ends the
|
|
243
|
-
* comment. Doesn't try to handle CDATA or downlevel-revealed comments.
|
|
244
|
-
*/
|
|
245
|
-
function stripHtmlComments(src) {
|
|
246
|
-
const out = src.split('');
|
|
247
|
-
let i = 0;
|
|
248
|
-
while (i < src.length) {
|
|
249
|
-
if (src[i] === '<' &&
|
|
250
|
-
src[i + 1] === '!' &&
|
|
251
|
-
src[i + 2] === '-' &&
|
|
252
|
-
src[i + 3] === '-') {
|
|
253
|
-
const start = i;
|
|
254
|
-
i += 4;
|
|
255
|
-
while (i < src.length &&
|
|
256
|
-
!(src[i] === '-' && src[i + 1] === '-' && src[i + 2] === '>'))
|
|
257
|
-
i++;
|
|
258
|
-
i = Math.min(src.length, i + 3);
|
|
259
|
-
for (let k = start; k < i; k++)
|
|
260
|
-
if (out[k] !== '\n')
|
|
261
|
-
out[k] = ' ';
|
|
262
|
-
continue;
|
|
263
|
-
}
|
|
264
|
-
i++;
|
|
265
|
-
}
|
|
266
|
-
return out.join('');
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Returns a "code-only" version of `src` where every comment body and
|
|
270
|
-
* string-literal content is replaced with spaces of equal length. This
|
|
271
|
-
* lets us run cheap regex matches against the source while ignoring
|
|
272
|
-
* text that isn't real code, without disturbing source positions —
|
|
273
|
-
* regex `.index` results are still valid offsets into the original.
|
|
274
|
-
*
|
|
275
|
-
* Handles: line comments (`//`), block comments (`/* *\/`), single,
|
|
276
|
-
* double, and backtick strings (with `\` escapes). Doesn't try to
|
|
277
|
-
* track template-literal `${...}` expressions or recognise regex
|
|
278
|
-
* literals — both edge cases would need a real tokenizer.
|
|
279
|
-
*/
|
|
280
|
-
function stripCommentsAndStrings(src) {
|
|
281
|
-
const out = src.split('');
|
|
282
|
-
let i = 0;
|
|
283
|
-
const blank = (from, to) => {
|
|
284
|
-
for (let k = from; k < to; k++)
|
|
285
|
-
if (out[k] !== '\n')
|
|
286
|
-
out[k] = ' ';
|
|
287
|
-
};
|
|
288
|
-
while (i < src.length) {
|
|
289
|
-
const c = src[i];
|
|
290
|
-
if (c === '/' && src[i + 1] === '/') {
|
|
291
|
-
const start = i;
|
|
292
|
-
while (i < src.length && src[i] !== '\n')
|
|
293
|
-
i++;
|
|
294
|
-
blank(start, i);
|
|
295
|
-
continue;
|
|
296
|
-
}
|
|
297
|
-
if (c === '/' && src[i + 1] === '*') {
|
|
298
|
-
const start = i;
|
|
299
|
-
i += 2;
|
|
300
|
-
while (i < src.length && !(src[i] === '*' && src[i + 1] === '/'))
|
|
301
|
-
i++;
|
|
302
|
-
i = Math.min(src.length, i + 2);
|
|
303
|
-
blank(start, i);
|
|
304
|
-
continue;
|
|
305
|
-
}
|
|
306
|
-
if (c === '"' || c === "'" || c === '`') {
|
|
307
|
-
const quote = c;
|
|
308
|
-
const start = i + 1; // keep the opening quote in place
|
|
309
|
-
i++;
|
|
310
|
-
while (i < src.length && src[i] !== quote) {
|
|
311
|
-
if (src[i] === '\\' && i + 1 < src.length)
|
|
312
|
-
i++;
|
|
313
|
-
i++;
|
|
314
|
-
}
|
|
315
|
-
blank(start, i);
|
|
316
|
-
i++; // skip closing quote
|
|
317
|
-
continue;
|
|
318
|
-
}
|
|
319
|
-
i++;
|
|
320
|
-
}
|
|
321
|
-
return out.join('');
|
|
322
|
-
}
|
|
323
242
|
/**
|
|
324
243
|
* Extracts the `{ ... }` body that follows the first match of `opener`,
|
|
325
244
|
* walking the source character-by-character to balance braces.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pwa-offline.js","sourceRoot":"","sources":["../../src/checks/pwa-offline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AACpC,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAkB;IACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE3C,yEAAyE;IACzE,mEAAmE;IACnE,wBAAwB;IACxB,MAAM,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,aAAa,GACjB,QAAQ,KAAK,IAAI,IAAI,uCAAuC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9E,MAAM,gBAAgB,GACpB,QAAQ,KAAK,IAAI,IAAI,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE1E,uEAAuE;IACvE,iEAAiE;IACjE,uEAAuE;IACvE,MAAM,UAAU,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,UAAU,KAAK,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5E,oEAAoE;IACpE,oEAAoE;IACpE,iEAAiE;IACjE,qEAAqE;IACrE,gEAAgE;IAChE,uCAAuC;IACvC,MAAM,kBAAkB,GACtB,MAAM,KAAK,IAAI,IAAI,yCAAyC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5E,+DAA+D;IAC/D,mEAAmE;IACnE,sEAAsE;IACtE,2DAA2D;IAC3D,MAAM,WAAW,GACf,CAAC,IAAI,KAAK,IAAI,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,MAAM,gBAAgB,GAAG,UAAU,IAAI,WAAW,CAAC;IAEnD,iEAAiE;IACjE,mEAAmE;IACnE,6DAA6D;IAC7D,oEAAoE;IACpE,+DAA+D;IAC/D,IAAI,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,sHAAsH;YAC9H,WAAW,EAAE;gBACX,sKAAsK;gBACtK,wJAAwJ;aACzJ;SACF,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,uEAAuE;IACvE,2DAA2D;IAC3D,IAAI,aAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,6HAA6H;YACrI,WAAW,EAAE;gBACX,2EAA2E;gBAC3E,uFAAuF;gBACvF,2FAA2F;aAC5F;SACF,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,qEAAqE;IACrE,2BAA2B;IAC3B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW;gBACjB,CAAC,CAAC,uDAAuD;gBACzD,CAAC,CAAC,4CAA4C;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW;gBACjB,CAAC,CAAC,wDAAwD;gBAC1D,CAAC,CAAC,0CAA0C;SAC/C,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,mEAAmE;IACnE,+BAA+B;IAC/B,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0DAA0D;SACnE,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,mEAAmE;IACnE,6DAA6D;IAC7D,6BAA6B;IAC7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC7E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,qFAAqF;YAC7F,WAAW,EAAE;gBACX,sGAAsG;aACvG;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,2EAA2E;IAC3E,mEAAmE;IACnE,uEAAuE;IACvE,wBAAwB;IACxB,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACpC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAC;QAClH,WAAW,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IAC7G,CAAC;SAAM,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,oCAAoC,QAAQ,iGAAiG,CAAC,CAAC;QAC3J,WAAW,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IACxF,CAAC;IAED,mEAAmE;IACnE,8DAA8D;IAC9D,6DAA6D;IAC7D,oEAAoE;IACpE,uBAAuB;IACvB,IAAI,UAAU,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACvF,WAAW,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IACtF,CAAC;IAED,iDAAiD;IACjD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,iEAAiE;QACjE,+DAA+D;QAC/D,4DAA4D;QAC5D,6DAA6D;QAC7D,MAAM,sBAAsB,GAC1B,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,YAAY,GAChB,CAAC,iBAAiB,IAAI,cAAc,CAAC,IAAI,sBAAsB,CAAC;QAClE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAAC;YAC5H,WAAW,CAAC,IAAI,CACd,2HAA2H,CAC5H,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,gEAAgE;IAChE,yDAAyD;IACzD,oEAAoE;IACpE,cAAc;IACd,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACzE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,4DAA4D,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnJ,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9F,WAAW,CAAC,IAAI,CAAC,mDAAmD,OAAO,MAAM,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,+DAA+D;SACxE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnD,8DAA8D;IAC9D,gEAAgE;IAChE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,IACE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;YACd,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;YAClB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;YAClB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAClB,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,CAAC,IAAI,CAAC,CAAC;YACP,OACE,CAAC,GAAG,GAAG,CAAC,MAAM;gBACd,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;gBAE7D,CAAC,EAAE,CAAC;YACN,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAClE,SAAS;QACX,CAAC;QACD,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE;QACzC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACpE,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;gBAAE,CAAC,EAAE,CAAC;YACtE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC;YACvD,CAAC,EAAE,CAAC;YACJ,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC1C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM;oBAAE,CAAC,EAAE,CAAC;gBAC/C,CAAC,EAAE,CAAC;YACN,CAAC;YACD,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChB,CAAC,EAAE,CAAC,CAAC,qBAAqB;YAC1B,SAAS;QACX,CAAC;QACD,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,oBAAoB,CAC3B,GAAW,EACX,IAAY,EACZ,MAAc;IAEd,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,2BAA2B;IAC1D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aAClB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAAC,OAAe;IAC/C,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3D,gEAAgE;IAChE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aAClB,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;QAC5B,IAAI,KAAK,KAAK,CAAC;YAAE,MAAM;QACvB,CAAC,EAAE,CAAC;IACN,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,6DAA6D;IAC7D,mBAAmB;IACnB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,kEAAkE;YAClE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC/C,IAAI,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,KAAK,CAAC,QAAgB;IAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAkB,EAClB,GAAW,EACX,OAAoB;IAEpB,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,uBAAuB,CAAC,MAAkB;IACvD,MAAM,UAAU,GAAG;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;QAClB,uBAAuB;QACvB,uBAAuB;KACxB,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,IAAI,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAkB,EAClB,GAAW,EACX,IAAiB,EACjB,OAAoB,EACpB,KAAa;IAEb,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO;IACtB,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO;IAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,mFAAmF;YACnF,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"pwa-offline.js","sourceRoot":"","sources":["../../src/checks/pwa-offline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsafe-vh.d.ts","sourceRoot":"","sources":["../../src/checks/unsafe-vh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"unsafe-vh.d.ts","sourceRoot":"","sources":["../../src/checks/unsafe-vh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAoD5E"}
|
package/dist/checks/unsafe-vh.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { stripCommentsForExt } from '../lib/strip.js';
|
|
1
2
|
/**
|
|
2
3
|
* Flag `100vh` (and Tailwind shortcuts that compile to it) in source.
|
|
3
4
|
*
|
|
@@ -22,19 +23,30 @@
|
|
|
22
23
|
export async function checkUnsafeVh(source) {
|
|
23
24
|
const issues = [];
|
|
24
25
|
for await (const path of source.list()) {
|
|
25
|
-
|
|
26
|
+
const ext = extOf(path);
|
|
27
|
+
if (!SCAN_EXTS.has(ext))
|
|
26
28
|
continue;
|
|
27
|
-
const
|
|
28
|
-
if (!
|
|
29
|
+
const raw = await source.read(path);
|
|
30
|
+
if (!raw)
|
|
29
31
|
continue;
|
|
32
|
+
// Strip comments only, NOT string contents. JSX className values
|
|
33
|
+
// are string literals (`<div className="h-screen">`) and IS the
|
|
34
|
+
// live class assignment — erasing string contents would silently
|
|
35
|
+
// miss the most common Tailwind usage. Accept the rare trade-off:
|
|
36
|
+
// a `const docs = "100vh"` string-literal documentation example
|
|
37
|
+
// still false-positive-warns; reviewer can add `// allow-100vh`.
|
|
38
|
+
const content = stripCommentsForExt(raw, ext);
|
|
30
39
|
for (const { re, label } of PATTERNS) {
|
|
31
40
|
// Reset lastIndex defensively; we use `g` to find all matches.
|
|
32
41
|
re.lastIndex = 0;
|
|
33
42
|
let m;
|
|
34
43
|
while ((m = re.exec(content)) !== null) {
|
|
35
|
-
const line = lineNumberAt(
|
|
36
|
-
// Allow opt-out via an inline `allow-100vh` comment on the same
|
|
37
|
-
|
|
44
|
+
const line = lineNumberAt(raw, m.index);
|
|
45
|
+
// Allow opt-out via an inline `allow-100vh` comment on the same
|
|
46
|
+
// line. Read the raw source for the opt-out — the marker
|
|
47
|
+
// necessarily lives in a comment that was just blanked from
|
|
48
|
+
// `content`.
|
|
49
|
+
if (lineHasAllowComment(raw, m.index))
|
|
38
50
|
continue;
|
|
39
51
|
issues.push(`${path}:${line} ${label} — use 100svh or 100dvh`);
|
|
40
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsafe-vh.js","sourceRoot":"","sources":["../../src/checks/unsafe-vh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unsafe-vh.js","sourceRoot":"","sources":["../../src/checks/unsafe-vh.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-stripping helpers shared by checks that run regex against raw
|
|
3
|
+
* source files. The whole class of bugs these prevent: a regex matches
|
|
4
|
+
* a token (like `<meta name="viewport">`, `new Audio(`, `100vh`,
|
|
5
|
+
* `@amplitude`) that lives inside a comment or a string literal —
|
|
6
|
+
* never actually evaluated, but the static check fires anyway.
|
|
7
|
+
*
|
|
8
|
+
* Two design rules:
|
|
9
|
+
* 1. All strippers preserve character positions — they replace
|
|
10
|
+
* removed bytes with spaces (newlines kept), so any `regex.index`
|
|
11
|
+
* result still refers to the same line/column in the real source.
|
|
12
|
+
* 2. The strippers don't try to be a full tokenizer. They handle the
|
|
13
|
+
* common cases (escapes inside strings, nested comment-like text
|
|
14
|
+
* inside strings) and accept that pathological constructs
|
|
15
|
+
* (template-literal `${...}` containing braces, regex literals
|
|
16
|
+
* with asymmetric braces) need a real parser. In practice the
|
|
17
|
+
* compliance fixtures don't hit these.
|
|
18
|
+
*/
|
|
19
|
+
/** Replace `<!-- ... -->` comment bodies with spaces. */
|
|
20
|
+
export declare function stripHtmlComments(src: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Replace JS/TS line + block comment bodies AND string-literal
|
|
23
|
+
* contents with spaces. Use this when a regex against the source
|
|
24
|
+
* shouldn't match documentation strings or commented-out code (the
|
|
25
|
+
* common pattern: matching SDK names, API calls, CSS unit tokens).
|
|
26
|
+
*
|
|
27
|
+
* Handles single, double, and backtick strings with `\` escapes.
|
|
28
|
+
* Doesn't track template-literal `${...}` interpolation contents and
|
|
29
|
+
* doesn't recognise regex literals — both edge cases would need a
|
|
30
|
+
* tokenizer.
|
|
31
|
+
*/
|
|
32
|
+
export declare function stripCommentsAndStrings(src: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Like `stripCommentsAndStrings` but preserves string contents.
|
|
35
|
+
* Use when the regex needs to see string values — e.g. inspecting
|
|
36
|
+
* `font-family: "Comic Sans"` inside JSX, where the string value IS
|
|
37
|
+
* the thing being audited.
|
|
38
|
+
*/
|
|
39
|
+
export declare function stripCommentsOnly(src: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Replace `/* ... */` comment bodies with spaces. CSS doesn't have
|
|
42
|
+
* `//` line comments at the language level (some preprocessors add
|
|
43
|
+
* them, but plain CSS doesn't), so this is the simpler variant.
|
|
44
|
+
*/
|
|
45
|
+
export declare function stripCssComments(src: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Dispatch to the right stripper based on file extension. For unknown
|
|
48
|
+
* extensions, falls back to `stripCommentsAndStrings` (JS-style) —
|
|
49
|
+
* conservative because most source files compliance checks touch are
|
|
50
|
+
* JS-flavoured.
|
|
51
|
+
*/
|
|
52
|
+
export declare function stripForExt(src: string, ext: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Like `stripForExt` but preserves string-literal contents — useful
|
|
55
|
+
* when the regex needs to match tokens that legitimately appear inside
|
|
56
|
+
* strings (e.g. `@amplitude/` inside an `import from "@amplitude/..."`,
|
|
57
|
+
* which is the literal package-name string we want to catch).
|
|
58
|
+
*/
|
|
59
|
+
export declare function stripCommentsForExt(src: string, ext: string): string;
|
|
60
|
+
//# sourceMappingURL=strip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/lib/strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwBrD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAepD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAapE"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-stripping helpers shared by checks that run regex against raw
|
|
3
|
+
* source files. The whole class of bugs these prevent: a regex matches
|
|
4
|
+
* a token (like `<meta name="viewport">`, `new Audio(`, `100vh`,
|
|
5
|
+
* `@amplitude`) that lives inside a comment or a string literal —
|
|
6
|
+
* never actually evaluated, but the static check fires anyway.
|
|
7
|
+
*
|
|
8
|
+
* Two design rules:
|
|
9
|
+
* 1. All strippers preserve character positions — they replace
|
|
10
|
+
* removed bytes with spaces (newlines kept), so any `regex.index`
|
|
11
|
+
* result still refers to the same line/column in the real source.
|
|
12
|
+
* 2. The strippers don't try to be a full tokenizer. They handle the
|
|
13
|
+
* common cases (escapes inside strings, nested comment-like text
|
|
14
|
+
* inside strings) and accept that pathological constructs
|
|
15
|
+
* (template-literal `${...}` containing braces, regex literals
|
|
16
|
+
* with asymmetric braces) need a real parser. In practice the
|
|
17
|
+
* compliance fixtures don't hit these.
|
|
18
|
+
*/
|
|
19
|
+
/** Replace `<!-- ... -->` comment bodies with spaces. */
|
|
20
|
+
export function stripHtmlComments(src) {
|
|
21
|
+
const out = src.split('');
|
|
22
|
+
let i = 0;
|
|
23
|
+
while (i < src.length) {
|
|
24
|
+
if (src[i] === '<' &&
|
|
25
|
+
src[i + 1] === '!' &&
|
|
26
|
+
src[i + 2] === '-' &&
|
|
27
|
+
src[i + 3] === '-') {
|
|
28
|
+
const start = i;
|
|
29
|
+
i += 4;
|
|
30
|
+
while (i < src.length &&
|
|
31
|
+
!(src[i] === '-' && src[i + 1] === '-' && src[i + 2] === '>'))
|
|
32
|
+
i++;
|
|
33
|
+
i = Math.min(src.length, i + 3);
|
|
34
|
+
blank(out, start, i);
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
i++;
|
|
38
|
+
}
|
|
39
|
+
return out.join('');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Replace JS/TS line + block comment bodies AND string-literal
|
|
43
|
+
* contents with spaces. Use this when a regex against the source
|
|
44
|
+
* shouldn't match documentation strings or commented-out code (the
|
|
45
|
+
* common pattern: matching SDK names, API calls, CSS unit tokens).
|
|
46
|
+
*
|
|
47
|
+
* Handles single, double, and backtick strings with `\` escapes.
|
|
48
|
+
* Doesn't track template-literal `${...}` interpolation contents and
|
|
49
|
+
* doesn't recognise regex literals — both edge cases would need a
|
|
50
|
+
* tokenizer.
|
|
51
|
+
*/
|
|
52
|
+
export function stripCommentsAndStrings(src) {
|
|
53
|
+
return stripCode(src, { strings: true });
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Like `stripCommentsAndStrings` but preserves string contents.
|
|
57
|
+
* Use when the regex needs to see string values — e.g. inspecting
|
|
58
|
+
* `font-family: "Comic Sans"` inside JSX, where the string value IS
|
|
59
|
+
* the thing being audited.
|
|
60
|
+
*/
|
|
61
|
+
export function stripCommentsOnly(src) {
|
|
62
|
+
return stripCode(src, { strings: false });
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Replace `/* ... */` comment bodies with spaces. CSS doesn't have
|
|
66
|
+
* `//` line comments at the language level (some preprocessors add
|
|
67
|
+
* them, but plain CSS doesn't), so this is the simpler variant.
|
|
68
|
+
*/
|
|
69
|
+
export function stripCssComments(src) {
|
|
70
|
+
const out = src.split('');
|
|
71
|
+
let i = 0;
|
|
72
|
+
while (i < src.length) {
|
|
73
|
+
if (src[i] === '/' && src[i + 1] === '*') {
|
|
74
|
+
const start = i;
|
|
75
|
+
i += 2;
|
|
76
|
+
while (i < src.length && !(src[i] === '*' && src[i + 1] === '/'))
|
|
77
|
+
i++;
|
|
78
|
+
i = Math.min(src.length, i + 2);
|
|
79
|
+
blank(out, start, i);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
i++;
|
|
83
|
+
}
|
|
84
|
+
return out.join('');
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Dispatch to the right stripper based on file extension. For unknown
|
|
88
|
+
* extensions, falls back to `stripCommentsAndStrings` (JS-style) —
|
|
89
|
+
* conservative because most source files compliance checks touch are
|
|
90
|
+
* JS-flavoured.
|
|
91
|
+
*/
|
|
92
|
+
export function stripForExt(src, ext) {
|
|
93
|
+
switch (ext.toLowerCase()) {
|
|
94
|
+
case '.html':
|
|
95
|
+
case '.htm':
|
|
96
|
+
return stripHtmlComments(src);
|
|
97
|
+
case '.css':
|
|
98
|
+
case '.scss':
|
|
99
|
+
return stripCssComments(src);
|
|
100
|
+
case '.json':
|
|
101
|
+
return src; // JSON has no comments
|
|
102
|
+
default:
|
|
103
|
+
return stripCommentsAndStrings(src);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Like `stripForExt` but preserves string-literal contents — useful
|
|
108
|
+
* when the regex needs to match tokens that legitimately appear inside
|
|
109
|
+
* strings (e.g. `@amplitude/` inside an `import from "@amplitude/..."`,
|
|
110
|
+
* which is the literal package-name string we want to catch).
|
|
111
|
+
*/
|
|
112
|
+
export function stripCommentsForExt(src, ext) {
|
|
113
|
+
switch (ext.toLowerCase()) {
|
|
114
|
+
case '.html':
|
|
115
|
+
case '.htm':
|
|
116
|
+
return stripHtmlComments(src);
|
|
117
|
+
case '.css':
|
|
118
|
+
case '.scss':
|
|
119
|
+
return stripCssComments(src);
|
|
120
|
+
case '.json':
|
|
121
|
+
return src;
|
|
122
|
+
default:
|
|
123
|
+
return stripCommentsOnly(src);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function stripCode(src, opts) {
|
|
127
|
+
const out = src.split('');
|
|
128
|
+
let i = 0;
|
|
129
|
+
while (i < src.length) {
|
|
130
|
+
const c = src[i];
|
|
131
|
+
if (c === '/' && src[i + 1] === '/') {
|
|
132
|
+
const start = i;
|
|
133
|
+
while (i < src.length && src[i] !== '\n')
|
|
134
|
+
i++;
|
|
135
|
+
blank(out, start, i);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (c === '/' && src[i + 1] === '*') {
|
|
139
|
+
const start = i;
|
|
140
|
+
i += 2;
|
|
141
|
+
while (i < src.length && !(src[i] === '*' && src[i + 1] === '/'))
|
|
142
|
+
i++;
|
|
143
|
+
i = Math.min(src.length, i + 2);
|
|
144
|
+
blank(out, start, i);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (opts.strings && (c === '"' || c === "'" || c === '`')) {
|
|
148
|
+
const quote = c;
|
|
149
|
+
const start = i + 1; // keep the opening quote in place
|
|
150
|
+
i++;
|
|
151
|
+
while (i < src.length && src[i] !== quote) {
|
|
152
|
+
if (src[i] === '\\' && i + 1 < src.length)
|
|
153
|
+
i++;
|
|
154
|
+
i++;
|
|
155
|
+
}
|
|
156
|
+
blank(out, start, i);
|
|
157
|
+
i++; // skip closing quote
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
i++;
|
|
161
|
+
}
|
|
162
|
+
return out.join('');
|
|
163
|
+
}
|
|
164
|
+
function blank(out, from, to) {
|
|
165
|
+
for (let k = from; k < to; k++)
|
|
166
|
+
if (out[k] !== '\n')
|
|
167
|
+
out[k] = ' ';
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=strip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/lib/strip.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED