@brandlab-digital/conformance 0.1.0-alpha.5 → 0.1.0-alpha.7
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/vitest.d.ts +34 -0
- package/dist/vitest.d.ts.map +1 -1
- package/dist/vitest.js +154 -2
- package/dist/vitest.js.map +1 -1
- package/package.json +1 -1
package/dist/vitest.d.ts
CHANGED
|
@@ -28,6 +28,35 @@ export interface NpmDistTagIssue {
|
|
|
28
28
|
expectedVersion: string;
|
|
29
29
|
actualVersion: string | null;
|
|
30
30
|
}
|
|
31
|
+
export type BrandlabArchitectureProfile = 'dynamic-data-driven' | 'root-level-data-driven' | 'static-route-heavy-legacy';
|
|
32
|
+
export type BrandlabArchitectureStatus = 'standard' | 'legacy-exception';
|
|
33
|
+
export interface BrandlabArchitectureConfigLike {
|
|
34
|
+
profile?: string;
|
|
35
|
+
status?: string;
|
|
36
|
+
targetProfile?: string;
|
|
37
|
+
migrationRationale?: string;
|
|
38
|
+
staticRouteFileLimit?: number;
|
|
39
|
+
routeFamilies?: readonly unknown[];
|
|
40
|
+
contentOwnership?: {
|
|
41
|
+
routeFiles?: string;
|
|
42
|
+
pageData?: string;
|
|
43
|
+
componentCopy?: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface BrandlabArchitectureIssue {
|
|
47
|
+
code: string;
|
|
48
|
+
severity: 'error' | 'warning' | 'legacy-accepted';
|
|
49
|
+
detail: string;
|
|
50
|
+
path?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface BrandlabArchitectureReport {
|
|
53
|
+
profile: string | null;
|
|
54
|
+
status: string | null;
|
|
55
|
+
pageFileCount: number;
|
|
56
|
+
staticPageFileCount: number;
|
|
57
|
+
dynamicPageFileCount: number;
|
|
58
|
+
issues: BrandlabArchitectureIssue[];
|
|
59
|
+
}
|
|
31
60
|
export declare const BRANDLAB_FORBIDDEN_SOURCE_PATTERNS: readonly SourcePattern[];
|
|
32
61
|
export declare function scanTextFiles(options: {
|
|
33
62
|
roots: readonly string[];
|
|
@@ -50,4 +79,9 @@ export declare function evaluateNpmDistTags(options: {
|
|
|
50
79
|
export declare function isSearchCertificationFresh(evidence: {
|
|
51
80
|
evidenceRecordedAt?: string;
|
|
52
81
|
} | null | undefined, now?: number, maxAgeDays?: number): boolean;
|
|
82
|
+
export declare function evaluateBrandlabArchitecture(options: {
|
|
83
|
+
root: string;
|
|
84
|
+
architecture?: BrandlabArchitectureConfigLike | null;
|
|
85
|
+
largeRouteFileLineLimit?: number;
|
|
86
|
+
}): BrandlabArchitectureReport;
|
|
53
87
|
//# sourceMappingURL=vitest.d.ts.map
|
package/dist/vitest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../src/vitest.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAA;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;
|
|
1
|
+
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../src/vitest.ts"],"names":[],"mappings":"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"}
|
package/dist/vitest.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readFileSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { basename, join, relative } from 'node:path';
|
|
3
3
|
const DEFAULT_EXTENSIONS = new Set([
|
|
4
4
|
'.ts',
|
|
5
5
|
'.tsx',
|
|
@@ -10,6 +10,15 @@ const DEFAULT_EXTENSIONS = new Set([
|
|
|
10
10
|
'.json',
|
|
11
11
|
]);
|
|
12
12
|
const DEFAULT_IGNORED_DIRS = new Set(['node_modules', '.next', 'dist', 'coverage']);
|
|
13
|
+
const ARCHITECTURE_PROFILES = new Set([
|
|
14
|
+
'dynamic-data-driven',
|
|
15
|
+
'root-level-data-driven',
|
|
16
|
+
'static-route-heavy-legacy',
|
|
17
|
+
]);
|
|
18
|
+
const ARCHITECTURE_STATUSES = new Set(['standard', 'legacy-exception']);
|
|
19
|
+
const DEFAULT_STATIC_ROUTE_FILE_LIMIT = 50;
|
|
20
|
+
const DEFAULT_LARGE_ROUTE_FILE_LINE_LIMIT = 220;
|
|
21
|
+
const CONTENT_ARRAY_PATTERN = /\b(?:const|let|var)\s+(?:faqs|faqItems|testimonials|serviceFeatures|advantages|processSteps|featuredServices|locationHighlights)\s*=\s*\[/m;
|
|
13
22
|
export const BRANDLAB_FORBIDDEN_SOURCE_PATTERNS = [
|
|
14
23
|
{
|
|
15
24
|
name: 'legacy analytics event',
|
|
@@ -47,6 +56,29 @@ function walkFiles(root, files = []) {
|
|
|
47
56
|
}
|
|
48
57
|
return files;
|
|
49
58
|
}
|
|
59
|
+
function walkAllFiles(root, files = []) {
|
|
60
|
+
if (!existsSync(root))
|
|
61
|
+
return files;
|
|
62
|
+
for (const entry of readdirSync(root)) {
|
|
63
|
+
if (DEFAULT_IGNORED_DIRS.has(entry))
|
|
64
|
+
continue;
|
|
65
|
+
const path = join(root, entry);
|
|
66
|
+
const stats = statSync(path);
|
|
67
|
+
if (stats.isDirectory()) {
|
|
68
|
+
walkAllFiles(path, files);
|
|
69
|
+
}
|
|
70
|
+
else if (stats.isFile()) {
|
|
71
|
+
files.push(path);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return files;
|
|
75
|
+
}
|
|
76
|
+
function appFamilyForPage(path) {
|
|
77
|
+
const withoutPrefix = path.replace(/^src\/app\//, '');
|
|
78
|
+
if (withoutPrefix === 'page.tsx')
|
|
79
|
+
return 'home';
|
|
80
|
+
return withoutPrefix.split('/')[0] ?? 'unknown';
|
|
81
|
+
}
|
|
50
82
|
export function scanTextFiles(options) {
|
|
51
83
|
return options.roots
|
|
52
84
|
.flatMap((root) => walkFiles(root))
|
|
@@ -124,4 +156,124 @@ export function isSearchCertificationFresh(evidence, now = Date.now(), maxAgeDay
|
|
|
124
156
|
return false;
|
|
125
157
|
return now - recordedAt <= maxAgeDays * 24 * 60 * 60 * 1000;
|
|
126
158
|
}
|
|
159
|
+
export function evaluateBrandlabArchitecture(options) {
|
|
160
|
+
const architecture = options.architecture ?? null;
|
|
161
|
+
const largeRouteFileLineLimit = options.largeRouteFileLineLimit ?? DEFAULT_LARGE_ROUTE_FILE_LINE_LIMIT;
|
|
162
|
+
const appRoot = join(options.root, 'src/app');
|
|
163
|
+
const pageFiles = walkAllFiles(appRoot)
|
|
164
|
+
.filter((path) => basename(path) === 'page.tsx')
|
|
165
|
+
.map((path) => relative(options.root, path).split(/[/\\]/).join('/'))
|
|
166
|
+
.sort();
|
|
167
|
+
const issues = [];
|
|
168
|
+
if (!architecture) {
|
|
169
|
+
issues.push({
|
|
170
|
+
severity: 'error',
|
|
171
|
+
code: 'brandlab-architecture-config-missing',
|
|
172
|
+
detail: 'brandlab.config.ts is missing the architecture contract.',
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
if (!ARCHITECTURE_PROFILES.has(architecture.profile ?? '')) {
|
|
177
|
+
issues.push({
|
|
178
|
+
severity: 'error',
|
|
179
|
+
code: 'brandlab-architecture-profile',
|
|
180
|
+
detail: `Invalid architecture profile: ${architecture.profile ?? 'missing'}.`,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (!ARCHITECTURE_STATUSES.has(architecture.status ?? '')) {
|
|
184
|
+
issues.push({
|
|
185
|
+
severity: 'error',
|
|
186
|
+
code: 'brandlab-architecture-status',
|
|
187
|
+
detail: `Invalid architecture status: ${architecture.status ?? 'missing'}.`,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
if (architecture.status === 'standard' && architecture.profile === 'static-route-heavy-legacy') {
|
|
191
|
+
issues.push({
|
|
192
|
+
severity: 'error',
|
|
193
|
+
code: 'brandlab-architecture-static-standard',
|
|
194
|
+
detail: 'static-route-heavy-legacy cannot be marked as standard.',
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (architecture.status === 'legacy-exception' &&
|
|
198
|
+
(!architecture.targetProfile ||
|
|
199
|
+
architecture.targetProfile === architecture.profile ||
|
|
200
|
+
!ARCHITECTURE_PROFILES.has(architecture.targetProfile))) {
|
|
201
|
+
issues.push({
|
|
202
|
+
severity: 'error',
|
|
203
|
+
code: 'brandlab-architecture-target-profile',
|
|
204
|
+
detail: 'Legacy architecture exceptions must declare a different valid targetProfile.',
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
if (architecture.status === 'legacy-exception' &&
|
|
208
|
+
(!architecture.migrationRationale || architecture.migrationRationale.length < 20)) {
|
|
209
|
+
issues.push({
|
|
210
|
+
severity: 'error',
|
|
211
|
+
code: 'brandlab-architecture-migration-rationale',
|
|
212
|
+
detail: 'Legacy architecture exceptions must explain why the exception exists.',
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
if (!architecture.routeFamilies || architecture.routeFamilies.length === 0) {
|
|
216
|
+
issues.push({
|
|
217
|
+
severity: 'error',
|
|
218
|
+
code: 'brandlab-architecture-route-families',
|
|
219
|
+
detail: 'Architecture contract is missing route-family declarations.',
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
if (architecture.contentOwnership?.routeFiles !== 'thin' ||
|
|
223
|
+
architecture.contentOwnership?.pageData !== 'src/data' ||
|
|
224
|
+
architecture.contentOwnership?.componentCopy !== 'data-props') {
|
|
225
|
+
issues.push({
|
|
226
|
+
severity: 'error',
|
|
227
|
+
code: 'brandlab-architecture-content-ownership',
|
|
228
|
+
detail: 'Architecture contract must declare thin routes, src/data page ownership, and data-prop component copy.',
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const familyCounts = new Map();
|
|
233
|
+
for (const filePath of pageFiles) {
|
|
234
|
+
const family = appFamilyForPage(filePath);
|
|
235
|
+
const current = familyCounts.get(family) ?? { staticCount: 0, dynamicCount: 0 };
|
|
236
|
+
if (filePath.includes('['))
|
|
237
|
+
current.dynamicCount += 1;
|
|
238
|
+
else
|
|
239
|
+
current.staticCount += 1;
|
|
240
|
+
familyCounts.set(family, current);
|
|
241
|
+
const source = readFileSync(join(options.root, filePath), 'utf8');
|
|
242
|
+
const lineCount = source.split(/\r?\n/).length;
|
|
243
|
+
if (lineCount > largeRouteFileLineLimit && !source.includes('@/data/site/pages')) {
|
|
244
|
+
issues.push({
|
|
245
|
+
severity: architecture?.status === 'legacy-exception' ? 'legacy-accepted' : 'warning',
|
|
246
|
+
code: 'large-route-file',
|
|
247
|
+
detail: `Route file has ${lineCount} lines and appears to own page content instead of delegating to src/data/page models.`,
|
|
248
|
+
path: filePath,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
if (CONTENT_ARRAY_PATTERN.test(source)) {
|
|
252
|
+
issues.push({
|
|
253
|
+
severity: architecture?.status === 'legacy-exception' ? 'legacy-accepted' : 'warning',
|
|
254
|
+
code: 'embedded-route-content-array',
|
|
255
|
+
detail: 'Route file declares customer-facing FAQ, testimonial, feature, or process arrays instead of importing page data.',
|
|
256
|
+
path: filePath,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const staticRouteFileLimit = architecture?.staticRouteFileLimit ?? DEFAULT_STATIC_ROUTE_FILE_LIMIT;
|
|
261
|
+
for (const [family, counts] of familyCounts.entries()) {
|
|
262
|
+
if (counts.staticCount > staticRouteFileLimit && counts.dynamicCount === 0) {
|
|
263
|
+
issues.push({
|
|
264
|
+
severity: architecture?.status === 'legacy-exception' ? 'legacy-accepted' : 'error',
|
|
265
|
+
code: 'brandlab-architecture-static-heavy-family',
|
|
266
|
+
detail: `${family} has ${counts.staticCount} static route files and no dynamic route boundary.`,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
profile: architecture?.profile ?? null,
|
|
272
|
+
status: architecture?.status ?? null,
|
|
273
|
+
pageFileCount: pageFiles.length,
|
|
274
|
+
staticPageFileCount: pageFiles.filter((filePath) => !filePath.includes('[')).length,
|
|
275
|
+
dynamicPageFileCount: pageFiles.filter((filePath) => filePath.includes('[')).length,
|
|
276
|
+
issues,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
127
279
|
//# sourceMappingURL=vitest.js.map
|
package/dist/vitest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../src/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../src/vitest.ts"],"names":[],"mappings":"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"}
|