@empline/preflight 1.1.13 → 1.1.15

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.
Files changed (74) hide show
  1. package/dist/checks/auth/session-provider-wrapper.d.ts +47 -0
  2. package/dist/checks/auth/session-provider-wrapper.d.ts.map +1 -0
  3. package/dist/checks/auth/session-provider-wrapper.js +286 -0
  4. package/dist/checks/auth/session-provider-wrapper.js.map +1 -0
  5. package/dist/checks/core/ui-quality.js +1 -1
  6. package/dist/checks/core/ui-quality.js.map +1 -1
  7. package/dist/checks/database/prisma-upsert-safety.d.ts +39 -0
  8. package/dist/checks/database/prisma-upsert-safety.d.ts.map +1 -0
  9. package/dist/checks/database/prisma-upsert-safety.js +220 -0
  10. package/dist/checks/database/prisma-upsert-safety.js.map +1 -0
  11. package/dist/checks/dependencies/dependency-health-monitor.d.ts +49 -0
  12. package/dist/checks/dependencies/dependency-health-monitor.d.ts.map +1 -0
  13. package/dist/checks/dependencies/dependency-health-monitor.js +323 -0
  14. package/dist/checks/dependencies/dependency-health-monitor.js.map +1 -0
  15. package/dist/checks/email/email-template-db-verification.d.ts +5 -1
  16. package/dist/checks/email/email-template-db-verification.d.ts.map +1 -1
  17. package/dist/checks/email/email-template-db-verification.js +49 -3
  18. package/dist/checks/email/email-template-db-verification.js.map +1 -1
  19. package/dist/checks/file-hygiene-validation.d.ts +31 -0
  20. package/dist/checks/file-hygiene-validation.d.ts.map +1 -0
  21. package/dist/checks/file-hygiene-validation.js +934 -0
  22. package/dist/checks/file-hygiene-validation.js.map +1 -0
  23. package/dist/checks/organization/file-cleanup-validation.d.ts +22 -0
  24. package/dist/checks/organization/file-cleanup-validation.d.ts.map +1 -0
  25. package/dist/checks/organization/file-cleanup-validation.js +1121 -0
  26. package/dist/checks/organization/file-cleanup-validation.js.map +1 -0
  27. package/dist/checks/runtime/tailwind-runtime-check.d.ts +36 -0
  28. package/dist/checks/runtime/tailwind-runtime-check.d.ts.map +1 -0
  29. package/dist/checks/runtime/tailwind-runtime-check.js +264 -0
  30. package/dist/checks/runtime/tailwind-runtime-check.js.map +1 -0
  31. package/dist/checks/shipping-integration-validation.d.ts +28 -0
  32. package/dist/checks/shipping-integration-validation.d.ts.map +1 -0
  33. package/dist/checks/shipping-integration-validation.js +409 -0
  34. package/dist/checks/shipping-integration-validation.js.map +1 -0
  35. package/dist/checks/specialized/shared-components-migration.d.ts.map +1 -1
  36. package/dist/checks/specialized/shared-components-migration.js +2 -2
  37. package/dist/checks/specialized/shared-components-migration.js.map +1 -1
  38. package/dist/checks/specialized/store-specialties-normalization.d.ts +10 -1
  39. package/dist/checks/specialized/store-specialties-normalization.d.ts.map +1 -1
  40. package/dist/checks/specialized/store-specialties-normalization.js +39 -12
  41. package/dist/checks/specialized/store-specialties-normalization.js.map +1 -1
  42. package/dist/checks/system/layout-constants-sync.d.ts +36 -0
  43. package/dist/checks/system/layout-constants-sync.d.ts.map +1 -0
  44. package/dist/checks/system/layout-constants-sync.js +642 -0
  45. package/dist/checks/system/layout-constants-sync.js.map +1 -0
  46. package/dist/checks/system/package-health-check.d.ts +43 -0
  47. package/dist/checks/system/package-health-check.d.ts.map +1 -0
  48. package/dist/checks/system/package-health-check.js +323 -0
  49. package/dist/checks/system/package-health-check.js.map +1 -0
  50. package/dist/checks/system/preflight-circular-dependency-detector.d.ts +26 -0
  51. package/dist/checks/system/preflight-circular-dependency-detector.d.ts.map +1 -0
  52. package/dist/checks/system/preflight-circular-dependency-detector.js +310 -0
  53. package/dist/checks/system/preflight-circular-dependency-detector.js.map +1 -0
  54. package/dist/checks/system/preflight-execution-benchmarks.d.ts +24 -0
  55. package/dist/checks/system/preflight-execution-benchmarks.d.ts.map +1 -0
  56. package/dist/checks/system/preflight-execution-benchmarks.js +282 -0
  57. package/dist/checks/system/preflight-execution-benchmarks.js.map +1 -0
  58. package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts +27 -0
  59. package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts.map +1 -0
  60. package/dist/checks/system/preflight-tag-taxonomy-validator.js +361 -0
  61. package/dist/checks/system/preflight-tag-taxonomy-validator.js.map +1 -0
  62. package/dist/checks/testing/data-entry-regression-required.d.ts +5 -0
  63. package/dist/checks/testing/data-entry-regression-required.d.ts.map +1 -1
  64. package/dist/checks/testing/data-entry-regression-required.js +28 -7
  65. package/dist/checks/testing/data-entry-regression-required.js.map +1 -1
  66. package/dist/checks/testing/e2e-timeouts.d.ts +1 -0
  67. package/dist/checks/testing/e2e-timeouts.d.ts.map +1 -1
  68. package/dist/checks/testing/e2e-timeouts.js +49 -6
  69. package/dist/checks/testing/e2e-timeouts.js.map +1 -1
  70. package/dist/utils/console-chars.d.ts +16 -0
  71. package/dist/utils/console-chars.d.ts.map +1 -1
  72. package/dist/utils/console-chars.js +10 -0
  73. package/dist/utils/console-chars.js.map +1 -1
  74. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Preflight: Session Provider Wrapper Check
