@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.
- package/dist/checks/claude-md-slim.js +1 -1
- package/dist/checks/claude-md-slim.js.map +1 -1
- package/dist/checks/license-mit.d.ts.map +1 -1
- package/dist/checks/license-mit.js +8 -1
- package/dist/checks/license-mit.js.map +1 -1
- package/dist/checks/no-external-fetch.d.ts.map +1 -1
- package/dist/checks/no-external-fetch.js +1 -2
- package/dist/checks/no-external-fetch.js.map +1 -1
- package/dist/index.d.ts +8 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -60
- package/dist/index.js.map +1 -1
- package/dist/lib/file-source.d.ts +5 -10
- package/dist/lib/file-source.d.ts.map +1 -1
- package/dist/lib/file-source.js +7 -80
- package/dist/lib/file-source.js.map +1 -1
- package/dist/lib/fs-file-source.d.ts +21 -0
- package/dist/lib/fs-file-source.d.ts.map +1 -0
- package/dist/lib/fs-file-source.js +88 -0
- package/dist/lib/fs-file-source.js.map +1 -0
- package/dist/run-checks.d.ts +18 -0
- package/dist/run-checks.d.ts.map +1 -0
- package/dist/run-checks.js +104 -0
- package/dist/run-checks.js.map +1 -0
- package/dist/worker.d.ts +54 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +52 -0
- package/dist/worker.js.map +1 -0
- package/package.json +5 -1
|
@@ -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
|
|
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":"AAGA;;;;;;;;;;;;;GAaG;AACH,MAAM,IAAI,GAAG,6CAA6C,CAAC;AAE3D,MAAM,UAAU,GACd,qFAAqF,CAAC;AAExF,wEAAwE;AACxE,qEAAqE;AACrE,MAAM,mBAAmB,GAAG;IAC1B,yBAAyB;IACzB,mEAAmE;IACnE,mDAAmD;IACnD,wBAAwB;IACxB,YAAY;IACZ,kBAAkB;IAClB,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,mEAAmE;IAC5E,eAAe;IACf,4BAA4B;IAC5B,YAAY;CACb,CAAC;AAEF,wEAAwE;AACxE,wEAAwE;AACxE,qEAAqE;AACrE,2BAA2B;AAC3B,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAkB;IACxD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,IAAI,
|
|
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,
|
|
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: `${
|
|
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,
|
|
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;
|
|
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', '
|
|
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":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD
|
|
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 {
|
|
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
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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,
|
|
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 {
|
|
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
|
-
|
|
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
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
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":"AAAA,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,
|
|
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
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
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
|
|
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;
|
|
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"}
|
package/dist/lib/file-source.js
CHANGED
|
@@ -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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
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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"}
|
package/dist/worker.d.ts
ADDED
|
@@ -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.
|
|
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",
|