@brandlab-digital/conformance 1.0.0-rc.8 → 1.0.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/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +35 -93
- package/dist/cli.js.map +1 -1
- package/dist/current-release.d.ts +3 -0
- package/dist/current-release.d.ts.map +1 -0
- package/dist/current-release.js +54 -0
- package/dist/current-release.js.map +1 -0
- package/dist/project.d.ts +19 -24
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +444 -1070
- package/dist/project.js.map +1 -1
- package/dist/release-manifest.d.ts +29 -82
- package/dist/release-manifest.d.ts.map +1 -1
- package/dist/release-manifest.js +141 -348
- package/dist/release-manifest.js.map +1 -1
- package/dist/rendered-content.d.ts +36 -0
- package/dist/rendered-content.d.ts.map +1 -0
- package/dist/rendered-content.js +146 -0
- package/dist/rendered-content.js.map +1 -0
- package/dist/verification-policy.d.ts +162 -0
- package/dist/verification-policy.d.ts.map +1 -0
- package/dist/verification-policy.js +309 -0
- package/dist/verification-policy.js.map +1 -0
- package/package.json +6 -22
- package/dist/legacy-architecture-contracts.d.ts +0 -31
- package/dist/legacy-architecture-contracts.d.ts.map +0 -1
- package/dist/legacy-architecture-contracts.js +0 -49
- package/dist/legacy-architecture-contracts.js.map +0 -1
- package/dist/locations.d.ts +0 -63
- package/dist/locations.d.ts.map +0 -1
- package/dist/locations.js +0 -105
- package/dist/locations.js.map +0 -1
- package/dist/project-config-v2-contract.d.ts +0 -32
- package/dist/project-config-v2-contract.d.ts.map +0 -1
- package/dist/project-config-v2-contract.js +0 -926
- package/dist/project-config-v2-contract.js.map +0 -1
- package/dist/project-config-v3.d.ts +0 -43
- package/dist/project-config-v3.d.ts.map +0 -1
- package/dist/project-config-v3.js +0 -2876
- package/dist/project-config-v3.js.map +0 -1
- package/dist/project-config.d.ts +0 -3
- package/dist/project-config.d.ts.map +0 -1
- package/dist/project-config.js +0 -3
- package/dist/project-config.js.map +0 -1
- package/dist/release-catalog.d.ts +0 -4
- package/dist/release-catalog.d.ts.map +0 -1
- package/dist/release-catalog.js +0 -714
- package/dist/release-catalog.js.map +0 -1
- package/dist/release-contract-compatibility.d.ts +0 -97
- package/dist/release-contract-compatibility.d.ts.map +0 -1
- package/dist/release-contract-compatibility.js +0 -112
- package/dist/release-contract-compatibility.js.map +0 -1
- package/dist/schema-hygiene.d.ts +0 -26
- package/dist/schema-hygiene.d.ts.map +0 -1
- package/dist/schema-hygiene.js +0 -28
- package/dist/schema-hygiene.js.map +0 -1
- package/dist/source-safety-contracts.d.ts +0 -20
- package/dist/source-safety-contracts.d.ts.map +0 -1
- package/dist/source-safety-contracts.js +0 -60
- package/dist/source-safety-contracts.js.map +0 -1
- package/dist/vitest.d.ts +0 -110
- package/dist/vitest.d.ts.map +0 -1
- package/dist/vitest.js +0 -2678
- package/dist/vitest.js.map +0 -1
package/dist/cli.d.ts
CHANGED
|
@@ -3,9 +3,6 @@ import { type BrandlabConformanceMode } from "./project.js";
|
|
|
3
3
|
interface CliOptions {
|
|
4
4
|
root: string;
|
|
5
5
|
installedRelease?: string | null;
|
|
6
|
-
targetRelease?: string | null;
|
|
7
|
-
supportPolicyPath: string | null;
|
|
8
|
-
releaseManifestPaths: string[];
|
|
9
6
|
mode: BrandlabConformanceMode;
|
|
10
7
|
json: boolean;
|
|
11
8
|
help: boolean;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAC;AAEtB,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,UAAU,KAAK;IACb,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAmBD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA2BhF;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAGH,GACA,MAAM,CAkBR;AAmDD,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAOT"}
|
package/dist/cli.js
CHANGED
|
@@ -1,58 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { evaluateBrandlabProject, shouldFailBrandlabConformance, } from "./project.js";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const HELP = `Brandlab verification
|
|
7
|
+
|
|
8
|
+
Runs the current objective verification checks for one project.
|
|
8
9
|
|
|
9
10
|
Usage:
|
|
10
|
-
brandlab-
|
|
11
|
+
brandlab-verify [--root <path>]
|
|
11
12
|
[--installed-release <version|unadopted>]
|
|
12
|
-
[--
|
|
13
|
-
[--target-release <version|none>] [--mode <local|ci|preflight>] [--json]
|
|
13
|
+
[--mode <local|ci|preflight>] [--json]
|
|
14
14
|
|
|
15
15
|
Exit status:
|
|
16
|
-
local/ci fail only for
|
|
17
|
-
preflight
|
|
16
|
+
local/ci fail only for objective current-release blockers
|
|
17
|
+
preflight uses the same checks against an isolated candidate
|
|
18
|
+
|
|
19
|
+
Static verification reports tests, builds, browsers and deployments as not run
|
|
20
|
+
until real evidence is supplied.
|
|
18
21
|
`;
|
|
19
22
|
export function parseBrandlabConformanceArgs(argv) {
|
|
20
23
|
const parsed = {
|
|
21
24
|
root: process.cwd(),
|
|
22
|
-
supportPolicyPath: null,
|
|
23
|
-
releaseManifestPaths: [],
|
|
24
25
|
mode: "local",
|
|
25
26
|
json: false,
|
|
26
27
|
help: false,
|
|
27
28
|
};
|
|
28
29
|
for (let index = 0; index < argv.length; index += 1) {
|
|
29
30
|
const argument = argv[index];
|
|
30
|
-
if (argument === "--help" || argument === "-h")
|
|
31
|
+
if (argument === "--help" || argument === "-h")
|
|
31
32
|
parsed.help = true;
|
|
32
|
-
|
|
33
|
-
else if (argument === "--json") {
|
|
33
|
+
else if (argument === "--json")
|
|
34
34
|
parsed.json = true;
|
|
35
|
-
}
|
|
36
35
|
else if (argument === "--root") {
|
|
37
36
|
parsed.root = resolve(requireValue(argv, ++index, "--root"));
|
|
38
37
|
}
|
|
39
|
-
else if (argument === "--support-policy") {
|
|
40
|
-
parsed.supportPolicyPath = resolve(requireValue(argv, ++index, "--support-policy"));
|
|
41
|
-
}
|
|
42
|
-
else if (argument === "--release-manifest") {
|
|
43
|
-
parsed.releaseManifestPaths.push(resolve(requireValue(argv, ++index, "--release-manifest")));
|
|
44
|
-
}
|
|
45
38
|
else if (argument === "--installed-release") {
|
|
46
39
|
const value = requireValue(argv, ++index, "--installed-release");
|
|
47
40
|
parsed.installedRelease = value === "unadopted" ? null : value;
|
|
48
41
|
}
|
|
49
|
-
else if (argument === "--target-release") {
|
|
50
|
-
const value = requireValue(argv, ++index, "--target-release");
|
|
51
|
-
parsed.targetRelease = value === "none" ? null : value;
|
|
52
|
-
}
|
|
53
42
|
else if (argument === "--mode") {
|
|
54
43
|
const value = requireValue(argv, ++index, "--mode");
|
|
55
|
-
if (
|
|
44
|
+
if (!["local", "ci", "preflight"].includes(value)) {
|
|
56
45
|
throw new Error(`Invalid --mode ${value}.`);
|
|
57
46
|
}
|
|
58
47
|
parsed.mode = value;
|
|
@@ -61,9 +50,6 @@ export function parseBrandlabConformanceArgs(argv) {
|
|
|
61
50
|
throw new Error(`Unknown argument ${argument}.`);
|
|
62
51
|
}
|
|
63
52
|
}
|
|
64
|
-
if (!parsed.help && parsed.supportPolicyPath === null) {
|
|
65
|
-
throw new Error("--support-policy is required.");
|
|
66
|
-
}
|
|
67
53
|
return parsed;
|
|
68
54
|
}
|
|
69
55
|
export function runBrandlabConformanceCli(argv, io = {
|
|
@@ -76,23 +62,10 @@ export function runBrandlabConformanceCli(argv, io = {
|
|
|
76
62
|
io.stdout(HELP);
|
|
77
63
|
return 0;
|
|
78
64
|
}
|
|
79
|
-
const supportPolicy = loadSupportPolicy(options.supportPolicyPath);
|
|
80
|
-
const policyManifestPaths = resolveSupportPolicyReleaseManifestPaths(options.supportPolicyPath, supportPolicy);
|
|
81
|
-
const releaseManifests = [
|
|
82
|
-
...new Set([
|
|
83
|
-
...policyManifestPaths,
|
|
84
|
-
...options.releaseManifestPaths,
|
|
85
|
-
]),
|
|
86
|
-
]
|
|
87
|
-
.map(loadReleaseManifest)
|
|
88
|
-
.sort((left, right) => compareBrandlabSemver(left.releaseVersion, right.releaseVersion));
|
|
89
65
|
const result = evaluateBrandlabProject({
|
|
90
66
|
root: options.root,
|
|
91
67
|
installedRelease: options.installedRelease,
|
|
92
|
-
targetRelease: options.targetRelease,
|
|
93
68
|
mode: options.mode,
|
|
94
|
-
releaseManifests,
|
|
95
|
-
supportPolicy,
|
|
96
69
|
});
|
|
97
70
|
io.stdout(options.json ? `${JSON.stringify(result, null, 2)}\n` : formatResult(result));
|
|
98
71
|
return shouldFailBrandlabConformance(result) ? 1 : 0;
|
|
@@ -102,64 +75,33 @@ export function runBrandlabConformanceCli(argv, io = {
|
|
|
102
75
|
return 2;
|
|
103
76
|
}
|
|
104
77
|
}
|
|
105
|
-
function loadSupportPolicy(path) {
|
|
106
|
-
if (path === null)
|
|
107
|
-
throw new Error("--support-policy is required.");
|
|
108
|
-
try {
|
|
109
|
-
return JSON.parse(readFileSync(path, "utf8"));
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
113
|
-
throw new Error(`Unable to load support policy from ${path}: ${detail}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
function loadReleaseManifest(path) {
|
|
117
|
-
try {
|
|
118
|
-
return JSON.parse(readFileSync(path, "utf8"));
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
122
|
-
throw new Error(`Unable to load release manifest from ${path}: ${detail}`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function resolveSupportPolicyReleaseManifestPaths(supportPolicyPath, supportPolicy) {
|
|
126
|
-
if (supportPolicyPath === null)
|
|
127
|
-
throw new Error("--support-policy is required.");
|
|
128
|
-
const references = Object.values(supportPolicy.releases ?? {}).map((release) => release?.manifest);
|
|
129
|
-
if (references.length === 0 ||
|
|
130
|
-
references.some((reference) => typeof reference !== "string" ||
|
|
131
|
-
reference.length === 0 ||
|
|
132
|
-
isAbsolute(reference) ||
|
|
133
|
-
reference.includes("\\") ||
|
|
134
|
-
reference.split("/").some((segment) => segment === ".."))) {
|
|
135
|
-
throw new Error("Support policy must use safe relative immutable release-manifest paths.");
|
|
136
|
-
}
|
|
137
|
-
let candidateRoot = dirname(supportPolicyPath);
|
|
138
|
-
while (true) {
|
|
139
|
-
const candidates = references.map((reference) => resolve(candidateRoot, reference));
|
|
140
|
-
if (candidates.every((candidate) => existsSync(candidate)))
|
|
141
|
-
return candidates;
|
|
142
|
-
const parent = dirname(candidateRoot);
|
|
143
|
-
if (parent === candidateRoot)
|
|
144
|
-
break;
|
|
145
|
-
candidateRoot = parent;
|
|
146
|
-
}
|
|
147
|
-
throw new Error(`Cannot resolve every support-policy release manifest from ${supportPolicyPath}.`);
|
|
148
|
-
}
|
|
149
78
|
function formatResult(result) {
|
|
79
|
+
const externalChecks = result.verification.checks.filter((check) => check.status === "not_run");
|
|
80
|
+
const staticStatus = result.verification.summary.blockers > 0
|
|
81
|
+
? "blocked"
|
|
82
|
+
: result.verification.summary.warnings > 0
|
|
83
|
+
? "warning"
|
|
84
|
+
: "pass";
|
|
150
85
|
const lines = [
|
|
151
|
-
"Brandlab
|
|
86
|
+
"Brandlab verification",
|
|
152
87
|
`installed: ${result.installedRelease ?? "unadopted"}`,
|
|
153
|
-
`
|
|
154
|
-
`
|
|
155
|
-
`
|
|
156
|
-
|
|
88
|
+
`policy: ${result.verification.policyVersion}`,
|
|
89
|
+
`static checks: ${staticStatus}`,
|
|
90
|
+
`external evidence: ${externalChecks.length > 0
|
|
91
|
+
? `not run (${externalChecks.map((check) => check.title).join(", ")})`
|
|
92
|
+
: "complete"}`,
|
|
93
|
+
`findings: ${formatSummary(result.verification.summary)}`,
|
|
157
94
|
];
|
|
158
|
-
for (const
|
|
95
|
+
for (const family of result.verification.families) {
|
|
96
|
+
if (family.status === "pass")
|
|
97
|
+
continue;
|
|
98
|
+
lines.push(`[${family.status}] ${family.title}: ${family.blockers} blocker(s), ${family.warnings} warning(s)`);
|
|
99
|
+
}
|
|
100
|
+
for (const finding of result.operationalFindings) {
|
|
159
101
|
const location = finding.path
|
|
160
102
|
? ` (${finding.path}${finding.line ? `:${finding.line}` : ""})`
|
|
161
103
|
: "";
|
|
162
|
-
lines.push(`[${finding.
|
|
104
|
+
lines.push(`[${finding.familyId}/${finding.severity}] ${finding.ruleId}${location}: ${finding.actual}`);
|
|
163
105
|
}
|
|
164
106
|
return `${lines.join("\n")}\n`;
|
|
165
107
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current-release.d.ts","sourceRoot":"","sources":["../src/current-release.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,8BAA8B,EAEpC,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,gCAAgC,EAkD7B,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Generated by standards/scripts/generate-conformance-current-release.mjs.
|
|
2
|
+
// Each exact package release verifies its own current runtime contract.
|
|
3
|
+
import { validateBrandlabRuntimeReleaseContract, } from "./release-manifest.js";
|
|
4
|
+
export const BRANDLAB_CURRENT_RUNTIME_RELEASE = Object.freeze({
|
|
5
|
+
"capabilities": [
|
|
6
|
+
"typed-project-business-and-route-data",
|
|
7
|
+
"essential-search-foundations",
|
|
8
|
+
"shared-contact-delivery",
|
|
9
|
+
"privacy-safe-lead-analytics",
|
|
10
|
+
"security-patched-runtime",
|
|
11
|
+
"live-google-review-summary",
|
|
12
|
+
"high-signal-project-verification",
|
|
13
|
+
"packed-positive-and-negative-consumers",
|
|
14
|
+
"changesets-oidc-release"
|
|
15
|
+
],
|
|
16
|
+
"contracts": {
|
|
17
|
+
"analytics": "analytics-v4",
|
|
18
|
+
"architecture": "architecture-v5",
|
|
19
|
+
"configuration": "project-config-v5",
|
|
20
|
+
"contact": "contact-v4",
|
|
21
|
+
"seo": "seo-v4"
|
|
22
|
+
},
|
|
23
|
+
"kind": "brandlab-runtime-release-contract",
|
|
24
|
+
"packages": {
|
|
25
|
+
"@brandlab-digital/conformance": {
|
|
26
|
+
"version": "1.0.0"
|
|
27
|
+
},
|
|
28
|
+
"@brandlab-digital/eslint-plugin": {
|
|
29
|
+
"version": "1.0.0"
|
|
30
|
+
},
|
|
31
|
+
"@brandlab-digital/site-core": {
|
|
32
|
+
"version": "1.0.0"
|
|
33
|
+
},
|
|
34
|
+
"@brandlab-digital/site-next": {
|
|
35
|
+
"version": "1.0.0"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"releaseVersion": "1.0.0",
|
|
39
|
+
"runtime": {
|
|
40
|
+
"bundler": "turbopack",
|
|
41
|
+
"cacheComponents": false,
|
|
42
|
+
"next": "16.2.12",
|
|
43
|
+
"node": "24.x",
|
|
44
|
+
"packageManager": "npm@11.14.1",
|
|
45
|
+
"react": "19.2.8",
|
|
46
|
+
"reactDom": "19.2.8",
|
|
47
|
+
"router": "app",
|
|
48
|
+
"sharp": "0.35.3",
|
|
49
|
+
"typescript": "6.0.3"
|
|
50
|
+
},
|
|
51
|
+
"schemaVersion": "brandlab.runtime-release-contract.v1"
|
|
52
|
+
});
|
|
53
|
+
validateBrandlabRuntimeReleaseContract(BRANDLAB_CURRENT_RUNTIME_RELEASE);
|
|
54
|
+
//# sourceMappingURL=current-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current-release.js","sourceRoot":"","sources":["../src/current-release.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,wEAAwE;AACxE,OAAO,EAEL,sCAAsC,GACvC,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAC7D;IACE,cAAc,EAAE;QACd,uCAAuC;QACvC,8BAA8B;QAC9B,yBAAyB;QACzB,6BAA6B;QAC7B,0BAA0B;QAC1B,4BAA4B;QAC5B,kCAAkC;QAClC,wCAAwC;QACxC,yBAAyB;KAC1B;IACD,WAAW,EAAE;QACX,WAAW,EAAE,cAAc;QAC3B,cAAc,EAAE,iBAAiB;QACjC,eAAe,EAAE,mBAAmB;QACpC,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,QAAQ;KAChB;IACD,MAAM,EAAE,mCAAmC;IAC3C,UAAU,EAAE;QACV,+BAA+B,EAAE;YAC/B,SAAS,EAAE,OAAO;SACnB;QACD,iCAAiC,EAAE;YACjC,SAAS,EAAE,OAAO;SACnB;QACD,6BAA6B,EAAE;YAC7B,SAAS,EAAE,OAAO;SACnB;QACD,6BAA6B,EAAE;YAC7B,SAAS,EAAE,OAAO;SACnB;KACF;IACD,gBAAgB,EAAE,OAAO;IACzB,SAAS,EAAE;QACT,SAAS,EAAE,WAAW;QACtB,iBAAiB,EAAE,KAAK;QACxB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,MAAM;QACd,gBAAgB,EAAE,aAAa;QAC/B,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,QAAQ;QACjB,YAAY,EAAE,OAAO;KACtB;IACD,eAAe,EAAE,sCAAsC;CACxD,CAC6C,CAAC;AAE/C,sCAAsC,CAAC,gCAAgC,CAAC,CAAC"}
|
package/dist/project.d.ts
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
3
|
-
export
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
1
|
+
import { type BrandlabContractVersions, type BrandlabReleaseManifest, type BrandlabRuntimeReleaseContract } from "./release-manifest.js";
|
|
2
|
+
import { type BrandlabOperationalFinding, type BrandlabVerificationEvidence, type BrandlabVerificationResult } from "./verification-policy.js";
|
|
3
|
+
export { BRANDLAB_VERIFICATION_CHECKS, BRANDLAB_VERIFICATION_FAMILIES, BRANDLAB_VERIFICATION_POLICY_VERSION, type BrandlabVerificationCheckId, type BrandlabVerificationCheckResult, type BrandlabVerificationEvidence, type BrandlabVerificationEvidenceKind, type BrandlabVerificationFamilyId, type BrandlabVerificationFamilyResult, type BrandlabVerificationResult, type BrandlabVerificationStatus, } from "./verification-policy.js";
|
|
4
|
+
export declare const BRANDLAB_CONFORMANCE_SCHEMA_VERSION = "brandlab.conformance.v2";
|
|
5
|
+
export declare const BRANDLAB_CONFORMANCE_EVALUATOR_VERSION = "current-only-v2";
|
|
6
6
|
export type BrandlabConformanceMode = "local" | "ci" | "preflight";
|
|
7
|
-
export type BrandlabFindingClassification = "maintenance" | "migration" | "advisory";
|
|
8
7
|
export type BrandlabFindingSeverity = "blocker" | "warning" | "info";
|
|
9
8
|
export interface BrandlabFinding {
|
|
10
9
|
ruleId: string;
|
|
11
10
|
surface: string;
|
|
12
|
-
classification: BrandlabFindingClassification;
|
|
13
11
|
severity: BrandlabFindingSeverity;
|
|
14
12
|
contract: {
|
|
15
13
|
name: string;
|
|
@@ -37,31 +35,28 @@ export interface BrandlabConformanceResult {
|
|
|
37
35
|
implementationFingerprint: string;
|
|
38
36
|
mode: BrandlabConformanceMode;
|
|
39
37
|
installedRelease: string | null;
|
|
40
|
-
targetRelease: string | null;
|
|
41
38
|
findings: BrandlabFinding[];
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
operationalFindings: BrandlabOperationalFinding[];
|
|
40
|
+
verification: BrandlabVerificationResult;
|
|
41
|
+
summary: ConformanceSummary;
|
|
45
42
|
}
|
|
46
43
|
export interface EvaluateBrandlabProjectOptions {
|
|
47
44
|
root: string;
|
|
48
45
|
installedRelease?: string | null;
|
|
49
|
-
targetRelease?: string | null;
|
|
50
46
|
mode?: BrandlabConformanceMode;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
release?: BrandlabRuntimeReleaseContract;
|
|
48
|
+
releaseManifest?: BrandlabReleaseManifest;
|
|
49
|
+
verificationEvidence?: readonly BrandlabVerificationEvidence[];
|
|
50
|
+
}
|
|
51
|
+
interface ProjectPackageJsonLike {
|
|
52
|
+
dependencies?: Record<string, string>;
|
|
53
|
+
devDependencies?: Record<string, string>;
|
|
54
|
+
engines?: Record<string, string>;
|
|
55
|
+
overrides?: Record<string, string>;
|
|
56
|
+
packageManager?: string;
|
|
61
57
|
}
|
|
62
58
|
export declare function evaluateBrandlabProject(options: EvaluateBrandlabProjectOptions): BrandlabConformanceResult;
|
|
63
59
|
export declare function shouldFailBrandlabConformance(result: BrandlabConformanceResult): boolean;
|
|
64
|
-
export declare function detectInstalledBrandlabRelease(packageJson:
|
|
65
|
-
export declare function readBrandlabArchitectureConfig(root: string): BrandlabArchitectureConfigLike | null;
|
|
60
|
+
export declare function detectInstalledBrandlabRelease(packageJson: ProjectPackageJsonLike | null): string | null;
|
|
66
61
|
export type { BrandlabContractVersions };
|
|
67
62
|
//# sourceMappingURL=project.d.ts.map
|
package/dist/project.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EAIpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,oCAAoC,EACpC,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EACjC,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,EACjC,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,GAChC,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,mCAAmC,4BAA4B,CAAC;AAC7E,eAAO,MAAM,sCAAsC,oBAAoB,CAAC;AAWxE,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC;AACnE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,YAAY,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,OAAO,mCAAmC,CAAC;IAC1D,gBAAgB,EAAE,OAAO,sCAAsC,CAAC;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,mBAAmB,EAAE,0BAA0B,EAAE,CAAC;IAClD,YAAY,EAAE,0BAA0B,CAAC;IACzC,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,oBAAoB,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAChE;AAED,UAAU,sBAAsB;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA4GD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,yBAAyB,CA+E3B;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAExF;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,sBAAsB,GAAG,IAAI,GACzC,MAAM,GAAG,IAAI,CAUf;AAqoBD,YAAY,EAAE,wBAAwB,EAAE,CAAC"}
|