@proappstore/compliance 0.2.10 → 0.2.12
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/README.md +24 -0
- package/dist/clause-map.d.ts +57 -0
- package/dist/clause-map.d.ts.map +1 -0
- package/dist/clause-map.js +108 -0
- package/dist/clause-map.js.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -22
- package/dist/index.js.map +1 -1
- package/dist/live/index.d.ts.map +1 -1
- package/dist/live/index.js +7 -0
- package/dist/live/index.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,30 @@ for (const r of results) {
|
|
|
12
12
|
}
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
+
## Check ids and standard citations
|
|
16
|
+
|
|
17
|
+
Every result is decorated with a stable `checkId`, `citations[]` into the
|
|
18
|
+
public [Application Standard](https://docs.proappstore.online/standard/)
|
|
19
|
+
(`{ clauseId, url }`), an `automation` level (`full` | `partial`) and
|
|
20
|
+
`evidence` (`{ class, detail }`). The mapping lives in `src/clause-map.ts` and
|
|
21
|
+
is published at
|
|
22
|
+
<https://docs.proappstore.online/standard/compliance-checks.json>; `CHECKS`,
|
|
23
|
+
`clauseUrl()`, `annotateByName()` and `complianceMap()` are exported. Ids are
|
|
24
|
+
never renamed. These checks are hygiene scans, not a security audit — see
|
|
25
|
+
[automation levels](https://docs.proappstore.online/standard/audit-model/#automation-levels).
|
|
26
|
+
|
|
27
|
+
## What is scanned
|
|
28
|
+
|
|
29
|
+
`fsFileSource(dir)` walks the working directory honouring every `.gitignore` it
|
|
30
|
+
meets (nested files, `!` re-includes, last match wins) and, regardless of
|
|
31
|
+
`.gitignore`, skips `.git`, `node_modules`, `dist`, `.next`, `.cache`,
|
|
32
|
+
`.wrangler`, `.turbo` and the generated-report directories `.vibe-check`,
|
|
33
|
+
`playwright-report`, `test-results`, `coverage`, `.vite`, `graphify-out`.
|
|
34
|
+
`mapFileSource(map)` — the publish gate, fed with the files that are actually in
|
|
35
|
+
the repository — applies only the directory skip list: ignore rules never
|
|
36
|
+
governed tracked files, so honouring them there could only hide real source.
|
|
37
|
+
There is no separate ignore configuration; `.gitignore` is it.
|
|
38
|
+
|
|
15
39
|
## Checks
|
|
16
40
|
|
|
17
41
|
`runChecks(dir)` (and `runChecksFromFiles(map)`) runs the full suite below.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable check IDs and their mapping to the public Application Standard (#166).
|
|
3
|
+
*
|
|
4
|
+
* Every compliance check — source-side and live — has a kebab-case id that is
|
|
5
|
+
* never renamed, one or more clause ids from docs/standard, and a statement of
|
|
6
|
+
* how much of those clauses it proves. The runner decorates each CheckResult
|
|
7
|
+
* with this so `pas check`, CI output and the publish gate can cite the exact
|
|
8
|
+
* public clause a failure breaches.
|
|
9
|
+
*
|
|
10
|
+
* The standard's clause ids and URLs are the source of truth
|
|
11
|
+
* (docs/standard/standard.json); clause-map.test.ts fails if a mapped clause
|
|
12
|
+
* does not exist there or if docs/standard/compliance-checks.json (the
|
|
13
|
+
* published copy of this table) drifts from it.
|
|
14
|
+
*
|
|
15
|
+
* Keep this file dependency-free: scripts/build-compliance-map.mjs imports it
|
|
16
|
+
* directly to publish the JSON.
|
|
17
|
+
*/
|
|
18
|
+
import type { CheckAutomation, CheckResult, EvidenceClass, StandardCitation } from './types.js';
|
|
19
|
+
export declare const STANDARD_BASE_URL = "https://docs.proappstore.online/standard/";
|
|
20
|
+
/** Public URL of a clause: `<base>/<chapter page>/#<id in lower case>`. */
|
|
21
|
+
export declare function clauseUrl(clauseId: string): string;
|
|
22
|
+
export interface CheckMeta {
|
|
23
|
+
/** Stable id. Never renamed; a retired check keeps its id in `RETIRED_CHECK_IDS`. */
|
|
24
|
+
id: string;
|
|
25
|
+
/** The `name` the check emits on its results (the historical, human-facing label). */
|
|
26
|
+
name: string;
|
|
27
|
+
/** Clause ids this check evidences, most specific first. */
|
|
28
|
+
clauses: string[];
|
|
29
|
+
automation: CheckAutomation;
|
|
30
|
+
evidenceClass: EvidenceClass;
|
|
31
|
+
/** `apps`, `games` or `all` — which project types the check is meaningful for. */
|
|
32
|
+
scope: 'apps' | 'games' | 'all';
|
|
33
|
+
/** What the check does NOT prove, or a known caveat. Shown in docs, not in CLI output. */
|
|
34
|
+
limits: string;
|
|
35
|
+
/** True for the live-URL audit variants. */
|
|
36
|
+
live?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare const CHECKS: readonly CheckMeta[];
|
|
39
|
+
/** Ids that once existed; kept so a consumer storing results by id never sees a reused meaning. */
|
|
40
|
+
export declare const RETIRED_CHECK_IDS: readonly string[];
|
|
41
|
+
export declare function getCheckMeta(id: string): CheckMeta | undefined;
|
|
42
|
+
export declare function getCheckMetaForName(name: string): CheckMeta | undefined;
|
|
43
|
+
export declare function citationsFor(meta: CheckMeta): StandardCitation[];
|
|
44
|
+
/** Decorate a raw check result with its id, citations, automation level and evidence. */
|
|
45
|
+
export declare function annotate(result: CheckResult, meta: CheckMeta): CheckResult;
|
|
46
|
+
/** Decorate by the emitted name; results with no mapping are returned unchanged. */
|
|
47
|
+
export declare function annotateByName(result: CheckResult): CheckResult;
|
|
48
|
+
/** The mapping in the shape published at docs/standard/compliance-checks.json. */
|
|
49
|
+
export declare function complianceMap(): {
|
|
50
|
+
$schema: string;
|
|
51
|
+
standard_base_url: string;
|
|
52
|
+
automation_levels: Record<CheckAutomation, string>;
|
|
53
|
+
checks: Array<Omit<CheckMeta, 'clauses'> & {
|
|
54
|
+
clauses: StandardCitation[];
|
|
55
|
+
}>;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=clause-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clause-map.d.ts","sourceRoot":"","sources":["../src/clause-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhG,eAAO,MAAM,iBAAiB,8CAA8C,CAAC;AAM7E,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,MAAM,WAAW,SAAS;IACxB,qFAAqF;IACrF,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,aAAa,CAAC;IAC7B,kFAAkF;IAClF,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAChC,0FAA0F;IAC1F,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,MAAM,EAAE,SAAS,SAAS,EAsDtC,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAO,CAAC;AAKvD,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE9D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEvE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,EAAE,CAEhE;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAG,WAAW,CAQ1E;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAG/D;AAED,kFAAkF;AAClF,wBAAgB,aAAa,IAAI;IAC/B,OAAO,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/F,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG;QAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAC;CAC7E,CAUA"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export const STANDARD_BASE_URL = 'https://docs.proappstore.online/standard/';
|
|
2
|
+
const CHAPTER_PAGES = {
|
|
3
|
+
STACK: 'stack', AUTH: 'auth', DATA: 'data', INT: 'integrations', UI: 'ui', OPS: 'ops',
|
|
4
|
+
};
|
|
5
|
+
/** Public URL of a clause: `<base>/<chapter page>/#<id in lower case>`. */
|
|
6
|
+
export function clauseUrl(clauseId) {
|
|
7
|
+
const m = /^PAS-([A-Z]+)-\d{3}$/.exec(clauseId);
|
|
8
|
+
const page = m ? CHAPTER_PAGES[m[1]] : undefined;
|
|
9
|
+
if (!page)
|
|
10
|
+
throw new Error(`unknown clause id ${clauseId}`);
|
|
11
|
+
return `${STANDARD_BASE_URL}${page}/#${clauseId.toLowerCase()}`;
|
|
12
|
+
}
|
|
13
|
+
export const CHECKS = [
|
|
14
|
+
{ id: 'license-mit', name: 'MIT License', clauses: ['PAS-UI-022'], automation: 'partial', evidenceClass: 'documentation', scope: 'all',
|
|
15
|
+
limits: 'Assumes MIT while the Pro tier permits proprietary source; a proprietary licence records this as a known platform inconsistency, not an app defect.' },
|
|
16
|
+
{ id: 'no-env-production', name: 'No .env.production', clauses: ['PAS-OPS-006', 'PAS-STACK-015', 'PAS-UI-022'], automation: 'partial', evidenceClass: 'configuration', scope: 'all',
|
|
17
|
+
limits: 'Only the one file name; keys in source, in VITE_* variables, or in other .env files are not detected.' },
|
|
18
|
+
{ id: 'no-placeholders', name: 'No template placeholders', clauses: ['PAS-UI-020'], automation: 'full', evidenceClass: 'source', scope: 'all',
|
|
19
|
+
limits: 'Detects the literal APPNAME token only.' },
|
|
20
|
+
{ id: 'no-tracking', name: 'No tracking SDKs', clauses: ['PAS-UI-022', 'PAS-STACK-021', 'PAS-OPS-018'], automation: 'partial', evidenceClass: 'source', scope: 'all',
|
|
21
|
+
limits: 'A fixed list of known trackers; a self-hosted or unlisted tracker is not detected.' },
|
|
22
|
+
{ id: 'brand-fonts', name: 'Brand fonts present', clauses: ['PAS-UI-001', 'PAS-STACK-022'], automation: 'partial', evidenceClass: 'source', scope: 'all',
|
|
23
|
+
limits: 'Presence of the font names in CSS/HTML; not that they are actually applied.' },
|
|
24
|
+
{ id: 'brand-tokens', name: 'Brand tokens defined', clauses: ['PAS-UI-001', 'PAS-STACK-022'], automation: 'partial', evidenceClass: 'source', scope: 'all',
|
|
25
|
+
limits: 'That the canonical tokens are defined; not that the app uses them instead of hard-coded colours.' },
|
|
26
|
+
{ id: 'no-brand-overrides', name: 'No brand overrides', clauses: ['PAS-UI-001', 'PAS-STACK-022'], automation: 'partial', evidenceClass: 'source', scope: 'all',
|
|
27
|
+
limits: 'Common override forms only; the banned alias names themselves are caught by the platform design-system lint, not here.' },
|
|
28
|
+
{ id: 'no-scroll', name: 'No scroll (games only)', clauses: ['PAS-UI-009'], automation: 'partial', evidenceClass: 'source', scope: 'games',
|
|
29
|
+
limits: 'Games only; static CSS anti-patterns. Real document scroll is measured only in a browser.' },
|
|
30
|
+
{ id: 'viewport-support', name: 'Viewport support', clauses: ['PAS-UI-008'], automation: 'partial', evidenceClass: 'configuration', scope: 'all',
|
|
31
|
+
limits: 'That orientation and min_viewport_width are declared; not that the layout works at that width.' },
|
|
32
|
+
{ id: 'unsafe-vh', name: 'No unsafe 100vh', clauses: ['PAS-UI-010'], automation: 'partial', evidenceClass: 'source', scope: 'all',
|
|
33
|
+
limits: '100vh in source only; safe-area padding and the iOS first-load scroll need a device.' },
|
|
34
|
+
{ id: 'accessibility-static', name: 'Accessibility static', clauses: ['PAS-UI-004'], automation: 'partial', evidenceClass: 'source', scope: 'all',
|
|
35
|
+
limits: 'Missing alt text, unnamed buttons and unlabeled text controls only. Contrast, focus order, keyboard traps and rendered ARIA need a browser and a person (PAS-UI-005, 006, 023).' },
|
|
36
|
+
{ id: 'html-meta', name: 'HTML meta tags', clauses: ['PAS-UI-008', 'PAS-UI-020'], automation: 'partial', evidenceClass: 'configuration', scope: 'all',
|
|
37
|
+
limits: 'Presence of lang, viewport, title and preview images; not the viewport\'s content (user-scalable=no is PAS-UI-007, a manual check).' },
|
|
38
|
+
{ id: 'pwa-meta', name: 'PWA meta tags', clauses: ['PAS-UI-020'], automation: 'partial', evidenceClass: 'configuration', scope: 'all',
|
|
39
|
+
limits: 'The iOS install metas only; install behaviour is verified on a device.' },
|
|
40
|
+
{ id: 'pwa-offline', name: 'PWA offline correctness', clauses: ['PAS-UI-018', 'PAS-UI-019'], automation: 'partial', evidenceClass: 'configuration', scope: 'all',
|
|
41
|
+
limits: 'That a service worker is registered and the workbox config is sane; not that /.pas/* or authenticated responses stay uncached at runtime.' },
|
|
42
|
+
{ id: 'pwa-manifest', name: 'PWA manifest', clauses: ['PAS-UI-020'], automation: 'partial', evidenceClass: 'configuration', scope: 'all',
|
|
43
|
+
limits: 'The four required fields; the rest of the manifest is reviewed manually.' },
|
|
44
|
+
{ id: 'pwa-maskable-icon', name: 'PWA maskable icon', clauses: ['PAS-UI-020'], automation: 'full', evidenceClass: 'configuration', scope: 'all',
|
|
45
|
+
limits: 'Declaration only; the icon\'s safe zone is not rendered.' },
|
|
46
|
+
{ id: 'store-link', name: 'Store link', clauses: ['PAS-UI-001', 'PAS-STACK-022'], automation: 'full', evidenceClass: 'source', scope: 'all',
|
|
47
|
+
limits: 'That the domain appears somewhere under web/src; not that it is visible.' },
|
|
48
|
+
{ id: 'dark-mode', name: 'Dark mode support', clauses: ['PAS-UI-002'], automation: 'partial', evidenceClass: 'source', scope: 'apps',
|
|
49
|
+
limits: 'Warn-only signal detection; the storage-key split (fas:theme vs stores-theme) and dark-scheme contrast are manual.' },
|
|
50
|
+
{ id: 'bundle-size', name: 'Bundle size', clauses: ['PAS-UI-021', 'PAS-STACK-024'], automation: 'partial', evidenceClass: 'process', scope: 'all',
|
|
51
|
+
limits: 'Warns when web/dist is unbuilt; measures the largest JS chunk only.' },
|
|
52
|
+
{ id: 'claude-md-slim', name: 'CLAUDE.md is slim (no platform boilerplate)', clauses: ['PAS-STACK-001'], automation: 'partial', evidenceClass: 'documentation', scope: 'all',
|
|
53
|
+
limits: 'Documentation hygiene of the scaffold\'s agent guide; warn-only and not a security signal.' },
|
|
54
|
+
// Live-URL audit (auditLive) — a post-publish subset run against the deployed app.
|
|
55
|
+
{ id: 'reachable', name: 'Reachable', clauses: ['PAS-OPS-010'], automation: 'partial', evidenceClass: 'runtime', scope: 'all', live: true,
|
|
56
|
+
limits: 'HTTP 200 from the live URL; not that the app works (that is the post-deploy smoke).' },
|
|
57
|
+
{ id: 'brand-fonts-live', name: 'Brand fonts (live)', clauses: ['PAS-UI-001'], automation: 'partial', evidenceClass: 'runtime', scope: 'all', live: true,
|
|
58
|
+
limits: 'The fonts link in the served HTML only.' },
|
|
59
|
+
{ id: 'bundle-size-live', name: 'Bundle size (live)', clauses: ['PAS-UI-021'], automation: 'partial', evidenceClass: 'runtime', scope: 'all', live: true,
|
|
60
|
+
limits: 'HEAD size of the main bundle only.' },
|
|
61
|
+
{ id: 'pwa-manifest-live', name: 'PWA manifest (live)', clauses: ['PAS-UI-020'], automation: 'partial', evidenceClass: 'runtime', scope: 'all', live: true,
|
|
62
|
+
limits: 'Manifest reachable and minimally valid.' },
|
|
63
|
+
{ id: 'no-tracking-live', name: 'No tracking SDKs (live)', clauses: ['PAS-UI-022', 'PAS-STACK-021'], automation: 'partial', evidenceClass: 'runtime', scope: 'all', live: true,
|
|
64
|
+
limits: 'Known trackers in the served HTML and fetched scripts only.' },
|
|
65
|
+
{ id: 'unsafe-vh-live', name: 'No unsafe 100vh (live)', clauses: ['PAS-UI-010'], automation: 'partial', evidenceClass: 'runtime', scope: 'all', live: true,
|
|
66
|
+
limits: 'Served CSS text only.' },
|
|
67
|
+
];
|
|
68
|
+
/** Ids that once existed; kept so a consumer storing results by id never sees a reused meaning. */
|
|
69
|
+
export const RETIRED_CHECK_IDS = [];
|
|
70
|
+
const BY_NAME = new Map(CHECKS.map((m) => [m.name, m]));
|
|
71
|
+
const BY_ID = new Map(CHECKS.map((m) => [m.id, m]));
|
|
72
|
+
export function getCheckMeta(id) {
|
|
73
|
+
return BY_ID.get(id);
|
|
74
|
+
}
|
|
75
|
+
export function getCheckMetaForName(name) {
|
|
76
|
+
return BY_NAME.get(name);
|
|
77
|
+
}
|
|
78
|
+
export function citationsFor(meta) {
|
|
79
|
+
return meta.clauses.map((clauseId) => ({ clauseId, url: clauseUrl(clauseId) }));
|
|
80
|
+
}
|
|
81
|
+
/** Decorate a raw check result with its id, citations, automation level and evidence. */
|
|
82
|
+
export function annotate(result, meta) {
|
|
83
|
+
return {
|
|
84
|
+
...result,
|
|
85
|
+
checkId: meta.id,
|
|
86
|
+
citations: citationsFor(meta),
|
|
87
|
+
automation: meta.automation,
|
|
88
|
+
evidence: { class: meta.evidenceClass, detail: result.detail },
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/** Decorate by the emitted name; results with no mapping are returned unchanged. */
|
|
92
|
+
export function annotateByName(result) {
|
|
93
|
+
const meta = BY_NAME.get(result.name);
|
|
94
|
+
return meta ? annotate(result, meta) : result;
|
|
95
|
+
}
|
|
96
|
+
/** The mapping in the shape published at docs/standard/compliance-checks.json. */
|
|
97
|
+
export function complianceMap() {
|
|
98
|
+
return {
|
|
99
|
+
$schema: `${STANDARD_BASE_URL}compliance-checks.schema.json`,
|
|
100
|
+
standard_base_url: STANDARD_BASE_URL,
|
|
101
|
+
automation_levels: {
|
|
102
|
+
full: 'The check is the clause\'s automated enforcement; a pass is the clause\'s evidence.',
|
|
103
|
+
partial: 'The check proves one observable facet of the clause; the rest needs the manual or human review the clause names.',
|
|
104
|
+
},
|
|
105
|
+
checks: CHECKS.map((m) => ({ ...m, live: m.live ?? false, clauses: citationsFor(m) })),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=clause-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clause-map.js","sourceRoot":"","sources":["../src/clause-map.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -20,11 +20,14 @@ import { checkUnsafeVh } from './checks/unsafe-vh.js';
|
|
|
20
20
|
import { checkViewportSupport } from './checks/viewport-support.js';
|
|
21
21
|
import { fsFileSource, mapFileSource } from './lib/file-source.js';
|
|
22
22
|
import { isGameProject } from './lib/project-type.js';
|
|
23
|
+
import { CHECKS, annotate, annotateByName, getCheckMeta, getCheckMetaForName, citationsFor, clauseUrl, complianceMap, STANDARD_BASE_URL } from './clause-map.js';
|
|
23
24
|
import type { CheckResult } from './types.js';
|
|
24
25
|
export type { FileSource } from './lib/file-source.js';
|
|
25
26
|
export type { LiveAuditInput, LiveAuditReport } from './live/index.js';
|
|
26
27
|
export { auditLive, checkBrandFontsLive, checkBundleSizeLive, checkManifestLive, checkNoTrackingLive, checkUnsafeVhLive, } from './live/index.js';
|
|
27
|
-
export type { CheckResult, CheckStatus } from './types.js';
|
|
28
|
+
export type { CheckAutomation, CheckResult, CheckStatus, EvidenceClass, StandardCitation } from './types.js';
|
|
29
|
+
export type { CheckMeta } from './clause-map.js';
|
|
30
|
+
export { CHECKS, annotate, annotateByName, getCheckMeta, getCheckMetaForName, citationsFor, clauseUrl, complianceMap, STANDARD_BASE_URL };
|
|
28
31
|
export { checkAccessibilityStatic, checkBrandFonts, checkBrandTokens, checkBundleSize, checkClaudeMdSlim, checkDarkMode, checkHtmlMeta, checkLicenseMit, checkManifest, checkMaskableIcon, checkNoBrandOverrides, checkNoEnvProduction, checkNoPlaceholders, checkNoScroll, checkNoTracking, checkPwaMeta, checkPwaOffline, checkStoreLink, checkUnsafeVh, checkViewportSupport, fsFileSource, isGameProject, mapFileSource, };
|
|
29
32
|
/**
|
|
30
33
|
* Runs every compliance check against the source. Two front doors:
|
|
@@ -37,4 +40,6 @@ export { checkAccessibilityStatic, checkBrandFonts, checkBrandTokens, checkBundl
|
|
|
37
40
|
*/
|
|
38
41
|
export declare function runChecks(repoDir: string): Promise<CheckResult[]>;
|
|
39
42
|
export declare function runChecksFromFiles(files: Map<string, string>): Promise<CheckResult[]>;
|
|
43
|
+
/** Ids of the source-side checks, in output order. */
|
|
44
|
+
export declare const SOURCE_CHECK_IDS: readonly string[];
|
|
40
45
|
//# 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,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,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,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,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,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAmB,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,10 +20,12 @@ import { checkUnsafeVh } from './checks/unsafe-vh.js';
|
|
|
20
20
|
import { checkViewportSupport } from './checks/viewport-support.js';
|
|
21
21
|
import { fsFileSource, mapFileSource } from './lib/file-source.js';
|
|
22
22
|
import { isGameProject } from './lib/project-type.js';
|
|
23
|
+
import { CHECKS, annotate, annotateByName, getCheckMeta, getCheckMetaForName, citationsFor, clauseUrl, complianceMap, STANDARD_BASE_URL } from './clause-map.js';
|
|
23
24
|
// Live-URL audit (used by the compliance audit Worker; runs in
|
|
24
25
|
// browser/Workers env, no filesystem). Separate export path so callers
|
|
25
26
|
// don't accidentally pull node:fs in via the file-walking checks.
|
|
26
27
|
export { auditLive, checkBrandFontsLive, checkBundleSizeLive, checkManifestLive, checkNoTrackingLive, checkUnsafeVhLive, } from './live/index.js';
|
|
28
|
+
export { CHECKS, annotate, annotateByName, getCheckMeta, getCheckMetaForName, citationsFor, clauseUrl, complianceMap, STANDARD_BASE_URL };
|
|
27
29
|
export { checkAccessibilityStatic, checkBrandFonts, checkBrandTokens, checkBundleSize, checkClaudeMdSlim, checkDarkMode, checkHtmlMeta, checkLicenseMit, checkManifest, checkMaskableIcon, checkNoBrandOverrides, checkNoEnvProduction, checkNoPlaceholders, checkNoScroll, checkNoTracking, checkPwaMeta, checkPwaOffline, checkStoreLink, checkUnsafeVh, checkViewportSupport, fsFileSource, isGameProject, mapFileSource, };
|
|
28
30
|
/**
|
|
29
31
|
* Runs every compliance check against the source. Two front doors:
|
|
@@ -40,28 +42,41 @@ export async function runChecks(repoDir) {
|
|
|
40
42
|
export async function runChecksFromFiles(files) {
|
|
41
43
|
return runChecksOn(mapFileSource(files));
|
|
42
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Source-side checks in their stable output order, keyed by the id each result
|
|
47
|
+
* is decorated with (#166). Adding a check means adding it here AND to
|
|
48
|
+
* clause-map.ts; clause-map.test.ts fails on either half missing.
|
|
49
|
+
*/
|
|
50
|
+
const RUNNERS = [
|
|
51
|
+
{ id: 'license-mit', run: checkLicenseMit },
|
|
52
|
+
{ id: 'no-env-production', run: checkNoEnvProduction },
|
|
53
|
+
{ id: 'no-placeholders', run: checkNoPlaceholders },
|
|
54
|
+
{ id: 'no-tracking', run: checkNoTracking },
|
|
55
|
+
{ id: 'brand-fonts', run: checkBrandFonts },
|
|
56
|
+
{ id: 'brand-tokens', run: checkBrandTokens },
|
|
57
|
+
{ id: 'no-brand-overrides', run: checkNoBrandOverrides },
|
|
58
|
+
{ id: 'no-scroll', run: checkNoScroll },
|
|
59
|
+
{ id: 'viewport-support', run: checkViewportSupport },
|
|
60
|
+
{ id: 'unsafe-vh', run: checkUnsafeVh },
|
|
61
|
+
{ id: 'accessibility-static', run: checkAccessibilityStatic },
|
|
62
|
+
{ id: 'html-meta', run: checkHtmlMeta },
|
|
63
|
+
{ id: 'pwa-meta', run: checkPwaMeta },
|
|
64
|
+
{ id: 'pwa-offline', run: checkPwaOffline },
|
|
65
|
+
{ id: 'pwa-manifest', run: checkManifest },
|
|
66
|
+
{ id: 'pwa-maskable-icon', run: checkMaskableIcon },
|
|
67
|
+
{ id: 'store-link', run: checkStoreLink },
|
|
68
|
+
{ id: 'dark-mode', run: checkDarkMode },
|
|
69
|
+
{ id: 'bundle-size', run: checkBundleSize },
|
|
70
|
+
{ id: 'claude-md-slim', run: checkClaudeMdSlim },
|
|
71
|
+
];
|
|
72
|
+
/** Ids of the source-side checks, in output order. */
|
|
73
|
+
export const SOURCE_CHECK_IDS = RUNNERS.map((r) => r.id);
|
|
43
74
|
async function runChecksOn(source) {
|
|
44
|
-
return Promise.all(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
checkBrandTokens(source),
|
|
51
|
-
checkNoBrandOverrides(source),
|
|
52
|
-
checkNoScroll(source),
|
|
53
|
-
checkViewportSupport(source),
|
|
54
|
-
checkUnsafeVh(source),
|
|
55
|
-
checkAccessibilityStatic(source),
|
|
56
|
-
checkHtmlMeta(source),
|
|
57
|
-
checkPwaMeta(source),
|
|
58
|
-
checkPwaOffline(source),
|
|
59
|
-
checkManifest(source),
|
|
60
|
-
checkMaskableIcon(source),
|
|
61
|
-
checkStoreLink(source),
|
|
62
|
-
checkDarkMode(source),
|
|
63
|
-
checkBundleSize(source),
|
|
64
|
-
checkClaudeMdSlim(source),
|
|
65
|
-
]);
|
|
75
|
+
return Promise.all(RUNNERS.map(async ({ id, run }) => {
|
|
76
|
+
const meta = getCheckMeta(id);
|
|
77
|
+
if (!meta)
|
|
78
|
+
throw new Error(`compliance check ${id} has no clause mapping (clause-map.ts)`);
|
|
79
|
+
return annotate(await run(source), meta);
|
|
80
|
+
}));
|
|
66
81
|
}
|
|
67
82
|
//# 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,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,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,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,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,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAmB,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,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,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,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,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAmB,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKjK,+DAA+D;AAC/D,uEAAuE;AACvE,kEAAkE;AAClE,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAC1I,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,aAAa,GACd,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,OAAO,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAA0B;IACjE,OAAO,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,GAAqF;IAChG,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE;IAC3C,EAAE,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE;IACtD,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,mBAAmB,EAAE;IACnD,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE;IAC3C,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE;IAC3C,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,gBAAgB,EAAE;IAC7C,EAAE,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE,qBAAqB,EAAE;IACxD,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE;IACvC,EAAE,EAAE,EAAE,kBAAkB,EAAE,GAAG,EAAE,oBAAoB,EAAE;IACrD,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE;IACvC,EAAE,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,wBAAwB,EAAE;IAC7D,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE;IACvC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE;IACrC,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE;IAC3C,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE;IAC1C,EAAE,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,EAAE;IACzC,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE;IACvC,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE;IAC3C,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,EAAE;CACjD,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAsB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE5E,KAAK,UAAU,WAAW,CAAC,MAAkB;IAC3C,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,wCAAwC,CAAC,CAAC;QAC3F,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/live/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/live/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/live/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AA2BD,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAK/E;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAgB7D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAe7D;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8C3F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoD7F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoD3F"}
|
package/dist/live/index.js
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { gzipByteLength } from '../lib/gzip.js';
|
|
21
21
|
import { matchedTrackers } from '../checks/no-tracking.js';
|
|
22
|
+
import { annotateByName } from '../clause-map.js';
|
|
22
23
|
/**
|
|
23
24
|
* Fetch with a timeout — Workers' default fetch waits 30s+, too slow
|
|
24
25
|
* when iterating 50+ apps in one cron tick.
|
|
@@ -44,6 +45,12 @@ function isSubrequestCapError(err) {
|
|
|
44
45
|
return /too many subrequests|subrequest.*limit/i.test(msg);
|
|
45
46
|
}
|
|
46
47
|
export async function auditLive(input) {
|
|
48
|
+
const report = await auditLiveRaw(input);
|
|
49
|
+
// #166: every live result carries its stable id + clause citations too.
|
|
50
|
+
report.results = report.results.map(annotateByName);
|
|
51
|
+
return report;
|
|
52
|
+
}
|
|
53
|
+
async function auditLiveRaw(input) {
|
|
47
54
|
const checkedAt = Date.now();
|
|
48
55
|
const report = {
|
|
49
56
|
appId: input.appId,
|
package/dist/live/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/live/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/live/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
export type CheckStatus = 'pass' | 'warn' | 'fail';
|
|
2
|
+
/** Where a check's evidence comes from — the standard's evidence classes
|
|
3
|
+
* (docs/standard/audit-model.md#evidence-classes). */
|
|
4
|
+
export type EvidenceClass = 'configuration' | 'source' | 'process' | 'runtime' | 'documentation';
|
|
5
|
+
/**
|
|
6
|
+
* How much of the cited clause the check proves.
|
|
7
|
+
* full — the check is the clause's automated enforcement; a pass is the clause's evidence.
|
|
8
|
+
* partial — the check proves one observable facet; the rest of the clause needs a
|
|
9
|
+
* manual or human review (see the clause's Verification line).
|
|
10
|
+
*/
|
|
11
|
+
export type CheckAutomation = 'full' | 'partial';
|
|
12
|
+
/** A clickable citation into the public Application Standard. */
|
|
13
|
+
export interface StandardCitation {
|
|
14
|
+
/** Stable clause id, e.g. `PAS-UI-007`. */
|
|
15
|
+
clauseId: string;
|
|
16
|
+
/** Public URL with the clause anchor, e.g. https://docs.proappstore.online/standard/ui/#pas-ui-007 */
|
|
17
|
+
url: string;
|
|
18
|
+
}
|
|
2
19
|
export interface CheckResult {
|
|
3
20
|
/** Short human-readable name. */
|
|
4
21
|
name: string;
|
|
@@ -8,5 +25,16 @@ export interface CheckResult {
|
|
|
8
25
|
detail: string;
|
|
9
26
|
/** Optional actionable advice for fixing a fail/warn. */
|
|
10
27
|
suggestions?: string[];
|
|
28
|
+
/** Stable check id (kebab-case, never renamed), e.g. `no-tracking`. Added by the runner (#166). */
|
|
29
|
+
checkId?: string;
|
|
30
|
+
/** Clauses of the Application Standard this check evidences, with public URLs. */
|
|
31
|
+
citations?: StandardCitation[];
|
|
32
|
+
/** Whether the check is the clause's full automated enforcement or only a partial signal. */
|
|
33
|
+
automation?: CheckAutomation;
|
|
34
|
+
/** The evidence the result rests on: its class and the `detail` text as the observation. */
|
|
35
|
+
evidence?: {
|
|
36
|
+
class: EvidenceClass;
|
|
37
|
+
detail: string;
|
|
38
|
+
};
|
|
11
39
|
}
|
|
12
40
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,WAAW,CAAC;IACpB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD;uDACuD;AACvD,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjD,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,WAAW,CAAC;IACpB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mGAAmG;IACnG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,6FAA6F;IAC7F,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD"}
|
package/package.json
CHANGED