@brandlab-digital/conformance 1.0.0-rc.3 → 1.0.0-rc.30

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.
Files changed (47) hide show
  1. package/dist/analytics-contract.d.ts +20 -0
  2. package/dist/analytics-contract.d.ts.map +1 -0
  3. package/dist/analytics-contract.js +252 -0
  4. package/dist/analytics-contract.js.map +1 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +91 -20
  8. package/dist/cli.js.map +1 -1
  9. package/dist/project-config-v3.d.ts +8 -1
  10. package/dist/project-config-v3.d.ts.map +1 -1
  11. package/dist/project-config-v3.js +193 -31
  12. package/dist/project-config-v3.js.map +1 -1
  13. package/dist/project-config.d.ts +1 -1
  14. package/dist/project-config.d.ts.map +1 -1
  15. package/dist/project-config.js +1 -1
  16. package/dist/project-config.js.map +1 -1
  17. package/dist/project-documentation.d.ts +28 -0
  18. package/dist/project-documentation.d.ts.map +1 -0
  19. package/dist/project-documentation.js +234 -0
  20. package/dist/project-documentation.js.map +1 -0
  21. package/dist/project.d.ts +9 -2
  22. package/dist/project.d.ts.map +1 -1
  23. package/dist/project.js +327 -53
  24. package/dist/project.js.map +1 -1
  25. package/dist/release-catalog.d.ts.map +1 -1
  26. package/dist/release-catalog.js +1785 -0
  27. package/dist/release-catalog.js.map +1 -1
  28. package/dist/release-contract-compatibility.d.ts +10 -57
  29. package/dist/release-contract-compatibility.d.ts.map +1 -1
  30. package/dist/release-contract-compatibility.js +115 -61
  31. package/dist/release-contract-compatibility.js.map +1 -1
  32. package/dist/release-manifest.d.ts +1 -0
  33. package/dist/release-manifest.d.ts.map +1 -1
  34. package/dist/release-manifest.js +7 -0
  35. package/dist/release-manifest.js.map +1 -1
  36. package/dist/rendered-content.d.ts +38 -0
  37. package/dist/rendered-content.d.ts.map +1 -0
  38. package/dist/rendered-content.js +149 -0
  39. package/dist/rendered-content.js.map +1 -0
  40. package/dist/source-safety-contracts.d.ts.map +1 -1
  41. package/dist/source-safety-contracts.js +4 -0
  42. package/dist/source-safety-contracts.js.map +1 -1
  43. package/dist/verification-policy.d.ts +99 -0
  44. package/dist/verification-policy.d.ts.map +1 -0
  45. package/dist/verification-policy.js +219 -0
  46. package/dist/verification-policy.js.map +1 -0
  47. package/package.json +20 -2
