@empline/preflight 1.1.30 → 1.1.32

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 (36) hide show
  1. package/dist/checks/api/integration-schema-consistency.d.ts.map +1 -1
  2. package/dist/checks/api/integration-schema-consistency.js +79 -4
  3. package/dist/checks/api/integration-schema-consistency.js.map +1 -1
  4. package/dist/checks/framework/prisma-version-bugs.d.ts +47 -0
  5. package/dist/checks/framework/prisma-version-bugs.d.ts.map +1 -0
  6. package/dist/checks/framework/prisma-version-bugs.js +232 -0
  7. package/dist/checks/framework/prisma-version-bugs.js.map +1 -0
  8. package/dist/checks/framework/turbopack-prisma-external.d.ts +37 -0
  9. package/dist/checks/framework/turbopack-prisma-external.d.ts.map +1 -0
  10. package/dist/checks/framework/turbopack-prisma-external.js +144 -0
  11. package/dist/checks/framework/turbopack-prisma-external.js.map +1 -0
  12. package/dist/checks/listing-approval/image-processing-validation.d.ts +14 -0
  13. package/dist/checks/listing-approval/image-processing-validation.d.ts.map +1 -0
  14. package/dist/checks/listing-approval/image-processing-validation.js +198 -0
  15. package/dist/checks/listing-approval/image-processing-validation.js.map +1 -0
  16. package/dist/checks/listing-approval/r2-metadata-application.d.ts +14 -0
  17. package/dist/checks/listing-approval/r2-metadata-application.d.ts.map +1 -0
  18. package/dist/checks/listing-approval/r2-metadata-application.js +261 -0
  19. package/dist/checks/listing-approval/r2-metadata-application.js.map +1 -0
  20. package/dist/checks/listing-approval/seo-metadata-consistency.d.ts +14 -0
  21. package/dist/checks/listing-approval/seo-metadata-consistency.d.ts.map +1 -0
  22. package/dist/checks/listing-approval/seo-metadata-consistency.js +408 -0
  23. package/dist/checks/listing-approval/seo-metadata-consistency.js.map +1 -0
  24. package/dist/checks/ui/batch-progress-consistency.d.ts +13 -0
  25. package/dist/checks/ui/batch-progress-consistency.d.ts.map +1 -0
  26. package/dist/checks/ui/batch-progress-consistency.js +200 -0
  27. package/dist/checks/ui/batch-progress-consistency.js.map +1 -0
  28. package/dist/checks/ui/bulk-action-progress-feedback.d.ts +13 -0
  29. package/dist/checks/ui/bulk-action-progress-feedback.d.ts.map +1 -0
  30. package/dist/checks/ui/bulk-action-progress-feedback.js +273 -0
  31. package/dist/checks/ui/bulk-action-progress-feedback.js.map +1 -0
  32. package/dist/checks/ui/consistent-section-spacing.d.ts +13 -0
  33. package/dist/checks/ui/consistent-section-spacing.d.ts.map +1 -0
  34. package/dist/checks/ui/consistent-section-spacing.js +246 -0
  35. package/dist/checks/ui/consistent-section-spacing.js.map +1 -0
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"integration-schema-consistency.d.ts","sourceRoot":"","sources":["../../../src/checks/api/integration-schema-consistency.ts"],"names":[],"mappings":";AAkBA,eAAO,MAAM,EAAE,uCAAuC,CAAC;AACvD,eAAO,MAAM,IAAI,mCAAmC,CAAC;AACrD,eAAO,MAAM,WAAW,wDAAwD,CAAC;AACjF,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,IAAI,UAA4C,CAAC;AAC9D,eAAO,MAAM,QAAQ,UAA0B,CAAC;AA+ChD,wBAAsB,GAAG,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoG3F"}
1
+ {"version":3,"file":"integration-schema-consistency.d.ts","sourceRoot":"","sources":["../../../src/checks/api/integration-schema-consistency.ts"],"names":[],"mappings":";AAoBA,eAAO,MAAM,EAAE,uCAAuC,CAAC;AACvD,eAAO,MAAM,IAAI,mCAAmC,CAAC;AACrD,eAAO,MAAM,WAAW,wDAAwD,CAAC;AACjF,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,IAAI,UAA4C,CAAC;AAC9D,eAAO,MAAM,QAAQ,UAA0B,CAAC;AA6FhD,wBAAsB,GAAG,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA4I3F"}
@@ -14,6 +14,8 @@ exports.run = run;
14
14
  * - Field name mismatches (e.g., UI uses `wooField` but API expects `sourceField`)
