@brandlab-digital/conformance 1.0.0-rc.17 → 1.0.0-rc.2
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 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -13
- package/dist/cli.js.map +1 -1
- package/dist/project-config-v3.d.ts +1 -8
- package/dist/project-config-v3.d.ts.map +1 -1
- package/dist/project-config-v3.js +21 -149
- 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.d.ts +1 -4
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +11 -238
- package/dist/project.js.map +1 -1
- package/dist/release-catalog.d.ts.map +1 -1
- package/dist/release-catalog.js +0 -1090
- package/dist/release-catalog.js.map +1 -1
- package/dist/release-contract-compatibility.d.ts +0 -105
- package/dist/release-contract-compatibility.d.ts.map +1 -1
- package/dist/release-contract-compatibility.js +0 -105
- package/dist/release-contract-compatibility.js.map +1 -1
- package/dist/release-manifest.d.ts +0 -1
- package/dist/release-manifest.d.ts.map +1 -1
- package/dist/release-manifest.js +0 -7
- package/dist/release-manifest.js.map +1 -1
- package/dist/source-safety-contracts.d.ts +1 -1
- package/dist/source-safety-contracts.d.ts.map +1 -1
- package/dist/source-safety-contracts.js +1 -5
- package/dist/source-safety-contracts.js.map +1 -1
- package/package.json +2 -15
- package/dist/analytics-contract.d.ts +0 -20
- package/dist/analytics-contract.d.ts.map +0 -1
- package/dist/analytics-contract.js +0 -211
- package/dist/analytics-contract.js.map +0 -1
- package/dist/project-documentation.d.ts +0 -28
- package/dist/project-documentation.d.ts.map +0 -1
- package/dist/project-documentation.js +0 -398
- package/dist/project-documentation.js.map +0 -1
package/dist/cli.d.ts
CHANGED
|
@@ -16,6 +16,5 @@ interface CliIo {
|
|
|
16
16
|
}
|
|
17
17
|
export declare function parseBrandlabConformanceArgs(argv: readonly string[]): CliOptions;
|
|
18
18
|
export declare function runBrandlabConformanceCli(argv: readonly string[], io?: CliIo): number;
|
|
19
|
-
export declare function isBrandlabConformanceCliEntrypoint(moduleUrl: string, argvPath: string | undefined): boolean;
|
|
20
19
|
export {};
|
|
21
20
|
//# 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;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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { existsSync, readFileSync
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { dirname, isAbsolute, resolve } from "node:path";
|
|
4
|
-
import {
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
5
|
import { evaluateBrandlabProject, shouldFailBrandlabConformance, } from "./project.js";
|
|
6
6
|
import { compareBrandlabSemver, } from "./release-manifest.js";
|
|
7
7
|
const HELP = `Brandlab version-aware conformance
|
|
@@ -172,17 +172,7 @@ function requireValue(argv, index, argument) {
|
|
|
172
172
|
throw new Error(`${argument} requires a value.`);
|
|
173
173
|
return value;
|
|
174
174
|
}
|
|
175
|
-
|
|
176
|
-
if (!argvPath)
|
|
177
|
-
return false;
|
|
178
|
-
try {
|
|
179
|
-
return realpathSync(fileURLToPath(moduleUrl)) === realpathSync(resolve(argvPath));
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (isBrandlabConformanceCliEntrypoint(import.meta.url, process.argv[1])) {
|
|
175
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) {
|
|
186
176
|
process.exitCode = runBrandlabConformanceCli(process.argv.slice(2));
|
|
187
177
|
}
|
|
188
178
|
//# 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,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
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 type BrandlabInspectableConfigurationContract = "project-config-v3" | "project-config-v4";
|
|
4
2
|
export declare const BRANDLAB_CONFIG_V3_PROFILES: readonly ["next-local-service", "next-root-level", "next-static-legacy", "legacy-php"];
|
|
5
3
|
export interface InspectedBrandlabProjectConfig {
|
|
6
4
|
projectId: string;
|
|
@@ -16,9 +14,6 @@ export interface InspectedBrandlabProjectConfig {
|
|
|
16
14
|
contactEnabled: boolean;
|
|
17
15
|
locationStrategy: string | null;
|
|
18
16
|
reviewsProvider: string | null;
|
|
19
|
-
reviewsMode: string | null;
|
|
20
|
-
reviewsRouteIds: readonly string[];
|
|
21
|
-
reviewsMonthlyRequestLimit: number | null;
|
|
22
17
|
};
|
|
23
18
|
}
|
|
24
19
|
export interface BrandlabConfigV3Issue {
|
|
@@ -42,9 +37,7 @@ export interface BrandlabConfigV3Inspection {
|
|
|
42
37
|
frameworkOwnedExports: ReadonlyMap<string, ReadonlySet<string>>;
|
|
43
38
|
issues: BrandlabConfigV3Issue[];
|
|
44
39
|
}
|
|
45
|
-
export declare function inspectBrandlabConfigV3(root: string
|
|
46
|
-
contractVersion?: BrandlabInspectableConfigurationContract;
|
|
47
|
-
}): BrandlabConfigV3Inspection;
|
|
40
|
+
export declare function inspectBrandlabConfigV3(root: string): BrandlabConfigV3Inspection;
|
|
48
41
|
/** SHA-256 evidence for the exact canonical serializer output produced at runtime. */
|
|
49
42
|
export declare function digestBrandlabPlatformContractSerialization(serialized: string): string;
|
|
50
43
|
//# 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;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"}
|
|
@@ -7,7 +7,6 @@ import { createHash } from "node:crypto";
|
|
|
7
7
|
import { extname, join, relative } from "node:path";
|
|
8
8
|
import * as ts from "typescript";
|
|
9
9
|
export const BRANDLAB_CONFIG_V3_RULESET_ID = "project-config-v3@1.0.0-rc.2";
|
|
10
|
-
export const BRANDLAB_CONFIG_V4_RULESET_ID = "project-config-v4@1.0.0-rc.12";
|
|
11
10
|
export const BRANDLAB_CONFIG_V3_PROFILES = [
|
|
12
11
|
"next-local-service",
|
|
13
12
|
"next-root-level",
|
|
@@ -33,8 +32,6 @@ const LOCATION_STRATEGIES = new Set([
|
|
|
33
32
|
"multi-location",
|
|
34
33
|
]);
|
|
35
34
|
const REVIEWS_PROVIDERS = new Set(["google-places", "project-owned"]);
|
|
36
|
-
const GOOGLE_REVIEWS_MODES = new Set(["link-only", "summary", "full"]);
|
|
37
|
-
const MAXIMUM_GOOGLE_REVIEWS_MONTHLY_REQUEST_LIMIT = 100_000;
|
|
38
35
|
const ROOT_CONFIG_KEYS = new Set([
|
|
39
36
|
"projectId",
|
|
40
37
|
"profile",
|
|
@@ -196,34 +193,6 @@ const PROTECTED_LOCAL_PATTERNS = [
|
|
|
196
193
|
pattern: /\b(?:class|function|const|let|var)\s+(?:ContactFormEmail|renderContactEmail)\b/,
|
|
197
194
|
expected: "Contact email rendering is owned by @brandlab-digital/site-next/contact/email.",
|
|
198
195
|
},
|
|
199
|
-
{
|
|
200
|
-
ruleId: "brandlab-config-v3-local-google-reviews-fetch",
|
|
201
|
-
minimumContract: "project-config-v4",
|
|
202
|
-
surface: "google-reviews",
|
|
203
|
-
pattern: /\bplaces\.googleapis\.com\/v1\/places\b/,
|
|
204
|
-
expected: "Google Places fetching is owned by @brandlab-digital/site-next/google-reviews/server.",
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
ruleId: "brandlab-config-v3-local-google-reviews-renderer",
|
|
208
|
-
minimumContract: "project-config-v4",
|
|
209
|
-
surface: "google-reviews",
|
|
210
|
-
pattern: /@brandlab-digital\/site-core\/google-reviews[\s\S]{0,12000}\breviews\.map\s*\(/,
|
|
211
|
-
expected: "Google review content and attribution are rendered by the shared policy-complete UI.",
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
ruleId: "brandlab-config-v3-hardcoded-google-review-total",
|
|
215
|
-
minimumContract: "project-config-v4",
|
|
216
|
-
surface: "google-reviews",
|
|
217
|
-
pattern: /["'`][^"'`\n]{0,100}\b\d{1,6}\s+Google\s+(?:reviews?|ratings?)\b/i,
|
|
218
|
-
expected: "Rendered Google rating and review totals come from a live no-store shared snapshot.",
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
ruleId: "brandlab-config-v3-public-google-review-cache",
|
|
222
|
-
minimumContract: "project-config-v4",
|
|
223
|
-
surface: "google-reviews",
|
|
224
|
-
pattern: /\b(?:googleReviews?|userRatingCount)\b[\s\S]{0,2000}\b(?:s-maxage|stale-while-revalidate)\b|\b(?:s-maxage|stale-while-revalidate)\b[\s\S]{0,2000}\b(?:googleReviews?|userRatingCount)\b/i,
|
|
225
|
-
expected: "Google Places content is returned with private no-store headers and is never publicly cached.",
|
|
226
|
-
},
|
|
227
196
|
{
|
|
228
197
|
ruleId: "brandlab-config-v3-local-lead-event",
|
|
229
198
|
surface: "analytics",
|
|
@@ -238,8 +207,7 @@ const PROTECTED_LOCAL_PATTERNS = [
|
|
|
238
207
|
expected: "Breadcrumb labels and hierarchy derive from the semantic route catalog.",
|
|
239
208
|
},
|
|
240
209
|
];
|
|
241
|
-
export function inspectBrandlabConfigV3(root
|
|
242
|
-
const contractVersion = options.contractVersion ?? "project-config-v4";
|
|
210
|
+
export function inspectBrandlabConfigV3(root) {
|
|
243
211
|
const issues = [];
|
|
244
212
|
const configPath = join(root, "brandlab.config.ts");
|
|
245
213
|
const usage = collectProjectImports(root, issues);
|
|
@@ -312,11 +280,11 @@ export function inspectBrandlabConfigV3(root, options = {}) {
|
|
|
312
280
|
}));
|
|
313
281
|
return { ...usage, config: null, issues };
|
|
314
282
|
}
|
|
315
|
-
const config = validateConfigValue(value, issues
|
|
283
|
+
const config = validateConfigValue(value, issues);
|
|
316
284
|
if (config) {
|
|
317
|
-
addImportContractIssues(root, config, usage, issues
|
|
285
|
+
addImportContractIssues(root, config, usage, issues);
|
|
318
286
|
}
|
|
319
|
-
addProtectedImplementationIssues(root, issues
|
|
287
|
+
addProtectedImplementationIssues(root, issues);
|
|
320
288
|
return {
|
|
321
289
|
config,
|
|
322
290
|
imports,
|
|
@@ -414,7 +382,7 @@ function propertyName(name) {
|
|
|
414
382
|
}
|
|
415
383
|
return null;
|
|
416
384
|
}
|
|
417
|
-
function validateConfigValue(value, issues
|
|
385
|
+
function validateConfigValue(value, issues) {
|
|
418
386
|
if (!isRecord(value)) {
|
|
419
387
|
issues.push(configIssue({
|
|
420
388
|
ruleId: "brandlab-config-v3-object",
|
|
@@ -569,7 +537,7 @@ function validateConfigValue(value, issues, contractVersion) {
|
|
|
569
537
|
}));
|
|
570
538
|
}
|
|
571
539
|
else {
|
|
572
|
-
validateCapabilities(capabilities, issues
|
|
540
|
+
validateCapabilities(capabilities, issues);
|
|
573
541
|
}
|
|
574
542
|
validateSitemap(value.sitemap, issues);
|
|
575
543
|
validateExceptions(value.exceptions, issues);
|
|
@@ -581,13 +549,6 @@ function validateConfigValue(value, issues, contractVersion) {
|
|
|
581
549
|
const locations = isRecord(safeCapabilities.locations) ? safeCapabilities.locations : null;
|
|
582
550
|
const reviews = isRecord(safeCapabilities.reviews) ? safeCapabilities.reviews : null;
|
|
583
551
|
const reviewsProvider = typeof reviews?.provider === "string" ? reviews.provider : null;
|
|
584
|
-
const reviewsMode = typeof reviews?.mode === "string" ? reviews.mode : null;
|
|
585
|
-
const reviewsRouteIds = Array.isArray(reviews?.routeIds)
|
|
586
|
-
? reviews.routeIds.filter((entry) => typeof entry === "string")
|
|
587
|
-
: [];
|
|
588
|
-
const reviewsMonthlyRequestLimit = typeof reviews?.monthlyRequestLimit === "number"
|
|
589
|
-
? reviews.monthlyRequestLimit
|
|
590
|
-
: null;
|
|
591
552
|
if (reviewsProvider === "google-places" && !families.includes("legal")) {
|
|
592
553
|
issues.push(configIssue({
|
|
593
554
|
ruleId: "brandlab-config-v3-google-places-legal-family",
|
|
@@ -610,9 +571,6 @@ function validateConfigValue(value, issues, contractVersion) {
|
|
|
610
571
|
contactEnabled: contact !== null,
|
|
611
572
|
locationStrategy: typeof locations?.strategy === "string" ? locations.strategy : null,
|
|
612
573
|
reviewsProvider,
|
|
613
|
-
reviewsMode,
|
|
614
|
-
reviewsRouteIds,
|
|
615
|
-
reviewsMonthlyRequestLimit,
|
|
616
574
|
},
|
|
617
575
|
};
|
|
618
576
|
}
|
|
@@ -689,7 +647,7 @@ function validateAliases(value, issues) {
|
|
|
689
647
|
}));
|
|
690
648
|
}
|
|
691
649
|
}
|
|
692
|
-
function validateCapabilities(capabilities, issues
|
|
650
|
+
function validateCapabilities(capabilities, issues) {
|
|
693
651
|
addUnknownKeyIssues(capabilities, new Set(["blog", "contact", "locations", "reviews"]), new Set(), "capabilities", issues);
|
|
694
652
|
if (capabilities.blog !== undefined) {
|
|
695
653
|
if (!isRecord(capabilities.blog)) {
|
|
@@ -759,10 +717,7 @@ function validateCapabilities(capabilities, issues, contractVersion) {
|
|
|
759
717
|
addShapeIssue("reviews", issues);
|
|
760
718
|
}
|
|
761
719
|
else {
|
|
762
|
-
addUnknownKeyIssues(capabilities.reviews,
|
|
763
|
-
contractVersion === "project-config-v4"
|
|
764
|
-
? new Set(["provider", "mode", "routeIds", "monthlyRequestLimit"])
|
|
765
|
-
: new Set(["provider"]), new Set(), "capabilities.reviews", issues);
|
|
720
|
+
addUnknownKeyIssues(capabilities.reviews, new Set(["provider"]), new Set(), "capabilities.reviews", issues);
|
|
766
721
|
if (typeof capabilities.reviews.provider !== "string" ||
|
|
767
722
|
!REVIEWS_PROVIDERS.has(capabilities.reviews.provider)) {
|
|
768
723
|
issues.push(configIssue({
|
|
@@ -773,64 +728,6 @@ function validateCapabilities(capabilities, issues, contractVersion) {
|
|
|
773
728
|
path: "brandlab.config.ts",
|
|
774
729
|
}));
|
|
775
730
|
}
|
|
776
|
-
if (capabilities.reviews.provider === "google-places" &&
|
|
777
|
-
contractVersion === "project-config-v4") {
|
|
778
|
-
if (typeof capabilities.reviews.mode !== "string" ||
|
|
779
|
-
!GOOGLE_REVIEWS_MODES.has(capabilities.reviews.mode)) {
|
|
780
|
-
issues.push(configIssue({
|
|
781
|
-
ruleId: "brandlab-config-v3-google-reviews-mode",
|
|
782
|
-
expected: `One Google reviews mode: ${[...GOOGLE_REVIEWS_MODES].join(", ")}.`,
|
|
783
|
-
actual: `reviews.mode is ${JSON.stringify(capabilities.reviews.mode)}.`,
|
|
784
|
-
remediation: "Select link-only, summary or full explicitly.",
|
|
785
|
-
path: "brandlab.config.ts",
|
|
786
|
-
}));
|
|
787
|
-
}
|
|
788
|
-
const routeIds = Array.isArray(capabilities.reviews.routeIds)
|
|
789
|
-
? capabilities.reviews.routeIds.filter((entry) => typeof entry === "string")
|
|
790
|
-
: [];
|
|
791
|
-
if (!Array.isArray(capabilities.reviews.routeIds) ||
|
|
792
|
-
routeIds.length === 0 ||
|
|
793
|
-
routeIds.length !== capabilities.reviews.routeIds.length ||
|
|
794
|
-
routeIds.some((routeId) => !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(routeId))) {
|
|
795
|
-
issues.push(configIssue({
|
|
796
|
-
ruleId: "brandlab-config-v3-google-reviews-routes",
|
|
797
|
-
expected: "At least one unique lowercase kebab-case review placement route ID.",
|
|
798
|
-
actual: `reviews.routeIds is ${JSON.stringify(capabilities.reviews.routeIds)}.`,
|
|
799
|
-
remediation: "Declare only the route IDs where Google review proof is intentionally displayed.",
|
|
800
|
-
path: "brandlab.config.ts",
|
|
801
|
-
}));
|
|
802
|
-
}
|
|
803
|
-
else {
|
|
804
|
-
addDuplicateIssue(routeIds, "brandlab-config-v3-google-reviews-route-duplicate", "reviews.routeIds", issues);
|
|
805
|
-
}
|
|
806
|
-
if (capabilities.reviews.mode === "link-only") {
|
|
807
|
-
if (capabilities.reviews.monthlyRequestLimit !== undefined) {
|
|
808
|
-
issues.push(configIssue({
|
|
809
|
-
ruleId: "brandlab-config-v3-google-reviews-link-only-quota",
|
|
810
|
-
expected: "No API request limit for link-only review proof.",
|
|
811
|
-
actual: "reviews.monthlyRequestLimit is configured for link-only mode.",
|
|
812
|
-
remediation: "Remove monthlyRequestLimit because link-only mode never calls Places.",
|
|
813
|
-
path: "brandlab.config.ts",
|
|
814
|
-
}));
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
else if (capabilities.reviews.mode === "summary" ||
|
|
818
|
-
capabilities.reviews.mode === "full") {
|
|
819
|
-
const limit = capabilities.reviews.monthlyRequestLimit;
|
|
820
|
-
if (typeof limit !== "number" ||
|
|
821
|
-
!Number.isSafeInteger(limit) ||
|
|
822
|
-
limit < 1 ||
|
|
823
|
-
limit > MAXIMUM_GOOGLE_REVIEWS_MONTHLY_REQUEST_LIMIT) {
|
|
824
|
-
issues.push(configIssue({
|
|
825
|
-
ruleId: "brandlab-config-v3-google-reviews-quota",
|
|
826
|
-
expected: `monthlyRequestLimit from 1 to ${MAXIMUM_GOOGLE_REVIEWS_MONTHLY_REQUEST_LIMIT}.`,
|
|
827
|
-
actual: `reviews.monthlyRequestLimit is ${JSON.stringify(limit)}.`,
|
|
828
|
-
remediation: "Set an explicit project-level monthly request ceiling.",
|
|
829
|
-
path: "brandlab.config.ts",
|
|
830
|
-
}));
|
|
831
|
-
}
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
731
|
}
|
|
835
732
|
}
|
|
836
733
|
}
|
|
@@ -1008,7 +905,7 @@ function isIsoDate(value) {
|
|
|
1008
905
|
return false;
|
|
1009
906
|
return !Number.isNaN(Date.parse(value));
|
|
1010
907
|
}
|
|
1011
|
-
function addImportContractIssues(root, config, usage, issues
|
|
908
|
+
function addImportContractIssues(root, config, usage, issues) {
|
|
1012
909
|
if (config.profile === "legacy-php") {
|
|
1013
910
|
const nextEvidence = detectNextPackageBackedEvidence(root, usage);
|
|
1014
911
|
if (nextEvidence.length === 0)
|
|
@@ -1087,37 +984,16 @@ function addImportContractIssues(root, config, usage, issues, contractVersion) {
|
|
|
1087
984
|
}, usage, issues);
|
|
1088
985
|
}
|
|
1089
986
|
if (config.capabilities.reviewsProvider === "google-places") {
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
}, usage, issues);
|
|
1101
|
-
}
|
|
1102
|
-
else if (config.capabilities.reviewsMode === "link-only") {
|
|
1103
|
-
requireStrictUsage({
|
|
1104
|
-
moduleName: "@brandlab-digital/site-next/google-reviews/ui",
|
|
1105
|
-
surface: "google-reviews-link",
|
|
1106
|
-
exports: ["GoogleReviewsLink"],
|
|
1107
|
-
}, usage, issues);
|
|
1108
|
-
}
|
|
1109
|
-
else {
|
|
1110
|
-
requireStrictUsage({
|
|
1111
|
-
moduleName: "@brandlab-digital/site-next/google-reviews/server",
|
|
1112
|
-
surface: "google-reviews-production",
|
|
1113
|
-
exports: ["createBrandlabGooglePlaceReviewsProductionRuntime"],
|
|
1114
|
-
}, usage, issues);
|
|
1115
|
-
requireStrictUsage({
|
|
1116
|
-
moduleName: "@brandlab-digital/site-next/google-reviews/client",
|
|
1117
|
-
surface: "google-reviews-display",
|
|
1118
|
-
exports: ["GooglePlaceReviewsClient"],
|
|
1119
|
-
}, usage, issues);
|
|
1120
|
-
}
|
|
987
|
+
requireStrictUsage({
|
|
988
|
+
moduleName: "@brandlab-digital/site-next/google-reviews",
|
|
989
|
+
surface: "google-reviews-route",
|
|
990
|
+
exports: ["createGooglePlaceReviewsRouteResponse"],
|
|
991
|
+
}, usage, issues);
|
|
992
|
+
requireStrictUsage({
|
|
993
|
+
moduleName: "@brandlab-digital/site-next/google-reviews",
|
|
994
|
+
surface: "google-reviews-display",
|
|
995
|
+
exports: ["GooglePlaceReviews"],
|
|
996
|
+
}, usage, issues);
|
|
1121
997
|
}
|
|
1122
998
|
else if (config.capabilities.reviewsProvider === "project-owned") {
|
|
1123
999
|
requireStrictUsage({
|
|
@@ -1126,7 +1002,7 @@ function addImportContractIssues(root, config, usage, issues, contractVersion) {
|
|
|
1126
1002
|
exports: ["preparePublicReviews"],
|
|
1127
1003
|
}, usage, issues);
|
|
1128
1004
|
}
|
|
1129
|
-
else if (
|
|
1005
|
+
else if (usage.imports.has("@brandlab-digital/site-next/google-reviews")) {
|
|
1130
1006
|
issues.push(configIssue({
|
|
1131
1007
|
ruleId: "brandlab-config-v3-google-reviews-capability",
|
|
1132
1008
|
surface: "google-reviews",
|
|
@@ -2876,15 +2752,11 @@ function isRuntimeIdentifierReference(identifier) {
|
|
|
2876
2752
|
}
|
|
2877
2753
|
return true;
|
|
2878
2754
|
}
|
|
2879
|
-
function addProtectedImplementationIssues(root, issues
|
|
2755
|
+
function addProtectedImplementationIssues(root, issues) {
|
|
2880
2756
|
for (const file of walkProjectRuntimeFiles(root)) {
|
|
2881
2757
|
const relativePath = normalizePath(relative(root, file));
|
|
2882
2758
|
const source = readFileSync(file, "utf8");
|
|
2883
2759
|
for (const rule of PROTECTED_LOCAL_PATTERNS) {
|
|
2884
|
-
if ("minimumContract" in rule &&
|
|
2885
|
-
rule.minimumContract === "project-config-v4" &&
|
|
2886
|
-
contractVersion !== "project-config-v4")
|
|
2887
|
-
continue;
|
|
2888
2760
|
const match = rule.pattern.exec(source);
|
|
2889
2761
|
if (!match || match.index === undefined)
|
|
2890
2762
|
continue;
|