@@ -0,0 +1,20 @@
1
+ export declare const BRANDLAB_ANALYTICS_V3_RULESET_ID = "analytics-v3@1.0.0-rc.17";
2
+ export interface BrandlabAnalyticsV3Issue {
3
+ ruleId: string;
4
+ surface: "analytics";
5
+ severity: "blocker" | "warning" | "info";
6
+ evidenceKind: "static";
7
+ path?: string;
8
+ line?: number;
9
+ expected: string;
10
+ actual: string;
11
+ remediation: string;
12
+ }
13
+ export interface BrandlabAnalyticsV3Inspection {
14
+ rulesetId: typeof BRANDLAB_ANALYTICS_V3_RULESET_ID;
15
+ websiteCallsDeclared: boolean;
16
+ leadDiagnosticsDeclared: boolean;
17
+ issues: BrandlabAnalyticsV3Issue[];
18
+ }
19
+ export declare function inspectBrandlabAnalyticsV3(root: string): BrandlabAnalyticsV3Inspection;
20
+ //# sourceMappingURL=analytics-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-contract.d.ts","sourceRoot":"","sources":["../src/analytics-contract.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gCAAgC,6BACjB,CAAC;AAE7B,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,YAAY,EAAE,QAAQ,CAAC;IACvB,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,6BAA6B;IAC5C,SAAS,EAAE,OAAO,gCAAgC,CAAC;IACnD,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,MAAM,EAAE,wBAAwB,EAAE,CAAC;CACpC;AAaD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,6BAA6B,CAkDtF"}
@@ -0,0 +1,252 @@
1
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
2
+ import { extname, join, relative } from "node:path";
3
+ import * as ts from "typescript";
4
+ export const BRANDLAB_ANALYTICS_V3_RULESET_ID = "analytics-v3@1.0.0-rc.17";
5
+ const SOURCE_EXTENSIONS = new Set([".js", ".jsx", ".mjs", ".ts", ".tsx"]);
6
+ const SKIPPED_DIRECTORIES = new Set([
7
+ ".git",
8
+ ".next",
9
+ ".turbo",
10
+ "coverage",
11
+ "dist",
12
+ "generated",
13
+ "node_modules",
14
+ ]);
15
+ export function inspectBrandlabAnalyticsV3(root) {
16
+ const sourceRoot = join(root, "src");
17
+ const files = existsSync(sourceRoot) ? walkSourceFiles(sourceRoot) : [];
18
+ const sources = files.map((path) => ({
19
+ path,
20
+ relativePath: relative(root, path).split(/[/\\]/).join("/"),
21
+ source: readFileSync(path, "utf8"),
22
+ }));
23
+ const issues = [];
24
+ const inspections = sources.map((entry) => inspectAnalyticsSource(entry, issues));
25
+ const websiteCallsDeclared = inspections.some((inspection) => inspection.websiteCallsDeclared);
26
+ const leadDiagnosticsDeclared = inspections.some((inspection) => inspection.leadDiagnosticsDeclared);
27
+ if (websiteCallsDeclared) {
28
+ const sharedGoogleTagRendered = inspections.some((inspection) => inspection.sharedGoogleTagRendered);
29
+ if (!sharedGoogleTagRendered) {
30
+ issues.push(analyticsIssue({
31
+ ruleId: "brandlab-analytics-website-call-renderer",
32
+ expected: "Projects declaring websiteCalls render BrandlabGoogleTag from @brandlab-digital/site-next/analytics/google-tag.",
33
+ actual: "The website-call contract is declared without the shared Google tag renderer.",
34
+ remediation: "Render BrandlabGoogleTag once from the root layout and pass the verified public business phone number.",
35
+ }));
36
+ }
37
+ }
38
+ if (leadDiagnosticsDeclared) {
39
+ const sharedDiagnosticsCalled = inspections.some((inspection) => inspection.sharedDiagnosticCalled);
40
+ if (!sharedDiagnosticsCalled) {
41
+ issues.push(analyticsIssue({
42
+ ruleId: "brandlab-analytics-lead-diagnostics-unused",
43
+ expected: "An enabled leadDiagnostics contract is consumed through at least one shared helper.",
44
+ actual: "leadDiagnostics is enabled but no shared diagnostic helper is imported.",
45
+ remediation: "Instrument the intended form or CTA through the shared helpers, or remove the unused opt-in.",
46
+ }));
47
+ }
48
+ }
49
+ return {
50
+ rulesetId: BRANDLAB_ANALYTICS_V3_RULESET_ID,
51
+ websiteCallsDeclared,
52
+ leadDiagnosticsDeclared,
53
+ issues: issues.sort((first, second) => first.ruleId.localeCompare(second.ruleId) ||
54
+ (first.path ?? "").localeCompare(second.path ?? "") ||
55
+ (first.line ?? 0) - (second.line ?? 0)),
56
+ };
57
+ }
58
+ function inspectAnalyticsSource(entry, issues) {
59
+ const sourceFile = ts.createSourceFile(entry.path, entry.source, ts.ScriptTarget.Latest, true, scriptKind(entry.path));
60
+ const googleTagBindings = new Set();
61
+ const diagnosticBindings = new Set();
62
+ const browserConfigBindings = new Set();
63
+ const analyticsNamespaceBindings = new Set();
64
+ const emittedRules = new Set();
65
+ let websiteCallsDeclared = false;
66
+ let leadDiagnosticsDeclared = false;
67
+ let sharedGoogleTagRendered = false;
68
+ let sharedDiagnosticCalled = false;
69
+ for (const statement of sourceFile.statements) {
70
+ if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier))
71
+ continue;
72
+ const imports = statement.importClause?.namedBindings;
73
+ if (statement.moduleSpecifier.text === "@brandlab-digital/site-next/analytics" &&
74
+ imports &&
75
+ ts.isNamespaceImport(imports)) {
76
+ analyticsNamespaceBindings.add(imports.name.text);
77
+ continue;
78
+ }
79
+ if (!imports || !ts.isNamedImports(imports))
80
+ continue;
81
+ for (const specifier of imports.elements) {
82
+ const importedName = specifier.propertyName?.text ?? specifier.name.text;
83
+ if (statement.moduleSpecifier.text === "@brandlab-digital/site-next/analytics/google-tag" &&
84
+ importedName === "BrandlabGoogleTag") {
85
+ googleTagBindings.add(specifier.name.text);
86
+ }
87
+ if (statement.moduleSpecifier.text === "@brandlab-digital/site-next/analytics" &&
88
+ ["trackLeadFormStart", "trackLeadFormError", "trackLeadCtaClick"].includes(importedName)) {
89
+ diagnosticBindings.add(specifier.name.text);
90
+ }
91
+ if (statement.moduleSpecifier.text === "@brandlab-digital/site-next/analytics" &&
92
+ importedName === "resolveBrowserAnalyticsConfig") {
93
+ browserConfigBindings.add(specifier.name.text);
94
+ }
95
+ }
96
+ }
97
+ const emitIssue = (node, options) => {
98
+ if (emittedRules.has(options.ruleId))
99
+ return;
100
+ emittedRules.add(options.ruleId);
101
+ issues.push(analyticsIssue({
102
+ ...options,
103
+ path: entry.relativePath,
104
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1,
105
+ actual: `A local implementation appears in ${entry.relativePath}.`,
106
+ }));
107
+ };
108
+ const visit = (node) => {
109
+ if (ts.isPropertyAssignment(node)) {
110
+ const name = propertyName(node.name);
111
+ if (name === "websiteCalls" && ts.isObjectLiteralExpression(node.initializer)) {
112
+ websiteCallsDeclared = true;
113
+ }
114
+ if (name === "leadDiagnostics" &&
115
+ ts.isObjectLiteralExpression(node.initializer) &&
116
+ node.initializer.properties.some((property) => ts.isPropertyAssignment(property) &&
117
+ propertyName(property.name) === "enabled" &&
118
+ property.initializer.kind === ts.SyntaxKind.TrueKeyword)) {
119
+ leadDiagnosticsDeclared = true;
120
+ }
121
+ if (name === "phone_conversion_number") {
122
+ emitIssue(node, {
123
+ ruleId: "brandlab-analytics-local-website-call-snippet",
124
+ expected: "Website-call forwarding configuration is rendered by BrandlabGoogleTag.",
125
+ remediation: "Remove the local phone snippet and use @brandlab-digital/site-next/analytics/google-tag.",
126
+ });
127
+ }
128
+ }
129
+ if ((ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node)) &&
130
+ ts.isIdentifier(node.tagName) &&
131
+ googleTagBindings.has(node.tagName.text)) {
132
+ sharedGoogleTagRendered = true;
133
+ }
134
+ if (ts.isCallExpression(node)) {
135
+ const callsBrowserConfigResolver = (ts.isIdentifier(node.expression) &&
136
+ browserConfigBindings.has(node.expression.text)) ||
137
+ (ts.isPropertyAccessExpression(node.expression) &&
138
+ ts.isIdentifier(node.expression.expression) &&
139
+ analyticsNamespaceBindings.has(node.expression.expression.text) &&
140
+ node.expression.name.text === "resolveBrowserAnalyticsConfig");
141
+ if (callsBrowserConfigResolver &&
142
+ node.arguments[1] &&
143
+ isProcessEnvAccess(node.arguments[1])) {
144
+ emitIssue(node, {
145
+ ruleId: "brandlab-analytics-browser-process-env",
146
+ expected: "Browser analytics receive explicitly named public measurement and Ads values.",
147
+ remediation: "Pass an object whose measurementId, googleAdsConversionId and googleAdsConversionLabel values each use a direct NEXT_PUBLIC environment property reference.",
148
+ });
149
+ }
150
+ if (ts.isIdentifier(node.expression) &&
151
+ diagnosticBindings.has(node.expression.text)) {
152
+ sharedDiagnosticCalled = true;
153
+ }
154
+ if (ts.isPropertyAccessExpression(node.expression) &&
155
+ node.expression.name.text === "createElement" &&
156
+ node.arguments[0] &&
157
+ ts.isIdentifier(node.arguments[0]) &&
158
+ googleTagBindings.has(node.arguments[0].text)) {
159
+ sharedGoogleTagRendered = true;
160
+ }
161
+ const eventName = gtagEventName(node);
162
+ if (["lead_form_start", "lead_form_error", "lead_cta_click"].includes(eventName ?? "")) {
163
+ emitIssue(node, {
164
+ ruleId: "brandlab-analytics-local-lead-diagnostic",
165
+ expected: "Lead diagnostics use the privacy-safe shared analytics helpers.",
166
+ remediation: "Use trackLeadFormStart, trackLeadFormError or trackLeadCtaClick from @brandlab-digital/site-next/analytics.",
167
+ });
168
+ }
169
+ if (eventName === "conversion") {
170
+ emitIssue(node, {
171
+ ruleId: "brandlab-analytics-local-ads-conversion",
172
+ expected: "Direct form conversion transport stays inside the shared accepted-delivery runtime.",
173
+ remediation: "Remove the local Google Ads conversion event and use trackDeliveredContact or trackDeliveredContactWithEnhancedConversions.",
174
+ });
175
+ }
176
+ }
177
+ ts.forEachChild(node, visit);
178
+ };
179
+ visit(sourceFile);
180
+ return {
181
+ websiteCallsDeclared,
182
+ leadDiagnosticsDeclared,
183
+ sharedGoogleTagRendered,
184
+ sharedDiagnosticCalled,
185
+ };
186
+ }
187
+ function isProcessEnvAccess(node) {
188
+ if (ts.isPropertyAccessExpression(node) &&
189
+ ts.isIdentifier(node.expression) &&
190
+ node.expression.text === "process" &&
191
+ node.name.text === "env") {
192
+ return true;
193
+ }
194
+ return (ts.isElementAccessExpression(node) &&
195
+ ts.isIdentifier(node.expression) &&
196
+ node.expression.text === "process" &&
197
+ node.argumentExpression !== undefined &&
198
+ ts.isStringLiteralLike(node.argumentExpression) &&
199
+ node.argumentExpression.text === "env");
200
+ }
201
+ function propertyName(name) {
202
+ return ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)
203
+ ? name.text
204
+ : null;
205
+ }
206
+ function gtagEventName(node) {
207
+ const callee = node.expression;
208
+ const isGtag = (ts.isIdentifier(callee) && callee.text === "gtag") ||
209
+ (ts.isPropertyAccessExpression(callee) && callee.name.text === "gtag");
210
+ if (!isGtag || node.arguments.length < 2)
211
+ return null;
212
+ const command = node.arguments[0];
213
+ const event = node.arguments[1];
214
+ return command && ts.isStringLiteralLike(command) && command.text === "event" &&
215
+ event && ts.isStringLiteralLike(event)
216
+ ? event.text
217
+ : null;
218
+ }
219
+ function scriptKind(path) {
220
+ switch (extname(path)) {
221
+ case ".tsx": return ts.ScriptKind.TSX;
222
+ case ".jsx": return ts.ScriptKind.JSX;
223
+ case ".js":
224
+ case ".mjs": return ts.ScriptKind.JS;
225
+ default: return ts.ScriptKind.TS;
226
+ }
227
+ }
228
+ function analyticsIssue(options) {
229
+ return {
230
+ surface: "analytics",
231
+ severity: "blocker",
232
+ evidenceKind: "static",
233
+ ...options,
234
+ };
235
+ }
236
+ function walkSourceFiles(directory) {
237
+ const files = [];
238
+ for (const entry of readdirSync(directory, { withFileTypes: true })) {
239
+ if (entry.isSymbolicLink())
240
+ continue;
241
+ const path = join(directory, entry.name);
242
+ if (entry.isDirectory()) {
243
+ if (!SKIPPED_DIRECTORIES.has(entry.name))
244
+ files.push(...walkSourceFiles(path));
245
+ continue;
246
+ }
247
+ if (entry.isFile() && SOURCE_EXTENSIONS.has(extname(entry.name)))
248
+ files.push(path);
249
+ }
250
+ return files.sort();
251
+ }
252
+ //# sourceMappingURL=analytics-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-contract.js","sourceRoot":"","sources":["../src/analytics-contract.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { type BrandlabConformanceMode } from "./project.js";
3
+ import { type BrandlabSupportPolicy } from "./release-manifest.js";
3
4
  interface CliOptions {
4
5
  root: string;
5
6
  installedRelease?: string | null;
@@ -16,5 +17,7 @@ interface CliIo {
16
17
  }
17
18
  export declare function parseBrandlabConformanceArgs(argv: readonly string[]): CliOptions;
18
19
  export declare function runBrandlabConformanceCli(argv: readonly string[], io?: CliIo): number;
20
+ export declare function createEmbeddedLocalSupportPolicy(root: string, explicitInstalledRelease?: string | null): BrandlabSupportPolicy;
21
+ export declare function isBrandlabConformanceCliEntrypoint(moduleUrl: string, argvPath: string | undefined): boolean;
19
22
  export {};
20
23
  //# sourceMappingURL=cli.d.ts.map
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;AAOtB,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,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;AAeD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAgDhF;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAGH,GACA,MAAM,CAqCR"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAG/B,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,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;AAqBD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA4ChF;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAGH,GACA,MAAM,CA6CR;AAYD,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,GACvC,qBAAqB,CAiCvB;AAqHD,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAOT"}
package/dist/cli.js CHANGED
@@ -1,20 +1,27 @@
1
1
  #!/usr/bin/env node