3
+ *
4
+ * Detects useSession() calls in components that may not be wrapped in SessionProvider.
5
+ * This catches the common error: "[next-auth]: useSession must be wrapped in a <SessionProvider />"
6
+ *
7
+ * Checks:
8
+ * 1. Files using useSession() must have "use client" directive
9
+ * 2. Files using useSession() should not be in locations that bypass the provider tree
10
+ * 3. Warns about useSession() in error boundaries or fallback components
11
+ * 4. Detects deprecated getSession() usage (should use auth() server-side)
12
+ * 5. Detects conditional SessionProvider wrapping patterns
13
+ * 6. Detects useSession in server components (async function exports without "use client")
14
+ *
15
+ * Usage:
16
+ * pnpm preflight:session-provider-wrapper
17
+ * pnpm preflight:session-provider-wrapper --fix # Auto-fix missing "use client"
18
+ *
19
+ * @blocking - This check blocks builds because missing SessionProvider causes runtime crashes
20
+ */
21
+ export declare const id = "auth/session-provider-wrapper";
22
+ export declare const name = "Session Provider Wrapper";
23
+ export declare const category = "auth";
24
+ export declare const blocking = true;
25
+ export declare const description = "Preflight: Session Provider Wrapper Check";
26
+ export declare const tags: string[];
27
+ interface Issue {
28
+ file: string;
29
+ line: number;
30
+ type: "error" | "warning";
31
+ code: string;
32
+ message: string;
33
+ suggestion?: string;
34
+ fixable?: boolean;
35
+ }
36
+ interface CheckResult {
37
+ issues: Issue[];
38
+ fixApplied?: boolean;
39
+ }
40
+ declare function checkFile(filePath: string, autoFix?: boolean): CheckResult;
41
+ export declare function run(): Promise<{
42
+ errors: number;
43
+ warnings: number;
44
+ fixed: number;
45
+ }>;
46
+ export { checkFile };
47
+ //# sourceMappingURL=session-provider-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-provider-wrapper.d.ts","sourceRoot":"","sources":["../../../src/checks/auth/session-provider-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAWH,eAAO,MAAM,EAAE,kCAAkC,CAAC;AAClD,eAAO,MAAM,IAAI,6BAA6B,CAAC;AAC/C,eAAO,MAAM,QAAQ,SAAS,CAAC;AAC/B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,8CAA8C,CAAC;AACvE,eAAO,MAAM,IAAI,UAAW,CAAC;AA2C7B,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkBD,iBAAS,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,WAAW,CA2H1E;AAED,wBAAsB,GAAG,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA0ExF;AAYD,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ /**
3
+ * Preflight: Session Provider Wrapper Check
4
+ *
5
+ * Detects useSession() calls in components that may not be wrapped in SessionProvider.
6
+ * This catches the common error: "[next-auth]: useSession must be wrapped in a <SessionProvider />"
7
+ *
8
+ * Checks:
9
+ * 1. Files using useSession() must have "use client" directive
10
+ * 2. Files using useSession() should not be in locations that bypass the provider tree
11
+ * 3. Warns about useSession() in error boundaries or fallback components
12
+ * 4. Detects deprecated getSession() usage (should use auth() server-side)
13
+ * 5. Detects conditional SessionProvider wrapping patterns
14
+ * 6. Detects useSession in server components (async function exports without "use client")
15
+ *
16
+ * Usage:
17
+ * pnpm preflight:session-provider-wrapper
18
+ * pnpm preflight:session-provider-wrapper --fix # Auto-fix missing "use client"
19
+ *
20
+ * @blocking - This check blocks builds because missing SessionProvider causes runtime crashes
21
+ */
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
27
+ exports.run = run;
28
+ exports.checkFile = checkFile;
29
+ const fs_1 = __importDefault(require("fs"));
30
+ const path_1 = __importDefault(require("path"));
31
+ const console_chars_1 = require("../../utils/console-chars");
32
+ const glob_1 = require("glob");
33
+ const universal_progress_reporter_1 = require("../system/universal-progress-reporter");
34
+ // Check metadata
35
+ exports.id = "auth/session-provider-wrapper";
36
+ exports.name = "Session Provider Wrapper";
37
+ exports.category = "auth";
38
+ exports.blocking = true;
39
+ exports.description = "Preflight: Session Provider Wrapper Check";
40
+ exports.tags = ["auth"];
41
+ const SCAN_PATTERNS = [
42
+ "app/**/*.tsx",
43
+ "app/**/*.ts",
44
+ "components/**/*.tsx",
45
+ "components/**/*.ts",
46
+ "contexts/**/*.tsx",
47
+ "hooks/**/*.tsx",
48
+ "hooks/**/*.ts",
49
+ "lib/**/*.tsx",
50
+ "lib/**/*.ts",
51
+ ];
52
+ const EXCLUDE_PATTERNS = [
53
+ "**/node_modules/**",
54
+ "**/.next/**",
55
+ "**/dist/**",
56
+ "**/coverage/**",
57
+ "**/*.test.tsx",
58
+ "**/*.test.ts",
59
+ "**/*.spec.tsx",
60
+ "**/*.spec.ts",
61
+ "**/__tests__/**",
62
+ "**/__mocks__/**",
63
+ ];
64
+ const UNSAFE_LOCATIONS = [
65
+ { pattern: /error\.tsx$/, reason: "Error boundaries render outside the normal component tree" },
66
+ { pattern: /not-found\.tsx$/, reason: "Not-found pages may render before providers are mounted" },
67
+ {
68
+ pattern: /loading\.tsx$/,
69
+ reason: "Loading states render during Suspense, before providers may be ready",
70
+ },
71
+ { pattern: /global-error\.tsx$/, reason: "Global error boundary renders at the root level" },
72
+ ];
73
+ const CONDITIONAL_PROVIDER_PATTERNS = [
74
+ /\{[^}]*&&\s*<SessionProvider/,
75
+ /\{[^}]*\?\s*<SessionProvider/,
76
+ /<SessionProvider[^>]*>\s*\{[^}]*&&/,
77
+ ];
78
+ function findLineNumber(content, searchStr) {
79
+ const lines = content.split("\n");
80
+ for (let i = 0; i < lines.length; i++) {
81
+ if (lines[i].includes(searchStr))
82
+ return i + 1;
83
+ }
84
+ return 1;
85
+ }
86
+ function isServerComponent(content) {
87
+ const hasUseClient = /^["']use client["'];?\s*$/m.test(content);
88
+ if (hasUseClient)
89
+ return false;
90
+ const hasAsyncExport = /export\s+(default\s+)?async\s+function/.test(content);
91
+ const hasDefaultExport = /export\s+default/.test(content);
92
+ return hasAsyncExport || hasDefaultExport;
93
+ }
94
+ function checkFile(filePath, autoFix = false) {
95
+ const issues = [];
96
+ let content = fs_1.default.readFileSync(filePath, "utf-8");
97
+ let fixApplied = false;
98
+ const normalizedPath = filePath.replace(/\\/g, "/");
99
+ const useSessionMatch = content.match(/useSession\s*\(/);
100
+ if (useSessionMatch) {
101
+ const useSessionLine = findLineNumber(content, "useSession");
102
+ const hasUseClient = /^["']use client["'];?\s*$/m.test(content);
103
+ if (!hasUseClient) {
104
+ if (isServerComponent(content)) {
105
+ issues.push({
106
+ file: filePath,
107
+ line: useSessionLine,
108
+ type: "error",
109
+ code: "USE_SESSION_IN_SERVER_COMPONENT",
110
+ message: "useSession() called in what appears to be a Server Component",
111
+ suggestion: "Use server-side auth() from @/lib/auth instead of useSession()",
112
+ });
113
+ }
114
+ else {
115
+ issues.push({
116
+ file: filePath,
117
+ line: useSessionLine,
118
+ type: "error",
119
+ code: "MISSING_USE_CLIENT",
120
+ message: 'useSession() requires "use client" directive',
121
+ suggestion: 'Add "use client"; at the top of the file',
122
+ fixable: true,
123
+ });
124
+ if (autoFix) {
125
+ content = '"use client";\n\n' + content;
126
+ fs_1.default.writeFileSync(filePath, content, "utf-8");
127
+ fixApplied = true;
128
+ console.log(" " + console_chars_1.emoji.wrench + ' Fixed: Added "use client" to ' + filePath);
129
+ }
130
+ }
131
+ }
132
+ for (const unsafe of UNSAFE_LOCATIONS) {
133
+ if (unsafe.pattern.test(normalizedPath)) {
134
+ issues.push({
135
+ file: filePath,
136
+ line: useSessionLine,
137
+ type: "error",
138
+ code: "USE_SESSION_UNSAFE_LOCATION",
139
+ message: "useSession() used in " + path_1.default.basename(filePath) + " - " + unsafe.reason,
140
+ suggestion: "Use server-side auth() from @/lib/auth instead, or pass session as a prop",
141
+ });
142
+ }
143
+ }
144
+ const providesSession = /<SessionProvider[\s>]/.test(content);
145
+ if (providesSession) {
146
+ issues.push({
147
+ file: filePath,
148
+ line: useSessionLine,
149
+ type: "warning",
150
+ code: "PROVIDER_CONSUMER_SAME_FILE",
151
+ message: "Component both provides SessionProvider and uses useSession()",
152
+ suggestion: "Split into separate provider and consumer components",
153
+ });
154
+ }
155
+ }
156
+ const getSessionImport = content.match(/import\s*\{[^}]*\bgetSession\b[^}]*\}\s*from\s*["']next-auth\/react["']/);
157
+ const getSessionUsage = content.match(/\bgetSession\s*\(/);
158
+ if (getSessionImport || getSessionUsage) {
159
+ const line = findLineNumber(content, "getSession");
160
+ issues.push({
161
+ file: filePath,
162
+ line,
163
+ type: "error",
164
+ code: "DEPRECATED_GET_SESSION",
165
+ message: "getSession() from next-auth/react is deprecated",
166
+ suggestion: "Use auth() from @/lib/auth for server-side, or useSession() for client-side",
167
+ });
168
+ }
169
+ for (const pattern of CONDITIONAL_PROVIDER_PATTERNS) {
170
+ if (pattern.test(content)) {
171
+ const line = findLineNumber(content, "SessionProvider");
172
+ issues.push({
173
+ file: filePath,
174
+ line,
175
+ type: "error",
176
+ code: "CONDITIONAL_SESSION_PROVIDER",
177
+ message: "SessionProvider is conditionally rendered - this causes useSession errors",
178
+ suggestion: "Always render SessionProvider unconditionally at the app root",
179
+ });
180
+ break;
181
+ }
182
+ }
183
+ const authActionsMatch = content.match(/\b(signIn|signOut)\s*\(/);
184
+ if (authActionsMatch) {
185
+ const hasUseClient = /^["']use client["'];?\s*$/m.test(content);
186
+ const fromReact = content.includes('from "next-auth/react"') || content.includes("from 'next-auth/react'");
187
+ if (fromReact && !hasUseClient) {
188
+ const line = findLineNumber(content, authActionsMatch[1]);
189
+ issues.push({
190
+ file: filePath,
191
+ line,
192
+ type: "error",
193
+ code: "AUTH_ACTION_NO_USE_CLIENT",
194
+ message: authActionsMatch[1] + '() from next-auth/react requires "use client" directive',
195
+ suggestion: 'Add "use client"; at the top of the file, or use server actions',
196
+ fixable: true,
197
+ });
198
+ if (autoFix && !fixApplied) {
199
+ content = '"use client";\n\n' + content;
200
+ fs_1.default.writeFileSync(filePath, content, "utf-8");
201
+ fixApplied = true;
202
+ console.log(" " + console_chars_1.emoji.wrench + ' Fixed: Added "use client" to ' + filePath);
203
+ }
204
+ }
205
+ }
206
+ return { issues, fixApplied };
207
+ }
208
+ async function run() {
209
+ const reporter = (0, universal_progress_reporter_1.createUniversalProgressReporter)(exports.name);
210
+ const args = process.argv.slice(2);
211
+ const autoFix = args.includes("--fix");
212
+ console.log("\n" + console_chars_1.emoji.search + " Checking SessionProvider wrapper requirements...");
213
+ if (autoFix)
214
+ console.log(console_chars_1.emoji.wrench + " Auto-fix mode enabled\n");
215
+ else
216
+ console.log("");
217
+ const files = [];
218
+ for (const pattern of SCAN_PATTERNS) {
219
+ const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDE_PATTERNS, nodir: true });
220
+ files.push(...matches);
221
+ }
222
+ const allIssues = [];
223
+ let totalFixed = 0;
224
+ for (const file of files) {
225
+ const result = checkFile(file, autoFix);
226
+ allIssues.push(...result.issues);
227
+ if (result.fixApplied)
228
+ totalFixed++;
229
+ }
230
+ const errors = allIssues.filter((i) => i.type === "error");
231
+ const warnings = allIssues.filter((i) => i.type === "warning");
232
+ const fixableCount = allIssues.filter((i) => i.fixable).length;
233
+ if (allIssues.length === 0) {
234
+ console.log(console_chars_1.emoji.success + " All session/auth patterns are correct\n");
235
+ console.log(" Scanned " + files.length + " files\n");
236
+ return { errors: 0, warnings: 0, fixed: totalFixed };
237
+ }
238
+ if (errors.length > 0) {
239
+ console.log(console_chars_1.emoji.error + " Found " + errors.length + " error(s):\n");
240
+ for (const issue of errors) {
241
+ console.log(" " + issue.file + ":" + issue.line);
242
+ console.log(" " + console_chars_1.emoji.error + " [" + issue.code + "] " + issue.message);
243
+ if (issue.suggestion)
244
+ console.log(" " + console_chars_1.emoji.hint + " " + issue.suggestion);
245
+ if (issue.fixable && !autoFix)
246
+ console.log(" " + console_chars_1.emoji.wrench + " Fixable with --fix");
247
+ console.log("");
248
+ }
249
+ }
250
+ if (warnings.length > 0) {
251
+ console.log(console_chars_1.emoji.warning + " Found " + warnings.length + " warning(s):\n");
252
+ for (const issue of warnings) {
253
+ console.log(" " + issue.file + ":" + issue.line);
254
+ console.log(" " + console_chars_1.emoji.warning + " [" + issue.code + "] " + issue.message);
255
+ if (issue.suggestion)
256
+ console.log(" " + console_chars_1.emoji.hint + " " + issue.suggestion);
257
+ console.log("");
258
+ }
259
+ }
260
+ console.log((0, console_chars_1.createDivider)(60));
261
+ if (totalFixed > 0)
262
+ console.log("\n" + console_chars_1.emoji.success + " Auto-fixed " + totalFixed + " file(s)");
263
+ if (fixableCount > 0 && !autoFix) {
264
+ console.log("\n" +
265
+ console_chars_1.emoji.hint +
266
+ " " +
267
+ fixableCount +
268
+ " issue(s) can be auto-fixed with: pnpm preflight:session-provider-wrapper --fix");
269
+ }
270
+ console.log("\n" + console_chars_1.emoji.info + " Why this matters:");
271
+ console.log(" - useSession() must be called within a <SessionProvider> tree");
272
+ console.log(" - Components in error.tsx, not-found.tsx render outside providers");
273
+ console.log(" - getSession() is deprecated - use auth() server-side");
274
+ console.log(" - Conditional SessionProvider causes hydration mismatches\n");
275
+ return { errors: errors.length, warnings: warnings.length, fixed: totalFixed };
276
+ }
277
+ // Allow direct execution
278
+ if (require.main === module) {
279
+ run()
280
+ .then((result) => process.exit(result.errors > 0 ? 1 : 0))
281
+ .catch((err) => {
282
+ console.error("Error:", err);
283
+ process.exit(1);
284
+ });
285
+ }
286
+ //# sourceMappingURL=session-provider-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-provider-wrapper.js","sourceRoot":"","sources":["../../../src/checks/auth/session-provider-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1559,7 +1559,7 @@ async function runUIQualityPreflights() {
1559
1559
  runner.addCheck((0, preflight_runner_1.createCheck)("Unified Badge System", "CRITICAL: Validate all badge components use the unified system", async () => {
1560
1560
  console.log(`${console_chars_1.emoji.search} Running Unified Badge System check...`);
1561
1561
  // Run the specialized badge consistency check
1562
- const badgeCheckResult = await (0, unified_badge_consistency_1.runUnifiedBadgeConsistencyCheck)();
1562
+ const badgeCheckResult = await (0, unified_badge_consistency_1.run)();
1563
1563
  // Extract results from the badge check
1564
1564
  const errors = [];
1565
1565
  const warnings = [];