15
15
  * - Feature flag mismatches (e.g., UI uses `linkProducts` but API expects `exportListings`)
16
16
  * - Missing fields in API schemas that UI depends on
17
+ * - Zod transform() calls that drop fields needed by import APIs or UI
18
+ * - Inconsistency between save endpoint schema and import endpoint schema
17
19
  *
18
20
  * This helps prevent silent data loss where UI sends fields that get stripped by validation.
19
21
  */
@@ -36,15 +38,19 @@ const INTEGRATION_CHECKS = [
36
38
  name: "WooCommerce",
37
39
  uiTypePath: "components/woocommerce/types.ts",
38
40
  apiRoutePath: "app/api/store/integrations/woocommerce/route.ts",
41
+ importRoutePath: "app/api/store/integrations/woocommerce/import/route.ts",
39
42
  fieldMappings: [
40
- { uiField: "wooField", apiField: "sourceField" },
41
- { uiField: "supercatchField", apiField: "targetField" },
43
+ { uiField: "wooField", apiField: "wooField" },
44
+ { uiField: "supercatchField", apiField: "supercatchField" },
45
+ { uiField: "required", apiField: "required" },
42
46
  { uiField: "linkProducts", apiField: "linkProducts" },
43
47
  { uiField: "importProducts", apiField: "importProducts" },
44
48
  { uiField: "syncInventory", apiField: "syncInventory" },
45
49
  { uiField: "syncPrices", apiField: "syncPrices" },
46
50
  { uiField: "syncOrders", apiField: "syncOrders" },
47
51
  ],
52
+ // These fields must be preserved in any Zod transform, not dropped
53
+ requiredPreservedFields: ["wooField", "supercatchField", "required", "id", "transform"],
48
54
  },
49
55
  {
50
56
  name: "Shopify",
@@ -57,6 +63,39 @@ const INTEGRATION_CHECKS = [
57
63
  ],
58
64
  },
59
65
  ];
