@empline/preflight 1.1.14 ā 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.
- package/dist/checks/auth/session-provider-wrapper.d.ts +47 -0
- package/dist/checks/auth/session-provider-wrapper.d.ts.map +1 -0
- package/dist/checks/auth/session-provider-wrapper.js +286 -0
- package/dist/checks/auth/session-provider-wrapper.js.map +1 -0
- package/dist/checks/database/prisma-upsert-safety.d.ts +39 -0
- package/dist/checks/database/prisma-upsert-safety.d.ts.map +1 -0
- package/dist/checks/database/prisma-upsert-safety.js +220 -0
- package/dist/checks/database/prisma-upsert-safety.js.map +1 -0
- package/dist/checks/dependencies/dependency-health-monitor.d.ts +49 -0
- package/dist/checks/dependencies/dependency-health-monitor.d.ts.map +1 -0
- package/dist/checks/dependencies/dependency-health-monitor.js +323 -0
- package/dist/checks/dependencies/dependency-health-monitor.js.map +1 -0
- package/dist/checks/file-hygiene-validation.d.ts +31 -0
- package/dist/checks/file-hygiene-validation.d.ts.map +1 -0
- package/dist/checks/file-hygiene-validation.js +934 -0
- package/dist/checks/file-hygiene-validation.js.map +1 -0
- package/dist/checks/organization/file-cleanup-validation.d.ts +22 -0
- package/dist/checks/organization/file-cleanup-validation.d.ts.map +1 -0
- package/dist/checks/organization/file-cleanup-validation.js +1121 -0
- package/dist/checks/organization/file-cleanup-validation.js.map +1 -0
- package/dist/checks/runtime/tailwind-runtime-check.d.ts +36 -0
- package/dist/checks/runtime/tailwind-runtime-check.d.ts.map +1 -0
- package/dist/checks/runtime/tailwind-runtime-check.js +264 -0
- package/dist/checks/runtime/tailwind-runtime-check.js.map +1 -0
- package/dist/checks/shipping-integration-validation.d.ts +28 -0
- package/dist/checks/shipping-integration-validation.d.ts.map +1 -0
- package/dist/checks/shipping-integration-validation.js +409 -0
- package/dist/checks/shipping-integration-validation.js.map +1 -0
- package/dist/checks/system/layout-constants-sync.d.ts +36 -0
- package/dist/checks/system/layout-constants-sync.d.ts.map +1 -0
- package/dist/checks/system/layout-constants-sync.js +642 -0
- package/dist/checks/system/layout-constants-sync.js.map +1 -0
- package/dist/checks/system/preflight-circular-dependency-detector.d.ts +26 -0
- package/dist/checks/system/preflight-circular-dependency-detector.d.ts.map +1 -0
- package/dist/checks/system/preflight-circular-dependency-detector.js +310 -0
- package/dist/checks/system/preflight-circular-dependency-detector.js.map +1 -0
- package/dist/checks/system/preflight-execution-benchmarks.d.ts +24 -0
- package/dist/checks/system/preflight-execution-benchmarks.d.ts.map +1 -0
- package/dist/checks/system/preflight-execution-benchmarks.js +282 -0
- package/dist/checks/system/preflight-execution-benchmarks.js.map +1 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts +27 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.d.ts.map +1 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.js +361 -0
- package/dist/checks/system/preflight-tag-taxonomy-validator.js.map +1 -0
- package/dist/utils/console-chars.d.ts +16 -0
- package/dist/utils/console-chars.d.ts.map +1 -1
- package/dist/utils/console-chars.js +10 -0
- package/dist/utils/console-chars.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Shipping Integration Validation Preflight
|
|
5
|
+
*
|
|
6
|
+
* Validates that shipping rules configured in the seller dashboard
|
|
7
|
+
* are properly integrated with checkout and cart functionality.
|
|
8
|
+
*
|
|
9
|
+
* BLOCKING: Ensures shipping features work end-to-end
|
|
10
|
+
*
|
|
11
|
+
* Checks:
|
|
12
|
+
* 1. All ShippingRuleType enum values are handled in calculator
|
|
13
|
+
* 2. All shipping rule fields are saved by API
|
|
14
|
+
* 3. All shipping rule fields are used in calculation
|
|
15
|
+
* 4. Checkout component displays all shipping result fields
|
|
16
|
+
* 5. No orphaned shipping features (configured but not used)
|
|
17
|
+
*/
|
|
18
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
30
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31
|
+
}) : function(o, v) {
|
|
32
|
+
o["default"] = v;
|
|
33
|
+
});
|
|
34
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
35
|
+
var ownKeys = function(o) {
|
|
36
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
37
|
+
var ar = [];
|
|
38
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
return ownKeys(o);
|
|
42
|
+
};
|
|
43
|
+
return function (mod) {
|
|
44
|
+
if (mod && mod.__esModule) return mod;
|
|
45
|
+
var result = {};
|
|
46
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
47
|
+
__setModuleDefault(result, mod);
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
})();
|
|
51
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
|
+
exports.requires = exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
|
|
53
|
+
exports.run = run;
|
|
54
|
+
const fs = __importStar(require("fs"));
|
|
55
|
+
const console_chars_1 = require("../utils/console-chars");
|
|
56
|
+
const universal_progress_reporter_1 = require("./system/universal-progress-reporter");
|
|
57
|
+
// Check metadata
|
|
58
|
+
exports.id = "misc/shipping-integration-validation";
|
|
59
|
+
exports.name = "Shipping Integration Validation";
|
|
60
|
+
exports.category = "misc";
|
|
61
|
+
exports.blocking = true;
|
|
62
|
+
exports.description = "Shipping Integration Validation Preflight";
|
|
63
|
+
exports.tags = ["misc", "validation"];
|
|
64
|
+
exports.requires = ["trading-card-system"];
|
|
65
|
+
const BLOCKING = true;
|
|
66
|
+
// Dynamic import for project-specific constants
|
|
67
|
+
let SHIPPING_RULE_TYPE = {};
|
|
68
|
+
async function loadProjectDependencies() {
|
|
69
|
+
try {
|
|
70
|
+
const shippingPath = "../../../lib/constants/shipping";
|
|
71
|
+
const mod = await Promise.resolve(`${shippingPath}`).then(s => __importStar(require(s)));
|
|
72
|
+
SHIPPING_RULE_TYPE = mod.SHIPPING_RULE_TYPE;
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// All shipping rule types from centralized constants
|
|
80
|
+
const SHIPPING_RULE_TYPES = Object.values(SHIPPING_RULE_TYPE);
|
|
81
|
+
// All shipping rule fields that should be saved and used
|
|
82
|
+
const SHIPPING_RULE_FIELDS = [
|
|
83
|
+
"baseRate",
|
|
84
|
+
"freeShippingThreshold",
|
|
85
|
+
"carrier",
|
|
86
|
+
"serviceType",
|
|
87
|
+
"maxWeight",
|
|
88
|
+
"handlingFee",
|
|
89
|
+
"insuranceFee",
|
|
90
|
+
"expeditedRate",
|
|
91
|
+
"domesticOnly",
|
|
92
|
+
"internationalRate",
|
|
93
|
+
"restrictedStates",
|
|
94
|
+
"restrictedCountries",
|
|
95
|
+
"processingTime",
|
|
96
|
+
"estimatedDelivery",
|
|
97
|
+
"minimumOrderValue",
|
|
98
|
+
"maximumOrderValue",
|
|
99
|
+
"applicableCategories",
|
|
100
|
+
"excludedCategories",
|
|
101
|
+
"promotionalRate",
|
|
102
|
+
"promotionStartDate",
|
|
103
|
+
"promotionEndDate",
|
|
104
|
+
"promotionDescription",
|
|
105
|
+
"weightRanges",
|
|
106
|
+
"quantityDiscounts",
|
|
107
|
+
"zoneRates",
|
|
108
|
+
];
|
|
109
|
+
// Fields that should be returned in shipping calculation result
|
|
110
|
+
const RESULT_FIELDS = [
|
|
111
|
+
"shippingCost",
|
|
112
|
+
"shippingRuleName",
|
|
113
|
+
"shippingRuleType",
|
|
114
|
+
"carrier",
|
|
115
|
+
"isFreeShipping",
|
|
116
|
+
"isPickupOnly",
|
|
117
|
+
"estimatedDelivery",
|
|
118
|
+
"handlingFee",
|
|
119
|
+
"insuranceFee",
|
|
120
|
+
"promotionApplied",
|
|
121
|
+
"promotionDescription",
|
|
122
|
+
"error",
|
|
123
|
+
];
|
|
124
|
+
function checkShippingCalculator() {
|
|
125
|
+
const issues = [];
|
|
126
|
+
const calculatorPath = "lib/shipping-calculator.ts";
|
|
127
|
+
if (!fs.existsSync(calculatorPath)) {
|
|
128
|
+
issues.push({
|
|
129
|
+
file: calculatorPath,
|
|
130
|
+
type: "error",
|
|
131
|
+
message: "Shipping calculator file not found",
|
|
132
|
+
});
|
|
133
|
+
return issues;
|
|
134
|
+
}
|
|
135
|
+
const content = fs.readFileSync(calculatorPath, "utf-8");
|
|
136
|
+
// Check all rule types are handled
|
|
137
|
+
for (const ruleType of SHIPPING_RULE_TYPES) {
|
|
138
|
+
// Look for case statement or condition handling this type
|
|
139
|
+
const patterns = [
|
|
140
|
+
new RegExp(`case\\s+["']${ruleType}["']`, "i"),
|
|
141
|
+
new RegExp(`===\\s*["']${ruleType}["']`, "i"),
|
|
142
|
+
new RegExp(`type\\s*===\\s*["']${ruleType}["']`, "i"),
|
|
143
|
+
];
|
|
144
|
+
const isHandled = patterns.some((p) => p.test(content));
|
|
145
|
+
if (!isHandled) {
|
|
146
|
+
issues.push({
|
|
147
|
+
file: calculatorPath,
|
|
148
|
+
type: "error",
|
|
149
|
+
message: `Shipping rule type "${ruleType}" is not handled in calculator`,
|
|
150
|
+
suggestion: `Add case "${ruleType}": in calculateByRuleType switch statement`,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Check result interface has all fields
|
|
155
|
+
for (const field of RESULT_FIELDS) {
|
|
156
|
+
if (!content.includes(field)) {
|
|
157
|
+
issues.push({
|
|
158
|
+
file: calculatorPath,
|
|
159
|
+
type: "warning",
|
|
160
|
+
message: `Result field "${field}" may not be returned by calculator`,
|
|
161
|
+
suggestion: `Ensure ShippingCalculationResult interface includes ${field}`,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return issues;
|
|
166
|
+
}
|
|
167
|
+
function checkShippingAPI() {
|
|
168
|
+
const issues = [];
|
|
169
|
+
const apiPath = "app/api/store/shipping-rules/route.ts";
|
|
170
|
+
if (!fs.existsSync(apiPath)) {
|
|
171
|
+
issues.push({
|
|
172
|
+
file: apiPath,
|
|
173
|
+
type: "error",
|
|
174
|
+
message: "Shipping rules API route not found",
|
|
175
|
+
});
|
|
176
|
+
return issues;
|
|
177
|
+
}
|
|
178
|
+
const content = fs.readFileSync(apiPath, "utf-8");
|
|
179
|
+
// Check all fields are in Zod schema
|
|
180
|
+
for (const field of SHIPPING_RULE_FIELDS) {
|
|
181
|
+
if (!content.includes(field)) {
|
|
182
|
+
issues.push({
|
|
183
|
+
file: apiPath,
|
|
184
|
+
type: "warning",
|
|
185
|
+
message: `Field "${field}" may not be validated in API schema`,
|
|
186
|
+
suggestion: `Add ${field} to ShippingRuleSchema`,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Check carrier and serviceType are saved
|
|
191
|
+
if (!content.includes("carrier: rule.carrier")) {
|
|
192
|
+
issues.push({
|
|
193
|
+
file: apiPath,
|
|
194
|
+
type: "error",
|
|
195
|
+
message: "Carrier field is not being saved to database",
|
|
196
|
+
suggestion: "Add carrier: rule.carrier to create data object",
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
if (!content.includes("serviceType: rule.serviceType")) {
|
|
200
|
+
issues.push({
|
|
201
|
+
file: apiPath,
|
|
202
|
+
type: "error",
|
|
203
|
+
message: "ServiceType field is not being saved to database",
|
|
204
|
+
suggestion: "Add serviceType: rule.serviceType to create data object",
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
return issues;
|
|
208
|
+
}
|
|
209
|
+
function checkCheckoutComponent() {
|
|
210
|
+
const issues = [];
|
|
211
|
+
const checkoutPath = "components/checkout/ShippingCalculator.tsx";
|
|
212
|
+
if (!fs.existsSync(checkoutPath)) {
|
|
213
|
+
issues.push({
|
|
214
|
+
file: checkoutPath,
|
|
215
|
+
type: "error",
|
|
216
|
+
message: "ShippingCalculator component not found",
|
|
217
|
+
});
|
|
218
|
+
return issues;
|
|
219
|
+
}
|
|
220
|
+
const content = fs.readFileSync(checkoutPath, "utf-8");
|
|
221
|
+
// Check important result fields are displayed
|
|
222
|
+
const displayFields = [
|
|
223
|
+
"shippingCost",
|
|
224
|
+
"isFreeShipping",
|
|
225
|
+
"isPickupOnly",
|
|
226
|
+
"carrier",
|
|
227
|
+
"estimatedDelivery",
|
|
228
|
+
"promotionApplied",
|
|
229
|
+
"handlingFee",
|
|
230
|
+
"insuranceFee",
|
|
231
|
+
];
|
|
232
|
+
for (const field of displayFields) {
|
|
233
|
+
if (!content.includes(field)) {
|
|
234
|
+
issues.push({
|
|
235
|
+
file: checkoutPath,
|
|
236
|
+
type: "warning",
|
|
237
|
+
message: `Field "${field}" may not be displayed in checkout`,
|
|
238
|
+
suggestion: `Consider displaying ${field} in shipping breakdown`,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Check context is being passed
|
|
243
|
+
if (!content.includes("destinationZip")) {
|
|
244
|
+
issues.push({
|
|
245
|
+
file: checkoutPath,
|
|
246
|
+
type: "error",
|
|
247
|
+
message: "Destination ZIP is not being passed to shipping API",
|
|
248
|
+
suggestion: "Include destinationZip in context object",
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
return issues;
|
|
252
|
+
}
|
|
253
|
+
function checkCalculateAPI() {
|
|
254
|
+
const issues = [];
|
|
255
|
+
const apiPath = "app/api/shipping/calculate/route.ts";
|
|
256
|
+
if (!fs.existsSync(apiPath)) {
|
|
257
|
+
issues.push({
|
|
258
|
+
file: apiPath,
|
|
259
|
+
type: "error",
|
|
260
|
+
message: "Shipping calculate API route not found",
|
|
261
|
+
});
|
|
262
|
+
return issues;
|
|
263
|
+
}
|
|
264
|
+
const content = fs.readFileSync(apiPath, "utf-8");
|
|
265
|
+
// Check context is accepted
|
|
266
|
+
if (!content.includes("context")) {
|
|
267
|
+
issues.push({
|
|
268
|
+
file: apiPath,
|
|
269
|
+
type: "error",
|
|
270
|
+
message: "API does not accept shipping context",
|
|
271
|
+
suggestion: "Add context parameter to request schema",
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
// Check all result fields are returned in breakdown
|
|
275
|
+
const breakdownFields = [
|
|
276
|
+
"carrier",
|
|
277
|
+
"isPickupOnly",
|
|
278
|
+
"estimatedDelivery",
|
|
279
|
+
"handlingFee",
|
|
280
|
+
"insuranceFee",
|
|
281
|
+
"promotionApplied",
|
|
282
|
+
"promotionDescription",
|
|
283
|
+
];
|
|
284
|
+
for (const field of breakdownFields) {
|
|
285
|
+
if (!content.includes(field)) {
|
|
286
|
+
issues.push({
|
|
287
|
+
file: apiPath,
|
|
288
|
+
type: "warning",
|
|
289
|
+
message: `Field "${field}" may not be returned in API breakdown`,
|
|
290
|
+
suggestion: `Add ${field}: result.${field} to breakdown mapping`,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return issues;
|
|
295
|
+
}
|
|
296
|
+
function checkBasicConfigComponent() {
|
|
297
|
+
const issues = [];
|
|
298
|
+
const configPath = "app/store/shipping/components/ShippingRuleBasicConfig.tsx";
|
|
299
|
+
if (!fs.existsSync(configPath)) {
|
|
300
|
+
issues.push({
|
|
301
|
+
file: configPath,
|
|
302
|
+
type: "error",
|
|
303
|
+
message: "ShippingRuleBasicConfig component not found",
|
|
304
|
+
});
|
|
305
|
+
return issues;
|
|
306
|
+
}
|
|
307
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
308
|
+
// Check all rule types are selectable
|
|
309
|
+
for (const ruleType of SHIPPING_RULE_TYPES) {
|
|
310
|
+
// Skip USPS_CALCULATED as it's being replaced by CALCULATED + carrier
|
|
311
|
+
if (ruleType === "USPS_CALCULATED")
|
|
312
|
+
continue;
|
|
313
|
+
if (!content.includes(ruleType)) {
|
|
314
|
+
issues.push({
|
|
315
|
+
file: configPath,
|
|
316
|
+
type: "warning",
|
|
317
|
+
message: `Shipping type "${ruleType}" is not selectable in UI`,
|
|
318
|
+
suggestion: `Add ${ruleType} to SHIPPING_TYPES array`,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// Check carrier selection exists for CALCULATED type
|
|
323
|
+
if (!content.includes("CARRIERS") && !content.includes("carrier")) {
|
|
324
|
+
issues.push({
|
|
325
|
+
file: configPath,
|
|
326
|
+
type: "error",
|
|
327
|
+
message: "Carrier selection not available for CALCULATED type",
|
|
328
|
+
suggestion: "Add carrier dropdown when CALCULATED is selected",
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
return issues;
|
|
332
|
+
}
|
|
333
|
+
async function run() {
|
|
334
|
+
const reporter = (0, universal_progress_reporter_1.createUniversalProgressReporter)(exports.name);
|
|
335
|
+
// Load project-specific dependencies
|
|
336
|
+
const loaded = await loadProjectDependencies();
|
|
337
|
+
if (!loaded) {
|
|
338
|
+
console.log(`${console_chars_1.emoji.skip} Skipping: project-specific modules not available`);
|
|
339
|
+
return { passed: true, skipped: true };
|
|
340
|
+
}
|
|
341
|
+
console.log("\nš SHIPPING INTEGRATION VALIDATION");
|
|
342
|
+
console.log((0, console_chars_1.createDivider)(60, "heavy"));
|
|
343
|
+
console.log("Validating shipping rules are properly integrated...\n");
|
|
344
|
+
const allIssues = [];
|
|
345
|
+
// Run all checks
|
|
346
|
+
console.log(`${console_chars_1.emoji.package} Checking shipping calculator...`);
|
|
347
|
+
allIssues.push(...checkShippingCalculator());
|
|
348
|
+
console.log("š” Checking shipping rules API...");
|
|
349
|
+
allIssues.push(...checkShippingAPI());
|
|
350
|
+
console.log("š Checking checkout component...");
|
|
351
|
+
allIssues.push(...checkCheckoutComponent());
|
|
352
|
+
console.log("š Checking calculate API...");
|
|
353
|
+
allIssues.push(...checkCalculateAPI());
|
|
354
|
+
console.log(`${console_chars_1.emoji.gear} Checking basic config component...`);
|
|
355
|
+
allIssues.push(...checkBasicConfigComponent());
|
|
356
|
+
// Categorize issues
|
|
357
|
+
const errors = allIssues.filter((i) => i.type === "error");
|
|
358
|
+
const warnings = allIssues.filter((i) => i.type === "warning");
|
|
359
|
+
const infos = allIssues.filter((i) => i.type === "info");
|
|
360
|
+
console.log("\n" + (0, console_chars_1.createDivider)(60, "heavy"));
|
|
361
|
+
if (allIssues.length === 0) {
|
|
362
|
+
console.log(`${console_chars_1.emoji.success} All shipping integration checks passed!\n`);
|
|
363
|
+
process.exit(0);
|
|
364
|
+
}
|
|
365
|
+
// Print errors
|
|
366
|
+
if (errors.length > 0) {
|
|
367
|
+
console.log(`\n${console_chars_1.emoji.error} ERRORS (${errors.length}):\n`);
|
|
368
|
+
for (const issue of errors) {
|
|
369
|
+
console.log(` ${console_chars_1.emoji.folder} ${issue.file}`);
|
|
370
|
+
console.log(` ${issue.message}`);
|
|
371
|
+
if (issue.suggestion) {
|
|
372
|
+
console.log(` ${console_chars_1.emoji.hint} ${issue.suggestion}`);
|
|
373
|
+
}
|
|
374
|
+
console.log("");
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// Print warnings
|
|
378
|
+
if (warnings.length > 0) {
|
|
379
|
+
console.log(`\n${console_chars_1.emoji.warning} WARNINGS (${warnings.length}):\n`);
|
|
380
|
+
for (const issue of warnings) {
|
|
381
|
+
console.log(` ${console_chars_1.emoji.folder} ${issue.file}`);
|
|
382
|
+
console.log(` ${issue.message}`);
|
|
383
|
+
if (issue.suggestion) {
|
|
384
|
+
console.log(` ${console_chars_1.emoji.hint} ${issue.suggestion}`);
|
|
385
|
+
}
|
|
386
|
+
console.log("");
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Print info
|
|
390
|
+
if (infos.length > 0) {
|
|
391
|
+
console.log(`\n${console_chars_1.emoji.info} INFO (${infos.length}):\n`);
|
|
392
|
+
for (const issue of infos) {
|
|
393
|
+
console.log(` ${console_chars_1.emoji.folder} ${issue.file}: ${issue.message}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
console.log((0, console_chars_1.createDivider)(60, "heavy"));
|
|
397
|
+
console.log(`\n${console_chars_1.emoji.chart} Summary: ${errors.length} errors, ${warnings.length} warnings, ${infos.length} info\n`);
|
|
398
|
+
if (BLOCKING && errors.length > 0) {
|
|
399
|
+
console.log(`${console_chars_1.emoji.error} SHIPPING INTEGRATION CHECK FAILED (blocking)\n`);
|
|
400
|
+
process.exit(1);
|
|
401
|
+
}
|
|
402
|
+
console.log(`${console_chars_1.emoji.warning} SHIPPING INTEGRATION CHECK: Passed with warnings\n`);
|
|
403
|
+
process.exit(0);
|
|
404
|
+
}
|
|
405
|
+
// Allow direct execution
|
|
406
|
+
if (require.main === module) {
|
|
407
|
+
run().catch(console.error);
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=shipping-integration-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shipping-integration-validation.js","sourceRoot":"","sources":["../../src/checks/shipping-integration-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Layout Constants Sync Preflight - IRON-CLAD ENFORCEMENT
|
|
4
|
+
*
|
|
5
|
+
* Ensures consistency between:
|
|
6
|
+
* 1. Shared layout constants (single source of truth)
|
|
7
|
+
* 2. Actual layout component implementations
|
|
8
|
+
* 3. Preflights that reference layout components
|
|
9
|
+
* 4. Identifies opportunities for consolidation (shown as warnings)
|
|
10
|
+
*
|
|
11
|
+
* This prevents drift where constants say one thing but implementations do another.
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* pnpm preflight:layout-constants-sync # All checks including opportunities
|
|
15
|
+
* pnpm preflight:layout-constants-sync --verbose # Show all details
|
|
16
|
+
*
|
|
17
|
+
* Checks performed:
|
|
18
|
+
* 1. Layout components implement expected gap values (BLOCKING)
|
|
19
|
+
* 2. Preflights import from shared constants (not hardcoded)
|
|
20
|
+
* 3. All registered components exist (BLOCKING)
|
|
21
|
+
* 4. Unregistered gap layouts are flagged
|
|
22
|
+
* 5. Hardcoded spacing that could use constants (WARNING)
|
|
23
|
+
* 6. Components that could benefit from shared constants (WARNING)
|
|
24
|
+
*/
|
|
25
|
+
export declare const id = "system/layout-constants-sync";
|
|
26
|
+
export declare const name = "Layout Constants Sync";
|
|
27
|
+
export declare const category = "system";
|
|
28
|
+
export declare const blocking = true;
|
|
29
|
+
export declare const description = "Layout Constants Sync Preflight - IRON-CLAD ENFORCEMENT";
|
|
30
|
+
export declare const tags: string[];
|
|
31
|
+
export declare const requires: string[];
|
|
32
|
+
export declare function run(): Promise<{
|
|
33
|
+
passed: boolean;
|
|
34
|
+
skipped: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
//# sourceMappingURL=layout-constants-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-constants-sync.d.ts","sourceRoot":"","sources":["../../../src/checks/system/layout-constants-sync.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,eAAO,MAAM,EAAE,iCAAiC,CAAC;AACjD,eAAO,MAAM,IAAI,0BAA0B,CAAC;AAC5C,eAAO,MAAM,QAAQ,WAAW,CAAC;AACjC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,4DAA4D,CAAC;AACrF,eAAO,MAAM,IAAI,UAAa,CAAC;AAC/B,eAAO,MAAM,QAAQ,UAA0B,CAAC;AAyjBhD,wBAAsB,GAAG;;;GAwHxB"}
|