@brandlab-digital/conformance 1.0.0-rc.20 → 1.0.0-rc.21
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 +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +78 -17
- package/dist/cli.js.map +1 -1
- package/dist/project-config-v3.d.ts.map +1 -1
- package/dist/project-config-v3.js +37 -14
- package/dist/project-config-v3.js.map +1 -1
- package/dist/project.d.ts +5 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +29 -31
- package/dist/project.js.map +1 -1
- package/dist/release-catalog.d.ts.map +1 -1
- package/dist/release-catalog.js +49 -0
- package/dist/release-catalog.js.map +1 -1
- package/dist/release-contract-compatibility.d.ts +7 -0
- package/dist/release-contract-compatibility.d.ts.map +1 -1
- package/dist/release-contract-compatibility.js +7 -0
- package/dist/release-contract-compatibility.js.map +1 -1
- package/dist/rendered-content.d.ts +21 -1
- package/dist/rendered-content.d.ts.map +1 -1
- package/dist/rendered-content.js +74 -5
- package/dist/rendered-content.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 +2 -1
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,6 +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;
|
|
19
21
|
export declare function isBrandlabConformanceCliEntrypoint(moduleUrl: string, argvPath: string | undefined): boolean;
|
|
20
22
|
export {};
|
|
21
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
|
@@ -3,18 +3,25 @@ import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
|
3
3
|
import { dirname, isAbsolute, resolve } from "node:path";
|
|
4
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
|
}
|
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,YAAY,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAG9B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAG9B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAkBxE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;CAiBZ,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,IAAuB;IAClE,MAAM,MAAM,GAAe;QACzB,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;QACnB,iBAAiB,EAAE,IAAI;QACvB,oBAAoB,EAAE,EAAE;QACxB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;KACZ,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;YAC3C,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAChC,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAChD,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;YAC7C,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAC9B,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAC3D,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;YACjE,MAAM,CAAC,gBAAgB,GAAG,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,CAAC;aAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAC9D,MAAM,CAAC,aAAa,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACzD,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,GAAG,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,IAAuB,EACvB,KAAY;IACV,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;CAC/C;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB;YAC7C,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC9C,CAAC,CAAC,gCAAgC,CAC9B,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,gBAAgB,CACzB,CAAC;QACN,MAAM,mBAAmB,GAAG,OAAO,CAAC,iBAAiB;YACnD,CAAC,CAAC,wCAAwC,CACtC,OAAO,CAAC,iBAAiB,EACzB,aAAa,CACd;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,gBAAgB,GAAG;YACvB,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,mBAAmB;gBACtB,GAAG,OAAO,CAAC,oBAAoB;aAChC,CAAC;SACH;aACE,GAAG,CAAC,mBAAmB,CAAC;aACxB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACpB,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CACjE,CAAC;QACJ,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,gBAAgB,EACd,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YAC5D,aAAa;SACd,CAAC,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACxF,OAAO,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAmB;IAC5C,IAAI,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA0B,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,IAAY,EACZ,wBAAwC;IAExC,MAAM,eAAe,GACnB,wBAAwB,KAAK,SAAS;QACpC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC;QACrC,CAAC,CAAC,wBAAwB,CAAC;IAC/B,MAAM,gBAAgB,GAAG,gCAAgC,CAAC,GAAG,CAC3D,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CACpC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,OAAO,GACX,eAAe,IAAI,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3D,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,eAAe,CAAC;IAEtB,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,yBAAyB;QACtC,SAAS,EAAE,YAAY;QACvB,qBAAqB,EAAE,OAAO;QAC9B,wBAAwB,EAAE,OAAO;QACjC,uBAAuB,EAAE,OAAO;QAChC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC5B,QAAQ,EAAE;YACR,CAAC,OAAO,CAAC,EAAE;gBACT,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,6BAA6B,OAAO,EAAE;aACjD;SACF;QACD,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAY;IACjD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAIpD,CAAC;QACF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,GAAG,CAChD,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC;YACvC,WAAW,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC;YAC1C,IAAI,CACP,CAAC;QACF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAC3B,CAAC,OAAO,EAAqB,EAAE,CAC7B,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1B,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CACzB,CAAC;QACF,OAAO,KAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,MAAM;YACxD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE;YACX,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4B,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,SAAS,wCAAwC,CAC/C,iBAAgC,EAChC,aAAoC;IAEpC,IAAI,iBAAiB,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAChE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,CAC/B,CAAC;IACF,IACE,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC5B,OAAO,SAAS,KAAK,QAAQ;YAC7B,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,UAAU,CAAC,SAAS,CAAC;YACrB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CACzD,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC9C,OAAO,CAAC,aAAa,EAAE,SAAmB,CAAC,CAC5C,CAAC;QACF,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC;QAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,aAAa;YAAE,MAAM;QACpC,aAAa,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,6DAA6D,iBAAiB,GAAG,CAClF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAiC;IACrD,MAAM,KAAK,GAAG;QACZ,uBAAuB;QACvB,cAAc,MAAM,CAAC,gBAAgB,IAAI,WAAW,EAAE;QACtD,WAAW,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE;QAC3C,WAAW,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;QAC9C,gBAAgB,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;QAChE,cAAc,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;QAC5D,gBAAgB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;KACrD,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;YAAE,SAAS;QACvC,KAAK,CAAC,IAAI,CACR,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,QAAQ,aAAa,CACnG,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI;YAC3B,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;YAC/D,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CACR,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,QAAQ,KAAK,OAAO,CAAC,MAAM,EAAE,CACtH,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,OAAiD;IACtE,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,gBAAgB,OAAO,CAAC,QAAQ,gBAAgB,OAAO,CAAC,IAAI,OAAO,CAAC;AACnH,CAAC;AAED,SAAS,YAAY,CAAC,IAAuB,EAAE,KAAa,EAAE,QAAgB;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,oBAAoB,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,SAAiB,EACjB,QAA4B;IAE5B,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,OAAO,CAAC,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -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;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;AA+CX,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;QACnC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3C,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;
|
|
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;AA+CX,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;QACnC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3C,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;AAkjGD,sFAAsF;AACtF,wBAAgB,2CAA2C,CAAC,UAAU,EAAE,MAAM,UAe7E"}
|
|
@@ -215,7 +215,7 @@ const PROTECTED_LOCAL_PATTERNS = [
|
|
|
215
215
|
surface: "location-proof",
|
|
216
216
|
pattern: /\bfunction\s+getProofLevelFromAssetIds\s*\(/,
|
|
217
217
|
expected: "Programmatic proof levels are derived by @brandlab-digital/site-core/locations.",
|
|
218
|
-
remediation: "Remove the project-local proof classifier and
|
|
218
|
+
remediation: "Remove the project-local proof classifier and declare an explicit defineLocationRouteDecision result.",
|
|
219
219
|
},
|
|
220
220
|
{
|
|
221
221
|
ruleId: "brandlab-config-v3-hardcoded-search-demand",
|
|
@@ -1087,7 +1087,7 @@ function addImportContractIssues(root, config, usage, issues, contractVersion) {
|
|
|
1087
1087
|
requireStrictUsage({
|
|
1088
1088
|
moduleName: "@brandlab-digital/site-core/locations",
|
|
1089
1089
|
surface: "location-proof",
|
|
1090
|
-
exports: ["defineLocationRouteQuality"],
|
|
1090
|
+
exports: ["defineLocationRouteDecision", "defineLocationRouteQuality"],
|
|
1091
1091
|
}, usage, issues);
|
|
1092
1092
|
}
|
|
1093
1093
|
const contactEvidence = detectContactSurfaceEvidence(root, usage);
|
|
@@ -1114,16 +1114,30 @@ function addImportContractIssues(root, config, usage, issues, contractVersion) {
|
|
|
1114
1114
|
}));
|
|
1115
1115
|
}
|
|
1116
1116
|
if (contactRequired) {
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1117
|
+
requireAnyStrictUsage([
|
|
1118
|
+
{
|
|
1119
|
+
moduleName: "@brandlab-digital/site-next/contact/server",
|
|
1120
|
+
surface: "contact-production",
|
|
1121
|
+
exports: ["createBrandlabProductionContactRuntime"],
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
moduleName: "@brandlab-digital/site-next/contact/production",
|
|
1125
|
+
surface: "contact-production",
|
|
1126
|
+
exports: ["createBrandlabProductionContactRuntime"],
|
|
1127
|
+
},
|
|
1128
|
+
], usage, issues);
|
|
1129
|
+
requireAnyStrictUsage([
|
|
1130
|
+
{
|
|
1131
|
+
moduleName: "@brandlab-digital/site-next/contact",
|
|
1132
|
+
surface: "contact-client",
|
|
1133
|
+
exports: ["createContactHttpSubmissionController"],
|
|
1134
|
+
},
|
|
1135
|
+
{
|
|
1136
|
+
moduleName: "@brandlab-digital/site-next/contact/client",
|
|
1137
|
+
surface: "contact-client",
|
|
1138
|
+
exports: ["createContactHttpSubmissionController"],
|
|
1139
|
+
},
|
|
1140
|
+
], usage, issues);
|
|
1127
1141
|
}
|
|
1128
1142
|
if (config.capabilities.blogAdapter && config.capabilities.blogAdapter !== "none") {
|
|
1129
1143
|
const adapterExport = config.capabilities.blogAdapter === "mdx"
|
|
@@ -1242,7 +1256,8 @@ function detectNextPackageBackedEvidence(root, usage) {
|
|
|
1242
1256
|
function detectContactSurfaceEvidence(root, usage) {
|
|
1243
1257
|
const evidence = new Set();
|
|
1244
1258
|
for (const moduleName of usage.imports) {
|
|
1245
|
-
if (moduleName
|
|
1259
|
+
if (moduleName === "@brandlab-digital/site-next/contact" ||
|
|
1260
|
+
moduleName.startsWith("@brandlab-digital/site-next/contact/")) {
|
|
1246
1261
|
evidence.add(`shared contact import ${moduleName}`);
|
|
1247
1262
|
}
|
|
1248
1263
|
}
|
|
@@ -1326,6 +1341,13 @@ function requireStrictUsage(requirement, usage, issues) {
|
|
|
1326
1341
|
}));
|
|
1327
1342
|
}
|
|
1328
1343
|
}
|
|
1344
|
+
function requireAnyStrictUsage(requirements, usage, issues) {
|
|
1345
|
+
const selected = requirements.find((requirement) => usage.imports.has(requirement.moduleName)) ??
|
|
1346
|
+
requirements[0];
|
|
1347
|
+
if (!selected)
|
|
1348
|
+
return;
|
|
1349
|
+
requireStrictUsage(selected, usage, issues);
|
|
1350
|
+
}
|
|
1329
1351
|
function frameworkOwnerExpectation(owner) {
|
|
1330
1352
|
if (owner === "metadata") {
|
|
1331
1353
|
return "The strict metadata builder reaches metadata or generateMetadata in an App Router page or layout entrypoint.";
|
|
@@ -1501,7 +1523,8 @@ function collectProjectImports(root, issues) {
|
|
|
1501
1523
|
return;
|
|
1502
1524
|
executableImports.add(binding.moduleName);
|
|
1503
1525
|
addExportUsage(executableExports, binding.moduleName, binding.exportName);
|
|
1504
|
-
const isSharedContactClientController = binding.moduleName === "@brandlab-digital/site-next/contact
|
|
1526
|
+
const isSharedContactClientController = (binding.moduleName === "@brandlab-digital/site-next/contact" ||
|
|
1527
|
+
binding.moduleName === "@brandlab-digital/site-next/contact/client") &&
|
|
1505
1528
|
binding.exportName === "createContactHttpSubmissionController";
|
|
1506
1529
|
if (isOutputOwned(node) ||
|
|
1507
1530
|
(isSharedContactClientController && isContactClientRuntimeOwned(node))) {
|