@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.
- package/dist/analytics-contract.d.ts +20 -0
- package/dist/analytics-contract.d.ts.map +1 -0
- package/dist/analytics-contract.js +252 -0
- package/dist/analytics-contract.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +91 -20
- package/dist/cli.js.map +1 -1
- package/dist/project-config-v3.d.ts +8 -1
- package/dist/project-config-v3.d.ts.map +1 -1
- package/dist/project-config-v3.js +193 -31
- package/dist/project-config-v3.js.map +1 -1
- package/dist/project-config.d.ts +1 -1
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +1 -1
- package/dist/project-config.js.map +1 -1
- package/dist/project-documentation.d.ts +28 -0
- package/dist/project-documentation.d.ts.map +1 -0
- package/dist/project-documentation.js +234 -0
- package/dist/project-documentation.js.map +1 -0
- package/dist/project.d.ts +9 -2
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +327 -53
- package/dist/project.js.map +1 -1
- package/dist/release-catalog.d.ts.map +1 -1
- package/dist/release-catalog.js +1785 -0
- package/dist/release-catalog.js.map +1 -1
- package/dist/release-contract-compatibility.d.ts +10 -57
- package/dist/release-contract-compatibility.d.ts.map +1 -1
- package/dist/release-contract-compatibility.js +115 -61
- package/dist/release-contract-compatibility.js.map +1 -1
- package/dist/release-manifest.d.ts +1 -0
- package/dist/release-manifest.d.ts.map +1 -1
- package/dist/release-manifest.js +7 -0
- package/dist/release-manifest.js.map +1 -1
- package/dist/rendered-content.d.ts +38 -0
- package/dist/rendered-content.d.ts.map +1 -0
- package/dist/rendered-content.js +149 -0
- package/dist/rendered-content.js.map +1 -0
- package/dist/source-safety-contracts.d.ts.map +1 -1
- package/dist/source-safety-contracts.js +4 -0
- package/dist/source-safety-contracts.js.map +1 -1
- package/dist/verification-policy.d.ts +99 -0
- package/dist/verification-policy.d.ts.map +1 -0
- package/dist/verification-policy.js +219 -0
- package/dist/verification-policy.js.map +1 -0
- 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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,MAAM,gCAAgC,GAC3C,0BAA0B,CAAC;AAqB7B,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1E,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM;IACN,OAAO;IACP,QAAQ;IACR,UAAU;IACV,MAAM;IACN,WAAW;IACX,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI;QACJ,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3D,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;KACnC,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAClF,MAAM,oBAAoB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC/F,MAAM,uBAAuB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAErG,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,uBAAuB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACrG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;gBACzB,MAAM,EAAE,0CAA0C;gBAClD,QAAQ,EACN,iHAAiH;gBACnH,MAAM,EAAE,+EAA+E;gBACvF,WAAW,EACT,wGAAwG;aAC3G,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,IAAI,uBAAuB,EAAE,CAAC;QAC5B,MAAM,uBAAuB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QACpG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;gBACzB,MAAM,EAAE,4CAA4C;gBACpD,QAAQ,EAAE,qFAAqF;gBAC/F,MAAM,EAAE,yEAAyE;gBACjF,WAAW,EACT,8FAA8F;aACjG,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,gCAAgC;QAC3C,oBAAoB;QACpB,uBAAuB;QACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACpC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACnD,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CACvC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAA6D,EAC7D,MAAkC;IAElC,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CACvB,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAU,CAAC;IACrD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,uBAAuB,GAAG,KAAK,CAAC;IACpC,IAAI,uBAAuB,GAAG,KAAK,CAAC;IACpC,IAAI,sBAAsB,GAAG,KAAK,CAAC;IAEnC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC;YAAE,SAAS;QACnG,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;QACtD,IACE,SAAS,CAAC,eAAe,CAAC,IAAI,KAAK,uCAAuC;YAC1E,OAAO;YACP,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAC7B,CAAC;YACD,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;YAAE,SAAS;QACtD,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACzE,IACE,SAAS,CAAC,eAAe,CAAC,IAAI,KAAK,kDAAkD;gBACrF,YAAY,KAAK,mBAAmB,EACpC,CAAC;gBACD,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YACD,IACE,SAAS,CAAC,eAAe,CAAC,IAAI,KAAK,uCAAuC;gBAC1E,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EACxF,CAAC;gBACD,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,IACE,SAAS,CAAC,eAAe,CAAC,IAAI,KAAK,uCAAuC;gBAC1E,YAAY,KAAK,+BAA+B,EAChD,CAAC;gBACD,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,CAChB,IAAa,EACb,OAA8E,EAC9E,EAAE;QACF,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO;QAC7C,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YACzB,GAAG,OAAO;YACV,IAAI,EAAE,KAAK,CAAC,YAAY;YACxB,IAAI,EAAE,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YAClF,MAAM,EAAE,qCAAqC,KAAK,CAAC,YAAY,GAAG;SACnE,CAAC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE;QAC9B,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,IAAI,KAAK,cAAc,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9E,oBAAoB,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,IACE,IAAI,KAAK,iBAAiB;gBAC1B,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC5C,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;oBACjC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;oBACzC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,CACxD,EACD,CAAC;gBACD,uBAAuB,GAAG,IAAI,CAAC;YACjC,CAAC;YACD,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;gBACvC,SAAS,CAAC,IAAI,EAAE;oBACd,MAAM,EAAE,+CAA+C;oBACvD,QAAQ,EAAE,yEAAyE;oBACnF,WAAW,EACT,0FAA0F;iBAC7F,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IACE,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAClE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EACxC,CAAC;YACD,uBAAuB,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,0BAA0B,GAC9B,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC/B,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAClD,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC7C,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;oBAC3C,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,+BAA+B,CAAC,CAAC;YACnE,IACE,0BAA0B;gBAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACrC,CAAC;gBACD,SAAS,CAAC,IAAI,EAAE;oBACd,MAAM,EAAE,wCAAwC;oBAChD,QAAQ,EACN,+EAA+E;oBACjF,WAAW,EACT,6JAA6J;iBAChK,CAAC,CAAC;YACL,CAAC;YACD,IACE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;gBAChC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAC5C,CAAC;gBACD,sBAAsB,GAAG,IAAI,CAAC;YAChC,CAAC;YACD,IACE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;gBAC7C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAClC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAC7C,CAAC;gBACD,uBAAuB,GAAG,IAAI,CAAC;YACjC,CAAC;YAED,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvF,SAAS,CAAC,IAAI,EAAE;oBACd,MAAM,EAAE,0CAA0C;oBAClD,QAAQ,EAAE,iEAAiE;oBAC3E,WAAW,EACT,6GAA6G;iBAChH,CAAC,CAAC;YACL,CAAC;YACD,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC/B,SAAS,CAAC,IAAI,EAAE;oBACd,MAAM,EAAE,yCAAyC;oBACjD,QAAQ,EAAE,qFAAqF;oBAC/F,WAAW,EACT,6HAA6H;iBAChI,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,CAAC,CAAC;IAElB,OAAO;QACL,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,sBAAsB;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAmB;IAC7C,IACE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;QACnC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC;QAClC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QAClC,IAAI,CAAC,kBAAkB,KAAK,SAAS;QACrC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAqB;IACzC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACnF,CAAC,CAAC,IAAI,CAAC,IAAI;QACX,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,IAAuB;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,MAAM,MAAM,GACV,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;QACnD,CAAC,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,OAAO,IAAI,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;QAC3E,KAAK,IAAI,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC;QACtC,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,QAAQ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QACtC,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QACtC,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,OAAgF;IAEhF,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,YAAY,EAAE,QAAQ;QACtB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACpE,IAAI,KAAK,CAAC,cAAc,EAAE;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
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;
|
|
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 {
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { evaluateBrandlabProject, shouldFailBrandlabConformance, } from "./project.js";
|
|
6
|
-
import { compareBrandlabSemver, } from "./release-manifest.js";
|
|
7
|
-
|
|
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-
|
|
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
|
|
17
|
-
preflight also fails for target-release
|
|
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 =
|
|
80
|
-
|
|
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
|
|
206
|
+
"Brandlab verification",
|
|
152
207
|
`installed: ${result.installedRelease ?? "unadopted"}`,
|
|
153
208
|
`target: ${result.targetRelease ?? "none"}`,
|
|
154
|
-
`
|
|
155
|
-
`
|
|
156
|
-
`
|
|
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
|
|
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
|
-
|
|
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":";AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
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
|
|
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;
|
|
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"}
|