@empline/preflight 1.1.49 → 1.1.51
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/checks/react/nextjs-optimization.d.ts +42 -0
- package/dist/checks/react/nextjs-optimization.d.ts.map +1 -0
- package/dist/checks/react/nextjs-optimization.js +415 -0
- package/dist/checks/react/nextjs-optimization.js.map +1 -0
- package/dist/checks/react/turbopack-safe-expressions.d.ts +49 -0
- package/dist/checks/react/turbopack-safe-expressions.d.ts.map +1 -0
- package/dist/checks/react/turbopack-safe-expressions.js +450 -0
- package/dist/checks/react/turbopack-safe-expressions.js.map +1 -0
- package/dist/checks/react/vercel-react-best-practices.d.ts.map +1 -1
- package/dist/checks/react/vercel-react-best-practices.js +3 -2
- package/dist/checks/react/vercel-react-best-practices.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Preflight: Next.js Optimization
|
|
4
|
+
*
|
|
5
|
+
* Validates Next.js-specific optimization patterns:
|
|
6
|
+
* - Using next/image instead of <img> tags
|
|
7
|
+
* - Using next/link instead of <a> tags for internal navigation
|
|
8
|
+
* - Passive event listeners for scroll/touch/wheel events
|
|
9
|
+
* - RegExp creation inside render functions
|
|
10
|
+
*
|
|
11
|
+
* These optimizations improve Core Web Vitals and user experience.
|
|
12
|
+
*/
|
|
13
|
+
export declare const id = "react/nextjs-optimization";
|
|
14
|
+
export declare const name = "Next.js Optimization";
|
|
15
|
+
export declare const category = "react";
|
|
16
|
+
export declare const blocking = false;
|
|
17
|
+
export declare const description = "Validates Next.js image, link, and performance optimizations";
|
|
18
|
+
export declare const tags: string[];
|
|
19
|
+
export declare function run(): Promise<{
|
|
20
|
+
passed: boolean;
|
|
21
|
+
findings: any[];
|
|
22
|
+
duration: number;
|
|
23
|
+
metadata?: undefined;
|
|
24
|
+
} | {
|
|
25
|
+
passed: boolean;
|
|
26
|
+
findings: {
|
|
27
|
+
message: string;
|
|
28
|
+
level: string;
|
|
29
|
+
file: string;
|
|
30
|
+
line: number;
|
|
31
|
+
code: string;
|
|
32
|
+
suggestion: string;
|
|
33
|
+
}[];
|
|
34
|
+
duration: number;
|
|
35
|
+
metadata: {
|
|
36
|
+
filesScanned: number;
|
|
37
|
+
high: number;
|
|
38
|
+
medium: number;
|
|
39
|
+
low: number;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=nextjs-optimization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs-optimization.d.ts","sourceRoot":"","sources":["../../../src/checks/react/nextjs-optimization.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAQH,eAAO,MAAM,EAAE,8BAA8B,CAAC;AAC9C,eAAO,MAAM,IAAI,yBAAyB,CAAC;AAC3C,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,WAAW,iEAAiE,CAAC;AAC1F,eAAO,MAAM,IAAI,UAA+D,CAAC;AAkTjF,wBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;GAmHxB"}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Preflight: Next.js Optimization
|
|
5
|
+
*
|
|
6
|
+
* Validates Next.js-specific optimization patterns:
|
|
7
|
+
* - Using next/image instead of <img> tags
|
|
8
|
+
* - Using next/link instead of <a> tags for internal navigation
|
|
9
|
+
* - Passive event listeners for scroll/touch/wheel events
|
|
10
|
+
* - RegExp creation inside render functions
|
|
11
|
+
*
|
|
12
|
+
* These optimizations improve Core Web Vitals and user experience.
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
|
|
49
|
+
exports.run = run;
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const glob_1 = require("glob");
|
|
53
|
+
const console_chars_1 = require("../../utils/console-chars");
|
|
54
|
+
// Check metadata
|
|
55
|
+
exports.id = "react/nextjs-optimization";
|
|
56
|
+
exports.name = "Next.js Optimization";
|
|
57
|
+
exports.category = "react";
|
|
58
|
+
exports.blocking = false;
|
|
59
|
+
exports.description = "Validates Next.js image, link, and performance optimizations";
|
|
60
|
+
exports.tags = ["nextjs", "performance", "images", "links", "optimization"];
|
|
61
|
+
// =============================================================================
|
|
62
|
+
// CONFIGURATION
|
|
63
|
+
// =============================================================================
|
|
64
|
+
const FILE_PATTERNS = [
|
|
65
|
+
"app/**/*.{tsx,jsx}",
|
|
66
|
+
"src/**/*.{tsx,jsx}",
|
|
67
|
+
"pages/**/*.{tsx,jsx}",
|
|
68
|
+
"components/**/*.{tsx,jsx}",
|
|
69
|
+
];
|
|
70
|
+
const EXCLUDE_PATTERNS = [
|
|
71
|
+
"node_modules/**",
|
|
72
|
+
"**/*.test.{ts,tsx}",
|
|
73
|
+
"**/*.spec.{ts,tsx}",
|
|
74
|
+
"**/*.stories.{tsx}",
|
|
75
|
+
"**/*.d.ts",
|
|
76
|
+
".next/**",
|
|
77
|
+
"dist/**",
|
|
78
|
+
];
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// DETECTION FUNCTIONS
|
|
81
|
+
// =============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Detect <img> tags that should use next/image
|
|
84
|
+
*/
|
|
85
|
+
function detectImgTags(content, filePath) {
|
|
86
|
+
const findings = [];
|
|
87
|
+
const lines = content.split("\n");
|
|
88
|
+
// Check if this is a Next.js project (has next/image import available)
|
|
89
|
+
const isNextProject = content.includes("next/image") ||
|
|
90
|
+
fs.existsSync(path.join(process.cwd(), "next.config.js")) ||
|
|
91
|
+
fs.existsSync(path.join(process.cwd(), "next.config.ts")) ||
|
|
92
|
+
fs.existsSync(path.join(process.cwd(), "next.config.mjs"));
|
|
93
|
+
if (!isNextProject)
|
|
94
|
+
return findings;
|
|
95
|
+
// Skip if file already imports next/image
|
|
96
|
+
const hasNextImageImport = /import.*from\s+['"]next\/image['"]/.test(content);
|
|
97
|
+
for (let i = 0; i < lines.length; i++) {
|
|
98
|
+
const line = lines[i];
|
|
99
|
+
// Detect <img> tags (but not inside comments or strings describing them)
|
|
100
|
+
if (/<img\s+[^>]*src=/i.test(line)) {
|
|
101
|
+
// Skip if it's in a comment
|
|
102
|
+
if (line.trim().startsWith("//") || line.trim().startsWith("*"))
|
|
103
|
+
continue;
|
|
104
|
+
// Skip if it's clearly an external/data URL that can't use next/image
|
|
105
|
+
if (/src=["'](data:|blob:|javascript:)/.test(line))
|
|
106
|
+
continue;
|
|
107
|
+
findings.push({
|
|
108
|
+
file: filePath,
|
|
109
|
+
line: i + 1,
|
|
110
|
+
rule: "nextjs-image",
|
|
111
|
+
impact: "HIGH",
|
|
112
|
+
message: "<img> tag should use next/image for automatic optimization",
|
|
113
|
+
suggestion: hasNextImageImport
|
|
114
|
+
? "Replace <img> with <Image> component"
|
|
115
|
+
: "import Image from 'next/image' and replace <img> with <Image>",
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return findings;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Detect <a> tags for internal navigation that should use next/link
|
|
123
|
+
*/
|
|
124
|
+
function detectAnchorTags(content, filePath) {
|
|
125
|
+
const findings = [];
|
|
126
|
+
const lines = content.split("\n");
|
|
127
|
+
// Check if this is a Next.js project
|
|
128
|
+
const isNextProject = content.includes("next/link") ||
|
|
129
|
+
fs.existsSync(path.join(process.cwd(), "next.config.js")) ||
|
|
130
|
+
fs.existsSync(path.join(process.cwd(), "next.config.ts"));
|
|
131
|
+
if (!isNextProject)
|
|
132
|
+
return findings;
|
|
133
|
+
for (let i = 0; i < lines.length; i++) {
|
|
134
|
+
const line = lines[i];
|
|
135
|
+
// Detect <a href="/..."> internal links
|
|
136
|
+
if (/<a\s+[^>]*href=["']\/[^"']*["']/i.test(line)) {
|
|
137
|
+
// Skip if it's in a comment
|
|
138
|
+
if (line.trim().startsWith("//") || line.trim().startsWith("*"))
|
|
139
|
+
continue;
|
|
140
|
+
// Skip if it has target="_blank" (external behavior intended)
|
|
141
|
+
if (/target=["']_blank["']/.test(line))
|
|
142
|
+
continue;
|
|
143
|
+
// Skip if it has download attribute
|
|
144
|
+
if (/download[=\s>]/.test(line))
|
|
145
|
+
continue;
|
|
146
|
+
findings.push({
|
|
147
|
+
file: filePath,
|
|
148
|
+
line: i + 1,
|
|
149
|
+
rule: "nextjs-link",
|
|
150
|
+
impact: "MEDIUM",
|
|
151
|
+
message: "<a href='/...'> should use next/link for client-side navigation",
|
|
152
|
+
suggestion: "import Link from 'next/link' and wrap with <Link href='...'>",
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return findings;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Detect addEventListener without passive option for scroll/touch/wheel
|
|
160
|
+
*/
|
|
161
|
+
function detectNonPassiveListeners(content, filePath) {
|
|
162
|
+
const findings = [];
|
|
163
|
+
const lines = content.split("\n");
|
|
164
|
+
const passiveEvents = ["scroll", "touchstart", "touchmove", "wheel", "mousewheel"];
|
|
165
|
+
for (let i = 0; i < lines.length; i++) {
|
|
166
|
+
const line = lines[i];
|
|
167
|
+
for (const event of passiveEvents) {
|
|
168
|
+
// Match addEventListener('scroll', ...) without { passive: true }
|
|
169
|
+
const pattern = new RegExp(`addEventListener\\s*\\(\\s*["']${event}["']`);
|
|
170
|
+
if (pattern.test(line)) {
|
|
171
|
+
// Check if passive is specified in this or next few lines
|
|
172
|
+
const context = lines.slice(i, Math.min(i + 3, lines.length)).join(" ");
|
|
173
|
+
if (!context.includes("passive")) {
|
|
174
|
+
findings.push({
|
|
175
|
+
file: filePath,
|
|
176
|
+
line: i + 1,
|
|
177
|
+
rule: "passive-listener",
|
|
178
|
+
impact: "MEDIUM",
|
|
179
|
+
message: `'${event}' event listener should use { passive: true } for better scroll performance`,
|
|
180
|
+
suggestion: `addEventListener('${event}', handler, { passive: true })`,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return findings;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Detect new RegExp() inside component render functions
|
|
190
|
+
*/
|
|
191
|
+
function detectRegExpInRender(content, filePath) {
|
|
192
|
+
const findings = [];
|
|
193
|
+
const lines = content.split("\n");
|
|
194
|
+
// Track if we're inside a component function
|
|
195
|
+
let inComponent = false;
|
|
196
|
+
let braceDepth = 0;
|
|
197
|
+
let componentStartLine = 0;
|
|
198
|
+
for (let i = 0; i < lines.length; i++) {
|
|
199
|
+
const line = lines[i];
|
|
200
|
+
// Detect component function start
|
|
201
|
+
if (/^(?:export\s+)?(?:default\s+)?function\s+[A-Z]/.test(line) ||
|
|
202
|
+
/^(?:export\s+)?const\s+[A-Z]\w*\s*[=:]\s*(?:\([^)]*\)|[^=])*=>/.test(line)) {
|
|
203
|
+
inComponent = true;
|
|
204
|
+
componentStartLine = i;
|
|
205
|
+
braceDepth = 0;
|
|
206
|
+
}
|
|
207
|
+
if (inComponent) {
|
|
208
|
+
braceDepth += (line.match(/{/g) || []).length;
|
|
209
|
+
braceDepth -= (line.match(/}/g) || []).length;
|
|
210
|
+
// Detect new RegExp() inside component
|
|
211
|
+
if (/new\s+RegExp\s*\(/.test(line)) {
|
|
212
|
+
// Check if it's inside useMemo or useCallback
|
|
213
|
+
const recentLines = lines.slice(Math.max(0, i - 5), i + 1).join("\n");
|
|
214
|
+
if (!recentLines.includes("useMemo") && !recentLines.includes("useCallback")) {
|
|
215
|
+
findings.push({
|
|
216
|
+
file: filePath,
|
|
217
|
+
line: i + 1,
|
|
218
|
+
rule: "regexp-in-render",
|
|
219
|
+
impact: "MEDIUM",
|
|
220
|
+
message: "new RegExp() in render creates new instance every render",
|
|
221
|
+
suggestion: "Move RegExp to module scope or wrap in useMemo(() => new RegExp(...), [])",
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Component ended
|
|
226
|
+
if (braceDepth <= 0 && i > componentStartLine) {
|
|
227
|
+
inComponent = false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return findings;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Detect missing loading="lazy" on below-fold images
|
|
235
|
+
*/
|
|
236
|
+
function detectMissingLazyLoading(content, filePath) {
|
|
237
|
+
const findings = [];
|
|
238
|
+
const lines = content.split("\n");
|
|
239
|
+
// This is a heuristic - images not in hero/header sections should be lazy
|
|
240
|
+
let inHeroSection = false;
|
|
241
|
+
for (let i = 0; i < lines.length; i++) {
|
|
242
|
+
const line = lines[i];
|
|
243
|
+
// Track hero/header sections
|
|
244
|
+
if (/hero|header|banner|above-fold/i.test(line)) {
|
|
245
|
+
inHeroSection = true;
|
|
246
|
+
}
|
|
247
|
+
if (inHeroSection && /<\/(?:section|div|header)>/i.test(line)) {
|
|
248
|
+
inHeroSection = false;
|
|
249
|
+
}
|
|
250
|
+
// Check for images without loading attribute (native img, not next/image)
|
|
251
|
+
if (/<img\s+[^>]*src=/i.test(line) && !inHeroSection) {
|
|
252
|
+
if (!line.includes("loading=") && !line.includes("priority")) {
|
|
253
|
+
findings.push({
|
|
254
|
+
file: filePath,
|
|
255
|
+
line: i + 1,
|
|
256
|
+
rule: "lazy-loading",
|
|
257
|
+
impact: "LOW",
|
|
258
|
+
message: "Image may benefit from loading='lazy' for below-fold content",
|
|
259
|
+
suggestion: "Add loading='lazy' to defer loading until image is near viewport",
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return findings;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Detect missing preconnect for external domains
|
|
268
|
+
*/
|
|
269
|
+
function detectMissingPreconnect(content, filePath) {
|
|
270
|
+
const findings = [];
|
|
271
|
+
// Only check layout/page files that might have <head>
|
|
272
|
+
if (!filePath.includes("layout") && !filePath.includes("_app") && !filePath.includes("_document")) {
|
|
273
|
+
return findings;
|
|
274
|
+
}
|
|
275
|
+
// Common CDNs that should have preconnect
|
|
276
|
+
const commonCDNs = [
|
|
277
|
+
{ domain: "fonts.googleapis.com", preconnect: "fonts.gstatic.com" },
|
|
278
|
+
{ domain: "cdn.jsdelivr.net", preconnect: "cdn.jsdelivr.net" },
|
|
279
|
+
{ domain: "unpkg.com", preconnect: "unpkg.com" },
|
|
280
|
+
];
|
|
281
|
+
for (const cdn of commonCDNs) {
|
|
282
|
+
if (content.includes(cdn.domain)) {
|
|
283
|
+
if (!content.includes(`rel="preconnect"`) || !content.includes(cdn.preconnect)) {
|
|
284
|
+
const lines = content.split("\n");
|
|
285
|
+
for (let i = 0; i < lines.length; i++) {
|
|
286
|
+
if (lines[i].includes(cdn.domain)) {
|
|
287
|
+
findings.push({
|
|
288
|
+
file: filePath,
|
|
289
|
+
line: i + 1,
|
|
290
|
+
rule: "preconnect",
|
|
291
|
+
impact: "LOW",
|
|
292
|
+
message: `Add preconnect for ${cdn.domain} to reduce connection latency`,
|
|
293
|
+
suggestion: `<link rel="preconnect" href="https://${cdn.preconnect}" />`,
|
|
294
|
+
});
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return findings;
|
|
302
|
+
}
|
|
303
|
+
// =============================================================================
|
|
304
|
+
// MAIN
|
|
305
|
+
// =============================================================================
|
|
306
|
+
function createDivider(length) {
|
|
307
|
+
return "═".repeat(length);
|
|
308
|
+
}
|
|
309
|
+
async function run() {
|
|
310
|
+
const startTime = Date.now();
|
|
311
|
+
const allFindings = [];
|
|
312
|
+
console.log(`\n${console_chars_1.emoji.rocket} NEXT.JS OPTIMIZATION CHECK`);
|
|
313
|
+
console.log(createDivider(65));
|
|
314
|
+
// Find all files
|
|
315
|
+
const allFiles = [];
|
|
316
|
+
for (const pattern of FILE_PATTERNS) {
|
|
317
|
+
const matches = await (0, glob_1.glob)(pattern, {
|
|
318
|
+
cwd: process.cwd(),
|
|
319
|
+
ignore: EXCLUDE_PATTERNS,
|
|
320
|
+
});
|
|
321
|
+
allFiles.push(...matches);
|
|
322
|
+
}
|
|
323
|
+
const uniqueFiles = [...new Set(allFiles)];
|
|
324
|
+
if (uniqueFiles.length === 0) {
|
|
325
|
+
console.log(`${console_chars_1.emoji.skip} No React/JSX files found`);
|
|
326
|
+
return {
|
|
327
|
+
passed: true,
|
|
328
|
+
findings: [],
|
|
329
|
+
duration: Date.now() - startTime,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
console.log(`\n${console_chars_1.emoji.search} Scanning ${uniqueFiles.length} files...`);
|
|
333
|
+
// Analyze each file
|
|
334
|
+
for (const relativePath of uniqueFiles) {
|
|
335
|
+
const filePath = path.join(process.cwd(), relativePath);
|
|
336
|
+
if (!fs.existsSync(filePath))
|
|
337
|
+
continue;
|
|
338
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
339
|
+
allFindings.push(...detectImgTags(content, relativePath));
|
|
340
|
+
allFindings.push(...detectAnchorTags(content, relativePath));
|
|
341
|
+
allFindings.push(...detectNonPassiveListeners(content, relativePath));
|
|
342
|
+
allFindings.push(...detectRegExpInRender(content, relativePath));
|
|
343
|
+
allFindings.push(...detectMissingLazyLoading(content, relativePath));
|
|
344
|
+
allFindings.push(...detectMissingPreconnect(content, relativePath));
|
|
345
|
+
}
|
|
346
|
+
// Group by impact
|
|
347
|
+
const high = allFindings.filter((f) => f.impact === "HIGH");
|
|
348
|
+
const medium = allFindings.filter((f) => f.impact === "MEDIUM");
|
|
349
|
+
const low = allFindings.filter((f) => f.impact === "LOW");
|
|
350
|
+
// Summary
|
|
351
|
+
console.log(`\n${console_chars_1.emoji.chart} Summary:`);
|
|
352
|
+
console.log(` Files scanned: ${uniqueFiles.length}`);
|
|
353
|
+
console.log(` HIGH: ${high.length}`);
|
|
354
|
+
console.log(` MEDIUM: ${medium.length}`);
|
|
355
|
+
console.log(` LOW: ${low.length}`);
|
|
356
|
+
if (allFindings.length === 0) {
|
|
357
|
+
console.log(`\n${console_chars_1.emoji.success} NEXT.JS OPTIMIZATION CHECK PASSED`);
|
|
358
|
+
console.log(`\nAll Next.js optimizations are in place.`);
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
// Show high impact findings
|
|
362
|
+
if (high.length > 0) {
|
|
363
|
+
console.log(`\n${console_chars_1.emoji.error} HIGH Impact Issues:`);
|
|
364
|
+
for (const f of high.slice(0, 10)) {
|
|
365
|
+
console.log(`\n ${f.file}:${f.line}`);
|
|
366
|
+
console.log(` Rule: ${f.rule}`);
|
|
367
|
+
console.log(` Issue: ${f.message}`);
|
|
368
|
+
console.log(` Fix: ${f.suggestion}`);
|
|
369
|
+
}
|
|
370
|
+
if (high.length > 10) {
|
|
371
|
+
console.log(`\n ... and ${high.length - 10} more`);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// Show some medium findings
|
|
375
|
+
if (medium.length > 0) {
|
|
376
|
+
console.log(`\n${console_chars_1.emoji.warning} MEDIUM Impact Issues (${medium.length}):`);
|
|
377
|
+
for (const f of medium.slice(0, 5)) {
|
|
378
|
+
console.log(` ${f.file}:${f.line} [${f.rule}] ${f.message}`);
|
|
379
|
+
}
|
|
380
|
+
if (medium.length > 5) {
|
|
381
|
+
console.log(` ... and ${medium.length - 5} more`);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
console.log(`\n${console_chars_1.emoji.info} Why these matter:`);
|
|
385
|
+
console.log(` • next/image: Automatic WebP/AVIF, lazy loading, prevents CLS`);
|
|
386
|
+
console.log(` • next/link: Client-side navigation, prefetching, faster transitions`);
|
|
387
|
+
console.log(` • Passive listeners: Prevents scroll jank on mobile`);
|
|
388
|
+
console.log(` • RegExp in render: Unnecessary object creation every render`);
|
|
389
|
+
const status = high.length > 0 ? "NEEDS ATTENTION" : "PASSED WITH SUGGESTIONS";
|
|
390
|
+
console.log(`\n${high.length > 0 ? console_chars_1.emoji.warning : console_chars_1.emoji.success} NEXT.JS OPTIMIZATION ${status}`);
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
passed: high.length === 0,
|
|
394
|
+
findings: allFindings.map((f) => ({
|
|
395
|
+
message: `[${f.rule}] ${f.message}`,
|
|
396
|
+
level: f.impact === "HIGH" ? "error" : "warning",
|
|
397
|
+
file: f.file,
|
|
398
|
+
line: f.line,
|
|
399
|
+
code: `nextjs-${f.rule}`,
|
|
400
|
+
suggestion: f.suggestion,
|
|
401
|
+
})),
|
|
402
|
+
duration: Date.now() - startTime,
|
|
403
|
+
metadata: {
|
|
404
|
+
filesScanned: uniqueFiles.length,
|
|
405
|
+
high: high.length,
|
|
406
|
+
medium: medium.length,
|
|
407
|
+
low: low.length,
|
|
408
|
+
},
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
// Standalone execution
|
|
412
|
+
if (require.main === module) {
|
|
413
|
+
run().then((result) => process.exit(result.passed ? 0 : 1));
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=nextjs-optimization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs-optimization.js","sourceRoot":"","sources":["../../../src/checks/react/nextjs-optimization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Preflight: Turbopack Safe Expressions
|
|
4
|
+
*
|
|
5
|
+
* Detects JavaScript expression patterns in JSX that can cause runtime errors
|
|
6
|
+
* when compiled by Turbopack (Next.js 13+). These patterns often result in
|
|
7
|
+
* cryptic "_ref is not defined" or similar errors.
|
|
8
|
+
*
|
|
9
|
+
* Known problematic patterns:
|
|
10
|
+
* 1. Nested optional chaining in template literals: ${a?.b?.c}
|
|
11
|
+
* 2. Optional chaining + nullish coalescing in JSX: ${a?.b ?? c}
|
|
12
|
+
* 3. Complex computed property access: obj[a?.b]
|
|
13
|
+
* 4. Optional chaining in function calls within JSX: ${fn(a?.b)}
|
|
14
|
+
*
|
|
15
|
+
* These patterns compile to temporary _ref variables that can become
|
|
16
|
+
* undefined in edge cases, causing runtime ReferenceErrors.
|
|
17
|
+
*
|
|
18
|
+
* BLOCKING: These cause runtime crashes that are hard to debug
|
|
19
|
+
*/
|
|
20
|
+
export declare const id = "react/turbopack-safe-expressions";
|
|
21
|
+
export declare const name = "Turbopack Safe Expressions";
|
|
22
|
+
export declare const category = "react";
|
|
23
|
+
export declare const blocking = true;
|
|
24
|
+
export declare const description = "Detects JSX expression patterns that cause Turbopack runtime errors";
|
|
25
|
+
export declare const tags: string[];
|
|
26
|
+
export declare function run(): Promise<{
|
|
27
|
+
passed: boolean;
|
|
28
|
+
findings: any[];
|
|
29
|
+
duration: number;
|
|
30
|
+
metadata?: undefined;
|
|
31
|
+
} | {
|
|
32
|
+
passed: boolean;
|
|
33
|
+
findings: {
|
|
34
|
+
message: string;
|
|
35
|
+
level: "error" | "warning";
|
|
36
|
+
file: string;
|
|
37
|
+
line: number;
|
|
38
|
+
code: string;
|
|
39
|
+
suggestion: string;
|
|
40
|
+
}[];
|
|
41
|
+
duration: number;
|
|
42
|
+
metadata: {
|
|
43
|
+
filesScanned: number;
|
|
44
|
+
errors: number;
|
|
45
|
+
warnings: number;
|
|
46
|
+
byRule: Record<string, number>;
|
|
47
|
+
};
|
|
48
|
+
}>;
|
|
49
|
+
//# sourceMappingURL=turbopack-safe-expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turbopack-safe-expressions.d.ts","sourceRoot":"","sources":["../../../src/checks/react/turbopack-safe-expressions.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAQH,eAAO,MAAM,EAAE,qCAAqC,CAAC;AACrD,eAAO,MAAM,IAAI,+BAA+B,CAAC;AACjD,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,wEAAwE,CAAC;AACjG,eAAO,MAAM,IAAI,UAAqE,CAAC;AAkUvF,wBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;GA+IxB"}
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Preflight: Turbopack Safe Expressions
|
|
5
|
+
*
|
|
6
|
+
* Detects JavaScript expression patterns in JSX that can cause runtime errors
|
|
7
|
+
* when compiled by Turbopack (Next.js 13+). These patterns often result in
|
|
8
|
+
* cryptic "_ref is not defined" or similar errors.
|
|
9
|
+
*
|
|
10
|
+
* Known problematic patterns:
|
|
11
|
+
* 1. Nested optional chaining in template literals: ${a?.b?.c}
|
|
12
|
+
* 2. Optional chaining + nullish coalescing in JSX: ${a?.b ?? c}
|
|
13
|
+
* 3. Complex computed property access: obj[a?.b]
|
|
14
|
+
* 4. Optional chaining in function calls within JSX: ${fn(a?.b)}
|
|
15
|
+
*
|
|
16
|
+
* These patterns compile to temporary _ref variables that can become
|
|
17
|
+
* undefined in edge cases, causing runtime ReferenceErrors.
|
|
18
|
+
*
|
|
19
|
+
* BLOCKING: These cause runtime crashes that are hard to debug
|
|
20
|
+
*/
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
33
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
34
|
+
}) : function(o, v) {
|
|
35
|
+
o["default"] = v;
|
|
36
|
+
});
|
|
37
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
38
|
+
var ownKeys = function(o) {
|
|
39
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40
|
+
var ar = [];
|
|
41
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
return ownKeys(o);
|
|
45
|
+
};
|
|
46
|
+
return function (mod) {
|
|
47
|
+
if (mod && mod.__esModule) return mod;
|
|
48
|
+
var result = {};
|
|
49
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
50
|
+
__setModuleDefault(result, mod);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
|
|
56
|
+
exports.run = run;
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
const path = __importStar(require("path"));
|
|
59
|
+
const glob_1 = require("glob");
|
|
60
|
+
const console_chars_1 = require("../../utils/console-chars");
|
|
61
|
+
// Check metadata
|
|
62
|
+
exports.id = "react/turbopack-safe-expressions";
|
|
63
|
+
exports.name = "Turbopack Safe Expressions";
|
|
64
|
+
exports.category = "react";
|
|
65
|
+
exports.blocking = true;
|
|
66
|
+
exports.description = "Detects JSX expression patterns that cause Turbopack runtime errors";
|
|
67
|
+
exports.tags = ["turbopack", "nextjs", "runtime", "optional-chaining", "bundler"];
|
|
68
|
+
// =============================================================================
|
|
69
|
+
// CONFIGURATION
|
|
70
|
+
// =============================================================================
|
|
71
|
+
const FILE_PATTERNS = [
|
|
72
|
+
"app/**/*.{tsx,jsx}",
|
|
73
|
+
"src/**/*.{tsx,jsx}",
|
|
74
|
+
"pages/**/*.{tsx,jsx}",
|
|
75
|
+
"components/**/*.{tsx,jsx}",
|
|
76
|
+
];
|
|
77
|
+
const EXCLUDE_PATTERNS = [
|
|
78
|
+
"node_modules/**",
|
|
79
|
+
"**/*.test.{ts,tsx}",
|
|
80
|
+
"**/*.spec.{ts,tsx}",
|
|
81
|
+
"**/*.stories.{tsx}",
|
|
82
|
+
"**/*.d.ts",
|
|
83
|
+
".next/**",
|
|
84
|
+
"dist/**",
|
|
85
|
+
];
|
|
86
|
+
// =============================================================================
|
|
87
|
+
// DETECTION PATTERNS
|
|
88
|
+
// =============================================================================
|
|
89
|
+
/**
|
|
90
|
+
* Detect nested optional chaining in template literals within JSX
|
|
91
|
+
* Pattern: ${a?.b?.c} or ${a?.b?.c?.d}
|
|
92
|
+
*/
|
|
93
|
+
function detectNestedOptionalChaining(content, filePath) {
|
|
94
|
+
const findings = [];
|
|
95
|
+
const lines = content.split("\n");
|
|
96
|
+
// Track if we're in JSX context
|
|
97
|
+
let inJSX = false;
|
|
98
|
+
let jsxDepth = 0;
|
|
99
|
+
for (let i = 0; i < lines.length; i++) {
|
|
100
|
+
const line = lines[i];
|
|
101
|
+
// Simple JSX detection (not perfect but catches most cases)
|
|
102
|
+
const jsxOpens = (line.match(/<[A-Z][a-zA-Z]*|<[a-z]+\s/g) || []).length;
|
|
103
|
+
const jsxCloses = (line.match(/\/>/g) || []).length + (line.match(/<\/[a-zA-Z]+>/g) || []).length;
|
|
104
|
+
jsxDepth += jsxOpens - jsxCloses;
|
|
105
|
+
inJSX = jsxDepth > 0 || jsxOpens > 0;
|
|
106
|
+
// Look for template literals with nested optional chaining
|
|
107
|
+
// Pattern: `...${something?.nested?.property}...`
|
|
108
|
+
const templateMatches = line.matchAll(/\$\{([^}]+)\}/g);
|
|
109
|
+
for (const match of templateMatches) {
|
|
110
|
+
const expression = match[1];
|
|
111
|
+
const columnIndex = match.index || 0;
|
|
112
|
+
// Count optional chaining operators
|
|
113
|
+
const optionalChainCount = (expression.match(/\?\./g) || []).length;
|
|
114
|
+
if (optionalChainCount >= 2) {
|
|
115
|
+
// Nested optional chaining detected
|
|
116
|
+
findings.push({
|
|
117
|
+
file: filePath,
|
|
118
|
+
line: i + 1,
|
|
119
|
+
column: columnIndex,
|
|
120
|
+
rule: "turbopack-nested-optional",
|
|
121
|
+
severity: "error",
|
|
122
|
+
message: `Nested optional chaining in template literal can cause "_ref is not defined" runtime error`,
|
|
123
|
+
code: expression.trim(),
|
|
124
|
+
suggestion: `Extract to variable: const value = ${expression.trim()}; then use \${value}`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// Check for optional chaining + nullish coalescing
|
|
128
|
+
if (expression.includes("?.") && expression.includes("??")) {
|
|
129
|
+
findings.push({
|
|
130
|
+
file: filePath,
|
|
131
|
+
line: i + 1,
|
|
132
|
+
column: columnIndex,
|
|
133
|
+
rule: "turbopack-optional-nullish",
|
|
134
|
+
severity: "error",
|
|
135
|
+
message: `Optional chaining with nullish coalescing in template literal can cause Turbopack runtime errors`,
|
|
136
|
+
code: expression.trim(),
|
|
137
|
+
suggestion: `Extract to variable: const value = ${expression.trim()}; then use \${value}`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return findings;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Detect optional chaining in JSX attribute values (non-template)
|
|
146
|
+
* Pattern: prop={a?.b?.c ?? d}
|
|
147
|
+
*/
|
|
148
|
+
function detectOptionalChainingInJSXProps(content, filePath) {
|
|
149
|
+
const findings = [];
|
|
150
|
+
const lines = content.split("\n");
|
|
151
|
+
for (let i = 0; i < lines.length; i++) {
|
|
152
|
+
const line = lines[i];
|
|
153
|
+
// Match JSX prop assignments with complex expressions
|
|
154
|
+
// Pattern: propName={expression}
|
|
155
|
+
const propMatches = line.matchAll(/(\w+)=\{([^}]+)\}/g);
|
|
156
|
+
for (const match of propMatches) {
|
|
157
|
+
const propName = match[1];
|
|
158
|
+
const expression = match[2];
|
|
159
|
+
const columnIndex = match.index || 0;
|
|
160
|
+
// Skip simple expressions
|
|
161
|
+
if (!expression.includes("?."))
|
|
162
|
+
continue;
|
|
163
|
+
// Check for nested optional chaining with nullish coalescing
|
|
164
|
+
const hasNestedOptional = (expression.match(/\?\./g) || []).length >= 2;
|
|
165
|
+
const hasNullishCoalescing = expression.includes("??");
|
|
166
|
+
if (hasNestedOptional && hasNullishCoalescing) {
|
|
167
|
+
findings.push({
|
|
168
|
+
file: filePath,
|
|
169
|
+
line: i + 1,
|
|
170
|
+
column: columnIndex,
|
|
171
|
+
rule: "turbopack-complex-prop",
|
|
172
|
+
severity: "error",
|
|
173
|
+
message: `Complex expression in JSX prop "${propName}" can cause Turbopack runtime errors`,
|
|
174
|
+
code: expression.trim(),
|
|
175
|
+
suggestion: `Extract to variable above JSX: const ${propName}Value = ${expression.trim()};`,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
// Check for optional chaining in computed property access
|
|
179
|
+
if (/\[[^\]]*\?\.[^\]]*\]/.test(expression)) {
|
|
180
|
+
findings.push({
|
|
181
|
+
file: filePath,
|
|
182
|
+
line: i + 1,
|
|
183
|
+
column: columnIndex,
|
|
184
|
+
rule: "turbopack-computed-optional",
|
|
185
|
+
severity: "error",
|
|
186
|
+
message: `Optional chaining in computed property access can cause runtime errors`,
|
|
187
|
+
code: expression.trim(),
|
|
188
|
+
suggestion: `Extract the optional chain: const key = a?.b; then use obj[key]`,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return findings;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Detect optional chaining in callback arguments within JSX
|
|
197
|
+
* Pattern: onClick={() => fn(a?.b?.c)}
|
|
198
|
+
*/
|
|
199
|
+
function detectOptionalChainingInCallbacks(content, filePath) {
|
|
200
|
+
const findings = [];
|
|
201
|
+
const lines = content.split("\n");
|
|
202
|
+
for (let i = 0; i < lines.length; i++) {
|
|
203
|
+
const line = lines[i];
|
|
204
|
+
// Match arrow functions in JSX with function calls containing optional chaining
|
|
205
|
+
// Pattern: () => fn(a?.b?.c) or (e) => fn(e, a?.b?.c)
|
|
206
|
+
const callbackMatches = line.matchAll(/=>\s*\w+\(([^)]+)\)/g);
|
|
207
|
+
for (const match of callbackMatches) {
|
|
208
|
+
const args = match[1];
|
|
209
|
+
const columnIndex = match.index || 0;
|
|
210
|
+
// Check for nested optional chaining in function arguments
|
|
211
|
+
const optionalChainCount = (args.match(/\?\./g) || []).length;
|
|
212
|
+
if (optionalChainCount >= 2) {
|
|
213
|
+
findings.push({
|
|
214
|
+
file: filePath,
|
|
215
|
+
line: i + 1,
|
|
216
|
+
column: columnIndex,
|
|
217
|
+
rule: "turbopack-callback-optional",
|
|
218
|
+
severity: "warning",
|
|
219
|
+
message: `Nested optional chaining in callback argument may cause issues`,
|
|
220
|
+
code: args.trim(),
|
|
221
|
+
suggestion: `Extract to variable inside callback: const value = ${args.split(",")[0].trim()}; fn(value)`,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return findings;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Detect spread with optional chaining in JSX
|
|
230
|
+
* Pattern: {...obj?.nested?.props}
|
|
231
|
+
*/
|
|
232
|
+
function detectOptionalSpread(content, filePath) {
|
|
233
|
+
const findings = [];
|
|
234
|
+
const lines = content.split("\n");
|
|
235
|
+
for (let i = 0; i < lines.length; i++) {
|
|
236
|
+
const line = lines[i];
|
|
237
|
+
// Match spread with optional chaining
|
|
238
|
+
const spreadMatches = line.matchAll(/\{\s*\.\.\.([^}]+\?\.[^}]+)\}/g);
|
|
239
|
+
for (const match of spreadMatches) {
|
|
240
|
+
const expression = match[1];
|
|
241
|
+
const columnIndex = match.index || 0;
|
|
242
|
+
if ((expression.match(/\?\./g) || []).length >= 1) {
|
|
243
|
+
findings.push({
|
|
244
|
+
file: filePath,
|
|
245
|
+
line: i + 1,
|
|
246
|
+
column: columnIndex,
|
|
247
|
+
rule: "turbopack-optional-spread",
|
|
248
|
+
severity: "error",
|
|
249
|
+
message: `Spread with optional chaining can cause runtime errors when undefined`,
|
|
250
|
+
code: `{...${expression.trim()}}`,
|
|
251
|
+
suggestion: `Use conditional: {...(obj?.nested?.props ?? {})} or extract: const props = obj?.nested?.props ?? {}; {...props}`,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return findings;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Detect chained method calls with optional chaining
|
|
260
|
+
* Pattern: ${arr?.filter(...)?.map(...)}
|
|
261
|
+
*/
|
|
262
|
+
function detectChainedMethodsWithOptional(content, filePath) {
|
|
263
|
+
const findings = [];
|
|
264
|
+
const lines = content.split("\n");
|
|
265
|
+
for (let i = 0; i < lines.length; i++) {
|
|
266
|
+
const line = lines[i];
|
|
267
|
+
// Match template literals containing chained optional method calls
|
|
268
|
+
const templateMatches = line.matchAll(/\$\{([^}]*\?\.\w+\([^)]*\)\?\.[^}]+)\}/g);
|
|
269
|
+
for (const match of templateMatches) {
|
|
270
|
+
const expression = match[1];
|
|
271
|
+
const columnIndex = match.index || 0;
|
|
272
|
+
findings.push({
|
|
273
|
+
file: filePath,
|
|
274
|
+
line: i + 1,
|
|
275
|
+
column: columnIndex,
|
|
276
|
+
rule: "turbopack-chained-methods",
|
|
277
|
+
severity: "error",
|
|
278
|
+
message: `Chained optional method calls in template literal can cause Turbopack runtime errors`,
|
|
279
|
+
code: expression.trim(),
|
|
280
|
+
suggestion: `Extract chain: const result = ${expression.trim()}; then use \${result}`,
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return findings;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Detect ternary with optional chaining in JSX
|
|
288
|
+
* Pattern: {a?.b ? x : y} where a?.b?.c is used
|
|
289
|
+
*/
|
|
290
|
+
function detectTernaryWithNestedOptional(content, filePath) {
|
|
291
|
+
const findings = [];
|
|
292
|
+
const lines = content.split("\n");
|
|
293
|
+
for (let i = 0; i < lines.length; i++) {
|
|
294
|
+
const line = lines[i];
|
|
295
|
+
// Match ternary expressions with nested optional chaining
|
|
296
|
+
const ternaryMatches = line.matchAll(/\{([^}]*\?\.[^}]*\?\.[^}]*\?[^:}]+:[^}]+)\}/g);
|
|
297
|
+
for (const match of ternaryMatches) {
|
|
298
|
+
const expression = match[1];
|
|
299
|
+
const columnIndex = match.index || 0;
|
|
300
|
+
// Only flag if there's nested optional chaining before the ternary
|
|
301
|
+
const beforeTernary = expression.split("?")[0] + "?." + (expression.split("?.")[1]?.split("?")[0] || "");
|
|
302
|
+
if ((beforeTernary.match(/\?\./g) || []).length >= 2) {
|
|
303
|
+
findings.push({
|
|
304
|
+
file: filePath,
|
|
305
|
+
line: i + 1,
|
|
306
|
+
column: columnIndex,
|
|
307
|
+
rule: "turbopack-ternary-optional",
|
|
308
|
+
severity: "warning",
|
|
309
|
+
message: `Ternary with nested optional chaining may cause Turbopack issues`,
|
|
310
|
+
code: expression.trim().substring(0, 60) + (expression.length > 60 ? "..." : ""),
|
|
311
|
+
suggestion: `Extract condition: const hasValue = Boolean(a?.b?.c); then {hasValue ? x : y}`,
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
return findings;
|
|
317
|
+
}
|
|
318
|
+
// =============================================================================
|
|
319
|
+
// MAIN
|
|
320
|
+
// =============================================================================
|
|
321
|
+
function createDivider(length) {
|
|
322
|
+
return "═".repeat(length);
|
|
323
|
+
}
|
|
324
|
+
async function run() {
|
|
325
|
+
const startTime = Date.now();
|
|
326
|
+
const allFindings = [];
|
|
327
|
+
console.log(`\n${console_chars_1.emoji.lightning} TURBOPACK SAFE EXPRESSIONS CHECK`);
|
|
328
|
+
console.log(createDivider(65));
|
|
329
|
+
console.log(`\n${console_chars_1.emoji.info} Detects patterns that cause "_ref is not defined" runtime errors`);
|
|
330
|
+
// Find all files
|
|
331
|
+
const allFiles = [];
|
|
332
|
+
for (const pattern of FILE_PATTERNS) {
|
|
333
|
+
const matches = await (0, glob_1.glob)(pattern, {
|
|
334
|
+
cwd: process.cwd(),
|
|
335
|
+
ignore: EXCLUDE_PATTERNS,
|
|
336
|
+
});
|
|
337
|
+
allFiles.push(...matches);
|
|
338
|
+
}
|
|
339
|
+
const uniqueFiles = [...new Set(allFiles)];
|
|
340
|
+
if (uniqueFiles.length === 0) {
|
|
341
|
+
console.log(`${console_chars_1.emoji.skip} No React/JSX files found`);
|
|
342
|
+
return {
|
|
343
|
+
passed: true,
|
|
344
|
+
findings: [],
|
|
345
|
+
duration: Date.now() - startTime,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
console.log(`\n${console_chars_1.emoji.search} Scanning ${uniqueFiles.length} files for unsafe patterns...`);
|
|
349
|
+
// Analyze each file
|
|
350
|
+
for (const relativePath of uniqueFiles) {
|
|
351
|
+
const filePath = path.join(process.cwd(), relativePath);
|
|
352
|
+
if (!fs.existsSync(filePath))
|
|
353
|
+
continue;
|
|
354
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
355
|
+
// Skip files with ignore comment
|
|
356
|
+
if (content.includes("turbopack-safe-ignore") || content.includes("preflight-ignore-turbopack")) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
allFindings.push(...detectNestedOptionalChaining(content, relativePath));
|
|
360
|
+
allFindings.push(...detectOptionalChainingInJSXProps(content, relativePath));
|
|
361
|
+
allFindings.push(...detectOptionalChainingInCallbacks(content, relativePath));
|
|
362
|
+
allFindings.push(...detectOptionalSpread(content, relativePath));
|
|
363
|
+
allFindings.push(...detectChainedMethodsWithOptional(content, relativePath));
|
|
364
|
+
allFindings.push(...detectTernaryWithNestedOptional(content, relativePath));
|
|
365
|
+
}
|
|
366
|
+
// Group by severity
|
|
367
|
+
const errors = allFindings.filter((f) => f.severity === "error");
|
|
368
|
+
const warnings = allFindings.filter((f) => f.severity === "warning");
|
|
369
|
+
// Group by rule
|
|
370
|
+
const byRule = allFindings.reduce((acc, f) => {
|
|
371
|
+
acc[f.rule] = (acc[f.rule] || 0) + 1;
|
|
372
|
+
return acc;
|
|
373
|
+
}, {});
|
|
374
|
+
// Summary
|
|
375
|
+
console.log(`\n${console_chars_1.emoji.chart} Summary:`);
|
|
376
|
+
console.log(` Files scanned: ${uniqueFiles.length}`);
|
|
377
|
+
console.log(` Errors: ${errors.length} (blocking)`);
|
|
378
|
+
console.log(` Warnings: ${warnings.length}`);
|
|
379
|
+
if (Object.keys(byRule).length > 0) {
|
|
380
|
+
console.log(`\n By rule:`);
|
|
381
|
+
for (const [rule, count] of Object.entries(byRule)) {
|
|
382
|
+
console.log(` ${rule}: ${count}`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
if (allFindings.length === 0) {
|
|
386
|
+
console.log(`\n${console_chars_1.emoji.success} TURBOPACK SAFE EXPRESSIONS CHECK PASSED`);
|
|
387
|
+
console.log(`\nNo unsafe expression patterns detected.`);
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
// Show errors first
|
|
391
|
+
if (errors.length > 0) {
|
|
392
|
+
console.log(`\n${console_chars_1.emoji.error} BLOCKING: Unsafe Patterns Detected`);
|
|
393
|
+
console.log(`\nThese patterns WILL cause runtime errors with Turbopack:\n`);
|
|
394
|
+
for (const f of errors.slice(0, 15)) {
|
|
395
|
+
console.log(` ${console_chars_1.emoji.error} ${f.file}:${f.line}:${f.column}`);
|
|
396
|
+
console.log(` Rule: ${f.rule}`);
|
|
397
|
+
console.log(` Code: ${f.code}`);
|
|
398
|
+
console.log(` Fix: ${f.suggestion}`);
|
|
399
|
+
console.log();
|
|
400
|
+
}
|
|
401
|
+
if (errors.length > 15) {
|
|
402
|
+
console.log(` ... and ${errors.length - 15} more errors\n`);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
// Show warnings
|
|
406
|
+
if (warnings.length > 0) {
|
|
407
|
+
console.log(`${console_chars_1.emoji.warning} Warnings (${warnings.length}):`);
|
|
408
|
+
for (const f of warnings.slice(0, 5)) {
|
|
409
|
+
console.log(` ${f.file}:${f.line} [${f.rule}]`);
|
|
410
|
+
console.log(` ${f.message}`);
|
|
411
|
+
}
|
|
412
|
+
if (warnings.length > 5) {
|
|
413
|
+
console.log(` ... and ${warnings.length - 5} more warnings`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
console.log(`\n${console_chars_1.emoji.hint} How to fix:`);
|
|
417
|
+
console.log(` 1. Extract complex expressions to variables BEFORE the JSX return`);
|
|
418
|
+
console.log(` 2. Use simple variable references in template literals: \${value}`);
|
|
419
|
+
console.log(` 3. Avoid nested optional chaining (?.) in JSX expressions`);
|
|
420
|
+
console.log(`\n Example fix:`);
|
|
421
|
+
console.log(` ${console_chars_1.emoji.error} BEFORE: alt={\`Image: \${obj?.nested?.name ?? 'default'}\`}`);
|
|
422
|
+
console.log(` ${console_chars_1.emoji.success} AFTER: const altText = obj?.nested?.name ?? 'default';`);
|
|
423
|
+
console.log(` alt={\`Image: \${altText}\`}`);
|
|
424
|
+
const status = errors.length > 0 ? "FAILED" : "PASSED WITH WARNINGS";
|
|
425
|
+
console.log(`\n${errors.length > 0 ? console_chars_1.emoji.error : console_chars_1.emoji.warning} TURBOPACK SAFE EXPRESSIONS ${status}`);
|
|
426
|
+
}
|
|
427
|
+
return {
|
|
428
|
+
passed: errors.length === 0,
|
|
429
|
+
findings: allFindings.map((f) => ({
|
|
430
|
+
message: `[${f.rule}] ${f.message}`,
|
|
431
|
+
level: f.severity,
|
|
432
|
+
file: f.file,
|
|
433
|
+
line: f.line,
|
|
434
|
+
code: f.rule,
|
|
435
|
+
suggestion: f.suggestion,
|
|
436
|
+
})),
|
|
437
|
+
duration: Date.now() - startTime,
|
|
438
|
+
metadata: {
|
|
439
|
+
filesScanned: uniqueFiles.length,
|
|
440
|
+
errors: errors.length,
|
|
441
|
+
warnings: warnings.length,
|
|
442
|
+
byRule,
|
|
443
|
+
},
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
// Standalone execution
|
|
447
|
+
if (require.main === module) {
|
|
448
|
+
run().then((result) => process.exit(result.passed ? 0 : 1));
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=turbopack-safe-expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turbopack-safe-expressions.js","sourceRoot":"","sources":["../../../src/checks/react/turbopack-safe-expressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-react-best-practices.d.ts","sourceRoot":"","sources":["../../../src/checks/react/vercel-react-best-practices.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAQH,UAAU,oBAAoB;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAcD,eAAO,MAAM,EAAE,gCAAgC,CAAC;AAChD,eAAO,MAAM,IAAI,gCAAgC,CAAC;AAClD,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,WAAW,yEAAyE,CAAC;AAClG,eAAO,MAAM,IAAI,UAA8E,CAAC;
|
|
1
|
+
{"version":3,"file":"vercel-react-best-practices.d.ts","sourceRoot":"","sources":["../../../src/checks/react/vercel-react-best-practices.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAQH,UAAU,oBAAoB;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAcD,eAAO,MAAM,EAAE,gCAAgC,CAAC;AAChD,eAAO,MAAM,IAAI,gCAAgC,CAAC;AAClD,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,WAAW,yEAAyE,CAAC;AAClG,eAAO,MAAM,IAAI,UAA8E,CAAC;AAoahG,wBAAsB,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAgJzD"}
|
|
@@ -90,15 +90,16 @@ const EXCLUDE_PATTERNS = [
|
|
|
90
90
|
"build/**",
|
|
91
91
|
];
|
|
92
92
|
// Libraries known to have expensive barrel exports (200-800ms import cost)
|
|
93
|
+
// Note: @mui/* is handled by specialized/mui-imports-validation.ts
|
|
93
94
|
const BARREL_LIBRARIES = [
|
|
94
95
|
{ name: "lucide-react", directPath: "lucide-react/dist/esm/icons/" },
|
|
95
|
-
{ name: "@mui/material", directPath: "@mui/material/" },
|
|
96
|
-
{ name: "@mui/icons-material", directPath: "@mui/icons-material/" },
|
|
97
96
|
{ name: "@tabler/icons-react", directPath: "@tabler/icons-react/dist/esm/icons/" },
|
|
98
97
|
{ name: "react-icons", directPath: "react-icons/" },
|
|
99
98
|
{ name: "@radix-ui/react-icons", directPath: "@radix-ui/react-icons/" },
|
|
100
99
|
{ name: "lodash", directPath: "lodash/" },
|
|
101
100
|
{ name: "date-fns", directPath: "date-fns/" },
|
|
101
|
+
{ name: "@heroicons/react", directPath: "@heroicons/react/24/outline/" },
|
|
102
|
+
{ name: "phosphor-react", directPath: "phosphor-react/dist/icons/" },
|
|
102
103
|
];
|
|
103
104
|
// Heavy components that should use dynamic imports
|
|
104
105
|
const HEAVY_COMPONENTS = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-react-best-practices.js","sourceRoot":"","sources":["../../../src/checks/react/vercel-react-best-practices.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vercel-react-best-practices.js","sourceRoot":"","sources":["../../../src/checks/react/vercel-react-best-practices.ts"],"names":[],"mappings":"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"}
|