@zappie/check 0.6.6 → 0.6.8
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/CHANGELOG.md +16 -0
- package/dist/chunk-CBYFCC3K.js +2 -0
- package/dist/chunk-CBYFCC3K.js.map +1 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/step-worker.js +4 -0
- package/dist/step-worker.js.map +1 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @zappie/check
|
|
2
2
|
|
|
3
|
+
## 0.6.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [97d7e6a]
|
|
8
|
+
- @zappie/sdk@0.7.0
|
|
9
|
+
- eslint-plugin-zappie@0.6.0
|
|
10
|
+
|
|
11
|
+
## 0.6.7
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 5771169: The lint step now runs ESLint in its own node process, which exits when the step ends. ESLint builds a TypeScript program for the typed rules, and before this the check process kept that memory while `tsc` and the tests ran, so the check used the memory of both at once. On a site where lint takes about 850 MB, the types and test steps now start with that memory freed.
|
|
16
|
+
|
|
17
|
+
The step's result, problems, progress events and time limit are unchanged. When the step is stopped, by its limit or by the run's `signal`, its process gets SIGTERM and then SIGKILL after 2 seconds, like the commands the other steps run. If the lint process runs out of memory or crashes, the lint step fails with its exit code and last error line, where before the whole check stopped. `checkLint` still runs in the calling process.
|
|
18
|
+
|
|
3
19
|
## 0.6.6
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var P="hours contact offers delivery about gallery".split(" ");var SHAPE={"":{version:1,source:["intake","surprise","settings"],updatedAt:"date",business:0,vibe:["warm","bold","calm","fresh"],colours:0,text:0,corners:["square","soft","round"],pages:"pages",tone:["friendly","playful","polished","direct"],photos:["bright","moody","plain","people"],"notes?":500},business:{name:80,"sells?":200,"audience?":200},colours:{main:"hex",background:"hex",highlight:"hex","mainFromLogo?":"bool"},text:{display:60,body:60}};function wrong(rule,value){if(rule===0)return;if(rule===1)return value===1?void 0:"must be 1";if(Array.isArray(rule))return rule.includes(value)?void 0:`must be one of ${rule.join(", ")}`;if(typeof rule==="number")return typeof value!=="string"||!value.trim()?"must be text":value.length>rule?`must be at most ${rule} characters`:void 0;if(rule==="hex")return/^#[\da-f]{6}$/i.test(String(value))?void 0:"must be a colour like #175c3a";if(rule==="bool")return typeof value==="boolean"?void 0:"must be true or false";if(rule==="date")return typeof value==="string"&&!Number.isNaN(Date.parse(value))?void 0:"must be a date and time";return Array.isArray(value)&&new Set(value).size===value.length&&value.every(page=>P.includes(page))?void 0:`must list each of ${P.join(", ")} at most once`}function validateBrand(value){const issues=[];for(const[at,rules]of Object.entries(SHAPE)){const object=at?value[at]:value;if(!object||typeof object!=="object"||Array.isArray(object)){if(!at||object!==void 0)issues.push({path:at||"$",message:"must be an object"});if(!at)return issues;continue}const keys=Object.keys(rules).map(key=>key.replace("?",""));for(const key of Object.keys(object))if(!keys.includes(key))issues.push({path:at?`${at}.${key}`:key,message:"is not a brand setting"});for(const[name,rule]of Object.entries(rules)){const key=name.replace("?","");const field=object[key];const message3=field===void 0?name.endsWith("?")?void 0:"is missing":wrong(rule,field);if(message3)issues.push({path:at?`${at}.${key}`:key,message:message3})}}return issues}var DEFAULT_BUDGETS={jsKbGz:200,cssKbGz:50,lcpMs:2500,tappableMs:3e3};var GLOBAL_PACKAGE_ALLOWLIST=["react","react-dom","react-router","@react-router/*","@zappie/*","tailwindcss","@tailwindcss/*","clsx","tailwind-merge","class-variance-authority","lucide-react","date-fns","embla-carousel-react","framer-motion/motion","zod","@radix-ui/*","sonner","vaul"];var record=value=>typeof value==="object"&&value!==null&&!Array.isArray(value);function distance(left,right){let row=Array.from({length:right.length+1},(_,index)=>index);for(let leftIndex=1;leftIndex<=left.length;leftIndex+=1){const next=[leftIndex];for(let rightIndex=1;rightIndex<=right.length;rightIndex+=1){next[rightIndex]=Math.min((next[rightIndex-1]??0)+1,(row[rightIndex]??0)+1,(row[rightIndex-1]??0)+(left[leftIndex-1]===right[rightIndex-1]?0:1))}row=next}return row[right.length]??Infinity}function unknownKeys(value,allowed,path6,issue){for(const key of Object.keys(value)){if(allowed.includes(key)){continue}const closest=allowed.map(candidate=>({candidate,score:distance(key,candidate)})).sort((left,right)=>left.score-right.score)[0];const hint=closest&&closest.score<=2?closest.candidate:void 0;issue({path:path6?`${path6}.${key}`:key,code:"unknown_key",message:hint?`Unknown field "${key}". Rename it to "${hint}".`:`Unknown field "${key}". Remove it from the configuration.`,severity:"error"})}}var nonblank=value=>typeof value==="string"&&value.trim().length>0;var packageName=value=>value.length<=214&&/^(?:@[a-z0-9][a-z0-9._~-]*\/[a-z0-9][a-z0-9._~-]*|[a-z0-9][a-z0-9._~-]*)$/.test(value);var globallyAllowed=value=>GLOBAL_PACKAGE_ALLOWLIST.some(allowed=>allowed.endsWith("/*")?value.startsWith(allowed.slice(0,-1)):value===allowed);function hostname(value){const wildcard=value.startsWith("*.");const host=wildcard?value.slice(2):value;if(!host.includes(".")||/^\d+(?:\.\d+){3}$/.test(host)||host.length>253||host.includes("..")||wildcard&&/^(?:ac|co|com|edu|gov|net|org)\.[^.]+$/i.test(host)){return false}return host.split(".").every(label=>label.length>0&&label.length<=63&&/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(label))}function nested(value,path6,keys,issue,validate){if(value===void 0){return}if(!record(value)){issue({path:path6,code:"invalid_type",message:`Expected an object. Set ${path6} to an object or remove it.`,severity:"error"});return}unknownKeys(value,keys,path6,issue);validate(value)}function budgets(value,issue,error){nested(value,"budgets",[...Object.keys(DEFAULT_BUDGETS),"override"],issue,budget=>{nested(budget.override,"budgets.override",["reason"],issue,override=>{if(typeof override.reason!=="string"||!override.reason.trim()){error("budgets.override.reason","invalid_format","Expected a non-blank reason. Explain why the default budget must be raised.")}});for(const key of Object.keys(DEFAULT_BUDGETS)){const amount=budget[key];const path6=`budgets.${key}`;if(amount===void 0){continue}if(typeof amount!=="number"||!Number.isFinite(amount)||amount<=0){error(path6,"invalid_type",`Expected a positive finite number. Set ${path6} to a number greater than zero.`)}else if(key==="tappableMs"&&amount>5e3){error(path6,"invalid_format","The tappableMs budget cannot exceed 5000. Set budgets.tappableMs to 5000 or less.")}else if(amount>DEFAULT_BUDGETS[key]){const message3=`The ${key} budget exceeds the ${DEFAULT_BUDGETS[key]} default.`;if(budget.override===void 0){error(path6,"budget_override",`${message3} Add budgets.override.reason to explain the increase.`)}else{issue({path:path6,code:"budget_override",message:`${message3} Lower it to the default when the exception is no longer needed.`,severity:"warning"})}}}})}function analytics(value,issue,error){nested(value,"analytics",["forward"],issue,analyticsValue=>{nested(analyticsValue.forward,"analytics.forward",["ga4","metaPixel"],issue,forward=>{if(forward.ga4!==void 0&&(typeof forward.ga4!=="string"||!/^G-[A-Z0-9]+$/.test(forward.ga4))){error("analytics.forward.ga4","invalid_format","Expected a GA4 measurement id beginning with G-. Use a value such as G-XXXXXXXXXX.")}if(forward.metaPixel!==void 0&&(typeof forward.metaPixel!=="string"||!/^\d+$/.test(forward.metaPixel))){error("analytics.forward.metaPixel","invalid_format","Expected a numeric Meta Pixel id. Use digits only.")}})})}var rootKeys=["store","branches","theme","prerender","menu","packages","audit","outbound","security","budgets","readiness","analytics","verify"];function validateConfig(input){const issues=[];const issue=value=>issues.push(value);const error=(path6,code,message3)=>issue({path:path6,code,message:message3,severity:"error"});if(!record(input)){return{valid:false,issues:[{path:"$",code:"invalid_type",message:"Expected a configuration object. Export an object from zappie.config.ts.",severity:"error"}]}}unknownKeys(input,rootKeys,"",issue);if(!nonblank(input.store)){error("store",input.store===void 0?"missing_required":"invalid_type","Expected a non-empty storefront slug. Set store to the slug used by createZappie().")}theme(input.theme,error);stringList(input.branches,"branches",error,{nonempty:true,unique:true,slug:true});stringList(input.prerender,"prerender",error,{unique:true})?.forEach((path6,index)=>{if(!path6.startsWith("/")){error(`prerender[${index}]`,"invalid_format","Expected a route starting with /. Prefix the route with /.")}});nested(input.menu,"menu",["hiddenCategories"],issue,value=>{stringList(value.hiddenCategories,"menu.hiddenCategories",error)});nested(input.packages,"packages",["allow"],issue,value=>{const allow=stringList(value.allow,"packages.allow",error);allow?.forEach((name,index)=>{if(globallyAllowed(name)){issue({path:`packages.allow[${index}]`,code:"redundant_allowlist",message:`${name} is already globally allowed. Remove it from packages.allow.`,severity:"warning"})}else if(!packageName(name)){error(`packages.allow[${index}]`,"invalid_format","Expected a lowercase npm package name. Use a package name such as lucide-react or @scope/name.")}})});nested(input.outbound,"outbound",["allow"],issue,value=>{hostList(value.allow,"outbound.allow",error)});nested(input.security,"security",["csp","links"],issue,security=>{hostList(security.links,"security.links",error);nested(security.csp,"security.csp",["imgSrc","connectSrc","fontSrc","styleSrc","frameSrc"],issue,csp=>{for(const[name,value]of Object.entries(csp)){hostList(value,`security.csp.${name}`,error)}})});budgets(input.budgets,issue,error);nested(input.readiness,"readiness",["routeDiscovery"],issue,readiness=>{nested(readiness.routeDiscovery,"readiness.routeDiscovery",["optOut"],issue,routeDiscovery=>{nested(routeDiscovery.optOut,"readiness.routeDiscovery.optOut",["reason"],issue,optOut=>{if(typeof optOut.reason!=="string"||!optOut.reason.trim()){error("readiness.routeDiscovery.optOut.reason","invalid_format","Expected a non-blank reason. Explain why the site disables initial route discovery.")}})})});analytics(input.analytics,issue,error);nested(input.verify,"verify",["startPath","cataloguePath"],issue,()=>{});return{valid:!issues.some(entry=>entry.severity==="error"),issues}}function theme(value,error){if(typeof value!=="string"){error("theme",value===void 0?"missing_required":"invalid_type","Expected a relative .json path. Set theme to a value such as ./theme.json.")}else if(!/\.json$/.test(value)||/^(?:[a-z][a-z\d+.-]*:|\/|\\)/i.test(value)||value.includes("\\")){error("theme","invalid_format","Expected a relative .json path. Use a value such as ./theme.json.")}}function stringList(value,path6,error,options={}){if(value===void 0){return void 0}if(!Array.isArray(value)||value.some(entry=>typeof entry!=="string")){error(path6,"invalid_type",`Expected an array of strings. Set ${path6} to string values.`);return void 0}if(options.nonempty&&value.length===0){error(path6,"invalid_format",`Expected at least one value. Add a value to ${path6} or remove the field.`)}value.forEach((entry,index)=>{if(options.slug&&!nonblank(entry)){error(`${path6}[${index}]`,"invalid_format","Expected a non-empty branch slug. Remove the empty value or use a branch slug.")}});if(options.unique&&new Set(value).size!==value.length){error(path6,"duplicate",`Expected unique values. Remove duplicates from ${path6}.`)}return value}function hostList(value,path6,error){stringList(value,path6,error)?.forEach((host,index)=>{if(!hostname(host)){error(`${path6}[${index}]`,"invalid_format","Expected a hostname or leading *. subdomain pattern without a scheme, path, port or IP. Use a value such as api.example.com.")}})}var COLOR_TOKENS=["--z-bg","--z-surface","--z-surface-raised","--z-overlay","--z-text","--z-text-muted","--z-text-inverse","--z-accent","--z-accent-contrast","--z-brand-1","--z-brand-2","--z-brand-3","--z-success","--z-warning","--z-danger","--z-border","--z-focus-ring"];var LENGTH_TOKENS=["--z-radius-sm","--z-radius-md","--z-radius-lg","--z-radius-pill","--z-space-1","--z-space-2","--z-space-3","--z-space-4","--z-space-5","--z-space-6","--z-space-7","--z-space-8","--z-text-xs","--z-text-sm","--z-text-md","--z-text-lg","--z-text-xl","--z-text-2xl","--z-text-3xl","--z-drawer-width","--z-dialog-width","--z-dialog-height","--z-media-sm"];var FONT_TOKENS=["--z-font-display","--z-font-body","--z-font-mono"];var DURATION_TOKENS=["--z-duration-fast","--z-duration-base","--z-duration-slow"];var EASING_TOKENS=["--z-ease-out","--z-ease-in-out"];var MOTION_TOKENS=[...DURATION_TOKENS,...EASING_TOKENS];var TOKEN_NAMES=[...COLOR_TOKENS,...LENGTH_TOKENS,...FONT_TOKENS,...MOTION_TOKENS];var REQUIRED_TOKENS=["--z-bg","--z-text","--z-accent","--z-accent-contrast"];var DEFAULT_TOKENS=Object.freeze({"--z-bg":"#F9FAFB","--z-surface":"#FFFFFF","--z-surface-raised":"#FFFFFF","--z-overlay":"#00000080","--z-text":"#101828","--z-text-muted":"#344054","--z-text-inverse":"#FFFFFF","--z-accent":"#9FE870","--z-accent-contrast":"#163300","--z-brand-1":"#9FE870","--z-brand-2":"#163300","--z-brand-3":"#EDC843","--z-success":"#027A48","--z-warning":"#ED7A37","--z-danger":"#F04438","--z-border":"#EAECF0","--z-focus-ring":"#163300","--z-radius-sm":"6px","--z-radius-md":"12px","--z-radius-lg":"20px","--z-radius-pill":"9999px","--z-space-1":"4px","--z-space-2":"8px","--z-space-3":"12px","--z-space-4":"16px","--z-space-5":"24px","--z-space-6":"32px","--z-space-7":"48px","--z-space-8":"64px","--z-font-display":"system-ui, sans-serif","--z-font-body":"system-ui, sans-serif","--z-font-mono":"ui-monospace, monospace","--z-text-xs":"12px","--z-text-sm":"14px","--z-text-md":"16px","--z-text-lg":"18px","--z-text-xl":"20px","--z-text-2xl":"24px","--z-text-3xl":"32px","--z-duration-fast":"120ms","--z-duration-base":"200ms","--z-duration-slow":"320ms","--z-ease-out":"cubic-bezier(0, 0, 0.2, 1)","--z-ease-in-out":"cubic-bezier(0.4, 0, 0.2, 1)","--z-drawer-width":"420px","--z-dialog-width":"min(1000px, calc(100vw - 32px))","--z-dialog-height":"min(780px, 90dvh)","--z-media-sm":"64px"});var DEFAULT_THEME=Object.freeze({version:1,name:"Zappie",tokens:DEFAULT_TOKENS,darkMode:"light",dark:Object.freeze({"--z-bg":"#000000","--z-surface":"#242424","--z-surface-raised":"#333333","--z-text":"#FFFFFF","--z-text-muted":"#BFBFBF","--z-text-inverse":"#101828","--z-border":"#474747","--z-focus-ring":"#9FE870"})});var NAMED_COLORS={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"778899",lightslategrey:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};var numberPattern=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i;var safeValue=value=>value.length<=512&&!/[;{}<>\\\x00-\x1f]|\/\*|url\s*\(|expression\s*\(/i.test(value);var clamp=n=>Math.max(0,Math.min(1,n));function numeric(value,scale=1){const percent=value.endsWith("%");const raw=percent?value.slice(0,-1):value;const parsed=numberPattern.test(raw)?Number(raw)/(percent?100:scale):NaN;return Number.isFinite(parsed)?parsed:NaN}function hue(value){const match=/^(.*?)(deg|rad|grad|turn)?$/.exec(value);if(!match||!numberPattern.test(match[1])){return NaN}const factors={deg:1,rad:180/Math.PI,grad:.9,turn:360};return Number(match[1])*(factors[match[2]??"deg"]??1)}function parseColor(input){if(!safeValue(input)){return null}let value=input.trim().toLowerCase();if(value==="transparent"){return[0,0,0,0]}if(Object.prototype.hasOwnProperty.call(NAMED_COLORS,value)){value="#"+NAMED_COLORS[value]}if(/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/.test(value)){let hex=value.slice(1);if(hex.length<5){hex=[...hex].map(c=>c+c).join("")}if(hex.length===6){hex+="ff"}return[0,2,4,6].map(i=>parseInt(hex.slice(i,i+2),16)/255)}const match=/^(rgba?|hsla?|oklch)\(([^()]*)\)$/.exec(value);if(!match){return null}const kind=match[1];const body=match[2].trim();const comma=body.includes(",");if(comma&&(body.includes("/")||kind==="oklch")){return null}const parts=comma?body.split(",").map(s=>s.trim()):body.split(/\s*\/\s*/);let channels,alpha;if(comma){if(parts.length!==3&&parts.length!==4){return null}channels=parts.slice(0,3);alpha=parts[3]}else{if(parts.length>2){return null}channels=parts[0].split(/\s+/);alpha=parts[1]}if(channels.length!==3){return null}const opacity=alpha===void 0?1:numeric(alpha);let rgb;if(kind.startsWith("rgb")){if(comma&&channels.some(c=>c.endsWith("%"))&&!channels.every(c=>c.endsWith("%"))){return null}rgb=channels.map(c=>numeric(c,255))}else if(kind.startsWith("hsl")){if(!channels[1].endsWith("%")||!channels[2].endsWith("%")){return null}const h=(hue(channels[0])%360+360)%360;const s=clamp(numeric(channels[1])),l=clamp(numeric(channels[2]));const a=s*Math.min(l,1-l);rgb=[0,8,4].map(n=>{const k=(n+h/30)%12;return l-a*Math.max(-1,Math.min(k-3,9-k,1))})}else{const l=clamp(numeric(channels[0]));const c=Math.max(0,numeric(channels[1])*(channels[1].endsWith("%")?.4:1));const h=hue(channels[2])*Math.PI/180;const a=c*Math.cos(h),b=c*Math.sin(h);const x=(l+.3963377774*a+.2158037573*b)**3;const y=(l-.1055613458*a-.0638541728*b)**3;const z=(l-.0894841775*a-1.291485548*b)**3;rgb=[4.0767416621*x-3.3077115913*y+.2309699292*z,-1.2684380046*x+2.6097574011*y-.3413193965*z,-.0041960863*x-.7034186147*y+1.707614701*z].map(v=>v<=.0031308?12.92*v:1.055*v**(1/2.4)-.055)}return[...rgb,opacity].every(Number.isFinite)?[...rgb.map(clamp),clamp(opacity)]:null}function isLength(value,depth=0){if(!safeValue(value)||depth>8){return false}const text=value.trim();if(/^(?:0|(?:\d+(?:\.\d*)?|\.\d+)(?:px|rem|em|%|dvh|vh|vw))$/.test(text)){return true}const fn=/^(min|max|clamp|calc)\((.*)\)$/.exec(text);if(!fn){return false}let level2=0,start=0;const args=[];for(let i=0;i<fn[2].length;i++){const c=fn[2][i];if(c==="("){level2++}if(c===")"&&--level2<0){return false}const separator=fn[1]==="calc"?(c==="+"||c==="-")&&/\s/.test(fn[2][i-1]??"")&&/\s/.test(fn[2][i+1]??""):c===",";if(level2===0&&separator){args.push(fn[2].slice(start,i));start=i+1}}args.push(fn[2].slice(start));return level2===0&&(fn[1]!=="clamp"||args.length===3)&&args.every(arg=>isLength(arg,depth+1))}var cssWideKeyword=/^(?:inherit|initial|unset|revert|revert-layer|default)$/i;function isFontFamily(value){return safeValue(value)&&value.split(",").every(part=>{const family=part.trim();return/^[a-zA-Z][a-zA-Z0-9 -]*$/.test(family)&&!cssWideKeyword.test(family)})}function isDuration(value){return/^(?:\d+(?:\.\d+)?|\.\d+)(?:ms|s)$/.test(value)}function isEasing(value){if(/^(linear|ease|ease-in|ease-out|ease-in-out|step-start|step-end)$/.test(value)){return true}const m=/^cubic-bezier\((.*)\)$/.exec(value);if(!m){return false}const ns=m[1].split(",").map(s=>numberPattern.test(s.trim())?numeric(s.trim()):NaN);return ns.length===4&&ns.every(Number.isFinite)&&ns[0]>=0&&ns[0]<=1&&ns[2]>=0&&ns[2]<=1}function isAssetUrl(value,relative2=true){if(!value||!safeValue(value)||/[\s"'()]/.test(value)){return false}if(relative2&&!/^[a-z][\w+.-]*:/i.test(value)&&!value.startsWith("//")){return true}try{const url=new URL(value);return url.protocol==="https:"&&!url.username&&!url.password}catch{return false}}function contrastRatio(fg,bg){const foreground=parseColor(fg),background=parseColor(bg);if(!foreground||!background||background[3]!==1){return NaN}const luminance=channels=>channels.map(c=>c<=.04045?c/12.92:((c+.055)/1.055)**2.4).reduce((sum,c,i)=>sum+c*[.2126,.7152,.0722][i],0);const a=luminance(foreground.slice(0,3).map((c,i)=>c*foreground[3]+background[i]*(1-foreground[3])));const b=luminance(background.slice(0,3));return(Math.max(a,b)+.05)/(Math.min(a,b)+.05)}var record2=v=>typeof v==="object"&&v!==null&&!Array.isArray(v);var includes=(values,key)=>values.includes(key);function validateTheme(input){const issues=[];const issue=(path6,code,message3,severity="error")=>issues.push({path:path6,code,message:message3,severity});const keys=(obj,allowed,path6)=>{for(const key of Object.keys(obj)){if(!allowed.includes(key)){issue(path6?`${path6}.${key}`:key,"invalid_theme","Unknown field")}}};if(!record2(input)){return{ok:false,issues:[{path:"",code:"invalid_theme",message:"Expected a theme object",severity:"error"}]}}keys(input,["$schema","version","name","tokens","dark","darkMode","fonts","logo","motion"],"");if(input.version!==1){issue("version","invalid_theme","Expected version 1")}if(typeof input.name!=="string"||!input.name.trim()||input.name.length>100){issue("name","missing_required","Expected a name of 1\u2013100 characters")}if(input.$schema!==void 0&&(typeof input.$schema!=="string"||!isAssetUrl(input.$schema,false))){issue("$schema","invalid_theme","Expected an HTTPS schema URL")}if(input.darkMode!==void 0&&(typeof input.darkMode!=="string"||!["auto","light","dark"].includes(input.darkMode))){issue("darkMode","invalid_theme","Expected auto, light or dark")}for(const group of["tokens","dark"]){const values=input[group];if(group==="dark"&&values===void 0){continue}if(!record2(values)){issue(group,"missing_required","Expected a token object");continue}if(group==="tokens"){for(const key of REQUIRED_TOKENS){if(!Object.prototype.hasOwnProperty.call(values,key)){issue(`${group}.${key}`,"missing_required","Required token")}}}for(const[key,value]of Object.entries(values)){const path6=`${group}.${key}`;if(!includes(TOKEN_NAMES,key)){issue(path6,"unknown_token","Unknown semantic token");continue}let code,valid=false;if(includes(COLOR_TOKENS,key)){code="invalid_color";valid=typeof value==="string"&&parseColor(value)!==null}else if(includes(LENGTH_TOKENS,key)){code="invalid_length";valid=typeof value==="string"&&isLength(value)}else if(includes(FONT_TOKENS,key)){code="invalid_font";valid=typeof value==="string"&&isFontFamily(value)}else{code="invalid_motion";valid=typeof value==="string"&&safeValue(value)&&(includes(DURATION_TOKENS,key)?isDuration(value):isEasing(value))}if(!valid){issue(path6,code,"Invalid or unsafe token value")}}}if(input.fonts!==void 0){if(!Array.isArray(input.fonts)||input.fonts.length>3){issue("fonts","invalid_font","Expected at most three fonts")}else{const roles=new Set;input.fonts.forEach((font,i)=>{const path6=`fonts[${i}]`;if(!record2(font)){issue(path6,"invalid_font","Expected a font object");return}keys(font,["family","source","url","weights","role"],path6);if(typeof font.family!=="string"||!isFontFamily(font.family)||font.family.includes(",")){issue(`${path6}.family`,"invalid_font","Expected one unquoted font family")}if(typeof font.source!=="string"||!["google","self","system"].includes(font.source)){issue(`${path6}.source`,"invalid_font","Unknown font source")}if(typeof font.role!=="string"||!["display","body","mono"].includes(font.role)||roles.has(font.role)){issue(`${path6}.role`,"invalid_font","Expected a unique font role")}roles.add(String(font.role));if(font.source==="self"||font.url!==void 0){if(typeof font.url!=="string"||!isAssetUrl(font.url,false)||!new URL(font.url).pathname.endsWith(".woff2")){issue(`${path6}.url`,"invalid_font","Expected an HTTPS .woff2 URL")}}if(font.weights!==void 0&&(!Array.isArray(font.weights)||!font.weights.length||font.weights.length>9||font.weights.some(w=>typeof w!=="number"||!Number.isInteger(w)||w<1||w>1e3))){issue(`${path6}.weights`,"invalid_font","Expected 1\u20139 integer weights between 1 and 1000")}})}}if(input.logo!==void 0){if(!record2(input.logo)){issue("logo","invalid_logo","Expected a logo object")}else{keys(input.logo,["light","dark","mark","alt"],"logo");if(typeof input.logo.alt!=="string"||!input.logo.alt.trim()){issue("logo.alt","invalid_logo","Logo alternative text is required")}for(const key of["light","dark","mark"]){const value=input.logo[key];if(key==="light"||value!==void 0){if(typeof value!=="string"||!isAssetUrl(value)){issue(`logo.${key}`,"invalid_logo","Expected HTTPS or a relative asset path")}}}}}if(input.motion!==void 0){if(!record2(input.motion)){issue("motion","invalid_motion","Expected a motion object")}else{keys(input.motion,["reduce"],"motion");if(input.motion.reduce!==void 0&&typeof input.motion.reduce!=="boolean"){issue("motion.reduce","invalid_motion","Expected a boolean")}}}const tokenGroup=value=>record2(value)?value:{};for(const group of record2(input.dark)?["tokens","dark"]:["tokens"]){const values={...DEFAULT_TOKENS,...tokenGroup(input.tokens),...group==="dark"?tokenGroup(input.dark):{}};const pairs=[["--z-text","--z-bg",4.5,"error"],["--z-text","--z-surface",4.5,"error"],["--z-accent-contrast","--z-accent",4.5,"error"],["--z-text-muted","--z-bg",3,"warning"]];for(const[fg,bg,minimum,severity]of pairs){const foreground=values[fg],background=values[bg];if(typeof foreground!=="string"||typeof background!=="string"||!parseColor(foreground)||!parseColor(background)){continue}const ratio=contrastRatio(foreground,background);if(!Number.isFinite(ratio)){issue(`${group}.${bg}`,"unverified_contrast","A contrast background must be opaque","error")}else if(ratio<minimum){issue(`${group}.${fg}`,"low_contrast",`Contrast against ${bg} must be at least ${minimum}:1`,severity)}}}return issues.some(i=>i.severity==="error")?{ok:false,issues}:{ok:true,theme:input,warnings:issues}}import{createHash}from"crypto";import{readFile as readFile2}from"fs/promises";import path2 from"path";import{pathToFileURL}from"url";import{readFile}from"fs/promises";import path from"path";async function json(file){return JSON.parse(await readFile(file,"utf8"))}function relative(cwd,file){return path.relative(cwd,file).split(path.sep).join("/")}function lineFor(source,issuePath){const key=issuePath.split(".").at(-1)?.replace(/\[\d+\]$/,"");if(!key||key==="$"){return void 0}const quoted=JSON.stringify(key);const lines=source.split(/\r?\n/);const index=lines.findIndex(line=>line.includes(quoted)||new RegExp(`\\b${escape(key)}\\b`).test(line));return index<0?void 0:index+1}function escape(value){return value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function problem(message3,fix,details={}){return{...details,message:message3,fix}}function step(name,result,problems=[]){return{name,result,problems}}var skipped=(name,message3)=>step(name,"skipped",[problem(message3,null)]);function supportsTypeScriptImport(version=process.versions.node){const[major=0,minor=0]=version.split(".").map(Number);return major>22||major===22&&minor>=18}async function loadConfig(cwd){const file=path2.join(cwd,"zappie.config.ts");if(!supportsTypeScriptImport()){throw new Error("zappie check needs Node 22.18 or later to read zappie.config.ts")}const source=await readFile2(file,"utf8");const version=createHash("sha256").update(source).digest("hex");const loaded=await import(`${pathToFileURL(file).href}?check=${version}`);return{value:loaded.default,source,file}}async function checkConfig({cwd,signal}){signal?.throwIfAborted();let loaded;try{loaded=await loadConfig(cwd)}catch(error){return step("config","failed",[problem(message(error),"Create a readable zappie.config.ts in the project root.",{file:"zappie.config.ts"})])}const validation=validateConfig(loaded.value);const problems=validation.issues.map(issue=>configProblem(issue,loaded.source));let themeFailed=false;const theme2=configTheme(loaded.value);if(theme2){const checkedTheme=await themeProblems(cwd,theme2);problems.push(...checkedTheme.problems);themeFailed=checkedTheme.failed}const brand=await brandProblems(cwd);problems.push(...brand);signal?.throwIfAborted();return step("config",validation.issues.some(issue=>issue.severity==="error")||themeFailed||brand.length>0?"failed":"passed",problems)}function configProblem(issue,source){const line=lineFor(source,issue.path);return problem(`${issue.path}: ${issue.message}`,issue.message,{rule:`config/${issue.code}`,file:"zappie.config.ts",...line?{line}:{}})}async function themeProblems(cwd,theme2){const file=path2.resolve(cwd,theme2);try{const source=await readFile2(file,"utf8");const result=validateTheme(JSON.parse(source));const issues=result.ok?result.warnings:result.issues;return{failed:issues.some(issue=>issue.severity==="error"),problems:issues.map(issue=>themeProblem(issue,source,theme2))}}catch(error){return{failed:true,problems:[problem(message(error),`Make ${theme2} a readable JSON theme file.`,{rule:"theme/unreadable",file:theme2})]}}}var BRAND_FILE="app/brand.json";async function brandProblems(cwd){let source;try{source=await readFile2(path2.join(cwd,BRAND_FILE),"utf8")}catch{return[]}const fix=`Fix ${BRAND_FILE} from the Brand setting in Studio, or remove it.`;const details=(rule,line)=>({rule:`brand/${rule}`,file:BRAND_FILE,...line?{line}:{}});if(Buffer.byteLength(source)>4096){return[problem(`${BRAND_FILE} is larger than 4096 bytes.`,fix,details("too-large"))]}let value;try{value=JSON.parse(source)}catch(error){return[problem(message(error),fix,details("unreadable"))]}return validateBrand(value).map(issue=>problem(`${issue.path}: ${issue.message}`,fix,details("invalid",lineFor(source,issue.path))))}function themeProblem(issue,source,file){const line=lineFor(source,issue.path);return problem(`${issue.path}: ${issue.message}`,issue.message,{rule:`theme/${issue.code}`,file,...line?{line}:{}})}function configTheme(value){return value&&typeof value==="object"&&"theme"in value&&typeof value.theme==="string"?value.theme:void 0}function message(error){return error instanceof Error?error.message:String(error)}import{createRequire}from"module";import path3 from"path";import{pathToFileURL as pathToFileURL2}from"url";var SECURITY_IGNORES=["build/**","dist/**",".react-router/**",".wrangler/**","coverage/**","playwright-report/**","test-results/**"];async function checkLint({cwd,signal}){signal?.throwIfAborted();let ESLint;try{const require2=createRequire(path3.join(cwd,"package.json"));const loadedEslint=await import(pathToFileURL2(require2.resolve("eslint")).href);ESLint=loadedEslint.ESLint}catch(error){return step("lint","failed",[problem(message2(error),"Install ESLint in the project.",{rule:"lint/unavailable"})])}try{const zappie=(await import("eslint-plugin-zappie")).default;const eslint=new ESLint({cwd,overrideConfig:{settings:{zappie:{outboundAllow:await outboundAllow(cwd)}}}});const security=await securityResults(zappie,ESLint,cwd);signal?.throwIfAborted();const source=await sourceFile(cwd);const config=await eslint.calculateConfigForFile(source);const problems=recommendedProblems(zappie,config?.rules??{});if(problems.length>0){return step("lint","failed",[...problems,...lintProblems(cwd,security)])}const results=[...security,...await eslint.lintFiles(["."])];signal?.throwIfAborted();const failed=results.some(result=>result.messages.some(entry=>entry.fatal||entry.severity===2));return step("lint",failed?"failed":"passed",lintProblems(cwd,results))}catch(error){return step("lint","failed",[problem(message2(error),"Fix the project ESLint configuration and run lint again.",{rule:"lint/config"})])}}async function securityResults(zappie,ESLint,cwd){const security=zappie.configs.security;if(!security){throw new Error("This eslint-plugin-zappie has no security config. Update eslint-plugin-zappie and @zappie/check together.")}const eslint=new ESLint({cwd,overrideConfigFile:true,allowInlineConfig:false,errorOnUnmatchedPattern:false,overrideConfig:[{ignores:SECURITY_IGNORES},...security]});return eslint.lintFiles(["."])}function lintProblems(cwd,results){const seen=new Set;return results.flatMap(result=>result.messages.flatMap(entry=>{const file=relative(cwd,result.filePath);const key=[entry.ruleId,file,entry.line,entry.message].join("\0");if(seen.has(key)){return[]}seen.add(key);return[problem(entry.message,null,{...entry.ruleId?{rule:entry.ruleId}:{},file,...entry.line?{line:entry.line}:{}})]}))}async function outboundAllow(cwd){try{const value=(await loadConfig(cwd)).value;if(!value||typeof value!=="object"||!("outbound"in value)){return[]}const outbound=value.outbound;if(!outbound||typeof outbound!=="object"||!("allow"in outbound)){return[]}return Array.isArray(outbound.allow)?outbound.allow.filter(entry=>typeof entry==="string"):[]}catch{return[]}}function recommendedProblems(zappie,applied){const expected=recommendedRules(zappie);return Object.entries(expected).flatMap(([rule,severity])=>{if(level(applied[rule])>=level(severity)){return[]}return[problem(`${rule} is not enabled at the recommended severity.`,"Apply every entry from zappie.configs.recommended in eslint.config.mjs.",{rule,file:"eslint.config.mjs"})]})}function recommendedRules(zappie){const result={};for(const config of zappie.configs.recommended??[]){Object.assign(result,config.rules??{})}return Object.fromEntries(Object.entries(result).filter(([name])=>name.startsWith("zappie/")||name.startsWith("jsx-a11y/")))}function level(value){const selected=Array.isArray(value)?value[0]:value;if(selected==="error"||selected===2){return 2}if(selected==="warn"||selected===1){return 1}return 0}async function sourceFile(cwd){const candidates=["app/index.ts","app/root.tsx","src/index.ts","index.ts"];for(const candidate of candidates){try{await import("fs/promises").then(({access:access2})=>access2(path3.join(cwd,candidate)));return candidate}catch{continue}}return"eslint.config.mjs"}function message2(error){return error instanceof Error?error.message:String(error)}import{createRequire as createRequire2}from"module";import path5 from"path";import{fileURLToPath,pathToFileURL as pathToFileURL3}from"url";import{spawn}from"child_process";import{constants}from"fs";import{access}from"fs/promises";import path4 from"path";var KILL_GRACE_MS=2e3;var windows=process.platform==="win32";var running=new Set;var exitHook=false;function track(pid){if(pid===void 0||windows){return}running.add(pid);if(!exitHook){exitHook=true;process.once("exit",()=>{for(const group of running){try{process.kill(-group,"SIGKILL")}catch{}}})}}function command(executable,args,cwd,signal,options={}){const grace=options.killGraceMs??KILL_GRACE_MS;return new Promise((resolve,reject)=>{if(signal?.aborted){reject(signal.reason);return}const child=spawn(executable,args,{cwd,env:{...process.env,NO_COLOR:"1",FORCE_COLOR:"0",COREPACK_ENABLE_DOWNLOAD_PROMPT:"0",GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","pipe"],detached:!windows,windowsHide:true});track(child.pid);const tree=processTree(child,grace);let stdout="";let stderr="";let settled=false;let exitCode;let lingering;const finish=settle=>{if(settled){return}settled=true;signal?.removeEventListener("abort",onAbort);clearTimeout(lingering);child.stdout.destroy();child.stderr.destroy();settle()};const result=()=>({code:exitCode??1,stdout,stderr});const onAbort=()=>{tree.stop();finish(()=>reject(signal?.reason))};signal?.addEventListener("abort",onAbort,{once:true});child.stdout.on("data",value=>{stdout+=String(value)});child.stderr.on("data",value=>{stderr+=String(value)});child.on("error",error=>{tree.stop();finish(()=>reject(error))});child.on("exit",code=>{exitCode=code??1;tree.stop();lingering=setTimeout(()=>finish(()=>resolve(result())),grace+500)});child.on("close",code=>{exitCode??=code??1;finish(()=>resolve(result()))})})}function processTree(child,grace){let stopped=false;const signalGroup=name=>{if(child.pid===void 0){return false}try{process.kill(-child.pid,name);return true}catch{return false}};return{stop(){if(stopped){return}stopped=true;if(windows){if(child.pid!==void 0){spawn("taskkill",["/pid",String(child.pid),"/T","/F"],{stdio:"ignore",windowsHide:true}).on("error",()=>{})}return}if(signalGroup("SIGTERM")){setTimeout(()=>{signalGroup("SIGKILL");running.delete(child.pid)},grace)}else{running.delete(child.pid)}}}}var PNPM_NO_VERIFY="--config.verify-deps-before-run=false";function execArgs(manager,binary,args){if(manager==="npm"){return{executable:"npm",args:["exec","--no","--",binary,...args]}}if(manager==="yarn"){return{executable:"yarn",args:["exec",binary,...args]}}if(manager==="bun"){return{executable:"bun",args:["x","--no-install",binary,...args]}}return{executable:"pnpm",args:[PNPM_NO_VERIFY,"exec",binary,...args]}}async function binaryArgs(manager,cwd,binary,args){if(!windows){const local=path4.join(cwd,"node_modules",".bin",binary);try{await access(local,constants.X_OK);return{executable:local,args}}catch{}}return execArgs(manager,binary,args)}function scriptArgs(manager,name){if(manager==="bun"){return{executable:"bun",args:["run",name]}}if(manager==="npm"){return{executable:"npm",args:["run",name]}}if(manager==="pnpm"){return{executable:"pnpm",args:[PNPM_NO_VERIFY,name]}}return{executable:manager,args:[name]}}var ISOLATED_STEPS={lint:checkLint};var STEP_RESULT_MARK="zappie-check-step-result:";function isIsolatedStep(name){return typeof name==="string"&&Object.hasOwn(ISOLATED_STEPS,name)}function isolated(name){return async({signal,...options})=>{signal?.throwIfAborted();const result=await command(process.execPath,[...workerArgs(),name,JSON.stringify(options)],options.cwd,signal);signal?.throwIfAborted();return stepReply(name,result.code,result.stdout,result.stderr)}}function stepReply(name,code,stdout,stderr){const line=stdout.split("\n").filter(entry=>entry.startsWith(STEP_RESULT_MARK)).at(-1);if(line===void 0){const reason=stderr.trim().split("\n").at(-1)?.trim();throw new Error(`The ${name} step stopped with exit code ${code} before it reported a result${reason?`: ${reason}`:"."}`)}const reply=JSON.parse(line.slice(STEP_RESULT_MARK.length));if("error"in reply){throw new Error(reply.error)}return reply.step}function workerArgs(){const here=fileURLToPath(import.meta.url);const directory=path5.dirname(here);if(here.endsWith(".ts")){const tsx=pathToFileURL3(createRequire2(here).resolve("tsx")).href;return["--import",tsx,path5.join(directory,"step-worker.ts")]}return[path5.join(directory,"step-worker.js")]}export{DEFAULT_BUDGETS,GLOBAL_PACKAGE_ALLOWLIST,validateBrand,json,relative,problem,step,skipped,supportsTypeScriptImport,loadConfig,checkConfig,KILL_GRACE_MS,command,PNPM_NO_VERIFY,binaryArgs,scriptArgs,checkLint,ISOLATED_STEPS,STEP_RESULT_MARK,isIsolatedStep,isolated};
|
|
2
|
+
//# sourceMappingURL=chunk-CBYFCC3K.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/brand.ts","../../sdk/src/site-config/types.ts","../../sdk/src/site-config/helpers.ts","../../sdk/src/site-config/sections.ts","../../sdk/src/site-config/validate.ts","../../tokens/src/names.ts","../../tokens/src/defaults.ts","../../tokens/src/named-colors.ts","../../tokens/src/parse.ts","../../tokens/src/contrast.ts","../../tokens/src/validate.ts","../src/config.ts","../src/files.ts","../src/result.ts","../src/lint.ts","../src/isolate.ts","../src/command.ts"],"mappings":"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","names":["message","path","path","message","path","message","level","relative","record","path","message","readFile","path","message","path","readFile","theme","path","pathToFileURL","require","path","pathToFileURL","message","access","createRequire","path","pathToFileURL","path","path","pathToFileURL","createRequire"]}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var DEFAULT_BUDGETS={jsKbGz:200,cssKbGz:50,lcpMs:2500,tappableMs:3e3};var GLOBAL_PACKAGE_ALLOWLIST=["react","react-dom","react-router","@react-router/*","@zappie/*","tailwindcss","@tailwindcss/*","clsx","tailwind-merge","class-variance-authority","lucide-react","date-fns","embla-carousel-react","framer-motion/motion","zod","@radix-ui/*","sonner","vaul"];var record=value=>typeof value==="object"&&value!==null&&!Array.isArray(value);function distance(left,right){let row=Array.from({length:right.length+1},(_,index)=>index);for(let leftIndex=1;leftIndex<=left.length;leftIndex+=1){const next=[leftIndex];for(let rightIndex=1;rightIndex<=right.length;rightIndex+=1){next[rightIndex]=Math.min((next[rightIndex-1]??0)+1,(row[rightIndex]??0)+1,(row[rightIndex-1]??0)+(left[leftIndex-1]===right[rightIndex-1]?0:1))}row=next}return row[right.length]??Infinity}function unknownKeys(value,allowed,path19,issue){for(const key of Object.keys(value)){if(allowed.includes(key)){continue}const closest=allowed.map(candidate=>({candidate,score:distance(key,candidate)})).sort((left,right)=>left.score-right.score)[0];const hint=closest&&closest.score<=2?closest.candidate:void 0;issue({path:path19?`${path19}.${key}`:key,code:"unknown_key",message:hint?`Unknown field "${key}". Rename it to "${hint}".`:`Unknown field "${key}". Remove it from the configuration.`,severity:"error"})}}var nonblank=value=>typeof value==="string"&&value.trim().length>0;var packageName=value=>value.length<=214&&/^(?:@[a-z0-9][a-z0-9._~-]*\/[a-z0-9][a-z0-9._~-]*|[a-z0-9][a-z0-9._~-]*)$/.test(value);var globallyAllowed=value=>GLOBAL_PACKAGE_ALLOWLIST.some(allowed=>allowed.endsWith("/*")?value.startsWith(allowed.slice(0,-1)):value===allowed);function hostname(value){const wildcard=value.startsWith("*.");const host=wildcard?value.slice(2):value;if(!host.includes(".")||/^\d+(?:\.\d+){3}$/.test(host)||host.length>253||host.includes("..")||wildcard&&/^(?:ac|co|com|edu|gov|net|org)\.[^.]+$/i.test(host)){return false}return host.split(".").every(label=>label.length>0&&label.length<=63&&/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(label))}function nested(value,path19,keys,issue,validate){if(value===void 0){return}if(!record(value)){issue({path:path19,code:"invalid_type",message:`Expected an object. Set ${path19} to an object or remove it.`,severity:"error"});return}unknownKeys(value,keys,path19,issue);validate(value)}function budgets(value,issue,error){nested(value,"budgets",[...Object.keys(DEFAULT_BUDGETS),"override"],issue,budget=>{nested(budget.override,"budgets.override",["reason"],issue,override=>{if(typeof override.reason!=="string"||!override.reason.trim()){error("budgets.override.reason","invalid_format","Expected a non-blank reason. Explain why the default budget must be raised.")}});for(const key of Object.keys(DEFAULT_BUDGETS)){const amount=budget[key];const path19=`budgets.${key}`;if(amount===void 0){continue}if(typeof amount!=="number"||!Number.isFinite(amount)||amount<=0){error(path19,"invalid_type",`Expected a positive finite number. Set ${path19} to a number greater than zero.`)}else if(key==="tappableMs"&&amount>5e3){error(path19,"invalid_format","The tappableMs budget cannot exceed 5000. Set budgets.tappableMs to 5000 or less.")}else if(amount>DEFAULT_BUDGETS[key]){const message6=`The ${key} budget exceeds the ${DEFAULT_BUDGETS[key]} default.`;if(budget.override===void 0){error(path19,"budget_override",`${message6} Add budgets.override.reason to explain the increase.`)}else{issue({path:path19,code:"budget_override",message:`${message6} Lower it to the default when the exception is no longer needed.`,severity:"warning"})}}}})}function analytics(value,issue,error){nested(value,"analytics",["forward"],issue,analyticsValue=>{nested(analyticsValue.forward,"analytics.forward",["ga4","metaPixel"],issue,forward=>{if(forward.ga4!==void 0&&(typeof forward.ga4!=="string"||!/^G-[A-Z0-9]+$/.test(forward.ga4))){error("analytics.forward.ga4","invalid_format","Expected a GA4 measurement id beginning with G-. Use a value such as G-XXXXXXXXXX.")}if(forward.metaPixel!==void 0&&(typeof forward.metaPixel!=="string"||!/^\d+$/.test(forward.metaPixel))){error("analytics.forward.metaPixel","invalid_format","Expected a numeric Meta Pixel id. Use digits only.")}})})}var rootKeys=["store","branches","theme","prerender","menu","packages","audit","outbound","security","budgets","readiness","analytics","verify"];function validateConfig(input){const issues=[];const issue=value=>issues.push(value);const error=(path19,code,message6)=>issue({path:path19,code,message:message6,severity:"error"});if(!record(input)){return{valid:false,issues:[{path:"$",code:"invalid_type",message:"Expected a configuration object. Export an object from zappie.config.ts.",severity:"error"}]}}unknownKeys(input,rootKeys,"",issue);if(!nonblank(input.store)){error("store",input.store===void 0?"missing_required":"invalid_type","Expected a non-empty storefront slug. Set store to the slug used by createZappie().")}theme(input.theme,error);stringList(input.branches,"branches",error,{nonempty:true,unique:true,slug:true});stringList(input.prerender,"prerender",error,{unique:true})?.forEach((path19,index)=>{if(!path19.startsWith("/")){error(`prerender[${index}]`,"invalid_format","Expected a route starting with /. Prefix the route with /.")}});nested(input.menu,"menu",["hiddenCategories"],issue,value=>{stringList(value.hiddenCategories,"menu.hiddenCategories",error)});nested(input.packages,"packages",["allow"],issue,value=>{const allow=stringList(value.allow,"packages.allow",error);allow?.forEach((name,index)=>{if(globallyAllowed(name)){issue({path:`packages.allow[${index}]`,code:"redundant_allowlist",message:`${name} is already globally allowed. Remove it from packages.allow.`,severity:"warning"})}else if(!packageName(name)){error(`packages.allow[${index}]`,"invalid_format","Expected a lowercase npm package name. Use a package name such as lucide-react or @scope/name.")}})});nested(input.outbound,"outbound",["allow"],issue,value=>{hostList(value.allow,"outbound.allow",error)});nested(input.security,"security",["csp","links"],issue,security=>{hostList(security.links,"security.links",error);nested(security.csp,"security.csp",["imgSrc","connectSrc","fontSrc","styleSrc","frameSrc"],issue,csp=>{for(const[name,value]of Object.entries(csp)){hostList(value,`security.csp.${name}`,error)}})});budgets(input.budgets,issue,error);nested(input.readiness,"readiness",["routeDiscovery"],issue,readiness=>{nested(readiness.routeDiscovery,"readiness.routeDiscovery",["optOut"],issue,routeDiscovery=>{nested(routeDiscovery.optOut,"readiness.routeDiscovery.optOut",["reason"],issue,optOut=>{if(typeof optOut.reason!=="string"||!optOut.reason.trim()){error("readiness.routeDiscovery.optOut.reason","invalid_format","Expected a non-blank reason. Explain why the site disables initial route discovery.")}})})});analytics(input.analytics,issue,error);nested(input.verify,"verify",["startPath","cataloguePath"],issue,()=>{});return{valid:!issues.some(entry=>entry.severity==="error"),issues}}function theme(value,error){if(typeof value!=="string"){error("theme",value===void 0?"missing_required":"invalid_type","Expected a relative .json path. Set theme to a value such as ./theme.json.")}else if(!/\.json$/.test(value)||/^(?:[a-z][a-z\d+.-]*:|\/|\\)/i.test(value)||value.includes("\\")){error("theme","invalid_format","Expected a relative .json path. Use a value such as ./theme.json.")}}function stringList(value,path19,error,options={}){if(value===void 0){return void 0}if(!Array.isArray(value)||value.some(entry=>typeof entry!=="string")){error(path19,"invalid_type",`Expected an array of strings. Set ${path19} to string values.`);return void 0}if(options.nonempty&&value.length===0){error(path19,"invalid_format",`Expected at least one value. Add a value to ${path19} or remove the field.`)}value.forEach((entry,index)=>{if(options.slug&&!nonblank(entry)){error(`${path19}[${index}]`,"invalid_format","Expected a non-empty branch slug. Remove the empty value or use a branch slug.")}});if(options.unique&&new Set(value).size!==value.length){error(path19,"duplicate",`Expected unique values. Remove duplicates from ${path19}.`)}return value}function hostList(value,path19,error){stringList(value,path19,error)?.forEach((host,index)=>{if(!hostname(host)){error(`${path19}[${index}]`,"invalid_format","Expected a hostname or leading *. subdomain pattern without a scheme, path, port or IP. Use a value such as api.example.com.")}})}import path4 from"path";var COLOR_TOKENS=["--z-bg","--z-surface","--z-surface-raised","--z-overlay","--z-text","--z-text-muted","--z-text-inverse","--z-accent","--z-accent-contrast","--z-brand-1","--z-brand-2","--z-brand-3","--z-success","--z-warning","--z-danger","--z-border","--z-focus-ring"];var LENGTH_TOKENS=["--z-radius-sm","--z-radius-md","--z-radius-lg","--z-radius-pill","--z-space-1","--z-space-2","--z-space-3","--z-space-4","--z-space-5","--z-space-6","--z-space-7","--z-space-8","--z-text-xs","--z-text-sm","--z-text-md","--z-text-lg","--z-text-xl","--z-text-2xl","--z-text-3xl","--z-drawer-width","--z-dialog-width","--z-dialog-height","--z-media-sm"];var FONT_TOKENS=["--z-font-display","--z-font-body","--z-font-mono"];var DURATION_TOKENS=["--z-duration-fast","--z-duration-base","--z-duration-slow"];var EASING_TOKENS=["--z-ease-out","--z-ease-in-out"];var MOTION_TOKENS=[...DURATION_TOKENS,...EASING_TOKENS];var TOKEN_NAMES=[...COLOR_TOKENS,...LENGTH_TOKENS,...FONT_TOKENS,...MOTION_TOKENS];var REQUIRED_TOKENS=["--z-bg","--z-text","--z-accent","--z-accent-contrast"];var DEFAULT_TOKENS=Object.freeze({"--z-bg":"#F9FAFB","--z-surface":"#FFFFFF","--z-surface-raised":"#FFFFFF","--z-overlay":"#00000080","--z-text":"#101828","--z-text-muted":"#344054","--z-text-inverse":"#FFFFFF","--z-accent":"#9FE870","--z-accent-contrast":"#163300","--z-brand-1":"#9FE870","--z-brand-2":"#163300","--z-brand-3":"#EDC843","--z-success":"#027A48","--z-warning":"#ED7A37","--z-danger":"#F04438","--z-border":"#EAECF0","--z-focus-ring":"#163300","--z-radius-sm":"6px","--z-radius-md":"12px","--z-radius-lg":"20px","--z-radius-pill":"9999px","--z-space-1":"4px","--z-space-2":"8px","--z-space-3":"12px","--z-space-4":"16px","--z-space-5":"24px","--z-space-6":"32px","--z-space-7":"48px","--z-space-8":"64px","--z-font-display":"system-ui, sans-serif","--z-font-body":"system-ui, sans-serif","--z-font-mono":"ui-monospace, monospace","--z-text-xs":"12px","--z-text-sm":"14px","--z-text-md":"16px","--z-text-lg":"18px","--z-text-xl":"20px","--z-text-2xl":"24px","--z-text-3xl":"32px","--z-duration-fast":"120ms","--z-duration-base":"200ms","--z-duration-slow":"320ms","--z-ease-out":"cubic-bezier(0, 0, 0.2, 1)","--z-ease-in-out":"cubic-bezier(0.4, 0, 0.2, 1)","--z-drawer-width":"420px","--z-dialog-width":"min(1000px, calc(100vw - 32px))","--z-dialog-height":"min(780px, 90dvh)","--z-media-sm":"64px"});var DEFAULT_THEME=Object.freeze({version:1,name:"Zappie",tokens:DEFAULT_TOKENS,darkMode:"light",dark:Object.freeze({"--z-bg":"#000000","--z-surface":"#242424","--z-surface-raised":"#333333","--z-text":"#FFFFFF","--z-text-muted":"#BFBFBF","--z-text-inverse":"#101828","--z-border":"#474747","--z-focus-ring":"#9FE870"})});var NAMED_COLORS={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"778899",lightslategrey:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};var numberPattern=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i;var safeValue=value=>value.length<=512&&!/[;{}<>\\\x00-\x1f]|\/\*|url\s*\(|expression\s*\(/i.test(value);var clamp=n=>Math.max(0,Math.min(1,n));function numeric(value,scale=1){const percent=value.endsWith("%");const raw=percent?value.slice(0,-1):value;const parsed=numberPattern.test(raw)?Number(raw)/(percent?100:scale):NaN;return Number.isFinite(parsed)?parsed:NaN}function hue(value){const match=/^(.*?)(deg|rad|grad|turn)?$/.exec(value);if(!match||!numberPattern.test(match[1])){return NaN}const factors={deg:1,rad:180/Math.PI,grad:.9,turn:360};return Number(match[1])*(factors[match[2]??"deg"]??1)}function parseColor(input){if(!safeValue(input)){return null}let value=input.trim().toLowerCase();if(value==="transparent"){return[0,0,0,0]}if(Object.prototype.hasOwnProperty.call(NAMED_COLORS,value)){value="#"+NAMED_COLORS[value]}if(/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/.test(value)){let hex=value.slice(1);if(hex.length<5){hex=[...hex].map(c=>c+c).join("")}if(hex.length===6){hex+="ff"}return[0,2,4,6].map(i=>parseInt(hex.slice(i,i+2),16)/255)}const match=/^(rgba?|hsla?|oklch)\(([^()]*)\)$/.exec(value);if(!match){return null}const kind=match[1];const body=match[2].trim();const comma=body.includes(",");if(comma&&(body.includes("/")||kind==="oklch")){return null}const parts=comma?body.split(",").map(s=>s.trim()):body.split(/\s*\/\s*/);let channels,alpha;if(comma){if(parts.length!==3&&parts.length!==4){return null}channels=parts.slice(0,3);alpha=parts[3]}else{if(parts.length>2){return null}channels=parts[0].split(/\s+/);alpha=parts[1]}if(channels.length!==3){return null}const opacity=alpha===void 0?1:numeric(alpha);let rgb;if(kind.startsWith("rgb")){if(comma&&channels.some(c=>c.endsWith("%"))&&!channels.every(c=>c.endsWith("%"))){return null}rgb=channels.map(c=>numeric(c,255))}else if(kind.startsWith("hsl")){if(!channels[1].endsWith("%")||!channels[2].endsWith("%")){return null}const h=(hue(channels[0])%360+360)%360;const s=clamp(numeric(channels[1])),l=clamp(numeric(channels[2]));const a=s*Math.min(l,1-l);rgb=[0,8,4].map(n=>{const k=(n+h/30)%12;return l-a*Math.max(-1,Math.min(k-3,9-k,1))})}else{const l=clamp(numeric(channels[0]));const c=Math.max(0,numeric(channels[1])*(channels[1].endsWith("%")?.4:1));const h=hue(channels[2])*Math.PI/180;const a=c*Math.cos(h),b=c*Math.sin(h);const x=(l+.3963377774*a+.2158037573*b)**3;const y=(l-.1055613458*a-.0638541728*b)**3;const z=(l-.0894841775*a-1.291485548*b)**3;rgb=[4.0767416621*x-3.3077115913*y+.2309699292*z,-1.2684380046*x+2.6097574011*y-.3413193965*z,-.0041960863*x-.7034186147*y+1.707614701*z].map(v=>v<=.0031308?12.92*v:1.055*v**(1/2.4)-.055)}return[...rgb,opacity].every(Number.isFinite)?[...rgb.map(clamp),clamp(opacity)]:null}function isLength(value,depth=0){if(!safeValue(value)||depth>8){return false}const text=value.trim();if(/^(?:0|(?:\d+(?:\.\d*)?|\.\d+)(?:px|rem|em|%|dvh|vh|vw))$/.test(text)){return true}const fn=/^(min|max|clamp|calc)\((.*)\)$/.exec(text);if(!fn){return false}let level2=0,start=0;const args=[];for(let i=0;i<fn[2].length;i++){const c=fn[2][i];if(c==="("){level2++}if(c===")"&&--level2<0){return false}const separator=fn[1]==="calc"?(c==="+"||c==="-")&&/\s/.test(fn[2][i-1]??"")&&/\s/.test(fn[2][i+1]??""):c===",";if(level2===0&&separator){args.push(fn[2].slice(start,i));start=i+1}}args.push(fn[2].slice(start));return level2===0&&(fn[1]!=="clamp"||args.length===3)&&args.every(arg=>isLength(arg,depth+1))}var cssWideKeyword=/^(?:inherit|initial|unset|revert|revert-layer|default)$/i;function isFontFamily(value){return safeValue(value)&&value.split(",").every(part=>{const family=part.trim();return/^[a-zA-Z][a-zA-Z0-9 -]*$/.test(family)&&!cssWideKeyword.test(family)})}function isDuration(value){return/^(?:\d+(?:\.\d+)?|\.\d+)(?:ms|s)$/.test(value)}function isEasing(value){if(/^(linear|ease|ease-in|ease-out|ease-in-out|step-start|step-end)$/.test(value)){return true}const m=/^cubic-bezier\((.*)\)$/.exec(value);if(!m){return false}const ns=m[1].split(",").map(s=>numberPattern.test(s.trim())?numeric(s.trim()):NaN);return ns.length===4&&ns.every(Number.isFinite)&&ns[0]>=0&&ns[0]<=1&&ns[2]>=0&&ns[2]<=1}function isAssetUrl(value,relative2=true){if(!value||!safeValue(value)||/[\s"'()]/.test(value)){return false}if(relative2&&!/^[a-z][\w+.-]*:/i.test(value)&&!value.startsWith("//")){return true}try{const url=new URL(value);return url.protocol==="https:"&&!url.username&&!url.password}catch{return false}}function contrastRatio(fg,bg){const foreground=parseColor(fg),background=parseColor(bg);if(!foreground||!background||background[3]!==1){return NaN}const luminance=channels=>channels.map(c=>c<=.04045?c/12.92:((c+.055)/1.055)**2.4).reduce((sum,c,i)=>sum+c*[.2126,.7152,.0722][i],0);const a=luminance(foreground.slice(0,3).map((c,i)=>c*foreground[3]+background[i]*(1-foreground[3])));const b=luminance(background.slice(0,3));return(Math.max(a,b)+.05)/(Math.min(a,b)+.05)}var record2=v=>typeof v==="object"&&v!==null&&!Array.isArray(v);var includes=(values,key)=>values.includes(key);function validateTheme(input){const issues=[];const issue=(path19,code,message6,severity="error")=>issues.push({path:path19,code,message:message6,severity});const keys=(obj,allowed,path19)=>{for(const key of Object.keys(obj)){if(!allowed.includes(key)){issue(path19?`${path19}.${key}`:key,"invalid_theme","Unknown field")}}};if(!record2(input)){return{ok:false,issues:[{path:"",code:"invalid_theme",message:"Expected a theme object",severity:"error"}]}}keys(input,["$schema","version","name","tokens","dark","darkMode","fonts","logo","motion"],"");if(input.version!==1){issue("version","invalid_theme","Expected version 1")}if(typeof input.name!=="string"||!input.name.trim()||input.name.length>100){issue("name","missing_required","Expected a name of 1\u2013100 characters")}if(input.$schema!==void 0&&(typeof input.$schema!=="string"||!isAssetUrl(input.$schema,false))){issue("$schema","invalid_theme","Expected an HTTPS schema URL")}if(input.darkMode!==void 0&&(typeof input.darkMode!=="string"||!["auto","light","dark"].includes(input.darkMode))){issue("darkMode","invalid_theme","Expected auto, light or dark")}for(const group of["tokens","dark"]){const values=input[group];if(group==="dark"&&values===void 0){continue}if(!record2(values)){issue(group,"missing_required","Expected a token object");continue}if(group==="tokens"){for(const key of REQUIRED_TOKENS){if(!Object.prototype.hasOwnProperty.call(values,key)){issue(`${group}.${key}`,"missing_required","Required token")}}}for(const[key,value]of Object.entries(values)){const path19=`${group}.${key}`;if(!includes(TOKEN_NAMES,key)){issue(path19,"unknown_token","Unknown semantic token");continue}let code,valid=false;if(includes(COLOR_TOKENS,key)){code="invalid_color";valid=typeof value==="string"&&parseColor(value)!==null}else if(includes(LENGTH_TOKENS,key)){code="invalid_length";valid=typeof value==="string"&&isLength(value)}else if(includes(FONT_TOKENS,key)){code="invalid_font";valid=typeof value==="string"&&isFontFamily(value)}else{code="invalid_motion";valid=typeof value==="string"&&safeValue(value)&&(includes(DURATION_TOKENS,key)?isDuration(value):isEasing(value))}if(!valid){issue(path19,code,"Invalid or unsafe token value")}}}if(input.fonts!==void 0){if(!Array.isArray(input.fonts)||input.fonts.length>3){issue("fonts","invalid_font","Expected at most three fonts")}else{const roles=new Set;input.fonts.forEach((font,i)=>{const path19=`fonts[${i}]`;if(!record2(font)){issue(path19,"invalid_font","Expected a font object");return}keys(font,["family","source","url","weights","role"],path19);if(typeof font.family!=="string"||!isFontFamily(font.family)||font.family.includes(",")){issue(`${path19}.family`,"invalid_font","Expected one unquoted font family")}if(typeof font.source!=="string"||!["google","self","system"].includes(font.source)){issue(`${path19}.source`,"invalid_font","Unknown font source")}if(typeof font.role!=="string"||!["display","body","mono"].includes(font.role)||roles.has(font.role)){issue(`${path19}.role`,"invalid_font","Expected a unique font role")}roles.add(String(font.role));if(font.source==="self"||font.url!==void 0){if(typeof font.url!=="string"||!isAssetUrl(font.url,false)||!new URL(font.url).pathname.endsWith(".woff2")){issue(`${path19}.url`,"invalid_font","Expected an HTTPS .woff2 URL")}}if(font.weights!==void 0&&(!Array.isArray(font.weights)||!font.weights.length||font.weights.length>9||font.weights.some(w=>typeof w!=="number"||!Number.isInteger(w)||w<1||w>1e3))){issue(`${path19}.weights`,"invalid_font","Expected 1\u20139 integer weights between 1 and 1000")}})}}if(input.logo!==void 0){if(!record2(input.logo)){issue("logo","invalid_logo","Expected a logo object")}else{keys(input.logo,["light","dark","mark","alt"],"logo");if(typeof input.logo.alt!=="string"||!input.logo.alt.trim()){issue("logo.alt","invalid_logo","Logo alternative text is required")}for(const key of["light","dark","mark"]){const value=input.logo[key];if(key==="light"||value!==void 0){if(typeof value!=="string"||!isAssetUrl(value)){issue(`logo.${key}`,"invalid_logo","Expected HTTPS or a relative asset path")}}}}}if(input.motion!==void 0){if(!record2(input.motion)){issue("motion","invalid_motion","Expected a motion object")}else{keys(input.motion,["reduce"],"motion");if(input.motion.reduce!==void 0&&typeof input.motion.reduce!=="boolean"){issue("motion.reduce","invalid_motion","Expected a boolean")}}}const tokenGroup=value=>record2(value)?value:{};for(const group of record2(input.dark)?["tokens","dark"]:["tokens"]){const values={...DEFAULT_TOKENS,...tokenGroup(input.tokens),...group==="dark"?tokenGroup(input.dark):{}};const pairs=[["--z-text","--z-bg",4.5,"error"],["--z-text","--z-surface",4.5,"error"],["--z-accent-contrast","--z-accent",4.5,"error"],["--z-text-muted","--z-bg",3,"warning"]];for(const[fg,bg,minimum,severity]of pairs){const foreground=values[fg],background=values[bg];if(typeof foreground!=="string"||typeof background!=="string"||!parseColor(foreground)||!parseColor(background)){continue}const ratio=contrastRatio(foreground,background);if(!Number.isFinite(ratio)){issue(`${group}.${bg}`,"unverified_contrast","A contrast background must be opaque","error")}else if(ratio<minimum){issue(`${group}.${fg}`,"low_contrast",`Contrast against ${bg} must be at least ${minimum}:1`,severity)}}}return issues.some(i=>i.severity==="error")?{ok:false,issues}:{ok:true,theme:input,warnings:issues}}import{createHash}from"crypto";import{readFile as readFile2}from"fs/promises";import path2 from"path";import{pathToFileURL}from"url";var P="hours contact offers delivery about gallery".split(" ");var SHAPE={"":{version:1,source:["intake","surprise","settings"],updatedAt:"date",business:0,vibe:["warm","bold","calm","fresh"],colours:0,text:0,corners:["square","soft","round"],pages:"pages",tone:["friendly","playful","polished","direct"],photos:["bright","moody","plain","people"],"notes?":500},business:{name:80,"sells?":200,"audience?":200},colours:{main:"hex",background:"hex",highlight:"hex","mainFromLogo?":"bool"},text:{display:60,body:60}};function wrong(rule,value){if(rule===0)return;if(rule===1)return value===1?void 0:"must be 1";if(Array.isArray(rule))return rule.includes(value)?void 0:`must be one of ${rule.join(", ")}`;if(typeof rule==="number")return typeof value!=="string"||!value.trim()?"must be text":value.length>rule?`must be at most ${rule} characters`:void 0;if(rule==="hex")return/^#[\da-f]{6}$/i.test(String(value))?void 0:"must be a colour like #175c3a";if(rule==="bool")return typeof value==="boolean"?void 0:"must be true or false";if(rule==="date")return typeof value==="string"&&!Number.isNaN(Date.parse(value))?void 0:"must be a date and time";return Array.isArray(value)&&new Set(value).size===value.length&&value.every(page=>P.includes(page))?void 0:`must list each of ${P.join(", ")} at most once`}function validateBrand(value){const issues=[];for(const[at,rules]of Object.entries(SHAPE)){const object=at?value[at]:value;if(!object||typeof object!=="object"||Array.isArray(object)){if(!at||object!==void 0)issues.push({path:at||"$",message:"must be an object"});if(!at)return issues;continue}const keys=Object.keys(rules).map(key=>key.replace("?",""));for(const key of Object.keys(object))if(!keys.includes(key))issues.push({path:at?`${at}.${key}`:key,message:"is not a brand setting"});for(const[name,rule]of Object.entries(rules)){const key=name.replace("?","");const field=object[key];const message6=field===void 0?name.endsWith("?")?void 0:"is missing":wrong(rule,field);if(message6)issues.push({path:at?`${at}.${key}`:key,message:message6})}}return issues}import{readFile}from"fs/promises";import path from"path";async function json(file){return JSON.parse(await readFile(file,"utf8"))}function relative(cwd,file){return path.relative(cwd,file).split(path.sep).join("/")}function lineFor(source,issuePath){const key=issuePath.split(".").at(-1)?.replace(/\[\d+\]$/,"");if(!key||key==="$"){return void 0}const quoted=JSON.stringify(key);const lines=source.split(/\r?\n/);const index=lines.findIndex(line=>line.includes(quoted)||new RegExp(`\\b${escape(key)}\\b`).test(line));return index<0?void 0:index+1}function escape(value){return value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function problem(message6,fix,details={}){return{...details,message:message6,fix}}function step(name,result,problems=[]){return{name,result,problems}}var skipped=(name,message6)=>step(name,"skipped",[problem(message6,null)]);function supportsTypeScriptImport(version=process.versions.node){const[major=0,minor=0]=version.split(".").map(Number);return major>22||major===22&&minor>=18}async function loadConfig(cwd){const file=path2.join(cwd,"zappie.config.ts");if(!supportsTypeScriptImport()){throw new Error("zappie check needs Node 22.18 or later to read zappie.config.ts")}const source=await readFile2(file,"utf8");const version=createHash("sha256").update(source).digest("hex");const loaded=await import(`${pathToFileURL(file).href}?check=${version}`);return{value:loaded.default,source,file}}async function checkConfig({cwd,signal}){signal?.throwIfAborted();let loaded;try{loaded=await loadConfig(cwd)}catch(error){return step("config","failed",[problem(message(error),"Create a readable zappie.config.ts in the project root.",{file:"zappie.config.ts"})])}const validation=validateConfig(loaded.value);const problems=validation.issues.map(issue=>configProblem(issue,loaded.source));let themeFailed=false;const theme2=configTheme(loaded.value);if(theme2){const checkedTheme=await themeProblems(cwd,theme2);problems.push(...checkedTheme.problems);themeFailed=checkedTheme.failed}const brand=await brandProblems(cwd);problems.push(...brand);signal?.throwIfAborted();return step("config",validation.issues.some(issue=>issue.severity==="error")||themeFailed||brand.length>0?"failed":"passed",problems)}function configProblem(issue,source){const line=lineFor(source,issue.path);return problem(`${issue.path}: ${issue.message}`,issue.message,{rule:`config/${issue.code}`,file:"zappie.config.ts",...line?{line}:{}})}async function themeProblems(cwd,theme2){const file=path2.resolve(cwd,theme2);try{const source=await readFile2(file,"utf8");const result=validateTheme(JSON.parse(source));const issues=result.ok?result.warnings:result.issues;return{failed:issues.some(issue=>issue.severity==="error"),problems:issues.map(issue=>themeProblem(issue,source,theme2))}}catch(error){return{failed:true,problems:[problem(message(error),`Make ${theme2} a readable JSON theme file.`,{rule:"theme/unreadable",file:theme2})]}}}var BRAND_FILE="app/brand.json";async function brandProblems(cwd){let source;try{source=await readFile2(path2.join(cwd,BRAND_FILE),"utf8")}catch{return[]}const fix=`Fix ${BRAND_FILE} from the Brand setting in Studio, or remove it.`;const details=(rule,line)=>({rule:`brand/${rule}`,file:BRAND_FILE,...line?{line}:{}});if(Buffer.byteLength(source)>4096){return[problem(`${BRAND_FILE} is larger than 4096 bytes.`,fix,details("too-large"))]}let value;try{value=JSON.parse(source)}catch(error){return[problem(message(error),fix,details("unreadable"))]}return validateBrand(value).map(issue=>problem(`${issue.path}: ${issue.message}`,fix,details("invalid",lineFor(source,issue.path))))}function themeProblem(issue,source,file){const line=lineFor(source,issue.path);return problem(`${issue.path}: ${issue.message}`,issue.message,{rule:`theme/${issue.code}`,file,...line?{line}:{}})}function configTheme(value){return value&&typeof value==="object"&&"theme"in value&&typeof value.theme==="string"?value.theme:void 0}function message(error){return error instanceof Error?error.message:String(error)}import{access,readdir,readFile as readFile3,realpath}from"fs/promises";import path3 from"path";var LOCKFILES=["pnpm-lock.yaml","package-lock.json","yarn.lock","bun.lock","bun.lockb"];async function findLockfile(cwd){for(let directory=cwd;;directory=path3.dirname(directory)){for(const name of LOCKFILES){const file=path3.join(directory,name);if(await exists(file)){return file}}if(path3.dirname(directory)===directory){return null}}}async function readNpmLock(file){const lock=file.endsWith(".json")?JSON.parse(await readFile3(file,"utf8")):{};const base=await realpath(path3.dirname(file));const scripted=[];const aliases=new Map;for(const[key,entry]of Object.entries(lock.packages??{})){const at=key.lastIndexOf("node_modules/");if(at>=0){const name=key.slice(at+13);if(entry.hasInstallScript){scripted.push(`${name}@${entry.version}`)}if(entry.name){aliases.set(path3.join(base,key),entry.name)}}}return{scripted,aliases}}async function installedPackages(roots,root,direct){const found=new Map;const top=await realpath(root);const visit=async(directory,linked)=>{const real=await realpath(directory).catch(()=>"");if(!real||found.has(real)){return}let manifest;try{manifest=JSON.parse(await readFile3(path3.join(real,"package.json"),"utf8"))}catch{return}const at=real.lastIndexOf(`node_modules${path3.sep}`);const name=at<0?linked:real.slice(at+13).split(path3.sep).join("/");found.set(real,{directory:real,name,manifest});if(!path3.relative(top,real).startsWith("..")){await walk(path3.join(real,"node_modules"))}};const walk=async nodeModules=>{for(const entry of await list(nodeModules)){const directory=path3.join(nodeModules,entry);if(entry===".pnpm"){for(const item of await list(directory)){await walk(path3.join(directory,item,"node_modules"))}}else if(entry.startsWith("@")){for(const item of await list(directory)){await visit(path3.join(directory,item),`${entry}/${item}`)}}else if(!entry.startsWith(".")){await visit(directory,entry)}}};for(const[directory,name]of direct){await visit(directory,name)}for(const directory of roots){await walk(path3.join(directory,"node_modules"))}return found}var list=directory=>readdir(directory).catch(()=>[]);var exists=file=>access(file).then(()=>true,()=>false);async function installScripts({directory,manifest}){const scripts=["preinstall","install","postinstall"].filter(script=>manifest.scripts?.[script]);if(!scripts.includes("install")&&!scripts.includes("preinstall")&&(manifest.gypfile||await exists(path3.join(directory,"binding.gyp")))){scripts.unshift("install")}return scripts}var GLOBAL_DEV_PACKAGE_ALLOWLIST=["typescript","vite","@react-router/dev","magic-string","@cloudflare/*","wrangler","eslint","eslint-plugin-zappie","vitest","@playwright/test","@types/*","@zappie/*","zappie","postcss","jsdom","@testing-library/*"];var INSTALL_SCRIPT_ALLOWLIST=["esbuild","workerd","fsevents"];var BUILTIN_ALLOWLIST_SOURCE={load:async()=>GLOBAL_PACKAGE_ALLOWLIST,loadDev:async()=>GLOBAL_DEV_PACKAGE_ALLOWLIST};async function checkAllowlist({cwd,signal},source=BUILTIN_ALLOWLIST_SOURCE){signal?.throwIfAborted();const problems=[];let manifest;try{manifest=await json(path4.join(cwd,"package.json"))}catch(error){return step("allowlist","failed",[problem(String(error),"Add a valid package.json to the project root.",{file:"package.json"})])}const lockfile2=await findLockfile(cwd);if(!lockfile2){problems.push(problem("No supported lockfile was found.","Install dependencies and commit the generated lockfile."))}const global=[...await source.load(signal),...await localAllowlist(cwd)];const dev=[...global,...await(source.loadDev??BUILTIN_ALLOWLIST_SOURCE.loadDev)(signal)];const direct=[];const declared=[...Object.entries(manifest.dependencies??{}),...Object.entries(manifest.devDependencies??{})];for(const[names,allowed,rule,kind]of[[manifest.dependencies,global,"allowlist/package","a dependency"],[manifest.devDependencies,dev,"allowlist/dev-package","a devDependency"]]){for(const[name,spec]of Object.entries(names??{})){if(!allowed.some(entry=>matches(entry,name))){problems.push(problem(`${name} is ${kind} outside the package allowlist.`,`Add ${name} to packages.allow in zappie.config.ts after reviewing it.`,{rule,file:"package.json"}))}if(!/^(?:workspace|catalog):/.test(spec)&&/[:/]/.test(spec)){problems.push(problem(`${name} comes from ${spec}, not the npm registry.`,`Install ${name} from the npm registry. Git sources also run a prepare script on install.`,{rule:"allowlist/source",file:"package.json"}))}const directory=await resolvePackage(cwd,name);if(directory){direct.push([directory,name])}else if(names===manifest.dependencies){problems.push(problem(`${name} is not installed.`,"Install dependencies from the committed lockfile.",{rule:"allowlist/not-installed",file:"package.json"}))}}}const file=lockfile2?relative(cwd,lockfile2):"package.json";const roots=[...new Set([lockfile2?path4.dirname(lockfile2):cwd,cwd])];const root=[roots[0],...direct.map(([directory])=>directory.slice(0,directory.lastIndexOf(`${path4.sep}node_modules`)))].sort((left,right)=>left.length-right.length)[0];const found=await installedPackages(roots,root,direct);signal?.throwIfAborted();let npm={scripted:[],aliases:new Map};try{npm=lockfile2?await readNpmLock(lockfile2):npm}catch(error){problems.push(problem(String(error),"Reinstall and commit the lockfile.",{file}))}if(!found.size&&declared.length){problems.push(problem("No installed packages were found, so install scripts weren't checked. Yarn Plug'n'Play isn't supported.","Install dependencies into node_modules from the committed lockfile, then run check again.",{rule:"allowlist/not-installed",file}))}const scripted=new Map;const copies=[...found.values()];for(let index=0;index<copies.length;index+=32){await Promise.all(copies.slice(index,index+32).map(async copy=>{const key=`${copy.name}@${copy.manifest.version}`;if(copy.manifest.name!==copy.name&&npm.aliases.get(copy.directory)!==copy.manifest.name){problems.push(problem(`${copy.name} in node_modules says it is ${copy.manifest.name}.`,`Reinstall from the npm registry, and remove the dependency that brings in ${copy.name} if it stays.`,{rule:"allowlist/manifest",file}))}const scripts=await installScripts(copy);scripted.set(key,[...scripted.get(key)??[],...scripts])}))}for(const key of npm.scripted){if(!scripted.has(key)){scripted.set(key,["install"])}}for(const[key,scripts]of scripted){const name=key.slice(0,key.lastIndexOf("@"));if(scripts.length&&!INSTALL_SCRIPT_ALLOWLIST.some(entry=>entry===name)){problems.push(problem(`${key} in ${file} runs an install script (${[...new Set(scripts)].join(", ")}).`,`Remove the dependency that brings in ${name}, or replace it with one without install scripts.`,{rule:"allowlist/install-script",file}))}}signal?.throwIfAborted();return step("allowlist",problems.length?"failed":"passed",problems)}async function localAllowlist(cwd){try{const loaded=await loadConfig(cwd);const value=loaded.value;return Array.isArray(value?.packages?.allow)?value.packages.allow.filter(entry=>typeof entry==="string"):[]}catch{return[]}}function matches(pattern,value){return pattern.endsWith("/*")?value.startsWith(pattern.slice(0,-1)):pattern===value}async function resolvePackage(cwd,name){for(let directory=cwd;;directory=path4.dirname(directory)){const found=path4.join(directory,"node_modules",...name.split("/"));if(await json(path4.join(found,"package.json")).then(()=>true,()=>false)){return found}if(path4.dirname(directory)===directory){return null}}}import{access as access3,readFile as readFile4}from"fs/promises";import path6 from"path";import{spawn}from"child_process";import{constants}from"fs";import{access as access2}from"fs/promises";import path5 from"path";var KILL_GRACE_MS=2e3;var windows=process.platform==="win32";var running=new Set;var exitHook=false;function track(pid){if(pid===void 0||windows){return}running.add(pid);if(!exitHook){exitHook=true;process.once("exit",()=>{for(const group of running){try{process.kill(-group,"SIGKILL")}catch{}}})}}function command(executable,args,cwd,signal,options={}){const grace=options.killGraceMs??KILL_GRACE_MS;return new Promise((resolve,reject)=>{if(signal?.aborted){reject(signal.reason);return}const child=spawn(executable,args,{cwd,env:{...process.env,NO_COLOR:"1",FORCE_COLOR:"0",COREPACK_ENABLE_DOWNLOAD_PROMPT:"0",GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","pipe"],detached:!windows,windowsHide:true});track(child.pid);const tree=processTree(child,grace);let stdout="";let stderr="";let settled=false;let exitCode;let lingering;const finish=settle=>{if(settled){return}settled=true;signal?.removeEventListener("abort",onAbort);clearTimeout(lingering);child.stdout.destroy();child.stderr.destroy();settle()};const result=()=>({code:exitCode??1,stdout,stderr});const onAbort=()=>{tree.stop();finish(()=>reject(signal?.reason))};signal?.addEventListener("abort",onAbort,{once:true});child.stdout.on("data",value=>{stdout+=String(value)});child.stderr.on("data",value=>{stderr+=String(value)});child.on("error",error=>{tree.stop();finish(()=>reject(error))});child.on("exit",code=>{exitCode=code??1;tree.stop();lingering=setTimeout(()=>finish(()=>resolve(result())),grace+500)});child.on("close",code=>{exitCode??=code??1;finish(()=>resolve(result()))})})}function processTree(child,grace){let stopped=false;const signalGroup=name=>{if(child.pid===void 0){return false}try{process.kill(-child.pid,name);return true}catch{return false}};return{stop(){if(stopped){return}stopped=true;if(windows){if(child.pid!==void 0){spawn("taskkill",["/pid",String(child.pid),"/T","/F"],{stdio:"ignore",windowsHide:true}).on("error",()=>{})}return}if(signalGroup("SIGTERM")){setTimeout(()=>{signalGroup("SIGKILL");running.delete(child.pid)},grace)}else{running.delete(child.pid)}}}}var PNPM_NO_VERIFY="--config.verify-deps-before-run=false";function execArgs(manager,binary,args){if(manager==="npm"){return{executable:"npm",args:["exec","--no","--",binary,...args]}}if(manager==="yarn"){return{executable:"yarn",args:["exec",binary,...args]}}if(manager==="bun"){return{executable:"bun",args:["x","--no-install",binary,...args]}}return{executable:"pnpm",args:[PNPM_NO_VERIFY,"exec",binary,...args]}}async function binaryArgs(manager,cwd,binary,args){if(!windows){const local=path5.join(cwd,"node_modules",".bin",binary);try{await access2(local,constants.X_OK);return{executable:local,args}}catch{}}return execArgs(manager,binary,args)}function scriptArgs(manager,name){if(manager==="bun"){return{executable:"bun",args:["run",name]}}if(manager==="npm"){return{executable:"npm",args:["run",name]}}if(manager==="pnpm"){return{executable:"pnpm",args:[PNPM_NO_VERIFY,name]}}return{executable:manager,args:[name]}}var AUDIT_TIMEOUT_MS=6e4;async function checkAudit(options,dependencies={}){const mode=options.audit??"report";if(mode==="off"){return skipped("audit","Dependency auditing is off.")}options.signal?.throwIfAborted();let invalidIgnores=[];let ignores=[];try{const parsed=await auditIgnores(options.cwd);ignores=parsed.ignores;invalidIgnores=parsed.problems}catch(error){invalidIgnores.push(problem(`Could not use audit.ignore: ${message2(error)}`,"Fix or remove the invalid acknowledgement. The advisory remains unacknowledged.",{rule:"audit/invalid-ignore",file:"zappie.config.ts",line:1}))}if(options.packageManager==="yarn"||options.packageManager==="bun"){return withProblems(unavailable(mode,`Could not audit dependencies: ${options.packageManager} is not supported.`,"Use npm or pnpm for dependency auditing, or run with --audit=off.","package.json"),invalidIgnores,mode)}const lockfile2=await findLockfile2(options.cwd,options.packageManager);if(!lockfile2){return withProblems(unavailable(mode,"Could not audit dependencies: no lockfile was found.","Commit the package manager lockfile and run zappie check again.","package.json"),invalidIgnores,mode)}const invocation=auditCommand(options.packageManager);const configured=options.timeouts?.audit;const timeoutMs=dependencies.timeoutMs??(configured!==void 0&&Number.isFinite(configured)&&configured>0?configured:AUDIT_TIMEOUT_MS);const timeout=AbortSignal.timeout(timeoutMs);const signal=options.signal?AbortSignal.any([options.signal,timeout]):timeout;let result;try{result=await(dependencies.run??command)(invocation.executable,invocation.args,options.cwd,signal)}catch(error){options.signal?.throwIfAborted();const detail=timeout.aborted?`the audit timed out after ${Math.ceil(timeoutMs/1e3)} seconds`:message2(error);return withProblems(unavailable(mode,`Could not audit dependencies: ${detail}.`,"Check registry access and run zappie check again.",relativeLockfile(options.cwd,lockfile2)),invalidIgnores,mode)}options.signal?.throwIfAborted();let advisories;try{advisories=parseAuditOutput(options.packageManager,result.stdout);if(result.code>1){throw new Error(`the audit command exited with status ${result.code}`)}}catch(error){return withProblems(unavailable(mode,`Could not audit dependencies: ${message2(error)}.`,"Check registry access and run zappie check again.",relativeLockfile(options.cwd,lockfile2)),invalidIgnores,mode)}return withProblems(evaluateAudit(advisories,mode,ignores,relativeLockfile(options.cwd,lockfile2)),invalidIgnores,mode)}function evaluateAudit(advisories,mode,ignores=[],file){const problems=[];const applied=advisories.map(advisory=>{const acknowledged=ignores.find(({id})=>normalizedId(id)===normalizedId(advisory.id));if(acknowledged&&malicious(advisory.id)){problems.push(problem(`${advisory.id} is a malicious-package advisory and cannot be acknowledged.`,`Remove ${advisory.package} and replace it with a trusted package or release.`,{rule:"audit/invalid-ignore",advisory,...file?{file,line:1}:{}}));return advisory}if(acknowledged&&(advisory.fixedVersion||advisory.upgradeVersion||advisory.fixCommand)){const upgradePackage=advisory.upgradePackage??advisory.package;const upgradeVersion=advisory.upgradeVersion??advisory.fixedVersion;const fix=advisory.fixCommand?`Run ${advisory.fixCommand}.`:`Upgrade ${upgradePackage} to ${upgradeVersion} or later.`;const reason=advisory.fixCommand?`${advisory.id} has an available fix and cannot be acknowledged.`:`${advisory.id} has a fixed version and cannot be acknowledged.`;problems.push(problem(reason,fix,{rule:"audit/invalid-ignore",advisory,...file?{file,line:1}:{}}));return advisory}return acknowledged?{...advisory,ignored:true,ignoredUntil:acknowledged.until}:advisory});problems.push(...applied.map(advisory=>advisoryProblem(advisory,file)));const critical=applied.some(({severity,ignored})=>severity==="critical"&&!ignored);const invalidIgnore2=problems.some(({rule})=>rule==="audit/invalid-ignore");return step("audit",mode==="enforce"&&(critical||invalidIgnore2)?"failed":"passed",problems)}function unavailable(mode,message6,fix,file){return step("audit",mode==="enforce"?"failed":"passed",[problem(message6,fix,{rule:"audit/unavailable",file,line:1})])}function withProblems(checked,extra,mode){if(extra.length===0){return checked}return step("audit",mode==="enforce"?"failed":checked.result,[...extra,...checked.problems])}async function findLockfile2(cwd,manager){const names=manager==="npm"?["package-lock.json","npm-shrinkwrap.json"]:["pnpm-lock.yaml"];let directory=path6.resolve(cwd);for(;;){if(directory!==path6.resolve(cwd)&&manager==="pnpm"&&await workspaceExcludes(directory,path6.resolve(cwd))){return null}for(const name of names){const candidate=path6.join(directory,name);try{await access3(candidate);return candidate}catch{}}const parent=path6.dirname(directory);if(parent===directory){return null}directory=parent}}async function workspaceExcludes(directory,cwd){try{const source=await readFile4(path6.join(directory,"pnpm-workspace.yaml"),"utf8");const block=/^packages:\s*\n((?:[ \t]+.*(?:\n|$))*)/m.exec(source)?.[1];if(!block){return false}const relative2=path6.relative(directory,cwd).replaceAll(path6.sep,"/");const patterns=[...block.matchAll(/^\s*-\s*["']?([^"'\s]+)["']?\s*$/gm)].map(match=>match[1]??"");return!patterns.some(pattern=>workspacePattern(pattern,relative2))}catch{return false}}function workspacePattern(pattern,relative2){if(pattern==="."){return relative2===""}const expression=pattern.split("*").map(part=>part.replace(/[.*+?^$()|[\]\\]/g,"\\$&")).join("[^/]+");return new RegExp(`^${expression}$`).test(relative2)}function relativeLockfile(cwd,lockfile2){return path6.relative(cwd,lockfile2).replaceAll(path6.sep,"/")}function auditCommand(manager){return manager==="pnpm"?{executable:"pnpm",args:[PNPM_NO_VERIFY,"audit","--json"]}:{executable:"npm",args:["audit","--json"]}}function parseAuditOutput(manager,source){const value=JSON.parse(source);requireAuditReport(manager,value);const parsed=manager==="npm"?npmAdvisories(value):pnpmAdvisories(value);return parsed.filter(({severity})=>severity==="high"||severity==="critical").sort((left,right)=>left.id.localeCompare(right.id))}function requireAuditReport(manager,value){if(record3(value.error)){throw new Error(string(value.error.message)??string(value.error.code)??string(value.message)??"the package manager returned an error")}if(manager==="npm"&&!record3(value.vulnerabilities)){throw new Error("npm returned no vulnerability report")}if(manager==="pnpm"&&!record3(value.advisories)&&!record3(value.metadata)){throw new Error("pnpm returned no advisory report")}}function pnpmAdvisories(value){if(!record3(value.advisories)){return[]}return Object.entries(value.advisories).flatMap(([key,raw])=>{if(!record3(raw)){return[]}const findings=Array.isArray(raw.findings)?raw.findings:[];const versions=findings.flatMap(finding=>record3(finding)&&typeof finding.version==="string"?[finding.version]:[]);const severity=normalizedSeverity(raw.severity);if(!severity){return[]}return[{id:string(raw.github_advisory_id)??string(raw.id)??key,package:string(raw.module_name)??"unknown package",severity,vulnerableVersion:versions.join(", ")||string(raw.vulnerable_versions)||"unknown",fixedVersion:firstFixed(string(raw.patched_versions)),ignored:false}]})}function npmAdvisories(value){if(!record3(value.vulnerabilities)){return[]}const advisories=new Map;for(const[packageName2,raw]of Object.entries(value.vulnerabilities)){if(!record3(raw)||!Array.isArray(raw.via)){continue}for(const via of raw.via){if(!record3(via)){continue}const severity=normalizedSeverity(via.severity);if(!severity){continue}const id=ghsaFrom(string(via.url))??string(via.name)??String(via.source??packageName2);const upgrade=npmUpgrade(raw.fixAvailable);advisories.set(id,{id,package:packageName2,severity,vulnerableVersion:string(via.range)??string(raw.range)??"unknown",fixedVersion:upgrade.upgradePackage===packageName2?upgrade.upgradeVersion??null:null,...upgrade,ignored:false})}}return[...advisories.values()]}function advisoryProblem(advisory,file){const acknowledged=advisory.ignored?` Acknowledged until ${advisory.ignoredUntil}.`:"";const upgradePackage=advisory.upgradePackage??advisory.package;const upgradeVersion=advisory.upgradeVersion??advisory.fixedVersion;const fix=malicious(advisory.id)?`Remove ${advisory.package} and replace it with a trusted package or release.`:advisory.fixCommand?`Run ${advisory.fixCommand}.`:upgradeVersion?`Upgrade ${upgradePackage} to ${upgradeVersion} or later.`:`Review ${advisory.id}. If no fix exists, add a reason and an expiry of at most 90 days to audit.ignore.`;return problem(`${advisory.id}: ${advisory.package} ${advisory.vulnerableVersion} has ${advisory.severity} severity.${acknowledged}`,fix,{rule:`audit/${advisory.id}`,advisory,...file?{file,line:1}:{}})}async function auditIgnores(cwd){let loaded;try{loaded=await loadConfig(cwd)}catch(error){if(missing(error)){return{ignores:[],problems:[]}}throw error}if(!record3(loaded.value)||!record3(loaded.value.audit)){return{ignores:[],problems:[]}}const problems=[];const ignores=parseAuditIgnores(loaded.value.audit.ignore,problems);return{ignores,problems}}function parseAuditIgnores(value,problems=[]){if(value===void 0){return[]}if(!Array.isArray(value)){problems.push(invalidIgnore("audit.ignore must be an array."));return[]}const today=Date.parse(`${new Date().toISOString().slice(0,10)}T00:00:00.000Z`);const ninetyDays=90*24*60*60*1e3;const ids=new Set;const ignores=[];value.forEach((entry,index)=>{if(!ignoreEntry(entry)||!entry.id.trim()||!entry.reason.trim()){problems.push(invalidIgnore(`audit.ignore[${index}] must have a non-blank id, reason and until.`));return}const id=normalizedId(entry.id);if(ids.has(id)){problems.push(invalidIgnore(`audit.ignore contains duplicate id ${entry.id}.`));return}const expiry=Date.parse(`${entry.until}T00:00:00.000Z`);if(!/^\d{4}-\d{2}-\d{2}$/.test(entry.until)||!Number.isFinite(expiry)||new Date(expiry).toISOString().slice(0,10)!==entry.until||expiry<today||expiry-today>ninetyDays){problems.push(invalidIgnore(`audit.ignore[${index}].until must be a real, unexpired date at most 90 days away.`));return}ids.add(id);ignores.push(entry)});return ignores}function invalidIgnore(message6){return problem(message6,"Fix or remove the invalid acknowledgement. The advisory remains unacknowledged.",{rule:"audit/invalid-ignore",file:"zappie.config.ts",line:1})}function ignoreEntry(value){return record3(value)&&typeof value.id==="string"&&typeof value.reason==="string"&&typeof value.until==="string"}function npmUpgrade(value){if(record3(value)&&typeof value.name==="string"&&typeof value.version==="string"){return{upgradePackage:value.name,upgradeVersion:value.version}}if(value===true){return{fixCommand:"npm audit fix"}}return{}}function firstFixed(value){if(!value||value==="<0.0.0"){return null}return/(?:^|\s)>=?\s*([^\s|]+)/.exec(value)?.[1]??null}function ghsaFrom(value){const id=value?/GHSA-[\w-]+/i.exec(value)?.[0]:void 0;return id?`GHSA-${id.slice(5).toLowerCase()}`:void 0}function normalizedId(value){return value.trim().toLowerCase()}function malicious(value){return/^MAL-/i.test(value.trim())}function normalizedSeverity(value){const severity=typeof value==="string"?value.toLowerCase():"";return severity==="high"||severity==="critical"?severity:void 0}function string(value){return typeof value==="string"?value:void 0}function message2(error){return error instanceof Error?error.message:String(error)}function missing(error){return error instanceof Error&&"code"in error&&error.code==="ENOENT"}function record3(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}import{access as access4,readFile as readFile7}from"fs/promises";import path9 from"path";import{readFile as readFile5,readdir as readdir2}from"fs/promises";import path7 from"path";import{gzipSync}from"zlib";async function cssSizes(cwd){const root=path7.join(cwd,"build/client");const files=[];await collect(root,files);return Promise.all(files.filter(file=>file.endsWith(".css")).map(async file=>({file:path7.relative(root,file).split(path7.sep).join("/"),bytes:gzipSync(await readFile5(file,"utf8")).byteLength})))}async function collect(directory,files){for(const entry of await readdir2(directory,{withFileTypes:true})){if(entry.isSymbolicLink()){continue}const file=path7.join(directory,entry.name);if(entry.isDirectory()){await collect(file,files)}else if(entry.isFile()){files.push(file)}}}import{readFile as readFile6}from"fs/promises";import path8 from"path";import{gzipSync as gzipSync2}from"zlib";function routeKeys(manifest){return Object.entries(manifest).filter(([key,entry])=>routeSource(entry.src??key)).map(([key])=>key).sort()}function clientKeys(manifest){return Object.entries(manifest).filter(([key,entry])=>entry.isEntry&&!routeSource(entry.src??key)).map(([key])=>key).sort()}async function graphSizes(cwd,manifest,roots){const keys=closure(manifest,roots);return Promise.all([...keys].map(key=>manifest[key]).filter(entry=>Boolean(entry)).filter(({file})=>file.endsWith(".js")).map(async({file})=>({file,bytes:gzipSync2(await readFile6(path8.join(cwd,"build/client",file),"utf8")).byteLength})))}function closure(manifest,roots){const visited=new Set;const visit=key=>{if(visited.has(key)){return}const entry=manifest[key];if(!entry){throw new Error(`Manifest import ${key} has no entry.`)}visited.add(key);for(const dependency of entry.imports??[]){visit(dependency)}};roots.forEach(visit);return visited}function routeSource(value){return value.replace(/^\/?/,"").startsWith("app/routes/")}var KIB=1024;async function checkBudgets({cwd,signal}){signal?.throwIfAborted();const manifestFile=path9.join(cwd,"build/client/.vite/manifest.json");try{await access4(manifestFile)}catch{return skipped("budgets","No build/client/.vite/manifest.json is available.")}const manifest=JSON.parse(await readFile7(manifestFile,"utf8"));const config=(await loadConfig(cwd)).value;const limits={...DEFAULT_BUDGETS,...config.budgets};const routes=routeKeys(manifest);const clients=clientKeys(manifest);if(routes.length===0||clients.length===0){throw new Error("The Vite manifest needs a client entry and app/routes entries.")}const problems=[];let failed=false;for(const route of routes){const sizes=await graphSizes(cwd,manifest,[...clients,route]);const over=total(sizes)>limits.jsKbGz*KIB;failed||=over;problems.push(routeProblem(route,sizes,limits.jsKbGz,over))}const styles=await cssSizes(cwd);const cssOver=total(styles)>limits.cssKbGz*KIB;failed||=cssOver;problems.push(cssProblem(styles,limits.cssKbGz,cssOver));problems.push(problem(`LCP is not measured by zappie check; zappie verify enforces the ${limits.lcpMs} ms budget.`,null,{rule:"budgets/lcp"}));signal?.throwIfAborted();return step("budgets",failed?"failed":"passed",problems)}function routeProblem(route,sizes,limitKb,over){const bytes=total(sizes);const largest=[...sizes].sort((left,right)=>right.bytes-left.bytes).slice(0,3).map(({file,bytes:size})=>`${file} (${size} B)`).join(", ");return problem(`${route}: ${bytes} B gzip (limit ${limitKb*KIB} B).${over?` Largest chunks: ${largest}.`:""}`,over?"Reduce the route's client JavaScript or raise the reviewed budget override.":null,{rule:over?"budgets/js-over":"budgets/js-route",file:"build/client/.vite/manifest.json"})}function cssProblem(sizes,limitKb,over){const bytes=total(sizes);return problem(`Client CSS: ${bytes} B gzip (limit ${limitKb*KIB} B).`,over?"Reduce client CSS or raise the reviewed budget override.":null,{rule:over?"budgets/css-over":"budgets/css"})}var total=sizes=>sizes.reduce((sum,asset)=>sum+asset.bytes,0);import{readdir as readdir5,readFile as readFile10}from"fs/promises";import path12 from"path";import{readdir as readdir4,readFile as readFile9}from"fs/promises";import path11 from"path";var EDITOR_ORIGINS=Object.freeze(["https://dashboard.zappie.ai","https://dashboard.stg.zappie.ai","https://admin.zappie.ai","https://admin.stg.zappie.ai","http://localhost:5181","http://localhost:5180"]);var RESIZE_HOSTS=Object.freeze(["zappie-public-prod.s3.eu-west-2.amazonaws.com"]);import{TRUSTED_NAVIGATION_ORIGINS}from"eslint-plugin-zappie";import{readFile as readFile8,readdir as readdir3}from"fs/promises";import path10 from"path";var BUILD_OUTPUT=["build/client","build/server"];var QUOTE="[\"'`]";var URL_TEXT="((?:[a-z][a-z\\d+.-]*:|//|\\\\\\\\)[^\"'`\\s]*)";var JS_NAVIGATION=[new RegExp(`\\blocation(?:\\.href)?\\s*=\\s*${QUOTE}${URL_TEXT}`,"gi"),new RegExp(`\\blocation\\.(?:assign|replace)\\(\\s*${QUOTE}${URL_TEXT}`,"gi"),new RegExp(`\\bopen\\(\\s*${QUOTE}${URL_TEXT}`,"gi")];var REFRESH_URL=`\\d*\\s*;?\\s*url\\s*=\\s*['"]?([^"'\`\\s$;]+)`;var JS_REFRESH=[new RegExp(`http-?equiv["']?\\s*[:,=]\\s*["']refresh["']\\s*,\\s*["']?content["']?\\s*[:,=]\\s*${QUOTE}\\s*${REFRESH_URL}`,"gi"),new RegExp(`content["']?\\s*[:,=]\\s*${QUOTE}\\s*${REFRESH_URL}['"]?${QUOTE}\\s*,\\s*["']?http-?equiv["']?\\s*[:,=]\\s*["']refresh`,"gi"),new RegExp(`["']refresh["']\\s*[:,]\\s*${QUOTE}\\s*${REFRESH_URL}`,"gi")];var HTML_META=/<meta\b[^>]*>/gi;var ABSOLUTE="((?:https?:)?//[^\"'`\\s<>$]+)";var HTML_LINK=new RegExp(`\\s(?:href|action|formaction|src|poster|data)\\s*=\\s*["']?\\s*${ABSOLUTE}`,"gi");var JS_LINK=[new RegExp(`[{,]\\s*["']?(?:href|to|action|formAction|src|poster)["']?\\s*:\\s*${QUOTE}\\s*${ABSOLUTE}`,"g"),new RegExp(`setAttribute\\(\\s*["'](?:href|action|formaction|src)["']\\s*,\\s*${QUOTE}\\s*${ABSOLUTE}`,"gi"),new RegExp(`\\.(?:href|action|src)\\s*=\\s*${QUOTE}\\s*${ABSOLUTE}`,"g")];var HTML_SCRIPT=/<script\b[^>]*?\ssrc\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>]+))/gi;var APP_SCHEMES=/^(?:tel|mailto|sms):/;function untrusted(value){const url=value.trim().replaceAll("\\","/").toLowerCase();if(!/^(?:[a-z][a-z\d+.-]*:|\/\/)/.test(url)||APP_SCHEMES.test(url)){return false}return!TRUSTED_NAVIGATION_ORIGINS.some(origin=>url===origin||url.startsWith(`${origin}/`))}function lineAt(source,index){return source.slice(0,index).split("\n").length}var PACKAGE_HOSTS=["maps.googleapis.com"];var CSP_HOSTS=["fonts.googleapis.com","fonts.gstatic.com"];async function knownHosts(cwd){let config;try{config=(await loadConfig(cwd)).value}catch{config=void 0}const security=config?.security;const configured=[...Object.values(security?.csp??{}),config?.outbound?.allow,security?.links].flatMap(list2=>Array.isArray(list2)?list2:[]).filter(host=>typeof host==="string");return[...new Set(["*.zappie.ai","zappie.ai","zappie.shop","images.zappie.shop",...typeof config?.store==="string"?[`${config.store}.zappie.shop`]:[],...RESIZE_HOSTS,...PACKAGE_HOSTS,...CSP_HOSTS,...configured])].filter(Boolean).map(host=>host.toLowerCase())}function listedHost(url,hosts){let host;try{host=new URL(url.startsWith("//")?`https:${url}`:url).hostname.toLowerCase()}catch{return false}return hosts.some(entry=>entry.startsWith("*.")?host.endsWith(entry.slice(1)):host===entry)}function linkFindings(source,patterns,hosts){const found=[];for(const pattern of patterns){for(const match of source.matchAll(pattern)){const url=match[1]??"";if(!listedHost(url,hosts)){found.push({rule:"build/unlisted-link-host",index:match.index,url})}}}return found}function scanScript(source,hosts){const found=linkFindings(source,JS_LINK,hosts);for(const pattern of JS_NAVIGATION){for(const match of source.matchAll(pattern)){const url=match[1]??"";if(untrusted(url)){found.push({rule:"build/no-offsite-navigation",index:match.index,url})}}}for(const pattern of JS_REFRESH){for(const match of source.matchAll(pattern)){const url=match[1]??"";if(untrusted(url)){found.push({rule:"build/no-meta-refresh",index:match.index,url})}}}return found}function scanHtml(source,hosts){const found=linkFindings(source,[HTML_LINK],hosts);for(const match of source.matchAll(HTML_META)){const tag=match[0];if(!/\bhttp-equiv\s*=\s*["']?\s*refresh/i.test(tag)){continue}const url=new RegExp(REFRESH_URL,"i").exec(tag)?.[1]??"";if(untrusted(url)){found.push({rule:"build/no-meta-refresh",index:match.index,url})}}for(const match of source.matchAll(HTML_SCRIPT)){const src=match[1]??match[2]??match[3]??"";if(/^\s*(?:[a-z][a-z\d+.-]*:|\/\/|\\\\)/i.test(src)){found.push({rule:"build/no-external-script",index:match.index,url:src})}}return found}var MESSAGES={"build/no-offsite-navigation":{message:url=>`The build output sends the shopper to ${url} from code. Only Zappie's checkout and accounts may be opened this way.`,fix:"Find the code or package that navigates there and remove it, or link to the page with an <a href> the shopper clicks."},"build/no-meta-refresh":{message:url=>`The build output has a refresh that moves the shopper to ${url} without a click.`,fix:"Remove the refresh tag or header, or the package that adds it. Use a router redirect to a path on this site."},"build/unlisted-link-host":{message:url=>`The build output links to or loads ${url}, on a host the site doesn't list.`,fix:"If the store means to link there, add the host to security.links in zappie.config.ts (or security.csp for an image or font host). Otherwise find the code or content that names it and remove it."},"build/no-external-script":{message:url=>`The built page loads a script from ${url}.`,fix:"Install the code as a package so it ships in the storefront bundle, and remove the script tag."}};async function outputProblems(cwd){const problems=[];const hosts=await knownHosts(cwd);for(const directory of BUILD_OUTPUT){let entries;try{entries=await readdir3(path10.join(cwd,directory),{recursive:true,encoding:"utf8"})}catch{continue}for(const entry of entries.sort()){const html=/\.html?$/i.test(entry);if(!html&&!/\.[cm]?js$/i.test(entry)){continue}const file=path10.join(cwd,directory,entry);const source=await readFile8(file,"utf8").catch(()=>"");const findings=html?[...scanHtml(source,hosts),...scanScript(source,hosts)]:scanScript(source,hosts);const named=new Set(findings.filter(finding=>finding.rule!=="build/unlisted-link-host").map(finding=>finding.url));const reported=new Set;for(const finding of findings.sort((a,b)=>a.index-b.index)){const link=finding.rule==="build/unlisted-link-host";const key=`${finding.rule}\0${link?finding.url:finding.index}`;if(reported.has(key)||link&&named.has(finding.url)){continue}reported.add(key);const text=MESSAGES[finding.rule];if(!text){continue}problems.push(problem(text.message(finding.url),text.fix,{rule:finding.rule,file:relative(cwd,file),line:lineAt(source,finding.index)}))}}}return problems}var ATTRIBUTES=["data-zappie-source","data-zappie-component"];async function devSourceProblems(cwd){const problems=[];for(const directory of BUILD_OUTPUT){let entries;try{entries=await readdir4(path11.join(cwd,directory),{recursive:true,encoding:"utf8"})}catch{continue}for(const entry of entries.sort()){const file=path11.join(cwd,directory,entry);if(!/\.(?:[cm]?js|html?|css|json|txt|xml)$/.test(entry)){continue}const source=await readFile9(file,"utf8").catch(()=>"");const found=ATTRIBUTES.find(attribute=>source.includes(attribute));if(found){problems.push(problem(`The build output has the dev-only ${found} attribute, which shows where the site's code lives.`,"Add zappieSource() to the Vite plugins only for the dev server, as the starter does, and remove any copy of the attribute from your code.",{rule:"build/no-dev-source-attributes",file:relative(cwd,file)}))}}}return problems}var PREBUILT_ENV="ZAPPIE_CHECK_PREBUILT";var PREBUILT_RULE="build/prebuilt";async function checkBuild({cwd,packageManager,signal,prebuilt}){signal?.throwIfAborted();const manifest=JSON.parse(await readFile10(path12.join(cwd,"package.json"),"utf8"));const invocation=manifest.dependencies?.["react-router"]?await binaryArgs(packageManager,cwd,"react-router",["build"]):manifest.scripts?.build?scriptArgs(packageManager,"build"):void 0;if(!invocation){return skipped("build","No react-router dependency or build script is defined in package.json.")}if((prebuilt??process.env[PREBUILT_ENV]==="1")&&await hasBuildOutput(cwd)){const problems=await scanProblems(cwd);signal?.throwIfAborted();return step("build",problems.length?"failed":"passed",[...problems,problem("Used the existing build output instead of building again.",null,{rule:PREBUILT_RULE})])}const result=await command(invocation.executable,invocation.args,cwd,signal);signal?.throwIfAborted();if(result.code===0){const problems=await scanProblems(cwd);return step("build",problems.length?"failed":"passed",problems)}return step("build","failed",[problem(`The project build failed.
|
|
2
|
-
${usefulTail(result.stdout,result.stderr)}`,"Fix the reported build errors and run zappie check again.",{rule:"build/failed"})])}async function scanProblems(cwd){return[...await devSourceProblems(cwd),...await outputProblems(cwd)]}async function hasBuildOutput(cwd){for(const directory of BUILD_OUTPUT){const entries=await readdir5(
|
|
3
|
-
${stderr}`.split(/\r?\n/).map(line=>line.trimEnd()).filter(Boolean).slice(-12);return lines.length>0?lines.join("\n"):"The build exited without output."}import{lstat,readFile as readFile11,readdir as readdir6}from"fs/promises";import path13 from"path";var FILE_SIZE_CAP=1024*1024;var BUILD_FILE_SIZE_CAP=8*1024*1024;var ignoredDirectories=new Set(["node_modules","build","dist","coverage","public","vendor","test","tests","e2e","test-results","playwright-report"]);var codeExtension=/\.(?:[cm]?[jt]sx?|html|mdx)$/;var testFile=/\.(?:test|spec)\.[^.]+$/;async function readCssInputs(cwd){const source=[];await collect2(cwd,source,name=>{return!name.startsWith(".")&&!ignoredDirectories.has(name)});const built=[];await collect2(path13.join(cwd,"build/client"),built,()=>true);const read=(files,cap)=>texts(cwd,files,cap);return{sourceCss:await read(source.filter(file=>file.endsWith(".css")),FILE_SIZE_CAP),sourceCode:await read(source.filter(file=>codeExtension.test(file)&&!testFile.test(file)&&!/(?:^|[/\\])[^/\\]+\.config\.[^.]+$/.test(file)),FILE_SIZE_CAP),builtCss:await read(built.filter(file=>file.endsWith(".css")),BUILD_FILE_SIZE_CAP),builtCode:await read(built.filter(file=>file.endsWith(".js")),BUILD_FILE_SIZE_CAP)}}async function texts(cwd,files,cap){const result=[];for(const file of files.sort()){const info=await lstat(file);if(!info.isFile()||info.size>cap){continue}result.push({file:relative(cwd,file),text:await readFile11(file,"utf8")})}return result}async function collect2(directory,files,enter){let entries;try{entries=await readdir6(directory,{withFileTypes:true})}catch(error){if(error instanceof Error&&"code"in error&&error.code==="ENOENT"){return}throw error}for(const entry of entries){if(entry.isSymbolicLink()){continue}const file=path13.join(directory,entry.name);if(entry.isDirectory()){if(enter(entry.name)){await collect2(file,files,enter)}}else if(entry.isFile()){files.push(file)}}}import postcss from"postcss";var CSS_ERRORS=new Set(["css/important","css/class-patch"]);function analyseCss(inputs){const source=parseAll(inputs.sourceCss);const built=parseAll(inputs.builtCss);return[...source.problems,...built.problems,...important(source.parsed,inputs.sourceCode),...duplicateKeyframes(source.parsed,built.parsed),...duplicateSelectors(source.parsed),...arbitraryTokens(source.parsed,inputs.sourceCode),...unusedCustomProperties(source.parsed,built.parsed,inputs),...reducedMotion(source.parsed),...classPatches(source.parsed),...literalTokens(source.parsed)]}function parseAll(files){const parsed=[];const problems=[];for(const entry of files){try{parsed.push({...entry,root:postcss.parse(entry.text,{from:entry.file}),lines:entry.text.split(/\r?\n/)})}catch(error){const line=error&&typeof error==="object"&&"line"in error?Number(error.line):void 0;problems.push(problem(`${entry.file} could not be read as CSS: ${error instanceof Error?error.message:String(error)}`,"Fix the CSS syntax so zappie check can read the file.",{rule:"css/unreadable",file:entry.file,...line&&line>0?{line}:{}}))}}return{parsed,problems}}var allowImportant=/zappie-allow-important:\s*\S/;function important(css,code){const problems=[];const allowed=(lines,line)=>line!==void 0&&allowImportant.test(lines[line-1]??"");for(const entry of css){entry.root.walkDecls(decl=>{const line=decl.source?.start?.line;if(decl.important&&!allowed(entry.lines,line)&&!insideMedia(decl.parent,"reduce")){problems.push(importantProblem(`${decl.prop} is marked !important.`,entry.file,line))}});entry.root.walkAtRules("apply",rule=>{const line=rule.source?.start?.line;const flagged=rule.params.split(/\s+/).filter(token=>importantUtility(token));if((flagged.length>0||/!important\b/.test(rule.params))&&!allowed(entry.lines,line)){problems.push(importantProblem(`@apply ${rule.params} forces !important.`,entry.file,line))}})}for(const entry of code){const lines=entry.text.split(/\r?\n/);lines.forEach((text,index)=>{if(allowImportant.test(text)){return}for(const list2 of classLists(text)){for(const token of list2.split(/\s+/)){if(importantUtility(token)){problems.push(importantProblem(`The utility ${token} forces !important.`,entry.file,index+1))}}}})}return problems}function importantProblem(message6,file,line){return problem(message6,"Raise the selector's specificity or reorder the rules instead. For a reviewed case, add /* zappie-allow-important: <reason> */ on the same line.",{rule:"css/important",file,...line?{line}:{}})}var utilityToken=/^!?-?[a-z0-9@[\]_\-:/.%()#,'=&>*~+!]*[a-z0-9\])%]!?$/;function importantUtility(token){const utility=withoutVariants(token).utility;if(utility.length<3){return false}if(/^!-?[a-z[]/.test(utility)){return true}return/[a-z0-9\])%]!$/.test(utility)&&/[-[]/.test(utility)}function classLists(line){const lists=[];for(const match of line.matchAll(/(["'`])([^"'`]*?)\1/g)){const value=match[2]?.trim()??"";if(!value){continue}const tokens=value.split(/\s+/);if(tokens.every(token=>utilityToken.test(token))&&tokens.some(token=>token.includes("-"))){lists.push(value)}}return lists}function withoutVariants(token){let depth=0;let cut=0;for(let index=0;index<token.length;index++){const character=token[index];if(character==="["||character==="("){depth++}else if(character==="]"||character===")"){depth--}else if(character===":"&&depth===0){cut=index+1}}return{variants:token.slice(0,cut),utility:token.slice(cut)}}function keyframesIn(files){const found=[];for(const entry of files){entry.root.walkAtRules(/keyframes$/i,rule=>{const line=rule.source?.start?.line;found.push({name:rule.params.trim(),vendor:rule.name.toLowerCase().replace(/keyframes$/,""),body:framesBody(rule),file:entry.file,...line?{line}:{}})})}return found}function framesBody(rule){const frames=[];rule.each(node=>{if(node.type!=="rule"){return}const declarations=[];node.walkDecls(decl=>{declarations.push(`${decl.prop.toLowerCase()}:${normaliseValue(decl.value)}${decl.important?"!":""}`)});const selector=node.selectors.map(value=>value.trim().toLowerCase().replace(/^from$/,"0%").replace(/^to$/,"100%")).join(",");frames.push(`${selector}{${declarations.join(";")}}`)});return frames.join("")}function normaliseValue(value){return value.toLowerCase().replace(/\s+/g,"").replace(/(^|[^\d.])0+(\.\d)/g,"$1$2").replace(/(\d)\.0+(?!\d)/g,"$1")}function duplicateKeyframes(source,built){const problems=[];const reported=new Set;const sourceFrames=keyframesIn(source);const builtFrames=keyframesIn(built);const fix="Keep one @keyframes for each animation and refer to it by that name.";const byName=frames=>{const groups=new Map;for(const frame of frames){const key=`${frame.vendor}${frame.name}`;groups.set(key,[...groups.get(key)??[],frame])}return groups};for(const[key,group]of byName(sourceFrames)){if(group.length>1){reported.add(key);const[first,...rest]=group;for(const frame of rest){problems.push(problem(`@keyframes ${frame.name} is defined again (first in ${first?.file}${first?.line?`:${first.line}`:""}).`,fix,location("css/duplicate-keyframes",frame)))}}}for(const[key,group]of byName(builtFrames)){if(reported.has(key)||new Set(group.map(({body})=>body)).size<2){continue}reported.add(key);const first=group[0];problems.push(problem(`@keyframes ${first?.name} is defined more than once with different frames in the built CSS, so the last one wins.`,`${fix} Rename yours if it clashes with one from a library or Tailwind.`,location("css/duplicate-keyframes",first)))}const byBody=new Map;for(const frame of[...sourceFrames,...builtFrames]){if(!frame.body){continue}const key=`${frame.vendor}${frame.body}`;const group=byBody.get(key)??[];if(!group.some(({name})=>name===frame.name)){group.push(frame)}byBody.set(key,group)}for(const group of byBody.values()){if(group.length<2){continue}const names=group.map(({name})=>name);const[first,...rest]=group;problems.push(problem(`@keyframes ${names.join(", ")} have the same frames under different names.`,`${fix} Use ${first?.name} for all of them.`,location("css/duplicate-keyframes",rest[0])))}return problems}function location(rule,entry){return{rule,...entry?{file:entry.file}:{},...entry?.line?{line:entry.line}:{}}}function contextOf(node){const parts=[];for(let parent=node;parent&&parent.type!=="root";parent=parent.parent){if(parent.type==="atrule"){const rule=parent;parts.unshift(`@${rule.name} ${rule.params.replace(/\s+/g," ").trim()}`)}else if(parent.type==="rule"){parts.unshift(parent.selectors.map(normaliseSelector).join(","))}}return parts.join(" > ")}var normaliseSelector=selector=>selector.replace(/\s+/g," ").replace(/\s*([>+~,])\s*/g,"$1").trim();function duplicateSelectors(source){const seen=new Map;const problems=[];for(const entry of source){entry.root.walkRules(rule=>{if(rule.parent?.type==="atrule"&&/keyframes$/i.test(rule.parent.name)){return}const context=contextOf(rule.parent);const line=rule.source?.start?.line;const selectors=[...new Set(rule.selectors.map(normaliseSelector))];const keys=selectors.length===1?selectors:[[...selectors].sort().join(",")];for(const selector of keys){const key=`${context}\0${selector}`;const first=seen.get(key);if(!first){seen.set(key,{file:entry.file,...line?{line}:{}});continue}problems.push(problem(`${selector}${context?` (inside ${context})`:""} is already styled in ${first.file}${first.line?`:${first.line}`:""}.`,"Merge the declarations into one rule so the cascade order cannot change the result.",location("css/duplicate-selector",{file:entry.file,...line?{line}:{}})))}})}return problems}var namespaces=[["font-weight",["font"]],["inset-shadow",["inset-shadow"]],["drop-shadow",["drop-shadow"]],["text-shadow",["text-shadow"]],["color",["text","bg","border","border-x","border-y","border-t","border-r","border-b","border-l","border-s","border-e","ring","ring-offset","outline","fill","stroke","decoration","accent","caret","divide","placeholder","from","via","to","shadow","inset-shadow","inset-ring"]],["radius",["rounded","rounded-t","rounded-r","rounded-b","rounded-l","rounded-tl","rounded-tr","rounded-br","rounded-bl","rounded-s","rounded-e","rounded-ss","rounded-se","rounded-es","rounded-ee"]],["font",["font"]],["text",["text"]],["tracking",["tracking"]],["leading",["leading"]],["shadow",["shadow"]],["blur",["blur"]],["ease",["ease"]],["animate",["animate"]],["container",["max-w","min-w","w"]]];function themeTokens(source){const tokens=[];for(const entry of source){entry.root.walkAtRules("theme",rule=>{rule.walkDecls(/^--/,decl=>{for(const[namespace,utilities]of namespaces){const prefix=`--${namespace}-`;if(decl.prop.startsWith(prefix)&&decl.prop.length>prefix.length){tokens.push({variable:decl.prop,value:compact(decl.value),utilities,name:decl.prop.slice(prefix.length)});break}}})})}return tokens}var compact=value=>value.toLowerCase().replace(/_/g," ").replace(/\s+/g,"");var arbitraryUtility=/(?<![\w-])((?:[^\s"'`<>{}]*:)?)(!?)(-?)([a-z][a-z-]*?)-(\[([^\]\s"'`]+)\]|\((--[a-z0-9_-]+)\))((?:\/[\w.%]+)?!?)(?![\w-])/g;function arbitraryTokens(source,code){const tokens=themeTokens(source);if(tokens.length===0){return[]}const problems=[];const scan=(text,file,lineOffset=0)=>{text.split(/\r?\n/).forEach((line,index)=>{for(const match of line.matchAll(arbitraryUtility)){const[whole,variants="",bang="",negative="",utility="",,bracket,parenthesis,modifier=""]=match;const raw=bracket??`var(${parenthesis})`;const value=compact(raw.replace(/^[a-z-]+:(?!\/)/,""));const token=tokens.find(candidate=>candidate.utilities.includes(utility)&&(value===candidate.value||value===`var(${candidate.variable})`));if(!token){continue}const replacement=`${variants}${bang}${negative}${utility}-${token.name}${modifier}`;problems.push(problem(`${whole} restates the theme token ${token.variable}.`,`Use ${replacement}.`,{rule:"css/arbitrary-token",file,line:lineOffset+index+1}))}})};for(const entry of code){scan(entry.text,entry.file)}for(const entry of source){entry.root.walkAtRules("apply",rule=>{scan(rule.params,entry.file,(rule.source?.start?.line??1)-1)})}return problems}function unusedCustomProperties(source,built,inputs){const definitions=new Map;for(const entry of source){entry.root.walkDecls(/^--/,decl=>{if(insideTheme(decl.parent)||definitions.has(decl.prop)){return}const line=decl.source?.start?.line;definitions.set(decl.prop,{file:entry.file,...line?{line}:{}})})}if(definitions.size===0){return[]}const read=new Set;const cssReads=/var\(\s*(--[\w-]+)/g;for(const entry of[...source,...built]){for(const match of entry.text.matchAll(cssReads)){read.add(match[1]??"")}}const scriptMentions=/(?<![\w-])(--[a-zA-Z][\w-]*)/g;for(const entry of[...inputs.sourceCode,...inputs.builtCode]){for(const match of entry.text.matchAll(scriptMentions)){read.add(match[1]??"")}}const problems=[];for(const[name,where]of definitions){if(!read.has(name)){problems.push(problem(`${name} is defined but nothing reads it.`,"Remove the custom property, or read it with var().",location("css/unused-custom-property",where)))}}return problems}function insideTheme(node){for(let parent=node;parent;parent=parent.parent){if(parent.type==="atrule"&&parent.name==="theme"){return true}}return false}var motionProperties=new Set(["animation","animation-name","transition","transition-property"]);var stillValue=/^(?:none|0m?s|initial|unset|inherit)$/i;var reducedMotionQuery=(rule,preference)=>rule.name==="media"&&new RegExp(`prefers-reduced-motion\\s*:\\s*${preference}`,"i").test(rule.params);function insideMedia(node,preference){for(let parent=node;parent;parent=parent.parent){if(parent.type==="atrule"&&reducedMotionQuery(parent,preference)){return true}}return false}var globalSelector=/^(?:\*|html|:root|body|\*::?before|\*::?after|::?before|::?after)$/;function reducedMotion(source){let global=false;const stilled=new Set;for(const entry of source){entry.root.walkAtRules("media",media=>{if(!reducedMotionQuery(media,"reduce")){return}media.walkRules(rule=>{let touchesMotion=false;rule.walkDecls(decl=>{if(/^(?:animation|transition)/.test(decl.prop)){touchesMotion=true}});if(!touchesMotion){return}for(const selector of rule.selectors.map(normaliseSelector)){stilled.add(selector);if(globalSelector.test(selector)){global=true}}})})}if(global){return[]}const problems=[];for(const entry of source){entry.root.walkDecls(decl=>{if(!motionProperties.has(decl.prop)||stillValue.test(decl.value.trim())){return}const parent=decl.parent;if(insideMedia(parent,"reduce")||insideMedia(parent,"no-preference")||insideTheme(parent)||parent?.type!=="rule"){return}const selectors=parent.selectors.map(normaliseSelector);if(selectors.every(selector=>stilled.has(selector))){return}const line=decl.source?.start?.line;problems.push(problem(`${selectors.join(", ")} sets ${decl.prop} with no prefers-reduced-motion path.`,"Wrap the motion in @media (prefers-reduced-motion: no-preference), or still it in a @media (prefers-reduced-motion: reduce) block.",location("css/reduced-motion",{file:entry.file,...line?{line}:{}})))})}return problems}var classAttribute=/\[\s*class\s*[*^$~|]?=\s*(?:"[^"]*"|'[^']*'|[^\]\s]+)\s*(?:[is]\s*)?\]/gi;function classPatches(source){const problems=[];for(const entry of source){entry.root.walkRules(rule=>{for(const match of rule.selector.matchAll(classAttribute)){const line=rule.source?.start?.line;problems.push(problem(`${match[0]} patches elements by their class attribute.`,"Style the element through a theme token or its own class. Dark mode goes through tokens, not by matching utility classes.",location("css/class-patch",{file:entry.file,...line?{line}:{}})))}})}return problems}var colourLiteral=/#[0-9a-f]{3,8}\b|(?:rgba?|hsla?|oklch|oklab|lab|lch|color)\([^()]*\)/gi;var trivialValue=/^(?:0|none|inherit|initial|unset|auto|transparent|currentcolor|0px)$/;function literalTokens(source){const tokens=new Map;for(const entry of source){entry.root.walkDecls(/^--/,decl=>{const value=compact(decl.value);if(value.includes("var(")||trivialValue.test(value)||tokens.has(value)){return}const parent=decl.parent;const rootLevel=parent?.type==="rule"&&parent.selectors.some(selector=>/^(?::root|html)$/.test(selector.trim()));if(insideTheme(parent)||rootLevel){tokens.set(value,decl.prop)}})}if(tokens.size===0){return[]}const problems=[];for(const entry of source){entry.root.walkDecls(decl=>{if(decl.prop.startsWith("--")||insideTheme(decl.parent)){return}const prop=decl.prop.toLowerCase();const candidates=[];if(/radius$/.test(prop)||/shadow$/.test(prop)){candidates.push(decl.value)}if(/(?:^|-)(?:color|background|border|outline|fill|stroke|shadow|decoration)/.test(prop)||prop==="color"||prop==="fill"||prop==="stroke"){candidates.push(...decl.value.match(colourLiteral)??[])}for(const candidate of new Set(candidates.map(compact))){const token=tokens.get(candidate);if(!token||trivialValue.test(candidate)){continue}const line=decl.source?.start?.line;problems.push(problem(`${decl.prop}: ${decl.value} restates the token ${token}.`,`Use var(${token}).`,location("css/literal-token",{file:entry.file,...line?{line}:{}})));break}})}return problems}async function checkCss({cwd,signal}){signal?.throwIfAborted();const inputs=await readCssInputs(cwd);if(inputs.sourceCss.length===0&&inputs.builtCss.length===0){return skipped("css","No source or built CSS files were found.")}const problems=analyseCss(inputs);signal?.throwIfAborted();const failed=problems.some(({rule})=>CSS_ERRORS.has(rule));return step("css",failed?"failed":"passed",problems)}import zappie from"eslint-plugin-zappie";import{createRequire}from"module";import path14 from"path";import{pathToFileURL as pathToFileURL2}from"url";var SECURITY_IGNORES=["build/**","dist/**",".react-router/**",".wrangler/**","coverage/**","playwright-report/**","test-results/**"];async function checkLint({cwd,signal}){signal?.throwIfAborted();let ESLint;try{const require2=createRequire(path14.join(cwd,"package.json"));const loadedEslint=await import(pathToFileURL2(require2.resolve("eslint")).href);ESLint=loadedEslint.ESLint}catch(error){return step("lint","failed",[problem(message3(error),"Install ESLint in the project.",{rule:"lint/unavailable"})])}try{const eslint=new ESLint({cwd,overrideConfig:{settings:{zappie:{outboundAllow:await outboundAllow(cwd)}}}});const security=await securityResults(ESLint,cwd);signal?.throwIfAborted();const source=await sourceFile(cwd);const config=await eslint.calculateConfigForFile(source);const problems=recommendedProblems(config?.rules??{});if(problems.length>0){return step("lint","failed",[...problems,...lintProblems(cwd,security)])}const results=[...security,...await eslint.lintFiles(["."])];signal?.throwIfAborted();const failed=results.some(result=>result.messages.some(entry=>entry.fatal||entry.severity===2));return step("lint",failed?"failed":"passed",lintProblems(cwd,results))}catch(error){return step("lint","failed",[problem(message3(error),"Fix the project ESLint configuration and run lint again.",{rule:"lint/config"})])}}async function securityResults(ESLint,cwd){const security=zappie.configs.security;if(!security){throw new Error("This eslint-plugin-zappie has no security config. Update eslint-plugin-zappie and @zappie/check together.")}const eslint=new ESLint({cwd,overrideConfigFile:true,allowInlineConfig:false,errorOnUnmatchedPattern:false,overrideConfig:[{ignores:SECURITY_IGNORES},...security]});return eslint.lintFiles(["."])}function lintProblems(cwd,results){const seen=new Set;return results.flatMap(result=>result.messages.flatMap(entry=>{const file=relative(cwd,result.filePath);const key=[entry.ruleId,file,entry.line,entry.message].join("\0");if(seen.has(key)){return[]}seen.add(key);return[problem(entry.message,null,{...entry.ruleId?{rule:entry.ruleId}:{},file,...entry.line?{line:entry.line}:{}})]}))}async function outboundAllow(cwd){try{const value=(await loadConfig(cwd)).value;if(!value||typeof value!=="object"||!("outbound"in value)){return[]}const outbound=value.outbound;if(!outbound||typeof outbound!=="object"||!("allow"in outbound)){return[]}return Array.isArray(outbound.allow)?outbound.allow.filter(entry=>typeof entry==="string"):[]}catch{return[]}}function recommendedProblems(applied){const expected=recommendedRules();return Object.entries(expected).flatMap(([rule,severity])=>{if(level(applied[rule])>=level(severity)){return[]}return[problem(`${rule} is not enabled at the recommended severity.`,"Apply every entry from zappie.configs.recommended in eslint.config.mjs.",{rule,file:"eslint.config.mjs"})]})}function recommendedRules(){const result={};for(const config of zappie.configs.recommended??[]){Object.assign(result,config.rules??{})}return Object.fromEntries(Object.entries(result).filter(([name])=>name.startsWith("zappie/")||name.startsWith("jsx-a11y/")))}function level(value){const selected=Array.isArray(value)?value[0]:value;if(selected==="error"||selected===2){return 2}if(selected==="warn"||selected===1){return 1}return 0}async function sourceFile(cwd){const candidates=["app/index.ts","app/root.tsx","src/index.ts","index.ts"];for(const candidate of candidates){try{await import("fs/promises").then(({access:access5})=>access5(path14.join(cwd,candidate)));return candidate}catch{continue}}return"eslint.config.mjs"}function message3(error){return error instanceof Error?error.message:String(error)}import{readFile as readFile12}from"fs/promises";import path15 from"path";import{pathToFileURL as pathToFileURL3}from"url";async function checkReadiness({cwd,signal}){signal?.throwIfAborted();const site=(await loadConfig(cwd)).value;const optOut=site.readiness?.routeDiscovery?.optOut;if(optOut){return step("readiness","passed",[problem("Initial route discovery is disabled by an explained exception",`Remove readiness.routeDiscovery.optOut after you enable initial route discovery. Reason: ${optOut.reason}`,{rule:"readiness/route-discovery-opt-out",file:"zappie.config.ts"})])}const file=path15.join(cwd,"react-router.config.ts");try{await readFile12(file,"utf8");const version=Date.now();const config=await import(`${pathToFileURL3(file).href}?readiness=${version}`);if(config.default?.routeDiscovery?.mode==="initial"){return step("readiness","passed")}}catch(error){return step("readiness","failed",[problem(message4(error),'Create react-router.config.ts and set routeDiscovery: { mode: "initial" }.',{rule:"readiness/route-discovery",file:"react-router.config.ts"})])}return step("readiness","failed",[problem("Initial route discovery is not enabled",'Set routeDiscovery: { mode: "initial" } in react-router.config.ts so item routes are ready before a shopper taps.',{rule:"readiness/route-discovery",file:"react-router.config.ts"})])}function message4(error){return error instanceof Error?error.message:String(error)}import{execFile}from"child_process";import{lstat as lstat2,readFile as readFile13,readdir as readdir7}from"fs/promises";import path16 from"path";import{promisify}from"util";var FIX="Move the value to a server environment variable and rotate it.";function secretMatches(source,envFile){const matches2=[];add(matches2,source,/sk_(test|live)_[A-Za-z0-9]{16,}/g,value=>{const live=value.startsWith("sk_live_");return{rule:live?"secrets/sk-live":"secrets/sk-test",message:`Detected ${live?"sk_live_":"sk_test_"}\u2026 secret.`,fix:FIX,severity:"error"}});if(!envFile){add(matches2,source,/pk_live_[A-Za-z0-9]{16,}/g,()=>({rule:"secrets/pk-live",message:"Warning: detected pk_live_\u2026 outside an .env file.",fix:"Move the publishable key to a server-provided environment variable.",severity:"warning"}))}add(matches2,source,/-----BEGIN (?:[A-Z0-9]+ )*PRIVATE KEY-----/g,()=>({rule:"secrets/private-key",message:"Detected a PEM private key header.",fix:FIX,severity:"error"}));add(matches2,source,/AKIA[0-9A-Z]{16}/g,()=>({rule:"secrets/aws-access-key",message:"Detected an AKIA\u2026 access key.",fix:FIX,severity:"error"}));add(matches2,source,/FLWSECK-[A-Za-z0-9_-]{8,}/g,()=>({rule:"secrets/flutterwave-live",message:"Detected an FLWSECK-\u2026 secret.",fix:FIX,severity:"error"}));const gitleaksDefaults=[[/\bghp_[A-Za-z0-9]{36}\b/g,"github-pat","GitHub personal access token"],[/\bgithub_pat_[A-Za-z0-9_]{82}\b/g,"github-fine-grained-pat","GitHub fine-grained access token"],[/\bglpat-[A-Za-z0-9_-]{20,}\b/g,"gitlab-pat","GitLab personal access token"],[/\bnpm_[A-Za-z0-9]{36}\b/g,"npm-token","npm access token"],[/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,"slack-token","Slack token"],[/\bAIza[0-9A-Za-z_-]{35}\b/g,"google-api-key","Google API key"],[/\bSG\.[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{16,}\b/g,"sendgrid-api-key","SendGrid API key"]];for(const[pattern,rule,label]of gitleaksDefaults){add(matches2,source,pattern,()=>({rule:`secrets/${rule}`,message:`Detected a ${label}.`,fix:FIX,severity:"error"}))}const occupied=matches2.map(({index})=>index);const assignment=/\b([A-Za-z_$][\w$]*(?:secret|token|password|api[_-]?key)[\w$]*)\s*[:=]\s*(["'])([^"'\r\n]{24,})\2/gi;for(const found of source.matchAll(assignment)){const value=found[3]??"";const valueIndex=(found.index??0)+found[0].indexOf(value);if(entropy(value)>4&&!occupied.some(index=>index>=valueIndex&&index<valueIndex+value.length)){matches2.push({index:valueIndex,rule:"secrets/high-entropy",message:`Detected a high-entropy value assigned to ${found[1]??"a secret-shaped name"}.`,fix:FIX,severity:"error"})}}return matches2.sort((left,right)=>left.index-right.index)}function add(output,source,pattern,details){for(const match of source.matchAll(pattern)){output.push({index:match.index??0,...details(match[0])})}}function entropy(value){const counts=new Map;for(const character of value){counts.set(character,(counts.get(character)??0)+1)}return[...counts.values()].reduce((total2,count)=>{const probability=count/value.length;return total2-probability*Math.log2(probability)},0)}var SECRET_FILE_SIZE_CAP=1024*1024;var execFileAsync=promisify(execFile);var lockfile=/(?:^|\/)(?:package-lock\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb?)$/;async function scanSecrets(dir,options={}){const findings=[];for(const file of await filesToScan(dir,options.signal)){options.signal?.throwIfAborted();let info;try{info=await lstat2(file)}catch(error){if(missing2(error)){continue}throw error}if(!info.isFile()||info.size>SECRET_FILE_SIZE_CAP){continue}const contents=await readFile13(file);if(contents.includes(0)){continue}const source=contents.toString("utf8");for(const match of secretMatches(source,path16.basename(file).startsWith(".env"))){findings.push({rule:match.rule,file:relative(dir,file),line:lineAt2(source,match.index),message:match.message,fix:match.fix,severity:match.severity})}}if(options.history){findings.push(...await scanHistory(dir,options.signal))}return findings}async function checkSecrets({cwd,history,signal}){signal?.throwIfAborted();const findings=await scanSecrets(cwd,{...history===void 0?{}:{history},...signal?{signal}:{}});signal?.throwIfAborted();const failed=findings.some(({severity})=>severity==="error");return step("secrets",failed?"failed":"passed",findings.map(({severity:_severity,...finding})=>finding))}async function filesToScan(cwd,signal){const files=await trackedFiles(cwd,signal);for(const directory of["build/client","build/server","workers"]){await collect3(path16.join(cwd,directory),files)}return[...new Set(files)].filter(file=>!lockfile.test(relative(cwd,file))).sort()}var gitOptions=(cwd,signal)=>({cwd,encoding:"utf8",env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_PAGER:"cat"},...signal?{signal}:{}});async function trackedFiles(cwd,signal){try{const{stdout}=await execFileAsync("git",["ls-files","-z"],{...gitOptions(cwd,signal),maxBuffer:32*1024*1024});const files=stdout.split("\0").filter(Boolean).map(file=>path16.join(cwd,file));return files.length>0?files:fallbackFiles(cwd)}catch{return fallbackFiles(cwd)}}async function fallbackFiles(cwd){const files=[];for(const directory of["app","public"]){await collect3(path16.join(cwd,directory),files)}try{for(const entry of await readdir7(cwd,{withFileTypes:true})){if(entry.isFile()&&rootConfig(entry.name)){files.push(path16.join(cwd,entry.name))}}}catch{return files}return files}async function scanHistory(cwd,signal){try{const{stdout}=await execFileAsync("git",["log","--all","--format=commit:%H","-p","--no-ext-diff","--",".",":(exclude)package-lock.json",":(exclude)pnpm-lock.yaml",":(exclude)yarn.lock",":(exclude)bun.lock",":(exclude)bun.lockb"],{...gitOptions(cwd,signal),maxBuffer:128*1024*1024});return secretMatches(stdout,false).map(match=>{const location2=historyLocation(stdout,match.index);return{rule:match.rule,file:location2??"git history",line:lineAt2(stdout,match.index),message:match.message,fix:match.fix,severity:match.severity}})}catch{return[{rule:"secrets/history-unavailable",file:"git history",line:1,message:"Could not scan Git history for secrets.",fix:"Check Git access and run zappie check --history again.",severity:"warning"}]}}function historyLocation(source,index){const prefix=source.slice(0,index);const commit=[...prefix.matchAll(/^commit:([0-9a-f]+)$/gm)].at(-1)?.[1];const changedPaths=[...prefix.matchAll(/^(?:\+\+\+ b\/|--- a\/)(.+)$/gm)].map(match=>match[1]);const file=changedPaths.at(-1);return commit&&file?`${commit}:${file}`:void 0}async function collect3(directory,files,accept=()=>true){try{for(const entry of await readdir7(directory,{withFileTypes:true})){if(entry.isSymbolicLink()){continue}const file=path16.join(directory,entry.name);if(entry.isDirectory()){await collect3(file,files,accept)}else if(entry.isFile()&&accept(file)){files.push(file)}}}catch(error){if(!missing2(error)){throw error}}}function missing2(error){return error instanceof Error&&"code"in error&&error.code==="ENOENT"}function rootConfig(name){return name==="package.json"||name==="wrangler.json"||name==="wrangler.jsonc"||/(?:^|\.)config\.(?:[cm]?[jt]s|json)$/.test(name)}function lineAt2(source,index){return source.slice(0,index).split(/\r?\n/).length}import path17 from"path";async function checkTests({cwd,packageManager,signal}){const manifest=await json(path17.join(cwd,"package.json"));if(!manifest.scripts?.test){return skipped("test","No test script is defined in package.json.")}const invocation=scriptArgs(packageManager,"test");const result=await command(invocation.executable,invocation.args,cwd,signal);signal?.throwIfAborted();if(result.code===0){return step("test","passed")}return step("test","failed",[problem(result.stdout+result.stderr,"Fix the failing project tests.",{rule:"test/failed"})])}import path18 from"path";async function checkTypes(options){const{cwd,packageManager,signal}=options;signal?.throwIfAborted();const manifest=await json(path18.join(cwd,"package.json"));if(manifest.dependencies?.["react-router"]){const generated=await binaryArgs(packageManager,cwd,"react-router",["typegen"]);const result2=await command(generated.executable,generated.args,cwd,signal);if(result2.code!==0){return step("types","failed",outputProblems2(result2.stdout+result2.stderr))}}const typed=await binaryArgs(packageManager,cwd,"tsc",["--noEmit"]);const result=await command(typed.executable,typed.args,cwd,signal);signal?.throwIfAborted();if(result.code===0){return step("types","passed")}return step("types","failed",outputProblems2(result.stdout+result.stderr))}function outputProblems2(output){const parsed=output.split(/\r?\n/).flatMap(line=>{const match=/^(.*)\((\d+),(\d+)\): error (TS\d+): (.*)$/.exec(line);if(!match){return[]}return[problem(match[5]??line,"Fix the TypeScript error.",{...match[4]?{rule:match[4]}:{},...match[1]?{file:match[1]}:{},line:Number(match[2])})]});if(parsed.length>0){return parsed}return[problem(output.trim()||"TypeScript failed.","Fix the TypeScript errors.")]}var DEFAULT_STEP_TIMEOUTS=Object.freeze({config:3e4,allowlist:3e4,audit:AUDIT_TIMEOUT_MS,lint:12e4,types:12e4,test:12e4,build:18e4,secrets:12e4,readiness:3e4,budgets:3e4,css:6e4});var runners=[{name:"config",run:checkConfig},{name:"allowlist",run:checkAllowlist},{name:"audit",run:checkAudit},{name:"lint",run:checkLint},{name:"types",run:checkTypes},{name:"test",run:checkTests},{name:"build",run:checkBuild},{name:"secrets",run:checkSecrets},{name:"readiness",run:checkReadiness},{name:"budgets",run:checkBudgets},{name:"css",run:checkCss}];var selfTimed=new Set(["audit"]);var SETTLE_MS=KILL_GRACE_MS+1e3;function runCheck(options){return runSteps(runners,options)}async function runSteps(list2,options,settleMs=SETTLE_MS){const{all,onProgress,...stepOptions}=options;const report=event=>{try{onProgress?.(event)}catch{}};const steps=[];for(const runner of list2){options.signal?.throwIfAborted();const started=performance.now();report({type:"started",step:runner.name});const{checked,timedOut}=await runStep(runner,stepOptions,stepTimeout(options,runner.name),settleMs);const note=stepNote(checked);report({type:"finished",step:runner.name,result:checked.result,durationMs:performance.now()-started,timedOut,...note?{note}:{}});steps.push(checked);if(checked.result==="failed"&&!all&&runner.name!=="audit"){break}}return{result:steps.some(entry=>entry.result==="failed")?"failed":"passed",steps}}async function runStep(runner,options,limit,settleMs){const outer=options.signal;const self=selfTimed.has(runner.name);const deadline=new AbortController;const timer=setTimeout(()=>deadline.abort(new Error(`The ${runner.name} step timed out.`)),self?limit+settleMs:limit);const signal=self?outer:outer?AbortSignal.any([outer,deadline.signal]):deadline.signal;let backstop;let abandon=()=>{};const abandoned=new Promise((_resolve,reject)=>{abandon=reject});const onStop=()=>{clearTimeout(backstop);backstop=setTimeout(()=>abandon(outer?.aborted?outer.reason:deadline.signal.reason),self&&deadline.signal.aborted?0:settleMs)};deadline.signal.addEventListener("abort",onStop,{once:true});outer?.addEventListener("abort",onStop,{once:true});const running2=runner.run({...options,...signal?{signal}:{}});running2.catch(()=>{});try{const checked=await Promise.race([running2,abandoned]);outer?.throwIfAborted();if(!self&&deadline.signal.aborted){return{checked:timedOutStep(runner.name,limit,options),timedOut:true}}return{checked,timedOut:false}}catch(error){outer?.throwIfAborted();if(deadline.signal.aborted){return{checked:timedOutStep(runner.name,limit,options),timedOut:true}}return{checked:step(runner.name,"failed",[problem(message5(error),"Fix the step setup and run zappie check again.")]),timedOut:false}}finally{clearTimeout(timer);clearTimeout(backstop);deadline.signal.removeEventListener("abort",onStop);outer?.removeEventListener("abort",onStop)}}function stepNote(checked){return checked.problems.some(found=>found.rule===PREBUILT_RULE)?"used the existing build":void 0}function stepTimeout(options,name){const value=options.timeouts?.[name];return value!==void 0&&Number.isFinite(value)&&value>0?value:DEFAULT_STEP_TIMEOUTS[name]}function timedOutStep(name,limit,options){const found=problem(`The ${name} step didn't finish within its ${formatSeconds(limit)} time limit, so we stopped it.`,`Find what makes the ${name} step hang or run slowly, or raise its limit with timeouts.${name}. Then run zappie check again.`,{rule:name==="audit"?"audit/unavailable":`${name}/timeout`});return step(name,name==="audit"&&options.audit!=="enforce"?"passed":"failed",[found])}function formatSeconds(milliseconds){const seconds=milliseconds/1e3;return`${Number.isInteger(seconds)?seconds:seconds.toFixed(1)}s`}function message5(error){return error instanceof Error?error.message:String(error)}export{BUILTIN_ALLOWLIST_SOURCE,CSS_ERRORS,DEFAULT_STEP_TIMEOUTS,GLOBAL_DEV_PACKAGE_ALLOWLIST,INSTALL_SCRIPT_ALLOWLIST,PREBUILT_ENV,SECRET_FILE_SIZE_CAP,analyseCss,checkAllowlist,checkAudit,checkBudgets,checkBuild,checkConfig,checkCss,checkLint,checkReadiness,checkSecrets,checkTests,checkTypes,devSourceProblems,evaluateAudit,loadConfig,outputProblems,parseAuditOutput,runCheck,scanSecrets,supportsTypeScriptImport,validateBrand};
|
|
1
|
+
import{DEFAULT_BUDGETS,GLOBAL_PACKAGE_ALLOWLIST,KILL_GRACE_MS,PNPM_NO_VERIFY,binaryArgs,checkConfig,checkLint,command,isolated,json,loadConfig,problem,relative,scriptArgs,skipped,step,supportsTypeScriptImport,validateBrand}from"./chunk-CBYFCC3K.js";import path2 from"path";import{access,readdir,readFile,realpath}from"fs/promises";import path from"path";var LOCKFILES=["pnpm-lock.yaml","package-lock.json","yarn.lock","bun.lock","bun.lockb"];async function findLockfile(cwd){for(let directory=cwd;;directory=path.dirname(directory)){for(const name of LOCKFILES){const file=path.join(directory,name);if(await exists(file)){return file}}if(path.dirname(directory)===directory){return null}}}async function readNpmLock(file){const lock=file.endsWith(".json")?JSON.parse(await readFile(file,"utf8")):{};const base=await realpath(path.dirname(file));const scripted=[];const aliases=new Map;for(const[key,entry]of Object.entries(lock.packages??{})){const at=key.lastIndexOf("node_modules/");if(at>=0){const name=key.slice(at+13);if(entry.hasInstallScript){scripted.push(`${name}@${entry.version}`)}if(entry.name){aliases.set(path.join(base,key),entry.name)}}}return{scripted,aliases}}async function installedPackages(roots,root,direct){const found=new Map;const top=await realpath(root);const visit=async(directory,linked)=>{const real=await realpath(directory).catch(()=>"");if(!real||found.has(real)){return}let manifest;try{manifest=JSON.parse(await readFile(path.join(real,"package.json"),"utf8"))}catch{return}const at=real.lastIndexOf(`node_modules${path.sep}`);const name=at<0?linked:real.slice(at+13).split(path.sep).join("/");found.set(real,{directory:real,name,manifest});if(!path.relative(top,real).startsWith("..")){await walk(path.join(real,"node_modules"))}};const walk=async nodeModules=>{for(const entry of await list(nodeModules)){const directory=path.join(nodeModules,entry);if(entry===".pnpm"){for(const item of await list(directory)){await walk(path.join(directory,item,"node_modules"))}}else if(entry.startsWith("@")){for(const item of await list(directory)){await visit(path.join(directory,item),`${entry}/${item}`)}}else if(!entry.startsWith(".")){await visit(directory,entry)}}};for(const[directory,name]of direct){await visit(directory,name)}for(const directory of roots){await walk(path.join(directory,"node_modules"))}return found}var list=directory=>readdir(directory).catch(()=>[]);var exists=file=>access(file).then(()=>true,()=>false);async function installScripts({directory,manifest}){const scripts=["preinstall","install","postinstall"].filter(script=>manifest.scripts?.[script]);if(!scripts.includes("install")&&!scripts.includes("preinstall")&&(manifest.gypfile||await exists(path.join(directory,"binding.gyp")))){scripts.unshift("install")}return scripts}var GLOBAL_DEV_PACKAGE_ALLOWLIST=["typescript","vite","@react-router/dev","magic-string","@cloudflare/*","wrangler","eslint","eslint-plugin-zappie","vitest","@playwright/test","@types/*","@zappie/*","zappie","postcss","jsdom","@testing-library/*"];var INSTALL_SCRIPT_ALLOWLIST=["esbuild","workerd","fsevents"];var BUILTIN_ALLOWLIST_SOURCE={load:async()=>GLOBAL_PACKAGE_ALLOWLIST,loadDev:async()=>GLOBAL_DEV_PACKAGE_ALLOWLIST};async function checkAllowlist({cwd,signal},source=BUILTIN_ALLOWLIST_SOURCE){signal?.throwIfAborted();const problems=[];let manifest;try{manifest=await json(path2.join(cwd,"package.json"))}catch(error){return step("allowlist","failed",[problem(String(error),"Add a valid package.json to the project root.",{file:"package.json"})])}const lockfile2=await findLockfile(cwd);if(!lockfile2){problems.push(problem("No supported lockfile was found.","Install dependencies and commit the generated lockfile."))}const global=[...await source.load(signal),...await localAllowlist(cwd)];const dev=[...global,...await(source.loadDev??BUILTIN_ALLOWLIST_SOURCE.loadDev)(signal)];const direct=[];const declared=[...Object.entries(manifest.dependencies??{}),...Object.entries(manifest.devDependencies??{})];for(const[names,allowed,rule,kind]of[[manifest.dependencies,global,"allowlist/package","a dependency"],[manifest.devDependencies,dev,"allowlist/dev-package","a devDependency"]]){for(const[name,spec]of Object.entries(names??{})){if(!allowed.some(entry=>matches(entry,name))){problems.push(problem(`${name} is ${kind} outside the package allowlist.`,`Add ${name} to packages.allow in zappie.config.ts after reviewing it.`,{rule,file:"package.json"}))}if(!/^(?:workspace|catalog):/.test(spec)&&/[:/]/.test(spec)){problems.push(problem(`${name} comes from ${spec}, not the npm registry.`,`Install ${name} from the npm registry. Git sources also run a prepare script on install.`,{rule:"allowlist/source",file:"package.json"}))}const directory=await resolvePackage(cwd,name);if(directory){direct.push([directory,name])}else if(names===manifest.dependencies){problems.push(problem(`${name} is not installed.`,"Install dependencies from the committed lockfile.",{rule:"allowlist/not-installed",file:"package.json"}))}}}const file=lockfile2?relative(cwd,lockfile2):"package.json";const roots=[...new Set([lockfile2?path2.dirname(lockfile2):cwd,cwd])];const root=[roots[0],...direct.map(([directory])=>directory.slice(0,directory.lastIndexOf(`${path2.sep}node_modules`)))].sort((left,right)=>left.length-right.length)[0];const found=await installedPackages(roots,root,direct);signal?.throwIfAborted();let npm={scripted:[],aliases:new Map};try{npm=lockfile2?await readNpmLock(lockfile2):npm}catch(error){problems.push(problem(String(error),"Reinstall and commit the lockfile.",{file}))}if(!found.size&&declared.length){problems.push(problem("No installed packages were found, so install scripts weren't checked. Yarn Plug'n'Play isn't supported.","Install dependencies into node_modules from the committed lockfile, then run check again.",{rule:"allowlist/not-installed",file}))}const scripted=new Map;const copies=[...found.values()];for(let index=0;index<copies.length;index+=32){await Promise.all(copies.slice(index,index+32).map(async copy=>{const key=`${copy.name}@${copy.manifest.version}`;if(copy.manifest.name!==copy.name&&npm.aliases.get(copy.directory)!==copy.manifest.name){problems.push(problem(`${copy.name} in node_modules says it is ${copy.manifest.name}.`,`Reinstall from the npm registry, and remove the dependency that brings in ${copy.name} if it stays.`,{rule:"allowlist/manifest",file}))}const scripts=await installScripts(copy);scripted.set(key,[...scripted.get(key)??[],...scripts])}))}for(const key of npm.scripted){if(!scripted.has(key)){scripted.set(key,["install"])}}for(const[key,scripts]of scripted){const name=key.slice(0,key.lastIndexOf("@"));if(scripts.length&&!INSTALL_SCRIPT_ALLOWLIST.some(entry=>entry===name)){problems.push(problem(`${key} in ${file} runs an install script (${[...new Set(scripts)].join(", ")}).`,`Remove the dependency that brings in ${name}, or replace it with one without install scripts.`,{rule:"allowlist/install-script",file}))}}signal?.throwIfAborted();return step("allowlist",problems.length?"failed":"passed",problems)}async function localAllowlist(cwd){try{const loaded=await loadConfig(cwd);const value=loaded.value;return Array.isArray(value?.packages?.allow)?value.packages.allow.filter(entry=>typeof entry==="string"):[]}catch{return[]}}function matches(pattern,value){return pattern.endsWith("/*")?value.startsWith(pattern.slice(0,-1)):pattern===value}async function resolvePackage(cwd,name){for(let directory=cwd;;directory=path2.dirname(directory)){const found=path2.join(directory,"node_modules",...name.split("/"));if(await json(path2.join(found,"package.json")).then(()=>true,()=>false)){return found}if(path2.dirname(directory)===directory){return null}}}import{access as access2,readFile as readFile2}from"fs/promises";import path3 from"path";var AUDIT_TIMEOUT_MS=6e4;async function checkAudit(options,dependencies={}){const mode=options.audit??"report";if(mode==="off"){return skipped("audit","Dependency auditing is off.")}options.signal?.throwIfAborted();let invalidIgnores=[];let ignores=[];try{const parsed=await auditIgnores(options.cwd);ignores=parsed.ignores;invalidIgnores=parsed.problems}catch(error){invalidIgnores.push(problem(`Could not use audit.ignore: ${message(error)}`,"Fix or remove the invalid acknowledgement. The advisory remains unacknowledged.",{rule:"audit/invalid-ignore",file:"zappie.config.ts",line:1}))}if(options.packageManager==="yarn"||options.packageManager==="bun"){return withProblems(unavailable(mode,`Could not audit dependencies: ${options.packageManager} is not supported.`,"Use npm or pnpm for dependency auditing, or run with --audit=off.","package.json"),invalidIgnores,mode)}const lockfile2=await findLockfile2(options.cwd,options.packageManager);if(!lockfile2){return withProblems(unavailable(mode,"Could not audit dependencies: no lockfile was found.","Commit the package manager lockfile and run zappie check again.","package.json"),invalidIgnores,mode)}const invocation=auditCommand(options.packageManager);const configured=options.timeouts?.audit;const timeoutMs=dependencies.timeoutMs??(configured!==void 0&&Number.isFinite(configured)&&configured>0?configured:AUDIT_TIMEOUT_MS);const timeout=AbortSignal.timeout(timeoutMs);const signal=options.signal?AbortSignal.any([options.signal,timeout]):timeout;let result;try{result=await(dependencies.run??command)(invocation.executable,invocation.args,options.cwd,signal)}catch(error){options.signal?.throwIfAborted();const detail=timeout.aborted?`the audit timed out after ${Math.ceil(timeoutMs/1e3)} seconds`:message(error);return withProblems(unavailable(mode,`Could not audit dependencies: ${detail}.`,"Check registry access and run zappie check again.",relativeLockfile(options.cwd,lockfile2)),invalidIgnores,mode)}options.signal?.throwIfAborted();let advisories;try{advisories=parseAuditOutput(options.packageManager,result.stdout);if(result.code>1){throw new Error(`the audit command exited with status ${result.code}`)}}catch(error){return withProblems(unavailable(mode,`Could not audit dependencies: ${message(error)}.`,"Check registry access and run zappie check again.",relativeLockfile(options.cwd,lockfile2)),invalidIgnores,mode)}return withProblems(evaluateAudit(advisories,mode,ignores,relativeLockfile(options.cwd,lockfile2)),invalidIgnores,mode)}function evaluateAudit(advisories,mode,ignores=[],file){const problems=[];const applied=advisories.map(advisory=>{const acknowledged=ignores.find(({id})=>normalizedId(id)===normalizedId(advisory.id));if(acknowledged&&malicious(advisory.id)){problems.push(problem(`${advisory.id} is a malicious-package advisory and cannot be acknowledged.`,`Remove ${advisory.package} and replace it with a trusted package or release.`,{rule:"audit/invalid-ignore",advisory,...file?{file,line:1}:{}}));return advisory}if(acknowledged&&(advisory.fixedVersion||advisory.upgradeVersion||advisory.fixCommand)){const upgradePackage=advisory.upgradePackage??advisory.package;const upgradeVersion=advisory.upgradeVersion??advisory.fixedVersion;const fix=advisory.fixCommand?`Run ${advisory.fixCommand}.`:`Upgrade ${upgradePackage} to ${upgradeVersion} or later.`;const reason=advisory.fixCommand?`${advisory.id} has an available fix and cannot be acknowledged.`:`${advisory.id} has a fixed version and cannot be acknowledged.`;problems.push(problem(reason,fix,{rule:"audit/invalid-ignore",advisory,...file?{file,line:1}:{}}));return advisory}return acknowledged?{...advisory,ignored:true,ignoredUntil:acknowledged.until}:advisory});problems.push(...applied.map(advisory=>advisoryProblem(advisory,file)));const critical=applied.some(({severity,ignored})=>severity==="critical"&&!ignored);const invalidIgnore2=problems.some(({rule})=>rule==="audit/invalid-ignore");return step("audit",mode==="enforce"&&(critical||invalidIgnore2)?"failed":"passed",problems)}function unavailable(mode,message4,fix,file){return step("audit",mode==="enforce"?"failed":"passed",[problem(message4,fix,{rule:"audit/unavailable",file,line:1})])}function withProblems(checked,extra,mode){if(extra.length===0){return checked}return step("audit",mode==="enforce"?"failed":checked.result,[...extra,...checked.problems])}async function findLockfile2(cwd,manager){const names=manager==="npm"?["package-lock.json","npm-shrinkwrap.json"]:["pnpm-lock.yaml"];let directory=path3.resolve(cwd);for(;;){if(directory!==path3.resolve(cwd)&&manager==="pnpm"&&await workspaceExcludes(directory,path3.resolve(cwd))){return null}for(const name of names){const candidate=path3.join(directory,name);try{await access2(candidate);return candidate}catch{}}const parent=path3.dirname(directory);if(parent===directory){return null}directory=parent}}async function workspaceExcludes(directory,cwd){try{const source=await readFile2(path3.join(directory,"pnpm-workspace.yaml"),"utf8");const block=/^packages:\s*\n((?:[ \t]+.*(?:\n|$))*)/m.exec(source)?.[1];if(!block){return false}const relative2=path3.relative(directory,cwd).replaceAll(path3.sep,"/");const patterns=[...block.matchAll(/^\s*-\s*["']?([^"'\s]+)["']?\s*$/gm)].map(match=>match[1]??"");return!patterns.some(pattern=>workspacePattern(pattern,relative2))}catch{return false}}function workspacePattern(pattern,relative2){if(pattern==="."){return relative2===""}const expression=pattern.split("*").map(part=>part.replace(/[.*+?^$()|[\]\\]/g,"\\$&")).join("[^/]+");return new RegExp(`^${expression}$`).test(relative2)}function relativeLockfile(cwd,lockfile2){return path3.relative(cwd,lockfile2).replaceAll(path3.sep,"/")}function auditCommand(manager){return manager==="pnpm"?{executable:"pnpm",args:[PNPM_NO_VERIFY,"audit","--json"]}:{executable:"npm",args:["audit","--json"]}}function parseAuditOutput(manager,source){const value=JSON.parse(source);requireAuditReport(manager,value);const parsed=manager==="npm"?npmAdvisories(value):pnpmAdvisories(value);return parsed.filter(({severity})=>severity==="high"||severity==="critical").sort((left,right)=>left.id.localeCompare(right.id))}function requireAuditReport(manager,value){if(record(value.error)){throw new Error(string(value.error.message)??string(value.error.code)??string(value.message)??"the package manager returned an error")}if(manager==="npm"&&!record(value.vulnerabilities)){throw new Error("npm returned no vulnerability report")}if(manager==="pnpm"&&!record(value.advisories)&&!record(value.metadata)){throw new Error("pnpm returned no advisory report")}}function pnpmAdvisories(value){if(!record(value.advisories)){return[]}return Object.entries(value.advisories).flatMap(([key,raw])=>{if(!record(raw)){return[]}const findings=Array.isArray(raw.findings)?raw.findings:[];const versions=findings.flatMap(finding=>record(finding)&&typeof finding.version==="string"?[finding.version]:[]);const severity=normalizedSeverity(raw.severity);if(!severity){return[]}return[{id:string(raw.github_advisory_id)??string(raw.id)??key,package:string(raw.module_name)??"unknown package",severity,vulnerableVersion:versions.join(", ")||string(raw.vulnerable_versions)||"unknown",fixedVersion:firstFixed(string(raw.patched_versions)),ignored:false}]})}function npmAdvisories(value){if(!record(value.vulnerabilities)){return[]}const advisories=new Map;for(const[packageName,raw]of Object.entries(value.vulnerabilities)){if(!record(raw)||!Array.isArray(raw.via)){continue}for(const via of raw.via){if(!record(via)){continue}const severity=normalizedSeverity(via.severity);if(!severity){continue}const id=ghsaFrom(string(via.url))??string(via.name)??String(via.source??packageName);const upgrade=npmUpgrade(raw.fixAvailable);advisories.set(id,{id,package:packageName,severity,vulnerableVersion:string(via.range)??string(raw.range)??"unknown",fixedVersion:upgrade.upgradePackage===packageName?upgrade.upgradeVersion??null:null,...upgrade,ignored:false})}}return[...advisories.values()]}function advisoryProblem(advisory,file){const acknowledged=advisory.ignored?` Acknowledged until ${advisory.ignoredUntil}.`:"";const upgradePackage=advisory.upgradePackage??advisory.package;const upgradeVersion=advisory.upgradeVersion??advisory.fixedVersion;const fix=malicious(advisory.id)?`Remove ${advisory.package} and replace it with a trusted package or release.`:advisory.fixCommand?`Run ${advisory.fixCommand}.`:upgradeVersion?`Upgrade ${upgradePackage} to ${upgradeVersion} or later.`:`Review ${advisory.id}. If no fix exists, add a reason and an expiry of at most 90 days to audit.ignore.`;return problem(`${advisory.id}: ${advisory.package} ${advisory.vulnerableVersion} has ${advisory.severity} severity.${acknowledged}`,fix,{rule:`audit/${advisory.id}`,advisory,...file?{file,line:1}:{}})}async function auditIgnores(cwd){let loaded;try{loaded=await loadConfig(cwd)}catch(error){if(missing(error)){return{ignores:[],problems:[]}}throw error}if(!record(loaded.value)||!record(loaded.value.audit)){return{ignores:[],problems:[]}}const problems=[];const ignores=parseAuditIgnores(loaded.value.audit.ignore,problems);return{ignores,problems}}function parseAuditIgnores(value,problems=[]){if(value===void 0){return[]}if(!Array.isArray(value)){problems.push(invalidIgnore("audit.ignore must be an array."));return[]}const today=Date.parse(`${new Date().toISOString().slice(0,10)}T00:00:00.000Z`);const ninetyDays=90*24*60*60*1e3;const ids=new Set;const ignores=[];value.forEach((entry,index)=>{if(!ignoreEntry(entry)||!entry.id.trim()||!entry.reason.trim()){problems.push(invalidIgnore(`audit.ignore[${index}] must have a non-blank id, reason and until.`));return}const id=normalizedId(entry.id);if(ids.has(id)){problems.push(invalidIgnore(`audit.ignore contains duplicate id ${entry.id}.`));return}const expiry=Date.parse(`${entry.until}T00:00:00.000Z`);if(!/^\d{4}-\d{2}-\d{2}$/.test(entry.until)||!Number.isFinite(expiry)||new Date(expiry).toISOString().slice(0,10)!==entry.until||expiry<today||expiry-today>ninetyDays){problems.push(invalidIgnore(`audit.ignore[${index}].until must be a real, unexpired date at most 90 days away.`));return}ids.add(id);ignores.push(entry)});return ignores}function invalidIgnore(message4){return problem(message4,"Fix or remove the invalid acknowledgement. The advisory remains unacknowledged.",{rule:"audit/invalid-ignore",file:"zappie.config.ts",line:1})}function ignoreEntry(value){return record(value)&&typeof value.id==="string"&&typeof value.reason==="string"&&typeof value.until==="string"}function npmUpgrade(value){if(record(value)&&typeof value.name==="string"&&typeof value.version==="string"){return{upgradePackage:value.name,upgradeVersion:value.version}}if(value===true){return{fixCommand:"npm audit fix"}}return{}}function firstFixed(value){if(!value||value==="<0.0.0"){return null}return/(?:^|\s)>=?\s*([^\s|]+)/.exec(value)?.[1]??null}function ghsaFrom(value){const id=value?/GHSA-[\w-]+/i.exec(value)?.[0]:void 0;return id?`GHSA-${id.slice(5).toLowerCase()}`:void 0}function normalizedId(value){return value.trim().toLowerCase()}function malicious(value){return/^MAL-/i.test(value.trim())}function normalizedSeverity(value){const severity=typeof value==="string"?value.toLowerCase():"";return severity==="high"||severity==="critical"?severity:void 0}function string(value){return typeof value==="string"?value:void 0}function message(error){return error instanceof Error?error.message:String(error)}function missing(error){return error instanceof Error&&"code"in error&&error.code==="ENOENT"}function record(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}import{access as access3,readFile as readFile5}from"fs/promises";import path6 from"path";import{readFile as readFile3,readdir as readdir2}from"fs/promises";import path4 from"path";import{gzipSync}from"zlib";async function cssSizes(cwd){const root=path4.join(cwd,"build/client");const files=[];await collect(root,files);return Promise.all(files.filter(file=>file.endsWith(".css")).map(async file=>({file:path4.relative(root,file).split(path4.sep).join("/"),bytes:gzipSync(await readFile3(file,"utf8")).byteLength})))}async function collect(directory,files){for(const entry of await readdir2(directory,{withFileTypes:true})){if(entry.isSymbolicLink()){continue}const file=path4.join(directory,entry.name);if(entry.isDirectory()){await collect(file,files)}else if(entry.isFile()){files.push(file)}}}import{readFile as readFile4}from"fs/promises";import path5 from"path";import{gzipSync as gzipSync2}from"zlib";function routeKeys(manifest){return Object.entries(manifest).filter(([key,entry])=>routeSource(entry.src??key)).map(([key])=>key).sort()}function clientKeys(manifest){return Object.entries(manifest).filter(([key,entry])=>entry.isEntry&&!routeSource(entry.src??key)).map(([key])=>key).sort()}async function graphSizes(cwd,manifest,roots){const keys=closure(manifest,roots);return Promise.all([...keys].map(key=>manifest[key]).filter(entry=>Boolean(entry)).filter(({file})=>file.endsWith(".js")).map(async({file})=>({file,bytes:gzipSync2(await readFile4(path5.join(cwd,"build/client",file),"utf8")).byteLength})))}function closure(manifest,roots){const visited=new Set;const visit=key=>{if(visited.has(key)){return}const entry=manifest[key];if(!entry){throw new Error(`Manifest import ${key} has no entry.`)}visited.add(key);for(const dependency of entry.imports??[]){visit(dependency)}};roots.forEach(visit);return visited}function routeSource(value){return value.replace(/^\/?/,"").startsWith("app/routes/")}var KIB=1024;async function checkBudgets({cwd,signal}){signal?.throwIfAborted();const manifestFile=path6.join(cwd,"build/client/.vite/manifest.json");try{await access3(manifestFile)}catch{return skipped("budgets","No build/client/.vite/manifest.json is available.")}const manifest=JSON.parse(await readFile5(manifestFile,"utf8"));const config=(await loadConfig(cwd)).value;const limits={...DEFAULT_BUDGETS,...config.budgets};const routes=routeKeys(manifest);const clients=clientKeys(manifest);if(routes.length===0||clients.length===0){throw new Error("The Vite manifest needs a client entry and app/routes entries.")}const problems=[];let failed=false;for(const route of routes){const sizes=await graphSizes(cwd,manifest,[...clients,route]);const over=total(sizes)>limits.jsKbGz*KIB;failed||=over;problems.push(routeProblem(route,sizes,limits.jsKbGz,over))}const styles=await cssSizes(cwd);const cssOver=total(styles)>limits.cssKbGz*KIB;failed||=cssOver;problems.push(cssProblem(styles,limits.cssKbGz,cssOver));problems.push(problem(`LCP is not measured by zappie check; zappie verify enforces the ${limits.lcpMs} ms budget.`,null,{rule:"budgets/lcp"}));signal?.throwIfAborted();return step("budgets",failed?"failed":"passed",problems)}function routeProblem(route,sizes,limitKb,over){const bytes=total(sizes);const largest=[...sizes].sort((left,right)=>right.bytes-left.bytes).slice(0,3).map(({file,bytes:size})=>`${file} (${size} B)`).join(", ");return problem(`${route}: ${bytes} B gzip (limit ${limitKb*KIB} B).${over?` Largest chunks: ${largest}.`:""}`,over?"Reduce the route's client JavaScript or raise the reviewed budget override.":null,{rule:over?"budgets/js-over":"budgets/js-route",file:"build/client/.vite/manifest.json"})}function cssProblem(sizes,limitKb,over){const bytes=total(sizes);return problem(`Client CSS: ${bytes} B gzip (limit ${limitKb*KIB} B).`,over?"Reduce client CSS or raise the reviewed budget override.":null,{rule:over?"budgets/css-over":"budgets/css"})}var total=sizes=>sizes.reduce((sum,asset)=>sum+asset.bytes,0);import{readdir as readdir5,readFile as readFile8}from"fs/promises";import path9 from"path";import{readdir as readdir4,readFile as readFile7}from"fs/promises";import path8 from"path";var EDITOR_ORIGINS=Object.freeze(["https://dashboard.zappie.ai","https://dashboard.stg.zappie.ai","https://admin.zappie.ai","https://admin.stg.zappie.ai","http://localhost:5181","http://localhost:5180"]);var RESIZE_HOSTS=Object.freeze(["zappie-public-prod.s3.eu-west-2.amazonaws.com"]);import{readFile as readFile6,readdir as readdir3}from"fs/promises";import path7 from"path";var BUILD_OUTPUT=["build/client","build/server"];var QUOTE="[\"'`]";var URL_TEXT="((?:[a-z][a-z\\d+.-]*:|//|\\\\\\\\)[^\"'`\\s]*)";var JS_NAVIGATION=[new RegExp(`\\blocation(?:\\.href)?\\s*=\\s*${QUOTE}${URL_TEXT}`,"gi"),new RegExp(`\\blocation\\.(?:assign|replace)\\(\\s*${QUOTE}${URL_TEXT}`,"gi"),new RegExp(`\\bopen\\(\\s*${QUOTE}${URL_TEXT}`,"gi")];var REFRESH_URL=`\\d*\\s*;?\\s*url\\s*=\\s*['"]?([^"'\`\\s$;]+)`;var JS_REFRESH=[new RegExp(`http-?equiv["']?\\s*[:,=]\\s*["']refresh["']\\s*,\\s*["']?content["']?\\s*[:,=]\\s*${QUOTE}\\s*${REFRESH_URL}`,"gi"),new RegExp(`content["']?\\s*[:,=]\\s*${QUOTE}\\s*${REFRESH_URL}['"]?${QUOTE}\\s*,\\s*["']?http-?equiv["']?\\s*[:,=]\\s*["']refresh`,"gi"),new RegExp(`["']refresh["']\\s*[:,]\\s*${QUOTE}\\s*${REFRESH_URL}`,"gi")];var HTML_META=/<meta\b[^>]*>/gi;var ABSOLUTE="((?:https?:)?//[^\"'`\\s<>$]+)";var HTML_LINK=new RegExp(`\\s(?:href|action|formaction|src|poster|data)\\s*=\\s*["']?\\s*${ABSOLUTE}`,"gi");var JS_LINK=[new RegExp(`[{,]\\s*["']?(?:href|to|action|formAction|src|poster)["']?\\s*:\\s*${QUOTE}\\s*${ABSOLUTE}`,"g"),new RegExp(`setAttribute\\(\\s*["'](?:href|action|formaction|src)["']\\s*,\\s*${QUOTE}\\s*${ABSOLUTE}`,"gi"),new RegExp(`\\.(?:href|action|src)\\s*=\\s*${QUOTE}\\s*${ABSOLUTE}`,"g")];var HTML_SCRIPT=/<script\b[^>]*?\ssrc\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>]+))/gi;var APP_SCHEMES=/^(?:tel|mailto|sms):/;function untrusted(value,trusted){const url=value.trim().replaceAll("\\","/").toLowerCase();if(!/^(?:[a-z][a-z\d+.-]*:|\/\/)/.test(url)||APP_SCHEMES.test(url)){return false}return!trusted.some(origin=>url===origin||url.startsWith(`${origin}/`))}function lineAt(source,index){return source.slice(0,index).split("\n").length}var PACKAGE_HOSTS=["maps.googleapis.com"];var CSP_HOSTS=["fonts.googleapis.com","fonts.gstatic.com"];async function knownHosts(cwd){let config;try{config=(await loadConfig(cwd)).value}catch{config=void 0}const security=config?.security;const configured=[...Object.values(security?.csp??{}),config?.outbound?.allow,security?.links].flatMap(list2=>Array.isArray(list2)?list2:[]).filter(host=>typeof host==="string");return[...new Set(["*.zappie.ai","zappie.ai","zappie.shop","images.zappie.shop",...typeof config?.store==="string"?[`${config.store}.zappie.shop`]:[],...RESIZE_HOSTS,...PACKAGE_HOSTS,...CSP_HOSTS,...configured])].filter(Boolean).map(host=>host.toLowerCase())}function listedHost(url,hosts){let host;try{host=new URL(url.startsWith("//")?`https:${url}`:url).hostname.toLowerCase()}catch{return false}return hosts.some(entry=>entry.startsWith("*.")?host.endsWith(entry.slice(1)):host===entry)}function linkFindings(source,patterns,hosts){const found=[];for(const pattern of patterns){for(const match of source.matchAll(pattern)){const url=match[1]??"";if(!listedHost(url,hosts)){found.push({rule:"build/unlisted-link-host",index:match.index,url})}}}return found}function scanScript(source,hosts,trusted){const found=linkFindings(source,JS_LINK,hosts);for(const pattern of JS_NAVIGATION){for(const match of source.matchAll(pattern)){const url=match[1]??"";if(untrusted(url,trusted)){found.push({rule:"build/no-offsite-navigation",index:match.index,url})}}}for(const pattern of JS_REFRESH){for(const match of source.matchAll(pattern)){const url=match[1]??"";if(untrusted(url,trusted)){found.push({rule:"build/no-meta-refresh",index:match.index,url})}}}return found}function scanHtml(source,hosts,trusted){const found=linkFindings(source,[HTML_LINK],hosts);for(const match of source.matchAll(HTML_META)){const tag=match[0];if(!/\bhttp-equiv\s*=\s*["']?\s*refresh/i.test(tag)){continue}const url=new RegExp(REFRESH_URL,"i").exec(tag)?.[1]??"";if(untrusted(url,trusted)){found.push({rule:"build/no-meta-refresh",index:match.index,url})}}for(const match of source.matchAll(HTML_SCRIPT)){const src=match[1]??match[2]??match[3]??"";if(/^\s*(?:[a-z][a-z\d+.-]*:|\/\/|\\\\)/i.test(src)){found.push({rule:"build/no-external-script",index:match.index,url:src})}}return found}var MESSAGES={"build/no-offsite-navigation":{message:url=>`The build output sends the shopper to ${url} from code. Only Zappie's checkout and accounts may be opened this way.`,fix:"Find the code or package that navigates there and remove it, or link to the page with an <a href> the shopper clicks."},"build/no-meta-refresh":{message:url=>`The build output has a refresh that moves the shopper to ${url} without a click.`,fix:"Remove the refresh tag or header, or the package that adds it. Use a router redirect to a path on this site."},"build/unlisted-link-host":{message:url=>`The build output links to or loads ${url}, on a host the site doesn't list.`,fix:"If the store means to link there, add the host to security.links in zappie.config.ts (or security.csp for an image or font host). Otherwise find the code or content that names it and remove it."},"build/no-external-script":{message:url=>`The built page loads a script from ${url}.`,fix:"Install the code as a package so it ships in the storefront bundle, and remove the script tag."}};async function outputProblems(cwd){const problems=[];const hosts=await knownHosts(cwd);const{TRUSTED_NAVIGATION_ORIGINS:trusted}=await import("eslint-plugin-zappie");for(const directory of BUILD_OUTPUT){let entries;try{entries=await readdir3(path7.join(cwd,directory),{recursive:true,encoding:"utf8"})}catch{continue}for(const entry of entries.sort()){const html=/\.html?$/i.test(entry);if(!html&&!/\.[cm]?js$/i.test(entry)){continue}const file=path7.join(cwd,directory,entry);const source=await readFile6(file,"utf8").catch(()=>"");const findings=html?[...scanHtml(source,hosts,trusted),...scanScript(source,hosts,trusted)]:scanScript(source,hosts,trusted);const named=new Set(findings.filter(finding=>finding.rule!=="build/unlisted-link-host").map(finding=>finding.url));const reported=new Set;for(const finding of findings.sort((a,b)=>a.index-b.index)){const link=finding.rule==="build/unlisted-link-host";const key=`${finding.rule}\0${link?finding.url:finding.index}`;if(reported.has(key)||link&&named.has(finding.url)){continue}reported.add(key);const text=MESSAGES[finding.rule];if(!text){continue}problems.push(problem(text.message(finding.url),text.fix,{rule:finding.rule,file:relative(cwd,file),line:lineAt(source,finding.index)}))}}}return problems}var ATTRIBUTES=["data-zappie-source","data-zappie-component"];async function devSourceProblems(cwd){const problems=[];for(const directory of BUILD_OUTPUT){let entries;try{entries=await readdir4(path8.join(cwd,directory),{recursive:true,encoding:"utf8"})}catch{continue}for(const entry of entries.sort()){const file=path8.join(cwd,directory,entry);if(!/\.(?:[cm]?js|html?|css|json|txt|xml)$/.test(entry)){continue}const source=await readFile7(file,"utf8").catch(()=>"");const found=ATTRIBUTES.find(attribute=>source.includes(attribute));if(found){problems.push(problem(`The build output has the dev-only ${found} attribute, which shows where the site's code lives.`,"Add zappieSource() to the Vite plugins only for the dev server, as the starter does, and remove any copy of the attribute from your code.",{rule:"build/no-dev-source-attributes",file:relative(cwd,file)}))}}}return problems}var PREBUILT_ENV="ZAPPIE_CHECK_PREBUILT";var PREBUILT_RULE="build/prebuilt";async function checkBuild({cwd,packageManager,signal,prebuilt}){signal?.throwIfAborted();const manifest=JSON.parse(await readFile8(path9.join(cwd,"package.json"),"utf8"));const invocation=manifest.dependencies?.["react-router"]?await binaryArgs(packageManager,cwd,"react-router",["build"]):manifest.scripts?.build?scriptArgs(packageManager,"build"):void 0;if(!invocation){return skipped("build","No react-router dependency or build script is defined in package.json.")}if((prebuilt??process.env[PREBUILT_ENV]==="1")&&await hasBuildOutput(cwd)){const problems=await scanProblems(cwd);signal?.throwIfAborted();return step("build",problems.length?"failed":"passed",[...problems,problem("Used the existing build output instead of building again.",null,{rule:PREBUILT_RULE})])}const result=await command(invocation.executable,invocation.args,cwd,signal);signal?.throwIfAborted();if(result.code===0){const problems=await scanProblems(cwd);return step("build",problems.length?"failed":"passed",problems)}return step("build","failed",[problem(`The project build failed.
|
|
2
|
+
${usefulTail(result.stdout,result.stderr)}`,"Fix the reported build errors and run zappie check again.",{rule:"build/failed"})])}async function scanProblems(cwd){return[...await devSourceProblems(cwd),...await outputProblems(cwd)]}async function hasBuildOutput(cwd){for(const directory of BUILD_OUTPUT){const entries=await readdir5(path9.join(cwd,directory)).catch(()=>[]);if(entries.length>0){return true}}return false}function usefulTail(stdout,stderr){const lines=`${stdout}
|
|
3
|
+
${stderr}`.split(/\r?\n/).map(line=>line.trimEnd()).filter(Boolean).slice(-12);return lines.length>0?lines.join("\n"):"The build exited without output."}import{lstat,readFile as readFile9,readdir as readdir6}from"fs/promises";import path10 from"path";var FILE_SIZE_CAP=1024*1024;var BUILD_FILE_SIZE_CAP=8*1024*1024;var ignoredDirectories=new Set(["node_modules","build","dist","coverage","public","vendor","test","tests","e2e","test-results","playwright-report"]);var codeExtension=/\.(?:[cm]?[jt]sx?|html|mdx)$/;var testFile=/\.(?:test|spec)\.[^.]+$/;async function readCssInputs(cwd){const source=[];await collect2(cwd,source,name=>{return!name.startsWith(".")&&!ignoredDirectories.has(name)});const built=[];await collect2(path10.join(cwd,"build/client"),built,()=>true);const read=(files,cap)=>texts(cwd,files,cap);return{sourceCss:await read(source.filter(file=>file.endsWith(".css")),FILE_SIZE_CAP),sourceCode:await read(source.filter(file=>codeExtension.test(file)&&!testFile.test(file)&&!/(?:^|[/\\])[^/\\]+\.config\.[^.]+$/.test(file)),FILE_SIZE_CAP),builtCss:await read(built.filter(file=>file.endsWith(".css")),BUILD_FILE_SIZE_CAP),builtCode:await read(built.filter(file=>file.endsWith(".js")),BUILD_FILE_SIZE_CAP)}}async function texts(cwd,files,cap){const result=[];for(const file of files.sort()){const info=await lstat(file);if(!info.isFile()||info.size>cap){continue}result.push({file:relative(cwd,file),text:await readFile9(file,"utf8")})}return result}async function collect2(directory,files,enter){let entries;try{entries=await readdir6(directory,{withFileTypes:true})}catch(error){if(error instanceof Error&&"code"in error&&error.code==="ENOENT"){return}throw error}for(const entry of entries){if(entry.isSymbolicLink()){continue}const file=path10.join(directory,entry.name);if(entry.isDirectory()){if(enter(entry.name)){await collect2(file,files,enter)}}else if(entry.isFile()){files.push(file)}}}import postcss from"postcss";var CSS_ERRORS=new Set(["css/important","css/class-patch"]);function analyseCss(inputs){const source=parseAll(inputs.sourceCss);const built=parseAll(inputs.builtCss);return[...source.problems,...built.problems,...important(source.parsed,inputs.sourceCode),...duplicateKeyframes(source.parsed,built.parsed),...duplicateSelectors(source.parsed),...arbitraryTokens(source.parsed,inputs.sourceCode),...unusedCustomProperties(source.parsed,built.parsed,inputs),...reducedMotion(source.parsed),...classPatches(source.parsed),...literalTokens(source.parsed)]}function parseAll(files){const parsed=[];const problems=[];for(const entry of files){try{parsed.push({...entry,root:postcss.parse(entry.text,{from:entry.file}),lines:entry.text.split(/\r?\n/)})}catch(error){const line=error&&typeof error==="object"&&"line"in error?Number(error.line):void 0;problems.push(problem(`${entry.file} could not be read as CSS: ${error instanceof Error?error.message:String(error)}`,"Fix the CSS syntax so zappie check can read the file.",{rule:"css/unreadable",file:entry.file,...line&&line>0?{line}:{}}))}}return{parsed,problems}}var allowImportant=/zappie-allow-important:\s*\S/;function important(css,code){const problems=[];const allowed=(lines,line)=>line!==void 0&&allowImportant.test(lines[line-1]??"");for(const entry of css){entry.root.walkDecls(decl=>{const line=decl.source?.start?.line;if(decl.important&&!allowed(entry.lines,line)&&!insideMedia(decl.parent,"reduce")){problems.push(importantProblem(`${decl.prop} is marked !important.`,entry.file,line))}});entry.root.walkAtRules("apply",rule=>{const line=rule.source?.start?.line;const flagged=rule.params.split(/\s+/).filter(token=>importantUtility(token));if((flagged.length>0||/!important\b/.test(rule.params))&&!allowed(entry.lines,line)){problems.push(importantProblem(`@apply ${rule.params} forces !important.`,entry.file,line))}})}for(const entry of code){const lines=entry.text.split(/\r?\n/);lines.forEach((text,index)=>{if(allowImportant.test(text)){return}for(const list2 of classLists(text)){for(const token of list2.split(/\s+/)){if(importantUtility(token)){problems.push(importantProblem(`The utility ${token} forces !important.`,entry.file,index+1))}}}})}return problems}function importantProblem(message4,file,line){return problem(message4,"Raise the selector's specificity or reorder the rules instead. For a reviewed case, add /* zappie-allow-important: <reason> */ on the same line.",{rule:"css/important",file,...line?{line}:{}})}var utilityToken=/^!?-?[a-z0-9@[\]_\-:/.%()#,'=&>*~+!]*[a-z0-9\])%]!?$/;function importantUtility(token){const utility=withoutVariants(token).utility;if(utility.length<3){return false}if(/^!-?[a-z[]/.test(utility)){return true}return/[a-z0-9\])%]!$/.test(utility)&&/[-[]/.test(utility)}function classLists(line){const lists=[];for(const match of line.matchAll(/(["'`])([^"'`]*?)\1/g)){const value=match[2]?.trim()??"";if(!value){continue}const tokens=value.split(/\s+/);if(tokens.every(token=>utilityToken.test(token))&&tokens.some(token=>token.includes("-"))){lists.push(value)}}return lists}function withoutVariants(token){let depth=0;let cut=0;for(let index=0;index<token.length;index++){const character=token[index];if(character==="["||character==="("){depth++}else if(character==="]"||character===")"){depth--}else if(character===":"&&depth===0){cut=index+1}}return{variants:token.slice(0,cut),utility:token.slice(cut)}}function keyframesIn(files){const found=[];for(const entry of files){entry.root.walkAtRules(/keyframes$/i,rule=>{const line=rule.source?.start?.line;found.push({name:rule.params.trim(),vendor:rule.name.toLowerCase().replace(/keyframes$/,""),body:framesBody(rule),file:entry.file,...line?{line}:{}})})}return found}function framesBody(rule){const frames=[];rule.each(node=>{if(node.type!=="rule"){return}const declarations=[];node.walkDecls(decl=>{declarations.push(`${decl.prop.toLowerCase()}:${normaliseValue(decl.value)}${decl.important?"!":""}`)});const selector=node.selectors.map(value=>value.trim().toLowerCase().replace(/^from$/,"0%").replace(/^to$/,"100%")).join(",");frames.push(`${selector}{${declarations.join(";")}}`)});return frames.join("")}function normaliseValue(value){return value.toLowerCase().replace(/\s+/g,"").replace(/(^|[^\d.])0+(\.\d)/g,"$1$2").replace(/(\d)\.0+(?!\d)/g,"$1")}function duplicateKeyframes(source,built){const problems=[];const reported=new Set;const sourceFrames=keyframesIn(source);const builtFrames=keyframesIn(built);const fix="Keep one @keyframes for each animation and refer to it by that name.";const byName=frames=>{const groups=new Map;for(const frame of frames){const key=`${frame.vendor}${frame.name}`;groups.set(key,[...groups.get(key)??[],frame])}return groups};for(const[key,group]of byName(sourceFrames)){if(group.length>1){reported.add(key);const[first,...rest]=group;for(const frame of rest){problems.push(problem(`@keyframes ${frame.name} is defined again (first in ${first?.file}${first?.line?`:${first.line}`:""}).`,fix,location("css/duplicate-keyframes",frame)))}}}for(const[key,group]of byName(builtFrames)){if(reported.has(key)||new Set(group.map(({body})=>body)).size<2){continue}reported.add(key);const first=group[0];problems.push(problem(`@keyframes ${first?.name} is defined more than once with different frames in the built CSS, so the last one wins.`,`${fix} Rename yours if it clashes with one from a library or Tailwind.`,location("css/duplicate-keyframes",first)))}const byBody=new Map;for(const frame of[...sourceFrames,...builtFrames]){if(!frame.body){continue}const key=`${frame.vendor}${frame.body}`;const group=byBody.get(key)??[];if(!group.some(({name})=>name===frame.name)){group.push(frame)}byBody.set(key,group)}for(const group of byBody.values()){if(group.length<2){continue}const names=group.map(({name})=>name);const[first,...rest]=group;problems.push(problem(`@keyframes ${names.join(", ")} have the same frames under different names.`,`${fix} Use ${first?.name} for all of them.`,location("css/duplicate-keyframes",rest[0])))}return problems}function location(rule,entry){return{rule,...entry?{file:entry.file}:{},...entry?.line?{line:entry.line}:{}}}function contextOf(node){const parts=[];for(let parent=node;parent&&parent.type!=="root";parent=parent.parent){if(parent.type==="atrule"){const rule=parent;parts.unshift(`@${rule.name} ${rule.params.replace(/\s+/g," ").trim()}`)}else if(parent.type==="rule"){parts.unshift(parent.selectors.map(normaliseSelector).join(","))}}return parts.join(" > ")}var normaliseSelector=selector=>selector.replace(/\s+/g," ").replace(/\s*([>+~,])\s*/g,"$1").trim();function duplicateSelectors(source){const seen=new Map;const problems=[];for(const entry of source){entry.root.walkRules(rule=>{if(rule.parent?.type==="atrule"&&/keyframes$/i.test(rule.parent.name)){return}const context=contextOf(rule.parent);const line=rule.source?.start?.line;const selectors=[...new Set(rule.selectors.map(normaliseSelector))];const keys=selectors.length===1?selectors:[[...selectors].sort().join(",")];for(const selector of keys){const key=`${context}\0${selector}`;const first=seen.get(key);if(!first){seen.set(key,{file:entry.file,...line?{line}:{}});continue}problems.push(problem(`${selector}${context?` (inside ${context})`:""} is already styled in ${first.file}${first.line?`:${first.line}`:""}.`,"Merge the declarations into one rule so the cascade order cannot change the result.",location("css/duplicate-selector",{file:entry.file,...line?{line}:{}})))}})}return problems}var namespaces=[["font-weight",["font"]],["inset-shadow",["inset-shadow"]],["drop-shadow",["drop-shadow"]],["text-shadow",["text-shadow"]],["color",["text","bg","border","border-x","border-y","border-t","border-r","border-b","border-l","border-s","border-e","ring","ring-offset","outline","fill","stroke","decoration","accent","caret","divide","placeholder","from","via","to","shadow","inset-shadow","inset-ring"]],["radius",["rounded","rounded-t","rounded-r","rounded-b","rounded-l","rounded-tl","rounded-tr","rounded-br","rounded-bl","rounded-s","rounded-e","rounded-ss","rounded-se","rounded-es","rounded-ee"]],["font",["font"]],["text",["text"]],["tracking",["tracking"]],["leading",["leading"]],["shadow",["shadow"]],["blur",["blur"]],["ease",["ease"]],["animate",["animate"]],["container",["max-w","min-w","w"]]];function themeTokens(source){const tokens=[];for(const entry of source){entry.root.walkAtRules("theme",rule=>{rule.walkDecls(/^--/,decl=>{for(const[namespace,utilities]of namespaces){const prefix=`--${namespace}-`;if(decl.prop.startsWith(prefix)&&decl.prop.length>prefix.length){tokens.push({variable:decl.prop,value:compact(decl.value),utilities,name:decl.prop.slice(prefix.length)});break}}})})}return tokens}var compact=value=>value.toLowerCase().replace(/_/g," ").replace(/\s+/g,"");var arbitraryUtility=/(?<![\w-])((?:[^\s"'`<>{}]*:)?)(!?)(-?)([a-z][a-z-]*?)-(\[([^\]\s"'`]+)\]|\((--[a-z0-9_-]+)\))((?:\/[\w.%]+)?!?)(?![\w-])/g;function arbitraryTokens(source,code){const tokens=themeTokens(source);if(tokens.length===0){return[]}const problems=[];const scan=(text,file,lineOffset=0)=>{text.split(/\r?\n/).forEach((line,index)=>{for(const match of line.matchAll(arbitraryUtility)){const[whole,variants="",bang="",negative="",utility="",,bracket,parenthesis,modifier=""]=match;const raw=bracket??`var(${parenthesis})`;const value=compact(raw.replace(/^[a-z-]+:(?!\/)/,""));const token=tokens.find(candidate=>candidate.utilities.includes(utility)&&(value===candidate.value||value===`var(${candidate.variable})`));if(!token){continue}const replacement=`${variants}${bang}${negative}${utility}-${token.name}${modifier}`;problems.push(problem(`${whole} restates the theme token ${token.variable}.`,`Use ${replacement}.`,{rule:"css/arbitrary-token",file,line:lineOffset+index+1}))}})};for(const entry of code){scan(entry.text,entry.file)}for(const entry of source){entry.root.walkAtRules("apply",rule=>{scan(rule.params,entry.file,(rule.source?.start?.line??1)-1)})}return problems}function unusedCustomProperties(source,built,inputs){const definitions=new Map;for(const entry of source){entry.root.walkDecls(/^--/,decl=>{if(insideTheme(decl.parent)||definitions.has(decl.prop)){return}const line=decl.source?.start?.line;definitions.set(decl.prop,{file:entry.file,...line?{line}:{}})})}if(definitions.size===0){return[]}const read=new Set;const cssReads=/var\(\s*(--[\w-]+)/g;for(const entry of[...source,...built]){for(const match of entry.text.matchAll(cssReads)){read.add(match[1]??"")}}const scriptMentions=/(?<![\w-])(--[a-zA-Z][\w-]*)/g;for(const entry of[...inputs.sourceCode,...inputs.builtCode]){for(const match of entry.text.matchAll(scriptMentions)){read.add(match[1]??"")}}const problems=[];for(const[name,where]of definitions){if(!read.has(name)){problems.push(problem(`${name} is defined but nothing reads it.`,"Remove the custom property, or read it with var().",location("css/unused-custom-property",where)))}}return problems}function insideTheme(node){for(let parent=node;parent;parent=parent.parent){if(parent.type==="atrule"&&parent.name==="theme"){return true}}return false}var motionProperties=new Set(["animation","animation-name","transition","transition-property"]);var stillValue=/^(?:none|0m?s|initial|unset|inherit)$/i;var reducedMotionQuery=(rule,preference)=>rule.name==="media"&&new RegExp(`prefers-reduced-motion\\s*:\\s*${preference}`,"i").test(rule.params);function insideMedia(node,preference){for(let parent=node;parent;parent=parent.parent){if(parent.type==="atrule"&&reducedMotionQuery(parent,preference)){return true}}return false}var globalSelector=/^(?:\*|html|:root|body|\*::?before|\*::?after|::?before|::?after)$/;function reducedMotion(source){let global=false;const stilled=new Set;for(const entry of source){entry.root.walkAtRules("media",media=>{if(!reducedMotionQuery(media,"reduce")){return}media.walkRules(rule=>{let touchesMotion=false;rule.walkDecls(decl=>{if(/^(?:animation|transition)/.test(decl.prop)){touchesMotion=true}});if(!touchesMotion){return}for(const selector of rule.selectors.map(normaliseSelector)){stilled.add(selector);if(globalSelector.test(selector)){global=true}}})})}if(global){return[]}const problems=[];for(const entry of source){entry.root.walkDecls(decl=>{if(!motionProperties.has(decl.prop)||stillValue.test(decl.value.trim())){return}const parent=decl.parent;if(insideMedia(parent,"reduce")||insideMedia(parent,"no-preference")||insideTheme(parent)||parent?.type!=="rule"){return}const selectors=parent.selectors.map(normaliseSelector);if(selectors.every(selector=>stilled.has(selector))){return}const line=decl.source?.start?.line;problems.push(problem(`${selectors.join(", ")} sets ${decl.prop} with no prefers-reduced-motion path.`,"Wrap the motion in @media (prefers-reduced-motion: no-preference), or still it in a @media (prefers-reduced-motion: reduce) block.",location("css/reduced-motion",{file:entry.file,...line?{line}:{}})))})}return problems}var classAttribute=/\[\s*class\s*[*^$~|]?=\s*(?:"[^"]*"|'[^']*'|[^\]\s]+)\s*(?:[is]\s*)?\]/gi;function classPatches(source){const problems=[];for(const entry of source){entry.root.walkRules(rule=>{for(const match of rule.selector.matchAll(classAttribute)){const line=rule.source?.start?.line;problems.push(problem(`${match[0]} patches elements by their class attribute.`,"Style the element through a theme token or its own class. Dark mode goes through tokens, not by matching utility classes.",location("css/class-patch",{file:entry.file,...line?{line}:{}})))}})}return problems}var colourLiteral=/#[0-9a-f]{3,8}\b|(?:rgba?|hsla?|oklch|oklab|lab|lch|color)\([^()]*\)/gi;var trivialValue=/^(?:0|none|inherit|initial|unset|auto|transparent|currentcolor|0px)$/;function literalTokens(source){const tokens=new Map;for(const entry of source){entry.root.walkDecls(/^--/,decl=>{const value=compact(decl.value);if(value.includes("var(")||trivialValue.test(value)||tokens.has(value)){return}const parent=decl.parent;const rootLevel=parent?.type==="rule"&&parent.selectors.some(selector=>/^(?::root|html)$/.test(selector.trim()));if(insideTheme(parent)||rootLevel){tokens.set(value,decl.prop)}})}if(tokens.size===0){return[]}const problems=[];for(const entry of source){entry.root.walkDecls(decl=>{if(decl.prop.startsWith("--")||insideTheme(decl.parent)){return}const prop=decl.prop.toLowerCase();const candidates=[];if(/radius$/.test(prop)||/shadow$/.test(prop)){candidates.push(decl.value)}if(/(?:^|-)(?:color|background|border|outline|fill|stroke|shadow|decoration)/.test(prop)||prop==="color"||prop==="fill"||prop==="stroke"){candidates.push(...decl.value.match(colourLiteral)??[])}for(const candidate of new Set(candidates.map(compact))){const token=tokens.get(candidate);if(!token||trivialValue.test(candidate)){continue}const line=decl.source?.start?.line;problems.push(problem(`${decl.prop}: ${decl.value} restates the token ${token}.`,`Use var(${token}).`,location("css/literal-token",{file:entry.file,...line?{line}:{}})));break}})}return problems}async function checkCss({cwd,signal}){signal?.throwIfAborted();const inputs=await readCssInputs(cwd);if(inputs.sourceCss.length===0&&inputs.builtCss.length===0){return skipped("css","No source or built CSS files were found.")}const problems=analyseCss(inputs);signal?.throwIfAborted();const failed=problems.some(({rule})=>CSS_ERRORS.has(rule));return step("css",failed?"failed":"passed",problems)}import{readFile as readFile10}from"fs/promises";import path11 from"path";import{pathToFileURL}from"url";async function checkReadiness({cwd,signal}){signal?.throwIfAborted();const site=(await loadConfig(cwd)).value;const optOut=site.readiness?.routeDiscovery?.optOut;if(optOut){return step("readiness","passed",[problem("Initial route discovery is disabled by an explained exception",`Remove readiness.routeDiscovery.optOut after you enable initial route discovery. Reason: ${optOut.reason}`,{rule:"readiness/route-discovery-opt-out",file:"zappie.config.ts"})])}const file=path11.join(cwd,"react-router.config.ts");try{await readFile10(file,"utf8");const version=Date.now();const config=await import(`${pathToFileURL(file).href}?readiness=${version}`);if(config.default?.routeDiscovery?.mode==="initial"){return step("readiness","passed")}}catch(error){return step("readiness","failed",[problem(message2(error),'Create react-router.config.ts and set routeDiscovery: { mode: "initial" }.',{rule:"readiness/route-discovery",file:"react-router.config.ts"})])}return step("readiness","failed",[problem("Initial route discovery is not enabled",'Set routeDiscovery: { mode: "initial" } in react-router.config.ts so item routes are ready before a shopper taps.',{rule:"readiness/route-discovery",file:"react-router.config.ts"})])}function message2(error){return error instanceof Error?error.message:String(error)}import{execFile}from"child_process";import{lstat as lstat2,readFile as readFile11,readdir as readdir7}from"fs/promises";import path12 from"path";import{promisify}from"util";var FIX="Move the value to a server environment variable and rotate it.";function secretMatches(source,envFile){const matches2=[];add(matches2,source,/sk_(test|live)_[A-Za-z0-9]{16,}/g,value=>{const live=value.startsWith("sk_live_");return{rule:live?"secrets/sk-live":"secrets/sk-test",message:`Detected ${live?"sk_live_":"sk_test_"}\u2026 secret.`,fix:FIX,severity:"error"}});if(!envFile){add(matches2,source,/pk_live_[A-Za-z0-9]{16,}/g,()=>({rule:"secrets/pk-live",message:"Warning: detected pk_live_\u2026 outside an .env file.",fix:"Move the publishable key to a server-provided environment variable.",severity:"warning"}))}add(matches2,source,/-----BEGIN (?:[A-Z0-9]+ )*PRIVATE KEY-----/g,()=>({rule:"secrets/private-key",message:"Detected a PEM private key header.",fix:FIX,severity:"error"}));add(matches2,source,/AKIA[0-9A-Z]{16}/g,()=>({rule:"secrets/aws-access-key",message:"Detected an AKIA\u2026 access key.",fix:FIX,severity:"error"}));add(matches2,source,/FLWSECK-[A-Za-z0-9_-]{8,}/g,()=>({rule:"secrets/flutterwave-live",message:"Detected an FLWSECK-\u2026 secret.",fix:FIX,severity:"error"}));const gitleaksDefaults=[[/\bghp_[A-Za-z0-9]{36}\b/g,"github-pat","GitHub personal access token"],[/\bgithub_pat_[A-Za-z0-9_]{82}\b/g,"github-fine-grained-pat","GitHub fine-grained access token"],[/\bglpat-[A-Za-z0-9_-]{20,}\b/g,"gitlab-pat","GitLab personal access token"],[/\bnpm_[A-Za-z0-9]{36}\b/g,"npm-token","npm access token"],[/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,"slack-token","Slack token"],[/\bAIza[0-9A-Za-z_-]{35}\b/g,"google-api-key","Google API key"],[/\bSG\.[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{16,}\b/g,"sendgrid-api-key","SendGrid API key"]];for(const[pattern,rule,label]of gitleaksDefaults){add(matches2,source,pattern,()=>({rule:`secrets/${rule}`,message:`Detected a ${label}.`,fix:FIX,severity:"error"}))}const occupied=matches2.map(({index})=>index);const assignment=/\b([A-Za-z_$][\w$]*(?:secret|token|password|api[_-]?key)[\w$]*)\s*[:=]\s*(["'])([^"'\r\n]{24,})\2/gi;for(const found of source.matchAll(assignment)){const value=found[3]??"";const valueIndex=(found.index??0)+found[0].indexOf(value);if(entropy(value)>4&&!occupied.some(index=>index>=valueIndex&&index<valueIndex+value.length)){matches2.push({index:valueIndex,rule:"secrets/high-entropy",message:`Detected a high-entropy value assigned to ${found[1]??"a secret-shaped name"}.`,fix:FIX,severity:"error"})}}return matches2.sort((left,right)=>left.index-right.index)}function add(output,source,pattern,details){for(const match of source.matchAll(pattern)){output.push({index:match.index??0,...details(match[0])})}}function entropy(value){const counts=new Map;for(const character of value){counts.set(character,(counts.get(character)??0)+1)}return[...counts.values()].reduce((total2,count)=>{const probability=count/value.length;return total2-probability*Math.log2(probability)},0)}var SECRET_FILE_SIZE_CAP=1024*1024;var execFileAsync=promisify(execFile);var lockfile=/(?:^|\/)(?:package-lock\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb?)$/;async function scanSecrets(dir,options={}){const findings=[];for(const file of await filesToScan(dir,options.signal)){options.signal?.throwIfAborted();let info;try{info=await lstat2(file)}catch(error){if(missing2(error)){continue}throw error}if(!info.isFile()||info.size>SECRET_FILE_SIZE_CAP){continue}const contents=await readFile11(file);if(contents.includes(0)){continue}const source=contents.toString("utf8");for(const match of secretMatches(source,path12.basename(file).startsWith(".env"))){findings.push({rule:match.rule,file:relative(dir,file),line:lineAt2(source,match.index),message:match.message,fix:match.fix,severity:match.severity})}}if(options.history){findings.push(...await scanHistory(dir,options.signal))}return findings}async function checkSecrets({cwd,history,signal}){signal?.throwIfAborted();const findings=await scanSecrets(cwd,{...history===void 0?{}:{history},...signal?{signal}:{}});signal?.throwIfAborted();const failed=findings.some(({severity})=>severity==="error");return step("secrets",failed?"failed":"passed",findings.map(({severity:_severity,...finding})=>finding))}async function filesToScan(cwd,signal){const files=await trackedFiles(cwd,signal);for(const directory of["build/client","build/server","workers"]){await collect3(path12.join(cwd,directory),files)}return[...new Set(files)].filter(file=>!lockfile.test(relative(cwd,file))).sort()}var gitOptions=(cwd,signal)=>({cwd,encoding:"utf8",env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_PAGER:"cat"},...signal?{signal}:{}});async function trackedFiles(cwd,signal){try{const{stdout}=await execFileAsync("git",["ls-files","-z"],{...gitOptions(cwd,signal),maxBuffer:32*1024*1024});const files=stdout.split("\0").filter(Boolean).map(file=>path12.join(cwd,file));return files.length>0?files:fallbackFiles(cwd)}catch{return fallbackFiles(cwd)}}async function fallbackFiles(cwd){const files=[];for(const directory of["app","public"]){await collect3(path12.join(cwd,directory),files)}try{for(const entry of await readdir7(cwd,{withFileTypes:true})){if(entry.isFile()&&rootConfig(entry.name)){files.push(path12.join(cwd,entry.name))}}}catch{return files}return files}async function scanHistory(cwd,signal){try{const{stdout}=await execFileAsync("git",["log","--all","--format=commit:%H","-p","--no-ext-diff","--",".",":(exclude)package-lock.json",":(exclude)pnpm-lock.yaml",":(exclude)yarn.lock",":(exclude)bun.lock",":(exclude)bun.lockb"],{...gitOptions(cwd,signal),maxBuffer:128*1024*1024});return secretMatches(stdout,false).map(match=>{const location2=historyLocation(stdout,match.index);return{rule:match.rule,file:location2??"git history",line:lineAt2(stdout,match.index),message:match.message,fix:match.fix,severity:match.severity}})}catch{return[{rule:"secrets/history-unavailable",file:"git history",line:1,message:"Could not scan Git history for secrets.",fix:"Check Git access and run zappie check --history again.",severity:"warning"}]}}function historyLocation(source,index){const prefix=source.slice(0,index);const commit=[...prefix.matchAll(/^commit:([0-9a-f]+)$/gm)].at(-1)?.[1];const changedPaths=[...prefix.matchAll(/^(?:\+\+\+ b\/|--- a\/)(.+)$/gm)].map(match=>match[1]);const file=changedPaths.at(-1);return commit&&file?`${commit}:${file}`:void 0}async function collect3(directory,files,accept=()=>true){try{for(const entry of await readdir7(directory,{withFileTypes:true})){if(entry.isSymbolicLink()){continue}const file=path12.join(directory,entry.name);if(entry.isDirectory()){await collect3(file,files,accept)}else if(entry.isFile()&&accept(file)){files.push(file)}}}catch(error){if(!missing2(error)){throw error}}}function missing2(error){return error instanceof Error&&"code"in error&&error.code==="ENOENT"}function rootConfig(name){return name==="package.json"||name==="wrangler.json"||name==="wrangler.jsonc"||/(?:^|\.)config\.(?:[cm]?[jt]s|json)$/.test(name)}function lineAt2(source,index){return source.slice(0,index).split(/\r?\n/).length}import path13 from"path";async function checkTests({cwd,packageManager,signal}){const manifest=await json(path13.join(cwd,"package.json"));if(!manifest.scripts?.test){return skipped("test","No test script is defined in package.json.")}const invocation=scriptArgs(packageManager,"test");const result=await command(invocation.executable,invocation.args,cwd,signal);signal?.throwIfAborted();if(result.code===0){return step("test","passed")}return step("test","failed",[problem(result.stdout+result.stderr,"Fix the failing project tests.",{rule:"test/failed"})])}import path14 from"path";async function checkTypes(options){const{cwd,packageManager,signal}=options;signal?.throwIfAborted();const manifest=await json(path14.join(cwd,"package.json"));if(manifest.dependencies?.["react-router"]){const generated=await binaryArgs(packageManager,cwd,"react-router",["typegen"]);const result2=await command(generated.executable,generated.args,cwd,signal);if(result2.code!==0){return step("types","failed",outputProblems2(result2.stdout+result2.stderr))}}const typed=await binaryArgs(packageManager,cwd,"tsc",["--noEmit"]);const result=await command(typed.executable,typed.args,cwd,signal);signal?.throwIfAborted();if(result.code===0){return step("types","passed")}return step("types","failed",outputProblems2(result.stdout+result.stderr))}function outputProblems2(output){const parsed=output.split(/\r?\n/).flatMap(line=>{const match=/^(.*)\((\d+),(\d+)\): error (TS\d+): (.*)$/.exec(line);if(!match){return[]}return[problem(match[5]??line,"Fix the TypeScript error.",{...match[4]?{rule:match[4]}:{},...match[1]?{file:match[1]}:{},line:Number(match[2])})]});if(parsed.length>0){return parsed}return[problem(output.trim()||"TypeScript failed.","Fix the TypeScript errors.")]}var DEFAULT_STEP_TIMEOUTS=Object.freeze({config:3e4,allowlist:3e4,audit:AUDIT_TIMEOUT_MS,lint:12e4,types:12e4,test:12e4,build:18e4,secrets:12e4,readiness:3e4,budgets:3e4,css:6e4});var runners=[{name:"config",run:checkConfig},{name:"allowlist",run:checkAllowlist},{name:"audit",run:checkAudit},{name:"lint",run:isolated("lint")},{name:"types",run:checkTypes},{name:"test",run:checkTests},{name:"build",run:checkBuild},{name:"secrets",run:checkSecrets},{name:"readiness",run:checkReadiness},{name:"budgets",run:checkBudgets},{name:"css",run:checkCss}];var selfTimed=new Set(["audit"]);var SETTLE_MS=KILL_GRACE_MS+1e3;function runCheck(options){return runSteps(runners,options)}async function runSteps(list2,options,settleMs=SETTLE_MS){const{all,onProgress,...stepOptions}=options;const report=event=>{try{onProgress?.(event)}catch{}};const steps=[];for(const runner of list2){options.signal?.throwIfAborted();const started=performance.now();report({type:"started",step:runner.name});const{checked,timedOut}=await runStep(runner,stepOptions,stepTimeout(options,runner.name),settleMs);const note=stepNote(checked);report({type:"finished",step:runner.name,result:checked.result,durationMs:performance.now()-started,timedOut,...note?{note}:{}});steps.push(checked);if(checked.result==="failed"&&!all&&runner.name!=="audit"){break}}return{result:steps.some(entry=>entry.result==="failed")?"failed":"passed",steps}}async function runStep(runner,options,limit,settleMs){const outer=options.signal;const self=selfTimed.has(runner.name);const deadline=new AbortController;const timer=setTimeout(()=>deadline.abort(new Error(`The ${runner.name} step timed out.`)),self?limit+settleMs:limit);const signal=self?outer:outer?AbortSignal.any([outer,deadline.signal]):deadline.signal;let backstop;let abandon=()=>{};const abandoned=new Promise((_resolve,reject)=>{abandon=reject});const onStop=()=>{clearTimeout(backstop);backstop=setTimeout(()=>abandon(outer?.aborted?outer.reason:deadline.signal.reason),self&&deadline.signal.aborted?0:settleMs)};deadline.signal.addEventListener("abort",onStop,{once:true});outer?.addEventListener("abort",onStop,{once:true});const running=runner.run({...options,...signal?{signal}:{}});running.catch(()=>{});try{const checked=await Promise.race([running,abandoned]);outer?.throwIfAborted();if(!self&&deadline.signal.aborted){return{checked:timedOutStep(runner.name,limit,options),timedOut:true}}return{checked,timedOut:false}}catch(error){outer?.throwIfAborted();if(deadline.signal.aborted){return{checked:timedOutStep(runner.name,limit,options),timedOut:true}}return{checked:step(runner.name,"failed",[problem(message3(error),"Fix the step setup and run zappie check again.")]),timedOut:false}}finally{clearTimeout(timer);clearTimeout(backstop);deadline.signal.removeEventListener("abort",onStop);outer?.removeEventListener("abort",onStop)}}function stepNote(checked){return checked.problems.some(found=>found.rule===PREBUILT_RULE)?"used the existing build":void 0}function stepTimeout(options,name){const value=options.timeouts?.[name];return value!==void 0&&Number.isFinite(value)&&value>0?value:DEFAULT_STEP_TIMEOUTS[name]}function timedOutStep(name,limit,options){const found=problem(`The ${name} step didn't finish within its ${formatSeconds(limit)} time limit, so we stopped it.`,`Find what makes the ${name} step hang or run slowly, or raise its limit with timeouts.${name}. Then run zappie check again.`,{rule:name==="audit"?"audit/unavailable":`${name}/timeout`});return step(name,name==="audit"&&options.audit!=="enforce"?"passed":"failed",[found])}function formatSeconds(milliseconds){const seconds=milliseconds/1e3;return`${Number.isInteger(seconds)?seconds:seconds.toFixed(1)}s`}function message3(error){return error instanceof Error?error.message:String(error)}export{BUILTIN_ALLOWLIST_SOURCE,CSS_ERRORS,DEFAULT_STEP_TIMEOUTS,GLOBAL_DEV_PACKAGE_ALLOWLIST,INSTALL_SCRIPT_ALLOWLIST,PREBUILT_ENV,SECRET_FILE_SIZE_CAP,analyseCss,checkAllowlist,checkAudit,checkBudgets,checkBuild,checkConfig,checkCss,checkLint,checkReadiness,checkSecrets,checkTests,checkTypes,devSourceProblems,evaluateAudit,loadConfig,outputProblems,parseAuditOutput,runCheck,scanSecrets,supportsTypeScriptImport,validateBrand};
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../sdk/src/site-config/types.ts","../../sdk/src/site-config/helpers.ts","../../sdk/src/site-config/sections.ts","../../sdk/src/site-config/validate.ts","../src/allowlist.ts","../../tokens/src/names.ts","../../tokens/src/defaults.ts","../../tokens/src/named-colors.ts","../../tokens/src/parse.ts","../../tokens/src/contrast.ts","../../tokens/src/validate.ts","../src/config.ts","../src/brand.ts","../src/files.ts","../src/result.ts","../src/lockfile.ts","../src/audit.ts","../src/command.ts","../src/budgets.ts","../src/budget-files.ts","../src/budget-manifest.ts","../src/build.ts","../src/dev-source.ts","../../sdk/src/template/index.ts","../src/output-scan.ts","../src/css-files.ts","../src/css-rules.ts","../src/css.ts","../src/lint.ts","../src/readiness.ts","../src/secrets.ts","../src/secret-patterns.ts","../src/test-step.ts","../src/types-step.ts","../src/run.ts"],"mappings":"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C,KAAM,QAAU,CACvD,GAAI,CAAC,SAAS,IAAI,EAAG,CACnB,MACE,GAAGA,MAAI,IAAI,KAAK,IAChB,iBACA,8HACF,CACF,CACF,CAAC,CACH,CCrPA,OAAOE,UAAU,OCAV,IAAM,aAAe,CAC1B,SACA,cACA,qBACA,cACA,WACA,iBACA,mBACA,aACA,sBACA,cACA,cACA,cACA,cACA,cACA,aACA,aACA,gBACF,EACO,IAAM,cAAgB,CAC3B,gBACA,gBACA,gBACA,kBACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,eACA,eACA,mBACA,mBACA,oBACA,cACF,EACO,IAAM,YAAc,CACzB,mBACA,gBACA,eACF,EACO,IAAM,gBAAkB,CAC7B,oBACA,oBACA,mBACF,EACO,IAAM,cAAgB,CAAC,eAAgB,iBAAiB,EACxD,IAAM,cAAgB,CAAC,GAAG,gBAAiB,GAAG,aAAa,EAC3D,IAAM,YAAc,CACzB,GAAG,aACH,GAAG,cACH,GAAG,YACH,GAAG,aACL,EACO,IAAM,gBAAkB,CAC7B,SACA,WACA,aACA,qBACF,EChEO,IAAM,eACX,OAAO,OAAO,CACZ,SAAU,UACV,cAAe,UACf,qBAAsB,UACtB,cAAe,YACf,WAAY,UACZ,iBAAkB,UAClB,mBAAoB,UACpB,aAAc,UACd,sBAAuB,UACvB,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,aAAc,UACd,aAAc,UACd,iBAAkB,UAClB,gBAAiB,MACjB,gBAAiB,OACjB,gBAAiB,OACjB,kBAAmB,SACnB,cAAe,MACf,cAAe,MACf,cAAe,OACf,cAAe,OACf,cAAe,OACf,cAAe,OACf,cAAe,OACf,cAAe,OACf,mBAAoB,wBACpB,gBAAiB,wBACjB,gBAAiB,0BACjB,cAAe,OACf,cAAe,OACf,cAAe,OACf,cAAe,OACf,cAAe,OACf,eAAgB,OAChB,eAAgB,OAChB,oBAAqB,QACrB,oBAAqB,QACrB,oBAAqB,QACrB,eAAgB,6BAChB,kBAAmB,+BACnB,mBAAoB,QACpB,mBAAoB,kC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","names":["path","path","message","path","message","path","level","relative","record","path","message","readFile","path","message","message","path","readFile","theme","readFile","path","path","lockfile","access","readFile","path","access","path","message","lockfile","findLockfile","invalidIgnore","path","access","readFile","relative","record","packageName","access","readFile","path","readFile","readdir","path","readFile","path","gzipSync","path","access","readFile","readdir","readFile","path","readdir","readFile","path","readFile","readdir","path","list","readdir","path","readFile","readdir","path","readFile","readFile","path","readdir","readFile","readdir","path","collect","path","readFile","readdir","list","message","path","pathToFileURL","require","path","pathToFileURL","message","access","readFile","path","pathToFileURL","path","readFile","pathToFileURL","message","lstat","readFile","readdir","path","matches","total","lstat","missing","readFile","path","lineAt","collect","readdir","location","path","path","path","path","result","outputProblems","list","running","message"]}
|
|
1
|
+
{"version":3,"sources":["../src/allowlist.ts","../src/lockfile.ts","../src/audit.ts","../src/budgets.ts","../src/budget-files.ts","../src/budget-manifest.ts","../src/build.ts","../src/dev-source.ts","../../sdk/src/template/index.ts","../src/output-scan.ts","../src/css-files.ts","../src/css-rules.ts","../src/css.ts","../src/readiness.ts","../src/secrets.ts","../src/secret-patterns.ts","../src/test-step.ts","../src/types-step.ts","../src/run.ts"],"mappings":"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","names":["path","path","lockfile","access","readFile","path","lockfile","findLockfile","invalidIgnore","message","path","access","readFile","relative","access","readFile","path","readFile","readdir","path","readFile","path","gzipSync","path","access","readFile","readdir","readFile","path","readdir","readFile","path","readFile","readdir","path","list","readdir","path","readFile","readdir","path","readFile","readFile","path","readdir","readFile","readdir","path","collect","path","readFile","readdir","list","message","readFile","path","path","readFile","message","lstat","readFile","readdir","path","matches","total","lstat","missing","readFile","path","lineAt","collect","readdir","location","path","path","path","path","result","outputProblems","list","message"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{ISOLATED_STEPS,STEP_RESULT_MARK,isIsolatedStep}from"./chunk-CBYFCC3K.js";var[name,encoded]=process.argv.slice(2);async function main(){if(!isIsolatedStep(name)||encoded===void 0){throw new Error(`The step worker can't run a step named ${name}.`)}const options=JSON.parse(encoded);return{step:await ISOLATED_STEPS[name](options)}}var reply;try{reply=await main()}catch(error){reply={error:error instanceof Error?error.message:String(error)}}process.stdout.write(`
|
|
2
|
+
${STEP_RESULT_MARK}${JSON.stringify(reply)}
|
|
3
|
+
`,()=>process.exit(0));
|
|
4
|
+
//# sourceMappingURL=step-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/step-worker.ts"],"mappings":"gFAKA,GAAM,CAAC,KAAM,OAAO,EAAI,QAAQ,KAAK,MAAM,CAAC,EAE5C,eAAe,MAAO,CACpB,GAAI,CAAC,eAAe,IAAI,GAAK,UAAY,OAAW,CAClD,MAAM,IAAI,MAAM,0CAA0C,IAAI,GAAG,CACnE,CACA,MAAM,QAAU,KAAK,MAAM,OAAO,EAClC,MAAO,CAAE,KAAM,MAAM,eAAe,IAAI,EAAE,OAAO,CAAE,CACrD,CAEA,IAAI,MACJ,GAAI,CACF,MAAQ,MAAM,KAAK,CACrB,OAAS,MAAO,CACd,MAAQ,CAAE,MAAO,iBAAiB,MAAQ,MAAM,QAAU,OAAO,KAAK,CAAE,CAC1E,CAEA,QAAQ,OAAO,MAAM;AAAA,EAAK,gBAAgB,GAAG,KAAK,UAAU,KAAK,CAAC;AAAA,EAAM,IACtE,QAAQ,KAAK,CAAC,CAChB","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zappie/check",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.8",
|
|
4
4
|
"description": "Project checks for Zappie storefronts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"postcss": "^8.5.30",
|
|
28
|
-
"@zappie/sdk": "^0.
|
|
28
|
+
"@zappie/sdk": "^0.7.0",
|
|
29
29
|
"@zappie/tokens": "^0.1.3",
|
|
30
|
-
"eslint-plugin-zappie": "^0.
|
|
30
|
+
"eslint-plugin-zappie": "^0.6.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"ajv": "^8.20.0"
|