@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/release-manifest.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import { assertBrandlabKnownReleaseContractTuple } from "./release-contract-compatibility.js";
|
|
3
2
|
export const BRANDLAB_SHARED_PACKAGE_NAMES = [
|
|
4
3
|
"@brandlab-digital/site-core",
|
|
5
4
|
"@brandlab-digital/site-next",
|
|
@@ -14,155 +13,47 @@ export function isBrandlabSemver(value) {
|
|
|
14
13
|
return typeof value === "string" && SEMVER_PATTERN.test(value);
|
|
15
14
|
}
|
|
16
15
|
export function compareBrandlabSemver(first, second) {
|
|
17
|
-
const
|
|
18
|
-
const
|
|
16
|
+
const left = parseSemver(first);
|
|
17
|
+
const right = parseSemver(second);
|
|
19
18
|
for (const key of ["major", "minor", "patch"]) {
|
|
20
|
-
if (
|
|
21
|
-
return
|
|
22
|
-
}
|
|
19
|
+
if (left[key] !== right[key])
|
|
20
|
+
return left[key] - right[key];
|
|
23
21
|
}
|
|
24
|
-
if (
|
|
22
|
+
if (left.prerelease.length === 0 && right.prerelease.length > 0)
|
|
25
23
|
return 1;
|
|
26
|
-
if (
|
|
24
|
+
if (right.prerelease.length === 0 && left.prerelease.length > 0)
|
|
27
25
|
return -1;
|
|
28
|
-
const length = Math.max(
|
|
26
|
+
const length = Math.max(left.prerelease.length, right.prerelease.length);
|
|
29
27
|
for (let index = 0; index < length; index += 1) {
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
if (
|
|
28
|
+
const a = left.prerelease[index];
|
|
29
|
+
const b = right.prerelease[index];
|
|
30
|
+
if (a === undefined)
|
|
33
31
|
return -1;
|
|
34
|
-
if (
|
|
32
|
+
if (b === undefined)
|
|
35
33
|
return 1;
|
|
36
|
-
if (
|
|
34
|
+
if (a === b)
|
|
37
35
|
continue;
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
if (
|
|
41
|
-
return Number(
|
|
42
|
-
|
|
43
|
-
if (firstNumeric)
|
|
36
|
+
const aNumeric = /^\d+$/.test(a);
|
|
37
|
+
const bNumeric = /^\d+$/.test(b);
|
|
38
|
+
if (aNumeric && bNumeric)
|
|
39
|
+
return Number(a) - Number(b);
|
|
40
|
+
if (aNumeric)
|
|
44
41
|
return -1;
|
|
45
|
-
if (
|
|
42
|
+
if (bNumeric)
|
|
46
43
|
return 1;
|
|
47
|
-
return
|
|
44
|
+
return a.localeCompare(b);
|
|
48
45
|
}
|
|
49
46
|
return 0;
|
|
50
47
|
}
|
|
51
|
-
export function validateBrandlabReleaseManifest(input) {
|
|
52
|
-
const manifest = asObject(input, "release manifest");
|
|
53
|
-
if (manifest.schemaVersion !== 1)
|
|
54
|
-
fail("schemaVersion must be 1");
|
|
55
|
-
if (manifest.kind !== "brandlab-release-manifest") {
|
|
56
|
-
fail("kind must be brandlab-release-manifest");
|
|
57
|
-
}
|
|
58
|
-
if (!isBrandlabSemver(manifest.releaseVersion))
|
|
59
|
-
fail("releaseVersion must be valid semver");
|
|
60
|
-
if (!isDate(manifest.releasedAt))
|
|
61
|
-
fail("releasedAt must be an ISO date");
|
|
62
|
-
if (!includes(["prerelease", "rc", "stable"], manifest.channel)) {
|
|
63
|
-
fail("channel is invalid");
|
|
64
|
-
}
|
|
65
|
-
const packages = asObject(manifest.packages, "packages");
|
|
66
|
-
const actualPackageNames = Object.keys(packages).sort();
|
|
67
|
-
const expectedPackageNames = [...BRANDLAB_SHARED_PACKAGE_NAMES].sort();
|
|
68
|
-
if (JSON.stringify(actualPackageNames) !== JSON.stringify(expectedPackageNames)) {
|
|
69
|
-
fail("packages must contain the four Brandlab packages exactly once");
|
|
70
|
-
}
|
|
71
|
-
for (const packageName of BRANDLAB_SHARED_PACKAGE_NAMES) {
|
|
72
|
-
const packageEntry = asObject(packages[packageName], `packages.${packageName}`);
|
|
73
|
-
if (packageEntry.version !== manifest.releaseVersion) {
|
|
74
|
-
fail(`${packageName} must use the lockstep releaseVersion`);
|
|
75
|
-
}
|
|
76
|
-
const registry = asObject(packageEntry.registry, `${packageName}.registry`);
|
|
77
|
-
if (!includes(["verified", "published-unverified", "not-published"], registry.state)) {
|
|
78
|
-
fail(`${packageName} registry state is invalid`);
|
|
79
|
-
}
|
|
80
|
-
validateOptionalDigest(registry.shasum, SHA1_PATTERN, `${packageName} registry shasum`);
|
|
81
|
-
validateOptionalIntegrity(registry.integrity, `${packageName} registry integrity`);
|
|
82
|
-
if (registry.state === "verified" && registry.shasum === null && registry.integrity === null) {
|
|
83
|
-
fail(`${packageName} verified registry evidence needs a shasum or integrity`);
|
|
84
|
-
}
|
|
85
|
-
if (registry.state === "not-published" && (registry.shasum !== null || registry.integrity !== null)) {
|
|
86
|
-
fail(`${packageName} cannot have registry digests while not published`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const runtime = asObject(manifest.runtime, "runtime");
|
|
90
|
-
for (const field of ["next", "react", "reactDom", "node", "typescript", "packageManager"]) {
|
|
91
|
-
if (!nonEmptyString(runtime[field]))
|
|
92
|
-
fail(`runtime.${field} must be a non-empty string`);
|
|
93
|
-
}
|
|
94
|
-
if (runtime.router !== "app" || runtime.bundler !== "turbopack") {
|
|
95
|
-
fail("runtime must use App Router and Turbopack");
|
|
96
|
-
}
|
|
97
|
-
if (typeof runtime.cacheComponents !== "boolean") {
|
|
98
|
-
fail("runtime.cacheComponents must be boolean");
|
|
99
|
-
}
|
|
100
|
-
for (const field of ["next", "react", "reactDom", "typescript"]) {
|
|
101
|
-
if (!isBrandlabSemver(runtime[field])) {
|
|
102
|
-
fail(`runtime.${field} must be an exact semantic version`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (!/^\d+\.x$/.test(String(runtime.node))) {
|
|
106
|
-
fail("runtime.node must be an exact supported major line such as 24.x");
|
|
107
|
-
}
|
|
108
|
-
if (!/^npm@\d+\.\d+\.\d+$/.test(String(runtime.packageManager))) {
|
|
109
|
-
fail("runtime.packageManager must be an exact npm version");
|
|
110
|
-
}
|
|
111
|
-
const contracts = asObject(manifest.contracts, "contracts");
|
|
112
|
-
for (const field of ["architecture", "configuration", "contact", "seo", "analytics"]) {
|
|
113
|
-
if (!nonEmptyString(contracts[field]))
|
|
114
|
-
fail(`contracts.${field} must be a non-empty string`);
|
|
115
|
-
}
|
|
116
|
-
validateKnownReleaseContractTuple(String(manifest.releaseVersion), contracts, "release manifest");
|
|
117
|
-
validateStringArray(manifest.capabilities, "capabilities", true);
|
|
118
|
-
const evidence = asObject(manifest.evidence, "evidence");
|
|
119
|
-
if (!includes(["verified", "reconstructed", "planned"], evidence.recordState)) {
|
|
120
|
-
fail("evidence.recordState is invalid");
|
|
121
|
-
}
|
|
122
|
-
if (evidence.sourceCommit !== null && !SHA1_PATTERN.test(String(evidence.sourceCommit))) {
|
|
123
|
-
fail("evidence.sourceCommit must be a full Git commit");
|
|
124
|
-
}
|
|
125
|
-
if (!nonEmptyString(evidence.releaseNotes))
|
|
126
|
-
fail("evidence.releaseNotes is required");
|
|
127
|
-
if (evidence.releaseEvidence !== null && !nonEmptyString(evidence.releaseEvidence)) {
|
|
128
|
-
fail("evidence.releaseEvidence must be null or a non-empty path");
|
|
129
|
-
}
|
|
130
|
-
if (evidence.testCount !== null && (!Number.isInteger(evidence.testCount) || Number(evidence.testCount) < 0)) {
|
|
131
|
-
fail("evidence.testCount must be null or a non-negative integer");
|
|
132
|
-
}
|
|
133
|
-
validateStringArray(evidence.verificationCommands, "evidence.verificationCommands", false);
|
|
134
|
-
if (evidence.recordState === "verified" &&
|
|
135
|
-
(evidence.sourceCommit === null || evidence.releaseEvidence === null)) {
|
|
136
|
-
fail("verified release evidence needs a source commit and release evidence path");
|
|
137
|
-
}
|
|
138
|
-
if (evidence.recordState === "verified") {
|
|
139
|
-
for (const packageName of BRANDLAB_SHARED_PACKAGE_NAMES) {
|
|
140
|
-
const packageEntry = asObject(packages[packageName], `packages.${packageName}`);
|
|
141
|
-
const registry = asObject(packageEntry.registry, `${packageName}.registry`);
|
|
142
|
-
if (registry.state !== "verified") {
|
|
143
|
-
fail("verified release evidence requires verified registry evidence for every package");
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
const fingerprints = asObject(manifest.fingerprints, "fingerprints");
|
|
148
|
-
validateOptionalDigest(fingerprints.publicApi, SHA256_PATTERN, "fingerprints.publicApi");
|
|
149
|
-
validateOptionalDigest(fingerprints.fixtures, SHA256_PATTERN, "fingerprints.fixtures");
|
|
150
|
-
const rollback = asObject(manifest.rollback, "rollback");
|
|
151
|
-
if (rollback.targetRelease !== null && !isBrandlabSemver(rollback.targetRelease)) {
|
|
152
|
-
fail("rollback.targetRelease must be null or valid semver");
|
|
153
|
-
}
|
|
154
|
-
if (!nonEmptyString(rollback.strategy))
|
|
155
|
-
fail("rollback.strategy is required");
|
|
156
|
-
}
|
|
157
48
|
export function projectBrandlabRuntimeReleaseContract(input) {
|
|
158
49
|
validateBrandlabReleaseManifest(input);
|
|
159
50
|
return {
|
|
160
51
|
schemaVersion: "brandlab.runtime-release-contract.v1",
|
|
161
52
|
kind: "brandlab-runtime-release-contract",
|
|
162
53
|
releaseVersion: input.releaseVersion,
|
|
163
|
-
packages: Object.fromEntries(BRANDLAB_SHARED_PACKAGE_NAMES.map((
|
|
164
|
-
|
|
165
|
-
{ version: input.packages[
|
|
54
|
+
packages: Object.fromEntries(BRANDLAB_SHARED_PACKAGE_NAMES.map((name) => [
|
|
55
|
+
name,
|
|
56
|
+
{ version: input.packages[name].version },
|
|
166
57
|
])),
|
|
167
58
|
runtime: { ...input.runtime },
|
|
168
59
|
contracts: { ...input.contracts },
|
|
@@ -171,7 +62,7 @@ export function projectBrandlabRuntimeReleaseContract(input) {
|
|
|
171
62
|
}
|
|
172
63
|
export function validateBrandlabRuntimeReleaseContract(input) {
|
|
173
64
|
const contract = asObject(input, "runtime release contract");
|
|
174
|
-
|
|
65
|
+
exactKeys(contract, [
|
|
175
66
|
"schemaVersion",
|
|
176
67
|
"kind",
|
|
177
68
|
"releaseVersion",
|
|
@@ -186,214 +77,133 @@ export function validateBrandlabRuntimeReleaseContract(input) {
|
|
|
186
77
|
if (contract.kind !== "brandlab-runtime-release-contract") {
|
|
187
78
|
fail("runtime release contract kind is invalid");
|
|
188
79
|
}
|
|
189
|
-
|
|
190
|
-
|
|
80
|
+
validateReleaseVersionAndPackages(contract);
|
|
81
|
+
validateRuntime(contract.runtime);
|
|
82
|
+
validateContracts(contract.contracts);
|
|
83
|
+
stringArray(contract.capabilities, "capabilities", true);
|
|
84
|
+
}
|
|
85
|
+
export function validateBrandlabReleaseManifest(input) {
|
|
86
|
+
const manifest = asObject(input, "release manifest");
|
|
87
|
+
if (manifest.schemaVersion !== 1 || manifest.kind !== "brandlab-release-manifest") {
|
|
88
|
+
fail("release manifest schema is invalid");
|
|
89
|
+
}
|
|
90
|
+
if (!isDate(manifest.releasedAt))
|
|
91
|
+
fail("releasedAt must be an ISO date");
|
|
92
|
+
if (!includes(["prerelease", "rc", "stable"], manifest.channel)) {
|
|
93
|
+
fail("channel is invalid");
|
|
94
|
+
}
|
|
95
|
+
validateReleaseVersionAndPackages(manifest, true);
|
|
96
|
+
validateRuntime(manifest.runtime);
|
|
97
|
+
validateContracts(manifest.contracts);
|
|
98
|
+
stringArray(manifest.capabilities, "capabilities", true);
|
|
99
|
+
const evidence = asObject(manifest.evidence, "evidence");
|
|
100
|
+
if (!includes(["verified", "reconstructed", "planned"], evidence.recordState)) {
|
|
101
|
+
fail("evidence.recordState is invalid");
|
|
191
102
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const expectedPackageNames = [...BRANDLAB_SHARED_PACKAGE_NAMES].sort();
|
|
195
|
-
if (JSON.stringify(actualPackageNames) !== JSON.stringify(expectedPackageNames)) {
|
|
196
|
-
fail("runtime release contract packages must contain the four Brandlab packages exactly once");
|
|
103
|
+
if (evidence.sourceCommit !== null && !SHA1_PATTERN.test(String(evidence.sourceCommit))) {
|
|
104
|
+
fail("evidence.sourceCommit must be a full Git commit");
|
|
197
105
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
106
|
+
if (!nonEmptyString(evidence.releaseNotes))
|
|
107
|
+
fail("evidence.releaseNotes is required");
|
|
108
|
+
if (evidence.releaseEvidence !== null && !nonEmptyString(evidence.releaseEvidence)) {
|
|
109
|
+
fail("evidence.releaseEvidence is invalid");
|
|
110
|
+
}
|
|
111
|
+
if (evidence.testCount !== null &&
|
|
112
|
+
(!Number.isInteger(evidence.testCount) || Number(evidence.testCount) < 0)) {
|
|
113
|
+
fail("evidence.testCount is invalid");
|
|
114
|
+
}
|
|
115
|
+
stringArray(evidence.verificationCommands, "verificationCommands", false);
|
|
116
|
+
const fingerprints = asObject(manifest.fingerprints, "fingerprints");
|
|
117
|
+
optionalDigest(fingerprints.publicApi, SHA256_PATTERN, "public API fingerprint");
|
|
118
|
+
optionalDigest(fingerprints.fixtures, SHA256_PATTERN, "fixture fingerprint");
|
|
119
|
+
const rollback = asObject(manifest.rollback, "rollback");
|
|
120
|
+
if (rollback.targetRelease !== null && !isBrandlabSemver(rollback.targetRelease)) {
|
|
121
|
+
fail("rollback.targetRelease is invalid");
|
|
122
|
+
}
|
|
123
|
+
if (!nonEmptyString(rollback.strategy))
|
|
124
|
+
fail("rollback.strategy is required");
|
|
125
|
+
}
|
|
126
|
+
export function digestBrandlabAuthority(value) {
|
|
127
|
+
return createHash("sha256").update(stableStringify(value)).digest("hex");
|
|
128
|
+
}
|
|
129
|
+
function validateReleaseVersionAndPackages(record, withRegistry = false) {
|
|
130
|
+
if (!isBrandlabSemver(record.releaseVersion))
|
|
131
|
+
fail("releaseVersion is invalid");
|
|
132
|
+
const packages = asObject(record.packages, "packages");
|
|
133
|
+
if (JSON.stringify(Object.keys(packages).sort()) !==
|
|
134
|
+
JSON.stringify([...BRANDLAB_SHARED_PACKAGE_NAMES].sort())) {
|
|
135
|
+
fail("packages must contain the four Brandlab packages");
|
|
136
|
+
}
|
|
137
|
+
for (const name of BRANDLAB_SHARED_PACKAGE_NAMES) {
|
|
138
|
+
const entry = asObject(packages[name], `packages.${name}`);
|
|
139
|
+
if (entry.version !== record.releaseVersion) {
|
|
140
|
+
fail(`${name} must use the lockstep releaseVersion`);
|
|
141
|
+
}
|
|
142
|
+
if (!withRegistry) {
|
|
143
|
+
exactKeys(entry, ["version"], `packages.${name}`);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const registry = asObject(entry.registry, `${name}.registry`);
|
|
147
|
+
if (!includes(["verified", "published-unverified", "not-published"], registry.state)) {
|
|
148
|
+
fail(`${name} registry state is invalid`);
|
|
149
|
+
}
|
|
150
|
+
optionalDigest(registry.shasum, SHA1_PATTERN, `${name} shasum`);
|
|
151
|
+
if (registry.integrity !== null &&
|
|
152
|
+
(typeof registry.integrity !== "string" ||
|
|
153
|
+
!/^sha512-[A-Za-z0-9+/=]+$/.test(registry.integrity))) {
|
|
154
|
+
fail(`${name} integrity is invalid`);
|
|
155
|
+
}
|
|
156
|
+
if (registry.state === "verified" &&
|
|
157
|
+
registry.shasum === null &&
|
|
158
|
+
registry.integrity === null) {
|
|
159
|
+
fail(`${name} verified registry evidence is empty`);
|
|
203
160
|
}
|
|
204
161
|
}
|
|
205
|
-
|
|
206
|
-
|
|
162
|
+
}
|
|
163
|
+
function validateRuntime(value) {
|
|
164
|
+
const runtime = asObject(value, "runtime");
|
|
165
|
+
for (const field of [
|
|
207
166
|
"next",
|
|
208
167
|
"react",
|
|
209
168
|
"reactDom",
|
|
210
169
|
"node",
|
|
211
170
|
"typescript",
|
|
212
171
|
"packageManager",
|
|
213
|
-
|
|
214
|
-
"bundler",
|
|
215
|
-
"cacheComponents",
|
|
216
|
-
], "runtime release contract runtime");
|
|
217
|
-
for (const field of ["next", "react", "reactDom", "node", "typescript", "packageManager"]) {
|
|
172
|
+
]) {
|
|
218
173
|
if (!nonEmptyString(runtime[field]))
|
|
219
|
-
fail(`runtime
|
|
220
|
-
}
|
|
221
|
-
if (runtime.router !== "app" || runtime.bundler !== "turbopack") {
|
|
222
|
-
fail("runtime release contract must use App Router and Turbopack");
|
|
223
|
-
}
|
|
224
|
-
if (typeof runtime.cacheComponents !== "boolean") {
|
|
225
|
-
fail("runtime release contract cacheComponents must be boolean");
|
|
174
|
+
fail(`runtime.${field} is required`);
|
|
226
175
|
}
|
|
227
176
|
for (const field of ["next", "react", "reactDom", "typescript"]) {
|
|
228
|
-
if (!isBrandlabSemver(runtime[field]))
|
|
229
|
-
fail(`runtime
|
|
230
|
-
}
|
|
177
|
+
if (!isBrandlabSemver(runtime[field]))
|
|
178
|
+
fail(`runtime.${field} must be exact semver`);
|
|
231
179
|
}
|
|
232
|
-
if (
|
|
233
|
-
fail("runtime
|
|
180
|
+
if (runtime.sharp !== undefined && !isBrandlabSemver(runtime.sharp)) {
|
|
181
|
+
fail("runtime.sharp must be exact semver");
|
|
234
182
|
}
|
|
183
|
+
if (!/^\d+\.x$/.test(String(runtime.node)))
|
|
184
|
+
fail("runtime.node is invalid");
|
|
235
185
|
if (!/^npm@\d+\.\d+\.\d+$/.test(String(runtime.packageManager))) {
|
|
236
|
-
fail("runtime
|
|
186
|
+
fail("runtime.packageManager is invalid");
|
|
187
|
+
}
|
|
188
|
+
if (runtime.router !== "app" ||
|
|
189
|
+
runtime.bundler !== "turbopack" ||
|
|
190
|
+
typeof runtime.cacheComponents !== "boolean") {
|
|
191
|
+
fail("runtime architecture is invalid");
|
|
237
192
|
}
|
|
238
|
-
|
|
239
|
-
|
|
193
|
+
}
|
|
194
|
+
function validateContracts(value) {
|
|
195
|
+
const contracts = asObject(value, "contracts");
|
|
196
|
+
for (const field of [
|
|
240
197
|
"architecture",
|
|
241
198
|
"configuration",
|
|
242
199
|
"contact",
|
|
243
200
|
"seo",
|
|
244
201
|
"analytics",
|
|
245
|
-
], "runtime release contract contracts");
|
|
246
|
-
for (const field of ["architecture", "configuration", "contact", "seo", "analytics"]) {
|
|
247
|
-
if (!nonEmptyString(contracts[field]))
|
|
248
|
-
fail(`runtime contract ${field} must be a non-empty string`);
|
|
249
|
-
}
|
|
250
|
-
validateKnownReleaseContractTuple(String(contract.releaseVersion), contracts, "runtime release contract");
|
|
251
|
-
validateStringArray(contract.capabilities, "runtime release contract capabilities", true);
|
|
252
|
-
}
|
|
253
|
-
export function validateBrandlabReleaseCatalog(manifests) {
|
|
254
|
-
const versions = new Set();
|
|
255
|
-
let previousVersion = null;
|
|
256
|
-
for (const manifest of manifests) {
|
|
257
|
-
validateBrandlabReleaseManifest(manifest);
|
|
258
|
-
if (versions.has(manifest.releaseVersion)) {
|
|
259
|
-
fail(`duplicate release manifest ${manifest.releaseVersion}`);
|
|
260
|
-
}
|
|
261
|
-
if (previousVersion !== null &&
|
|
262
|
-
compareBrandlabSemver(previousVersion, manifest.releaseVersion) >= 0) {
|
|
263
|
-
fail("release catalog must be in ascending semver order");
|
|
264
|
-
}
|
|
265
|
-
versions.add(manifest.releaseVersion);
|
|
266
|
-
previousVersion = manifest.releaseVersion;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
export function validateBrandlabRuntimeReleaseCatalog(contracts) {
|
|
270
|
-
const versions = new Set();
|
|
271
|
-
let previousVersion = null;
|
|
272
|
-
for (const contract of contracts) {
|
|
273
|
-
validateBrandlabRuntimeReleaseContract(contract);
|
|
274
|
-
if (versions.has(contract.releaseVersion)) {
|
|
275
|
-
fail(`duplicate runtime release contract ${contract.releaseVersion}`);
|
|
276
|
-
}
|
|
277
|
-
if (previousVersion !== null &&
|
|
278
|
-
compareBrandlabSemver(previousVersion, contract.releaseVersion) >= 0) {
|
|
279
|
-
fail("runtime release catalog must be in ascending semver order");
|
|
280
|
-
}
|
|
281
|
-
versions.add(contract.releaseVersion);
|
|
282
|
-
previousVersion = contract.releaseVersion;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
export function validateBrandlabRuntimeReleaseCatalogAgainstManifests(contracts, manifests) {
|
|
286
|
-
validateBrandlabRuntimeReleaseCatalog(contracts);
|
|
287
|
-
validateBrandlabReleaseCatalog(manifests);
|
|
288
|
-
const projected = manifests.map(projectBrandlabRuntimeReleaseContract);
|
|
289
|
-
if (stableStringify(contracts) !== stableStringify(projected)) {
|
|
290
|
-
fail("runtime release catalog differs from the external full release manifests");
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Validate a control-plane attestation subset against the package-embedded
|
|
295
|
-
* runtime catalog. Operational callers need only load the immutable manifests
|
|
296
|
-
* referenced by current support policy; planned and unsupported releases stay
|
|
297
|
-
* outside that trust decision.
|
|
298
|
-
*/
|
|
299
|
-
export function validateBrandlabRuntimeReleaseManifestSubsetAgainstCatalog(contracts, manifests) {
|
|
300
|
-
validateBrandlabRuntimeReleaseCatalog(contracts);
|
|
301
|
-
validateBrandlabReleaseCatalog(manifests);
|
|
302
|
-
const contractByVersion = new Map(contracts.map((contract) => [
|
|
303
|
-
contract.releaseVersion,
|
|
304
|
-
contract,
|
|
305
|
-
]));
|
|
306
|
-
for (const manifest of manifests) {
|
|
307
|
-
const contract = contractByVersion.get(manifest.releaseVersion);
|
|
308
|
-
if (!contract) {
|
|
309
|
-
fail(`external release manifest ${manifest.releaseVersion} has no embedded runtime contract`);
|
|
310
|
-
}
|
|
311
|
-
const projected = projectBrandlabRuntimeReleaseContract(manifest);
|
|
312
|
-
if (stableStringify(contract) !== stableStringify(projected)) {
|
|
313
|
-
fail(`runtime release contract ${manifest.releaseVersion} differs from its external full release manifest`);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
export function validateBrandlabSupportPolicy(input, releasesWithContracts) {
|
|
318
|
-
const policy = asObject(input, "support policy");
|
|
319
|
-
if (policy.schemaVersion !== 3)
|
|
320
|
-
fail("support policy schemaVersion must be 3");
|
|
321
|
-
if (policy.authorityId !== "brandlab-shared-package") {
|
|
322
|
-
fail("support policy authorityId is invalid");
|
|
323
|
-
}
|
|
324
|
-
if (!isDate(policy.updatedAt))
|
|
325
|
-
fail("support policy updatedAt must be an ISO date");
|
|
326
|
-
const releaseByVersion = new Map(releasesWithContracts.map((release) => [release.releaseVersion, release]));
|
|
327
|
-
const releases = asObject(policy.releases, "support policy releases");
|
|
328
|
-
if (Object.keys(releases).length === 0)
|
|
329
|
-
fail("support policy releases must not be empty");
|
|
330
|
-
let currentCount = 0;
|
|
331
|
-
for (const [version, rawRelease] of Object.entries(releases)) {
|
|
332
|
-
if (!releaseByVersion.has(version))
|
|
333
|
-
fail(`support policy references missing manifest ${version}`);
|
|
334
|
-
const release = asObject(rawRelease, `support policy release ${version}`);
|
|
335
|
-
if (!includes(["current", "tolerated", "security-blocked", "retired"], release.lifecycle)) {
|
|
336
|
-
fail(`${version} lifecycle is invalid`);
|
|
337
|
-
}
|
|
338
|
-
if (release.lifecycle === "current")
|
|
339
|
-
currentCount += 1;
|
|
340
|
-
if (!nonEmptyString(release.manifest))
|
|
341
|
-
fail(`${version} manifest path is required`);
|
|
342
|
-
}
|
|
343
|
-
if (currentCount !== 1)
|
|
344
|
-
fail("support policy must have exactly one current release");
|
|
345
|
-
for (const field of [
|
|
346
|
-
"currentReleaseVersion",
|
|
347
|
-
"defaultNewProjectVersion",
|
|
348
|
-
"minimumSupportedVersion",
|
|
349
202
|
]) {
|
|
350
|
-
if (!
|
|
351
|
-
fail(
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
const current = asObject(releases[String(policy.currentReleaseVersion)], "current release");
|
|
355
|
-
if (current.lifecycle !== "current")
|
|
356
|
-
fail("currentReleaseVersion must have current lifecycle");
|
|
357
|
-
for (const field of ["defaultNewProjectVersion", "minimumSupportedVersion"]) {
|
|
358
|
-
const release = asObject(releases[String(policy[field])], field);
|
|
359
|
-
if (release.lifecycle !== "current" && release.lifecycle !== "tolerated") {
|
|
360
|
-
fail(`${field} must reference a current or tolerated release`);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
const channels = asObject(policy.channels, "channels");
|
|
364
|
-
for (const [channel, version] of Object.entries(channels)) {
|
|
365
|
-
if (!nonEmptyString(channel) || typeof version !== "string" || !releases[version]) {
|
|
366
|
-
fail(`channel ${channel} must reference a known release`);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
const projectPolicies = asObject(policy.projectPolicies, "projectPolicies");
|
|
370
|
-
for (const [projectId, rawProjectPolicy] of Object.entries(projectPolicies)) {
|
|
371
|
-
const projectPolicy = asObject(rawProjectPolicy, `project policy ${projectId}`);
|
|
372
|
-
if (!releases[String(projectPolicy.maximumVersion)]) {
|
|
373
|
-
fail(`${projectId} maximumVersion must reference a release`);
|
|
374
|
-
}
|
|
375
|
-
if (projectPolicy.approvedBy !== "owner")
|
|
376
|
-
fail(`${projectId} must be owner-approved`);
|
|
377
|
-
for (const field of ["effectiveAt", "nextReviewAt"]) {
|
|
378
|
-
if (!isDate(projectPolicy[field]))
|
|
379
|
-
fail(`${projectId} ${field} must be an ISO date`);
|
|
380
|
-
}
|
|
381
|
-
for (const field of [
|
|
382
|
-
"decision",
|
|
383
|
-
"sourceReference",
|
|
384
|
-
"rationale",
|
|
385
|
-
"riskAcceptance",
|
|
386
|
-
"securityOverride",
|
|
387
|
-
"reviewTrigger",
|
|
388
|
-
]) {
|
|
389
|
-
if (!nonEmptyString(projectPolicy[field]))
|
|
390
|
-
fail(`${projectId} ${field} is required`);
|
|
391
|
-
}
|
|
203
|
+
if (!nonEmptyString(contracts[field]))
|
|
204
|
+
fail(`contracts.${field} is required`);
|
|
392
205
|
}
|
|
393
206
|
}
|
|
394
|
-
export function digestBrandlabAuthority(value) {
|
|
395
|
-
return createHash("sha256").update(stableStringify(value)).digest("hex");
|
|
396
|
-
}
|
|
397
207
|
function parseSemver(value) {
|
|
398
208
|
const match = value.match(SEMVER_PATTERN);
|
|
399
209
|
if (!match)
|
|
@@ -410,7 +220,7 @@ function stableStringify(value) {
|
|
|
410
220
|
return `[${value.map(stableStringify).join(",")}]`;
|
|
411
221
|
if (value && typeof value === "object") {
|
|
412
222
|
return `{${Object.entries(value)
|
|
413
|
-
.sort(([
|
|
223
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
414
224
|
.map(([key, child]) => `${JSON.stringify(key)}:${stableStringify(child)}`)
|
|
415
225
|
.join(",")}}`;
|
|
416
226
|
}
|
|
@@ -422,52 +232,35 @@ function asObject(value, label) {
|
|
|
422
232
|
}
|
|
423
233
|
return value;
|
|
424
234
|
}
|
|
425
|
-
function
|
|
426
|
-
|
|
427
|
-
const sortedExpected = [...expected].sort();
|
|
428
|
-
if (JSON.stringify(actual) !== JSON.stringify(sortedExpected)) {
|
|
235
|
+
function exactKeys(value, keys, label) {
|
|
236
|
+
if (JSON.stringify(Object.keys(value).sort()) !== JSON.stringify([...keys].sort())) {
|
|
429
237
|
fail(`${label} contains unsupported fields`);
|
|
430
238
|
}
|
|
431
239
|
}
|
|
432
|
-
function
|
|
433
|
-
if (typeof value !== "string" || !DATE_PATTERN.test(value))
|
|
434
|
-
return false;
|
|
435
|
-
const parsed = new Date(`${value}T00:00:00.000Z`);
|
|
436
|
-
return Number.isFinite(parsed.valueOf()) && parsed.toISOString().startsWith(value);
|
|
437
|
-
}
|
|
438
|
-
function nonEmptyString(value) {
|
|
439
|
-
return typeof value === "string" && value.trim().length > 0;
|
|
440
|
-
}
|
|
441
|
-
function includes(values, value) {
|
|
442
|
-
return typeof value === "string" && values.includes(value);
|
|
443
|
-
}
|
|
444
|
-
function validateStringArray(value, label, unique) {
|
|
240
|
+
function stringArray(value, label, unique) {
|
|
445
241
|
if (!Array.isArray(value) || value.some((entry) => !nonEmptyString(entry))) {
|
|
446
|
-
fail(`${label} must be an array of
|
|
242
|
+
fail(`${label} must be an array of strings`);
|
|
447
243
|
}
|
|
448
244
|
if (unique && new Set(value).size !== value.length)
|
|
449
245
|
fail(`${label} must be unique`);
|
|
450
246
|
}
|
|
451
|
-
function
|
|
247
|
+
function optionalDigest(value, pattern, label) {
|
|
452
248
|
if (value !== null && (typeof value !== "string" || !pattern.test(value))) {
|
|
453
249
|
fail(`${label} is invalid`);
|
|
454
250
|
}
|
|
455
251
|
}
|
|
456
|
-
function
|
|
457
|
-
if (
|
|
458
|
-
|
|
459
|
-
}
|
|
252
|
+
function isDate(value) {
|
|
253
|
+
if (typeof value !== "string" || !DATE_PATTERN.test(value))
|
|
254
|
+
return false;
|
|
255
|
+
return new Date(`${value}T00:00:00.000Z`).toISOString().startsWith(value);
|
|
460
256
|
}
|
|
461
|
-
function
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
467
|
-
fail(detail);
|
|
468
|
-
}
|
|
257
|
+
function nonEmptyString(value) {
|
|
258
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
259
|
+
}
|
|
260
|
+
function includes(values, value) {
|
|
261
|
+
return typeof value === "string" && values.includes(value);
|
|
469
262
|
}
|
|
470
263
|
function fail(message) {
|
|
471
|
-
throw new Error(`Invalid Brandlab release
|
|
264
|
+
throw new Error(`Invalid Brandlab release: ${message}.`);
|
|
472
265
|
}
|
|
473
266
|
//# sourceMappingURL=release-manifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-manifest.js","sourceRoot":"","sources":["../src/release-manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"release-manifest.js","sourceRoot":"","sources":["../src/release-manifest.ts"],"names":[],"mappings":"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"}
|