@freegamestore/compliance 0.8.2 → 0.9.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.
@@ -36,7 +36,7 @@ const BOILERPLATE_HEADERS = [
36
36
  const SOFT_LINE_LIMIT = 60;
37
37
  export async function checkClaudeMdSlim(source) {
38
38
  const body = await source.read('CLAUDE.md');
39
- if (body == null) {
39
+ if (body === null) {
40
40
  // No CLAUDE.md is fine — agents fall back to SKILLS.md via README/docs.
41
41
  return { name: NAME, status: 'pass', detail: 'no CLAUDE.md present' };
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md-slim.js","sourceRoot":"","sources":["../../src/checks/claude-md-slim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-md-slim.js","sourceRoot":"","sources":["../../src/checks/claude-md-slim.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"license-mit.d.ts","sourceRoot":"","sources":["../../src/checks/license-mit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAiC9E"}
1
+ {"version":3,"file":"license-mit.d.ts","sourceRoot":"","sources":["../../src/checks/license-mit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAwC9E"}
@@ -16,6 +16,7 @@ export async function checkLicenseMit(source) {
16
16
  'license.md',
17
17
  'license.txt',
18
18
  ];
19
+ let foundButNotMit = null;
19
20
  for (const path of candidates) {
20
21
  const content = await source.read(path);
21
22
  if (content === null)
@@ -23,10 +24,16 @@ export async function checkLicenseMit(source) {
23
24
  if (/\bmit\b/i.test(content)) {
24
25
  return { name: 'MIT License', status: 'pass', detail: path };
25
26
  }
27
+ // Don't fail on the first non-MIT candidate — a repo may have e.g. a
28
+ // non-MIT LICENSE alongside an MIT LICENSE.md. Keep scanning; only report
29
+ // the "exists but not MIT" failure if no candidate matches.
30
+ foundButNotMit ??= path;
31
+ }
32
+ if (foundButNotMit) {
26
33
  return {
27
34
  name: 'MIT License',
28
35
  status: 'fail',
29
- detail: `${path} exists but does not mention MIT`,
36
+ detail: `${foundButNotMit} exists but does not mention MIT`,
30
37
  suggestions: [
31
38
  'Replace LICENSE with the standard MIT license text from https://opensource.org/license/mit',
32
39
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"license-mit.js","sourceRoot":"","sources":["../../src/checks/license-mit.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAkB;IACtD,MAAM,UAAU,GAAG;QACjB,SAAS;QACT,YAAY;QACZ,aAAa;QACb,SAAS;QACT,YAAY;QACZ,aAAa;KACd,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,IAAI,kCAAkC;YACjD,WAAW,EAAE;gBACX,4FAA4F;aAC7F;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,8BAA8B;QACtC,WAAW,EAAE;YACX,0FAA0F;YAC1F,0FAA0F;SAC3F;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"license-mit.js","sourceRoot":"","sources":["../../src/checks/license-mit.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAkB;IACtD,MAAM,UAAU,GAAG;QACjB,SAAS;QACT,YAAY;QACZ,aAAa;QACb,SAAS;QACT,YAAY;QACZ,aAAa;KACd,CAAC;IACF,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/D,CAAC;QACD,qEAAqE;QACrE,0EAA0E;QAC1E,4DAA4D;QAC5D,cAAc,KAAK,IAAI,CAAC;IAC1B,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,cAAc,kCAAkC;YAC3D,WAAW,EAAE;gBACX,4FAA4F;aAC7F;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,8BAA8B;QACtC,WAAW,EAAE;YACX,0FAA0F;YAC1F,0FAA0F;SAC3F;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-external-fetch.d.ts","sourceRoot":"","sources":["../../src/checks/no-external-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA8C/C,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA4DnF"}
1
+ {"version":3,"file":"no-external-fetch.d.ts","sourceRoot":"","sources":["../../src/checks/no-external-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA6C/C,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA4DnF"}
@@ -8,7 +8,6 @@ import { stripCommentsOnly } from '../lib/strip.js';
8
8
  * Allowed origins:
9
9
  * - Relative URLs (`fetch('/api/...')`)
10
10
  * - freegamestore.online (and subdomains)
11
- * - freeappstore.online (and subdomains)
12
11
  * - localhost / 127.0.0.1 (dev)
13
12
  *
14
13
  * Scans .ts and .tsx files under web/src/. Strips comments before
@@ -19,7 +18,7 @@ import { stripCommentsOnly } from '../lib/strip.js';
19
18
  * ERROR level — external fetches are a hard compliance gate.
20
19
  */
21
20
  const SCAN_EXTS = new Set(['.ts', '.tsx']);
22
- const ALLOWED_DOMAINS = ['freegamestore.online', 'freeappstore.online', 'localhost', '127.0.0.1'];
21
+ const ALLOWED_DOMAINS = ['freegamestore.online', 'localhost', '127.0.0.1'];
23
22
  /** Check if a URL string points to an allowed domain. */
24
23
  function isAllowedUrl(url) {
25
24
  let hostname;
@@ -1 +1 @@
1
- {"version":3,"file":"no-external-fetch.js","sourceRoot":"","sources":["../../src/checks/no-external-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-external-fetch.js","sourceRoot":"","sources":["../../src/checks/no-external-fetch.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -36,23 +36,21 @@ import { checkUnsafeVh } from './checks/unsafe-vh.js';
36
36
  import { checkUsesGameSdk } from './checks/uses-game-sdk.js';
37
37
  import { checkUsesLocalStorage } from './checks/uses-localstorage.js';
38
38
  import { checkViewportSupport } from './checks/viewport-support.js';
39
- import { fsFileSource, mapFileSource } from './lib/file-source.js';
39
+ import { mapFileSource } from './lib/file-source.js';
40
+ import { fsFileSource } from './lib/fs-file-source.js';
40
41
  import { isGameProject } from './lib/project-type.js';
42
+ import { runChecksFromFiles, runChecksOn } from './run-checks.js';
41
43
  import type { CheckResult } from './types.js';
42
44
  export type { FileSource } from './lib/file-source.js';
43
45
  export type { LiveAuditInput, LiveAuditReport } from './live/index.js';
44
46
  export { auditLive, checkBrandFontsLive, checkBundleSizeLive, checkManifestLive, checkNoTrackingLive, checkUnsafeVhLive, } from './live/index.js';
45
47
  export type { CheckResult, CheckStatus } from './types.js';
46
- export { checkAudioMuteRespect, checkBrandFonts, checkBrandTokens, checkBundleSize, checkClaudeMdSlim, checkDarkMode, checkDeployWorkflow, checkGameNaming, checkGitignoreComplete, checkHtmlMeta, checkLicenseMit, checkManifest, checkMaskableIcon, checkNoAnyTypes, checkNoBrandOverrides, checkNoConsoleLog, checkNoCookies, checkNoEnvProduction, checkNoExcessiveInlineStyles, checkNoExternalFetch, checkNoExternalScripts, checkNoHardcodedColors, checkNoPaymentSdk, checkNoPlaceholders, checkNoScroll, checkNoTracking, checkPwaIcons, checkPwaMeta, checkPwaOffline, checkReactStrictMode, checkSdkVersion, checkStoreLink, checkTechVersions, checkTypescriptStrict, checkUnsafeVh, checkUsesGameSdk, checkUsesLocalStorage, checkViewportSupport, fsFileSource, isGameProject, mapFileSource, };
48
+ export { checkAudioMuteRespect, checkBrandFonts, checkBrandTokens, checkBundleSize, checkClaudeMdSlim, checkDarkMode, checkDeployWorkflow, checkGameNaming, checkGitignoreComplete, checkHtmlMeta, checkLicenseMit, checkManifest, checkMaskableIcon, checkNoAnyTypes, checkNoBrandOverrides, checkNoConsoleLog, checkNoCookies, checkNoEnvProduction, checkNoExcessiveInlineStyles, checkNoExternalFetch, checkNoExternalScripts, checkNoHardcodedColors, checkNoPaymentSdk, checkNoPlaceholders, checkNoScroll, checkNoTracking, checkPwaIcons, checkPwaMeta, checkPwaOffline, checkReactStrictMode, checkSdkVersion, checkStoreLink, checkTechVersions, checkTypescriptStrict, checkUnsafeVh, checkUsesGameSdk, checkUsesLocalStorage, checkViewportSupport, fsFileSource, isGameProject, mapFileSource, runChecksFromFiles, runChecksOn, };
47
49
  /**
48
- * Runs every compliance check against the source. Two front doors:
49
- * - `runChecks(repoDir)` — CLI / CI; reads from disk.
50
- * - `runChecksFromFiles(map)` — VibeCode agent; reads from a Map.
51
- *
52
- * Both call the same underlying check functions via the FileSource
53
- * abstraction, so rules stay in one place. Results are returned in a
54
- * stable order so callers can render predictable output.
50
+ * On-disk front door — CLI / CI. Reads from a real directory via
51
+ * fsFileSource (node:fs). The Map front door (`runChecksFromFiles`)
52
+ * shares the same check battery through the FileSource abstraction, so
53
+ * rules stay in one place regardless of where the files come from.
55
54
  */
56
55
  export declare function runChecks(repoDir: string): Promise<CheckResult[]>;
57
- export declare function runChecksFromFiles(files: Map<string, string>): Promise<CheckResult[]>;
58
56
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -36,74 +36,25 @@ import { checkUnsafeVh } from './checks/unsafe-vh.js';
36
36
  import { checkUsesGameSdk } from './checks/uses-game-sdk.js';
37
37
  import { checkUsesLocalStorage } from './checks/uses-localstorage.js';
38
38
  import { checkViewportSupport } from './checks/viewport-support.js';
39
- import { fsFileSource, mapFileSource } from './lib/file-source.js';
39
+ import { mapFileSource } from './lib/file-source.js';
40
+ import { fsFileSource } from './lib/fs-file-source.js';
40
41
  import { isGameProject } from './lib/project-type.js';
42
+ import { runChecksFromFiles, runChecksOn } from './run-checks.js';
41
43
  // Live-URL audit (used by the compliance audit Worker; runs in
42
44
  // browser/Workers env, no filesystem). Separate export path so callers
43
45
  // don't accidentally pull node:fs in via the file-walking checks.
44
46
  export { auditLive, checkBrandFontsLive, checkBundleSizeLive, checkManifestLive, checkNoTrackingLive, checkUnsafeVhLive, } from './live/index.js';
45
- export { checkAudioMuteRespect, checkBrandFonts, checkBrandTokens, checkBundleSize, checkClaudeMdSlim, checkDarkMode, checkDeployWorkflow, checkGameNaming, checkGitignoreComplete, checkHtmlMeta, checkLicenseMit, checkManifest, checkMaskableIcon, checkNoAnyTypes, checkNoBrandOverrides, checkNoConsoleLog, checkNoCookies, checkNoEnvProduction, checkNoExcessiveInlineStyles, checkNoExternalFetch, checkNoExternalScripts, checkNoHardcodedColors, checkNoPaymentSdk, checkNoPlaceholders, checkNoScroll, checkNoTracking, checkPwaIcons, checkPwaMeta, checkPwaOffline, checkReactStrictMode, checkSdkVersion, checkStoreLink, checkTechVersions, checkTypescriptStrict, checkUnsafeVh, checkUsesGameSdk, checkUsesLocalStorage, checkViewportSupport, fsFileSource, isGameProject, mapFileSource, };
47
+ // Check battery + the Map front door live in run-checks.ts (node-free,
48
+ // also re-exported from ./worker for Workers). Re-exported here so
49
+ // existing CLI/back-end importers keep their single import site.
50
+ export { checkAudioMuteRespect, checkBrandFonts, checkBrandTokens, checkBundleSize, checkClaudeMdSlim, checkDarkMode, checkDeployWorkflow, checkGameNaming, checkGitignoreComplete, checkHtmlMeta, checkLicenseMit, checkManifest, checkMaskableIcon, checkNoAnyTypes, checkNoBrandOverrides, checkNoConsoleLog, checkNoCookies, checkNoEnvProduction, checkNoExcessiveInlineStyles, checkNoExternalFetch, checkNoExternalScripts, checkNoHardcodedColors, checkNoPaymentSdk, checkNoPlaceholders, checkNoScroll, checkNoTracking, checkPwaIcons, checkPwaMeta, checkPwaOffline, checkReactStrictMode, checkSdkVersion, checkStoreLink, checkTechVersions, checkTypescriptStrict, checkUnsafeVh, checkUsesGameSdk, checkUsesLocalStorage, checkViewportSupport, fsFileSource, isGameProject, mapFileSource, runChecksFromFiles, runChecksOn, };
46
51
  /**
47
- * Runs every compliance check against the source. Two front doors:
48
- * - `runChecks(repoDir)` — CLI / CI; reads from disk.
49
- * - `runChecksFromFiles(map)` — VibeCode agent; reads from a Map.
50
- *
51
- * Both call the same underlying check functions via the FileSource
52
- * abstraction, so rules stay in one place. Results are returned in a
53
- * stable order so callers can render predictable output.
52
+ * On-disk front door — CLI / CI. Reads from a real directory via
53
+ * fsFileSource (node:fs). The Map front door (`runChecksFromFiles`)
54
+ * shares the same check battery through the FileSource abstraction, so
55
+ * rules stay in one place regardless of where the files come from.
54
56
  */
55
57
  export async function runChecks(repoDir) {
56
58
  return runChecksOn(fsFileSource(repoDir));
57
59
  }
58
- export async function runChecksFromFiles(files) {
59
- return runChecksOn(mapFileSource(files));
60
- }
61
- async function runChecksOn(source) {
62
- return Promise.all([
63
- // Platform rules (hard fail)
64
- checkLicenseMit(source),
65
- checkNoEnvProduction(source),
66
- checkNoPlaceholders(source),
67
- checkNoTracking(source),
68
- checkNoPaymentSdk(source),
69
- checkNoCookies(source),
70
- checkNoExternalScripts(source),
71
- checkNoExternalFetch(source),
72
- // Brand & design
73
- checkAudioMuteRespect(source),
74
- checkBrandFonts(source),
75
- checkBrandTokens(source),
76
- checkNoBrandOverrides(source),
77
- checkDarkMode(source),
78
- // Layout & viewport
79
- checkNoScroll(source),
80
- checkViewportSupport(source),
81
- checkUnsafeVh(source),
82
- // HTML & PWA
83
- checkHtmlMeta(source),
84
- checkPwaMeta(source),
85
- checkPwaOffline(source),
86
- checkManifest(source),
87
- checkMaskableIcon(source),
88
- checkPwaIcons(source),
89
- // SDK & code quality
90
- checkUsesGameSdk(source),
91
- checkTypescriptStrict(source),
92
- checkStoreLink(source),
93
- checkBundleSize(source),
94
- checkClaudeMdSlim(source),
95
- // Warnings (guidelines, not gates)
96
- checkSdkVersion(source),
97
- checkTechVersions(source),
98
- checkNoAnyTypes(source),
99
- checkNoConsoleLog(source),
100
- checkUsesLocalStorage(source),
101
- checkGameNaming(source),
102
- checkNoHardcodedColors(source),
103
- checkNoExcessiveInlineStyles(source),
104
- checkDeployWorkflow(source),
105
- checkGitignoreComplete(source),
106
- checkReactStrictMode(source),
107
- ]);
108
- }
109
60
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -26,17 +26,12 @@ export interface FileSource {
26
26
  listDir?(dir: string): Promise<string[] | null>;
27
27
  }
28
28
  /**
29
- * Filesystem-backed FileSource — used by the CLI and CI. Walks the
30
- * directory tree once on first list() iteration; uses node:fs for
31
- * read/readBytes/listDir.
32
- *
33
- * Paths containing `..` segments are rejected — every read returns
34
- * null. Defense in depth: today's checks only pass paths that came
35
- * from `list()` (which stays inside the root), but a future buggy or
36
- * malicious check could try `source.read('../etc/passwd')`. We refuse
37
- * rather than letting `path.join` resolve outside repoDir.
29
+ * Noise dirs skipped by every FileSource. Exported so the on-disk
30
+ * walker (fs-file-source.ts) shares the same list as the Map adapter
31
+ * below. Kept in this node-free module so importing it (or mapFileSource)
32
+ * never drags node:fs into a Worker bundle.
38
33
  */
39
- export declare function fsFileSource(repoDir: string): FileSource;
34
+ export declare const SKIP_DIRS: Set<string>;
40
35
  /**
41
36
  * Map-backed FileSource — used by the VibeCode agent (Workers env).
42
37
  * The agent's session DO holds the virtual filesystem as a Map; this
@@ -1 +1 @@
1
- {"version":3,"file":"file-source.d.ts","sourceRoot":"","sources":["../../src/lib/file-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,0DAA0D;IAC1D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C;iDAC6C;IAC7C,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACrD;mEAC+D;IAC/D,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CACjD;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA+BxD;AA4BD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CA8BpE"}
1
+ {"version":3,"file":"file-source.d.ts","sourceRoot":"","sources":["../../src/lib/file-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,0DAA0D;IAC1D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C;iDAC6C;IAC7C,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACrD;mEAC+D;IAC/D,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CACjD;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,aAQpB,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CA8BpE"}
@@ -13,9 +13,13 @@
13
13
  * - `list()` already excludes noise dirs (.git, node_modules, dist,
14
14
  * etc.). Implementations are responsible for that filtering.
15
15
  */
16
- import { readdir, readFile } from 'node:fs/promises';
17
- import { join, relative, sep } from 'node:path';
18
- const SKIP_DIRS = new Set([
16
+ /**
17
+ * Noise dirs skipped by every FileSource. Exported so the on-disk
18
+ * walker (fs-file-source.ts) shares the same list as the Map adapter
19
+ * below. Kept in this node-free module so importing it (or mapFileSource)
20
+ * never drags node:fs into a Worker bundle.
21
+ */
22
+ export const SKIP_DIRS = new Set([
19
23
  '.git',
20
24
  'node_modules',
21
25
  'dist',
@@ -24,83 +28,6 @@ const SKIP_DIRS = new Set([
24
28
  '.wrangler',
25
29
  '.turbo',
26
30
  ]);
27
- /**
28
- * Filesystem-backed FileSource — used by the CLI and CI. Walks the
29
- * directory tree once on first list() iteration; uses node:fs for
30
- * read/readBytes/listDir.
31
- *
32
- * Paths containing `..` segments are rejected — every read returns
33
- * null. Defense in depth: today's checks only pass paths that came
34
- * from `list()` (which stays inside the root), but a future buggy or
35
- * malicious check could try `source.read('../etc/passwd')`. We refuse
36
- * rather than letting `path.join` resolve outside repoDir.
37
- */
38
- export function fsFileSource(repoDir) {
39
- return {
40
- async *list() {
41
- yield* walk(repoDir, repoDir);
42
- },
43
- async read(path) {
44
- if (hasTraversal(path))
45
- return null;
46
- try {
47
- return await readFile(join(repoDir, path), 'utf8');
48
- }
49
- catch {
50
- return null;
51
- }
52
- },
53
- async readBytes(path) {
54
- if (hasTraversal(path))
55
- return null;
56
- try {
57
- const buf = await readFile(join(repoDir, path));
58
- return new Uint8Array(buf);
59
- }
60
- catch {
61
- return null;
62
- }
63
- },
64
- async listDir(dir) {
65
- if (hasTraversal(dir))
66
- return null;
67
- try {
68
- return await readdir(join(repoDir, dir));
69
- }
70
- catch {
71
- return null;
72
- }
73
- },
74
- };
75
- }
76
- /** True if `path` contains a `..` segment or is absolute. */
77
- function hasTraversal(path) {
78
- if (path.startsWith('/') || /^[a-zA-Z]:/.test(path))
79
- return true; // absolute
80
- return path.split(/[/\\]/).some((seg) => seg === '..');
81
- }
82
- async function* walk(dir, root) {
83
- let entries;
84
- try {
85
- entries = await readdir(dir, { withFileTypes: true });
86
- }
87
- catch {
88
- return;
89
- }
90
- for (const entry of entries) {
91
- const full = join(dir, entry.name);
92
- if (entry.isDirectory()) {
93
- if (SKIP_DIRS.has(entry.name))
94
- continue;
95
- yield* walk(full, root);
96
- }
97
- else if (entry.isFile()) {
98
- // Always emit POSIX-style paths so checks can rely on consistent
99
- // separators across platforms.
100
- yield relative(root, full).split(sep).join('/');
101
- }
102
- }
103
- }
104
31
  /**
105
32
  * Map-backed FileSource — used by the VibeCode agent (Workers env).
106
33
  * The agent's session DO holds the virtual filesystem as a Map; this
@@ -1 +1 @@
1
- {"version":3,"file":"file-source.js","sourceRoot":"","sources":["../../src/lib/file-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-source.js","sourceRoot":"","sources":["../../src/lib/file-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IAC/B,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,QAAQ;IACR,WAAW;IACX,QAAQ;CACT,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,KAA0B;IACtD,OAAO;QACL,KAAK,CAAC,CAAC,IAAI;YACT,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,IAAI,aAAa,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAClC,MAAM,IAAI,CAAC;YACb,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI;YACb,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjC,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,IAAI;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACpC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,GAAG;YACf,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YACnC,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACvC,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Filesystem-backed FileSource — used by the CLI and CI.
3
+ *
4
+ * Split out of file-source.ts so the node:fs / node:path imports live
5
+ * in a module that only the CLI path pulls in. The Worker path (the
6
+ * VibeCode agent) imports mapFileSource + the checks, which stay
7
+ * node-free, so bundling for Cloudflare Workers never hits node:fs.
8
+ */
9
+ import { type FileSource } from './file-source.js';
10
+ /**
11
+ * Walks the directory tree once on first list() iteration; uses node:fs
12
+ * for read/readBytes/listDir.
13
+ *
14
+ * Paths containing `..` segments are rejected — every read returns
15
+ * null. Defense in depth: today's checks only pass paths that came
16
+ * from `list()` (which stays inside the root), but a future buggy or
17
+ * malicious check could try `source.read('../etc/passwd')`. We refuse
18
+ * rather than letting `path.join` resolve outside repoDir.
19
+ */
20
+ export declare function fsFileSource(repoDir: string): FileSource;
21
+ //# sourceMappingURL=fs-file-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-file-source.d.ts","sourceRoot":"","sources":["../../src/lib/fs-file-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,kBAAkB,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA+BxD"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Filesystem-backed FileSource — used by the CLI and CI.
3
+ *
4
+ * Split out of file-source.ts so the node:fs / node:path imports live
5
+ * in a module that only the CLI path pulls in. The Worker path (the
6
+ * VibeCode agent) imports mapFileSource + the checks, which stay
7
+ * node-free, so bundling for Cloudflare Workers never hits node:fs.
8
+ */
9
+ import { readdir, readFile } from 'node:fs/promises';
10
+ import { join, relative, sep } from 'node:path';
11
+ import { SKIP_DIRS } from './file-source.js';
12
+ /**
13
+ * Walks the directory tree once on first list() iteration; uses node:fs
14
+ * for read/readBytes/listDir.
15
+ *
16
+ * Paths containing `..` segments are rejected — every read returns
17
+ * null. Defense in depth: today's checks only pass paths that came
18
+ * from `list()` (which stays inside the root), but a future buggy or
19
+ * malicious check could try `source.read('../etc/passwd')`. We refuse
20
+ * rather than letting `path.join` resolve outside repoDir.
21
+ */
22
+ export function fsFileSource(repoDir) {
23
+ return {
24
+ async *list() {
25
+ yield* walk(repoDir, repoDir);
26
+ },
27
+ async read(path) {
28
+ if (hasTraversal(path))
29
+ return null;
30
+ try {
31
+ return await readFile(join(repoDir, path), 'utf8');
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ },
37
+ async readBytes(path) {
38
+ if (hasTraversal(path))
39
+ return null;
40
+ try {
41
+ const buf = await readFile(join(repoDir, path));
42
+ return new Uint8Array(buf);
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ },
48
+ async listDir(dir) {
49
+ if (hasTraversal(dir))
50
+ return null;
51
+ try {
52
+ return await readdir(join(repoDir, dir));
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ },
58
+ };
59
+ }
60
+ /** True if `path` contains a `..` segment or is absolute. */
61
+ function hasTraversal(path) {
62
+ if (path.startsWith('/') || /^[a-zA-Z]:/.test(path))
63
+ return true; // absolute
64
+ return path.split(/[/\\]/).some((seg) => seg === '..');
65
+ }
66
+ async function* walk(dir, root) {
67
+ let entries;
68
+ try {
69
+ entries = await readdir(dir, { withFileTypes: true });
70
+ }
71
+ catch {
72
+ return;
73
+ }
74
+ for (const entry of entries) {
75
+ const full = join(dir, entry.name);
76
+ if (entry.isDirectory()) {
77
+ if (SKIP_DIRS.has(entry.name))
78
+ continue;
79
+ yield* walk(full, root);
80
+ }
81
+ else if (entry.isFile()) {
82
+ // Always emit POSIX-style paths so checks can rely on consistent
83
+ // separators across platforms.
84
+ yield relative(root, full).split(sep).join('/');
85
+ }
86
+ }
87
+ }
88
+ //# sourceMappingURL=fs-file-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-file-source.js","sourceRoot":"","sources":["../../src/lib/fs-file-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The full check battery, run against any FileSource. Node-free: this
3
+ * module imports only the check functions (which read through the
4
+ * FileSource abstraction) and the Map adapter, so it — and the Worker
5
+ * entry that re-exports it — bundle cleanly for Cloudflare Workers.
6
+ *
7
+ * The on-disk front door `runChecks(repoDir)` lives in index.ts, where
8
+ * pulling in fsFileSource (node:fs) is fine.
9
+ */
10
+ import { type FileSource } from './lib/file-source.js';
11
+ import type { CheckResult } from './types.js';
12
+ /**
13
+ * VibeCode agent front door — reads from the in-memory Map the agent's
14
+ * session DO holds. No filesystem access, so it's safe in a Worker.
15
+ */
16
+ export declare function runChecksFromFiles(files: Map<string, string>): Promise<CheckResult[]>;
17
+ export declare function runChecksOn(source: FileSource): Promise<CheckResult[]>;
18
+ //# sourceMappingURL=run-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-checks.d.ts","sourceRoot":"","sources":["../src/run-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwCH,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAE3F;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA+C5E"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The full check battery, run against any FileSource. Node-free: this
3
+ * module imports only the check functions (which read through the
4
+ * FileSource abstraction) and the Map adapter, so it — and the Worker
5
+ * entry that re-exports it — bundle cleanly for Cloudflare Workers.
6
+ *
7
+ * The on-disk front door `runChecks(repoDir)` lives in index.ts, where
8
+ * pulling in fsFileSource (node:fs) is fine.
9
+ */
10
+ import { checkAudioMuteRespect } from './checks/audio-mute-respect.js';
11
+ import { checkBrandFonts } from './checks/brand-fonts.js';
12
+ import { checkBrandTokens } from './checks/brand-tokens.js';
13
+ import { checkBundleSize } from './checks/bundle-size.js';
14
+ import { checkClaudeMdSlim } from './checks/claude-md-slim.js';
15
+ import { checkDarkMode } from './checks/dark-mode.js';
16
+ import { checkDeployWorkflow } from './checks/deploy-workflow.js';
17
+ import { checkGameNaming } from './checks/game-naming.js';
18
+ import { checkGitignoreComplete } from './checks/gitignore-complete.js';
19
+ import { checkHtmlMeta } from './checks/html-meta.js';
20
+ import { checkLicenseMit } from './checks/license-mit.js';
21
+ import { checkManifest } from './checks/manifest.js';
22
+ import { checkNoAnyTypes } from './checks/no-any-types.js';
23
+ import { checkNoBrandOverrides } from './checks/no-brand-overrides.js';
24
+ import { checkNoConsoleLog } from './checks/no-console-log.js';
25
+ import { checkNoCookies } from './checks/no-cookies.js';
26
+ import { checkNoEnvProduction } from './checks/no-env-production.js';
27
+ import { checkNoExcessiveInlineStyles } from './checks/no-excessive-inline-styles.js';
28
+ import { checkNoExternalFetch } from './checks/no-external-fetch.js';
29
+ import { checkNoExternalScripts } from './checks/no-external-scripts.js';
30
+ import { checkNoHardcodedColors } from './checks/no-hardcoded-colors.js';
31
+ import { checkNoPaymentSdk } from './checks/no-payment-sdk.js';
32
+ import { checkNoPlaceholders } from './checks/no-placeholders.js';
33
+ import { checkNoScroll } from './checks/no-scroll.js';
34
+ import { checkNoTracking } from './checks/no-tracking.js';
35
+ import { checkPwaIcons } from './checks/pwa-icons.js';
36
+ import { checkMaskableIcon } from './checks/pwa-maskable-icon.js';
37
+ import { checkPwaMeta } from './checks/pwa-meta.js';
38
+ import { checkPwaOffline } from './checks/pwa-offline.js';
39
+ import { checkReactStrictMode } from './checks/react-strict-mode.js';
40
+ import { checkSdkVersion } from './checks/sdk-version.js';
41
+ import { checkStoreLink } from './checks/store-link.js';
42
+ import { checkTechVersions } from './checks/tech-versions.js';
43
+ import { checkTypescriptStrict } from './checks/typescript-strict.js';
44
+ import { checkUnsafeVh } from './checks/unsafe-vh.js';
45
+ import { checkUsesGameSdk } from './checks/uses-game-sdk.js';
46
+ import { checkUsesLocalStorage } from './checks/uses-localstorage.js';
47
+ import { checkViewportSupport } from './checks/viewport-support.js';
48
+ import { mapFileSource } from './lib/file-source.js';
49
+ /**
50
+ * VibeCode agent front door — reads from the in-memory Map the agent's
51
+ * session DO holds. No filesystem access, so it's safe in a Worker.
52
+ */
53
+ export async function runChecksFromFiles(files) {
54
+ return runChecksOn(mapFileSource(files));
55
+ }
56
+ export async function runChecksOn(source) {
57
+ return Promise.all([
58
+ // Platform rules (hard fail)
59
+ checkLicenseMit(source),
60
+ checkNoEnvProduction(source),
61
+ checkNoPlaceholders(source),
62
+ checkNoTracking(source),
63
+ checkNoPaymentSdk(source),
64
+ checkNoCookies(source),
65
+ checkNoExternalScripts(source),
66
+ checkNoExternalFetch(source),
67
+ // Brand & design
68
+ checkAudioMuteRespect(source),
69
+ checkBrandFonts(source),
70
+ checkBrandTokens(source),
71
+ checkNoBrandOverrides(source),
72
+ checkDarkMode(source),
73
+ // Layout & viewport
74
+ checkNoScroll(source),
75
+ checkViewportSupport(source),
76
+ checkUnsafeVh(source),
77
+ // HTML & PWA
78
+ checkHtmlMeta(source),
79
+ checkPwaMeta(source),
80
+ checkPwaOffline(source),
81
+ checkManifest(source),
82
+ checkMaskableIcon(source),
83
+ checkPwaIcons(source),
84
+ // SDK & code quality
85
+ checkUsesGameSdk(source),
86
+ checkTypescriptStrict(source),
87
+ checkStoreLink(source),
88
+ checkBundleSize(source),
89
+ checkClaudeMdSlim(source),
90
+ // Warnings (guidelines, not gates)
91
+ checkSdkVersion(source),
92
+ checkTechVersions(source),
93
+ checkNoAnyTypes(source),
94
+ checkNoConsoleLog(source),
95
+ checkUsesLocalStorage(source),
96
+ checkGameNaming(source),
97
+ checkNoHardcodedColors(source),
98
+ checkNoExcessiveInlineStyles(source),
99
+ checkDeployWorkflow(source),
100
+ checkGitignoreComplete(source),
101
+ checkReactStrictMode(source),
102
+ ]);
103
+ }
104
+ //# sourceMappingURL=run-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-checks.js","sourceRoot":"","sources":["../src/run-checks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Worker-safe entry point (`@freegamestore/compliance/worker`).
3
+ *
4
+ * Same checks as the default entry, minus the two node:fs front doors
5
+ * (`fsFileSource`, `runChecks`). The VibeCode agent runs in a Cloudflare
6
+ * Worker and holds its virtual filesystem as a Map, so it imports from
7
+ * here and calls `runChecksFromFiles(map)` — nothing in this module's
8
+ * import graph touches node:fs, so it bundles cleanly for Workers.
9
+ */
10
+ export { checkAudioMuteRespect } from './checks/audio-mute-respect.js';
11
+ export { checkBrandFonts } from './checks/brand-fonts.js';
12
+ export { checkBrandTokens } from './checks/brand-tokens.js';
13
+ export { checkBundleSize } from './checks/bundle-size.js';
14
+ export { checkClaudeMdSlim } from './checks/claude-md-slim.js';
15
+ export { checkDarkMode } from './checks/dark-mode.js';
16
+ export { checkDeployWorkflow } from './checks/deploy-workflow.js';
17
+ export { checkGameNaming } from './checks/game-naming.js';
18
+ export { checkGitignoreComplete } from './checks/gitignore-complete.js';
19
+ export { checkHtmlMeta } from './checks/html-meta.js';
20
+ export { checkLicenseMit } from './checks/license-mit.js';
21
+ export { checkManifest } from './checks/manifest.js';
22
+ export { checkNoAnyTypes } from './checks/no-any-types.js';
23
+ export { checkNoBrandOverrides } from './checks/no-brand-overrides.js';
24
+ export { checkNoConsoleLog } from './checks/no-console-log.js';
25
+ export { checkNoCookies } from './checks/no-cookies.js';
26
+ export { checkNoEnvProduction } from './checks/no-env-production.js';
27
+ export { checkNoExcessiveInlineStyles } from './checks/no-excessive-inline-styles.js';
28
+ export { checkNoExternalFetch } from './checks/no-external-fetch.js';
29
+ export { checkNoExternalScripts } from './checks/no-external-scripts.js';
30
+ export { checkNoHardcodedColors } from './checks/no-hardcoded-colors.js';
31
+ export { checkNoPaymentSdk } from './checks/no-payment-sdk.js';
32
+ export { checkNoPlaceholders } from './checks/no-placeholders.js';
33
+ export { checkNoScroll } from './checks/no-scroll.js';
34
+ export { checkNoTracking } from './checks/no-tracking.js';
35
+ export { checkPwaIcons } from './checks/pwa-icons.js';
36
+ export { checkMaskableIcon } from './checks/pwa-maskable-icon.js';
37
+ export { checkPwaMeta } from './checks/pwa-meta.js';
38
+ export { checkPwaOffline } from './checks/pwa-offline.js';
39
+ export { checkReactStrictMode } from './checks/react-strict-mode.js';
40
+ export { checkSdkVersion } from './checks/sdk-version.js';
41
+ export { checkStoreLink } from './checks/store-link.js';
42
+ export { checkTechVersions } from './checks/tech-versions.js';
43
+ export { checkTypescriptStrict } from './checks/typescript-strict.js';
44
+ export { checkUnsafeVh } from './checks/unsafe-vh.js';
45
+ export { checkUsesGameSdk } from './checks/uses-game-sdk.js';
46
+ export { checkUsesLocalStorage } from './checks/uses-localstorage.js';
47
+ export { checkViewportSupport } from './checks/viewport-support.js';
48
+ export { type FileSource, mapFileSource } from './lib/file-source.js';
49
+ export { isGameProject } from './lib/project-type.js';
50
+ export type { LiveAuditInput, LiveAuditReport } from './live/index.js';
51
+ export { auditLive, checkBrandFontsLive, checkBundleSizeLive, checkManifestLive, checkNoTrackingLive, checkUnsafeVhLive, } from './live/index.js';
52
+ export { runChecksFromFiles, runChecksOn } from './run-checks.js';
53
+ export type { CheckResult, CheckStatus } from './types.js';
54
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/dist/worker.js ADDED
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Worker-safe entry point (`@freegamestore/compliance/worker`).
3
+ *
4
+ * Same checks as the default entry, minus the two node:fs front doors
5
+ * (`fsFileSource`, `runChecks`). The VibeCode agent runs in a Cloudflare
6
+ * Worker and holds its virtual filesystem as a Map, so it imports from
7
+ * here and calls `runChecksFromFiles(map)` — nothing in this module's
8
+ * import graph touches node:fs, so it bundles cleanly for Workers.
9
+ */
10
+ export { checkAudioMuteRespect } from './checks/audio-mute-respect.js';
11
+ export { checkBrandFonts } from './checks/brand-fonts.js';
12
+ export { checkBrandTokens } from './checks/brand-tokens.js';
13
+ export { checkBundleSize } from './checks/bundle-size.js';
14
+ export { checkClaudeMdSlim } from './checks/claude-md-slim.js';
15
+ export { checkDarkMode } from './checks/dark-mode.js';
16
+ export { checkDeployWorkflow } from './checks/deploy-workflow.js';
17
+ export { checkGameNaming } from './checks/game-naming.js';
18
+ export { checkGitignoreComplete } from './checks/gitignore-complete.js';
19
+ export { checkHtmlMeta } from './checks/html-meta.js';
20
+ export { checkLicenseMit } from './checks/license-mit.js';
21
+ export { checkManifest } from './checks/manifest.js';
22
+ export { checkNoAnyTypes } from './checks/no-any-types.js';
23
+ export { checkNoBrandOverrides } from './checks/no-brand-overrides.js';
24
+ export { checkNoConsoleLog } from './checks/no-console-log.js';
25
+ export { checkNoCookies } from './checks/no-cookies.js';
26
+ export { checkNoEnvProduction } from './checks/no-env-production.js';
27
+ export { checkNoExcessiveInlineStyles } from './checks/no-excessive-inline-styles.js';
28
+ export { checkNoExternalFetch } from './checks/no-external-fetch.js';
29
+ export { checkNoExternalScripts } from './checks/no-external-scripts.js';
30
+ export { checkNoHardcodedColors } from './checks/no-hardcoded-colors.js';
31
+ export { checkNoPaymentSdk } from './checks/no-payment-sdk.js';
32
+ export { checkNoPlaceholders } from './checks/no-placeholders.js';
33
+ export { checkNoScroll } from './checks/no-scroll.js';
34
+ export { checkNoTracking } from './checks/no-tracking.js';
35
+ export { checkPwaIcons } from './checks/pwa-icons.js';
36
+ export { checkMaskableIcon } from './checks/pwa-maskable-icon.js';
37
+ export { checkPwaMeta } from './checks/pwa-meta.js';
38
+ export { checkPwaOffline } from './checks/pwa-offline.js';
39
+ export { checkReactStrictMode } from './checks/react-strict-mode.js';
40
+ export { checkSdkVersion } from './checks/sdk-version.js';
41
+ export { checkStoreLink } from './checks/store-link.js';
42
+ export { checkTechVersions } from './checks/tech-versions.js';
43
+ export { checkTypescriptStrict } from './checks/typescript-strict.js';
44
+ export { checkUnsafeVh } from './checks/unsafe-vh.js';
45
+ export { checkUsesGameSdk } from './checks/uses-game-sdk.js';
46
+ export { checkUsesLocalStorage } from './checks/uses-localstorage.js';
47
+ export { checkViewportSupport } from './checks/viewport-support.js';
48
+ export { mapFileSource } from './lib/file-source.js';
49
+ export { isGameProject } from './lib/project-type.js';
50
+ export { auditLive, checkBrandFontsLive, checkBundleSizeLive, checkManifestLive, checkNoTrackingLive, checkUnsafeVhLive, } from './live/index.js';
51
+ export { runChecksFromFiles, runChecksOn } from './run-checks.js';
52
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAmB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freegamestore/compliance",
3
- "version": "0.8.2",
3
+ "version": "0.9.0",
4
4
  "description": "Compliance checks for games published on freegamestore.online — used by the CLI for local feedback and by CI for gating.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,6 +10,10 @@
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
12
  "import": "./dist/index.js"
13
+ },
14
+ "./worker": {
15
+ "types": "./dist/worker.d.ts",
16
+ "import": "./dist/worker.js"
13
17
  }
14
18
  },
15
19
  "homepage": "https://github.com/freegamestore-online/platform#readme",