2
- import { existsSync, readFileSync } from "node:fs";
2
+ import { existsSync, readFileSync, realpathSync } from "node:fs";
3
3
  import { dirname, isAbsolute, resolve } from "node:path";
4
- import { pathToFileURL } from "node:url";
4
+ import { fileURLToPath } from "node:url";
5
5
  import { evaluateBrandlabProject, shouldFailBrandlabConformance, } from "./project.js";
6
- import { compareBrandlabSemver, } from "./release-manifest.js";
7
- const HELP = `Brandlab version-aware conformance
6
+ import { BRANDLAB_SHARED_PACKAGE_NAMES, compareBrandlabSemver, } from "./release-manifest.js";
7
+ import { DEFAULT_BRANDLAB_RELEASE_CATALOG } from "./release-catalog.js";
8
+ const HELP = `Brandlab verification
8
9
 
9
10
  Usage:
10
- brandlab-conformance --support-policy <path> [--root <path>]
11
+ brandlab-verify [--root <path>] [--support-policy <path>]
11
12
  [--installed-release <version|unadopted>]
12
13
  [--release-manifest <path>]...
13
14
  [--target-release <version|none>] [--mode <local|ci|preflight>] [--json]
14
15
 
15
16
  Exit status:
16
- local/ci fail only for installed-release maintenance blockers
17
- preflight also fails for target-release migration blockers
17
+ local/ci fail only for high-signal installed-release blockers
18
+ preflight also fails for high-signal target-release blockers
19
+
20
+ The human result is grouped into fifteen verification families. Detailed
21
+ compatibility and migration diagnostics remain available in --json output.
22
+ Without an external support policy, local verification uses the installed
23
+ release's embedded contract. Portfolio and release checks always supply the
24
+ canonical Brandlab support policy.
18
25
  `;
19
26
  export function parseBrandlabConformanceArgs(argv) {
20
27
  const parsed = {
@@ -61,9 +68,6 @@ export function parseBrandlabConformanceArgs(argv) {
61
68
  throw new Error(`Unknown argument ${argument}.`);
62
69
  }
63
70
  }
64
- if (!parsed.help && parsed.supportPolicyPath === null) {
65
- throw new Error("--support-policy is required.");
66
- }
67
71
  return parsed;
68
72
  }
69
73
  export function runBrandlabConformanceCli(argv, io = {
@@ -76,8 +80,12 @@ export function runBrandlabConformanceCli(argv, io = {
76
80
  io.stdout(HELP);
77
81
  return 0;
78
82
  }
79
- const supportPolicy = loadSupportPolicy(options.supportPolicyPath);
80
- const policyManifestPaths = resolveSupportPolicyReleaseManifestPaths(options.supportPolicyPath, supportPolicy);
83
+ const supportPolicy = options.supportPolicyPath
84
+ ? loadSupportPolicy(options.supportPolicyPath)
85
+ : createEmbeddedLocalSupportPolicy(options.root, options.installedRelease);
86
+ const policyManifestPaths = options.supportPolicyPath
87
+ ? resolveSupportPolicyReleaseManifestPaths(options.supportPolicyPath, supportPolicy)
88
+ : [];
81
89
  const releaseManifests = [
82
90
  ...new Set([
83
91
  ...policyManifestPaths,
@@ -91,7 +99,7 @@ export function runBrandlabConformanceCli(argv, io = {
91
99
  installedRelease: options.installedRelease,
92
100
  targetRelease: options.targetRelease,
93
101
  mode: options.mode,
94
- releaseManifests,
102
+ releaseManifests: releaseManifests.length > 0 ? releaseManifests : undefined,
95
103
  supportPolicy,
96
104
  });
97
105
  io.stdout(options.json ? `${JSON.stringify(result, null, 2)}\n` : formatResult(result));
@@ -113,6 +121,53 @@ function loadSupportPolicy(path) {
113
121
  throw new Error(`Unable to load support policy from ${path}: ${detail}`);
114
122
  }
115
123
  }
124
+ export function createEmbeddedLocalSupportPolicy(root, explicitInstalledRelease) {
125
+ const declaredRelease = explicitInstalledRelease === undefined
126
+ ? detectDeclaredBrandlabRelease(root)
127
+ : explicitInstalledRelease;
128
+ const embeddedVersions = DEFAULT_BRANDLAB_RELEASE_CATALOG.map((release) => release.releaseVersion);
129
+ const fallbackRelease = [...embeddedVersions].sort(compareBrandlabSemver).at(-1);
130
+ if (!fallbackRelease) {
131
+ throw new Error("The embedded Brandlab release catalog is empty.");
132
+ }
133
+ const release = declaredRelease && embeddedVersions.includes(declaredRelease)
134
+ ? declaredRelease
135
+ : fallbackRelease;
136
+ return {
137
+ schemaVersion: 3,
138
+ authorityId: "brandlab-shared-package",
139
+ updatedAt: "2000-01-01",
140
+ currentReleaseVersion: release,
141
+ defaultNewProjectVersion: release,
142
+ minimumSupportedVersion: release,
143
+ channels: { local: release },
144
+ releases: {
145
+ [release]: {
146
+ lifecycle: "current",
147
+ manifest: `embedded-runtime-contract:${release}`,
148
+ },
149
+ },
150
+ projectPolicies: {},
151
+ };
152
+ }
153
+ function detectDeclaredBrandlabRelease(root) {
154
+ try {
155
+ const packageJson = JSON.parse(readFileSync(resolve(root, "package.json"), "utf8"));
156
+ const versions = BRANDLAB_SHARED_PACKAGE_NAMES.map((packageName) => packageJson.dependencies?.[packageName] ??
157
+ packageJson.devDependencies?.[packageName] ??
158
+ null);
159
+ const exact = versions.filter((version) => typeof version === "string" &&
160
+ !/^[~^*<>=]/.test(version) &&
161
+ !version.includes(" "));
162
+ return exact.length === BRANDLAB_SHARED_PACKAGE_NAMES.length &&
163
+ new Set(exact).size === 1
164
+ ? exact[0]
165
+ : null;
166
+ }
167
+ catch {
168
+ return null;
169
+ }
170
+ }
116
171
  function loadReleaseManifest(path) {
117
172
  try {
118
173
  return JSON.parse(readFileSync(path, "utf8"));
@@ -148,18 +203,24 @@ function resolveSupportPolicyReleaseManifestPaths(supportPolicyPath, supportPoli
148
203
  }
149
204
  function formatResult(result) {
150
205
  const lines = [
151
- "Brandlab conformance",
206
+ "Brandlab verification",
152
207
  `installed: ${result.installedRelease ?? "unadopted"}`,
153
208
  `target: ${result.targetRelease ?? "none"}`,
154
- `maintenance: ${formatSummary(result.maintenance)}`,
155
- `migration: ${formatSummary(result.migration)}`,
156
- `advisory: ${formatSummary(result.advisory)}`,
209
+ `policy: ${result.verification.policyVersion}`,
210
+ `maintenance: ${formatSummary(result.verification.maintenance)}`,
211
+ `migration: ${formatSummary(result.verification.migration)}`,
212
+ `diagnostics: ${result.diagnostics.findings.length}`,
157
213
  ];
158
- for (const finding of result.findings) {
214
+ for (const family of result.verification.families) {
215
+ if (family.status === "pass")
216
+ continue;
217
+ lines.push(`[${family.status}] ${family.title}: ${family.blockers} blocker(s), ${family.warnings} warning(s)`);
218
+ }
219
+ for (const finding of result.operationalFindings) {
159
220
  const location = finding.path
160
221
  ? ` (${finding.path}${finding.line ? `:${finding.line}` : ""})`
161
222
  : "";
162
- lines.push(`[${finding.classification}/${finding.severity}] ${finding.ruleId}${location}: ${finding.actual}`);
223
+ lines.push(`[${finding.familyId}/${finding.classification}/${finding.severity}] ${finding.ruleId}${location}: ${finding.actual}`);
163
224
  }
164
225
  return `${lines.join("\n")}\n`;
165
226
  }
@@ -172,7 +233,17 @@ function requireValue(argv, index, argument) {
172
233
  throw new Error(`${argument} requires a value.`);
173
234
  return value;
174
235
  }
175
- if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) {
236
+ export function isBrandlabConformanceCliEntrypoint(moduleUrl, argvPath) {
237
+ if (!argvPath)
238
+ return false;
239
+ try {
240
+ return realpathSync(fileURLToPath(moduleUrl)) === realpathSync(resolve(argvPath));
241
+ }
242
+ catch {
243
+ return false;
244
+ }
245
+ }
246
+ if (isBrandlabConformanceCliEntrypoint(import.meta.url, process.argv[1])) {
176
247
  process.exitCode = runBrandlabConformanceCli(process.argv.slice(2));
177
248
  }
178
249
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  export declare const BRANDLAB_CONFIG_V3_RULESET_ID = "project-config-v3@1.0.0-rc.2";
2
+ export declare const BRANDLAB_CONFIG_V4_RULESET_ID = "project-config-v4@1.0.0-rc.12";
3
+ export declare const BRANDLAB_CONFIG_V5_RULESET_ID = "project-config-v5@1.0.0-rc.19";
4
+ export type BrandlabInspectableConfigurationContract = "project-config-v3" | "project-config-v4" | "project-config-v5";
2
5
  export declare const BRANDLAB_CONFIG_V3_PROFILES: readonly ["next-local-service", "next-root-level", "next-static-legacy", "legacy-php"];
3
6
  export interface InspectedBrandlabProjectConfig {
4
7
  projectId: string;
@@ -14,6 +17,8 @@ export interface InspectedBrandlabProjectConfig {
14
17
  contactEnabled: boolean;
15
18
  locationStrategy: string | null;
16
19
  reviewsProvider: string | null;
20
+ reviewsMode: string | null;
21
+ reviewsRouteIds: readonly string[];
17
22
  };
18
23
  }
19
24
  export interface BrandlabConfigV3Issue {
@@ -37,7 +42,9 @@ export interface BrandlabConfigV3Inspection {
37
42
  frameworkOwnedExports: ReadonlyMap<string, ReadonlySet<string>>;
38
43
  issues: BrandlabConfigV3Issue[];
39
44
  }
40
- export declare function inspectBrandlabConfigV3(root: string): BrandlabConfigV3Inspection;
45
+ export declare function inspectBrandlabConfigV3(root: string, options?: {
46
+ contractVersion?: BrandlabInspectableConfigurationContract;
47
+ }): BrandlabConfigV3Inspection;
41
48
  /** SHA-256 evidence for the exact canonical serializer output produced at runtime. */
42
49
  export declare function digestBrandlabPlatformContractSerialization(serialized: string): string;
43
50
  //# sourceMappingURL=project-config-v3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-config-v3.d.ts","sourceRoot":"","sources":["../src/project-config-v3.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAE5E,eAAO,MAAM,2BAA2B,wFAK9B,CAAC;AA6CX,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,EAAE;QACN,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,mBAAmB,EAAE;QACnB,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACxD,CAAC;IACF,YAAY,EAAE;QACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,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,0BAA0B;IACzC,MAAM,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAC9C,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACjC;AA2JD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CA4GhF;AAs4FD,sFAAsF;AACtF,wBAAgB,2CAA2C,CAAC,UAAU,EAAE,MAAM,UAe7E"}
1
+ {"version":3,"file":"project-config-v3.d.ts","sourceRoot":"","sources":["../src/project-config-v3.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,MAAM,MAAM,wCAAwC,GAChD,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAC;AAExB,eAAO,MAAM,2BAA2B,wFAK9B,CAAC;AA8CX,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,EAAE;QACN,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,mBAAmB,EAAE;QACnB,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACxD,CAAC;IACF,YAAY,EAAE;QACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,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,0BAA0B;IACzC,MAAM,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAC9C,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACjC;AAuOD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,wCAAwC,CAAA;CAAO,GAC3E,0BAA0B,CA6G5B;AA+/FD,sFAAsF;AACtF,wBAAgB,2CAA2C,CAAC,UAAU,EAAE,MAAM,UAe7E"}