66
+ /**
67
+ * Check if a Zod schema transform preserves a field
68
+ * Looks for patterns like `.transform((data) => ({ fieldName: ... }))`
69
+ */
70
+ function checkTransformPreservesField(content, fieldName) {
71
+ // Look for transform output that includes the field
72
+ // Pattern: transform((data) => ({ ... fieldName: ... }))
73
+ const transformPattern = /\.transform\s*\(\s*\([^)]*\)\s*=>\s*\(\{([\s\S]*?)\}\)\s*\)/g;
74
+ let match;
75
+ while ((match = transformPattern.exec(content)) !== null) {
76
+ const transformBody = match[1];
77
+ // Check if field is in the transform output
78
+ const fieldPattern = new RegExp(`\\b${fieldName}\\s*:`);
79
+ if (fieldPattern.test(transformBody || "")) {
80
+ return true;
81
+ }
82
+ }
83
+ // If no transform found, assume field is preserved (passthrough)
84
+ if (!content.includes(".transform(")) {
85
+ return true;
86
+ }
87
+ // Check if the field is at least accepted in the schema input
88
+ const acceptsField = new RegExp(`\\b${fieldName}\\s*:`).test(content);
89
+ return acceptsField;
90
+ }
91
+ /**
92
+ * Check if import route expects a field
93
+ */
94
+ function importRouteExpectsField(importContent, fieldName) {
95
+ // Look for fieldName in Zod schema definitions
96
+ const schemaPattern = new RegExp(`\\b${fieldName}\\s*:\\s*z\\.`);
97
+ return schemaPattern.test(importContent);
98
+ }
60
99
  async function run() {
61
100
  console.log(`\n${console_chars_1.emoji.check} INTEGRATION SCHEMA CONSISTENCY`);
62
101
  console.log((0, console_chars_1.createDivider)(65, "heavy"));
@@ -64,6 +103,7 @@ async function run() {
64
103
  for (const check of INTEGRATION_CHECKS) {
65
104
  const uiPath = path_1.default.join(process.cwd(), check.uiTypePath);
66
105
  const apiPath = path_1.default.join(process.cwd(), check.apiRoutePath);
106
+ const importPath = check.importRoutePath ? path_1.default.join(process.cwd(), check.importRoutePath) : null;
67
107
  // Check if files exist
68
108
  if (!fs_1.default.existsSync(uiPath)) {
69
109
  console.log(` Skipping ${check.name}: UI types file not found`);
@@ -75,6 +115,9 @@ async function run() {
75
115
  }
76
116
  const uiContent = fs_1.default.readFileSync(uiPath, "utf-8");
77
117
  const apiContent = fs_1.default.readFileSync(apiPath, "utf-8");
118
+ const importContent = importPath && fs_1.default.existsSync(importPath)
119
+ ? fs_1.default.readFileSync(importPath, "utf-8")
120
+ : null;
78
121
  console.log(`\n Checking ${check.name}...`);
79
122
  // Check field mappings
80
123
  for (const mapping of check.fieldMappings) {
@@ -117,6 +160,37 @@ async function run() {
117
160
  description: `UI uses 'linkProducts' but API schema uses 'exportListings' - data will be silently dropped`,
118
161
  });
119
162
  }
163
+ // Check if required fields are preserved in Zod transforms
164
+ if (check.requiredPreservedFields) {
165
+ for (const field of check.requiredPreservedFields) {
166
+ const uiDefinesField = new RegExp(`\\b${field}\\s*[:\\?]`).test(uiContent);
167
+ if (uiDefinesField && !checkTransformPreservesField(apiContent, field)) {
168
+ issues.push({
169
+ integration: check.name,
170
+ type: "field_dropped_by_transform",
171
+ uiField: field,
172
+ apiField: field,
173
+ description: `Field '${field}' is defined in UI types but may be dropped by Zod transform() in API schema`,
174
+ });
175
+ }
176
+ }
177
+ }
178
+ // Check consistency between save endpoint and import endpoint
179
+ if (importContent && check.requiredPreservedFields) {
180
+ for (const field of check.requiredPreservedFields) {
181
+ const importExpects = importRouteExpectsField(importContent, field);
182
+ const apiPreserves = checkTransformPreservesField(apiContent, field);
183
+ if (importExpects && !apiPreserves) {
184
+ issues.push({
185
+ integration: check.name,
186
+ type: "import_api_mismatch",
187
+ uiField: field,
188
+ apiField: field,
189
+ description: `Import API expects '${field}' but save endpoint may drop it - data saved won't work when imported`,
190
+ });
191
+ }
192
+ }
193
+ }
120
194
  }
121
195
  // Summary
122
196
  console.log(`\n${console_chars_1.emoji.chart} Summary:`);
@@ -136,8 +210,9 @@ async function run() {
136
210
  }
137
211
  console.log(`\n${console_chars_1.emoji.info} To fix schema mismatches:`);
138
212
  console.log(` 1. Ensure API schema accepts the field names UI sends`);
139
- console.log(` 2. Use Zod transform() to normalize field names if needed`);
140
- console.log(` 3. Update UI types to match API expectations`);
213
+ console.log(` 2. When using Zod transform(), preserve ALL fields needed by UI and import APIs`);
214
+ console.log(` 3. Check that save endpoint schema output matches import endpoint schema input`);
215
+ console.log(` 4. Update UI types to match API expectations`);
141
216
  console.log(`\n${console_chars_1.emoji.error} INTEGRATION SCHEMA CONSISTENCY FAILED`);
142
217
  return { success: false, errors: issues.length, warnings: 0 };
143
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"integration-schema-consistency.js","sourceRoot":"","sources":["../../../src/checks/api/integration-schema-consistency.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration-schema-consistency.js","sourceRoot":"","sources":["../../../src/checks/api/integration-schema-consistency.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Preflight Check: Prisma Version Known Bugs
4
+ *
5
+ * Category: framework
6
+ * Severity: blocking
7
+ *
8
+ * Checks for known problematic Prisma versions that have critical bugs.
9
+ * This preflight catches version-specific issues that wouldn't be flagged
10
+ * by simple "outdated package" checks.
11
+ *
12
+ * KNOWN ISSUES:
13
+ * - Prisma 7.0.0-7.2.x: @map() decorator bug with driver adapters (GitHub #27357)
14
+ * Causes "The column `(not available)` does not exist" errors at runtime
15
+ * when using @prisma/adapter-pg with models that have @map() annotations.
16
+ * Fixed in 7.3.0+
17
+ *
18
+ * @see https://github.com/prisma/prisma/issues/27357
19
+ */
20
+ export declare const id = "framework/prisma-version-bugs";
21
+ export declare const name = "Prisma Version Known Bugs";
22
+ export declare const category = "framework";
23
+ export declare const blocking = true;
24
+ export declare const description = "Checks for Prisma versions with known critical bugs";
25
+ export declare const tags: string[];
26
+ /**
27
+ * Dev version overrides - when a dev version is intentionally used to fix a bug,
28
+ * document it here so the package update checker doesn't flag it for downgrade.
29
+ *
30
+ * Format: { package: "prisma", minDevVersion: "7.3.0-dev.7", reason: "GH-27357 fix" }
31
+ */
32
+ interface DevOverride {
33
+ package: string;
34
+ minDevVersion: string;
35
+ reason: string;
36
+ bugId: string;
37
+ }
38
+ declare const APPROVED_DEV_OVERRIDES: DevOverride[];
39
+ declare function isDevVersion(version: string): boolean;
40
+ declare function getApprovedDevOverride(version: string): DevOverride | null;
41
+ export { APPROVED_DEV_OVERRIDES, getApprovedDevOverride, isDevVersion };
42
+ export declare function run(): Promise<{
43
+ success: boolean;
44
+ errors: number;
45
+ warnings: number;
46
+ }>;
47
+ //# sourceMappingURL=prisma-version-bugs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-version-bugs.d.ts","sourceRoot":"","sources":["../../../src/checks/framework/prisma-version-bugs.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAQH,eAAO,MAAM,EAAE,kCAAkC,CAAC;AAClD,eAAO,MAAM,IAAI,8BAA8B,CAAC;AAChD,eAAO,MAAM,QAAQ,cAAc,CAAC;AACpC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,wDAAwD,CAAC;AACjF,eAAO,MAAM,IAAI,UAAmD,CAAC;AAErE;;;;;GAKG;AACH,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,sBAAsB,EAAE,WAAW,EAOxC,CAAC;AA+GF,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED,iBAAS,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA4BnE;AAGD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,EAAE,CAAC;AAqCxE,wBAAsB,GAAG,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA8C3F"}
@@ -0,0 +1,232 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Preflight Check: Prisma Version Known Bugs
5
+ *
6
+ * Category: framework
7
+ * Severity: blocking
8
+ *
9
+ * Checks for known problematic Prisma versions that have critical bugs.
10
+ * This preflight catches version-specific issues that wouldn't be flagged
11
+ * by simple "outdated package" checks.
12
+ *
13
+ * KNOWN ISSUES:
14
+ * - Prisma 7.0.0-7.2.x: @map() decorator bug with driver adapters (GitHub #27357)
15
+ * Causes "The column `(not available)` does not exist" errors at runtime
16
+ * when using @prisma/adapter-pg with models that have @map() annotations.
17
+ * Fixed in 7.3.0+
18
+ *
19
+ * @see https://github.com/prisma/prisma/issues/27357
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.APPROVED_DEV_OVERRIDES = exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
23
+ exports.getApprovedDevOverride = getApprovedDevOverride;
24
+ exports.isDevVersion = isDevVersion;
25
+ exports.run = run;
26
+ const fs_1 = require("fs");
27
+ const path_1 = require("path");
28
+ const console_chars_1 = require("../../utils/console-chars");
29
+ // Preflight metadata
30
+ exports.id = "framework/prisma-version-bugs";
31
+ exports.name = "Prisma Version Known Bugs";
32
+ exports.category = "framework";
33
+ exports.blocking = true;
34
+ exports.description = "Checks for Prisma versions with known critical bugs";
35
+ exports.tags = ["prisma", "version", "bugs", "driver-adapters"];
36
+ const APPROVED_DEV_OVERRIDES = [
37
+ {
38
+ package: "prisma",
39
+ minDevVersion: "7.3.0-dev.7",
40
+ reason: "@map() decorator fix with driver adapters",
41
+ bugId: "GH-27357",
42
+ },
43
+ ];
44
+ exports.APPROVED_DEV_OVERRIDES = APPROVED_DEV_OVERRIDES;
45
+ // Known Prisma bugs with version ranges
46
+ const KNOWN_BUGS = [
47
+ {
48
+ id: "GH-27357",
49
+ affectedVersions: (version) => {
50
+ // Affected: 7.0.0 to 7.2.x (stable versions)
51
+ // Fixed in: 7.3.0+ (or 7.3.0-dev.7+)
52
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-dev\.(\d+))?/);
53
+ if (!match)
54
+ return false;
55
+ const major = parseInt(match[1], 10);
56
+ const minor = parseInt(match[2], 10);
57
+ const devNum = match[4] ? parseInt(match[4], 10) : null;
58
+ // v7.0.0 - v7.2.x are affected
59
+ if (major === 7 && minor >= 0 && minor <= 2) {
60
+ return true;
61
+ }
62
+ // v7.3.0-dev.0 through v7.3.0-dev.6 are still affected
63
+ if (major === 7 && minor === 3 && devNum !== null && devNum < 7) {
64
+ return true;
65
+ }
66
+ return false;
67
+ },
68
+ condition: () => {
69
+ // Only applies when using driver adapters
70
+ return usesDriverAdapter();
71
+ },
72
+ title: "@map() decorator bug with driver adapters",
73
+ description: 'Causes "The column `(not available)` does not exist" runtime errors ' +
74
+ "when using @prisma/adapter-pg with models that have @map() annotations.",
75
+ fixedIn: "7.3.0 (or 7.3.0-dev.7+)",
76
+ reference: "https://github.com/prisma/prisma/issues/27357",
77
+ },
78
+ ];
79
+ function getPackageJsonPath() {
80
+ return (0, path_1.join)(process.cwd(), "package.json");
81
+ }
82
+ function getPrismaVersion() {
83
+ const pkgPath = getPackageJsonPath();
84
+ if (!(0, fs_1.existsSync)(pkgPath))
85
+ return null;
86
+ try {
87
+ const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, "utf-8"));
88
+ const version = pkg.dependencies?.prisma ||
89
+ pkg.devDependencies?.prisma ||
90
+ pkg.dependencies?.["@prisma/client"] ||
91
+ pkg.devDependencies?.["@prisma/client"];
92
+ if (!version)
93
+ return null;
94
+ // Remove version prefixes like ^ or ~
95
+ return version.replace(/^[\^~]/, "");
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ }
101
+ function usesDriverAdapter() {
102
+ // Check if @prisma/adapter-pg (or other adapters) is in dependencies
103
+ const pkgPath = getPackageJsonPath();
104
+ if (!(0, fs_1.existsSync)(pkgPath))
105
+ return false;
106
+ try {
107
+ const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, "utf-8"));
108
+ const allDeps = {
109
+ ...pkg.dependencies,
110
+ ...pkg.devDependencies,
111
+ };
112
+ // Check for known driver adapter packages
113
+ const adapterPackages = [
114
+ "@prisma/adapter-pg",
115
+ "@prisma/adapter-neon",
116
+ "@prisma/adapter-planetscale",
117
+ "@prisma/adapter-libsql",
118
+ "@prisma/adapter-d1",
119
+ ];
120
+ return adapterPackages.some((adapter) => adapter in allDeps);
121
+ }
122
+ catch {
123
+ return false;
124
+ }
125
+ }
126
+ function isDevVersion(version) {
127
+ return version.includes("-dev.") || version.includes("-alpha") || version.includes("-beta");
128
+ }
129
+ function getApprovedDevOverride(version) {
130
+ if (!isDevVersion(version))
131
+ return null;
132
+ // Find matching approved override
133
+ for (const override of APPROVED_DEV_OVERRIDES) {
134
+ if (override.package !== "prisma")
135
+ continue;
136
+ // Parse version to compare
137
+ const minMatch = override.minDevVersion.match(/^(\d+)\.(\d+)\.(\d+)-dev\.(\d+)/);
138
+ const curMatch = version.match(/^(\d+)\.(\d+)\.(\d+)-dev\.(\d+)/);
139
+ if (!minMatch || !curMatch)
140
+ continue;
141
+ const [, minMaj, minMin, minPatch, minDev] = minMatch.map(Number);
142
+ const [, curMaj, curMin, curPatch, curDev] = curMatch.map(Number);
143
+ // Check if current version is >= minimum approved version
144
+ if (curMaj > minMaj ||
145
+ (curMaj === minMaj && curMin > minMin) ||
146
+ (curMaj === minMaj && curMin === minMin && curPatch > minPatch) ||
147
+ (curMaj === minMaj && curMin === minMin && curPatch === minPatch && curDev >= minDev)) {
148
+ return override;
149
+ }
150
+ }
151
+ return null;
152
+ }
153
+ function checkPrismaVersion() {
154
+ const version = getPrismaVersion();
155
+ const usesAdapter = usesDriverAdapter();
156
+ if (!version) {
157
+ return {
158
+ passed: true,
159
+ version: null,
160
+ triggeredBugs: [],
161
+ usesAdapter,
162
+ approvedDevOverride: null,
163
+ };
164
+ }
165
+ const triggeredBugs = KNOWN_BUGS.filter((bug) => {
166
+ // Check if version is affected
167
+ if (!bug.affectedVersions(version))
168
+ return false;
169
+ // Check additional conditions if present
170
+ if (bug.condition && !bug.condition())
171
+ return false;
172
+ return true;
173
+ });
174
+ const approvedDevOverride = getApprovedDevOverride(version);
175
+ return {
176
+ passed: triggeredBugs.length === 0,
177
+ version,
178
+ triggeredBugs,
179
+ usesAdapter,
180
+ approvedDevOverride,
181
+ };
182
+ }
183
+ async function run() {
184
+ console.log(`\n${console_chars_1.emoji.search} PRISMA VERSION KNOWN BUGS CHECK`);
185
+ console.log((0, console_chars_1.createDivider)(65, "heavy"));
186
+ const result = checkPrismaVersion();
187
+ if (!result.version) {
188
+ console.log(`\n ${console_chars_1.emoji.warning} Prisma not found in package.json`);
189
+ console.log(` Skipping version check.`);
190
+ console.log(`\n${console_chars_1.emoji.success} PRISMA VERSION CHECK PASSED (no Prisma found)`);
191
+ return { success: true, errors: 0, warnings: 0 };
192
+ }
193
+ console.log(`\n Prisma version: ${result.version}`);
194
+ console.log(` Uses driver adapter: ${result.usesAdapter ? "Yes" : "No"}`);
195
+ // Show dev override info if applicable
196
+ if (result.approvedDevOverride) {
197
+ console.log(` Approved dev override: Yes`);
198
+ console.log(` Reason: ${result.approvedDevOverride.reason} (${result.approvedDevOverride.bugId})`);
199
+ console.log(` Note: Do not downgrade to stable until ${result.approvedDevOverride.minDevVersion.split("-")[0]} stable is released`);
200
+ }
201
+ if (result.passed) {
202
+ console.log(`\n${console_chars_1.emoji.success} PRISMA VERSION CHECK PASSED`);
203
+ console.log(`\nNo known critical bugs affect this Prisma version.`);
204
+ return { success: true, errors: 0, warnings: 0 };
205
+ }
206
+ console.log(`\n${console_chars_1.emoji.error} Found ${result.triggeredBugs.length} known bug(s) affecting this version:`);
207
+ for (const bug of result.triggeredBugs) {
208
+ console.log(`\n [${bug.id}] ${bug.title}`);
209
+ console.log(` ${bug.description}`);
210
+ console.log(` Fixed in: ${bug.fixedIn}`);
211
+ console.log(` Reference: ${bug.reference}`);
212
+ }
213
+ console.log(`\n${console_chars_1.emoji.info} FIX:`);
214
+ console.log(` Upgrade Prisma to a version with the fix:`);
215
+ console.log(` pnpm add prisma@latest @prisma/client@latest @prisma/adapter-pg@latest`);
216
+ console.log(`\n Or if the fix is only in dev versions:`);
217
+ console.log(` pnpm add prisma@dev @prisma/client@dev @prisma/adapter-pg@dev`);
218
+ console.log(`\n${console_chars_1.emoji.error} PRISMA VERSION CHECK FAILED`);
219
+ return { success: false, errors: result.triggeredBugs.length, warnings: 0 };
220
+ }
221
+ // Allow direct execution
222
+ if (require.main === module) {
223
+ run()
224
+ .then((result) => {
225
+ process.exit(result.success ? 0 : 1);
226
+ })
227
+ .catch((err) => {
228
+ console.error(`${console_chars_1.emoji.error} Preflight failed:`, err);
229
+ process.exit(1);
230
+ });
231
+ }
232
+ //# sourceMappingURL=prisma-version-bugs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-version-bugs.js","sourceRoot":"","sources":["../../../src/checks/framework/prisma-version-bugs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Preflight Check: Turbopack Prisma External Packages
4
+ *
5
+ * Category: framework
6
+ * Severity: blocking
7
+ *
8
+ * Ensures that Prisma packages are properly excluded from Turbopack bundling
9
+ * in next.config.js via serverExternalPackages.
10
+ *
11
+ * WHY THIS MATTERS:
12
+ * When Turbopack bundles @prisma/client, it can mangle the internal column name
13
+ * resolution, causing runtime errors like:
14
+ * "The column `(not available)` does not exist in the current database"
15
+ *
16
+ * This happens because Prisma's query builder dynamically resolves column names
17
+ * at runtime using the generated client's metadata. Turbopack's bundling breaks
18
+ * this resolution, especially for columns using @map() in the schema.
19
+ *
20
+ * SOLUTION:
21
+ * Add "@prisma/client" and "prisma" to serverExternalPackages in next.config.js
22
+ * to prevent Turbopack from bundling them.
23
+ *
24
+ * @see https://nextjs.org/docs/app/api-reference/next-config-js/serverExternalPackages
25
+ */
26
+ export declare const id = "framework/turbopack-prisma-external";
27
+ export declare const name = "Turbopack Prisma External Packages";
28
+ export declare const category = "framework";
29
+ export declare const blocking = true;
30
+ export declare const description = "Ensures Prisma packages are excluded from Turbopack bundling";
31
+ export declare const tags: string[];
32
+ export declare function run(): Promise<{
33
+ success: boolean;
34
+ errors: number;
35
+ warnings: number;
36
+ }>;
37
+ //# sourceMappingURL=turbopack-prisma-external.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turbopack-prisma-external.d.ts","sourceRoot":"","sources":["../../../src/checks/framework/turbopack-prisma-external.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,eAAO,MAAM,EAAE,wCAAwC,CAAC;AACxD,eAAO,MAAM,IAAI,uCAAuC,CAAC;AACzD,eAAO,MAAM,QAAQ,cAAc,CAAC;AACpC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,iEAAiE,CAAC;AAC1F,eAAO,MAAM,IAAI,UAA+C,CAAC;AAmFjE,wBAAsB,GAAG,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAwC3F"}
@@ -0,0 +1,144 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Preflight Check: Turbopack Prisma External Packages
5
+ *
6
+ * Category: framework
7
+ * Severity: blocking
8
+ *
9
+ * Ensures that Prisma packages are properly excluded from Turbopack bundling
10
+ * in next.config.js via serverExternalPackages.
11
+ *
12
+ * WHY THIS MATTERS:
13
+ * When Turbopack bundles @prisma/client, it can mangle the internal column name
14
+ * resolution, causing runtime errors like:
15
+ * "The column `(not available)` does not exist in the current database"
16
+ *
17
+ * This happens because Prisma's query builder dynamically resolves column names
18
+ * at runtime using the generated client's metadata. Turbopack's bundling breaks
19
+ * this resolution, especially for columns using @map() in the schema.
20
+ *
21
+ * SOLUTION:
22
+ * Add "@prisma/client" and "prisma" to serverExternalPackages in next.config.js
23
+ * to prevent Turbopack from bundling them.
24
+ *
25
+ * @see https://nextjs.org/docs/app/api-reference/next-config-js/serverExternalPackages
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
29
+ exports.run = run;
30
+ const fs_1 = require("fs");
31
+ const path_1 = require("path");
32
+ const console_chars_1 = require("../../utils/console-chars");
33
+ // Preflight metadata
34
+ exports.id = "framework/turbopack-prisma-external";
35
+ exports.name = "Turbopack Prisma External Packages";
36
+ exports.category = "framework";
37
+ exports.blocking = true;
38
+ exports.description = "Ensures Prisma packages are excluded from Turbopack bundling";
39
+ exports.tags = ["turbopack", "prisma", "next.js", "config"];
40
+ const NEXT_CONFIG_PATH = (0, path_1.join)(process.cwd(), "next.config.js");
41
+ const NEXT_CONFIG_TS_PATH = (0, path_1.join)(process.cwd(), "next.config.ts");
42
+ const NEXT_CONFIG_MJS_PATH = (0, path_1.join)(process.cwd(), "next.config.mjs");
43
+ const REQUIRED_EXTERNAL_PACKAGES = ["@prisma/client", "prisma"];
44
+ function findNextConfig() {
45
+ if ((0, fs_1.existsSync)(NEXT_CONFIG_PATH))
46
+ return NEXT_CONFIG_PATH;
47
+ if ((0, fs_1.existsSync)(NEXT_CONFIG_TS_PATH))
48
+ return NEXT_CONFIG_TS_PATH;
49
+ if ((0, fs_1.existsSync)(NEXT_CONFIG_MJS_PATH))
50
+ return NEXT_CONFIG_MJS_PATH;
51
+ return null;
52
+ }
53
+ function extractServerExternalPackages(content) {
54
+ // Match serverExternalPackages array in various formats:
55
+ // serverExternalPackages: ["sharp", "@prisma/client"]
56
+ // serverExternalPackages: ['sharp', '@prisma/client']
57
+ const patterns = [
58
+ /serverExternalPackages\s*:\s*\[([\s\S]*?)\]/,
59
+ /serverExternalPackages\s*=\s*\[([\s\S]*?)\]/,
60
+ ];
61
+ for (const pattern of patterns) {
62
+ const match = content.match(pattern);
63
+ if (match && match[1]) {
64
+ // Extract quoted strings from the array content
65
+ const arrayContent = match[1];
66
+ const packages = [];
67
+ // Match both single and double quoted strings
68
+ const stringPattern = /["']([^"']+)["']/g;
69
+ let stringMatch;
70
+ while ((stringMatch = stringPattern.exec(arrayContent)) !== null) {
71
+ packages.push(stringMatch[1]);
72
+ }
73
+ return packages;
74
+ }
75
+ }
76
+ return [];
77
+ }
78
+ function checkConfig() {
79
+ const configPath = findNextConfig();
80
+ if (!configPath) {
81
+ return {
82
+ passed: false,
83
+ configPath: null,
84
+ missingPackages: [...REQUIRED_EXTERNAL_PACKAGES],
85
+ foundPackages: [],
86
+ };
87
+ }
88
+ const content = (0, fs_1.readFileSync)(configPath, "utf-8");
89
+ const externalPackages = extractServerExternalPackages(content);
90
+ const missingPackages = REQUIRED_EXTERNAL_PACKAGES.filter((pkg) => !externalPackages.includes(pkg));
91
+ const foundPackages = REQUIRED_EXTERNAL_PACKAGES.filter((pkg) => externalPackages.includes(pkg));
92
+ return {
93
+ passed: missingPackages.length === 0,
94
+ configPath,
95
+ missingPackages,
96
+ foundPackages,
97
+ };
98
+ }
99
+ async function run() {
100
+ console.log(`\n${console_chars_1.emoji.search} TURBOPACK PRISMA EXTERNAL PACKAGES CHECK`);
101
+ console.log((0, console_chars_1.createDivider)(65, "heavy"));
102
+ const result = checkConfig();
103
+ if (!result.configPath) {
104
+ console.log(`\n${console_chars_1.emoji.error} No next.config.js/ts/mjs found in project root.`);
105
+ console.log(` This check requires a Next.js configuration file.`);
106
+ console.log(`\n${console_chars_1.emoji.error} TURBOPACK PRISMA CHECK FAILED`);
107
+ return { success: false, errors: 1, warnings: 0 };
108
+ }
109
+ console.log(`\n Config file: ${result.configPath}`);
110
+ if (result.foundPackages.length > 0) {
111
+ console.log(` ${console_chars_1.emoji.success} Found in serverExternalPackages: ${result.foundPackages.join(", ")}`);
112
+ }
113
+ if (result.passed) {
114
+ console.log(`\n${console_chars_1.emoji.success} TURBOPACK PRISMA CHECK PASSED`);
115
+ console.log(`\nPrisma packages are correctly excluded from Turbopack bundling.`);
116
+ return { success: true, errors: 0, warnings: 0 };
117
+ }
118
+ console.log(`\n${console_chars_1.emoji.error} Missing from serverExternalPackages: ${result.missingPackages.join(", ")}`);
119
+ console.log(`\n${console_chars_1.emoji.info} WHY THIS MATTERS:`);
120
+ console.log(` When Turbopack bundles @prisma/client, it mangles internal column`);
121
+ console.log(` name resolution, causing runtime errors like:`);
122
+ console.log(` "The column \`(not available)\` does not exist in the current database"`);
123
+ console.log(`\n${console_chars_1.emoji.info} FIX:`);
124
+ console.log(` Add the following to serverExternalPackages in next.config.js:`);
125
+ console.log(`\n serverExternalPackages: [`);
126
+ console.log(` "sharp",`);
127
+ console.log(` "@prisma/client",`);
128
+ console.log(` "prisma",`);
129
+ console.log(` ],`);
130
+ console.log(`\n${console_chars_1.emoji.error} TURBOPACK PRISMA CHECK FAILED`);
131
+ return { success: false, errors: result.missingPackages.length, warnings: 0 };
132
+ }
133
+ // Allow direct execution
134
+ if (require.main === module) {
135
+ run()
136
+ .then((result) => {
137
+ process.exit(result.success ? 0 : 1);
138
+ })
139
+ .catch((err) => {
140
+ console.error(`${console_chars_1.emoji.error} Preflight failed:`, err);
141
+ process.exit(1);
142
+ });
143
+ }
144
+ //# sourceMappingURL=turbopack-prisma-external.js.map