@vcp-dev/site-edit-engine 0.10.22 → 0.10.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
- import{SiteEditOperationRequestSchema as kR,SiteEditPatchPlanSchema as IR}from"@vcp-dev/contracts";function dn(e){return{requestId:e.requestId,kind:e.kind,composition:e.composition,target:e.target,resultVersion:e.resultVersion,affectedFiles:e.affectedFiles,...e.output?{output:e.output}:{},...e.selectionRef?{selectionRef:e.selectionRef}:{}}}function Co(e,t){let n=t[0]??"Site edit operation request failed contract validation.";return{ok:!1,composition:{routeId:e.composition.routeId,...e.composition.templateId!==void 0?{effectiveTemplateId:e.composition.templateId}:{}},error:{code:"INVALID_PARAMS",message:n},data:{requestId:e.id,kind:e.kind,composition:{routeId:e.composition.routeId,...e.composition.templateId!==void 0?{effectiveTemplateId:e.composition.templateId}:{}},target:e.target,resultVersion:e.documentVersion}}}function Ro(e,t){if(!e.pageComposition)throw new Error("RenderDocument is missing the required Page Composition projection.");return{siteId:t.siteId,snapshotId:t.snapshotId,composition:e.composition,version:e.version,entries:e.entries.map(n=>({key:n.key,parentKey:n.parentKey,...n.pageCompositionUnitKey?{pageCompositionUnitKey:n.pageCompositionUnitKey}:{},operationSummary:{canUpdateText:n.operationSummary.canUpdateText,canInsertChild:n.operationSummary.canInsertChild,canMove:n.operationSummary.canMove,canRemove:n.operationSummary.canRemove},...n.dynamicDataSummary?{dynamicDataSummary:n.dynamicDataSummary}:{}})),pageComposition:e.pageComposition.status==="unsupported"?{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics}:{status:"supported",containerKey:e.pageComposition.container.key,hasBusinessMembers:e.pageComposition.businessMembers.length>0,placementUnitKeys:e.pageComposition.placementUnits.map(n=>n.key),placements:e.pageComposition.placements.map(n=>({placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,relation:n.relation}))}}}function wo(e){return{composition:e.composition,key:e.key,tag:e.tag,label:e.label,sourceLocator:e.sourceLocator,isOpaque:e.isOpaque,ancestors:e.ancestors,componentName:e.componentName,sourceFile:e.sourceFile,capabilities:gh(e.capabilities),provenanceChain:e.provenanceChain?{editMode:e.provenanceChain.editMode,diagnostics:e.provenanceChain.diagnostics}:void 0,dynamicData:e.dynamicData,...e.properties?{properties:e.properties}:{},textSegments:e.textSegments.map(t=>({index:t.index,editable:t.editable,sourceKind:t.source?.kind??null})),boundaryKind:e.boundaryKind}}function No(e,t){let n=new Date().toISOString();return e.type==="document-changed"?{type:"site-edit.document.changed",siteId:t.siteId,snapshotId:t.snapshotId,composition:e.composition,version:e.version,at:n}:e.type==="operation-completed"?{type:"site-edit.operation.completed",siteId:t.siteId,composition:e.composition,result:dn(e.result),at:n}:e.type==="operation-failed"?{type:"site-edit.operation.failed",siteId:t.siteId,requestId:e.requestId,composition:e.composition,error:e.error,at:n}:e.type==="capability-changed"?{type:"site-edit.capability.changed",siteId:t.siteId,composition:e.composition,keys:e.keys,at:n}:e.type==="graph-invalidated"?{type:"site-edit.graph.invalidated",siteId:t.siteId,composition:e.composition,at:n}:e.type==="graph-ready"?{type:"site-edit.graph.ready",siteId:t.siteId,composition:e.composition,version:e.version,at:n}:e.type==="graph-error"?{type:"site-edit.graph.error",siteId:t.siteId,composition:e.composition,message:e.message,at:n}:null}function gh(e){return{composition:e.composition,key:e.key,canUpdateText:e.canUpdateText,canInsertChild:e.canInsertChild,canMove:e.canMove,canRemove:e.canRemove,editModes:e.editModes?{updateText:e.editModes.updateText?{mode:e.editModes.updateText.mode,reasonCode:e.editModes.updateText.reasonCode}:void 0,insertChild:e.editModes.insertChild?{mode:e.editModes.insertChild.mode,reasonCode:e.editModes.insertChild.reasonCode}:void 0,move:e.editModes.move?{mode:e.editModes.move.mode,reasonCode:e.editModes.move.reasonCode}:void 0,remove:e.editModes.remove?{mode:e.editModes.remove.mode,reasonCode:e.editModes.remove.reasonCode}:void 0}:void 0,constraints:e.constraints}}import{checkGlobalsCssEdit as BC,computeSiteEditCompositionKey as $C,getSiteEditSourceDeleteProtectionReason as jC,isSiteEditTextSourcePath as VC,parseSiteEditRepeatInstanceKey as UC,SITE_EDIT_SOURCE_DELETE_CAPABILITY as KC,stripSiteEditRepeatInstanceKeys as it}from"@vcp-dev/contracts";import Qi from"node:path";import{parse as JC}from"yaml";import vs from"node:path";import{TextDecoder as yh}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as Hl,SITE_EDIT_SOURCE_ALLOWED_DIRS as Wl,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as Gl,SiteEditCompositionContextSchema as xh,SiteEditSourceFileResponseSchema as xs,SiteEditSourceLocationSchema as bh,SiteEditSourcePathSchema as Po,SiteEditSourceTreeResponseSchema as Sh,isSiteEditTextSourcePath as Eh}from"@vcp-dev/contracts";import{createHash as hh}from"node:crypto";var pr=class{constructor(t){this.original=new Map,this.files=new Map,this.versions=new Map;for(let n of t)this.original.set(n.path,n.content),this.files.set(n.path,n.content),this.versions.set(n.path,n.version??1)}async readFile(t){let n=this.files.get(t);if(n===void 0)throw new Error(`Snapshot file not found: ${t}`);return n}async readFileBytes(t){return Buffer.from(await this.readFile(t),"utf8")}async getFileInfo(t){let n=this.files.get(t);return n===void 0?null:{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async writeFile(t,n){this.files.set(t,n)}async createExclusive(t,n){if(this.files.has(t))throw Object.assign(new Error(`Snapshot file already exists: ${t}`),{code:"EEXIST"});this.files.set(t,n)}async deleteFile(t){this.files.delete(t)}async exists(t){return this.files.has(t)}async listFiles(t={}){let n=t.roots??[],r=[...this.files.keys()].filter(a=>n.length===0?!0:n.some(c=>a===c||a.startsWith(`${c}/`))),o=[],i=new Set,s=0;for(let a of r.sort()){let c=Buffer.byteLength(this.files.get(a)??"","utf8"),l=a.split("/").length;if(t.maxDepth!==void 0&&l>t.maxDepth){i.add("max-depth");continue}if(t.maxFiles!==void 0&&o.length>=t.maxFiles){i.add("max-files");break}if(t.maxTotalBytes!==void 0&&s+c>t.maxTotalBytes){i.add("max-total-bytes");break}o.push({path:a,sizeBytes:c}),s+=c}return i.size>0?{files:o,truncated:{reasons:[...i]}}:{files:o}}getVersion(t){return this.versions.get(t)??0}bumpVersion(t){let n=this.getVersion(t)+1;return this.versions.set(t,n),n}getChangedFiles(){let t=new Set([...this.original.keys(),...this.files.keys()]),n=[];for(let r of[...t].sort()){let o=this.original.get(r),i=this.files.get(r);o!==i&&n.push({path:r,before:o,after:i})}return n}};function be(e){return`sha256:${hh("sha256").update(e).digest("hex")}`}var vh=[...Gl,...Hl,...Wl];function ks(e){if(!e.composition)throw new Error("Composition unavailable for source access policy.");return xh.parse(e.composition)}var bs=2e3,Ss=12,Es=24*1024*1024,zl=512*1024,kh=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),Ih={".avif":"image/avif",".bin":"application/octet-stream",".eot":"application/vnd.ms-fontobject",".gif":"image/gif",".glb":"model/gltf-binary",".ico":"image/x-icon",".jpeg":"image/jpeg",".jpg":"image/jpeg",".mp3":"audio/mpeg",".mp4":"video/mp4",".pdf":"application/pdf",".png":"image/png",".svg":"image/svg+xml",".ttf":"font/ttf",".wasm":"application/wasm",".webm":"video/webm",".webp":"image/webp",".woff":"font/woff",".woff2":"font/woff2",".zip":"application/zip"},Ch={".cjs":"javascript",".css":"css",".cts":"typescript",".html":"html",".js":"javascript",".jsx":"javascript",".json":"json",".md":"markdown",".mdx":"markdown",".mjs":"javascript",".mts":"typescript",".ts":"typescript",".tsx":"typescript",".txt":"plaintext",".yaml":"yaml",".yml":"yaml"},Rh=new yh("utf-8",{fatal:!0});async function Ao(e,t={}){let n=ks(t),{files:r,truncated:o}=await _h(e,t),i=Dh(r.map(s=>s.metadata));return Sh.parse({composition:n,nodes:i,defaultPath:Lh(r.map(s=>s.metadata)),totalFiles:r.length,...o?{truncated:o}:{}})}async function To(e,t,n={}){let r=ks(n),o=Po.parse(t.path),i=await Nh(e,o,n);if(!i)throw new Error(`Source file not found: ${o}`);if(Cs(o)){let a=Ql(o),c=await Ah(e,{path:o,sizeBytes:i.sizeBytes,mimeType:a});return xs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:a,readonly:!0,...c})}let s=await Is(e,o);return s.ok?xs.parse({composition:r,path:o,kind:"text",language:ql(o),sizeBytes:s.sizeBytes,contentHash:be(s.content),readonly:!1,content:s.content}):xs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:s.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function Is(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=wh(o);return i===null?{ok:!1,sizeBytes:o.byteLength}:{ok:!0,content:i,sizeBytes:o.byteLength}}let n=await e.readFile(t),r=Buffer.byteLength(n,"utf8");return n.includes("\0")?{ok:!1,sizeBytes:r}:{ok:!0,content:n,sizeBytes:r}}function wh(e){if(e.includes(0))return null;try{return Rh.decode(e)}catch{return null}}async function Nh(e,t,n){if(!Th(t,n))return null;let r=await Ph(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function Ph(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=Yl(await e.listFiles({roots:[t],maxFiles:1,maxDepth:t.split("/").length})).files.find(i=>i.path===t);if(o)return o}if(!await e.exists(t))return null;if(e.readFileBytes){let r=await e.readFileBytes(t);return{path:t,sizeBytes:r.byteLength}}if(Cs(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function Ah(e,t){if(!kh.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>zl)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>zl?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function Th(e,t){return Gl.some(n=>n===e)||Hl.some(n=>n===e)||Wl.some(n=>e===n||e.startsWith(`${n}/`))?!0:!e.startsWith("app/")&&!e.startsWith("src/app/")?!1:(t.routeEntryFiles??[]).some(n=>{let r=Po.safeParse(n);return r.success&&r.data===e})}function Fo(e,t){if(!t.sourceLocator)throw new Error(`Source location not available for key: ${e.key}`);return bh.parse({key:e.key,composition:t.composition,sourceFile:t.sourceLocator.sourceFile,componentName:t.sourceLocator.componentName,openingElementRange:{startLine:t.sourceLocator.openingElementRange.startLine,startColumn:t.sourceLocator.openingElementRange.startColumn,endLine:t.sourceLocator.openingElementRange.endLine,endColumn:t.sourceLocator.openingElementRange.endColumn},structuralPath:t.sourceLocator.structuralPath,textPreview:t.sourceLocator.textPreview})}function Yl(e){return Array.isArray(e)?{files:e}:e}function Fh(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function _h(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=Yl(await e.listFiles({roots:Oh(t),maxFiles:bs+1,maxDepth:Ss,maxTotalBytes:Es+1})),r=new Map,o=new Set(n.truncated?.reasons),i=0;for(let a of[...n.files].sort((c,l)=>c.path.localeCompare(l.path))){let c=Po.safeParse(a.path);if(!c.success)continue;let l=c.data;if(l.split("/").length>Ss){o.add("max-depth");continue}if(r.size>=bs){o.add("max-files");break}if(i+a.sizeBytes>Es){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:Mh(l,a.sizeBytes,ks(t))}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:Fh([...o]),maxFiles:bs,maxDepth:Ss,maxTotalBytes:Es}}:{}}}function Oh(e){let t=new Set(vh);for(let n of e.routeEntryFiles??[]){let r=Po.safeParse(n);r.success&&(r.data.startsWith("app/")||r.data.startsWith("src/app/"))&&t.add(r.data)}return[...t]}function Mh(e,t,n){return Cs(e)?{composition:n,path:e,kind:"binary",language:null,sizeBytes:t,mimeType:Ql(e),readonly:!0}:{composition:n,path:e,kind:"text",language:ql(e),sizeBytes:t,readonly:!1}}function Dh(e){let t=[];for(let n of e){let r=n.path.split("/"),o=t,i="";for(let[s,a]of r.entries()){i=i?`${i}/${a}`:a;let c=s===r.length-1,l=o.find(u=>u.name===a);if(l||(l=c?{kind:"file",name:a,path:i,file:n}:{kind:"directory",name:a,path:i,children:[]},o.push(l)),c){if(l.kind!=="file")throw new Error(`Source tree path collision: ${n.path}`);l.file=n}else{if(l.kind!=="directory")throw new Error(`Source tree path collision: ${n.path}`);o=l.children}}}return Zl(t)}function Zl(e){return e.map(t=>t.kind==="directory"?{...t,children:Zl(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function Lh(e){let t=e.find(r=>r.path.toLowerCase()==="design.md");if(t)return t.path;let n=e.find(r=>r.path==="app/page.tsx");return n?n.path:e.find(r=>r.kind==="text")?.path??e.at(0)?.path}function Cs(e){return!Eh(e)}function Ql(e){let t=vs.posix.extname(e).toLowerCase();return!t&&vs.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":Ih[t]??"application/octet-stream"}function ql(e){let t=vs.posix.extname(e).toLowerCase();return Ch[t]??"plaintext"}import*as eu from"@babel/parser";function fn(e,t,n,r){return{code:e,message:t,locatorKind:n,details:r}}function j(e,t,n,r,o){return{ok:!1,source:e,diagnostic:fn(t,n,r,o)}}function Rs(e,t,n,r,o){return{ok:!1,source:e,diagnostic:fn(t,n,r,o)}}var Bh={"tsx-module":["jsx","typescript"],"ts-module":["typescript"],"next-app-entry":["jsx","typescript"]};function Rt(e){let{source:t,profile:n}=e;try{return{ok:!0,ast:eu.parse(t,{sourceType:"module",plugins:Bh[n]})}}catch(r){return{ok:!1,source:t,diagnostic:fn("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function ws(e,t){return Rt({source:e,profile:tu(t.kind)})}function mr(e,t){return Rt({source:e,profile:tu(t)})}function tu(e){return"next-app-entry"}function pn(e){let{filePath:t,source:n}=e,r=t.toLowerCase().split(".").pop()??"";return r==="tsx"?"tsx-module":r==="ts"?"ts-module":r==="jsx"||r==="js"||r===""&&/<\w[\s\S]*>/.test(n)?"tsx-module":"next-app-entry"}import Ns from"@babel/traverse";import*as wt from"@babel/types";function Oe(e){if(e.isJSXFragment())return!0;if(!e.isJSXElement())return!1;let t=e.node.openingElement.name;if(wt.isJSXIdentifier(t)){let o=e.scope.getBinding(t.name);if(!o)return!1;let i=o.path;if(!i.isImportSpecifier())return!1;let s=i.node.imported;return(wt.isIdentifier(s)&&s.name==="Fragment"||wt.isStringLiteral(s)&&s.value==="Fragment")&&nu(i.parentPath)}if(!wt.isJSXMemberExpression(t)||!wt.isJSXIdentifier(t.property)||t.property.name!=="Fragment"||!wt.isJSXIdentifier(t.object))return!1;let n=e.scope.getBinding(t.object.name);if(!n)return!1;let r=n.path;return(r.isImportDefaultSpecifier()||r.isImportNamespaceSpecifier())&&nu(r.parentPath)}function nu(e){return e?.isImportDeclaration()===!0&&e.node.source.value==="react"}var Wt=typeof Ns=="function"?Ns:Ns.default,_o=new WeakMap,Oo=new WeakMap;function Nt(e,t){let n=ws(e,t);if(!n.ok)return Rs(e,n.diagnostic.code,n.diagnostic.message,t.kind);let r=ie(n.ast,t);return r.ok?{ok:!0,match:{locatorKind:r.match.locatorKind,node:r.match.node,start:r.match.start,end:r.match.end}}:Rs(e,r.diagnostic.code,r.diagnostic.message,t.kind,r.diagnostic.details)}function ie(e,t){return t.kind==="jsx-node"?su(e,t):t.kind==="jsx-attribute"?Jh(e,t):t.kind==="value"?Xh(e,t):t.kind==="expression"?zh(e,t):t.kind==="directive"?Hh(e,t):t.kind==="export"?Wh(e,t):{ok:!1,diagnostic:fn("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function su(e,t){return t.strategy==="source-range"?$h(e,t):jh(e,t)}function $h(e,t){let n=null;if(Wt(e,{JSXElement(o){if(!mn(o.node,t.sourceRange))return;let i=_e("jsx-node",o);if(i){if(!n){n=i;return}i.end-i.start<n.end-n.start&&(n=i)}},JSXFragment(o){if(!mn(o.node,t.sourceRange))return;let i=_e("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXExpressionContainer(o){if(!mn(o.node,t.sourceRange))return;let i=_e("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXText(o){if(!mn(o.node,t.sourceRange))return;let i=_e("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)}}),!n)return Me("jsx-node","locator-miss","JSX node not found for source-range locator");let r=n;return t.expectedIdentity&&!sy(r.path,t.expectedIdentity)?Me("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function jh(e,t){if(t.structuralPath===""){let r=Uh(e,t.component);if(r){let o=Kh(r);if(o)return o}}let n=null;return Wt(e,{JSXElement(r){if(hr(r)!==t.component||As(r)!==t.structuralPath)return;let i=_e("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(hr(r)!==t.component||As(r)!==t.structuralPath)return;let i=_e("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=Vh(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:Me("jsx-node","locator-miss","JSX node not found for structural-path locator")}function Vh(e,t,n){let r=null;return Wt(e,{JSXElement(o){if(hr(o)!==t||!mn(o.node,n))return;let i=_e("jsx-node",o);i&&(r=i,o.stop())},JSXFragment(o){if(hr(o)!==t||!mn(o.node,n))return;let i=_e("jsx-node",o);i&&(r=i,o.stop())}}),r}function Uh(e,t){let n=null;return Wt(e,{FunctionDeclaration(r){r.node.id?.name===t&&(n=r,r.stop())},VariableDeclarator(r){if(r.node.id.type==="Identifier"&&r.node.id.name===t){let o=r.get("init");(o.isArrowFunctionExpression()||o.isFunctionExpression())&&(n=o),r.stop()}}}),n}function Kh(e){if(e.isArrowFunctionExpression()){let t=e.get("body");if(t.isBlockStatement()){let r=t.get("body").find(o=>o.isReturnStatement());if(r){let o=r.get("argument");if((o.isParenthesizedExpression()?o.get("expression"):o).isJSXFragment())return Me("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}return null}return(t.isParenthesizedExpression()?t.get("expression"):t).isJSXFragment()?Me("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target"):null}if(e.isFunctionDeclaration()||e.isFunctionExpression()){let t=e.get("body");if(t.isBlockStatement()){let n=t.get("body").find(r=>r.isReturnStatement());if(n){let r=n.get("argument");if((r.isParenthesizedExpression()?r.get("expression"):r).isJSXFragment())return Me("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}}}return null}function Jh(e,t){let n=su(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>ay(c,t.name));if(!s||!s.isJSXAttribute())return Me("jsx-attribute","locator-miss",`JSX attribute '${t.name}' not found`);let a=_e("jsx-attribute",s);return a?{ok:!0,match:a}:Me("jsx-attribute","locator-miss",`JSX attribute '${t.name}' has no source range`)}function Xh(e,t){let n=Gh(e,t);if(!n.ok)return n;let r=Yh(n.match.path,t.path??[]);return r.ok?t.expectedRange&&!Ut(r.match.path.node.loc,t.expectedRange)?Me("value","locator-miss","Resolved value does not match expected range"):{ok:!0,match:r.match}:r}function zh(e,t){let n=null;return Wt(e,{Identifier(r){if(!ny(r))return;let o=ou(r);if(!o||!iu(o,t))return;let i=_e("expression",r);i&&(t.expectedRange&&!Ut(r.node.loc,t.expectedRange)||(n=i,r.stop()))},MemberExpression(r){let o=ou(r);if(!o||!iu(o,t))return;let i=_e("expression",r);i&&(t.expectedRange&&!Ut(r.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Me("expression","locator-miss","Expression not found")}function Hh(e,t){let n=null;return Wt(e,{Program(r){let i=r.get("directives").find(a=>a.node.value.value===t.value);if(!i||t.expectedRange&&!Ut(i.node.loc,t.expectedRange))return;let s=_e("directive",i);s&&(n=s,r.stop())}}),n?{ok:!0,match:n}:Me("directive","locator-miss",`Directive '${t.value}' not found`)}function Wh(e,t){let n=null;return Wt(e,{ExportNamedDeclaration(r){if(t.exportKind==="generate-metadata"){let c=r.get("declaration");if(c.isFunctionDeclaration()&&c.node.id?.name==="generateMetadata"){let m=_e("export",c);if(!m||t.expectedRange&&!Ut(c.node.loc,t.expectedRange))return;n=m,r.stop();return}if(!c.isVariableDeclaration())return;let l=Ts(c,"generateMetadata");if(!l||!l.isVariableDeclarator())return;let u=l.get("init");if(!u.node)return;let f=_e("export",u);if(!f||t.expectedRange&&!Ut(u.node.loc,t.expectedRange))return;n=f,r.stop();return}let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=Ts(o,t.exportKind==="named"?t.name:"metadata");if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node||t.expectedRange&&!Ut(s.node.loc,t.expectedRange))return;let a=_e("export",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(t.exportKind!=="default")return;let o=r.get("declaration"),i=_e("export",o);i&&(t.expectedRange&&!Ut(o.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Me("export","export-not-found",`Export '${iy(t)}' not found`)}function Gh(e,t){let n=null;return Wt(e,{Expression(r){if(n||t.root.kind!=="expression"||!mn(r.node,t.root.sourceRange))return;let o=_e("value",r);o&&(n=o,r.stop())},VariableDeclarator(r){if(n)return;if(t.root.kind==="binding"){if(r.node.id.type!=="Identifier"||r.node.id.name!==t.root.name)return;let d=r.get("init");if(!d.node)return;let g=_e("value",d);if(!g)return;n=g,r.stop();return}if(t.root.kind!=="hook-state")return;let o=t.root,i=r.get("id"),s=r.get("init");if(!i.isArrayPattern()||!s.isCallExpression()||i.node.elements.findIndex(d=>d?.type==="Identifier"&&d.name===o.name)!==0)return;let c=s.node.callee;if((c.type==="Identifier"?c.name:c.type==="MemberExpression"&&c.property.type==="Identifier"?c.property.name:null)!==o.hook)return;let u=o.hook==="useReducer"?1:0,f=r.get(`init.arguments.${u}`);if(!f||Array.isArray(f)||!f.node)return;let m=_e("value",f);m&&(n=m,r.stop())},ExportNamedDeclaration(r){if(n||t.root.kind!=="named-export")return;let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=Ts(o,t.root.name);if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node)return;let a=_e("value",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(n||t.root.kind!=="default-export")return;let o=r.get("declaration"),i=_e("value",o);i&&(n=i,r.stop())}}),n?{ok:!0,match:n}:Me("value",t.root.kind==="named-export"||t.root.kind==="default-export"?"export-not-found":t.root.kind==="expression"?"locator-miss":"binding-not-found","Value root was not found")}function Yh(e,t){let n=Ps(e);for(let o of t){if(n=Ps(n),o.kind==="property"){if(!n.isObjectExpression())return Me("value","unsupported-syntax","Property path requires object expression");let a=n.get("properties");if(a.some(l=>!l.isObjectProperty()))return Me("value","unsupported-syntax","Spread properties are not supported");let c=a.find(l=>cy(l,o.name));if(!c||!c.isObjectProperty())return Me("value","property-not-found",`Property '${o.name}' not found`);n=c.get("value");continue}if(!n.isArrayExpression())return Me("value","unsupported-syntax","Array index path requires array expression");let i=n.get("elements");if(i.some(a=>a.node?.type==="SpreadElement"))return Me("value","unsupported-syntax","Spread array elements are not supported");let s=i[o.index];if(!s?.node)return Me("value","array-index-out-of-range",`Array index ${o.index} is out of range`);n=s}n=Ps(n);let r=_e("value",n);return r?{ok:!0,match:r}:Me("value","locator-miss","Resolved value has no source range")}function Ps(e){let t=e;for(;t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression();)t=t.get("expression");return t}function _e(e,t){let n=t.node;return n.start==null||n.end==null?null:{locatorKind:e,node:n,start:n.start,end:n.end,path:t}}function mn(e,t){return Ut(e.loc,t)}function Ut(e,t){return e?e.start.line===t.startLine&&e.start.column===t.startColumn&&e.end.line===t.endLine&&e.end.column===t.endColumn:!1}function As(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!Oe(n)){let o=cu(n.node.openingElement);o&&(/^[A-Z]/.test(o)?t.unshift(`component:${o}#${ru(n,o)}`):t.unshift(`${o}#${ru(n,o)}`))}}else n.isJSXFragment()&&n.node===r&&t.unshift("fragment");if(!n.parentPath||ey(n.parentPath)&&!ty(n.parentPath))break;n=n.parentPath}return t.join("/")}function ru(e,t){let n=au(e)??e.getFunctionParent();if(!n)return 0;let r=_o.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=0,i=_o.get(n.node)?.get(t);if(!i){let a=_o.get(n.node);a||(a=new Map,_o.set(n.node,a)),i=new WeakMap,a.set(t,i)}let s=n.isJSXElement()||n.isJSXFragment()?gr(n):Zh(n);for(let a of s)if(cu(a.node.openingElement)===t){if(i.set(a.node,o),a.node===e.node)return o;o++}return i.get(e.node)??0}function Zh(e){let t=Oo.get(e.node);if(t)return t;let n=[];return e.traverse({JSXElement(r){r.getFunctionParent()?.node===e.node&&!au(r)&&n.push(r)}}),Oo.set(e.node,n),n}function au(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Oe(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function gr(e){let t=Oo.get(e.node);if(t)return t;let n=[],r=e.get("children");for(let o of r)if(!Array.isArray(o)){if(o.isJSXElement()){if(Oe(o)){n.push(...gr(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...gr(o));continue}o.isJSXExpressionContainer()&&n.push(...Vt(o.get("expression")))}return Oo.set(e.node,n),n}function Vt(e){if(e.isJSXElement())return Oe(e)?gr(e):[e];if(e.isJSXFragment())return gr(e);if(e.isParenthesizedExpression())return Vt(e.get("expression"));if(e.isLogicalExpression()&&Qh(e.node.operator))return Vt(e.get("right"));if(e.isCallExpression()||e.isOptionalCallExpression()){let t=e.get("callee"),n=!Array.isArray(t)&&(t.isMemberExpression()||t.isOptionalMemberExpression())?t.get("property"):null;if(!Array.isArray(t)&&(t.isMemberExpression()||t.isOptionalMemberExpression())&&!t.node.computed&&n!==null&&!Array.isArray(n)&&n.isIdentifier()&&n.node.name==="map"){let r=e.get("arguments").find(o=>!Array.isArray(o)&&(o.isArrowFunctionExpression()||o.isFunctionExpression()));if(r&&!Array.isArray(r)){let o=r.get("body");if(!Array.isArray(o)){if(o.isBlockStatement()){let i=[];for(let s of o.get("body")){if(s.isVariableDeclaration())for(let a of s.get("declarations")){let c=a.get("init");(c.isJSXElement()||c.isJSXFragment())&&i.push(...Vt(c))}if(s.isReturnStatement()){let a=s.get("argument");a.isExpression()&&i.push(...Vt(a));break}}return i}else if(o.node&&o.isExpression())return Vt(o)}}}}return e.isConditionalExpression()?[...Vt(e.get("consequent")),...Vt(e.get("alternate"))]:e.isArrayExpression()?e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Vt(t)):[]}function Qh(e){return e==="&&"||e==="||"||e==="??"}function cu(e){return e.name.type==="JSXIdentifier"?e.name.name:e.name.type==="JSXMemberExpression"?qh(e.name):null}function qh(e){let t=[],n=e;for(;n.type==="JSXMemberExpression";)t.unshift(n.property.name),n=n.object;return t.unshift(n.name),t.join(".")}function hr(e){let t=e;for(;t;){if(t.isFunctionDeclaration())return t.node.id?.name??null;if((t.isArrowFunctionExpression()||t.isFunctionExpression())&&t.parentPath?.isVariableDeclarator()){let n=t.parentPath.node.id;return n.type==="Identifier"?n.name:null}t=t.parentPath}return null}function ey(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function ty(e){let t=e.parentPath;if(!t||!t.isCallExpression()&&!t.isOptionalCallExpression())return!1;let n=t.get("callee"),r=!Array.isArray(n)&&(n.isMemberExpression()||n.isOptionalMemberExpression())?n.get("property"):null;if(Array.isArray(n)||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.computed||r===null||Array.isArray(r)||!r.isIdentifier()||r.node.name!=="map")return!1;let o=t.get("arguments");return Array.isArray(o)?o.some(i=>!Array.isArray(i)&&i.node===e.node):!1}function ny(e){return!(!e.isExpression()||e.parentPath?.isMemberExpression({property:e.node}))}function ou(e){if(e.isIdentifier())return{base:e.node.name,path:[]};if(!e.isMemberExpression())return null;let t=[],n=e.node;for(;n.type==="MemberExpression";){if(n.computed)if(n.property.type==="NumericLiteral")t.unshift({kind:"index",index:n.property.value});else if(n.property.type==="StringLiteral")t.unshift({kind:"property",name:n.property.value});else return null;else if(n.property.type==="Identifier")t.unshift({kind:"property",name:n.property.name});else return null;if(n.object.type==="Identifier")return{base:n.object.name,path:t};if(n.object.type!=="MemberExpression")return null;n=n.object}return null}function iu(e,t){return e.base===t.base&&ry(e.path,t.path??[])}function ry(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],o=t[n];if(r.kind!==o.kind)return!1;if(r.kind==="property"){if(o.kind!=="property"||r.name!==o.name)return!1;continue}if(o.kind!=="index"||r.index!==o.index)return!1}return!0}function oy(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function iy(e){return e.exportKind==="named"?e.name:e.exportKind}function Me(e,t,n,r){return{ok:!1,diagnostic:fn(t,n,e,r)}}function sy(e,t){return hr(e)!==t.component?!1:As(e)===t.structuralPath}function ay(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function Ts(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function cy(e,t){return e.isObjectProperty()?oy(e.node)===t:!1}import*as uu from"@babel/parser";import{arrayExpression as py,booleanLiteral as my,identifier as gy,jsxAttribute as hy,jsxExpressionContainer as yy,jsxIdentifier as xy,nullLiteral as by,numericLiteral as Sy,objectExpression as Ey,objectProperty as vy,stringLiteral as _s}from"@babel/types";import Fs from"@babel/generator";var ly=typeof Fs=="function"?Fs:Fs.default;function uy(e){let t=e.split(`
2
- `),n=[],r=!1;for(let s of t){let a=s.match(/^(\s+)/);if(a){let c=a[1];c.includes(" ")?r=!0:c.length>0&&n.push(c.length)}}if(r&&t.every(a=>{let c=a.match(/^(\s+)/);return!c||c[1].includes(" ")}))return"tab";if(n.length===0)return"2";function o(s,a){return a===0?s:o(a,s%a)}let i=n[0];for(let s=1;s<n.length;s++)i=o(i,n[s]);return i>=4?"4":"2"}function dy(e,t){let n=e.match(/^(\s+)(.*)/s);if(!n)return e;let r=n[1],o=n[2];if(r.length===0)return e;let i=r.includes(" ")?r.split(" ").length-1:Math.max(1,Math.round(r.length/2)),s=Math.min(Math.max(i,0),20);return t==="tab"?" ".repeat(s)+o:t==="4"?" ".repeat(s)+o:" ".repeat(s)+o}function fy(e,t){return e.split(`
3
- `).map(r=>dy(r,t)).join(`
4
- `)}function Mo(e){let{ast:t,source:n}=e;try{let r=uy(n),i=ly(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=fy(i,r)),{ok:!0,source:i}}catch(r){return j(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}function lu(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return`0x${Math.abs(t).toString(16)}`}function yr(e,t,n){return{ok:!0,source:t,operation:{type:n.kind,nodeId:n.target,kind:n.kind,target:n.target,beforeSourceHash:lu(e),afterSourceHash:lu(t),inverse:n.inverse}}}function fe(e,t,n){let r=Mo({ast:e,source:t});return r.ok?yr(t,r.source,n):r}function Ie(e,t){let n=mr(e,t);return n.ok?{ok:!0,ast:n.ast}:{ok:!1,result:{ok:!1,source:e,diagnostic:n.diagnostic}}}function Do(e,t){return Mo({ast:e,source:t})}function ky(e,t,n){let r=ie(e,t);return r.ok?{ok:!0,match:r.match}:{ok:!1,result:{ok:!1,source:n,diagnostic:r.diagnostic}}}function Lo(e,t,n){let r=ky(e,t,n);return r.ok?r.match.path.isJSXElement()?r:{ok:!1,result:j(n,"unsupported-syntax","JSX locator must resolve to JSXElement","jsx-node")}:r}function Gt(e){return typeof e=="string"?_s(e):typeof e=="number"?Sy(e):typeof e=="boolean"?my(e):e===null?by():Array.isArray(e)?py(e.map(t=>Gt(t))):Ey(Object.entries(e).map(([t,n])=>{let r=vy(Os(t),Gt(n));return t==="__proto__"&&(r.computed=!0),r}))}function Iy(e){return typeof e=="string"?_s(e):yy(Gt(e))}function xr(e,t){return hy(xy(e),Iy(t))}function Bo(e,t){try{let r=uu.parse(`const __VD_NODE__ = (${t});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0];return r?.type!=="VariableDeclaration"||r.declarations[0]?.type!=="VariableDeclarator"||!r.declarations[0].init||r.declarations[0].init.type!=="JSXElement"&&r.declarations[0].init.type!=="JSXFragment"?{ok:!1,result:j(e,"unsupported-syntax","Provided JSX source does not resolve to a JSX node","jsx-node")}:{ok:!0,node:r.declarations[0].init}}catch(n){return{ok:!1,result:j(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function Os(e){return/^[$A-Z_][0-9A-Z_$]*$/i.test(e)?gy(e):_s(e)}function $o(e){let{source:t,locator:n,segmentIndex:r,newText:o}=e,i=Ie(t,"jsx-node");if(!i.ok)return i.result;let s=ie(i.ast,n);if(!s.ok)return{ok:!1,source:t,diagnostic:s.diagnostic};let c=Cy(s.match.path)[r];if(!c)return j(t,"locator-miss",`Text segment ${r} not found`,"jsx-node");switch(c.kind){case"jsx-text":c.path.node.value=Ry(c.path.node.value,o);break;case"string-literal":c.path.node.value=o;break;case"template-literal":{let l=c.quasiIndex;c.path.node.quasis[l].value.raw=o,c.path.node.quasis[l].value.cooked=o;break}}return fe(i.ast,t,{kind:"update-text",target:"jsx-node",inverse:"restore-text"})}function Cy(e){let t=[],n=e.isJSXElement()||e.isJSXFragment()?e.get("children"):[];for(let r of n){if(r.isJSXText()){r.node.value.trim().length>0&&t.push({kind:"jsx-text",path:r});continue}if(r.isJSXExpressionContainer()){let o=wy(r.get("expression"));o.length>0&&t.push(...o)}}return t}function Ry(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function wy(e){if(e.isStringLiteral())return[{kind:"string-literal",path:e}];if(e.isTemplateLiteral()){let t=[],n=e.node.quasis;for(let r=0;r<n.length;r++)n[r].value.raw.trim().length>0&&t.push({kind:"template-literal",path:e,quasiIndex:r});if(t.length>0)return t}return e.isCallExpression()?[]:[]}import{nullLiteral as Ms}from"@babel/types";function Bn(e){let{source:t,locator:n}=e,r=Ie(t,"jsx-node");if(!r.ok)return r.result;let o=ie(r.ast,n);return o.ok?(Ny(o.match.path),fe(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function Ny(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Ms());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Ms());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Ms());return}e.remove()}import{cloneNode as Py}from"@babel/types";function jo(e){let t=Ie(e.source,"jsx-node");if(!t.ok)return t.result;let n=ie(t.ast,e.locator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};let r=Bo(e.source,e.node.jsx);return r.ok?(n.match.path.replaceWith(Py(r.node,!0)),fe(t.ast,e.source,{kind:"replace-node",target:"jsx-node",inverse:"replace-node"})):r.result}import{cloneNode as jy}from"@babel/types";import Ds from"@babel/traverse";import*as Z from"@babel/types";function br(e,t,n){return`${e}::${t}::${n}`}var $={NODE_NOT_FOUND:"NODE_NOT_FOUND",HOME_PAGE_LOCKED:"HOME_PAGE_LOCKED",ROUTE_NOT_FOUND:"ROUTE_NOT_FOUND",CAPABILITY_REJECTED:"CAPABILITY_REJECTED",CONSTRAINT_VIOLATED:"CONSTRAINT_VIOLATED",INVALID_PARAMS:"INVALID_PARAMS",PLAN_FAILED:"PLAN_FAILED",TRANSACTION_PREFLIGHT_FAILED:"TRANSACTION_PREFLIGHT_FAILED",ROUTE_REBUILD_FAILED:"ROUTE_REBUILD_FAILED",HISTORY_COMMIT_FAILED:"HISTORY_COMMIT_FAILED",MATERIALIZATION_CONFLICT:"MATERIALIZATION_CONFLICT",MATERIALIZATION_REJECTED:"MATERIALIZATION_REJECTED",MUTATION_ASSERTION_REQUIRED:"MUTATION_ASSERTION_REQUIRED",MUTATION_ASSERTION_INVALID:"MUTATION_ASSERTION_INVALID",VERSION_STALE:"VERSION_STALE",AST_PARSE_ERROR:"AST_PARSE_ERROR",UNSUPPORTED_OPERATION:"UNSUPPORTED_OPERATION",LOCATOR_FAILED:"LOCATOR_FAILED",INVALID_TARGET:"INVALID_TARGET",WRITE_IO_ERROR:"WRITE_IO_ERROR",CONCURRENT_MODIFIED:"CONCURRENT_MODIFIED",ROLLBACK_FAILED:"ROLLBACK_FAILED",RECOVERY_REQUIRED:"RECOVERY_REQUIRED",RECOVERY_PERSIST_FAILED:"RECOVERY_PERSIST_FAILED",MUTATION_SESSION_REQUIRED:"MUTATION_SESSION_REQUIRED",LEASE_ASSERTION_INVALID:"LEASE_ASSERTION_INVALID",LEASE_ASSERTION_EXPIRED:"LEASE_ASSERTION_EXPIRED",LEASE_ASSERTION_SCOPE_MISMATCH:"LEASE_ASSERTION_SCOPE_MISMATCH",CROSS_PAGE_MOVE_UNSUPPORTED:"CROSS_PAGE_MOVE_UNSUPPORTED",INTERNAL_ERROR:"INTERNAL_ERROR"};var Ay=typeof Ds=="function"?Ds:Ds.default;function pt(e,t,n,r){if(!e.ok)return e;let o=ft(n,t);if(!o)return e;let i=Ty(t,o,r);return i?{...e,selectionRef:i}:e}function Ty(e,t,n){let r=Fy(e,t);if(!r)return;let o=n.sourceLocator?du(n.sourceLocator):void 0,i=n.targetParentLocator?du(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??Oy(r)??i?.component??o?.component;if(!(!s||!a))return{key:br(s,a,My(r))}}function du(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function Fy(e,t){let n=yu(e,t);return!n||n.node.type!=="JSXElement"?null:n}function yu(e,t){let n=null;return Ay(e,{JSXElement(r){r.node===t&&(n=r,r.stop())},JSXFragment(r){r.node===t&&(n=r,r.stop())}}),n}function ft(e,t){if(!e)return null;if(Z.isJSXElement(e))return $y(t,e)?fu(e.children,t):e;if(Z.isJSXFragment(e))return fu(e.children,t);if(Z.isJSXExpressionContainer(e)||Z.isParenthesizedExpression(e)||Z.isTSAsExpression(e)||Z.isTSSatisfiesExpression(e)||Z.isTSTypeAssertion(e)||Z.isTSNonNullExpression(e))return ft(e.expression,t);if(Z.isLogicalExpression(e))return ft(e.right,t);if(Z.isConditionalExpression(e))return ft(e.consequent,t)??ft(e.alternate,t);if(Z.isCallExpression(e)||Z.isOptionalCallExpression(e))return xu(e)?_y(e.arguments[0],t):null;if(Z.isArrayExpression(e))for(let n of e.elements){if(!n)continue;let r=ft(n,t);if(r)return r}return null}function fu(e,t){for(let n of e){let r=ft(n,t);if(r)return r}return null}function _y(e,t){return!e||!Z.isArrowFunctionExpression(e)&&!Z.isFunctionExpression(e)?null:Z.isBlockStatement(e.body)?Sr(e.body.body,t):ft(e.body,t)}function Sr(e,t){for(let n of e){if(Z.isReturnStatement(n)){let r=ft(n.argument,t);if(r)return r;continue}if(Z.isBlockStatement(n)){let r=Sr(n.body,t);if(r)return r;continue}if(Z.isIfStatement(n)){let r=pu(n.consequent,t);if(r)return r;let o=n.alternate?pu(n.alternate,t):null;if(o)return o;continue}if(Z.isSwitchStatement(n))for(let r of n.cases){let o=Sr(r.consequent,t);if(o)return o}}return null}function pu(e,t){return Z.isBlockStatement(e)?Sr(e.body,t):Sr([e],t)}function Oy(e){let t=e;for(;t;){if(t.isFunctionDeclaration()||t.isClassDeclaration())return t.node.id?.name??null;if(t.isExportDefaultDeclaration()){let n=t.node.declaration;if(Z.isFunctionDeclaration(n))return n.id?.name??"default"}if(t.isVariableDeclarator()&&Z.isIdentifier(t.node.id)){let n=t.get("init");if(!Array.isArray(n)&&(n.isArrowFunctionExpression()||n.isFunctionExpression()))return t.node.id.name}t=t.parentPath}return null}var mu=new WeakMap,gu=new WeakMap,Ls=new WeakMap;function My(e){let t=mu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=Dy(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return mu.set(e.node,o),o}function Dy(e){let t=bu(e.node.openingElement.name);return!t||Oe(e)?null:/^[A-Z]/.test(t)?`component:${t}#${hu(e,t)}`:`${t}#${hu(e,t)}`}function hu(e,t){let n=Ly(e);if(!n)return 0;let r=Ls.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Ls.get(n.node);o||(o=new Map,Ls.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0;for(let a of gn(n))if(bu(a.node.openingElement.name)===t){if(i.set(a.node,s),a.node===e.node)return s;s+=1}return i.get(e.node)??0}function Ly(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Oe(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function gn(e){let t=gu.get(e.node);if(t)return t;let n=[],r=e.get("children");for(let o of r)if(!Array.isArray(o)){if(o.isJSXElement()){if(Oe(o)){n.push(...gn(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...gn(o));continue}o.isJSXExpressionContainer()&&n.push(...Pt(o.get("expression")))}return gu.set(e.node,n),n}function Pt(e){if(e.isJSXElement())return Oe(e)?gn(e):[e];if(e.isJSXFragment())return gn(e);if(e.isParenthesizedExpression())return Pt(e.get("expression"));if(e.isLogicalExpression())return Pt(e.get("right"));if(e.isConditionalExpression())return[...Pt(e.get("consequent")),...Pt(e.get("alternate"))];if(e.isArrayExpression())return e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Pt(t));if((e.isCallExpression()||e.isOptionalCallExpression())&&xu(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?By(n):[]}return[]}function By(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return Oe(t)?gn(t):[t];if(t.isJSXFragment())return gn(t);if(t.isParenthesizedExpression())return Pt(t.get("expression"));if(t.isLogicalExpression()||t.isConditionalExpression())return Pt(t);if(!t.isBlockStatement())return[];let n=[];for(let r of t.get("body")){if(r.isVariableDeclaration())for(let i of r.get("declarations")){let s=i.get("init");(s.isJSXElement()||s.isJSXFragment())&&n.push(...Pt(s))}if(!r.isReturnStatement())continue;let o=r.get("argument");return o.node&&n.push(...Pt(o)),n}return n}function xu(e){let t=e.callee;return(Z.isMemberExpression(t)||Z.isOptionalMemberExpression(t))&&Z.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function $y(e,t){let n=yu(e,t);return n?Oe(n):!1}function bu(e){return Z.isJSXIdentifier(e)?e.name:Z.isJSXMemberExpression(e)?Su(e):Z.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function Su(e){return`${Z.isJSXIdentifier(e.object)?e.object.name:Su(e.object)}.${e.property.name}`}function Yt(e,t){if(t.parentPath===e&&t.listKey==="children"&&Bs(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!Bs(n))return null;let r=n;for(;r&&r!==e;){if(!Bs(r)||!Oe(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function Bs(e){return e.isJSXElement()||e.isJSXFragment()}function $n(e){let{source:t,locator:n,node:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Ie(t,"jsx-node");if(!a.ok)return a.result;let c=ie(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};if(!c.match.path.isJSXElement()&&!c.match.path.isJSXFragment())return j(t,"unsupported-syntax","insert-child target must be a JSXElement or JSXFragment","jsx-node");let l=c.match.path;if(c.match.path.isJSXElement()){let I=c.match.path.node;if(!I.closingElement||I.openingElement.selfClosing)return j(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=Bo(t,r.jsx);if(!u.ok)return u.result;let f=jy(u.node,!0),m=l.node.children,d={...s,targetParentLocator:n},g=I=>s?pt(I,a.ast,f,d):I;if(o==="append")return m.push(f),g(fe(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return m.unshift(f),g(fe(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(!i)return j(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let h=ie(a.ast,i);if(!h.ok)return{ok:!1,source:t,diagnostic:h.diagnostic};let S=Yt(c.match.path,h.match.path);if(!S)return j(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");l=S;let E=l.node.children,k=E.findIndex(I=>I===h.match.path.node);return k===-1?j(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?k:k+1,0,f),g(fe(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"})))}import*as Eu from"@babel/parser";import{cloneNode as Vy}from"@babel/types";function Vo(e){let{source:t,locator:n,expression:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Ie(t,"jsx-node");if(!a.ok)return a.result;let c=Uy(t,r);if(!c.ok)return c.result;let l=ie(a.ast,n);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return j(t,"unsupported-syntax","insert-jsx-expression-child target must be a JSXElement or JSXFragment","jsx-node");if(l.match.path.isJSXElement()){let E=l.match.path.node;if(!E.closingElement||E.openingElement.selfClosing)return j(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=l.match.path,f=null;if(i){let E=ie(a.ast,i);if(!E.ok)return{ok:!1,source:t,diagnostic:E.diagnostic};let k=Yt(l.match.path,E.match.path);if(!k)return j(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=k,f=E.match.path.node}else if(o==="before"||o==="after")return j(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=Vy(c.node,!0),d=u.node.children,g={...s,targetParentLocator:n},h=E=>s?pt(E,a.ast,m,g):E;if(o==="append")return d.push(m),h(fe(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return d.unshift(m),h(fe(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));let S=d.findIndex(E=>E===f);return S===-1?j(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(d.splice(o==="before"?S:S+1,0,m),h(fe(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"})))}function Uy(e,t){try{let r=Eu.parse(`const __VD_EXPR__ = <>{${t}}</>;`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],o=r?.type==="VariableDeclaration"?r.declarations[0]?.init:null,i=o?.type==="JSXFragment"?o.children[0]:void 0;return i?.type!=="JSXExpressionContainer"?{ok:!1,result:j(e,"unsupported-syntax","Expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:j(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}import{cloneNode as Ky,nullLiteral as $s}from"@babel/types";import*as Zt from"@babel/types";import*as vu from"@babel/types";function Er(e,t){let n=e.parentPath;if(!n?.isConditionalExpression()||e.key!=="consequent"||!vu.isNullLiteral(n.node.alternate))return e;let r=n.parentPath;return!r?.isJSXExpressionContainer()||r.parentPath?.node!==t.node||r.listKey!=="children"?e:r}function jn(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Ie(t,"jsx-node");if(!a.ok)return a.result;let c=ie(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};let l=ie(a.ast,r);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return j(t,"unsupported-syntax","move-node target parent must be a JSXElement or JSXFragment","jsx-node");let u=l.match.path;if(l.match.path.isJSXElement()){let I=l.match.path.node;if(!I.closingElement||I.openingElement.selfClosing)return j(t,"self-closing-element","Cannot move child into self-closing element","jsx-node")}let f=null;if(i){let I=ie(a.ast,i);if(!I.ok)return{ok:!1,source:t,diagnostic:I.diagnostic};let w=I.match.path.isJSXElement()?Er(I.match.path,l.match.path):I.match.path,P=Yt(l.match.path,w);if(!P)return j(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=P,f=w}else if(o==="before"||o==="after")return j(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=f&&typeof f.key=="number"?f.key:-1;if(f&&m===-1)return j(t,"locator-miss","Anchor node does not exist in target parent","jsx-node");let d=c.match.path.isJSXElement()?Er(c.match.path,l.match.path):c.match.path,g=Ky(d.node,!0);if(!Zt.isJSXElement(g)&&!Zt.isJSXExpressionContainer(g)&&!Zt.isJSXFragment(g)&&!Zt.isJSXText(g))return j(t,"unsupported-syntax","move-node source must resolve to a JSX child","jsx-node");let h=d.parentPath?.node===u.node&&typeof d.key=="number"?d.key:-1;if(f&&d.parentPath?.node===f.parentPath?.node&&d.key===f.key)return j(t,"invalid-parent-child-relation","Cannot move a node relative to itself","jsx-node");Jy(d);let S=u.node.children,E={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return S.push(g),pt(Do(a.ast,t),a.ast,g,E);if(o==="prepend")return S.unshift(g),pt(Do(a.ast,t),a.ast,g,E);let k=m-(h!==-1&&h<m?1:0);return S.splice(o==="before"?k:k+1,0,g),pt(Do(a.ast,t),a.ast,g,E)}function Jy(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith($s());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith($s());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith($s());return}e.remove()}import*as ku from"@babel/parser";import{cloneNode as Xy,nullLiteral as js}from"@babel/types";function Uo(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,repeatExpression:s,selectionContext:a}=e,c=Ie(t,"jsx-node");if(!c.ok)return c.result;let l=zy(t,s);if(!l.ok)return l.result;let u=ie(c.ast,n);if(!u.ok)return{ok:!1,source:t,diagnostic:u.diagnostic};let f=ie(c.ast,r);if(!f.ok)return{ok:!1,source:t,diagnostic:f.diagnostic};if(!f.match.path.isJSXElement()&&!f.match.path.isJSXFragment())return j(t,"unsupported-syntax","move-repeat-template-child target parent must be a JSXElement or JSXFragment","jsx-node");if(f.match.path.isJSXElement()){let I=f.match.path.node;if(!I.closingElement||I.openingElement.selfClosing)return j(t,"self-closing-element","Cannot move repeat child into self-closing element","jsx-node")}let m=f.match.path,d=null;if(i){let I=ie(c.ast,i);if(!I.ok)return{ok:!1,source:t,diagnostic:I.diagnostic};let w=Yt(f.match.path,I.match.path);if(!w)return j(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");m=w,d=I.match.path.node}else if(o==="before"||o==="after")return j(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");if(!u.match.path.isJSXElement())return j(t,"unsupported-syntax","move-repeat-template-child source must be a JSXElement","jsx-node");let g=m.node,h=Xy(l.node,!0);Hy(u.match.path);let S={...a,sourceLocator:n,targetParentLocator:r},E=g.children;if(o==="append")return E.push(h),pt(fe(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S);if(o==="prepend")return E.unshift(h),pt(fe(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S);let k=E.findIndex(I=>I===d);return k===-1?j(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?k:k+1,0,h),pt(fe(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S))}function zy(e,t){try{let r=ku.parse(`const __VD_EXPR__ = <>{${t}}</>;`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],o=r?.type==="VariableDeclaration"?r.declarations[0]?.init:null,i=o?.type==="JSXFragment"?o.children[0]:void 0;return i?.type!=="JSXExpressionContainer"?{ok:!1,result:j(e,"unsupported-syntax","Repeat expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:j(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function Hy(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(js());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(js());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(js());return}e.remove()}import{SiteEditSetPropsParamsSchema as Wy,classifySiteEditPropertyName as Gy}from"@vcp-dev/contracts";import*as Vn from"@babel/types";function Ko(e){let t=Wy.safeParse({kind:"set-props",scope:"selection",changes:e.changes});if(!t.success)return j(e.source,"unsupported-syntax","Invalid typed JSX property changes","jsx-node",{issues:t.error.issues});let n=Ie(e.source,"jsx-node");if(!n.ok)return n.result;let r=Lo(n.ast,e.locator,e.source);if(!r.ok)return r.result;for(let a of t.data.changes){let c=Gy(a.name);if(c.owner!=="generic")return j(e.source,"unsupported-syntax",c.diagnostic?.message??`Property '${a.name}' is not owned by the generic JSX primitive`,"jsx-node")}let o=r.match.path.node.openingElement,i=o.attributes.filter(Vn.isJSXAttribute),s=new Map;for(let a of i){let c=Yy(a);if(!c)continue;let l=s.get(c)??[];l.push(a),s.set(c,l)}for(let a of t.data.changes)if((s.get(a.name)??[]).length>1)return j(e.source,"unsupported-syntax",`JSX attribute '${a.name}' has multiple sources`,"jsx-node");for(let a of t.data.changes){let c=s.get(a.name)?.[0];if(a.operation==="remove"){c&&(o.attributes=o.attributes.filter(u=>u!==c));continue}let l=xr(a.name,a.value).value;c?c.value=l:o.attributes.push(xr(a.name,a.value))}return fe(n.ast,e.source,{kind:"set-props",target:"jsx-node",inverse:"set-props"})}function Yy(e){return Vn.isJSXIdentifier(e.name)?e.name.name:Vn.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import*as $e from"@babel/types";import{classifySiteEditPropertyName as Iu}from"@vcp-dev/contracts";function Jo(e){let t=Iu(e.name),n=Iu(e.property);if(t.owner!=="generic"||n.owner!=="generic")return j(e.source,"unsupported-syntax","Property binding is only available for generic properties","jsx-node");if(!Cu(e.object))return j(e.source,"unsupported-syntax","Property binding object must be a single identifier","jsx-node");if(e.property.length===0)return j(e.source,"unsupported-syntax","Property binding requires a non-empty property name","jsx-node");let r=Ie(e.source,"jsx-node");if(!r.ok)return r.result;let o=Lo(r.ast,e.locator,e.source);if(!o.ok)return o.result;let i=o.match.path.node.openingElement,s=i.attributes.filter(l=>$e.isJSXAttribute(l)&&Qy(l)===e.name);if(s.length>1)return j(e.source,"unsupported-syntax",`JSX attribute '${e.name}' has multiple sources`,"jsx-node");let a=Zy(e.object,e.property),c=s[0];if(c)c.value=$e.jsxExpressionContainer(a);else{let l=xr(e.name,"");l.value=$e.jsxExpressionContainer(a),i.attributes.push(l)}return fe(r.ast,e.source,{kind:"set-property-binding",target:"jsx-node",inverse:"restore-property-binding"})}function Zy(e,t){return Cu(t)?$e.memberExpression($e.identifier(e),$e.identifier(t)):$e.memberExpression($e.identifier(e),$e.stringLiteral(t),!0)}function Cu(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)}function Qy(e){return $e.isJSXIdentifier(e.name)?e.name.name:$e.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import{getBindingIdentifiers as ex,identifier as vr,importDeclaration as tx,importDefaultSpecifier as nx,importNamespaceSpecifier as rx,importSpecifier as ox,isImportDefaultSpecifier as Ru,isImportNamespaceSpecifier as wu,isImportSpecifier as Nu,stringLiteral as ix}from"@babel/types";function Un(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(S=>!mx(S));if(o!==-1){let S=r[o],E=S&&typeof S=="object"&&"kind"in S?S.kind:void 0;return j(t,"unsupported-syntax",`Unsupported import spec kind: ${String(E)}`)}let i=dx(r);if(!i.ok)return j(t,"unsupported-syntax",i.message);let s=Ie(t);if(!s.ok)return s.result;let{ast:a}=s,c=a.program,l=c.body.filter(S=>S.type==="ImportDeclaration"&&S.source.value===n),u=new Set(l.flatMap(S=>S.specifiers.flatMap(E=>{let k=gx(S,E);return k?[k]:[]}))),f=i.imports.filter(S=>!u.has(Ou(S)));if(f.length===0)return yr(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let m=fx(c.body),d=f.find(S=>m.has(Vs(S)));if(d)return j(t,"unsupported-syntax",`Import local binding already exists: ${Vs(d)}`);let g=ux(f);if(g.reduce((S,E)=>S+E.length,0)!==f.length)return j(t,"unsupported-syntax","Unsupported import specifier grouping");for(let S of g){if(!Fu(Au(S)))return j(t,"unsupported-syntax","Unsupported import specifier combination");let E=l.find(k=>sx(k,S));if(E)ax(E,S);else{let k=tx(Pu(S),ix(n));px(c.body,k),l.push(k)}}return fe(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function sx(e,t){return e.importKind==="type"?!1:Fu(lx(cx(e),Au(t)))}function ax(e,t){let n=!1,r=new Set(e.specifiers.map(o=>Us(o)));for(let o of Pu(t)){let i=Us(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return _u(e.specifiers),{changed:n}}function Pu(e){let t=e.map(n=>{switch(n.kind){case"named":return ox(n.local?vr(n.local):vr(n.imported),vr(n.imported));case"default":return nx(vr(n.local));case"namespace":return rx(vr(n.local));default:return n}});return _u(t),t}function Au(e){let t=Tu();for(let n of e)n.kind==="default"?t.defaultLocals.add(n.local):n.kind==="named"?t.hasNamed=!0:t.namespaceLocals.add(n.local);return t}function cx(e){let t=Tu();for(let n of e.specifiers)Ru(n)?t.defaultLocals.add(n.local.name):wu(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function Tu(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function lx(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function Fu(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function _u(e){let t=[...e.filter(n=>Ru(n)),...e.filter(n=>wu(n)),...e.filter(n=>Nu(n))];e.splice(0,e.length,...t)}function ux(e){let t=e.filter(i=>i.kind==="default"),n=e.filter(i=>i.kind==="namespace"),r=e.filter(i=>i.kind==="named"),o=[];if(n.length>0){let i=Math.max(t.length,n.length);for(let s=0;s<i;s+=1){let a=[],c=t[s],l=n[s];c&&a.push(c),l&&a.push(l),o.push(a)}return r.length>0&&o.push(r),o}if(t.length>0){o.push([t[0],...r]);for(let i of t.slice(1))o.push([i])}else r.length>0&&o.push(r);return o}function dx(e){let t=new Map,n=new Map;for(let r of e){let o=Ou(r);if(t.has(o))continue;let i=Vs(r),s=n.get(i);if(s&&s!==o)return{ok:!1,message:`Import local binding is requested more than once: ${i}`};t.set(o,r),n.set(i,o)}return{ok:!0,imports:[...t.values()]}}function fx(e){let t=new Set;for(let n of e){if(n.type==="ImportDeclaration"){for(let o of n.specifiers)t.add(o.local.name);continue}let r=(n.type==="ExportNamedDeclaration"||n.type==="ExportDefaultDeclaration")&&n.declaration?n.declaration:n;if(r.type==="VariableDeclaration")for(let o of r.declarations)for(let i of Object.keys(ex(o.id)))t.add(i);else(r.type==="FunctionDeclaration"||r.type==="ClassDeclaration"||r.type==="TSEnumDeclaration")&&r.id&&t.add(r.id.name)}return t}function px(e,t){let n=[...e].reverse().findIndex(r=>r.type==="ImportDeclaration");if(n===-1)e.unshift(t);else{let r=e.length-n;e.splice(r,0,t)}}function mx(e){if(!e||typeof e!="object"||!("kind"in e))return!1;let t=e.kind;return t==="named"?typeof e.imported=="string"&&(e.local===void 0||typeof e.local=="string"):t==="default"||t==="namespace"?typeof e.local=="string":!1}function Ou(e){switch(e.kind){case"default":return`default:${e.local}`;case"namespace":return`namespace:${e.local}`;case"named":return`named:${e.imported}:${e.local??e.imported}`;default:return e}}function Vs(e){return e.kind==="named"?e.local??e.imported:e.local}function gx(e,t){return e.importKind==="type"||Nu(t)&&t.importKind==="type"?null:Us(t)}function Us(e){if(e.type==="ImportDefaultSpecifier")return`default:${e.local.name}`;if(e.type==="ImportNamespaceSpecifier")return`namespace:${e.local.name}`;let t=e.imported.type==="Identifier"?e.imported.name:e.imported.value,n=e.local.name;return`named:${t}:${n}`}function Kn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(u=>!yx(u));if(o!==-1){let u=r[o],f=u&&typeof u=="object"&&"kind"in u?u.kind:void 0;return j(t,"unsupported-syntax",`Unsupported remove import spec kind: ${String(f)}`)}let i=Ie(t);if(!i.ok)return i.result;let{ast:s}=i,a=s.program,c=a.body.findIndex(u=>u.type==="ImportDeclaration"&&u.source.value===n);if(c===-1)return yr(t,t,{kind:"remove-import",target:"import",inverse:"add-import"});let l=a.body[c];return r.length===0?(a.body.splice(c,1),fe(s,t,{kind:"remove-import",target:"import",inverse:"add-import"})):(l.specifiers=l.specifiers.filter(u=>!r.some(f=>hx(u,f))),l.specifiers.length===0&&a.body.splice(c,1),fe(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function hx(e,t){return t.kind==="default"?e.type==="ImportDefaultSpecifier":t.kind==="namespace"?e.type==="ImportNamespaceSpecifier":e.type!=="ImportSpecifier"?!1:(e.imported.type==="Identifier"?e.imported.name:e.imported.value)===t.imported}function yx(e){if(!e||typeof e!="object"||!("kind"in e))return!1;let t=e.kind;return t==="named"?typeof e.imported=="string":t==="default"||t==="namespace"}function kr(e){let{source:t,locator:n,next:r}=e,o=Wo(t,n);return o.ok?(o.path.replaceWith(Gt(r)),fe(o.ast,t,{kind:"update-value",target:"value",inverse:"restore-value"})):o.result}function Xo(e){let{source:t,locator:n,index:r,value:o}=e,i=Wo(t,n);return i.ok?i.path.isArrayExpression()?i.path.node.elements.some(s=>s?.type==="SpreadElement")?j(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>i.path.node.elements.length?j(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(i.path.node.elements.splice(r,0,Gt(o)),fe(i.ast,t,{kind:"insert-array-element",target:"value",inverse:"remove-array-element"})):j(t,"unsupported-syntax","Array operations require array expression target","value"):i.result}function zo(e){let{source:t,locator:n,index:r}=e,o=Wo(t,n);return o.ok?o.path.isArrayExpression()?o.path.node.elements.some(i=>i?.type==="SpreadElement")?j(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>=o.path.node.elements.length?j(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(o.path.node.elements.splice(r,1),fe(o.ast,t,{kind:"remove-array-element",target:"value",inverse:"insert-array-element"})):j(t,"unsupported-syntax","Array operations require array expression target","value"):o.result}function Ho(e){let{source:t,locator:n,fromIndex:r,toIndex:o}=e,i=Wo(t,n);if(!i.ok)return i.result;if(!i.path.isArrayExpression())return j(t,"unsupported-syntax","Array operations require array expression target","value");if(i.path.node.elements.some(c=>c?.type==="SpreadElement"))return j(t,"unsupported-syntax","Spread array elements are not supported","value");if(r<0||r>=i.path.node.elements.length||o<0||o>i.path.node.elements.length)return j(t,"array-index-out-of-range","Array move indices are out of range","value");let[s]=i.path.node.elements.splice(r,1),a=Math.min(o,i.path.node.elements.length);return i.path.node.elements.splice(a,0,s),fe(i.ast,t,{kind:"move-array-element",target:"value",inverse:"move-array-element-back"})}function Wo(e,t){let n=Ie(e,"value");if(!n.ok)return{ok:!1,result:n.result};let r=ie(n.ast,t);return r.ok?{ok:!0,ast:n.ast,path:r.match.path}:{ok:!1,result:{ok:!1,source:e,diagnostic:r.diagnostic}}}import*as Ve from"@babel/types";function Go(e){let t=Ie(e.source,"value");if(!t.ok)return t.result;let n=ie(t.ast,e.objectLocator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};if(!n.match.path.isObjectExpression())return j(e.source,"unsupported-syntax","Object property upsert requires an ObjectExpression parent","value");let r=n.match.path.node;if(r.properties.some(a=>Ve.isSpreadElement(a)||Ve.isObjectProperty(a)&&a.computed))return j(e.source,"unsupported-syntax","Object property upsert does not support spreads or computed keys","value");let o=r.properties.filter(a=>Ve.isObjectProperty(a)&&xx(a.key)===e.name);if(o.length>1)return j(e.source,"unsupported-syntax",`Object property '${e.name}' has multiple sources`,"value");let i=e.value.kind==="undefined"?Ve.unaryExpression("void",Ve.numericLiteral(0)):Gt(e.value.value),s=o[0];if(s)s.value=i,s.shorthand=!1;else{let a=Ve.objectProperty(Os(e.name),i);e.name==="__proto__"&&(a.computed=!0),r.properties.push(a)}return fe(t.ast,e.source,{kind:"upsert-object-property",target:"value",inverse:"restore-object-property"})}function xx(e){return Ve.isIdentifier(e)?e.name:Ve.isStringLiteral(e)?e.value:Ve.isNumericLiteral(e)?String(e.value):null}import{isSiteEditRuntimeContainerTag as bx,isSiteEditRuntimeVoidElementTag as Sx}from"@vcp-dev/contracts/site-edit-runtime-capability";function Jn(e){if(!e.composition)throw new Error("Composition unavailable for render source graph.");return e.composition}function Ex(e,t,n){let r=Jn(n),o=t.nodes.get(e),i=n.elements.get(e);if(!o||!i)return{composition:r,key:e,canUpdateText:!1,canInsertChild:!1,canMove:!1,canRemove:!1,constraints:[{kind:"opaque-region",message:"Node not found in graph"}]};let s=o.constraints.map(w=>({kind:w.kind,message:w.reason})),a=i.isOpaque,l=o.parentKey===null&&i.componentName==="Page",u=i.tag.toLowerCase(),f=i.tag!==u,m=!f&&Sx(u),d=f||bx(u),g=f&&i.childKeys.length>0&&!i.isPublicUiComponent,h=i.textSegments.length>0&&i.textSegments.some(w=>w.editable);m&&!s.some(w=>w.kind==="void-element")&&s.push({kind:"void-element",message:`Element '${i.tag}' is void: children cannot be inserted`}),!m&&!d&&!s.some(w=>w.kind==="void-element")&&s.push({kind:"void-element",message:`Element '${i.tag}' cannot contain structured children`});let S=h&&(!a||i.importedFrom==="next/link"),E=!i.isPublicUiComponent&&!m&&d&&(!a||g);return{composition:r,key:e,canUpdateText:S,canInsertChild:E,canMove:!l,canRemove:!l,constraints:s}}function Mu(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,Ex(r,e,t));return n}function Ks(e){let t=e.route.graph.elements.get(e.key);if(!t)return{key:e.key,composition:e.route.composition,filePath:"",componentName:"",sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:be(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Key not found: ${e.key}`}]};let n=vx(e.route.source,t);if(!n)return{key:e.key,composition:e.route.composition,filePath:t.sourceFile,componentName:t.componentName,sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:be(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Unable to locate JSX element for key ${t.identity.key}`}]};let r=n.openingElement,o=r.attributes.find(c=>c.type==="JSXAttribute"&&c.name.type==="JSXIdentifier"&&c.name.name==="className"),i={key:e.key,composition:e.route.composition,filePath:t.sourceFile,componentName:t.componentName,openingElementRange:Lu(r),version:{documentVersion:e.route.graph.version,contentHash:be(e.route.source)}};if(!o)return{...i,sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,diagnostics:[{code:"missing-class-name",message:"No className attribute is present on this element."}]};let s=o.value,a=s?.type==="StringLiteral"?"stringLiteral":"expression";return{...i,sourceKind:a,attrRaw:Du(e.route.source,o),valueRaw:s?Du(e.route.source,s):null,attrRange:Lu(o),diagnostics:[]}}function Bu(e){let{source:t,oldAttrRange:n,openingElementRange:r,newAttrRaw:o}=e;if(n){let a=n.start>0&&/\s/.test(t[n.start-1]??"")?n.start-1:n.start,c=o?`${a<n.start?" ":""}${o}`:"";return t.slice(0,a)+c+t.slice(n.end)}if(!o)return t;let i=r.end,s=t.slice(Math.max(0,i-2),i)==="/>"?i-2:i-1;return t.slice(0,s)+` ${o}`+t.slice(s)}function vx(e,t){let n=Rt({source:e,profile:pn({filePath:t.sourceFile,source:e})});if(!n.ok)return null;let r=ie(n.ast,{kind:"jsx-node",strategy:"structural-path",file:t.identity.file,component:t.identity.component,structuralPath:t.identity.structuralPath,expectedRange:kx(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function $u(e){let t=Rt({source:`const __v = <div ${e} />;`,profile:"tsx-module"});if(!t.ok)return!1;let n=t.ast.program.body[0],o=(n?.type==="VariableDeclaration"?n.declarations[0]:null)?.init;if(o?.type!=="JSXElement")return!1;let i=o.openingElement.attributes;return i.length===1&&i[0]?.type==="JSXAttribute"&&i[0].name.type==="JSXIdentifier"&&i[0].name.name==="className"}function Du(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function Lu(e){if(e.start==null||e.end==null)throw new Error("AST node does not include offsets.");return{start:e.start,end:e.end}}function kx(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function ju(){let e=new Set;return{emit(t){for(let n of Array.from(e))try{n(t)}catch{}},subscribe(t){return e.add(t),()=>{e.delete(t)}}}}import{randomUUID as Ix}from"node:crypto";import Yo from"node:fs/promises";import Js from"node:path";import{setTimeout as Cx}from"node:timers/promises";var Rx={async mkdir(e,t){await Yo.mkdir(e,t)},async writeFile(e,t,n){await Yo.writeFile(e,t,n)},async rename(e,t){await Yo.rename(e,t)},async rm(e,t){await Yo.rm(e,t)}},wx=new Set(["EACCES","EBUSY","EPERM"]),Nx=[10,20,40,80,160];async function Px(e,t,n){for(let r of Nx)try{await e.rename(t,n);return}catch(o){if(!Ax(o))throw o;await Cx(r)}await e.rename(t,n)}function Ax(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&wx.has(e.code)}async function Zo(e,t,n=Rx){let r=Js.dirname(e),o=Js.basename(e),i=Js.join(r,`.${o}.${process.pid}.${Ix()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await Px(n,i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import Ws from"@babel/traverse";import*as b from"@babel/types";import*as ce from"@babel/types";function At(e,t={}){if(ce.isTSAsExpression(e)||ce.isTSSatisfiesExpression(e)||ce.isTSNonNullExpression(e)||ce.isTypeCastExpression(e)||ce.isParenthesizedExpression(e))return At(e.expression,t);if(ce.isStringLiteral(e))return{status:"resolved",value:e.value};if(ce.isNumericLiteral(e))return Number.isFinite(e.value)?{status:"resolved",value:e.value}:{status:"unresolved"};if(ce.isBooleanLiteral(e))return{status:"resolved",value:e.value};if(ce.isNullLiteral(e))return{status:"resolved",value:null};if(ce.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?{status:"resolved",value:e.quasis[0].value.cooked??e.quasis[0].value.raw}:{status:"unresolved"};if(ce.isIdentifier(e))return e.name==="undefined"&&!t.resolveIdentifier?{status:"undefined"}:t.resolveIdentifier?.(e.name)??{status:"unresolved"};if(ce.isUnaryExpression(e)&&e.operator==="void"&&ce.isNumericLiteral(e.argument)&&e.argument.value===0)return{status:"undefined"};if(ce.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||ce.isSpreadElement(r))return{status:"unresolved"};let o=At(r,t);if(o.status!=="resolved")return{status:"unresolved"};n.push(o.value)}return{status:"resolved",value:n}}if(ce.isObjectExpression(e)){let n=Object.create(null);for(let r of e.properties){if(!ce.isObjectProperty(r)||r.computed||!ce.isExpression(r.value))return{status:"unresolved"};let o=Tx(r.key);if(o===null)return{status:"unresolved"};let i=At(r.value,t);if(i.status!=="resolved")return{status:"unresolved"};Object.defineProperty(n,o,{configurable:!0,enumerable:!0,value:i.value,writable:!0})}return{status:"resolved",value:n}}return ce.isMemberExpression(e)||ce.isOptionalMemberExpression(e)?t.resolveMember?.(e)??{status:"unresolved"}:{status:"unresolved"}}function Tx(e){return ce.isIdentifier(e)?e.name:ce.isStringLiteral(e)?e.value:ce.isNumericLiteral(e)?String(e.value):null}import{createHash as Lx}from"node:crypto";import*as Fx from"@babel/parser";import*as Xn from"@babel/types";import*as Qt from"node:path";var Xs=[".tsx",".ts",".jsx",".js"],_x=Xs.map(e=>`/index${e}`),Ox=new Set(["json","css","scss","sass","less","svg","png","jpg","jpeg","gif","webp","avif","ico","bmp","woff","woff2","ttf","otf","eot","mp4","webm","mp3","wav","ogg","pdf","txt","md","csv","xml","yaml","yml"]);function Vu(e){let t=e.replace(/[?#].*$/,""),n=/\.([a-z0-9]+)$/i.exec(t);return n!==null&&Ox.has(n[1].toLowerCase())}function Uu(e){let t=[];for(let n of e.program.body)Xn.isImportDeclaration(n)&&typeof n.source.value=="string"&&Tt(n.source.value)&&t.push(n.source.value),Xn.isExportNamedDeclaration(n)&&n.source&&typeof n.source.value=="string"&&Tt(n.source.value)&&t.push(n.source.value),Xn.isExportAllDeclaration(n)&&typeof n.source.value=="string"&&Tt(n.source.value)&&t.push(n.source.value);return zs(e.program,t),t}function zs(e,t){if(!e||typeof e!="object")return;let n=e;if(n.type==="CallExpression"&&n.callee?.type==="Import"){let r=n.arguments?.[0];r?.type==="StringLiteral"&&typeof r.value=="string"&&Tt(r.value)&&t.push(r.value)}for(let r of Object.values(n))if(Array.isArray(r))for(let o of r)zs(o,t);else r&&typeof r=="object"&&zs(r,t)}function Tt(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("@/")}function Ir(e,t){if(t.startsWith("@/"))return t.slice(2).replace(/\\/g,"/");let n=Qt.dirname(e);return Qt.join(n,t).replace(/\\/g,"/")}async function Mx(e,t){if(Xs.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of Xs){let r=`${e}${n}`;if(await t(r))return r}for(let n of _x){let r=`${e}${n}`;if(await t(r))return r}return null}async function hn(e,t,n){let r=await Qo(e,t,n);return r.ok?r.path:null}async function Qo(e,t,n){let r=Ir(e,t);try{if(!Dx(e,t,r))return{ok:!1,diagnostic:{path:r,code:"import-not-found",message:`Local import not found: ${t}`,details:{fromFile:e,specifier:t}}};let o=await Mx(r,n);return o?{ok:!0,path:o}:{ok:!1,diagnostic:{path:r,code:"import-not-found",message:`Local import not found: ${t}`,details:{fromFile:e,specifier:t}}}}catch(o){return{ok:!1,diagnostic:{path:r,code:"import-resolve-failed",message:`Failed to resolve local import: ${t}`,details:{fromFile:e,specifier:t,reason:o instanceof Error?o.message:String(o)}}}}}function Dx(e,t,n){if(!Tt(t)||t.includes("\0")||t.includes("\\")||Qt.posix.isAbsolute(n))return!1;let r=Qt.posix.normalize(n);if(r===".."||r.startsWith("../"))return!1;if(t.startsWith("@/")){let o=t.slice(2);return o.length>0&&!o.split("/").some(i=>i==="..")}return!Qt.posix.isAbsolute(e)}var Cr=(e,t)=>{let n=Rt({source:t,profile:pn({filePath:e,source:t})});return n.ok?{ok:!0,module:{file:e,source:t,sourceHash:`sha256:${Lx("sha256").update(t).digest("hex")}`,ast:n.ast,imports:Uu(n.ast).map(r=>({specifier:r}))}}:{ok:!1,diagnostic:{path:e,code:"parse-failed",message:n.diagnostic.message}}};var qo="components/ui";function yn(e){if(!e)return!1;let t=Hs(e);return t===qo||t.startsWith(`${qo}/`)||t.includes(`/${qo}/`)||t.endsWith(`/${qo}`)}function Rr(e,t){return e?e.startsWith("@/")||e.startsWith("~/")?yn(e.slice(2)):e.startsWith("./")||e.startsWith("../")?yn(Hs(`${Bx(t)}/${e}`)):yn(e):!1}function Hs(e){let n=(e.split("?")[0]??e).replace(/\\/g,"/").replace(/^\.\//,""),r=[];for(let o of n.split("/"))if(!(!o||o===".")){if(o===".."){r.pop();continue}r.push(o)}return r.join("/")}function Bx(e){let t=Hs(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}var $x=typeof Ws=="function"?Ws:Ws.default;function Xe(e){return{startLine:e.loc?.start.line??0,startColumn:e.loc?.start.column??0,endLine:e.loc?.end.line??0,endColumn:e.loc?.end.column??0}}function jx(e){return/^[A-Z]/.test(e)}function qs(e){let t=e.openingElement;return b.isJSXIdentifier(t.name)?t.name.name==="Fragment":b.isJSXMemberExpression(t.name)?t.name.property.name==="Fragment":!1}function Hn(e){return b.isJSXFragment(e)}function Ju(e){return b.isJSXIdentifier(e.name)?e.name.name:b.isJSXMemberExpression(e.name)?Xu(e.name):b.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function Xu(e){return b.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:b.isJSXMemberExpression(e.object)?`${Xu(e.object)}.${e.property.name}`:e.property.name}function Vx(e){return e.split(".")[0]??e}function Ux(e){let t=e;for(;t;){let n=t.node;if(b.isFunctionDeclaration(n)&&n.id||b.isVariableDeclarator(n)&&b.isIdentifier(n.id))return n.id.name;if(b.isExportDefaultDeclaration(n)){let r=n.declaration;if(b.isFunctionDeclaration(r)&&r.id)return r.id.name;if(b.isFunctionDeclaration(r)&&!r.id)return"default"}t=t.parentPath}return null}function Kx(){let e=new Map;return{getOrdinal(t,n){let r=t??"__root__";e.has(r)||e.set(r,new Map);let o=e.get(r),i=o.get(n)??0;return o.set(n,i+1),i}}}function Jx(e){let t=new Map;for(let n of e.program.body){if(!b.isImportDeclaration(n))continue;let r=n.source.value;for(let o of n.specifiers)if(b.isImportDefaultSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"default"});else if(b.isImportNamespaceSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"*"});else if(b.isImportSpecifier(o)){let i=b.isIdentifier(o.imported)?o.imported.name:o.imported.value;t.set(o.local.name,{specifier:r,exportName:i})}}return t}function Kt(e,t=[]){if(b.isIdentifier(e))return t.push(e.name),t;if(b.isObjectPattern(e)){for(let n of e.properties)b.isObjectProperty(n)?Kt(n.value,t):b.isRestElement(n)&&Kt(n.argument,t);return t}if(b.isArrayPattern(e)){for(let n of e.elements)n&&(b.isRestElement(n)?Kt(n.argument,t):Kt(n,t));return t}return b.isAssignmentPattern(e)?(Kt(e.left,t),t):(b.isRestElement(e)&&Kt(e.argument,t),t)}function bt(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function wr(e,t){for(let n=t.length-1;n>=0;n-=1){let r=t[n].get(e);if(r)return r.resolved?{kind:"resolved",value:r.value}:{kind:"unresolved"}}return{kind:"unresolved"}}function Xx(e,t,n){e.set(t,{resolved:!0,value:n})}function ea(e,t){e.set(t,{resolved:!1})}function zu(e,t){let n=e;for(let r of t){if(r.kind==="property"){if(n==null||Array.isArray(n)||typeof n!="object"||!(r.name in n))return{kind:"known-empty"};n=n[r.name];continue}if(!Array.isArray(n)||r.index<0||r.index>=n.length)return{kind:"known-empty"};n=n[r.index]}return{kind:"resolved",value:n}}function Le(e,t,n){if(b.isTSAsExpression(e)||b.isTSSatisfiesExpression(e)||b.isTSNonNullExpression(e)||b.isTypeCastExpression(e)||b.isParenthesizedExpression(e))return Le(e.expression,t,n);if(b.isLogicalExpression(e))return ei([Le(e.left,t,n),Le(e.right,t,n)]);if(b.isBinaryExpression(e))return ei([b.isExpression(e.left)?Le(e.left,t,n):null,b.isExpression(e.right)?Le(e.right,t,n):null]);if(b.isConditionalExpression(e))return ei([Le(e.consequent,t,n),Le(e.alternate,t,n)]);if(b.isTemplateLiteral(e))return ei(e.expressions.filter(b.isExpression).map(i=>Le(i,t,n)));if(b.isIdentifier(e))return{kind:"identifier",expression:e.name,base:e.name,path:[]};if(!b.isMemberExpression(e)&&!b.isOptionalMemberExpression(e))return null;let r=[],o=e;for(;b.isMemberExpression(o)||b.isOptionalMemberExpression(o);){if(o.computed)if(b.isNumericLiteral(o.property))r.unshift({kind:"index",index:o.property.value});else if(b.isStringLiteral(o.property))r.unshift({kind:"property",name:o.property.value});else if(n&&b.isExpression(o.property)){let i=qt(o.property,n);if(typeof i=="string")r.unshift({kind:"property",name:i});else if(Number.isInteger(i))r.unshift({kind:"index",index:i});else return null}else return null;else{if(!b.isIdentifier(o.property))return null;r.unshift({kind:"property",name:o.property.name})}o=o.object}return b.isIdentifier(o)?{kind:r.some(i=>i.kind==="index")?"index-expression":"member-expression",expression:bt(e,t),base:o.name,path:r}:null}function ei(e){let t=e.filter(r=>r!==null);if(t.length===0)return null;let n=t[0];return t.some(r=>r.base!==n.base||JSON.stringify(r.path)!==JSON.stringify(n.path))?null:{...n}}function qt(e,t){if(b.isStringLiteral(e)||b.isNumericLiteral(e)||b.isBooleanLiteral(e))return e.value;if(b.isNullLiteral(e))return null;if(b.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(b.isIdentifier(e)){let n=wr(e.name,t.valueScopes);return n.kind==="resolved"?n.value:void 0}if(b.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||b.isSpreadElement(r))return;let o=qt(r,t);if(o===void 0)return;n.push(o)}return n}if(b.isObjectExpression(e)){let n={};for(let r of e.properties){if(!b.isObjectProperty(r)||r.computed||!b.isExpression(r.value))return;let o=null;if(b.isIdentifier(r.key)?o=r.key.name:b.isStringLiteral(r.key)&&(o=r.key.value),!o)return;let i;if(r.shorthand){if(!b.isIdentifier(r.value))return;let s=wr(r.value.name,t.valueScopes);if(s.kind!=="resolved")return;i=s.value}else i=qt(r.value,t);if(i===void 0)return;n[o]=i}return n}if(b.isMemberExpression(e)){let n=Le(e,"",t);if(!n)return;let r=wr(n.base,t.valueScopes);if(r.kind!=="resolved")return;let o=zu(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(b.isCallExpression(e))return Wu(e,t)??void 0}function Hu(e,t,n){let r=Le(e,n,t);if(!r)return b.isMemberExpression(e)||b.isBinaryExpression(e)||b.isLogicalExpression(e)||b.isConditionalExpression(e)||b.isCallExpression(e)?{value:bt(e,n),source:null}:null;let o=wr(r.base,t.valueScopes),i=r.kind==="identifier"?o:o.kind==="resolved"?zu(o.value,r.path):o;return i.kind==="resolved"&&(typeof i.value=="string"||typeof i.value=="number")?{value:String(i.value),source:r}:i.kind==="resolved"&&(typeof i.value=="boolean"||i.value===null)||i.kind==="known-empty"?null:{value:r.expression,source:r}}function Gs(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:Kx(),parentStack:[],valueScopes:i,importMap:o}}function Zs(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of Kt(o.id))ea(n,s);if(!b.isIdentifier(o.id)||!o.init||!b.isExpression(o.init))continue;let i=qt(o.init,t);i!==void 0&&Xx(n,o.id.name,i)}}function zx(e){let t=[];for(let n of e){if(b.isVariableDeclaration(n)){t.push(n);continue}b.isExportNamedDeclaration(n)&&n.declaration&&b.isVariableDeclaration(n.declaration)&&t.push(n.declaration)}return t}function Hx(e,t,n){let r=[],o=0;for(let i of e)if(b.isJSXText(i)){let s=i.value.trim();s&&r.push({index:o++,value:s,sourceRange:Xe(i),editable:!0,source:null})}else if(b.isJSXExpressionContainer(i)&&b.isStringLiteral(i.expression))r.push({index:o++,value:i.expression.value,sourceRange:Xe(i),editable:!0,source:null});else if(b.isJSXExpressionContainer(i)&&b.isTemplateLiteral(i.expression)){let s=i.expression;s.expressions.length===0&&s.quasis.length===1?r.push({index:o++,value:s.quasis[0].value.cooked??s.quasis[0].value.raw,sourceRange:Xe(i),editable:!0,source:null}):r.push({index:o++,value:bt(s,n),sourceRange:Xe(i),editable:!0,source:Le(s,n,t)})}else if(b.isJSXExpressionContainer(i)&&b.isExpression(i.expression)){let s=Hu(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:Xe(i),editable:!0,source:s.source})}return r}function Wx(e,t,n){let r=[];for(let[o,i]of e.attributes.entries()){if(!b.isJSXAttribute(i))continue;let s=Yx(i.name);if(!s)continue;let a=bt(i,n);if(b.isStringLiteral(i.value)){r.push({name:s,value:i.value.value,sourceRange:Xe(i),source:null,syntaxKind:"literal",raw:a,order:o,resolution:{status:"resolved",value:i.value.value}});continue}if(i.value===null){r.push({name:s,value:"true",sourceRange:Xe(i),source:null,syntaxKind:"boolean-shorthand",raw:a,order:o,resolution:{status:"resolved",value:!0},resolvedValue:!0});continue}if(b.isJSXExpressionContainer(i.value)&&b.isExpression(i.value.expression)){let c=qt(i.value.expression,t);if(s==="className"){let d=typeof c=="string"?c:c===void 0?Wu(i.value.expression,t):null;if(d){r.push({name:s,value:d,sourceRange:Xe(i),source:null,resolvedValue:d,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:d}});continue}}let l=Hu(i.value.expression,t,n);if(c!==void 0){r.push({name:s,value:rb(c),sourceRange:Xe(i),source:Le(i.value.expression,n,t),resolvedValue:c,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:c}});continue}let u=Zx(i.value.expression,t),f=Le(i.value.expression,n,t),m=l?.value??bt(i.value.expression,n);r.push({name:s,value:u.status==="undefined"?"undefined":m,sourceRange:Xe(i),source:l?.source??f,syntaxKind:"expression",raw:a,order:o,resolution:u})}}return r}function Gx(e,t,n){return e.attributes.flatMap((r,o)=>!b.isJSXSpreadAttribute(r)||!b.isExpression(r.argument)?[]:[{raw:bt(r.argument,n),sourceRange:Xe(r),order:o,source:Le(r.argument,n,t)}])}function Yx(e){return b.isJSXIdentifier(e)?e.name:b.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function Zx(e,t){return At(e,{resolveIdentifier(n){let r=wr(n,t.valueScopes);return r.kind==="resolved"?{status:"resolved",value:r.value}:n==="undefined"&&!t.valueScopes.some(o=>o.has(n))?{status:"undefined"}:{status:"unresolved"}},resolveMember(n){let r=qt(n,t);return r===void 0?{status:"unresolved"}:{status:"resolved",value:r}}})}function Wu(e,t){let n=zn(e,t);return n&&n.map(o=>o.trim()).filter(Boolean).join(" ")||null}function zn(e,t){if(b.isStringLiteral(e))return[e.value];if(b.isTemplateLiteral(e))return e.expressions.length>0?null:[e.quasis.map(n=>n.value.cooked??"").join("")];if(b.isNullLiteral(e))return[];if(b.isBooleanLiteral(e))return e.value?null:[];if(b.isIdentifier(e)||b.isMemberExpression(e)){if(b.isIdentifier(e)&&e.name==="undefined")return[];let n=qt(e,t);return typeof n=="string"?[n]:null}if(b.isConditionalExpression(e)){let n=zn(e.consequent,t),r=zn(e.alternate,t);return!n||!r?null:[...n,...r]}if(b.isLogicalExpression(e)){if(e.operator!=="&&")return null;let n=qt(e.left,t);return n===!1||n===null?[]:zn(e.right,t)}if(b.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||b.isSpreadElement(r))return null;let o=zn(r,t);if(!o)return null;n.push(...o)}return n}if(b.isObjectExpression(e)){let n=[];for(let r of e.properties){if(!b.isObjectProperty(r))return null;let o=qx(r.key);if(!o)return null;n.push(o)}return n}if(b.isCallExpression(e)){let n=Qx(e.callee);if(!n||!["cn","clsx","twMerge"].includes(n))return null;let r=[];for(let o of e.arguments){if(!b.isExpression(o))return null;let i=zn(o,t);if(!i)return null;r.push(...i)}return r}return null}function Qx(e){return b.isIdentifier(e)?e.name:b.isMemberExpression(e)&&b.isIdentifier(e.property)?e.property.name:null}function qx(e){return b.isIdentifier(e)?e.name:b.isStringLiteral(e)?e.value:null}function eb(e,t){let n=e.attributes.find(r=>b.isJSXAttribute(r)&&b.isJSXIdentifier(r.name)&&r.name.name===t);return!n||!b.isJSXAttribute(n)||!b.isJSXExpressionContainer(n.value)?null:n.value.expression}function tb(e,t){for(let n of t){let r=eb(e,n);if(r)return r}return null}function nb(e){return b.isJSXIdentifier(e.name)?e.name.name:null}function rb(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function ob(e){if(!b.isCallExpression(e)&&!b.isOptionalCallExpression(e))return null;let t=e.callee;return!b.isMemberExpression(t)&&!b.isOptionalMemberExpression(t)||!b.isIdentifier(t.property)||t.property.name!=="map"||t.computed||!b.isExpression(t.object)?null:{call:e,collection:t.object,callback:e.arguments[0]}}function Ys(e){return b.isArrowFunctionExpression(e)||b.isFunctionExpression(e)}function ib(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function sb(e){return e==="empty"||e==="emptyRender"||e==="loading"||e==="loadingRender"||e==="error"||e==="errorRender"||e==="fallback"||e==="headerRender"||e==="footerRender"}function Ku(e,t,n,r){if(!e||!b.isExpression(e))return null;let o={kind:"repeat-template",collectionExpression:bt(e,n),collectionSource:Le(e,n,r)};if(t){let i=t.params[0],s=t.params[1];b.isIdentifier(i)&&(o.itemParamName=i.name),b.isIdentifier(s)&&(o.indexParamName=s.name)}return o}function Jt(e,t,n){if(!e)return[];if(b.isJSXElement(e)){if(qs(e))return ii(e.children,t,n);let r=ri(e,t,n);return r?[r]:[]}return Hn(e)?oi(e,t,n):b.isParenthesizedExpression(e)?Jt(e.expression,t,n):b.isExpression(e)?si(e,t,n):[]}function ti(e,t,n){let r=new Map;for(let o of e.params)for(let i of Kt(o))ea(r,i);t.valueScopes.push(r);try{if(!b.isBlockStatement(e.body))return Jt(e.body,t,n);let o=new Map;t.valueScopes.push(o);try{return Gu(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function Gu(e,t,n){let r=[];for(let o of e){if(b.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];if(i){Zs([o],t,i);for(let s of o.declarations)b.isIdentifier(s.id)&&(b.isJSXElement(s.init)||b.isJSXFragment(s.init))&&r.push(...Jt(s.init,t,n))}continue}r.push(...Qs(o,t,n))}return r}function Qs(e,t,n){if(b.isReturnStatement(e))return e.argument?Jt(e.argument,t,n):[];if(b.isBlockStatement(e))return xn(e.body,t,n);if(b.isIfStatement(e)){let r=b.isBlockStatement(e.consequent)?xn(e.consequent.body,t,n):Qs(e.consequent,t,n),o=e.alternate?b.isBlockStatement(e.alternate)?xn(e.alternate.body,t,n):Qs(e.alternate,t,n):[];return[...r,...o]}if(b.isSwitchStatement(e))return xn(e.cases.flatMap(r=>r.consequent),t,n);if(b.isTryStatement(e)){let r=xn(e.block.body,t,n);return e.handler&&r.push(...xn(e.handler.body.body,t,n)),e.finalizer&&r.push(...xn(e.finalizer.body,t,n)),r}return[]}function xn(e,t,n){let r=new Map;t.valueScopes.push(r);try{return Gu(e,t,n)}finally{t.valueScopes.pop()}}function ni(e,t,n,r,o,i){o.length!==0&&e.regions.push({kind:t,ownerKey:n,childKeys:o,sourceRange:Xe(r),sourceCandidates:i&&i.length>0?i:void 0})}function ab(e,t,n,r){let o=tb(e.openingElement,["items","dataSource","data"]),i={key:t,tag:Ju(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!b.isJSXAttribute(s))continue;let a=nb(s);if(!a||!b.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!b.isJSXEmptyExpression(c)){if(ib(a)&&Ys(c)){let l=ti(c,n,r),u=Ku(o,c,r,n);ni(n,"repeat-region",t,s,l,u?[u]:void 0);continue}if(sb(a)){let l=Ys(c)?ti(c,n,r):Jt(c,n,r);ni(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!b.isJSXExpressionContainer(s)||!Ys(s.expression))continue;let a=ti(s.expression,n,r),c=Ku(o,s.expression,r,n);ni(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function ri(e,t,n){let r=Ju(e.openingElement);if(r==="Fragment"||qs(e))return ii(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=jx(r),a;if(s){let w=t.ordinalTracker.getOrdinal(i,r);a=`component:${r}#${w}`}else{let w=t.ordinalTracker.getOrdinal(i,r);a=`${r}#${w}`}let c=o?t.elements.get(o.key)?.identity.structuralPath:void 0,l=c?`${c}/${a}`:a,u=br(t.file,t.componentName,l),f={file:t.file,component:t.componentName,structuralPath:l,key:u},m=s?"component-boundary":null,d=Hx(e.children,t,n),g=Wx(e.openingElement,t,n),h=Gx(e.openingElement,t,n),S,E,k=!1;if(s){let w=t.importMap.get(r)??t.importMap.get(Vx(r));w&&(S=w.specifier,E=w.exportName,k=Rr(w.specifier,t.file))}let I={identity:f,tag:r,componentName:t.componentName,sourceFile:t.file,sourceRange:Xe(e),parentKey:i,childKeys:[],textSegments:d,attributes:g.length>0?g:void 0,attributeSpreads:h.length>0?h:void 0,boundaryKind:m,isOpaque:s,...k?{isPublicUiComponent:!0}:{},importedFrom:S,exportName:E};return t.elements.set(u,I),i&&t.elements.has(i)&&t.elements.get(i).childKeys.push(u),ab(e,u,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:u,tag:r}),cb(e.children,t,n),t.parentStack.pop()),u}function oi(e,t,n){return ii(e.children,t,n)}function ii(e,t,n){let r=[];for(let o of e)if(b.isJSXElement(o))if(qs(o))r.push(...ii(o.children,t,n));else{let i=ri(o,t,n);i&&r.push(i)}else Hn(o)?r.push(...oi(o,t,n)):b.isJSXExpressionContainer(o)&&r.push(...si(o.expression,t,n));return r}function cb(e,t,n){for(let r of e)b.isJSXElement(r)?ri(r,t,n):Hn(r)?oi(r,t,n):b.isJSXExpressionContainer(r)&&si(r.expression,t,n)}function lb(e){return e==="&&"||e==="||"||e==="??"}function si(e,t,n){if(b.isJSXEmptyExpression(e))return[];let r=ob(e);if(r){let o=r.call,i=t.parentStack[t.parentStack.length-1]??null,s=[],a=r.callback,c={kind:"repeat-template",collectionExpression:bt(r.collection,n),collectionSource:Le(r.collection,n,t)};if(b.isArrowFunctionExpression(a)||b.isFunctionExpression(a)){let u=a.params[0],f=a.params[1];b.isIdentifier(u)&&(c.itemParamName=u.name),b.isIdentifier(f)&&(c.indexParamName=f.name)}s.push(c);let l={kind:"repeat-region",ownerKey:i?.key??"",childKeys:[],sourceRange:Xe(o),sourceCandidates:s.length>0?s:void 0};return t.regions.push(l),(b.isArrowFunctionExpression(a)||b.isFunctionExpression(a))&&l.childKeys.push(...ti(a,t,n)),l.childKeys}if(b.isConditionalExpression(e)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:bt(e.test,n),conditionSource:Le(e.test,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Xe(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Jt(e.consequent,t,n)),s.childKeys.push(...Jt(e.alternate,t,n)),s.childKeys}if(b.isLogicalExpression(e)&&lb(e.operator)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:bt(e.left,n),conditionSource:Le(e.left,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Xe(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Jt(e.right,t,n)),s.childKeys}if(b.isParenthesizedExpression(e))return si(e.expression,t,n);if(b.isJSXElement(e)){let o=ri(e,t,n);return o?[o]:[]}return Hn(e)?oi(e,t,n):[]}function ub(e){let t=e.argument;return t&&(b.isExpression(t)||Hn(t))?t:null}function Nr(e,t){let n=[];for(let r of e){if(b.isReturnStatement(r)){let o=ub(r);o&&n.push({argument:o,statement:r,condition:t});continue}if(b.isIfStatement(r)){let o=b.isBlockStatement(r.consequent)?r.consequent.body:[r.consequent];if(n.push(...Nr(o,r.test)),r.alternate){let i=b.isBlockStatement(r.alternate)?r.alternate.body:[r.alternate];n.push(...Nr(i,r.test))}continue}if(b.isSwitchStatement(r))for(let o of r.cases){let i=o.test?b.binaryExpression("===",r.discriminant,o.test):r.discriminant;n.push(...Nr(o.consequent,i))}}return n}function Yu(e){let{file:t,source:n,ast:r}=e,o=e.imports.map(f=>f.specifier),i=new Map,s=[],a=[],c=new Map,l=Jx(r);$x(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(f){let m=Ux(f);if(!m)return;let d=f.node,g=[];if(b.isArrowFunctionExpression(d))b.isExpression(d.body)||Hn(d.body)?g=[{argument:d.body,statement:b.returnStatement(b.isExpression(d.body)?d.body:null)}]:b.isBlockStatement(d.body)&&(g=Nr(d.body.body));else{let w=d.body;b.isBlockStatement(w)&&(g=Nr(w.body))}if(g.length===0){f.skip();return}let h=new Map;Zs(zx(r.program.body),Gs(t,m,i,s,l,[h]),h);let S=new Map;for(let w of d.params)for(let P of Kt(w))ea(S,P);let E=b.isBlockStatement(d.body)?d.body.body:[],k=g[0]?.statement??null;for(let w of E){if(k&&w===k)break;b.isVariableDeclaration(w)&&Zs([w],Gs(t,m,i,s,l,[h,S]),S)}let I=Gs(t,m,i,s,l,[h,S]);for(let w of g){let P=Jt(w.argument,I,n);for(let A of P)a.includes(A)||a.push(A);if(w.condition){let A={kind:"conditional-branch",conditionExpression:bt(w.condition,n),conditionSource:Le(w.condition,n,I)};ni(I,"conditional-region","",w.statement,P,[A])}}f.skip()}});let u=[...i.keys()];return u.length>0&&c.set(t,u),{graph:{routeId:t,rootKeys:a,elements:i,regions:s,fileIndex:c,version:1,diagnostics:[]},localImports:o}}function ta(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function ai(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function Zu(e,t,n,r,o={}){let i=o.maxDepth??10,s=o.version??1,a=o.parseModule??Cr,c=new Map,l=new Map,u=new Map,f=[],m=new Set,d=E=>{let k=`${E.path}\0${E.code}\0${E.message}\0${JSON.stringify(E.details??{})}`;m.has(k)||(m.add(k),f.push(E))},g=[{file:e,source:t,depth:0,diagnosticEntryFile:e,importStack:[]},...(o.additionalEntries??[]).map(E=>({file:E.file,source:E.source,depth:0,diagnosticEntryFile:E.file,importStack:[]}))],h=new Set;for(;g.length>0;){let E=g.shift(),{file:k,source:I,depth:w,diagnosticEntryFile:P,importStack:A}=E;if(h.has(k))continue;h.add(k),c.set(k,I);let C=a(k,I);if(!C.ok){d(ai(C.diagnostic,P,A));continue}u.set(k,C.module);let{graph:T,localImports:_}=Yu(C.module);for(let L of T.elements.values())if(L.importedFrom&&Tt(L.importedFrom)){let G=L.importedFrom,ne=await Qo(k,G,r);ne.ok?(L.importedFrom=ne.path,yn(ne.path)&&(L.isPublicUiComponent=!0)):Rr(G,k)||d(ai(ne.diagnostic,P,ta(A,k,G,ne.diagnostic.path)))}if(l.set(k,T),!(w>=i))for(let L of _){if(Vu(L))continue;let G=await Qo(k,L,r);if(!G.ok){Rr(L,k)||d(ai(G.diagnostic,P,ta(A,k,L,G.diagnostic.path)));continue}let ne=G.path;if(h.has(ne)||yn(ne))continue;let ve=ta(A,k,L,ne);try{let Y=await n(ne);g.push({file:ne,source:Y,depth:w+1,diagnosticEntryFile:P,importStack:ve})}catch(Y){d(ai({path:ne,code:"import-read-failed",message:`Failed to read imported file: ${ne}`,details:{fromFile:k,specifier:L,reason:Y instanceof Error?Y.message:String(Y)}},P,ve))}}}let S=db(e,l,s,(o.additionalEntries??[]).map(E=>E.file));return S.diagnostics=f,{graph:S,allSources:c,diagnostics:f,parsedModules:u,entryModule:u.get(e)??null}}function db(e,t,n,r=[]){let o=new Map,i=[],s=new Map,a=[];for(let[c,l]of t){for(let[u,f]of l.elements)o.set(u,f);for(let u of l.regions)i.push(u);for(let[u,f]of l.fileIndex){let m=s.get(u)??[];s.set(u,[...m,...f])}if(c===e){a=l.rootKeys;continue}r.includes(c)&&(a=[...a,...l.rootKeys])}return{routeId:e,rootKeys:a,elements:o,regions:i,fileIndex:s,version:n}}import{SiteEditHistoryProvenanceSchema as fb}from"@vcp-dev/contracts";var pb={affectedCompositions:[]};function rd(e){let t=null,n=new WeakMap;async function r(){return t??=mb(e),t}return{async prepareAppend(o){let i=await e.readIndex(),s=await e.stageAppend(td(o),{durableManifest:!1}),a;try{a=await e.previewStagedAppend(s.entryId,i.digest)}catch(l){throw await e.discardStage(s.stageId),l}let c={kind:"append",entry:o,historyTransition:a};return n.set(c,{expectedDigest:i.digest,stageId:s.stageId,entryId:s.entryId}),c},async prepareUndo(){let i=(await r()).undo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("undo entry is missing from index");let c=a-1,l=await e.previewCursor(c,s.digest),u={kind:"undo",entry:i,historyTransition:l};return n.set(u,{expectedDigest:s.digest,cursor:c}),u},async prepareRedo(){let i=(await r()).redo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("redo entry is missing from index");let c=a,l=await e.previewCursor(c,s.digest),u={kind:"redo",entry:i,historyTransition:l};return n.set(u,{expectedDigest:s.digest,cursor:c}),u},async publishPrepared(o){let i=n.get(o);if(!i)throw new Error("history mutation was not prepared");let s=await r();if(o.kind==="append"){if(!i.entryId)throw new Error("staged entry id is missing");let a=await e.publishStagedAppend(i.entryId,i.expectedDigest,i.stageId);Qu(a,o.historyTransition),o.entry.historyId=i.entryId,s.entryIds=[...a.entryIds],s.cursor=a.cursor,s.undo.push(o.entry),s.redo.length=0}else{if(i.cursor===void 0)throw new Error("prepared cursor is missing");let a=await e.setCursor(i.cursor,i.expectedDigest);if(Qu(a,o.historyTransition),o.kind==="undo"){if(s.undo.at(-1)!==o.entry)throw new Error("undo state changed before publish");s.undo.pop(),s.redo.push(o.entry)}else{if(s.redo.at(-1)!==o.entry)throw new Error("redo state changed before publish");s.redo.pop(),s.undo.push(o.entry)}s.cursor=i.cursor}n.delete(o)},async discardPrepared(o){let i=n.get(o);if(!i)return;let s=o.historyTransition;if(s){let a=await e.readIndex();if(a.digest===s.publishedIndexDigest&&a.cursor===s.publishedCursor&&a.currentId===s.publishedCurrentId)throw new Error("cannot discard a history mutation whose index was published")}i.stageId&&await e.discardStage(i.stageId),n.delete(o)},async peekUndo(){return(await r()).undo.at(-1)??null},async pushUndo(o){let i=await r(),s=o;if(s.historyId){let l=i.entryIds.indexOf(s.historyId);if(l>=0)try{await e.setCursor(l),i.undo.push(o),i.cursor=l;return}catch(u){throw i.redo.push(o),u}}let a=await e.append(td(o)),c=a.currentId;if(!c)throw new Error("history store did not publish an entry");o.historyId=c,i.entryIds=[...a.entryIds],i.cursor=a.cursor,i.undo.push(o),i.redo.length=0},async popUndo(){return(await r()).undo.pop()??null},async peekRedo(){return(await r()).redo.at(-1)??null},async pushRedo(o){let i=await r(),s=o;if(!s.historyId)throw i.undo.push(o),new Error("cannot move an unpersisted history entry to redo");let a=i.entryIds.indexOf(s.historyId);if(a<0)throw i.undo.push(o),new Error("history entry is missing from the durable index");try{await e.setCursor(a-1),i.cursor=a-1,i.redo.push(o)}catch(c){throw i.undo.push(o),c}},async popRedo(){return(await r()).redo.pop()??null},async clearRedo(){(await r()).redo.length=0},async getStatus(){let o=await e.readStatus();return{canUndo:o.canUndo,canRedo:o.canRedo,undoDepth:o.undoDepth,redoDepth:o.redoDepth,recoveryRequired:o.recoveryRequired}},async markRecoveryRequired(o){await e.markRecoveryRequired(o)}}}function Qu(e,t){if(!t)throw new Error("durable history transition is missing");if(e.digest!==t.publishedIndexDigest||e.cursor!==t.publishedCursor||e.currentId!==t.publishedCurrentId)throw new Error("durable history published an unexpected index state")}async function mb(e){let t=await e.readIndex(),n=await Promise.all(t.undoIds.map(async o=>qu(e,o))),r=await Promise.all(t.redoIds.map(async o=>qu(e,o)));return{undo:n.reverse(),redo:r.reverse(),entryIds:[...t.entryIds],cursor:t.cursor}}async function qu(e,t){let n=await e.readEntry(t),r=gb(n),o=r.provenance??pb;return{historyId:t,...o.initiatingComposition?{composition:o.initiatingComposition}:{},operationId:r.operationId,kind:r.kind,target:r.target,provenance:o,...r.selectionRef?{selectionRef:r.selectionRef}:{},...r.output?{output:r.output}:{},preSnapshots:await ed(e,n,r.preSnapshots),postSnapshots:await ed(e,n,r.postSnapshots)}}async function ed(e,t,n){let r=new Map(t.blobs.map(o=>[o.name,o.digest]));return Promise.all(n.map(async o=>{let i=o.exists&&o.blobName?Buffer.from(await e.readBlob(xb(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function td(e){let t=[],n=(i,s)=>i.map((a,c)=>{let l={file:a.file,exists:a.exists!==!1,version:a.version,...a.sha256?{sha256:a.sha256}:{}};if(l.exists){let u=`${s}-${c}`;l.blobName=u,t.push({name:u,data:a.content})}return l}),r=hb(e),o={operationId:e.operationId,kind:e.kind,target:e.target,...r?{provenance:r}:{},...e.selectionRef?{selectionRef:e.selectionRef}:{},...e.output?{output:e.output}:{},preSnapshots:n(e.preSnapshots,"pre"),postSnapshots:n(e.postSnapshots,"post")};return{kind:"site-edit-operation",manifest:JSON.parse(JSON.stringify(o)),blobs:t}}function gb(e){if(!id(e.manifest))throw new Error("durable history manifest is not an object");let t=e.manifest,n=new Set(["operationId","kind","target","selectionRef","output","provenance","preSnapshots","postSnapshots"]);if(Object.keys(t).some(r=>!n.has(r)))throw new Error("durable history manifest contains unknown fields");if(typeof t.operationId!="string"||t.operationId.length===0||typeof t.kind!="string"||t.kind.length===0||!Array.isArray(t.preSnapshots)||!Array.isArray(t.postSnapshots))throw new Error("durable history manifest has an invalid shape");return{operationId:t.operationId,kind:t.kind,target:t.target,...t.selectionRef!==void 0?{selectionRef:t.selectionRef}:{},...t.output!==void 0?{output:t.output}:{},...t.provenance!==void 0?{provenance:od(t.provenance)}:{},preSnapshots:nd(t.preSnapshots,"preSnapshots"),postSnapshots:nd(t.postSnapshots,"postSnapshots")}}function hb(e){if(e.provenance!==void 0)return od(e.provenance);if(e.composition)return{initiatingComposition:e.composition,affectedCompositions:[]}}function od(e){let t=fb.safeParse(e);if(!t.success)throw new Error("durable history provenance is invalid");return{...t.data.initiatingComposition?{initiatingComposition:t.data.initiatingComposition}:{},affectedCompositions:t.data.affectedCompositions.map(n=>({routeId:n.routeId,...n.effectiveTemplateId?{effectiveTemplateId:n.effectiveTemplateId}:{}}))}}function nd(e,t){return e.map((n,r)=>{if(!id(n))throw new Error(`durable history ${t}[${r}] is invalid`);if(typeof n.file!="string"||n.file.length===0||!Number.isInteger(n.version)||n.exists!==void 0&&typeof n.exists!="boolean"||n.sha256!==void 0&&!yb(n.sha256)||n.blobName!==void 0&&typeof n.blobName!="string")throw new Error(`durable history ${t}[${r}] is invalid`);return{file:n.file,exists:n.exists!==!1,version:n.version,...n.sha256?{sha256:n.sha256}:{},...n.blobName?{blobName:n.blobName}:{}}})}function yb(e){return/^sha256:[0-9a-f]{64}$/.test(e)}function xb(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function id(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{COMPONENT_I18N_FILE_SUFFIX as bb,parseComponentI18nResourcesJson as Sb,resolveSiteTextDirection as Eb,SiteLocaleSchema as vb}from"@vcp-dev/contracts";var kb=["i18next","react-i18next"],Ib="components/ui/site-locale-provider.tsx",Cb="components/ui/component-i18n-provider.tsx",sd="app/layout.tsx";async function ra(e){let t=e.files.filter(m=>m.path.endsWith(bb));if(t.length===0)return{ok:!0};for(let m of["package.json",sd,Ib,Cb])if(!await e.exists(m))return bn(`Target snapshot is missing required i18n host file: ${m}`);let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return bn("Target snapshot package.json is invalid.")}let r=ad(n)&&ad(n.dependencies)?n.dependencies:{},o=kb.filter(m=>typeof r[m]!="string"||r[m].trim().length===0);if(o.length>0)return bn(`Target snapshot must already declare: ${o.join(", ")}.`);let i=await e.readFile(sd),s=na(i,"html","lang"),a=na(i,"html","dir"),c=na(i,"SiteLocaleProvider","locale"),l=vb.safeParse(s);if(!l.success||!a||!c||s!==c||a!==Eb(l.data))return bn("Target snapshot app/layout.tsx must keep html lang/dir and SiteLocaleProvider locale consistent.");if(!i.includes('from "@/components/ui/site-locale-provider"')||!/<SiteLocaleProvider\b/.test(i)||!/<\/SiteLocaleProvider>/.test(i))return bn("Target snapshot root layout is not wired to SiteLocaleProvider.");let u=l.data,f=u.split("-")[0];for(let m of t){let d=Sb(m.content);if(!d.success)return bn(`Component i18n resource is invalid: ${m.path}.`);if(!Object.hasOwn(d.data,u)&&!Object.hasOwn(d.data,f))return bn(`Component i18n resource ${m.path} has no locale for ${u} or ${f}.`)}return{ok:!0}}function na(e,t,n){let r=e.match(new RegExp(`<${t}\\b[^>]*>`))?.[0];if(!r)return null;let o=[...r.matchAll(new RegExp(`\\b${n}=(?:"([^"]+)"|\\{"([^"]+)"\\})`,"g"))];return o.length!==1?null:o[0]?.[1]??o[0]?.[2]??null}function ad(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bn(e){return{ok:!1,message:e}}import{randomBytes as jb}from"node:crypto";import li from"node:path";import{parse as ca}from"@babel/parser";import Vb from"@babel/traverse";import*as hd from"@babel/types";import{COMPONENT_I18N_FILE_SUFFIX as ia,PageResourceArtifactSchema as Ub,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as Kb,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as Jb,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as Xb,parseComponentI18nResourcesJson as zb}from"@vcp-dev/contracts";var ld=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,ud=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,Rb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke)-\[#(?:[0-9a-fA-F]{3,8})\](?:\/\d+)?/g,wb=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*#[0-9a-fA-F]{3,8}[^'"]*['"]/g,Nb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Pb=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,Ab=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,Tb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*(?:oklch|lab|lch|hsla?)\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Fb=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*(?:oklch|lab|lch|hsla?)\([^)]+\)[^'"]*['"]/gi,_b=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*color-mix\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Ob=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*color-mix\([^'"]*['"]/gi,Mb=/\b(?:bg|text|border|ring|outline|fill|stroke)-(?:black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)(?:-\d{2,3})?(?:\b|\/)/g,Db=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,Lb=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function Pr(e,t){let n=ci([...mt(e,Rb),...mt(e,wb),...mt(e,Nb),...mt(e,t.includeRgbBackgroundImage?Pb:Ab),...t.includeExtendedColorFunctions?[...mt(e,Tb),...mt(e,Fb)]:[]]),r=ci([...mt(e,_b),...mt(e,Ob)]).filter(o=>t.colorMixPolicy==="always"||ld.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...mt(e,Mb).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...mt(e,Lb).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:ci(mt(e,ud)),hardCodedSurfaceOccurrences:$b(e),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?ci(mt(e,Db)):[]}}function mt(e,t){return e.match(new RegExp(t.source,t.flags))??[]}var cd=160,Bb=/((?:[a-z][a-z0-9-]*(?:\[[^\]]*\])?:)+)$/;function $b(e){let t=new RegExp(ud.source,"g"),n=[0];for(let s=0;s<e.length;s+=1)e[s]===`
5
- `&&n.push(s+1);let r=s=>{let a=0,c=n.length-1;for(;a<c;){let l=Math.ceil((a+c)/2);(n[l]??0)<=s?a=l:c=l-1}return a},o=[],i;for(;(i=t.exec(e))!==null;){let s=i[0],a=s.endsWith("/")?s.slice(0,-1):s,c=/^\/(\d+)/.exec(e.slice(i.index+a.length)),l=e.slice(Math.max(0,i.index-64),i.index),u=Bb.exec(l),f=r(i.index),m=e.indexOf(`
6
- `,i.index),d=e.slice(n[f]??0,m===-1?void 0:m).trim();o.push({token:a,variant:u?.[1]??"",alpha:c?Number(c[1]):null,line:f+1,snippet:d.length>cd?`${d.slice(0,cd-1)}\u2026`:d})}return o}function ci(e){return[...new Set(e)]}var sa="{{$INSTANCE}}",Hb=/\{\{\$PAGE_ROUTE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,Wb=/\{\{\$PAGE_TITLE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,aa="components/site/generated",Gb=/\.(?:tsx?|json)$/,Yb=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,Zb=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],Qb=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),oa=Vb,qb=typeof oa=="function"?oa:oa.default;async function la(e){let t=Ub.safeParse(e.artifact);if(!t.success)return me("Page resource artifact failed contract validation.");let n=t.data,r=e.randomHex??(()=>jb(4).toString("hex")),o=Math.max(1,Math.min(e.maxAttempts??5,5)),i=uS(r());if(!i)return me("Random instance suffix must be 8 lowercase hex chars.");let s=`${dS(n.resource_id)}-${i}`,a=new Map,c=new Map,l=[];for(let I of n.pages){let w=I.final_route.slice(1);a.set(I.template_page_id,I.final_route),c.set(I.template_page_id,I.title),l.push({template_page_id:I.template_page_id,title:I.title,final_route:I.final_route,route_file_path:`app/${w}/page.tsx`})}let u=[],f=new Set,m=new Set,d=new Map,g=new Map,h=[],S=new Set(n.pages.flatMap(I=>I.components.map(w=>w.component_id)));for(let I of n.components){if(!S.has(I.component_id))continue;let w=dd({materialization:I.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c});if(!w.ok)return w;for(let P of w.files){let A=pd(P,f,u);if(A)return A}m.add(w.entry),g.set(w.entry,w.entryExport),d.set(I.component_id,w.entry)}for(let[I,w]of n.pages.entries()){let P=l[I],A=dd({materialization:w.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c,pageEntryTarget:P.route_file_path,pageTitle:P.title});if(!A.ok)return A;for(let _ of A.files){let L=pd(_,f,u);if(L)return L}m.add(A.entry),g.set(A.entry,A.entryExport),h.push({entry:A.entry,declaredComponentIds:new Set(w.components.map(_=>_.component_id))});let C=u.find(_=>_.file===P.route_file_path);if(!C)return me("Page materialization entry did not resolve to its final route file.",P.route_file_path);if(oS(C.content,P.route_file_path)!==P.final_route)return me(`Page ${w.template_page_id} requires a static PAGE_SEO.path equal to ${P.final_route}.`,P.route_file_path)}let E=tS(u,m,s,d,h,g);if(!E.ok)return E;for(let I of u)if(await e.exists(I.file))return!I.file.startsWith("app/")&&o>1?la({...e,randomHex:r,maxAttempts:o-1}):{ok:!1,code:"MATERIALIZATION_CONFLICT",message:`Page resource create-only target already exists: ${I.file}`,path:I.file};let k=nS(u);return k||(u.sort((I,w)=>I.file.localeCompare(w.file)),{ok:!0,packageInstanceId:s,pages:l,files:u})}function dd(e){let t=e.materialization.entry.pathTemplate,n=[];for(let o of e.materialization.files){let i=o.pathTemplate===t,s=i&&e.pageEntryTarget?e.pageEntryTarget:fd(o.pathTemplate,e.packageInstanceId);if(!s)return me("Materialization path cannot be mapped into the package namespace.",o.pathTemplate);let a=eS(o.content,e.packageInstanceId,e.routeByPage,e.titleByPage);if(!a.ok)return a;let c=i&&e.pageTitle!==void 0?iS(a.data,e.pageTitle,s):a;if(!c.ok)return c;n.push({operation:"create-only",file:s,content:c.data})}let r=e.pageEntryTarget??fd(t,e.packageInstanceId);return!r||!n.some(o=>o.file===r)?me("Materialization entry must match one controlled source file.",t):{ok:!0,files:n,entry:r,entryExport:e.materialization.entry.export}}function eS(e,t,n,r){let o,i=e.replace(Hb,(c,l)=>{let u=n.get(l);return u||(o=l,c)});if(o)return me(`Page route placeholder references unknown template page: ${o}`);let s=i.replace(Wb,(c,l)=>{let u=r.get(l);return u?JSON.stringify(u):(o=l,c)});if(o)return me(`Page title placeholder references unknown template page: ${o}`);let a=s.replaceAll(sa,t);return a.includes("{{$PAGE_ROUTE:")||a.includes("{{$PAGE_TITLE:")||a.includes("{{$INSTANCE}}")?me("Materialization contains an unresolved placeholder."):{ok:!0,data:a}}function fd(e,t){let n=`${aa}/${t}`;if(e.split(sa).length>2)return null;let o=e.replace(sa,t),i=`${aa}/${t}/`,s=o.startsWith(i)?o:`${n}/${o}`,a=li.posix.normalize(s);return a!==s||!a.startsWith(`${n}/`)||!Gb.test(a)||Yb.test(a)?null:a}function pd(e,t,n){return t.has(e.file)?me(`Page resource materializations resolve duplicate target: ${e.file}`,e.file):(t.add(e.file),n.push(e),null)}function tS(e,t,n,r,o,i){let s=new Set(e.map(d=>d.file)),a=`${aa}/${n}`,c=new Map(e.map(d=>[d.file,new Set])),l=new Map;for(let d of e){if(d.file.endsWith(".json")){try{JSON.parse(d.content)}catch{return me("Materialization JSON file must contain valid JSON.",d.file)}if(d.file.endsWith(ia)&&!zb(d.content).success)return me("Materialization component i18n resources are invalid.",d.file);continue}try{let h=ca(d.content,{sourceType:"module",plugins:["jsx","typescript"]});l.set(d.file,h);for(let E of h.program.body)if((E.type==="ImportDeclaration"||E.type==="ExportAllDeclaration"||E.type==="ExportNamedDeclaration"&&E.source)&&E.source){let k=E.source.value,I=cS(d.file,k,s,a);if(!I.allowed)return me(`Materialization import is outside the controlled package: ${k}`,d.file);I.internalPath&&c.get(d.file).add(I.internalPath)}let S;if(qb(h,{Identifier(E){E.isReferencedIdentifier()&&Qb.has(E.node.name)&&(S??=E.node.name,E.stop())},JSXAttribute(E){E.node.name.type==="JSXIdentifier"&&E.node.name.name==="style"&&(S??="inline style",E.stop())},JSXOpeningElement(E){E.node.name.type==="JSXIdentifier"&&E.node.name.name.toLowerCase()==="style"&&(S??="style element",E.stop())}}),S)return me(`Materialization source uses forbidden capability: ${S}`,d.file)}catch{return me("Materialization source must parse as TS/TSX.",d.file)}let g=Pr(d.content,{colorMixPolicy:"always",includeExtendedColorFunctions:!0,includeRgbBackgroundImage:!0,rejectAnyRawColorLiteral:!0,rejectPrivateTokens:!0,rejectTailwindPalette:!0});if(g.hardCodedSurfaceHits.length>0||g.rawColorHits.length>0||g.privateTokenHits.length>0)return me("Materialization source violates the public theme token policy.",d.file)}if([...t].some(d=>!s.has(d)))return me("Materialization entry is outside the controlled package.");for(let d of t)if(d.endsWith(".json"))return me("Materialization JSON files cannot be package entries.");for(let[d,g]of i){let h=l.get(d);if(!h||!rS(h,g))return me("Materialization entry does not declare its contracted export.",d)}let u=new Map([...r].map(([d,g])=>[g,d]));for(let d of o){let g=gd(d.entry,c);for(let h of d.declaredComponentIds){let S=r.get(h);if(!S||!g.has(S))return me(`Page entry does not reach declared component: ${h}`,d.entry)}for(let h of g){let S=u.get(h);if(S&&!d.declaredComponentIds.has(S))return me(`Page entry imports undeclared component: ${S}`,d.entry)}}let f=new Set;for(let d of t)for(let g of gd(d,c))f.add(g);if(f.size!==e.length)return me("Every materialization file must be reachable from a package entry.");let m=lS(e,l,c);return m||{ok:!0}}function nS(e){if(e.length>Kb)return me("Page resource exceeds the aggregate source file limit.");let t=0;for(let n of e){let r=Buffer.byteLength(n.content,"utf8");if(r>Jb)return me("Page resource file exceeds the content byte limit.",n.file);t+=r}return t>Xb?me("Page resource exceeds the aggregate content byte limit."):null}function rS(e,t){for(let n of e.program.body){if(t.kind==="default"){if(n.type==="ExportDefaultDeclaration")return!0;continue}if(n.type==="ExportNamedDeclaration"&&(n.declaration?.type==="VariableDeclaration"&&n.declaration.declarations.some(r=>r.id.type==="Identifier"&&r.id.name===t.name)||(n.declaration?.type==="FunctionDeclaration"||n.declaration?.type==="ClassDeclaration")&&n.declaration.id?.name===t.name||n.specifiers.some(r=>r.exported.type==="Identifier"&&r.exported.name===t.name)))return!0}return!1}function oS(e,t){let n;try{n=ca(e,{sourceType:"module",sourceFilename:t,plugins:["jsx","typescript"]})}catch{return null}for(let r of n.program.body){let o=r.type==="VariableDeclaration"?r:r.type==="ExportNamedDeclaration"&&r.declaration?.type==="VariableDeclaration"?r.declaration:null;if(o)for(let i of o.declarations){if(i.id.type!=="Identifier"||i.id.name!=="PAGE_SEO")continue;let s=ui(i.init);if(s?.type!=="ObjectExpression")return null;for(let a of s.properties){if(a.type!=="ObjectProperty"||a.computed||!sS(a.key))continue;let c=ui(a.value);return c?.type==="StringLiteral"?c.value:c?.type==="TemplateLiteral"&&c.expressions.length===0?c.quasis[0]?.value.cooked??null:null}return null}}return null}function iS(e,t,n){let r;try{r=ca(e,{sourceType:"module",sourceFilename:n,plugins:["jsx","typescript"]})}catch{return me("Page materialization PAGE_SEO must parse as TS/TSX.",n)}for(let o of r.program.body){let i=o.type==="VariableDeclaration"?o:o.type==="ExportNamedDeclaration"&&o.declaration?.type==="VariableDeclaration"?o.declaration:null;if(i)for(let s of i.declarations){if(s.id.type!=="Identifier"||s.id.name!=="PAGE_SEO")continue;let a=ui(s.init);if(a?.type!=="ObjectExpression")return me("Page materialization PAGE_SEO must be a static object.",n);let c=a.properties.find(u=>u.type==="ObjectProperty"&&!u.computed&&aS(u.key));if(!c||c.type!=="ObjectProperty")return me("Page materialization PAGE_SEO must declare a static title.",n);let l=ui(c.value);return!l||l.type!=="StringLiteral"&&l.type!=="TemplateLiteral"||l.type==="TemplateLiteral"&&l.expressions.length>0||typeof l.start!="number"||typeof l.end!="number"?me("Page materialization PAGE_SEO.title must be a static string.",n):{ok:!0,data:e.slice(0,l.start)+JSON.stringify(t)+e.slice(l.end)}}}return me("Page materialization must declare a top-level PAGE_SEO object.",n)}function ui(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression"||t?.type==="TSNonNullExpression";)t=t.expression;return t&&hd.isExpression(t)?t:null}function sS(e){return e.type==="Identifier"&&e.name==="path"||e.type==="StringLiteral"&&e.value==="path"}function aS(e){return e.type==="Identifier"&&e.name==="title"||e.type==="StringLiteral"&&e.value==="title"}function cS(e,t,n,r){if(t.startsWith(`@/${r}/`)){let s=t.slice(2),a=md(s,n);return a?{allowed:!0,internalPath:a}:{allowed:!1}}if(!t.startsWith("."))return{allowed:Zb.some(s=>s.endsWith("/")?t.startsWith(s):t===s)};if(t.includes("\\")||t.includes("\0"))return{allowed:!1};let o=li.posix.normalize(li.posix.join(li.posix.dirname(e),t)),i=md(o,n);return i&&(i.startsWith(`${r}/`)||i.startsWith("app/"))?{allowed:!0,internalPath:i}:{allowed:!1}}function md(e,t){return[e,`${e}.ts`,`${e}.tsx`,`${e}.json`,`${e}/index.ts`,`${e}/index.tsx`,`${e}/index.json`].find(n=>t.has(n))}function lS(e,t,n){let r=new Set(e.map(o=>o.file));for(let o of e){if(!o.file.endsWith(ia))continue;let i=o.file.slice(0,-ia.length),s=[`${i}.tsx`,`${i}.ts`].find(u=>r.has(u));if(!s)return me("Component i18n resources require a same-name TS/TSX companion.",o.file);let c=t.get(s)?.program.directives.some(u=>u.value.value==="use client"),l=[...n].filter(([,u])=>u.has(o.file));if(!c||l.length!==1||l[0]?.[0]!==s)return me("Component i18n resources must have exactly one same-name Client Component static importer.",s)}return null}function gd(e,t){let n=new Set,r=[e];for(;r.length>0;){let o=r.pop();if(!n.has(o)){n.add(o);for(let i of t.get(o)??[])r.push(i)}}return n}function uS(e){return/^[a-f0-9]{8}$/.test(e)?e:null}function dS(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"page-resource"}function me(e,t){return{ok:!1,code:"MATERIALIZATION_REJECTED",message:e,...t?{path:t}:{}}}import{randomBytes as fS}from"node:crypto";import Xt from"node:path";import{parse as pS}from"@babel/parser";import mS from"@babel/traverse";import{COMPONENT_I18N_FILE_SUFFIX as di,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as yd,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as gS,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as hS,SiteEditMaterializationSchema as yS,parseComponentI18nResourcesJson as xS}from"@vcp-dev/contracts";var fa="components/site/generated",xd="{{$INSTANCE}}",fi=5,bS=/^[a-z][a-z0-9-]{0,48}$/,SS=/^[a-f0-9]{8}$/,bd=/\.tsx?$/,ES=/\.json$/,vS=/\.(?:tsx?|json)$/,kS=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,IS=["react","react/","next","next/","lucide-react","react-i18next","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],ua=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),da=mS,CS=typeof da=="function"?da:da.default;function RS(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>yd)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=LS(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=yS.safeParse(e.manifest);if(!r.success)return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab manifest failed schema validation."}};let o=OS(e.generatedRoot);if(!o)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Generated root must be ${fa}.`,path:e.generatedRoot}};if(!Cd(r.data.instanceBaseName))return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instanceBaseName must contain at least one safe word.",path:r.data.instanceBaseName}};let i=vd(r.data.files),s=vd(e.controlledFiles);if(!BS(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>yd)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let a=0;for(let[c,l]of r.data.files.entries()){let u=Buffer.byteLength(l.content,"utf8");if(u>gS)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file exceeds the per-file content limit.",file:l.pathTemplate,path:`files[${c}]`}};a+=u}return a>hS?{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab exceeds the reusable total content limit."}}:{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:o,instanceRoot:"",entry:{path:"",export:r.data.entry.export},files:[]}}}async function wS(e){let t=RS(e);if(!t.ok)return t;let n=t.data.generatedRoot,r=Cd(e.manifest.instanceBaseName),o=Math.max(1,Math.min(fi,e.maxAttempts??fi));for(let i=0;i<o;i+=1){let s=MS(e.instanceNameGenerator?.()??fS(4).toString("hex"));if(!s)return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instance suffix must be 8 lowercase hex chars."}};let a=`${r}-${s}`,c=wd(n,a),l=NS({manifest:e.manifest,generatedRoot:n,instanceName:a,instanceRoot:c,allowedExternalImports:e.allowedExternalImports??IS});if(!l.ok)return l;if(!await PS(e.exists,c,l.data.files))return{ok:!0,data:l.data}}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to allocate a create-only static prefab instance after repeated conflicts."}}}async function Id(e){let t=Math.max(1,Math.min(fi,e.maxAttempts??fi));for(let n=0;n<t;n+=1){let r=await wS({...e,maxAttempts:1});if(!r.ok){if(r.error.code==="MATERIALIZATION_INSTANCE_CONFLICT")continue;return r}let o=await e.commit(r.data);if(o.ok)return{ok:!0,plan:r.data,data:o.data};if(o.error.code!=="MATERIALIZATION_INSTANCE_CONFLICT")return o}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to commit a complete static prefab instance after repeated conflicts."}}}function NS(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=Sd({pathTemplate:i.pathTemplate,generatedRoot:e.generatedRoot,instanceName:e.instanceName,instanceRoot:e.instanceRoot});if(!s.ok)return s;if(n.has(s.data))return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${s.data}`,path:s.data}};n.add(s.data),t.push({kind:"create-only",path:s.data,content:i.content,...i.role?{role:i.role}:{},sourcePathTemplate:i.pathTemplate})}t.sort((i,s)=>i.path.localeCompare(s.path));let r=Sd({pathTemplate:e.manifest.entry.pathTemplate,generatedRoot:e.generatedRoot,instanceName:e.instanceName,instanceRoot:e.instanceRoot});if(!r.ok)return r;if(!t.some(i=>i.path===r.data))return{ok:!1,error:{code:"MATERIALIZATION_ENTRY_INVALID",message:"Entry path must match one of the static prefab files.",path:r.data}};let o=AS(t,e.instanceRoot,r.data,e.manifest.entry.export,e.allowedExternalImports);return o.ok?{ok:!0,data:{kind:"static-prefab-materialization",instanceName:e.instanceName,generatedRoot:e.generatedRoot,instanceRoot:e.instanceRoot,entry:{path:r.data,export:e.manifest.entry.export},files:t}}:o}async function PS(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function Sd(e){if(e.pathTemplate.split(xd).length!==2)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path templates must include the instance placeholder exactly once.",path:e.pathTemplate}};let t=e.pathTemplate.replaceAll(xd,e.instanceName),n=DS(t);return n?wd(e.generatedRoot,e.instanceName)!==e.instanceRoot?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab instance root normalization failed.",path:e.pathTemplate}}:n!==e.instanceRoot&&!n.startsWith(`${e.instanceRoot}/`)?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path must stay under components/site/generated/<instance>.",path:n}}:n!==t?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path template cannot rely on path normalization semantics.",path:e.pathTemplate}}:n===e.instanceRoot||!vS.test(n)||kS.test(n)?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab files must be .ts/.tsx/.json files and cannot be config, layout, provider, or global source files.",path:n}}:{ok:!0,data:n}:{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path template resolves to an unsafe path.",path:e.pathTemplate}}}function AS(e,t,n,r,o){let i=new Set(e.map(f=>f.path)),s=new Map,a=new Map(e.map(f=>[f.path,new Set])),c=new Map;for(let f of e){if(ES.test(f.path)){if(f.path.endsWith(di)){let g=xS(f.content);if(!g.success)return Sn("MATERIALIZATION_DATA_UNSUPPORTED",g.error.message,f.path);c.set(f.path,new Set)}else try{JSON.parse(f.content)}catch{return Sn("MATERIALIZATION_DATA_UNSUPPORTED","Static prefab JSON file must contain valid JSON.",f.path)}continue}let m;try{m=pS(f.content,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files must parse as plain module source.",file:f.path}}}let d=Pr(f.content,{colorMixPolicy:"always",includeExtendedColorFunctions:!0,includeRgbBackgroundImage:!0,rejectAnyRawColorLiteral:!0,rejectPrivateTokens:!0,rejectTailwindPalette:!0});if(d.hardCodedSurfaceHits.length>0||d.rawColorHits.length>0||d.privateTokenHits.length>0)return{ok:!1,error:{code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source must use public semantic design tokens instead of raw colors or private tokens.",file:f.path}};s.set(f.path,m)}for(let f of e){if(!bd.test(f.path))continue;let m=s.get(f.path),d=null;if(CS(m,{ImportDeclaration(g){let h=Ed({importer:f.path,source:g.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});if(!h.allowed)d??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab imports must resolve within the controlled instance or match the starter allowlist.",file:f.path},g.stop();else if(h.internalPath&&(a.get(f.path).add(h.internalPath),h.internalPath.endsWith(di))){let S=TS({importer:f.path,imported:h.internalPath,source:g.node.source.value,ast:m});S.ok?c.get(h.internalPath).add(f.path):(d??=S.error,g.stop())}},ExportAllDeclaration(g){d??={code:"MATERIALIZATION_ENTRY_INVALID",message:"Static prefab files cannot use export-star declarations.",file:f.path},g.stop()},ExportNamedDeclaration(g){if(g.node.source){let h=Ed({importer:f.path,source:g.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});!h.allowed||!h.internalPath?(d??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab re-exports must resolve within the controlled instance.",file:f.path},g.stop()):a.get(f.path).add(h.internalPath)}},CallExpression(g){if(g.node.callee.type==="Import"){d??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use dynamic import().",file:f.path},g.stop();return}g.node.callee.type==="Identifier"&&g.node.callee.name==="require"&&(d??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use require().",file:f.path},g.stop())},NewExpression(g){g.node.callee.type==="Identifier"&&g.node.callee.name==="Function"&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot construct functions dynamically.",file:f.path},g.stop())},MetaProperty(g){g.node.meta.type==="Identifier"&&g.node.meta.name==="import"&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot use import.meta.",file:f.path},g.stop())},MemberExpression(g){let h=kd(g.node);h&&ua.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},OptionalMemberExpression(g){let h=kd(g.node);h&&ua.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},Identifier(g){g.isReferencedIdentifier()&&ua.has(g.node.name)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${g.node.name}.`,file:f.path},g.stop())},JSXAttribute(g){g.node.name.type==="JSXIdentifier"&&g.node.name.name==="style"&&(d??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot use inline style attributes.",file:f.path},g.stop())},JSXOpeningElement(g){g.node.name.type==="JSXIdentifier"&&g.node.name.name.toLowerCase()==="style"&&(d??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot declare style elements.",file:f.path},g.stop())}}),d)return{ok:!1,error:d}}if(!bd.test(n))return Sn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must be a .ts/.tsx source module.",n);let l=s.get(n);if(!l)return Sn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must resolve to a controlled source file.",n);if(!FS(l,r))return Sn("MATERIALIZATION_EXPORT_MISSING","Static prefab entry does not declare the manifest export.",n);for(let[f,m]of c)if(m.size!==1)return Sn("MATERIALIZATION_IMPORT_FORBIDDEN","Each component .i18n.json file must have exactly one same-name Client Component static importer.",f);return _S(n,a).size!==e.length?Sn("MATERIALIZATION_ENTRY_INVALID","Every controlled source file must be reachable from the entry module.",n):{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:fa,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}}function Ed(e){if(!e.source.startsWith("./")&&!e.source.startsWith("../"))return e.source.startsWith("@/components/site/generated/")?{allowed:!1}:{allowed:e.allowedExternalImports.some(o=>o.endsWith("/")?e.source.startsWith(o):e.source===o)};if(e.source.includes("\\")||e.source.includes("\0"))return{allowed:!1};let t=Xt.posix.normalize(Xt.posix.join(Xt.posix.dirname(e.importer),e.source));if(t===e.instanceRoot||!t.startsWith(`${e.instanceRoot}/`))return{allowed:!1};let r=[t,`${t}.ts`,`${t}.tsx`,`${t}.json`,...["ts","tsx","json"].map(o=>`${t}/index.${o}`)].find(o=>e.filePaths.has(o));return r?{allowed:!0,internalPath:r}:{allowed:!1}}function TS(e){let t=Xt.posix.dirname(e.importer),n=Xt.posix.dirname(e.imported),r=Xt.posix.basename(e.importer).replace(/\.tsx?$/,""),o=Xt.posix.basename(e.imported).slice(0,-di.length),i=`./${r}${di}`;return!e.importer.endsWith(".tsx")||t!==n||r!==o||e.source!==i?{ok:!1,error:{code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Component i18n resources must use an explicit same-directory, same-name import from a .tsx file.",file:e.importer}}:e.ast.program.directives.some(a=>a.value.value==="use client")?{ok:!0}:{ok:!1,error:{code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:'A component that imports .i18n.json must declare the top-level "use client" directive.',file:e.importer}}}function FS(e,t){for(let n of e.program.body){if(t.kind==="default"&&n.type==="ExportDefaultDeclaration")return!0;if(t.kind!=="named"||n.type!=="ExportNamedDeclaration")continue;if(n.specifiers.some(o=>o.exported.type==="Identifier"&&o.exported.name===t.name))return!0;let r=n.declaration;if((r?.type==="FunctionDeclaration"||r?.type==="ClassDeclaration")&&r.id?.name===t.name||r?.type==="VariableDeclaration"&&r.declarations.some(o=>o.id.type==="Identifier"&&o.id.name===t.name))return!0}return!1}function _S(e,t){let n=new Set,r=[e];for(;r.length>0;){let o=r.pop();n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function Sn(e,t,n){return{ok:!1,error:{code:e,message:t,...n?{file:n}:{}}}}function OS(e){let t=Rd(e);return t===fa?t:null}function MS(e){let t=e.trim().toLowerCase();return SS.test(t)?t:null}function Cd(e){let t=e.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,49).replace(/-+$/g,"");return bS.test(t)?t:null}function Rd(e){if(!e||e.startsWith("/")||e.includes("\\"))return null;let t=Xt.posix.normalize(e);return t==="."||t.startsWith("../")||t.includes("/../")||t.includes("//")?null:t}function DS(e){let t=Rd(e);return!t||t!==e?null:t}function wd(...e){return Xt.posix.join(...e)}function vd(e){return new Set(e.map(t=>t.pathTemplate))}function LS(e){let t=new Set;for(let n of e){if(t.has(n.pathTemplate))return n.pathTemplate;t.add(n.pathTemplate)}return null}function BS(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function kd(e){let t=e;for(;;){if(!t||typeof t!="object"||!("type"in t))return null;if(t.type==="Identifier"&&"name"in t&&typeof t.name=="string")return t.name;if(t.type==="MemberExpression"||t.type==="OptionalMemberExpression"){t=t.object;continue}return null}}import{createHash as wa}from"node:crypto";import Sa from"@babel/traverse";function pa(e){let t=new Map,n=new Map;for(let s of e){if(t.has(s.placementKey))throw new Error(`Duplicate placement key in page composition projection: ${s.placementKey}`);t.set(s.placementKey,s);let a=n.get(s.placementUnitKey)??[];a.push(s),n.set(s.placementUnitKey,a)}let r=new Map,o=new Map,i=new Map;for(let[s,a]of n){let c=Object.freeze([...a]),l=c.find(u=>u.anchorSourceRange!==null&&u.members.length>0)??c.find(u=>u.members.length>0)??c[0];l&&(o.set(s,c),i.set(s,l),r.set(s,Object.freeze({placementUnitKey:s,placementKeys:Object.freeze(c.map(u=>u.placementKey)),sourcePlacementKey:l.placementKey})))}return{placementByKey:t,unitByKey:r,placementsByUnitKey:o,sourcePlacementByUnitKey:i}}import{createHash as $S}from"node:crypto";import Nd from"node:path";import*as Fd from"@babel/parser";import ma from"@babel/generator";import*as je from"@babel/types";var Pd=typeof ma=="function"?ma:ma.default;function ha(e){let t=Md(e);if(t)return{ok:!1,error:t};let n=e.projection,r=ba(n,e.placementKey,e.expectedDocumentVersion);if(!r.ok)return{ok:!1,error:{code:r.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"RUNTIME_ANCHOR_UNRESOLVED",message:r.diagnostic.message,diagnostics:[r.diagnostic]}};let o=r.placement,i=US(n,o),s={jsx:`<${e.component.localName} />`},a=jS(e);if(i){let d=_d(e);return d.ok?{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:o.placementUnitKey,importStep:a,rewriteStep:{kind:"insert-root-expression",locator:d.locator,sourceHash:d.sourceHash,node:s,placement:o.relation,replaceOriginal:n.container.kind==="starter-placeholder"}}}:d.result}let c=o.containerSourceRange??n.container.sourceRange,l=o.containerSourceHash??(xa(c,n.container.sourceRange)?n.container.sourceHash:null);if(!c||!l)return ga("Route page composition does not expose a verifiable container boundary.");let u=Tr(c),f=Ad(e.source,u,l,"Route page composition container");if(!f.ok)return f.result;let m=o.anchorSourceRange?Tr(o.anchorSourceRange):void 0;if(m){if(!o.anchorSourceHash)return ga("Route page composition placement does not expose a verifiable anchor boundary.");let d=Ad(e.source,m,o.anchorSourceHash,"Route page composition anchor");if(!d.ok)return d.result}return{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:o.placementUnitKey,importStep:a,rewriteStep:{kind:"insert-child",parentLocator:u,node:s,placement:o.relation,...m?{anchorLocator:m}:{}}}}}function jS(e){let t=zS(e.entryFile,e.component.source);return e.component.exportName==="default"?{kind:"add-import",moduleSpecifier:t,imports:[{kind:"default",local:e.component.localName}]}:{kind:"add-import",moduleSpecifier:t,imports:[{kind:"named",imported:e.component.exportName,local:e.component.localName===e.component.exportName?void 0:e.component.localName}]}}function pi(e){if(e.locator.root.kind!=="expression"||e.locator.path?.length)return En(e.source,"Root expression rewrite requires an exact expression locator.");let t=mr(e.source,"value");if(!t.ok)return En(e.source,t.diagnostic.message);let n=ie(t.ast,e.locator);if(!n.ok)return En(e.source,n.diagnostic.message);let r=n.match.path;if(!r.isExpression())return En(e.source,"Resolved value locator does not point to an expression.");let o=Wn(e.source,r.node.start??null,r.node.end??null);if(!o||o!==e.expectedSourceHash)return En(e.source,"Root expression hash no longer matches the current source.");if(e.action.kind==="remove")return r.replaceWith(je.nullLiteral()),{ok:!0,source:Pd(t.ast,{}).code};let i;try{i=Fd.parseExpression(e.action.jsx,{plugins:["jsx","typescript"]})}catch(s){return En(e.source,s instanceof Error?s.message:String(s))}return!je.isJSXElement(i)&&!je.isJSXFragment(i)?En(e.source,"Root expression rewrite requires a JSX insertion expression."):(e.action.kind==="replace"?r.replaceWith(i):r.replaceWith(VS(r.node,i,e.action.placement,e.action.replaceOriginal)),{ok:!0,source:Pd(t.ast,{}).code})}function VS(e,t,n,r){if(je.isNullLiteral(e)||r)return t;let o=je.isJSXFragment(e)?[...e.children]:[je.isJSXElement(e)?e:je.jsxExpressionContainer(e)],s=n==="before"||n==="prepend"?[t,...o]:[...o,t];return je.jsxFragment(je.jsxOpeningFragment(),je.jsxClosingFragment(),s)}function En(e,t){return{ok:!1,source:e,diagnostic:{message:t}}}function ya(e){let t=Md(e);if(t)return{ok:!1,error:t};let n=e.projection,r=Dd(n,e.placementUnitKey,e.expectedDocumentVersion);if(!r.ok)return{ok:!1,error:{code:r.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"NO_SAFE_PAGE_PLACEMENT",message:r.diagnostic.message,diagnostics:[r.diagnostic]}};let o=r.placement;if(!o.sourceRange||!o.sourceHash)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition source placement does not expose a safe boundary.",diagnostics:[]}};if(KS(n,o)){let h=_d(e);return h.ok?e.operation==="move-node"?ga("A singleton root expression cannot be moved without a safe parent boundary."):{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:h.sourceHash,rewriteStep:{kind:e.operation==="remove-node"?"remove-root-expression":"replace-root-expression",locator:h.locator,sourceHash:h.sourceHash}}}:h.result}let s=Tr(o.sourceRange),a=Nt(e.source,s);if(!a.ok||!a.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:a.ok===!1?a.diagnostic.message:"Route page composition source anchor could not be resolved.",diagnostics:a.ok?[]:[Ar(a.diagnostic)]}};if(Wn(e.source,a.match.node.start??null,a.match.node.end??null)!==o.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source."}]}};if(e.operation==="remove-node")return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"remove-node",locator:s}}};if(e.operation==="replace-node")return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"replace-node",locator:s}}};if(!e.targetPlacement)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit move requires a target placement.",diagnostics:[]}};if(e.targetPlacement.composition.routeId!==e.routeId||!XS(e.targetPlacement.composition,e.composition))return{ok:!1,error:{code:"CROSS_PAGE_MOVE_UNSUPPORTED",message:"Page-unit move across routes or composition templates is not supported.",diagnostics:[]}};if(e.targetPlacement.documentVersion!==e.expectedDocumentVersion)return{ok:!1,error:{code:"VERSION_STALE",message:"Page-unit target placement belongs to a different document version.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Page-unit target placement belongs to a different document version."}]}};let l=ba(n,e.targetPlacement.placementKey,e.expectedDocumentVersion);if(!l.ok)return{ok:!1,error:{code:l.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"NO_SAFE_PAGE_PLACEMENT",message:l.diagnostic.message,diagnostics:[l.diagnostic]}};let u=l.placement;if(u.placementUnitKey!==e.targetPlacement.placementUnitKey||u.relation!==e.targetPlacement.relation)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit target placement metadata does not match the cached projection.",diagnostics:[]}};let f=u.containerSourceRange;if(!f||!u.containerSourceHash)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition target placement does not expose a verifiable container boundary.",diagnostics:[]}};let m=Tr(f),d=Nt(e.source,m);if(!d.ok||!d.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:d.ok===!1?d.diagnostic.message:"Route page composition target container could not be resolved.",diagnostics:d.ok?[]:[Ar(d.diagnostic)]}};if(Wn(e.source,d.match.node.start??null,d.match.node.end??null)!==u.containerSourceHash)return Td("Route page composition target container hash no longer matches the current source.");if(u.relation==="before"||u.relation==="after"){let h=u.anchorSourceRange,S=u.anchorSourceHash;if(!h||!S)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition target placement does not expose a verifiable anchor boundary.",diagnostics:[]}};let E=Tr(h),k=Nt(e.source,E);return!k.ok||!k.match.node?{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:k.ok===!1?k.diagnostic.message:"Route page composition target anchor could not be resolved.",diagnostics:k.ok?[]:[Ar(k.diagnostic)]}}:Wn(e.source,k.match.node.start??null,k.match.node.end??null)!==S?Td("Route page composition target anchor hash no longer matches the current source."):{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"move-node",locator:s,targetParentLocator:m,anchorLocator:E,placement:u.relation}}}}return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"move-node",locator:s,targetParentLocator:m,placement:u.relation}}}}function US(e,t){let n=e.placementUnitByKey.get(t.placementUnitKey);return n&&e.container.kind!=="jsx-container"&&xa(n.sourceRange,e.mutationTarget.sourceRange)&&n.sourceHash===e.mutationTarget.sourceHash?!0:e.container.sourceRange===null&&(e.container.kind==="virtual-route-root"||e.container.kind==="starter-placeholder")}function KS(e,t){return e.container.kind!=="jsx-container"&&xa(t.sourceRange,e.mutationTarget.sourceRange)&&t.sourceHash===e.mutationTarget.sourceHash}function _d(e){let t=e.projection.mutationTarget,n={kind:"value",root:{kind:"expression",sourceRange:t.sourceRange}},r=Nt(e.source,n);return!r.ok||!r.match.node?{ok:!1,result:{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:r.ok===!1?r.diagnostic.message:"Route mutation target could not be resolved.",diagnostics:r.ok?[]:[Ar(r.diagnostic)]}}}:Wn(e.source,r.match.node.start??null,r.match.node.end??null)!==t.sourceHash?{ok:!1,result:Od("Route mutation target hash no longer matches the current source.")}:{ok:!0,locator:n,sourceHash:t.sourceHash}}function Ad(e,t,n,r){let o=Nt(e,t);return!o.ok||!o.match.node?{ok:!1,result:{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:o.ok===!1?o.diagnostic.message:`${r} could not be resolved.`,diagnostics:o.ok?[]:[Ar(o.diagnostic)]}}}:Wn(e,o.match.node.start??null,o.match.node.end??null)!==n?{ok:!1,result:Od(`${r} hash no longer matches the current source.`)}:{ok:!0}}function Od(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function ga(e){return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:e,diagnostics:[]}}}function Td(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function Ar(e){return{code:"UNSUPPORTED_PAGE_SHAPE",message:e.message,details:{astCode:e.code}}}function Md(e){let{projection:t}=e;return t.route!==e.routeId||t.entryFile!==e.entryFile?{code:"VERSION_STALE",message:"Cached page composition projection belongs to a different route.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Cached page composition projection belongs to a different route.",details:{expectedRouteId:e.routeId,projectedRouteId:t.route,expectedEntryFile:e.entryFile,projectedEntryFile:t.entryFile}}]}:e.composition&&!JS(t.composition,e.composition)?{code:"VERSION_STALE",message:"Cached page composition projection belongs to a different composition.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Cached page composition projection belongs to a different composition.",details:{expectedComposition:e.composition,projectedComposition:t.composition}}]}:e.currentDocumentVersion!==e.expectedDocumentVersion||t.documentVersion!==e.currentDocumentVersion?{code:"VERSION_STALE",message:"Route page composition version is stale.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition version is stale.",details:{expectedDocumentVersion:e.expectedDocumentVersion,currentDocumentVersion:e.currentDocumentVersion,projectedDocumentVersion:t.documentVersion}}]}:null}function JS(e,t){return e.routeId===t.routeId&&e.effectiveTemplateId===t.effectiveTemplateId}function XS(e,t){return e.routeId===t.routeId&&e.templateId===t.effectiveTemplateId}function zS(e,t){let n=Nd.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Nd.posix.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Tr(e){return{kind:"jsx-node",strategy:"source-range",sourceRange:e}}function Wn(e,t,n){return t==null||n==null?null:`sha256:${$S("sha256").update(e.slice(t,n)).digest("hex")}`}function xa(e,t){return e===null||t===null?e===t:e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}var HS=typeof Sa=="function"?Sa:Sa.default;function jd(e){if(!e.ast)return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=tE(e.ast);if(!t)return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export must resolve to a local function component",{reason:"default-export-unresolved"})]);let n=rE(t);if(!n.ok)return St(e,[n.diagnostic]);let r=n.expression;if(r.isIdentifier()){let o=iE(r,t);if(o.status==="resolved")r=o.expression;else if(o.status==="invalid")return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export local binding is not a supported JSX root")])}if(aE(r,t))return St(e,[Be("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(r.isNullLiteral())return va(e,t,"virtual-route-root",r);if(sE(r)){let o=dE({input:e,source:e.source,expression:r});return Ea(e,t,o,{kind:"virtual-route-root",sourceKind:"atomic-expression"},r)}if(r.isConditionalExpression())return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route conditional root contains an unsupported branch shape",{reason:"ambiguous-placement"})]);if(r.isJSXElement()&&!Oe(r)&&!en(r)){let o=Ca(r),i=$d({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[o]});return Ea(e,t,i,{kind:"virtual-route-root",sourceKind:"jsx-element"},r)}if(r.isJSXElement()||r.isJSXFragment()){let o=lE(r);if(!o.ok)return St(e,[o.diagnostic]);let i=Gn(o.path);if(i.unsupported)return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);if(cE(e.source,r,i.members))return va(e,t,"starter-placeholder",r);let s=r.isJSXFragment()||Oe(r);if(i.members.length===0&&s)return va(e,t,"virtual-route-root",r);let a=o.path===r&&s?"virtual-route-root":"jsx-container",c=o.path.isJSXFragment()?"jsx-fragment":"jsx-element",l=$d({input:e,containerKind:a,sourceKind:c,source:e.source,containerPath:o.path,members:i.members});return Ea(e,t,l,{kind:a,sourceKind:c},r)}return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")])}function ba(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Be("DOCUMENT_VERSION_STALE","Placement lookup is stale for the requested document version",{expectedDocumentVersion:e.documentVersion,requestedDocumentVersion:n})};let r=e.placementByKey.get(t)??null;return r?{ok:!0,placement:r}:{ok:!1,diagnostic:Be("PLACEMENT_KEY_NOT_FOUND","Placement key was not found in the projected page composition",{placementKey:t})}}function Dd(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Be("DOCUMENT_VERSION_STALE","Placement lookup is stale for the requested document version",{expectedDocumentVersion:e.documentVersion,requestedDocumentVersion:n})};let r=e.placementUnitByKey.get(t)??null;return r?{ok:!0,placement:r}:{ok:!1,diagnostic:Be("PLACEMENT_KEY_NOT_FOUND","Placement unit key was not found in the projected page composition",{placementUnitKey:t})}}function Vd(e){return e.ok?WS(e.projection):GS(e.projection)}function WS(e){let t=new Map,n=[];for(let l of e.placements)l.members.length===0&&e.placements.length>1||l.members.length>0&&!l.anchorSourceRange||t.has(l.placementUnitKey)||t.set(l.placementUnitKey,l);let r=new Map,o=new Map;for(let[l,u]of t){let f=u.members.flatMap((h,S)=>Ud(e,u,h,S,e.container.placementKey)),m=f.filter(({member:h})=>h.isBusinessMember).map(({sourceMember:h})=>ZS(l,h,u.independent)),d=f.length>0?f:[{sourceMember:{key:`source:${l}:empty`,kind:e.container.kind==="starter-placeholder"?"starter-placeholder":"null-return",containerKey:e.container.placementKey,label:"empty-page",sourceFile:e.entryFile,isAtomic:!0},member:null}];r.set(l,d.map(({sourceMember:h})=>h)),o.set(l,m);let g=d[0]?.sourceMember.key??l;n.push({key:l,containerKey:g,businessMemberKeys:m.map(h=>h.key),isMultiMember:u.memberCount>1})}let i=[...r.values()].flat(),s=[...o.values()].flat(),a=i[0]?.key??null,c=e.placements.map(l=>({kind:"page-composition",placementKey:l.placementKey,documentVersion:e.documentVersion,composition:e.composition,placementUnitKey:l.placementUnitKey,relation:l.relation}));return{status:"supported",version:e.version,composition:e.composition,container:YS(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function GS(e){let t=e.diagnostics.map(QS);return{status:"unsupported",version:e.version,composition:e.composition,reason:qS(e.diagnostics),diagnostics:t}}function YS(e,t){switch(e.container.kind){case"jsx-container":return{kind:"jsx-container",key:e.container.placementKey,sourceMemberKey:t??e.container.placementKey,sourceFile:e.entryFile,componentName:e.defaultExportName??void 0};case"starter-placeholder":return{kind:"starter-placeholder",key:e.container.placementKey,sourceFile:e.entryFile};case"virtual-route-root":return{kind:"virtual-route-root",key:e.container.placementKey}}}function Ud(e,t,n,r,o){let i=`source:${t.placementUnitKey}:${r}:${n.memberKey}`;return[{sourceMember:{key:i,kind:n.kind==="jsx-element"?"jsx-element":"jsx-expression",containerKey:o,label:n.label,sourceFile:e.entryFile,isAtomic:n.kind!=="jsx-element"},member:n},...n.children.flatMap((a,c)=>Ud(e,t,a,c,i))]}function ZS(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function QS(e){return{code:eE(e),message:e.message}}function qS(e){let t=e[0];if(!t)return"UNSUPPORTED_ROUTE_STRUCTURE";switch(t.code){case"ROUTE_RETURN_NOT_FOUND":return"ROUTE_RETURN_NOT_FOUND";case"MULTIPLE_PAGE_RETURNS":return"MULTIPLE_PAGE_RETURNS";case"INDIRECT_RETURN_ONLY":return"INDIRECT_RETURN_ONLY";case"PLACEMENT_KEY_NOT_FOUND":return"RUNTIME_ANCHOR_UNRESOLVED";case"DOCUMENT_VERSION_STALE":return"VERSION_STALE";case"UNSUPPORTED_PAGE_SHAPE":return t.details?.reason==="ambiguous-placement"?"PAGE_CONTAINER_AMBIGUOUS":"UNSUPPORTED_ROUTE_STRUCTURE";default:return"UNSUPPORTED_ROUTE_STRUCTURE"}}function eE(e){switch(e.code){case"PLACEMENT_KEY_NOT_FOUND":return"RUNTIME_ANCHOR_UNRESOLVED";case"DOCUMENT_VERSION_STALE":return"VERSION_STALE";case"UNSUPPORTED_PAGE_SHAPE":return e.details?.reason==="ambiguous-placement"?"PAGE_CONTAINER_AMBIGUOUS":"UNSUPPORTED_ROUTE_STRUCTURE";default:return e.code}}function tE(e){let t=null;return HS(e,{ExportDefaultDeclaration(n){let r=n.get("declaration");if(r.isArrowFunctionExpression()||r.isFunctionDeclaration()||r.isFunctionExpression()){t=r,n.stop();return}if(!r.isIdentifier())return;let o=n.scope.getBinding(r.node.name);if(!o)return;let i=nE(o.path);i&&(t=i,n.stop())}}),t}function nE(e){if(e.isArrowFunctionExpression()||e.isFunctionDeclaration()||e.isFunctionExpression())return e;if(e.isVariableDeclarator()){let t=e.get("init");if(t.isArrowFunctionExpression()||t.isFunctionExpression())return t}return null}function rE(e){let t=e.get("body");if(!t.isBlockStatement()){let s=_r(t);return s?{ok:!0,expression:s}:{ok:!1,diagnostic:Be("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")}}let n=t.get("body"),r=n.at(-1);if(!r)return{ok:!1,diagnostic:Be("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")};if(!r.isReturnStatement())return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route default export must end with a direct terminal return",{reason:"terminal-return-required"})};for(let s of n.slice(0,-1)){if(s.isIfStatement()){if(!oE(s))return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route guard return shape is not statically safe",{reason:"guard-shape"})};continue}if(Kd(s)||Jd(s))return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains unsupported control flow before the terminal return",{reason:"control-flow-return"})}}let o=r.get("argument"),i=_r(o);return i?{ok:!0,expression:i}:{ok:!1,diagnostic:Be("ROUTE_RETURN_NOT_FOUND","Route default export returns without a boundary expression",{reason:"bare-return"})}}function oE(e){if(e.node.alternate)return null;let t=e.get("consequent");if(t.isReturnStatement())return t;if(!t.isBlockStatement())return null;let n=t.get("body"),r=n.at(-1);if(!r?.isReturnStatement())return null;for(let o of n.slice(0,-1))if(Kd(o)||Jd(o))return null;return r}function Kd(e){return e.isForStatement()||e.isForInStatement()||e.isForOfStatement()||e.isWhileStatement()||e.isDoWhileStatement()||e.isSwitchStatement()||e.isTryStatement()||e.isWithStatement()}function Jd(e){let t=!1;return e.traverse({Function(n){n.skip()},ReturnStatement(){t=!0}}),t}function iE(e,t){let n=t.scope.getBinding(e.node.name);if(!n||n.scope.path.node!==t.node)return{status:"not-local"};if(!n.path.isVariableDeclarator())return{status:"not-local"};let r=n.path.parentPath;if(!r?.isVariableDeclaration()||r.node.kind!=="const")return{status:"invalid"};let o=n.path.get("init");if(Array.isArray(o)||!o.node)return{status:"invalid"};let i=_r(o);return!i||!i.isJSXElement()&&!i.isJSXFragment()?{status:"invalid"}:n.referencePaths.length!==1||n.referencePaths[0]?.node!==e.node||n.constantViolations.length!==0?{status:"invalid"}:{status:"resolved",expression:i}}function sE(e){return e.isConditionalExpression()?Ld(_r(e.get("consequent")))&&Ld(_r(e.get("alternate"))):!1}function Ld(e){return!!(e&&(e.isJSXElement()||e.isJSXFragment()||e.isNullLiteral()))}function _r(e){if(!e.node)return null;let t=e;for(;;){if(t.isParenthesizedExpression()){t=t.get("expression");continue}if(t.isTSAsExpression()||t.isTSTypeAssertion()){t=t.get("expression");continue}if(t.isTSNonNullExpression()||t.isTypeCastExpression()){t=t.get("expression");continue}break}return t.isExpression()?t:null}function aE(e,t){if(e.isIdentifier())return Bd(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return Bd(n.node.name,t)}return!1}function Bd(e,t){let n=t.scope.getBinding(e);if(!n)return!1;let r=n.path;if(r.isFunctionDeclaration()||r.isFunctionExpression()||r.isArrowFunctionExpression())return!0;if(r.isVariableDeclarator()){let o=r.get("init");return o.isFunctionExpression()||o.isArrowFunctionExpression()}return!1}function cE(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&Ia(t)}function Ia(e){for(let t of e.get("children")){if(t.isJSXText()){if(t.node.value.trim())return!1;continue}if(t.isJSXExpressionContainer()){let n=t.get("expression");if(n.isJSXEmptyExpression()||n.isNullLiteral())continue;return!1}if(t.isJSXFragment()){if(!Ia(t))return!1;continue}if(t.isJSXElement()&&!Ia(t))return!1}return!0}function lE(e){let t=e;if(e.isJSXFragment()||Oe(e)){let r=Fr(e),o=r[0];if(r.length===1&&o?.isJSXElement()&&en(o))t=o;else return{ok:!0,path:t}}for(;t.isJSXElement()&&en(t);){let r=Fr(t);if(r.length!==1)return{ok:!0,path:t};let o=r[0];if(!o?.isJSXElement()||!en(o))return{ok:!0,path:t};if(Fr(o).length<=1)return{ok:!0,path:t};t=o}return{ok:!0,path:t}}function Fr(e){let t=[];for(let n of e.get("children"))if(!Array.isArray(n)){if(n.isJSXText()){n.node.value.trim()&&t.push(n);continue}if(n.isJSXExpressionContainer()){let r=n.get("expression");!r.isJSXEmptyExpression()&&!r.isNullLiteral()&&t.push(n);continue}if(n.isJSXFragment()){t.push(...Fr(n));continue}n.isJSXElement()&&(Oe(n)?t.push(...Fr(n)):t.push(n))}return t}function Gn(e){let t=[],n=!1;for(let r of e.get("children")){if(r.isJSXText()){if(!r.node.value.trim())continue;t.push({memberKey:Ra(r.node.type,r.node.start,r.node.end),kind:"text",nodeType:r.node.type,sourceRange:gt(r.node.loc),businessMemberCount:0,parentSourceRange:gt(e.node.loc),children:[],isBusinessMember:!1,label:"text"});continue}if(r.isJSXExpressionContainer()){let o=r.get("expression");if(o.isJSXEmptyExpression()||o.isNullLiteral())continue;if(o.isJSXFragment()){let i=Gn(o);n||=i.unsupported,t.push(...i.members);continue}if(o.isJSXElement()){let i=en(o)?Gn(o):null;n||=i?.unsupported??!1,t.push({...Ca(o,i?.members),sourceRange:gt(r.node.loc),parentSourceRange:gt(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:Ra(o.node.type,o.node.start,o.node.end),kind:"atomic-expression",nodeType:o.node.type,sourceRange:gt(r.node.loc),businessMemberCount:1,parentSourceRange:gt(e.node.loc),children:[],isBusinessMember:!0,label:"atomic-expression"});continue}if(r.isJSXFragment()||r.isJSXElement()&&Oe(r)){let o=Gn(r);n||=o.unsupported,t.push(...o.members);continue}if(r.isJSXElement()){let o=en(r)?Gn(r):null;n||=o?.unsupported??!1,t.push({...Ca(r,o?.members),parentSourceRange:gt(e.node.loc)})}}return{members:t,unsupported:n}}function Ca(e,t){let n=e.isJSXElement()&&en(e)?t??Gn(e).members:[],r=e.isJSXElement()&&!en(e)&&!Oe(e);return{memberKey:Ra(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:gt(e.node.loc),businessMemberCount:r?1:Xd(n),parentSourceRange:gt(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:uE(e)}}function en(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name[0]===t.name[0]?.toLowerCase()}function uE(e){if(e.isJSXFragment())return"Fragment";let t=e.node.openingElement.name;if(t.type==="JSXIdentifier")return t.name;if(t.type==="JSXMemberExpression"){let n=t.object;return`${n.type==="JSXIdentifier"?n.name:"member"}.${t.property.name}`}return t.name.name}function Xd(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function mi(e){return e.length===0?0:Math.max(1,Xd(e))}function $d(e){let t=gt(e.containerPath.node.loc),n=Na(e.source,e.containerPath.node.start,e.containerPath.node.end),r=ht(e.input,e.containerKind,e.sourceKind,t),o=ht(e.input,e.containerKind,"placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:mi(e.members)<=1,memberCount:mi(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function dE(e){let t=gt(e.expression.node.loc),n=Na(e.source,e.expression.node.start,e.expression.node.end),r=ht(e.input,"virtual-route-root","atomic-expression",t),o=ht(e.input,"virtual-route-root","placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:!0,memberCount:1,sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:[{memberKey:ht(e.input,"virtual-route-root","atomic-member",t),kind:"atomic-expression",nodeType:e.expression.node.type,sourceRange:t,businessMemberCount:1,parentSourceRange:null,children:[],isBusinessMember:!0,label:e.expression.node.type}]}}function zd(e,t){let n=gt(t.node.loc),r=Na(e.source,t.node.start,t.node.end);return!n||!r?null:{kind:"expression",documentVersion:e.version,sourceRange:n,sourceHash:r}}function Ea(e,t,n,r,o){let i=zd(e,o);if(!i)return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let s=n.containerSourceRange??n.sourceRange,a=fE(e,n,s),c=pa(a),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Wd(t),container:{kind:r.kind,placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,version:e.version,isEmptyPage:n.memberCount===0,sourceKind:r.sourceKind,sourceRange:s,sourceHash:n.sourceHash},placements:a,diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map,mutationTarget:i};return Object.defineProperties(l,{placementByKey:{value:c.placementByKey,enumerable:!1},unitByKey:{value:c.unitByKey,enumerable:!1},placementsByUnitKey:{value:c.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:c.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:l}}function fE(e,t,n){if(t.members.length===0)return[t];let r=[],o=(l,u,f,m,d,g,h=n)=>({...t,placementKey:u,placementUnitKey:f,containerKey:t.placementKey,independent:mi(g)<=1,memberCount:mi(g),sourceRange:m,sourceHash:m?ka(e.source,m):null,relation:l,containerSourceRange:h,containerSourceHash:h?ka(e.source,h):null,anchorSourceRange:d,anchorSourceHash:d?ka(e.source,d):null,members:g}),i=t.placementKey,s=t.members.map(l=>ht(e,i,"placement-unit",l.sourceRange)),a=s[0]??t.placementUnitKey,c=s.at(-1)??t.placementUnitKey;r.push(o("prepend",ht(e,i,"prepend",n),a,n,null,[]));for(let l of t.members){let u=l.parentSourceRange??n,f=ht(e,i,"placement-unit",l.sourceRange);r.push(o("before",ht(e,f,"before",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u)),r.push(o("after",ht(e,f,"after",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u))}return r.push(o("append",i,c,n,null,[])),r}function va(e,t,n,r){let o=zd(e,r);if(!o)return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let i=ht(e,n,"empty-container",void 0),s=ht(e,n,"empty-unit",void 0),a={placementKey:i,placementUnitKey:s,version:e.version,containerKey:i,independent:!0,memberCount:0,sourceRange:null,sourceHash:null,relation:"append",containerSourceRange:null,containerSourceHash:null,anchorSourceRange:null,anchorSourceHash:null,members:[]},c=pa([a]),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Wd(t),container:{kind:n,placementKey:i,placementUnitKey:s,version:e.version,isEmptyPage:!0,sourceKind:n==="starter-placeholder"?"starter-placeholder":"jsx-fragment",sourceRange:null,sourceHash:null},placements:[a],diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map,mutationTarget:o};return Object.defineProperties(l,{placementByKey:{value:c.placementByKey,enumerable:!1},unitByKey:{value:c.unitByKey,enumerable:!1},placementsByUnitKey:{value:c.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:c.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:l}}function St(e,t){return{ok:!1,projection:{status:"unsupported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,diagnostics:t}}}function Be(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,details:n}}function ht(e,t,n,r){return Hd([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function Ra(e,t,n){return Hd(["member",e,String(t??-1),String(n??-1)])}function Hd(e){return`pc_${wa("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function Na(e,t,n){return t==null||n==null?null:`sha256:${wa("sha256").update(e.slice(t,n)).digest("hex")}`}function ka(e,t){let n=[0];for(let i=0;i<e.length;i+=1)e.charCodeAt(i)===10&&n.push(i+1);let r=n[t.startLine-1],o=n[t.endLine-1];return r===void 0||o===void 0?null:`sha256:${wa("sha256").update(e.slice(r+t.startColumn,o+t.endColumn)).digest("hex")}`}function gt(e){return e?{startLine:e.start.line,startColumn:e.start.column,endLine:e.end.line,endColumn:e.end.column}:null}function Wd(e){if(e.isFunctionDeclaration())return e.node.id?.name??null;let t=e.parentPath;return t?.isVariableDeclarator()&&t.node.id.type==="Identifier"?t.node.id.name:null}import{PageTemplateIdSchema as IE}from"@vcp-dev/contracts";import WA from"node:fs";import YA from"node:path";var mE=/^page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function Or(e){let t=e.map(r=>kE(r.path)),n=gE(t);return n?t.filter(r=>yE(n,r)).map(r=>({routeId:xE(n,r),entryFile:r})).sort((r,o)=>r.routeId.localeCompare(o.routeId)):[]}function Pa(e,t=""){let r=((e??"/").trim()||"/").split(/[?#]/,1)[0]||"/",o=r.startsWith("/")?r:`/${r}`,i=vE(t),s=i&&(o===i||o.startsWith(`${i}/`))?o.slice(i.length)||"/":o,a=s.startsWith("/")?s:`/${s}`;return a==="/"?"/":a.replace(/\/+$/,"")}function gE(e){return e.some(r=>r.startsWith("app/")&&!hE(r))?"app":e.some(r=>r.startsWith("src/app/"))?"src/app":null}function hE(e){return/^(?:src\/)?app\/(?:_vcp|\.vcp)/.test(e)}function yE(e,t){if(!t.startsWith(`${e}/`))return!1;let n=t.slice(t.lastIndexOf("/")+1);return mE.test(n)?t.slice(e.length+1,-n.length-1).split("/").filter(Boolean).every(r=>!r.startsWith("_")&&!r.startsWith(".")):!1}function xE(e,t){let n=t.slice(e.length+1).split("/").slice(0,-1).map(SE).filter(r=>!!r);return n.length===0?"/":`/${n.join("/")}`}function bE(e){return e.startsWith("(")&&e.endsWith(")")}function SE(e){return!e||e.startsWith("@")||e.startsWith("_")||bE(e)?null:EE(e)}function EE(e){return e.replace(/^\((?:\.|\.\.|\.\.\.)\)/,"")}function vE(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function kE(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}var Mr=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="PageTemplateManagedSourceError"}};function Ze(e,t={}){throw new Mr("PAGE_TEMPLATE_MANAGED_SOURCE_INVALID",`Invalid page-template source (${e}): ${t.path??t.routeId??t.templateId??""}`,{reason:e,...t})}function Aa(e){return IE.safeParse(e).success||Ze("invalid-template-id",{templateId:e}),Buffer.from(e,"utf8").toString("base64url")}function Gd(e){/^[A-Za-z0-9_-]{1,255}$/.test(e)||Ze("invalid-template-key",{path:e});let t;try{t=new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.from(e,"base64url"))}catch{return Ze("invalid-template-key",{path:e})}return Aa(t)!==e&&Ze("noncanonical-template-key",{path:e}),t}function CE(e){let t=Pa(e),n=t.slice(1).split("/");return(!e.startsWith("/")||/[?#\\%\u0000-\u001f]/.test(e)||t.startsWith("/.vcp")||t!=="/"&&n.some(r=>!r||r==="."||r===".."||r.startsWith("@")||r.startsWith("_")||r.startsWith("(")||RE(r)&&!Yd(r)))&&Ze("invalid-public-route",{routeId:e}),t}function RE(e){return e.includes("[")||e.includes("]")}function Yd(e){return/^\[\[\.\.\.[^\[\]]+\]\]$|^\[[^\[\]]+\]$/.test(e)}function Zd(e){return e.some(Yd)}function Qd(e,t,n="app"){n!=="app"&&n!=="src/app"&&Ze("invalid-app-root");let r=CE(e),o=Aa(t),i=Zd(r.slice(1).split("/")),s=i?`${n}/.vcp/page-templates/${o}${r}`:`${n}/.vcp/page-templates${r==="/"?"":r}`,a=i?`${s}/page.tsx`:`${s}/${o}/page.tsx`;return(Buffer.byteLength(a,"utf8")>4095||a.split("/").some(c=>Buffer.byteLength(c,"utf8")>255))&&Ze("path-too-long",{path:a}),{appRoot:n,routeRoot:s,templateKey:o,templateEntryFile:a}}function qd(e){return/^(?:src\/)?app\/\.vcp\/page-templates\//.test(e)}function ef(e){let t=Array.isArray(e)?e.map(r=>[r.path,r.content]):[...e],n=new Map;for(let[r,o]of t){let i=r.replace(/\\/g,"/").replace(/^\.\//,"");i.split("/").some(s=>s===".."||s===".")&&Ze("invalid-file-path",{path:i}),n.has(i)&&Ze("duplicate-file-path",{path:i}),n.set(i,o)}return n}function hi(e){let t=ef(e.files),n=Or([...t.keys()].map(i=>({path:i}))),r=new Map;for(let i of n){if(r.has(i.routeId))throw new Mr("PAGE_TEMPLATE_ROUTE_AMBIGUOUS",`Multiple canonical entries for ${i.routeId}`,{reason:"duplicate-route-id",routeId:i.routeId,candidates:n.filter(s=>s.routeId===i.routeId).map(s=>s.entryFile)});r.set(i.routeId,i.entryFile)}let o=[];for(let i of t.keys()){if(!qd(i))continue;let s=/^(app|src\/app)\/\.vcp\/page-templates\/(.+)\/page\.tsx$/.exec(i);s||Ze("candidate-must-be-single-page",{path:i});let a=s[1],c=s[2].split("/"),l=Zd(c),u=l?c[0]:c.pop(),f=l?c.slice(1):c,m=Gd(u),d=f.length?`/${f.join("/")}`:"/";Qd(d,m,a).templateEntryFile!==i&&Ze("candidate-path-mismatch",{path:i,routeId:d});let h=r.get(d);(!h||!h.startsWith(`${a}/`))&&Ze("canonical-entry-missing",{path:i,routeId:d}),o.push({routeId:d,templateId:m,entryFile:i,canonicalEntryFile:h,appRoot:a})}return o.sort((i,s)=>gi(i.routeId,s.routeId)||gi(i.templateId,s.templateId))}function tf(e){let t=ef(e.files),n=hi({files:t}),r=Or([...t.keys()].map(o=>({path:o}))).map(o=>({context:{routeId:o.routeId},entryFile:o.entryFile}));return r.push(...n.map(o=>({context:{routeId:o.routeId,effectiveTemplateId:o.templateId},entryFile:o.entryFile}))),r.sort((o,i)=>gi(o.context.routeId,i.context.routeId)||(o.context.effectiveTemplateId===void 0?-1:i.context.effectiveTemplateId===void 0?1:gi(o.context.effectiveTemplateId,i.context.effectiveTemplateId)))}function wE(e){let t=Pa(e.selector.routeId),n=tf({files:e.files}),r=n.find(i=>i.context.routeId===t&&i.context.effectiveTemplateId===void 0);(!r||r.entryFile!==e.canonicalEntryFile)&&Ze("canonical-entry-mismatch",{routeId:t,path:e.canonicalEntryFile});let o=e.selector.templateId===void 0?r:n.find(i=>i.context.routeId===t&&i.context.effectiveTemplateId===e.selector.templateId);return o||Ze("template-selection-not-found",{routeId:t,templateId:e.selector.templateId}),{...o,mode:e.selector.templateId===void 0?"direct":"candidate",effectiveEntryFile:o.entryFile}}function gi(e,t){return e<t?-1:e>t?1:0}import{HOME_PAGE_URL_PATH as VE}from"@vcp-dev/contracts";import{parse as ZT}from"@babel/parser";import{parse as iT}from"@babel/parser";import{FormBlockIdSchema as aT,FormSpecV1Schema as cT}from"@vcp-dev/contracts";var Dr="components/site/generated/forms",lT=`${Dr}/vcp-form-runtime.tsx`,yi="[A-Za-z0-9][A-Za-z0-9_-]{0,127}",uT=new RegExp(`^${Dr}/form-(${yi})\\.spec\\.ts$`),dT=new RegExp(`^${Dr}/form-(${yi})\\.tsx$`),fT=new RegExp(`^@/${Dr}/form-(${yi})$`),pT=new RegExp(`(?:^|/)${Dr}/form-(${yi})(?:\\.tsx?)?$`);var mT=Symbol("invalid-literal");import{createHash as yT}from"node:crypto";import{posix as bT}from"node:path";import{parse as ET}from"@babel/parser";import{FormSpecV1Schema as kT}from"@vcp-dev/contracts";var IT=Symbol("dynamic");import{parse as NE}from"@babel/parser";function xi(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"&&typeof t.type=="string"):[]}var PE=/^(?:src\/)?app\/(.*)page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function AE(e){let t=PE.exec(e);if(!t)return null;let r=(t[1]??"").split("/").filter(o=>o.length>0&&!/^\(.+\)$/.test(o));return r.length===0?"/":`/${r.join("/")}`}function TE(e){let t=e;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function nf(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function FE(e){let t=e;for(;t&&(t.type==="TSAsExpression"||t.type==="TSSatisfiesExpression"||t.type==="ParenthesizedExpression");)t=t.expression??null;return t}function Ta(e){let t=e;if(t?.type==="StringLiteral"||t?.type==="NumericLiteral"||t?.type==="BooleanLiteral")return t.value;if(t?.type==="NullLiteral")return null;if(t?.type==="ArrayExpression")return(t.elements??[]).map(Ta);if(t?.type==="ObjectExpression"){let n={};for(let r of xi(t.properties)){if(r.type!=="ObjectProperty"||r.computed)throw new Error("dynamic object property");let o=nf(r.key);if(!o)throw new Error("unsupported object key");n[o]=Ta(r.value)}return n}throw new Error(`unsupported static value: ${t?.type??"unknown"}`)}function Fa(e,t){let n=[],r=AE(t);if(r===null)return{found:!1,seo:null,diagnostics:n};let o;try{o=NE(e,{sourceType:"module",plugins:["typescript","jsx"]})}catch(l){return n.push({code:"page-seo.parse-failed",message:l instanceof Error?l.message:String(l)}),{found:!1,seo:null,diagnostics:n}}let i;for(let l of xi(o.program.body)){let u=l.type==="ExportNamedDeclaration"?l.declaration:l;if(u?.type==="VariableDeclaration")for(let f of xi(u.declarations)){let m=f.id;m?.type==="Identifier"&&m.name==="PAGE_SEO"&&(i=f.init)}}if(i==null)return{found:!1,seo:null,diagnostics:n};let s=FE(i);if(!s)return{found:!1,seo:null,diagnostics:n};if(s.type!=="ObjectExpression")return n.push({code:"page-seo.dynamic-declaration",message:"PAGE_SEO is not a static object literal"}),{found:!1,seo:null,diagnostics:n};let a={};for(let l of xi(s.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=nf(l.key);if(!(u!=="path"&&u!=="title"&&u!=="description"&&u!=="keywords"&&u!=="meta_tags_json"&&u!=="schema_json"&&u!=="breadcrumbs_json")){if(u==="path"||u==="title"||u==="description"||u==="keywords"){let f=TE(l.value);if(f===void 0){n.push({code:"page-seo.dynamic-field",message:`PAGE_SEO.${u} is not a static string; skipped`});continue}a[u]=f;continue}try{let f=Ta(l.value);u==="meta_tags_json"&&f!==null&&typeof f=="object"&&!Array.isArray(f)?a.meta_tags_json=f:u==="schema_json"&&f!==null&&typeof f=="object"?a.schema_json=f:u==="breadcrumbs_json"&&Array.isArray(f)?a.breadcrumbs_json=f:n.push({code:"page-seo.dynamic-field",message:`PAGE_SEO.${u} has unsupported static shape; skipped`})}catch(f){n.push({code:"page-seo.dynamic-field",message:`PAGE_SEO.${u} is not a static JSON-like value; skipped: ${f instanceof Error?f.message:String(f)}`})}}}let c=r;return a.path!==void 0&&(a.path!==r&&n.push({code:"page-seo.path-mismatch",message:`PAGE_SEO.path "${a.path}" != derived "${r}"; using PAGE_SEO.path`}),c=a.path),{found:!0,seo:{path:c,...a.title!==void 0?{title:a.title}:{},...a.description!==void 0?{description:a.description}:{},...a.keywords!==void 0?{keywords:a.keywords}:{},...a.meta_tags_json!==void 0?{meta_tags_json:a.meta_tags_json}:{},...a.schema_json!==void 0?{schema_json:a.schema_json}:{},...a.breadcrumbs_json!==void 0?{breadcrumbs_json:a.breadcrumbs_json}:{}},diagnostics:n}}import{parse as _E}from"@babel/parser";var rf=["page","anchor","external","email","phone","group","file"],OE=["link","cta"],sf=["description","badge","iconKey"],_a=["label","targetType","href","role","openInNewTab","nofollow","children",...sf],ME=new Set(_a);function Br(e){return Array.isArray(e)?e:[]}function Lr(e){let t=e;return t?.type==="StringLiteral"&&typeof t.value=="string"?t.value:void 0}function DE(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function of(e){let t=e;return t?.type==="BooleanLiteral"&&typeof t.value=="boolean"?t.value:void 0}function Oa(e){let t=[],n;try{n=_E(e,{sourceType:"module",plugins:["typescript","jsx"]})}catch(i){return{items:[],diagnostics:[{severity:"fatal",path:"NAV_ITEMS",message:`parse failed: ${String(i)}`}]}}let r;for(let i of Br(n.program.body)){let s=i.type==="ExportNamedDeclaration"?i.declaration:i;if(s?.type==="VariableDeclaration")for(let a of Br(s.declarations)){let c=a.id;c?.type==="Identifier"&&c.name==="NAV_ITEMS"&&(r=a.init)}}for(;r&&(r.type==="TSAsExpression"||r.type==="TSSatisfiesExpression"||r.type==="TSInstantiationExpression");)r=r.expression;if(!r||r.type!=="ArrayExpression")return{items:[],diagnostics:[{severity:"fatal",path:"NAV_ITEMS",message:"missing top-level NAV_ITEMS array literal"}]};let o=[];return Br(r.elements).forEach((i,s)=>{let a=af(i,`NAV_ITEMS[${s}]`,t);a&&o.push(a)}),{items:o,diagnostics:t}}function af(e,t,n){if(e?.type!=="ObjectExpression")return n.push({severity:"fatal",path:t,message:"nav item must be an object literal"}),null;let r={};for(let l of Br(e.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=DE(l.key);u&&(r[u]=l.value)}let o=Lr(r.label),i=Lr(r.targetType);if(!o)return n.push({severity:"fatal",path:`${t}.label`,message:"label must be a static string"}),null;if(!i||!rf.includes(i))return n.push({severity:"fatal",path:`${t}.targetType`,message:`targetType must be one of ${rf.join("/")}`}),null;r.group!==void 0&&n.push({severity:"warning",code:"leaf-group-field",path:`${t}.group`,message:'unsupported leaf group field ignored; use a canonical targetType: "group" node with children'});let s={label:o,targetType:i};for(let l of sf){if(r[l]===void 0)continue;let u=Lr(r[l]);u!==void 0?s[l]=u:n.push({severity:"warning",path:`${t}.${l}`,message:`${l} ignored: not a static string`})}r.icon!==void 0&&n.push({severity:"warning",path:`${t}.icon`,message:"icon component ref ignored; use static iconKey"});for(let l of Object.keys(r))ME.has(l)||l==="group"||l==="icon"||n.push({severity:"warning",code:"unknown-field",path:`${t}.${l}`,message:`unsupported field \`${l}\` ignored; NAV_ITEMS only carries ${_a.join("/")}`});if(r.children!==void 0){if(r.children.type!=="ArrayExpression")return n.push({severity:"fatal",path:`${t}.children`,message:"children must be a static array"}),null;let l=[];Br(r.children.elements).forEach((u,f)=>{let m=af(u,`${t}.children[${f}]`,n);m&&l.push(m)}),s.children=l}if(i==="group")return s.children?s:(n.push({severity:"fatal",path:`${t}.children`,message:"group item requires children"}),null);let a=Lr(r.href);if(!a)return n.push({severity:"fatal",path:`${t}.href`,message:"href must be a static string for non-group item"}),null;s.href=a;let c=Lr(r.role);if(c!==void 0&&(OE.includes(c)?s.role=c:n.push({severity:"warning",path:`${t}.role`,message:"role ignored: not link/cta"})),r.openInNewTab!==void 0){let l=of(r.openInNewTab);l!==void 0?s.openInNewTab=l:n.push({severity:"warning",path:`${t}.openInNewTab`,message:"openInNewTab ignored: not a static boolean"})}if(r.nofollow!==void 0){let l=of(r.nofollow);l!==void 0?s.nofollow=l:n.push({severity:"warning",path:`${t}.nofollow`,message:"nofollow ignored: not a static boolean"})}return s}import{parse as LE}from"@babel/parser";function $r(e){return Array.isArray(e)?e:[]}function cf(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression";)t=t.expression;return t?.type==="ArrayExpression"?t:void 0}function BE(e){let t;try{t=LE(e,{sourceType:"module",plugins:["typescript","jsx"],tokens:!0})}catch{return{status:"unsupported"}}let n=[];for(let o of $r(t.program.body)){let i=o.type==="ExportNamedDeclaration"?o.declaration:o;if(i?.type==="VariableDeclaration")for(let s of $r(i.declarations)){let a=s.id;a?.type==="Identifier"&&a.name==="NAV_ITEMS"&&n.push(s)}}if(n.length===0)return{status:"navigation_not_found"};if(n.length!==1)return{status:"unsupported"};let r=cf(n[0]?.init);return!r||typeof r.start!="number"||typeof r.end!="number"?{status:"unsupported"}:{status:"ok",array:r,start:r.start,end:r.end}}function Ma(e,t){let n=lf(t);if(!n)return{status:"unsupported",source:e};let r=BE(e);if(r.status!=="ok")return{status:r.status,source:e};let o=r.array;if(Oa(e).diagnostics.some(({severity:l})=>l==="fatal"))return{status:"unsupported",source:e};let s=[],a=l=>{let u=$r(l.elements);for(let[f,m]of u.entries()){if(jE(m,n)){let g=u[f+1],h=u[f-1],S=m.start,E=m.end;if(typeof S!="number"||typeof E!="number")continue;if(g&&typeof g.start=="number")s.push({start:S,end:g.start});else if(h&&typeof h.end=="number")s.push({start:h.end,end:E});else{let k=/^\s*,/.exec(e.slice(E));s.push({start:S,end:k?E+k[0].length:E})}continue}let d=$E(m);d&&a(d)}};if(a(o),s.length===0)return{status:"not_found",source:e};let c=e;for(let l of s.sort((u,f)=>f.start-u.start))c=c.slice(0,l.start)+c.slice(l.end);return{status:"removed",source:c,removedCount:s.length}}function $E(e){if(e.type==="ObjectExpression")for(let t of $r(e.properties)){if(t.type!=="ObjectProperty")continue;let n=t.key;if((n?.name??n?.value)==="children")return cf(t.value)}}function lf(e){let t=e.trim();return t.startsWith("/")?t==="/"?t:t.replace(/\/+$/,""):null}function jE(e,t){if(e.type!=="ObjectExpression")return!1;let n,r;for(let o of $r(e.properties)){if(o.type!=="ObjectProperty")continue;let i=o.key,s=o.value,a=i?.name??i?.value;s?.type==="StringLiteral"&&(a==="href"&&(n=String(s.value)),a==="targetType"&&(r=String(s.value)))}return r==="page"&&lf(n??"")===t}import{estimateNavLabelWidth as OT}from"@vcp-dev/contracts";import{parse as LT}from"@babel/parser";var UE="components/site/generated/",jr=[".tsx",".ts",".jsx",".js"];function uf(e){if(e.expectedUrlPath===VE)return{ok:!1,code:"HOME_PAGE_LOCKED",message:"The homepage source is protected from deletion."};let t=new Set(Or(Object.keys(e.files).map(m=>({path:m}))).map(m=>m.entryFile)),n=Object.entries(e.files).filter(([m,d])=>{let g=m.replace(/\\/g,"/");if(!t.has(g))return!1;let h=Fa(d,g);return h.found&&h.seo?.path===e.expectedUrlPath});if(n.length===0)return{ok:!1,code:"ROUTE_NOT_FOUND",message:"No route uniquely matches the requested page identity."};if(n.length>1)return{ok:!1,code:"ROUTE_AMBIGUOUS",message:"Multiple routes match the requested page identity."};let[r]=n[0];try{if(hi({files:new Map(Object.entries(e.files))}).some(d=>d.canonicalEntryFile===r))return{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:"Clean up page template candidates before deleting their canonical page."}}catch(m){return{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:m instanceof Error?m.message:"Invalid page template source."}}let o=KE(e.files);if(!o.ok)return o.error;let i=o.graph,s=HE(r,i),a=WE(r,s,i),c=[...s].filter(m=>!a.has(m)).sort((m,d)=>m.localeCompare(d)),l=[{operation:"delete",file:r},...[...a].sort((m,d)=>m.localeCompare(d)).map(m=>({operation:"delete",file:m}))],u=[],f=[];for(let[m,d]of Object.entries(e.files))if(m!==r){if(d.includes("NAV_ITEMS")){let g=Ma(d,e.expectedUrlPath);g.status==="removed"?(l.push({operation:"upsert",file:m,content:g.source}),u.push(m)):g.status==="unsupported"&&f.push(`unsupported_navigation:${m}`)}d.includes(e.expectedUrlPath)&&!d.includes("NAV_ITEMS")&&f.push(`preserved_link:${m}`)}return{ok:!0,edits:l,deletedFiles:[r,...[...a].sort((m,d)=>m.localeCompare(d))],updatedFiles:u,preservedSharedFiles:c,warnings:f}}function KE(e){let t=new Set(Object.keys(e)),n=new Map;for(let[r,o]of Object.entries(e)){let i=r.replace(/\\/g,"/");if(i==="next-env.d.ts"||i.endsWith("/next-env.d.ts")||!JE(r))continue;let s=Cr(r,o);if(!s.ok)return{ok:!1,error:{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:`Page source dependencies could not be proven safe: ${r} (parse-failed).`}};let a=new Set;for(let{specifier:c}of s.module.imports){if(XE(c))continue;let l=Ir(r,c),u=zE(l,t);if(!u)return{ok:!1,error:{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:`Page source dependencies could not be proven safe: ${r} -> ${c} (import-not-found).`}};a.add(u)}n.set(r,a)}return{ok:!0,graph:n}}function JE(e){let t=e.toLowerCase();return jr.some(n=>t.endsWith(n))}function XE(e){return!!(/\.([a-z0-9]+)$/i.exec(e)&&!jr.some(n=>e.endsWith(n)))}function zE(e,t){let n=e.replace(/\\/g,"/");return(jr.some(o=>n.endsWith(o))?[n]:[...jr.map(o=>`${n}${o}`),...jr.map(o=>`${n}/index${o}`)]).find(o=>t.has(o))??null}function HE(e,t){let n=new Set,r=[...t.get(e)??[]];for(;r.length>0;){let o=r.pop();!o.startsWith(UE)||n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function WE(e,t,n){let r=new Set(t),o=!0;for(;o;){o=!1;for(let i of[...r])[...n].some(([a,c])=>a!==e&&!r.has(a)&&c.has(i))&&(r.delete(i),o=!0)}return r}import*as lp from"@babel/parser";import*as le from"@babel/types";import*as Mi from"node:path";import*as ge from"@babel/types";function df(e){if(e.path.isVariableDeclarator()){let n=e.path.get("init");return n?.isExpression()?{expressionPath:n}:null}if(!e.path.isIdentifier()||!e.path.parentPath?.isVariableDeclarator())return null;let t=e.path.parentPath.get("init");return t?.isExpression()?{expressionPath:t}:null}function Ft(e){if(e.path.isObjectPattern()||e.path.isArrayPattern())return vn(e.path.node,e.identifier.name);if(e.path.isVariableDeclarator()){let n=e.path.node.id;if(ge.isObjectPattern(n)||ge.isArrayPattern(n))return vn(n,e.identifier.name)}if(!e.path.isIdentifier())return!1;let t=e.path.parentPath;for(;t;){if(t.isAssignmentPattern()){let n=t.get("left");if(YE(e.path,n))return!0}if(t.isFunction()||t.isVariableDeclarator())return!1;t=t.parentPath}return!1}function vn(e,t,n=!1){return ge.isIdentifier(e)?e.name===t&&n:ge.isObjectPattern(e)?e.properties.some(r=>ge.isObjectProperty(r)?vn(r.value,t,n):vn(r.argument,t,n)):ge.isArrayPattern(e)?e.elements.some(r=>{if(!r)return!1;let o=ge.isRestElement(r)?r.argument:r;return vn(o,t,n)}):ge.isAssignmentPattern(e)?vn(e.left,t,!0):ge.isRestElement(e)?vn(e.argument,t,n):!1}function Yn(e,t){if(e.path.isObjectPattern()){if(t){let r=Et(e.path.node,t.base),[o,...i]=r??[];if(o?.kind==="property")return{propName:o.name,remainingPath:[...i,...t.path],hasDefault:Ft(e)}}return t?{propName:t.base,remainingPath:t.path,hasDefault:Ft(e)}:null}if(e.path.isVariableDeclarator()){let r=e.path.get("init");if(r?.isExpression()){let o=ff(r),i=!1,s=o?o.initBinding&&Da(o.initBinding)?(i=Ft(o.initBinding),[...o.initPathPrefix]):o.initBinding?(()=>{let c=Yn(o.initBinding,{kind:"identifier",expression:o.initBinding.identifier.name,base:o.initBinding.identifier.name,path:[]});return i=c?.hasDefault??!1,c?[{kind:"property",name:c.propName},...c.remainingPath,...o.initPathPrefix]:null})():null:null,a=Et(e.path.node.id,e.identifier.name);if(s&&a){let c=[...s,...a],[l,...u]=c;return!l||l.kind!=="property"?null:{propName:l.name,remainingPath:[...u,...t?.path??[]],hasDefault:i||Ft(e)}}}}let n=qE(e);if(n){let r=GE(n,e);if(r){let[s,...a]=r.path;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:r.hasDefault||Ft(e)}}if(n.findParent(s=>s.isVariableDeclarator()))return null;let o=ZE(e);if(o){let[s,...a]=o;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:Ft(e)}}let i=Vr(n.node);return i?{propName:i,remainingPath:t?.path??[],hasDefault:Ft(e)}:null}if(Da(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:Ft(e)}}return null}function GE(e,t){let n=e.findParent(u=>u.isVariableDeclarator());if(!n?.isVariableDeclarator())return null;let r=n.get("init");if(!r?.isExpression())return null;let o=ff(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=Da(i)?(a=Ft(i),[...s]):(()=>{let u=Yn(i,{kind:"identifier",expression:i.identifier.name,base:i.identifier.name,path:[]});return a=u?.hasDefault??!1,u?[{kind:"property",name:u.propName},...u.remainingPath,...s]:null})();if(!c)return null;let l=Et(n.node.id,t.identifier.name);return l?{path:[...c,...l],hasDefault:a||Ft(t)}:null}function ff(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=ev(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function Da(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function YE(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function ZE(e){let t=e.identifier.name,n=e.path.getFunctionParent();if(!n)return null;let r=n.get("params"),o=Array.isArray(r)?r:[r];for(let i of o){let a=Et(i.node,t);if(a)return a}return null}function pf(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=bi(a,e.identifier.name);if(c&&(!n||c.propName===n))return{propName:c.propName,componentName:t,expressionPath:c.expressionPath,displayPath:`${t}.${c.propName}.default`}}}if(e.path.isObjectPattern())for(let a of e.path.get("properties")){if(!a.isObjectProperty())continue;let c=Vr(a.node);if(!c||n&&c!==n)continue;let l=a.get("value");if(!l.isAssignmentPattern())continue;let u=l.get("right");if(u.isExpression())return{propName:c,componentName:t,expressionPath:u,displayPath:`${t}.${c}.default`}}let r=QE(e);if(!r)return null;let o=r.parentPath;if(!o?.isObjectProperty())return null;let i=Vr(o.node);if(!i||n&&i!==n)return null;let s=r.get("right");return s.isExpression()?{propName:i,componentName:t,expressionPath:s,displayPath:`${t}.${i}.default`}:null}function bi(e,t){if(e.isObjectPattern()){for(let n of e.get("properties"))if(n.isObjectProperty()){let r=Vr(n.node),o=n.get("value");if(o.isAssignmentPattern()){let i=o.get("left"),s=o.get("right");if(r&&!Array.isArray(i)&&Et(i.node,t)&&!Array.isArray(s)&&s.isExpression())return{propName:r,expressionPath:s}}if(!Array.isArray(o)&&(o.isObjectPattern()||o.isArrayPattern())){let i=bi(o,t);if(i)return i}}else if(n.isRestElement()){let r=n.get("argument");if(!Array.isArray(r)&&(r.isObjectPattern()||r.isArrayPattern())){let o=bi(r,t);if(o)return o}}}if(e.isArrayPattern())for(let n of e.get("elements")){if(!n)continue;let r=n.isRestElement()&&!Array.isArray(n.get("argument"))?n.get("argument"):n;if(!Array.isArray(r)&&(r.isObjectPattern()||r.isArrayPattern())){let o=bi(r,t);if(o)return o}}return null}function Et(e,t,n=[]){if(ge.isIdentifier(e))return e.name===t?n:null;if(ge.isObjectPattern(e)){for(let r of e.properties)if(ge.isObjectProperty(r)){let o=Vr(r);if(!o)continue;let i=Et(r.value,t,[...n,{kind:"property",name:o}]);if(i)return i}else if(ge.isRestElement(r)){let o=Et(r.argument,t,n);if(o)return o}}if(ge.isArrayPattern(e))for(let r=0;r<e.elements.length;r+=1){let o=e.elements[r];if(!o)continue;let i=ge.isRestElement(o)?o.argument:o,s=Et(i,t,[...n,{kind:"index",index:r}]);if(s)return s}return ge.isAssignmentPattern(e)?Et(e.left,t,n):null}function QE(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isAssignmentPattern()&&t.node.left===e.path.node?t:null}function qE(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;if(t?.isObjectProperty()&&t.parentPath?.isObjectPattern())return t;let n=t?.isAssignmentPattern()?t.parentPath:null;return n?.isObjectProperty()&&n.parentPath?.isObjectPattern()?n:null}function Vr(e){return e.computed?null:ge.isIdentifier(e.key)?e.key.name:ge.isStringLiteral(e.key)?e.key.value:null}function ev(e){let t=[],n=e;for(;ge.isMemberExpression(n);){if(n.computed)if(ge.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ge.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(ge.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return ge.isIdentifier(n)?{base:n.name,path:t}:null}import*as xf from"@babel/parser";import $a from"@babel/traverse";import*as Zn from"@babel/types";import*as oe from"@babel/types";function vi(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?Si(n,t):null}if(e.isMemberExpression()){let n=sv(e.node),r=tv(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?Si(o,[...r,...t]):null}return e.isAwaitExpression()||Ba(e.node)?tn(cv(e.node),t,"awaited or fetched expression"):null}function tv(e){let t=[],n=e;for(;oe.isMemberExpression(n);){if(n.computed)if(oe.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(oe.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(oe.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return oe.isIdentifier(n)?t:null}function Si(e,t=[]){let n=nv(e,t);if(n)return n;let r=rv(e,t);if(r)return r;let o=ov(e,t);return o||null}function Kr(e){return e?.kind==="api-source"}function nv(e,t){if(e.path.isVariableDeclarator()&&oe.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&La(s.node)&&t[0]?.kind==="property"&&t[0].name==="data")return tn(e.identifier.name,t,"query hook result.data binding")}if(e.path.isVariableDeclarator()&&oe.isObjectPattern(e.path.node.id)){let s=e.path.node.id.properties.find(c=>oe.isObjectProperty(c)&&hf(c)==="data"&&Ur(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&La(a.node))return tn(e.identifier.name,t,"query hook data binding")}let n=iv(e);if(!n||hf(n.node)!=="data")return null;let o=n.findParent(s=>s.isVariableDeclarator());if(!o?.isVariableDeclarator())return null;let i=o.get("init");return!i?.isCallExpression()||!La(i.node)?null:tn(e.identifier.name,t,"query hook data binding")}function rv(e,t){if(e.path.isVariableDeclarator()&&oe.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!gf(a.node))return null;let[c,l]=e.path.node.id.elements;return!oe.isIdentifier(c)||c.name!==e.identifier.name||!oe.isIdentifier(l)?null:mf(e,l.name)?tn(e.identifier.name,t,"state setter is updated by API data"):null}if(!e.path.isIdentifier())return null;let n=e.path.parentPath;if(!n?.isArrayPattern())return null;let r=n.parentPath;if(!r?.isVariableDeclarator())return null;let o=r.get("init");if(!o?.isCallExpression()||!gf(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return oe.isIdentifier(s)&&mf(e,s.name)?tn(e.identifier.name,t,"state setter is updated by API data"):null}function ov(e,t){let n=e.path.isVariableDeclarator()?e.path:e.path.findParent(o=>o.isVariableDeclarator());if(!n?.isVariableDeclarator())return null;let r=n.get("init");return r?.isExpression()?r.isAwaitExpression()?tn(e.identifier.name,t,"awaited binding result"):Ba(r.node)?tn(e.identifier.name,t,"fetch-backed binding result"):null:null}function iv(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isObjectProperty()?t:t?.isAssignmentPattern()&&t.parentPath?.isObjectProperty()?t.parentPath:null}function Ur(e,t){return oe.isIdentifier(e)?e.name===t:oe.isAssignmentPattern(e)?Ur(e.left,t):oe.isObjectPattern(e)?e.properties.some(n=>oe.isObjectProperty(n)?Ur(n.value,t):Ur(n.argument,t)):oe.isArrayPattern(e)?e.elements.some(n=>!!n&&Ur(oe.isRestElement(n)?n.argument:n,t)):!1}function mf(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){Ba(i.node)&&(n=!0),(av(i.node.callee,t)||i.node.arguments.some(s=>oe.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function La(e){let t=ki(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function gf(e){return ki(e.callee)==="useState"}function Ba(e){return Ei(e,t=>oe.isCallExpression(t)&&ki(t.callee)==="fetch")}function sv(e){let t=e;for(;oe.isMemberExpression(t);)t=t.object;return oe.isIdentifier(t)?t.name:null}function hf(e){return e.computed?null:oe.isIdentifier(e.key)?e.key.name:oe.isStringLiteral(e.key)?e.key.value:null}function ki(e){return oe.isIdentifier(e)?e.name:oe.isMemberExpression(e)&&oe.isIdentifier(e.property)?e.property.name:null}function av(e,t){return Ei(e,n=>oe.isIdentifier(n)&&n.name===t)}function Ei(e,t){if(t(e))return!0;let n=oe.VISITOR_KEYS[e.type];if(!n)return!1;for(let r of n){let o=e[r];if(Array.isArray(o)){for(let i of o)if(oe.isNode(i)&&Ei(i,t))return!0;continue}if(oe.isNode(o)&&Ei(o,t))return!0}return!1}function cv(e){return oe.isIdentifier(e)?e.name:oe.isCallExpression(e)?ki(e.callee)??"api":oe.isAwaitExpression(e)?"awaited-api":"api"}function tn(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:lv(e,t),reason:n}}function lv(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var bf=typeof $a=="function"?$a:$a.default;function Sf(e,t){let n=vf(e);if(!n)return{allowed:!0};let r=!1;return bf(n,{CallExpression(o){if(!kf(o.node,t.sourceRange)||!uv(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||Kr(vi(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function Ef(e,t){let n=vf(e);if(!n)return{allowed:!0};let r=!1;return bf(n,{JSXExpressionContainer(o){kf(o.node,t.sourceRange)&&(Zn.isJSXEmptyExpression(o.node.expression)||(r=!0,o.stop()))}}),r?{allowed:!1,reason:"Cannot move subtree across files because it depends on local binding expressions"}:{allowed:!0}}function vf(e){try{return xf.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function uv(e){let t=e.callee;return Zn.isMemberExpression(t)&&Zn.isIdentifier(t.property)&&t.property.name==="map"}function kf(e,t){let n=e.loc;return n?yf({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&yf({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function yf(e,t){return e.line!==t.line?e.line<t.line?-1:1:e.column!==t.column?e.column<t.column?-1:1:0}import*as V from"@babel/types";import*as If from"@babel/parser";import ja from"@babel/traverse";import*as Re from"@babel/types";import*as Qn from"node:path";var vt=typeof ja=="function"?ja:ja.default;function Ue(e){try{return If.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Va(e){return e.computed?Re.isStringLiteral(e.key)||Re.isNumericLiteral(e.key)?String(e.key.value):null:dv(e.key)}function dv(e){return Re.isIdentifier(e)?e.name:Re.isStringLiteral(e)||Re.isNumericLiteral(e)?String(e.value):null}function kn(e){return Re.isParenthesizedExpression(e)||Re.isTSAsExpression(e)||Re.isTSSatisfiesExpression(e)||Re.isTSNonNullExpression(e)||Re.isTSTypeAssertion(e)?kn(e.expression):Re.isExpression(e)?e:null}function Ua(e){if(Re.isIdentifier(e))return[e.name];if((Re.isMemberExpression(e)||Re.isOptionalMemberExpression(e))&&!e.computed&&Re.isIdentifier(e.property)){let t=kn(e.object),n=t?Ua(t):null;return n?[...n,e.property.name]:null}return null}function In(e,t){return t.startsWith("@/")?t.slice(2).replace(/\\/g,"/"):t.startsWith(".")?Qn.normalize(Qn.join(Qn.dirname(e),t)).replace(/\\/g,"/"):t}function tt(e,t){return Ii(e)===Ii(t)}function Ii(e){let t=qn(e);return t.endsWith("/index")?t.slice(0,-6):t}function qn(e){return e.replace(/\.(tsx|ts|jsx|js)$/,"")}function wf(e,t,n){let r=Tf(e,t);if(Ff(e,r),_f(e,r))return{ok:!1,reason:"Cannot move prop-backed repeat child because the component is referenced through an unsupported value usage"};let o=[];return vt(e,{JSXElement(s){Lf(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:Ci(o[0])!==n?{ok:!1,reason:"Cannot move prop-backed repeat child because the call site is outside the target component"}:{ok:!0,path:o[0]}}function Nf(e,t){let n=new Map,r=i=>{let s=er(i);return n.has(s)?!1:(n.set(s,i),!0)};r(t);let o=!0;for(;o;){o=!1;for(let i of e)for(let s of fv(i,n))o=r(s)||o}return[...n.values()]}function fv(e,t){let n=[],r=pv(e,t);for(let o of e.ast.program.body){if(V.isExportDefaultDeclaration(o)&&V.isIdentifier(o.declaration)&&(r.get(o.declaration.name)?.length??0)>0){let i=r.get(o.declaration.name)??[];for(let s of i){if(s.namespace){let a=Jr(s.namespace,o.declaration.name,"default");a&&n.push({file:e.file,namespace:a,exportName:s.exportName});continue}n.push({file:e.file,exportName:"default"})}continue}if(V.isExportNamedDeclaration(o)&&o.source&&typeof o.source.value=="string"){let i=In(e.file,o.source.value);for(let s of o.specifiers){if(V.isExportNamespaceSpecifier(s)){let l=nn(s.exported);for(let u of t.values())tt(u.file,i)&&n.push({file:e.file,namespace:Ka(l,u.namespace),exportName:u.exportName});continue}if(!V.isExportSpecifier(s))continue;let a=nn(s.local),c=[...t.values()].filter(l=>tt(l.file,i)&&Cn(l.namespace,a));if(c.length>0){let l=nn(s.exported);for(let u of c){let f=Jr(u.namespace,a,l);f&&n.push({file:e.file,namespace:f,exportName:u.exportName})}continue}t.has(er({file:i,exportName:a}))&&n.push({file:e.file,exportName:nn(s.exported)})}continue}if(V.isExportNamedDeclaration(o)&&!o.source){for(let i of o.specifiers){if(!V.isExportSpecifier(i))continue;let s=nn(i.local),a=r.get(s)??[];if(a.length>0){let c=nn(i.exported);n.push({file:e.file,exportName:c});for(let l of a){let u=Jr(l.namespace,s,c);u&&n.push({file:e.file,namespace:u,exportName:l.exportName})}}}continue}if(V.isExportAllDeclaration(o)&&typeof o.source.value=="string"){let i=In(e.file,o.source.value),s=o.exported;if(s){let a=nn(s);for(let c of t.values())tt(c.file,i)&&n.push({file:e.file,namespace:Ka(a,c.namespace),exportName:c.exportName});continue}for(let a of t.values())tt(a.file,i)&&(a.namespace||a.exportName!=="default")&&n.push({file:e.file,namespace:a.namespace,exportName:a.exportName})}}return n}function Ka(e,t){return t?`${e}.${t}`:e}function Cn(e,t){return e===t||e?.startsWith(`${t}.`)===!0}function Jr(e,t,n){return!Cn(e,t)||!e?null:e===t?n:`${n}${e.slice(t.length)}`}function pv(e,t){let n=new Map,r=(i,s)=>{let a=n.get(i)??[];a.push(s),n.set(i,a)};for(let i of e.ast.program.body){if(!V.isImportDeclaration(i)||typeof i.source.value!="string")continue;let s=In(e.file,i.source.value);for(let a of i.specifiers){if(V.isImportDefaultSpecifier(a)){let c=t.get(er({file:s,exportName:"default"}));c&&r(a.local.name,c);let l=[...t.values()].filter(u=>tt(u.file,s)&&Cn(u.namespace,"default"));for(let u of l){let f=Jr(u.namespace,"default",a.local.name);f&&r(a.local.name,{...u,namespace:f})}continue}if(V.isImportSpecifier(a)){let c=nn(a.imported),l=[...t.values()].filter(f=>tt(f.file,s)&&Cn(f.namespace,c));for(let f of l)r(a.local.name,f);let u=t.get(er({file:s,exportName:c}));u&&r(a.local.name,u);continue}if(V.isImportNamespaceSpecifier(a))for(let c of t.values())tt(c.file,s)&&r(a.local.name,{...c,namespace:Ka(a.local.name,c.namespace)})}}let o=!0;for(;o;){o=!1;for(let i of e.ast.program.body)if(V.isVariableDeclaration(i))for(let s of i.declarations){if(!V.isIdentifier(s.id)||!s.init)continue;let a=kn(s.init);if(!a||!V.isIdentifier(a))continue;let c=n.get(a.name)??[];if(c.length===0)continue;let l=n.get(s.id.name)??[],u=new Set(l.map(er));for(let f of c){let m=Jr(f.namespace,a.name,s.id.name),d=m?{...f,namespace:m}:f,g=er(d);u.has(g)||(r(s.id.name,d),u.add(g),o=!0)}}}return n}function er(e){let t=e.namespace?`${e.namespace}.${e.exportName}`:e.exportName;return`${Ii(e.file)}#${t}`}function nn(e){return V.isIdentifier(e)?e.name:e.value}function Pf(e,t){for(let n of e.program.body){if(V.isExportDefaultDeclaration(n)){let o=n.declaration;if((V.isFunctionDeclaration(o)||V.isClassDeclaration(o))&&o.id?.name===t)return{exportName:"default"};if(V.isIdentifier(o)&&o.name===t)return{exportName:"default"}}if(!V.isExportNamedDeclaration(n))continue;let r=n.declaration;if((V.isFunctionDeclaration(r)||V.isClassDeclaration(r))&&r.id?.name===t)return{exportName:t};if(V.isVariableDeclaration(r)){for(let o of r.declarations)if(V.isIdentifier(o.id,{name:t}))return{exportName:t}}for(let o of n.specifiers){if(!V.isExportSpecifier(o)||o.local.name!==t)continue;return{exportName:V.isIdentifier(o.exported)?o.exported.name:o.exported.value}}}return null}function Xa(e){let t=mv(e),n=[],r=_f(e.ast,t);return vt(e.ast,{JSXElement(o){tt(e.file,e.sourceFile)&&Ci(o)===e.sourceComponent||Lf(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function Af(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function Tf(e,t){let n=Af();return vt(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function mv(e){let t=Af();return tt(e.file,e.sourceFile)&&gv(t,Tf(e.ast,e.sourceComponent)),vt(e.ast,{ImportDeclaration(n){let r=n.node,o=r.source.value;if(typeof o!="string")return;let i=In(e.file,o),s=e.componentIdentities.filter(a=>tt(a.file,i));if(s.length!==0)for(let a of r.specifiers){let c=n.scope.getBinding(a.local.name);if(c){if(V.isImportDefaultSpecifier(a)&&s.some(l=>l.exportName==="default")&&t.localBindings.add(c),V.isImportDefaultSpecifier(a)){let l=s.filter(u=>Cn(u.namespace,"default"));if(l.length>0){let u=t.namespaceMembers.get(c)??new Set;for(let f of l){let m=Rf(f,"default");m&&u.add(m)}t.namespaceMembers.set(c,u)}continue}if(V.isImportSpecifier(a)){let l=V.isIdentifier(a.imported)?a.imported.name:a.imported.value,u=s.filter(f=>Cn(f.namespace,l));if(u.length>0){let f=t.namespaceMembers.get(c)??new Set;for(let m of u){let d=Rf(m,l);d&&f.add(d)}t.namespaceMembers.set(c,f);continue}s.some(f=>!f.namespace&&f.exportName===l)&&t.localBindings.add(c);continue}if(V.isImportNamespaceSpecifier(a))for(let l of s){let u=l.namespace?`${l.namespace}.${l.exportName}`:l.exportName,f=t.namespaceMembers.get(c)??new Set;f.add(u),t.namespaceMembers.set(c,f)}}}}}),Ff(e.ast,t),t}function gv(e,t){e.hasUnsupportedAlias||=t.hasUnsupportedAlias;for(let n of t.localBindings)e.localBindings.add(n);for(let[n,r]of t.namespaceMembers){let o=e.namespaceMembers.get(n)??new Set;for(let i of r)o.add(i);e.namespaceMembers.set(n,o)}}function Ff(e,t){vt(e,{VariableDeclarator(n){if(!n.node.init)return;let r=kn(n.node.init);if(r){if(V.isIdentifier(n.node.id)){let o=Rn(r,t,n),i=n.scope.getBinding(n.node.id.name);o&&i&&Ja(t,i,o);return}if(V.isObjectPattern(n.node.id)){let o=Rn(r,t,n);o?.unsupported||o?.local?t.hasUnsupportedAlias=!0:o&&o.namespaceMembers.size>0&&Df(n.node.id,o.namespaceMembers,t,n)}}}})}function _f(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return vt(e,{ReferencedIdentifier(r){if(n){r.stop();return}hv(r)||!r.isIdentifier()||!Of(r,t)||yv(r,t)||xv(r)||(n=!0,r.stop())}}),n}function hv(e){let t=e;for(;t.parentPath?.isJSXMemberExpression();)t=t.parentPath;let n=t.parentPath;return!!(n?.isJSXOpeningElement()&&n.node.name===t.node||n?.isJSXClosingElement()&&n.node.name===t.node)}function Of(e,t){let n=e.scope.getBinding(e.node.name);if(!n)return null;let r=e;for(;r.parentPath?.isMemberExpression()&&r.parentPath.node.object===r.node&&!r.parentPath.node.computed;)r=r.parentPath;return t.localBindings.has(n)||t.namespaceMembers.has(n)&&Rn(r.node,t,r)?r:null}function yv(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!Cf(e,r))return!1;let o=Of(e,t);if(!o)return!1;if(kn(r.node)===o.node)return!!Rn(r.node,t,r);let s=e.findParent(c=>c.isObjectProperty());if(!s?.isObjectProperty())return!1;let a=s.get("value");return a.isExpression()&&Cf(e,a)&&!!Rn(a.node,t,a)}function xv(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function Cf(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function Rn(e,t,n){let r=kn(e);if(!r)return null;if(V.isIdentifier(r)){let a=n.scope.getBinding(r.name);if(!a)return null;let c=t.namespaceMembers.get(a);return t.localBindings.has(a)?{local:!0,namespaceMembers:new Set,unsupported:!1}:c?{local:!1,namespaceMembers:new Set(c),unsupported:!1}:null}if(V.isObjectExpression(r))return bv(r,t,n);let o=Ua(r);if(!o||o.length===0)return null;let i=n.scope.getBinding(o[0]);if(!i)return null;let s=t.namespaceMembers.get(i);return s?Mf(s,o.slice(1).join(".")):null}function bv(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!V.isObjectProperty(i))continue;let s=Va(i);if(!s||!V.isExpression(i.value)){V.isExpression(i.value)&&(o||=Rn(i.value,t,n)!==null);continue}let a=Rn(i.value,t,n);if(a){o||=a.unsupported,a.local&&r.add(s);for(let c of a.namespaceMembers)r.add(`${s}.${c}`)}}return r.size>0||o?{local:!1,namespaceMembers:r,unsupported:o}:null}function Mf(e,t){if(!t)return{local:!1,namespaceMembers:new Set(e),unsupported:!1};let n=new Set,r=!1;for(let o of e){if(o===t){r=!0;continue}o.startsWith(`${t}.`)&&n.add(o.slice(t.length+1))}return r||n.size>0?{local:r,namespaceMembers:n,unsupported:!1}:null}function Ja(e,t,n){if(e.hasUnsupportedAlias||=n.unsupported,n.local&&e.localBindings.add(t),n.namespaceMembers.size>0){let r=e.namespaceMembers.get(t)??new Set;for(let o of n.namespaceMembers)r.add(o);e.namespaceMembers.set(t,r)}}function Df(e,t,n,r){for(let o of e.properties){if(V.isRestElement(o)){if(V.isIdentifier(o.argument)){let c=r.scope.getBinding(o.argument.name);c&&Ja(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!V.isObjectProperty(o))continue;let i=Va(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=Mf(t,i);if(!s)continue;n.hasUnsupportedAlias||=s.unsupported;let a=V.isAssignmentPattern(o.value)?o.value.left:o.value;if(V.isIdentifier(a)){let c=r.scope.getBinding(a.name);c&&Ja(n,c,s);continue}if(V.isObjectPattern(a)&&s.namespaceMembers.size>0){Df(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function Rf(e,t){if(!Cn(e.namespace,t))return null;if(e.namespace===t)return e.exportName;let n=e.namespace?.slice(t.length+1);return n?`${n}.${e.exportName}`:e.exportName}function Lf(e,t){let n=e.node.openingElement.name;if(V.isJSXIdentifier(n)){let o=e.scope.getBinding(n.name);return!!(o&&t.localBindings.has(o))}let r=Bf(n);if(r&&r.length>1){let o=e.scope.getBinding(r[0]);return o?t.namespaceMembers.get(o)?.has(r.slice(1).join("."))===!0:!1}return!1}function Bf(e){if(V.isJSXIdentifier(e))return[e.name];if(V.isJSXMemberExpression(e)){let t=Bf(e.object);return t?[...t,e.property.name]:null}return null}function Ci(e){let t=e.getFunctionParent();if(!t)return null;if(t.isFunctionDeclaration())return t.node.id?.name??null;if(t.isArrowFunctionExpression()||t.isFunctionExpression()){let n=t.parentPath;if(n?.isVariableDeclarator()&&V.isIdentifier(n.node.id))return n.node.id.name}return null}function $f(e,t){let n=Ue(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=Xa({ast:n,file:t.file,sourceFile:t.file,sourceComponent:t.tag,componentIdentities:[{file:t.importedFrom,exportName:t.exportName}]});return r.hasUnsafeReference?Number.POSITIVE_INFINITY:r.callSites.length}function Se(e){return e.structuralPath.includes("#repeat:")||e.isRepeatItemRoot||e.isRepeatRegion?{kind:"jsx-node",strategy:"source-range",sourceRange:e.sourceRange}:{kind:"jsx-node",strategy:"structural-path",file:e.file,component:e.component,structuralPath:e.structuralPath,expectedRange:e.sourceRange}}function de(e){return typeof e.start=="number"&&typeof e.end=="number"?{start:e.start,end:e.end}:null}function _t(e,t){let n=de(e);return!!(n&&nt(t,n))}function nt(e,t){return t.start>=e.start&&t.end<=e.end}function Ot(e,t){let n=ie(e,Se(t));return n.ok&&n.match.path.isJSXElement()?n.match.path:Ri(e,t)}function tr(e,t){let n=de(t);return n?e.slice(n.start,n.end):""}function jf(e,t){return e.start===t.start&&e.end===t.end}function Ri(e,t){let n=null;return vt(e,{JSXElement(r){let o=r.node.loc;o&&o.start.line===t.sourceRange.startLine&&o.start.column===t.sourceRange.startColumn&&o.end.line===t.sourceRange.endLine&&o.end.column===t.sourceRange.endColumn&&(n=r,r.stop())}}),n}function wi(e,t){return za(e,t).length>0}function Ni(e,t){let n=de(e.node),r=de(t.node);if(!n||!r)return!1;let o=e.parentPath;for(;o;){if((o.isIfStatement()||o.isSwitchCase())&&(!!!t.findParent(s=>s.node===o?.node)||o.isIfStatement()&&!Sv(o,n,r)))return!0;o=o.parentPath}return!1}function Sv(e,t,n){let r=de(e.node.consequent);if(r&&nt(r,t)&&!nt(r,n))return!1;let o=e.node.alternate?de(e.node.alternate):null;return!(o&&nt(o,t)&&!nt(o,n))}function za(e,t){let n=de(e.node);if(!n)return[];let r=[],o=e.parentPath;for(;o;){let i=!!t.findParent(s=>s.node===o?.node);if(!i&&o.isConditionalExpression()){let s=de(o.node.consequent),a=de(o.node.alternate);s&&n.start>=s.start&&n.end<=s.end?r.push({kind:"conditional",path:o,conditionPath:o.get("test"),branch:"consequent"}):a&&n.start>=a.start&&n.end<=a.end&&r.push({kind:"conditional",path:o,conditionPath:o.get("test"),branch:"alternate"})}else if(!i&&o.isLogicalExpression()&&Ha(o.node.operator)){let s=de(o.node.right);s&&n.start>=s.start&&n.end<=s.end&&r.push({kind:"logical",path:o,conditionPath:o.get("left"),operator:o.node.operator})}o=o.parentPath}return r}function Ha(e){return e==="&&"||e==="||"||e==="??"}function Vf(e,t){let n=de(e.consequent);if(n&&nt(n,t))return n;let r=de(e.alternate);return r&&nt(r,t)?r:null}function Uf(e){if(!e.knownSourceFiles)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without project-wide source visibility"};if(!e.routeEntryFiles)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without registered route visibility"};let t=new Set(e.knownSourceFiles.map(a=>qn(a.file)));if(!t.has(qn(e.sourceFile))||!t.has(qn(e.targetFile)))return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without source and target file visibility"};for(let a of e.routeEntryFiles)if(!t.has(qn(a)))return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component until all registered route entries are loaded"};let n=Pf(e.sourceAst,e.sourceComponent);if(!n)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without an exported source component identity"};let r=[];for(let a of e.knownSourceFiles){let c=Ue(a.content);if(!c)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because a loaded source file cannot be parsed"};r.push({file:a.file,ast:c})}let o=Nf(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=Xa({ast:a.ast,file:a.file,sourceFile:e.sourceFile,sourceComponent:e.sourceComponent,componentIdentities:o});if(c.hasUnsafeReference)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because the component has unsupported value usages"};i.push(...c.callSites)}if(i.length!==1)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without a single project-wide component call site"};let[s]=i;return!tt(s.file,e.targetFile)||Ci(s.path)!==e.targetComponent?{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because the only call site is outside the target component"}:{ok:!0,callSitePath:s.path}}import{SiteEditSetPropsParamsSchema as Rv}from"@vcp-dev/contracts";function Pi(e){let{state:t,scope:n,operation:r,selectionRef:o,repeatTarget:i}=e;if(!t||t.status==="blocked")return{ok:!1,code:"readonly-property",reason:t?.diagnostic?.message??"No safe property write target is available"};if(t.status==="binding"){let s=t.target;if(s?.kind!=="value-binding"||!s.target.locator||n!=="selection"||r!=="set")return Xr();let a=s.target,c=a.locator;if(a.sourceKind==="repeat-template"){let l=o?.instanceIndex;if(l===void 0)return Xr();let u=Ev(a,l,o?.instanceCount);if(!u)return Xr();c=u}return{ok:!0,target:{kind:"value-binding",file:a.file,locator:c}}}return o?.instanceIndex!==void 0?n!=="selection"||!i?.ok?{ok:!1,code:"repeat-target-failed",reason:i&&!i.ok?i.reason:"No safe selected repeat property target is available"}:{ok:!0,target:{kind:"repeat-property",target:i}}:e.isRepeat&&n!=="template"||t.status==="direct"&&t.target?.kind!=="jsx-attribute"?Xr():{ok:!0,target:{kind:"jsx-attribute"}}}function Xr(){return{ok:!1,code:"unsupported-binding",reason:"Property does not have a safe typed binding write target for this scope and operation"}}function Ev(e,t,n){if(!e.locator||!Number.isInteger(t)||t<0)return null;let r=e.collectionPathMap?.length??e.collectionIndexMap?.length;if(r!==void 0&&(t>=r||n!==void 0&&n!==r))return null;let o=e.collectionPathMap?.[t];if(o)return{...e.locator,path:o};let i=e.locator.path??[],s=i.findLastIndex(c=>c.kind==="index");if(s<0)return null;let a=i.map((c,l)=>l===s&&c.kind==="index"?{kind:"index",index:e.collectionIndexMap?.[t]??t}:c);return{...e.locator,path:a}}import*as Mt from"@babel/types";import{SiteEditSetPropsParamsSchema as vv}from"@vcp-dev/contracts";function Kf(e){let t=e.changes??(e.change?[e.change]:[]);if(!vv.safeParse({kind:"set-props",scope:"selection",changes:t}).success)return zr("invalid-change","Repeat property changes are invalid");if(t.length!==1||t[0].name!==e.target.propertyName)return zr("target-mismatch","A repeat property plan must contain exactly one change for its target property");let r=t[0];if(r.operation==="remove"&&e.target.propertyState==="missing")return{ok:!0,steps:[]};let o=Ie(e.source,"value");if(!o.ok)return zr("invalid-target","Repeat property source could not be parsed");let i=[{type:"set-property-binding",order:0,file:e.target.templateFile,locator:e.target.targetElementLocator,name:r.name,object:e.target.callbackItemName,property:r.name}];for(let[s,a]of e.target.parentObjectLocators.entries()){let c=ie(o.ast,a);if(!c.ok||!c.match.path.isObjectExpression())return zr("unsupported-object",`Repeat item ${s} is not a writable object expression`);let l=s===e.target.sourceItemIndex?kv(r):Iv(c.match.path.node,r.name);if(!l)return zr("unsupported-property-value",`Repeat item ${s} has an unsupported value for '${r.name}'`);i.push({type:"upsert-object-property",order:i.length,file:e.target.sourceFile,locator:a,name:r.name,value:l})}return{ok:!0,steps:i}}function kv(e){return e.operation==="set"?{kind:"value",value:e.value}:{kind:"undefined"}}function Iv(e,t){let n=e.properties.filter(i=>Mt.isObjectProperty(i)&&Cv(i.key)===t);if(n.length>1)return null;let r=n[0];if(!r)return{kind:"undefined"};if(!Mt.isExpression(r.value))return null;let o=At(r.value);return o.status==="undefined"?{kind:"undefined"}:o.status!=="resolved"?null:{kind:"value",value:o.value}}function Cv(e){return Mt.isIdentifier(e)?e.name:Mt.isStringLiteral(e)?e.value:Mt.isNumericLiteral(e)?String(e.value):null}function zr(e,t){return{ok:!1,errorCode:e,reason:t}}function Jf(e){if(e.change.name!=="className"&&e.change.name!=="class")return Hr("unsupported-owner",`No specialized property owner is available for '${e.change.name}'`);let t=e.classNameSource;if(!t||t.filePath!==e.node.file)return Hr("owner-source-unavailable","className source details are unavailable for the selected node");if(e.change.name==="class"&&t.sourceKind==="missing")return Hr("owner-source-unavailable","The class alias requires an existing className source");if(t.sourceKind==="expression")return Hr("owner-source-dynamic","Dynamic className expressions are not writable by the generic property owner");if(e.change.operation==="set"&&typeof e.change.value!="string")return Hr("owner-value-invalid","The className owner accepts only string values");if(e.change.operation==="remove"&&t.sourceKind==="missing")return{ok:!0,steps:[]};let n=t.sourceKind==="missing",r=e.change.operation==="set"?`className=${JSON.stringify(e.change.value)}`:null,o=e.change.operation==="remove"?"remove-attribute":n?"create-attribute":"replace-static-classname";return{ok:!0,steps:[{type:"set-class-name-source",order:0,file:e.node.file,request:{kind:"set-class-name-source",key:e.node.key,filePath:e.node.file,expectedVersion:t.version,oldAttrRaw:t.attrRaw,oldAttrRange:t.attrRange,openingElementRange:t.openingElementRange,newAttrRaw:r,intent:{source:"style-panel",operation:o}}}]}}function Hr(e,t){return{ok:!1,errorCode:e,reason:t}}async function zf(e){let t=Rv.safeParse({kind:"set-props",scope:e.scope,changes:e.changes});if(!t.success)return wn("invalid-change","Typed property changes are invalid");let n=[];for(let r of t.data.changes){let o=await wv(e,r);if(o){if(!o.ok)return wn("owner-plan-failed",o.reason);Xf(n,o.steps);continue}let i=await e.getPropertyState(e.node.key,r.name,e.selectionRef);if(!i)return wn("missing-property-state",`No authoritative property state is available for '${r.name}'`);if(i.status==="blocked")return wn("readonly-property",i.diagnostic?.message??`Property '${r.name}' is not writable`);if(Av(i,r)||r.operation==="remove"&&i.status==="missing")continue;let s=e.selectionRef?.instanceIndex!==void 0&&i.status!=="binding"?await e.getRepeatPropertyTarget?.(e.node.key,r.name,e.selectionRef):void 0,a=Pi({state:i,scope:e.scope,operation:r.operation,selectionRef:e.selectionRef,repeatTarget:s});if(!a.ok)return wn(a.code,a.reason);let c=a.target;if(c.kind==="value-binding"&&r.operation==="set"){Wa(n,{type:"update-value",order:n.length,file:c.file,locator:c.locator,value:r.value});continue}if(c.kind==="repeat-property"){let l=Kf({source:e.getFileContent(c.target.sourceFile),target:c.target,changes:[r]});if(!l.ok)return wn("repeat-target-failed",l.reason);Xf(n,l.steps);continue}Wa(n,{type:"set-property-changes",order:n.length,file:e.node.file,locator:Nv(e.node),scope:e.scope,changes:[r]})}return n.forEach((r,o)=>{r.order=o}),Pv(n)?wn("step-conflict","Property changes resolve to conflicting write steps"):{ok:!0,steps:n}}async function wv(e,t){return t.name!=="className"&&t.name!=="class"?null:Jf({node:e.node,change:t,classNameSource:e.classNameSource})}function Nv(e){return e.structuralPath.includes("#repeat:")||e.key.includes("::repeat-item#")?{kind:"jsx-node",strategy:"source-range",sourceRange:e.sourceRange}:{kind:"jsx-node",strategy:"structural-path",file:e.file,component:e.component,structuralPath:e.structuralPath,expectedRange:e.sourceRange}}function Pv(e){let t=new Set;for(let n of e){let{order:r,...o}=n,i=`${n.file}:${n.type}:${JSON.stringify(o)}`;if(t.has(i))return!0;t.add(i)}return!1}function Xf(e,t){for(let n of t)Wa(e,{...n,order:e.length})}function Wa(e,t){if(t.type==="set-property-changes"){let n=e.find(r=>r.type==="set-property-changes"&&r.file===t.file&&JSON.stringify(r.locator)===JSON.stringify(t.locator)&&r.scope===t.scope);if(n){n.changes.push(...t.changes);return}}e.push(t)}function Av(e,t){if(t.operation!=="set"||e.status!=="direct")return!1;let n=e.attribute?.resolution;return n?.status==="resolved"?Ga(n.value,t.value):e.attribute?.source===null&&e.attribute.value===t.value}function Ga(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((n,r)=>Ga(n,t[r]));if(e&&t&&typeof e=="object"&&typeof t=="object"){let n=e,r=t,o=Object.keys(n);return o.length===Object.keys(r).length&&o.every(i=>Ga(n[i],r[i]))}return!1}function wn(e,t){return{ok:!1,errorCode:e,reason:t}}import*as rr from"@babel/types";import*as X from"@babel/types";function Ya(e,t,n){let r=Ot(t,n);return r?Dt(e,r):null}function Dt(e,t){let n=t.findParent(h=>h.isArrowFunctionExpression()||h.isFunctionExpression());if(!n||!n.isArrowFunctionExpression()&&!n.isFunctionExpression())return null;let r=n,o=r.parentPath;if(!o||!o.isCallExpression()&&!o.isOptionalCallExpression())return null;let i=o;if(i.node.arguments.findIndex(h=>h===r.node)!==0)return null;let a=i.get("callee");if(!a.isMemberExpression()&&!a.isOptionalMemberExpression())return null;let c=a.node,l=c.property;if(!X.isIdentifier(l)||l.name!=="map"||c.computed)return null;let u=a.get("object"),f=tr(e,u.node),m=r.node.params.map(h=>tr(e,h)),d=de(i.node),g=de(r.node);return!f||m.some(h=>h.length===0)||!d||!g?null:{callStart:d.start,callEnd:d.end,callbackStart:g.start,callbackEnd:g.end,collectionExpression:f,callbackParams:m,mapOperator:X.isOptionalMemberExpression(c)&&c.optional?"?.map":".map",collectionNeedsParens:Ai(u.node),callbackPath:r,collectionPath:u}}function Wr(e,t){return!!(e&&t&&e.callStart===t.callStart&&e.callEnd===t.callEnd&&e.callbackStart===t.callbackStart&&e.callbackEnd===t.callbackEnd)}function Tv(e,t){let n=de(e.node);return n?Fv(t).some(r=>{let o=de(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function Fv(e){let t=e.callbackPath.node.body;return X.isBlockStatement(t)?rn(t.body):on(t)}function rn(e){let t=[];for(let n of e){if(X.isReturnStatement(n)){n.argument&&t.push(...on(n.argument));continue}if(X.isBlockStatement(n)){t.push(...rn(n.body));continue}if(X.isIfStatement(n)){let r=X.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent];if(t.push(...rn(r)),n.alternate){let o=X.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];t.push(...rn(o))}continue}if(X.isSwitchStatement(n)){for(let r of n.cases)t.push(...rn(r.consequent));continue}X.isTryStatement(n)&&(t.push(...rn(n.block.body)),n.handler&&t.push(...rn(n.handler.body.body)),n.finalizer&&t.push(...rn(n.finalizer.body)))}return t}function on(e){return X.isJSXElement(e)?_v(e)?Hf(e.children):[e]:X.isJSXFragment(e)?Hf(e.children):X.isParenthesizedExpression(e)||X.isTSAsExpression(e)||X.isTSSatisfiesExpression(e)||X.isTSNonNullExpression(e)||X.isTSTypeAssertion(e)?on(e.expression):X.isConditionalExpression(e)?[...on(e.consequent),...on(e.alternate)]:X.isLogicalExpression(e)&&Ha(e.operator)?on(e.right):[]}function Hf(e){return e.flatMap(t=>X.isJSXElement(t)||X.isJSXFragment(t)?on(t):X.isJSXExpressionContainer(t)&&(X.isJSXElement(t.expression)||X.isJSXFragment(t.expression)||X.isConditionalExpression(t.expression)||X.isLogicalExpression(t.expression))?on(t.expression):[])}function _v(e){let t=e.openingElement.name;return X.isJSXIdentifier(t)?t.name==="Fragment":X.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function Wf(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function Ai(e){return!(X.isIdentifier(e)||X.isThisExpression(e)||X.isMemberExpression(e)||X.isOptionalMemberExpression(e)||X.isCallExpression(e)||X.isOptionalCallExpression(e))}function Gf(e){let t=e.parentPath;if(!t||!t.isCallExpression()&&!t.isOptionalCallExpression()||t.node.arguments[0]!==e.node)return!1;let n=t.node.callee;return(X.isMemberExpression(n)||X.isOptionalMemberExpression(n))&&X.isIdentifier(n.property)&&n.property.name==="map"&&!n.computed}function nr(e,t){let n=Ue(e);if(!n)return t.isRepeatItemRoot===!0;let r=ie(n,Se(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Ri(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=Dt(e,o);return i?Tv(o,i):t.isRepeatItemRoot===!0}function Yf(e,t){let n=Ue(e);if(!n)return!1;let r=ie(n,Se(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Ri(n,t);return o?!!o.findParent(i=>{if(!i.isCallExpression()&&!i.isOptionalCallExpression())return!1;let s=i.node.callee;return(X.isMemberExpression(s)||X.isOptionalMemberExpression(s))&&X.isIdentifier(s.property)&&s.property.name==="map"}):!1}import*as Ee from"@babel/types";function Za(e){if(Ee.isJSXIdentifier(e))return/^[A-Z]/.test(e.name)?e.name:null;if(Ee.isJSXMemberExpression(e)){let t=e;for(;Ee.isJSXMemberExpression(t);)t=t.object;return t.name}return null}function Ov(e,t){let n=de(e.node);if(!n)return[];let r=new Set,o=(i,s)=>{let a=s.scope.getBinding(i);!a||_t(a.path.node,n)||sn(a,i,t)||r.add(i)};return e.traverse({ReferencedIdentifier(i){o(i.node.name,i)},JSXOpeningElement(i){let s=Za(i.node.name);s&&o(s,i)}}),[...r].sort()}function Qa(e,t,n){let r=Ue(e);if(!r)return{ok:!0};let o=ie(r,Se(t));if(!o.ok||!o.match.path.isJSXElement())return{ok:!0};let i=ie(r,Se(n));if(!i.ok||!i.match.path.isJSXElement())return{ok:!0};let s=Er(o.match.path,i.match.path);if(wi(s,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let a=Ov(s,i.match.path);return a.length>0?{ok:!1,bindingNames:a}:{ok:!0}}function Qf(e){let t=e;for(;Ee.isTSQualifiedName(t);)t=t.left;return Ee.isIdentifier(t)?t.name:null}function Gr(e,t){e.isIdentifier()&&e.isReferencedIdentifier()&&t(e),e.traverse({ReferencedIdentifier(n){n.isIdentifier()&&t(n)}})}function Ti(e){let t=[],n=r=>{if(r){if(Ee.isIdentifier(r)){t.push(r.name);return}if(Ee.isObjectPattern(r)){for(let o of r.properties){if(Ee.isRestElement(o)){n(o.argument);continue}Ee.isObjectProperty(o)&&n(o.value)}return}if(Ee.isArrayPattern(r)){for(let o of r.elements)n(o);return}if(Ee.isAssignmentPattern(r)){n(r.left);return}if(Ee.isRestElement(r)){n(r.argument);return}Ee.isTSParameterProperty(r)&&n(r.parameter)}};return n(e),t}function qa(e,t){let n=de(e.node),r=de(t.node);if(!n||!r)return{ok:!1,reason:"Cannot move repeat-backed child out of a component without proving the component call-site render scope"};let o=Zf(e),i=Zf(t);if(!o||!i||!jf(o,i))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is rendered in a different return branch"};let s=e.parentPath;for(;s;){if(s.isConditionalExpression()){let a=Vf(s.node,n);if(a&&!nt(a,r))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is conditionally rendered outside the target scope"}}else if(s.isLogicalExpression()){let a=de(s.node.right);if(a&&nt(a,n)&&!nt(a,r))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is conditionally rendered outside the target scope"}}else if((s.isArrowFunctionExpression()||s.isFunctionExpression())&&Gf(s)){let a=de(s.node.body)??de(s.node);if(a&&!nt(a,r))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is repeated outside the target scope"}}s=s.parentPath}return{ok:!0}}function Zf(e){let t=e;for(;t;){if(t.isReturnStatement())return t.node.argument?de(t.node.argument):null;if(t.isArrowFunctionExpression()&&(Ee.isJSXElement(t.node.body)||Ee.isJSXFragment(t.node.body)||Ee.isConditionalExpression(t.node.body)||Ee.isLogicalExpression(t.node.body)))return de(t.node.body);t=t.parentPath}return null}function sn(e,t,n){return n.scope.getBinding(t)===e}function ec(e,t,n,r={}){if(!r.preserveConditionalBoundary&&wi(e,t))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let o=de(e.node);if(!o)return{ok:!0};let i=new Set(n.callbackPath.node.params.flatMap(c=>Ti(c)).map(c=>n.callbackPath.scope.getBinding(c)?.path.node).filter(Boolean)),s=new Set,a=(c,l)=>{let u=l.scope.getBinding(c);!u||_t(u.path.node,o)||i.has(u.path.node)||sn(u,c,t)||s.add(c)};return e.traverse({ReferencedIdentifier(c){a(c.node.name,c)},JSXOpeningElement(c){let l=Za(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function tc(e,t,n){let r=de(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>Ti(s)).map(s=>n.callbackPath.scope.getBinding(s)?.path.node).filter(Boolean)),i=new Set;return Gr(e,s=>{let a=s.scope.getBinding(s.node.name);!a||_t(a.path.node,r)||o.has(a.path.node)||sn(a,s.node.name,t)||i.add(s.node.name)}),i.size>0?{ok:!1,bindingNames:[...i].sort()}:{ok:!0}}function qf(e,t){let n=new Set(e.callbackPath.node.params.flatMap(a=>Ti(a)).map(a=>e.callbackPath.scope.getBinding(a)?.path.node).filter(Boolean)),r=new Set,o=(a,c)=>{let l=c.scope.getBinding(a);!l||n.has(l.path.node)||sn(l,a,t)||r.add(a)},i=e.callbackPath.get("params"),s=Array.isArray(i)?i:[i];for(let a of s)a.traverse({ReferencedIdentifier(c){o(c.node.name,c)},TSTypeReference(c){let l=c.node.typeName;if(rr.isIdentifier(l))o(l.name,c);else{let u=Qf(l);u&&o(u,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function nc(e,t){let n=de(e.node),r=new Set;return Gr(e,o=>{let i=o.scope.getBinding(o.node.name);i&&(n&&_t(i.path.node,n)||sn(i,o.node.name,t)||r.add(o.node.name))}),r.size>0?{ok:!1,bindingNames:[...r].sort(),reason:"Cannot move repeat-backed child because the repeat collection is not visible at the target"}:{ok:!0}}function ep(e){let t=[];for(let n of e.callbackPath.node.params){if(rr.isIdentifier(n)){t.push(n.name);continue}if(rr.isRestElement(n)&&rr.isIdentifier(n.argument)){t.push(`...${n.argument.name}`);continue}return{ok:!1,reason:"Cannot move cross-file repeat child because the callback parameters are not portable to the target file"}}return{ok:!0,callbackParams:t}}function tp(e,t){return{...e,callbackParams:t}}function rc(e,t){return`${e.collectionNeedsParens?`(${e.collectionExpression})`:e.collectionExpression}${e.mapOperator}((${e.callbackParams.join(", ")}) => ${t})`}function Yr(e,t,n){return n?.finalSource?.kind==="component-prop"?"Cannot edit prop-backed node structure with a generic node operation":t?.kind==="value-binding"&&t.sourceKind==="repeat-template"&&!e.isRepeatItemRoot?"Cannot edit repeat-backed child node structure with a generic node operation":t?.kind==="value-binding"&&t.file!==e.file&&t.sourceKind!=="repeat-template"?"Cannot edit upstream-bound node structure with a generic node operation":null}function np(e,t,n,r){return e.parentKey===t.key&&e.file===t.file&&n?.kind==="value-binding"&&n.file!==e.file&&n.sourceKind!=="repeat-template"&&r?.finalSource?.kind!=="component-prop"}function or(e){return{file:e.file,component:e.component}}function Mv(e){return e.target.kind==="node"?e.target.key:null}function Dv(e){return"kind"in e}function Fi(e){return!Dv(e)}function cc(e,t){let n=Mi.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Mi.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function oc(e,t){let n=e.getFileContent(t.file);if(!n)return;let r=Nt(n,Se(t));if(r.ok)return n.slice(r.match.start,r.match.end)}function uc(e){if(!e.component)return"Component";if(e.component.exportName!=="default")return e.component.exportName;let t=e.component.source.replace(/\\/g,"/").replace(/\/$/,""),n=t.split("/").pop()||"Component",i=(n==="index"?t.split("/").slice(-2,-1)[0]||"Component":n).replace(/\.[^.]+$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean);return i.length===0?"Component":i.map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}function Lv(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function Bv(e){let t=e.trim();if(!/^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?$/.test(t))return null;let n=Number(t);return Number.isFinite(n)?n:null}function ic(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function $v(e){let t=wf(e.ast,e.sourceNode.component,e.targetParent.component);if(!t.ok)return{ok:!1,reason:t.reason};let n=qa(t.path,e.targetParentPath);if(!n.ok)return{ok:!1,reason:n.reason};let r=jv({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=up(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?Ai(o):!0}}}function jv(e){let t=de(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move prop-backed repeat child because the collection expression cannot be mapped"};let n=new Map,r=new Set,o=null,i=s=>{if(o)return;let a=s.scope.getBinding(s.node.name);if(!a||_t(a.path.node,t))return;let c=Kv(s,a,t);if(c){if(c.hasDefault){o="Cannot move prop-backed repeat child because the collection prop has a default value that cannot be preserved safely";return}let l=Xv(e.callSitePath,c.propName,e.source);if(!l.ok){o=l.reason;return}let u=Vv(l.expression,c.remainingPath);if(!u){o="Cannot move prop-backed repeat child because the mapped prop path is not a portable expression";return}let f=nc(l.expressionPath,e.targetParentPath);if(!f.ok){o=f.reason??`Cannot move prop-backed repeat child because the mapped prop source is not visible at the target: ${f.bindingNames.join(", ")}`;return}n.set(`${c.range.start}:${c.range.end}`,{...c.range,text:u});return}sn(a,s.node.name,e.targetParentPath)||r.add(s.node.name)};return e.sourceContext.collectionPath.isIdentifier()&&e.sourceContext.collectionPath.isReferencedIdentifier()&&i(e.sourceContext.collectionPath),e.sourceContext.collectionPath.traverse({ReferencedIdentifier(s){s.isIdentifier()&&i(s)}}),o?{ok:!1,reason:o}:r.size>0?{ok:!1,reason:`Cannot move prop-backed repeat child because the collection depends on bindings outside the target scope: ${[...r].sort().join(", ")}`}:n.size===0?{ok:!1,reason:"Cannot move repeat-backed child out of its component without an explicit prop mapping"}:{ok:!0,collectionExpression:zv(e.source,t,[...n.values()])}}function Vv(e,t){if(t.length===0)return e;let n=up(e);if(!n)return null;let r=Ai(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=Uv(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function Uv(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function Kv(e,t,n){let r=Jv(e,n),o=r?{kind:"member-expression",expression:e.node.name,base:e.node.name,path:[{kind:"property",name:r.propertyName}]}:{kind:"identifier",expression:e.node.name,base:e.node.name,path:[]},i=Yn(t,o);if(!i)return null;let s=r?.range??de(e.node);return s?{propName:i.propName,remainingPath:i.remainingPath,hasDefault:i.hasDefault,range:s}:null}function Jv(e,t){let n=e.parentPath;if(!n||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.object!==e.node||!_t(n.node,t)||n.node.computed||!le.isIdentifier(n.node.property))return null;let r=de(n.node);return r?{propertyName:n.node.property.name,range:r}:null}function Xv(e,t,n){let r=e.get("openingElement").get("attributes");if(r.some(c=>c.isJSXSpreadAttribute()))return{ok:!1,reason:"Cannot move prop-backed repeat child through spread props; use an explicit prop mapping"};let o=r.find(c=>c.isJSXAttribute()&&le.isJSXIdentifier(c.node.name)&&c.node.name.name===t);if(!o?.isJSXAttribute())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not passed explicitly`};let i=o.get("value");if(!i.isJSXExpressionContainer())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not an expression`};let s=i.get("expression");if(!s.isExpression())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not a usable expression`};let a=tr(n,s.node);return a?{ok:!0,expression:a,expressionPath:s}:{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' cannot be read`}}function zv(e,t,n){let r=e.slice(t.start,t.end),o=[...n].sort((i,s)=>s.start-i.start);for(let i of o)r=r.slice(0,i.start-t.start)+i.text+r.slice(i.end-t.start);return r}function up(e){try{let n=lp.parse(`const __VD_EXPR__ = (${e});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],r=le.isVariableDeclaration(n)?n.declarations[0]?.init:null;return r&&le.isExpression(r)?r:null}catch{return null}}function Hv(e){let t=de(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move cross-file repeat child because the collection expression cannot be inspected"};let n=new Map,r=new Set,o=i=>{let s=i.scope.getBinding(i.node.name);if(!s||_t(s.path.node,t))return;let a=rp(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let u=rp(c,e.targetFile,e.targetFile);(!u||u.moduleFile!==a.moduleFile||!Wv(u.importSpec,a.importSpec))&&r.add(a.localName);return}let l=n.get(a.moduleSpecifier)??[];l.some(u=>JSON.stringify(u)===JSON.stringify(a.importSpec))||l.push(a.importSpec),n.set(a.moduleSpecifier,l);return}r.add(i.node.name)};return Gr(e.sourceContext.collectionPath,o),r.size>0?{ok:!1,reason:`Cannot move cross-file repeat child because the collection depends on non-importable bindings: ${[...r].sort().join(", ")}`}:{ok:!0,imports:[...n.entries()].map(([i,s])=>({moduleSpecifier:i,imports:s}))}}function Wv(e,t){return e.kind!==t.kind?!1:e.kind==="named"&&t.kind==="named"?e.imported===t.imported&&e.local===t.local:e.kind==="default"&&t.kind==="default"||e.kind==="namespace"&&t.kind==="namespace"?e.local===t.local:!1}function rp(e,t,n){let r=Gv(e),o=r?.parentPath;if(!r||!o?.isImportDeclaration())return null;let i=o.node.source.value;if(typeof i!="string")return null;let s=In(t,i),a=i.startsWith(".")?cc(n,s):i;if(r.isImportDefaultSpecifier()){let c=r.node.local.name;return{localName:c,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"default",local:c}}}if(r.isImportNamespaceSpecifier()){let c=r.node.local.name;return{localName:c,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"namespace",local:c}}}if(r.isImportSpecifier()){let c=le.isIdentifier(r.node.imported)?r.node.imported.name:r.node.imported.value,l=r.node.local.name;return{localName:l,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"named",imported:c,local:l===c?void 0:l}}}return null}function Gv(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function op(e,t,n,r){let o=za(t,n);if(o.length===0)return{sourceJsx:r,conditionPaths:[]};let i=r,s=[];for(let a of o){let c=tr(e,a.conditionPath.node);if(!c)return{sourceJsx:r,conditionPaths:[]};let l=Yv(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${Qv(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function Yv(e,t){return Zv(e.node)?t:`(${t})`}function Zv(e){return le.isIdentifier(e)||le.isThisExpression(e)||le.isSuper(e)||le.isMemberExpression(e)||le.isOptionalMemberExpression(e)||le.isCallExpression(e)||le.isOptionalCallExpression(e)||le.isBooleanLiteral(e)||le.isNumericLiteral(e)||le.isStringLiteral(e)||le.isNullLiteral(e)||le.isUnaryExpression(e)}function Qv(e){return e.trim().startsWith("<")?e:`(${e})`}var qv={table:new Set(["caption","colgroup","thead","tbody","tfoot","tr"]),thead:new Set(["tr"]),tbody:new Set(["tr"]),tfoot:new Set(["tr"]),tr:new Set(["th","td"]),ul:new Set(["li"]),ol:new Set(["li"]),select:new Set(["option","optgroup"]),optgroup:new Set(["option"])};function _i(e,t){if(t.kind!=="native-tag")return null;let n=e.tag?.toLowerCase();if(!n||n!==e.tag||n.startsWith("component:"))return null;let r=qv[n];if(!r)return null;let o=t.tag.toLowerCase();return r.has(o)?null:`Cannot insert <${t.tag}> into <${e.tag}>; expected ${[...r].map(i=>`<${i}>`).join(", ")}`}function ek(e,t){for(let n of e.program.body){if(!le.isImportDeclaration(n)||n.source.value!==t)continue;let r=n.specifiers.find(o=>le.isImportDefaultSpecifier(o));if(r&&le.isImportDefaultSpecifier(r))return r.local.name}return null}function tk(e,t,n){for(let r of e.program.body){if(!le.isImportDeclaration(r)||r.source.value!==t)continue;let o=r.specifiers.find(i=>le.isImportSpecifier(i)&&(le.isIdentifier(i.imported)?i.imported.name:i.imported.value)===n);if(o&&le.isImportSpecifier(o))return o.local.name}return null}function ip(e){let t=new Set;return vt(e,{Program(n){for(let r of Object.keys(n.scope.bindings))t.add(r);n.stop()}}),t}function sp(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function nk(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=uc(e),o=Ue(t);if(n.exportName!=="default"){let a=o?tk(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?sp(r,ip(o)):r;return{localName:c,importStep:sc(e,c)}}if(!o)return{localName:r,importStep:sc(e,r)};let i=ek(o,n.source);if(i)return{localName:i};let s=sp(r,ip(o));return{localName:s,importStep:sc(e,s)}}function rk(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??uc(e);if(e.props&&Object.keys(e.props).length>0){let r=Object.entries(e.props).map(([o,i])=>typeof i=="string"?`${o}="${i}"`:`${o}={${JSON.stringify(i)}}`).join(" ");return`<${n} ${r} />`}return`<${n} />`}function ok(e){if(e.kind==="native-tag")return e.text===void 0?{kind:e.kind,tag:e.tag}:{kind:e.kind,tag:e.tag,text:e.text};if(!e.component)return{kind:e.kind};let t=e.props?ik(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function ik(e){return Object.fromEntries(Object.entries(e).filter(t=>lc(t[1])))}function lc(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(lc):typeof e=="object"?Object.values(e).every(lc):!1}function sc(e,t=uc(e)){if(!e.component)throw new Error("Materialized component calls do not have a component import");return{moduleSpecifier:e.component.source,imports:e.component.exportName==="default"?[{kind:"default",local:t}]:[{kind:"named",imported:e.component.exportName,...t!==e.component.exportName?{local:t}:{}}]}}function ap(e,t){if("kind"in e)return{parentNode:null,anchorNode:null,placement:e.relation};if(e.relation==="prepend"||e.relation==="append"){let o=t.getNode(e.parentKey);return{parentNode:o,anchorNode:null,placement:e.relation,...o?{}:{error:{errorCode:"locator-miss",reason:`Target parent '${e.parentKey}' not found in graph`}}}}if(!("anchorKey"in e))return{parentNode:null,anchorNode:null,placement:e.relation,error:{errorCode:"invalid-target",reason:`Sibling target '${e.relation}' requires an anchor`}};let n=t.getNode(e.anchorKey),r=t.getNode(e.parentKey);return n?r?n.parentKey!==r.key?{parentNode:r,anchorNode:n,placement:e.relation,error:{errorCode:"invalid-target",reason:`Target anchor '${n.key}' belongs to parent '${n.parentKey??"<root>"}', expected '${r.key}'`}}:{parentNode:r,anchorNode:n,placement:e.relation}:{parentNode:null,anchorNode:n,placement:e.relation,error:{errorCode:"locator-miss",reason:`Target parent '${e.parentKey}' not found in graph`}}:{parentNode:r,anchorNode:null,placement:e.relation,error:{errorCode:"locator-miss",reason:`Target anchor '${e.anchorKey}' not found in graph`}}}function sk(e,t,n){let r=e;for(;r;){if(r===t)return!0;r=n.getNode(r)?.parentKey}return!1}function Zr(e,t){return`Operation kind '${e}' does not match params.kind '${t}'`}function dc(e,t=e.path){return{kind:"value",root:e.root,path:t&&t.length>0?t:void 0,expectedRange:e.expectedRange}}function Qr(e){let t=e.path??[];for(let n=t.length-1;n>=0;n-=1){let r=t[n];if(r.kind==="index")return{locator:dc(e,t.slice(0,n)),index:r.index}}return null}function ac(e,t){return e.locator?e.collectionPathMap?.[t]?dc(e.locator,e.collectionPathMap[t]):Qr(e.locator)?ck(e.locator,lk(t,e.collectionIndexMap)):null:null}function ak(e,t){let n=e.path??[],r=n.findLastIndex(i=>i.kind==="index");if(r===-1)return;let o=n.slice(r+1);return o.length===0?t:dp(o,t)}function dp(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=dp(r,t);return o===void 0?void 0:{[n.name]:o}}function ck(e,t){let n=e.path??[];for(let r=n.length-1;r>=0;r-=1)if(n[r].kind==="index"){let i=[...n];return i[r]={kind:"index",index:t},dc(e,i)}return null}function lk(e,t){return t?.[e]??e}function cp(e,t){return!t||t.length===0?e:e<=0?t[0]??0:e>=t.length?(t[t.length-1]??t.length-1)+1:t[e]??e}function uk(e,t){return dk(e.root,t.root)&&pk(e.path??[],t.path??[])}function dk(e,t){if(e.kind!==t.kind)return!1;switch(e.kind){case"binding":case"hook-state":case"named-export":return"name"in t&&e.name===t.name;case"default-export":return!0;case"expression":return"sourceRange"in t&&fk(e.sourceRange,t.sourceRange)}}function fk(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function pk(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],o=t[n];if(r.kind!==o.kind)return!1;if(r.kind==="property"){if(o.kind!=="property"||r.name!==o.name)return!1;continue}if(o.kind!=="index"||r.index!==o.index)return!1}return!0}var Oi=class{constructor(t){this.operationCounter=0,this.graph=t}async plan(t){let n=`op-${++this.operationCounter}-${Date.now()}`;switch(t.kind){case"update-text":{if(t.params.kind!=="update-text")return{ok:!1,errorCode:"unknown",reason:Zr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planUpdateText(n,r,i,this.graph.getCapability(i.key),await this.graph.getTextWriteTarget(i.key,r.params.segmentIndex))}case"update-array-item":{if(t.params.kind!=="update-array-item")return{ok:!1,errorCode:"unknown",reason:Zr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planUpdateArrayItem(n,r,this.graph.getCapability(i.key),await this.graph.getTextWriteTarget(i.key,r.params.segmentIndex))}case"remove-node":{if(t.params.kind!=="remove-node")return{ok:!1,errorCode:"unknown",reason:Zr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planRemoveNode(n,r,i,this.graph.getCapability(i.key))}case"insert-child":{if(t.params.kind!=="insert-child")return{ok:!1,errorCode:"unknown",reason:Zr(t.kind,t.params.kind)};let r=t;if(!Fi(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=ap(r.params.position,this.graph);if(o.error)return{ok:!1,errorCode:o.error.errorCode,reason:o.error.reason};if(!o.parentNode)return{ok:!1,errorCode:"locator-miss",reason:`Insert target parent for request '${t.id}' not found in graph`};let i=this.graph.getFileVersion(o.parentNode.file);return t.documentVersion!==i?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${i})`}:this.planInsertChild(n,r,o.parentNode,this.graph.getCapability(o.parentNode.key),o.anchorNode)}case"move-node":{if(t.params.kind!=="move-node")return{ok:!1,errorCode:"unknown",reason:Zr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planMoveNode(n,r,i,this.graph.getCapability(i.key))}case"set-class-name-source":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:this.planNodeAttributeOperation(n,t,r.node)}case"set-props":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planSetProps(n,t,r.node)}case"apply-style-draft":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planApplyStyleDraft(n,t,r.node)}default:return{ok:!1,errorCode:"unknown",reason:`Unknown operation kind: ${t.kind}`}}}resolveNodeRequest(t){let n=Mv(t);if(!n)return{ok:!1,result:{ok:!1,errorCode:"invalid-target",reason:`Operation '${t.kind}' requires a node target`}};let r=this.graph.getNode(n);return r?{ok:!0,node:r}:{ok:!1,result:{ok:!1,errorCode:"locator-miss",reason:`Target key '${n}' not found in graph`}}}planNodeAttributeOperation(t,n,r){let o=r.file,i=this.graph.getCapability(r.key);return n.params.filePath!==o?{ok:!1,errorCode:"stale-version",reason:"The className source file changed before save."}:this.buildPlan(t,n,[{order:0,file:o,type:"set-class-name-source",request:{...n.params,key:r.key}}],i)}async planSetProps(t,n,r){let o=this.graph.getCapability(r.key),i=await this.buildTypedPropertySteps({node:r,scope:n.params.scope,changes:n.params.changes,selectionRef:n.selectionRef});return i.ok?this.buildPlan(t,n,i.steps,o):mk(i)}async planApplyStyleDraft(t,n,r){let o=r.file,i=this.graph.getCapability(r.key),s=[];if(n.params.className){if(n.params.className.filePath!==o)return{ok:!1,errorCode:"stale-version",reason:"The className source file changed before save."};s.push({order:s.length,file:o,type:"set-class-name-source",request:{kind:"set-class-name-source",...n.params.className,key:r.key}})}if(n.params.props){let a=await this.buildStyleDraftPropertySteps({initialOrder:s.length,node:r,props:n.params.props,selectionRef:n.selectionRef});if(!a.ok)return a;s.push(...a.steps)}return this.buildPlan(t,n,s,i)}async buildTypedPropertySteps(t){let n=this.graph.getPropertyState;return n?zf({node:t.node,scope:t.scope,changes:t.changes,selectionRef:t.selectionRef,getPropertyState:n,getRepeatPropertyTarget:this.graph.getRepeatPropertyTarget,getFileContent:r=>this.graph.getFileContent(r),getFileVersion:r=>this.graph.getFileVersion(r),classNameSource:this.graph.getClassNameSource?.(t.node.key)??void 0}):{ok:!1,errorCode:"missing-property-state",reason:"Typed property planning requires authoritative property provenance"}}async buildStyleDraftPropertySteps(t){let{initialOrder:n,node:r,props:o,selectionRef:i}=t,s=[],a=[];for(let[c,l]of Object.entries(o)){if(l===void 0)continue;let u=await this.graph.getElementPropertyWriteTarget?.(r.key,c),f=r.attributes?.find(d=>d.name===c);if((await this.graph.getPropertyState?.(r.key,c,i))?.status==="blocked"||!u&&f?.source)return{ok:!1,errorCode:"capability-denied",reason:`apply-style-draft cannot overwrite a derived or unresolved property '${c}'`};if(!(typeof f?.resolvedValue=="string"&&f.resolvedValue===l||f?.source===null&&f.value===l)){if(u?.kind==="external-entry")return{ok:!1,errorCode:"capability-denied",reason:`apply-style-draft cannot overwrite readonly external property '${c}'`};if(u?.kind==="value-binding"&&u.locator){let d=u.locator;if(u.sourceKind==="repeat-template"&&typeof i?.instanceIndex=="number"){let g=ac(u,i.instanceIndex);if(!g)return{ok:!1,errorCode:"invalid-params",reason:"apply-style-draft could not resolve the selected repeat item"};d=g}s.push({order:n+s.length,file:u.file,type:"update-value",locator:d,value:l});continue}a.push({operation:"set",name:c,value:l})}}return a.length>0&&s.push({order:n+s.length,file:r.file,type:"set-property-changes",locator:Se(r),scope:"selection",changes:a}),{ok:!0,steps:s}}buildTextRewriteSteps(t,n,r,o,i){if(o?.kind==="value-binding"&&o.locator){if(o.sourceKind==="repeat-template"&&typeof i?.instanceIndex=="number"){let a=ac(o,i.instanceIndex);if(!a)return{ok:!1,errorCode:"invalid-params",reason:"update-text could not resolve the selected repeat item"};let c=this.coerceTextValueForValueTarget(o.file,a,r);return c.ok?{ok:!0,steps:[{order:0,file:o.file,type:"update-array-item",locator:a,value:c.value}]}:c}let s=this.coerceTextValueForValueTarget(o.file,o.locator,r);return s.ok?{ok:!0,steps:[{order:0,file:o.file,type:"update-value",locator:o.locator,value:s.value}]}:s}return{ok:!0,steps:o?.kind==="external-entry"?[{order:0,file:`external:${o.sourceId}`,type:"invoke-external-adapter",sourceType:o.sourceType,sourceId:o.sourceId,adapterId:o.adapterId,capability:"write-text",value:r}]:[{order:0,file:t.file,type:"update-text",locator:Se(t),segmentIndex:n,newText:r}]}}coerceTextValueForValueTarget(t,n,r,o="update-text"){let i=this.graph.getFileContent(t),s=Ue(i);if(!s)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not inspect the value source`};let a=ie(s,n);if(!a.ok)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not resolve the value source`};if(!Lv(a.match.path))return{ok:!0,value:r};let c=Bv(r);return c===null?{ok:!1,errorCode:"invalid-params",reason:`${o} value must be a valid number for numeric source`}:{ok:!0,value:c}}planUpdateArrayItem(t,n,r,o){if(!r.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update repeated text on this node"};if(o?.kind!=="value-binding"||o.sourceKind!=="repeat-template"||!o.locator)return{ok:!1,errorCode:"invalid-params",reason:"update-array-item requires a writable repeat-template source"};let{index:i,value:s}=n.params,a=o.collectionPathMap?.length??o.collectionIndexMap?.length;if(a!==void 0&&i>=a)return{ok:!1,errorCode:"invalid-params",reason:`update-array-item index ${i} is outside the repeated source`};let c=ac(o,i);if(!c)return{ok:!1,errorCode:"invalid-params",reason:"update-array-item could not resolve the selected repeat item"};let l=this.coerceTextValueForValueTarget(o.file,c,s,"update-array-item");return l.ok?this.isValueTargetUnchanged(o.file,c,l.value)?{ok:!1,errorCode:"invalid-params",reason:"update-array-item value is unchanged"}:this.buildPlan(t,n,[{order:0,file:o.file,type:"update-array-item",locator:c,value:l.value}],r):l}isValueTargetUnchanged(t,n,r){let o=Ue(this.graph.getFileContent(t));if(!o)return!1;let i=ie(o,n);if(!i.ok)return!1;let s=i.match.path;if(s.isStringLiteral())return typeof r=="string"&&s.node.value===r;if(s.isNumericLiteral())return typeof r=="number"&&Object.is(s.node.value,r);if(s.isBooleanLiteral())return typeof r=="boolean"&&s.node.value===r;if(s.isNullLiteral())return r===null;if(s.isUnaryExpression({operator:"-"})){let a=s.get("argument");return typeof r=="number"&&!Array.isArray(a)&&a.isNumericLiteral()&&Object.is(-a.node.value,r)}return!1}planUpdateText(t,n,r,o,i){let s=this.graph.getTextProvenance?.(r.key,n.params.segmentIndex);if(s&&(s.editMode==="readonly"||s.editMode==="unsupported"))return{ok:!1,errorCode:"unsupported-operation",reason:"Text has no identity-preserving write target"};if(!o.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update text on this node"};let a=this.buildTextRewriteSteps(r,n.params.segmentIndex,n.params.value,i,n.selectionRef);return a.ok?this.buildPlan(t,n,a.steps,o):a}async planRemoveNode(t,n,r,o){if(!o.canRemove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot remove this node"};let i=await this.graph.getTextWriteTarget(r.key,0);if(i?.kind==="external-entry")return this.buildPlan(t,n,[{order:0,file:`external:${i.sourceId}`,type:"invoke-external-adapter",sourceType:i.sourceType,sourceId:i.sourceId,adapterId:i.adapterId,capability:"remove-node",value:{operation:"remove-node"}}],o);if(r.isRepeatItemRoot){let f=i;if(f?.kind==="value-binding"&&f.locator){let m=Qr(f.locator);if(m)return this.buildPlan(t,n,[{order:0,file:f.file,type:"remove-bound-array-item",locator:m.locator,index:m.index}],o)}return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed node removal requires a writable array target"}}let s=Yr(r,i,this.graph.getTextProvenance?.(r.key,0)??null);if(s)return{ok:!1,errorCode:"unsupported-operation",reason:s};let a=this.getRepeatBackedTemplateStructureReason(r);if(a)return{ok:!1,errorCode:"unsupported-operation",reason:a};let c=await this.getUpstreamBackedDescendantReason(r);if(c)return{ok:!1,errorCode:"unsupported-operation",reason:c};let l=[{order:0,file:r.file,type:"remove-node",locator:Se(r),removeWhitespace:!0}],u=this.buildRemoveComponentImportStep(r);return u&&l.push({...u,order:l.length}),this.buildPlan(t,n,l,o)}buildRemoveComponentImportStep(t,n=this.graph.getFileContent(t.file)){if(!t.importedFrom||!t.exportName||!t.tag||$f(n,t)>1)return null;let r=cc(t.file,t.importedFrom);return{order:0,file:t.file,type:"remove-import",moduleSpecifier:r,imports:t.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:t.exportName}]}}async planInsertChild(t,n,r,o,i){if(!Fi(n.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};if(n.params.node.kind==="component-call"&&!n.params.node.component)return{ok:!1,errorCode:"unsupported-operation",reason:"Materialized component insertion requires the materialization transaction planner"};if(!o.canInsertChild)return{ok:!1,errorCode:"capability-denied",reason:"Cannot insert child into this node"};let s=this.graph.getEditableTextSegmentIndex(r.key),a=s!==null?await this.graph.getTextWriteTarget(r.key,s):null,c=Yr(r,a,s!==null?this.graph.getTextProvenance?.(r.key,s)??null:null);if(c)return{ok:!1,errorCode:"unsupported-operation",reason:c};let l=await this.getUpstreamBackedDescendantReason(r);if(l)return{ok:!1,errorCode:"unsupported-operation",reason:l};let u=await this.planExternalBackedInsertChild(t,n,r,o,i,a);if(u)return u;let f=await this.planRepeatBackedInsertChild(t,n,r,o);if(f)return f;let m=this.getRepeatBackedTemplateStructureReason(r);if(m)return{ok:!1,errorCode:"unsupported-operation",reason:m};let d=Sf(this.graph.getFileContent(r.file),r);if(!d.allowed)return{ok:!1,errorCode:"unsupported-operation",reason:d.reason??"Cannot insert child into this node"};let g=_i(r,n.params.node);if(g)return{ok:!1,errorCode:"unsupported-operation",reason:g};let h=[],S=0,E=n.params.node.kind==="component-call"?nk(n.params.node,this.graph.getFileContent(r.file)):void 0,k=E?.importStep;return k&&h.push({order:S++,file:r.file,type:"add-import",moduleSpecifier:k.moduleSpecifier,imports:k.imports}),h.push({order:S++,file:r.file,type:"insert-child",parentLocator:Se(r),node:{jsx:rk(n.params.node,E?.localName)},placement:n.params.position.relation,anchorLocator:i?Se(i):void 0}),this.buildPlan(t,n,h,o)}async planExternalBackedInsertChild(t,n,r,o,i,s){if(!Fi(n.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let a=s?.kind==="external-entry"?s:await this.findExternalInsertContext(r,i);if(!a)return null;let c=i?await this.graph.getTextWriteTarget(i.key,0):null;return this.buildPlan(t,n,[{order:0,file:`external:${a.sourceId}`,type:"invoke-external-adapter",sourceType:a.sourceType,sourceId:a.sourceId,adapterId:a.adapterId,capability:"insert-child",value:{operation:"insert-child",relation:n.params.position.relation,parentKey:r.key,anchorSourceId:c?.kind==="external-entry"?c.sourceId:null,node:ok(n.params.node)}}],o)}async findExternalInsertContext(t,n){if(n){let o=await this.graph.getTextWriteTarget(n.key,0);if(o?.kind==="external-entry")return o}if(!this.graph.getChildNodes)return null;let r=[...this.graph.getChildNodes(t.key)];for(;r.length>0;){let o=r.shift();if(!o)continue;let i=await this.graph.getTextWriteTarget(o.key,0);if(i?.kind==="external-entry")return i;let s=this.graph.getTextProvenance?.(o.key,0)?.finalSource?.externalSource;if(s)return{kind:"external-entry",file:`external:${s.sourceId}`,sourceType:s.sourceType,sourceId:s.sourceId,adapterId:s.adapterId,displayExpression:s.sourceId};r.push(...this.graph.getChildNodes(o.key))}return null}async planRepeatBackedInsertChild(t,n,r,o){if(!Fi(n.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};if(n.params.position.relation!=="append"&&n.params.position.relation!=="prepend")return null;let i=n.params.node;if(i.kind!=="native-tag"||i.text===void 0||!this.graph.getChildNodes)return null;let s=this.graph.getChildNodes(r.key).find(f=>f.isRepeatItemRoot&&f.tag?.toLowerCase()===i.tag.toLowerCase());if(!s)return null;let a=await this.graph.getTextWriteTarget(s.key,0);if(!a||a.kind!=="value-binding"||!a.locator)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires a writable value target"};let c=Qr(a.locator);if(!c)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires an array-backed target"};let l=ak(a.locator,i.text);if(l===void 0)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child could not infer an item shape from the template"};let u=n.params.position.relation==="prepend"?cp(0,a.collectionIndexMap):cp(a.collectionIndexMap?.length??c.index+1,a.collectionIndexMap);return this.buildPlan(t,n,[{order:0,file:a.file,type:"insert-bound-array-item",locator:c.locator,index:u,value:l}],o)}async getUpstreamBackedDescendantReason(t){if(!this.graph.getChildNodes)return null;let n=[...this.graph.getChildNodes(t.key)];for(;n.length>0;){let r=n.shift();if(!r)continue;let o=this.graph.getEditableTextSegmentIndex(r.key),i=o!==null?await this.graph.getTextWriteTarget(r.key,o):null,s=Yr(r,i,o!==null?this.graph.getTextProvenance?.(r.key,o)??null:null);if(s)return s;n.push(...this.graph.getChildNodes(r.key))}return null}getRepeatBackedTemplateStructureReason(t){if(t.isRepeatItemRoot)return nr(this.graph.getFileContent(t.file),t)?"Cannot edit repeat-backed item template structure with a generic node operation":"Cannot edit repeat-backed child node structure with a generic node operation";if(t.structuralPath.includes("#repeat:")||Yf(this.graph.getFileContent(t.file),t))return"Cannot edit repeat-backed child node structure with a generic node operation";let n=t.parentKey;for(;n;){let r=this.graph.getNode(n);if(!r)return null;if(r.isRepeatItemRoot||r.isRepeatRegion)return"Cannot edit repeat-backed child node structure with a generic node operation";n=r.parentKey}return null}planRepeatTemplateInternalMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&nr(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ue(c);if(!l)return null;let u=Ot(l,r),f=Ot(l,o);if(!u||!f)return null;let m=Dt(c,u),d=Dt(c,f);if(!Wr(m,d))return null;if(a&&(s==="before"||s==="after")){let h=Ot(l,a),S=h?Dt(c,h):null;if(!Wr(m,S))return null}if(Ni(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let g=Qa(c,r,o);return g.ok?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:Se(r),targetParentLocator:Se(o),placement:s,anchorLocator:a?Se(a):void 0,selectionContext:or(o)}],i):{ok:!1,errorCode:"unsupported-operation",reason:g.reason??`Cannot move node because it depends on bindings outside the target scope: ${g.bindingNames.join(", ")}`}}planRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&nr(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ue(c);if(!l)return null;let u=Ot(l,r),f=Ot(l,o);if(!u||!f)return null;let m=Dt(c,u);if(!m)return null;let d=Dt(c,f);if(Wr(m,d))return null;if(d&&!Wf(d,m))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child into a different repeat template"};if(a&&(s==="before"||s==="after")){let I=Ya(c,l,a);if(d&&!Wr(d,I)||!d&&I)return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child relative to a repeat-template anchor outside the target scope"}}if(r.tag&&r.tag.toLowerCase()===r.tag){let I=_i(o,{kind:"native-tag",tag:r.tag});if(I)return{ok:!1,errorCode:"unsupported-operation",reason:I}}let g=oc(this.graph,r);if(!g)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Ni(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let h=op(c,u,f,g);for(let I of h.conditionPaths){let w=tc(I,f,m);if(!w.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${w.bindingNames.join(", ")}`}}let S=ec(u,f,m,{preserveConditionalBoundary:h.conditionPaths.length>0});if(!S.ok)return{ok:!1,errorCode:"unsupported-operation",reason:S.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${S.bindingNames.join(", ")}`};let E=qf(m,f);if(!E.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its callback parameters depend on bindings outside the target scope: ${E.bindingNames.join(", ")}`};let k=m;if(r.component!==o.component){let I=$v({source:c,ast:l,sourceContext:m,sourceNode:r,targetParent:o,targetParentPath:f});if(!I.ok)return{ok:!1,errorCode:"unsupported-operation",reason:I.reason};k=I.context}else{let I=nc(m.collectionPath,f);if(!I.ok)return{ok:!1,errorCode:"unsupported-operation",reason:I.reason??`Cannot move repeat-backed child because the repeat collection is not visible at the target: ${I.bindingNames.join(", ")}`}}return this.buildPlan(t,n,[{order:0,file:r.file,type:"move-repeat-template-child",locator:Se(r),targetParentLocator:Se(o),placement:s,anchorLocator:a?Se(a):void 0,repeatExpression:rc(k,h.sourceJsx),selectionContext:or(o)}],i)}planCrossFileRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&nr(this.graph.getFileContent(r.file),r)||r.file===o.file)return null;let c=this.graph.getFileContent(r.file),l=this.graph.getFileContent(o.file),u=Ue(c),f=Ue(l);if(!u||!f)return null;let m=Uf({knownSourceFiles:this.graph.getKnownSourceFiles?.(),routeEntryFiles:this.graph.getRouteEntryFiles?.(),sourceAst:u,sourceFile:r.file,targetFile:o.file,sourceComponent:r.component,targetComponent:o.component});if(!m.ok)return{ok:!1,errorCode:"unsupported-operation",reason:m.reason};let d=Ot(u,r),g=Ot(f,o);if(!d||!g)return null;let h=qa(m.callSitePath,g);if(!h.ok)return{ok:!1,errorCode:"unsupported-operation",reason:h.reason};let S=Dt(c,d);if(!S)return null;if(Dt(l,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child into a different repeat template"};if(a&&(s==="before"||s==="after")&&Ya(l,f,a))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child relative to a repeat-template anchor outside the target scope"};if(r.tag&&r.tag.toLowerCase()===r.tag){let _=_i(o,{kind:"native-tag",tag:r.tag});if(_)return{ok:!1,errorCode:"unsupported-operation",reason:_}}let k=oc(this.graph,r);if(!k)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Ni(d,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let I=op(c,d,g,k);for(let _ of I.conditionPaths){let L=tc(_,g,S);if(!L.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${L.bindingNames.join(", ")}`}}let w=ec(d,g,S,{preserveConditionalBoundary:I.conditionPaths.length>0});if(!w.ok)return{ok:!1,errorCode:"unsupported-operation",reason:w.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${w.bindingNames.join(", ")}`};let P=Hv({sourceFile:r.file,targetFile:o.file,sourceContext:S,targetParentPath:g});if(!P.ok)return{ok:!1,errorCode:"unsupported-operation",reason:P.reason};let A=ep(S);if(!A.ok)return{ok:!1,errorCode:"unsupported-operation",reason:A.reason};let C=tp(S,A.callbackParams),T=[{order:0,file:r.file,type:"remove-node",locator:Se(r),removeWhitespace:!0}];for(let _ of P.imports)T.push({order:T.length,file:o.file,type:"add-import",moduleSpecifier:_.moduleSpecifier,imports:_.imports});return T.push({order:T.length,file:o.file,type:"insert-jsx-expression-child",parentLocator:Se(o),expression:rc(C,I.sourceJsx),placement:s,anchorLocator:a?Se(a):void 0,selectionContext:or(o)}),this.buildPlan(t,n,T,i)}async planMoveNode(t,n,r,o){if(!o.canMove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move this node"};let i=ap(n.params.target,this.graph);if(i.error)return{ok:!1,errorCode:i.error.errorCode,reason:i.error.reason};let s=i.parentNode;if(!s)return{ok:!1,errorCode:"locator-miss",reason:`Target parent for request '${n.id}' not found in graph`};let a=this.graph.getFileVersion(s.file);if(n.documentVersion!==a)return{ok:!1,errorCode:"stale-version",reason:`Document version ${n.documentVersion} is stale or otherwise does not match target parent version (current: ${a})`};if(sk(s.key,r.key,this.graph))return{ok:!1,errorCode:"capability-denied",reason:"Cannot move node into its own subtree"};if(r.isRepeatRegion&&s.isBoundary)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move repeat-region node across boundary"};if(!this.graph.getCapability(s.key).canInsertChild)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move node into this parent"};let c=await this.graph.getTextWriteTarget(r.key,0);if(c?.kind==="external-entry"){let I=n.params.target.relation,w=i.anchorNode&&(I==="before"||I==="after")?await this.graph.getTextWriteTarget(i.anchorNode.key,0):null;return this.buildPlan(t,n,[{order:0,file:`external:${c.sourceId}`,type:"invoke-external-adapter",sourceType:c.sourceType,sourceId:c.sourceId,adapterId:c.adapterId,capability:"move-node",value:{operation:"move-node",relation:I,anchorSourceId:w?.kind==="external-entry"?w.sourceId:null,parentKey:"parentKey"in n.params.target?n.params.target.parentKey:null}}],o)}let l=r.file!==s.file,u=n.params.target.relation,f=i.anchorNode,m=this.graph.getTextProvenance?.(r.key,0)??null,d=Yr(r,c,m);if(d&&!ic(d)&&!np(r,s,c,m))return{ok:!1,errorCode:"unsupported-operation",reason:d};if(r.isRepeatItemRoot&&f?.isRepeatItemRoot&&r.repeatOwnerKey&&r.repeatOwnerKey===f.repeatOwnerKey&&(u==="before"||u==="after")){let I=c,w=await this.graph.getTextWriteTarget(f.key,0);if(I?.kind==="value-binding"&&w?.kind==="value-binding"&&I.locator&&w.locator){let P=Qr(I.locator),A=Qr(w.locator);if(P&&A&&I.file===w.file&&uk(P.locator,A.locator)){let C=P.index,T=A.index,_=u==="before"?T-(C<T?1:0):T+(C<T?0:1);return this.buildPlan(t,n,[{order:0,file:I.file,type:"move-array-item",locator:P.locator,fromIndex:C,toIndex:_}],o)}}}if(r.isRepeatItemRoot&&nr(this.graph.getFileContent(r.file),r))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed item outside its collection"};let g=this.getRepeatBackedTemplateStructureReason(r),h=ic(d)?d:g;if(h&&ic(h)){let I=this.planRepeatTemplateInternalMove(t,n,r,s,o,u,f);if(I)return I;let w=this.planRepeatTemplateHoistMove(t,n,r,s,o,u,f);if(w)return w;let P=this.planCrossFileRepeatTemplateHoistMove(t,n,r,s,o,u,f);return P||{ok:!1,errorCode:"unsupported-operation",reason:h}}if(g)return{ok:!1,errorCode:"unsupported-operation",reason:g};let S=await this.getUpstreamBackedDescendantReason(r);if(S)return{ok:!1,errorCode:"unsupported-operation",reason:S};if(r.tag&&r.tag.toLowerCase()===r.tag){let I=_i(s,{kind:"native-tag",tag:r.tag});if(I)return{ok:!1,errorCode:"unsupported-operation",reason:I}}if(l)return this.planCrossFileMove(t,n,r,s,o,u,f);let E=Qa(this.graph.getFileContent(r.file),r,s);if(!E.ok)return{ok:!1,errorCode:"unsupported-operation",reason:E.reason??`Cannot move node because it depends on bindings outside the target scope: ${E.bindingNames.join(", ")}`};let k=[{order:0,file:r.file,type:"move-node",locator:Se(r),targetParentLocator:Se(s),placement:u,anchorLocator:f?Se(f):void 0,selectionContext:or(s)}];return this.buildPlan(t,n,k,o)}planCrossFileMove(t,n,r,o,i,s,a){let c=[],l=0,u=this.graph.getFileContent(r.file),f=oc(this.graph,r)??`<${r.component} />`,m=Ef(u,r);if(!m.allowed)return{ok:!1,errorCode:"unsupported-operation",reason:m.reason??"Cannot move subtree across files"};if(c.push({order:l++,file:r.file,type:"remove-node",locator:Se(r),removeWhitespace:!0}),r.importedFrom&&r.exportName){let g=r.tag??r.component,S={moduleSpecifier:cc(o.file,r.importedFrom),imports:r.exportName==="default"?[{kind:"default",local:g}]:[{kind:"named",imported:r.exportName,local:g===r.exportName?void 0:g}]};c.push({order:l++,file:o.file,type:"add-import",moduleSpecifier:S.moduleSpecifier,imports:S.imports}),c.push({order:l++,file:o.file,type:"insert-child",parentLocator:Se(o),node:{jsx:f},placement:s,anchorLocator:a?Se(a):void 0,selectionContext:or(o)})}else c.push({order:l++,file:o.file,type:"insert-child",parentLocator:Se(o),node:{jsx:f},placement:s,anchorLocator:a?Se(a):void 0,selectionContext:or(o)});let d=this.buildRemoveComponentImportStep(r,u);return d&&c.push({...d,order:l++}),this.buildPlan(t,n,c,i)}buildPlan(t,n,r,o){let s=[...new Set(r.map(a=>a.file))].map(a=>({file:a,content:this.graph.getFileContent(a),version:this.graph.getFileVersion(a),exists:!0,sha256:be(this.graph.getFileContent(a))}));return{ok:!0,plan:{operationId:t,kind:n.kind,target:n.target,documentVersion:n.documentVersion,steps:r,preSnapshots:s,validatedCapability:o}}}};function mk(e){return{ok:!1,errorCode:e.errorCode==="readonly-property"?"capability-denied":e.errorCode==="missing-property-state"||e.errorCode==="repeat-target-failed"||e.errorCode==="unsupported-binding"?"unsupported-operation":"invalid-params",reason:e.reason}}import hc from"@babel/generator";import{parse as Pk}from"@babel/parser";import yc from"@babel/traverse";import*as R from"@babel/types";import*as Bt from"@babel/types";import fc from"@babel/generator";import*as he from"@babel/types";var gk=typeof fc=="function"?fc:fc.default,hk=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,yk=/^((?:https?:)?\/\/)[^/@\s]+@/i,xk=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function pp(e,t){let n=Lt(e.callee);if(!n)return null;if(n==="fetch")return pc(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(fp(r))return pc(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(fp(r))return pc(e.arguments[0],r,t,["ky client contract"])}return null}function pc(e,t,n,r){if(!e||he.isSpreadElement(e)||he.isJSXNamespacedName(e))return vk(t,n,r,"missing url argument");let o=qr(e);return{sourceKind:Ek(o),...o?{endpointPattern:o}:{},method:t,confidence:o?"exact":"partial",evidence:[{file:n.file,reason:[...r,o?"endpoint pattern resolved":"endpoint pattern unresolved"].join("; ")}]}}function qr(e){if(he.isStringLiteral(e))return Di(e.value);if(he.isTemplateLiteral(e))return Di(bk(e));if(he.isBinaryExpression(e)&&e.operator==="+"){let t=qr(e.left),n=qr(e.right);return!t&&!n?void 0:Di(`${t??mc(e.left)}${n??mc(e.right)}`)}if(he.isMemberExpression(e)){let t=mp(e);if(t)return`env:${t}`}if(!(he.isCallExpression(e)&&Lt(e.callee)==="new URL")){if(he.isNewExpression(e)&&he.isIdentifier(e.callee,{name:"URL"})){let[t,n]=e.arguments,r=t&&!he.isSpreadElement(t)?qr(t):void 0,o=n&&!he.isSpreadElement(n)?qr(n):void 0;return o&&r?Di(`${o} + ${r}`):r??o}if(he.isIdentifier(e))return`:${e.name}`}}function bk(e){let t="";for(let n=0;n<e.quasis.length;n+=1){t+=e.quasis[n]?.value.cooked??e.quasis[n]?.value.raw??"";let r=e.expressions[n];r&&(t+=mc(r))}return t}function mc(e){if(he.isIdentifier(e))return`:${e.name}`;if(he.isMemberExpression(e)){let t=mp(e);if(t)return`env:${t}`}return`:${Sk(e)}`}function Sk(e){return gk(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function Di(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(yk,"$1<redacted>@").replace(xk,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?hk.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function Ek(e){return e?e.startsWith("/api/")?"site-api-route":/^(?:https?:)?\/\//.test(e)||e.startsWith("env:")?"external-api":e.startsWith("/")?"site-api-route":"unknown-api":"unknown-api"}function vk(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function fp(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function mp(e){return!he.isMemberExpression(e.object)||!he.isIdentifier(e.object.object,{name:"process"})||!kk(e.object.property,"env")?null:he.isIdentifier(e.property)?e.property.name:he.isStringLiteral(e.property)?e.property.value:null}function kk(e,t){return he.isIdentifier(e)&&e.name===t}function Lt(e){if(he.isIdentifier(e))return e.name;if(he.isMemberExpression(e)){let t=Lt(e.object),n=he.isIdentifier(e.property)?e.property.name:he.isStringLiteral(e.property)?e.property.value:null;if(t&&n)return`${t}.${n}`}return null}var Ik=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),Ck=new Set(["getConfig","submit"]);function gp(e,t){let n=Rk(Lt(e.callee),t);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!Ik.has(i))return null;let s=gc(e,0),a=i==="getByUrl"||i==="getByUrlStrict",c=a?void 0:s,l=a?s??"/:record-url":c?`/collections/${c}`:"/collections/:collection";return{sourceKind:"vcp-cms-collection",sourceType:"cms-field",operation:i,...c?{collection:c}:{},endpointPattern:l,confidence:s?"exact":"partial",evidence:[{file:t.file,symbol:n,reason:"VCP CMS collection facade"}]}}let o="cms.forms.";if(n.startsWith(o)){let i=n.slice(o.length);if(!Ck.has(i))return null;let s=gc(e,0);return{sourceKind:"vcp-cms-form",sourceType:"cms-field",operation:i,...s?{collection:s}:{},endpointPattern:s?`/forms/${s}`:"/forms/:form",confidence:s?"exact":"partial",evidence:[{file:t.file,symbol:n,reason:"VCP CMS form facade"}]}}if(n==="cmsFetch"||n==="cmsFetchResult"||n==="cmsFetchEnvelope"){let i=gc(e,0)??wk(e,0,"path")??"/cms/:path",s=Nk(i);return{sourceKind:"vcp-cms-collection",sourceType:"cms-field",operation:n,...s?{collection:s}:{},endpointPattern:i,confidence:i==="/cms/:path"?"partial":"safe-derived",evidence:[{file:t.file,symbol:n,reason:"VCP CMS fetch helper"}]}}return null}function Rk(e,t){let n=e?.indexOf(".")??-1;if(!e||n<1)return e;let r=t.imports?.get(e.slice(0,n));return r?.importedName==="collections"&&/(?:^|\/)lib\/cms\/collections(?:\.js)?$/.test(r.source)?`cms.collections${e.slice(n)}`:e}function hp(e,t){let n=Lt(e);return n==="cms.settings"?{sourceKind:"vcp-cms-settings",sourceType:"cms-field",operation:"settings",endpointPattern:"/settings",confidence:"exact",evidence:[{file:t.file,symbol:n,reason:"VCP CMS settings facade"}]}:n==="cms.navigation"?{sourceKind:"vcp-cms-navigation",sourceType:"cms-field",operation:"navigation",endpointPattern:"/navigation",confidence:"exact",evidence:[{file:t.file,symbol:n,reason:"VCP CMS navigation facade"}]}:null}function yp(e){let t=Lt(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function gc(e,t){let n=e.arguments[t];return Bt.isStringLiteral(n)?n.value:null}function wk(e,t,n){let r=e.arguments[t];if(!Bt.isObjectExpression(r))return null;for(let o of r.properties)if(Bt.isObjectProperty(o)&&!o.computed&&(Bt.isIdentifier(o.key)&&o.key.name===n||Bt.isStringLiteral(o.key)&&o.key.value===n)&&Bt.isStringLiteral(o.value))return o.value.value;return null}function Nk(e){return/^\/collections\/([^/]+)(?:\/|$)/.exec(e)?.[1]??null}var bc=typeof yc=="function"?yc:yc.default,O_=typeof hc=="function"?hc:hc.default,Ak={maxFunctionDepth:8,maxImportDepth:6},Tk=new Set(["src","href","alt","poster","content","title","aria-label"]);async function kp(e){let t=e.fileCache??new Map,n=vc(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...Ak,...e.options},variableCache:new Map,functionDepth:0,importDepth:0,paramSources:new Map,resolvingVariables:new Set,resolvingComponentProps:new Set,scopeVariables:Lp(n,e.element.componentName)};await Ip(e.element.componentName,e.graph,r);let o=[];o.push(...await Dk(e.element,e.graph,r),...await Lk(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await Bk(s,e.element,e.graph,r);a&&o.push($i(a,"text","children"))}for(let s of e.element.attributes??[]){let a=Mk(s,e.element);if(!a)continue;let c=await wp(s.source,e.element,e.graph,r);c&&o.push($i(c,a,s.name))}let i=qk(o).sort(Mp);return{hasDynamicData:i.length>0,bindings:i}}async function Ip(e,t,n){if(n.importDepth>=n.options.maxImportDepth)return;let r=n.analysis.functions.get(e)??n.analysis.functions.get("default"),o=r?.params[0];if(!r||!o)return;let i=n.analysis.functions.get("default")===r?"default":e,s=[];for(let l of t.elements.values()){if(l.sourceFile===n.file&&l.tag===e){s.push(l);continue}!l.importedFrom||!l.exportName||l.importedFrom===n.file&&l.exportName!==i||(l.importedFrom===n.file||await Cp(l.importedFrom,l.exportName,n.file,n))&&s.push(l)}if(s.length===0)return;let a=new Map;for(let l of s){let u=`${n.file}#${e}<-${l.identity.key}`;if(!n.resolvingComponentProps.has(u)){n.resolvingComponentProps.add(u);try{let f=await Rp(l.sourceFile,n);if(!f)continue;let m=Vi(f,n,{importDepth:n.importDepth+1});m.paramSources.clear(),m.scopeVariables=Lp(f,l.componentName),await Ip(l.componentName,t,m);let d=await Fk(l,m);for(let[g,h]of d){if(!h)continue;let S=a.get(g)??[];S.push(h),a.set(g,S)}}finally{n.resolvingComponentProps.delete(u)}}}let c=new Map;for(let[l,u]of a){let f=_p(u);f.length===1&&c.set(l,f[0])}Ok(o,c,n)}async function Cp(e,t,n,r,o=new Set){if(e===n)return!0;if(o.size>=r.options.maxImportDepth||o.has(`${e}#${t}`))return!1;o.add(`${e}#${t}`);let s=(await Rp(e,r))?.imports.get(t);if(!s||!Tt(s.source))return!1;let a=await jp(e,s.source,r.exists);return a?a===n?!0:Cp(a,s.importedName,n,r,o):!1}async function Fk(e,t){let n=new Map;bc(t.analysis.ast,{JSXElement(o){if(_k(o.node,e.sourceRange)){for(let i of o.node.openingElement.attributes)!R.isJSXAttribute(i)||!R.isJSXIdentifier(i.name)||!R.isJSXExpressionContainer(i.value)||!R.isExpression(i.value.expression)||n.set(i.name.name,i.value.expression);o.stop()}}});let r=new Map;for(let[o,i]of n){let s=await De(i,t);s&&r.set(o,s)}return r}function _k(e,t){return e.loc?.start.line===t.startLine&&e.loc.start.column===t.startColumn&&e.loc.end.line===t.endLine&&e.loc.end.column===t.endColumn}async function Rp(e,t){let n=t.fileCache.get(e);if(n)return n;if(!await t.exists(e))return null;let r=await t.readFile(e);return vc(e,r,t.fileCache)}function Ok(e,t,n){if(R.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,Ec(Object.fromEntries(t),n.file));return}if(R.isObjectPattern(e))for(let r of e.properties){if(!R.isObjectProperty(r)||r.computed||!R.isIdentifier(r.key))continue;let o=t.get(r.key.name);if(!o)continue;let i=R.isAssignmentPattern(r.value)?r.value.left:r.value;R.isIdentifier(i)&&n.paramSources.set(i.name,Ke(o))}}function Mk(e,t){return e.name==="dangerouslySetInnerHTML"?"richtext":Tk.has(e.name)?"attribute":t.importedFrom||/^[A-Z]/.test(t.tag)?"component-prop":null}async function Dk(e,t,n){let r=[];for(let o of t.regions){if(o.kind!=="repeat-region"||o.ownerKey!==e.identity.key)continue;let i=o.sourceCandidates?.find(a=>a.kind==="repeat-template");if(!i)continue;let s=await ji(i.collectionSource,n);s&&r.push($i(Nn(s),"repeat-region",i.collectionExpression))}return r}async function Lk(e,t,n){let r=[];for(let o of t.regions){if(o.kind!=="conditional-region"||o.ownerKey!==e.identity.key)continue;let i=o.sourceCandidates?.find(a=>a.kind==="conditional-branch");if(!i)continue;let s=await ji(i.conditionSource,n);s&&r.push($i(Nn(s),"conditional-region",i.conditionExpression))}return r}async function Bk(e,t,n,r){return wp(e.source,t,n,r)}async function wp(e,t,n,r){let o=await $k(e,t,n,r);return o||ji(e,r)}async function $k(e,t,n,r){if(!e)return null;let o=jk(e.base,t,n);if(!o)return null;let i=await ji(o.collectionSource,r);return i?ro(i,e.path,!0):null}function jk(e,t,n){let r=t.identity.key;for(;r;){for(let o of n.regions){if(o.kind!=="repeat-region"||!o.childKeys.includes(r))continue;let i=o.sourceCandidates?.find(s=>s.kind==="repeat-template"&&s.itemParamName===e);if(i)return i}r=n.elements.get(r)?.parentKey??null}return null}async function ji(e,t){if(!e)return null;let n=await Np(e.base,t);return n?ro(n,e.path,!1):null}async function Np(e,t){let n=t.paramSources.get(e);if(n)return Ke(n);if(t.variableCache.has(e))return eI(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await Vk(e,t);if(r)return t.variableCache.set(e,Ke(r)),t.resolvingVariables.delete(e),r;let o=t.scopeVariables?.get(e)??t.analysis.variables.get(e);if(o){let s=await De(o,t);return t.variableCache.set(e,s?Ke(s):null),t.resolvingVariables.delete(e),s}let i=t.analysis.imports.get(e);if(i&&t.importDepth<t.options.maxImportDepth){let s=await Bp(i,t);if(s){let a=Vi(s,t,{importDepth:t.importDepth+1}),c=$p(i,s);if(c){let f=(await Pn(c,[],a)).returnSource;return t.variableCache.set(e,f?Ke(f):null),t.resolvingVariables.delete(e),f}let l=s.variables.get(i.importedName);if(l){let u=await De(l,a);return t.variableCache.set(e,u?Ke(u):null),t.resolvingVariables.delete(e),u}}}return t.variableCache.set(e,null),t.resolvingVariables.delete(e),null}async function Vk(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];bc(t.analysis.ast,{CallExpression(o){if(R.isIdentifier(o.node.callee,{name:n})){let i=o.node.arguments[0];R.isExpression(i)&&r.push(i);return}o.node.arguments.some(i=>R.isIdentifier(i)&&i.name===n)&&r.push(o.node)}});for(let o of r){let i=await De(o,t);if(i)return i}return null}async function De(e,t){if(R.isIdentifier(e))return Np(e.name,t);if(R.isMemberExpression(e)||R.isOptionalMemberExpression(e)){let n=R.isMemberExpression(e)?hp(e,{file:t.file}):null;if(n)return Fp(n);let r=await Uk(e,t);if(!r)return null;let o=Zk(e);return ro(r,o,!1)}if(R.isAwaitExpression(e))return R.isExpression(e.argument)?De(e.argument,t):null;if(R.isCallExpression(e))return Pp(e,t);if(R.isObjectExpression(e)){let n=await Ap(e,t);return Object.keys(n).length>0?Ec(n,t.file):null}if(R.isConditionalExpression(e)){let n=await De(e.consequent,t),r=await De(e.alternate,t);return no(bp(n,r))}if(R.isLogicalExpression(e)){let n=await De(e.left,t),r=await De(e.right,t);return no(bp(n,r))}return R.isTSAsExpression(e)||R.isTSSatisfiesExpression(e)||R.isTSNonNullExpression(e)||R.isTypeCastExpression(e)||R.isParenthesizedExpression(e)?De(e.expression,t):null}async function Uk(e,t){let n=e;for(;R.isMemberExpression(n)||R.isOptionalMemberExpression(n);)n=n.object;return R.isExpression(n)?De(n,t):null}async function Pp(e,t){let n=gp(e,{file:t.file,imports:t.analysis.imports});if(n)return Fp(n);if(yp(e)){let f=e.arguments[0];if(f&&R.isExpression(f))return no(await De(f,t))}let r=await Kk(e,t);if(r)return r;let o=pp(e,{file:t.file});if(o)return{sourceKind:o.sourceKind,sourceType:"api-field",endpointPattern:o.endpointPattern,valuePath:o.valuePath,confidence:o.confidence,readonly:!0,evidence:o.evidence};let i=await zk(e,t);if(i)return i;let s=await Hk(e,t);if(s)return s;let a=await Wk(e,t);if(a)return a;let c=await Gk(e,t);if(c)return c;let l=[];for(let f of e.arguments)if(R.isExpression(f)){let m=await De(f,t);m&&l.push(m)}let u=_p(l);return u.length===1?no(u[0]):null}async function Kk(e,t){let n=Lt(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=Xk(e.arguments[0],t.file,"SWR key"),s=e.arguments[1];if(R.isIdentifier(s)){let a=await to(s.name,t);if(a)return(await Pn(a.node,i?[i]:[],a.context)).returnSource??i}return i}let r=e.arguments[0];if(!R.isObjectExpression(r))return Li(t.file,`${n} without static options`);let o=Jk(r,"queryFn");if(!o)return Li(t.file,`${n} without queryFn`);if(R.isIdentifier(o)){let i=await to(o.name,t);return i?(await Pn(i.node,[],i.context)).returnSource:Li(t.file,`${n} queryFn unresolved`)}return R.isArrowFunctionExpression(o)||R.isFunctionExpression(o)?(await Pn(o,[],t)).returnSource:R.isCallExpression(o)?Pp(o,t):null}function Jk(e,t){for(let n of e.properties){if(!R.isObjectProperty(n)||!R.isExpression(n.value))continue;if(Tp(n)===t)return n.value}return null}function Xk(e,t,n){return R.isStringLiteral(e)?{sourceKind:e.value.startsWith("/api/")?"site-api-route":"external-api",sourceType:"api-field",endpointPattern:e.value,confidence:"exact",readonly:!0,evidence:[{file:t,reason:n}]}:null}async function zk(e,t){if(!R.isMemberExpression(e.callee)||!R.isIdentifier(e.callee.property))return null;let n=e.callee.property.name;if(!["map","filter","slice","sort","toSorted"].includes(n))return null;let r=R.isExpression(e.callee.object)?await De(e.callee.object,t):null;if(!r)return null;if(n!=="map")return Nn(r);let o=e.arguments[0];if(R.isIdentifier(o)){let i=await to(o.name,t);if(!i)return Nn(r);let s=await Pn(i.node,[r],i.context);return{...Nn(r),...s.objectReturnMap??s.returnSource?.fieldMap?{fieldMap:s.objectReturnMap??s.returnSource.fieldMap}:{}}}if(R.isArrowFunctionExpression(o)||R.isFunctionExpression(o)){let i=await Pn(o,[r],t);return{...Nn(r),...i.objectReturnMap??i.returnSource?.fieldMap?{fieldMap:i.objectReturnMap??i.returnSource.fieldMap}:{}}}return Nn(r)}async function Hk(e,t){return!R.isMemberExpression(e.callee)||!R.isIdentifier(e.callee.property,{name:"json"})||!R.isExpression(e.callee.object)?null:De(e.callee.object,t)}async function Wk(e,t){return!R.isMemberExpression(e.callee)||!R.isIdentifier(e.callee.property,{name:"then"})||!R.isExpression(e.callee.object)?null:no(await De(e.callee.object,t))}async function Gk(e,t){if(!R.isIdentifier(e.callee))return null;let n=await to(e.callee.name,t);if(!n)return null;let r=[];for(let i of e.arguments){if(!R.isExpression(i)){r.push(Li(t.file,`unsupported argument for ${e.callee.name}`));continue}let s=await De(i,t);r.push(s)}return(await Pn(n.node,r,n.context)).returnSource}async function to(e,t){let n=t.analysis.functions.get(e);if(n)return{node:n,context:t};let r=t.analysis.imports.get(e);if(!r||t.importDepth>=t.options.maxImportDepth)return null;let o=await Bp(r,t);if(!o)return null;let i=Vi(o,t,{importDepth:t.importDepth+1}),s=$p(r,o);return s?{node:s,context:i}:to(r.importedName,i)}async function Pn(e,t,n){if(n.functionDepth>=n.options.maxFunctionDepth)return{returnSource:null};let r=Vi(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let u=t[l];u&&xc(c,Qk(u),r)});let o=Yk(e),i=null,s,a=!1;for(let c of o){if(R.isObjectExpression(c)){s={...s??{},...await Ap(c,r)},i=i??Ec(s,n.file);continue}let l=await De(c,r);if(l){if(!i){i=l;continue}let u=Sc(i,l);if(!u){a=!0,i=null;continue}i=u}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function xc(e,t,n){if(R.isIdentifier(e)){n.paramSources.set(e.name,Ke(t));return}if(R.isAssignmentPattern(e)){xc(e.left,t,n);return}if(R.isObjectPattern(e))for(let r of e.properties){if(!R.isObjectProperty(r)||r.computed||!R.isIdentifier(r.key))continue;let o=ro(t,[{kind:"property",name:r.key.name}],!0),i=R.isAssignmentPattern(r.value)?r.value.left:r.value;xc(i,o,n)}}function Yk(e){if(R.isArrowFunctionExpression(e)&&R.isExpression(e.body))return[e.body];let t=[],n=e.body;if(!R.isBlockStatement(n))return t;let r=o=>{if(R.isFunction(o)&&o!==e)return;if(R.isReturnStatement(o)){o.argument&&R.isExpression(o.argument)&&t.push(o.argument);return}let i=R.VISITOR_KEYS[o.type];for(let s of i??[]){let a=o[s];if(Array.isArray(a))for(let c of a)R.isNode(c)&&r(c);else R.isNode(a)&&r(a)}};return r(n),t}async function Ap(e,t){let n={};for(let r of e.properties){if(!R.isObjectProperty(r))continue;let o=Tp(r);if(!o||!R.isExpression(r.value))continue;let i=await De(r.value,t);i&&(n[o]=i)}return n}function Tp(e){return R.isIdentifier(e.key)&&!e.computed?e.key.name:R.isStringLiteral(e.key)?e.key.value:null}function Zk(e){let t=[],n=e;for(;R.isMemberExpression(n)||R.isOptionalMemberExpression(n);){let r=n.property;n.computed?R.isStringLiteral(r)?t.unshift({kind:"property",name:r.value}):R.isNumericLiteral(r)&&t.unshift({kind:"index",index:r.value}):R.isIdentifier(r)&&t.unshift({kind:"property",name:r.name}),n=n.object}return R.isIdentifier(n),t}function ro(e,t,n){if(t.length===0)return Ke(e);let r=t[0];if(r?.kind==="property"&&e.fieldMap?.[r.name])return ro(e.fieldMap[r.name],t.slice(1),n);let o=Ke(e);if(o.sourceType==="cms-field"){let i=t.filter(s=>s.kind==="property").map(s=>s.name);return i[0]==="data"&&i[1]==="items"?(o.valuePath=eo(o.valuePath,"data.items[]"),o.cmsFieldRoot=!1,o):i[0]==="fields"?(o.fieldPath=eo(o.fieldPath,i.slice(1).join(".")),o.cmsFieldRoot=!0,o):o.cmsFieldRoot||n||o.fieldMap?(o.fieldPath=eo(o.fieldPath,i.join(".")),o):(o.valuePath=eo(o.valuePath,xp(t)),o)}return o.valuePath=eo(o.valuePath,xp(t)),o}function xp(e){return e.map(t=>t.kind==="property"?t.name:`[${t.index}]`).join(".").replace(/\.\[/g,"[")}function eo(e,t){return t?e?t.startsWith("[")?`${e}${t}`:`${e}.${t}`:t:e}function Fp(e){return{sourceKind:e.sourceKind,sourceType:e.sourceType,operation:e.operation,collection:e.collection,endpointPattern:e.endpointPattern,valuePath:e.valuePath,confidence:e.confidence,readonly:!0,evidence:e.evidence}}function Nn(e){let t=Ke(e);return t.sourceType==="cms-field"&&!t.valuePath&&(t.valuePath="items[]"),t}function Qk(e){let t=Ke(e);return t.valuePath=void 0,t.sourceType==="cms-field"&&(t.cmsFieldRoot=!1),t}function no(e){return e?{...Ke(e),confidence:e.confidence==="unknown"?"unknown":"safe-derived",evidence:[...e.evidence,{file:e.evidence[0]?.file??"unknown",reason:"safe derived expression"}]}:null}function bp(e,t){return e?t?Sc(e,t):Ke(e):t?Ke(t):null}function Sc(e,t){if(Bi(e)!==Bi(t))return null;let n=Dp(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function _p(e){let t=new Map;for(let n of e){let r=Bi(n),o=t.get(r);t.set(r,o?Sc(o,n):Ke(n))}return[...t.values()]}function Bi(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,Bi(r)])):void 0;return JSON.stringify({sourceKind:e.sourceKind,sourceType:e.sourceType,endpointPattern:e.endpointPattern,operation:e.operation,collection:e.collection,fieldPath:e.fieldPath,valuePath:e.valuePath,cmsFieldRoot:e.cmsFieldRoot,fieldMap:t})}function Ec(e,t){let n=Object.values(e)[0];return{sourceKind:n?.sourceKind??"unknown-api",sourceType:n?.sourceType??"api-field",endpointPattern:n?.endpointPattern,operation:n?.operation,collection:n?.collection,confidence:n?.confidence??"partial",readonly:!0,evidence:n?.evidence??[{file:t,reason:"object return map"}],fieldMap:e}}function Li(e,t){return{sourceKind:"unknown-api",sourceType:"api-field",confidence:"unknown",readonly:!0,evidence:[{file:e,reason:t}]}}function $i(e,t,n){return{sourceKind:e.sourceKind,sourceType:e.sourceType,...e.endpointPattern?{endpointPattern:e.endpointPattern}:{},...e.operation?{operation:e.operation}:{},...e.collection?{collection:e.collection}:{},...e.fieldPath?{fieldPath:e.fieldPath}:{},...e.valuePath?{valuePath:e.valuePath}:{},targetKind:t,targetName:n,confidence:e.confidence,readonly:!0,evidence:e.evidence.map(r=>({...r}))}}function Op(e){let t=[...e].sort(Mp),n=t[0],r=[...new Set(t.flatMap(o=>o.sourceKind==="vcp-cms-collection"&&o.collection?[o.collection]:[]))];return{hasDynamicData:t.length>0,sourceKinds:[...new Set(t.map(o=>o.sourceKind))],...r.length>0?{collections:r}:{},...n?.endpointPattern?{primaryEndpoint:n.endpointPattern}:{},...n?.collection?{primaryCollection:n.collection}:{},...n?.fieldPath?{primaryFieldPath:n.fieldPath}:{}}}function qk(e){let t=new Set,n=[];for(let r of e){let o=JSON.stringify({sourceKind:r.sourceKind,endpointPattern:r.endpointPattern,collection:r.collection,fieldPath:r.fieldPath,valuePath:r.valuePath,targetKind:r.targetKind,targetName:r.targetName});t.has(o)||(t.add(o),n.push(r))}return n}function Mp(e,t){return Sp(e.targetKind)-Sp(t.targetKind)||Dp(e.confidence,t.confidence)||Ep(e.sourceKind)-Ep(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function Sp(e){return{"repeat-region":0,"conditional-region":1,text:2,richtext:3,attribute:4,"component-prop":5}[e]}function Ep(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function Dp(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function vc(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=Pk(t,{sourceType:"module",plugins:["jsx","typescript"]}),i={file:e,source:t,ast:o,variables:new Map,functions:new Map,imports:new Map,stateSetters:new Map,functionVariables:new WeakMap};return bc(o,{ImportDeclaration(s){let a=s.node.source.value;for(let c of s.node.specifiers)R.isImportSpecifier(c)&&R.isIdentifier(c.local)?i.imports.set(c.local.name,{source:a,importedName:R.isIdentifier(c.imported)?c.imported.name:c.imported.value,localName:c.local.name,isDefault:!1}):R.isImportDefaultSpecifier(c)&&i.imports.set(c.local.name,{source:a,importedName:"default",localName:c.local.name,isDefault:!0})},FunctionDeclaration(s){s.node.id?.name&&i.functions.set(s.node.id.name,s.node)},VariableDeclarator(s){let a=s.getFunctionParent(),c=a&&(R.isFunctionDeclaration(a.node)||R.isFunctionExpression(a.node)||R.isArrowFunctionExpression(a.node))?a.node:null,l=c?i.functionVariables.get(c)??new Map:i.variables;c&&!i.functionVariables.has(c)&&i.functionVariables.set(c,l);for(let u of ir(s.node.id))l.set(u,R.isExpression(s.node.init)?s.node.init:null);if(R.isArrayPattern(s.node.id)&&R.isCallExpression(s.node.init)&&Lt(s.node.init.callee)==="useState"){let[u,f]=s.node.id.elements;R.isIdentifier(u)&&R.isIdentifier(f)&&i.stateSetters.set(u.name,f.name)}R.isIdentifier(s.node.id)&&vp(s.node.init)&&i.functions.set(s.node.id.name,s.node.init)},ExportNamedDeclaration(s){let a=s.node.declaration,c=s.node.source?.value;if(c)for(let l of s.node.specifiers){if(!R.isExportSpecifier(l))continue;let u=R.isIdentifier(l.exported)?l.exported.name:l.exported.value,f=l.local.name;i.imports.set(u,{source:c,importedName:f,localName:u,isDefault:f==="default"})}if(R.isFunctionDeclaration(a)&&a.id?.name&&i.functions.set(a.id.name,a),R.isVariableDeclaration(a))for(let l of a.declarations)R.isIdentifier(l.id)&&vp(l.init)&&i.functions.set(l.id.name,l.init)},ExportDefaultDeclaration(s){let a=s.node.declaration;if((R.isFunctionDeclaration(a)||R.isFunctionExpression(a)||R.isArrowFunctionExpression(a))&&i.functions.set("default",a),R.isIdentifier(a)){let c=i.functions.get(a.name);c&&i.functions.set("default",c)}}}),n.set(e,i),i}function ir(e){return!e||R.isVoidPattern(e)?[]:R.isIdentifier(e)?[e.name]:R.isObjectPattern(e)?e.properties.flatMap(t=>R.isObjectProperty(t)?ir(t.value):ir(t.argument)):R.isArrayPattern(e)?e.elements.flatMap(t=>t?ir(R.isRestElement(t)?t.argument:t):[]):R.isAssignmentPattern(e)?ir(e.left):R.isRestElement(e)?ir(e.argument):[]}function vp(e){return R.isFunctionExpression(e)||R.isArrowFunctionExpression(e)}function Lp(e,t){let n=e.functions.get(t)??e.functions.get("default");return n?e.functionVariables.get(n):void 0}async function Bp(e,t){let n=await jp(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return vc(n,r,t.fileCache)}function $p(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function jp(e,t,n){return Tt(t)?hn(e,t,n):null}function Vi(e,t,n={}){return{file:e.file,analysis:e,readFile:t.readFile,exists:t.exists,fileCache:t.fileCache,options:t.options,variableCache:new Map,functionDepth:n.functionDepth??t.functionDepth,importDepth:n.importDepth??t.importDepth,paramSources:new Map(t.paramSources),resolvingVariables:new Set,resolvingComponentProps:t.resolvingComponentProps,scopeVariables:e===t.analysis?t.scopeVariables:void 0}}function eI(e){return e?Ke(e):null}function Ke(e){return{...e,evidence:e.evidence.map(t=>({...t})),...e.fieldMap?{fieldMap:Object.fromEntries(Object.entries(e.fieldMap).map(([t,n])=>[t,Ke(n)]))}:{}}}import*as Ic from"@babel/parser";import kc from"@babel/traverse";import*as z from"@babel/types";import{classifySiteEditPropertyName as tI}from"@vcp-dev/contracts";var Cc=typeof kc=="function"?kc:kc.default;function Rc(e){let t=tI(e.propertyName);if(t.owner!=="generic")return rt("invalid-property",t.diagnostic?.message??`Property '${e.propertyName}' is not a generic property`);let n=e.selectionRef;if(!n)return rt("missing-selection-ref","A repeat property target requires a complete selection reference");if(n.key!==e.element.identity.key)return rt("selection-mismatch","Selection reference does not identify the requested element");if(n.instanceIndex===void 0)return rt("missing-instance-index","A repeat property target requires an instance index");let r;try{r=Ic.parse(e.source,{sourceType:"module",plugins:["typescript","jsx"]})}catch(S){return rt("repeat-not-found",`Unable to parse repeat source: ${S instanceof Error?S.message:String(S)}`)}let o=nI(r,e.element.sourceRange);if(!o)return rt("repeat-not-found","The selected element is not inside a supported map repeat");if(!z.isIdentifier(o.callback.params[0]))return rt("unsupported-callback","Repeat property materialization requires an identifier callback item");let i=rI(r,o.collection,e.file,e.sources);if(!i)return rt("collection-not-found","The repeat collection is not a visible local static array");let{array:s,locator:a,sourceFile:c}=i,l=[],u=[];for(let[S,E]of s.elements.entries()){if(!E||!z.isObjectExpression(E)||!zp(E))return rt("unsafe-collection","Repeat materialization requires an array of local static objects without spreads");let k=[{kind:"index",index:S}];l.push(k),u.push({kind:"value",root:a.root,path:k})}let f=u.length;if(n.instanceCount!==void 0&&n.instanceCount!==f)return rt("count-mismatch",`Selection reports ${n.instanceCount} instances but the source collection has ${f}`);let m=n.instanceIndex;if(m>=f)return rt("index-out-of-range",`Selected repeat instance ${m} is outside the source collection`);let d=s.elements[m];if(!d||!z.isObjectExpression(d))return rt("unsafe-collection","Selected repeat item is not an object");let g=lI(e.element,e.propertyName),h=aI(d,e.propertyName);return h?{ok:!0,sourceFile:c,templateFile:e.file,collectionLocator:a,parentObjectLocators:u,selectedParentObjectLocator:u[m],sourceItemIndex:m,sourceItemPath:l[m],collectionIndexMap:Array.from({length:f},(S,E)=>E),callbackItemName:o.callback.params[0].name,targetElementLocator:{kind:"jsx-node",strategy:"structural-path",file:e.element.identity.file,component:e.element.identity.component,structuralPath:e.element.identity.structuralPath,expectedRange:e.element.sourceRange},propertyName:e.propertyName,propertyState:h,selectedResolution:cI(d,e.propertyName),...g?{property:g}:{},selectionRef:n}:rt("unsafe-property-source",`Property '${e.propertyName}' has a dynamic or unsupported source in the repeat item`)}function nI(e,t){let n=[];return Cc(e,{CallExpression(r){let o=Vp(r.node);o&&Kp(o.callback,t)&&n.push({...o,span:Up(r.node)})},OptionalCallExpression(r){let o=Vp(r.node);o&&Kp(o.callback,t)&&n.push({...o,span:Up(r.node)})}}),n.sort((r,o)=>r.span-o.span),n[0]??null}function Vp(e){let t=e.callee;if(!z.isMemberExpression(t)&&!z.isOptionalMemberExpression(t)||t.computed||!z.isIdentifier(t.property)||t.property.name!=="map"||!z.isExpression(t.object))return null;let n=e.arguments[0];return!n||!z.isExpression(n)||!z.isArrowFunctionExpression(n)&&!z.isFunctionExpression(n)?null:{collection:t.object,callback:n}}function rI(e,t,n,r){let o=oo(t);if(o&&z.isArrayExpression(o))return{array:o,locator:{kind:"value",root:{kind:"expression",sourceRange:Wp(o)}},sourceFile:n};if(!z.isIdentifier(t))return null;let i=[];if(Cc(e,{VariableDeclarator(s){z.isIdentifier(s.node.id)&&s.node.id.name===t.name&&s.node.init&&i.push(s.node)}}),i.length===1){let s=oo(i[0].init);return!s||!z.isArrayExpression(s)?null:{array:s,locator:{kind:"value",root:{kind:"binding",name:t.name}},sourceFile:n}}return oI(e,t.name,n,r)}function oI(e,t,n,r){if(!r)return null;for(let o of e.program.body){if(!z.isImportDeclaration(o))continue;let i=o.specifiers.find(m=>m.local.name===t);if(!i||!z.isStringLiteral(o.source)||!z.isImportSpecifier(i))continue;let s=sI(n,o.source.value,r);if(!s)return null;let a=z.isIdentifier(i.imported)?i.imported.name:i.imported.value,c=r.get(s);if(c===void 0)return null;let l;try{l=Ic.parse(c,{sourceType:"module",plugins:["typescript","jsx"]})}catch{return null}let u=iI(l,a),f=u?oo(u):null;return!f||!z.isArrayExpression(f)?null:{array:f,locator:{kind:"value",root:{kind:"binding",name:a}},sourceFile:s}}return null}function iI(e,t){let n=null;return Cc(e,{VariableDeclarator(r){n||!z.isIdentifier(r.node.id)||r.node.id.name!==t||!r.node.init||!z.isExpression(r.node.init)||(n=r.node.init)}}),n}function sI(e,t,n){let r=Ir(e,t);return[r,r+".tsx",r+".ts",r+".jsx",r+".js",r+"/index.tsx",r+"/index.ts",r+"/index.jsx",r+"/index.js"].find(i=>n.has(i))??null}function oo(e){return z.isParenthesizedExpression(e)?oo(e.expression):z.isTSAsExpression(e)?Xp(e.typeAnnotation)?oo(e.expression):null:z.isTSSatisfiesExpression(e)?null:e}function Xp(e){return z.isTSTypeReference(e)&&z.isIdentifier(e.typeName)&&e.typeName.name==="const"}function zp(e){return e.properties.every(t=>!z.isObjectProperty(t)||t.computed||!z.isExpression(t.value)?!1:Ui(t.value))}function Ui(e){if(z.isTSAsExpression(e)&&Xp(e.typeAnnotation))return Ui(e.expression);if(z.isTSSatisfiesExpression(e))return!1;if(z.isArrayExpression(e))return e.elements.every(n=>!n||z.isSpreadElement(n)||!z.isExpression(n)?!1:Ui(n));if(z.isObjectExpression(e))return zp(e);let t=At(e);return t.status==="resolved"||t.status==="undefined"}function aI(e,t){let n=e.properties.filter(o=>z.isObjectProperty(o)&&Hp(o.key)===t);if(n.length>1)return null;let r=n[0];return r?z.isExpression(r.value)?Ui(r.value)?"static":z.isIdentifier(r.value)||z.isMemberExpression(r.value)?"binding":null:null:"missing"}function cI(e,t){let n=e.properties.filter(o=>z.isObjectProperty(o)&&Hp(o.key)===t);if(n.length>1)return{status:"unresolved"};let r=n[0];return!r||!z.isExpression(r.value)?{status:"undefined"}:At(r.value)}function lI(e,t){let n=e.attributes?.filter(r=>r.name===t)??[];return n.length===1?n[0]:void 0}function Hp(e){return z.isIdentifier(e)?e.name:z.isStringLiteral(e)?e.value:z.isNumericLiteral(e)?String(e.value):null}function Wp(e){return{startLine:e.loc?.start.line??0,startColumn:e.loc?.start.column??0,endLine:e.loc?.end.line??0,endColumn:e.loc?.end.column??0}}function Up(e){return e.start==null||e.end==null?Number.MAX_SAFE_INTEGER:e.end-e.start}function Kp(e,t){let n=Wp(e);return Jp(n.startLine,n.startColumn,t.startLine,t.startColumn)<=0&&Jp(n.endLine,n.endColumn,t.endLine,t.endColumn)>=0}function Jp(e,t,n,r){return e===n?t-r:e-n}function rt(e,t){return{ok:!1,errorCode:e,reason:t}}import{classifySiteEditPropertyName as GI}from"@vcp-dev/contracts";import*as H from"@babel/types";import co from"node:path";import*as pe from"@babel/types";import*as qp from"@babel/parser";import wc from"@babel/traverse";import*as q from"@babel/types";function Ki(e,t){let n=[],r=e;for(;q.isMemberExpression(r);){if(r.computed)if(q.isNumericLiteral(r.property))n.unshift({kind:"index",index:r.property.value});else if(q.isStringLiteral(r.property))n.unshift({kind:"property",name:r.property.value});else return null;else{if(!q.isIdentifier(r.property))return null;n.unshift({kind:"property",name:r.property.name})}r=r.object}return!q.isIdentifier(r)||r.name!==t?null:n}function Gp(e){if(q.isIdentifier(e))return{base:e.name,path:[]};if(!q.isMemberExpression(e))return null;let t=[],n=e;for(;q.isMemberExpression(n);){if(n.computed)if(q.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(q.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else{if(!q.isIdentifier(n.property))return null;t.unshift({kind:"property",name:n.property.name})}n=n.object}return q.isIdentifier(n)?{base:n.name,path:t}:null}function Qe(e,t){let n=e;for(let r of t){if(r.kind==="property"){if(n===null||Array.isArray(n)||typeof n!="object"||!(r.name in n))return;n=n[r.name];continue}if(!Array.isArray(n)||r.index<0||r.index>=n.length)return;n=n[r.index]}return n}function Yp(e){let{resolveBindingTarget:t}=e;async function n(i,s,a,c,l,u,f){if(q.isStringLiteral(i)||q.isNumericLiteral(i)||q.isBooleanLiteral(i))return i.value;if(q.isNullLiteral(i))return null;if(q.isTemplateLiteral(i))return i.expressions.length===0&&i.quasis.length===1?i.quasis[0].value.cooked??i.quasis[0].value.raw:void 0;if(q.isTSAsExpression(i)||q.isTSSatisfiesExpression(i)||q.isTSNonNullExpression(i))return await n(i.expression,s,a,c,l,u,f);if(q.isIdentifier(i)){let m=s.getBinding(i.name);if(!m)return;let d=await t({currentFile:a,binding:m,readFile:c,exists:l,fileCache:u,visited:f});return d?.kind==="static"?d.value:void 0}if(q.isArrayExpression(i)){let m=[];for(let d of i.elements){if(!d||q.isSpreadElement(d))return;let g=await r(d,s,a,c,l,u,f);if(g===void 0)return;m.push(g)}return m}if(q.isObjectExpression(i)){let m={};for(let d of i.properties){if(!q.isObjectProperty(d)||d.computed)return;let g=null;if(q.isIdentifier(d.key)?g=d.key.name:q.isStringLiteral(d.key)&&(g=d.key.value),!g)return;if(d.shorthand){if(!q.isIdentifier(d.value))return;let S=await r(d.value,s,a,c,l,u,f);if(S===void 0)return;m[g]=S;continue}if(!q.isExpression(d.value))return;let h=await r(d.value,s,a,c,l,u,f);h!==void 0&&(m[g]=h)}return m}if(q.isMemberExpression(i)){let m=await o(i,s,a,c,l,u,f);if(!m)return;let d=s.getBinding(m.base);if(!d)return;let g=await t({currentFile:a,binding:d,readFile:c,exists:l,fileCache:u,visited:f});return!g||g.kind!=="static"?void 0:Qe(g.value,m.path)}}async function r(i,s,a,c,l,u,f){if(!q.isSpreadElement(i))return await n(i,s,a,c,l,u,f)}async function o(i,s,a,c,l,u,f){if(q.isIdentifier(i))return{base:i.name,path:[]};if(!q.isMemberExpression(i))return null;let m=[],d=i;for(;q.isMemberExpression(d);){if(d.computed){let g=d.property;if(q.isNumericLiteral(g))m.unshift({kind:"index",index:g.value});else if(q.isStringLiteral(g))m.unshift({kind:"property",name:g.value});else{let h=q.isExpression(g)?await n(g,s,a,c,l,u,f):void 0;if(typeof h=="string")m.unshift({kind:"property",name:h});else if(Number.isInteger(h))m.unshift({kind:"index",index:h});else return null}}else{if(!q.isIdentifier(d.property))return null;m.unshift({kind:"property",name:d.property.name})}d=d.object}return q.isIdentifier(d)?{base:d.name,path:m}:null}return{normalizeExpressionWithScope:o,evaluateStaticExpression:n}}var em=typeof wc=="function"?wc:wc.default,Zp=new WeakMap;function tm(e){try{return qp.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Ji(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=tm(n);return e.set(t,{source:n,ast:o}),o}function Xi(e,t){let n=null,r=-1;for(let o of io(e).expressions){let i=o.node.loc;if(!i||!Pc(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s>=r&&(n=o,r=s)}return n}function nm(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of io(e).expressions){if(!uI(o.node.loc,t))continue;let i=(o.node.end??0)-(o.node.start??0);i<=r&&(n=o,r=i)}return n}function Nc(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of io(e).jsxElements){let i=o.node.loc;if(!i||!Pc(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s<=r&&(n=o,r=s)}return n}function io(e){let t=Zp.get(e);if(t)return t;let n={expressions:[],jsxElements:[]};return em(e,{Expression(r){n.expressions.push(r)},JSXElement(r){n.jsxElements.push(r)}}),Zp.set(e,n),n}function uI(e,t){return e?e.start.line===t.startLine&&e.start.column===t.startColumn&&e.end.line===t.endLine&&e.end.column===t.endColumn:!1}function Pc(e,t){let n=Qp({line:e.start.line,column:e.start.column},{line:t.startLine,column:t.startColumn}),r=Qp({line:e.end.line,column:e.end.column},{line:t.endLine,column:t.endColumn});return n>=0&&r<=0}function zi(e){return e.loc?{startLine:e.loc.start.line,startColumn:e.loc.start.column,endLine:e.loc.end.line,endColumn:e.loc.end.column}:null}function Qp(e,t){return e.line!==t.line?e.line<t.line?-1:1:e.column!==t.column?e.column<t.column?-1:1:0}function sr(e,t){if(t)return Ac(e,t);let n=Gp(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function Ac(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function so(e,t,n){let r=null,o=Number.POSITIVE_INFINITY;for(let i of io(e).expressions){if(Ac(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function rm(e,t,n,r){let o=null,i=Number.POSITIVE_INFINITY;for(let s of io(e).expressions){if(Ac(s.node,t)!==n)continue;let a=s.node.loc;if(!a||!Pc(a,r))continue;let c=(s.node.end??0)-(s.node.start??0);c<=i&&(o=s,i=c)}return o}function ar(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}function ao(e){let t=null;if(em(e,{Program(n){t=n.scope,n.stop()}}),!t)throw new Error("Unable to determine program scope");return t}async function $t(e,t,n){let r=n.get(e);if(r)return r;let o=await t(e),i=tm(o),s={source:o,ast:i};return n.set(e,s),s}function dI(e){return pe.isIdentifier(e.callee)&&(e.callee.name==="useState"||e.callee.name==="useReducer")?e.callee.name:pe.isMemberExpression(e.callee)&&pe.isIdentifier(e.callee.property)&&(e.callee.property.name==="useState"||e.callee.property.name==="useReducer")?e.callee.property.name:null}function fI(e){let t=e.getFunctionParent();if(!t)return null;if(t.isFunctionDeclaration()){let s=t.node.id?.name;if(!s)return null;let a=t.parentPath?.isExportDefaultDeclaration()?"default":(t.parentPath?.isExportNamedDeclaration(),s);return{componentName:s,exportName:a}}if(!t.isArrowFunctionExpression()&&!t.isFunctionExpression())return null;let n=t.parentPath;if(!n?.isVariableDeclarator()||!pe.isIdentifier(n.node.id))return null;let r=n.node.id.name,o=n.parentPath,i=o?.parentPath?.isExportDefaultDeclaration()?"default":(o?.parentPath?.isExportNamedDeclaration(),r);return{componentName:r,exportName:i}}function pI(e,t){let n=fI(e.path);if(!n)return null;let r=Yn(e,t);return r?{...n,...r}:null}function mI(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}function Tc(e,t){let n=[{kind:"component-prop",file:t.file,displayName:`${t.componentName}.${t.propName}`,canEditHere:!0}];return e.kind==="external"?{...e,chainPrefix:[...n,...e.chainPrefix??[]],editMode:e.editMode==="readonly"?"readonly":"upstream"}:{...e,chainPrefix:[...n,...e.chainPrefix??[]],editMode:"upstream"}}function Fc(e,t){for(let n of e.program.body){if(t==="default"&&pe.isExportDefaultDeclaration(n))return pe.isExpression(n.declaration)?{kind:"default-expression",expression:n.declaration}:(pe.isFunctionDeclaration(n.declaration)||pe.isClassDeclaration(n.declaration))&&n.declaration.id?{kind:"default-binding",name:n.declaration.id.name}:null;if(pe.isExportNamedDeclaration(n)){if(n.declaration){if(pe.isVariableDeclaration(n.declaration)){for(let r of n.declaration.declarations)if(pe.isIdentifier(r.id)&&r.id.name===t)return{kind:"local-binding",name:r.id.name}}if((pe.isFunctionDeclaration(n.declaration)||pe.isClassDeclaration(n.declaration))&&n.declaration.id&&n.declaration.id.name===t)return{kind:"local-binding",name:t}}for(let r of n.specifiers)if((pe.isIdentifier(r.exported)?r.exported.name:r.exported.value)===t&&pe.isExportSpecifier(r))return n.source?{kind:"re-export",name:r.local.name,source:n.source.value}:{kind:"local-binding",name:r.local.name}}}return null}function om(e){let{resolveExternalExpression:t,resolveCollectionCallTarget:n,evaluateStaticExpression:r,resolveSourceInfoProvenance:o,buildExpressionSourceInfo:i}=e;async function s(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:k,visited:I}=d,w=`${g}::${h.kind}::${h.identifier.name}`;if(I.has(w))return null;I.add(w);try{let P=await a({currentFile:g,binding:h,readFile:S,exists:E,fileCache:k,visited:I});if(P)return P;if(h.path.isImportSpecifier()||h.path.isImportDefaultSpecifier())return await f({currentFile:g,binding:h,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,fileCache:k,visited:I});if(h.kind==="param")return null;if(h.path.isVariableDeclarator()){let A=h.path.node.init;if(!A||!pe.isExpression(A))return null;let C=h.path.get("init");if(C&&!Array.isArray(C)&&C.isExpression()){let _=await t({currentFile:g,expressionPath:C,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});if(_)return _;if(C.isCallExpression()){let L=await n({currentFile:g,callPath:C,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});if(L)return L}}let T=await r(A,h.path.scope,g,S,E,k,I);return T===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:T,sourceKind:"binding"}}if(h.path.isIdentifier()&&h.path.parentPath?.isExportDefaultDeclaration()){let A=h.path.parentPath.node.declaration;if(!pe.isExpression(A))return null;let C=await r(A,h.path.scope,g,S,E,k,I);return C===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:C,sourceKind:"binding"}}return null}finally{I.delete(w)}}async function a(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:k,visited:I}=d;if(!h.path.isVariableDeclarator()||!h.path.get("id").isArrayPattern())return null;let w=h.path,P=w.node.init;if(!P||!pe.isCallExpression(P))return null;let A=dI(P);if(!A||!pe.isArrayPattern(w.node.id)||w.node.id.elements.findIndex(G=>pe.isIdentifier(G)&&G.name===h.identifier.name)!==0)return null;let T=A==="useReducer"?1:0,_=P.arguments[T];if(!_||!pe.isExpression(_))return null;let L=await r(_,w.scope,g,S,E,k,I);return L===void 0?null:{kind:"static",file:g,root:{kind:"hook-state",name:h.identifier.name,hook:A},value:L,sourceKind:"binding"}}async function c(d){let g=pI(d.binding,d.sourceInfo);if(!g||!d.graph)return null;let h=[...d.graph.elements.values()].filter(A=>mI(A,d.currentFile,g.componentName,g.exportName));if(h.length!==1)return null;let S=h[0],E=S.attributes?.find(A=>A.name===g.propName);if(E&&!E.source){let A=await l({caller:S,propName:g.propName,remainingPath:g.remainingPath,readFile:d.readFile,fileCache:d.fileCache});if(A)return Tc(A,{componentName:g.componentName,propName:g.propName,file:S.sourceFile})}if(!E?.source){let A=await u({caller:S,propName:g.propName,remainingPath:g.remainingPath,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited});if(A)return Tc(A,{componentName:g.componentName,propName:g.propName,file:S.sourceFile});let C=pf(d.binding,g.componentName,g.propName);if(!C||C.propName!==g.propName)return null;let T=await r(C.expressionPath.node,C.expressionPath.scope,d.currentFile,d.readFile,d.exists,d.fileCache,d.visited);if(T===void 0)return null;let _=g.remainingPath;return _.length>0&&Qe(T,_)===void 0?null:{kind:"value",file:d.currentFile,root:{kind:"binding",name:g.propName},path:_,sourceKind:"binding",semanticKind:"component-prop",displayExpression:C.displayPath,chainPrefix:[{kind:"component-prop",file:d.currentFile,displayName:C.displayPath,canEditHere:!0}],editMode:"upstream",diagnostics:[]}}let k=await $t(S.sourceFile,d.readFile,d.fileCache);if(!k.ast)return null;let I=rm(k.ast,k.source,E.source.expression,E.sourceRange)??so(k.ast,k.source,E.source.expression);if(!I)return null;let w={...E.source,expression:ar(E.source.expression,g.remainingPath),path:[...E.source.path,...g.remainingPath]},P=await o({currentFile:S.sourceFile,expressionPath:I,sourceInfo:w,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited});return P?Tc(P.kind==="external"?P:{...P,displayExpression:w.expression},{componentName:g.componentName,propName:g.propName,file:S.sourceFile}):null}async function l(d){let g=await $t(d.caller.sourceFile,d.readFile,d.fileCache);if(!g.ast)return null;let h=Nc(g.ast,d.caller.sourceRange);if(!h)return null;let S=h.get("openingElement").get("attributes").find(w=>w.isJSXAttribute()&&w.node.name.type==="JSXIdentifier"&&w.node.name.name===d.propName);if(!S?.isJSXAttribute())return null;let E=S.get("value"),k=E.isStringLiteral()?E:E.isJSXExpressionContainer()?E.get("expression"):null;if(!k?.isExpression())return null;let I=zi(k.node);return I?{kind:"value",file:d.caller.sourceFile,root:{kind:"expression",sourceRange:I},path:d.remainingPath,sourceKind:"binding",semanticKind:"component-prop",displayExpression:d.propName,editMode:"upstream",diagnostics:[]}:null}async function u(d){let g=await $t(d.caller.sourceFile,d.readFile,d.fileCache);if(!g.ast)return null;let h=Nc(g.ast,d.caller.sourceRange);if(!h)return null;let S=h.get("openingElement");for(let E of S.get("attributes")){if(!E.isJSXSpreadAttribute())continue;let k=E.get("argument");if(!k.isExpression())continue;let I=await i({expression:k.node,scope:k.scope,source:g.source,currentFile:d.caller.sourceFile,readFile:d.readFile,exists:d.exists,fileCache:d.fileCache,visited:d.visited});if(!I)continue;let w=[{kind:"property",name:d.propName},...d.remainingPath],P={...I,expression:ar(I.expression,w),path:[...I.path,...w]},A=await o({currentFile:d.caller.sourceFile,expressionPath:k,sourceInfo:P,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited});if(A)return A.kind==="external"?A:{...A,displayExpression:P.expression}}return null}async function f(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:k,visited:I}=d,w=h.path.parentPath;if(!w||!w.isImportDeclaration())return null;let P=w.node.source.value;if(typeof P!="string")return null;let A=await hn(g,P,E);if(!A)return null;if(h.path.isImportDefaultSpecifier()){let ne=await $t(A,S,k),ve=ne.ast?Fc(ne.ast,"default"):null,Y=await m({file:A,exportName:"default",readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});return!Y||Y.kind!=="static"?null:{kind:"static",file:ve?.kind==="default-expression"?Y.file:A,root:ve?.kind==="default-expression"?Y.root:{kind:"default-export"},value:Y.value,sourceKind:"imported-binding"}}if(!h.path.isImportSpecifier())return null;let C=h.path.node.imported,T=pe.isIdentifier(C)?C.name:C.value,_=await $t(A,S,k),L=_.ast?Fc(_.ast,T):null,G=await m({file:A,exportName:T,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});return G?G.kind==="external"?G:{kind:"static",file:L?.kind==="re-export"?G.file:A,root:L?.kind==="re-export"?G.root:{kind:"named-export",name:T},value:G.value,sourceKind:"imported-binding"}:null}async function m(d){let{file:g,exportName:h,readFile:S,exists:E,fileCache:k,visited:I}=d,w=`export::${g}::${h}`;if(!I.has(w)){I.add(w);try{let P=await $t(g,S,k);if(!P.ast)return;let A=Fc(P.ast,h);if(!A)return;if(A.kind==="default-expression"){let L=A.expression;if(!L||!pe.isIdentifier(L))return;let G=ao(P.ast).getBinding(L.name);return G?await s({currentFile:g,binding:G,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I})??void 0:void 0}if(A.kind==="re-export"){if(!A.source||!A.name)return;let L=await hn(g,A.source,E);return L?m({...d,file:L,exportName:A.name}):void 0}let C=A.name;if(!C)return;let T=ao(P.ast).getBinding(C);return T?await s({currentFile:g,binding:T,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I})??void 0:void 0}finally{I.delete(w)}}}return{resolveExportValue:m,resolveComponentPropBinding:c,resolveBindingTarget:s}}import*as J from"@babel/types";function Oc(e,t){let n=e.scope.getBinding(t);if(!n)return null;let r=n.path.getFunctionParent();if(!r||!r.isArrowFunctionExpression()&&!r.isFunctionExpression())return null;let o=r.node.params[0],i=Et(o,t);if(!i)return null;let s=r.parentPath;return!s||!s.isCallExpression()||!gI(s,r)?null:{callPath:s,basePath:i}}function gI(e,t){let n=e.node.callee;return!J.isMemberExpression(n)||!J.isIdentifier(n.property)||n.property.name!=="map"?!1:e.node.arguments.some(r=>r===t.node)}function am(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:vi(r,t)}function im(e,t){return e?J.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}function sm(e,t,n,r,o){let i=J.isExpression(e.body)?e.body:e.body.body.find(a=>J.isReturnStatement(a))?.argument;if(!i||!J.isExpression(i))return;let s=_c(i,t,n,r,o);return typeof s=="number"?s:void 0}function _c(e,t,n,r,o){if(J.isNumericLiteral(e)||J.isStringLiteral(e)||J.isBooleanLiteral(e))return e.value;if(J.isIdentifier(e))return e.name===t?r:e.name===n?o:void 0;if(J.isMemberExpression(e)){let i=Ki(e,t);if(i)return Qe(r,i);let s=Ki(e,n);return s?Qe(o,s):void 0}if(J.isBinaryExpression(e)&&e.operator==="-"){let i=J.isExpression(e.left)?_c(e.left,t,n,r,o):void 0,s=J.isExpression(e.right)?_c(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function hI(e){if(J.isExpression(e.body))return e.body;for(let t of e.body.body)if(J.isReturnStatement(t)&&t.argument&&J.isExpression(t.argument))return t.argument;return null}function yI(e,t,n){let r=An(e,t,n);return typeof r=="boolean"?r:void 0}function An(e,t,n){if(J.isStringLiteral(e)||J.isNumericLiteral(e)||J.isBooleanLiteral(e))return e.value;if(J.isNullLiteral(e))return null;if(J.isIdentifier(e))return e.name===t?n:void 0;if(J.isMemberExpression(e)){let r=Ki(e,t);return r?Qe(n,r):void 0}if(J.isUnaryExpression(e)&&e.operator==="!"){let r=An(e.argument,t,n);return r===void 0?void 0:!r}if(J.isLogicalExpression(e)){let r=An(e.left,t,n);if(r===void 0)return;if(e.operator==="&&")return r&&An(e.right,t,n);if(e.operator==="||")return r||An(e.right,t,n)}if(J.isBinaryExpression(e)){let r=J.isExpression(e.left)?An(e.left,t,n):void 0,o=J.isExpression(e.right)?An(e.right,t,n):void 0;if(r===void 0||o===void 0)return;switch(e.operator){case"===":return r===o;case"!==":return r!==o;case"==":return r==o;case"!=":return r!=o;default:return}}}function cm(e){let t=[],n=e;for(;J.isMemberExpression(n)||J.isOptionalMemberExpression(n);){let r=n.property;if(n.computed)if(J.isNumericLiteral(r))t.unshift({kind:"index",index:r.value});else if(J.isStringLiteral(r))t.unshift({kind:"property",name:r.value});else if(J.isExpression(r))t.unshift({kind:"dynamic",expression:r});else return null;else if(J.isIdentifier(r))t.unshift({kind:"property",name:r.name});else return null;n=n.object}return J.isIdentifier(n)?{base:n.name,segments:t}:null}function lm(e){return e.some(t=>t.kind==="dynamic")}function xI(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}function um(e,t){if(!Array.isArray(e.value))return null;let n=e.collectionPathMap?.length?e.collectionPathMap:e.value.map((r,o)=>[...e.pathPrefix??[],{kind:"index",index:e.collectionIndexMap?.[o]??o}]);return n.length>0?n.map(r=>[...r,...t]):null}function bI(e,t){let n=[],r=[];for(let o of t){let i=Qe(e,o);if(!Array.isArray(i))return null;for(let[s,a]of i.entries())n.push(a),r.push([...o,{kind:"index",index:s}])}return{value:n,collectionPathMap:r}}function dm(e){let{resolveBindingTarget:t,evaluateStaticExpression:n,buildExpressionSourceInfo:r,resolveSourceInfoProvenance:o}=e;async function i(d){let{currentFile:g,callPath:h,readFile:S,exists:E,fileCache:k,visited:I}=d,w=h.node.callee;if(!J.isMemberExpression(w)||!J.isIdentifier(w.property)||w.property.name!=="map")return null;let P=h.get("callee");if(!P.isMemberExpression())return null;let A=P.get("object");if(Array.isArray(A)||!A.isExpression())return null;let C=await s({currentFile:g,expressionPath:A,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});return!C||!Array.isArray(C.value)||C.value.length===0?null:C}async function s(d){let{currentFile:g,expressionPath:h,readFile:S,exists:E,fileCache:k,visited:I}=d;if(h.isIdentifier()){let w=h.scope.getBinding(h.node.name);if(!w)return null;let P=await t({currentFile:g,binding:w,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});return P?.kind==="static"?P:null}if(h.isCallExpression())return c({currentFile:g,callPath:h,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});if(h.isTSAsExpression()||h.isTSSatisfiesExpression()||h.isTSNonNullExpression()){let w=h.get("expression");if(!Array.isArray(w)&&w.isExpression())return s({...d,expressionPath:w})}if(h.isArrayExpression()){let w=zi(h.node);if(!w)return null;let P=await n(h.node,h.scope,g,S,E,k,I);return Array.isArray(P)?{kind:"static",file:g,root:{kind:"expression",sourceRange:w},value:P,sourceKind:"binding"}:null}if(h.isMemberExpression()){let w=await r({expression:h.node,scope:h.scope,currentFile:g,readFile:S,exists:E,fileCache:k,visited:I});if(!w)return null;let P=await o({currentFile:g,expressionPath:h,sourceInfo:w,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});if(!P||P.kind==="external")return null;let A=await a({currentFile:g,expressionPath:h,provenance:P,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:k,visited:I});if(!A||A.kind!=="static")return null;if(P.collectionPathMap?.length){let T=bI(A.value,P.collectionPathMap);if(T)return{kind:"static",file:P.file,root:P.root,value:T.value,sourceKind:P.sourceKind,collectionPathMap:T.collectionPathMap}}let C=Qe(A.value,P.path);return Array.isArray(C)?{kind:"static",file:P.file,root:P.root,value:C,sourceKind:P.sourceKind,pathPrefix:P.path,collectionIndexMap:P.collectionIndexMap,collectionPathMap:P.collectionPathMap}:null}return null}async function a(d){let{provenance:g}=d;if(g.root.kind==="binding"){let k=d.expressionPath.scope.getBinding(g.root.name);if(!k&&g.file!==d.currentFile){let I=await $t(g.file,d.readFile,d.fileCache);k=I.ast?ao(I.ast).getBinding(g.root.name):void 0}return k?await t({currentFile:g.file,binding:k,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited}):null}if(g.root.kind!=="expression")return null;let h=await $t(g.file,d.readFile,d.fileCache);if(!h.ast)return null;let S=nm(h.ast,g.root.sourceRange);if(!S)return null;let E=await n(S.node,S.scope,g.file,d.readFile,d.exists,d.fileCache,d.visited);return E===void 0?null:{kind:"static",file:g.file,root:g.root,value:E,sourceKind:g.sourceKind}}async function c(d){return await l(d)??await u(d)??await f(d)}async function l(d){let{callPath:g}=d,h=g.node.callee;if(!J.isMemberExpression(h)||!J.isIdentifier(h.property)||h.property.name!=="filter")return null;let S=g.get("callee");if(!S.isMemberExpression())return null;let E=S.get("object");if(Array.isArray(E)||!E.isExpression())return null;let k=await s({currentFile:d.currentFile,expressionPath:E,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited});if(!k||!Array.isArray(k.value))return null;let[I]=g.node.arguments;if(!J.isArrowFunctionExpression(I)&&!J.isFunctionExpression(I))return null;let w=I.params[0];if(!J.isIdentifier(w))return null;let P=hI(I);if(!P)return null;let A=[],C=[],T=[];for(let[_,L]of k.value.entries()){let G=yI(P,w.name,L);if(typeof G!="boolean")return null;if(G){A.push(L),C.push(k.collectionIndexMap?.[_]??_);let ne=k.collectionPathMap?.[_];ne&&T.push(ne)}}return{...k,value:A,pathPrefix:k.pathPrefix,collectionIndexMap:C,...T.length>0?{collectionPathMap:T}:{}}}async function u(d){let{callPath:g}=d,h=g.node.callee;if(!J.isMemberExpression(h)||!J.isIdentifier(h.property)||h.property.name!=="slice")return null;let S=g.get("callee");if(!S.isMemberExpression())return null;let E=S.get("object");if(Array.isArray(E)||!E.isExpression())return null;let k=await s({currentFile:d.currentFile,expressionPath:E,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited});if(!k||!Array.isArray(k.value))return null;let[I,w]=g.node.arguments,P=im(I,0),A=im(w,k.value.length);if(P===null||A===null)return null;let C=Math.max(0,P<0?k.value.length+P:P),T=Math.max(0,A<0?k.value.length+A:A),_=k.value.map((G,ne)=>k.collectionIndexMap?.[ne]??ne).slice(C,T),L=k.collectionPathMap?.slice(C,T);return{...k,value:k.value.slice(C,T),pathPrefix:k.pathPrefix,collectionIndexMap:_,...L?{collectionPathMap:L}:{}}}async function f(d){let{callPath:g}=d,h=g.node.callee;if(!J.isMemberExpression(h)||!J.isIdentifier(h.property)||h.property.name!=="sort"&&h.property.name!=="toSorted")return null;let S=g.get("callee");if(!S.isMemberExpression())return null;let E=S.get("object");if(Array.isArray(E)||!E.isExpression())return null;let k=await s({currentFile:d.currentFile,expressionPath:E,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited});if(!k||!Array.isArray(k.value))return null;let[I]=g.node.arguments;if(!J.isArrowFunctionExpression(I)&&!J.isFunctionExpression(I))return null;let[w,P]=I.params;if(!J.isIdentifier(w)||!J.isIdentifier(P))return null;let A=k.value.map((T,_)=>({value:T,sourceIndex:k.collectionIndexMap?.[_]??_,originalIndex:_})),C=[...A];for(let T of A)for(let _ of A)if(sm(I,w.name,P.name,T.value,_.value)===void 0)return null;return C.sort((T,_)=>{let L=sm(I,w.name,P.name,T.value,_.value)??0;return L===0?T.originalIndex-_.originalIndex:L}),{...k,value:C.map(T=>T.value),pathPrefix:k.pathPrefix,collectionIndexMap:C.map(T=>T.sourceIndex),...k.collectionPathMap?{collectionPathMap:C.map(T=>k.collectionPathMap?.[T.originalIndex]).filter(T=>!!T)}:{}}}async function m(d){let g=null,h,S=[];for(let k of d.segments){if(k.kind!=="dynamic")continue;let I=await r({expression:k.expression,scope:d.expressionPath.scope,source:d.fileCache.get(d.currentFile)?.source,currentFile:d.currentFile,readFile:d.readFile,exists:d.exists,fileCache:d.fileCache,visited:d.visited});if(!I)return null;let w=Oc(d.expressionPath,I.base);if(!w)return null;let P=await i({currentFile:d.currentFile,callPath:w.callPath,readFile:d.readFile,exists:d.exists,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:d.fileCache,visited:d.visited});if(!P||!Array.isArray(P.value))return null;let A=P.value.map((C,T)=>{let _=Qe(P.value,[{kind:"index",index:T},...w.basePath,...I.path]);return xI(_)});if(A.some(C=>C===null)||g!==null&&g!==A.length)return null;g=A.length,h??=P.collectionIndexMap,S.push(A)}if(g===null||g===0)return null;let E=[];for(let k=0;k<g;k+=1){let I=[...d.rootPath],w=0;for(let P of d.segments){if(P.kind==="dynamic"){let A=S[w]?.[k];if(!A)return null;I.push(A),w+=1;continue}I.push({...P})}E.push(I)}return{...h?{collectionIndexMap:h}:{},collectionPathMap:E}}return{resolveRepeatCollectionTarget:i,resolveCollectionCallTarget:c,resolveDynamicMemberPathMap:m}}var{normalizeExpressionWithScope:SI,evaluateStaticExpression:Hi}=Yp({resolveBindingTarget:e=>jc(e)}),{resolveRepeatCollectionTarget:EI,resolveCollectionCallTarget:vI,resolveDynamicMemberPathMap:kI}=dm({resolveBindingTarget:e=>jc(e),evaluateStaticExpression:Hi,buildExpressionSourceInfo:jt,resolveSourceInfoProvenance:yt}),{resolveExportValue:II,resolveComponentPropBinding:CI,resolveBindingTarget:jc}=om({resolveExternalExpression:Uc,resolveCollectionCallTarget:vI,evaluateStaticExpression:Hi,resolveSourceInfoProvenance:yt,buildExpressionSourceInfo:jt});function bm(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}function fm(e,t,n){return{kind:"external",file:e,sourceType:"api-field",sourceId:t,displayPath:n,editMode:"readonly",diagnostics:[{code:"external-source-readonly",message:"Dynamic API data is read-only for content edits"}]}}async function Sm(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=Ji(s,t,n);if(!a)return null;let c=Xi(a,r.sourceRange);if(!c)return null;let l=await jt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:o,exists:i,fileCache:s,visited:new Set});if(!l){let m=await zc({currentFile:t,expressionPath:c,readFile:o,exists:i,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:s,visited:new Set});return m?Lc(m,sr(c.node,n)):null}let u=new Set,f=await HI({currentFile:t,expressionPath:c,segment:{...r,source:l},readFile:o,exists:i,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:s,visited:u});return f?Lc(f,l.expression):null}async function cr(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=Ji(i,t,n);if(!s)return null;let a=e.sourceRange?Xi(s,e.sourceRange):e.expression!==void 0?so(s,n,e.expression):null;if(!a)return null;let c=Hc(a);if(!c.isIdentifier()&&!c.isMemberExpression())return null;let l=new Set,u=await jt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:r,exists:o,fileCache:i,visited:l}),f=u?await yt({currentFile:t,expressionPath:c,sourceInfo:u,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:l}):await WI({currentFile:t,expressionPath:c,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:l});return Lc(f,e.expression??sr(c.node,n))}async function Vc(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=Ji(i,t,n);if(!s)return ot("unsupported-expression","Unable to parse source for provenance resolution");let a=new Set;return e.target.kind==="text-segment"?RI({file:t,source:n,ast:s,segment:e.target.segment,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:a}):wI({file:t,source:n,ast:s,candidate:e.target.candidate,readFile:r,exists:o,graph:e.graph,fileCache:i,visited:a})}async function jt(e){if(H.isIdentifier(e.expression))return{kind:"identifier",expression:e.expression.name,base:e.expression.name,path:[]};if(!H.isMemberExpression(e.expression))return null;let t=await SI(e.expression,e.scope,e.currentFile,e.readFile,e.exists,e.fileCache,e.visited);return t?{kind:t.path.some(n=>n.kind==="index")?"index-expression":"member-expression",expression:sr(e.expression,e.source),base:t.base,path:t.path}:null}function Lc(e,t){if(!e||e.kind==="value"&&e.editMode==="readonly")return null;if(e.kind==="external")return{kind:"external-entry",file:e.file,sourceType:e.sourceType,sourceId:e.sourceId,adapterId:e.adapterId,displayExpression:e.displayPath};let n={kind:"value",root:e.root,path:e.path.length>0?e.path:[]};return{kind:"value-binding",file:e.file,locator:n,root:e.root,path:e.path,displayExpression:e.displayExpression??t,sourceKind:e.sourceKind,...e.collectionIndexMap?{collectionIndexMap:e.collectionIndexMap}:{},...e.collectionPathMap?{collectionPathMap:e.collectionPathMap}:{}}}async function RI(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=Xi(r,o.sourceRange),u=l?await jt({expression:l.node,scope:l.scope,source:n,currentFile:t,readFile:i,exists:s,fileCache:a,visited:c}):null;if(!u){if(!l||l.isStringLiteral()||l.isTemplateLiteral()&&l.node.expressions.length===0)return pm(t,o.value);let m=await zc({currentFile:t,expressionPath:l,readFile:i,exists:s,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:a,visited:c});return m?m.kind==="external"?xm(t,m):$c(t,sr(l.node,n),m):NI({expression:l.node,scope:l.scope,currentFile:t,source:n,readFile:i,exists:s,fileCache:a,visited:c,functionCallContracts:e.functionCallContracts})}if(!l)return ot("unsupported-expression","Unable to locate text expression for provenance resolution");let f=await yt({currentFile:t,expressionPath:l,sourceInfo:u,readFile:i,exists:s,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:a,visited:c});if(!f){let m=Bc(l.node);if(m)return ot(m.code,m.message);let d=l.scope.getBinding(u.base);if(d?.path.isVariableDeclarator()){let g=Bc(d.path.node.init);if(g)return ot(g.code,g.message)}return d?.path.isVariableDeclarator()&&H.isCallExpression(d.path.node.init)?PI("unsupported-expression",Cm(d.path.node.init,e.functionCallContracts)):ot("unsupported-expression",`Unable to resolve provenance for expression "${u.expression}"`)}return f.kind==="external"?xm(t,f):$c(t,u.expression,f)}async function wI(e){let{file:t,source:n,ast:r,candidate:o,readFile:i,exists:s,fileCache:a,visited:c}=e;if(!o.conditionSource)return ot("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let l=so(r,n,o.conditionExpression);if(!l)return ot("conditional-branch-unresolved",`Unable to locate conditional expression "${o.conditionExpression}"`);let u=await yt({currentFile:t,expressionPath:l,sourceInfo:o.conditionSource,readFile:i,exists:s,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:a,visited:c});if(!u)return ot("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);if(u.kind==="external")return ot("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let f=$c(t,o.conditionExpression,u);return f.finalSource?{...f,finalSource:{...f.finalSource,kind:"conditional-branch",displayPath:o.conditionExpression},chain:[...f.chain,{kind:"conditional-branch",file:u.file,displayName:o.conditionExpression,canEditHere:!0}]}:f}function pm(e,t){return{finalSource:{kind:"jsx-literal",file:e,locator:null,displayPath:t},chain:[{kind:"jsx-literal",file:e,displayName:t,canEditHere:!0}],confidence:"exact",editMode:"direct",diagnostics:[]}}async function NI(e){let t=await vm(e);if(t.length===0)return ot("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(AI(e.expression))return Em(t);if(Im(e.expression))return ot("unsupported-expression","i18n helpers require a static message id string");if(H.isMemberExpression(e.expression)&&e.expression.computed&&!H.isNumericLiteral(e.expression.property)&&!H.isStringLiteral(e.expression.property))return ot("dynamic-key","Computed member expressions are not supported for provenance resolution");let[n]=t;return ot(n.code,n.message)}function ot(e,t){return{finalSource:null,chain:[],confidence:"unknown",editMode:"unsupported",diagnostics:[{code:e,message:t}]}}function PI(e,t){return Em([{code:e,message:t}])}function Em(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function AI(e){return H.isCallExpression(e)||H.isConditionalExpression(e)||H.isLogicalExpression(e)||H.isBinaryExpression(e)}function lo(e){let t=new Set;return e.filter(n=>{let r=`${n.code}:${n.message}`;return t.has(r)?!1:(t.add(r),!0)})}async function vm(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=Bc(t);if(l)return[l];if(H.isCallExpression(t))return[{code:"unsupported-expression",message:Cm(t,c)}];if(H.isMemberExpression(t)&&t.computed){let u=t.property;if(!H.isNumericLiteral(u)&&!H.isStringLiteral(u)){if(!H.isExpression(u))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}];let m=await Hi(u,n,r,o,i,s,a);if(typeof m!="string"&&!Number.isInteger(m))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}]}}return H.isBinaryExpression(t)?lo([...await Mc(t.left,t.right,e),{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]):H.isLogicalExpression(t)?lo([...await Mc(t.left,t.right,e),{code:"unsupported-expression",message:t.operator==="??"||t.operator==="||"?"Fallback expressions are recognized but remain readonly until a safer composition editing strategy is available":"Complex conditional expressions are recognized but remain readonly until a safer editing strategy is available"}]):H.isConditionalExpression(t)?lo([...await Mc(t.test,t.consequent,t.alternate,e),{code:"unsupported-expression",message:"Complex conditional expressions are recognized but remain readonly until a safer editing strategy is available"}]):[]}function Bc(e){return Im(e)?mm("i18n helpers require a static message id string"):MI(e)?mm("CMS helpers require static entry id and field path string arguments"):null}async function Mc(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await vm({...t,expression:o}));return r}function TI(e,t){let n=(t??[]).filter(r=>r.sourceType===e.sourceType&&(r.capabilities===void 0||r.capabilities.includes("write-text")));if(e.adapterId){let r=n.find(o=>o.adapterId===e.adapterId);if(r)return{adapterId:r.adapterId,editMode:"proxy",diagnostics:[]}}else if(n.length>0)return{adapterId:n[0]?.adapterId,editMode:"proxy",diagnostics:[]};return{adapterId:void 0,editMode:"readonly",diagnostics:[FI(e.sourceType)]}}async function Uc(e){for(let n of $I){if(!gm(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return ym(hm(r),e.externalAdapters)}let t={currentFile:e.currentFile,expressionPath:e.expressionPath,readFile:e.readFile,exists:e.exists,graph:e.graph};for(let n of e.externalSourceResolvers??[]){if(!gm(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return ym(hm(r),e.externalAdapters)}return null}function FI(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function _I(e){return{code:"external-source-readonly",message:e}}function mm(e){return{code:"unsupported-expression",message:e}}function Kc(e){return!e||!H.isCallExpression(e)?null:H.isIdentifier(e.callee)?e.callee.name:H.isMemberExpression(e.callee)&&!e.callee.computed&&H.isIdentifier(e.callee.object)&&H.isIdentifier(e.callee.property)?`${e.callee.object.name}.${e.callee.property.name}`:null}function gm(e,t){if(!t||t.length===0)return!0;let n=Kc(e.node);return n?t.includes(n):!1}function hm(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:lo(e.diagnostics??[])}:{match:e,diagnostics:[]}}function ym(e,t){let n=TI(e.match,t);return{kind:"external",file:e.match.file,sourceType:e.match.sourceType,sourceId:e.match.sourceId,adapterId:e.match.adapterId??n.adapterId,displayPath:e.match.displayPath,editMode:e.editMode==="readonly"?"readonly":n.editMode,diagnostics:lo([...e.diagnostics,...e.editMode==="readonly"||n.editMode==="readonly"?n.diagnostics:[]])}}function OI(e){if(!e.isCallExpression())return null;let t=e.node.callee;if(!H.isIdentifier(t)||t.name!=="getCmsField")return null;let[n,r]=e.node.arguments;if(!n||!r||!H.isStringLiteral(n)||!H.isStringLiteral(r))return null;let o=n.value,i=r.value;return{sourceType:"cms-field",sourceId:`${o}:${i}`,file:`cms://${o}/${i.replace(/\./g,"/")}`,displayPath:`${o}.${i}`}}function MI(e){return!!e&&H.isCallExpression(e)&&H.isIdentifier(e.callee)&&e.callee.name==="getCmsField"&&(e.arguments.length<2||!H.isStringLiteral(e.arguments[0])||!H.isStringLiteral(e.arguments[1]))}function km(e){if(!(!e||!H.isCallExpression(e))){if(H.isIdentifier(e.callee)&&e.callee.name==="t"){let[t]=e.arguments;return t&&H.isStringLiteral(t)?t.value:null}if(H.isMemberExpression(e.callee)&&!e.callee.computed&&H.isIdentifier(e.callee.object)&&e.callee.object.name==="intl"&&H.isIdentifier(e.callee.property)&&e.callee.property.name==="formatMessage"){let[t]=e.arguments;if(!t||!H.isObjectExpression(t))return null;for(let n of t.properties)if(H.isObjectProperty(n)&&!n.computed&&(H.isIdentifier(n.key)&&n.key.name==="id"||H.isStringLiteral(n.key)&&n.key.value==="id")&&H.isStringLiteral(n.value))return n.value.value;return null}}}function Im(e){return km(e)===null}async function DI(e,t,n){let r=new Set,o=co.posix.dirname(e);for(;r.add(o),!(o==="."||o==="/");){let i=co.posix.dirname(o);if(i===o){r.add(".");break}o=i}r.add("src"),r.add(".");for(let i of r){let s=i==="."?["locales","messages"]:[co.posix.join(i,"locales"),co.posix.join(i,"messages")];for(let a of s){let c=co.posix.join(a,`${t}.json`);if(await n(c))return c}}return null}async function LI(e){let t=km(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await DI(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function BI(e){if(!e.expressionPath.isCallExpression())return null;let t=e.expressionPath.node.callee;if(!H.isIdentifier(t)||t.name!=="apiField")return null;let[n,r]=e.expressionPath.node.arguments;if(!n||!H.isExpression(n))return null;let o=await Hi(n,e.expressionPath.scope,e.currentFile,e.readFile,e.exists,e.fileCache,e.visited);if(typeof o!="string"||o.length===0)return null;let i={sourceType:"api-field",sourceId:o,file:`api://${o}`,displayPath:o};return r?{match:i,editMode:"readonly",diagnostics:[_I("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var $I=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>OI(e)},{helperNames:["apiField"],resolve:e=>BI(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>LI({currentFile:e,expressionPath:t,exists:n})}];function Jc(e){return{...e,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Derived display values are readonly because no identity-preserving write target exists"}]}}function xm(e,t){return{finalSource:{kind:t.sourceType,file:t.file,locator:null,displayPath:t.displayPath,externalSource:{sourceType:t.sourceType,sourceId:t.sourceId,adapterId:t.adapterId}},chain:[...t.chainPrefix??[],{kind:t.sourceType,file:t.file,displayName:t.displayPath,canEditHere:t.editMode!=="readonly"}],confidence:"exact",editMode:t.editMode==="direct"?t.file===e?"direct":"proxy":t.editMode,diagnostics:t.diagnostics}}function $c(e,t,n){let r={kind:"value",root:n.root,path:n.path.length>0?n.path:[]},o=n.path.some(l=>l.kind==="index"),i=zI(n),s;n.semanticKind?s=n.semanticKind:i?s="config-entry":n.sourceKind==="repeat-template"?s="repeat-template":n.path.length===0?s=n.sourceKind==="imported-binding"?"imported-binding":"binding":s=o?"array-item":"object-field";let a=n.displayExpression??t,c=[...n.chainPrefix??[]];return n.sourceKind==="binding"?c.push({kind:"binding",file:n.file,displayName:n.root.kind==="binding"?n.root.name:a,canEditHere:n.editMode!=="readonly"}):n.sourceKind==="imported-binding"?c.push({kind:"imported-binding",file:n.file,displayName:n.root.kind==="named-export"?n.root.name:"default",canEditHere:n.editMode!=="readonly"}):n.sourceKind==="repeat-template"&&c.push({kind:"repeat-template",file:n.file,displayName:t,canEditHere:n.editMode!=="readonly"}),n.path.length>0&&n.sourceKind!=="repeat-template"&&c.push({kind:o?"array-item":"object-field",file:n.file,displayName:a,canEditHere:n.editMode!=="readonly"}),i&&c.push({kind:"config-entry",file:n.file,displayName:i.displayPath,canEditHere:n.editMode!=="readonly"}),{finalSource:{kind:s,file:n.file,locator:r,root:n.root,path:n.path,displayPath:a,externalSource:i?{sourceType:"config-entry",sourceId:i.sourceId}:void 0},chain:n.editMode==="readonly"?c.map(l=>({...l,canEditHere:!1})):c,confidence:n.sourceKind==="repeat-template"?"safe-derived":"exact",editMode:n.editMode??(n.file===e?"direct":"proxy"),diagnostics:n.diagnostics??[]}}var jI=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function Xc(e,t){let n=[...jI,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function Cm(e,t){let n=e.callee;return H.isIdentifier(n)&&Xc(n.name,t)?.purity==="side-effect"?`Helper "${n.name}" is registered as side-effectful and remains readonly`:"Function calls remain readonly because purity does not establish an identity-preserving write target"}async function zc(e){let t=await Uc(e);if(t)return t;let n=await Rm({...e,expressionPath:e.expressionPath});if(n)return n;if(e.expressionPath.isTemplateLiteral()){let r=e.expressionPath.node.expressions[0],o=e.expressionPath.get("expressions.0");if(e.expressionPath.node.expressions.length===1&&r&&o&&!Array.isArray(o)&&o.isExpression()){let i=await jt({expression:o.node,scope:o.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(i){let s=await yt({...e,expressionPath:o,sourceInfo:i});if(s&&s.kind==="value")return{...s,displayExpression:i.expression,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]}}}}return await JI(e)}async function Rm(e){let t=await kt({...e,allowComposed:!1});if(t?.kind!=="source")return null;let n=Hc(e.expressionPath);return n.isIdentifier()||n.isMemberExpression()?t.provenance:Jc(t.provenance)}async function kt(e){let t=Hc(e.expressionPath),n=KI(e.currentFile,t.node);if(n&&e.visited.has(n))return null;n&&e.visited.add(n);try{if(t.isStringLiteral()||t.isNumericLiteral()||t.isBooleanLiteral()||t.isNullLiteral())return{kind:"none"};if(t.isIdentifier()){let r=await jt({expression:t.node,scope:t.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!r)return null;let o=await yt({currentFile:e.currentFile,expressionPath:t,sourceInfo:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return!o||o.kind==="external"?null:{kind:"source",provenance:o}}if(t.isMemberExpression()){let r=await jt({expression:t.node,scope:t.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!r)return null;let o=await yt({currentFile:e.currentFile,expressionPath:t,sourceInfo:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return!o||o.kind==="external"?null:{kind:"source",provenance:o}}if(t.isConditionalExpression()){let r=t.get("test"),o=t.get("consequent"),i=t.get("alternate");if(Array.isArray(r)||Array.isArray(o)||Array.isArray(i)||!r.isExpression()||!o.isExpression()||!i.isExpression())return null;let s=await kt({...e,expressionPath:r,allowComposed:!0}),a=await kt({...e,expressionPath:o,allowComposed:!1}),c=await kt({...e,expressionPath:i,allowComposed:!1});return Dc(s,a,c)}if(t.isCallExpression())return VI({...e,expressionPath:t});if(!e.allowComposed)return null;if(t.isBinaryExpression()){let r=t.get("left"),o=t.get("right");if(Array.isArray(r)||Array.isArray(o)||!r.isExpression()||!o.isExpression())return null;let i=await kt({...e,expressionPath:r,allowComposed:!0}),s=await kt({...e,expressionPath:o,allowComposed:!0});return Dc(i,s)}if(t.isLogicalExpression()){let r=t.get("left"),o=t.get("right");if(Array.isArray(r)||Array.isArray(o)||!r.isExpression()||!o.isExpression())return null;let i=await kt({...e,expressionPath:r,allowComposed:!0}),s=await kt({...e,expressionPath:o,allowComposed:!0});return Dc(i,s)}if(t.isUnaryExpression()){let r=t.get("argument");return Array.isArray(r)||!r.isExpression()?null:kt({...e,expressionPath:r,allowComposed:!0})}return null}finally{n&&e.visited.delete(n)}}function Hc(e){let t=e;for(;t.isParenthesizedExpression()||t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression()||t.isTSTypeAssertion();){let n=t.get("expression");if(Array.isArray(n)||!n.isExpression())return t;t=n}return t}async function VI(e){let t=Kc(e.expressionPath.node);if(t==="Math.round"||t==="Math.floor"||t==="Math.ceil"||t==="Math.trunc"||t==="useCountUp"){let r=e.expressionPath.get("arguments.0");return!r||Array.isArray(r)||!r.isExpression()?null:kt({...e,expressionPath:r,allowComposed:!1})}let n=e.expressionPath.get("callee");if(n.isMemberExpression()&&!n.node.computed){let r=n.node.property;if(H.isIdentifier(r)&&(r.name==="toFixed"||r.name==="toString")){let o=n.get("object");return Array.isArray(o)||!o.isExpression()?null:kt({...e,expressionPath:o,allowComposed:!1})}}return null}function Dc(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!UI(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function UI(e,t){return e.file===t.file&&e.sourceKind===t.sourceKind&&JSON.stringify(e.root)===JSON.stringify(t.root)&&JSON.stringify(e.path)===JSON.stringify(t.path)&&JSON.stringify(e.collectionIndexMap??null)===JSON.stringify(t.collectionIndexMap??null)&&JSON.stringify(e.collectionPathMap??null)===JSON.stringify(t.collectionPathMap??null)}function KI(e,t){return t.start==null||t.end==null?null:`safe-derived:${e}:${t.start}:${t.end}`}async function JI(e){if(!e.expressionPath.isCallExpression())return null;let t=Kc(e.expressionPath.node);if(!t)return null;let n=Xc(t,e.functionCallContracts);if(!n||n.purity!=="pure")return null;let r=n.sourceArgIndex??0,o=e.expressionPath.get(`arguments.${r}`);if(!o||Array.isArray(o)||!o.isExpression())return null;let i=await wm({currentFile:e.currentFile,argumentPath:o,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return i?Jc(i):null}async function wm(e){let t=await Uc({currentFile:e.currentFile,expressionPath:e.argumentPath,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(t)return t;let n=await jt({expression:e.argumentPath.node,scope:e.argumentPath.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(n){let r=await yt({currentFile:e.currentFile,expressionPath:e.argumentPath,sourceInfo:n,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return!r||r.kind==="external"?r:{...r,displayExpression:n.expression}}return await zc({currentFile:e.currentFile,expressionPath:e.argumentPath,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited})}async function XI(e){if(!e.binding.path.isVariableDeclarator())return null;let t=e.binding.path.node.init;if(!t||!H.isCallExpression(t))return null;let n=t.callee;if(!H.isIdentifier(n))return null;let r=Xc(n.name,e.functionCallContracts);if(!r||r.purity!=="pure")return null;let o=r.sourceArgIndex??0,i=e.binding.path.get("init");if(!i||Array.isArray(i)||!i.isCallExpression())return null;let s=i.get(`arguments.${o}`);if(!s||Array.isArray(s)||!s.isExpression())return null;let a=await wm({currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited,argumentPath:s});return a?Jc(a):null}function zI(e){if(e.sourceKind!=="imported-binding")return null;let t=e.root.kind==="binding"||e.root.kind==="named-export"?e.root.name:e.root.kind==="default-export"?"default":null;if(!t)return null;let n=/(^|[\/.-])(config|settings)([\/.-]|$)/i.test(e.file),r=/config|settings/i.test(t);if(!n&&!r)return null;let o=ar(t,e.path);return{sourceId:o,displayPath:o}}async function HI(e){let t=e.segment.source;return t?yt({currentFile:e.currentFile,expressionPath:e.expressionPath,sourceInfo:t,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited}):null}async function yt(e){let t=e.sourceInfo,n=Oc(e.expressionPath,t.base);if(n){let l=await EI({currentFile:e.currentFile,callPath:n.callPath,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,fileCache:e.fileCache,visited:e.visited});if(!l){let h=am(n.callPath,[...n.basePath,...t.path]);return Kr(h)?fm(e.currentFile,h.sourceId,h.displayPath):null}let u=um(l,[...n.basePath,...t.path]),f=l.collectionIndexMap?.[0]??0,m=[...l.pathPrefix??[],{kind:"index",index:f},...n.basePath,...t.path],d=[{kind:"index",index:0},...n.basePath,...t.path];return Qe(l.value,d)===void 0?null:{kind:"value",file:l.file,root:l.root,path:u?.[0]??m,sourceKind:"repeat-template",collectionIndexMap:l.collectionIndexMap,...u?{collectionPathMap:u}:{}}}let r=e.expressionPath.scope.getBinding(t.base);if(!r)return null;if(r.path.isImportNamespaceSpecifier()){let l=t.path[0],u=r.path.parentPath;if(!l||l.kind!=="property"||!u?.isImportDeclaration())return null;let f=await hn(e.currentFile,u.node.source.value,e.exists);if(!f)return null;let m=await II({file:f,exportName:l.name,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(!m||m.kind==="external")return null;let d=t.path.slice(1);return Qe(m.value,d)===void 0?null:{kind:"value",file:m.file,root:m.root,path:d,sourceKind:"imported-binding",collectionIndexMap:m.collectionIndexMap}}let o=df(r);if(o){let l=o.expressionPath,u=await jt({expression:l.node,scope:l.scope,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(u){let f=await yt({...e,expressionPath:l,sourceInfo:{...u,expression:ar(u.expression,t.path),path:[...u.path,...t.path]}});if(f)return f}if(t.path.length===0){let f=await Rm({currentFile:e.currentFile,expressionPath:l,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(f)return f}}if(r.kind==="param")return CI({currentFile:e.currentFile,binding:r,sourceInfo:t,graph:e.graph,readFile:e.readFile,exists:e.exists,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});let i=await XI({currentFile:e.currentFile,binding:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(i)return i;let s=Si(r,t.path);if(Kr(s))return fm(e.currentFile,s.sourceId,s.displayPath);let a=await jc({currentFile:e.currentFile,binding:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return a?a.kind==="external"?t.path.length===0?a:null:Qe(a.value,t.path)===void 0?null:{kind:"value",file:a.file,root:a.root,path:t.path,sourceKind:a.sourceKind,collectionIndexMap:a.collectionIndexMap}:null}async function WI(e){let t=cm(e.expressionPath.node);if(!t||!lm(t.segments))return null;let n=await yt({currentFile:e.currentFile,expressionPath:e.expressionPath,sourceInfo:{kind:"identifier",expression:t.base,base:t.base,path:[]},readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(!n||n.kind==="external")return n;let r=await kI({...e,rootPath:n.path,segments:t.segments});return r?{...n,path:r.collectionPathMap[0]??n.path,sourceKind:"repeat-template",displayExpression:sr(e.expressionPath.node,e.fileCache.get(e.currentFile)?.source),...r.collectionIndexMap?{collectionIndexMap:r.collectionIndexMap}:{},collectionPathMap:r.collectionPathMap}:null}async function Nm(e){let t=GI(e.propertyName);if(t.owner==="blocked")return an(t.owner,t.diagnostic);if(t.owner==="class-name-source"||t.owner==="style")return an(t.owner,{code:"owner-delegated",message:`Property '${e.propertyName}' is owned by ${t.owner}`});let n=e.element.attributes?.filter(l=>l.name===e.propertyName)??[];if(n.length>1)return an("generic",{code:"duplicate-property-source",message:`Property '${e.propertyName}' has multiple explicit sources`});let r=n[0],o=[];r&&o.push({kind:"attribute",order:r.order??e.element.attributes.indexOf(r),attribute:r});let i=e.element.attributeSpreads??[];for(let l of i)o.push({kind:"spread",order:l.order,spread:l,target:await ZI(e,l)});o.sort((l,u)=>l.order-u.order);let s=o.at(-1);if(!s)return{status:"missing",owner:"generic"};if(o.filter(l=>l.kind==="spread"&&l.order>s.order).some(l=>!l.target))return an("generic",{code:"ambiguous-property-source",message:`A spread may provide or override property '${e.propertyName}'`});if(s.kind==="spread")return s.target?{status:"binding",owner:"generic",target:s.target}:an("generic",{code:"ambiguous-property-source",message:`The final spread source for '${e.propertyName}' is not provably writable`});let c=o.filter(l=>l.kind==="spread"&&l.order<s.order);return e.operation==="remove"&&c.length>0?an("generic",{code:"remove-exposes-spread",message:`Removing '${e.propertyName}' would expose an earlier spread source`}):YI(e,s.attribute)}async function YI(e,t){if(t.resolution&&t.resolution.status!=="resolved"&&!t.source){let r=await cr({file:e.file,source:e.source,sourceRange:t.sourceRange,expression:t.value,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache});return r&&r.kind!=="external-entry"?{status:"binding",owner:"generic",attribute:t,target:{kind:"value-binding",target:r}}:an("generic",{code:"unsupported-property-source",message:`Property '${e.propertyName}' has an unresolved value source`})}if(!t.source?.expression)return{status:"direct",owner:"generic",attribute:t,target:{kind:"jsx-attribute",file:e.file,sourceRange:t.sourceRange}};let n=await cr({file:e.file,source:e.source,sourceRange:t.sourceRange,expression:t.source.expression,sourceInfo:t.source,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache});return!n||n.kind==="external-entry"?an("generic",{code:"unsupported-property-source",message:`Property '${e.propertyName}' does not have a local writable source`}):{status:"binding",owner:"generic",attribute:t,target:{kind:"value-binding",target:n}}}async function ZI(e,t){let n=t.source?.expression;if(!n)return;let r=await cr({file:e.file,source:e.source,sourceRange:t.sourceRange,expression:n,sourceInfo:t.source,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache});if(!(!r||r.kind==="external-entry"))return{kind:"value-binding",target:QI(r,e.propertyName)}}function QI(e,t){let n=[...e.path??[],{kind:"property",name:t}];return{...e,path:n,locator:e.locator?{...e.locator,path:n}:{kind:"value",root:e.root??{kind:"binding",name:t},path:n}}}function an(e,t){return{status:"blocked",owner:e,...t?{diagnostic:t}:{}}}function Pm(e){let{key:t,element:n,graph:r,provenances:o}=e,i=eC(t,n,r),s=i?.tag??(Tn(n.tag)?n.tag:n.componentName),a=i?.identity.key??Am(n,r)??t,c=rC(i),l=oC(t,n,r,o,i),u=qI(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:nC(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:u,impactScope:iC(u),alternativeStrategies:sC(u)}}function qI(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return Wc(e,n)?"instance":!Tn(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function Am(e,t){if(Tn(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&tC(r,e.componentName));return n.length!==1?null:n[0].identity.key}function eC(e,t,n){if(Tn(t.tag))return t;let r=Wc(e,n);if(r)return r;let o=Am(t,n);return o?n.elements.get(o)??null:null}function tC(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function nC(e,t){return Tn(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function rC(e){if(!e?.attributes)return[];let t=new Set(["variant","size","tone"]);return e.attributes.filter(n=>t.has(n.name)).map(n=>n.name)}function oC(e,t,n,r,o){let i=new Set,s=Wc(e,n);s&&o?.identity.key===s.identity.key&&i.add("children");for(let a of r.values()){let c=a?.chain.find(u=>u.kind==="component-prop");if(!c)continue;let l=c.displayName.split(".").pop();l&&i.add(l)}return i.size===0&&Tn(t.tag)&&t.childKeys.length>0&&i.add("children"),[...i]}function Wc(e,t){let n=t.elements.get(e)?.parentKey??null;for(;n;){let r=t.elements.get(n);if(!r)break;if(Tn(r.tag))return r;n=r.parentKey}return null}function Tn(e){return/^[A-Z]/.test(e)}function iC(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function sC(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}function _m(e){let t=e.isRepeat??(e.graph?gC(e.element,e.graph):!1),n=e.propertyProvenance??new Map,r=e.repeatTargets??new Map,o=mC(e.element.attributes??[]),i=[...r.values()].some(u=>u.ok),s=o.map(u=>aC({attribute:u,element:e.element,isRepeat:t,selectionRef:e.selectionRef,provenance:n.get(u.name),repeatTarget:r.get(u.name)})),a=(e.element.attributeSpreads?.length??0)>0,c=(e.element.attributeSpreads??[]).slice().sort((u,f)=>u.order-f.order).map(u=>({raw:u.raw,sourceRange:hC(u.sourceRange,e.source),order:u.order,diagnostics:u.source?[]:[{code:"unsupported-spread-source",message:"The spread source cannot be resolved safely, so property ownership is conservative."}]})),l=t&&e.selectionRef?.instanceIndex!==void 0&&i;return{documentVersion:e.documentVersion,...e.selectionRef?{selectionRef:e.selectionRef}:{},items:s,spreads:c,creation:t?{selection:l?"materialize":"unsupported",template:"unsupported"}:{selection:a?"unsupported":"direct",template:a?"unsupported":"direct"}}}function aC(e){let{attribute:t,provenance:n,repeatTarget:r}=e,o=e.selectionRef?.instanceIndex!==void 0&&r?.ok===!0?r:null,i=cC(t,n,e.isRepeat),s=["selection","template"].map(S=>({scope:S,result:Pi({state:n,scope:S,operation:"set",selectionRef:e.selectionRef,isRepeat:e.isRepeat,repeatTarget:r})})),a=s.find(({result:S})=>S.ok)?.result,c=a?.ok?a.target:void 0,l=c?.kind==="value-binding"&&o&&(JSON.stringify(c.locator.root)!==JSON.stringify(o.selectedParentObjectLocator.root)||JSON.stringify(c.locator.path??[])!==JSON.stringify([...o.selectedParentObjectLocator.path??[],{kind:"property",name:t.name}]))?null:o,u=lC(t,n,l,e.isRepeat),f=c?fC(c,e.element,t.name):void 0,m=s.filter(({result:S})=>S.ok).map(({scope:S})=>S),d=m.length>0?dC(n,o,e.element):"unsupported",g=o?"repeat-item":e.isRepeat?"repeat-template":"node",h=pC(t,n,r);if(m.length===0&&h.length===0){let S=s.find(({result:E})=>!E.ok)?.result;S&&!S.ok&&h.push({code:S.code,message:S.reason})}return{name:t.name,source:i,resolution:u,editMode:d,sourceScope:g,allowedWriteScopes:m,...f?{effectiveWriteTarget:f}:{},diagnostics:h}}function cC(e,t,n){let r;if(n&&t?.status==="binding"){let o=t.target;r=o?.kind==="value-binding"&&o.target.sourceKind==="repeat-template"?"repeat-template":"binding"}else e.syntaxKind==="boolean-shorthand"?r="boolean-shorthand":e.syntaxKind==="literal"||!e.source?r="literal":r="expression";return{kind:r,...e.raw!==void 0?{raw:e.raw}:{}}}function lC(e,t,n,r){return n?Tm(n.selectedResolution):t?.status==="blocked"?{status:"unresolved"}:r&&t?.status==="binding"?{status:"unresolved"}:Tm(uC(e))}function uC(e){return e.resolution?e.resolution:e.syntaxKind==="boolean-shorthand"?{status:"resolved",value:!0}:e.resolvedValue!==void 0?{status:"resolved",value:e.resolvedValue}:e.source?{status:"unresolved"}:{status:"resolved",value:e.value}}function Tm(e){return!e||e.status==="unresolved"?{status:"unresolved"}:e.status==="undefined"?{status:"undefined"}:{status:"resolved",value:e.value}}function dC(e,t,n){if(t)return"direct";if(!e||e.status==="blocked")return"unsupported";if(e.status==="missing"||e.status==="direct")return"direct";let r=e.target;return r?.kind!=="value-binding"?"unsupported":r.target.file===n.sourceFile?"direct":"proxy"}function fC(e,t,n){return e.kind==="repeat-property"?{kind:"value-path",file:e.target.sourceFile,isProxy:e.target.sourceFile!==t.sourceFile,displayPath:Fm({...e.target.selectedParentObjectLocator,path:[...e.target.selectedParentObjectLocator.path??[],{kind:"property",name:n}]})}:e.kind==="value-binding"?{kind:"value-path",file:e.file,isProxy:e.file!==t.sourceFile,displayPath:Fm(e.locator)}:{kind:"jsx-node",file:t.sourceFile,isProxy:!1,displayPath:t.componentName+" > "+n}}function pC(e,t,n){let r=[];return t?.diagnostic&&r.push({code:t.diagnostic.code,message:t.diagnostic.message}),n&&!n.ok&&t?.status!=="missing"&&r.push({code:`repeat-${n.errorCode}`,message:n.reason}),e.resolution?.status==="unresolved"&&r.length===0&&r.push({code:"unsupported-property-source",message:`Property '${e.name}' has an unresolved value source`}),r}function mC(e){let t=new Set;return e.filter(n=>t.has(n.name)?!1:(t.add(n.name),!0))}function gC(e,t){let n=t.regions.filter(r=>r.kind==="repeat-region");for(let r of n){let o=e;for(;o;){if(r.childKeys.includes(o.identity.key))return!0;o=o.parentKey?t.elements.get(o.parentKey):void 0}}return!1}function Fm(e){return`${e.root.kind==="binding"?e.root.name:e.root.kind==="expression"?e.root.sourceRange?"expression":"value":e.root.kind}${(e.path??[]).map(n=>n.kind==="index"?`[${n.index}]`:`.${n.name}`).join("")}`}function hC(e,t){if(!t)return{start:e.startColumn,end:e.endColumn};let n=t.split(`
7
- `),r=(o,i)=>n.slice(0,Math.max(0,o-1)).reduce((s,a)=>s+a.length+1,0)+i;return{start:r(e.startLine,e.startColumn),end:r(e.endLine,e.endColumn)}}function yC(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var xC=160;function Om(e,t,n,r={}){let o=Jn(e),i=[];for(let[s,a]of e.elements){let c=n.get(s),l={canUpdateText:r.canUpdateTextByKey?.get(s)??c?.canUpdateText??!1,canInsertChild:c?.canInsertChild??!1,canMove:c?.canMove??!1,canRemove:c?.canRemove??!1};i.push({key:s,tag:a.tag,label:a.tag===a.componentName?a.tag:`${a.tag} (${a.componentName})`,parentKey:a.parentKey,childKeys:[...a.childKeys],operationSummary:l,...r.dynamicDataSummaryByKey?.get(s)?{dynamicDataSummary:r.dynamicDataSummaryByKey.get(s)}:{}})}return{composition:o,routeId:e.routeId,version:e.version,rootKeys:[...e.rootKeys],entries:i}}function Mm(e,t,n,r,o,i,s,a,c,l,u){let f=Jn(t),m=t.elements.get(e),d=n.nodes.get(e),g=r.get(e);if(!m||!d||!g)throw new Error(`Node not found: ${e}`);let h=jm(m.textSegments,s),S=Vm(e,t,m,g,h),E=h?EC(h):void 0,k=vC(i,h),I=m.textSegments.map(C=>({index:C.index,value:C.value,editable:Um(C,g,s?.get(C.index)??null),source:o.get(C.index)??null})),w=Bm(m,t),P=m.childKeys.map(C=>{let T=t.elements.get(C);return T?{key:C,tag:T.tag,label:T.tag}:null}).filter(C=>C!==null),A=[];if(m.parentKey){let C=t.elements.get(m.parentKey);if(C)for(let T of C.childKeys){if(T===e)continue;let _=t.elements.get(T);_&&A.push({key:T,tag:_.tag,label:_.tag})}}return{composition:f,key:e,tag:m.tag,componentName:m.componentName,sourceFile:m.sourceFile,sourceLocator:Lm(m),label:m.tag,capabilities:S,writeTarget:i,effectiveWriteTarget:k,provenanceChain:E,componentSemantic:c,styleSource:l,conditional:a,...u?{dynamicData:u}:{},textSegments:I,boundaryKind:m.boundaryKind,isOpaque:m.isOpaque,ancestors:w,children:P,siblings:A}}function Dm(e,t,n,r,o,i,s,a){let c=Jn(t),l=t.elements.get(e),u=n.nodes.get(e),f=r.get(e);if(!l||!u||!f)throw new Error(`Node not found: ${e}`);let m=jm(l.textSegments,i);return{composition:c,key:e,tag:l.tag,componentName:l.componentName,sourceFile:l.sourceFile,sourceLocator:Lm(l),label:l.tag,capabilities:Vm(e,t,l,f,m),provenanceChain:m?{editMode:m.editMode,diagnostics:m.diagnostics.map(d=>({code:d.code,message:d.message}))}:void 0,...s?{dynamicData:s}:{},...a?{properties:a}:{},textSegments:l.textSegments.map(d=>{let g=o.get(d.index);return{index:d.index,editable:Um(d,f,i?.get(d.index)??null),source:g?{kind:g.kind}:null}}),boundaryKind:l.boundaryKind,isOpaque:l.isOpaque,ancestors:Bm(l,t)}}function Lm(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:bC(e.sourceRange),structuralPath:e.identity.structuralPath,...SC(e.textSegments)}}function Bm(e,t){let n=[],r=e.parentKey;for(;r;){let o=t.elements.get(r);if(!o)break;n.push({key:r,tag:o.tag,label:o.tag}),r=o.parentKey}return n.reverse(),n}function bC(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function SC(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,xC)}:{}}function $m(e,t){let n=t.find(r=>r.editable&&r.source&&r.source.kind!=="literal");return n?.source?{kind:"value-binding",file:n.source.file,componentName:e.componentName,isProxy:n.source.file!==e.file}:{kind:"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function jm(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function Vm(e,t,n,r,o){let i=n.identity.structuralPath.includes("#repeat:"),s=t.regions.some(u=>u.kind==="repeat-region"&&u.childKeys.includes(e)),a=o?.diagnostics.find(u=>u.code==="missing-adapter"||u.code==="external-source-readonly")?.code,c=r.canUpdateText?{mode:o?.editMode??"direct",reasonCode:a??(o?.editMode==="upstream"?"component-prop":o?.finalSource?.kind==="repeat-template"?"repeat-item-data":void 0)}:{mode:"unsupported",reasonCode:"capability-denied"},l=r.canUpdateText&&Km(c.mode);return{...r,canUpdateText:l,editModes:{updateText:c,insertChild:r.canInsertChild?{mode:"direct",reasonCode:i||s?"repeat-template":void 0}:{mode:"unsupported",reasonCode:"capability-denied"},move:r.canMove?{mode:s?"proxy":"direct",reasonCode:s?"repeat-collection":void 0}:{mode:"unsupported",reasonCode:"capability-denied"},remove:r.canRemove?{mode:s?"proxy":"direct",reasonCode:s?"repeat-collection":void 0}:{mode:"unsupported",reasonCode:"capability-denied"}}}}function Um(e,t,n){return!e.editable||!t.canUpdateText?!1:n?Km(n.editMode):!0}function Km(e){return e==="direct"||e==="proxy"||e==="upstream"}function EC(e){return{finalSource:e.finalSource?{kind:e.finalSource.kind,file:e.finalSource.file,displayPath:e.finalSource.displayPath,externalSource:e.finalSource.externalSource}:null,chain:e.chain.map(t=>({kind:t.kind,file:t.file,displayName:t.displayName,canEditHere:t.canEditHere})),confidence:e.confidence,editMode:e.editMode,diagnostics:e.diagnostics.map(t=>({code:t.code,message:t.message}))}}function vC(e,t){return t?.finalSource?t.finalSource.kind==="jsx-literal"?{kind:"jsx-node",file:e.file,isProxy:e.isProxy}:t.finalSource.kind==="config-entry"&&t.finalSource.locator?{kind:"value-path",file:t.finalSource.file,isProxy:t.finalSource.file!==e.file,displayPath:t.finalSource.displayPath}:yC(t.finalSource.kind)?{kind:"external-entry",file:t.finalSource.file,isProxy:!1,displayPath:t.finalSource.displayPath,sourceType:t.finalSource.externalSource?.sourceType,sourceId:t.finalSource.externalSource?.sourceId}:{kind:"value-path",file:t.finalSource.file,isProxy:t.finalSource.file!==e.file,displayPath:t.finalSource.displayPath}:{kind:e.kind==="route-export"?"route-export":"jsx-node",file:e.file,isProxy:e.isProxy}}var Gc=["set-class-name-source","apply-style-draft"];function Jm(e){let t=e.attributes?.find(n=>n.name==="className");if(!t)return{kind:"class-name-source",className:"",sourceKind:"missing",editable:!0,operationBoundary:Gc,diagnostics:[{code:"missing-class-name",message:"No className attribute is present on this element"}]};if(t.resolution&&t.resolution.status!=="resolved")return{kind:"class-name-source",className:"",sourceKind:"dynamic-expression",editable:!1,operationBoundary:[],sourcePath:t.source?.expression,diagnostics:[{code:"dynamic-binding",message:"Style binding is unresolved and cannot be edited"}]};if(t.source?.expression){let n=t.source.expression,r=typeof t.resolvedValue=="string"?t.resolvedValue:t.value!==n?t.value:void 0;return typeof r!="string"?{kind:"class-name-source",className:"",sourceKind:"dynamic-expression",editable:!1,operationBoundary:[],sourcePath:n,diagnostics:[{code:t.resolvedValue===void 0?"dynamic-binding":"non-string-binding",message:t.resolvedValue===void 0?"Style binding is dynamic and cannot be edited":"Style binding must resolve to a static string before it can be edited"}]}:{kind:"class-name-source",className:r,sourceKind:"static-expression",editable:!0,operationBoundary:Gc,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:Gc}}function Xm(e){let t=new Map;for(let[n,r]of e.elements){let o=/^[A-Z]/.test(r.tag),i={file:r.sourceFile,componentName:r.componentName,isProxy:o},s=r.boundaryKind,a=[];r.isOpaque&&a.push({kind:"opaque-region",reason:`Component '${r.tag}' is opaque: internal structure not editable`}),o&&!r.isOpaque&&a.push({kind:"component-boundary",reason:`Component '${r.tag}' boundary: editing requires source file access`});let c={key:n,writeTarget:i,boundaryKind:s,parentKey:r.parentKey,childKeys:[...r.childKeys],constraints:a};t.set(n,c)}for(let n of e.regions){let r=n.kind==="repeat-region"?"repeat-region":n.kind==="conditional-region"?"conditional-region":n.kind==="opaque-region"?"opaque-region":"component-boundary",o=n.kind==="repeat-region"?"Node is inside a repeat region: operations affect the template, not individual instances":n.kind==="conditional-region"?"Node is inside a conditional region: visibility depends on runtime condition":`Node is inside a ${n.kind}`;for(let i of n.childKeys){let s=t.get(i);s&&s.constraints.push({kind:r,reason:o}),zm(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function zm(e,t,n,r,o){let i=o.elements.get(e);if(i)for(let s of i.childKeys){let a=r.get(s);a&&!a.constraints.some(c=>c.kind===t)&&(a.constraints.push({kind:t,reason:n}),zm(s,t,n,r,o))}}import Hm from"node:path";function Zc(){let e=Promise.resolve();return{async runExclusive(t){let n,r=new Promise(i=>{n=i}),o=e;e=o.then(()=>r,()=>r),await o;try{return await t()}finally{n()}}}}async function Gm(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=RC(i.path);if(!s.ok)return s;let a=s.path;if(o.has(a))return{ok:!1,code:"duplicate-target",path:a,reason:`Duplicate file target: ${a}`};if(o.add(a),i.kind==="create-only"){let c=t.has(a),l=n?await n(a):!1;if(c||l)return{ok:!1,code:"create-only-exists",path:a,reason:`Create-only file already exists: ${a}`}}r.push({...i,path:a})}return{ok:!0,plan:{operationId:e.operationId,intents:r}}}async function Wi(e){let t=()=>kC(e);return e.mutex?e.mutex.runExclusive(t):t()}async function kC(e){let t=await Gm(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=IC(e.overlay,t.plan),r;try{r=await e.buildCandidate({overlay:n,plan:t.plan})}catch(l){return{ok:!1,stage:"build",reason:"Candidate build failed.",error:l,recoveryRequired:!1}}let o,i;try{o=await e.prepareHistory?.({candidate:r,plan:t.plan}),await e.reverify?.({candidate:r,plan:t.plan,history:o}),i=await e.writeCandidate({candidate:r,plan:t.plan}),await e.markCandidateWritten?.({candidate:r,plan:t.plan,history:o,receipt:i})}catch(l){return Yc({candidate:r,plan:t.plan,failedStage:"commit",error:l,history:o,receipt:i,rollbackCandidate:e.rollbackCandidate})}let s=r;try{let l=await e.validateCandidate({candidate:r,plan:t.plan,receipt:i});l!==void 0&&(s=l)}catch(l){return Yc({candidate:r,plan:t.plan,failedStage:"validate",error:l,history:o,receipt:i,rollbackCandidate:e.rollbackCandidate})}let a;try{a=await e.publishCandidate({candidate:s,plan:t.plan,history:o,receipt:i})}catch(l){return Yc({candidate:s,plan:t.plan,failedStage:"publish",error:l,history:o,receipt:i,rollbackCandidate:e.rollbackCandidate})}let c={candidate:s,plan:t.plan,history:o,receipt:i,published:a};try{await e.swapCandidate?.(c)}catch(l){return Wm("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return Wm("finalize",l,"Transaction finalization failed after live state swap.")}try{e.emitCommitted?.({candidate:s,plan:t.plan,published:a})}catch{}return{ok:!0,stage:"publish",published:a,plan:t.plan}}function IC(e,t){let n=new Map(e);for(let r of t.intents)r.kind==="delete"?n.delete(r.path):n.set(r.path,r.content);return n}function Yc(e){return e.rollbackCandidate({candidate:e.candidate,plan:e.plan,failedStage:e.failedStage,error:e.error,...e.history===void 0?{}:{history:e.history},...e.receipt===void 0?{}:{receipt:e.receipt}}).then(()=>({ok:!1,stage:e.failedStage,reason:CC(e.failedStage),error:e.error,recoveryRequired:!1})).catch(t=>({ok:!1,stage:"rollback",reason:"Rollback failed after candidate commit/validation/publish failure.",error:t,recoveryRequired:!0,cause:e.error}))}function Wm(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function CC(e){switch(e){case"commit":return"Candidate write or commit verification failed.";case"validate":return"Candidate validation failed.";case"publish":return"Candidate publish failed."}}function RC(e){if(e.length===0)return{ok:!1,code:"unsafe-path",path:e,reason:"File path must not be empty."};if(e.includes("\0")||e.includes("\\"))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};if(/^[a-zA-Z]:/.test(e)||Hm.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=Hm.posix.normalize(e);return t==="."||t===".."||t.startsWith("../")||t.includes("/../")?{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`}:t.startsWith("./")||t.includes("/./")?{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`}:{ok:!0,path:t}}var wC=50,NC=8*1024*1024;function qm(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??wC),s=Math.max(0,t.maxUndoBytes??NC);return{prepareRewritePlan:a,execute:c,executeFilePlan:l,undo:u,redo:f};async function a(C){let T=[...C.steps].sort((Y,ue)=>Y.order-ue.order),_=T.filter(Y=>Y.type!=="invoke-external-adapter");if(_.length!==T.length)return{ok:!1,errorCode:"unsupported-operation",reason:"External adapter writes require a transactional prepare/commit/rollback contract."};let L=new Set(_.map(Y=>Y.file)),G=await k(L),ne=new Map(G.map(Y=>[Y.file,Y.exists===!1?"":Y.content])),ve;for(let Y of _){let ue=Qm(Y,ne.get(Y.file)??"");if(!ue.ok)return{ok:!1,errorCode:ue.errorCode,reason:ue.reason};ne.set(Y.file,ue.source),ve=ue.selectionRef??ve}return{ok:!0,filePlan:{operationId:C.operationId,kind:"source-edit",target:C.target,documentVersion:C.documentVersion,conflictPolicy:"compare-and-swap",edits:[...ne].map(([Y,ue])=>({operation:"upsert",file:Y,content:ue,baseContentHash:G.find(Ae=>Ae.file===Y)?.sha256??null}))},...ve?{selectionRef:ve}:{}}}async function c(C){let T=[...C.steps].sort((Ae,zt)=>Ae.order-zt.order),_=T.filter(Ae=>Ae.type!=="invoke-external-adapter"),L=T.filter(Ae=>Ae.type==="invoke-external-adapter"),G=new Set(_.map(Ae=>Ae.file));if(_.length>0&&L.length>0)return{ok:!1,operationId:C.operationId,errorCode:"unsupported-operation",reason:"Mixed local file rewrites and external adapter writes require an explicit compensation contract.",rolledBack:!1};if(_.length===0)return S(C,L);let ne=await k(G),ve=new Map;for(let Ae of ne)ve.set(Ae.file,Ae.exists===!1?"":Ae.content);let Y;for(let Ae of _){let zt=ve.get(Ae.file)??"",Ht=Qm(Ae,zt);if(!Ht.ok)return{ok:!1,operationId:C.operationId,errorCode:Ht.errorCode,reason:Ht.reason,rolledBack:!1};ve.set(Ae.file,Ht.source),Ht.selectionRef&&(Y=Ht.selectionRef)}let ue=await w([...ve].map(([Ae,zt])=>({file:Ae,content:zt,exists:!0,version:0,sha256:be(zt)})),ne);return ue.ok===!1?{ok:!1,operationId:C.operationId,errorCode:ue.rolledBack?"writeback-failed":"rollback-failed",reason:ue.reason,rolledBack:ue.rolledBack}:(n.push({operationId:C.operationId,preSnapshots:ne,postSnapshots:ue.snapshots,plan:C}),m(),r.length=0,{ok:!0,operationId:C.operationId,kind:C.kind,target:C.target,resultVersion:Math.max(...ue.snapshots.map(Ae=>Ae.version)),affectedFiles:[...G],...Y?{selectionRef:Y}:{}})}async function l(C){let T=new Set(C.edits.map(ue=>ue.file)),_=await k(T),L=E(C,_);if(L)return{ok:!1,operationId:C.operationId,errorCode:"stale-version",reason:L.reason,affectedFiles:[L.file],rolledBack:!1};let G=new Map(_.map(ue=>[ue.file,ue])),ne=C.edits.find(ue=>ue.operation==="create-only"&&G.get(ue.file)?.exists!==!1);if(ne)return{ok:!1,operationId:C.operationId,errorCode:"stale-version",reason:`MATERIALIZATION_INSTANCE_CONFLICT: create-only target already exists: ${ne.file}`,affectedFiles:[ne.file],rolledBack:!1};let ve=C.edits.map(ue=>ue.operation==="delete"?{file:ue.file,content:"",exists:!1,version:0}:{file:ue.file,content:ue.content,exists:!0,version:0,sha256:be(ue.content)}),Y=await w(ve,_,new Set(C.edits.filter(ue=>ue.operation==="create-only").map(ue=>ue.file)));return Y.ok===!1?{ok:!1,operationId:C.operationId,errorCode:Y.rolledBack?"writeback-failed":"rollback-failed",reason:Y.reason,rolledBack:Y.rolledBack}:(n.push({operationId:C.operationId,preSnapshots:_,postSnapshots:Y.snapshots,plan:{operationId:C.operationId,kind:C.kind,target:C.target,documentVersion:C.documentVersion,steps:[],preSnapshots:_}}),m(),r.length=0,{ok:!0,operationId:C.operationId,kind:C.kind,target:C.target,resultVersion:Math.max(...Y.snapshots.map(ue=>ue.version)),affectedFiles:[...T]})}async function u(){let C=n.at(-1);if(!C)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to undo"};let T=await w(C.preSnapshots,C.postSnapshots);return T.ok===!1?{ok:!1,operationId:C.operationId,errorCode:T.rolledBack?"writeback-failed":"rollback-failed",reason:T.reason,rolledBack:T.rolledBack}:(n.pop(),r.push(C),{ok:!0,operationId:C.operationId,kind:C.plan.kind,target:C.plan.target,resultVersion:Math.max(...T.snapshots.map(_=>_.version)),affectedFiles:C.preSnapshots.map(_=>_.file)})}async function f(){let C=r.at(-1);if(!C)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to redo"};let T=await w(C.postSnapshots,C.preSnapshots);return T.ok===!1?{ok:!1,operationId:C.operationId,errorCode:T.rolledBack?"writeback-failed":"rollback-failed",reason:T.reason,rolledBack:T.rolledBack}:(r.pop(),n.push(C),m(),{ok:!0,operationId:C.operationId,kind:C.plan.kind,target:C.plan.target,resultVersion:Math.max(...T.snapshots.map(_=>_.version)),affectedFiles:C.postSnapshots.map(_=>_.file)})}function m(){for(;n.length>i;)n.shift();for(;n.length>0&&d()>s;)n.shift()}function d(){return n.reduce((C,T)=>C+g(T),0)}function g(C){return h(C.preSnapshots)+h(C.postSnapshots)}function h(C){return C.reduce((T,_)=>T+_.file.length+_.content.length,0)}async function S(C,T){let _=[];for(let L of T){let G=L.capability??"write-text",ne=o.find(Y=>Y.sourceType===L.sourceType&&(L.adapterId===void 0||Y.adapterId===L.adapterId)&&(Y.capabilities===void 0||Y.capabilities.includes(G)));if(!ne)return{ok:!1,operationId:C.operationId,errorCode:"unsupported-operation",reason:`No external adapter registered for ${L.sourceType}`,rolledBack:!1};let ve=await ne.execute(L);if(!ve.ok)return{ok:!1,operationId:C.operationId,errorCode:"writeback-failed",reason:ve.reason??`External adapter failed for ${L.sourceType}`,rolledBack:!1};_.push(L.file)}return{ok:!0,operationId:C.operationId,kind:C.kind,target:C.target,resultVersion:0,affectedFiles:_}}function E(C,T){if(C.conflictPolicy!=="compare-and-swap")return null;let _=new Map(T.map(L=>[L.file,L]));for(let L of C.edits){if(L.operation==="create-only")continue;if(L.baseContentHash===void 0)return{file:L.file,reason:`Source file ${L.file} is missing baseContentHash. Reopen the file before saving.`};let G=_.get(L.file),ne=L.baseContentHash;if(ne===null){if(G?.exists!==!1)return{file:L.file,reason:`Source file ${L.file} was created or changed before save.`};continue}if(!ne)return{file:L.file,reason:`Source file ${L.file} is missing baseContentHash. Reopen the file before saving.`};if(G?.exists===!1||G?.sha256!==ne)return{file:L.file,reason:`Source file ${L.file} changed before save. Reload or explicitly overwrite the newer version.`}}return null}async function k(C){let T=[];for(let _ of C)T.push(await I(_));return T}async function I(C){if(!await e.exists(C))return{file:C,content:"",version:0,exists:!1};let _=Math.max(1,e.getVersion(C)),L=await e.readFile(C);return{file:C,content:L,version:_,exists:!0,sha256:be(L)}}async function w(C,T,_=new Set){let L=[];try{for(let G of C){if(_.has(G.file)){if(!e.createExclusive)throw new Error("Create-only write requires atomic exclusive-create support.");await e.createExclusive(G.file,G.content)}else await P(G);let ne=e.bumpVersion(G.file);L.push(G.file),G.version=ne}}catch(G){let ne=await A(T.filter(Y=>L.includes(Y.file)));if(ne.ok===!1)return{ok:!1,reason:`Writeback failed, then rollback failed for ${ne.failedFiles.join(", ")}: ${Zm(G)}`,rolledBack:!1,instanceConflict:Ym(G)};let ve=Ym(G);return{ok:!1,reason:`${ve?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${Zm(G)}`,rolledBack:!0,instanceConflict:ve}}return{ok:!0,snapshots:C.map(PC)}}async function P(C){if(C.exists===!1){await e.deleteFile(C.file);return}await e.writeFile(C.file,C.content)}async function A(C){let T=[];for(let _ of C)try{await P(_),e.bumpVersion(_.file)}catch{T.push(_.file)}return T.length===0?{ok:!0}:{ok:!1,failedFiles:T}}}function Ym(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function PC(e){let t=e.exists!==!1;return{file:e.file,content:t?e.content:"",version:e.version,exists:t,...t?{sha256:be(e.content)}:{}}}function Zm(e){return e instanceof Error?e.message:String(e)}function Qm(e,t){switch(e.type){case"invoke-external-adapter":return{ok:!1,reason:"External adapter steps must be executed asynchronously",errorCode:"unsupported-operation"};case"add-import":return ze(Un({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-import":return ze(Kn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-node":return ze(Bn({source:t,locator:e.locator,removeWhitespace:e.removeWhitespace}));case"insert-child":return ze($n({source:t,locator:e.parentLocator,node:e.node,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"update-text":return ze($o({source:t,locator:e.locator,segmentIndex:e.segmentIndex,newText:e.newText}));case"update-value":return ze(kr({source:t,locator:e.locator,next:e.value}));case"update-array-item":return ze(kr({source:t,locator:e.locator,next:e.value}));case"insert-bound-array-item":return ze(Xo({source:t,locator:e.locator,index:e.index,value:e.value}));case"insert-jsx-expression-child":return ze(Vo({source:t,locator:e.parentLocator,expression:e.expression,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"remove-bound-array-item":return ze(zo({source:t,locator:e.locator,index:e.index}));case"move-array-item":return ze(Ho({source:t,locator:e.locator,fromIndex:e.fromIndex,toIndex:e.toIndex}));case"move-node":return ze(jn({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"move-repeat-template-child":return ze(Uo({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,repeatExpression:e.repeatExpression,selectionContext:e.selectionContext}));case"set-class-name-source":return AC(e,t);case"set-property-changes":return ze(Ko({source:t,locator:e.locator,changes:e.changes}));case"set-property-binding":return ze(Jo({source:t,locator:e.locator,name:e.name,object:e.object,property:e.property}));case"upsert-object-property":return ze(Go({source:t,objectLocator:e.locator,name:e.name,value:e.value}));default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function AC(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!$u(n.newAttrRaw))return{ok:!1,reason:"newAttrRaw must be a valid JSX className attribute.",errorCode:"invalid-params"};let r=n.oldAttrRange!==null&&n.oldAttrRaw!==null,o=n.openingElementRange.start,i=n.openingElementRange.end,s=t.slice(o,i);if(!(Number.isInteger(o)&&Number.isInteger(i)&&o>=0&&i>o&&i<=t.length&&s.startsWith("<")&&s.endsWith(">")&&!s.startsWith("</")&&(n.oldAttrRange===null||n.oldAttrRange.start>=o&&n.oldAttrRange.end<=i)))return{ok:!1,reason:"The opening element range changed before className save.",errorCode:"stale-version"};if(!r&&n.expectedVersion.contentHash!==be(t))return{ok:!1,reason:"The source file changed before className save.",errorCode:"stale-version"};if(n.oldAttrRange){if(t.slice(n.oldAttrRange.start,n.oldAttrRange.end)!==n.oldAttrRaw)return{ok:!1,reason:"The className attribute changed before save.",errorCode:"stale-version"}}else if(n.oldAttrRaw!==null)return{ok:!1,reason:"The className attribute range no longer matches.",errorCode:"stale-version"};return{ok:!0,source:Bu({source:t,oldAttrRange:n.oldAttrRange,openingElementRange:n.openingElementRange,newAttrRaw:n.newAttrRaw})}}function ze(e){if(e.ok)return{ok:!0,source:e.source,...e.selectionRef?{selectionRef:e.selectionRef}:{}};switch(e.diagnostic.code){case"locator-miss":return{ok:!1,reason:e.diagnostic.message,errorCode:"locator-miss"};case"unsupported-syntax":case"binding-not-found":case"export-not-found":case"property-not-found":case"array-index-out-of-range":case"directive-conflict":case"metadata-shape-unsupported":return{ok:!1,reason:e.diagnostic.message,errorCode:"unsupported-operation"};case"invalid-parent-child-relation":case"self-closing-element":return{ok:!1,reason:e.diagnostic.message,errorCode:"invalid-target"};case"parse-failed":case"printer-failed":return{ok:!1,reason:e.diagnostic.message,errorCode:"ast-error"};default:return{ok:!1,reason:e.diagnostic.message,errorCode:"writeback-failed"}}}import{computeSiteEditCompositionKey as Gi,SiteEditCompositionContextSchema as TC,SiteEditCompositionSelectorSchema as FC}from"@vcp-dev/contracts";var He=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="SiteEditCompositionError"}};function eg(e,t){throw new He("INVALID_COMPOSITION",e,{value:t})}function Yi(e){let t=TC.safeParse(e);return t.success?t.data:eg("Invalid SiteEditCompositionContext.",e)}function tg(e){let t=[],n=new Map,r=new Map;for(let l of e.compositions){let u=Yi(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new He("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Gi(u);if(n.has(f))throw new He("DUPLICATE_COMPOSITION",`Composition key ${f} is registered more than once.`,{key:f,context:u});let m=r.get(l.entryFile);if(m)throw new He("DUPLICATE_COMPOSITION",`Entry file ${l.entryFile} is registered more than once.`,{entryFile:l.entryFile,context:m});let d={context:u,entryFile:l.entryFile,key:f};t.push(d),n.set(f,d),r.set(l.entryFile,f)}if(t.length===0)throw new He("INVALID_COMPOSITION","At least one composition must be registered.");let o=new Map;for(let l of e.initialDocumentVersions??[]){let u=Yi(l?.composition);if(!Number.isInteger(l?.version)||(l?.version??-1)<0)throw new He("INVALID_INITIAL_DOCUMENT_VERSION","Initial document version must be a non-negative integer.",{context:u,version:l?.version});let f=Gi(u);if(!n.has(f))throw new He("UNKNOWN_COMPOSITION","Initial document version references an unregistered composition.",{context:u,key:f});if(o.has(f))throw new He("DUPLICATE_COMPOSITION","Initial document versions must contain each composition at most once.",{context:u,key:f});o.set(f,l.version)}function i(l){let u=FC.safeParse(l);if(!u.success)return eg("Invalid SiteEditCompositionSelector.",l);let f=t.filter(({context:m})=>m.routeId===u.data.routeId&&(u.data.templateId===void 0?m.effectiveTemplateId===void 0:m.effectiveTemplateId===u.data.templateId));if(f.length===1)return f[0];throw f.length>1?new He("AMBIGUOUS_COMPOSITION","The composition selector matches multiple registered contexts.",{selector:u.data}):new He("UNKNOWN_COMPOSITION","The composition selector is not registered.",{selector:u.data})}function s(l){let u=Yi(l),f=Gi(u),m=n.get(f);if(!m)throw new He("UNKNOWN_COMPOSITION","The composition context is not registered.",{context:u,key:f});return m}function a(l){let u=Yi(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new He("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Gi(u),m=n.get(f);if(m){if(m.entryFile===l.entryFile)return m;throw new He("DUPLICATE_COMPOSITION",`Composition key ${f} is registered more than once.`,{key:f,context:u})}let d=[...n.values()].find(h=>h.entryFile===l.entryFile);if(d)throw new He("DUPLICATE_COMPOSITION",`Entry file ${l.entryFile} is registered more than once.`,{entryFile:l.entryFile,context:d.context});let g={context:u,entryFile:l.entryFile,key:f};return t.push(g),n.set(f,g),g}function c(l){let u=n.get(l);if(!u)return;n.delete(l);let f=t.findIndex(m=>m.key===l);return f>=0&&t.splice(f,1),o.delete(l),u}return{entries:t,byKey:n,initialVersions:o,register:a,unregister:c,resolveSelector:i,resolveContext:s,getByKey:l=>n.get(l),routeIds:()=>[...new Set(t.map(({context:l})=>l.routeId))]}}import{composeSiteEditRepeatInstanceKey as _C,stripSiteEditRepeatInstanceKeys as ng}from"@vcp-dev/contracts";function rg(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=ng(o.key)??o.key;if(i===o.key)continue;let s=n.get(i)??0;r.set(o.key,s),n.set(i,s+1)}return{entriesByKey:t,repeatOccurrenceIndexByKey:r}}function OC(e){let t=1;for(let n of e?.textTargets.values()??[])n?.kind==="value-binding"&&n.sourceKind==="repeat-template"&&(t=Math.max(t,n.collectionIndexMap?.length??0,n.collectionPathMap?.length??0));return t}function Zi(e){return e?.map(t=>({...t}))}function Qc(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=Zi(e.collectionPathMap?.[t])??Zi(e.locator?.path);if(r)for(let o=r.length-1;o>=0;o-=1){let i=r[o];if(i.kind==="index"){i.index=n;break}}return{...e,path:Zi(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>Zi(o)??[])}}function og(e,t,n){let r=new Set;for(let d of t.regions)if(d.kind==="repeat-region")for(let g of d.childKeys)r.add(g);if(r.size===0)return e;let o=new Map(e.entries.map(d=>[d.key,d])),i=[],s=new Map,a=(d,g)=>_C(d,g),c=(d,g,h)=>{let S=o.get(d);if(!S)return a(d,h);let E=a(d,h),k={...S,key:E,parentKey:g,childKeys:[]};return i.push(k),k.childKeys=S.childKeys.flatMap(I=>l(I,h,E)),E},l=(d,g,h)=>{if(!r.has(d))return[c(d,h,g)];let S=f(d,g),E=[];for(let k=0;k<S;k+=1)E.push(c(d,h,[...g,k]));return E},u=Array.from(new Set([...e.rootKeys,...e.entries.filter(d=>d.parentKey===null).map(d=>d.key)]));for(let d of u){if(!r.has(d)){c(d,null,[]);continue}let g=f(d,[]);for(let h=0;h<g;h+=1)c(d,null,[h])}return{...e,rootKeys:[...e.rootKeys],entries:i};function f(d,g){let h=new Set;for(let S of m(d)){let E=n.get(S);if(E){for(let k of[...E.textTargets.values(),...E.elementPropertyTargets.values()])if(!(k?.kind!=="value-binding"||k.sourceKind!=="repeat-template"))for(let I of MC(k))I.length<=g.length||DC(I,g)&&h.add(I[g.length])}}return h.size>0?h.size:OC(n.get(d))}function m(d){let g=s.get(d);if(g)return g;let h=[d],S=o.get(d);for(let E of S?.childKeys??[])h.push(...m(E));return s.set(d,h),h}}function ig(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function sg(e,t,n,r){let o=r?.repeatOccurrenceIndexByKey.get(t);if(o!==void 0)return o;if(!e)return null;let i=0;for(let s of e.entries)if((ng(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function MC(e){return e.collectionPathMap?.length?e.collectionPathMap.map(t=>t.filter(n=>n.kind==="index").map(n=>n.index)):e.collectionIndexMap?.length?e.collectionIndexMap.map(t=>[t]):[]}function DC(e,t){if(t.length>e.length)return!1;for(let n=0;n<t.length;n+=1)if(e[n]!==t[n])return!1;return!0}function ag(e,t,n,r){if(!n)return{...e,key:t};let o=r??new Map(n.entries.map(u=>[u.key,u])),i=o.get(t);if(!i)return{...e,key:t};let s=[],a=i.parentKey;for(;a;){let u=o.get(a);if(!u)break;s.push({key:u.key,tag:u.tag,label:u.label}),a=u.parentKey}s.reverse();let c=i.childKeys.map(u=>o.get(u)).filter(u=>u!==void 0).map(u=>({key:u.key,tag:u.tag,label:u.label})),l=i.parentKey===null?[]:(o.get(i.parentKey)?.childKeys??[]).filter(u=>u!==i.key).map(u=>o.get(u)).filter(u=>u!==void 0).map(u=>({key:u.key,tag:u.tag,label:u.label}));return{...e,key:i.key,ancestors:s,children:c,siblings:l}}function cg(e,t,n,r){if(!n)return{...e,key:t};let o=r??new Map(n.entries.map(c=>[c.key,c])),i=o.get(t);if(!i)return{...e,key:t};let s=[],a=i.parentKey;for(;a;){let c=o.get(a);if(!c)break;s.push({key:c.key,tag:c.tag,label:c.label}),a=c.parentKey}return s.reverse(),{...e,key:i.key,ancestors:s}}function lg(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function LC(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var uo=class extends Error{constructor(t){let n=t.map(lg);super(LC(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function ug(e,t){let n=t instanceof Error&&t.message?t.message:String(t);return t instanceof uo?{routeId:e,message:n,diagnostics:t.diagnostics.map(lg)}:{routeId:e,message:n}}function qc(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function el(e,t){let n=new Map(e);for(let r of t)n.delete(r);return n}function lr(e,t){e.clear();for(let[n,r]of t)e.set(n,r)}function dg(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function tl(e,t,n,r){if(!e.has(t)&&e.size>=r){let o=e.keys().next().value;o&&e.delete(o)}e.set(t,n)}function fg(e){let{journal:t,index:n,observedFileDigests:r}=e;if(r.length!==t.files.length)return"ambiguous";let o=t.files.every((l,u)=>l.preDigest===r[u]),i=t.files.every((l,u)=>l.postDigest===r[u]),s=t.historyTransition,a=n.digest===s.expectedIndexDigest,c=n.digest===s.publishedIndexDigest&&n.cursor===s.publishedCursor&&n.currentId===s.publishedCurrentId;return o&&a?"safely-uncommitted":i&&c?"durably-committed":"ambiguous"}var XC=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,zC=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],pg=32,mg=256;function HC(e){return{expectedIndexDigest:e.digest,publishedIndexDigest:e.digest,publishedCursor:e.cursor,publishedCurrentId:e.currentId}}var gg={maxEntries:50,maxBytes:8*1024*1024};function WC(){let e=new Map;return{async readFile(t){return(await import("node:fs/promises")).readFile(t,"utf-8")},async readFileBytes(t){return(await import("node:fs/promises")).readFile(t)},async getFileInfo(t){let n=await import("node:fs/promises");try{let r=await n.lstat(t);return!r.isFile()||r.isSymbolicLink()?null:{path:t,sizeBytes:r.size}}catch{return null}},async writeFile(t,n){await Zo(t,n)},async deleteFile(t){await(await import("node:fs/promises")).rm(t,{force:!0})},async exists(t){let n=await import("node:fs/promises");try{return await n.access(t),!0}catch{return!1}},getVersion(t){return e.get(t)??1},bumpVersion(t){let n=(e.get(t)??1)+1;return e.set(t,n),n}}}function GC(){let e=[],t=[];return{prepareAppend(r){return{kind:"append",entry:r}},prepareUndo(){let r=e.at(-1);return r?{kind:"undo",entry:r}:null},prepareRedo(){let r=t.at(-1);return r?{kind:"redo",entry:r}:null},publishPrepared(r){if(r.kind==="append"){e.push(r.entry),n(),t.length=0;return}if(r.kind==="undo"){if(e.at(-1)!==r.entry)throw new Error("undo history changed before publish");e.pop(),t.push(r.entry);return}if(t.at(-1)!==r.entry)throw new Error("redo history changed before publish");t.pop(),e.push(r.entry),n()},peekUndo(){return e.at(-1)??null},pushUndo(r){e.push(r),n(),t.length=0},popUndo(){return e.pop()??null},peekRedo(){return t.at(-1)??null},pushRedo(r){t.push(r)},popRedo(){return t.pop()??null},clearRedo(){t.length=0},getStatus(){return{canUndo:e.length>0,canRedo:t.length>0,undoDepth:e.length,redoDepth:t.length,recoveryRequired:!1}}};function n(){for(;e.length>gg.maxEntries||YC(e)>gg.maxBytes;)e.shift()}}function YC(e){return e.reduce((t,n)=>t+ZC(n),0)}function ZC(e){return hg(e.preSnapshots)+hg(e.postSnapshots)+QC(e.provenance)}function QC(e){return e?new TextEncoder().encode(JSON.stringify(e)).byteLength:0}function hg(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function yg(e,t){return{key:$C(e),composition:e,routeId:e.routeId,entryFile:t,graph:null,topology:null,capabilities:null,document:null,pageComposition:null,pageCompositionProjection:null,documentIndex:null,pagePlacementByKey:null,pagePlacementUnitByKey:null,pageUnitByKey:null,pagePlacementsByUnitKey:null,dependencyFiles:new Set([t]),detailProjections:null,fileVersions:new Map,styleContext:null}}var qi=class extends Error{constructor(t){super(t.reason),this.result=t}},Fn=class extends Error{constructor(t){super(qc(t)),this.failedRoutes=t}};function xg(e,t){if(!e)return;let n=[...t];if(n.some(o=>o?.entries.some(i=>i.key===e.key)))return e;let r=it(e.key)??e.key;for(let o of n){let i=o?.entries.find(s=>(it(s.key)??s.key)===r);if(i)return{...e,key:i.key}}return e}function qC(e,t,n){if(!n)return;let r=it(n.key)??n.key;if(n.key!==e&&n.key!==t&&r!==t)throw new Error(`Selection reference '${n.key}' does not match selected key '${e}'`);if(n.instanceIndex!==void 0&&(!Number.isInteger(n.instanceIndex)||n.instanceIndex<0))throw new Error("Selection reference instanceIndex must be non-negative");if(n.instanceCount!==void 0&&(!Number.isInteger(n.instanceCount)||n.instanceCount<=0))throw new Error("Selection reference instanceCount must be positive");if(n.instanceIndex!==void 0&&n.instanceCount!==void 0&&n.instanceIndex>=n.instanceCount)throw new Error("Selection reference instanceIndex must be smaller than instanceCount");return{...n,key:t}}var eR=/\.(?:[cm]?[jt]sx?)$/i,tR=/\.json$/i,nR=/\.(?:css|scss|sass)$/i,rR=/\.mdx$/i,oR=/\.ya?ml$/i;function iR(e){if(!e||e.kind!=="value-binding")return null;let t="path"in e?e.path:void 0,n=e.root,r=n&&(n.kind==="binding"||n.kind==="named-export")?n.name:void 0;return{kind:e.sourceKind,file:e.file,expression:e.displayExpression,bindingName:r,path:t?.map(o=>o.kind==="property"?o.name:o.index)}}function sR(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function aR(e,t){let n=new Map;for(let r of t)n.set(r.path,r.operation==="delete"?{exists:!1}:{exists:!0,content:r.content});return{async readFile(r){let o=n.get(r);if(o){if(!o.exists)throw new Error(`Source file not found: ${r}`);return o.content}return e.readFile(r)},async writeFile(){throw new Error("Source edit preflight overlay is read-only.")},async deleteFile(){throw new Error("Source edit preflight overlay is read-only.")},async exists(r){let o=n.get(r);return o?o.exists:e.exists(r)},async getFileInfo(r){let o=n.get(r);return o?o.exists?{path:r,sizeBytes:Buffer.byteLength(o.content,"utf8")}:null:e.getFileInfo?.(r)??null},async listFiles(r={}){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let o=kg(await e.listFiles(r)),i=new Map(o.files.map(a=>[a.path,a]));for(let[a,c]of n)if(cR(a,r.roots??[])){if(!c.exists){i.delete(a);continue}i.set(a,{path:a,sizeBytes:Buffer.byteLength(c.content,"utf8")})}let s=[...i.values()].sort((a,c)=>a.path.localeCompare(c.path));return o.truncated?{files:s,truncated:o.truncated}:s},getVersion(r){return e.getVersion(r)},bumpVersion(r){return e.getVersion(r)}}}function cR(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function kg(e){return Array.isArray(e)?{files:e}:e}function lR(e){if(!VC(e.path))return{ok:!1,errorCode:"invalid-params",message:`Source file is read-only: ${e.path}`,details:{path:e.path}};if(e.operation==="upsert"&&e.content.includes("\0"))return{ok:!1,errorCode:"invalid-params",message:`Source file content must be valid text: ${e.path}`,details:{path:e.path}};if(e.operation==="delete"){if(e.capability!==KC||e.confirmDelete!==!0||e.confirmPath!==e.path)return{ok:!1,errorCode:"capability-denied",message:`Source file delete requires explicit confirmation: ${e.path}`,details:{path:e.path}};let t=jC(e.path);return t?{ok:!1,errorCode:"capability-denied",message:`Protected source file cannot be deleted: ${e.path}`,details:{path:e.path,protectionReason:t}}:{ok:!0}}if(eR.test(e.path)){let t=Rt({source:e.content,profile:pn({filePath:e.path,source:e.content})});if(!t.ok)return{ok:!1,errorCode:"ast-error",message:t.diagnostic.message,details:{path:e.path}}}if(tR.test(e.path))try{JSON.parse(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`JSON parse failed: ${Ge(t)}`,details:{path:e.path}}}if(nR.test(e.path)){let t=bg({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(rR.test(e.path)){let t=bg({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(oR.test(e.path))try{JC(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`YAML parse failed: ${Ge(t)}`,details:{path:e.path}}}return{ok:!0}}function bg({content:e,path:t,profile:n}){let r=[],o=null,i=!1,s=!1,a=!1,c=!1,l=!0;for(let f=0;f<e.length;f+=1){let m=e[f]??"",d=e[f+1]??"";if(n==="mdx"&&l&&e.startsWith("```",f)){c=!c;let g=e.indexOf(`
1
+ import*as xh from"@babel/parser";import*as Vn from"@babel/types";import*as Wt from"node:path";var Ss=[".tsx",".ts",".jsx",".js"],bh=Ss.map(e=>`/index${e}`),Sh=new Set(["json","css","scss","sass","less","svg","png","jpg","jpeg","gif","webp","avif","ico","bmp","woff","woff2","ttf","otf","eot","mp4","webm","mp3","wav","ogg","pdf","txt","md","csv","xml","yaml","yml"]);function Hl(e){let t=e.replace(/[?#].*$/,""),n=/\.([a-z0-9]+)$/i.exec(t);return n!==null&&Sh.has(n[1].toLowerCase())}function Wl(e){let t=[];for(let n of e.program.body)Vn.isImportDeclaration(n)&&typeof n.source.value=="string"&&wt(n.source.value)&&t.push(n.source.value),Vn.isExportNamedDeclaration(n)&&n.source&&typeof n.source.value=="string"&&wt(n.source.value)&&t.push(n.source.value),Vn.isExportAllDeclaration(n)&&typeof n.source.value=="string"&&wt(n.source.value)&&t.push(n.source.value);return Es(e.program,t),t}function Es(e,t){if(!e||typeof e!="object")return;let n=e;if(n.type==="CallExpression"&&n.callee?.type==="Import"){let r=n.arguments?.[0];r?.type==="StringLiteral"&&typeof r.value=="string"&&wt(r.value)&&t.push(r.value)}for(let r of Object.values(n))if(Array.isArray(r))for(let o of r)Es(o,t);else r&&typeof r=="object"&&Es(r,t)}function wt(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("@/")}function dn(e,t){if(t.startsWith("@/"))return t.slice(2).replace(/\\/g,"/");let n=Wt.dirname(e);return Wt.join(n,t).replace(/\\/g,"/")}async function Eh(e,t){if(Ss.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of Ss){let r=`${e}${n}`;if(await t(r))return r}for(let n of bh){let r=`${e}${n}`;if(await t(r))return r}return null}async function fn(e,t,n){let r=await wo(e,t,n);return r.ok?r.path:null}async function wo(e,t,n){let r=dn(e,t);try{if(!vh(e,t,r))return{ok:!1,diagnostic:{path:r,code:"import-not-found",message:`Local import not found: ${t}`,details:{fromFile:e,specifier:t}}};let o=await Eh(r,n);return o?{ok:!0,path:o}:{ok:!1,diagnostic:{path:r,code:"import-not-found",message:`Local import not found: ${t}`,details:{fromFile:e,specifier:t}}}}catch(o){return{ok:!1,diagnostic:{path:r,code:"import-resolve-failed",message:`Failed to resolve local import: ${t}`,details:{fromFile:e,specifier:t,reason:o instanceof Error?o.message:String(o)}}}}}function vh(e,t,n){if(!wt(t)||t.includes("\0")||t.includes("\\")||Wt.posix.isAbsolute(n))return!1;let r=Wt.posix.normalize(n);if(r===".."||r.startsWith("../"))return!1;if(t.startsWith("@/")){let o=t.slice(2);return o.length>0&&!o.split("/").some(i=>i==="..")}return!Wt.posix.isAbsolute(e)}import{createHash as Ih}from"node:crypto";import*as Gl from"@babel/parser";function pn(e,t,n,r){return{code:e,message:t,locatorKind:n,details:r}}function J(e,t,n,r,o){return{ok:!1,source:e,diagnostic:pn(t,n,r,o)}}function vs(e,t,n,r,o){return{ok:!1,source:e,diagnostic:pn(t,n,r,o)}}var kh={"tsx-module":["jsx","typescript"],"ts-module":["typescript"],"next-app-entry":["jsx","typescript"]};function Nt(e){let{source:t,profile:n}=e;try{return{ok:!0,ast:Gl.parse(t,{sourceType:"module",plugins:kh[n]})}}catch(r){return{ok:!1,source:t,diagnostic:pn("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function ks(e,t){return Nt({source:e,profile:Yl(t.kind)})}function gr(e,t){return Nt({source:e,profile:Yl(t)})}function Yl(e){return"next-app-entry"}function mn(e){let{filePath:t,source:n}=e,r=t.toLowerCase().split(".").pop()??"";return r==="tsx"?"tsx-module":r==="ts"?"ts-module":r==="jsx"||r==="js"||r===""&&/<\w[\s\S]*>/.test(n)?"tsx-module":"next-app-entry"}var gn=(e,t)=>{let n=Nt({source:t,profile:mn({filePath:e,source:t})});return n.ok?{ok:!0,module:{file:e,source:t,sourceHash:`sha256:${Ih("sha256").update(t).digest("hex")}`,ast:n.ast,imports:Wl(n.ast).map(r=>({specifier:r}))}}:{ok:!1,diagnostic:{path:e,code:"parse-failed",message:n.diagnostic.message}}};function Ch(e,t){return gn(e,t)}function Rh(e,t){return dn(e,t)}import{SiteEditOperationRequestSchema as FR,SiteEditPatchPlanSchema as _R}from"@vcp-dev/contracts";function hn(e){return{requestId:e.requestId,kind:e.kind,composition:e.composition,target:e.target,resultVersion:e.resultVersion,affectedFiles:e.affectedFiles,...e.output?{output:e.output}:{},...e.selectionRef?{selectionRef:e.selectionRef}:{}}}function No(e,t){let n=t[0]??"Site edit operation request failed contract validation.";return{ok:!1,composition:{routeId:e.composition.routeId,...e.composition.templateId!==void 0?{effectiveTemplateId:e.composition.templateId}:{}},error:{code:"INVALID_PARAMS",message:n},data:{requestId:e.id,kind:e.kind,composition:{routeId:e.composition.routeId,...e.composition.templateId!==void 0?{effectiveTemplateId:e.composition.templateId}:{}},target:e.target,resultVersion:e.documentVersion}}}function Po(e,t){if(!e.pageComposition)throw new Error("RenderDocument is missing the required Page Composition projection.");return{siteId:t.siteId,snapshotId:t.snapshotId,composition:e.composition,version:e.version,entries:e.entries.map(n=>({key:n.key,parentKey:n.parentKey,...n.pageCompositionUnitKey?{pageCompositionUnitKey:n.pageCompositionUnitKey}:{},...n.pageCompositionActionScope?{pageCompositionActionScope:n.pageCompositionActionScope}:{},operationSummary:{canUpdateText:n.operationSummary.canUpdateText,canInsertChild:n.operationSummary.canInsertChild,canMove:n.operationSummary.canMove,canRemove:n.operationSummary.canRemove},...n.dynamicDataSummary?{dynamicDataSummary:n.dynamicDataSummary}:{}})),pageComposition:e.pageComposition.status==="unsupported"?{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics}:{status:"supported",containerKey:e.pageComposition.container.key,hasBusinessMembers:e.pageComposition.businessMembers.length>0,placementUnitKeys:e.pageComposition.placementUnits.map(n=>n.key),placements:e.pageComposition.placements.map(n=>({placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,relation:n.relation}))}}}function Ao(e){return{composition:e.composition,key:e.key,tag:e.tag,label:e.label,sourceLocator:e.sourceLocator,isOpaque:e.isOpaque,ancestors:e.ancestors,componentName:e.componentName,sourceFile:e.sourceFile,capabilities:wh(e.capabilities),provenanceChain:e.provenanceChain?{editMode:e.provenanceChain.editMode,diagnostics:e.provenanceChain.diagnostics}:void 0,dynamicData:e.dynamicData,...e.properties?{properties:e.properties}:{},textSegments:e.textSegments.map(t=>({index:t.index,editable:t.editable,sourceKind:t.source?.kind??null})),boundaryKind:e.boundaryKind}}function To(e,t){let n=new Date().toISOString();return e.type==="document-changed"?{type:"site-edit.document.changed",siteId:t.siteId,snapshotId:t.snapshotId,composition:e.composition,version:e.version,at:n}:e.type==="operation-completed"?{type:"site-edit.operation.completed",siteId:t.siteId,composition:e.composition,result:hn(e.result),at:n}:e.type==="operation-failed"?{type:"site-edit.operation.failed",siteId:t.siteId,requestId:e.requestId,composition:e.composition,error:e.error,at:n}:e.type==="capability-changed"?{type:"site-edit.capability.changed",siteId:t.siteId,composition:e.composition,keys:e.keys,at:n}:e.type==="graph-invalidated"?{type:"site-edit.graph.invalidated",siteId:t.siteId,composition:e.composition,at:n}:e.type==="graph-ready"?{type:"site-edit.graph.ready",siteId:t.siteId,composition:e.composition,version:e.version,at:n}:e.type==="graph-error"?{type:"site-edit.graph.error",siteId:t.siteId,composition:e.composition,message:e.message,at:n}:null}function wh(e){return{composition:e.composition,key:e.key,canUpdateText:e.canUpdateText,canInsertChild:e.canInsertChild,canMove:e.canMove,canRemove:e.canRemove,editModes:e.editModes?{updateText:e.editModes.updateText?{mode:e.editModes.updateText.mode,reasonCode:e.editModes.updateText.reasonCode}:void 0,insertChild:e.editModes.insertChild?{mode:e.editModes.insertChild.mode,reasonCode:e.editModes.insertChild.reasonCode}:void 0,move:e.editModes.move?{mode:e.editModes.move.mode,reasonCode:e.editModes.move.reasonCode}:void 0,remove:e.editModes.remove?{mode:e.editModes.remove.mode,reasonCode:e.editModes.remove.reasonCode}:void 0}:void 0,constraints:e.constraints}}import{checkGlobalsCssEdit as KC,computeSiteEditCompositionKey as JC,getSiteEditSourceDeleteProtectionReason as XC,isSiteEditTextSourcePath as zC,parseSiteEditRepeatInstanceKey as HC,SITE_EDIT_SOURCE_DELETE_CAPABILITY as WC,stripSiteEditRepeatInstanceKeys as qe}from"@vcp-dev/contracts";import es from"node:path";import{parse as GC}from"yaml";import Ns from"node:path";import{TextDecoder as Ph}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as Ql,SITE_EDIT_SOURCE_ALLOWED_DIRS as ql,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as eu,SiteEditCompositionContextSchema as Ah,SiteEditSourceFileResponseSchema as Is,SiteEditSourceLocationSchema as Th,SiteEditSourcePathSchema as Fo,SiteEditSourceTreeResponseSchema as Fh,isSiteEditTextSourcePath as _h}from"@vcp-dev/contracts";import{createHash as Nh}from"node:crypto";var hr=class{constructor(t){this.original=new Map,this.files=new Map,this.versions=new Map;for(let n of t)this.original.set(n.path,n.content),this.files.set(n.path,n.content),this.versions.set(n.path,n.version??1)}async readFile(t){let n=this.files.get(t);if(n===void 0)throw new Error(`Snapshot file not found: ${t}`);return n}async readFileBytes(t){return Buffer.from(await this.readFile(t),"utf8")}async getFileInfo(t){let n=this.files.get(t);return n===void 0?null:{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async writeFile(t,n){this.files.set(t,n)}async createExclusive(t,n){if(this.files.has(t))throw Object.assign(new Error(`Snapshot file already exists: ${t}`),{code:"EEXIST"});this.files.set(t,n)}async deleteFile(t){this.files.delete(t)}async exists(t){return this.files.has(t)}async listFiles(t={}){let n=t.roots??[],r=[...this.files.keys()].filter(a=>n.length===0?!0:n.some(c=>a===c||a.startsWith(`${c}/`))),o=[],i=new Set,s=0;for(let a of r.sort()){let c=Buffer.byteLength(this.files.get(a)??"","utf8"),l=a.split("/").length;if(t.maxDepth!==void 0&&l>t.maxDepth){i.add("max-depth");continue}if(t.maxFiles!==void 0&&o.length>=t.maxFiles){i.add("max-files");break}if(t.maxTotalBytes!==void 0&&s+c>t.maxTotalBytes){i.add("max-total-bytes");break}o.push({path:a,sizeBytes:c}),s+=c}return i.size>0?{files:o,truncated:{reasons:[...i]}}:{files:o}}getVersion(t){return this.versions.get(t)??0}bumpVersion(t){let n=this.getVersion(t)+1;return this.versions.set(t,n),n}getChangedFiles(){let t=new Set([...this.original.keys(),...this.files.keys()]),n=[];for(let r of[...t].sort()){let o=this.original.get(r),i=this.files.get(r);o!==i&&n.push({path:r,before:o,after:i})}return n}};function ve(e){return`sha256:${Nh("sha256").update(e).digest("hex")}`}var Oh=[...eu,...Ql,...ql];function Ps(e){if(!e.composition)throw new Error("Composition unavailable for source access policy.");return Ah.parse(e.composition)}var Cs=2e3,Rs=12,ws=24*1024*1024,Zl=512*1024,Mh=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),Dh={".avif":"image/avif",".bin":"application/octet-stream",".eot":"application/vnd.ms-fontobject",".gif":"image/gif",".glb":"model/gltf-binary",".ico":"image/x-icon",".jpeg":"image/jpeg",".jpg":"image/jpeg",".mp3":"audio/mpeg",".mp4":"video/mp4",".pdf":"application/pdf",".png":"image/png",".svg":"image/svg+xml",".ttf":"font/ttf",".wasm":"application/wasm",".webm":"video/webm",".webp":"image/webp",".woff":"font/woff",".woff2":"font/woff2",".zip":"application/zip"},Lh={".cjs":"javascript",".css":"css",".cts":"typescript",".html":"html",".js":"javascript",".jsx":"javascript",".json":"json",".md":"markdown",".mdx":"markdown",".mjs":"javascript",".mts":"typescript",".ts":"typescript",".tsx":"typescript",".txt":"plaintext",".yaml":"yaml",".yml":"yaml"},Bh=new Ph("utf-8",{fatal:!0});async function _o(e,t={}){let n=Ps(t),{files:r,truncated:o}=await Xh(e,t),i=Wh(r.map(s=>s.metadata));return Fh.parse({composition:n,nodes:i,defaultPath:Gh(r.map(s=>s.metadata)),totalFiles:r.length,...o?{truncated:o}:{}})}async function Oo(e,t,n={}){let r=Ps(n),o=Fo.parse(t.path),i=await jh(e,o,n);if(!i)throw new Error(`Source file not found: ${o}`);if(Ts(o)){let a=ru(o),c=await Uh(e,{path:o,sizeBytes:i.sizeBytes,mimeType:a});return Is.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:a,readonly:!0,...c})}let s=await As(e,o);return s.ok?Is.parse({composition:r,path:o,kind:"text",language:ou(o),sizeBytes:s.sizeBytes,contentHash:ve(s.content),readonly:!1,content:s.content}):Is.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:s.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function As(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=$h(o);return i===null?{ok:!1,sizeBytes:o.byteLength}:{ok:!0,content:i,sizeBytes:o.byteLength}}let n=await e.readFile(t),r=Buffer.byteLength(n,"utf8");return n.includes("\0")?{ok:!1,sizeBytes:r}:{ok:!0,content:n,sizeBytes:r}}function $h(e){if(e.includes(0))return null;try{return Bh.decode(e)}catch{return null}}async function jh(e,t,n){if(!Kh(t,n))return null;let r=await Vh(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function Vh(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=tu(await e.listFiles({roots:[t],maxFiles:1,maxDepth:t.split("/").length})).files.find(i=>i.path===t);if(o)return o}if(!await e.exists(t))return null;if(e.readFileBytes){let r=await e.readFileBytes(t);return{path:t,sizeBytes:r.byteLength}}if(Ts(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function Uh(e,t){if(!Mh.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>Zl)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>Zl?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function Kh(e,t){return eu.some(n=>n===e)||Ql.some(n=>n===e)||ql.some(n=>e===n||e.startsWith(`${n}/`))?!0:!e.startsWith("app/")&&!e.startsWith("src/app/")?!1:(t.routeEntryFiles??[]).some(n=>{let r=Fo.safeParse(n);return r.success&&r.data===e})}function Mo(e,t){if(!t.sourceLocator)throw new Error(`Source location not available for key: ${e.key}`);return Th.parse({key:e.key,composition:t.composition,sourceFile:t.sourceLocator.sourceFile,componentName:t.sourceLocator.componentName,openingElementRange:{startLine:t.sourceLocator.openingElementRange.startLine,startColumn:t.sourceLocator.openingElementRange.startColumn,endLine:t.sourceLocator.openingElementRange.endLine,endColumn:t.sourceLocator.openingElementRange.endColumn},structuralPath:t.sourceLocator.structuralPath,textPreview:t.sourceLocator.textPreview})}function tu(e){return Array.isArray(e)?{files:e}:e}function Jh(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function Xh(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=tu(await e.listFiles({roots:zh(t),maxFiles:Cs+1,maxDepth:Rs,maxTotalBytes:ws+1})),r=new Map,o=new Set(n.truncated?.reasons),i=0;for(let a of[...n.files].sort((c,l)=>c.path.localeCompare(l.path))){let c=Fo.safeParse(a.path);if(!c.success)continue;let l=c.data;if(l.split("/").length>Rs){o.add("max-depth");continue}if(r.size>=Cs){o.add("max-files");break}if(i+a.sizeBytes>ws){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:Hh(l,a.sizeBytes,Ps(t))}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:Jh([...o]),maxFiles:Cs,maxDepth:Rs,maxTotalBytes:ws}}:{}}}function zh(e){let t=new Set(Oh);for(let n of e.routeEntryFiles??[]){let r=Fo.safeParse(n);r.success&&(r.data.startsWith("app/")||r.data.startsWith("src/app/"))&&t.add(r.data)}return[...t]}function Hh(e,t,n){return Ts(e)?{composition:n,path:e,kind:"binary",language:null,sizeBytes:t,mimeType:ru(e),readonly:!0}:{composition:n,path:e,kind:"text",language:ou(e),sizeBytes:t,readonly:!1}}function Wh(e){let t=[];for(let n of e){let r=n.path.split("/"),o=t,i="";for(let[s,a]of r.entries()){i=i?`${i}/${a}`:a;let c=s===r.length-1,l=o.find(d=>d.name===a);if(l||(l=c?{kind:"file",name:a,path:i,file:n}:{kind:"directory",name:a,path:i,children:[]},o.push(l)),c){if(l.kind!=="file")throw new Error(`Source tree path collision: ${n.path}`);l.file=n}else{if(l.kind!=="directory")throw new Error(`Source tree path collision: ${n.path}`);o=l.children}}}return nu(t)}function nu(e){return e.map(t=>t.kind==="directory"?{...t,children:nu(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function Gh(e){let t=e.find(r=>r.path.toLowerCase()==="design.md");if(t)return t.path;let n=e.find(r=>r.path==="app/page.tsx");return n?n.path:e.find(r=>r.kind==="text")?.path??e.at(0)?.path}function Ts(e){return!_h(e)}function ru(e){let t=Ns.posix.extname(e).toLowerCase();return!t&&Ns.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":Dh[t]??"application/octet-stream"}function ou(e){let t=Ns.posix.extname(e).toLowerCase();return Lh[t]??"plaintext"}import Fs from"@babel/traverse";import*as Pt from"@babel/types";function Pe(e){if(e.isJSXFragment())return!0;if(!e.isJSXElement())return!1;let t=e.node.openingElement.name;if(Pt.isJSXIdentifier(t)){let o=e.scope.getBinding(t.name);if(!o)return!1;let i=o.path;if(!i.isImportSpecifier())return!1;let s=i.node.imported;return(Pt.isIdentifier(s)&&s.name==="Fragment"||Pt.isStringLiteral(s)&&s.value==="Fragment")&&iu(i.parentPath)}if(!Pt.isJSXMemberExpression(t)||!Pt.isJSXIdentifier(t.property)||t.property.name!=="Fragment"||!Pt.isJSXIdentifier(t.object))return!1;let n=e.scope.getBinding(t.object.name);if(!n)return!1;let r=n.path;return(r.isImportDefaultSpecifier()||r.isImportNamespaceSpecifier())&&iu(r.parentPath)}function iu(e){return e?.isImportDeclaration()===!0&&e.node.source.value==="react"}var Gt=typeof Fs=="function"?Fs:Fs.default,Do=new WeakMap,Lo=new WeakMap;function At(e,t){let n=ks(e,t);if(!n.ok)return vs(e,n.diagnostic.code,n.diagnostic.message,t.kind);let r=se(n.ast,t);return r.ok?{ok:!0,match:{locatorKind:r.match.locatorKind,node:r.match.node,start:r.match.start,end:r.match.end}}:vs(e,r.diagnostic.code,r.diagnostic.message,t.kind,r.diagnostic.details)}function se(e,t){return t.kind==="jsx-node"?lu(e,t):t.kind==="jsx-attribute"?ty(e,t):t.kind==="value"?ny(e,t):t.kind==="expression"?ry(e,t):t.kind==="directive"?oy(e,t):t.kind==="export"?iy(e,t):{ok:!1,diagnostic:pn("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function lu(e,t){return t.strategy==="source-range"?Yh(e,t):Zh(e,t)}function Yh(e,t){let n=null;if(Gt(e,{JSXElement(o){if(!yn(o.node,t.sourceRange))return;let i=Oe("jsx-node",o);if(i){if(!n){n=i;return}i.end-i.start<n.end-n.start&&(n=i)}},JSXFragment(o){if(!yn(o.node,t.sourceRange))return;let i=Oe("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXExpressionContainer(o){if(!yn(o.node,t.sourceRange))return;let i=Oe("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXText(o){if(!yn(o.node,t.sourceRange))return;let i=Oe("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)}}),!n)return Me("jsx-node","locator-miss","JSX node not found for source-range locator");let r=n;return t.expectedIdentity&&!yy(r.path,t.expectedIdentity)?Me("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function Zh(e,t){if(t.structuralPath===""){let r=qh(e,t.component);if(r){let o=ey(r);if(o)return o}}let n=null;return Gt(e,{JSXElement(r){if(xr(r)!==t.component||Os(r)!==t.structuralPath)return;let i=Oe("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(xr(r)!==t.component||Os(r)!==t.structuralPath)return;let i=Oe("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=Qh(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:Me("jsx-node","locator-miss","JSX node not found for structural-path locator")}function Qh(e,t,n){let r=null;return Gt(e,{JSXElement(o){if(xr(o)!==t||!yn(o.node,n))return;let i=Oe("jsx-node",o);i&&(r=i,o.stop())},JSXFragment(o){if(xr(o)!==t||!yn(o.node,n))return;let i=Oe("jsx-node",o);i&&(r=i,o.stop())}}),r}function qh(e,t){let n=null;return Gt(e,{FunctionDeclaration(r){r.node.id?.name===t&&(n=r,r.stop())},VariableDeclarator(r){if(r.node.id.type==="Identifier"&&r.node.id.name===t){let o=r.get("init");(o.isArrowFunctionExpression()||o.isFunctionExpression())&&(n=o),r.stop()}}}),n}function ey(e){if(e.isArrowFunctionExpression()){let t=e.get("body");if(t.isBlockStatement()){let r=t.get("body").find(o=>o.isReturnStatement());if(r){let o=r.get("argument");if((o.isParenthesizedExpression()?o.get("expression"):o).isJSXFragment())return Me("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}return null}return(t.isParenthesizedExpression()?t.get("expression"):t).isJSXFragment()?Me("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target"):null}if(e.isFunctionDeclaration()||e.isFunctionExpression()){let t=e.get("body");if(t.isBlockStatement()){let n=t.get("body").find(r=>r.isReturnStatement());if(n){let r=n.get("argument");if((r.isParenthesizedExpression()?r.get("expression"):r).isJSXFragment())return Me("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}}}return null}function ty(e,t){let n=lu(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>xy(c,t.name));if(!s||!s.isJSXAttribute())return Me("jsx-attribute","locator-miss",`JSX attribute '${t.name}' not found`);let a=Oe("jsx-attribute",s);return a?{ok:!0,match:a}:Me("jsx-attribute","locator-miss",`JSX attribute '${t.name}' has no source range`)}function ny(e,t){let n=sy(e,t);if(!n.ok)return n;let r=ay(n.match.path,t.path??[]);return r.ok?t.expectedRange&&!Ut(r.match.path.node.loc,t.expectedRange)?Me("value","locator-miss","Resolved value does not match expected range"):{ok:!0,match:r.match}:r}function ry(e,t){let n=null;return Gt(e,{Identifier(r){if(!py(r))return;let o=au(r);if(!o||!cu(o,t))return;let i=Oe("expression",r);i&&(t.expectedRange&&!Ut(r.node.loc,t.expectedRange)||(n=i,r.stop()))},MemberExpression(r){let o=au(r);if(!o||!cu(o,t))return;let i=Oe("expression",r);i&&(t.expectedRange&&!Ut(r.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Me("expression","locator-miss","Expression not found")}function oy(e,t){let n=null;return Gt(e,{Program(r){let i=r.get("directives").find(a=>a.node.value.value===t.value);if(!i||t.expectedRange&&!Ut(i.node.loc,t.expectedRange))return;let s=Oe("directive",i);s&&(n=s,r.stop())}}),n?{ok:!0,match:n}:Me("directive","locator-miss",`Directive '${t.value}' not found`)}function iy(e,t){let n=null;return Gt(e,{ExportNamedDeclaration(r){if(t.exportKind==="generate-metadata"){let c=r.get("declaration");if(c.isFunctionDeclaration()&&c.node.id?.name==="generateMetadata"){let m=Oe("export",c);if(!m||t.expectedRange&&!Ut(c.node.loc,t.expectedRange))return;n=m,r.stop();return}if(!c.isVariableDeclaration())return;let l=Ms(c,"generateMetadata");if(!l||!l.isVariableDeclarator())return;let d=l.get("init");if(!d.node)return;let f=Oe("export",d);if(!f||t.expectedRange&&!Ut(d.node.loc,t.expectedRange))return;n=f,r.stop();return}let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=Ms(o,t.exportKind==="named"?t.name:"metadata");if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node||t.expectedRange&&!Ut(s.node.loc,t.expectedRange))return;let a=Oe("export",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(t.exportKind!=="default")return;let o=r.get("declaration"),i=Oe("export",o);i&&(t.expectedRange&&!Ut(o.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Me("export","export-not-found",`Export '${hy(t)}' not found`)}function sy(e,t){let n=null;return Gt(e,{Expression(r){if(n||t.root.kind!=="expression"||!yn(r.node,t.root.sourceRange))return;let o=Oe("value",r);o&&(n=o,r.stop())},VariableDeclarator(r){if(n)return;if(t.root.kind==="binding"){if(r.node.id.type!=="Identifier"||r.node.id.name!==t.root.name)return;let u=r.get("init");if(!u.node)return;let g=Oe("value",u);if(!g)return;n=g,r.stop();return}if(t.root.kind!=="hook-state")return;let o=t.root,i=r.get("id"),s=r.get("init");if(!i.isArrayPattern()||!s.isCallExpression()||i.node.elements.findIndex(u=>u?.type==="Identifier"&&u.name===o.name)!==0)return;let c=s.node.callee;if((c.type==="Identifier"?c.name:c.type==="MemberExpression"&&c.property.type==="Identifier"?c.property.name:null)!==o.hook)return;let d=o.hook==="useReducer"?1:0,f=r.get(`init.arguments.${d}`);if(!f||Array.isArray(f)||!f.node)return;let m=Oe("value",f);m&&(n=m,r.stop())},ExportNamedDeclaration(r){if(n||t.root.kind!=="named-export")return;let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=Ms(o,t.root.name);if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node)return;let a=Oe("value",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(n||t.root.kind!=="default-export")return;let o=r.get("declaration"),i=Oe("value",o);i&&(n=i,r.stop())}}),n?{ok:!0,match:n}:Me("value",t.root.kind==="named-export"||t.root.kind==="default-export"?"export-not-found":t.root.kind==="expression"?"locator-miss":"binding-not-found","Value root was not found")}function ay(e,t){let n=_s(e);for(let o of t){if(n=_s(n),o.kind==="property"){if(!n.isObjectExpression())return Me("value","unsupported-syntax","Property path requires object expression");let a=n.get("properties");if(a.some(l=>!l.isObjectProperty()))return Me("value","unsupported-syntax","Spread properties are not supported");let c=a.find(l=>by(l,o.name));if(!c||!c.isObjectProperty())return Me("value","property-not-found",`Property '${o.name}' not found`);n=c.get("value");continue}if(!n.isArrayExpression())return Me("value","unsupported-syntax","Array index path requires array expression");let i=n.get("elements");if(i.some(a=>a.node?.type==="SpreadElement"))return Me("value","unsupported-syntax","Spread array elements are not supported");let s=i[o.index];if(!s?.node)return Me("value","array-index-out-of-range",`Array index ${o.index} is out of range`);n=s}n=_s(n);let r=Oe("value",n);return r?{ok:!0,match:r}:Me("value","locator-miss","Resolved value has no source range")}function _s(e){let t=e;for(;t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression();)t=t.get("expression");return t}function Oe(e,t){let n=t.node;return n.start==null||n.end==null?null:{locatorKind:e,node:n,start:n.start,end:n.end,path:t}}function yn(e,t){return Ut(e.loc,t)}function Ut(e,t){return e?e.start.line===t.startLine&&e.start.column===t.startColumn&&e.end.line===t.endLine&&e.end.column===t.endColumn:!1}function Os(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!Pe(n)){let o=du(n.node.openingElement);o&&(/^[A-Z]/.test(o)?t.unshift(`component:${o}#${su(n,o)}`):t.unshift(`${o}#${su(n,o)}`))}}else n.isJSXFragment()&&n.node===r&&t.unshift("fragment");if(!n.parentPath||dy(n.parentPath)&&!fy(n.parentPath))break;n=n.parentPath}return t.join("/")}function su(e,t){let n=uu(e)??e.getFunctionParent();if(!n)return 0;let r=Do.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=0,i=Do.get(n.node)?.get(t);if(!i){let a=Do.get(n.node);a||(a=new Map,Do.set(n.node,a)),i=new WeakMap,a.set(t,i)}let s=n.isJSXElement()||n.isJSXFragment()?yr(n):cy(n);for(let a of s)if(du(a.node.openingElement)===t){if(i.set(a.node,o),a.node===e.node)return o;o++}return i.get(e.node)??0}function cy(e){let t=Lo.get(e.node);if(t)return t;let n=[];return e.traverse({JSXElement(r){r.getFunctionParent()?.node===e.node&&!uu(r)&&n.push(r)}}),Lo.set(e.node,n),n}function uu(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Pe(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function yr(e){let t=Lo.get(e.node);if(t)return t;let n=[],r=e.get("children");for(let o of r)if(!Array.isArray(o)){if(o.isJSXElement()){if(Pe(o)){n.push(...yr(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...yr(o));continue}o.isJSXExpressionContainer()&&n.push(...Vt(o.get("expression")))}return Lo.set(e.node,n),n}function Vt(e){if(e.isJSXElement())return Pe(e)?yr(e):[e];if(e.isJSXFragment())return yr(e);if(e.isParenthesizedExpression())return Vt(e.get("expression"));if(e.isLogicalExpression()&&ly(e.node.operator))return Vt(e.get("right"));if(e.isCallExpression()||e.isOptionalCallExpression()){let t=e.get("callee"),n=!Array.isArray(t)&&(t.isMemberExpression()||t.isOptionalMemberExpression())?t.get("property"):null;if(!Array.isArray(t)&&(t.isMemberExpression()||t.isOptionalMemberExpression())&&!t.node.computed&&n!==null&&!Array.isArray(n)&&n.isIdentifier()&&n.node.name==="map"){let r=e.get("arguments").find(o=>!Array.isArray(o)&&(o.isArrowFunctionExpression()||o.isFunctionExpression()));if(r&&!Array.isArray(r)){let o=r.get("body");if(!Array.isArray(o)){if(o.isBlockStatement()){let i=[];for(let s of o.get("body")){if(s.isVariableDeclaration())for(let a of s.get("declarations")){let c=a.get("init");(c.isJSXElement()||c.isJSXFragment())&&i.push(...Vt(c))}if(s.isReturnStatement()){let a=s.get("argument");a.isExpression()&&i.push(...Vt(a));break}}return i}else if(o.node&&o.isExpression())return Vt(o)}}}}return e.isConditionalExpression()?[...Vt(e.get("consequent")),...Vt(e.get("alternate"))]:e.isArrayExpression()?e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Vt(t)):[]}function ly(e){return e==="&&"||e==="||"||e==="??"}function du(e){return e.name.type==="JSXIdentifier"?e.name.name:e.name.type==="JSXMemberExpression"?uy(e.name):null}function uy(e){let t=[],n=e;for(;n.type==="JSXMemberExpression";)t.unshift(n.property.name),n=n.object;return t.unshift(n.name),t.join(".")}function xr(e){let t=e;for(;t;){if(t.isFunctionDeclaration())return t.node.id?.name??null;if((t.isArrowFunctionExpression()||t.isFunctionExpression())&&t.parentPath?.isVariableDeclarator()){let n=t.parentPath.node.id;return n.type==="Identifier"?n.name:null}t=t.parentPath}return null}function dy(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function fy(e){let t=e.parentPath;if(!t||!t.isCallExpression()&&!t.isOptionalCallExpression())return!1;let n=t.get("callee"),r=!Array.isArray(n)&&(n.isMemberExpression()||n.isOptionalMemberExpression())?n.get("property"):null;if(Array.isArray(n)||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.computed||r===null||Array.isArray(r)||!r.isIdentifier()||r.node.name!=="map")return!1;let o=t.get("arguments");return Array.isArray(o)?o.some(i=>!Array.isArray(i)&&i.node===e.node):!1}function py(e){return!(!e.isExpression()||e.parentPath?.isMemberExpression({property:e.node}))}function au(e){if(e.isIdentifier())return{base:e.node.name,path:[]};if(!e.isMemberExpression())return null;let t=[],n=e.node;for(;n.type==="MemberExpression";){if(n.computed)if(n.property.type==="NumericLiteral")t.unshift({kind:"index",index:n.property.value});else if(n.property.type==="StringLiteral")t.unshift({kind:"property",name:n.property.value});else return null;else if(n.property.type==="Identifier")t.unshift({kind:"property",name:n.property.name});else return null;if(n.object.type==="Identifier")return{base:n.object.name,path:t};if(n.object.type!=="MemberExpression")return null;n=n.object}return null}function cu(e,t){return e.base===t.base&&my(e.path,t.path??[])}function my(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],o=t[n];if(r.kind!==o.kind)return!1;if(r.kind==="property"){if(o.kind!=="property"||r.name!==o.name)return!1;continue}if(o.kind!=="index"||r.index!==o.index)return!1}return!0}function gy(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function hy(e){return e.exportKind==="named"?e.name:e.exportKind}function Me(e,t,n,r){return{ok:!1,diagnostic:pn(t,n,e,r)}}function yy(e,t){return xr(e)!==t.component?!1:Os(e)===t.structuralPath}function xy(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function Ms(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function by(e,t){return e.isObjectProperty()?gy(e.node)===t:!1}import*as pu from"@babel/parser";import{arrayExpression as Iy,booleanLiteral as Cy,identifier as Ry,jsxAttribute as wy,jsxExpressionContainer as Ny,jsxIdentifier as Py,nullLiteral as Ay,numericLiteral as Ty,objectExpression as Fy,objectProperty as _y,stringLiteral as Ls}from"@babel/types";import Ds from"@babel/generator";var Sy=typeof Ds=="function"?Ds:Ds.default;function Ey(e){let t=e.split(`
2
+ `),n=[],r=!1;for(let s of t){let a=s.match(/^(\s+)/);if(a){let c=a[1];c.includes(" ")?r=!0:c.length>0&&n.push(c.length)}}if(r&&t.every(a=>{let c=a.match(/^(\s+)/);return!c||c[1].includes(" ")}))return"tab";if(n.length===0)return"2";function o(s,a){return a===0?s:o(a,s%a)}let i=n[0];for(let s=1;s<n.length;s++)i=o(i,n[s]);return i>=4?"4":"2"}function vy(e,t){let n=e.match(/^(\s+)(.*)/s);if(!n)return e;let r=n[1],o=n[2];if(r.length===0)return e;let i=r.includes(" ")?r.split(" ").length-1:Math.max(1,Math.round(r.length/2)),s=Math.min(Math.max(i,0),20);return t==="tab"?" ".repeat(s)+o:t==="4"?" ".repeat(s)+o:" ".repeat(s)+o}function ky(e,t){return e.split(`
3
+ `).map(r=>vy(r,t)).join(`
4
+ `)}function Bo(e){let{ast:t,source:n}=e;try{let r=Ey(n),i=Sy(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=ky(i,r)),{ok:!0,source:i}}catch(r){return J(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}function fu(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return`0x${Math.abs(t).toString(16)}`}function br(e,t,n){return{ok:!0,source:t,operation:{type:n.kind,nodeId:n.target,kind:n.kind,target:n.target,beforeSourceHash:fu(e),afterSourceHash:fu(t),inverse:n.inverse}}}function me(e,t,n){let r=Bo({ast:e,source:t});return r.ok?br(t,r.source,n):r}function we(e,t){let n=gr(e,t);return n.ok?{ok:!0,ast:n.ast}:{ok:!1,result:{ok:!1,source:e,diagnostic:n.diagnostic}}}function $o(e,t){return Bo({ast:e,source:t})}function Oy(e,t,n){let r=se(e,t);return r.ok?{ok:!0,match:r.match}:{ok:!1,result:{ok:!1,source:n,diagnostic:r.diagnostic}}}function jo(e,t,n){let r=Oy(e,t,n);return r.ok?r.match.path.isJSXElement()?r:{ok:!1,result:J(n,"unsupported-syntax","JSX locator must resolve to JSXElement","jsx-node")}:r}function Yt(e){return typeof e=="string"?Ls(e):typeof e=="number"?Ty(e):typeof e=="boolean"?Cy(e):e===null?Ay():Array.isArray(e)?Iy(e.map(t=>Yt(t))):Fy(Object.entries(e).map(([t,n])=>{let r=_y(Bs(t),Yt(n));return t==="__proto__"&&(r.computed=!0),r}))}function My(e){return typeof e=="string"?Ls(e):Ny(Yt(e))}function Sr(e,t){return wy(Py(e),My(t))}function Vo(e,t){try{let r=pu.parse(`const __VD_NODE__ = (${t});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0];return r?.type!=="VariableDeclaration"||r.declarations[0]?.type!=="VariableDeclarator"||!r.declarations[0].init||r.declarations[0].init.type!=="JSXElement"&&r.declarations[0].init.type!=="JSXFragment"?{ok:!1,result:J(e,"unsupported-syntax","Provided JSX source does not resolve to a JSX node","jsx-node")}:{ok:!0,node:r.declarations[0].init}}catch(n){return{ok:!1,result:J(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function Bs(e){return/^[$A-Z_][0-9A-Z_$]*$/i.test(e)?Ry(e):Ls(e)}function Uo(e){let{source:t,locator:n,segmentIndex:r,newText:o}=e,i=we(t,"jsx-node");if(!i.ok)return i.result;let s=se(i.ast,n);if(!s.ok)return{ok:!1,source:t,diagnostic:s.diagnostic};let c=Dy(s.match.path)[r];if(!c)return J(t,"locator-miss",`Text segment ${r} not found`,"jsx-node");switch(c.kind){case"jsx-text":c.path.node.value=Ly(c.path.node.value,o);break;case"string-literal":c.path.node.value=o;break;case"template-literal":{let l=c.quasiIndex;c.path.node.quasis[l].value.raw=o,c.path.node.quasis[l].value.cooked=o;break}}return me(i.ast,t,{kind:"update-text",target:"jsx-node",inverse:"restore-text"})}function Dy(e){let t=[],n=e.isJSXElement()||e.isJSXFragment()?e.get("children"):[];for(let r of n){if(r.isJSXText()){r.node.value.trim().length>0&&t.push({kind:"jsx-text",path:r});continue}if(r.isJSXExpressionContainer()){let o=By(r.get("expression"));o.length>0&&t.push(...o)}}return t}function Ly(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function By(e){if(e.isStringLiteral())return[{kind:"string-literal",path:e}];if(e.isTemplateLiteral()){let t=[],n=e.node.quasis;for(let r=0;r<n.length;r++)n[r].value.raw.trim().length>0&&t.push({kind:"template-literal",path:e,quasiIndex:r});if(t.length>0)return t}return e.isCallExpression()?[]:[]}import{nullLiteral as $s}from"@babel/types";function Un(e){let{source:t,locator:n}=e,r=we(t,"jsx-node");if(!r.ok)return r.result;let o=se(r.ast,n);return o.ok?($y(o.match.path),me(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function $y(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith($s());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith($s());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith($s());return}e.remove()}import{cloneNode as jy}from"@babel/types";function Ko(e){let t=we(e.source,"jsx-node");if(!t.ok)return t.result;let n=se(t.ast,e.locator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};let r=Vo(e.source,e.node.jsx);return r.ok?(n.match.path.replaceWith(jy(r.node,!0)),me(t.ast,e.source,{kind:"replace-node",target:"jsx-node",inverse:"replace-node"})):r.result}import{cloneNode as Zy}from"@babel/types";import js from"@babel/traverse";import*as Q from"@babel/types";function Er(e,t,n){return`${e}::${t}::${n}`}var $={NODE_NOT_FOUND:"NODE_NOT_FOUND",HOME_PAGE_LOCKED:"HOME_PAGE_LOCKED",ROUTE_NOT_FOUND:"ROUTE_NOT_FOUND",CAPABILITY_REJECTED:"CAPABILITY_REJECTED",CONSTRAINT_VIOLATED:"CONSTRAINT_VIOLATED",INVALID_PARAMS:"INVALID_PARAMS",PLAN_FAILED:"PLAN_FAILED",TRANSACTION_PREFLIGHT_FAILED:"TRANSACTION_PREFLIGHT_FAILED",ROUTE_REBUILD_FAILED:"ROUTE_REBUILD_FAILED",HISTORY_COMMIT_FAILED:"HISTORY_COMMIT_FAILED",MATERIALIZATION_CONFLICT:"MATERIALIZATION_CONFLICT",MATERIALIZATION_REJECTED:"MATERIALIZATION_REJECTED",MUTATION_ASSERTION_REQUIRED:"MUTATION_ASSERTION_REQUIRED",MUTATION_ASSERTION_INVALID:"MUTATION_ASSERTION_INVALID",VERSION_STALE:"VERSION_STALE",AST_PARSE_ERROR:"AST_PARSE_ERROR",UNSUPPORTED_OPERATION:"UNSUPPORTED_OPERATION",LOCATOR_FAILED:"LOCATOR_FAILED",INVALID_TARGET:"INVALID_TARGET",WRITE_IO_ERROR:"WRITE_IO_ERROR",CONCURRENT_MODIFIED:"CONCURRENT_MODIFIED",ROLLBACK_FAILED:"ROLLBACK_FAILED",RECOVERY_REQUIRED:"RECOVERY_REQUIRED",RECOVERY_PERSIST_FAILED:"RECOVERY_PERSIST_FAILED",MUTATION_SESSION_REQUIRED:"MUTATION_SESSION_REQUIRED",LEASE_ASSERTION_INVALID:"LEASE_ASSERTION_INVALID",LEASE_ASSERTION_EXPIRED:"LEASE_ASSERTION_EXPIRED",LEASE_ASSERTION_SCOPE_MISMATCH:"LEASE_ASSERTION_SCOPE_MISMATCH",CROSS_PAGE_MOVE_UNSUPPORTED:"CROSS_PAGE_MOVE_UNSUPPORTED",INTERNAL_ERROR:"INTERNAL_ERROR"};var Vy=typeof js=="function"?js:js.default;function pt(e,t,n,r){if(!e.ok)return e;let o=ft(n,t);if(!o)return e;let i=Uy(t,o,r);return i?{...e,selectionRef:i}:e}function Uy(e,t,n){let r=Ky(e,t);if(!r)return;let o=n.sourceLocator?mu(n.sourceLocator):void 0,i=n.targetParentLocator?mu(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??Xy(r)??i?.component??o?.component;if(!(!s||!a))return{key:Er(s,a,zy(r))}}function mu(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function Ky(e,t){let n=Su(e,t);return!n||n.node.type!=="JSXElement"?null:n}function Su(e,t){let n=null;return Vy(e,{JSXElement(r){r.node===t&&(n=r,r.stop())},JSXFragment(r){r.node===t&&(n=r,r.stop())}}),n}function ft(e,t){if(!e)return null;if(Q.isJSXElement(e))return Yy(t,e)?gu(e.children,t):e;if(Q.isJSXFragment(e))return gu(e.children,t);if(Q.isJSXExpressionContainer(e)||Q.isParenthesizedExpression(e)||Q.isTSAsExpression(e)||Q.isTSSatisfiesExpression(e)||Q.isTSTypeAssertion(e)||Q.isTSNonNullExpression(e))return ft(e.expression,t);if(Q.isLogicalExpression(e))return ft(e.right,t);if(Q.isConditionalExpression(e))return ft(e.consequent,t)??ft(e.alternate,t);if(Q.isCallExpression(e)||Q.isOptionalCallExpression(e))return Eu(e)?Jy(e.arguments[0],t):null;if(Q.isArrayExpression(e))for(let n of e.elements){if(!n)continue;let r=ft(n,t);if(r)return r}return null}function gu(e,t){for(let n of e){let r=ft(n,t);if(r)return r}return null}function Jy(e,t){return!e||!Q.isArrowFunctionExpression(e)&&!Q.isFunctionExpression(e)?null:Q.isBlockStatement(e.body)?vr(e.body.body,t):ft(e.body,t)}function vr(e,t){for(let n of e){if(Q.isReturnStatement(n)){let r=ft(n.argument,t);if(r)return r;continue}if(Q.isBlockStatement(n)){let r=vr(n.body,t);if(r)return r;continue}if(Q.isIfStatement(n)){let r=hu(n.consequent,t);if(r)return r;let o=n.alternate?hu(n.alternate,t):null;if(o)return o;continue}if(Q.isSwitchStatement(n))for(let r of n.cases){let o=vr(r.consequent,t);if(o)return o}}return null}function hu(e,t){return Q.isBlockStatement(e)?vr(e.body,t):vr([e],t)}function Xy(e){let t=e;for(;t;){if(t.isFunctionDeclaration()||t.isClassDeclaration())return t.node.id?.name??null;if(t.isExportDefaultDeclaration()){let n=t.node.declaration;if(Q.isFunctionDeclaration(n))return n.id?.name??"default"}if(t.isVariableDeclarator()&&Q.isIdentifier(t.node.id)){let n=t.get("init");if(!Array.isArray(n)&&(n.isArrowFunctionExpression()||n.isFunctionExpression()))return t.node.id.name}t=t.parentPath}return null}var yu=new WeakMap,xu=new WeakMap,Vs=new WeakMap;function zy(e){let t=yu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=Hy(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return yu.set(e.node,o),o}function Hy(e){let t=vu(e.node.openingElement.name);return!t||Pe(e)?null:/^[A-Z]/.test(t)?`component:${t}#${bu(e,t)}`:`${t}#${bu(e,t)}`}function bu(e,t){let n=Wy(e);if(!n)return 0;let r=Vs.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Vs.get(n.node);o||(o=new Map,Vs.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0;for(let a of xn(n))if(vu(a.node.openingElement.name)===t){if(i.set(a.node,s),a.node===e.node)return s;s+=1}return i.get(e.node)??0}function Wy(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Pe(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function xn(e){let t=xu.get(e.node);if(t)return t;let n=[],r=e.get("children");for(let o of r)if(!Array.isArray(o)){if(o.isJSXElement()){if(Pe(o)){n.push(...xn(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...xn(o));continue}o.isJSXExpressionContainer()&&n.push(...Tt(o.get("expression")))}return xu.set(e.node,n),n}function Tt(e){if(e.isJSXElement())return Pe(e)?xn(e):[e];if(e.isJSXFragment())return xn(e);if(e.isParenthesizedExpression())return Tt(e.get("expression"));if(e.isLogicalExpression())return Tt(e.get("right"));if(e.isConditionalExpression())return[...Tt(e.get("consequent")),...Tt(e.get("alternate"))];if(e.isArrayExpression())return e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Tt(t));if((e.isCallExpression()||e.isOptionalCallExpression())&&Eu(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?Gy(n):[]}return[]}function Gy(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return Pe(t)?xn(t):[t];if(t.isJSXFragment())return xn(t);if(t.isParenthesizedExpression())return Tt(t.get("expression"));if(t.isLogicalExpression()||t.isConditionalExpression())return Tt(t);if(!t.isBlockStatement())return[];let n=[];for(let r of t.get("body")){if(r.isVariableDeclaration())for(let i of r.get("declarations")){let s=i.get("init");(s.isJSXElement()||s.isJSXFragment())&&n.push(...Tt(s))}if(!r.isReturnStatement())continue;let o=r.get("argument");return o.node&&n.push(...Tt(o)),n}return n}function Eu(e){let t=e.callee;return(Q.isMemberExpression(t)||Q.isOptionalMemberExpression(t))&&Q.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function Yy(e,t){let n=Su(e,t);return n?Pe(n):!1}function vu(e){return Q.isJSXIdentifier(e)?e.name:Q.isJSXMemberExpression(e)?ku(e):Q.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function ku(e){return`${Q.isJSXIdentifier(e.object)?e.object.name:ku(e.object)}.${e.property.name}`}function Zt(e,t){if(t.parentPath===e&&t.listKey==="children"&&Us(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!Us(n))return null;let r=n;for(;r&&r!==e;){if(!Us(r)||!Pe(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function Us(e){return e.isJSXElement()||e.isJSXFragment()}function Kn(e){let{source:t,locator:n,node:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=we(t,"jsx-node");if(!a.ok)return a.result;let c=se(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};if(!c.match.path.isJSXElement()&&!c.match.path.isJSXFragment())return J(t,"unsupported-syntax","insert-child target must be a JSXElement or JSXFragment","jsx-node");let l=c.match.path;if(c.match.path.isJSXElement()){let I=c.match.path.node;if(!I.closingElement||I.openingElement.selfClosing)return J(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let d=Vo(t,r.jsx);if(!d.ok)return d.result;let f=Zy(d.node,!0),m=l.node.children,u={...s,targetParentLocator:n},g=I=>s?pt(I,a.ast,f,u):I;if(o==="append")return m.push(f),g(me(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return m.unshift(f),g(me(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(!i)return J(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let h=se(a.ast,i);if(!h.ok)return{ok:!1,source:t,diagnostic:h.diagnostic};let b=Zt(c.match.path,h.match.path);if(!b)return J(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");l=b;let E=l.node.children,v=E.findIndex(I=>I===h.match.path.node);return v===-1?J(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?v:v+1,0,f),g(me(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"})))}import*as Iu from"@babel/parser";import{cloneNode as Qy}from"@babel/types";function Jo(e){let{source:t,locator:n,expression:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=we(t,"jsx-node");if(!a.ok)return a.result;let c=qy(t,r);if(!c.ok)return c.result;let l=se(a.ast,n);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return J(t,"unsupported-syntax","insert-jsx-expression-child target must be a JSXElement or JSXFragment","jsx-node");if(l.match.path.isJSXElement()){let E=l.match.path.node;if(!E.closingElement||E.openingElement.selfClosing)return J(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let d=l.match.path,f=null;if(i){let E=se(a.ast,i);if(!E.ok)return{ok:!1,source:t,diagnostic:E.diagnostic};let v=Zt(l.match.path,E.match.path);if(!v)return J(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");d=v,f=E.match.path.node}else if(o==="before"||o==="after")return J(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=Qy(c.node,!0),u=d.node.children,g={...s,targetParentLocator:n},h=E=>s?pt(E,a.ast,m,g):E;if(o==="append")return u.push(m),h(me(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return u.unshift(m),h(me(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));let b=u.findIndex(E=>E===f);return b===-1?J(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(u.splice(o==="before"?b:b+1,0,m),h(me(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"})))}function qy(e,t){try{let r=Iu.parse(`const __VD_EXPR__ = <>{${t}}</>;`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],o=r?.type==="VariableDeclaration"?r.declarations[0]?.init:null,i=o?.type==="JSXFragment"?o.children[0]:void 0;return i?.type!=="JSXExpressionContainer"?{ok:!1,result:J(e,"unsupported-syntax","Expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:J(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}import{cloneNode as ex,nullLiteral as Ks}from"@babel/types";import*as Qt from"@babel/types";import*as Cu from"@babel/types";function kr(e,t){let n=e.parentPath;if(!n?.isConditionalExpression()||e.key!=="consequent"||!Cu.isNullLiteral(n.node.alternate))return e;let r=n.parentPath;return!r?.isJSXExpressionContainer()||r.parentPath?.node!==t.node||r.listKey!=="children"?e:r}function Jn(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=we(t,"jsx-node");if(!a.ok)return a.result;let c=se(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};let l=se(a.ast,r);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return J(t,"unsupported-syntax","move-node target parent must be a JSXElement or JSXFragment","jsx-node");let d=l.match.path;if(l.match.path.isJSXElement()){let I=l.match.path.node;if(!I.closingElement||I.openingElement.selfClosing)return J(t,"self-closing-element","Cannot move child into self-closing element","jsx-node")}let f=null;if(i){let I=se(a.ast,i);if(!I.ok)return{ok:!1,source:t,diagnostic:I.diagnostic};let R=I.match.path.isJSXElement()?kr(I.match.path,l.match.path):I.match.path,P=Zt(l.match.path,R);if(!P)return J(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");d=P,f=R}else if(o==="before"||o==="after")return J(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=f&&typeof f.key=="number"?f.key:-1;if(f&&m===-1)return J(t,"locator-miss","Anchor node does not exist in target parent","jsx-node");let u=c.match.path.isJSXElement()?kr(c.match.path,l.match.path):c.match.path,g=ex(u.node,!0);if(!Qt.isJSXElement(g)&&!Qt.isJSXExpressionContainer(g)&&!Qt.isJSXFragment(g)&&!Qt.isJSXText(g))return J(t,"unsupported-syntax","move-node source must resolve to a JSX child","jsx-node");let h=u.parentPath?.node===d.node&&typeof u.key=="number"?u.key:-1;if(f&&u.parentPath?.node===f.parentPath?.node&&u.key===f.key)return J(t,"invalid-parent-child-relation","Cannot move a node relative to itself","jsx-node");tx(u);let b=d.node.children,E={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return b.push(g),pt($o(a.ast,t),a.ast,g,E);if(o==="prepend")return b.unshift(g),pt($o(a.ast,t),a.ast,g,E);let v=m-(h!==-1&&h<m?1:0);return b.splice(o==="before"?v:v+1,0,g),pt($o(a.ast,t),a.ast,g,E)}function tx(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Ks());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Ks());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Ks());return}e.remove()}import*as Ru from"@babel/parser";import{cloneNode as nx,nullLiteral as Js}from"@babel/types";function Xo(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,repeatExpression:s,selectionContext:a}=e,c=we(t,"jsx-node");if(!c.ok)return c.result;let l=rx(t,s);if(!l.ok)return l.result;let d=se(c.ast,n);if(!d.ok)return{ok:!1,source:t,diagnostic:d.diagnostic};let f=se(c.ast,r);if(!f.ok)return{ok:!1,source:t,diagnostic:f.diagnostic};if(!f.match.path.isJSXElement()&&!f.match.path.isJSXFragment())return J(t,"unsupported-syntax","move-repeat-template-child target parent must be a JSXElement or JSXFragment","jsx-node");if(f.match.path.isJSXElement()){let I=f.match.path.node;if(!I.closingElement||I.openingElement.selfClosing)return J(t,"self-closing-element","Cannot move repeat child into self-closing element","jsx-node")}let m=f.match.path,u=null;if(i){let I=se(c.ast,i);if(!I.ok)return{ok:!1,source:t,diagnostic:I.diagnostic};let R=Zt(f.match.path,I.match.path);if(!R)return J(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");m=R,u=I.match.path.node}else if(o==="before"||o==="after")return J(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");if(!d.match.path.isJSXElement())return J(t,"unsupported-syntax","move-repeat-template-child source must be a JSXElement","jsx-node");let g=m.node,h=nx(l.node,!0);ox(d.match.path);let b={...a,sourceLocator:n,targetParentLocator:r},E=g.children;if(o==="append")return E.push(h),pt(me(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,b);if(o==="prepend")return E.unshift(h),pt(me(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,b);let v=E.findIndex(I=>I===u);return v===-1?J(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?v:v+1,0,h),pt(me(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,b))}function rx(e,t){try{let r=Ru.parse(`const __VD_EXPR__ = <>{${t}}</>;`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],o=r?.type==="VariableDeclaration"?r.declarations[0]?.init:null,i=o?.type==="JSXFragment"?o.children[0]:void 0;return i?.type!=="JSXExpressionContainer"?{ok:!1,result:J(e,"unsupported-syntax","Repeat expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:J(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function ox(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Js());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Js());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Js());return}e.remove()}import{SiteEditSetPropsParamsSchema as ix,classifySiteEditPropertyName as sx}from"@vcp-dev/contracts";import*as Xn from"@babel/types";function zo(e){let t=ix.safeParse({kind:"set-props",scope:"selection",changes:e.changes});if(!t.success)return J(e.source,"unsupported-syntax","Invalid typed JSX property changes","jsx-node",{issues:t.error.issues});let n=we(e.source,"jsx-node");if(!n.ok)return n.result;let r=jo(n.ast,e.locator,e.source);if(!r.ok)return r.result;for(let a of t.data.changes){let c=sx(a.name);if(c.owner!=="generic")return J(e.source,"unsupported-syntax",c.diagnostic?.message??`Property '${a.name}' is not owned by the generic JSX primitive`,"jsx-node")}let o=r.match.path.node.openingElement,i=o.attributes.filter(Xn.isJSXAttribute),s=new Map;for(let a of i){let c=ax(a);if(!c)continue;let l=s.get(c)??[];l.push(a),s.set(c,l)}for(let a of t.data.changes)if((s.get(a.name)??[]).length>1)return J(e.source,"unsupported-syntax",`JSX attribute '${a.name}' has multiple sources`,"jsx-node");for(let a of t.data.changes){let c=s.get(a.name)?.[0];if(a.operation==="remove"){c&&(o.attributes=o.attributes.filter(d=>d!==c));continue}let l=Sr(a.name,a.value).value;c?c.value=l:o.attributes.push(Sr(a.name,a.value))}return me(n.ast,e.source,{kind:"set-props",target:"jsx-node",inverse:"set-props"})}function ax(e){return Xn.isJSXIdentifier(e.name)?e.name.name:Xn.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import*as $e from"@babel/types";import{classifySiteEditPropertyName as wu}from"@vcp-dev/contracts";function Ho(e){let t=wu(e.name),n=wu(e.property);if(t.owner!=="generic"||n.owner!=="generic")return J(e.source,"unsupported-syntax","Property binding is only available for generic properties","jsx-node");if(!Nu(e.object))return J(e.source,"unsupported-syntax","Property binding object must be a single identifier","jsx-node");if(e.property.length===0)return J(e.source,"unsupported-syntax","Property binding requires a non-empty property name","jsx-node");let r=we(e.source,"jsx-node");if(!r.ok)return r.result;let o=jo(r.ast,e.locator,e.source);if(!o.ok)return o.result;let i=o.match.path.node.openingElement,s=i.attributes.filter(l=>$e.isJSXAttribute(l)&&lx(l)===e.name);if(s.length>1)return J(e.source,"unsupported-syntax",`JSX attribute '${e.name}' has multiple sources`,"jsx-node");let a=cx(e.object,e.property),c=s[0];if(c)c.value=$e.jsxExpressionContainer(a);else{let l=Sr(e.name,"");l.value=$e.jsxExpressionContainer(a),i.attributes.push(l)}return me(r.ast,e.source,{kind:"set-property-binding",target:"jsx-node",inverse:"restore-property-binding"})}function cx(e,t){return Nu(t)?$e.memberExpression($e.identifier(e),$e.identifier(t)):$e.memberExpression($e.identifier(e),$e.stringLiteral(t),!0)}function Nu(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)}function lx(e){return $e.isJSXIdentifier(e.name)?e.name.name:$e.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import{getBindingIdentifiers as dx,identifier as Ir,importDeclaration as fx,importDefaultSpecifier as px,importNamespaceSpecifier as mx,importSpecifier as gx,isImportDefaultSpecifier as Pu,isImportNamespaceSpecifier as Au,isImportSpecifier as Tu,stringLiteral as hx}from"@babel/types";function zn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(b=>!Cx(b));if(o!==-1){let b=r[o],E=b&&typeof b=="object"&&"kind"in b?b.kind:void 0;return J(t,"unsupported-syntax",`Unsupported import spec kind: ${String(E)}`)}let i=vx(r);if(!i.ok)return J(t,"unsupported-syntax",i.message);let s=we(t);if(!s.ok)return s.result;let{ast:a}=s,c=a.program,l=c.body.filter(b=>b.type==="ImportDeclaration"&&b.source.value===n),d=new Set(l.flatMap(b=>b.specifiers.flatMap(E=>{let v=Rx(b,E);return v?[v]:[]}))),f=i.imports.filter(b=>!d.has(Lu(b)));if(f.length===0)return br(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let m=kx(c.body),u=f.find(b=>m.has(Xs(b)));if(u)return J(t,"unsupported-syntax",`Import local binding already exists: ${Xs(u)}`);let g=Ex(f);if(g.reduce((b,E)=>b+E.length,0)!==f.length)return J(t,"unsupported-syntax","Unsupported import specifier grouping");for(let b of g){if(!Mu(_u(b)))return J(t,"unsupported-syntax","Unsupported import specifier combination");let E=l.find(v=>yx(v,b));if(E)xx(E,b);else{let v=fx(Fu(b),hx(n));Ix(c.body,v),l.push(v)}}return me(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function yx(e,t){return e.importKind==="type"?!1:Mu(Sx(bx(e),_u(t)))}function xx(e,t){let n=!1,r=new Set(e.specifiers.map(o=>zs(o)));for(let o of Fu(t)){let i=zs(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return Du(e.specifiers),{changed:n}}function Fu(e){let t=e.map(n=>{switch(n.kind){case"named":return gx(n.local?Ir(n.local):Ir(n.imported),Ir(n.imported));case"default":return px(Ir(n.local));case"namespace":return mx(Ir(n.local));default:return n}});return Du(t),t}function _u(e){let t=Ou();for(let n of e)n.kind==="default"?t.defaultLocals.add(n.local):n.kind==="named"?t.hasNamed=!0:t.namespaceLocals.add(n.local);return t}function bx(e){let t=Ou();for(let n of e.specifiers)Pu(n)?t.defaultLocals.add(n.local.name):Au(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function Ou(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function Sx(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function Mu(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function Du(e){let t=[...e.filter(n=>Pu(n)),...e.filter(n=>Au(n)),...e.filter(n=>Tu(n))];e.splice(0,e.length,...t)}function Ex(e){let t=e.filter(i=>i.kind==="default"),n=e.filter(i=>i.kind==="namespace"),r=e.filter(i=>i.kind==="named"),o=[];if(n.length>0){let i=Math.max(t.length,n.length);for(let s=0;s<i;s+=1){let a=[],c=t[s],l=n[s];c&&a.push(c),l&&a.push(l),o.push(a)}return r.length>0&&o.push(r),o}if(t.length>0){o.push([t[0],...r]);for(let i of t.slice(1))o.push([i])}else r.length>0&&o.push(r);return o}function vx(e){let t=new Map,n=new Map;for(let r of e){let o=Lu(r);if(t.has(o))continue;let i=Xs(r),s=n.get(i);if(s&&s!==o)return{ok:!1,message:`Import local binding is requested more than once: ${i}`};t.set(o,r),n.set(i,o)}return{ok:!0,imports:[...t.values()]}}function kx(e){let t=new Set;for(let n of e){if(n.type==="ImportDeclaration"){for(let o of n.specifiers)t.add(o.local.name);continue}let r=(n.type==="ExportNamedDeclaration"||n.type==="ExportDefaultDeclaration")&&n.declaration?n.declaration:n;if(r.type==="VariableDeclaration")for(let o of r.declarations)for(let i of Object.keys(dx(o.id)))t.add(i);else(r.type==="FunctionDeclaration"||r.type==="ClassDeclaration"||r.type==="TSEnumDeclaration")&&r.id&&t.add(r.id.name)}return t}function Ix(e,t){let n=[...e].reverse().findIndex(r=>r.type==="ImportDeclaration");if(n===-1)e.unshift(t);else{let r=e.length-n;e.splice(r,0,t)}}function Cx(e){if(!e||typeof e!="object"||!("kind"in e))return!1;let t=e.kind;return t==="named"?typeof e.imported=="string"&&(e.local===void 0||typeof e.local=="string"):t==="default"||t==="namespace"?typeof e.local=="string":!1}function Lu(e){switch(e.kind){case"default":return`default:${e.local}`;case"namespace":return`namespace:${e.local}`;case"named":return`named:${e.imported}:${e.local??e.imported}`;default:return e}}function Xs(e){return e.kind==="named"?e.local??e.imported:e.local}function Rx(e,t){return e.importKind==="type"||Tu(t)&&t.importKind==="type"?null:zs(t)}function zs(e){if(e.type==="ImportDefaultSpecifier")return`default:${e.local.name}`;if(e.type==="ImportNamespaceSpecifier")return`namespace:${e.local.name}`;let t=e.imported.type==="Identifier"?e.imported.name:e.imported.value,n=e.local.name;return`named:${t}:${n}`}function Hn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(d=>!Nx(d));if(o!==-1){let d=r[o],f=d&&typeof d=="object"&&"kind"in d?d.kind:void 0;return J(t,"unsupported-syntax",`Unsupported remove import spec kind: ${String(f)}`)}let i=we(t);if(!i.ok)return i.result;let{ast:s}=i,a=s.program,c=a.body.findIndex(d=>d.type==="ImportDeclaration"&&d.source.value===n);if(c===-1)return br(t,t,{kind:"remove-import",target:"import",inverse:"add-import"});let l=a.body[c];return r.length===0?(a.body.splice(c,1),me(s,t,{kind:"remove-import",target:"import",inverse:"add-import"})):(l.specifiers=l.specifiers.filter(d=>!r.some(f=>wx(d,f))),l.specifiers.length===0&&a.body.splice(c,1),me(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function wx(e,t){return t.kind==="default"?e.type==="ImportDefaultSpecifier":t.kind==="namespace"?e.type==="ImportNamespaceSpecifier":e.type!=="ImportSpecifier"?!1:(e.imported.type==="Identifier"?e.imported.name:e.imported.value)===t.imported}function Nx(e){if(!e||typeof e!="object"||!("kind"in e))return!1;let t=e.kind;return t==="named"?typeof e.imported=="string":t==="default"||t==="namespace"}function Cr(e){let{source:t,locator:n,next:r}=e,o=Zo(t,n);return o.ok?(o.path.replaceWith(Yt(r)),me(o.ast,t,{kind:"update-value",target:"value",inverse:"restore-value"})):o.result}function Wo(e){let{source:t,locator:n,index:r,value:o}=e,i=Zo(t,n);return i.ok?i.path.isArrayExpression()?i.path.node.elements.some(s=>s?.type==="SpreadElement")?J(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>i.path.node.elements.length?J(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(i.path.node.elements.splice(r,0,Yt(o)),me(i.ast,t,{kind:"insert-array-element",target:"value",inverse:"remove-array-element"})):J(t,"unsupported-syntax","Array operations require array expression target","value"):i.result}function Go(e){let{source:t,locator:n,index:r}=e,o=Zo(t,n);return o.ok?o.path.isArrayExpression()?o.path.node.elements.some(i=>i?.type==="SpreadElement")?J(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>=o.path.node.elements.length?J(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(o.path.node.elements.splice(r,1),me(o.ast,t,{kind:"remove-array-element",target:"value",inverse:"insert-array-element"})):J(t,"unsupported-syntax","Array operations require array expression target","value"):o.result}function Yo(e){let{source:t,locator:n,fromIndex:r,toIndex:o}=e,i=Zo(t,n);if(!i.ok)return i.result;if(!i.path.isArrayExpression())return J(t,"unsupported-syntax","Array operations require array expression target","value");if(i.path.node.elements.some(c=>c?.type==="SpreadElement"))return J(t,"unsupported-syntax","Spread array elements are not supported","value");if(r<0||r>=i.path.node.elements.length||o<0||o>i.path.node.elements.length)return J(t,"array-index-out-of-range","Array move indices are out of range","value");let[s]=i.path.node.elements.splice(r,1),a=Math.min(o,i.path.node.elements.length);return i.path.node.elements.splice(a,0,s),me(i.ast,t,{kind:"move-array-element",target:"value",inverse:"move-array-element-back"})}function Zo(e,t){let n=we(e,"value");if(!n.ok)return{ok:!1,result:n.result};let r=se(n.ast,t);return r.ok?{ok:!0,ast:n.ast,path:r.match.path}:{ok:!1,result:{ok:!1,source:e,diagnostic:r.diagnostic}}}import*as Ue from"@babel/types";function Qo(e){let t=we(e.source,"value");if(!t.ok)return t.result;let n=se(t.ast,e.objectLocator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};if(!n.match.path.isObjectExpression())return J(e.source,"unsupported-syntax","Object property upsert requires an ObjectExpression parent","value");let r=n.match.path.node;if(r.properties.some(a=>Ue.isSpreadElement(a)||Ue.isObjectProperty(a)&&a.computed))return J(e.source,"unsupported-syntax","Object property upsert does not support spreads or computed keys","value");let o=r.properties.filter(a=>Ue.isObjectProperty(a)&&Px(a.key)===e.name);if(o.length>1)return J(e.source,"unsupported-syntax",`Object property '${e.name}' has multiple sources`,"value");let i=e.value.kind==="undefined"?Ue.unaryExpression("void",Ue.numericLiteral(0)):Yt(e.value.value),s=o[0];if(s)s.value=i,s.shorthand=!1;else{let a=Ue.objectProperty(Bs(e.name),i);e.name==="__proto__"&&(a.computed=!0),r.properties.push(a)}return me(t.ast,e.source,{kind:"upsert-object-property",target:"value",inverse:"restore-object-property"})}function Px(e){return Ue.isIdentifier(e)?e.name:Ue.isStringLiteral(e)?e.value:Ue.isNumericLiteral(e)?String(e.value):null}import{isSiteEditRuntimeContainerTag as Ax,isSiteEditRuntimeVoidElementTag as Tx}from"@vcp-dev/contracts/site-edit-runtime-capability";function Wn(e){if(!e.composition)throw new Error("Composition unavailable for render source graph.");return e.composition}function Fx(e,t,n){let r=Wn(n),o=t.nodes.get(e),i=n.elements.get(e);if(!o||!i)return{composition:r,key:e,canUpdateText:!1,canInsertChild:!1,canMove:!1,canRemove:!1,constraints:[{kind:"opaque-region",message:"Node not found in graph"}]};let s=o.constraints.map(R=>({kind:R.kind,message:R.reason})),a=i.isOpaque,l=o.parentKey===null&&i.componentName==="Page",d=i.tag.toLowerCase(),f=i.tag!==d,m=!f&&Tx(d),u=f||Ax(d),g=f&&i.childKeys.length>0&&!i.isPublicUiComponent,h=i.textSegments.length>0&&i.textSegments.some(R=>R.editable);m&&!s.some(R=>R.kind==="void-element")&&s.push({kind:"void-element",message:`Element '${i.tag}' is void: children cannot be inserted`}),!m&&!u&&!s.some(R=>R.kind==="void-element")&&s.push({kind:"void-element",message:`Element '${i.tag}' cannot contain structured children`});let b=h&&(!a||i.importedFrom==="next/link"),E=!i.isPublicUiComponent&&!m&&u&&(!a||g);return{composition:r,key:e,canUpdateText:b,canInsertChild:E,canMove:!l,canRemove:!l,constraints:s}}function Bu(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,Fx(r,e,t));return n}function Hs(e){let t=e.route.graph.elements.get(e.key);if(!t)return{key:e.key,composition:e.route.composition,filePath:"",componentName:"",sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:ve(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Key not found: ${e.key}`}]};let n=_x(e.route.source,t);if(!n)return{key:e.key,composition:e.route.composition,filePath:t.sourceFile,componentName:t.componentName,sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:ve(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Unable to locate JSX element for key ${t.identity.key}`}]};let r=n.openingElement,o=r.attributes.find(c=>c.type==="JSXAttribute"&&c.name.type==="JSXIdentifier"&&c.name.name==="className"),i={key:e.key,composition:e.route.composition,filePath:t.sourceFile,componentName:t.componentName,openingElementRange:ju(r),version:{documentVersion:e.route.graph.version,contentHash:ve(e.route.source)}};if(!o)return{...i,sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,diagnostics:[{code:"missing-class-name",message:"No className attribute is present on this element."}]};let s=o.value,a=s?.type==="StringLiteral"?"stringLiteral":"expression";return{...i,sourceKind:a,attrRaw:$u(e.route.source,o),valueRaw:s?$u(e.route.source,s):null,attrRange:ju(o),diagnostics:[]}}function Vu(e){let{source:t,oldAttrRange:n,openingElementRange:r,newAttrRaw:o}=e;if(n){let a=n.start>0&&/\s/.test(t[n.start-1]??"")?n.start-1:n.start,c=o?`${a<n.start?" ":""}${o}`:"";return t.slice(0,a)+c+t.slice(n.end)}if(!o)return t;let i=r.end,s=t.slice(Math.max(0,i-2),i)==="/>"?i-2:i-1;return t.slice(0,s)+` ${o}`+t.slice(s)}function _x(e,t){let n=Nt({source:e,profile:mn({filePath:t.sourceFile,source:e})});if(!n.ok)return null;let r=se(n.ast,{kind:"jsx-node",strategy:"structural-path",file:t.identity.file,component:t.identity.component,structuralPath:t.identity.structuralPath,expectedRange:Ox(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function Uu(e){let t=Nt({source:`const __v = <div ${e} />;`,profile:"tsx-module"});if(!t.ok)return!1;let n=t.ast.program.body[0],o=(n?.type==="VariableDeclaration"?n.declarations[0]:null)?.init;if(o?.type!=="JSXElement")return!1;let i=o.openingElement.attributes;return i.length===1&&i[0]?.type==="JSXAttribute"&&i[0].name.type==="JSXIdentifier"&&i[0].name.name==="className"}function $u(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function ju(e){if(e.start==null||e.end==null)throw new Error("AST node does not include offsets.");return{start:e.start,end:e.end}}function Ox(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function Ku(){let e=new Set;return{emit(t){for(let n of Array.from(e))try{n(t)}catch{}},subscribe(t){return e.add(t),()=>{e.delete(t)}}}}import{randomUUID as Mx}from"node:crypto";import qo from"node:fs/promises";import Ws from"node:path";import{setTimeout as Dx}from"node:timers/promises";var Lx={async mkdir(e,t){await qo.mkdir(e,t)},async writeFile(e,t,n){await qo.writeFile(e,t,n)},async rename(e,t){await qo.rename(e,t)},async rm(e,t){await qo.rm(e,t)}},Bx=new Set(["EACCES","EBUSY","EPERM"]),$x=[10,20,40,80,160];async function jx(e,t,n){for(let r of $x)try{await e.rename(t,n);return}catch(o){if(!Vx(o))throw o;await Dx(r)}await e.rename(t,n)}function Vx(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&Bx.has(e.code)}async function ei(e,t,n=Lx){let r=Ws.dirname(e),o=Ws.basename(e),i=Ws.join(r,`.${o}.${process.pid}.${Mx()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await jx(n,i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import Ys from"@babel/traverse";import*as S from"@babel/types";import*as ue from"@babel/types";function Ft(e,t={}){if(ue.isTSAsExpression(e)||ue.isTSSatisfiesExpression(e)||ue.isTSNonNullExpression(e)||ue.isTypeCastExpression(e)||ue.isParenthesizedExpression(e))return Ft(e.expression,t);if(ue.isStringLiteral(e))return{status:"resolved",value:e.value};if(ue.isNumericLiteral(e))return Number.isFinite(e.value)?{status:"resolved",value:e.value}:{status:"unresolved"};if(ue.isBooleanLiteral(e))return{status:"resolved",value:e.value};if(ue.isNullLiteral(e))return{status:"resolved",value:null};if(ue.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?{status:"resolved",value:e.quasis[0].value.cooked??e.quasis[0].value.raw}:{status:"unresolved"};if(ue.isIdentifier(e))return e.name==="undefined"&&!t.resolveIdentifier?{status:"undefined"}:t.resolveIdentifier?.(e.name)??{status:"unresolved"};if(ue.isUnaryExpression(e)&&e.operator==="void"&&ue.isNumericLiteral(e.argument)&&e.argument.value===0)return{status:"undefined"};if(ue.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||ue.isSpreadElement(r))return{status:"unresolved"};let o=Ft(r,t);if(o.status!=="resolved")return{status:"unresolved"};n.push(o.value)}return{status:"resolved",value:n}}if(ue.isObjectExpression(e)){let n=Object.create(null);for(let r of e.properties){if(!ue.isObjectProperty(r)||r.computed||!ue.isExpression(r.value))return{status:"unresolved"};let o=Ux(r.key);if(o===null)return{status:"unresolved"};let i=Ft(r.value,t);if(i.status!=="resolved")return{status:"unresolved"};Object.defineProperty(n,o,{configurable:!0,enumerable:!0,value:i.value,writable:!0})}return{status:"resolved",value:n}}return ue.isMemberExpression(e)||ue.isOptionalMemberExpression(e)?t.resolveMember?.(e)??{status:"unresolved"}:{status:"unresolved"}}function Ux(e){return ue.isIdentifier(e)?e.name:ue.isStringLiteral(e)?e.value:ue.isNumericLiteral(e)?String(e.value):null}var ti="components/ui";function bn(e){if(!e)return!1;let t=Gs(e);return t===ti||t.startsWith(`${ti}/`)||t.includes(`/${ti}/`)||t.endsWith(`/${ti}`)}function Rr(e,t){return e?e.startsWith("@/")||e.startsWith("~/")?bn(e.slice(2)):e.startsWith("./")||e.startsWith("../")?bn(Gs(`${Kx(t)}/${e}`)):bn(e):!1}function Gs(e){let n=(e.split("?")[0]??e).replace(/\\/g,"/").replace(/^\.\//,""),r=[];for(let o of n.split("/"))if(!(!o||o===".")){if(o===".."){r.pop();continue}r.push(o)}return r.join("/")}function Kx(e){let t=Gs(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}var Jx=typeof Ys=="function"?Ys:Ys.default;function Xe(e){return{startLine:e.loc?.start.line??0,startColumn:e.loc?.start.column??0,endLine:e.loc?.end.line??0,endColumn:e.loc?.end.column??0}}function Xx(e){return/^[A-Z]/.test(e)}function ta(e){let t=e.openingElement;return S.isJSXIdentifier(t.name)?t.name.name==="Fragment":S.isJSXMemberExpression(t.name)?t.name.property.name==="Fragment":!1}function Yn(e){return S.isJSXFragment(e)}function Xu(e){return S.isJSXIdentifier(e.name)?e.name.name:S.isJSXMemberExpression(e.name)?zu(e.name):S.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function zu(e){return S.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:S.isJSXMemberExpression(e.object)?`${zu(e.object)}.${e.property.name}`:e.property.name}function zx(e){return e.split(".")[0]??e}function Hx(e){let t=e;for(;t;){let n=t.node;if(S.isFunctionDeclaration(n)&&n.id||S.isVariableDeclarator(n)&&S.isIdentifier(n.id))return n.id.name;if(S.isExportDefaultDeclaration(n)){let r=n.declaration;if(S.isFunctionDeclaration(r)&&r.id)return r.id.name;if(S.isFunctionDeclaration(r)&&!r.id)return"default"}t=t.parentPath}return null}function Wx(){let e=new Map;return{getOrdinal(t,n){let r=t??"__root__";e.has(r)||e.set(r,new Map);let o=e.get(r),i=o.get(n)??0;return o.set(n,i+1),i}}}function Gx(e){let t=new Map;for(let n of e.program.body){if(!S.isImportDeclaration(n))continue;let r=n.source.value;for(let o of n.specifiers)if(S.isImportDefaultSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"default"});else if(S.isImportNamespaceSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"*"});else if(S.isImportSpecifier(o)){let i=S.isIdentifier(o.imported)?o.imported.name:o.imported.value;t.set(o.local.name,{specifier:r,exportName:i})}}return t}function Kt(e,t=[]){if(S.isIdentifier(e))return t.push(e.name),t;if(S.isObjectPattern(e)){for(let n of e.properties)S.isObjectProperty(n)?Kt(n.value,t):S.isRestElement(n)&&Kt(n.argument,t);return t}if(S.isArrayPattern(e)){for(let n of e.elements)n&&(S.isRestElement(n)?Kt(n.argument,t):Kt(n,t));return t}return S.isAssignmentPattern(e)?(Kt(e.left,t),t):(S.isRestElement(e)&&Kt(e.argument,t),t)}function St(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function wr(e,t){for(let n=t.length-1;n>=0;n-=1){let r=t[n].get(e);if(r)return r.resolved?{kind:"resolved",value:r.value}:{kind:"unresolved"}}return{kind:"unresolved"}}function Yx(e,t,n){e.set(t,{resolved:!0,value:n})}function na(e,t){e.set(t,{resolved:!1})}function Hu(e,t){let n=e;for(let r of t){if(r.kind==="property"){if(n==null||Array.isArray(n)||typeof n!="object"||!(r.name in n))return{kind:"known-empty"};n=n[r.name];continue}if(!Array.isArray(n)||r.index<0||r.index>=n.length)return{kind:"known-empty"};n=n[r.index]}return{kind:"resolved",value:n}}function Le(e,t,n){if(S.isTSAsExpression(e)||S.isTSSatisfiesExpression(e)||S.isTSNonNullExpression(e)||S.isTypeCastExpression(e)||S.isParenthesizedExpression(e))return Le(e.expression,t,n);if(S.isLogicalExpression(e))return ni([Le(e.left,t,n),Le(e.right,t,n)]);if(S.isBinaryExpression(e))return ni([S.isExpression(e.left)?Le(e.left,t,n):null,S.isExpression(e.right)?Le(e.right,t,n):null]);if(S.isConditionalExpression(e))return ni([Le(e.consequent,t,n),Le(e.alternate,t,n)]);if(S.isTemplateLiteral(e))return ni(e.expressions.filter(S.isExpression).map(i=>Le(i,t,n)));if(S.isIdentifier(e))return{kind:"identifier",expression:e.name,base:e.name,path:[]};if(!S.isMemberExpression(e)&&!S.isOptionalMemberExpression(e))return null;let r=[],o=e;for(;S.isMemberExpression(o)||S.isOptionalMemberExpression(o);){if(o.computed)if(S.isNumericLiteral(o.property))r.unshift({kind:"index",index:o.property.value});else if(S.isStringLiteral(o.property))r.unshift({kind:"property",name:o.property.value});else if(n&&S.isExpression(o.property)){let i=qt(o.property,n);if(typeof i=="string")r.unshift({kind:"property",name:i});else if(Number.isInteger(i))r.unshift({kind:"index",index:i});else return null}else return null;else{if(!S.isIdentifier(o.property))return null;r.unshift({kind:"property",name:o.property.name})}o=o.object}return S.isIdentifier(o)?{kind:r.some(i=>i.kind==="index")?"index-expression":"member-expression",expression:St(e,t),base:o.name,path:r}:null}function ni(e){let t=e.filter(r=>r!==null);if(t.length===0)return null;let n=t[0];return t.some(r=>r.base!==n.base||JSON.stringify(r.path)!==JSON.stringify(n.path))?null:{...n}}function qt(e,t){if(S.isStringLiteral(e)||S.isNumericLiteral(e)||S.isBooleanLiteral(e))return e.value;if(S.isNullLiteral(e))return null;if(S.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(S.isIdentifier(e)){let n=wr(e.name,t.valueScopes);return n.kind==="resolved"?n.value:void 0}if(S.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||S.isSpreadElement(r))return;let o=qt(r,t);if(o===void 0)return;n.push(o)}return n}if(S.isObjectExpression(e)){let n={};for(let r of e.properties){if(!S.isObjectProperty(r)||r.computed||!S.isExpression(r.value))return;let o=null;if(S.isIdentifier(r.key)?o=r.key.name:S.isStringLiteral(r.key)&&(o=r.key.value),!o)return;let i;if(r.shorthand){if(!S.isIdentifier(r.value))return;let s=wr(r.value.name,t.valueScopes);if(s.kind!=="resolved")return;i=s.value}else i=qt(r.value,t);if(i===void 0)return;n[o]=i}return n}if(S.isMemberExpression(e)){let n=Le(e,"",t);if(!n)return;let r=wr(n.base,t.valueScopes);if(r.kind!=="resolved")return;let o=Hu(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(S.isCallExpression(e))return Gu(e,t)??void 0}function Wu(e,t,n){let r=Le(e,n,t);if(!r)return S.isMemberExpression(e)||S.isBinaryExpression(e)||S.isLogicalExpression(e)||S.isConditionalExpression(e)||S.isCallExpression(e)?{value:St(e,n),source:null}:null;let o=wr(r.base,t.valueScopes),i=r.kind==="identifier"?o:o.kind==="resolved"?Hu(o.value,r.path):o;return i.kind==="resolved"&&(typeof i.value=="string"||typeof i.value=="number")?{value:String(i.value),source:r}:i.kind==="resolved"&&(typeof i.value=="boolean"||i.value===null)||i.kind==="known-empty"?null:{value:r.expression,source:r}}function Zs(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:Wx(),parentStack:[],valueScopes:i,importMap:o}}function qs(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of Kt(o.id))na(n,s);if(!S.isIdentifier(o.id)||!o.init||!S.isExpression(o.init))continue;let i=qt(o.init,t);i!==void 0&&Yx(n,o.id.name,i)}}function Zx(e){let t=[];for(let n of e){if(S.isVariableDeclaration(n)){t.push(n);continue}S.isExportNamedDeclaration(n)&&n.declaration&&S.isVariableDeclaration(n.declaration)&&t.push(n.declaration)}return t}function Qx(e,t,n){let r=[],o=0;for(let i of e)if(S.isJSXText(i)){let s=i.value.trim();s&&r.push({index:o++,value:s,sourceRange:Xe(i),editable:!0,source:null})}else if(S.isJSXExpressionContainer(i)&&S.isStringLiteral(i.expression))r.push({index:o++,value:i.expression.value,sourceRange:Xe(i),editable:!0,source:null});else if(S.isJSXExpressionContainer(i)&&S.isTemplateLiteral(i.expression)){let s=i.expression;s.expressions.length===0&&s.quasis.length===1?r.push({index:o++,value:s.quasis[0].value.cooked??s.quasis[0].value.raw,sourceRange:Xe(i),editable:!0,source:null}):r.push({index:o++,value:St(s,n),sourceRange:Xe(i),editable:!0,source:Le(s,n,t)})}else if(S.isJSXExpressionContainer(i)&&S.isExpression(i.expression)){let s=Wu(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:Xe(i),editable:!0,source:s.source})}return r}function qx(e,t,n){let r=[];for(let[o,i]of e.attributes.entries()){if(!S.isJSXAttribute(i))continue;let s=tb(i.name);if(!s)continue;let a=St(i,n);if(S.isStringLiteral(i.value)){r.push({name:s,value:i.value.value,sourceRange:Xe(i),source:null,syntaxKind:"literal",raw:a,order:o,resolution:{status:"resolved",value:i.value.value}});continue}if(i.value===null){r.push({name:s,value:"true",sourceRange:Xe(i),source:null,syntaxKind:"boolean-shorthand",raw:a,order:o,resolution:{status:"resolved",value:!0},resolvedValue:!0});continue}if(S.isJSXExpressionContainer(i.value)&&S.isExpression(i.value.expression)){let c=qt(i.value.expression,t);if(s==="className"){let u=typeof c=="string"?c:c===void 0?Gu(i.value.expression,t):null;if(u){r.push({name:s,value:u,sourceRange:Xe(i),source:null,resolvedValue:u,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:u}});continue}}let l=Wu(i.value.expression,t,n);if(c!==void 0){r.push({name:s,value:cb(c),sourceRange:Xe(i),source:Le(i.value.expression,n,t),resolvedValue:c,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:c}});continue}let d=nb(i.value.expression,t),f=Le(i.value.expression,n,t),m=l?.value??St(i.value.expression,n);r.push({name:s,value:d.status==="undefined"?"undefined":m,sourceRange:Xe(i),source:l?.source??f,syntaxKind:"expression",raw:a,order:o,resolution:d})}}return r}function eb(e,t,n){return e.attributes.flatMap((r,o)=>!S.isJSXSpreadAttribute(r)||!S.isExpression(r.argument)?[]:[{raw:St(r.argument,n),sourceRange:Xe(r),order:o,source:Le(r.argument,n,t)}])}function tb(e){return S.isJSXIdentifier(e)?e.name:S.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function nb(e,t){return Ft(e,{resolveIdentifier(n){let r=wr(n,t.valueScopes);return r.kind==="resolved"?{status:"resolved",value:r.value}:n==="undefined"&&!t.valueScopes.some(o=>o.has(n))?{status:"undefined"}:{status:"unresolved"}},resolveMember(n){let r=qt(n,t);return r===void 0?{status:"unresolved"}:{status:"resolved",value:r}}})}function Gu(e,t){let n=Gn(e,t);return n&&n.map(o=>o.trim()).filter(Boolean).join(" ")||null}function Gn(e,t){if(S.isStringLiteral(e))return[e.value];if(S.isTemplateLiteral(e))return e.expressions.length>0?null:[e.quasis.map(n=>n.value.cooked??"").join("")];if(S.isNullLiteral(e))return[];if(S.isBooleanLiteral(e))return e.value?null:[];if(S.isIdentifier(e)||S.isMemberExpression(e)){if(S.isIdentifier(e)&&e.name==="undefined")return[];let n=qt(e,t);return typeof n=="string"?[n]:null}if(S.isConditionalExpression(e)){let n=Gn(e.consequent,t),r=Gn(e.alternate,t);return!n||!r?null:[...n,...r]}if(S.isLogicalExpression(e)){if(e.operator!=="&&")return null;let n=qt(e.left,t);return n===!1||n===null?[]:Gn(e.right,t)}if(S.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||S.isSpreadElement(r))return null;let o=Gn(r,t);if(!o)return null;n.push(...o)}return n}if(S.isObjectExpression(e)){let n=[];for(let r of e.properties){if(!S.isObjectProperty(r))return null;let o=ob(r.key);if(!o)return null;n.push(o)}return n}if(S.isCallExpression(e)){let n=rb(e.callee);if(!n||!["cn","clsx","twMerge"].includes(n))return null;let r=[];for(let o of e.arguments){if(!S.isExpression(o))return null;let i=Gn(o,t);if(!i)return null;r.push(...i)}return r}return null}function rb(e){return S.isIdentifier(e)?e.name:S.isMemberExpression(e)&&S.isIdentifier(e.property)?e.property.name:null}function ob(e){return S.isIdentifier(e)?e.name:S.isStringLiteral(e)?e.value:null}function ib(e,t){let n=e.attributes.find(r=>S.isJSXAttribute(r)&&S.isJSXIdentifier(r.name)&&r.name.name===t);return!n||!S.isJSXAttribute(n)||!S.isJSXExpressionContainer(n.value)?null:n.value.expression}function sb(e,t){for(let n of t){let r=ib(e,n);if(r)return r}return null}function ab(e){return S.isJSXIdentifier(e.name)?e.name.name:null}function cb(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function lb(e){if(!S.isCallExpression(e)&&!S.isOptionalCallExpression(e))return null;let t=e.callee;return!S.isMemberExpression(t)&&!S.isOptionalMemberExpression(t)||!S.isIdentifier(t.property)||t.property.name!=="map"||t.computed||!S.isExpression(t.object)?null:{call:e,collection:t.object,callback:e.arguments[0]}}function Qs(e){return S.isArrowFunctionExpression(e)||S.isFunctionExpression(e)}function ub(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function db(e){return e==="empty"||e==="emptyRender"||e==="loading"||e==="loadingRender"||e==="error"||e==="errorRender"||e==="fallback"||e==="headerRender"||e==="footerRender"}function Ju(e,t,n,r){if(!e||!S.isExpression(e))return null;let o={kind:"repeat-template",collectionExpression:St(e,n),collectionSource:Le(e,n,r)};if(t){let i=t.params[0],s=t.params[1];S.isIdentifier(i)&&(o.itemParamName=i.name),S.isIdentifier(s)&&(o.indexParamName=s.name)}return o}function Jt(e,t,n){if(!e)return[];if(S.isJSXElement(e)){if(ta(e))return ai(e.children,t,n);let r=ii(e,t,n);return r?[r]:[]}return Yn(e)?si(e,t,n):S.isParenthesizedExpression(e)?Jt(e.expression,t,n):S.isExpression(e)?ci(e,t,n):[]}function ri(e,t,n){let r=new Map;for(let o of e.params)for(let i of Kt(o))na(r,i);t.valueScopes.push(r);try{if(!S.isBlockStatement(e.body))return Jt(e.body,t,n);let o=new Map;t.valueScopes.push(o);try{return Yu(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function Yu(e,t,n){let r=[];for(let o of e){if(S.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];if(i){qs([o],t,i);for(let s of o.declarations)S.isIdentifier(s.id)&&(S.isJSXElement(s.init)||S.isJSXFragment(s.init))&&r.push(...Jt(s.init,t,n))}continue}r.push(...ea(o,t,n))}return r}function ea(e,t,n){if(S.isReturnStatement(e))return e.argument?Jt(e.argument,t,n):[];if(S.isBlockStatement(e))return Sn(e.body,t,n);if(S.isIfStatement(e)){let r=S.isBlockStatement(e.consequent)?Sn(e.consequent.body,t,n):ea(e.consequent,t,n),o=e.alternate?S.isBlockStatement(e.alternate)?Sn(e.alternate.body,t,n):ea(e.alternate,t,n):[];return[...r,...o]}if(S.isSwitchStatement(e))return Sn(e.cases.flatMap(r=>r.consequent),t,n);if(S.isTryStatement(e)){let r=Sn(e.block.body,t,n);return e.handler&&r.push(...Sn(e.handler.body.body,t,n)),e.finalizer&&r.push(...Sn(e.finalizer.body,t,n)),r}return[]}function Sn(e,t,n){let r=new Map;t.valueScopes.push(r);try{return Yu(e,t,n)}finally{t.valueScopes.pop()}}function oi(e,t,n,r,o,i){o.length!==0&&e.regions.push({kind:t,ownerKey:n,childKeys:o,sourceRange:Xe(r),sourceCandidates:i&&i.length>0?i:void 0})}function fb(e,t,n,r){let o=sb(e.openingElement,["items","dataSource","data"]),i={key:t,tag:Xu(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!S.isJSXAttribute(s))continue;let a=ab(s);if(!a||!S.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!S.isJSXEmptyExpression(c)){if(ub(a)&&Qs(c)){let l=ri(c,n,r),d=Ju(o,c,r,n);oi(n,"repeat-region",t,s,l,d?[d]:void 0);continue}if(db(a)){let l=Qs(c)?ri(c,n,r):Jt(c,n,r);oi(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!S.isJSXExpressionContainer(s)||!Qs(s.expression))continue;let a=ri(s.expression,n,r),c=Ju(o,s.expression,r,n);oi(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function ii(e,t,n){let r=Xu(e.openingElement);if(r==="Fragment"||ta(e))return ai(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=Xx(r),a;if(s){let R=t.ordinalTracker.getOrdinal(i,r);a=`component:${r}#${R}`}else{let R=t.ordinalTracker.getOrdinal(i,r);a=`${r}#${R}`}let c=o?t.elements.get(o.key)?.identity.structuralPath:void 0,l=c?`${c}/${a}`:a,d=Er(t.file,t.componentName,l),f={file:t.file,component:t.componentName,structuralPath:l,key:d},m=s?"component-boundary":null,u=Qx(e.children,t,n),g=qx(e.openingElement,t,n),h=eb(e.openingElement,t,n),b,E,v=!1;if(s){let R=t.importMap.get(r)??t.importMap.get(zx(r));R&&(b=R.specifier,E=R.exportName,v=Rr(R.specifier,t.file))}let I={identity:f,tag:r,componentName:t.componentName,sourceFile:t.file,sourceRange:Xe(e),parentKey:i,childKeys:[],textSegments:u,attributes:g.length>0?g:void 0,attributeSpreads:h.length>0?h:void 0,boundaryKind:m,isOpaque:s,...v?{isPublicUiComponent:!0}:{},importedFrom:b,exportName:E};return t.elements.set(d,I),i&&t.elements.has(i)&&t.elements.get(i).childKeys.push(d),fb(e,d,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:d,tag:r}),pb(e.children,t,n),t.parentStack.pop()),d}function si(e,t,n){return ai(e.children,t,n)}function ai(e,t,n){let r=[];for(let o of e)if(S.isJSXElement(o))if(ta(o))r.push(...ai(o.children,t,n));else{let i=ii(o,t,n);i&&r.push(i)}else Yn(o)?r.push(...si(o,t,n)):S.isJSXExpressionContainer(o)&&r.push(...ci(o.expression,t,n));return r}function pb(e,t,n){for(let r of e)S.isJSXElement(r)?ii(r,t,n):Yn(r)?si(r,t,n):S.isJSXExpressionContainer(r)&&ci(r.expression,t,n)}function mb(e){return e==="&&"||e==="||"||e==="??"}function ci(e,t,n){if(S.isJSXEmptyExpression(e))return[];let r=lb(e);if(r){let o=r.call,i=t.parentStack[t.parentStack.length-1]??null,s=[],a=r.callback,c={kind:"repeat-template",collectionExpression:St(r.collection,n),collectionSource:Le(r.collection,n,t)};if(S.isArrowFunctionExpression(a)||S.isFunctionExpression(a)){let d=a.params[0],f=a.params[1];S.isIdentifier(d)&&(c.itemParamName=d.name),S.isIdentifier(f)&&(c.indexParamName=f.name)}s.push(c);let l={kind:"repeat-region",ownerKey:i?.key??"",childKeys:[],sourceRange:Xe(o),sourceCandidates:s.length>0?s:void 0};return t.regions.push(l),(S.isArrowFunctionExpression(a)||S.isFunctionExpression(a))&&l.childKeys.push(...ri(a,t,n)),l.childKeys}if(S.isConditionalExpression(e)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:St(e.test,n),conditionSource:Le(e.test,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Xe(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Jt(e.consequent,t,n)),s.childKeys.push(...Jt(e.alternate,t,n)),s.childKeys}if(S.isLogicalExpression(e)&&mb(e.operator)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:St(e.left,n),conditionSource:Le(e.left,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Xe(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Jt(e.right,t,n)),s.childKeys}if(S.isParenthesizedExpression(e))return ci(e.expression,t,n);if(S.isJSXElement(e)){let o=ii(e,t,n);return o?[o]:[]}return Yn(e)?si(e,t,n):[]}function gb(e){let t=e.argument;return t&&(S.isExpression(t)||Yn(t))?t:null}function Nr(e,t){let n=[];for(let r of e){if(S.isReturnStatement(r)){let o=gb(r);o&&n.push({argument:o,statement:r,condition:t});continue}if(S.isIfStatement(r)){let o=S.isBlockStatement(r.consequent)?r.consequent.body:[r.consequent];if(n.push(...Nr(o,r.test)),r.alternate){let i=S.isBlockStatement(r.alternate)?r.alternate.body:[r.alternate];n.push(...Nr(i,r.test))}continue}if(S.isSwitchStatement(r))for(let o of r.cases){let i=o.test?S.binaryExpression("===",r.discriminant,o.test):r.discriminant;n.push(...Nr(o.consequent,i))}}return n}function Zu(e){let{file:t,source:n,ast:r}=e,o=e.imports.map(f=>f.specifier),i=new Map,s=[],a=[],c=new Map,l=Gx(r);Jx(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(f){let m=Hx(f);if(!m)return;let u=f.node,g=[];if(S.isArrowFunctionExpression(u))S.isExpression(u.body)||Yn(u.body)?g=[{argument:u.body,statement:S.returnStatement(S.isExpression(u.body)?u.body:null)}]:S.isBlockStatement(u.body)&&(g=Nr(u.body.body));else{let R=u.body;S.isBlockStatement(R)&&(g=Nr(R.body))}if(g.length===0){f.skip();return}let h=new Map;qs(Zx(r.program.body),Zs(t,m,i,s,l,[h]),h);let b=new Map;for(let R of u.params)for(let P of Kt(R))na(b,P);let E=S.isBlockStatement(u.body)?u.body.body:[],v=g[0]?.statement??null;for(let R of E){if(v&&R===v)break;S.isVariableDeclaration(R)&&qs([R],Zs(t,m,i,s,l,[h,b]),b)}let I=Zs(t,m,i,s,l,[h,b]);for(let R of g){let P=Jt(R.argument,I,n);for(let T of P)a.includes(T)||a.push(T);if(R.condition){let T={kind:"conditional-branch",conditionExpression:St(R.condition,n),conditionSource:Le(R.condition,n,I)};oi(I,"conditional-region","",R.statement,P,[T])}}f.skip()}});let d=[...i.keys()];return d.length>0&&c.set(t,d),{graph:{routeId:t,rootKeys:a,elements:i,regions:s,fileIndex:c,version:1,diagnostics:[]},localImports:o}}function ra(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function li(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function Qu(e,t,n,r,o={}){let i=o.maxDepth??10,s=o.version??1,a=o.parseModule??gn,c=new Map,l=new Map,d=new Map,f=[],m=new Set,u=E=>{let v=`${E.path}\0${E.code}\0${E.message}\0${JSON.stringify(E.details??{})}`;m.has(v)||(m.add(v),f.push(E))},g=[{file:e,source:t,depth:0,diagnosticEntryFile:e,importStack:[]},...(o.additionalEntries??[]).map(E=>({file:E.file,source:E.source,depth:0,diagnosticEntryFile:E.file,importStack:[]}))],h=new Set;for(;g.length>0;){let E=g.shift(),{file:v,source:I,depth:R,diagnosticEntryFile:P,importStack:T}=E;if(h.has(v))continue;h.add(v),c.set(v,I);let C=a(v,I);if(!C.ok){u(li(C.diagnostic,P,T));continue}d.set(v,C.module);let{graph:A,localImports:F}=Zu(C.module);for(let M of A.elements.values())if(M.importedFrom&&wt(M.importedFrom)){let K=M.importedFrom,q=await wo(v,K,r);q.ok?(M.importedFrom=q.path,bn(q.path)&&(M.isPublicUiComponent=!0)):Rr(K,v)||u(li(q.diagnostic,P,ra(T,v,K,q.diagnostic.path)))}if(l.set(v,A),!(R>=i))for(let M of F){if(Hl(M))continue;let K=await wo(v,M,r);if(!K.ok){Rr(M,v)||u(li(K.diagnostic,P,ra(T,v,M,K.diagnostic.path)));continue}let q=K.path;if(h.has(q)||bn(q))continue;let Re=ra(T,v,M,q);try{let Z=await n(q);g.push({file:q,source:Z,depth:R+1,diagnosticEntryFile:P,importStack:Re})}catch(Z){u(li({path:q,code:"import-read-failed",message:`Failed to read imported file: ${q}`,details:{fromFile:v,specifier:M,reason:Z instanceof Error?Z.message:String(Z)}},P,Re))}}}let b=hb(e,l,s,(o.additionalEntries??[]).map(E=>E.file));return b.diagnostics=f,{graph:b,allSources:c,diagnostics:f,parsedModules:d,entryModule:d.get(e)??null}}function hb(e,t,n,r=[]){let o=new Map,i=[],s=new Map,a=[];for(let[c,l]of t){for(let[d,f]of l.elements)o.set(d,f);for(let d of l.regions)i.push(d);for(let[d,f]of l.fileIndex){let m=s.get(d)??[];s.set(d,[...m,...f])}if(c===e){a=l.rootKeys;continue}r.includes(c)&&(a=[...a,...l.rootKeys])}return{routeId:e,rootKeys:a,elements:o,regions:i,fileIndex:s,version:n}}import{SiteEditHistoryProvenanceSchema as yb}from"@vcp-dev/contracts";var xb={affectedCompositions:[]};function od(e){let t=null,n=new WeakMap;async function r(){return t??=bb(e),t}return{async prepareAppend(o){let i=await e.readIndex(),s=await e.stageAppend(nd(o),{durableManifest:!1}),a;try{a=await e.previewStagedAppend(s.entryId,i.digest)}catch(l){throw await e.discardStage(s.stageId),l}let c={kind:"append",entry:o,historyTransition:a};return n.set(c,{expectedDigest:i.digest,stageId:s.stageId,entryId:s.entryId}),c},async prepareUndo(){let i=(await r()).undo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("undo entry is missing from index");let c=a-1,l=await e.previewCursor(c,s.digest),d={kind:"undo",entry:i,historyTransition:l};return n.set(d,{expectedDigest:s.digest,cursor:c}),d},async prepareRedo(){let i=(await r()).redo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("redo entry is missing from index");let c=a,l=await e.previewCursor(c,s.digest),d={kind:"redo",entry:i,historyTransition:l};return n.set(d,{expectedDigest:s.digest,cursor:c}),d},async publishPrepared(o){let i=n.get(o);if(!i)throw new Error("history mutation was not prepared");let s=await r();if(o.kind==="append"){if(!i.entryId)throw new Error("staged entry id is missing");let a=await e.publishStagedAppend(i.entryId,i.expectedDigest,i.stageId);qu(a,o.historyTransition),o.entry.historyId=i.entryId,s.entryIds=[...a.entryIds],s.cursor=a.cursor,s.undo.push(o.entry),s.redo.length=0}else{if(i.cursor===void 0)throw new Error("prepared cursor is missing");let a=await e.setCursor(i.cursor,i.expectedDigest);if(qu(a,o.historyTransition),o.kind==="undo"){if(s.undo.at(-1)!==o.entry)throw new Error("undo state changed before publish");s.undo.pop(),s.redo.push(o.entry)}else{if(s.redo.at(-1)!==o.entry)throw new Error("redo state changed before publish");s.redo.pop(),s.undo.push(o.entry)}s.cursor=i.cursor}n.delete(o)},async discardPrepared(o){let i=n.get(o);if(!i)return;let s=o.historyTransition;if(s){let a=await e.readIndex();if(a.digest===s.publishedIndexDigest&&a.cursor===s.publishedCursor&&a.currentId===s.publishedCurrentId)throw new Error("cannot discard a history mutation whose index was published")}i.stageId&&await e.discardStage(i.stageId),n.delete(o)},async peekUndo(){return(await r()).undo.at(-1)??null},async pushUndo(o){let i=await r(),s=o;if(s.historyId){let l=i.entryIds.indexOf(s.historyId);if(l>=0)try{await e.setCursor(l),i.undo.push(o),i.cursor=l;return}catch(d){throw i.redo.push(o),d}}let a=await e.append(nd(o)),c=a.currentId;if(!c)throw new Error("history store did not publish an entry");o.historyId=c,i.entryIds=[...a.entryIds],i.cursor=a.cursor,i.undo.push(o),i.redo.length=0},async popUndo(){return(await r()).undo.pop()??null},async peekRedo(){return(await r()).redo.at(-1)??null},async pushRedo(o){let i=await r(),s=o;if(!s.historyId)throw i.undo.push(o),new Error("cannot move an unpersisted history entry to redo");let a=i.entryIds.indexOf(s.historyId);if(a<0)throw i.undo.push(o),new Error("history entry is missing from the durable index");try{await e.setCursor(a-1),i.cursor=a-1,i.redo.push(o)}catch(c){throw i.undo.push(o),c}},async popRedo(){return(await r()).redo.pop()??null},async clearRedo(){(await r()).redo.length=0},async getStatus(){let o=await e.readStatus();return{canUndo:o.canUndo,canRedo:o.canRedo,undoDepth:o.undoDepth,redoDepth:o.redoDepth,recoveryRequired:o.recoveryRequired}},async markRecoveryRequired(o){await e.markRecoveryRequired(o)}}}function qu(e,t){if(!t)throw new Error("durable history transition is missing");if(e.digest!==t.publishedIndexDigest||e.cursor!==t.publishedCursor||e.currentId!==t.publishedCurrentId)throw new Error("durable history published an unexpected index state")}async function bb(e){let t=await e.readIndex(),n=await Promise.all(t.undoIds.map(async o=>ed(e,o))),r=await Promise.all(t.redoIds.map(async o=>ed(e,o)));return{undo:n.reverse(),redo:r.reverse(),entryIds:[...t.entryIds],cursor:t.cursor}}async function ed(e,t){let n=await e.readEntry(t),r=Sb(n),o=r.provenance??xb;return{historyId:t,...o.initiatingComposition?{composition:o.initiatingComposition}:{},operationId:r.operationId,kind:r.kind,target:r.target,provenance:o,...r.selectionRef?{selectionRef:r.selectionRef}:{},...r.output?{output:r.output}:{},preSnapshots:await td(e,n,r.preSnapshots),postSnapshots:await td(e,n,r.postSnapshots)}}async function td(e,t,n){let r=new Map(t.blobs.map(o=>[o.name,o.digest]));return Promise.all(n.map(async o=>{let i=o.exists&&o.blobName?Buffer.from(await e.readBlob(kb(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function nd(e){let t=[],n=(i,s)=>i.map((a,c)=>{let l={file:a.file,exists:a.exists!==!1,version:a.version,...a.sha256?{sha256:a.sha256}:{}};if(l.exists){let d=`${s}-${c}`;l.blobName=d,t.push({name:d,data:a.content})}return l}),r=Eb(e),o={operationId:e.operationId,kind:e.kind,target:e.target,...r?{provenance:r}:{},...e.selectionRef?{selectionRef:e.selectionRef}:{},...e.output?{output:e.output}:{},preSnapshots:n(e.preSnapshots,"pre"),postSnapshots:n(e.postSnapshots,"post")};return{kind:"site-edit-operation",manifest:JSON.parse(JSON.stringify(o)),blobs:t}}function Sb(e){if(!sd(e.manifest))throw new Error("durable history manifest is not an object");let t=e.manifest,n=new Set(["operationId","kind","target","selectionRef","output","provenance","preSnapshots","postSnapshots"]);if(Object.keys(t).some(r=>!n.has(r)))throw new Error("durable history manifest contains unknown fields");if(typeof t.operationId!="string"||t.operationId.length===0||typeof t.kind!="string"||t.kind.length===0||!Array.isArray(t.preSnapshots)||!Array.isArray(t.postSnapshots))throw new Error("durable history manifest has an invalid shape");return{operationId:t.operationId,kind:t.kind,target:t.target,...t.selectionRef!==void 0?{selectionRef:t.selectionRef}:{},...t.output!==void 0?{output:t.output}:{},...t.provenance!==void 0?{provenance:id(t.provenance)}:{},preSnapshots:rd(t.preSnapshots,"preSnapshots"),postSnapshots:rd(t.postSnapshots,"postSnapshots")}}function Eb(e){if(e.provenance!==void 0)return id(e.provenance);if(e.composition)return{initiatingComposition:e.composition,affectedCompositions:[]}}function id(e){let t=yb.safeParse(e);if(!t.success)throw new Error("durable history provenance is invalid");return{...t.data.initiatingComposition?{initiatingComposition:t.data.initiatingComposition}:{},affectedCompositions:t.data.affectedCompositions.map(n=>({routeId:n.routeId,...n.effectiveTemplateId?{effectiveTemplateId:n.effectiveTemplateId}:{}}))}}function rd(e,t){return e.map((n,r)=>{if(!sd(n))throw new Error(`durable history ${t}[${r}] is invalid`);if(typeof n.file!="string"||n.file.length===0||!Number.isInteger(n.version)||n.exists!==void 0&&typeof n.exists!="boolean"||n.sha256!==void 0&&!vb(n.sha256)||n.blobName!==void 0&&typeof n.blobName!="string")throw new Error(`durable history ${t}[${r}] is invalid`);return{file:n.file,exists:n.exists!==!1,version:n.version,...n.sha256?{sha256:n.sha256}:{},...n.blobName?{blobName:n.blobName}:{}}})}function vb(e){return/^sha256:[0-9a-f]{64}$/.test(e)}function kb(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function sd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{COMPONENT_I18N_FILE_SUFFIX as Ib,parseComponentI18nResourcesJson as Cb,resolveSiteTextDirection as Rb,SiteLocaleSchema as wb}from"@vcp-dev/contracts";var Nb=["i18next","react-i18next"],Pb="components/ui/site-locale-provider.tsx",Ab="components/ui/component-i18n-provider.tsx",ad="app/layout.tsx";async function ia(e){let t=e.files.filter(m=>m.path.endsWith(Ib));if(t.length===0)return{ok:!0};for(let m of["package.json",ad,Pb,Ab])if(!await e.exists(m))return En(`Target snapshot is missing required i18n host file: ${m}`);let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return En("Target snapshot package.json is invalid.")}let r=cd(n)&&cd(n.dependencies)?n.dependencies:{},o=Nb.filter(m=>typeof r[m]!="string"||r[m].trim().length===0);if(o.length>0)return En(`Target snapshot must already declare: ${o.join(", ")}.`);let i=await e.readFile(ad),s=oa(i,"html","lang"),a=oa(i,"html","dir"),c=oa(i,"SiteLocaleProvider","locale"),l=wb.safeParse(s);if(!l.success||!a||!c||s!==c||a!==Rb(l.data))return En("Target snapshot app/layout.tsx must keep html lang/dir and SiteLocaleProvider locale consistent.");if(!i.includes('from "@/components/ui/site-locale-provider"')||!/<SiteLocaleProvider\b/.test(i)||!/<\/SiteLocaleProvider>/.test(i))return En("Target snapshot root layout is not wired to SiteLocaleProvider.");let d=l.data,f=d.split("-")[0];for(let m of t){let u=Cb(m.content);if(!u.success)return En(`Component i18n resource is invalid: ${m.path}.`);if(!Object.hasOwn(u.data,d)&&!Object.hasOwn(u.data,f))return En(`Component i18n resource ${m.path} has no locale for ${d} or ${f}.`)}return{ok:!0}}function oa(e,t,n){let r=e.match(new RegExp(`<${t}\\b[^>]*>`))?.[0];if(!r)return null;let o=[...r.matchAll(new RegExp(`\\b${n}=(?:"([^"]+)"|\\{"([^"]+)"\\})`,"g"))];return o.length!==1?null:o[0]?.[1]??o[0]?.[2]??null}function cd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function En(e){return{ok:!1,message:e}}import{randomBytes as Xb}from"node:crypto";import di from"node:path";import{parse as ua}from"@babel/parser";import zb from"@babel/traverse";import*as yd from"@babel/types";import{COMPONENT_I18N_FILE_SUFFIX as aa,PageResourceArtifactSchema as Hb,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as Wb,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as Gb,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as Yb,parseComponentI18nResourcesJson as Zb}from"@vcp-dev/contracts";var ud=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,dd=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,Tb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke)-\[#(?:[0-9a-fA-F]{3,8})\](?:\/\d+)?/g,Fb=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*#[0-9a-fA-F]{3,8}[^'"]*['"]/g,_b=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Ob=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,Mb=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,Db=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*(?:oklch|lab|lch|hsla?)\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Lb=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*(?:oklch|lab|lch|hsla?)\([^)]+\)[^'"]*['"]/gi,Bb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*color-mix\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,$b=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*color-mix\([^'"]*['"]/gi,jb=/\b(?:bg|text|border|ring|outline|fill|stroke)-(?:black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)(?:-\d{2,3})?(?:\b|\/)/g,Vb=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,Ub=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function Pr(e,t){let n=ui([...mt(e,Tb),...mt(e,Fb),...mt(e,_b),...mt(e,t.includeRgbBackgroundImage?Ob:Mb),...t.includeExtendedColorFunctions?[...mt(e,Db),...mt(e,Lb)]:[]]),r=ui([...mt(e,Bb),...mt(e,$b)]).filter(o=>t.colorMixPolicy==="always"||ud.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...mt(e,jb).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...mt(e,Ub).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:ui(mt(e,dd)),hardCodedSurfaceOccurrences:Jb(e),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?ui(mt(e,Vb)):[]}}function mt(e,t){return e.match(new RegExp(t.source,t.flags))??[]}var ld=160,Kb=/((?:[a-z][a-z0-9-]*(?:\[[^\]]*\])?:)+)$/;function Jb(e){let t=new RegExp(dd.source,"g"),n=[0];for(let s=0;s<e.length;s+=1)e[s]===`
5
+ `&&n.push(s+1);let r=s=>{let a=0,c=n.length-1;for(;a<c;){let l=Math.ceil((a+c)/2);(n[l]??0)<=s?a=l:c=l-1}return a},o=[],i;for(;(i=t.exec(e))!==null;){let s=i[0],a=s.endsWith("/")?s.slice(0,-1):s,c=/^\/(\d+)/.exec(e.slice(i.index+a.length)),l=e.slice(Math.max(0,i.index-64),i.index),d=Kb.exec(l),f=r(i.index),m=e.indexOf(`
6
+ `,i.index),u=e.slice(n[f]??0,m===-1?void 0:m).trim();o.push({token:a,variant:d?.[1]??"",alpha:c?Number(c[1]):null,line:f+1,snippet:u.length>ld?`${u.slice(0,ld-1)}\u2026`:u})}return o}function ui(e){return[...new Set(e)]}var ca="{{$INSTANCE}}",Qb=/\{\{\$PAGE_ROUTE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,qb=/\{\{\$PAGE_TITLE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,la="components/site/generated",eS=/\.(?:tsx?|json)$/,tS=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,nS=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],rS=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),sa=zb,oS=typeof sa=="function"?sa:sa.default;async function da(e){let t=Hb.safeParse(e.artifact);if(!t.success)return ge("Page resource artifact failed contract validation.");let n=t.data,r=e.randomHex??(()=>Xb(4).toString("hex")),o=Math.max(1,Math.min(e.maxAttempts??5,5)),i=gS(r());if(!i)return ge("Random instance suffix must be 8 lowercase hex chars.");let s=`${hS(n.resource_id)}-${i}`,a=new Map,c=new Map,l=[];for(let I of n.pages){let R=I.final_route.slice(1);a.set(I.template_page_id,I.final_route),c.set(I.template_page_id,I.title),l.push({template_page_id:I.template_page_id,title:I.title,final_route:I.final_route,route_file_path:`app/${R}/page.tsx`})}let d=[],f=new Set,m=new Set,u=new Map,g=new Map,h=[],b=new Set(n.pages.flatMap(I=>I.components.map(R=>R.component_id)));for(let I of n.components){if(!b.has(I.component_id))continue;let R=fd({materialization:I.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c});if(!R.ok)return R;for(let P of R.files){let T=md(P,f,d);if(T)return T}m.add(R.entry),g.set(R.entry,R.entryExport),u.set(I.component_id,R.entry)}for(let[I,R]of n.pages.entries()){let P=l[I],T=fd({materialization:R.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c,pageEntryTarget:P.route_file_path,pageTitle:P.title});if(!T.ok)return T;for(let F of T.files){let M=md(F,f,d);if(M)return M}m.add(T.entry),g.set(T.entry,T.entryExport),h.push({entry:T.entry,declaredComponentIds:new Set(R.components.map(F=>F.component_id))});let C=d.find(F=>F.file===P.route_file_path);if(!C)return ge("Page materialization entry did not resolve to its final route file.",P.route_file_path);if(lS(C.content,P.route_file_path)!==P.final_route)return ge(`Page ${R.template_page_id} requires a static PAGE_SEO.path equal to ${P.final_route}.`,P.route_file_path)}let E=sS(d,m,s,u,h,g);if(!E.ok)return E;for(let I of d)if(await e.exists(I.file))return!I.file.startsWith("app/")&&o>1?da({...e,randomHex:r,maxAttempts:o-1}):{ok:!1,code:"MATERIALIZATION_CONFLICT",message:`Page resource create-only target already exists: ${I.file}`,path:I.file};let v=aS(d);return v||(d.sort((I,R)=>I.file.localeCompare(R.file)),{ok:!0,packageInstanceId:s,pages:l,files:d})}function fd(e){let t=e.materialization.entry.pathTemplate,n=[];for(let o of e.materialization.files){let i=o.pathTemplate===t,s=i&&e.pageEntryTarget?e.pageEntryTarget:pd(o.pathTemplate,e.packageInstanceId);if(!s)return ge("Materialization path cannot be mapped into the package namespace.",o.pathTemplate);let a=iS(o.content,e.packageInstanceId,e.routeByPage,e.titleByPage);if(!a.ok)return a;let c=i&&e.pageTitle!==void 0?uS(a.data,e.pageTitle,s):a;if(!c.ok)return c;n.push({operation:"create-only",file:s,content:c.data})}let r=e.pageEntryTarget??pd(t,e.packageInstanceId);return!r||!n.some(o=>o.file===r)?ge("Materialization entry must match one controlled source file.",t):{ok:!0,files:n,entry:r,entryExport:e.materialization.entry.export}}function iS(e,t,n,r){let o,i=e.replace(Qb,(c,l)=>{let d=n.get(l);return d||(o=l,c)});if(o)return ge(`Page route placeholder references unknown template page: ${o}`);let s=i.replace(qb,(c,l)=>{let d=r.get(l);return d?JSON.stringify(d):(o=l,c)});if(o)return ge(`Page title placeholder references unknown template page: ${o}`);let a=s.replaceAll(ca,t);return a.includes("{{$PAGE_ROUTE:")||a.includes("{{$PAGE_TITLE:")||a.includes("{{$INSTANCE}}")?ge("Materialization contains an unresolved placeholder."):{ok:!0,data:a}}function pd(e,t){let n=`${la}/${t}`;if(e.split(ca).length>2)return null;let o=e.replace(ca,t),i=`${la}/${t}/`,s=o.startsWith(i)?o:`${n}/${o}`,a=di.posix.normalize(s);return a!==s||!a.startsWith(`${n}/`)||!eS.test(a)||tS.test(a)?null:a}function md(e,t,n){return t.has(e.file)?ge(`Page resource materializations resolve duplicate target: ${e.file}`,e.file):(t.add(e.file),n.push(e),null)}function sS(e,t,n,r,o,i){let s=new Set(e.map(u=>u.file)),a=`${la}/${n}`,c=new Map(e.map(u=>[u.file,new Set])),l=new Map;for(let u of e){if(u.file.endsWith(".json")){try{JSON.parse(u.content)}catch{return ge("Materialization JSON file must contain valid JSON.",u.file)}if(u.file.endsWith(aa)&&!Zb(u.content).success)return ge("Materialization component i18n resources are invalid.",u.file);continue}try{let h=ua(u.content,{sourceType:"module",plugins:["jsx","typescript"]});l.set(u.file,h);for(let E of h.program.body)if((E.type==="ImportDeclaration"||E.type==="ExportAllDeclaration"||E.type==="ExportNamedDeclaration"&&E.source)&&E.source){let v=E.source.value,I=pS(u.file,v,s,a);if(!I.allowed)return ge(`Materialization import is outside the controlled package: ${v}`,u.file);I.internalPath&&c.get(u.file).add(I.internalPath)}let b;if(oS(h,{Identifier(E){E.isReferencedIdentifier()&&rS.has(E.node.name)&&(b??=E.node.name,E.stop())},JSXAttribute(E){E.node.name.type==="JSXIdentifier"&&E.node.name.name==="style"&&(b??="inline style",E.stop())},JSXOpeningElement(E){E.node.name.type==="JSXIdentifier"&&E.node.name.name.toLowerCase()==="style"&&(b??="style element",E.stop())}}),b)return ge(`Materialization source uses forbidden capability: ${b}`,u.file)}catch{return ge("Materialization source must parse as TS/TSX.",u.file)}let g=Pr(u.content,{colorMixPolicy:"always",includeExtendedColorFunctions:!0,includeRgbBackgroundImage:!0,rejectAnyRawColorLiteral:!0,rejectPrivateTokens:!0,rejectTailwindPalette:!0});if(g.hardCodedSurfaceHits.length>0||g.rawColorHits.length>0||g.privateTokenHits.length>0)return ge("Materialization source violates the public theme token policy.",u.file)}if([...t].some(u=>!s.has(u)))return ge("Materialization entry is outside the controlled package.");for(let u of t)if(u.endsWith(".json"))return ge("Materialization JSON files cannot be package entries.");for(let[u,g]of i){let h=l.get(u);if(!h||!cS(h,g))return ge("Materialization entry does not declare its contracted export.",u)}let d=new Map([...r].map(([u,g])=>[g,u]));for(let u of o){let g=hd(u.entry,c);for(let h of u.declaredComponentIds){let b=r.get(h);if(!b||!g.has(b))return ge(`Page entry does not reach declared component: ${h}`,u.entry)}for(let h of g){let b=d.get(h);if(b&&!u.declaredComponentIds.has(b))return ge(`Page entry imports undeclared component: ${b}`,u.entry)}}let f=new Set;for(let u of t)for(let g of hd(u,c))f.add(g);if(f.size!==e.length)return ge("Every materialization file must be reachable from a package entry.");let m=mS(e,l,c);return m||{ok:!0}}function aS(e){if(e.length>Wb)return ge("Page resource exceeds the aggregate source file limit.");let t=0;for(let n of e){let r=Buffer.byteLength(n.content,"utf8");if(r>Gb)return ge("Page resource file exceeds the content byte limit.",n.file);t+=r}return t>Yb?ge("Page resource exceeds the aggregate content byte limit."):null}function cS(e,t){for(let n of e.program.body){if(t.kind==="default"){if(n.type==="ExportDefaultDeclaration")return!0;continue}if(n.type==="ExportNamedDeclaration"&&(n.declaration?.type==="VariableDeclaration"&&n.declaration.declarations.some(r=>r.id.type==="Identifier"&&r.id.name===t.name)||(n.declaration?.type==="FunctionDeclaration"||n.declaration?.type==="ClassDeclaration")&&n.declaration.id?.name===t.name||n.specifiers.some(r=>r.exported.type==="Identifier"&&r.exported.name===t.name)))return!0}return!1}function lS(e,t){let n;try{n=ua(e,{sourceType:"module",sourceFilename:t,plugins:["jsx","typescript"]})}catch{return null}for(let r of n.program.body){let o=r.type==="VariableDeclaration"?r:r.type==="ExportNamedDeclaration"&&r.declaration?.type==="VariableDeclaration"?r.declaration:null;if(o)for(let i of o.declarations){if(i.id.type!=="Identifier"||i.id.name!=="PAGE_SEO")continue;let s=fi(i.init);if(s?.type!=="ObjectExpression")return null;for(let a of s.properties){if(a.type!=="ObjectProperty"||a.computed||!dS(a.key))continue;let c=fi(a.value);return c?.type==="StringLiteral"?c.value:c?.type==="TemplateLiteral"&&c.expressions.length===0?c.quasis[0]?.value.cooked??null:null}return null}}return null}function uS(e,t,n){let r;try{r=ua(e,{sourceType:"module",sourceFilename:n,plugins:["jsx","typescript"]})}catch{return ge("Page materialization PAGE_SEO must parse as TS/TSX.",n)}for(let o of r.program.body){let i=o.type==="VariableDeclaration"?o:o.type==="ExportNamedDeclaration"&&o.declaration?.type==="VariableDeclaration"?o.declaration:null;if(i)for(let s of i.declarations){if(s.id.type!=="Identifier"||s.id.name!=="PAGE_SEO")continue;let a=fi(s.init);if(a?.type!=="ObjectExpression")return ge("Page materialization PAGE_SEO must be a static object.",n);let c=a.properties.find(d=>d.type==="ObjectProperty"&&!d.computed&&fS(d.key));if(!c||c.type!=="ObjectProperty")return ge("Page materialization PAGE_SEO must declare a static title.",n);let l=fi(c.value);return!l||l.type!=="StringLiteral"&&l.type!=="TemplateLiteral"||l.type==="TemplateLiteral"&&l.expressions.length>0||typeof l.start!="number"||typeof l.end!="number"?ge("Page materialization PAGE_SEO.title must be a static string.",n):{ok:!0,data:e.slice(0,l.start)+JSON.stringify(t)+e.slice(l.end)}}}return ge("Page materialization must declare a top-level PAGE_SEO object.",n)}function fi(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression"||t?.type==="TSNonNullExpression";)t=t.expression;return t&&yd.isExpression(t)?t:null}function dS(e){return e.type==="Identifier"&&e.name==="path"||e.type==="StringLiteral"&&e.value==="path"}function fS(e){return e.type==="Identifier"&&e.name==="title"||e.type==="StringLiteral"&&e.value==="title"}function pS(e,t,n,r){if(t.startsWith(`@/${r}/`)){let s=t.slice(2),a=gd(s,n);return a?{allowed:!0,internalPath:a}:{allowed:!1}}if(!t.startsWith("."))return{allowed:nS.some(s=>s.endsWith("/")?t.startsWith(s):t===s)};if(t.includes("\\")||t.includes("\0"))return{allowed:!1};let o=di.posix.normalize(di.posix.join(di.posix.dirname(e),t)),i=gd(o,n);return i&&(i.startsWith(`${r}/`)||i.startsWith("app/"))?{allowed:!0,internalPath:i}:{allowed:!1}}function gd(e,t){return[e,`${e}.ts`,`${e}.tsx`,`${e}.json`,`${e}/index.ts`,`${e}/index.tsx`,`${e}/index.json`].find(n=>t.has(n))}function mS(e,t,n){let r=new Set(e.map(o=>o.file));for(let o of e){if(!o.file.endsWith(aa))continue;let i=o.file.slice(0,-aa.length),s=[`${i}.tsx`,`${i}.ts`].find(d=>r.has(d));if(!s)return ge("Component i18n resources require a same-name TS/TSX companion.",o.file);let c=t.get(s)?.program.directives.some(d=>d.value.value==="use client"),l=[...n].filter(([,d])=>d.has(o.file));if(!c||l.length!==1||l[0]?.[0]!==s)return ge("Component i18n resources must have exactly one same-name Client Component static importer.",s)}return null}function hd(e,t){let n=new Set,r=[e];for(;r.length>0;){let o=r.pop();if(!n.has(o)){n.add(o);for(let i of t.get(o)??[])r.push(i)}}return n}function gS(e){return/^[a-f0-9]{8}$/.test(e)?e:null}function hS(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"page-resource"}function ge(e,t){return{ok:!1,code:"MATERIALIZATION_REJECTED",message:e,...t?{path:t}:{}}}import{randomBytes as yS}from"node:crypto";import Xt from"node:path";import{parse as xS}from"@babel/parser";import bS from"@babel/traverse";import{COMPONENT_I18N_FILE_SUFFIX as pi,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as xd,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as SS,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as ES,SiteEditMaterializationSchema as vS,parseComponentI18nResourcesJson as kS}from"@vcp-dev/contracts";var ma="components/site/generated",bd="{{$INSTANCE}}",mi=5,IS=/^[a-z][a-z0-9-]{0,48}$/,CS=/^[a-f0-9]{8}$/,Sd=/\.tsx?$/,RS=/\.json$/,wS=/\.(?:tsx?|json)$/,NS=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,PS=["react","react/","next","next/","lucide-react","react-i18next","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],fa=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),pa=bS,AS=typeof pa=="function"?pa:pa.default;function TS(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>xd)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=US(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=vS.safeParse(e.manifest);if(!r.success)return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab manifest failed schema validation."}};let o=$S(e.generatedRoot);if(!o)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Generated root must be ${ma}.`,path:e.generatedRoot}};if(!Rd(r.data.instanceBaseName))return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instanceBaseName must contain at least one safe word.",path:r.data.instanceBaseName}};let i=kd(r.data.files),s=kd(e.controlledFiles);if(!KS(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>xd)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let a=0;for(let[c,l]of r.data.files.entries()){let d=Buffer.byteLength(l.content,"utf8");if(d>SS)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file exceeds the per-file content limit.",file:l.pathTemplate,path:`files[${c}]`}};a+=d}return a>ES?{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab exceeds the reusable total content limit."}}:{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:o,instanceRoot:"",entry:{path:"",export:r.data.entry.export},files:[]}}}async function FS(e){let t=TS(e);if(!t.ok)return t;let n=t.data.generatedRoot,r=Rd(e.manifest.instanceBaseName),o=Math.max(1,Math.min(mi,e.maxAttempts??mi));for(let i=0;i<o;i+=1){let s=jS(e.instanceNameGenerator?.()??yS(4).toString("hex"));if(!s)return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instance suffix must be 8 lowercase hex chars."}};let a=`${r}-${s}`,c=Nd(n,a),l=_S({manifest:e.manifest,generatedRoot:n,instanceName:a,instanceRoot:c,allowedExternalImports:e.allowedExternalImports??PS});if(!l.ok)return l;if(!await OS(e.exists,c,l.data.files))return{ok:!0,data:l.data}}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to allocate a create-only static prefab instance after repeated conflicts."}}}async function Cd(e){let t=Math.max(1,Math.min(mi,e.maxAttempts??mi));for(let n=0;n<t;n+=1){let r=await FS({...e,maxAttempts:1});if(!r.ok){if(r.error.code==="MATERIALIZATION_INSTANCE_CONFLICT")continue;return r}let o=await e.commit(r.data);if(o.ok)return{ok:!0,plan:r.data,data:o.data};if(o.error.code!=="MATERIALIZATION_INSTANCE_CONFLICT")return o}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to commit a complete static prefab instance after repeated conflicts."}}}function _S(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=Ed({pathTemplate:i.pathTemplate,generatedRoot:e.generatedRoot,instanceName:e.instanceName,instanceRoot:e.instanceRoot});if(!s.ok)return s;if(n.has(s.data))return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${s.data}`,path:s.data}};n.add(s.data),t.push({kind:"create-only",path:s.data,content:i.content,...i.role?{role:i.role}:{},sourcePathTemplate:i.pathTemplate})}t.sort((i,s)=>i.path.localeCompare(s.path));let r=Ed({pathTemplate:e.manifest.entry.pathTemplate,generatedRoot:e.generatedRoot,instanceName:e.instanceName,instanceRoot:e.instanceRoot});if(!r.ok)return r;if(!t.some(i=>i.path===r.data))return{ok:!1,error:{code:"MATERIALIZATION_ENTRY_INVALID",message:"Entry path must match one of the static prefab files.",path:r.data}};let o=MS(t,e.instanceRoot,r.data,e.manifest.entry.export,e.allowedExternalImports);return o.ok?{ok:!0,data:{kind:"static-prefab-materialization",instanceName:e.instanceName,generatedRoot:e.generatedRoot,instanceRoot:e.instanceRoot,entry:{path:r.data,export:e.manifest.entry.export},files:t}}:o}async function OS(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function Ed(e){if(e.pathTemplate.split(bd).length!==2)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path templates must include the instance placeholder exactly once.",path:e.pathTemplate}};let t=e.pathTemplate.replaceAll(bd,e.instanceName),n=VS(t);return n?Nd(e.generatedRoot,e.instanceName)!==e.instanceRoot?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab instance root normalization failed.",path:e.pathTemplate}}:n!==e.instanceRoot&&!n.startsWith(`${e.instanceRoot}/`)?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path must stay under components/site/generated/<instance>.",path:n}}:n!==t?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path template cannot rely on path normalization semantics.",path:e.pathTemplate}}:n===e.instanceRoot||!wS.test(n)||NS.test(n)?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab files must be .ts/.tsx/.json files and cannot be config, layout, provider, or global source files.",path:n}}:{ok:!0,data:n}:{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab path template resolves to an unsafe path.",path:e.pathTemplate}}}function MS(e,t,n,r,o){let i=new Set(e.map(f=>f.path)),s=new Map,a=new Map(e.map(f=>[f.path,new Set])),c=new Map;for(let f of e){if(RS.test(f.path)){if(f.path.endsWith(pi)){let g=kS(f.content);if(!g.success)return vn("MATERIALIZATION_DATA_UNSUPPORTED",g.error.message,f.path);c.set(f.path,new Set)}else try{JSON.parse(f.content)}catch{return vn("MATERIALIZATION_DATA_UNSUPPORTED","Static prefab JSON file must contain valid JSON.",f.path)}continue}let m;try{m=xS(f.content,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files must parse as plain module source.",file:f.path}}}let u=Pr(f.content,{colorMixPolicy:"always",includeExtendedColorFunctions:!0,includeRgbBackgroundImage:!0,rejectAnyRawColorLiteral:!0,rejectPrivateTokens:!0,rejectTailwindPalette:!0});if(u.hardCodedSurfaceHits.length>0||u.rawColorHits.length>0||u.privateTokenHits.length>0)return{ok:!1,error:{code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source must use public semantic design tokens instead of raw colors or private tokens.",file:f.path}};s.set(f.path,m)}for(let f of e){if(!Sd.test(f.path))continue;let m=s.get(f.path),u=null;if(AS(m,{ImportDeclaration(g){let h=vd({importer:f.path,source:g.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});if(!h.allowed)u??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab imports must resolve within the controlled instance or match the starter allowlist.",file:f.path},g.stop();else if(h.internalPath&&(a.get(f.path).add(h.internalPath),h.internalPath.endsWith(pi))){let b=DS({importer:f.path,imported:h.internalPath,source:g.node.source.value,ast:m});b.ok?c.get(h.internalPath).add(f.path):(u??=b.error,g.stop())}},ExportAllDeclaration(g){u??={code:"MATERIALIZATION_ENTRY_INVALID",message:"Static prefab files cannot use export-star declarations.",file:f.path},g.stop()},ExportNamedDeclaration(g){if(g.node.source){let h=vd({importer:f.path,source:g.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});!h.allowed||!h.internalPath?(u??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab re-exports must resolve within the controlled instance.",file:f.path},g.stop()):a.get(f.path).add(h.internalPath)}},CallExpression(g){if(g.node.callee.type==="Import"){u??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use dynamic import().",file:f.path},g.stop();return}g.node.callee.type==="Identifier"&&g.node.callee.name==="require"&&(u??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use require().",file:f.path},g.stop())},NewExpression(g){g.node.callee.type==="Identifier"&&g.node.callee.name==="Function"&&(u??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot construct functions dynamically.",file:f.path},g.stop())},MetaProperty(g){g.node.meta.type==="Identifier"&&g.node.meta.name==="import"&&(u??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot use import.meta.",file:f.path},g.stop())},MemberExpression(g){let h=Id(g.node);h&&fa.has(h)&&(u??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},OptionalMemberExpression(g){let h=Id(g.node);h&&fa.has(h)&&(u??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},Identifier(g){g.isReferencedIdentifier()&&fa.has(g.node.name)&&(u??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${g.node.name}.`,file:f.path},g.stop())},JSXAttribute(g){g.node.name.type==="JSXIdentifier"&&g.node.name.name==="style"&&(u??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot use inline style attributes.",file:f.path},g.stop())},JSXOpeningElement(g){g.node.name.type==="JSXIdentifier"&&g.node.name.name.toLowerCase()==="style"&&(u??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot declare style elements.",file:f.path},g.stop())}}),u)return{ok:!1,error:u}}if(!Sd.test(n))return vn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must be a .ts/.tsx source module.",n);let l=s.get(n);if(!l)return vn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must resolve to a controlled source file.",n);if(!LS(l,r))return vn("MATERIALIZATION_EXPORT_MISSING","Static prefab entry does not declare the manifest export.",n);for(let[f,m]of c)if(m.size!==1)return vn("MATERIALIZATION_IMPORT_FORBIDDEN","Each component .i18n.json file must have exactly one same-name Client Component static importer.",f);return BS(n,a).size!==e.length?vn("MATERIALIZATION_ENTRY_INVALID","Every controlled source file must be reachable from the entry module.",n):{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:ma,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}}function vd(e){if(!e.source.startsWith("./")&&!e.source.startsWith("../"))return e.source.startsWith("@/components/site/generated/")?{allowed:!1}:{allowed:e.allowedExternalImports.some(o=>o.endsWith("/")?e.source.startsWith(o):e.source===o)};if(e.source.includes("\\")||e.source.includes("\0"))return{allowed:!1};let t=Xt.posix.normalize(Xt.posix.join(Xt.posix.dirname(e.importer),e.source));if(t===e.instanceRoot||!t.startsWith(`${e.instanceRoot}/`))return{allowed:!1};let r=[t,`${t}.ts`,`${t}.tsx`,`${t}.json`,...["ts","tsx","json"].map(o=>`${t}/index.${o}`)].find(o=>e.filePaths.has(o));return r?{allowed:!0,internalPath:r}:{allowed:!1}}function DS(e){let t=Xt.posix.dirname(e.importer),n=Xt.posix.dirname(e.imported),r=Xt.posix.basename(e.importer).replace(/\.tsx?$/,""),o=Xt.posix.basename(e.imported).slice(0,-pi.length),i=`./${r}${pi}`;return!e.importer.endsWith(".tsx")||t!==n||r!==o||e.source!==i?{ok:!1,error:{code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Component i18n resources must use an explicit same-directory, same-name import from a .tsx file.",file:e.importer}}:e.ast.program.directives.some(a=>a.value.value==="use client")?{ok:!0}:{ok:!1,error:{code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:'A component that imports .i18n.json must declare the top-level "use client" directive.',file:e.importer}}}function LS(e,t){for(let n of e.program.body){if(t.kind==="default"&&n.type==="ExportDefaultDeclaration")return!0;if(t.kind!=="named"||n.type!=="ExportNamedDeclaration")continue;if(n.specifiers.some(o=>o.exported.type==="Identifier"&&o.exported.name===t.name))return!0;let r=n.declaration;if((r?.type==="FunctionDeclaration"||r?.type==="ClassDeclaration")&&r.id?.name===t.name||r?.type==="VariableDeclaration"&&r.declarations.some(o=>o.id.type==="Identifier"&&o.id.name===t.name))return!0}return!1}function BS(e,t){let n=new Set,r=[e];for(;r.length>0;){let o=r.pop();n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function vn(e,t,n){return{ok:!1,error:{code:e,message:t,...n?{file:n}:{}}}}function $S(e){let t=wd(e);return t===ma?t:null}function jS(e){let t=e.trim().toLowerCase();return CS.test(t)?t:null}function Rd(e){let t=e.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,49).replace(/-+$/g,"");return IS.test(t)?t:null}function wd(e){if(!e||e.startsWith("/")||e.includes("\\"))return null;let t=Xt.posix.normalize(e);return t==="."||t.startsWith("../")||t.includes("/../")||t.includes("//")?null:t}function VS(e){let t=wd(e);return!t||t!==e?null:t}function Nd(...e){return Xt.posix.join(...e)}function kd(e){return new Set(e.map(t=>t.pathTemplate))}function US(e){let t=new Set;for(let n of e){if(t.has(n.pathTemplate))return n.pathTemplate;t.add(n.pathTemplate)}return null}function KS(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Id(e){let t=e;for(;;){if(!t||typeof t!="object"||!("type"in t))return null;if(t.type==="Identifier"&&"name"in t&&typeof t.name=="string")return t.name;if(t.type==="MemberExpression"||t.type==="OptionalMemberExpression"){t=t.object;continue}return null}}import{createHash as Pa}from"node:crypto";import va from"@babel/traverse";function ga(e){let t=new Map,n=new Map;for(let s of e){if(t.has(s.placementKey))throw new Error(`Duplicate placement key in page composition projection: ${s.placementKey}`);t.set(s.placementKey,s);let a=n.get(s.placementUnitKey)??[];a.push(s),n.set(s.placementUnitKey,a)}let r=new Map,o=new Map,i=new Map;for(let[s,a]of n){let c=Object.freeze([...a]),l=c.find(d=>d.anchorSourceRange!==null&&d.members.length>0)??c.find(d=>d.members.length>0)??c[0];l&&(o.set(s,c),i.set(s,l),r.set(s,Object.freeze({placementUnitKey:s,placementKeys:Object.freeze(c.map(d=>d.placementKey)),sourcePlacementKey:l.placementKey})))}return{placementByKey:t,unitByKey:r,placementsByUnitKey:o,sourcePlacementByUnitKey:i}}import{createHash as JS}from"node:crypto";import Pd from"node:path";import*as Od from"@babel/parser";import ha from"@babel/generator";import*as je from"@babel/types";var Ad=typeof ha=="function"?ha:ha.default;function xa(e){let t=Dd(e);if(t)return{ok:!1,error:t};let n=e.projection,r=Ea(n,e.placementKey,e.expectedDocumentVersion);if(!r.ok)return{ok:!1,error:{code:r.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"RUNTIME_ANCHOR_UNRESOLVED",message:r.diagnostic.message,diagnostics:[r.diagnostic]}};let o=r.placement,i=HS(n,o),s={jsx:`<${e.component.localName} />`},a=XS(e);if(i){let u=ya(e);return u.ok?{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:o.placementUnitKey,importStep:a,rewriteStep:{kind:"insert-root-expression",locator:u.locator,sourceHash:u.sourceHash,node:s,placement:o.relation,replaceOriginal:n.container.kind==="starter-placeholder"}}}:u.result}let c=o.containerSourceRange??n.container.sourceRange,l=o.containerSourceHash??(Sa(c,n.container.sourceRange)?n.container.sourceHash:null);if(!c||!l)return Ar("Route page composition does not expose a verifiable container boundary.");let d=Fr(c),f=Fd(e.source,d,l,"Route page composition container");if(!f.ok)return f.result;let m=o.anchorSourceRange?Fr(o.anchorSourceRange):void 0;if(m){if(!o.anchorSourceHash)return Ar("Route page composition placement does not expose a verifiable anchor boundary.");let u=Fd(e.source,m,o.anchorSourceHash,"Route page composition anchor");if(!u.ok)return u.result}return{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:o.placementUnitKey,importStep:a,rewriteStep:{kind:"insert-child",parentLocator:d,node:s,placement:o.relation,...m?{anchorLocator:m}:{}}}}}function XS(e){let t=ZS(e.entryFile,e.component.source);return e.component.exportName==="default"?{kind:"add-import",moduleSpecifier:t,imports:[{kind:"default",local:e.component.localName}]}:{kind:"add-import",moduleSpecifier:t,imports:[{kind:"named",imported:e.component.exportName,local:e.component.localName===e.component.exportName?void 0:e.component.localName}]}}function gi(e){if(e.locator.root.kind!=="expression"||e.locator.path?.length)return kn(e.source,"Root expression rewrite requires an exact expression locator.");let t=gr(e.source,"value");if(!t.ok)return kn(e.source,t.diagnostic.message);let n=se(t.ast,e.locator);if(!n.ok)return kn(e.source,n.diagnostic.message);let r=n.match.path;if(!r.isExpression())return kn(e.source,"Resolved value locator does not point to an expression.");let o=Zn(e.source,r.node.start??null,r.node.end??null);if(!o||o!==e.expectedSourceHash)return kn(e.source,"Root expression hash no longer matches the current source.");if(e.action.kind==="remove")return r.replaceWith(je.nullLiteral()),{ok:!0,source:Ad(t.ast,{}).code};let i;try{i=Od.parseExpression(e.action.jsx,{plugins:["jsx","typescript"]})}catch(s){return kn(e.source,s instanceof Error?s.message:String(s))}return!je.isJSXElement(i)&&!je.isJSXFragment(i)?kn(e.source,"Root expression rewrite requires a JSX insertion expression."):(e.action.kind==="replace"?r.replaceWith(i):r.replaceWith(zS(r.node,i,e.action.placement,e.action.replaceOriginal)),{ok:!0,source:Ad(t.ast,{}).code})}function zS(e,t,n,r){if(je.isNullLiteral(e)||r)return t;let o=je.isJSXFragment(e)?[...e.children]:[je.isJSXElement(e)?e:je.jsxExpressionContainer(e)],s=n==="before"||n==="prepend"?[t,...o]:[...o,t];return je.jsxFragment(je.jsxOpeningFragment(),je.jsxClosingFragment(),s)}function kn(e,t){return{ok:!1,source:e,diagnostic:{message:t}}}function ba(e){let t=Dd(e);if(t)return{ok:!1,error:t};let n=e.projection,r=Ld(n,e.placementUnitKey,e.expectedDocumentVersion);if(!r.ok)return{ok:!1,error:{code:r.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"NO_SAFE_PAGE_PLACEMENT",message:r.diagnostic.message,diagnostics:[r.diagnostic]}};let o=r.placement;if(!o.sourceRange||!o.sourceHash)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition source placement does not expose a safe boundary.",diagnostics:[]}};if(WS(n,o)){let h=ya(e);return h.ok?e.operation==="remove-node"&&!Td(n,o.placementUnitKey)?Ar("The last editable page unit cannot be deleted."):e.operation==="move-node"?Ar("A singleton root expression cannot be moved without a safe parent boundary."):{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:h.sourceHash,rewriteStep:{kind:e.operation==="remove-node"?"remove-root-expression":"replace-root-expression",locator:h.locator,sourceHash:h.sourceHash}}}:h.result}let s=Fr(o.sourceRange),a=At(e.source,s);if(!a.ok||!a.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:a.ok===!1?a.diagnostic.message:"Route page composition source anchor could not be resolved.",diagnostics:a.ok?[]:[Tr(a.diagnostic)]}};if(Zn(e.source,a.match.node.start??null,a.match.node.end??null)!==o.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source."}]}};if(e.operation==="remove-node"){let h=ya(e);return h.ok?Td(n,o.placementUnitKey)?{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"remove-node",locator:s}}}:Ar("The last editable page unit cannot be deleted."):h.result}if(e.operation==="replace-node")return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"replace-node",locator:s}}};if(!e.targetPlacement)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit move requires a target placement.",diagnostics:[]}};if(e.targetPlacement.composition.routeId!==e.routeId||!YS(e.targetPlacement.composition,e.composition))return{ok:!1,error:{code:"CROSS_PAGE_MOVE_UNSUPPORTED",message:"Page-unit move across routes or composition templates is not supported.",diagnostics:[]}};if(e.targetPlacement.documentVersion!==e.expectedDocumentVersion)return{ok:!1,error:{code:"VERSION_STALE",message:"Page-unit target placement belongs to a different document version.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Page-unit target placement belongs to a different document version."}]}};let l=Ea(n,e.targetPlacement.placementKey,e.expectedDocumentVersion);if(!l.ok)return{ok:!1,error:{code:l.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"NO_SAFE_PAGE_PLACEMENT",message:l.diagnostic.message,diagnostics:[l.diagnostic]}};let d=l.placement;if(d.placementUnitKey!==e.targetPlacement.placementUnitKey||d.relation!==e.targetPlacement.relation)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit target placement metadata does not match the cached projection.",diagnostics:[]}};let f=d.containerSourceRange;if(!f||!d.containerSourceHash)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition target placement does not expose a verifiable container boundary.",diagnostics:[]}};let m=Fr(f),u=At(e.source,m);if(!u.ok||!u.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:u.ok===!1?u.diagnostic.message:"Route page composition target container could not be resolved.",diagnostics:u.ok?[]:[Tr(u.diagnostic)]}};if(Zn(e.source,u.match.node.start??null,u.match.node.end??null)!==d.containerSourceHash)return _d("Route page composition target container hash no longer matches the current source.");if(d.relation==="before"||d.relation==="after"){let h=d.anchorSourceRange,b=d.anchorSourceHash;if(!h||!b)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition target placement does not expose a verifiable anchor boundary.",diagnostics:[]}};let E=Fr(h),v=At(e.source,E);return!v.ok||!v.match.node?{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:v.ok===!1?v.diagnostic.message:"Route page composition target anchor could not be resolved.",diagnostics:v.ok?[]:[Tr(v.diagnostic)]}}:Zn(e.source,v.match.node.start??null,v.match.node.end??null)!==b?_d("Route page composition target anchor hash no longer matches the current source."):{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"move-node",locator:s,targetParentLocator:m,anchorLocator:E,placement:d.relation}}}}return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"move-node",locator:s,targetParentLocator:m,placement:d.relation}}}}function Td(e,t){for(let n of e.placementUnitByKey.values())if(n.placementUnitKey!==t&&n.members.length>0)return!0;return!1}function HS(e,t){let n=e.placementUnitByKey.get(t.placementUnitKey);return n&&e.container.kind!=="jsx-container"&&Sa(n.sourceRange,e.mutationTarget.sourceRange)&&n.sourceHash===e.mutationTarget.sourceHash?!0:e.container.sourceRange===null&&(e.container.kind==="virtual-route-root"||e.container.kind==="starter-placeholder")}function WS(e,t){return e.container.kind!=="jsx-container"&&Sa(t.sourceRange,e.mutationTarget.sourceRange)&&t.sourceHash===e.mutationTarget.sourceHash}function ya(e){let t=e.projection.mutationTarget,n={kind:"value",root:{kind:"expression",sourceRange:t.sourceRange}},r=At(e.source,n);return!r.ok||!r.match.node?{ok:!1,result:{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:r.ok===!1?r.diagnostic.message:"Route mutation target could not be resolved.",diagnostics:r.ok?[]:[Tr(r.diagnostic)]}}}:Zn(e.source,r.match.node.start??null,r.match.node.end??null)!==t.sourceHash?{ok:!1,result:Md("Route mutation target hash no longer matches the current source.")}:{ok:!0,locator:n,sourceHash:t.sourceHash}}function Fd(e,t,n,r){let o=At(e,t);return!o.ok||!o.match.node?{ok:!1,result:{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:o.ok===!1?o.diagnostic.message:`${r} could not be resolved.`,diagnostics:o.ok?[]:[Tr(o.diagnostic)]}}}:Zn(e,o.match.node.start??null,o.match.node.end??null)!==n?{ok:!1,result:Md(`${r} hash no longer matches the current source.`)}:{ok:!0}}function Md(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function Ar(e){return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:e,diagnostics:[]}}}function _d(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function Tr(e){return{code:"UNSUPPORTED_PAGE_SHAPE",message:e.message,details:{astCode:e.code}}}function Dd(e){let{projection:t}=e;return t.route!==e.routeId||t.entryFile!==e.entryFile?{code:"VERSION_STALE",message:"Cached page composition projection belongs to a different route.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Cached page composition projection belongs to a different route.",details:{expectedRouteId:e.routeId,projectedRouteId:t.route,expectedEntryFile:e.entryFile,projectedEntryFile:t.entryFile}}]}:e.composition&&!GS(t.composition,e.composition)?{code:"VERSION_STALE",message:"Cached page composition projection belongs to a different composition.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Cached page composition projection belongs to a different composition.",details:{expectedComposition:e.composition,projectedComposition:t.composition}}]}:e.currentDocumentVersion!==e.expectedDocumentVersion||t.documentVersion!==e.currentDocumentVersion?{code:"VERSION_STALE",message:"Route page composition version is stale.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition version is stale.",details:{expectedDocumentVersion:e.expectedDocumentVersion,currentDocumentVersion:e.currentDocumentVersion,projectedDocumentVersion:t.documentVersion}}]}:null}function GS(e,t){return e.routeId===t.routeId&&e.effectiveTemplateId===t.effectiveTemplateId}function YS(e,t){return e.routeId===t.routeId&&e.templateId===t.effectiveTemplateId}function ZS(e,t){let n=Pd.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Pd.posix.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Fr(e){return{kind:"jsx-node",strategy:"source-range",sourceRange:e}}function Zn(e,t,n){return t==null||n==null?null:`sha256:${JS("sha256").update(e.slice(t,n)).digest("hex")}`}function Sa(e,t){return e===null||t===null?e===t:e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}var QS=typeof va=="function"?va:va.default;function Vd(e){if(!e.ast)return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=sE(e.ast);if(!t)return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export must resolve to a local function component",{reason:"default-export-unresolved"})]);let n=cE(t);if(!n.ok)return Et(e,[n.diagnostic]);let r=n.expression;if(r.isIdentifier()){let o=uE(r,t);if(o.status==="resolved")r=o.expression;else if(o.status==="invalid")return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export local binding is not a supported JSX root")])}if(fE(r,t))return Et(e,[Be("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(r.isNullLiteral())return Ia(e,t,"virtual-route-root",r);if(dE(r)){let o=hE({input:e,source:e.source,expression:r});return ka(e,t,o,{kind:"virtual-route-root",sourceKind:"atomic-expression"},r)}if(r.isConditionalExpression())return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route conditional root contains an unsupported branch shape",{reason:"ambiguous-placement"})]);if(r.isJSXElement()&&!Pe(r)&&!en(r)){let o=wa(r),i=jd({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[o]});return ka(e,t,i,{kind:"virtual-route-root",sourceKind:"jsx-element"},r)}if(r.isJSXElement()||r.isJSXFragment()){let o=mE(r);if(!o.ok)return Et(e,[o.diagnostic]);let i=Qn(o.path);if(i.unsupported)return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);if(pE(e.source,r,i.members))return Ia(e,t,"starter-placeholder",r);let s=r.isJSXFragment()||Pe(r);if(i.members.length===0&&s)return Ia(e,t,"virtual-route-root",r);let a=o.path===r&&s?"virtual-route-root":"jsx-container",c=o.path.isJSXFragment()?"jsx-fragment":"jsx-element",l=jd({input:e,containerKind:a,sourceKind:c,source:e.source,containerPath:o.path,members:i.members});return ka(e,t,l,{kind:a,sourceKind:c},r)}return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")])}function Ea(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Be("DOCUMENT_VERSION_STALE","Placement lookup is stale for the requested document version",{expectedDocumentVersion:e.documentVersion,requestedDocumentVersion:n})};let r=e.placementByKey.get(t)??null;return r?{ok:!0,placement:r}:{ok:!1,diagnostic:Be("PLACEMENT_KEY_NOT_FOUND","Placement key was not found in the projected page composition",{placementKey:t})}}function Ld(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Be("DOCUMENT_VERSION_STALE","Placement lookup is stale for the requested document version",{expectedDocumentVersion:e.documentVersion,requestedDocumentVersion:n})};let r=e.placementUnitByKey.get(t)??null;return r?{ok:!0,placement:r}:{ok:!1,diagnostic:Be("PLACEMENT_KEY_NOT_FOUND","Placement unit key was not found in the projected page composition",{placementUnitKey:t})}}function Ud(e){return e.ok?qS(e.projection):eE(e.projection)}function qS(e){let t=new Map,n=[];for(let l of e.placements)l.members.length===0&&e.placements.length>1||l.members.length>0&&!l.anchorSourceRange||t.has(l.placementUnitKey)||t.set(l.placementUnitKey,l);let r=new Map,o=new Map;for(let[l,d]of t){let f=d.members.flatMap((h,b)=>Kd(e,d,h,b,e.container.placementKey)),m=f.filter(({member:h})=>h.isBusinessMember).map(({sourceMember:h})=>nE(l,h,d.independent)),u=f.length>0?f:[{sourceMember:{key:`source:${l}:empty`,kind:e.container.kind==="starter-placeholder"?"starter-placeholder":"null-return",containerKey:e.container.placementKey,label:"empty-page",sourceFile:e.entryFile,isAtomic:!0},member:null}];r.set(l,u.map(({sourceMember:h})=>h)),o.set(l,m);let g=u[0]?.sourceMember.key??l;n.push({key:l,containerKey:g,businessMemberKeys:m.map(h=>h.key),isMultiMember:d.memberCount>1})}let i=[...r.values()].flat(),s=[...o.values()].flat(),a=i[0]?.key??null,c=e.placements.map(l=>({kind:"page-composition",placementKey:l.placementKey,documentVersion:e.documentVersion,composition:e.composition,placementUnitKey:l.placementUnitKey,relation:l.relation}));return{status:"supported",version:e.version,composition:e.composition,container:tE(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function eE(e){let t=e.diagnostics.map(rE);return{status:"unsupported",version:e.version,composition:e.composition,reason:oE(e.diagnostics),diagnostics:t}}function tE(e,t){switch(e.container.kind){case"jsx-container":return{kind:"jsx-container",key:e.container.placementKey,sourceMemberKey:t??e.container.placementKey,sourceFile:e.entryFile,componentName:e.defaultExportName??void 0};case"starter-placeholder":return{kind:"starter-placeholder",key:e.container.placementKey,sourceFile:e.entryFile};case"virtual-route-root":return{kind:"virtual-route-root",key:e.container.placementKey}}}function Kd(e,t,n,r,o){let i=`source:${t.placementUnitKey}:${r}:${n.memberKey}`;return[{sourceMember:{key:i,kind:n.kind==="jsx-element"?"jsx-element":"jsx-expression",containerKey:o,label:n.label,sourceFile:e.entryFile,isAtomic:n.kind!=="jsx-element"},member:n},...n.children.flatMap((a,c)=>Kd(e,t,a,c,i))]}function nE(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function rE(e){return{code:iE(e),message:e.message}}function oE(e){let t=e[0];if(!t)return"UNSUPPORTED_ROUTE_STRUCTURE";switch(t.code){case"ROUTE_RETURN_NOT_FOUND":return"ROUTE_RETURN_NOT_FOUND";case"MULTIPLE_PAGE_RETURNS":return"MULTIPLE_PAGE_RETURNS";case"INDIRECT_RETURN_ONLY":return"INDIRECT_RETURN_ONLY";case"PLACEMENT_KEY_NOT_FOUND":return"RUNTIME_ANCHOR_UNRESOLVED";case"DOCUMENT_VERSION_STALE":return"VERSION_STALE";case"UNSUPPORTED_PAGE_SHAPE":return t.details?.reason==="ambiguous-placement"?"PAGE_CONTAINER_AMBIGUOUS":"UNSUPPORTED_ROUTE_STRUCTURE";default:return"UNSUPPORTED_ROUTE_STRUCTURE"}}function iE(e){switch(e.code){case"PLACEMENT_KEY_NOT_FOUND":return"RUNTIME_ANCHOR_UNRESOLVED";case"DOCUMENT_VERSION_STALE":return"VERSION_STALE";case"UNSUPPORTED_PAGE_SHAPE":return e.details?.reason==="ambiguous-placement"?"PAGE_CONTAINER_AMBIGUOUS":"UNSUPPORTED_ROUTE_STRUCTURE";default:return e.code}}function sE(e){let t=null;return QS(e,{ExportDefaultDeclaration(n){let r=n.get("declaration");if(r.isArrowFunctionExpression()||r.isFunctionDeclaration()||r.isFunctionExpression()){t=r,n.stop();return}if(!r.isIdentifier())return;let o=n.scope.getBinding(r.node.name);if(!o)return;let i=aE(o.path);i&&(t=i,n.stop())}}),t}function aE(e){if(e.isArrowFunctionExpression()||e.isFunctionDeclaration()||e.isFunctionExpression())return e;if(e.isVariableDeclarator()){let t=e.get("init");if(t.isArrowFunctionExpression()||t.isFunctionExpression())return t}return null}function cE(e){let t=e.get("body");if(!t.isBlockStatement()){let s=Or(t);return s?{ok:!0,expression:s}:{ok:!1,diagnostic:Be("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")}}let n=t.get("body"),r=n.at(-1);if(!r)return{ok:!1,diagnostic:Be("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")};if(!r.isReturnStatement())return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route default export must end with a direct terminal return",{reason:"terminal-return-required"})};for(let s of n.slice(0,-1)){if(s.isIfStatement()){if(!lE(s))return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route guard return shape is not statically safe",{reason:"guard-shape"})};continue}if(Jd(s)||Xd(s))return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains unsupported control flow before the terminal return",{reason:"control-flow-return"})}}let o=r.get("argument"),i=Or(o);return i?{ok:!0,expression:i}:{ok:!1,diagnostic:Be("ROUTE_RETURN_NOT_FOUND","Route default export returns without a boundary expression",{reason:"bare-return"})}}function lE(e){if(e.node.alternate)return null;let t=e.get("consequent");if(t.isReturnStatement())return t;if(!t.isBlockStatement())return null;let n=t.get("body"),r=n.at(-1);if(!r?.isReturnStatement())return null;for(let o of n.slice(0,-1))if(Jd(o)||Xd(o))return null;return r}function Jd(e){return e.isForStatement()||e.isForInStatement()||e.isForOfStatement()||e.isWhileStatement()||e.isDoWhileStatement()||e.isSwitchStatement()||e.isTryStatement()||e.isWithStatement()}function Xd(e){let t=!1;return e.traverse({Function(n){n.skip()},ReturnStatement(){t=!0}}),t}function uE(e,t){let n=t.scope.getBinding(e.node.name);if(!n||n.scope.path.node!==t.node)return{status:"not-local"};if(!n.path.isVariableDeclarator())return{status:"not-local"};let r=n.path.parentPath;if(!r?.isVariableDeclaration()||r.node.kind!=="const")return{status:"invalid"};let o=n.path.get("init");if(Array.isArray(o)||!o.node)return{status:"invalid"};let i=Or(o);return!i||!i.isJSXElement()&&!i.isJSXFragment()?{status:"invalid"}:n.referencePaths.length!==1||n.referencePaths[0]?.node!==e.node||n.constantViolations.length!==0?{status:"invalid"}:{status:"resolved",expression:i}}function dE(e){return e.isConditionalExpression()?Bd(Or(e.get("consequent")))&&Bd(Or(e.get("alternate"))):!1}function Bd(e){return!!(e&&(e.isJSXElement()||e.isJSXFragment()||e.isNullLiteral()))}function Or(e){if(!e.node)return null;let t=e;for(;;){if(t.isParenthesizedExpression()){t=t.get("expression");continue}if(t.isTSAsExpression()||t.isTSTypeAssertion()){t=t.get("expression");continue}if(t.isTSNonNullExpression()||t.isTypeCastExpression()){t=t.get("expression");continue}break}return t.isExpression()?t:null}function fE(e,t){if(e.isIdentifier())return $d(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return $d(n.node.name,t)}return!1}function $d(e,t){let n=t.scope.getBinding(e);if(!n)return!1;let r=n.path;if(r.isFunctionDeclaration()||r.isFunctionExpression()||r.isArrowFunctionExpression())return!0;if(r.isVariableDeclarator()){let o=r.get("init");return o.isFunctionExpression()||o.isArrowFunctionExpression()}return!1}function pE(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&Ra(t)}function Ra(e){for(let t of e.get("children")){if(t.isJSXText()){if(t.node.value.trim())return!1;continue}if(t.isJSXExpressionContainer()){let n=t.get("expression");if(n.isJSXEmptyExpression()||n.isNullLiteral())continue;return!1}if(t.isJSXFragment()){if(!Ra(t))return!1;continue}if(t.isJSXElement()&&!Ra(t))return!1}return!0}function mE(e){let t=e;if(e.isJSXFragment()||Pe(e)){let r=_r(e),o=r[0];if(r.length===1&&o?.isJSXElement()&&en(o))t=o;else return{ok:!0,path:t}}for(;t.isJSXElement()&&en(t);){let r=_r(t);if(r.length!==1)return{ok:!0,path:t};let o=r[0];if(!o?.isJSXElement()||!en(o))return{ok:!0,path:t};if(_r(o).length<=1)return{ok:!0,path:t};t=o}return{ok:!0,path:t}}function _r(e){let t=[];for(let n of e.get("children"))if(!Array.isArray(n)){if(n.isJSXText()){n.node.value.trim()&&t.push(n);continue}if(n.isJSXExpressionContainer()){let r=n.get("expression");!r.isJSXEmptyExpression()&&!r.isNullLiteral()&&t.push(n);continue}if(n.isJSXFragment()){t.push(..._r(n));continue}n.isJSXElement()&&(Pe(n)?t.push(..._r(n)):t.push(n))}return t}function Qn(e){let t=[],n=!1;for(let r of e.get("children")){if(r.isJSXText()){if(!r.node.value.trim())continue;t.push({memberKey:Na(r.node.type,r.node.start,r.node.end),kind:"text",nodeType:r.node.type,sourceRange:gt(r.node.loc),businessMemberCount:0,parentSourceRange:gt(e.node.loc),children:[],isBusinessMember:!1,label:"text"});continue}if(r.isJSXExpressionContainer()){let o=r.get("expression");if(o.isJSXEmptyExpression()||o.isNullLiteral())continue;if(o.isJSXFragment()){let i=Qn(o);n||=i.unsupported,t.push(...i.members);continue}if(o.isJSXElement()){let i=en(o)?Qn(o):null;n||=i?.unsupported??!1,t.push({...wa(o,i?.members),sourceRange:gt(r.node.loc),parentSourceRange:gt(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:Na(o.node.type,o.node.start,o.node.end),kind:"atomic-expression",nodeType:o.node.type,sourceRange:gt(r.node.loc),businessMemberCount:1,parentSourceRange:gt(e.node.loc),children:[],isBusinessMember:!0,label:"atomic-expression"});continue}if(r.isJSXFragment()||r.isJSXElement()&&Pe(r)){let o=Qn(r);n||=o.unsupported,t.push(...o.members);continue}if(r.isJSXElement()){let o=en(r)?Qn(r):null;n||=o?.unsupported??!1,t.push({...wa(r,o?.members),parentSourceRange:gt(e.node.loc)})}}return{members:t,unsupported:n}}function wa(e,t){let n=e.isJSXElement()&&en(e)?t??Qn(e).members:[],r=e.isJSXElement()&&!en(e)&&!Pe(e);return{memberKey:Na(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:gt(e.node.loc),businessMemberCount:r?1:zd(n),parentSourceRange:gt(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:gE(e)}}function en(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name[0]===t.name[0]?.toLowerCase()}function gE(e){if(e.isJSXFragment())return"Fragment";let t=e.node.openingElement.name;if(t.type==="JSXIdentifier")return t.name;if(t.type==="JSXMemberExpression"){let n=t.object;return`${n.type==="JSXIdentifier"?n.name:"member"}.${t.property.name}`}return t.name.name}function zd(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function hi(e){return e.length===0?0:Math.max(1,zd(e))}function jd(e){let t=gt(e.containerPath.node.loc),n=Aa(e.source,e.containerPath.node.start,e.containerPath.node.end),r=ht(e.input,e.containerKind,e.sourceKind,t),o=ht(e.input,e.containerKind,"placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:hi(e.members)<=1,memberCount:hi(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function hE(e){let t=gt(e.expression.node.loc),n=Aa(e.source,e.expression.node.start,e.expression.node.end),r=ht(e.input,"virtual-route-root","atomic-expression",t),o=ht(e.input,"virtual-route-root","placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:!0,memberCount:1,sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:[{memberKey:ht(e.input,"virtual-route-root","atomic-member",t),kind:"atomic-expression",nodeType:e.expression.node.type,sourceRange:t,businessMemberCount:1,parentSourceRange:null,children:[],isBusinessMember:!0,label:e.expression.node.type}]}}function Hd(e,t){let n=gt(t.node.loc),r=Aa(e.source,t.node.start,t.node.end);return!n||!r?null:{kind:"expression",documentVersion:e.version,sourceRange:n,sourceHash:r}}function ka(e,t,n,r,o){let i=Hd(e,o);if(!i)return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let s=n.containerSourceRange??n.sourceRange,a=yE(e,n,s),c=ga(a),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Gd(t),container:{kind:r.kind,placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,version:e.version,isEmptyPage:n.memberCount===0,sourceKind:r.sourceKind,sourceRange:s,sourceHash:n.sourceHash},placements:a,diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map,mutationTarget:i};return Object.defineProperties(l,{placementByKey:{value:c.placementByKey,enumerable:!1},unitByKey:{value:c.unitByKey,enumerable:!1},placementsByUnitKey:{value:c.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:c.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:l}}function yE(e,t,n){if(t.members.length===0)return[t];let r=[],o=(l,d,f,m,u,g,h=n)=>({...t,placementKey:d,placementUnitKey:f,containerKey:t.placementKey,independent:hi(g)<=1,memberCount:hi(g),sourceRange:m,sourceHash:m?Ca(e.source,m):null,relation:l,containerSourceRange:h,containerSourceHash:h?Ca(e.source,h):null,anchorSourceRange:u,anchorSourceHash:u?Ca(e.source,u):null,members:g}),i=t.placementKey,s=t.members.map(l=>ht(e,i,"placement-unit",l.sourceRange)),a=s[0]??t.placementUnitKey,c=s.at(-1)??t.placementUnitKey;r.push(o("prepend",ht(e,i,"prepend",n),a,n,null,[]));for(let l of t.members){let d=l.parentSourceRange??n,f=ht(e,i,"placement-unit",l.sourceRange);r.push(o("before",ht(e,f,"before",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],d)),r.push(o("after",ht(e,f,"after",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],d))}return r.push(o("append",i,c,n,null,[])),r}function Ia(e,t,n,r){let o=Hd(e,r);if(!o)return Et(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let i=ht(e,n,"empty-container",void 0),s=ht(e,n,"empty-unit",void 0),a={placementKey:i,placementUnitKey:s,version:e.version,containerKey:i,independent:!0,memberCount:0,sourceRange:null,sourceHash:null,relation:"append",containerSourceRange:null,containerSourceHash:null,anchorSourceRange:null,anchorSourceHash:null,members:[]},c=ga([a]),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Gd(t),container:{kind:n,placementKey:i,placementUnitKey:s,version:e.version,isEmptyPage:!0,sourceKind:n==="starter-placeholder"?"starter-placeholder":"jsx-fragment",sourceRange:null,sourceHash:null},placements:[a],diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map,mutationTarget:o};return Object.defineProperties(l,{placementByKey:{value:c.placementByKey,enumerable:!1},unitByKey:{value:c.unitByKey,enumerable:!1},placementsByUnitKey:{value:c.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:c.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:l}}function Et(e,t){return{ok:!1,projection:{status:"unsupported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,diagnostics:t}}}function Be(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,details:n}}function ht(e,t,n,r){return Wd([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function Na(e,t,n){return Wd(["member",e,String(t??-1),String(n??-1)])}function Wd(e){return`pc_${Pa("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function Aa(e,t,n){return t==null||n==null?null:`sha256:${Pa("sha256").update(e.slice(t,n)).digest("hex")}`}function Ca(e,t){let n=[0];for(let i=0;i<e.length;i+=1)e.charCodeAt(i)===10&&n.push(i+1);let r=n[t.startLine-1],o=n[t.endLine-1];return r===void 0||o===void 0?null:`sha256:${Pa("sha256").update(e.slice(r+t.startColumn,o+t.endColumn)).digest("hex")}`}function gt(e){return e?{startLine:e.start.line,startColumn:e.start.column,endLine:e.end.line,endColumn:e.end.column}:null}function Gd(e){if(e.isFunctionDeclaration())return e.node.id?.name??null;let t=e.parentPath;return t?.isVariableDeclarator()&&t.node.id.type==="Identifier"?t.node.id.name:null}import{PageTemplateIdSchema as PE}from"@vcp-dev/contracts";import sT from"node:fs";import cT from"node:path";var bE=/^page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function Mr(e){let t=e.map(r=>NE(r.path)),n=SE(t);return n?t.filter(r=>vE(n,r)).map(r=>({routeId:kE(n,r),entryFile:r})).sort((r,o)=>r.routeId.localeCompare(o.routeId)):[]}function Ta(e,t=""){let r=((e??"/").trim()||"/").split(/[?#]/,1)[0]||"/",o=r.startsWith("/")?r:`/${r}`,i=wE(t),s=i&&(o===i||o.startsWith(`${i}/`))?o.slice(i.length)||"/":o,a=s.startsWith("/")?s:`/${s}`;return a==="/"?"/":a.replace(/\/+$/,"")}function SE(e){return e.some(r=>r.startsWith("app/")&&!EE(r))?"app":e.some(r=>r.startsWith("src/app/"))?"src/app":null}function EE(e){return/^(?:src\/)?app\/(?:_vcp|\.vcp)/.test(e)}function vE(e,t){if(!t.startsWith(`${e}/`))return!1;let n=t.slice(t.lastIndexOf("/")+1);return bE.test(n)?t.slice(e.length+1,-n.length-1).split("/").filter(Boolean).every(r=>!r.startsWith("_")&&!r.startsWith(".")):!1}function kE(e,t){let n=t.slice(e.length+1).split("/").slice(0,-1).map(CE).filter(r=>!!r);return n.length===0?"/":`/${n.join("/")}`}function IE(e){return e.startsWith("(")&&e.endsWith(")")}function CE(e){return!e||e.startsWith("@")||e.startsWith("_")||IE(e)?null:RE(e)}function RE(e){return e.replace(/^\((?:\.|\.\.|\.\.\.)\)/,"")}function wE(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function NE(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}var Dr=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="PageTemplateManagedSourceError"}};function Ze(e,t={}){throw new Dr("PAGE_TEMPLATE_MANAGED_SOURCE_INVALID",`Invalid page-template source (${e}): ${t.path??t.routeId??t.templateId??""}`,{reason:e,...t})}function Fa(e){return PE.safeParse(e).success||Ze("invalid-template-id",{templateId:e}),Buffer.from(e,"utf8").toString("base64url")}function Yd(e){/^[A-Za-z0-9_-]{1,255}$/.test(e)||Ze("invalid-template-key",{path:e});let t;try{t=new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.from(e,"base64url"))}catch{return Ze("invalid-template-key",{path:e})}return Fa(t)!==e&&Ze("noncanonical-template-key",{path:e}),t}function AE(e){let t=Ta(e),n=t.slice(1).split("/");return(!e.startsWith("/")||/[?#\\%\u0000-\u001f]/.test(e)||t.startsWith("/.vcp")||t!=="/"&&n.some(r=>!r||r==="."||r===".."||r.startsWith("@")||r.startsWith("_")||r.startsWith("(")||TE(r)&&!Zd(r)))&&Ze("invalid-public-route",{routeId:e}),t}function TE(e){return e.includes("[")||e.includes("]")}function Zd(e){return/^\[\[\.\.\.[^\[\]]+\]\]$|^\[[^\[\]]+\]$/.test(e)}function Qd(e){return e.some(Zd)}function qd(e,t,n="app"){n!=="app"&&n!=="src/app"&&Ze("invalid-app-root");let r=AE(e),o=Fa(t),i=Qd(r.slice(1).split("/")),s=i?`${n}/.vcp/page-templates/${o}${r}`:`${n}/.vcp/page-templates${r==="/"?"":r}`,a=i?`${s}/page.tsx`:`${s}/${o}/page.tsx`;return(Buffer.byteLength(a,"utf8")>4095||a.split("/").some(c=>Buffer.byteLength(c,"utf8")>255))&&Ze("path-too-long",{path:a}),{appRoot:n,routeRoot:s,templateKey:o,templateEntryFile:a}}function ef(e){return/^(?:src\/)?app\/\.vcp\/page-templates\//.test(e)}function tf(e){let t=Array.isArray(e)?e.map(r=>[r.path,r.content]):[...e],n=new Map;for(let[r,o]of t){let i=r.replace(/\\/g,"/").replace(/^\.\//,"");i.split("/").some(s=>s===".."||s===".")&&Ze("invalid-file-path",{path:i}),n.has(i)&&Ze("duplicate-file-path",{path:i}),n.set(i,o)}return n}function xi(e){let t=tf(e.files),n=Mr([...t.keys()].map(i=>({path:i}))),r=new Map;for(let i of n){if(r.has(i.routeId))throw new Dr("PAGE_TEMPLATE_ROUTE_AMBIGUOUS",`Multiple canonical entries for ${i.routeId}`,{reason:"duplicate-route-id",routeId:i.routeId,candidates:n.filter(s=>s.routeId===i.routeId).map(s=>s.entryFile)});r.set(i.routeId,i.entryFile)}let o=[];for(let i of t.keys()){if(!ef(i))continue;let s=/^(app|src\/app)\/\.vcp\/page-templates\/(.+)\/page\.tsx$/.exec(i);s||Ze("candidate-must-be-single-page",{path:i});let a=s[1],c=s[2].split("/"),l=Qd(c),d=l?c[0]:c.pop(),f=l?c.slice(1):c,m=Yd(d),u=f.length?`/${f.join("/")}`:"/";qd(u,m,a).templateEntryFile!==i&&Ze("candidate-path-mismatch",{path:i,routeId:u});let h=r.get(u);(!h||!h.startsWith(`${a}/`))&&Ze("canonical-entry-missing",{path:i,routeId:u}),o.push({routeId:u,templateId:m,entryFile:i,canonicalEntryFile:h,appRoot:a})}return o.sort((i,s)=>yi(i.routeId,s.routeId)||yi(i.templateId,s.templateId))}function nf(e){let t=tf(e.files),n=xi({files:t}),r=Mr([...t.keys()].map(o=>({path:o}))).map(o=>({context:{routeId:o.routeId},entryFile:o.entryFile}));return r.push(...n.map(o=>({context:{routeId:o.routeId,effectiveTemplateId:o.templateId},entryFile:o.entryFile}))),r.sort((o,i)=>yi(o.context.routeId,i.context.routeId)||(o.context.effectiveTemplateId===void 0?-1:i.context.effectiveTemplateId===void 0?1:yi(o.context.effectiveTemplateId,i.context.effectiveTemplateId)))}function FE(e){let t=Ta(e.selector.routeId),n=nf({files:e.files}),r=n.find(i=>i.context.routeId===t&&i.context.effectiveTemplateId===void 0);(!r||r.entryFile!==e.canonicalEntryFile)&&Ze("canonical-entry-mismatch",{routeId:t,path:e.canonicalEntryFile});let o=e.selector.templateId===void 0?r:n.find(i=>i.context.routeId===t&&i.context.effectiveTemplateId===e.selector.templateId);return o||Ze("template-selection-not-found",{routeId:t,templateId:e.selector.templateId}),{...o,mode:e.selector.templateId===void 0?"direct":"candidate",effectiveEntryFile:o.entryFile}}function yi(e,t){return e<t?-1:e>t?1:0}import{HOME_PAGE_URL_PATH as XE}from"@vcp-dev/contracts";import{parse as lF}from"@babel/parser";import{parse as yT}from"@babel/parser";import{FormBlockIdSchema as bT,FormSpecV1Schema as ST}from"@vcp-dev/contracts";var Lr="components/site/generated/forms",ET=`${Lr}/vcp-form-runtime.tsx`,bi="[A-Za-z0-9][A-Za-z0-9_-]{0,127}",vT=new RegExp(`^${Lr}/form-(${bi})\\.spec\\.ts$`),kT=new RegExp(`^${Lr}/form-(${bi})\\.tsx$`),IT=new RegExp(`^@/${Lr}/form-(${bi})$`),CT=new RegExp(`(?:^|/)${Lr}/form-(${bi})(?:\\.tsx?)?$`);var RT=Symbol("invalid-literal");import{createHash as PT}from"node:crypto";import{posix as TT}from"node:path";import{parse as _T}from"@babel/parser";import{FormSpecV1Schema as MT}from"@vcp-dev/contracts";var DT=Symbol("dynamic");import{parse as _E}from"@babel/parser";function Si(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"&&typeof t.type=="string"):[]}var OE=/^(?:src\/)?app\/(.*)page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function rf(e){let t=OE.exec(e);if(!t)return null;let r=(t[1]??"").split("/").filter(o=>o.length>0&&!/^\(.+\)$/.test(o));return r.length===0?"/":`/${r.join("/")}`}function ME(e){let t=e;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function of(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function DE(e){let t=e;for(;t&&(t.type==="TSAsExpression"||t.type==="TSSatisfiesExpression"||t.type==="ParenthesizedExpression");)t=t.expression??null;return t}function _a(e){let t=e;if(t?.type==="StringLiteral"||t?.type==="NumericLiteral"||t?.type==="BooleanLiteral")return t.value;if(t?.type==="NullLiteral")return null;if(t?.type==="ArrayExpression")return(t.elements??[]).map(_a);if(t?.type==="ObjectExpression"){let n={};for(let r of Si(t.properties)){if(r.type!=="ObjectProperty"||r.computed)throw new Error("dynamic object property");let o=of(r.key);if(!o)throw new Error("unsupported object key");n[o]=_a(r.value)}return n}throw new Error(`unsupported static value: ${t?.type??"unknown"}`)}function Oa(e,t){let n=[],r=rf(t);if(r===null)return{found:!1,seo:null,diagnostics:n};let o;try{o=_E(e,{sourceType:"module",plugins:["typescript","jsx"]})}catch(l){return n.push({code:"page-seo.parse-failed",message:l instanceof Error?l.message:String(l)}),{found:!1,seo:null,diagnostics:n}}let i;for(let l of Si(o.program.body)){let d=l.type==="ExportNamedDeclaration"?l.declaration:l;if(d?.type==="VariableDeclaration")for(let f of Si(d.declarations)){let m=f.id;m?.type==="Identifier"&&m.name==="PAGE_SEO"&&(i=f.init)}}if(i==null)return{found:!1,seo:null,diagnostics:n};let s=DE(i);if(!s)return{found:!1,seo:null,diagnostics:n};if(s.type!=="ObjectExpression")return n.push({code:"page-seo.dynamic-declaration",message:"PAGE_SEO is not a static object literal"}),{found:!1,seo:null,diagnostics:n};let a={};for(let l of Si(s.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let d=of(l.key);if(!(d!=="path"&&d!=="title"&&d!=="description"&&d!=="keywords"&&d!=="meta_tags_json"&&d!=="schema_json"&&d!=="breadcrumbs_json")){if(d==="path"||d==="title"||d==="description"||d==="keywords"){let f=ME(l.value);if(f===void 0){n.push({code:"page-seo.dynamic-field",message:`PAGE_SEO.${d} is not a static string; skipped`});continue}a[d]=f;continue}try{let f=_a(l.value);d==="meta_tags_json"&&f!==null&&typeof f=="object"&&!Array.isArray(f)?a.meta_tags_json=f:d==="schema_json"&&f!==null&&typeof f=="object"?a.schema_json=f:d==="breadcrumbs_json"&&Array.isArray(f)?a.breadcrumbs_json=f:n.push({code:"page-seo.dynamic-field",message:`PAGE_SEO.${d} has unsupported static shape; skipped`})}catch(f){n.push({code:"page-seo.dynamic-field",message:`PAGE_SEO.${d} is not a static JSON-like value; skipped: ${f instanceof Error?f.message:String(f)}`})}}}let c=r;return a.path!==void 0&&(a.path!==r&&n.push({code:"page-seo.path-mismatch",message:`PAGE_SEO.path "${a.path}" != derived "${r}"; using PAGE_SEO.path`}),c=a.path),{found:!0,seo:{path:c,...a.title!==void 0?{title:a.title}:{},...a.description!==void 0?{description:a.description}:{},...a.keywords!==void 0?{keywords:a.keywords}:{},...a.meta_tags_json!==void 0?{meta_tags_json:a.meta_tags_json}:{},...a.schema_json!==void 0?{schema_json:a.schema_json}:{},...a.breadcrumbs_json!==void 0?{breadcrumbs_json:a.breadcrumbs_json}:{}},diagnostics:n}}import{parse as LE}from"@babel/parser";var sf=["page","anchor","external","email","phone","group","file"],BE=["link","cta"],cf=["description","badge","iconKey"],Ma=["label","targetType","href","role","openInNewTab","nofollow","children",...cf],$E=new Set(Ma);function $r(e){return Array.isArray(e)?e:[]}function Br(e){let t=e;return t?.type==="StringLiteral"&&typeof t.value=="string"?t.value:void 0}function jE(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function af(e){let t=e;return t?.type==="BooleanLiteral"&&typeof t.value=="boolean"?t.value:void 0}function Da(e){let t=[],n;try{n=LE(e,{sourceType:"module",plugins:["typescript","jsx"]})}catch(i){return{items:[],diagnostics:[{severity:"fatal",path:"NAV_ITEMS",message:`parse failed: ${String(i)}`}]}}let r;for(let i of $r(n.program.body)){let s=i.type==="ExportNamedDeclaration"?i.declaration:i;if(s?.type==="VariableDeclaration")for(let a of $r(s.declarations)){let c=a.id;c?.type==="Identifier"&&c.name==="NAV_ITEMS"&&(r=a.init)}}for(;r&&(r.type==="TSAsExpression"||r.type==="TSSatisfiesExpression"||r.type==="TSInstantiationExpression");)r=r.expression;if(!r||r.type!=="ArrayExpression")return{items:[],diagnostics:[{severity:"fatal",path:"NAV_ITEMS",message:"missing top-level NAV_ITEMS array literal"}]};let o=[];return $r(r.elements).forEach((i,s)=>{let a=lf(i,`NAV_ITEMS[${s}]`,t);a&&o.push(a)}),{items:o,diagnostics:t}}function lf(e,t,n){if(e?.type!=="ObjectExpression")return n.push({severity:"fatal",path:t,message:"nav item must be an object literal"}),null;let r={};for(let l of $r(e.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let d=jE(l.key);d&&(r[d]=l.value)}let o=Br(r.label),i=Br(r.targetType);if(!o)return n.push({severity:"fatal",path:`${t}.label`,message:"label must be a static string"}),null;if(!i||!sf.includes(i))return n.push({severity:"fatal",path:`${t}.targetType`,message:`targetType must be one of ${sf.join("/")}`}),null;r.group!==void 0&&n.push({severity:"warning",code:"leaf-group-field",path:`${t}.group`,message:'unsupported leaf group field ignored; use a canonical targetType: "group" node with children'});let s={label:o,targetType:i};for(let l of cf){if(r[l]===void 0)continue;let d=Br(r[l]);d!==void 0?s[l]=d:n.push({severity:"warning",path:`${t}.${l}`,message:`${l} ignored: not a static string`})}r.icon!==void 0&&n.push({severity:"warning",path:`${t}.icon`,message:"icon component ref ignored; use static iconKey"});for(let l of Object.keys(r))$E.has(l)||l==="group"||l==="icon"||n.push({severity:"warning",code:"unknown-field",path:`${t}.${l}`,message:`unsupported field \`${l}\` ignored; NAV_ITEMS only carries ${Ma.join("/")}`});if(r.children!==void 0){if(r.children.type!=="ArrayExpression")return n.push({severity:"fatal",path:`${t}.children`,message:"children must be a static array"}),null;let l=[];$r(r.children.elements).forEach((d,f)=>{let m=lf(d,`${t}.children[${f}]`,n);m&&l.push(m)}),s.children=l}if(i==="group")return s.children?s:(n.push({severity:"fatal",path:`${t}.children`,message:"group item requires children"}),null);let a=Br(r.href);if(!a)return n.push({severity:"fatal",path:`${t}.href`,message:"href must be a static string for non-group item"}),null;s.href=a;let c=Br(r.role);if(c!==void 0&&(BE.includes(c)?s.role=c:n.push({severity:"warning",path:`${t}.role`,message:"role ignored: not link/cta"})),r.openInNewTab!==void 0){let l=af(r.openInNewTab);l!==void 0?s.openInNewTab=l:n.push({severity:"warning",path:`${t}.openInNewTab`,message:"openInNewTab ignored: not a static boolean"})}if(r.nofollow!==void 0){let l=af(r.nofollow);l!==void 0?s.nofollow=l:n.push({severity:"warning",path:`${t}.nofollow`,message:"nofollow ignored: not a static boolean"})}return s}import{parse as VE}from"@babel/parser";function jr(e){return Array.isArray(e)?e:[]}function uf(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression";)t=t.expression;return t?.type==="ArrayExpression"?t:void 0}function UE(e){let t;try{t=VE(e,{sourceType:"module",plugins:["typescript","jsx"],tokens:!0})}catch{return{status:"unsupported"}}let n=[];for(let o of jr(t.program.body)){let i=o.type==="ExportNamedDeclaration"?o.declaration:o;if(i?.type==="VariableDeclaration")for(let s of jr(i.declarations)){let a=s.id;a?.type==="Identifier"&&a.name==="NAV_ITEMS"&&n.push(s)}}if(n.length===0)return{status:"navigation_not_found"};if(n.length!==1)return{status:"unsupported"};let r=uf(n[0]?.init);return!r||typeof r.start!="number"||typeof r.end!="number"?{status:"unsupported"}:{status:"ok",array:r,start:r.start,end:r.end}}function La(e,t){let n=df(t);if(!n)return{status:"unsupported",source:e};let r=UE(e);if(r.status!=="ok")return{status:r.status,source:e};let o=r.array;if(Da(e).diagnostics.some(({severity:l})=>l==="fatal"))return{status:"unsupported",source:e};let s=[],a=l=>{let d=jr(l.elements);for(let[f,m]of d.entries()){if(JE(m,n)){let g=d[f+1],h=d[f-1],b=m.start,E=m.end;if(typeof b!="number"||typeof E!="number")continue;if(g&&typeof g.start=="number")s.push({start:b,end:g.start});else if(h&&typeof h.end=="number")s.push({start:h.end,end:E});else{let v=/^\s*,/.exec(e.slice(E));s.push({start:b,end:v?E+v[0].length:E})}continue}let u=KE(m);u&&a(u)}};if(a(o),s.length===0)return{status:"not_found",source:e};let c=e;for(let l of s.sort((d,f)=>f.start-d.start))c=c.slice(0,l.start)+c.slice(l.end);return{status:"removed",source:c,removedCount:s.length}}function KE(e){if(e.type==="ObjectExpression")for(let t of jr(e.properties)){if(t.type!=="ObjectProperty")continue;let n=t.key;if((n?.name??n?.value)==="children")return uf(t.value)}}function df(e){let t=e.trim();return t.startsWith("/")?t==="/"?t:t.replace(/\/+$/,""):null}function JE(e,t){if(e.type!=="ObjectExpression")return!1;let n,r;for(let o of jr(e.properties)){if(o.type!=="ObjectProperty")continue;let i=o.key,s=o.value,a=i?.name??i?.value;s?.type==="StringLiteral"&&(a==="href"&&(n=String(s.value)),a==="targetType"&&(r=String(s.value)))}return r==="page"&&df(n??"")===t}import{estimateNavLabelWidth as zT}from"@vcp-dev/contracts";import{parse as GT}from"@babel/parser";var zE="components/site/generated/",Vr=[".tsx",".ts",".jsx",".js"];function ff(e){if(e.expectedUrlPath===XE)return{ok:!1,code:"HOME_PAGE_LOCKED",message:"The homepage source is protected from deletion."};let t=new Set(Mr(Object.keys(e.files).map(h=>({path:h}))).map(h=>h.entryFile)),n=Object.entries(e.files).filter(([h,b])=>{let E=h.replace(/\\/g,"/");if(!t.has(E))return!1;let v=Oa(b,E);return v.found&&v.seo?.path===e.expectedUrlPath});if(n.length===0)return{ok:!1,code:"ROUTE_NOT_FOUND",message:"No route uniquely matches the requested page identity."};if(n.length>1)return{ok:!1,code:"ROUTE_AMBIGUOUS",message:"Multiple routes match the requested page identity."};let[r]=n[0],o=new Set([r]);try{let h=xi({files:new Map(Object.entries(e.files))});for(let b of h)b.canonicalEntryFile===r&&o.add(b.entryFile)}catch(h){return{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:h instanceof Error?h.message:"Invalid page template source."}}let i=HE(e.files);if(!i.ok)return i.error;let s=i.graph,a=ZE(o,s),c=QE(o,a,s),l=[...a].filter(h=>!c.has(h)).sort((h,b)=>h.localeCompare(b)),d=[...o,...[...c].sort((h,b)=>h.localeCompare(b))],f=new Set(d),m=d.map(h=>({operation:"delete",file:h})),u=[],g=[];for(let[h,b]of Object.entries(e.files))if(!f.has(h)){if(b.includes("NAV_ITEMS")){let E=La(b,e.expectedUrlPath);E.status==="removed"?(m.push({operation:"upsert",file:h,content:E.source}),u.push(h)):E.status==="unsupported"&&g.push(`unsupported_navigation:${h}`)}b.includes(e.expectedUrlPath)&&!b.includes("NAV_ITEMS")&&g.push(`preserved_link:${h}`)}return{ok:!0,edits:m,deletedFiles:d,updatedFiles:u,preservedSharedFiles:l,warnings:g}}function HE(e){let t=new Set(Object.keys(e)),n=new Map;for(let[r,o]of Object.entries(e)){let i=r.replace(/\\/g,"/");if(i==="next-env.d.ts"||i.endsWith("/next-env.d.ts")||!WE(r))continue;let s=gn(r,o);if(!s.ok)return{ok:!1,error:{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:`Page source dependencies could not be proven safe: ${r} (parse-failed).`}};let a=new Set;for(let{specifier:c}of s.module.imports){if(GE(c))continue;let l=dn(r,c),d=YE(l,t);if(!d)return{ok:!1,error:{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:`Page source dependencies could not be proven safe: ${r} -> ${c} (import-not-found).`}};a.add(d)}n.set(r,a)}return{ok:!0,graph:n}}function WE(e){let t=e.toLowerCase();return Vr.some(n=>t.endsWith(n))}function GE(e){return!!(/\.([a-z0-9]+)$/i.exec(e)&&!Vr.some(n=>e.endsWith(n)))}function YE(e,t){let n=e.replace(/\\/g,"/");return(Vr.some(o=>n.endsWith(o))?[n]:[...Vr.map(o=>`${n}${o}`),...Vr.map(o=>`${n}/index${o}`)]).find(o=>t.has(o))??null}function ZE(e,t){let n=new Set,r=[...e].flatMap(o=>[...t.get(o)??[]]);for(;r.length>0;){let o=r.pop();!o.startsWith(zE)||n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function QE(e,t,n){let r=new Set(t),o=!0;for(;o;){o=!1;for(let i of[...r])[...n].some(([a,c])=>!e.has(a)&&!r.has(a)&&c.has(i))&&(r.delete(i),o=!0)}return r}import*as dp from"@babel/parser";import*as de from"@babel/types";import*as Li from"node:path";import*as ye from"@babel/types";function pf(e){if(e.path.isVariableDeclarator()){let n=e.path.get("init");return n?.isExpression()?{expressionPath:n}:null}if(!e.path.isIdentifier()||!e.path.parentPath?.isVariableDeclarator())return null;let t=e.path.parentPath.get("init");return t?.isExpression()?{expressionPath:t}:null}function _t(e){if(e.path.isObjectPattern()||e.path.isArrayPattern())return In(e.path.node,e.identifier.name);if(e.path.isVariableDeclarator()){let n=e.path.node.id;if(ye.isObjectPattern(n)||ye.isArrayPattern(n))return In(n,e.identifier.name)}if(!e.path.isIdentifier())return!1;let t=e.path.parentPath;for(;t;){if(t.isAssignmentPattern()){let n=t.get("left");if(ev(e.path,n))return!0}if(t.isFunction()||t.isVariableDeclarator())return!1;t=t.parentPath}return!1}function In(e,t,n=!1){return ye.isIdentifier(e)?e.name===t&&n:ye.isObjectPattern(e)?e.properties.some(r=>ye.isObjectProperty(r)?In(r.value,t,n):In(r.argument,t,n)):ye.isArrayPattern(e)?e.elements.some(r=>{if(!r)return!1;let o=ye.isRestElement(r)?r.argument:r;return In(o,t,n)}):ye.isAssignmentPattern(e)?In(e.left,t,!0):ye.isRestElement(e)?In(e.argument,t,n):!1}function qn(e,t){if(e.path.isObjectPattern()){if(t){let r=vt(e.path.node,t.base),[o,...i]=r??[];if(o?.kind==="property")return{propName:o.name,remainingPath:[...i,...t.path],hasDefault:_t(e)}}return t?{propName:t.base,remainingPath:t.path,hasDefault:_t(e)}:null}if(e.path.isVariableDeclarator()){let r=e.path.get("init");if(r?.isExpression()){let o=mf(r),i=!1,s=o?o.initBinding&&Ba(o.initBinding)?(i=_t(o.initBinding),[...o.initPathPrefix]):o.initBinding?(()=>{let c=qn(o.initBinding,{kind:"identifier",expression:o.initBinding.identifier.name,base:o.initBinding.identifier.name,path:[]});return i=c?.hasDefault??!1,c?[{kind:"property",name:c.propName},...c.remainingPath,...o.initPathPrefix]:null})():null:null,a=vt(e.path.node.id,e.identifier.name);if(s&&a){let c=[...s,...a],[l,...d]=c;return!l||l.kind!=="property"?null:{propName:l.name,remainingPath:[...d,...t?.path??[]],hasDefault:i||_t(e)}}}}let n=rv(e);if(n){let r=qE(n,e);if(r){let[s,...a]=r.path;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:r.hasDefault||_t(e)}}if(n.findParent(s=>s.isVariableDeclarator()))return null;let o=tv(e);if(o){let[s,...a]=o;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:_t(e)}}let i=Ur(n.node);return i?{propName:i,remainingPath:t?.path??[],hasDefault:_t(e)}:null}if(Ba(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:_t(e)}}return null}function qE(e,t){let n=e.findParent(d=>d.isVariableDeclarator());if(!n?.isVariableDeclarator())return null;let r=n.get("init");if(!r?.isExpression())return null;let o=mf(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=Ba(i)?(a=_t(i),[...s]):(()=>{let d=qn(i,{kind:"identifier",expression:i.identifier.name,base:i.identifier.name,path:[]});return a=d?.hasDefault??!1,d?[{kind:"property",name:d.propName},...d.remainingPath,...s]:null})();if(!c)return null;let l=vt(n.node.id,t.identifier.name);return l?{path:[...c,...l],hasDefault:a||_t(t)}:null}function mf(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=ov(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function Ba(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function ev(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function tv(e){let t=e.identifier.name,n=e.path.getFunctionParent();if(!n)return null;let r=n.get("params"),o=Array.isArray(r)?r:[r];for(let i of o){let a=vt(i.node,t);if(a)return a}return null}function gf(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=Ei(a,e.identifier.name);if(c&&(!n||c.propName===n))return{propName:c.propName,componentName:t,expressionPath:c.expressionPath,displayPath:`${t}.${c.propName}.default`}}}if(e.path.isObjectPattern())for(let a of e.path.get("properties")){if(!a.isObjectProperty())continue;let c=Ur(a.node);if(!c||n&&c!==n)continue;let l=a.get("value");if(!l.isAssignmentPattern())continue;let d=l.get("right");if(d.isExpression())return{propName:c,componentName:t,expressionPath:d,displayPath:`${t}.${c}.default`}}let r=nv(e);if(!r)return null;let o=r.parentPath;if(!o?.isObjectProperty())return null;let i=Ur(o.node);if(!i||n&&i!==n)return null;let s=r.get("right");return s.isExpression()?{propName:i,componentName:t,expressionPath:s,displayPath:`${t}.${i}.default`}:null}function Ei(e,t){if(e.isObjectPattern()){for(let n of e.get("properties"))if(n.isObjectProperty()){let r=Ur(n.node),o=n.get("value");if(o.isAssignmentPattern()){let i=o.get("left"),s=o.get("right");if(r&&!Array.isArray(i)&&vt(i.node,t)&&!Array.isArray(s)&&s.isExpression())return{propName:r,expressionPath:s}}if(!Array.isArray(o)&&(o.isObjectPattern()||o.isArrayPattern())){let i=Ei(o,t);if(i)return i}}else if(n.isRestElement()){let r=n.get("argument");if(!Array.isArray(r)&&(r.isObjectPattern()||r.isArrayPattern())){let o=Ei(r,t);if(o)return o}}}if(e.isArrayPattern())for(let n of e.get("elements")){if(!n)continue;let r=n.isRestElement()&&!Array.isArray(n.get("argument"))?n.get("argument"):n;if(!Array.isArray(r)&&(r.isObjectPattern()||r.isArrayPattern())){let o=Ei(r,t);if(o)return o}}return null}function vt(e,t,n=[]){if(ye.isIdentifier(e))return e.name===t?n:null;if(ye.isObjectPattern(e)){for(let r of e.properties)if(ye.isObjectProperty(r)){let o=Ur(r);if(!o)continue;let i=vt(r.value,t,[...n,{kind:"property",name:o}]);if(i)return i}else if(ye.isRestElement(r)){let o=vt(r.argument,t,n);if(o)return o}}if(ye.isArrayPattern(e))for(let r=0;r<e.elements.length;r+=1){let o=e.elements[r];if(!o)continue;let i=ye.isRestElement(o)?o.argument:o,s=vt(i,t,[...n,{kind:"index",index:r}]);if(s)return s}return ye.isAssignmentPattern(e)?vt(e.left,t,n):null}function nv(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isAssignmentPattern()&&t.node.left===e.path.node?t:null}function rv(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;if(t?.isObjectProperty()&&t.parentPath?.isObjectPattern())return t;let n=t?.isAssignmentPattern()?t.parentPath:null;return n?.isObjectProperty()&&n.parentPath?.isObjectPattern()?n:null}function Ur(e){return e.computed?null:ye.isIdentifier(e.key)?e.key.name:ye.isStringLiteral(e.key)?e.key.value:null}function ov(e){let t=[],n=e;for(;ye.isMemberExpression(n);){if(n.computed)if(ye.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ye.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(ye.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return ye.isIdentifier(n)?{base:n.name,path:t}:null}import*as Sf from"@babel/parser";import Va from"@babel/traverse";import*as er from"@babel/types";import*as ae from"@babel/types";function Ii(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?vi(n,t):null}if(e.isMemberExpression()){let n=uv(e.node),r=iv(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?vi(o,[...r,...t]):null}return e.isAwaitExpression()||ja(e.node)?tn(fv(e.node),t,"awaited or fetched expression"):null}function iv(e){let t=[],n=e;for(;ae.isMemberExpression(n);){if(n.computed)if(ae.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ae.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(ae.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return ae.isIdentifier(n)?t:null}function vi(e,t=[]){let n=sv(e,t);if(n)return n;let r=av(e,t);if(r)return r;let o=cv(e,t);return o||null}function Jr(e){return e?.kind==="api-source"}function sv(e,t){if(e.path.isVariableDeclarator()&&ae.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&$a(s.node)&&t[0]?.kind==="property"&&t[0].name==="data")return tn(e.identifier.name,t,"query hook result.data binding")}if(e.path.isVariableDeclarator()&&ae.isObjectPattern(e.path.node.id)){let s=e.path.node.id.properties.find(c=>ae.isObjectProperty(c)&&xf(c)==="data"&&Kr(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&$a(a.node))return tn(e.identifier.name,t,"query hook data binding")}let n=lv(e);if(!n||xf(n.node)!=="data")return null;let o=n.findParent(s=>s.isVariableDeclarator());if(!o?.isVariableDeclarator())return null;let i=o.get("init");return!i?.isCallExpression()||!$a(i.node)?null:tn(e.identifier.name,t,"query hook data binding")}function av(e,t){if(e.path.isVariableDeclarator()&&ae.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!yf(a.node))return null;let[c,l]=e.path.node.id.elements;return!ae.isIdentifier(c)||c.name!==e.identifier.name||!ae.isIdentifier(l)?null:hf(e,l.name)?tn(e.identifier.name,t,"state setter is updated by API data"):null}if(!e.path.isIdentifier())return null;let n=e.path.parentPath;if(!n?.isArrayPattern())return null;let r=n.parentPath;if(!r?.isVariableDeclarator())return null;let o=r.get("init");if(!o?.isCallExpression()||!yf(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return ae.isIdentifier(s)&&hf(e,s.name)?tn(e.identifier.name,t,"state setter is updated by API data"):null}function cv(e,t){let n=e.path.isVariableDeclarator()?e.path:e.path.findParent(o=>o.isVariableDeclarator());if(!n?.isVariableDeclarator())return null;let r=n.get("init");return r?.isExpression()?r.isAwaitExpression()?tn(e.identifier.name,t,"awaited binding result"):ja(r.node)?tn(e.identifier.name,t,"fetch-backed binding result"):null:null}function lv(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isObjectProperty()?t:t?.isAssignmentPattern()&&t.parentPath?.isObjectProperty()?t.parentPath:null}function Kr(e,t){return ae.isIdentifier(e)?e.name===t:ae.isAssignmentPattern(e)?Kr(e.left,t):ae.isObjectPattern(e)?e.properties.some(n=>ae.isObjectProperty(n)?Kr(n.value,t):Kr(n.argument,t)):ae.isArrayPattern(e)?e.elements.some(n=>!!n&&Kr(ae.isRestElement(n)?n.argument:n,t)):!1}function hf(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){ja(i.node)&&(n=!0),(dv(i.node.callee,t)||i.node.arguments.some(s=>ae.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function $a(e){let t=Ci(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function yf(e){return Ci(e.callee)==="useState"}function ja(e){return ki(e,t=>ae.isCallExpression(t)&&Ci(t.callee)==="fetch")}function uv(e){let t=e;for(;ae.isMemberExpression(t);)t=t.object;return ae.isIdentifier(t)?t.name:null}function xf(e){return e.computed?null:ae.isIdentifier(e.key)?e.key.name:ae.isStringLiteral(e.key)?e.key.value:null}function Ci(e){return ae.isIdentifier(e)?e.name:ae.isMemberExpression(e)&&ae.isIdentifier(e.property)?e.property.name:null}function dv(e,t){return ki(e,n=>ae.isIdentifier(n)&&n.name===t)}function ki(e,t){if(t(e))return!0;let n=ae.VISITOR_KEYS[e.type];if(!n)return!1;for(let r of n){let o=e[r];if(Array.isArray(o)){for(let i of o)if(ae.isNode(i)&&ki(i,t))return!0;continue}if(ae.isNode(o)&&ki(o,t))return!0}return!1}function fv(e){return ae.isIdentifier(e)?e.name:ae.isCallExpression(e)?Ci(e.callee)??"api":ae.isAwaitExpression(e)?"awaited-api":"api"}function tn(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:pv(e,t),reason:n}}function pv(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var Ef=typeof Va=="function"?Va:Va.default;function vf(e,t){let n=If(e);if(!n)return{allowed:!0};let r=!1;return Ef(n,{CallExpression(o){if(!Cf(o.node,t.sourceRange)||!mv(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||Jr(Ii(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function kf(e,t){let n=If(e);if(!n)return{allowed:!0};let r=!1;return Ef(n,{JSXExpressionContainer(o){Cf(o.node,t.sourceRange)&&(er.isJSXEmptyExpression(o.node.expression)||(r=!0,o.stop()))}}),r?{allowed:!1,reason:"Cannot move subtree across files because it depends on local binding expressions"}:{allowed:!0}}function If(e){try{return Sf.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function mv(e){let t=e.callee;return er.isMemberExpression(t)&&er.isIdentifier(t.property)&&t.property.name==="map"}function Cf(e,t){let n=e.loc;return n?bf({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&bf({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function bf(e,t){return e.line!==t.line?e.line<t.line?-1:1:e.column!==t.column?e.column<t.column?-1:1:0}import*as X from"@babel/types";import*as Rf from"@babel/parser";import Ua from"@babel/traverse";import*as Ne from"@babel/types";import*as tr from"node:path";var kt=typeof Ua=="function"?Ua:Ua.default;function Ve(e){try{return Rf.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Ka(e){return e.computed?Ne.isStringLiteral(e.key)||Ne.isNumericLiteral(e.key)?String(e.key.value):null:gv(e.key)}function gv(e){return Ne.isIdentifier(e)?e.name:Ne.isStringLiteral(e)||Ne.isNumericLiteral(e)?String(e.value):null}function Cn(e){return Ne.isParenthesizedExpression(e)||Ne.isTSAsExpression(e)||Ne.isTSSatisfiesExpression(e)||Ne.isTSNonNullExpression(e)||Ne.isTSTypeAssertion(e)?Cn(e.expression):Ne.isExpression(e)?e:null}function Ja(e){if(Ne.isIdentifier(e))return[e.name];if((Ne.isMemberExpression(e)||Ne.isOptionalMemberExpression(e))&&!e.computed&&Ne.isIdentifier(e.property)){let t=Cn(e.object),n=t?Ja(t):null;return n?[...n,e.property.name]:null}return null}function Rn(e,t){return t.startsWith("@/")?t.slice(2).replace(/\\/g,"/"):t.startsWith(".")?tr.normalize(tr.join(tr.dirname(e),t)).replace(/\\/g,"/"):t}function nt(e,t){return Ri(e)===Ri(t)}function Ri(e){let t=nr(e);return t.endsWith("/index")?t.slice(0,-6):t}function nr(e){return e.replace(/\.(tsx|ts|jsx|js)$/,"")}function Pf(e,t,n){let r=_f(e,t);if(Of(e,r),Mf(e,r))return{ok:!1,reason:"Cannot move prop-backed repeat child because the component is referenced through an unsupported value usage"};let o=[];return kt(e,{JSXElement(s){$f(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:wi(o[0])!==n?{ok:!1,reason:"Cannot move prop-backed repeat child because the call site is outside the target component"}:{ok:!0,path:o[0]}}function Af(e,t){let n=new Map,r=i=>{let s=rr(i);return n.has(s)?!1:(n.set(s,i),!0)};r(t);let o=!0;for(;o;){o=!1;for(let i of e)for(let s of hv(i,n))o=r(s)||o}return[...n.values()]}function hv(e,t){let n=[],r=yv(e,t);for(let o of e.ast.program.body){if(X.isExportDefaultDeclaration(o)&&X.isIdentifier(o.declaration)&&(r.get(o.declaration.name)?.length??0)>0){let i=r.get(o.declaration.name)??[];for(let s of i){if(s.namespace){let a=Xr(s.namespace,o.declaration.name,"default");a&&n.push({file:e.file,namespace:a,exportName:s.exportName});continue}n.push({file:e.file,exportName:"default"})}continue}if(X.isExportNamedDeclaration(o)&&o.source&&typeof o.source.value=="string"){let i=Rn(e.file,o.source.value);for(let s of o.specifiers){if(X.isExportNamespaceSpecifier(s)){let l=nn(s.exported);for(let d of t.values())nt(d.file,i)&&n.push({file:e.file,namespace:Xa(l,d.namespace),exportName:d.exportName});continue}if(!X.isExportSpecifier(s))continue;let a=nn(s.local),c=[...t.values()].filter(l=>nt(l.file,i)&&wn(l.namespace,a));if(c.length>0){let l=nn(s.exported);for(let d of c){let f=Xr(d.namespace,a,l);f&&n.push({file:e.file,namespace:f,exportName:d.exportName})}continue}t.has(rr({file:i,exportName:a}))&&n.push({file:e.file,exportName:nn(s.exported)})}continue}if(X.isExportNamedDeclaration(o)&&!o.source){for(let i of o.specifiers){if(!X.isExportSpecifier(i))continue;let s=nn(i.local),a=r.get(s)??[];if(a.length>0){let c=nn(i.exported);n.push({file:e.file,exportName:c});for(let l of a){let d=Xr(l.namespace,s,c);d&&n.push({file:e.file,namespace:d,exportName:l.exportName})}}}continue}if(X.isExportAllDeclaration(o)&&typeof o.source.value=="string"){let i=Rn(e.file,o.source.value),s=o.exported;if(s){let a=nn(s);for(let c of t.values())nt(c.file,i)&&n.push({file:e.file,namespace:Xa(a,c.namespace),exportName:c.exportName});continue}for(let a of t.values())nt(a.file,i)&&(a.namespace||a.exportName!=="default")&&n.push({file:e.file,namespace:a.namespace,exportName:a.exportName})}}return n}function Xa(e,t){return t?`${e}.${t}`:e}function wn(e,t){return e===t||e?.startsWith(`${t}.`)===!0}function Xr(e,t,n){return!wn(e,t)||!e?null:e===t?n:`${n}${e.slice(t.length)}`}function yv(e,t){let n=new Map,r=(i,s)=>{let a=n.get(i)??[];a.push(s),n.set(i,a)};for(let i of e.ast.program.body){if(!X.isImportDeclaration(i)||typeof i.source.value!="string")continue;let s=Rn(e.file,i.source.value);for(let a of i.specifiers){if(X.isImportDefaultSpecifier(a)){let c=t.get(rr({file:s,exportName:"default"}));c&&r(a.local.name,c);let l=[...t.values()].filter(d=>nt(d.file,s)&&wn(d.namespace,"default"));for(let d of l){let f=Xr(d.namespace,"default",a.local.name);f&&r(a.local.name,{...d,namespace:f})}continue}if(X.isImportSpecifier(a)){let c=nn(a.imported),l=[...t.values()].filter(f=>nt(f.file,s)&&wn(f.namespace,c));for(let f of l)r(a.local.name,f);let d=t.get(rr({file:s,exportName:c}));d&&r(a.local.name,d);continue}if(X.isImportNamespaceSpecifier(a))for(let c of t.values())nt(c.file,s)&&r(a.local.name,{...c,namespace:Xa(a.local.name,c.namespace)})}}let o=!0;for(;o;){o=!1;for(let i of e.ast.program.body)if(X.isVariableDeclaration(i))for(let s of i.declarations){if(!X.isIdentifier(s.id)||!s.init)continue;let a=Cn(s.init);if(!a||!X.isIdentifier(a))continue;let c=n.get(a.name)??[];if(c.length===0)continue;let l=n.get(s.id.name)??[],d=new Set(l.map(rr));for(let f of c){let m=Xr(f.namespace,a.name,s.id.name),u=m?{...f,namespace:m}:f,g=rr(u);d.has(g)||(r(s.id.name,u),d.add(g),o=!0)}}}return n}function rr(e){let t=e.namespace?`${e.namespace}.${e.exportName}`:e.exportName;return`${Ri(e.file)}#${t}`}function nn(e){return X.isIdentifier(e)?e.name:e.value}function Tf(e,t){for(let n of e.program.body){if(X.isExportDefaultDeclaration(n)){let o=n.declaration;if((X.isFunctionDeclaration(o)||X.isClassDeclaration(o))&&o.id?.name===t)return{exportName:"default"};if(X.isIdentifier(o)&&o.name===t)return{exportName:"default"}}if(!X.isExportNamedDeclaration(n))continue;let r=n.declaration;if((X.isFunctionDeclaration(r)||X.isClassDeclaration(r))&&r.id?.name===t)return{exportName:t};if(X.isVariableDeclaration(r)){for(let o of r.declarations)if(X.isIdentifier(o.id,{name:t}))return{exportName:t}}for(let o of n.specifiers){if(!X.isExportSpecifier(o)||o.local.name!==t)continue;return{exportName:X.isIdentifier(o.exported)?o.exported.name:o.exported.value}}}return null}function Ha(e){let t=xv(e),n=[],r=Mf(e.ast,t);return kt(e.ast,{JSXElement(o){nt(e.file,e.sourceFile)&&wi(o)===e.sourceComponent||$f(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function Ff(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function _f(e,t){let n=Ff();return kt(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function xv(e){let t=Ff();return nt(e.file,e.sourceFile)&&bv(t,_f(e.ast,e.sourceComponent)),kt(e.ast,{ImportDeclaration(n){let r=n.node,o=r.source.value;if(typeof o!="string")return;let i=Rn(e.file,o),s=e.componentIdentities.filter(a=>nt(a.file,i));if(s.length!==0)for(let a of r.specifiers){let c=n.scope.getBinding(a.local.name);if(c){if(X.isImportDefaultSpecifier(a)&&s.some(l=>l.exportName==="default")&&t.localBindings.add(c),X.isImportDefaultSpecifier(a)){let l=s.filter(d=>wn(d.namespace,"default"));if(l.length>0){let d=t.namespaceMembers.get(c)??new Set;for(let f of l){let m=Nf(f,"default");m&&d.add(m)}t.namespaceMembers.set(c,d)}continue}if(X.isImportSpecifier(a)){let l=X.isIdentifier(a.imported)?a.imported.name:a.imported.value,d=s.filter(f=>wn(f.namespace,l));if(d.length>0){let f=t.namespaceMembers.get(c)??new Set;for(let m of d){let u=Nf(m,l);u&&f.add(u)}t.namespaceMembers.set(c,f);continue}s.some(f=>!f.namespace&&f.exportName===l)&&t.localBindings.add(c);continue}if(X.isImportNamespaceSpecifier(a))for(let l of s){let d=l.namespace?`${l.namespace}.${l.exportName}`:l.exportName,f=t.namespaceMembers.get(c)??new Set;f.add(d),t.namespaceMembers.set(c,f)}}}}}),Of(e.ast,t),t}function bv(e,t){e.hasUnsupportedAlias||=t.hasUnsupportedAlias;for(let n of t.localBindings)e.localBindings.add(n);for(let[n,r]of t.namespaceMembers){let o=e.namespaceMembers.get(n)??new Set;for(let i of r)o.add(i);e.namespaceMembers.set(n,o)}}function Of(e,t){kt(e,{VariableDeclarator(n){if(!n.node.init)return;let r=Cn(n.node.init);if(r){if(X.isIdentifier(n.node.id)){let o=Nn(r,t,n),i=n.scope.getBinding(n.node.id.name);o&&i&&za(t,i,o);return}if(X.isObjectPattern(n.node.id)){let o=Nn(r,t,n);o?.unsupported||o?.local?t.hasUnsupportedAlias=!0:o&&o.namespaceMembers.size>0&&Bf(n.node.id,o.namespaceMembers,t,n)}}}})}function Mf(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return kt(e,{ReferencedIdentifier(r){if(n){r.stop();return}Sv(r)||!r.isIdentifier()||!Df(r,t)||Ev(r,t)||vv(r)||(n=!0,r.stop())}}),n}function Sv(e){let t=e;for(;t.parentPath?.isJSXMemberExpression();)t=t.parentPath;let n=t.parentPath;return!!(n?.isJSXOpeningElement()&&n.node.name===t.node||n?.isJSXClosingElement()&&n.node.name===t.node)}function Df(e,t){let n=e.scope.getBinding(e.node.name);if(!n)return null;let r=e;for(;r.parentPath?.isMemberExpression()&&r.parentPath.node.object===r.node&&!r.parentPath.node.computed;)r=r.parentPath;return t.localBindings.has(n)||t.namespaceMembers.has(n)&&Nn(r.node,t,r)?r:null}function Ev(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!wf(e,r))return!1;let o=Df(e,t);if(!o)return!1;if(Cn(r.node)===o.node)return!!Nn(r.node,t,r);let s=e.findParent(c=>c.isObjectProperty());if(!s?.isObjectProperty())return!1;let a=s.get("value");return a.isExpression()&&wf(e,a)&&!!Nn(a.node,t,a)}function vv(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function wf(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function Nn(e,t,n){let r=Cn(e);if(!r)return null;if(X.isIdentifier(r)){let a=n.scope.getBinding(r.name);if(!a)return null;let c=t.namespaceMembers.get(a);return t.localBindings.has(a)?{local:!0,namespaceMembers:new Set,unsupported:!1}:c?{local:!1,namespaceMembers:new Set(c),unsupported:!1}:null}if(X.isObjectExpression(r))return kv(r,t,n);let o=Ja(r);if(!o||o.length===0)return null;let i=n.scope.getBinding(o[0]);if(!i)return null;let s=t.namespaceMembers.get(i);return s?Lf(s,o.slice(1).join(".")):null}function kv(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!X.isObjectProperty(i))continue;let s=Ka(i);if(!s||!X.isExpression(i.value)){X.isExpression(i.value)&&(o||=Nn(i.value,t,n)!==null);continue}let a=Nn(i.value,t,n);if(a){o||=a.unsupported,a.local&&r.add(s);for(let c of a.namespaceMembers)r.add(`${s}.${c}`)}}return r.size>0||o?{local:!1,namespaceMembers:r,unsupported:o}:null}function Lf(e,t){if(!t)return{local:!1,namespaceMembers:new Set(e),unsupported:!1};let n=new Set,r=!1;for(let o of e){if(o===t){r=!0;continue}o.startsWith(`${t}.`)&&n.add(o.slice(t.length+1))}return r||n.size>0?{local:r,namespaceMembers:n,unsupported:!1}:null}function za(e,t,n){if(e.hasUnsupportedAlias||=n.unsupported,n.local&&e.localBindings.add(t),n.namespaceMembers.size>0){let r=e.namespaceMembers.get(t)??new Set;for(let o of n.namespaceMembers)r.add(o);e.namespaceMembers.set(t,r)}}function Bf(e,t,n,r){for(let o of e.properties){if(X.isRestElement(o)){if(X.isIdentifier(o.argument)){let c=r.scope.getBinding(o.argument.name);c&&za(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!X.isObjectProperty(o))continue;let i=Ka(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=Lf(t,i);if(!s)continue;n.hasUnsupportedAlias||=s.unsupported;let a=X.isAssignmentPattern(o.value)?o.value.left:o.value;if(X.isIdentifier(a)){let c=r.scope.getBinding(a.name);c&&za(n,c,s);continue}if(X.isObjectPattern(a)&&s.namespaceMembers.size>0){Bf(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function Nf(e,t){if(!wn(e.namespace,t))return null;if(e.namespace===t)return e.exportName;let n=e.namespace?.slice(t.length+1);return n?`${n}.${e.exportName}`:e.exportName}function $f(e,t){let n=e.node.openingElement.name;if(X.isJSXIdentifier(n)){let o=e.scope.getBinding(n.name);return!!(o&&t.localBindings.has(o))}let r=jf(n);if(r&&r.length>1){let o=e.scope.getBinding(r[0]);return o?t.namespaceMembers.get(o)?.has(r.slice(1).join("."))===!0:!1}return!1}function jf(e){if(X.isJSXIdentifier(e))return[e.name];if(X.isJSXMemberExpression(e)){let t=jf(e.object);return t?[...t,e.property.name]:null}return null}function wi(e){let t=e.getFunctionParent();if(!t)return null;if(t.isFunctionDeclaration())return t.node.id?.name??null;if(t.isArrowFunctionExpression()||t.isFunctionExpression()){let n=t.parentPath;if(n?.isVariableDeclarator()&&X.isIdentifier(n.node.id))return n.node.id.name}return null}function Vf(e,t){let n=Ve(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=Ha({ast:n,file:t.file,sourceFile:t.file,sourceComponent:t.tag,componentIdentities:[{file:t.importedFrom,exportName:t.exportName}]});return r.hasUnsafeReference?Number.POSITIVE_INFINITY:r.callSites.length}function he(e){return e.structuralPath.includes("#repeat:")||e.isRepeatItemRoot||e.isRepeatRegion?{kind:"jsx-node",strategy:"source-range",sourceRange:e.sourceRange}:{kind:"jsx-node",strategy:"structural-path",file:e.file,component:e.component,structuralPath:e.structuralPath,expectedRange:e.sourceRange}}function pe(e){return typeof e.start=="number"&&typeof e.end=="number"?{start:e.start,end:e.end}:null}function Ot(e,t){let n=pe(e);return!!(n&&rt(t,n))}function rt(e,t){return t.start>=e.start&&t.end<=e.end}function yt(e,t){let n=se(e,he(t));return n.ok&&n.match.path.isJSXElement()?n.match.path:Ni(e,t)}function or(e,t){let n=pe(t);return n?e.slice(n.start,n.end):""}function Uf(e,t){return e.start===t.start&&e.end===t.end}function Ni(e,t){let n=null;return kt(e,{JSXElement(r){let o=r.node.loc;o&&o.start.line===t.sourceRange.startLine&&o.start.column===t.sourceRange.startColumn&&o.end.line===t.sourceRange.endLine&&o.end.column===t.sourceRange.endColumn&&(n=r,r.stop())}}),n}function Pi(e,t){return Wa(e,t).length>0}function Ai(e,t){let n=pe(e.node),r=pe(t.node);if(!n||!r)return!1;let o=e.parentPath;for(;o;){if((o.isIfStatement()||o.isSwitchCase())&&(!!!t.findParent(s=>s.node===o?.node)||o.isIfStatement()&&!Iv(o,n,r)))return!0;o=o.parentPath}return!1}function Iv(e,t,n){let r=pe(e.node.consequent);if(r&&rt(r,t)&&!rt(r,n))return!1;let o=e.node.alternate?pe(e.node.alternate):null;return!(o&&rt(o,t)&&!rt(o,n))}function Wa(e,t){let n=pe(e.node);if(!n)return[];let r=[],o=e.parentPath;for(;o;){let i=!!t.findParent(s=>s.node===o?.node);if(!i&&o.isConditionalExpression()){let s=pe(o.node.consequent),a=pe(o.node.alternate);s&&n.start>=s.start&&n.end<=s.end?r.push({kind:"conditional",path:o,conditionPath:o.get("test"),branch:"consequent"}):a&&n.start>=a.start&&n.end<=a.end&&r.push({kind:"conditional",path:o,conditionPath:o.get("test"),branch:"alternate"})}else if(!i&&o.isLogicalExpression()&&Ga(o.node.operator)){let s=pe(o.node.right);s&&n.start>=s.start&&n.end<=s.end&&r.push({kind:"logical",path:o,conditionPath:o.get("left"),operator:o.node.operator})}o=o.parentPath}return r}function Ga(e){return e==="&&"||e==="||"||e==="??"}function Kf(e,t){let n=pe(e.consequent);if(n&&rt(n,t))return n;let r=pe(e.alternate);return r&&rt(r,t)?r:null}function Jf(e){if(!e.knownSourceFiles)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without project-wide source visibility"};if(!e.routeEntryFiles)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without registered route visibility"};let t=new Set(e.knownSourceFiles.map(a=>nr(a.file)));if(!t.has(nr(e.sourceFile))||!t.has(nr(e.targetFile)))return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without source and target file visibility"};for(let a of e.routeEntryFiles)if(!t.has(nr(a)))return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component until all registered route entries are loaded"};let n=Tf(e.sourceAst,e.sourceComponent);if(!n)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without an exported source component identity"};let r=[];for(let a of e.knownSourceFiles){let c=Ve(a.content);if(!c)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because a loaded source file cannot be parsed"};r.push({file:a.file,ast:c})}let o=Af(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=Ha({ast:a.ast,file:a.file,sourceFile:e.sourceFile,sourceComponent:e.sourceComponent,componentIdentities:o});if(c.hasUnsafeReference)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because the component has unsupported value usages"};i.push(...c.callSites)}if(i.length!==1)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without a single project-wide component call site"};let[s]=i;return!nt(s.file,e.targetFile)||wi(s.path)!==e.targetComponent?{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because the only call site is outside the target component"}:{ok:!0,callSitePath:s.path}}import{SiteEditSetPropsParamsSchema as Av}from"@vcp-dev/contracts";function Ti(e){let{state:t,scope:n,operation:r,selectionRef:o,repeatTarget:i}=e;if(!t||t.status==="blocked")return{ok:!1,code:"readonly-property",reason:t?.diagnostic?.message??"No safe property write target is available"};if(t.status==="binding"){let s=t.target;if(s?.kind!=="value-binding"||!s.target.locator||n!=="selection"||r!=="set")return zr();let a=s.target,c=a.locator;if(a.sourceKind==="repeat-template"){let l=o?.instanceIndex;if(l===void 0)return zr();let d=Cv(a,l,o?.instanceCount);if(!d)return zr();c=d}return{ok:!0,target:{kind:"value-binding",file:a.file,locator:c}}}return o?.instanceIndex!==void 0?n!=="selection"||!i?.ok?{ok:!1,code:"repeat-target-failed",reason:i&&!i.ok?i.reason:"No safe selected repeat property target is available"}:{ok:!0,target:{kind:"repeat-property",target:i}}:e.isRepeat&&n!=="template"||t.status==="direct"&&t.target?.kind!=="jsx-attribute"?zr():{ok:!0,target:{kind:"jsx-attribute"}}}function zr(){return{ok:!1,code:"unsupported-binding",reason:"Property does not have a safe typed binding write target for this scope and operation"}}function Cv(e,t,n){if(!e.locator||!Number.isInteger(t)||t<0)return null;let r=e.collectionPathMap?.length??e.collectionIndexMap?.length;if(r!==void 0&&(t>=r||n!==void 0&&n!==r))return null;let o=e.collectionPathMap?.[t];if(o)return{...e.locator,path:o};let i=e.locator.path??[],s=i.findLastIndex(c=>c.kind==="index");if(s<0)return null;let a=i.map((c,l)=>l===s&&c.kind==="index"?{kind:"index",index:e.collectionIndexMap?.[t]??t}:c);return{...e.locator,path:a}}import*as Mt from"@babel/types";import{SiteEditSetPropsParamsSchema as Rv}from"@vcp-dev/contracts";function Xf(e){let t=e.changes??(e.change?[e.change]:[]);if(!Rv.safeParse({kind:"set-props",scope:"selection",changes:t}).success)return Hr("invalid-change","Repeat property changes are invalid");if(t.length!==1||t[0].name!==e.target.propertyName)return Hr("target-mismatch","A repeat property plan must contain exactly one change for its target property");let r=t[0];if(r.operation==="remove"&&e.target.propertyState==="missing")return{ok:!0,steps:[]};let o=we(e.source,"value");if(!o.ok)return Hr("invalid-target","Repeat property source could not be parsed");let i=[{type:"set-property-binding",order:0,file:e.target.templateFile,locator:e.target.targetElementLocator,name:r.name,object:e.target.callbackItemName,property:r.name}];for(let[s,a]of e.target.parentObjectLocators.entries()){let c=se(o.ast,a);if(!c.ok||!c.match.path.isObjectExpression())return Hr("unsupported-object",`Repeat item ${s} is not a writable object expression`);let l=s===e.target.sourceItemIndex?wv(r):Nv(c.match.path.node,r.name);if(!l)return Hr("unsupported-property-value",`Repeat item ${s} has an unsupported value for '${r.name}'`);i.push({type:"upsert-object-property",order:i.length,file:e.target.sourceFile,locator:a,name:r.name,value:l})}return{ok:!0,steps:i}}function wv(e){return e.operation==="set"?{kind:"value",value:e.value}:{kind:"undefined"}}function Nv(e,t){let n=e.properties.filter(i=>Mt.isObjectProperty(i)&&Pv(i.key)===t);if(n.length>1)return null;let r=n[0];if(!r)return{kind:"undefined"};if(!Mt.isExpression(r.value))return null;let o=Ft(r.value);return o.status==="undefined"?{kind:"undefined"}:o.status!=="resolved"?null:{kind:"value",value:o.value}}function Pv(e){return Mt.isIdentifier(e)?e.name:Mt.isStringLiteral(e)?e.value:Mt.isNumericLiteral(e)?String(e.value):null}function Hr(e,t){return{ok:!1,errorCode:e,reason:t}}function zf(e){if(e.change.name!=="className"&&e.change.name!=="class")return Wr("unsupported-owner",`No specialized property owner is available for '${e.change.name}'`);let t=e.classNameSource;if(!t||t.filePath!==e.node.file)return Wr("owner-source-unavailable","className source details are unavailable for the selected node");if(e.change.name==="class"&&t.sourceKind==="missing")return Wr("owner-source-unavailable","The class alias requires an existing className source");if(t.sourceKind==="expression")return Wr("owner-source-dynamic","Dynamic className expressions are not writable by the generic property owner");if(e.change.operation==="set"&&typeof e.change.value!="string")return Wr("owner-value-invalid","The className owner accepts only string values");if(e.change.operation==="remove"&&t.sourceKind==="missing")return{ok:!0,steps:[]};let n=t.sourceKind==="missing",r=e.change.operation==="set"?`className=${JSON.stringify(e.change.value)}`:null,o=e.change.operation==="remove"?"remove-attribute":n?"create-attribute":"replace-static-classname";return{ok:!0,steps:[{type:"set-class-name-source",order:0,file:e.node.file,request:{kind:"set-class-name-source",key:e.node.key,filePath:e.node.file,expectedVersion:t.version,oldAttrRaw:t.attrRaw,oldAttrRange:t.attrRange,openingElementRange:t.openingElementRange,newAttrRaw:r,intent:{source:"style-panel",operation:o}}}]}}function Wr(e,t){return{ok:!1,errorCode:e,reason:t}}async function Wf(e){let t=Av.safeParse({kind:"set-props",scope:e.scope,changes:e.changes});if(!t.success)return Pn("invalid-change","Typed property changes are invalid");let n=[];for(let r of t.data.changes){let o=await Tv(e,r);if(o){if(!o.ok)return Pn("owner-plan-failed",o.reason);Hf(n,o.steps);continue}let i=await e.getPropertyState(e.node.key,r.name,e.selectionRef);if(!i)return Pn("missing-property-state",`No authoritative property state is available for '${r.name}'`);if(i.status==="blocked")return Pn("readonly-property",i.diagnostic?.message??`Property '${r.name}' is not writable`);if(Ov(i,r)||r.operation==="remove"&&i.status==="missing")continue;let s=e.selectionRef?.instanceIndex!==void 0&&i.status!=="binding"?await e.getRepeatPropertyTarget?.(e.node.key,r.name,e.selectionRef):void 0,a=Ti({state:i,scope:e.scope,operation:r.operation,selectionRef:e.selectionRef,repeatTarget:s});if(!a.ok)return Pn(a.code,a.reason);let c=a.target;if(c.kind==="value-binding"&&r.operation==="set"){Ya(n,{type:"update-value",order:n.length,file:c.file,locator:c.locator,value:r.value});continue}if(c.kind==="repeat-property"){let l=Xf({source:e.getFileContent(c.target.sourceFile),target:c.target,changes:[r]});if(!l.ok)return Pn("repeat-target-failed",l.reason);Hf(n,l.steps);continue}Ya(n,{type:"set-property-changes",order:n.length,file:e.node.file,locator:Fv(e.node),scope:e.scope,changes:[r]})}return n.forEach((r,o)=>{r.order=o}),_v(n)?Pn("step-conflict","Property changes resolve to conflicting write steps"):{ok:!0,steps:n}}async function Tv(e,t){return t.name!=="className"&&t.name!=="class"?null:zf({node:e.node,change:t,classNameSource:e.classNameSource})}function Fv(e){return e.structuralPath.includes("#repeat:")||e.key.includes("::repeat-item#")?{kind:"jsx-node",strategy:"source-range",sourceRange:e.sourceRange}:{kind:"jsx-node",strategy:"structural-path",file:e.file,component:e.component,structuralPath:e.structuralPath,expectedRange:e.sourceRange}}function _v(e){let t=new Set;for(let n of e){let{order:r,...o}=n,i=`${n.file}:${n.type}:${JSON.stringify(o)}`;if(t.has(i))return!0;t.add(i)}return!1}function Hf(e,t){for(let n of t)Ya(e,{...n,order:e.length})}function Ya(e,t){if(t.type==="set-property-changes"){let n=e.find(r=>r.type==="set-property-changes"&&r.file===t.file&&JSON.stringify(r.locator)===JSON.stringify(t.locator)&&r.scope===t.scope);if(n){n.changes.push(...t.changes);return}}e.push(t)}function Ov(e,t){if(t.operation!=="set"||e.status!=="direct")return!1;let n=e.attribute?.resolution;return n?.status==="resolved"?Za(n.value,t.value):e.attribute?.source===null&&e.attribute.value===t.value}function Za(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((n,r)=>Za(n,t[r]));if(e&&t&&typeof e=="object"&&typeof t=="object"){let n=e,r=t,o=Object.keys(n);return o.length===Object.keys(r).length&&o.every(i=>Za(n[i],r[i]))}return!1}function Pn(e,t){return{ok:!1,errorCode:e,reason:t}}import*as sr from"@babel/types";import*as W from"@babel/types";function Qa(e,t,n){let r=yt(t,n);return r?Dt(e,r):null}function Dt(e,t){let n=t.findParent(h=>h.isArrowFunctionExpression()||h.isFunctionExpression());if(!n||!n.isArrowFunctionExpression()&&!n.isFunctionExpression())return null;let r=n,o=r.parentPath;if(!o||!o.isCallExpression()&&!o.isOptionalCallExpression())return null;let i=o;if(i.node.arguments.findIndex(h=>h===r.node)!==0)return null;let a=i.get("callee");if(!a.isMemberExpression()&&!a.isOptionalMemberExpression())return null;let c=a.node,l=c.property;if(!W.isIdentifier(l)||l.name!=="map"||c.computed)return null;let d=a.get("object"),f=or(e,d.node),m=r.node.params.map(h=>or(e,h)),u=pe(i.node),g=pe(r.node);return!f||m.some(h=>h.length===0)||!u||!g?null:{callStart:u.start,callEnd:u.end,callbackStart:g.start,callbackEnd:g.end,collectionExpression:f,callbackParams:m,mapOperator:W.isOptionalMemberExpression(c)&&c.optional?"?.map":".map",collectionNeedsParens:Fi(d.node),callbackPath:r,collectionPath:d}}function Gr(e,t){return!!(e&&t&&e.callStart===t.callStart&&e.callEnd===t.callEnd&&e.callbackStart===t.callbackStart&&e.callbackEnd===t.callbackEnd)}function Mv(e,t){let n=pe(e.node);return n?Dv(t).some(r=>{let o=pe(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function Dv(e){let t=e.callbackPath.node.body;return W.isBlockStatement(t)?rn(t.body):on(t)}function rn(e){let t=[];for(let n of e){if(W.isReturnStatement(n)){n.argument&&t.push(...on(n.argument));continue}if(W.isBlockStatement(n)){t.push(...rn(n.body));continue}if(W.isIfStatement(n)){let r=W.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent];if(t.push(...rn(r)),n.alternate){let o=W.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];t.push(...rn(o))}continue}if(W.isSwitchStatement(n)){for(let r of n.cases)t.push(...rn(r.consequent));continue}W.isTryStatement(n)&&(t.push(...rn(n.block.body)),n.handler&&t.push(...rn(n.handler.body.body)),n.finalizer&&t.push(...rn(n.finalizer.body)))}return t}function on(e){return W.isJSXElement(e)?Lv(e)?Gf(e.children):[e]:W.isJSXFragment(e)?Gf(e.children):W.isParenthesizedExpression(e)||W.isTSAsExpression(e)||W.isTSSatisfiesExpression(e)||W.isTSNonNullExpression(e)||W.isTSTypeAssertion(e)?on(e.expression):W.isConditionalExpression(e)?[...on(e.consequent),...on(e.alternate)]:W.isLogicalExpression(e)&&Ga(e.operator)?on(e.right):[]}function Gf(e){return e.flatMap(t=>W.isJSXElement(t)||W.isJSXFragment(t)?on(t):W.isJSXExpressionContainer(t)&&(W.isJSXElement(t.expression)||W.isJSXFragment(t.expression)||W.isConditionalExpression(t.expression)||W.isLogicalExpression(t.expression))?on(t.expression):[])}function Lv(e){let t=e.openingElement.name;return W.isJSXIdentifier(t)?t.name==="Fragment":W.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function Yf(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function Fi(e){return!(W.isIdentifier(e)||W.isThisExpression(e)||W.isMemberExpression(e)||W.isOptionalMemberExpression(e)||W.isCallExpression(e)||W.isOptionalCallExpression(e))}function Zf(e){let t=e.parentPath;if(!t||!t.isCallExpression()&&!t.isOptionalCallExpression()||t.node.arguments[0]!==e.node)return!1;let n=t.node.callee;return(W.isMemberExpression(n)||W.isOptionalMemberExpression(n))&&W.isIdentifier(n.property)&&n.property.name==="map"&&!n.computed}function ir(e,t){let n=Ve(e);if(!n)return t.isRepeatItemRoot===!0;let r=se(n,he(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Ni(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=Dt(e,o);return i?Mv(o,i):t.isRepeatItemRoot===!0}function Qf(e,t){let n=Ve(e);if(!n)return!1;let r=se(n,he(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Ni(n,t);return o?!!o.findParent(i=>{if(!i.isCallExpression()&&!i.isOptionalCallExpression())return!1;let s=i.node.callee;return(W.isMemberExpression(s)||W.isOptionalMemberExpression(s))&&W.isIdentifier(s.property)&&s.property.name==="map"}):!1}import*as ke from"@babel/types";function qa(e){if(ke.isJSXIdentifier(e))return/^[A-Z]/.test(e.name)?e.name:null;if(ke.isJSXMemberExpression(e)){let t=e;for(;ke.isJSXMemberExpression(t);)t=t.object;return t.name}return null}function Bv(e,t){let n=pe(e.node);if(!n)return[];let r=new Set,o=(i,s)=>{let a=s.scope.getBinding(i);!a||Ot(a.path.node,n)||sn(a,i,t)||r.add(i)};return e.traverse({ReferencedIdentifier(i){o(i.node.name,i)},JSXOpeningElement(i){let s=qa(i.node.name);s&&o(s,i)}}),[...r].sort()}function ec(e,t,n){let r=Ve(e);if(!r)return{ok:!0};let o=se(r,he(t));if(!o.ok||!o.match.path.isJSXElement())return{ok:!0};let i=se(r,he(n));if(!i.ok||!i.match.path.isJSXElement())return{ok:!0};let s=kr(o.match.path,i.match.path);if(Pi(s,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let a=Bv(s,i.match.path);return a.length>0?{ok:!1,bindingNames:a}:{ok:!0}}function ep(e){let t=e;for(;ke.isTSQualifiedName(t);)t=t.left;return ke.isIdentifier(t)?t.name:null}function Yr(e,t){e.isIdentifier()&&e.isReferencedIdentifier()&&t(e),e.traverse({ReferencedIdentifier(n){n.isIdentifier()&&t(n)}})}function _i(e){let t=[],n=r=>{if(r){if(ke.isIdentifier(r)){t.push(r.name);return}if(ke.isObjectPattern(r)){for(let o of r.properties){if(ke.isRestElement(o)){n(o.argument);continue}ke.isObjectProperty(o)&&n(o.value)}return}if(ke.isArrayPattern(r)){for(let o of r.elements)n(o);return}if(ke.isAssignmentPattern(r)){n(r.left);return}if(ke.isRestElement(r)){n(r.argument);return}ke.isTSParameterProperty(r)&&n(r.parameter)}};return n(e),t}function tc(e,t){let n=pe(e.node),r=pe(t.node);if(!n||!r)return{ok:!1,reason:"Cannot move repeat-backed child out of a component without proving the component call-site render scope"};let o=qf(e),i=qf(t);if(!o||!i||!Uf(o,i))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is rendered in a different return branch"};let s=e.parentPath;for(;s;){if(s.isConditionalExpression()){let a=Kf(s.node,n);if(a&&!rt(a,r))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is conditionally rendered outside the target scope"}}else if(s.isLogicalExpression()){let a=pe(s.node.right);if(a&&rt(a,n)&&!rt(a,r))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is conditionally rendered outside the target scope"}}else if((s.isArrowFunctionExpression()||s.isFunctionExpression())&&Zf(s)){let a=pe(s.node.body)??pe(s.node);if(a&&!rt(a,r))return{ok:!1,reason:"Cannot move repeat-backed child out of a component because the component call site is repeated outside the target scope"}}s=s.parentPath}return{ok:!0}}function qf(e){let t=e;for(;t;){if(t.isReturnStatement())return t.node.argument?pe(t.node.argument):null;if(t.isArrowFunctionExpression()&&(ke.isJSXElement(t.node.body)||ke.isJSXFragment(t.node.body)||ke.isConditionalExpression(t.node.body)||ke.isLogicalExpression(t.node.body)))return pe(t.node.body);t=t.parentPath}return null}function sn(e,t,n){return n.scope.getBinding(t)===e}function nc(e,t,n,r={}){if(!r.preserveConditionalBoundary&&Pi(e,t))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let o=pe(e.node);if(!o)return{ok:!0};let i=new Set(n.callbackPath.node.params.flatMap(c=>_i(c)).map(c=>n.callbackPath.scope.getBinding(c)?.path.node).filter(Boolean)),s=new Set,a=(c,l)=>{let d=l.scope.getBinding(c);!d||Ot(d.path.node,o)||i.has(d.path.node)||sn(d,c,t)||s.add(c)};return e.traverse({ReferencedIdentifier(c){a(c.node.name,c)},JSXOpeningElement(c){let l=qa(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function rc(e,t,n){let r=pe(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>_i(s)).map(s=>n.callbackPath.scope.getBinding(s)?.path.node).filter(Boolean)),i=new Set;return Yr(e,s=>{let a=s.scope.getBinding(s.node.name);!a||Ot(a.path.node,r)||o.has(a.path.node)||sn(a,s.node.name,t)||i.add(s.node.name)}),i.size>0?{ok:!1,bindingNames:[...i].sort()}:{ok:!0}}function tp(e,t){let n=new Set(e.callbackPath.node.params.flatMap(a=>_i(a)).map(a=>e.callbackPath.scope.getBinding(a)?.path.node).filter(Boolean)),r=new Set,o=(a,c)=>{let l=c.scope.getBinding(a);!l||n.has(l.path.node)||sn(l,a,t)||r.add(a)},i=e.callbackPath.get("params"),s=Array.isArray(i)?i:[i];for(let a of s)a.traverse({ReferencedIdentifier(c){o(c.node.name,c)},TSTypeReference(c){let l=c.node.typeName;if(sr.isIdentifier(l))o(l.name,c);else{let d=ep(l);d&&o(d,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function oc(e,t){let n=pe(e.node),r=new Set;return Yr(e,o=>{let i=o.scope.getBinding(o.node.name);i&&(n&&Ot(i.path.node,n)||sn(i,o.node.name,t)||r.add(o.node.name))}),r.size>0?{ok:!1,bindingNames:[...r].sort(),reason:"Cannot move repeat-backed child because the repeat collection is not visible at the target"}:{ok:!0}}function np(e){let t=[];for(let n of e.callbackPath.node.params){if(sr.isIdentifier(n)){t.push(n.name);continue}if(sr.isRestElement(n)&&sr.isIdentifier(n.argument)){t.push(`...${n.argument.name}`);continue}return{ok:!1,reason:"Cannot move cross-file repeat child because the callback parameters are not portable to the target file"}}return{ok:!0,callbackParams:t}}function rp(e,t){return{...e,callbackParams:t}}function ic(e,t){return`${e.collectionNeedsParens?`(${e.collectionExpression})`:e.collectionExpression}${e.mapOperator}((${e.callbackParams.join(", ")}) => ${t})`}function Zr(e,t,n){return n?.finalSource?.kind==="component-prop"?"Cannot edit prop-backed node structure with a generic node operation":t?.kind==="value-binding"&&t.sourceKind==="repeat-template"&&!e.isRepeatItemRoot?"Cannot edit repeat-backed child node structure with a generic node operation":t?.kind==="value-binding"&&t.file!==e.file&&t.sourceKind!=="repeat-template"?"Cannot edit upstream-bound node structure with a generic node operation":null}function op(e,t,n,r){return e.parentKey===t.key&&e.file===t.file&&n?.kind==="value-binding"&&n.file!==e.file&&n.sourceKind!=="repeat-template"&&r?.finalSource?.kind!=="component-prop"}function An(e){return{file:e.file,component:e.component}}function $v(e){return e.target.kind==="node"?e.target.key:null}function jv(e){return"kind"in e}function Oi(e){return!jv(e)}function uc(e,t){let n=Li.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Li.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function sc(e,t){let n=e.getFileContent(t.file);if(!n)return;let r=At(n,he(t));if(r.ok)return n.slice(r.match.start,r.match.end)}function fc(e){if(!e.component)return"Component";if(e.component.exportName!=="default")return e.component.exportName;let t=e.component.source.replace(/\\/g,"/").replace(/\/$/,""),n=t.split("/").pop()||"Component",i=(n==="index"?t.split("/").slice(-2,-1)[0]||"Component":n).replace(/\.[^.]+$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean);return i.length===0?"Component":i.map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}function Vv(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function Uv(e){let t=e.trim();if(!/^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?$/.test(t))return null;let n=Number(t);return Number.isFinite(n)?n:null}function ac(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function Kv(e){let t=Pf(e.ast,e.sourceNode.component,e.targetParent.component);if(!t.ok)return{ok:!1,reason:t.reason};let n=tc(t.path,e.targetParentPath);if(!n.ok)return{ok:!1,reason:n.reason};let r=Jv({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=fp(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?Fi(o):!0}}}function Jv(e){let t=pe(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move prop-backed repeat child because the collection expression cannot be mapped"};let n=new Map,r=new Set,o=null,i=s=>{if(o)return;let a=s.scope.getBinding(s.node.name);if(!a||Ot(a.path.node,t))return;let c=Hv(s,a,t);if(c){if(c.hasDefault){o="Cannot move prop-backed repeat child because the collection prop has a default value that cannot be preserved safely";return}let l=Gv(e.callSitePath,c.propName,e.source);if(!l.ok){o=l.reason;return}let d=Xv(l.expression,c.remainingPath);if(!d){o="Cannot move prop-backed repeat child because the mapped prop path is not a portable expression";return}let f=oc(l.expressionPath,e.targetParentPath);if(!f.ok){o=f.reason??`Cannot move prop-backed repeat child because the mapped prop source is not visible at the target: ${f.bindingNames.join(", ")}`;return}n.set(`${c.range.start}:${c.range.end}`,{...c.range,text:d});return}sn(a,s.node.name,e.targetParentPath)||r.add(s.node.name)};return e.sourceContext.collectionPath.isIdentifier()&&e.sourceContext.collectionPath.isReferencedIdentifier()&&i(e.sourceContext.collectionPath),e.sourceContext.collectionPath.traverse({ReferencedIdentifier(s){s.isIdentifier()&&i(s)}}),o?{ok:!1,reason:o}:r.size>0?{ok:!1,reason:`Cannot move prop-backed repeat child because the collection depends on bindings outside the target scope: ${[...r].sort().join(", ")}`}:n.size===0?{ok:!1,reason:"Cannot move repeat-backed child out of its component without an explicit prop mapping"}:{ok:!0,collectionExpression:Yv(e.source,t,[...n.values()])}}function Xv(e,t){if(t.length===0)return e;let n=fp(e);if(!n)return null;let r=Fi(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=zv(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function zv(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function Hv(e,t,n){let r=Wv(e,n),o=r?{kind:"member-expression",expression:e.node.name,base:e.node.name,path:[{kind:"property",name:r.propertyName}]}:{kind:"identifier",expression:e.node.name,base:e.node.name,path:[]},i=qn(t,o);if(!i)return null;let s=r?.range??pe(e.node);return s?{propName:i.propName,remainingPath:i.remainingPath,hasDefault:i.hasDefault,range:s}:null}function Wv(e,t){let n=e.parentPath;if(!n||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.object!==e.node||!Ot(n.node,t)||n.node.computed||!de.isIdentifier(n.node.property))return null;let r=pe(n.node);return r?{propertyName:n.node.property.name,range:r}:null}function Gv(e,t,n){let r=e.get("openingElement").get("attributes");if(r.some(c=>c.isJSXSpreadAttribute()))return{ok:!1,reason:"Cannot move prop-backed repeat child through spread props; use an explicit prop mapping"};let o=r.find(c=>c.isJSXAttribute()&&de.isJSXIdentifier(c.node.name)&&c.node.name.name===t);if(!o?.isJSXAttribute())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not passed explicitly`};let i=o.get("value");if(!i.isJSXExpressionContainer())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not an expression`};let s=i.get("expression");if(!s.isExpression())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not a usable expression`};let a=or(n,s.node);return a?{ok:!0,expression:a,expressionPath:s}:{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' cannot be read`}}function Yv(e,t,n){let r=e.slice(t.start,t.end),o=[...n].sort((i,s)=>s.start-i.start);for(let i of o)r=r.slice(0,i.start-t.start)+i.text+r.slice(i.end-t.start);return r}function fp(e){try{let n=dp.parse(`const __VD_EXPR__ = (${e});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],r=de.isVariableDeclaration(n)?n.declarations[0]?.init:null;return r&&de.isExpression(r)?r:null}catch{return null}}function Zv(e){let t=pe(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move cross-file repeat child because the collection expression cannot be inspected"};let n=new Map,r=new Set,o=i=>{let s=i.scope.getBinding(i.node.name);if(!s||Ot(s.path.node,t))return;let a=ip(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let d=ip(c,e.targetFile,e.targetFile);(!d||d.moduleFile!==a.moduleFile||!Qv(d.importSpec,a.importSpec))&&r.add(a.localName);return}let l=n.get(a.moduleSpecifier)??[];l.some(d=>JSON.stringify(d)===JSON.stringify(a.importSpec))||l.push(a.importSpec),n.set(a.moduleSpecifier,l);return}r.add(i.node.name)};return Yr(e.sourceContext.collectionPath,o),r.size>0?{ok:!1,reason:`Cannot move cross-file repeat child because the collection depends on non-importable bindings: ${[...r].sort().join(", ")}`}:{ok:!0,imports:[...n.entries()].map(([i,s])=>({moduleSpecifier:i,imports:s}))}}function Qv(e,t){return e.kind!==t.kind?!1:e.kind==="named"&&t.kind==="named"?e.imported===t.imported&&e.local===t.local:e.kind==="default"&&t.kind==="default"||e.kind==="namespace"&&t.kind==="namespace"?e.local===t.local:!1}function ip(e,t,n){let r=qv(e),o=r?.parentPath;if(!r||!o?.isImportDeclaration())return null;let i=o.node.source.value;if(typeof i!="string")return null;let s=Rn(t,i),a=i.startsWith(".")?uc(n,s):i;if(r.isImportDefaultSpecifier()){let c=r.node.local.name;return{localName:c,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"default",local:c}}}if(r.isImportNamespaceSpecifier()){let c=r.node.local.name;return{localName:c,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"namespace",local:c}}}if(r.isImportSpecifier()){let c=de.isIdentifier(r.node.imported)?r.node.imported.name:r.node.imported.value,l=r.node.local.name;return{localName:l,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"named",imported:c,local:l===c?void 0:l}}}return null}function qv(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function sp(e,t,n,r){let o=Wa(t,n);if(o.length===0)return{sourceJsx:r,conditionPaths:[]};let i=r,s=[];for(let a of o){let c=or(e,a.conditionPath.node);if(!c)return{sourceJsx:r,conditionPaths:[]};let l=ek(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${nk(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function ek(e,t){return tk(e.node)?t:`(${t})`}function tk(e){return de.isIdentifier(e)||de.isThisExpression(e)||de.isSuper(e)||de.isMemberExpression(e)||de.isOptionalMemberExpression(e)||de.isCallExpression(e)||de.isOptionalCallExpression(e)||de.isBooleanLiteral(e)||de.isNumericLiteral(e)||de.isStringLiteral(e)||de.isNullLiteral(e)||de.isUnaryExpression(e)}function nk(e){return e.trim().startsWith("<")?e:`(${e})`}var rk={table:new Set(["caption","colgroup","thead","tbody","tfoot","tr"]),thead:new Set(["tr"]),tbody:new Set(["tr"]),tfoot:new Set(["tr"]),tr:new Set(["th","td"]),ul:new Set(["li"]),ol:new Set(["li"]),select:new Set(["option","optgroup"]),optgroup:new Set(["option"])};function Mi(e,t){if(t.kind!=="native-tag")return null;let n=e.tag?.toLowerCase();if(!n||n!==e.tag||n.startsWith("component:"))return null;let r=rk[n];if(!r)return null;let o=t.tag.toLowerCase();return r.has(o)?null:`Cannot insert <${t.tag}> into <${e.tag}>; expected ${[...r].map(i=>`<${i}>`).join(", ")}`}function ok(e,t){for(let n of e.program.body){if(!de.isImportDeclaration(n)||n.source.value!==t)continue;let r=n.specifiers.find(o=>de.isImportDefaultSpecifier(o));if(r&&de.isImportDefaultSpecifier(r))return r.local.name}return null}function ik(e,t,n){for(let r of e.program.body){if(!de.isImportDeclaration(r)||r.source.value!==t)continue;let o=r.specifiers.find(i=>de.isImportSpecifier(i)&&(de.isIdentifier(i.imported)?i.imported.name:i.imported.value)===n);if(o&&de.isImportSpecifier(o))return o.local.name}return null}function ap(e){let t=new Set;return kt(e,{Program(n){for(let r of Object.keys(n.scope.bindings))t.add(r);n.stop()}}),t}function cp(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function sk(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=fc(e),o=Ve(t);if(n.exportName!=="default"){let a=o?ik(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?cp(r,ap(o)):r;return{localName:c,importStep:cc(e,c)}}if(!o)return{localName:r,importStep:cc(e,r)};let i=ok(o,n.source);if(i)return{localName:i};let s=cp(r,ap(o));return{localName:s,importStep:cc(e,s)}}function ak(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??fc(e);if(e.props&&Object.keys(e.props).length>0){let r=Object.entries(e.props).map(([o,i])=>typeof i=="string"?`${o}="${i}"`:`${o}={${JSON.stringify(i)}}`).join(" ");return`<${n} ${r} />`}return`<${n} />`}function ck(e){if(e.kind==="native-tag")return e.text===void 0?{kind:e.kind,tag:e.tag}:{kind:e.kind,tag:e.tag,text:e.text};if(!e.component)return{kind:e.kind};let t=e.props?lk(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function lk(e){return Object.fromEntries(Object.entries(e).filter(t=>dc(t[1])))}function dc(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(dc):typeof e=="object"?Object.values(e).every(dc):!1}function cc(e,t=fc(e)){if(!e.component)throw new Error("Materialized component calls do not have a component import");return{moduleSpecifier:e.component.source,imports:e.component.exportName==="default"?[{kind:"default",local:t}]:[{kind:"named",imported:e.component.exportName,...t!==e.component.exportName?{local:t}:{}}]}}function lp(e,t){if("kind"in e)return{parentNode:null,anchorNode:null,placement:e.relation};if(e.relation==="prepend"||e.relation==="append"){let o=t.getNode(e.parentKey);return{parentNode:o,anchorNode:null,placement:e.relation,...o?{}:{error:{errorCode:"locator-miss",reason:`Target parent '${e.parentKey}' not found in graph`}}}}if(!("anchorKey"in e))return{parentNode:null,anchorNode:null,placement:e.relation,error:{errorCode:"invalid-target",reason:`Sibling target '${e.relation}' requires an anchor`}};let n=t.getNode(e.anchorKey),r=t.getNode(e.parentKey);return n?r?n.parentKey!==r.key?{parentNode:r,anchorNode:n,placement:e.relation,error:{errorCode:"invalid-target",reason:`Target anchor '${n.key}' belongs to parent '${n.parentKey??"<root>"}', expected '${r.key}'`}}:{parentNode:r,anchorNode:n,placement:e.relation}:{parentNode:null,anchorNode:n,placement:e.relation,error:{errorCode:"locator-miss",reason:`Target parent '${e.parentKey}' not found in graph`}}:{parentNode:r,anchorNode:null,placement:e.relation,error:{errorCode:"locator-miss",reason:`Target anchor '${e.anchorKey}' not found in graph`}}}function uk(e,t,n){let r=e;for(;r;){if(r===t)return!0;r=n.getNode(r)?.parentKey}return!1}function Qr(e,t){return`Operation kind '${e}' does not match params.kind '${t}'`}function pc(e,t=e.path){return{kind:"value",root:e.root,path:t&&t.length>0?t:void 0,expectedRange:e.expectedRange}}function qr(e){let t=e.path??[];for(let n=t.length-1;n>=0;n-=1){let r=t[n];if(r.kind==="index")return{locator:pc(e,t.slice(0,n)),index:r.index}}return null}function lc(e,t){return e.locator?e.collectionPathMap?.[t]?pc(e.locator,e.collectionPathMap[t]):qr(e.locator)?fk(e.locator,pk(t,e.collectionIndexMap)):null:null}function dk(e,t){let n=e.path??[],r=n.findLastIndex(i=>i.kind==="index");if(r===-1)return;let o=n.slice(r+1);return o.length===0?t:pp(o,t)}function pp(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=pp(r,t);return o===void 0?void 0:{[n.name]:o}}function fk(e,t){let n=e.path??[];for(let r=n.length-1;r>=0;r-=1)if(n[r].kind==="index"){let i=[...n];return i[r]={kind:"index",index:t},pc(e,i)}return null}function pk(e,t){return t?.[e]??e}function up(e,t){return!t||t.length===0?e:e<=0?t[0]??0:e>=t.length?(t[t.length-1]??t.length-1)+1:t[e]??e}function mk(e,t){return gk(e.root,t.root)&&yk(e.path??[],t.path??[])}function gk(e,t){if(e.kind!==t.kind)return!1;switch(e.kind){case"binding":case"hook-state":case"named-export":return"name"in t&&e.name===t.name;case"default-export":return!0;case"expression":return"sourceRange"in t&&hk(e.sourceRange,t.sourceRange)}}function hk(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function yk(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],o=t[n];if(r.kind!==o.kind)return!1;if(r.kind==="property"){if(o.kind!=="property"||r.name!==o.name)return!1;continue}if(o.kind!=="index"||r.index!==o.index)return!1}return!0}var Di=class{constructor(t){this.operationCounter=0,this.graph=t}async plan(t){let n=`op-${++this.operationCounter}-${Date.now()}`;switch(t.kind){case"update-text":{if(t.params.kind!=="update-text")return{ok:!1,errorCode:"unknown",reason:Qr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planUpdateText(n,r,i,this.graph.getCapability(i.key),await this.graph.getTextWriteTarget(i.key,r.params.segmentIndex))}case"update-array-item":{if(t.params.kind!=="update-array-item")return{ok:!1,errorCode:"unknown",reason:Qr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planUpdateArrayItem(n,r,this.graph.getCapability(i.key),await this.graph.getTextWriteTarget(i.key,r.params.segmentIndex))}case"remove-node":{if(t.params.kind!=="remove-node")return{ok:!1,errorCode:"unknown",reason:Qr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planRemoveNode(n,r,i,this.graph.getCapability(i.key))}case"insert-child":{if(t.params.kind!=="insert-child")return{ok:!1,errorCode:"unknown",reason:Qr(t.kind,t.params.kind)};let r=t;if(!Oi(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=lp(r.params.position,this.graph);if(o.error)return{ok:!1,errorCode:o.error.errorCode,reason:o.error.reason};if(!o.parentNode)return{ok:!1,errorCode:"locator-miss",reason:`Insert target parent for request '${t.id}' not found in graph`};let i=this.graph.getFileVersion(o.parentNode.file);return t.documentVersion!==i?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${i})`}:this.planInsertChild(n,r,o.parentNode,this.graph.getCapability(o.parentNode.key),o.anchorNode)}case"move-node":{if(t.params.kind!=="move-node")return{ok:!1,errorCode:"unknown",reason:Qr(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planMoveNode(n,r,i,this.graph.getCapability(i.key))}case"set-class-name-source":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:this.planNodeAttributeOperation(n,t,r.node)}case"set-props":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planSetProps(n,t,r.node)}case"apply-style-draft":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planApplyStyleDraft(n,t,r.node)}default:return{ok:!1,errorCode:"unknown",reason:`Unknown operation kind: ${t.kind}`}}}resolveNodeRequest(t){let n=$v(t);if(!n)return{ok:!1,result:{ok:!1,errorCode:"invalid-target",reason:`Operation '${t.kind}' requires a node target`}};let r=this.graph.getNode(n);return r?{ok:!0,node:r}:{ok:!1,result:{ok:!1,errorCode:"locator-miss",reason:`Target key '${n}' not found in graph`}}}planNodeAttributeOperation(t,n,r){let o=r.file,i=this.graph.getCapability(r.key);return n.params.filePath!==o?{ok:!1,errorCode:"stale-version",reason:"The className source file changed before save."}:this.buildPlan(t,n,[{order:0,file:o,type:"set-class-name-source",request:{...n.params,key:r.key}}],i)}async planSetProps(t,n,r){let o=this.graph.getCapability(r.key),i=await this.buildTypedPropertySteps({node:r,scope:n.params.scope,changes:n.params.changes,selectionRef:n.selectionRef});return i.ok?this.buildPlan(t,n,i.steps,o):xk(i)}async planApplyStyleDraft(t,n,r){let o=r.file,i=this.graph.getCapability(r.key),s=[];if(n.params.className){if(n.params.className.filePath!==o)return{ok:!1,errorCode:"stale-version",reason:"The className source file changed before save."};s.push({order:s.length,file:o,type:"set-class-name-source",request:{kind:"set-class-name-source",...n.params.className,key:r.key}})}if(n.params.props){let a=await this.buildStyleDraftPropertySteps({initialOrder:s.length,node:r,props:n.params.props,selectionRef:n.selectionRef});if(!a.ok)return a;s.push(...a.steps)}return this.buildPlan(t,n,s,i)}async buildTypedPropertySteps(t){let n=this.graph.getPropertyState;return n?Wf({node:t.node,scope:t.scope,changes:t.changes,selectionRef:t.selectionRef,getPropertyState:n,getRepeatPropertyTarget:this.graph.getRepeatPropertyTarget,getFileContent:r=>this.graph.getFileContent(r),getFileVersion:r=>this.graph.getFileVersion(r),classNameSource:this.graph.getClassNameSource?.(t.node.key)??void 0}):{ok:!1,errorCode:"missing-property-state",reason:"Typed property planning requires authoritative property provenance"}}async buildStyleDraftPropertySteps(t){let{initialOrder:n,node:r,props:o,selectionRef:i}=t,s=[],a=[];for(let[c,l]of Object.entries(o)){if(l===void 0)continue;let d=await this.graph.getElementPropertyWriteTarget?.(r.key,c),f=r.attributes?.find(u=>u.name===c);if((await this.graph.getPropertyState?.(r.key,c,i))?.status==="blocked"||!d&&f?.source)return{ok:!1,errorCode:"capability-denied",reason:`apply-style-draft cannot overwrite a derived or unresolved property '${c}'`};if(!(typeof f?.resolvedValue=="string"&&f.resolvedValue===l||f?.source===null&&f.value===l)){if(d?.kind==="external-entry")return{ok:!1,errorCode:"capability-denied",reason:`apply-style-draft cannot overwrite readonly external property '${c}'`};if(d?.kind==="value-binding"&&d.locator){let u=d.locator;if(d.sourceKind==="repeat-template"&&typeof i?.instanceIndex=="number"){let g=lc(d,i.instanceIndex);if(!g)return{ok:!1,errorCode:"invalid-params",reason:"apply-style-draft could not resolve the selected repeat item"};u=g}s.push({order:n+s.length,file:d.file,type:"update-value",locator:u,value:l});continue}a.push({operation:"set",name:c,value:l})}}return a.length>0&&s.push({order:n+s.length,file:r.file,type:"set-property-changes",locator:he(r),scope:"selection",changes:a}),{ok:!0,steps:s}}buildTextRewriteSteps(t,n,r,o,i){if(o?.kind==="value-binding"&&o.locator){if(o.sourceKind==="repeat-template"&&typeof i?.instanceIndex=="number"){let a=lc(o,i.instanceIndex);if(!a)return{ok:!1,errorCode:"invalid-params",reason:"update-text could not resolve the selected repeat item"};let c=this.coerceTextValueForValueTarget(o.file,a,r);return c.ok?{ok:!0,steps:[{order:0,file:o.file,type:"update-array-item",locator:a,value:c.value}]}:c}let s=this.coerceTextValueForValueTarget(o.file,o.locator,r);return s.ok?{ok:!0,steps:[{order:0,file:o.file,type:"update-value",locator:o.locator,value:s.value}]}:s}return{ok:!0,steps:o?.kind==="external-entry"?[{order:0,file:`external:${o.sourceId}`,type:"invoke-external-adapter",sourceType:o.sourceType,sourceId:o.sourceId,adapterId:o.adapterId,capability:"write-text",value:r}]:[{order:0,file:t.file,type:"update-text",locator:he(t),segmentIndex:n,newText:r}]}}coerceTextValueForValueTarget(t,n,r,o="update-text"){let i=this.graph.getFileContent(t),s=Ve(i);if(!s)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not inspect the value source`};let a=se(s,n);if(!a.ok)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not resolve the value source`};if(!Vv(a.match.path))return{ok:!0,value:r};let c=Uv(r);return c===null?{ok:!1,errorCode:"invalid-params",reason:`${o} value must be a valid number for numeric source`}:{ok:!0,value:c}}planUpdateArrayItem(t,n,r,o){if(!r.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update repeated text on this node"};if(o?.kind!=="value-binding"||o.sourceKind!=="repeat-template"||!o.locator)return{ok:!1,errorCode:"invalid-params",reason:"update-array-item requires a writable repeat-template source"};let{index:i,value:s}=n.params,a=o.collectionPathMap?.length??o.collectionIndexMap?.length;if(a!==void 0&&i>=a)return{ok:!1,errorCode:"invalid-params",reason:`update-array-item index ${i} is outside the repeated source`};let c=lc(o,i);if(!c)return{ok:!1,errorCode:"invalid-params",reason:"update-array-item could not resolve the selected repeat item"};let l=this.coerceTextValueForValueTarget(o.file,c,s,"update-array-item");return l.ok?this.isValueTargetUnchanged(o.file,c,l.value)?{ok:!1,errorCode:"invalid-params",reason:"update-array-item value is unchanged"}:this.buildPlan(t,n,[{order:0,file:o.file,type:"update-array-item",locator:c,value:l.value}],r):l}isValueTargetUnchanged(t,n,r){let o=Ve(this.graph.getFileContent(t));if(!o)return!1;let i=se(o,n);if(!i.ok)return!1;let s=i.match.path;if(s.isStringLiteral())return typeof r=="string"&&s.node.value===r;if(s.isNumericLiteral())return typeof r=="number"&&Object.is(s.node.value,r);if(s.isBooleanLiteral())return typeof r=="boolean"&&s.node.value===r;if(s.isNullLiteral())return r===null;if(s.isUnaryExpression({operator:"-"})){let a=s.get("argument");return typeof r=="number"&&!Array.isArray(a)&&a.isNumericLiteral()&&Object.is(-a.node.value,r)}return!1}planUpdateText(t,n,r,o,i){let s=this.graph.getTextProvenance?.(r.key,n.params.segmentIndex);if(s&&(s.editMode==="readonly"||s.editMode==="unsupported"))return{ok:!1,errorCode:"unsupported-operation",reason:"Text has no identity-preserving write target"};if(!o.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update text on this node"};let a=this.buildTextRewriteSteps(r,n.params.segmentIndex,n.params.value,i,n.selectionRef);return a.ok?this.buildPlan(t,n,a.steps,o):a}async planRemoveNode(t,n,r,o){if(!o.canRemove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot remove this node"};let i=await this.graph.getTextWriteTarget(r.key,0);if(i?.kind==="external-entry")return this.buildPlan(t,n,[{order:0,file:`external:${i.sourceId}`,type:"invoke-external-adapter",sourceType:i.sourceType,sourceId:i.sourceId,adapterId:i.adapterId,capability:"remove-node",value:{operation:"remove-node"}}],o);if(r.isRepeatItemRoot){let f=i;if(f?.kind==="value-binding"&&f.locator){let m=qr(f.locator);if(m)return this.buildPlan(t,n,[{order:0,file:f.file,type:"remove-bound-array-item",locator:m.locator,index:m.index}],o)}return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed node removal requires a writable array target"}}let s=Zr(r,i,this.graph.getTextProvenance?.(r.key,0)??null);if(s)return{ok:!1,errorCode:"unsupported-operation",reason:s};let a=this.getRepeatBackedTemplateStructureReason(r);if(a)return{ok:!1,errorCode:"unsupported-operation",reason:a};let c=await this.getUpstreamBackedDescendantReason(r);if(c)return{ok:!1,errorCode:"unsupported-operation",reason:c};let l=[{order:0,file:r.file,type:"remove-node",locator:he(r),removeWhitespace:!0}],d=this.buildRemoveComponentImportStep(r);return d&&l.push({...d,order:l.length}),this.buildPlan(t,n,l,o)}buildRemoveComponentImportStep(t,n=this.graph.getFileContent(t.file)){if(!t.importedFrom||!t.exportName||!t.tag||Vf(n,t)>1)return null;let r=uc(t.file,t.importedFrom);return{order:0,file:t.file,type:"remove-import",moduleSpecifier:r,imports:t.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:t.exportName}]}}async planInsertChild(t,n,r,o,i){if(!Oi(n.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};if(n.params.node.kind==="component-call"&&!n.params.node.component)return{ok:!1,errorCode:"unsupported-operation",reason:"Materialized component insertion requires the materialization transaction planner"};if(!o.canInsertChild)return{ok:!1,errorCode:"capability-denied",reason:"Cannot insert child into this node"};let s=this.graph.getEditableTextSegmentIndex(r.key),a=s!==null?await this.graph.getTextWriteTarget(r.key,s):null,c=Zr(r,a,s!==null?this.graph.getTextProvenance?.(r.key,s)??null:null);if(c)return{ok:!1,errorCode:"unsupported-operation",reason:c};let l=await this.getUpstreamBackedDescendantReason(r);if(l)return{ok:!1,errorCode:"unsupported-operation",reason:l};let d=await this.planExternalBackedInsertChild(t,n,r,o,i,a);if(d)return d;let f=await this.planRepeatBackedInsertChild(t,n,r,o);if(f)return f;let m=this.getRepeatBackedTemplateStructureReason(r);if(m)return{ok:!1,errorCode:"unsupported-operation",reason:m};let u=vf(this.graph.getFileContent(r.file),r);if(!u.allowed)return{ok:!1,errorCode:"unsupported-operation",reason:u.reason??"Cannot insert child into this node"};let g=Mi(r,n.params.node);if(g)return{ok:!1,errorCode:"unsupported-operation",reason:g};let h=[],b=0,E=n.params.node.kind==="component-call"?sk(n.params.node,this.graph.getFileContent(r.file)):void 0,v=E?.importStep;return v&&h.push({order:b++,file:r.file,type:"add-import",moduleSpecifier:v.moduleSpecifier,imports:v.imports}),h.push({order:b++,file:r.file,type:"insert-child",parentLocator:he(r),node:{jsx:ak(n.params.node,E?.localName)},placement:n.params.position.relation,anchorLocator:i?he(i):void 0}),this.buildPlan(t,n,h,o)}async planExternalBackedInsertChild(t,n,r,o,i,s){if(!Oi(n.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let a=s?.kind==="external-entry"?s:await this.findExternalInsertContext(r,i);if(!a)return null;let c=i?await this.graph.getTextWriteTarget(i.key,0):null;return this.buildPlan(t,n,[{order:0,file:`external:${a.sourceId}`,type:"invoke-external-adapter",sourceType:a.sourceType,sourceId:a.sourceId,adapterId:a.adapterId,capability:"insert-child",value:{operation:"insert-child",relation:n.params.position.relation,parentKey:r.key,anchorSourceId:c?.kind==="external-entry"?c.sourceId:null,node:ck(n.params.node)}}],o)}async findExternalInsertContext(t,n){if(n){let o=await this.graph.getTextWriteTarget(n.key,0);if(o?.kind==="external-entry")return o}if(!this.graph.getChildNodes)return null;let r=[...this.graph.getChildNodes(t.key)];for(;r.length>0;){let o=r.shift();if(!o)continue;let i=await this.graph.getTextWriteTarget(o.key,0);if(i?.kind==="external-entry")return i;let s=this.graph.getTextProvenance?.(o.key,0)?.finalSource?.externalSource;if(s)return{kind:"external-entry",file:`external:${s.sourceId}`,sourceType:s.sourceType,sourceId:s.sourceId,adapterId:s.adapterId,displayExpression:s.sourceId};r.push(...this.graph.getChildNodes(o.key))}return null}async planRepeatBackedInsertChild(t,n,r,o){if(!Oi(n.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};if(n.params.position.relation!=="append"&&n.params.position.relation!=="prepend")return null;let i=n.params.node;if(i.kind!=="native-tag"||i.text===void 0||!this.graph.getChildNodes)return null;let s=this.graph.getChildNodes(r.key).find(f=>f.isRepeatItemRoot&&f.tag?.toLowerCase()===i.tag.toLowerCase());if(!s)return null;let a=await this.graph.getTextWriteTarget(s.key,0);if(!a||a.kind!=="value-binding"||!a.locator)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires a writable value target"};let c=qr(a.locator);if(!c)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires an array-backed target"};let l=dk(a.locator,i.text);if(l===void 0)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child could not infer an item shape from the template"};let d=n.params.position.relation==="prepend"?up(0,a.collectionIndexMap):up(a.collectionIndexMap?.length??c.index+1,a.collectionIndexMap);return this.buildPlan(t,n,[{order:0,file:a.file,type:"insert-bound-array-item",locator:c.locator,index:d,value:l}],o)}async getUpstreamBackedDescendantReason(t){if(!this.graph.getChildNodes)return null;let n=[...this.graph.getChildNodes(t.key)];for(;n.length>0;){let r=n.shift();if(!r)continue;let o=this.graph.getEditableTextSegmentIndex(r.key),i=o!==null?await this.graph.getTextWriteTarget(r.key,o):null,s=Zr(r,i,o!==null?this.graph.getTextProvenance?.(r.key,o)??null:null);if(s)return s;n.push(...this.graph.getChildNodes(r.key))}return null}getRepeatBackedTemplateStructureReason(t){if(t.isRepeatItemRoot)return ir(this.graph.getFileContent(t.file),t)?"Cannot edit repeat-backed item template structure with a generic node operation":"Cannot edit repeat-backed child node structure with a generic node operation";if(t.structuralPath.includes("#repeat:")||Qf(this.graph.getFileContent(t.file),t))return"Cannot edit repeat-backed child node structure with a generic node operation";let n=t.parentKey;for(;n;){let r=this.graph.getNode(n);if(!r)return null;if(r.isRepeatItemRoot||r.isRepeatRegion)return"Cannot edit repeat-backed child node structure with a generic node operation";n=r.parentKey}return null}planRepeatTemplateInternalMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&ir(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ve(c);if(!l)return null;let d=yt(l,r),f=yt(l,o);if(!d||!f)return null;let m=Dt(c,d),u=Dt(c,f);if(!Gr(m,u))return null;if(a&&(s==="before"||s==="after")){let h=yt(l,a),b=h?Dt(c,h):null;if(!Gr(m,b))return null}if(Ai(d,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let g=ec(c,r,o);return g.ok?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:he(r),targetParentLocator:he(o),placement:s,anchorLocator:a?he(a):void 0,selectionContext:An(o)}],i):{ok:!1,errorCode:"unsupported-operation",reason:g.reason??`Cannot move node because it depends on bindings outside the target scope: ${g.bindingNames.join(", ")}`}}planRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&ir(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ve(c);if(!l)return null;let d=yt(l,r),f=yt(l,o);if(!d||!f)return null;let m=Dt(c,d);if(!m)return null;let u=Dt(c,f);if(Gr(m,u))return null;if(u&&!Yf(u,m))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child into a different repeat template"};if(a&&(s==="before"||s==="after")){let I=Qa(c,l,a);if(u&&!Gr(u,I)||!u&&I)return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child relative to a repeat-template anchor outside the target scope"}}if(r.tag&&r.tag.toLowerCase()===r.tag){let I=Mi(o,{kind:"native-tag",tag:r.tag});if(I)return{ok:!1,errorCode:"unsupported-operation",reason:I}}let g=sc(this.graph,r);if(!g)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Ai(d,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let h=sp(c,d,f,g);for(let I of h.conditionPaths){let R=rc(I,f,m);if(!R.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${R.bindingNames.join(", ")}`}}let b=nc(d,f,m,{preserveConditionalBoundary:h.conditionPaths.length>0});if(!b.ok)return{ok:!1,errorCode:"unsupported-operation",reason:b.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${b.bindingNames.join(", ")}`};let E=tp(m,f);if(!E.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its callback parameters depend on bindings outside the target scope: ${E.bindingNames.join(", ")}`};let v=m;if(r.component!==o.component){let I=Kv({source:c,ast:l,sourceContext:m,sourceNode:r,targetParent:o,targetParentPath:f});if(!I.ok)return{ok:!1,errorCode:"unsupported-operation",reason:I.reason};v=I.context}else{let I=oc(m.collectionPath,f);if(!I.ok)return{ok:!1,errorCode:"unsupported-operation",reason:I.reason??`Cannot move repeat-backed child because the repeat collection is not visible at the target: ${I.bindingNames.join(", ")}`}}return this.buildPlan(t,n,[{order:0,file:r.file,type:"move-repeat-template-child",locator:he(r),targetParentLocator:he(o),placement:s,anchorLocator:a?he(a):void 0,repeatExpression:ic(v,h.sourceJsx),selectionContext:An(o)}],i)}planCrossFileRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&ir(this.graph.getFileContent(r.file),r)||r.file===o.file)return null;let c=this.graph.getFileContent(r.file),l=this.graph.getFileContent(o.file),d=Ve(c),f=Ve(l);if(!d||!f)return null;let m=Jf({knownSourceFiles:this.graph.getKnownSourceFiles?.(),routeEntryFiles:this.graph.getRouteEntryFiles?.(),sourceAst:d,sourceFile:r.file,targetFile:o.file,sourceComponent:r.component,targetComponent:o.component});if(!m.ok)return{ok:!1,errorCode:"unsupported-operation",reason:m.reason};let u=yt(d,r),g=yt(f,o);if(!u||!g)return null;let h=tc(m.callSitePath,g);if(!h.ok)return{ok:!1,errorCode:"unsupported-operation",reason:h.reason};let b=Dt(c,u);if(!b)return null;if(Dt(l,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child into a different repeat template"};if(a&&(s==="before"||s==="after")&&Qa(l,f,a))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child relative to a repeat-template anchor outside the target scope"};if(r.tag&&r.tag.toLowerCase()===r.tag){let F=Mi(o,{kind:"native-tag",tag:r.tag});if(F)return{ok:!1,errorCode:"unsupported-operation",reason:F}}let v=sc(this.graph,r);if(!v)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Ai(u,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let I=sp(c,u,g,v);for(let F of I.conditionPaths){let M=rc(F,g,b);if(!M.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${M.bindingNames.join(", ")}`}}let R=nc(u,g,b,{preserveConditionalBoundary:I.conditionPaths.length>0});if(!R.ok)return{ok:!1,errorCode:"unsupported-operation",reason:R.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${R.bindingNames.join(", ")}`};let P=Zv({sourceFile:r.file,targetFile:o.file,sourceContext:b,targetParentPath:g});if(!P.ok)return{ok:!1,errorCode:"unsupported-operation",reason:P.reason};let T=np(b);if(!T.ok)return{ok:!1,errorCode:"unsupported-operation",reason:T.reason};let C=rp(b,T.callbackParams),A=[{order:0,file:r.file,type:"remove-node",locator:he(r),removeWhitespace:!0}];for(let F of P.imports)A.push({order:A.length,file:o.file,type:"add-import",moduleSpecifier:F.moduleSpecifier,imports:F.imports});return A.push({order:A.length,file:o.file,type:"insert-jsx-expression-child",parentLocator:he(o),expression:ic(C,I.sourceJsx),placement:s,anchorLocator:a?he(a):void 0,selectionContext:An(o)}),this.buildPlan(t,n,A,i)}async planMoveNode(t,n,r,o){if(!o.canMove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move this node"};if("kind"in n.params.target&&n.params.target.kind==="source-sibling"){let I=n.params.target,R=this.graph.getNode(I.anchorKey);if(!R||r.file!==R.file||r.component!==R.component)return{ok:!1,errorCode:"locator-miss",reason:"Source sibling move requires a sibling in the same component file"};let P=this.graph.getFileVersion(r.file);if(n.documentVersion!==P)return{ok:!1,errorCode:"stale-version",reason:`Document version ${n.documentVersion} is stale or otherwise does not match source sibling file version (current: ${P})`};let T=this.graph.getFileContent(r.file),C=Ve(T),A=C?yt(C,r):null,F=C?yt(C,R):null,M=A?.parentPath,K=F?.parentPath;if(!A||!F||!M||!K||M.node!==K.node||!M.isJSXFragment()&&!(M.isJSXElement()&&Pe(M)))return{ok:!1,errorCode:"unsupported-operation",reason:"Source sibling move requires two direct children of the same transparent Fragment"};let q=M.node.loc;return q?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:he(r),targetParentLocator:{kind:"jsx-node",strategy:"source-range",sourceRange:{startLine:q.start.line,startColumn:q.start.column,endLine:q.end.line,endColumn:q.end.column}},placement:I.relation,anchorLocator:he(R),selectionContext:An(r)}],o):{ok:!1,errorCode:"locator-miss",reason:"Source Fragment has no stable source range"}}let i=lp(n.params.target,this.graph);if(i.error)return{ok:!1,errorCode:i.error.errorCode,reason:i.error.reason};let s=i.parentNode;if(!s)return{ok:!1,errorCode:"locator-miss",reason:`Target parent for request '${n.id}' not found in graph`};let a=this.graph.getFileVersion(s.file);if(n.documentVersion!==a)return{ok:!1,errorCode:"stale-version",reason:`Document version ${n.documentVersion} is stale or otherwise does not match target parent version (current: ${a})`};if(uk(s.key,r.key,this.graph))return{ok:!1,errorCode:"capability-denied",reason:"Cannot move node into its own subtree"};if(r.isRepeatRegion&&s.isBoundary)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move repeat-region node across boundary"};if(!this.graph.getCapability(s.key).canInsertChild)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move node into this parent"};let c=await this.graph.getTextWriteTarget(r.key,0);if(c?.kind==="external-entry"){let I=n.params.target.relation,R=i.anchorNode&&(I==="before"||I==="after")?await this.graph.getTextWriteTarget(i.anchorNode.key,0):null;return this.buildPlan(t,n,[{order:0,file:`external:${c.sourceId}`,type:"invoke-external-adapter",sourceType:c.sourceType,sourceId:c.sourceId,adapterId:c.adapterId,capability:"move-node",value:{operation:"move-node",relation:I,anchorSourceId:R?.kind==="external-entry"?R.sourceId:null,parentKey:"parentKey"in n.params.target?n.params.target.parentKey:null}}],o)}let l=r.file!==s.file,d=n.params.target.relation,f=i.anchorNode,m=this.graph.getTextProvenance?.(r.key,0)??null,u=Zr(r,c,m);if(u&&!ac(u)&&!op(r,s,c,m))return{ok:!1,errorCode:"unsupported-operation",reason:u};if(r.isRepeatItemRoot&&f?.isRepeatItemRoot&&r.repeatOwnerKey&&r.repeatOwnerKey===f.repeatOwnerKey&&(d==="before"||d==="after")){let I=c,R=await this.graph.getTextWriteTarget(f.key,0);if(I?.kind==="value-binding"&&R?.kind==="value-binding"&&I.locator&&R.locator){let P=qr(I.locator),T=qr(R.locator);if(P&&T&&I.file===R.file&&mk(P.locator,T.locator)){let C=P.index,A=T.index,F=d==="before"?A-(C<A?1:0):A+(C<A?0:1);return this.buildPlan(t,n,[{order:0,file:I.file,type:"move-array-item",locator:P.locator,fromIndex:C,toIndex:F}],o)}}}if(r.isRepeatItemRoot&&ir(this.graph.getFileContent(r.file),r))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed item outside its collection"};let g=this.getRepeatBackedTemplateStructureReason(r),h=ac(u)?u:g;if(h&&ac(h)){let I=this.planRepeatTemplateInternalMove(t,n,r,s,o,d,f);if(I)return I;let R=this.planRepeatTemplateHoistMove(t,n,r,s,o,d,f);if(R)return R;let P=this.planCrossFileRepeatTemplateHoistMove(t,n,r,s,o,d,f);return P||{ok:!1,errorCode:"unsupported-operation",reason:h}}if(g)return{ok:!1,errorCode:"unsupported-operation",reason:g};let b=await this.getUpstreamBackedDescendantReason(r);if(b)return{ok:!1,errorCode:"unsupported-operation",reason:b};if(r.tag&&r.tag.toLowerCase()===r.tag){let I=Mi(s,{kind:"native-tag",tag:r.tag});if(I)return{ok:!1,errorCode:"unsupported-operation",reason:I}}if(l)return this.planCrossFileMove(t,n,r,s,o,d,f);let E=ec(this.graph.getFileContent(r.file),r,s);if(!E.ok)return{ok:!1,errorCode:"unsupported-operation",reason:E.reason??`Cannot move node because it depends on bindings outside the target scope: ${E.bindingNames.join(", ")}`};let v=[{order:0,file:r.file,type:"move-node",locator:he(r),targetParentLocator:he(s),placement:d,anchorLocator:f?he(f):void 0,selectionContext:An(s)}];return this.buildPlan(t,n,v,o)}planCrossFileMove(t,n,r,o,i,s,a){let c=[],l=0,d=this.graph.getFileContent(r.file),f=sc(this.graph,r)??`<${r.component} />`,m=kf(d,r);if(!m.allowed)return{ok:!1,errorCode:"unsupported-operation",reason:m.reason??"Cannot move subtree across files"};if(c.push({order:l++,file:r.file,type:"remove-node",locator:he(r),removeWhitespace:!0}),r.importedFrom&&r.exportName){let g=r.tag??r.component,b={moduleSpecifier:uc(o.file,r.importedFrom),imports:r.exportName==="default"?[{kind:"default",local:g}]:[{kind:"named",imported:r.exportName,local:g===r.exportName?void 0:g}]};c.push({order:l++,file:o.file,type:"add-import",moduleSpecifier:b.moduleSpecifier,imports:b.imports}),c.push({order:l++,file:o.file,type:"insert-child",parentLocator:he(o),node:{jsx:f},placement:s,anchorLocator:a?he(a):void 0,selectionContext:An(o)})}else c.push({order:l++,file:o.file,type:"insert-child",parentLocator:he(o),node:{jsx:f},placement:s,anchorLocator:a?he(a):void 0,selectionContext:An(o)});let u=this.buildRemoveComponentImportStep(r,d);return u&&c.push({...u,order:l++}),this.buildPlan(t,n,c,i)}buildPlan(t,n,r,o){let s=[...new Set(r.map(a=>a.file))].map(a=>({file:a,content:this.graph.getFileContent(a),version:this.graph.getFileVersion(a),exists:!0,sha256:ve(this.graph.getFileContent(a))}));return{ok:!0,plan:{operationId:t,kind:n.kind,target:n.target,documentVersion:n.documentVersion,steps:r,preSnapshots:s,validatedCapability:o}}}};function xk(e){return{ok:!1,errorCode:e.errorCode==="readonly-property"?"capability-denied":e.errorCode==="missing-property-state"||e.errorCode==="repeat-target-failed"||e.errorCode==="unsupported-binding"?"unsupported-operation":"invalid-params",reason:e.reason}}import xc from"@babel/generator";import{parse as _k}from"@babel/parser";import bc from"@babel/traverse";import*as w from"@babel/types";import*as Bt from"@babel/types";import mc from"@babel/generator";import*as xe from"@babel/types";var bk=typeof mc=="function"?mc:mc.default,Sk=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,Ek=/^((?:https?:)?\/\/)[^/@\s]+@/i,vk=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function gp(e,t){let n=Lt(e.callee);if(!n)return null;if(n==="fetch")return gc(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(mp(r))return gc(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(mp(r))return gc(e.arguments[0],r,t,["ky client contract"])}return null}function gc(e,t,n,r){if(!e||xe.isSpreadElement(e)||xe.isJSXNamespacedName(e))return Rk(t,n,r,"missing url argument");let o=eo(e);return{sourceKind:Ck(o),...o?{endpointPattern:o}:{},method:t,confidence:o?"exact":"partial",evidence:[{file:n.file,reason:[...r,o?"endpoint pattern resolved":"endpoint pattern unresolved"].join("; ")}]}}function eo(e){if(xe.isStringLiteral(e))return Bi(e.value);if(xe.isTemplateLiteral(e))return Bi(kk(e));if(xe.isBinaryExpression(e)&&e.operator==="+"){let t=eo(e.left),n=eo(e.right);return!t&&!n?void 0:Bi(`${t??hc(e.left)}${n??hc(e.right)}`)}if(xe.isMemberExpression(e)){let t=hp(e);if(t)return`env:${t}`}if(!(xe.isCallExpression(e)&&Lt(e.callee)==="new URL")){if(xe.isNewExpression(e)&&xe.isIdentifier(e.callee,{name:"URL"})){let[t,n]=e.arguments,r=t&&!xe.isSpreadElement(t)?eo(t):void 0,o=n&&!xe.isSpreadElement(n)?eo(n):void 0;return o&&r?Bi(`${o} + ${r}`):r??o}if(xe.isIdentifier(e))return`:${e.name}`}}function kk(e){let t="";for(let n=0;n<e.quasis.length;n+=1){t+=e.quasis[n]?.value.cooked??e.quasis[n]?.value.raw??"";let r=e.expressions[n];r&&(t+=hc(r))}return t}function hc(e){if(xe.isIdentifier(e))return`:${e.name}`;if(xe.isMemberExpression(e)){let t=hp(e);if(t)return`env:${t}`}return`:${Ik(e)}`}function Ik(e){return bk(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function Bi(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(Ek,"$1<redacted>@").replace(vk,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?Sk.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function Ck(e){return e?e.startsWith("/api/")?"site-api-route":/^(?:https?:)?\/\//.test(e)||e.startsWith("env:")?"external-api":e.startsWith("/")?"site-api-route":"unknown-api":"unknown-api"}function Rk(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function mp(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function hp(e){return!xe.isMemberExpression(e.object)||!xe.isIdentifier(e.object.object,{name:"process"})||!wk(e.object.property,"env")?null:xe.isIdentifier(e.property)?e.property.name:xe.isStringLiteral(e.property)?e.property.value:null}function wk(e,t){return xe.isIdentifier(e)&&e.name===t}function Lt(e){if(xe.isIdentifier(e))return e.name;if(xe.isMemberExpression(e)){let t=Lt(e.object),n=xe.isIdentifier(e.property)?e.property.name:xe.isStringLiteral(e.property)?e.property.value:null;if(t&&n)return`${t}.${n}`}return null}var Nk=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),Pk=new Set(["getConfig","submit"]);function yp(e,t){let n=Ak(Lt(e.callee),t);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!Nk.has(i))return null;let s=yc(e,0),a=i==="getByUrl"||i==="getByUrlStrict",c=a?void 0:s,l=a?s??"/:record-url":c?`/collections/${c}`:"/collections/:collection";return{sourceKind:"vcp-cms-collection",sourceType:"cms-field",operation:i,...c?{collection:c}:{},endpointPattern:l,confidence:s?"exact":"partial",evidence:[{file:t.file,symbol:n,reason:"VCP CMS collection facade"}]}}let o="cms.forms.";if(n.startsWith(o)){let i=n.slice(o.length);if(!Pk.has(i))return null;let s=yc(e,0);return{sourceKind:"vcp-cms-form",sourceType:"cms-field",operation:i,...s?{collection:s}:{},endpointPattern:s?`/forms/${s}`:"/forms/:form",confidence:s?"exact":"partial",evidence:[{file:t.file,symbol:n,reason:"VCP CMS form facade"}]}}if(n==="cmsFetch"||n==="cmsFetchResult"||n==="cmsFetchEnvelope"){let i=yc(e,0)??Tk(e,0,"path")??"/cms/:path",s=Fk(i);return{sourceKind:"vcp-cms-collection",sourceType:"cms-field",operation:n,...s?{collection:s}:{},endpointPattern:i,confidence:i==="/cms/:path"?"partial":"safe-derived",evidence:[{file:t.file,symbol:n,reason:"VCP CMS fetch helper"}]}}return null}function Ak(e,t){let n=e?.indexOf(".")??-1;if(!e||n<1)return e;let r=t.imports?.get(e.slice(0,n));return r?.importedName==="collections"&&/(?:^|\/)lib\/cms\/collections(?:\.js)?$/.test(r.source)?`cms.collections${e.slice(n)}`:e}function xp(e,t){let n=Lt(e);return n==="cms.settings"?{sourceKind:"vcp-cms-settings",sourceType:"cms-field",operation:"settings",endpointPattern:"/settings",confidence:"exact",evidence:[{file:t.file,symbol:n,reason:"VCP CMS settings facade"}]}:n==="cms.navigation"?{sourceKind:"vcp-cms-navigation",sourceType:"cms-field",operation:"navigation",endpointPattern:"/navigation",confidence:"exact",evidence:[{file:t.file,symbol:n,reason:"VCP CMS navigation facade"}]}:null}function bp(e){let t=Lt(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function yc(e,t){let n=e.arguments[t];return Bt.isStringLiteral(n)?n.value:null}function Tk(e,t,n){let r=e.arguments[t];if(!Bt.isObjectExpression(r))return null;for(let o of r.properties)if(Bt.isObjectProperty(o)&&!o.computed&&(Bt.isIdentifier(o.key)&&o.key.name===n||Bt.isStringLiteral(o.key)&&o.key.value===n)&&Bt.isStringLiteral(o.value))return o.value.value;return null}function Fk(e){return/^\/collections\/([^/]+)(?:\/|$)/.exec(e)?.[1]??null}var Ec=typeof bc=="function"?bc:bc.default,H_=typeof xc=="function"?xc:xc.default,Ok={maxFunctionDepth:8,maxImportDepth:6},Mk=new Set(["src","href","alt","poster","content","title","aria-label"]);async function Cp(e){let t=e.fileCache??new Map,n=Ic(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...Ok,...e.options},variableCache:new Map,functionDepth:0,importDepth:0,paramSources:new Map,resolvingVariables:new Set,resolvingComponentProps:new Set,scopeVariables:$p(n,e.element.componentName)};await Rp(e.element.componentName,e.graph,r);let o=[];o.push(...await jk(e.element,e.graph,r),...await Vk(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await Uk(s,e.element,e.graph,r);a&&o.push(Vi(a,"text","children"))}for(let s of e.element.attributes??[]){let a=$k(s,e.element);if(!a)continue;let c=await Pp(s.source,e.element,e.graph,r);c&&o.push(Vi(c,a,s.name))}let i=rI(o).sort(Lp);return{hasDynamicData:i.length>0,bindings:i}}async function Rp(e,t,n){if(n.importDepth>=n.options.maxImportDepth)return;let r=n.analysis.functions.get(e)??n.analysis.functions.get("default"),o=r?.params[0];if(!r||!o)return;let i=n.analysis.functions.get("default")===r?"default":e,s=[];for(let l of t.elements.values()){if(l.sourceFile===n.file&&l.tag===e){s.push(l);continue}!l.importedFrom||!l.exportName||l.importedFrom===n.file&&l.exportName!==i||(l.importedFrom===n.file||await wp(l.importedFrom,l.exportName,n.file,n))&&s.push(l)}if(s.length===0)return;let a=new Map;for(let l of s){let d=`${n.file}#${e}<-${l.identity.key}`;if(!n.resolvingComponentProps.has(d)){n.resolvingComponentProps.add(d);try{let f=await Np(l.sourceFile,n);if(!f)continue;let m=Ki(f,n,{importDepth:n.importDepth+1});m.paramSources.clear(),m.scopeVariables=$p(f,l.componentName),await Rp(l.componentName,t,m);let u=await Dk(l,m);for(let[g,h]of u){if(!h)continue;let b=a.get(g)??[];b.push(h),a.set(g,b)}}finally{n.resolvingComponentProps.delete(d)}}}let c=new Map;for(let[l,d]of a){let f=Mp(d);f.length===1&&c.set(l,f[0])}Bk(o,c,n)}async function wp(e,t,n,r,o=new Set){if(e===n)return!0;if(o.size>=r.options.maxImportDepth||o.has(`${e}#${t}`))return!1;o.add(`${e}#${t}`);let s=(await Np(e,r))?.imports.get(t);if(!s||!wt(s.source))return!1;let a=await Up(e,s.source,r.exists);return a?a===n?!0:wp(a,s.importedName,n,r,o):!1}async function Dk(e,t){let n=new Map;Ec(t.analysis.ast,{JSXElement(o){if(Lk(o.node,e.sourceRange)){for(let i of o.node.openingElement.attributes)!w.isJSXAttribute(i)||!w.isJSXIdentifier(i.name)||!w.isJSXExpressionContainer(i.value)||!w.isExpression(i.value.expression)||n.set(i.name.name,i.value.expression);o.stop()}}});let r=new Map;for(let[o,i]of n){let s=await De(i,t);s&&r.set(o,s)}return r}function Lk(e,t){return e.loc?.start.line===t.startLine&&e.loc.start.column===t.startColumn&&e.loc.end.line===t.endLine&&e.loc.end.column===t.endColumn}async function Np(e,t){let n=t.fileCache.get(e);if(n)return n;if(!await t.exists(e))return null;let r=await t.readFile(e);return Ic(e,r,t.fileCache)}function Bk(e,t,n){if(w.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,kc(Object.fromEntries(t),n.file));return}if(w.isObjectPattern(e))for(let r of e.properties){if(!w.isObjectProperty(r)||r.computed||!w.isIdentifier(r.key))continue;let o=t.get(r.key.name);if(!o)continue;let i=w.isAssignmentPattern(r.value)?r.value.left:r.value;w.isIdentifier(i)&&n.paramSources.set(i.name,Ke(o))}}function $k(e,t){return e.name==="dangerouslySetInnerHTML"?"richtext":Mk.has(e.name)?"attribute":t.importedFrom||/^[A-Z]/.test(t.tag)?"component-prop":null}async function jk(e,t,n){let r=[];for(let o of t.regions){if(o.kind!=="repeat-region"||o.ownerKey!==e.identity.key)continue;let i=o.sourceCandidates?.find(a=>a.kind==="repeat-template");if(!i)continue;let s=await Ui(i.collectionSource,n);s&&r.push(Vi(Tn(s),"repeat-region",i.collectionExpression))}return r}async function Vk(e,t,n){let r=[];for(let o of t.regions){if(o.kind!=="conditional-region"||o.ownerKey!==e.identity.key)continue;let i=o.sourceCandidates?.find(a=>a.kind==="conditional-branch");if(!i)continue;let s=await Ui(i.conditionSource,n);s&&r.push(Vi(Tn(s),"conditional-region",i.conditionExpression))}return r}async function Uk(e,t,n,r){return Pp(e.source,t,n,r)}async function Pp(e,t,n,r){let o=await Kk(e,t,n,r);return o||Ui(e,r)}async function Kk(e,t,n,r){if(!e)return null;let o=Jk(e.base,t,n);if(!o)return null;let i=await Ui(o.collectionSource,r);return i?oo(i,e.path,!0):null}function Jk(e,t,n){let r=t.identity.key;for(;r;){for(let o of n.regions){if(o.kind!=="repeat-region"||!o.childKeys.includes(r))continue;let i=o.sourceCandidates?.find(s=>s.kind==="repeat-template"&&s.itemParamName===e);if(i)return i}r=n.elements.get(r)?.parentKey??null}return null}async function Ui(e,t){if(!e)return null;let n=await Ap(e.base,t);return n?oo(n,e.path,!1):null}async function Ap(e,t){let n=t.paramSources.get(e);if(n)return Ke(n);if(t.variableCache.has(e))return oI(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await Xk(e,t);if(r)return t.variableCache.set(e,Ke(r)),t.resolvingVariables.delete(e),r;let o=t.scopeVariables?.get(e)??t.analysis.variables.get(e);if(o){let s=await De(o,t);return t.variableCache.set(e,s?Ke(s):null),t.resolvingVariables.delete(e),s}let i=t.analysis.imports.get(e);if(i&&t.importDepth<t.options.maxImportDepth){let s=await jp(i,t);if(s){let a=Ki(s,t,{importDepth:t.importDepth+1}),c=Vp(i,s);if(c){let f=(await Fn(c,[],a)).returnSource;return t.variableCache.set(e,f?Ke(f):null),t.resolvingVariables.delete(e),f}let l=s.variables.get(i.importedName);if(l){let d=await De(l,a);return t.variableCache.set(e,d?Ke(d):null),t.resolvingVariables.delete(e),d}}}return t.variableCache.set(e,null),t.resolvingVariables.delete(e),null}async function Xk(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];Ec(t.analysis.ast,{CallExpression(o){if(w.isIdentifier(o.node.callee,{name:n})){let i=o.node.arguments[0];w.isExpression(i)&&r.push(i);return}o.node.arguments.some(i=>w.isIdentifier(i)&&i.name===n)&&r.push(o.node)}});for(let o of r){let i=await De(o,t);if(i)return i}return null}async function De(e,t){if(w.isIdentifier(e))return Ap(e.name,t);if(w.isMemberExpression(e)||w.isOptionalMemberExpression(e)){let n=w.isMemberExpression(e)?xp(e,{file:t.file}):null;if(n)return Op(n);let r=await zk(e,t);if(!r)return null;let o=tI(e);return oo(r,o,!1)}if(w.isAwaitExpression(e))return w.isExpression(e.argument)?De(e.argument,t):null;if(w.isCallExpression(e))return Tp(e,t);if(w.isObjectExpression(e)){let n=await Fp(e,t);return Object.keys(n).length>0?kc(n,t.file):null}if(w.isConditionalExpression(e)){let n=await De(e.consequent,t),r=await De(e.alternate,t);return ro(Ep(n,r))}if(w.isLogicalExpression(e)){let n=await De(e.left,t),r=await De(e.right,t);return ro(Ep(n,r))}return w.isTSAsExpression(e)||w.isTSSatisfiesExpression(e)||w.isTSNonNullExpression(e)||w.isTypeCastExpression(e)||w.isParenthesizedExpression(e)?De(e.expression,t):null}async function zk(e,t){let n=e;for(;w.isMemberExpression(n)||w.isOptionalMemberExpression(n);)n=n.object;return w.isExpression(n)?De(n,t):null}async function Tp(e,t){let n=yp(e,{file:t.file,imports:t.analysis.imports});if(n)return Op(n);if(bp(e)){let f=e.arguments[0];if(f&&w.isExpression(f))return ro(await De(f,t))}let r=await Hk(e,t);if(r)return r;let o=gp(e,{file:t.file});if(o)return{sourceKind:o.sourceKind,sourceType:"api-field",endpointPattern:o.endpointPattern,valuePath:o.valuePath,confidence:o.confidence,readonly:!0,evidence:o.evidence};let i=await Yk(e,t);if(i)return i;let s=await Zk(e,t);if(s)return s;let a=await Qk(e,t);if(a)return a;let c=await qk(e,t);if(c)return c;let l=[];for(let f of e.arguments)if(w.isExpression(f)){let m=await De(f,t);m&&l.push(m)}let d=Mp(l);return d.length===1?ro(d[0]):null}async function Hk(e,t){let n=Lt(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=Gk(e.arguments[0],t.file,"SWR key"),s=e.arguments[1];if(w.isIdentifier(s)){let a=await no(s.name,t);if(a)return(await Fn(a.node,i?[i]:[],a.context)).returnSource??i}return i}let r=e.arguments[0];if(!w.isObjectExpression(r))return $i(t.file,`${n} without static options`);let o=Wk(r,"queryFn");if(!o)return $i(t.file,`${n} without queryFn`);if(w.isIdentifier(o)){let i=await no(o.name,t);return i?(await Fn(i.node,[],i.context)).returnSource:$i(t.file,`${n} queryFn unresolved`)}return w.isArrowFunctionExpression(o)||w.isFunctionExpression(o)?(await Fn(o,[],t)).returnSource:w.isCallExpression(o)?Tp(o,t):null}function Wk(e,t){for(let n of e.properties){if(!w.isObjectProperty(n)||!w.isExpression(n.value))continue;if(_p(n)===t)return n.value}return null}function Gk(e,t,n){return w.isStringLiteral(e)?{sourceKind:e.value.startsWith("/api/")?"site-api-route":"external-api",sourceType:"api-field",endpointPattern:e.value,confidence:"exact",readonly:!0,evidence:[{file:t,reason:n}]}:null}async function Yk(e,t){if(!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property))return null;let n=e.callee.property.name;if(!["map","filter","slice","sort","toSorted"].includes(n))return null;let r=w.isExpression(e.callee.object)?await De(e.callee.object,t):null;if(!r)return null;if(n!=="map")return Tn(r);let o=e.arguments[0];if(w.isIdentifier(o)){let i=await no(o.name,t);if(!i)return Tn(r);let s=await Fn(i.node,[r],i.context);return{...Tn(r),...s.objectReturnMap??s.returnSource?.fieldMap?{fieldMap:s.objectReturnMap??s.returnSource.fieldMap}:{}}}if(w.isArrowFunctionExpression(o)||w.isFunctionExpression(o)){let i=await Fn(o,[r],t);return{...Tn(r),...i.objectReturnMap??i.returnSource?.fieldMap?{fieldMap:i.objectReturnMap??i.returnSource.fieldMap}:{}}}return Tn(r)}async function Zk(e,t){return!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property,{name:"json"})||!w.isExpression(e.callee.object)?null:De(e.callee.object,t)}async function Qk(e,t){return!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property,{name:"then"})||!w.isExpression(e.callee.object)?null:ro(await De(e.callee.object,t))}async function qk(e,t){if(!w.isIdentifier(e.callee))return null;let n=await no(e.callee.name,t);if(!n)return null;let r=[];for(let i of e.arguments){if(!w.isExpression(i)){r.push($i(t.file,`unsupported argument for ${e.callee.name}`));continue}let s=await De(i,t);r.push(s)}return(await Fn(n.node,r,n.context)).returnSource}async function no(e,t){let n=t.analysis.functions.get(e);if(n)return{node:n,context:t};let r=t.analysis.imports.get(e);if(!r||t.importDepth>=t.options.maxImportDepth)return null;let o=await jp(r,t);if(!o)return null;let i=Ki(o,t,{importDepth:t.importDepth+1}),s=Vp(r,o);return s?{node:s,context:i}:no(r.importedName,i)}async function Fn(e,t,n){if(n.functionDepth>=n.options.maxFunctionDepth)return{returnSource:null};let r=Ki(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let d=t[l];d&&Sc(c,nI(d),r)});let o=eI(e),i=null,s,a=!1;for(let c of o){if(w.isObjectExpression(c)){s={...s??{},...await Fp(c,r)},i=i??kc(s,n.file);continue}let l=await De(c,r);if(l){if(!i){i=l;continue}let d=vc(i,l);if(!d){a=!0,i=null;continue}i=d}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function Sc(e,t,n){if(w.isIdentifier(e)){n.paramSources.set(e.name,Ke(t));return}if(w.isAssignmentPattern(e)){Sc(e.left,t,n);return}if(w.isObjectPattern(e))for(let r of e.properties){if(!w.isObjectProperty(r)||r.computed||!w.isIdentifier(r.key))continue;let o=oo(t,[{kind:"property",name:r.key.name}],!0),i=w.isAssignmentPattern(r.value)?r.value.left:r.value;Sc(i,o,n)}}function eI(e){if(w.isArrowFunctionExpression(e)&&w.isExpression(e.body))return[e.body];let t=[],n=e.body;if(!w.isBlockStatement(n))return t;let r=o=>{if(w.isFunction(o)&&o!==e)return;if(w.isReturnStatement(o)){o.argument&&w.isExpression(o.argument)&&t.push(o.argument);return}let i=w.VISITOR_KEYS[o.type];for(let s of i??[]){let a=o[s];if(Array.isArray(a))for(let c of a)w.isNode(c)&&r(c);else w.isNode(a)&&r(a)}};return r(n),t}async function Fp(e,t){let n={};for(let r of e.properties){if(!w.isObjectProperty(r))continue;let o=_p(r);if(!o||!w.isExpression(r.value))continue;let i=await De(r.value,t);i&&(n[o]=i)}return n}function _p(e){return w.isIdentifier(e.key)&&!e.computed?e.key.name:w.isStringLiteral(e.key)?e.key.value:null}function tI(e){let t=[],n=e;for(;w.isMemberExpression(n)||w.isOptionalMemberExpression(n);){let r=n.property;n.computed?w.isStringLiteral(r)?t.unshift({kind:"property",name:r.value}):w.isNumericLiteral(r)&&t.unshift({kind:"index",index:r.value}):w.isIdentifier(r)&&t.unshift({kind:"property",name:r.name}),n=n.object}return w.isIdentifier(n),t}function oo(e,t,n){if(t.length===0)return Ke(e);let r=t[0];if(r?.kind==="property"&&e.fieldMap?.[r.name])return oo(e.fieldMap[r.name],t.slice(1),n);let o=Ke(e);if(o.sourceType==="cms-field"){let i=t.filter(s=>s.kind==="property").map(s=>s.name);return i[0]==="data"&&i[1]==="items"?(o.valuePath=to(o.valuePath,"data.items[]"),o.cmsFieldRoot=!1,o):i[0]==="fields"?(o.fieldPath=to(o.fieldPath,i.slice(1).join(".")),o.cmsFieldRoot=!0,o):o.cmsFieldRoot||n||o.fieldMap?(o.fieldPath=to(o.fieldPath,i.join(".")),o):(o.valuePath=to(o.valuePath,Sp(t)),o)}return o.valuePath=to(o.valuePath,Sp(t)),o}function Sp(e){return e.map(t=>t.kind==="property"?t.name:`[${t.index}]`).join(".").replace(/\.\[/g,"[")}function to(e,t){return t?e?t.startsWith("[")?`${e}${t}`:`${e}.${t}`:t:e}function Op(e){return{sourceKind:e.sourceKind,sourceType:e.sourceType,operation:e.operation,collection:e.collection,endpointPattern:e.endpointPattern,valuePath:e.valuePath,confidence:e.confidence,readonly:!0,evidence:e.evidence}}function Tn(e){let t=Ke(e);return t.sourceType==="cms-field"&&!t.valuePath&&(t.valuePath="items[]"),t}function nI(e){let t=Ke(e);return t.valuePath=void 0,t.sourceType==="cms-field"&&(t.cmsFieldRoot=!1),t}function ro(e){return e?{...Ke(e),confidence:e.confidence==="unknown"?"unknown":"safe-derived",evidence:[...e.evidence,{file:e.evidence[0]?.file??"unknown",reason:"safe derived expression"}]}:null}function Ep(e,t){return e?t?vc(e,t):Ke(e):t?Ke(t):null}function vc(e,t){if(ji(e)!==ji(t))return null;let n=Bp(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function Mp(e){let t=new Map;for(let n of e){let r=ji(n),o=t.get(r);t.set(r,o?vc(o,n):Ke(n))}return[...t.values()]}function ji(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,ji(r)])):void 0;return JSON.stringify({sourceKind:e.sourceKind,sourceType:e.sourceType,endpointPattern:e.endpointPattern,operation:e.operation,collection:e.collection,fieldPath:e.fieldPath,valuePath:e.valuePath,cmsFieldRoot:e.cmsFieldRoot,fieldMap:t})}function kc(e,t){let n=Object.values(e)[0];return{sourceKind:n?.sourceKind??"unknown-api",sourceType:n?.sourceType??"api-field",endpointPattern:n?.endpointPattern,operation:n?.operation,collection:n?.collection,confidence:n?.confidence??"partial",readonly:!0,evidence:n?.evidence??[{file:t,reason:"object return map"}],fieldMap:e}}function $i(e,t){return{sourceKind:"unknown-api",sourceType:"api-field",confidence:"unknown",readonly:!0,evidence:[{file:e,reason:t}]}}function Vi(e,t,n){return{sourceKind:e.sourceKind,sourceType:e.sourceType,...e.endpointPattern?{endpointPattern:e.endpointPattern}:{},...e.operation?{operation:e.operation}:{},...e.collection?{collection:e.collection}:{},...e.fieldPath?{fieldPath:e.fieldPath}:{},...e.valuePath?{valuePath:e.valuePath}:{},targetKind:t,targetName:n,confidence:e.confidence,readonly:!0,evidence:e.evidence.map(r=>({...r}))}}function Dp(e){let t=[...e].sort(Lp),n=t[0],r=[...new Set(t.flatMap(o=>o.sourceKind==="vcp-cms-collection"&&o.collection?[o.collection]:[]))];return{hasDynamicData:t.length>0,sourceKinds:[...new Set(t.map(o=>o.sourceKind))],...r.length>0?{collections:r}:{},...n?.endpointPattern?{primaryEndpoint:n.endpointPattern}:{},...n?.collection?{primaryCollection:n.collection}:{},...n?.fieldPath?{primaryFieldPath:n.fieldPath}:{}}}function rI(e){let t=new Set,n=[];for(let r of e){let o=JSON.stringify({sourceKind:r.sourceKind,endpointPattern:r.endpointPattern,collection:r.collection,fieldPath:r.fieldPath,valuePath:r.valuePath,targetKind:r.targetKind,targetName:r.targetName});t.has(o)||(t.add(o),n.push(r))}return n}function Lp(e,t){return vp(e.targetKind)-vp(t.targetKind)||Bp(e.confidence,t.confidence)||kp(e.sourceKind)-kp(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function vp(e){return{"repeat-region":0,"conditional-region":1,text:2,richtext:3,attribute:4,"component-prop":5}[e]}function kp(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function Bp(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function Ic(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=_k(t,{sourceType:"module",plugins:["jsx","typescript"]}),i={file:e,source:t,ast:o,variables:new Map,functions:new Map,imports:new Map,stateSetters:new Map,functionVariables:new WeakMap};return Ec(o,{ImportDeclaration(s){let a=s.node.source.value;for(let c of s.node.specifiers)w.isImportSpecifier(c)&&w.isIdentifier(c.local)?i.imports.set(c.local.name,{source:a,importedName:w.isIdentifier(c.imported)?c.imported.name:c.imported.value,localName:c.local.name,isDefault:!1}):w.isImportDefaultSpecifier(c)&&i.imports.set(c.local.name,{source:a,importedName:"default",localName:c.local.name,isDefault:!0})},FunctionDeclaration(s){s.node.id?.name&&i.functions.set(s.node.id.name,s.node)},VariableDeclarator(s){let a=s.getFunctionParent(),c=a&&(w.isFunctionDeclaration(a.node)||w.isFunctionExpression(a.node)||w.isArrowFunctionExpression(a.node))?a.node:null,l=c?i.functionVariables.get(c)??new Map:i.variables;c&&!i.functionVariables.has(c)&&i.functionVariables.set(c,l);for(let d of ar(s.node.id))l.set(d,w.isExpression(s.node.init)?s.node.init:null);if(w.isArrayPattern(s.node.id)&&w.isCallExpression(s.node.init)&&Lt(s.node.init.callee)==="useState"){let[d,f]=s.node.id.elements;w.isIdentifier(d)&&w.isIdentifier(f)&&i.stateSetters.set(d.name,f.name)}w.isIdentifier(s.node.id)&&Ip(s.node.init)&&i.functions.set(s.node.id.name,s.node.init)},ExportNamedDeclaration(s){let a=s.node.declaration,c=s.node.source?.value;if(c)for(let l of s.node.specifiers){if(!w.isExportSpecifier(l))continue;let d=w.isIdentifier(l.exported)?l.exported.name:l.exported.value,f=l.local.name;i.imports.set(d,{source:c,importedName:f,localName:d,isDefault:f==="default"})}if(w.isFunctionDeclaration(a)&&a.id?.name&&i.functions.set(a.id.name,a),w.isVariableDeclaration(a))for(let l of a.declarations)w.isIdentifier(l.id)&&Ip(l.init)&&i.functions.set(l.id.name,l.init)},ExportDefaultDeclaration(s){let a=s.node.declaration;if((w.isFunctionDeclaration(a)||w.isFunctionExpression(a)||w.isArrowFunctionExpression(a))&&i.functions.set("default",a),w.isIdentifier(a)){let c=i.functions.get(a.name);c&&i.functions.set("default",c)}}}),n.set(e,i),i}function ar(e){return!e||w.isVoidPattern(e)?[]:w.isIdentifier(e)?[e.name]:w.isObjectPattern(e)?e.properties.flatMap(t=>w.isObjectProperty(t)?ar(t.value):ar(t.argument)):w.isArrayPattern(e)?e.elements.flatMap(t=>t?ar(w.isRestElement(t)?t.argument:t):[]):w.isAssignmentPattern(e)?ar(e.left):w.isRestElement(e)?ar(e.argument):[]}function Ip(e){return w.isFunctionExpression(e)||w.isArrowFunctionExpression(e)}function $p(e,t){let n=e.functions.get(t)??e.functions.get("default");return n?e.functionVariables.get(n):void 0}async function jp(e,t){let n=await Up(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return Ic(n,r,t.fileCache)}function Vp(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function Up(e,t,n){return wt(t)?fn(e,t,n):null}function Ki(e,t,n={}){return{file:e.file,analysis:e,readFile:t.readFile,exists:t.exists,fileCache:t.fileCache,options:t.options,variableCache:new Map,functionDepth:n.functionDepth??t.functionDepth,importDepth:n.importDepth??t.importDepth,paramSources:new Map(t.paramSources),resolvingVariables:new Set,resolvingComponentProps:t.resolvingComponentProps,scopeVariables:e===t.analysis?t.scopeVariables:void 0}}function oI(e){return e?Ke(e):null}function Ke(e){return{...e,evidence:e.evidence.map(t=>({...t})),...e.fieldMap?{fieldMap:Object.fromEntries(Object.entries(e.fieldMap).map(([t,n])=>[t,Ke(n)]))}:{}}}import*as Rc from"@babel/parser";import Cc from"@babel/traverse";import*as G from"@babel/types";import{classifySiteEditPropertyName as iI}from"@vcp-dev/contracts";var wc=typeof Cc=="function"?Cc:Cc.default;function Nc(e){let t=iI(e.propertyName);if(t.owner!=="generic")return ot("invalid-property",t.diagnostic?.message??`Property '${e.propertyName}' is not a generic property`);let n=e.selectionRef;if(!n)return ot("missing-selection-ref","A repeat property target requires a complete selection reference");if(n.key!==e.element.identity.key)return ot("selection-mismatch","Selection reference does not identify the requested element");if(n.instanceIndex===void 0)return ot("missing-instance-index","A repeat property target requires an instance index");let r;try{r=Rc.parse(e.source,{sourceType:"module",plugins:["typescript","jsx"]})}catch(b){return ot("repeat-not-found",`Unable to parse repeat source: ${b instanceof Error?b.message:String(b)}`)}let o=sI(r,e.element.sourceRange);if(!o)return ot("repeat-not-found","The selected element is not inside a supported map repeat");if(!G.isIdentifier(o.callback.params[0]))return ot("unsupported-callback","Repeat property materialization requires an identifier callback item");let i=aI(r,o.collection,e.file,e.sources);if(!i)return ot("collection-not-found","The repeat collection is not a visible local static array");let{array:s,locator:a,sourceFile:c}=i,l=[],d=[];for(let[b,E]of s.elements.entries()){if(!E||!G.isObjectExpression(E)||!Wp(E))return ot("unsafe-collection","Repeat materialization requires an array of local static objects without spreads");let v=[{kind:"index",index:b}];l.push(v),d.push({kind:"value",root:a.root,path:v})}let f=d.length;if(n.instanceCount!==void 0&&n.instanceCount!==f)return ot("count-mismatch",`Selection reports ${n.instanceCount} instances but the source collection has ${f}`);let m=n.instanceIndex;if(m>=f)return ot("index-out-of-range",`Selected repeat instance ${m} is outside the source collection`);let u=s.elements[m];if(!u||!G.isObjectExpression(u))return ot("unsafe-collection","Selected repeat item is not an object");let g=pI(e.element,e.propertyName),h=dI(u,e.propertyName);return h?{ok:!0,sourceFile:c,templateFile:e.file,collectionLocator:a,parentObjectLocators:d,selectedParentObjectLocator:d[m],sourceItemIndex:m,sourceItemPath:l[m],collectionIndexMap:Array.from({length:f},(b,E)=>E),callbackItemName:o.callback.params[0].name,targetElementLocator:{kind:"jsx-node",strategy:"structural-path",file:e.element.identity.file,component:e.element.identity.component,structuralPath:e.element.identity.structuralPath,expectedRange:e.element.sourceRange},propertyName:e.propertyName,propertyState:h,selectedResolution:fI(u,e.propertyName),...g?{property:g}:{},selectionRef:n}:ot("unsafe-property-source",`Property '${e.propertyName}' has a dynamic or unsupported source in the repeat item`)}function sI(e,t){let n=[];return wc(e,{CallExpression(r){let o=Kp(r.node);o&&Xp(o.callback,t)&&n.push({...o,span:Jp(r.node)})},OptionalCallExpression(r){let o=Kp(r.node);o&&Xp(o.callback,t)&&n.push({...o,span:Jp(r.node)})}}),n.sort((r,o)=>r.span-o.span),n[0]??null}function Kp(e){let t=e.callee;if(!G.isMemberExpression(t)&&!G.isOptionalMemberExpression(t)||t.computed||!G.isIdentifier(t.property)||t.property.name!=="map"||!G.isExpression(t.object))return null;let n=e.arguments[0];return!n||!G.isExpression(n)||!G.isArrowFunctionExpression(n)&&!G.isFunctionExpression(n)?null:{collection:t.object,callback:n}}function aI(e,t,n,r){let o=io(t);if(o&&G.isArrayExpression(o))return{array:o,locator:{kind:"value",root:{kind:"expression",sourceRange:Yp(o)}},sourceFile:n};if(!G.isIdentifier(t))return null;let i=[];if(wc(e,{VariableDeclarator(s){G.isIdentifier(s.node.id)&&s.node.id.name===t.name&&s.node.init&&i.push(s.node)}}),i.length===1){let s=io(i[0].init);return!s||!G.isArrayExpression(s)?null:{array:s,locator:{kind:"value",root:{kind:"binding",name:t.name}},sourceFile:n}}return cI(e,t.name,n,r)}function cI(e,t,n,r){if(!r)return null;for(let o of e.program.body){if(!G.isImportDeclaration(o))continue;let i=o.specifiers.find(m=>m.local.name===t);if(!i||!G.isStringLiteral(o.source)||!G.isImportSpecifier(i))continue;let s=uI(n,o.source.value,r);if(!s)return null;let a=G.isIdentifier(i.imported)?i.imported.name:i.imported.value,c=r.get(s);if(c===void 0)return null;let l;try{l=Rc.parse(c,{sourceType:"module",plugins:["typescript","jsx"]})}catch{return null}let d=lI(l,a),f=d?io(d):null;return!f||!G.isArrayExpression(f)?null:{array:f,locator:{kind:"value",root:{kind:"binding",name:a}},sourceFile:s}}return null}function lI(e,t){let n=null;return wc(e,{VariableDeclarator(r){n||!G.isIdentifier(r.node.id)||r.node.id.name!==t||!r.node.init||!G.isExpression(r.node.init)||(n=r.node.init)}}),n}function uI(e,t,n){let r=dn(e,t);return[r,r+".tsx",r+".ts",r+".jsx",r+".js",r+"/index.tsx",r+"/index.ts",r+"/index.jsx",r+"/index.js"].find(i=>n.has(i))??null}function io(e){return G.isParenthesizedExpression(e)?io(e.expression):G.isTSAsExpression(e)?Hp(e.typeAnnotation)?io(e.expression):null:G.isTSSatisfiesExpression(e)?null:e}function Hp(e){return G.isTSTypeReference(e)&&G.isIdentifier(e.typeName)&&e.typeName.name==="const"}function Wp(e){return e.properties.every(t=>!G.isObjectProperty(t)||t.computed||!G.isExpression(t.value)?!1:Ji(t.value))}function Ji(e){if(G.isTSAsExpression(e)&&Hp(e.typeAnnotation))return Ji(e.expression);if(G.isTSSatisfiesExpression(e))return!1;if(G.isArrayExpression(e))return e.elements.every(n=>!n||G.isSpreadElement(n)||!G.isExpression(n)?!1:Ji(n));if(G.isObjectExpression(e))return Wp(e);let t=Ft(e);return t.status==="resolved"||t.status==="undefined"}function dI(e,t){let n=e.properties.filter(o=>G.isObjectProperty(o)&&Gp(o.key)===t);if(n.length>1)return null;let r=n[0];return r?G.isExpression(r.value)?Ji(r.value)?"static":G.isIdentifier(r.value)||G.isMemberExpression(r.value)?"binding":null:null:"missing"}function fI(e,t){let n=e.properties.filter(o=>G.isObjectProperty(o)&&Gp(o.key)===t);if(n.length>1)return{status:"unresolved"};let r=n[0];return!r||!G.isExpression(r.value)?{status:"undefined"}:Ft(r.value)}function pI(e,t){let n=e.attributes?.filter(r=>r.name===t)??[];return n.length===1?n[0]:void 0}function Gp(e){return G.isIdentifier(e)?e.name:G.isStringLiteral(e)?e.value:G.isNumericLiteral(e)?String(e.value):null}function Yp(e){return{startLine:e.loc?.start.line??0,startColumn:e.loc?.start.column??0,endLine:e.loc?.end.line??0,endColumn:e.loc?.end.column??0}}function Jp(e){return e.start==null||e.end==null?Number.MAX_SAFE_INTEGER:e.end-e.start}function Xp(e,t){let n=Yp(e);return zp(n.startLine,n.startColumn,t.startLine,t.startColumn)<=0&&zp(n.endLine,n.endColumn,t.endLine,t.endColumn)>=0}function zp(e,t,n,r){return e===n?t-r:e-n}function ot(e,t){return{ok:!1,errorCode:e,reason:t}}import{classifySiteEditPropertyName as eC}from"@vcp-dev/contracts";import*as Y from"@babel/types";import lo from"node:path";import*as B from"@babel/types";import*as tm from"@babel/parser";import Pc from"@babel/traverse";import*as ne from"@babel/types";function Xi(e,t){let n=[],r=e;for(;ne.isMemberExpression(r);){if(r.computed)if(ne.isNumericLiteral(r.property))n.unshift({kind:"index",index:r.property.value});else if(ne.isStringLiteral(r.property))n.unshift({kind:"property",name:r.property.value});else return null;else{if(!ne.isIdentifier(r.property))return null;n.unshift({kind:"property",name:r.property.name})}r=r.object}return!ne.isIdentifier(r)||r.name!==t?null:n}function Zp(e){if(ne.isIdentifier(e))return{base:e.name,path:[]};if(!ne.isMemberExpression(e))return null;let t=[],n=e;for(;ne.isMemberExpression(n);){if(n.computed)if(ne.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ne.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else{if(!ne.isIdentifier(n.property))return null;t.unshift({kind:"property",name:n.property.name})}n=n.object}return ne.isIdentifier(n)?{base:n.name,path:t}:null}function Qe(e,t){let n=e;for(let r of t){if(r.kind==="property"){if(n===null||Array.isArray(n)||typeof n!="object"||!(r.name in n))return;n=n[r.name];continue}if(!Array.isArray(n)||r.index<0||r.index>=n.length)return;n=n[r.index]}return n}function Qp(e){let{resolveBindingTarget:t}=e;async function n(i,s,a,c,l,d,f){if(ne.isStringLiteral(i)||ne.isNumericLiteral(i)||ne.isBooleanLiteral(i))return i.value;if(ne.isNullLiteral(i))return null;if(ne.isTemplateLiteral(i))return i.expressions.length===0&&i.quasis.length===1?i.quasis[0].value.cooked??i.quasis[0].value.raw:void 0;if(ne.isTSAsExpression(i)||ne.isTSSatisfiesExpression(i)||ne.isTSNonNullExpression(i))return await n(i.expression,s,a,c,l,d,f);if(ne.isIdentifier(i)){let m=s.getBinding(i.name);if(!m)return;let u=await t({currentFile:a,binding:m,readFile:c,exists:l,fileCache:d,visited:f});return u?.kind==="static"?u.value:void 0}if(ne.isArrayExpression(i)){let m=[];for(let u of i.elements){if(!u||ne.isSpreadElement(u))return;let g=await r(u,s,a,c,l,d,f);if(g===void 0)return;m.push(g)}return m}if(ne.isObjectExpression(i)){let m={};for(let u of i.properties){if(!ne.isObjectProperty(u)||u.computed)return;let g=null;if(ne.isIdentifier(u.key)?g=u.key.name:ne.isStringLiteral(u.key)&&(g=u.key.value),!g)return;if(u.shorthand){if(!ne.isIdentifier(u.value))return;let b=await r(u.value,s,a,c,l,d,f);if(b===void 0)return;m[g]=b;continue}if(!ne.isExpression(u.value))return;let h=await r(u.value,s,a,c,l,d,f);h!==void 0&&(m[g]=h)}return m}if(ne.isMemberExpression(i)){let m=await o(i,s,a,c,l,d,f);if(!m)return;let u=s.getBinding(m.base);if(!u)return;let g=await t({currentFile:a,binding:u,readFile:c,exists:l,fileCache:d,visited:f});return!g||g.kind!=="static"?void 0:Qe(g.value,m.path)}}async function r(i,s,a,c,l,d,f){if(!ne.isSpreadElement(i))return await n(i,s,a,c,l,d,f)}async function o(i,s,a,c,l,d,f){if(ne.isIdentifier(i))return{base:i.name,path:[]};if(!ne.isMemberExpression(i))return null;let m=[],u=i;for(;ne.isMemberExpression(u);){if(u.computed){let g=u.property;if(ne.isNumericLiteral(g))m.unshift({kind:"index",index:g.value});else if(ne.isStringLiteral(g))m.unshift({kind:"property",name:g.value});else{let h=ne.isExpression(g)?await n(g,s,a,c,l,d,f):void 0;if(typeof h=="string")m.unshift({kind:"property",name:h});else if(Number.isInteger(h))m.unshift({kind:"index",index:h});else return null}}else{if(!ne.isIdentifier(u.property))return null;m.unshift({kind:"property",name:u.property.name})}u=u.object}return ne.isIdentifier(u)?{base:u.name,path:m}:null}return{normalizeExpressionWithScope:o,evaluateStaticExpression:n}}var nm=typeof Pc=="function"?Pc:Pc.default,qp=new WeakMap;function rm(e){try{return tm.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function zi(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=rm(n);return e.set(t,{source:n,ast:o}),o}function Hi(e,t){let n=null,r=-1;for(let o of so(e).expressions){let i=o.node.loc;if(!i||!Tc(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s>=r&&(n=o,r=s)}return n}function om(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of so(e).expressions){if(!mI(o.node.loc,t))continue;let i=(o.node.end??0)-(o.node.start??0);i<=r&&(n=o,r=i)}return n}function Ac(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of so(e).jsxElements){let i=o.node.loc;if(!i||!Tc(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s<=r&&(n=o,r=s)}return n}function so(e){let t=qp.get(e);if(t)return t;let n={expressions:[],jsxElements:[]};return nm(e,{Expression(r){n.expressions.push(r)},JSXElement(r){n.jsxElements.push(r)}}),qp.set(e,n),n}function mI(e,t){return e?e.start.line===t.startLine&&e.start.column===t.startColumn&&e.end.line===t.endLine&&e.end.column===t.endColumn:!1}function Tc(e,t){let n=em({line:e.start.line,column:e.start.column},{line:t.startLine,column:t.startColumn}),r=em({line:e.end.line,column:e.end.column},{line:t.endLine,column:t.endColumn});return n>=0&&r<=0}function Wi(e){return e.loc?{startLine:e.loc.start.line,startColumn:e.loc.start.column,endLine:e.loc.end.line,endColumn:e.loc.end.column}:null}function em(e,t){return e.line!==t.line?e.line<t.line?-1:1:e.column!==t.column?e.column<t.column?-1:1:0}function cr(e,t){if(t)return Fc(e,t);let n=Zp(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function Fc(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function ao(e,t,n){let r=null,o=Number.POSITIVE_INFINITY;for(let i of so(e).expressions){if(Fc(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function im(e,t,n,r){let o=null,i=Number.POSITIVE_INFINITY;for(let s of so(e).expressions){if(Fc(s.node,t)!==n)continue;let a=s.node.loc;if(!a||!Tc(a,r))continue;let c=(s.node.end??0)-(s.node.start??0);c<=i&&(o=s,i=c)}return o}function lr(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}function co(e){let t=null;if(nm(e,{Program(n){t=n.scope,n.stop()}}),!t)throw new Error("Unable to determine program scope");return t}async function $t(e,t,n){let r=n.get(e);if(r)return r;let o=await t(e),i=rm(o),s={source:o,ast:i};return n.set(e,s),s}function gI(e){return B.isIdentifier(e.callee)&&(e.callee.name==="useState"||e.callee.name==="useReducer")?e.callee.name:B.isMemberExpression(e.callee)&&B.isIdentifier(e.callee.property)&&(e.callee.property.name==="useState"||e.callee.property.name==="useReducer")?e.callee.property.name:null}function hI(e){if(!B.isNewExpression(e)||!B.isIdentifier(e.callee,{name:"Proxy"})||e.arguments.length!==2||!B.isIdentifier(e.arguments[0])||!B.isObjectExpression(e.arguments[1])||e.arguments[1].properties.length!==1)return null;let[t]=e.arguments[1].properties;if(!B.isObjectMethod(t)||t.kind!=="method"||t.computed||t.async||t.generator||!B.isIdentifier(t.key,{name:"get"})||t.params.length!==3||!t.params.every(B.isIdentifier)||t.body.body.length!==2)return null;let[n,r,o]=t.params,[i,s]=t.body.body;if(B.isIfStatement(i)&&B.isBlockStatement(i.consequent)&&i.consequent.body.length!==1)return null;let a=B.isIfStatement(i)?i.test:null,c=a&&B.isLogicalExpression(a,{operator:"&&"})?a.right:null,l=B.isIfStatement(i)?B.isBlockStatement(i.consequent)?i.consequent.body[0]:i.consequent:null,d=B.isReturnStatement(s)?s.argument:null;return!a||!B.isLogicalExpression(a,{operator:"&&"})||!B.isBinaryExpression(a.left,{operator:"==="})||!B.isUnaryExpression(a.left.left,{operator:"typeof"})||!B.isIdentifier(a.left.left.argument,{name:r.name})||!B.isStringLiteral(a.left.right,{value:"string"})||!B.isUnaryExpression(c,{operator:"!"})||!B.isBinaryExpression(c.argument,{operator:"in"})||!B.isIdentifier(c.argument.left,{name:r.name})||!B.isIdentifier(c.argument.right,{name:n.name})||!B.isReturnStatement(l)||!B.isIfStatement(i)||i.alternate||!B.isCallExpression(d)||!B.isMemberExpression(d.callee)||!B.isIdentifier(d.callee.object,{name:"Reflect"})||!B.isIdentifier(d.callee.property,{name:"get"})||d.arguments.length!==3||!B.isIdentifier(d.arguments[0],{name:n.name})||!B.isIdentifier(d.arguments[1],{name:r.name})||!B.isIdentifier(d.arguments[2],{name:o.name})?null:e.arguments[0].name}function yI(e){let t=e.getFunctionParent();if(!t)return null;if(t.isFunctionDeclaration()){let s=t.node.id?.name;if(!s)return null;let a=t.parentPath?.isExportDefaultDeclaration()?"default":(t.parentPath?.isExportNamedDeclaration(),s);return{componentName:s,exportName:a}}if(!t.isArrowFunctionExpression()&&!t.isFunctionExpression())return null;let n=t.parentPath;if(!n?.isVariableDeclarator()||!B.isIdentifier(n.node.id))return null;let r=n.node.id.name,o=n.parentPath,i=o?.parentPath?.isExportDefaultDeclaration()?"default":(o?.parentPath?.isExportNamedDeclaration(),r);return{componentName:r,exportName:i}}function xI(e,t){let n=yI(e.path);if(!n)return null;let r=qn(e,t);return r?{...n,...r}:null}function bI(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}function _c(e,t){let n=[{kind:"component-prop",file:t.file,displayName:`${t.componentName}.${t.propName}`,canEditHere:!0}];return e.kind==="external"?{...e,chainPrefix:[...n,...e.chainPrefix??[]],editMode:e.editMode==="readonly"?"readonly":"upstream"}:{...e,chainPrefix:[...n,...e.chainPrefix??[]],editMode:"upstream"}}function Oc(e,t){for(let n of e.program.body){if(t==="default"&&B.isExportDefaultDeclaration(n))return B.isExpression(n.declaration)?{kind:"default-expression",expression:n.declaration}:(B.isFunctionDeclaration(n.declaration)||B.isClassDeclaration(n.declaration))&&n.declaration.id?{kind:"default-binding",name:n.declaration.id.name}:null;if(B.isExportNamedDeclaration(n)){if(n.declaration){if(B.isVariableDeclaration(n.declaration)){for(let r of n.declaration.declarations)if(B.isIdentifier(r.id)&&r.id.name===t)return{kind:"local-binding",name:r.id.name}}if((B.isFunctionDeclaration(n.declaration)||B.isClassDeclaration(n.declaration))&&n.declaration.id&&n.declaration.id.name===t)return{kind:"local-binding",name:t}}for(let r of n.specifiers)if((B.isIdentifier(r.exported)?r.exported.name:r.exported.value)===t&&B.isExportSpecifier(r))return n.source?{kind:"re-export",name:r.local.name,source:n.source.value}:{kind:"local-binding",name:r.local.name}}}return null}function sm(e){let{resolveExternalExpression:t,resolveCollectionCallTarget:n,evaluateStaticExpression:r,resolveSourceInfoProvenance:o,buildExpressionSourceInfo:i}=e;async function s(u){let{currentFile:g,binding:h,readFile:b,exists:E,fileCache:v,visited:I}=u,R=`${g}::${h.kind}::${h.identifier.name}`;if(I.has(R))return null;I.add(R);try{let P=await a({currentFile:g,binding:h,readFile:b,exists:E,fileCache:v,visited:I});if(P)return P;if(h.path.isImportSpecifier()||h.path.isImportDefaultSpecifier())return await f({currentFile:g,binding:h,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,fileCache:v,visited:I});if(h.kind==="param")return null;if(h.path.isVariableDeclarator()){let T=h.path.node.init;if(!T||!B.isExpression(T))return null;let C=hI(T);if(C&&!h.path.scope.getBinding("Proxy")&&!h.path.scope.getBinding("Reflect")){let M=h.path.scope.getBinding(C),K=M?await s({...u,binding:M}):null;if(K?.kind==="static"&&K.value!==null&&!Array.isArray(K.value)&&typeof K.value=="object")return K}let A=h.path.get("init");if(A&&!Array.isArray(A)&&A.isExpression()){let M=await t({currentFile:g,expressionPath:A,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});if(M)return M;if(A.isCallExpression()){let K=await n({currentFile:g,callPath:A,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});if(K)return K}}let F=await r(T,h.path.scope,g,b,E,v,I);return F===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:F,sourceKind:"binding"}}if(h.path.isIdentifier()&&h.path.parentPath?.isExportDefaultDeclaration()){let T=h.path.parentPath.node.declaration;if(!B.isExpression(T))return null;let C=await r(T,h.path.scope,g,b,E,v,I);return C===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:C,sourceKind:"binding"}}return null}finally{I.delete(R)}}async function a(u){let{currentFile:g,binding:h,readFile:b,exists:E,fileCache:v,visited:I}=u;if(!h.path.isVariableDeclarator()||!h.path.get("id").isArrayPattern())return null;let R=h.path,P=R.node.init;if(!P||!B.isCallExpression(P))return null;let T=gI(P);if(!T||!B.isArrayPattern(R.node.id)||R.node.id.elements.findIndex(K=>B.isIdentifier(K)&&K.name===h.identifier.name)!==0)return null;let A=T==="useReducer"?1:0,F=P.arguments[A];if(!F||!B.isExpression(F))return null;let M=await r(F,R.scope,g,b,E,v,I);return M===void 0?null:{kind:"static",file:g,root:{kind:"hook-state",name:h.identifier.name,hook:T},value:M,sourceKind:"binding"}}async function c(u){let g=xI(u.binding,u.sourceInfo);if(!g||!u.graph)return null;let h=[...u.graph.elements.values()].filter(T=>bI(T,u.currentFile,g.componentName,g.exportName));if(h.length!==1)return null;let b=h[0],E=b.attributes?.find(T=>T.name===g.propName);if(E&&!E.source){let T=await l({caller:b,propName:g.propName,remainingPath:g.remainingPath,readFile:u.readFile,fileCache:u.fileCache});if(T)return _c(T,{componentName:g.componentName,propName:g.propName,file:b.sourceFile})}if(!E?.source){let T=await d({caller:b,propName:g.propName,remainingPath:g.remainingPath,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited});if(T)return _c(T,{componentName:g.componentName,propName:g.propName,file:b.sourceFile});let C=gf(u.binding,g.componentName,g.propName);if(!C||C.propName!==g.propName)return null;let A=await r(C.expressionPath.node,C.expressionPath.scope,u.currentFile,u.readFile,u.exists,u.fileCache,u.visited);if(A===void 0)return null;let F=g.remainingPath;return F.length>0&&Qe(A,F)===void 0?null:{kind:"value",file:u.currentFile,root:{kind:"binding",name:g.propName},path:F,sourceKind:"binding",semanticKind:"component-prop",displayExpression:C.displayPath,chainPrefix:[{kind:"component-prop",file:u.currentFile,displayName:C.displayPath,canEditHere:!0}],editMode:"upstream",diagnostics:[]}}let v=await $t(b.sourceFile,u.readFile,u.fileCache);if(!v.ast)return null;let I=im(v.ast,v.source,E.source.expression,E.sourceRange)??ao(v.ast,v.source,E.source.expression);if(!I)return null;let R={...E.source,expression:lr(E.source.expression,g.remainingPath),path:[...E.source.path,...g.remainingPath]},P=await o({currentFile:b.sourceFile,expressionPath:I,sourceInfo:R,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited});return P?_c(P.kind==="external"?P:{...P,displayExpression:R.expression},{componentName:g.componentName,propName:g.propName,file:b.sourceFile}):null}async function l(u){let g=await $t(u.caller.sourceFile,u.readFile,u.fileCache);if(!g.ast)return null;let h=Ac(g.ast,u.caller.sourceRange);if(!h)return null;let b=h.get("openingElement").get("attributes").find(R=>R.isJSXAttribute()&&R.node.name.type==="JSXIdentifier"&&R.node.name.name===u.propName);if(!b?.isJSXAttribute())return null;let E=b.get("value"),v=E.isStringLiteral()?E:E.isJSXExpressionContainer()?E.get("expression"):null;if(!v?.isExpression())return null;let I=Wi(v.node);return I?{kind:"value",file:u.caller.sourceFile,root:{kind:"expression",sourceRange:I},path:u.remainingPath,sourceKind:"binding",semanticKind:"component-prop",displayExpression:u.propName,editMode:"upstream",diagnostics:[]}:null}async function d(u){let g=await $t(u.caller.sourceFile,u.readFile,u.fileCache);if(!g.ast)return null;let h=Ac(g.ast,u.caller.sourceRange);if(!h)return null;let b=h.get("openingElement");for(let E of b.get("attributes")){if(!E.isJSXSpreadAttribute())continue;let v=E.get("argument");if(!v.isExpression())continue;let I=await i({expression:v.node,scope:v.scope,source:g.source,currentFile:u.caller.sourceFile,readFile:u.readFile,exists:u.exists,fileCache:u.fileCache,visited:u.visited});if(!I)continue;let R=[{kind:"property",name:u.propName},...u.remainingPath],P={...I,expression:lr(I.expression,R),path:[...I.path,...R]},T=await o({currentFile:u.caller.sourceFile,expressionPath:v,sourceInfo:P,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited});if(T)return T.kind==="external"?T:{...T,displayExpression:P.expression}}return null}async function f(u){let{currentFile:g,binding:h,readFile:b,exists:E,fileCache:v,visited:I}=u,R=h.path.parentPath;if(!R||!R.isImportDeclaration())return null;let P=R.node.source.value;if(typeof P!="string")return null;let T=await fn(g,P,E);if(!T)return null;if(h.path.isImportDefaultSpecifier()){let q=await $t(T,b,v),Re=q.ast?Oc(q.ast,"default"):null,Z=await m({file:T,exportName:"default",readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});return!Z||Z.kind!=="static"?null:{kind:"static",file:Re?.kind==="default-expression"?Z.file:T,root:Re?.kind==="default-expression"?Z.root:{kind:"default-export"},value:Z.value,sourceKind:"imported-binding"}}if(!h.path.isImportSpecifier())return null;let C=h.path.node.imported,A=B.isIdentifier(C)?C.name:C.value,F=await $t(T,b,v),M=F.ast?Oc(F.ast,A):null,K=await m({file:T,exportName:A,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});return K?K.kind==="external"?K:{kind:"static",file:M?.kind==="re-export"?K.file:T,root:M?.kind==="re-export"||K.root.kind==="binding"&&K.root.name!==M?.name?K.root:{kind:"named-export",name:A},value:K.value,sourceKind:"imported-binding"}:null}async function m(u){let{file:g,exportName:h,readFile:b,exists:E,fileCache:v,visited:I}=u,R=`export::${g}::${h}`;if(!I.has(R)){I.add(R);try{let P=await $t(g,b,v);if(!P.ast)return;let T=Oc(P.ast,h);if(!T)return;if(T.kind==="default-expression"){let M=T.expression;if(!M||!B.isIdentifier(M))return;let K=co(P.ast).getBinding(M.name);return K?await s({currentFile:g,binding:K,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I})??void 0:void 0}if(T.kind==="re-export"){if(!T.source||!T.name)return;let M=await fn(g,T.source,E);return M?m({...u,file:M,exportName:T.name}):void 0}let C=T.name;if(!C)return;let A=co(P.ast).getBinding(C);return A?await s({currentFile:g,binding:A,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I})??void 0:void 0}finally{I.delete(R)}}}return{resolveExportValue:m,resolveComponentPropBinding:c,resolveBindingTarget:s}}import*as H from"@babel/types";function Dc(e,t){let n=e.scope.getBinding(t);if(!n)return null;let r=n.path.getFunctionParent();if(!r||!r.isArrowFunctionExpression()&&!r.isFunctionExpression())return null;let o=r.node.params[0],i=vt(o,t);if(!i)return null;let s=r.parentPath;return!s||!s.isCallExpression()||!SI(s,r)?null:{callPath:s,basePath:i}}function SI(e,t){let n=e.node.callee;return!H.isMemberExpression(n)||!H.isIdentifier(n.property)||n.property.name!=="map"?!1:e.node.arguments.some(r=>r===t.node)}function lm(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:Ii(r,t)}function am(e,t){return e?H.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}function cm(e,t,n,r,o){let i=H.isExpression(e.body)?e.body:e.body.body.find(a=>H.isReturnStatement(a))?.argument;if(!i||!H.isExpression(i))return;let s=Mc(i,t,n,r,o);return typeof s=="number"?s:void 0}function Mc(e,t,n,r,o){if(H.isNumericLiteral(e)||H.isStringLiteral(e)||H.isBooleanLiteral(e))return e.value;if(H.isIdentifier(e))return e.name===t?r:e.name===n?o:void 0;if(H.isMemberExpression(e)){let i=Xi(e,t);if(i)return Qe(r,i);let s=Xi(e,n);return s?Qe(o,s):void 0}if(H.isBinaryExpression(e)&&e.operator==="-"){let i=H.isExpression(e.left)?Mc(e.left,t,n,r,o):void 0,s=H.isExpression(e.right)?Mc(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function EI(e){if(H.isExpression(e.body))return e.body;for(let t of e.body.body)if(H.isReturnStatement(t)&&t.argument&&H.isExpression(t.argument))return t.argument;return null}function vI(e,t,n){let r=_n(e,t,n);return typeof r=="boolean"?r:void 0}function _n(e,t,n){if(H.isStringLiteral(e)||H.isNumericLiteral(e)||H.isBooleanLiteral(e))return e.value;if(H.isNullLiteral(e))return null;if(H.isIdentifier(e))return e.name===t?n:void 0;if(H.isMemberExpression(e)){let r=Xi(e,t);return r?Qe(n,r):void 0}if(H.isUnaryExpression(e)&&e.operator==="!"){let r=_n(e.argument,t,n);return r===void 0?void 0:!r}if(H.isLogicalExpression(e)){let r=_n(e.left,t,n);if(r===void 0)return;if(e.operator==="&&")return r&&_n(e.right,t,n);if(e.operator==="||")return r||_n(e.right,t,n)}if(H.isBinaryExpression(e)){let r=H.isExpression(e.left)?_n(e.left,t,n):void 0,o=H.isExpression(e.right)?_n(e.right,t,n):void 0;if(r===void 0||o===void 0)return;switch(e.operator){case"===":return r===o;case"!==":return r!==o;case"==":return r==o;case"!=":return r!=o;default:return}}}function um(e){let t=[],n=e;for(;H.isMemberExpression(n)||H.isOptionalMemberExpression(n);){let r=n.property;if(n.computed)if(H.isNumericLiteral(r))t.unshift({kind:"index",index:r.value});else if(H.isStringLiteral(r))t.unshift({kind:"property",name:r.value});else if(H.isExpression(r))t.unshift({kind:"dynamic",expression:r});else return null;else if(H.isIdentifier(r))t.unshift({kind:"property",name:r.name});else return null;n=n.object}return H.isIdentifier(n)?{base:n.name,segments:t}:null}function dm(e){return e.some(t=>t.kind==="dynamic")}function kI(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}function fm(e,t){if(!Array.isArray(e.value))return null;let n=e.collectionPathMap?.length?e.collectionPathMap:e.value.map((r,o)=>[...e.pathPrefix??[],{kind:"index",index:e.collectionIndexMap?.[o]??o}]);return n.length>0?n.map(r=>[...r,...t]):null}function II(e,t){let n=[],r=[];for(let o of t){let i=Qe(e,o);if(!Array.isArray(i))return null;for(let[s,a]of i.entries())n.push(a),r.push([...o,{kind:"index",index:s}])}return{value:n,collectionPathMap:r}}function pm(e){let{resolveBindingTarget:t,evaluateStaticExpression:n,buildExpressionSourceInfo:r,resolveSourceInfoProvenance:o}=e;async function i(u){let{currentFile:g,callPath:h,readFile:b,exists:E,fileCache:v,visited:I}=u,R=h.node.callee;if(!H.isMemberExpression(R)||!H.isIdentifier(R.property)||R.property.name!=="map")return null;let P=h.get("callee");if(!P.isMemberExpression())return null;let T=P.get("object");if(Array.isArray(T)||!T.isExpression())return null;let C=await s({currentFile:g,expressionPath:T,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});return!C||!Array.isArray(C.value)||C.value.length===0?null:C}async function s(u){let{currentFile:g,expressionPath:h,readFile:b,exists:E,fileCache:v,visited:I}=u;if(h.isIdentifier()){let R=h.scope.getBinding(h.node.name);if(!R)return null;let P=await t({currentFile:g,binding:R,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});return P?.kind==="static"?P:null}if(h.isCallExpression())return c({currentFile:g,callPath:h,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});if(h.isTSAsExpression()||h.isTSSatisfiesExpression()||h.isTSNonNullExpression()){let R=h.get("expression");if(!Array.isArray(R)&&R.isExpression())return s({...u,expressionPath:R})}if(h.isArrayExpression()){let R=Wi(h.node);if(!R)return null;let P=await n(h.node,h.scope,g,b,E,v,I);return Array.isArray(P)?{kind:"static",file:g,root:{kind:"expression",sourceRange:R},value:P,sourceKind:"binding"}:null}if(h.isMemberExpression()){let R=await r({expression:h.node,scope:h.scope,currentFile:g,readFile:b,exists:E,fileCache:v,visited:I});if(!R)return null;let P=await o({currentFile:g,expressionPath:h,sourceInfo:R,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});if(!P||P.kind==="external")return null;let T=await a({currentFile:g,expressionPath:h,provenance:P,readFile:b,exists:E,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:v,visited:I});if(!T||T.kind!=="static")return null;if(P.collectionPathMap?.length){let A=II(T.value,P.collectionPathMap);if(A)return{kind:"static",file:P.file,root:P.root,value:A.value,sourceKind:P.sourceKind,collectionPathMap:A.collectionPathMap}}let C=Qe(T.value,P.path);return Array.isArray(C)?{kind:"static",file:P.file,root:P.root,value:C,sourceKind:P.sourceKind,pathPrefix:P.path,collectionIndexMap:P.collectionIndexMap,collectionPathMap:P.collectionPathMap}:null}return null}async function a(u){let{provenance:g}=u;if(g.root.kind==="binding"){let v=u.expressionPath.scope.getBinding(g.root.name);if(!v&&g.file!==u.currentFile){let I=await $t(g.file,u.readFile,u.fileCache);v=I.ast?co(I.ast).getBinding(g.root.name):void 0}return v?await t({currentFile:g.file,binding:v,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited}):null}if(g.root.kind!=="expression")return null;let h=await $t(g.file,u.readFile,u.fileCache);if(!h.ast)return null;let b=om(h.ast,g.root.sourceRange);if(!b)return null;let E=await n(b.node,b.scope,g.file,u.readFile,u.exists,u.fileCache,u.visited);return E===void 0?null:{kind:"static",file:g.file,root:g.root,value:E,sourceKind:g.sourceKind}}async function c(u){return await l(u)??await d(u)??await f(u)}async function l(u){let{callPath:g}=u,h=g.node.callee;if(!H.isMemberExpression(h)||!H.isIdentifier(h.property)||h.property.name!=="filter")return null;let b=g.get("callee");if(!b.isMemberExpression())return null;let E=b.get("object");if(Array.isArray(E)||!E.isExpression())return null;let v=await s({currentFile:u.currentFile,expressionPath:E,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited});if(!v||!Array.isArray(v.value))return null;let[I]=g.node.arguments;if(!H.isArrowFunctionExpression(I)&&!H.isFunctionExpression(I))return null;let R=I.params[0];if(!H.isIdentifier(R))return null;let P=EI(I);if(!P)return null;let T=[],C=[],A=[];for(let[F,M]of v.value.entries()){let K=vI(P,R.name,M);if(typeof K!="boolean")return null;if(K){T.push(M),C.push(v.collectionIndexMap?.[F]??F);let q=v.collectionPathMap?.[F];q&&A.push(q)}}return{...v,value:T,pathPrefix:v.pathPrefix,collectionIndexMap:C,...A.length>0?{collectionPathMap:A}:{}}}async function d(u){let{callPath:g}=u,h=g.node.callee;if(!H.isMemberExpression(h)||!H.isIdentifier(h.property)||h.property.name!=="slice")return null;let b=g.get("callee");if(!b.isMemberExpression())return null;let E=b.get("object");if(Array.isArray(E)||!E.isExpression())return null;let v=await s({currentFile:u.currentFile,expressionPath:E,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited});if(!v||!Array.isArray(v.value))return null;let[I,R]=g.node.arguments,P=am(I,0),T=am(R,v.value.length);if(P===null||T===null)return null;let C=Math.max(0,P<0?v.value.length+P:P),A=Math.max(0,T<0?v.value.length+T:T),F=v.value.map((K,q)=>v.collectionIndexMap?.[q]??q).slice(C,A),M=v.collectionPathMap?.slice(C,A);return{...v,value:v.value.slice(C,A),pathPrefix:v.pathPrefix,collectionIndexMap:F,...M?{collectionPathMap:M}:{}}}async function f(u){let{callPath:g}=u,h=g.node.callee;if(!H.isMemberExpression(h)||!H.isIdentifier(h.property)||h.property.name!=="sort"&&h.property.name!=="toSorted")return null;let b=g.get("callee");if(!b.isMemberExpression())return null;let E=b.get("object");if(Array.isArray(E)||!E.isExpression())return null;let v=await s({currentFile:u.currentFile,expressionPath:E,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited});if(!v||!Array.isArray(v.value))return null;let[I]=g.node.arguments;if(!H.isArrowFunctionExpression(I)&&!H.isFunctionExpression(I))return null;let[R,P]=I.params;if(!H.isIdentifier(R)||!H.isIdentifier(P))return null;let T=v.value.map((A,F)=>({value:A,sourceIndex:v.collectionIndexMap?.[F]??F,originalIndex:F})),C=[...T];for(let A of T)for(let F of T)if(cm(I,R.name,P.name,A.value,F.value)===void 0)return null;return C.sort((A,F)=>{let M=cm(I,R.name,P.name,A.value,F.value)??0;return M===0?A.originalIndex-F.originalIndex:M}),{...v,value:C.map(A=>A.value),pathPrefix:v.pathPrefix,collectionIndexMap:C.map(A=>A.sourceIndex),...v.collectionPathMap?{collectionPathMap:C.map(A=>v.collectionPathMap?.[A.originalIndex]).filter(A=>!!A)}:{}}}async function m(u){let g=null,h,b=[];for(let v of u.segments){if(v.kind!=="dynamic")continue;let I=await r({expression:v.expression,scope:u.expressionPath.scope,source:u.fileCache.get(u.currentFile)?.source,currentFile:u.currentFile,readFile:u.readFile,exists:u.exists,fileCache:u.fileCache,visited:u.visited});if(!I)return null;let R=Dc(u.expressionPath,I.base);if(!R)return null;let P=await i({currentFile:u.currentFile,callPath:R.callPath,readFile:u.readFile,exists:u.exists,graph:u.graph,externalSourceResolvers:u.externalSourceResolvers,externalAdapters:u.externalAdapters,functionCallContracts:u.functionCallContracts,fileCache:u.fileCache,visited:u.visited});if(!P||!Array.isArray(P.value))return null;let T=P.value.map((C,A)=>{let F=Qe(P.value,[{kind:"index",index:A},...R.basePath,...I.path]);return kI(F)});if(T.some(C=>C===null)||g!==null&&g!==T.length)return null;g=T.length,h??=P.collectionIndexMap,b.push(T)}if(g===null||g===0)return null;let E=[];for(let v=0;v<g;v+=1){let I=[...u.rootPath],R=0;for(let P of u.segments){if(P.kind==="dynamic"){let T=b[R]?.[v];if(!T)return null;I.push(T),R+=1;continue}I.push({...P})}E.push(I)}return{...h?{collectionIndexMap:h}:{},collectionPathMap:E}}return{resolveRepeatCollectionTarget:i,resolveCollectionCallTarget:c,resolveDynamicMemberPathMap:m}}var{normalizeExpressionWithScope:CI,evaluateStaticExpression:Gi}=Qp({resolveBindingTarget:e=>Uc(e)}),{resolveRepeatCollectionTarget:RI,resolveCollectionCallTarget:wI,resolveDynamicMemberPathMap:NI}=pm({resolveBindingTarget:e=>Uc(e),evaluateStaticExpression:Gi,buildExpressionSourceInfo:jt,resolveSourceInfoProvenance:xt}),{resolveExportValue:PI,resolveComponentPropBinding:AI,resolveBindingTarget:Uc}=sm({resolveExternalExpression:Jc,resolveCollectionCallTarget:wI,evaluateStaticExpression:Gi,resolveSourceInfoProvenance:xt,buildExpressionSourceInfo:jt});function Em(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}function mm(e,t,n){return{kind:"external",file:e,sourceType:"api-field",sourceId:t,displayPath:n,editMode:"readonly",diagnostics:[{code:"external-source-readonly",message:"Dynamic API data is read-only for content edits"}]}}async function vm(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=zi(s,t,n);if(!a)return null;let c=Hi(a,r.sourceRange);if(!c)return null;let l=await jt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:o,exists:i,fileCache:s,visited:new Set});if(!l){let m=await Wc({currentFile:t,expressionPath:c,readFile:o,exists:i,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:s,visited:new Set});return m?$c(m,cr(c.node,n)):null}let d=new Set,f=await QI({currentFile:t,expressionPath:c,segment:{...r,source:l},readFile:o,exists:i,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:s,visited:d});return f?$c(f,l.expression):null}async function ur(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=zi(i,t,n);if(!s)return null;let a=e.sourceRange?Hi(s,e.sourceRange):e.expression!==void 0?ao(s,n,e.expression):null;if(!a)return null;let c=Gc(a);if(!c.isIdentifier()&&!c.isMemberExpression())return null;let l=new Set,d=await jt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:r,exists:o,fileCache:i,visited:l}),f=d?await xt({currentFile:t,expressionPath:c,sourceInfo:d,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:l}):await qI({currentFile:t,expressionPath:c,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:l});return $c(f,e.expression??cr(c.node,n))}async function Kc(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=zi(i,t,n);if(!s)return it("unsupported-expression","Unable to parse source for provenance resolution");let a=new Set;return e.target.kind==="text-segment"?TI({file:t,source:n,ast:s,segment:e.target.segment,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:a}):FI({file:t,source:n,ast:s,candidate:e.target.candidate,readFile:r,exists:o,graph:e.graph,fileCache:i,visited:a})}async function jt(e){if(Y.isIdentifier(e.expression))return{kind:"identifier",expression:e.expression.name,base:e.expression.name,path:[]};if(!Y.isMemberExpression(e.expression))return null;let t=await CI(e.expression,e.scope,e.currentFile,e.readFile,e.exists,e.fileCache,e.visited);return t?{kind:t.path.some(n=>n.kind==="index")?"index-expression":"member-expression",expression:cr(e.expression,e.source),base:t.base,path:t.path}:null}function $c(e,t){if(!e||e.kind==="value"&&e.editMode==="readonly")return null;if(e.kind==="external")return{kind:"external-entry",file:e.file,sourceType:e.sourceType,sourceId:e.sourceId,adapterId:e.adapterId,displayExpression:e.displayPath};let n={kind:"value",root:e.root,path:e.path.length>0?e.path:[]};return{kind:"value-binding",file:e.file,locator:n,root:e.root,path:e.path,displayExpression:e.displayExpression??t,sourceKind:e.sourceKind,...e.collectionIndexMap?{collectionIndexMap:e.collectionIndexMap}:{},...e.collectionPathMap?{collectionPathMap:e.collectionPathMap}:{}}}async function TI(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=Hi(r,o.sourceRange),d=l?await jt({expression:l.node,scope:l.scope,source:n,currentFile:t,readFile:i,exists:s,fileCache:a,visited:c}):null;if(!d){if(!l||l.isStringLiteral()||l.isTemplateLiteral()&&l.node.expressions.length===0)return gm(t,o.value);let m=await Wc({currentFile:t,expressionPath:l,readFile:i,exists:s,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:a,visited:c});return m?m.kind==="external"?Sm(t,m):Vc(t,cr(l.node,n),m):_I({expression:l.node,scope:l.scope,currentFile:t,source:n,readFile:i,exists:s,fileCache:a,visited:c,functionCallContracts:e.functionCallContracts})}if(!l)return it("unsupported-expression","Unable to locate text expression for provenance resolution");let f=await xt({currentFile:t,expressionPath:l,sourceInfo:d,readFile:i,exists:s,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:a,visited:c});if(!f){let m=jc(l.node);if(m)return it(m.code,m.message);let u=l.scope.getBinding(d.base);if(u?.path.isVariableDeclarator()){let g=jc(u.path.node.init);if(g)return it(g.code,g.message)}return u?.path.isVariableDeclarator()&&Y.isCallExpression(u.path.node.init)?OI("unsupported-expression",wm(u.path.node.init,e.functionCallContracts)):it("unsupported-expression",`Unable to resolve provenance for expression "${d.expression}"`)}return f.kind==="external"?Sm(t,f):Vc(t,d.expression,f)}async function FI(e){let{file:t,source:n,ast:r,candidate:o,readFile:i,exists:s,fileCache:a,visited:c}=e;if(!o.conditionSource)return it("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let l=ao(r,n,o.conditionExpression);if(!l)return it("conditional-branch-unresolved",`Unable to locate conditional expression "${o.conditionExpression}"`);let d=await xt({currentFile:t,expressionPath:l,sourceInfo:o.conditionSource,readFile:i,exists:s,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:a,visited:c});if(!d)return it("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);if(d.kind==="external")return it("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let f=Vc(t,o.conditionExpression,d);return f.finalSource?{...f,finalSource:{...f.finalSource,kind:"conditional-branch",displayPath:o.conditionExpression},chain:[...f.chain,{kind:"conditional-branch",file:d.file,displayName:o.conditionExpression,canEditHere:!0}]}:f}function gm(e,t){return{finalSource:{kind:"jsx-literal",file:e,locator:null,displayPath:t},chain:[{kind:"jsx-literal",file:e,displayName:t,canEditHere:!0}],confidence:"exact",editMode:"direct",diagnostics:[]}}async function _I(e){let t=await Im(e);if(t.length===0)return it("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(MI(e.expression))return km(t);if(Rm(e.expression))return it("unsupported-expression","i18n helpers require a static message id string");if(Y.isMemberExpression(e.expression)&&e.expression.computed&&!Y.isNumericLiteral(e.expression.property)&&!Y.isStringLiteral(e.expression.property))return it("dynamic-key","Computed member expressions are not supported for provenance resolution");let[n]=t;return it(n.code,n.message)}function it(e,t){return{finalSource:null,chain:[],confidence:"unknown",editMode:"unsupported",diagnostics:[{code:e,message:t}]}}function OI(e,t){return km([{code:e,message:t}])}function km(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function MI(e){return Y.isCallExpression(e)||Y.isConditionalExpression(e)||Y.isLogicalExpression(e)||Y.isBinaryExpression(e)}function uo(e){let t=new Set;return e.filter(n=>{let r=`${n.code}:${n.message}`;return t.has(r)?!1:(t.add(r),!0)})}async function Im(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=jc(t);if(l)return[l];if(Y.isCallExpression(t))return[{code:"unsupported-expression",message:wm(t,c)}];if(Y.isMemberExpression(t)&&t.computed){let d=t.property;if(!Y.isNumericLiteral(d)&&!Y.isStringLiteral(d)){if(!Y.isExpression(d))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}];let m=await Gi(d,n,r,o,i,s,a);if(typeof m!="string"&&!Number.isInteger(m))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}]}}return Y.isBinaryExpression(t)?uo([...await Lc(t.left,t.right,e),{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]):Y.isLogicalExpression(t)?uo([...await Lc(t.left,t.right,e),{code:"unsupported-expression",message:t.operator==="??"||t.operator==="||"?"Fallback expressions are recognized but remain readonly until a safer composition editing strategy is available":"Complex conditional expressions are recognized but remain readonly until a safer editing strategy is available"}]):Y.isConditionalExpression(t)?uo([...await Lc(t.test,t.consequent,t.alternate,e),{code:"unsupported-expression",message:"Complex conditional expressions are recognized but remain readonly until a safer editing strategy is available"}]):[]}function jc(e){return Rm(e)?hm("i18n helpers require a static message id string"):jI(e)?hm("CMS helpers require static entry id and field path string arguments"):null}async function Lc(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await Im({...t,expression:o}));return r}function DI(e,t){let n=(t??[]).filter(r=>r.sourceType===e.sourceType&&(r.capabilities===void 0||r.capabilities.includes("write-text")));if(e.adapterId){let r=n.find(o=>o.adapterId===e.adapterId);if(r)return{adapterId:r.adapterId,editMode:"proxy",diagnostics:[]}}else if(n.length>0)return{adapterId:n[0]?.adapterId,editMode:"proxy",diagnostics:[]};return{adapterId:void 0,editMode:"readonly",diagnostics:[LI(e.sourceType)]}}async function Jc(e){for(let n of JI){if(!ym(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return bm(xm(r),e.externalAdapters)}let t={currentFile:e.currentFile,expressionPath:e.expressionPath,readFile:e.readFile,exists:e.exists,graph:e.graph};for(let n of e.externalSourceResolvers??[]){if(!ym(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return bm(xm(r),e.externalAdapters)}return null}function LI(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function BI(e){return{code:"external-source-readonly",message:e}}function hm(e){return{code:"unsupported-expression",message:e}}function Xc(e){return!e||!Y.isCallExpression(e)?null:Y.isIdentifier(e.callee)?e.callee.name:Y.isMemberExpression(e.callee)&&!e.callee.computed&&Y.isIdentifier(e.callee.object)&&Y.isIdentifier(e.callee.property)?`${e.callee.object.name}.${e.callee.property.name}`:null}function ym(e,t){if(!t||t.length===0)return!0;let n=Xc(e.node);return n?t.includes(n):!1}function xm(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:uo(e.diagnostics??[])}:{match:e,diagnostics:[]}}function bm(e,t){let n=DI(e.match,t);return{kind:"external",file:e.match.file,sourceType:e.match.sourceType,sourceId:e.match.sourceId,adapterId:e.match.adapterId??n.adapterId,displayPath:e.match.displayPath,editMode:e.editMode==="readonly"?"readonly":n.editMode,diagnostics:uo([...e.diagnostics,...e.editMode==="readonly"||n.editMode==="readonly"?n.diagnostics:[]])}}function $I(e){if(!e.isCallExpression())return null;let t=e.node.callee;if(!Y.isIdentifier(t)||t.name!=="getCmsField")return null;let[n,r]=e.node.arguments;if(!n||!r||!Y.isStringLiteral(n)||!Y.isStringLiteral(r))return null;let o=n.value,i=r.value;return{sourceType:"cms-field",sourceId:`${o}:${i}`,file:`cms://${o}/${i.replace(/\./g,"/")}`,displayPath:`${o}.${i}`}}function jI(e){return!!e&&Y.isCallExpression(e)&&Y.isIdentifier(e.callee)&&e.callee.name==="getCmsField"&&(e.arguments.length<2||!Y.isStringLiteral(e.arguments[0])||!Y.isStringLiteral(e.arguments[1]))}function Cm(e){if(!(!e||!Y.isCallExpression(e))){if(Y.isIdentifier(e.callee)&&e.callee.name==="t"){let[t]=e.arguments;return t&&Y.isStringLiteral(t)?t.value:null}if(Y.isMemberExpression(e.callee)&&!e.callee.computed&&Y.isIdentifier(e.callee.object)&&e.callee.object.name==="intl"&&Y.isIdentifier(e.callee.property)&&e.callee.property.name==="formatMessage"){let[t]=e.arguments;if(!t||!Y.isObjectExpression(t))return null;for(let n of t.properties)if(Y.isObjectProperty(n)&&!n.computed&&(Y.isIdentifier(n.key)&&n.key.name==="id"||Y.isStringLiteral(n.key)&&n.key.value==="id")&&Y.isStringLiteral(n.value))return n.value.value;return null}}}function Rm(e){return Cm(e)===null}async function VI(e,t,n){let r=new Set,o=lo.posix.dirname(e);for(;r.add(o),!(o==="."||o==="/");){let i=lo.posix.dirname(o);if(i===o){r.add(".");break}o=i}r.add("src"),r.add(".");for(let i of r){let s=i==="."?["locales","messages"]:[lo.posix.join(i,"locales"),lo.posix.join(i,"messages")];for(let a of s){let c=lo.posix.join(a,`${t}.json`);if(await n(c))return c}}return null}async function UI(e){let t=Cm(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await VI(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function KI(e){if(!e.expressionPath.isCallExpression())return null;let t=e.expressionPath.node.callee;if(!Y.isIdentifier(t)||t.name!=="apiField")return null;let[n,r]=e.expressionPath.node.arguments;if(!n||!Y.isExpression(n))return null;let o=await Gi(n,e.expressionPath.scope,e.currentFile,e.readFile,e.exists,e.fileCache,e.visited);if(typeof o!="string"||o.length===0)return null;let i={sourceType:"api-field",sourceId:o,file:`api://${o}`,displayPath:o};return r?{match:i,editMode:"readonly",diagnostics:[BI("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var JI=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>$I(e)},{helperNames:["apiField"],resolve:e=>KI(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>UI({currentFile:e,expressionPath:t,exists:n})}];function zc(e){return{...e,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Derived display values are readonly because no identity-preserving write target exists"}]}}function Sm(e,t){return{finalSource:{kind:t.sourceType,file:t.file,locator:null,displayPath:t.displayPath,externalSource:{sourceType:t.sourceType,sourceId:t.sourceId,adapterId:t.adapterId}},chain:[...t.chainPrefix??[],{kind:t.sourceType,file:t.file,displayName:t.displayPath,canEditHere:t.editMode!=="readonly"}],confidence:"exact",editMode:t.editMode==="direct"?t.file===e?"direct":"proxy":t.editMode,diagnostics:t.diagnostics}}function Vc(e,t,n){let r={kind:"value",root:n.root,path:n.path.length>0?n.path:[]},o=n.path.some(l=>l.kind==="index"),i=ZI(n),s;n.semanticKind?s=n.semanticKind:i?s="config-entry":n.sourceKind==="repeat-template"?s="repeat-template":n.path.length===0?s=n.sourceKind==="imported-binding"?"imported-binding":"binding":s=o?"array-item":"object-field";let a=n.displayExpression??t,c=[...n.chainPrefix??[]];return n.sourceKind==="binding"?c.push({kind:"binding",file:n.file,displayName:n.root.kind==="binding"?n.root.name:a,canEditHere:n.editMode!=="readonly"}):n.sourceKind==="imported-binding"?c.push({kind:"imported-binding",file:n.file,displayName:n.root.kind==="named-export"?n.root.name:"default",canEditHere:n.editMode!=="readonly"}):n.sourceKind==="repeat-template"&&c.push({kind:"repeat-template",file:n.file,displayName:t,canEditHere:n.editMode!=="readonly"}),n.path.length>0&&n.sourceKind!=="repeat-template"&&c.push({kind:o?"array-item":"object-field",file:n.file,displayName:a,canEditHere:n.editMode!=="readonly"}),i&&c.push({kind:"config-entry",file:n.file,displayName:i.displayPath,canEditHere:n.editMode!=="readonly"}),{finalSource:{kind:s,file:n.file,locator:r,root:n.root,path:n.path,displayPath:a,externalSource:i?{sourceType:"config-entry",sourceId:i.sourceId}:void 0},chain:n.editMode==="readonly"?c.map(l=>({...l,canEditHere:!1})):c,confidence:n.sourceKind==="repeat-template"?"safe-derived":"exact",editMode:n.editMode??(n.file===e?"direct":"proxy"),diagnostics:n.diagnostics??[]}}var XI=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function Hc(e,t){let n=[...XI,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function wm(e,t){let n=e.callee;return Y.isIdentifier(n)&&Hc(n.name,t)?.purity==="side-effect"?`Helper "${n.name}" is registered as side-effectful and remains readonly`:"Function calls remain readonly because purity does not establish an identity-preserving write target"}async function Wc(e){let t=await Jc(e);if(t)return t;let n=await Nm({...e,expressionPath:e.expressionPath});if(n)return n;if(e.expressionPath.isTemplateLiteral()){let r=e.expressionPath.node.expressions[0],o=e.expressionPath.get("expressions.0");if(e.expressionPath.node.expressions.length===1&&r&&o&&!Array.isArray(o)&&o.isExpression()){let i=await jt({expression:o.node,scope:o.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(i){let s=await xt({...e,expressionPath:o,sourceInfo:i});if(s&&s.kind==="value")return{...s,displayExpression:i.expression,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]}}}}return await GI(e)}async function Nm(e){let t=await It({...e,allowComposed:!1});if(t?.kind!=="source")return null;let n=Gc(e.expressionPath);return n.isIdentifier()||n.isMemberExpression()?t.provenance:zc(t.provenance)}async function It(e){let t=Gc(e.expressionPath),n=WI(e.currentFile,t.node);if(n&&e.visited.has(n))return null;n&&e.visited.add(n);try{if(t.isStringLiteral()||t.isNumericLiteral()||t.isBooleanLiteral()||t.isNullLiteral())return{kind:"none"};if(t.isIdentifier()){let r=await jt({expression:t.node,scope:t.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!r)return null;let o=await xt({currentFile:e.currentFile,expressionPath:t,sourceInfo:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return!o||o.kind==="external"?null:{kind:"source",provenance:o}}if(t.isMemberExpression()){let r=await jt({expression:t.node,scope:t.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!r)return null;let o=await xt({currentFile:e.currentFile,expressionPath:t,sourceInfo:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return!o||o.kind==="external"?null:{kind:"source",provenance:o}}if(t.isConditionalExpression()){let r=t.get("test"),o=t.get("consequent"),i=t.get("alternate");if(Array.isArray(r)||Array.isArray(o)||Array.isArray(i)||!r.isExpression()||!o.isExpression()||!i.isExpression())return null;let s=await It({...e,expressionPath:r,allowComposed:!0}),a=await It({...e,expressionPath:o,allowComposed:!1}),c=await It({...e,expressionPath:i,allowComposed:!1});return Bc(s,a,c)}if(t.isCallExpression())return zI({...e,expressionPath:t});if(!e.allowComposed)return null;if(t.isBinaryExpression()){let r=t.get("left"),o=t.get("right");if(Array.isArray(r)||Array.isArray(o)||!r.isExpression()||!o.isExpression())return null;let i=await It({...e,expressionPath:r,allowComposed:!0}),s=await It({...e,expressionPath:o,allowComposed:!0});return Bc(i,s)}if(t.isLogicalExpression()){let r=t.get("left"),o=t.get("right");if(Array.isArray(r)||Array.isArray(o)||!r.isExpression()||!o.isExpression())return null;let i=await It({...e,expressionPath:r,allowComposed:!0}),s=await It({...e,expressionPath:o,allowComposed:!0});return Bc(i,s)}if(t.isUnaryExpression()){let r=t.get("argument");return Array.isArray(r)||!r.isExpression()?null:It({...e,expressionPath:r,allowComposed:!0})}return null}finally{n&&e.visited.delete(n)}}function Gc(e){let t=e;for(;t.isParenthesizedExpression()||t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression()||t.isTSTypeAssertion();){let n=t.get("expression");if(Array.isArray(n)||!n.isExpression())return t;t=n}return t}async function zI(e){let t=Xc(e.expressionPath.node);if(t==="Math.round"||t==="Math.floor"||t==="Math.ceil"||t==="Math.trunc"||t==="useCountUp"){let r=e.expressionPath.get("arguments.0");return!r||Array.isArray(r)||!r.isExpression()?null:It({...e,expressionPath:r,allowComposed:!1})}let n=e.expressionPath.get("callee");if(n.isMemberExpression()&&!n.node.computed){let r=n.node.property;if(Y.isIdentifier(r)&&(r.name==="toFixed"||r.name==="toString")){let o=n.get("object");return Array.isArray(o)||!o.isExpression()?null:It({...e,expressionPath:o,allowComposed:!1})}}return null}function Bc(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!HI(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function HI(e,t){return e.file===t.file&&e.sourceKind===t.sourceKind&&JSON.stringify(e.root)===JSON.stringify(t.root)&&JSON.stringify(e.path)===JSON.stringify(t.path)&&JSON.stringify(e.collectionIndexMap??null)===JSON.stringify(t.collectionIndexMap??null)&&JSON.stringify(e.collectionPathMap??null)===JSON.stringify(t.collectionPathMap??null)}function WI(e,t){return t.start==null||t.end==null?null:`safe-derived:${e}:${t.start}:${t.end}`}async function GI(e){if(!e.expressionPath.isCallExpression())return null;let t=Xc(e.expressionPath.node);if(!t)return null;let n=Hc(t,e.functionCallContracts);if(!n||n.purity!=="pure")return null;let r=n.sourceArgIndex??0,o=e.expressionPath.get(`arguments.${r}`);if(!o||Array.isArray(o)||!o.isExpression())return null;let i=await Pm({currentFile:e.currentFile,argumentPath:o,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return i?zc(i):null}async function Pm(e){let t=await Jc({currentFile:e.currentFile,expressionPath:e.argumentPath,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(t)return t;let n=await jt({expression:e.argumentPath.node,scope:e.argumentPath.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(n){let r=await xt({currentFile:e.currentFile,expressionPath:e.argumentPath,sourceInfo:n,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return!r||r.kind==="external"?r:{...r,displayExpression:n.expression}}return await Wc({currentFile:e.currentFile,expressionPath:e.argumentPath,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited})}async function YI(e){if(!e.binding.path.isVariableDeclarator())return null;let t=e.binding.path.node.init;if(!t||!Y.isCallExpression(t))return null;let n=t.callee;if(!Y.isIdentifier(n))return null;let r=Hc(n.name,e.functionCallContracts);if(!r||r.purity!=="pure")return null;let o=r.sourceArgIndex??0,i=e.binding.path.get("init");if(!i||Array.isArray(i)||!i.isCallExpression())return null;let s=i.get(`arguments.${o}`);if(!s||Array.isArray(s)||!s.isExpression())return null;let a=await Pm({currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited,argumentPath:s});return a?zc(a):null}function ZI(e){if(e.sourceKind!=="imported-binding")return null;let t=e.root.kind==="binding"||e.root.kind==="named-export"?e.root.name:e.root.kind==="default-export"?"default":null;if(!t)return null;let n=/(^|[\/.-])(config|settings)([\/.-]|$)/i.test(e.file),r=/config|settings/i.test(t);if(!n&&!r)return null;let o=lr(t,e.path);return{sourceId:o,displayPath:o}}async function QI(e){let t=e.segment.source;return t?xt({currentFile:e.currentFile,expressionPath:e.expressionPath,sourceInfo:t,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited}):null}async function xt(e){let t=e.sourceInfo,n=Dc(e.expressionPath,t.base);if(n){let l=await RI({currentFile:e.currentFile,callPath:n.callPath,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,fileCache:e.fileCache,visited:e.visited});if(!l){let h=lm(n.callPath,[...n.basePath,...t.path]);return Jr(h)?mm(e.currentFile,h.sourceId,h.displayPath):null}let d=fm(l,[...n.basePath,...t.path]),f=l.collectionIndexMap?.[0]??0,m=[...l.pathPrefix??[],{kind:"index",index:f},...n.basePath,...t.path],u=[{kind:"index",index:0},...n.basePath,...t.path];return Qe(l.value,u)===void 0?null:{kind:"value",file:l.file,root:l.root,path:d?.[0]??m,sourceKind:"repeat-template",collectionIndexMap:l.collectionIndexMap,...d?{collectionPathMap:d}:{}}}let r=e.expressionPath.scope.getBinding(t.base);if(!r)return null;if(r.path.isImportNamespaceSpecifier()){let l=t.path[0],d=r.path.parentPath;if(!l||l.kind!=="property"||!d?.isImportDeclaration())return null;let f=await fn(e.currentFile,d.node.source.value,e.exists);if(!f)return null;let m=await PI({file:f,exportName:l.name,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(!m||m.kind==="external")return null;let u=t.path.slice(1);return Qe(m.value,u)===void 0?null:{kind:"value",file:m.file,root:m.root,path:u,sourceKind:"imported-binding",collectionIndexMap:m.collectionIndexMap}}let o=pf(r);if(o){let l=o.expressionPath,d=await jt({expression:l.node,scope:l.scope,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(d){let f=await xt({...e,expressionPath:l,sourceInfo:{...d,expression:lr(d.expression,t.path),path:[...d.path,...t.path]}});if(f)return f}if(t.path.length===0){let f=await Nm({currentFile:e.currentFile,expressionPath:l,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(f)return f}}if(r.kind==="param")return AI({currentFile:e.currentFile,binding:r,sourceInfo:t,graph:e.graph,readFile:e.readFile,exists:e.exists,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});let i=await YI({currentFile:e.currentFile,binding:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(i)return i;let s=vi(r,t.path);if(Jr(s))return mm(e.currentFile,s.sourceId,s.displayPath);let a=await Uc({currentFile:e.currentFile,binding:r,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});return a?a.kind==="external"?t.path.length===0?a:null:Qe(a.value,t.path)===void 0?null:{kind:"value",file:a.file,root:a.root,path:t.path,sourceKind:a.sourceKind,collectionIndexMap:a.collectionIndexMap}:null}async function qI(e){let t=um(e.expressionPath.node);if(!t||!dm(t.segments))return null;let n=await xt({currentFile:e.currentFile,expressionPath:e.expressionPath,sourceInfo:{kind:"identifier",expression:t.base,base:t.base,path:[]},readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache,visited:e.visited});if(!n||n.kind==="external")return n;let r=await NI({...e,rootPath:n.path,segments:t.segments});return r?{...n,path:r.collectionPathMap[0]??n.path,sourceKind:"repeat-template",displayExpression:cr(e.expressionPath.node,e.fileCache.get(e.currentFile)?.source),...r.collectionIndexMap?{collectionIndexMap:r.collectionIndexMap}:{},collectionPathMap:r.collectionPathMap}:null}async function Am(e){let t=eC(e.propertyName);if(t.owner==="blocked")return an(t.owner,t.diagnostic);if(t.owner==="class-name-source"||t.owner==="style")return an(t.owner,{code:"owner-delegated",message:`Property '${e.propertyName}' is owned by ${t.owner}`});let n=e.element.attributes?.filter(l=>l.name===e.propertyName)??[];if(n.length>1)return an("generic",{code:"duplicate-property-source",message:`Property '${e.propertyName}' has multiple explicit sources`});let r=n[0],o=[];r&&o.push({kind:"attribute",order:r.order??e.element.attributes.indexOf(r),attribute:r});let i=e.element.attributeSpreads??[];for(let l of i)o.push({kind:"spread",order:l.order,spread:l,target:await nC(e,l)});o.sort((l,d)=>l.order-d.order);let s=o.at(-1);if(!s)return{status:"missing",owner:"generic"};if(o.filter(l=>l.kind==="spread"&&l.order>s.order).some(l=>!l.target))return an("generic",{code:"ambiguous-property-source",message:`A spread may provide or override property '${e.propertyName}'`});if(s.kind==="spread")return s.target?{status:"binding",owner:"generic",target:s.target}:an("generic",{code:"ambiguous-property-source",message:`The final spread source for '${e.propertyName}' is not provably writable`});let c=o.filter(l=>l.kind==="spread"&&l.order<s.order);return e.operation==="remove"&&c.length>0?an("generic",{code:"remove-exposes-spread",message:`Removing '${e.propertyName}' would expose an earlier spread source`}):tC(e,s.attribute)}async function tC(e,t){if(t.resolution&&t.resolution.status!=="resolved"&&!t.source){let r=await ur({file:e.file,source:e.source,sourceRange:t.sourceRange,expression:t.value,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache});return r&&r.kind!=="external-entry"?{status:"binding",owner:"generic",attribute:t,target:{kind:"value-binding",target:r}}:an("generic",{code:"unsupported-property-source",message:`Property '${e.propertyName}' has an unresolved value source`})}if(!t.source?.expression)return{status:"direct",owner:"generic",attribute:t,target:{kind:"jsx-attribute",file:e.file,sourceRange:t.sourceRange}};let n=await ur({file:e.file,source:e.source,sourceRange:t.sourceRange,expression:t.source.expression,sourceInfo:t.source,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache});return!n||n.kind==="external-entry"?an("generic",{code:"unsupported-property-source",message:`Property '${e.propertyName}' does not have a local writable source`}):{status:"binding",owner:"generic",attribute:t,target:{kind:"value-binding",target:n}}}async function nC(e,t){let n=t.source?.expression;if(!n)return;let r=await ur({file:e.file,source:e.source,sourceRange:t.sourceRange,expression:n,sourceInfo:t.source,readFile:e.readFile,exists:e.exists,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:e.fileCache});if(!(!r||r.kind==="external-entry"))return{kind:"value-binding",target:rC(r,e.propertyName)}}function rC(e,t){let n=[...e.path??[],{kind:"property",name:t}];return{...e,path:n,locator:e.locator?{...e.locator,path:n}:{kind:"value",root:e.root??{kind:"binding",name:t},path:n}}}function an(e,t){return{status:"blocked",owner:e,...t?{diagnostic:t}:{}}}function Tm(e){let{key:t,element:n,graph:r,provenances:o}=e,i=iC(t,n,r),s=i?.tag??(On(n.tag)?n.tag:n.componentName),a=i?.identity.key??Fm(n,r)??t,c=cC(i),l=lC(t,n,r,o,i),d=oC(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:aC(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:d,impactScope:uC(d),alternativeStrategies:dC(d)}}function oC(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return Yc(e,n)?"instance":!On(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function Fm(e,t){if(On(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&sC(r,e.componentName));return n.length!==1?null:n[0].identity.key}function iC(e,t,n){if(On(t.tag))return t;let r=Yc(e,n);if(r)return r;let o=Fm(t,n);return o?n.elements.get(o)??null:null}function sC(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function aC(e,t){return On(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function cC(e){if(!e?.attributes)return[];let t=new Set(["variant","size","tone"]);return e.attributes.filter(n=>t.has(n.name)).map(n=>n.name)}function lC(e,t,n,r,o){let i=new Set,s=Yc(e,n);s&&o?.identity.key===s.identity.key&&i.add("children");for(let a of r.values()){let c=a?.chain.find(d=>d.kind==="component-prop");if(!c)continue;let l=c.displayName.split(".").pop();l&&i.add(l)}return i.size===0&&On(t.tag)&&t.childKeys.length>0&&i.add("children"),[...i]}function Yc(e,t){let n=t.elements.get(e)?.parentKey??null;for(;n;){let r=t.elements.get(n);if(!r)break;if(On(r.tag))return r;n=r.parentKey}return null}function On(e){return/^[A-Z]/.test(e)}function uC(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function dC(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}function Mm(e){let t=e.isRepeat??(e.graph?SC(e.element,e.graph):!1),n=e.propertyProvenance??new Map,r=e.repeatTargets??new Map,o=bC(e.element.attributes??[]),i=[...r.values()].some(d=>d.ok),s=o.map(d=>fC({attribute:d,element:e.element,isRepeat:t,selectionRef:e.selectionRef,provenance:n.get(d.name),repeatTarget:r.get(d.name)})),a=(e.element.attributeSpreads?.length??0)>0,c=(e.element.attributeSpreads??[]).slice().sort((d,f)=>d.order-f.order).map(d=>({raw:d.raw,sourceRange:EC(d.sourceRange,e.source),order:d.order,diagnostics:d.source?[]:[{code:"unsupported-spread-source",message:"The spread source cannot be resolved safely, so property ownership is conservative."}]})),l=t&&e.selectionRef?.instanceIndex!==void 0&&i;return{documentVersion:e.documentVersion,...e.selectionRef?{selectionRef:e.selectionRef}:{},items:s,spreads:c,creation:t?{selection:l?"materialize":"unsupported",template:"unsupported"}:{selection:a?"unsupported":"direct",template:a?"unsupported":"direct"}}}function fC(e){let{attribute:t,provenance:n,repeatTarget:r}=e,o=e.selectionRef?.instanceIndex!==void 0&&r?.ok===!0?r:null,i=pC(t,n,e.isRepeat),s=["selection","template"].map(b=>({scope:b,result:Ti({state:n,scope:b,operation:"set",selectionRef:e.selectionRef,isRepeat:e.isRepeat,repeatTarget:r})})),a=s.find(({result:b})=>b.ok)?.result,c=a?.ok?a.target:void 0,l=c?.kind==="value-binding"&&o&&(JSON.stringify(c.locator.root)!==JSON.stringify(o.selectedParentObjectLocator.root)||JSON.stringify(c.locator.path??[])!==JSON.stringify([...o.selectedParentObjectLocator.path??[],{kind:"property",name:t.name}]))?null:o,d=mC(t,n,l,e.isRepeat),f=c?yC(c,e.element,t.name):void 0,m=s.filter(({result:b})=>b.ok).map(({scope:b})=>b),u=m.length>0?hC(n,o,e.element):"unsupported",g=o?"repeat-item":e.isRepeat?"repeat-template":"node",h=xC(t,n,r);if(m.length===0&&h.length===0){let b=s.find(({result:E})=>!E.ok)?.result;b&&!b.ok&&h.push({code:b.code,message:b.reason})}return{name:t.name,source:i,resolution:d,editMode:u,sourceScope:g,allowedWriteScopes:m,...f?{effectiveWriteTarget:f}:{},diagnostics:h}}function pC(e,t,n){let r;if(n&&t?.status==="binding"){let o=t.target;r=o?.kind==="value-binding"&&o.target.sourceKind==="repeat-template"?"repeat-template":"binding"}else e.syntaxKind==="boolean-shorthand"?r="boolean-shorthand":e.syntaxKind==="literal"||!e.source?r="literal":r="expression";return{kind:r,...e.raw!==void 0?{raw:e.raw}:{}}}function mC(e,t,n,r){return n?_m(n.selectedResolution):t?.status==="blocked"?{status:"unresolved"}:r&&t?.status==="binding"?{status:"unresolved"}:_m(gC(e))}function gC(e){return e.resolution?e.resolution:e.syntaxKind==="boolean-shorthand"?{status:"resolved",value:!0}:e.resolvedValue!==void 0?{status:"resolved",value:e.resolvedValue}:e.source?{status:"unresolved"}:{status:"resolved",value:e.value}}function _m(e){return!e||e.status==="unresolved"?{status:"unresolved"}:e.status==="undefined"?{status:"undefined"}:{status:"resolved",value:e.value}}function hC(e,t,n){if(t)return"direct";if(!e||e.status==="blocked")return"unsupported";if(e.status==="missing"||e.status==="direct")return"direct";let r=e.target;return r?.kind!=="value-binding"?"unsupported":r.target.file===n.sourceFile?"direct":"proxy"}function yC(e,t,n){return e.kind==="repeat-property"?{kind:"value-path",file:e.target.sourceFile,isProxy:e.target.sourceFile!==t.sourceFile,displayPath:Om({...e.target.selectedParentObjectLocator,path:[...e.target.selectedParentObjectLocator.path??[],{kind:"property",name:n}]})}:e.kind==="value-binding"?{kind:"value-path",file:e.file,isProxy:e.file!==t.sourceFile,displayPath:Om(e.locator)}:{kind:"jsx-node",file:t.sourceFile,isProxy:!1,displayPath:t.componentName+" > "+n}}function xC(e,t,n){let r=[];return t?.diagnostic&&r.push({code:t.diagnostic.code,message:t.diagnostic.message}),n&&!n.ok&&t?.status!=="missing"&&r.push({code:`repeat-${n.errorCode}`,message:n.reason}),e.resolution?.status==="unresolved"&&r.length===0&&r.push({code:"unsupported-property-source",message:`Property '${e.name}' has an unresolved value source`}),r}function bC(e){let t=new Set;return e.filter(n=>t.has(n.name)?!1:(t.add(n.name),!0))}function SC(e,t){let n=t.regions.filter(r=>r.kind==="repeat-region");for(let r of n){let o=e;for(;o;){if(r.childKeys.includes(o.identity.key))return!0;o=o.parentKey?t.elements.get(o.parentKey):void 0}}return!1}function Om(e){return`${e.root.kind==="binding"?e.root.name:e.root.kind==="expression"?e.root.sourceRange?"expression":"value":e.root.kind}${(e.path??[]).map(n=>n.kind==="index"?`[${n.index}]`:`.${n.name}`).join("")}`}function EC(e,t){if(!t)return{start:e.startColumn,end:e.endColumn};let n=t.split(`
7
+ `),r=(o,i)=>n.slice(0,Math.max(0,o-1)).reduce((s,a)=>s+a.length+1,0)+i;return{start:r(e.startLine,e.startColumn),end:r(e.endLine,e.endColumn)}}function vC(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var kC=160;function Dm(e,t,n,r={}){let o=Wn(e),i=[];for(let[s,a]of e.elements){let c=n.get(s),l={canUpdateText:r.canUpdateTextByKey?.get(s)??c?.canUpdateText??!1,canInsertChild:c?.canInsertChild??!1,canMove:c?.canMove??!1,canRemove:c?.canRemove??!1};i.push({key:s,tag:a.tag,label:a.tag===a.componentName?a.tag:`${a.tag} (${a.componentName})`,parentKey:a.parentKey,childKeys:[...a.childKeys],operationSummary:l,...r.dynamicDataSummaryByKey?.get(s)?{dynamicDataSummary:r.dynamicDataSummaryByKey.get(s)}:{}})}return{composition:o,routeId:e.routeId,version:e.version,rootKeys:[...e.rootKeys],entries:i}}function Lm(e,t,n,r,o,i,s,a,c,l,d){let f=Wn(t),m=t.elements.get(e),u=n.nodes.get(e),g=r.get(e);if(!m||!u||!g)throw new Error(`Node not found: ${e}`);let h=Um(m.textSegments,s),b=Km(e,t,m,g,h),E=h?RC(h):void 0,v=wC(i,h),I=m.textSegments.map(C=>({index:C.index,value:C.value,editable:Jm(C,g,s?.get(C.index)??null),source:o.get(C.index)??null})),R=jm(m,t),P=m.childKeys.map(C=>{let A=t.elements.get(C);return A?{key:C,tag:A.tag,label:A.tag}:null}).filter(C=>C!==null),T=[];if(m.parentKey){let C=t.elements.get(m.parentKey);if(C)for(let A of C.childKeys){if(A===e)continue;let F=t.elements.get(A);F&&T.push({key:A,tag:F.tag,label:F.tag})}}return{composition:f,key:e,tag:m.tag,componentName:m.componentName,sourceFile:m.sourceFile,sourceLocator:$m(m),label:m.tag,capabilities:b,writeTarget:i,effectiveWriteTarget:v,provenanceChain:E,componentSemantic:c,styleSource:l,conditional:a,...d?{dynamicData:d}:{},textSegments:I,boundaryKind:m.boundaryKind,isOpaque:m.isOpaque,ancestors:R,children:P,siblings:T}}function Bm(e,t,n,r,o,i,s,a){let c=Wn(t),l=t.elements.get(e),d=n.nodes.get(e),f=r.get(e);if(!l||!d||!f)throw new Error(`Node not found: ${e}`);let m=Um(l.textSegments,i);return{composition:c,key:e,tag:l.tag,componentName:l.componentName,sourceFile:l.sourceFile,sourceLocator:$m(l),label:l.tag,capabilities:Km(e,t,l,f,m),provenanceChain:m?{editMode:m.editMode,diagnostics:m.diagnostics.map(u=>({code:u.code,message:u.message}))}:void 0,...s?{dynamicData:s}:{},...a?{properties:a}:{},textSegments:l.textSegments.map(u=>{let g=o.get(u.index);return{index:u.index,editable:Jm(u,f,i?.get(u.index)??null),source:g?{kind:g.kind}:null}}),boundaryKind:l.boundaryKind,isOpaque:l.isOpaque,ancestors:jm(l,t)}}function $m(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:IC(e.sourceRange),structuralPath:e.identity.structuralPath,...CC(e.textSegments)}}function jm(e,t){let n=[],r=e.parentKey;for(;r;){let o=t.elements.get(r);if(!o)break;n.push({key:r,tag:o.tag,label:o.tag}),r=o.parentKey}return n.reverse(),n}function IC(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function CC(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,kC)}:{}}function Vm(e,t){let n=t.find(r=>r.editable&&r.source&&r.source.kind!=="literal");return n?.source?{kind:"value-binding",file:n.source.file,componentName:e.componentName,isProxy:n.source.file!==e.file}:{kind:"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function Um(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function Km(e,t,n,r,o){let i=n.identity.structuralPath.includes("#repeat:"),s=t.regions.some(d=>d.kind==="repeat-region"&&d.childKeys.includes(e)),a=o?.diagnostics.find(d=>d.code==="missing-adapter"||d.code==="external-source-readonly")?.code,c=r.canUpdateText?{mode:o?.editMode??"direct",reasonCode:a??(o?.editMode==="upstream"?"component-prop":o?.finalSource?.kind==="repeat-template"?"repeat-item-data":void 0)}:{mode:"unsupported",reasonCode:"capability-denied"},l=r.canUpdateText&&Xm(c.mode);return{...r,canUpdateText:l,editModes:{updateText:c,insertChild:r.canInsertChild?{mode:"direct",reasonCode:i||s?"repeat-template":void 0}:{mode:"unsupported",reasonCode:"capability-denied"},move:r.canMove?{mode:s?"proxy":"direct",reasonCode:s?"repeat-collection":void 0}:{mode:"unsupported",reasonCode:"capability-denied"},remove:r.canRemove?{mode:s?"proxy":"direct",reasonCode:s?"repeat-collection":void 0}:{mode:"unsupported",reasonCode:"capability-denied"}}}}function Jm(e,t,n){return!e.editable||!t.canUpdateText?!1:n?Xm(n.editMode):!0}function Xm(e){return e==="direct"||e==="proxy"||e==="upstream"}function RC(e){return{finalSource:e.finalSource?{kind:e.finalSource.kind,file:e.finalSource.file,displayPath:e.finalSource.displayPath,externalSource:e.finalSource.externalSource}:null,chain:e.chain.map(t=>({kind:t.kind,file:t.file,displayName:t.displayName,canEditHere:t.canEditHere})),confidence:e.confidence,editMode:e.editMode,diagnostics:e.diagnostics.map(t=>({code:t.code,message:t.message}))}}function wC(e,t){return t?.finalSource?t.finalSource.kind==="jsx-literal"?{kind:"jsx-node",file:e.file,isProxy:e.isProxy}:t.finalSource.kind==="config-entry"&&t.finalSource.locator?{kind:"value-path",file:t.finalSource.file,isProxy:t.finalSource.file!==e.file,displayPath:t.finalSource.displayPath}:vC(t.finalSource.kind)?{kind:"external-entry",file:t.finalSource.file,isProxy:!1,displayPath:t.finalSource.displayPath,sourceType:t.finalSource.externalSource?.sourceType,sourceId:t.finalSource.externalSource?.sourceId}:{kind:"value-path",file:t.finalSource.file,isProxy:t.finalSource.file!==e.file,displayPath:t.finalSource.displayPath}:{kind:e.kind==="route-export"?"route-export":"jsx-node",file:e.file,isProxy:e.isProxy}}var Zc=["set-class-name-source","apply-style-draft"];function zm(e){let t=e.attributes?.find(n=>n.name==="className");if(!t)return{kind:"class-name-source",className:"",sourceKind:"missing",editable:!0,operationBoundary:Zc,diagnostics:[{code:"missing-class-name",message:"No className attribute is present on this element"}]};if(t.resolution&&t.resolution.status!=="resolved")return{kind:"class-name-source",className:"",sourceKind:"dynamic-expression",editable:!1,operationBoundary:[],sourcePath:t.source?.expression,diagnostics:[{code:"dynamic-binding",message:"Style binding is unresolved and cannot be edited"}]};if(t.source?.expression){let n=t.source.expression,r=typeof t.resolvedValue=="string"?t.resolvedValue:t.value!==n?t.value:void 0;return typeof r!="string"?{kind:"class-name-source",className:"",sourceKind:"dynamic-expression",editable:!1,operationBoundary:[],sourcePath:n,diagnostics:[{code:t.resolvedValue===void 0?"dynamic-binding":"non-string-binding",message:t.resolvedValue===void 0?"Style binding is dynamic and cannot be edited":"Style binding must resolve to a static string before it can be edited"}]}:{kind:"class-name-source",className:r,sourceKind:"static-expression",editable:!0,operationBoundary:Zc,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:Zc}}function Hm(e){let t=new Map;for(let[n,r]of e.elements){let o=/^[A-Z]/.test(r.tag),i={file:r.sourceFile,componentName:r.componentName,isProxy:o},s=r.boundaryKind,a=[];r.isOpaque&&a.push({kind:"opaque-region",reason:`Component '${r.tag}' is opaque: internal structure not editable`}),o&&!r.isOpaque&&a.push({kind:"component-boundary",reason:`Component '${r.tag}' boundary: editing requires source file access`});let c={key:n,writeTarget:i,boundaryKind:s,parentKey:r.parentKey,childKeys:[...r.childKeys],constraints:a};t.set(n,c)}for(let n of e.regions){let r=n.kind==="repeat-region"?"repeat-region":n.kind==="conditional-region"?"conditional-region":n.kind==="opaque-region"?"opaque-region":"component-boundary",o=n.kind==="repeat-region"?"Node is inside a repeat region: operations affect the template, not individual instances":n.kind==="conditional-region"?"Node is inside a conditional region: visibility depends on runtime condition":`Node is inside a ${n.kind}`;for(let i of n.childKeys){let s=t.get(i);s&&s.constraints.push({kind:r,reason:o}),Wm(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function Wm(e,t,n,r,o){let i=o.elements.get(e);if(i)for(let s of i.childKeys){let a=r.get(s);a&&!a.constraints.some(c=>c.kind===t)&&(a.constraints.push({kind:t,reason:n}),Wm(s,t,n,r,o))}}import Gm from"node:path";function qc(){let e=Promise.resolve();return{async runExclusive(t){let n,r=new Promise(i=>{n=i}),o=e;e=o.then(()=>r,()=>r),await o;try{return await t()}finally{n()}}}}async function Zm(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=TC(i.path);if(!s.ok)return s;let a=s.path;if(o.has(a))return{ok:!1,code:"duplicate-target",path:a,reason:`Duplicate file target: ${a}`};if(o.add(a),i.kind==="create-only"){let c=t.has(a),l=n?await n(a):!1;if(c||l)return{ok:!1,code:"create-only-exists",path:a,reason:`Create-only file already exists: ${a}`}}r.push({...i,path:a})}return{ok:!0,plan:{operationId:e.operationId,intents:r}}}async function Yi(e){let t=()=>NC(e);return e.mutex?e.mutex.runExclusive(t):t()}async function NC(e){let t=await Zm(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=PC(e.overlay,t.plan),r;try{r=await e.buildCandidate({overlay:n,plan:t.plan})}catch(l){return{ok:!1,stage:"build",reason:"Candidate build failed.",error:l,recoveryRequired:!1}}let o,i;try{o=await e.prepareHistory?.({candidate:r,plan:t.plan}),await e.reverify?.({candidate:r,plan:t.plan,history:o}),i=await e.writeCandidate({candidate:r,plan:t.plan}),await e.markCandidateWritten?.({candidate:r,plan:t.plan,history:o,receipt:i})}catch(l){return Qc({candidate:r,plan:t.plan,failedStage:"commit",error:l,history:o,receipt:i,rollbackCandidate:e.rollbackCandidate})}let s=r;try{let l=await e.validateCandidate({candidate:r,plan:t.plan,receipt:i});l!==void 0&&(s=l)}catch(l){return Qc({candidate:r,plan:t.plan,failedStage:"validate",error:l,history:o,receipt:i,rollbackCandidate:e.rollbackCandidate})}let a;try{a=await e.publishCandidate({candidate:s,plan:t.plan,history:o,receipt:i})}catch(l){return Qc({candidate:s,plan:t.plan,failedStage:"publish",error:l,history:o,receipt:i,rollbackCandidate:e.rollbackCandidate})}let c={candidate:s,plan:t.plan,history:o,receipt:i,published:a};try{await e.swapCandidate?.(c)}catch(l){return Ym("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return Ym("finalize",l,"Transaction finalization failed after live state swap.")}try{e.emitCommitted?.({candidate:s,plan:t.plan,published:a})}catch{}return{ok:!0,stage:"publish",published:a,plan:t.plan}}function PC(e,t){let n=new Map(e);for(let r of t.intents)r.kind==="delete"?n.delete(r.path):n.set(r.path,r.content);return n}function Qc(e){return e.rollbackCandidate({candidate:e.candidate,plan:e.plan,failedStage:e.failedStage,error:e.error,...e.history===void 0?{}:{history:e.history},...e.receipt===void 0?{}:{receipt:e.receipt}}).then(()=>({ok:!1,stage:e.failedStage,reason:AC(e.failedStage),error:e.error,recoveryRequired:!1})).catch(t=>({ok:!1,stage:"rollback",reason:"Rollback failed after candidate commit/validation/publish failure.",error:t,recoveryRequired:!0,cause:e.error}))}function Ym(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function AC(e){switch(e){case"commit":return"Candidate write or commit verification failed.";case"validate":return"Candidate validation failed.";case"publish":return"Candidate publish failed."}}function TC(e){if(e.length===0)return{ok:!1,code:"unsafe-path",path:e,reason:"File path must not be empty."};if(e.includes("\0")||e.includes("\\"))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};if(/^[a-zA-Z]:/.test(e)||Gm.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=Gm.posix.normalize(e);return t==="."||t===".."||t.startsWith("../")||t.includes("/../")?{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`}:t.startsWith("./")||t.includes("/./")?{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`}:{ok:!0,path:t}}var FC=50,_C=8*1024*1024;function tg(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??FC),s=Math.max(0,t.maxUndoBytes??_C);return{prepareRewritePlan:a,execute:c,executeFilePlan:l,undo:d,redo:f};async function a(C){let A=[...C.steps].sort((Z,fe)=>Z.order-fe.order),F=A.filter(Z=>Z.type!=="invoke-external-adapter");if(F.length!==A.length)return{ok:!1,errorCode:"unsupported-operation",reason:"External adapter writes require a transactional prepare/commit/rollback contract."};let M=new Set(F.map(Z=>Z.file)),K=await v(M),q=new Map(K.map(Z=>[Z.file,Z.exists===!1?"":Z.content])),Re;for(let Z of F){let fe=eg(Z,q.get(Z.file)??"");if(!fe.ok)return{ok:!1,errorCode:fe.errorCode,reason:fe.reason};q.set(Z.file,fe.source),Re=fe.selectionRef??Re}return{ok:!0,filePlan:{operationId:C.operationId,kind:"source-edit",target:C.target,documentVersion:C.documentVersion,conflictPolicy:"compare-and-swap",edits:[...q].map(([Z,fe])=>({operation:"upsert",file:Z,content:fe,baseContentHash:K.find(Te=>Te.file===Z)?.sha256??null}))},...Re?{selectionRef:Re}:{}}}async function c(C){let A=[...C.steps].sort((Te,zt)=>Te.order-zt.order),F=A.filter(Te=>Te.type!=="invoke-external-adapter"),M=A.filter(Te=>Te.type==="invoke-external-adapter"),K=new Set(F.map(Te=>Te.file));if(F.length>0&&M.length>0)return{ok:!1,operationId:C.operationId,errorCode:"unsupported-operation",reason:"Mixed local file rewrites and external adapter writes require an explicit compensation contract.",rolledBack:!1};if(F.length===0)return b(C,M);let q=await v(K),Re=new Map;for(let Te of q)Re.set(Te.file,Te.exists===!1?"":Te.content);let Z;for(let Te of F){let zt=Re.get(Te.file)??"",Ht=eg(Te,zt);if(!Ht.ok)return{ok:!1,operationId:C.operationId,errorCode:Ht.errorCode,reason:Ht.reason,rolledBack:!1};Re.set(Te.file,Ht.source),Ht.selectionRef&&(Z=Ht.selectionRef)}let fe=await R([...Re].map(([Te,zt])=>({file:Te,content:zt,exists:!0,version:0,sha256:ve(zt)})),q);return fe.ok===!1?{ok:!1,operationId:C.operationId,errorCode:fe.rolledBack?"writeback-failed":"rollback-failed",reason:fe.reason,rolledBack:fe.rolledBack}:(n.push({operationId:C.operationId,preSnapshots:q,postSnapshots:fe.snapshots,plan:C}),m(),r.length=0,{ok:!0,operationId:C.operationId,kind:C.kind,target:C.target,resultVersion:Math.max(...fe.snapshots.map(Te=>Te.version)),affectedFiles:[...K],...Z?{selectionRef:Z}:{}})}async function l(C){let A=new Set(C.edits.map(fe=>fe.file)),F=await v(A),M=E(C,F);if(M)return{ok:!1,operationId:C.operationId,errorCode:"stale-version",reason:M.reason,affectedFiles:[M.file],rolledBack:!1};let K=new Map(F.map(fe=>[fe.file,fe])),q=C.edits.find(fe=>fe.operation==="create-only"&&K.get(fe.file)?.exists!==!1);if(q)return{ok:!1,operationId:C.operationId,errorCode:"stale-version",reason:`MATERIALIZATION_INSTANCE_CONFLICT: create-only target already exists: ${q.file}`,affectedFiles:[q.file],rolledBack:!1};let Re=C.edits.map(fe=>fe.operation==="delete"?{file:fe.file,content:"",exists:!1,version:0}:{file:fe.file,content:fe.content,exists:!0,version:0,sha256:ve(fe.content)}),Z=await R(Re,F,new Set(C.edits.filter(fe=>fe.operation==="create-only").map(fe=>fe.file)));return Z.ok===!1?{ok:!1,operationId:C.operationId,errorCode:Z.rolledBack?"writeback-failed":"rollback-failed",reason:Z.reason,rolledBack:Z.rolledBack}:(n.push({operationId:C.operationId,preSnapshots:F,postSnapshots:Z.snapshots,plan:{operationId:C.operationId,kind:C.kind,target:C.target,documentVersion:C.documentVersion,steps:[],preSnapshots:F}}),m(),r.length=0,{ok:!0,operationId:C.operationId,kind:C.kind,target:C.target,resultVersion:Math.max(...Z.snapshots.map(fe=>fe.version)),affectedFiles:[...A]})}async function d(){let C=n.at(-1);if(!C)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to undo"};let A=await R(C.preSnapshots,C.postSnapshots);return A.ok===!1?{ok:!1,operationId:C.operationId,errorCode:A.rolledBack?"writeback-failed":"rollback-failed",reason:A.reason,rolledBack:A.rolledBack}:(n.pop(),r.push(C),{ok:!0,operationId:C.operationId,kind:C.plan.kind,target:C.plan.target,resultVersion:Math.max(...A.snapshots.map(F=>F.version)),affectedFiles:C.preSnapshots.map(F=>F.file)})}async function f(){let C=r.at(-1);if(!C)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to redo"};let A=await R(C.postSnapshots,C.preSnapshots);return A.ok===!1?{ok:!1,operationId:C.operationId,errorCode:A.rolledBack?"writeback-failed":"rollback-failed",reason:A.reason,rolledBack:A.rolledBack}:(r.pop(),n.push(C),m(),{ok:!0,operationId:C.operationId,kind:C.plan.kind,target:C.plan.target,resultVersion:Math.max(...A.snapshots.map(F=>F.version)),affectedFiles:C.postSnapshots.map(F=>F.file)})}function m(){for(;n.length>i;)n.shift();for(;n.length>0&&u()>s;)n.shift()}function u(){return n.reduce((C,A)=>C+g(A),0)}function g(C){return h(C.preSnapshots)+h(C.postSnapshots)}function h(C){return C.reduce((A,F)=>A+F.file.length+F.content.length,0)}async function b(C,A){let F=[];for(let M of A){let K=M.capability??"write-text",q=o.find(Z=>Z.sourceType===M.sourceType&&(M.adapterId===void 0||Z.adapterId===M.adapterId)&&(Z.capabilities===void 0||Z.capabilities.includes(K)));if(!q)return{ok:!1,operationId:C.operationId,errorCode:"unsupported-operation",reason:`No external adapter registered for ${M.sourceType}`,rolledBack:!1};let Re=await q.execute(M);if(!Re.ok)return{ok:!1,operationId:C.operationId,errorCode:"writeback-failed",reason:Re.reason??`External adapter failed for ${M.sourceType}`,rolledBack:!1};F.push(M.file)}return{ok:!0,operationId:C.operationId,kind:C.kind,target:C.target,resultVersion:0,affectedFiles:F}}function E(C,A){if(C.conflictPolicy!=="compare-and-swap")return null;let F=new Map(A.map(M=>[M.file,M]));for(let M of C.edits){if(M.operation==="create-only")continue;if(M.baseContentHash===void 0)return{file:M.file,reason:`Source file ${M.file} is missing baseContentHash. Reopen the file before saving.`};let K=F.get(M.file),q=M.baseContentHash;if(q===null){if(K?.exists!==!1)return{file:M.file,reason:`Source file ${M.file} was created or changed before save.`};continue}if(!q)return{file:M.file,reason:`Source file ${M.file} is missing baseContentHash. Reopen the file before saving.`};if(K?.exists===!1||K?.sha256!==q)return{file:M.file,reason:`Source file ${M.file} changed before save. Reload or explicitly overwrite the newer version.`}}return null}async function v(C){let A=[];for(let F of C)A.push(await I(F));return A}async function I(C){if(!await e.exists(C))return{file:C,content:"",version:0,exists:!1};let F=Math.max(1,e.getVersion(C)),M=await e.readFile(C);return{file:C,content:M,version:F,exists:!0,sha256:ve(M)}}async function R(C,A,F=new Set){let M=[];try{for(let K of C){if(F.has(K.file)){if(!e.createExclusive)throw new Error("Create-only write requires atomic exclusive-create support.");await e.createExclusive(K.file,K.content)}else await P(K);let q=e.bumpVersion(K.file);M.push(K.file),K.version=q}}catch(K){let q=await T(A.filter(Z=>M.includes(Z.file)));if(q.ok===!1)return{ok:!1,reason:`Writeback failed, then rollback failed for ${q.failedFiles.join(", ")}: ${qm(K)}`,rolledBack:!1,instanceConflict:Qm(K)};let Re=Qm(K);return{ok:!1,reason:`${Re?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${qm(K)}`,rolledBack:!0,instanceConflict:Re}}return{ok:!0,snapshots:C.map(OC)}}async function P(C){if(C.exists===!1){await e.deleteFile(C.file);return}await e.writeFile(C.file,C.content)}async function T(C){let A=[];for(let F of C)try{await P(F),e.bumpVersion(F.file)}catch{A.push(F.file)}return A.length===0?{ok:!0}:{ok:!1,failedFiles:A}}}function Qm(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function OC(e){let t=e.exists!==!1;return{file:e.file,content:t?e.content:"",version:e.version,exists:t,...t?{sha256:ve(e.content)}:{}}}function qm(e){return e instanceof Error?e.message:String(e)}function eg(e,t){switch(e.type){case"invoke-external-adapter":return{ok:!1,reason:"External adapter steps must be executed asynchronously",errorCode:"unsupported-operation"};case"add-import":return ze(zn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-import":return ze(Hn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-node":return ze(Un({source:t,locator:e.locator,removeWhitespace:e.removeWhitespace}));case"insert-child":return ze(Kn({source:t,locator:e.parentLocator,node:e.node,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"update-text":return ze(Uo({source:t,locator:e.locator,segmentIndex:e.segmentIndex,newText:e.newText}));case"update-value":return ze(Cr({source:t,locator:e.locator,next:e.value}));case"update-array-item":return ze(Cr({source:t,locator:e.locator,next:e.value}));case"insert-bound-array-item":return ze(Wo({source:t,locator:e.locator,index:e.index,value:e.value}));case"insert-jsx-expression-child":return ze(Jo({source:t,locator:e.parentLocator,expression:e.expression,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"remove-bound-array-item":return ze(Go({source:t,locator:e.locator,index:e.index}));case"move-array-item":return ze(Yo({source:t,locator:e.locator,fromIndex:e.fromIndex,toIndex:e.toIndex}));case"move-node":return ze(Jn({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"move-repeat-template-child":return ze(Xo({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,repeatExpression:e.repeatExpression,selectionContext:e.selectionContext}));case"set-class-name-source":return MC(e,t);case"set-property-changes":return ze(zo({source:t,locator:e.locator,changes:e.changes}));case"set-property-binding":return ze(Ho({source:t,locator:e.locator,name:e.name,object:e.object,property:e.property}));case"upsert-object-property":return ze(Qo({source:t,objectLocator:e.locator,name:e.name,value:e.value}));default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function MC(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!Uu(n.newAttrRaw))return{ok:!1,reason:"newAttrRaw must be a valid JSX className attribute.",errorCode:"invalid-params"};let r=n.oldAttrRange!==null&&n.oldAttrRaw!==null,o=n.openingElementRange.start,i=n.openingElementRange.end,s=t.slice(o,i);if(!(Number.isInteger(o)&&Number.isInteger(i)&&o>=0&&i>o&&i<=t.length&&s.startsWith("<")&&s.endsWith(">")&&!s.startsWith("</")&&(n.oldAttrRange===null||n.oldAttrRange.start>=o&&n.oldAttrRange.end<=i)))return{ok:!1,reason:"The opening element range changed before className save.",errorCode:"stale-version"};if(!r&&n.expectedVersion.contentHash!==ve(t))return{ok:!1,reason:"The source file changed before className save.",errorCode:"stale-version"};if(n.oldAttrRange){if(t.slice(n.oldAttrRange.start,n.oldAttrRange.end)!==n.oldAttrRaw)return{ok:!1,reason:"The className attribute changed before save.",errorCode:"stale-version"}}else if(n.oldAttrRaw!==null)return{ok:!1,reason:"The className attribute range no longer matches.",errorCode:"stale-version"};return{ok:!0,source:Vu({source:t,oldAttrRange:n.oldAttrRange,openingElementRange:n.openingElementRange,newAttrRaw:n.newAttrRaw})}}function ze(e){if(e.ok)return{ok:!0,source:e.source,...e.selectionRef?{selectionRef:e.selectionRef}:{}};switch(e.diagnostic.code){case"locator-miss":return{ok:!1,reason:e.diagnostic.message,errorCode:"locator-miss"};case"unsupported-syntax":case"binding-not-found":case"export-not-found":case"property-not-found":case"array-index-out-of-range":case"directive-conflict":case"metadata-shape-unsupported":return{ok:!1,reason:e.diagnostic.message,errorCode:"unsupported-operation"};case"invalid-parent-child-relation":case"self-closing-element":return{ok:!1,reason:e.diagnostic.message,errorCode:"invalid-target"};case"parse-failed":case"printer-failed":return{ok:!1,reason:e.diagnostic.message,errorCode:"ast-error"};default:return{ok:!1,reason:e.diagnostic.message,errorCode:"writeback-failed"}}}import{computeSiteEditCompositionKey as Zi,SiteEditCompositionContextSchema as DC,SiteEditCompositionSelectorSchema as LC}from"@vcp-dev/contracts";var He=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="SiteEditCompositionError"}};function ng(e,t){throw new He("INVALID_COMPOSITION",e,{value:t})}function Qi(e){let t=DC.safeParse(e);return t.success?t.data:ng("Invalid SiteEditCompositionContext.",e)}function rg(e){let t=[],n=new Map,r=new Map;for(let l of e.compositions){let d=Qi(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new He("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Zi(d);if(n.has(f))throw new He("DUPLICATE_COMPOSITION",`Composition key ${f} is registered more than once.`,{key:f,context:d});let m=r.get(l.entryFile);if(m)throw new He("DUPLICATE_COMPOSITION",`Entry file ${l.entryFile} is registered more than once.`,{entryFile:l.entryFile,context:m});let u={context:d,entryFile:l.entryFile,key:f};t.push(u),n.set(f,u),r.set(l.entryFile,f)}if(t.length===0)throw new He("INVALID_COMPOSITION","At least one composition must be registered.");let o=new Map;for(let l of e.initialDocumentVersions??[]){let d=Qi(l?.composition);if(!Number.isInteger(l?.version)||(l?.version??-1)<0)throw new He("INVALID_INITIAL_DOCUMENT_VERSION","Initial document version must be a non-negative integer.",{context:d,version:l?.version});let f=Zi(d);if(!n.has(f))throw new He("UNKNOWN_COMPOSITION","Initial document version references an unregistered composition.",{context:d,key:f});if(o.has(f))throw new He("DUPLICATE_COMPOSITION","Initial document versions must contain each composition at most once.",{context:d,key:f});o.set(f,l.version)}function i(l){let d=LC.safeParse(l);if(!d.success)return ng("Invalid SiteEditCompositionSelector.",l);let f=t.filter(({context:m})=>m.routeId===d.data.routeId&&(d.data.templateId===void 0?m.effectiveTemplateId===void 0:m.effectiveTemplateId===d.data.templateId));if(f.length===1)return f[0];throw f.length>1?new He("AMBIGUOUS_COMPOSITION","The composition selector matches multiple registered contexts.",{selector:d.data}):new He("UNKNOWN_COMPOSITION","The composition selector is not registered.",{selector:d.data})}function s(l){let d=Qi(l),f=Zi(d),m=n.get(f);if(!m)throw new He("UNKNOWN_COMPOSITION","The composition context is not registered.",{context:d,key:f});return m}function a(l){let d=Qi(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new He("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Zi(d),m=n.get(f);if(m){if(m.entryFile===l.entryFile)return m;throw new He("DUPLICATE_COMPOSITION",`Composition key ${f} is registered more than once.`,{key:f,context:d})}let u=[...n.values()].find(h=>h.entryFile===l.entryFile);if(u)throw new He("DUPLICATE_COMPOSITION",`Entry file ${l.entryFile} is registered more than once.`,{entryFile:l.entryFile,context:u.context});let g={context:d,entryFile:l.entryFile,key:f};return t.push(g),n.set(f,g),g}function c(l){let d=n.get(l);if(!d)return;n.delete(l);let f=t.findIndex(m=>m.key===l);return f>=0&&t.splice(f,1),o.delete(l),d}return{entries:t,byKey:n,initialVersions:o,register:a,unregister:c,resolveSelector:i,resolveContext:s,getByKey:l=>n.get(l),routeIds:()=>[...new Set(t.map(({context:l})=>l.routeId))]}}import{composeSiteEditRepeatInstanceKey as BC,stripSiteEditRepeatInstanceKeys as og}from"@vcp-dev/contracts";function ig(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=og(o.key)??o.key;if(i===o.key)continue;let s=n.get(i)??0;r.set(o.key,s),n.set(i,s+1)}return{entriesByKey:t,repeatOccurrenceIndexByKey:r}}function $C(e){let t=1;for(let n of e?.textTargets.values()??[])n?.kind==="value-binding"&&n.sourceKind==="repeat-template"&&(t=Math.max(t,n.collectionIndexMap?.length??0,n.collectionPathMap?.length??0));return t}function qi(e){return e?.map(t=>({...t}))}function el(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=qi(e.collectionPathMap?.[t])??qi(e.locator?.path);if(r)for(let o=r.length-1;o>=0;o-=1){let i=r[o];if(i.kind==="index"){i.index=n;break}}return{...e,path:qi(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>qi(o)??[])}}function sg(e,t,n){let r=new Set;for(let u of t.regions)if(u.kind==="repeat-region")for(let g of u.childKeys)r.add(g);if(r.size===0)return e;let o=new Map(e.entries.map(u=>[u.key,u])),i=[],s=new Map,a=(u,g)=>BC(u,g),c=(u,g,h)=>{let b=o.get(u);if(!b)return a(u,h);let E=a(u,h),v={...b,key:E,parentKey:g,childKeys:[]};return i.push(v),v.childKeys=b.childKeys.flatMap(I=>l(I,h,E)),E},l=(u,g,h)=>{if(!r.has(u))return[c(u,h,g)];let b=f(u,g),E=[];for(let v=0;v<b;v+=1)E.push(c(u,h,[...g,v]));return E},d=Array.from(new Set([...e.rootKeys,...e.entries.filter(u=>u.parentKey===null).map(u=>u.key)]));for(let u of d){if(!r.has(u)){c(u,null,[]);continue}let g=f(u,[]);for(let h=0;h<g;h+=1)c(u,null,[h])}return{...e,rootKeys:[...e.rootKeys],entries:i};function f(u,g){let h=new Set;for(let b of m(u)){let E=n.get(b);if(E){for(let v of[...E.textTargets.values(),...E.elementPropertyTargets.values()])if(!(v?.kind!=="value-binding"||v.sourceKind!=="repeat-template"))for(let I of jC(v))I.length<=g.length||VC(I,g)&&h.add(I[g.length])}}return h.size>0?h.size:$C(n.get(u))}function m(u){let g=s.get(u);if(g)return g;let h=[u],b=o.get(u);for(let E of b?.childKeys??[])h.push(...m(E));return s.set(u,h),h}}function ag(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function cg(e,t,n,r){let o=r?.repeatOccurrenceIndexByKey.get(t);if(o!==void 0)return o;if(!e)return null;let i=0;for(let s of e.entries)if((og(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function jC(e){return e.collectionPathMap?.length?e.collectionPathMap.map(t=>t.filter(n=>n.kind==="index").map(n=>n.index)):e.collectionIndexMap?.length?e.collectionIndexMap.map(t=>[t]):[]}function VC(e,t){if(t.length>e.length)return!1;for(let n=0;n<t.length;n+=1)if(e[n]!==t[n])return!1;return!0}function lg(e,t,n,r){if(!n)return{...e,key:t};let o=r??new Map(n.entries.map(d=>[d.key,d])),i=o.get(t);if(!i)return{...e,key:t};let s=[],a=i.parentKey;for(;a;){let d=o.get(a);if(!d)break;s.push({key:d.key,tag:d.tag,label:d.label}),a=d.parentKey}s.reverse();let c=i.childKeys.map(d=>o.get(d)).filter(d=>d!==void 0).map(d=>({key:d.key,tag:d.tag,label:d.label})),l=i.parentKey===null?[]:(o.get(i.parentKey)?.childKeys??[]).filter(d=>d!==i.key).map(d=>o.get(d)).filter(d=>d!==void 0).map(d=>({key:d.key,tag:d.tag,label:d.label}));return{...e,key:i.key,ancestors:s,children:c,siblings:l}}function ug(e,t,n,r){if(!n)return{...e,key:t};let o=r??new Map(n.entries.map(c=>[c.key,c])),i=o.get(t);if(!i)return{...e,key:t};let s=[],a=i.parentKey;for(;a;){let c=o.get(a);if(!c)break;s.push({key:c.key,tag:c.tag,label:c.label}),a=c.parentKey}return s.reverse(),{...e,key:i.key,ancestors:s}}function dg(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function UC(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var fo=class extends Error{constructor(t){let n=t.map(dg);super(UC(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function fg(e,t){let n=t instanceof Error&&t.message?t.message:String(t);return t instanceof fo?{routeId:e,message:n,diagnostics:t.diagnostics.map(dg)}:{routeId:e,message:n}}function tl(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function nl(e,t){let n=new Map(e);for(let r of t)n.delete(r);return n}function dr(e,t){e.clear();for(let[n,r]of t)e.set(n,r)}function pg(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function rl(e,t,n,r){if(!e.has(t)&&e.size>=r){let o=e.keys().next().value;o&&e.delete(o)}e.set(t,n)}function mg(e){let{journal:t,index:n,observedFileDigests:r}=e;if(r.length!==t.files.length)return"ambiguous";let o=t.files.every((l,d)=>l.preDigest===r[d]),i=t.files.every((l,d)=>l.postDigest===r[d]),s=t.historyTransition,a=n.digest===s.expectedIndexDigest,c=n.digest===s.publishedIndexDigest&&n.cursor===s.publishedCursor&&n.currentId===s.publishedCurrentId;return o&&a?"safely-uncommitted":i&&c?"durably-committed":"ambiguous"}var YC=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,ZC=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],gg=32,hg=256;function QC(e){return{expectedIndexDigest:e.digest,publishedIndexDigest:e.digest,publishedCursor:e.cursor,publishedCurrentId:e.currentId}}var yg={maxEntries:50,maxBytes:8*1024*1024};function qC(){let e=new Map;return{async readFile(t){return(await import("node:fs/promises")).readFile(t,"utf-8")},async readFileBytes(t){return(await import("node:fs/promises")).readFile(t)},async getFileInfo(t){let n=await import("node:fs/promises");try{let r=await n.lstat(t);return!r.isFile()||r.isSymbolicLink()?null:{path:t,sizeBytes:r.size}}catch{return null}},async writeFile(t,n){await ei(t,n)},async deleteFile(t){await(await import("node:fs/promises")).rm(t,{force:!0})},async exists(t){let n=await import("node:fs/promises");try{return await n.access(t),!0}catch{return!1}},getVersion(t){return e.get(t)??1},bumpVersion(t){let n=(e.get(t)??1)+1;return e.set(t,n),n}}}function eR(){let e=[],t=[];return{prepareAppend(r){return{kind:"append",entry:r}},prepareUndo(){let r=e.at(-1);return r?{kind:"undo",entry:r}:null},prepareRedo(){let r=t.at(-1);return r?{kind:"redo",entry:r}:null},publishPrepared(r){if(r.kind==="append"){e.push(r.entry),n(),t.length=0;return}if(r.kind==="undo"){if(e.at(-1)!==r.entry)throw new Error("undo history changed before publish");e.pop(),t.push(r.entry);return}if(t.at(-1)!==r.entry)throw new Error("redo history changed before publish");t.pop(),e.push(r.entry),n()},peekUndo(){return e.at(-1)??null},pushUndo(r){e.push(r),n(),t.length=0},popUndo(){return e.pop()??null},peekRedo(){return t.at(-1)??null},pushRedo(r){t.push(r)},popRedo(){return t.pop()??null},clearRedo(){t.length=0},getStatus(){return{canUndo:e.length>0,canRedo:t.length>0,undoDepth:e.length,redoDepth:t.length,recoveryRequired:!1}}};function n(){for(;e.length>yg.maxEntries||tR(e)>yg.maxBytes;)e.shift()}}function tR(e){return e.reduce((t,n)=>t+nR(n),0)}function nR(e){return xg(e.preSnapshots)+xg(e.postSnapshots)+rR(e.provenance)}function rR(e){return e?new TextEncoder().encode(JSON.stringify(e)).byteLength:0}function xg(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function bg(e,t){return{key:JC(e),composition:e,routeId:e.routeId,entryFile:t,graph:null,topology:null,capabilities:null,document:null,pageComposition:null,pageCompositionProjection:null,documentIndex:null,pagePlacementByKey:null,pagePlacementUnitByKey:null,pageUnitByKey:null,pagePlacementsByUnitKey:null,dependencyFiles:new Set([t]),detailProjections:null,fileVersions:new Map,styleContext:null}}var ts=class extends Error{constructor(t){super(t.reason),this.result=t}},Mn=class extends Error{constructor(t){super(tl(t)),this.failedRoutes=t}};function Sg(e,t){if(!e)return;let n=[...t];if(n.some(o=>o?.entries.some(i=>i.key===e.key)))return e;let r=qe(e.key)??e.key;for(let o of n){let i=o?.entries.find(s=>(qe(s.key)??s.key)===r);if(i)return{...e,key:i.key}}return e}function oR(e,t,n){if(!n)return;let r=qe(n.key)??n.key;if(n.key!==e&&n.key!==t&&r!==t)throw new Error(`Selection reference '${n.key}' does not match selected key '${e}'`);if(n.instanceIndex!==void 0&&(!Number.isInteger(n.instanceIndex)||n.instanceIndex<0))throw new Error("Selection reference instanceIndex must be non-negative");if(n.instanceCount!==void 0&&(!Number.isInteger(n.instanceCount)||n.instanceCount<=0))throw new Error("Selection reference instanceCount must be positive");if(n.instanceIndex!==void 0&&n.instanceCount!==void 0&&n.instanceIndex>=n.instanceCount)throw new Error("Selection reference instanceIndex must be smaller than instanceCount");return{...n,key:t}}var iR=/\.(?:[cm]?[jt]sx?)$/i,sR=/\.json$/i,aR=/\.(?:css|scss|sass)$/i,cR=/\.mdx$/i,lR=/\.ya?ml$/i;function uR(e){if(!e||e.kind!=="value-binding")return null;let t="path"in e?e.path:void 0,n=e.root,r=n&&(n.kind==="binding"||n.kind==="named-export")?n.name:void 0;return{kind:e.sourceKind,file:e.file,expression:e.displayExpression,bindingName:r,path:t?.map(o=>o.kind==="property"?o.name:o.index)}}function dR(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function fR(e,t){let n=new Map;for(let r of t)n.set(r.path,r.operation==="delete"?{exists:!1}:{exists:!0,content:r.content});return{async readFile(r){let o=n.get(r);if(o){if(!o.exists)throw new Error(`Source file not found: ${r}`);return o.content}return e.readFile(r)},async writeFile(){throw new Error("Source edit preflight overlay is read-only.")},async deleteFile(){throw new Error("Source edit preflight overlay is read-only.")},async exists(r){let o=n.get(r);return o?o.exists:e.exists(r)},async getFileInfo(r){let o=n.get(r);return o?o.exists?{path:r,sizeBytes:Buffer.byteLength(o.content,"utf8")}:null:e.getFileInfo?.(r)??null},async listFiles(r={}){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let o=Rg(await e.listFiles(r)),i=new Map(o.files.map(a=>[a.path,a]));for(let[a,c]of n)if(pR(a,r.roots??[])){if(!c.exists){i.delete(a);continue}i.set(a,{path:a,sizeBytes:Buffer.byteLength(c.content,"utf8")})}let s=[...i.values()].sort((a,c)=>a.path.localeCompare(c.path));return o.truncated?{files:s,truncated:o.truncated}:s},getVersion(r){return e.getVersion(r)},bumpVersion(r){return e.getVersion(r)}}}function pR(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function Rg(e){return Array.isArray(e)?{files:e}:e}function mR(e){if(!zC(e.path))return{ok:!1,errorCode:"invalid-params",message:`Source file is read-only: ${e.path}`,details:{path:e.path}};if(e.operation==="upsert"&&e.content.includes("\0"))return{ok:!1,errorCode:"invalid-params",message:`Source file content must be valid text: ${e.path}`,details:{path:e.path}};if(e.operation==="delete"){if(e.capability!==WC||e.confirmDelete!==!0||e.confirmPath!==e.path)return{ok:!1,errorCode:"capability-denied",message:`Source file delete requires explicit confirmation: ${e.path}`,details:{path:e.path}};let t=XC(e.path);return t?{ok:!1,errorCode:"capability-denied",message:`Protected source file cannot be deleted: ${e.path}`,details:{path:e.path,protectionReason:t}}:{ok:!0}}if(iR.test(e.path)){let t=Nt({source:e.content,profile:mn({filePath:e.path,source:e.content})});if(!t.ok)return{ok:!1,errorCode:"ast-error",message:t.diagnostic.message,details:{path:e.path}}}if(sR.test(e.path))try{JSON.parse(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`JSON parse failed: ${Ge(t)}`,details:{path:e.path}}}if(aR.test(e.path)){let t=Eg({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(cR.test(e.path)){let t=Eg({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(lR.test(e.path))try{GC(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`YAML parse failed: ${Ge(t)}`,details:{path:e.path}}}return{ok:!0}}function Eg({content:e,path:t,profile:n}){let r=[],o=null,i=!1,s=!1,a=!1,c=!1,l=!0;for(let f=0;f<e.length;f+=1){let m=e[f]??"",u=e[f+1]??"";if(n==="mdx"&&l&&e.startsWith("```",f)){c=!c;let g=e.indexOf(`
8
8
  `,f);if(g===-1){l=!0;break}f=g,l=!0;continue}if(c){l=m===`
9
- `||m==="\r";continue}if(s){m==="*"&&d==="/"&&(s=!1,f+=1),l=m===`
9
+ `||m==="\r";continue}if(s){m==="*"&&u==="/"&&(s=!1,f+=1),l=m===`
10
10
  `||m==="\r";continue}if(a){m===`
11
11
  `||m==="\r"?(a=!1,l=!0):l=!1;continue}if(o){if(i)i=!1;else if(m==="\\")i=!0;else if(m===o)o=null;else if(n==="css"&&(m===`
12
- `||m==="\r"))return ur(t,`Unterminated string literal in ${t}.`);l=m===`
13
- `||m==="\r";continue}if(m==="/"&&d==="*"){s=!0,f+=1,l=!1;continue}if(n==="mdx"&&m==="/"&&d==="/"){a=!0,f+=1,l=!1;continue}if(m==="'"||m==='"'||n==="mdx"&&m==="`"){o=m,l=!1;continue}if(m==="{"||m==="("||m==="["){r.push({char:m,offset:f}),l=!1;continue}if(m==="}"||m===")"||m==="]"){let g=m==="}"?"{":m===")"?"(":"[",h=r.pop();if(!h||h.char!==g)return ur(t,`Unexpected closing token "${m}" in ${t}.`);l=!1;continue}l=m===`
14
- `||m==="\r"}if(s)return ur(t,`Unterminated block comment in ${t}.`);if(o)return ur(t,`Unterminated string literal in ${t}.`);if(c)return ur(t,`Unterminated MDX code fence in ${t}.`);let u=r.at(-1);return u?ur(t,`Unclosed token "${u.char}" in ${t}.`):{ok:!0}}function ur(e,t){return{ok:!1,errorCode:"ast-error",message:t,details:{path:e}}}function po(e){let t="idle",n=e.fileSystem??WC(),r=ju(),o=tg({compositions:e.compositions,initialDocumentVersions:e.initialDocumentVersions}),i=new Map,s=new Map,a=new Set,c=null,l=e.history??(e.historyStore?rd(e.historyStore):GC()),u=qm(n,{externalAdapters:e.externalAdapters}),f=new Map,m=new Set,d=0,g=e.historyStore?.recoveryRequired??!1,h=Zc(),S=w();function E(p){return(Qi.isAbsolute(p)?Qi.relative(e.projectRoot,p):p).replace(/\\/g,"/").replace(/^\.\//,"")}function k(p,y){let x=Qi.posix.dirname(p),v=y.replace(/\.(?:tsx?|jsx?)$/i,""),N=Qi.posix.relative(x,v);return N.startsWith(".")?N:`./${N}`}function I(p,y){return p.startLine===y.startLine&&p.startColumn===y.startColumn&&p.endLine===y.endLine&&p.endColumn===y.endColumn}async function w(){let p=e.historyStore;if(p)try{let y=await p.readTransactionJournal();if(!y)return;let x=await p.readIndex(),v=await Promise.all(y.files.map(async F=>await n.exists(F.path)?be(await n.readFile(F.path)):null));if(fg({journal:y,index:x,observedFileDigests:v})!=="ambiguous"){await p.clearTransactionJournal(y.transactionId);let F=await p.readStatus();F.recoveryRequired||(await p.cleanupTmp(),F=await p.readStatus()),g=F.recoveryRequired;return}await p.markRecoveryRequired(`Ambiguous transaction journal ${y.transactionId} at phase ${y.phase}`),g=!0}catch(y){g=!0,await p.markRecoveryRequired(`Transaction journal recovery failed: ${Ge(y)}`).catch(()=>{})}}function P(){return t==="disposed"}e.onEvent&&r.subscribe(e.onEvent);for(let p of o.entries){let y=yg(p.context,p.entryFile);i.set(p.key,y),A(y,y.dependencyFiles)}function A(p,y){let x=new Set(y);C(p),p.dependencyFiles=x;for(let v of p.dependencyFiles){let N=s.get(v);N||(N=new Set,s.set(v,N)),N.add(p.key)}}function C(p){for(let y of p.dependencyFiles){let x=s.get(y);x&&(x.delete(p.key),x.size===0&&s.delete(y))}p.dependencyFiles.clear()}function T(p){let y=new Set;for(let x of p)for(let v of s.get(x)??[])y.add(v);return y}function _(p){for(let y of p)if(!s.has(y))return!1;return!0}async function L(p,y,x,v,N){let F=new Map,M=bm(N.values()),B=new Map,D=typeof n.exists=="function"?U=>n.exists(U):async()=>!1;for(let[U,W]of p.elements){let ye=y.nodes.get(U);if(!ye)continue;let ae=x.get(W.sourceFile)??v.get(W.sourceFile),ke=new Map,we=new Map,Ne=new Map,Ce=[];for(let xe of W.textSegments){if(!ae){ke.set(xe.index,null);continue}let fr=await Sm({file:W.sourceFile,source:ae,segment:xe,readFile:et=>n.readFile(et),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:et,adapterId:un,capabilities:ys})=>({sourceType:et,adapterId:un,capabilities:ys})),functionCallContracts:e.functionCallContracts,fileCache:M}),We=await Vc({file:W.sourceFile,source:ae,target:{kind:"text-segment",segment:xe},readFile:et=>n.readFile(et),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:et,adapterId:un,capabilities:ys})=>({sourceType:et,adapterId:un,capabilities:ys})),functionCallContracts:e.functionCallContracts,fileCache:M}),dt=iR(fr);ke.set(xe.index,dt),we.set(xe.index,fr),Ne.set(xe.index,We),Ce.push({editable:xe.editable,source:dt})}let O=new Map,K=new Map;if(ae)for(let xe of W.attributes??[]){let fr=await cr({file:W.sourceFile,source:ae,sourceRange:xe.sourceRange,expression:xe.source?.expression??xe.value,sourceInfo:xe.source,readFile:dt=>n.readFile(dt),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:dt,adapterId:et,capabilities:un})=>({sourceType:dt,adapterId:et,capabilities:un})),functionCallContracts:e.functionCallContracts,fileCache:M}),We=await Nm({element:W,file:W.sourceFile,source:ae,propertyName:xe.name,readFile:dt=>n.readFile(dt),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:dt,adapterId:et,capabilities:un})=>({sourceType:dt,adapterId:et,capabilities:un})),functionCallContracts:e.functionCallContracts,fileCache:M});K.set(xe.name,We),O.set(xe.name,fr)}let ee=$m(sR(ye.writeTarget),Ce),re=Pm({key:U,element:W,graph:p,provenances:Ne}),Fe=Jm(W),lt=ae?await kp({element:W,graph:p,file:W.sourceFile,source:ae,readFile:xe=>n.readFile(xe),exists:D,fileCache:B}):void 0,ut=p.regions.find(xe=>xe.kind==="conditional-region"&&xe.childKeys.includes(U)),dr,Je=ut?.sourceCandidates?.[0];if(ae&&ut&&Je?.kind==="conditional-branch"){let xe=await Vc({file:W.sourceFile,source:ae,target:{kind:"conditional-branch",candidate:Je},readFile:We=>n.readFile(We),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:We,adapterId:dt,capabilities:et})=>({sourceType:We,adapterId:dt,capabilities:et})),functionCallContracts:e.functionCallContracts,fileCache:M});dr={currentBranch:ut.childKeys.indexOf(U)<=0?"then":"else",availableBranches:ut.childKeys.length>1?["then","else"]:["then"],conditionExpression:Je.conditionExpression,provenance:{finalSource:xe.finalSource?{kind:xe.finalSource.kind,file:xe.finalSource.file,displayPath:xe.finalSource.displayPath}:null,chain:xe.chain.map(We=>({kind:We.kind,file:We.file,displayName:We.displayName,canEditHere:We.canEditHere})),confidence:xe.confidence,editMode:xe.editMode,diagnostics:xe.diagnostics.map(We=>({code:We.code,message:We.message}))}}}F.set(U,{textSources:ke,textTargets:we,elementPropertyTargets:O,propertyProvenances:K,isRepeat:ER(U,p),provenances:Ne,writeTarget:ee,componentSemantic:re,styleSource:Fe,conditional:dr,dynamicData:lt})}return F}function G(p){return typeof n.getVersion=="function"?n.getVersion(p):0}function ne(p,y){let x=o.initialVersions.get(p.key)??0;for(let v of y.values())x=Math.max(x,v);return Math.max(x,p.graph?.version??0)}function ve(p){return i.get(p)?.graph?.version??o.initialVersions.get(p)??0}function Y(p){try{return ve(o.resolveSelector(p.composition).key)}catch{return 0}}async function ue(p,y,x={}){let v=i.get(p);if(!v)return null;let N=x.sourceCache??el(f,[]),F=await Ae(v.entryFile),{graph:M,allSources:B,diagnostics:D,parsedModules:U,entryModule:W}=await Zu(v.entryFile,y,Je=>n.readFile(Je),typeof n.exists=="function"?Je=>n.exists(Je):async()=>!1,{additionalEntries:F,version:v.graph?.version??1});if(D.length>0)throw new uo(D);let ye=new Map;for(let Je of B.keys())ye.set(Je,G(Je));let ae=Math.max(ne(v,ye),x.minimumVersion??0);x.changed&&ae<=(v.graph?.version??0)&&(ae=(v.graph?.version??0)+1),M.version=ae;for(let[Je,xe]of B)tl(N,Je,xe,mg);let ke=await zt(v.composition,v.entryFile,B,N);M.routeId=v.routeId,M.composition=v.composition;let we=Xm(M),Ne=Mu(we,M),Ce=await L(M,we,B,N,U),O=Wg(M,Ne,Ce),K=Hg(Ce),ee=og(Om(M,we,Ne,{canUpdateTextByKey:O,dynamicDataSummaryByKey:K}),M,Ce),re=jd({route:v.routeId,composition:v.composition,entryFile:v.entryFile,version:ae,source:y,ast:W?.ast}),Fe=Vd(re);re.ok&&dR(ee,M,re.projection);let lt={...ee,composition:v.composition,...ke?{styleContext:ke}:{},pageComposition:Fe},ut=new Set([v.entryFile,...B.keys()]);if(ke){ut.add(ke.entryCss.path);for(let Je of ke.stylesheets)ut.add(Je.path)}let dr={...v,dependencyFiles:ut,graph:M,topology:we,capabilities:Ne,document:lt,pageComposition:Fe,pageCompositionProjection:re.projection,pagePlacementByKey:re.ok?re.projection.placementByKey:null,pagePlacementUnitByKey:re.ok?re.projection.placementUnitByKey:null,pageUnitByKey:re.ok?re.projection.unitByKey:null,pagePlacementsByUnitKey:re.ok?re.projection.placementsByUnitKey:null,documentIndex:rg(lt),detailProjections:Ce,fileVersions:ye,styleContext:ke};if(x.publish===!1)return dr;lr(f,N);for(let Je of N.keys())m.delete(Je);return A(v,ut),Object.assign(v,dr),v}async function Ae(p){let y=[];for(let x of gR(p))typeof n.exists=="function"&&await n.exists(x)&&y.push({file:x,source:await n.readFile(x)});return y}async function zt(p,y,x,v){let N=[];for(let[U,W]of x){if(rl(U)){N.push(U);continue}for(let ye of yR(W)){let ae=vg(U,ye);ae&&N.push(ae)}}if(!N.length){for(let U of hR(y))if(await wl(U)){N.push(U);break}}let F=new Map,M=SR(N).slice(0,pg);for(;M.length>0&&F.size<pg;){let U=M.shift();if(F.has(U)||!rl(U))continue;let W=await Ht(U,v);if(W!==null){F.set(U,{path:U,content:W});for(let ye of xR(W)){let ae=vg(U,ye);ae&&!F.has(ae)&&!M.includes(ae)&&M.push(ae)}}}let B=[...F.values()].map(U=>({...U,hash:be(U.content)})),D=B[0];return D?{composition:p,revision:be(JSON.stringify(B.map(({path:U,hash:W})=>({path:U,hash:W})))),entryCss:D,stylesheets:B.slice(1)}:null}async function Ht(p,y){let x=y.get(p);if(x!==void 0)return x;if(!await wl(p))return null;let v=await n.readFile(p);return tl(y,p,v,mg),v}async function wl(p){return typeof n.exists=="function"?n.exists(p):!1}function Hg(p){let y=new Map;for(let[x,v]of p)v.dynamicData?.bindings.length&&y.set(x,Op(v.dynamicData.bindings));return y}function Wg(p,y,x){let v=new Map;for(let[N,F]of p.elements){if(!y.get(N)?.canUpdateText){v.set(N,!1);continue}let B=x.get(N),D=F.textSegments.some(U=>{if(!U.editable)return!1;let W=B?.provenances.get(U.index)??null;return!W||Gg(W)});v.set(N,D)}return v}function Gg(p){return p.editMode==="direct"||p.editMode==="proxy"||p.editMode==="upstream"}async function vo(p,y={}){let x=[...new Set(p)],v=y.affectedCompositionKeys!==void 0,N=v?new Set(y.affectedCompositionKeys):T(x);if(!v&&(N.size===0||!_(x)))for(let D of i.values())Nl(D,x)&&N.add(D.key);let F=!v&&N.size===0&&x.some(Eg),M=y.publish===!1?el(f,x):void 0,B={rebuiltRoutes:[],failedRoutes:[],...y.publish===!1?{candidateRouteStates:[],candidateSourceCache:M}:{}};for(let D of i.values())if(!(y.excludedCompositionKeys?.has(D.key)||!(N.has(D.key)||F)))try{let W=!!D.graph,ye=await n.readFile(D.entryFile),ae=await ue(D.key,ye,{...y,...M?{sourceCache:M}:{}});ae?.graph&&(B.rebuiltRoutes.push({documentChanged:W,composition:D.composition,routeId:D.routeId,version:ae.graph.version}),B.candidateRouteStates?.push({composition:D.composition,key:D.key,routeId:D.routeId,state:ae}))}catch(W){B.failedRoutes.push({...ug(D.routeId,W),composition:D.composition})}return B}function On(p){let y=[...new Set(p)],x=T(y);if(x.size>0&&_(y))return[...x];for(let v of i.values())Nl(v,y)&&x.add(v.key);return[...x]}function Yg(p){let y=new Set(On(p));return o.entries.filter(x=>y.has(x.key)).map(x=>x.context)}function Zg(p){return[...new Set(On(p))].sort((x,v)=>x<v?-1:x>v?1:0).map(x=>o.getByKey(x)?.context).filter(x=>x!==void 0)}function Qg(p,y){let x=new Set(On(y)),v=p.provenance?.affectedCompositions??[];if(v.length===0)return x;if([...new Set(v.map(F=>o.resolveContext(F).key))].some(F=>!x.has(F)))throw new Error("History provenance does not match the affected composition index.");return x}function qg(p,y){let x=p.composition??p.provenance?.initiatingComposition;if(x){let F=o.resolveContext(x);return{context:F.context,key:F.key}}let v=[...new Set(On(y))];if(v.length!==1)throw new Error(`Legacy history entry cannot be attributed to a unique composition (affected composition count: ${v.length}).`);let N=o.getByKey(v[0]);if(!N)throw new Error("Legacy history entry references an unknown affected composition.");return{context:N.context,key:N.key}}function ds(p,y){r.emit({type:"operation-completed",composition:p.composition,result:p});for(let{composition:x,version:v}of y.rebuiltRoutes)r.emit({type:"document-changed",composition:x,version:v});for(let{composition:x,message:v}of y.failedRoutes)r.emit({type:"graph-error",composition:x,message:v})}function Nl(p,y){return y.some(x=>p.dependencyFiles.has(x)||p.entryFile===x||p.graph?.fileIndex.has(x))}function Pl(p){for(let y of p)a.add(y);c||P()||(c=(async()=>{t="building";let y=!1;try{for(;a.size>0;){if(P())return;await eh();let x=[...a];a.clear();let v=await Al(x);if(v.length===0)continue;let N=On(v);for(let B of N){let D=i.get(B)?.composition;D&&r.emit({type:"graph-invalidated",composition:D})}let{rebuiltRoutes:F,failedRoutes:M}=await vo(v,{changed:!0});for(let{documentChanged:B,composition:D,version:U}of F)r.emit({type:"graph-ready",composition:D,version:U}),B&&r.emit({type:"document-changed",composition:D,version:U});for(let{composition:B,message:D}of M)y=!0,r.emit({type:"graph-error",composition:B,message:D})}}finally{c=null,t!=="disposed"&&(t=!y&&[...i.values()].some(x=>x.graph)?"ready":"idle"),a.size>0&&Pl([])}})())}async function eh(){for(;d>0;)await new Promise(p=>setTimeout(p,0))}async function Al(p){let y=[];for(let x of new Set(p)){let v=f.get(x);if(v===void 0){if(m.has(x)&&!await n.exists(x))continue;m.delete(x),y.push(x);continue}try{await n.readFile(x)!==v&&(m.delete(x),y.push(x))}catch(N){if(!uR(N))try{if(await n.exists(x))continue}catch{continue}m.add(x),y.push(x)}}return y}function Tl(p){dg(f,p);for(let y of p)y.exists===!1?m.add(y.file):m.delete(y.file)}function Fl(p){m.clear();for(let y of p)m.add(y)}async function _l(p){let y=await Al(p);if(y.length===0)return;let x=On(y);for(let F of x){let M=i.get(F)?.composition;M&&r.emit({type:"graph-invalidated",composition:M})}let{rebuiltRoutes:v,failedRoutes:N}=await vo(y,{changed:!0});for(let{documentChanged:F,composition:M,version:B}of v)r.emit({type:"graph-ready",composition:M,version:B}),F&&r.emit({type:"document-changed",composition:M,version:B});for(let{composition:F,message:M}of N)r.emit({type:"graph-error",composition:F,message:M})}async function th(p,y){let x=Ln(p,y);if(!x?.graph)return;let v=it(p)??p,N=x.graph.elements.get(v);N&&await _l([N.sourceFile])}async function Ol(p){let y=new Set;if(p.target.kind==="node"){let x=Ln(p.target.key,p.composition),v=it(p.target.key)??p.target.key,N=x?.graph?.elements.get(v);N&&y.add(N.sourceFile)}else if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&y.add(x.entryFile)}else if(p.target.kind==="page-unit"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&y.add(x.entryFile)}else if(p.target.kind==="source-file")y.add(p.target.path);else if(p.target.kind==="source-batch")for(let x of p.target.paths)y.add(x);if(p.params.kind==="move-node"&&!("kind"in p.params.target)){let x=[p.params.target.parentKey,...p.params.target.relation==="before"||p.params.target.relation==="after"?[p.params.target.anchorKey]:[]];for(let v of x){let N=Ln(v,p.composition),F=it(v)??v,M=N?.graph?.elements.get(F);M&&y.add(M.sourceFile)}}await _l(y)}async function nh(p){if(p.params.kind!=="source-edit")return fs(p,"invalid-params","source-edit requires source-edit params");for(let y of p.params.edits){let x=lR(y);if(!x.ok)return fs(p,x.errorCode,x.message,x.details)}d+=1;try{let y=await ah(p.params.edits);if(!y.ok)return fs(p,y.errorCode,y.message,y.details);await Ol(p);let x={operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:p.params.conflictPolicy,edits:p.params.edits.map(v=>v.operation==="delete"?{operation:"delete",file:v.path,baseContentHash:v.baseContentHash??null}:{operation:"upsert",file:v.path,baseContentHash:v.baseContentHash??null,content:v.content})};return await Dn({request:p,filePlan:x})}catch(y){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:$.INTERNAL_ERROR,message:Ge(y)}}}finally{d-=1}}async function rh(p){if(p.target.kind!=="project"||p.params.kind!=="insert-page-resource")return se(p,$.INVALID_PARAMS,"insert-page-resource requires project target and matching params.");d+=1;try{let y=await ra({files:[...p.params.artifact.components.flatMap(v=>v.materialization.files.map(N=>({path:N.pathTemplate,content:N.content}))),...p.params.artifact.pages.flatMap(v=>v.materialization.files.map(N=>({path:N.pathTemplate,content:N.content})))],exists:v=>n.exists(v),readFile:v=>n.readFile(v)});if(!y.ok)return se(p,$.MATERIALIZATION_REJECTED,y.message);let x=await la({artifact:p.params.artifact,exists:v=>n.exists(v)});return x.ok?await Dn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:"overwrite",edits:x.files},output:{kind:"insert-page-resource",package_instance_id:x.packageInstanceId,pages:x.pages},historyPolicy:"none"}):se(p,x.code==="MATERIALIZATION_CONFLICT"?$.MATERIALIZATION_CONFLICT:$.MATERIALIZATION_REJECTED,x.message,x.path?{path:x.path}:void 0)}catch(y){return se(p,$.INTERNAL_ERROR,Ge(y))}finally{d-=1}}async function oh(p){if(p.target.kind!=="project"||p.params.kind!=="delete-page-source")return se(p,$.INVALID_PARAMS,"delete-page-source requires project target and matching params.");if(!n.listFiles)return se(p,$.PLAN_FAILED,"Complete project file listing is required for page deletion.");d+=1;try{let y=kg(await n.listFiles({maxFiles:5e4,maxDepth:64}));if(y.truncated)return se(p,$.PLAN_FAILED,"Project file listing is incomplete; page deletion was refused.",{truncationReasons:y.truncated.reasons});let x=y.files.filter(({path:M})=>/\.(?:tsx?|jsx?)$/.test(M)),v=Object.fromEntries(await Promise.all(x.map(async({path:M})=>[M,await n.readFile(M)]))),N=uf({expectedUrlPath:p.params.expectedUrlPath,files:v});if(!N.ok)return se(p,N.code==="HOME_PAGE_LOCKED"?$.HOME_PAGE_LOCKED:N.code==="ROUTE_NOT_FOUND"?$.ROUTE_NOT_FOUND:$.PLAN_FAILED,N.message);let F=await Promise.all(N.edits.map(async M=>({...M,baseContentHash:be(await n.readFile(M.file))})));return Dn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:F},output:{kind:"delete-page-source",deleted_files:N.deletedFiles,updated_files:N.updatedFiles,preserved_shared_files:N.preservedSharedFiles,warnings:N.warnings},historyPolicy:"none"})}catch(y){return se(p,$.INTERNAL_ERROR,Ge(y))}finally{d-=1}}async function ih(p,y){if(p.kind!=="insert-child"&&p.kind!=="replace-node")return se(p,$.UNSUPPORTED_OPERATION,"Only page-unit insert-child and replace-node materialization are supported by this transaction.");if(p.params.kind!=="insert-child"&&p.params.kind!=="replace-node"||p.kind!==p.params.kind)return se(p,$.INVALID_PARAMS,"Page-unit materialization operation kind must match its params.");if(p.params.kind==="insert-child"){if(!("kind"in p.params.position)||p.params.position.kind!=="page-composition")return se(p,$.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.");if(p.params.position.documentVersion!==p.documentVersion)return se(p,$.VERSION_STALE,"Page-unit insert-child placement belongs to a different document version.")}let x=y.document,v=y.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!v||v.status!=="supported")return se(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||v.documentVersion!==x.version)return se(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let N=p.params.node.kind==="component-call"?p.params.node.materialization:void 0;if(!N)return se(p,$.UNSUPPORTED_OPERATION,"Page-unit insertion currently requires a static materialization manifest.");let F=p.params.kind==="insert-child"?p.params.position:null,M=await ra({files:N.files.map(D=>({path:D.pathTemplate,content:D.content})),exists:D=>n.exists(D),readFile:D=>n.readFile(D)});if(!M.ok)return se(p,$.MATERIALIZATION_REJECTED,M.message);let B=await Id({manifest:N,generatedRoot:"components/site/generated",controlledFiles:N.files.map(D=>({pathTemplate:D.pathTemplate})),exists:D=>n.exists(D),commit:async D=>{let U=await n.readFile(y.entryFile),W=y.document,ye=y.pageCompositionProjection;if(!W||W.pageComposition?.status!=="supported"||W.version!==p.documentVersion||!ye||ye.status!=="supported"||ye.documentVersion!==W.version)return{ok:!0,data:se(p,$.VERSION_STALE,"The route changed before the page-unit insertion could commit.")};let ae=D.entry.path,ke=mh(D.instanceName),we,Ne=[];if(p.params.kind==="insert-child"){if(!F||!("kind"in F)||F.kind!=="page-composition")return{ok:!0,data:se(p,$.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.")};let ee=ha({routeId:y.routeId,entryFile:y.entryFile,currentDocumentVersion:W.version,expectedDocumentVersion:p.documentVersion,source:U,projection:ye,placementKey:F.placementKey,component:{source:ae,exportName:D.entry.export.kind==="default"?"default":D.entry.export.name,localName:ke}});if(!ee.ok)return{ok:!0,data:se(p,hs(ee.error.code),ee.error.message,{diagnostics:ee.error.diagnostics})};let re=ee.plan.rewriteStep,Fe;switch(re.kind){case"insert-root-expression":Fe=pi({source:U,locator:re.locator,expectedSourceHash:re.sourceHash,action:{kind:"insert",jsx:re.node.jsx,placement:re.placement,replaceOriginal:re.replaceOriginal}});break;case"insert-child":Fe=$n({source:U,locator:re.parentLocator,node:re.node,placement:re.placement,...re.anchorLocator?{anchorLocator:re.anchorLocator}:{}});break;default:Fe={ok:!1,source:U,diagnostic:{code:"unsupported-syntax",message:`Unsupported route composition rewrite: ${String(re)}`}}}if(!Fe.ok)return{ok:!0,data:se(p,$.AST_PARSE_ERROR,Fe.diagnostic.message)};we=Fe.source}else{let ee=ya({routeId:y.routeId,composition:y.composition,entryFile:y.entryFile,currentDocumentVersion:W.version,expectedDocumentVersion:p.documentVersion,source:U,projection:ye,placementUnitKey:p.target.placementUnitKey,operation:"replace-node"});if(!ee.ok)return{ok:!0,data:se(p,hs(ee.error.code),ee.error.message,{diagnostics:ee.error.diagnostics})};let re=ee.plan.rewriteStep,Fe;switch(re.kind){case"replace-root-expression":Fe=pi({source:U,locator:re.locator,expectedSourceHash:re.sourceHash,action:{kind:"replace",jsx:`<${ke} />`}});break;case"replace-node":Fe=jo({source:U,locator:re.locator,node:{jsx:`<${ke} />`}});break;default:Fe={ok:!1,source:U,diagnostic:{message:`Unsupported page-unit replacement rewrite: ${re.kind}`}}}if(!Fe.ok)return{ok:!0,data:se(p,$.AST_PARSE_ERROR,Fe.diagnostic.message)};let lt=await Ml({routeState:y,placementUnitKey:p.target.placementUnitKey,source:U,mutatedSource:Fe.source});we=lt.source,Ne=await Promise.all(lt.files.map(async ut=>({operation:"delete",file:ut,baseContentHash:be(await n.readFile(ut))})))}let Ce=Un({source:we,moduleSpecifier:k(y.entryFile,ae),imports:D.entry.export.kind==="default"?[{kind:"default",local:ke}]:[{kind:"named",imported:D.entry.export.name,local:ke}]});if(!Ce.ok)return{ok:!0,data:se(p,$.AST_PARSE_ERROR,Ce.diagnostic.message)};let O=D.files.map(ee=>({operation:"create-only",file:ee.path,content:ee.content})),K=[{operation:"upsert",file:y.entryFile,content:Ce.source,baseContentHash:be(U)},...O,...Ne];d+=1;try{let ee=await Dn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:K}});return!ee.ok&&ee.error?.message.includes("MATERIALIZATION_INSTANCE_CONFLICT")?{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:ee.error?.message??"Static prefab instance conflicted during commit."}}:{ok:!0,data:ee}}finally{d-=1}}});return B.ok?B.data:se(p,$.VERSION_STALE,B.error.message,{materializationCode:B.error.code})}async function sh(p,y){if(p.kind!=="move-node"&&p.kind!=="remove-node")return se(p,$.UNSUPPORTED_OPERATION,"Only page-unit move-node and remove-node are currently supported by the page composition transaction.");let x=y.document,v=y.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!v||v.status!=="supported")return se(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||v.documentVersion!==x.version)return se(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let N=await n.readFile(y.entryFile),F=ya({routeId:y.routeId,composition:y.composition,entryFile:y.entryFile,currentDocumentVersion:x.version,expectedDocumentVersion:p.documentVersion,source:N,projection:v,placementUnitKey:p.target.placementUnitKey,operation:p.kind,targetPlacement:p.kind==="move-node"&&p.params.kind==="move-node"&&"kind"in p.params.target&&p.params.target.kind==="page-composition"?p.params.target:void 0});if(!F.ok)return se(p,hs(F.error.code),F.error.message,{diagnostics:F.error.diagnostics});let M=F.plan.rewriteStep,B;switch(M.kind){case"move-node":B=jn({source:N,locator:M.locator,targetParentLocator:M.targetParentLocator,placement:M.placement,...M.anchorLocator?{anchorLocator:M.anchorLocator}:{}});break;case"remove-node":B=Bn({source:N,locator:M.locator});break;case"remove-root-expression":B=pi({source:N,locator:M.locator,expectedSourceHash:M.sourceHash,action:{kind:"remove"}});break;default:B={ok:!1,source:N,diagnostic:{message:`Unsupported page-unit mutation rewrite: ${M.kind}`}}}if(!B.ok)return se(p,$.AST_PARSE_ERROR,B.diagnostic.message);let D=B.source,U=[];if(p.kind==="remove-node"){let ye=await Ml({routeState:y,placementUnitKey:p.target.placementUnitKey,source:N,mutatedSource:D});D=ye.source,U=await Promise.all(ye.files.map(async ae=>({operation:"delete",file:ae,baseContentHash:be(await n.readFile(ae))})))}let W=[{operation:"upsert",file:y.entryFile,content:D,baseContentHash:be(N)},...U];d+=1;try{return await Dn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:W}})}finally{d-=1}}async function Ml(p){let y={source:p.mutatedSource,files:[]},x=p.routeState.graph,v=p.routeState.pageCompositionProjection;if(!x||!v||v.status!=="supported"||!n.listFiles)return y;let F=v.placementUnitByKey.get(p.placementUnitKey)?.sourceRange;if(!F)return y;let M=[...x.elements.values()].find(O=>O.sourceFile===p.routeState.entryFile&&O.importedFrom&&I(O.sourceRange,F));if(!M?.importedFrom||!M.exportName)return y;let B=E(M.importedFrom),D="components/site/generated/";if(!B.startsWith(D))return y;let U=B.slice(D.length).split("/")[0];if(!U||!/-[0-9a-f]{8}$/i.test(U))return y;let W=`${D}${U}`;if([...x.elements.values()].filter(O=>O.sourceFile===p.routeState.entryFile&&E(O.importedFrom??"")===B).length!==1)return y;let ae=await n.listFiles({maxFiles:5e3,maxDepth:32}),ke=Array.isArray(ae)?ae:ae.files;if(!Array.isArray(ae)&&ae.truncated)return y;let we=ke.map(({path:O})=>O).filter(O=>O===W||O.startsWith(`${W}/`));if(we.length===0||!we.includes(B))return y;for(let{path:O}of ke)if(!(O===p.routeState.entryFile||O===W||O.startsWith(`${W}/`)))try{if((await n.readFile(O)).includes(U))return y}catch{return y}let Ne=k(p.routeState.entryFile,B),Ce=Kn({source:p.mutatedSource,moduleSpecifier:Ne,imports:M.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:M.exportName}]});return Ce.ok?{source:Ce.source,files:we.sort((O,K)=>O.localeCompare(K))}:y}async function ah(p){if(n.getFileInfo){for(let N of p)if(await n.exists(N.path)&&await n.getFileInfo(N.path)===null)return{ok:!1,errorCode:"invalid-params",message:`Source edit path must resolve to a regular non-symbolic-link file: ${N.path}`,details:{path:N.path}}}for(let N of p){if(N.operation!=="upsert"||!/^(?:src\/)?app\/globals\.css$/i.test(N.path))continue;let F=await n.exists(N.path)?await Is(n,N.path):null;if(F?.ok){let M=BC(F.content,N.content);if(!M.ok)return{ok:!1,errorCode:"invalid-params",message:M.message,details:{path:N.path,code:M.code}}}}let y=ch(p);if(y.length===0)return{ok:!0};let x=aR(n,p),v=po({projectRoot:e.projectRoot,fileSystem:x,compositions:[...i.values()].map(N=>({context:N.composition,entryFile:N.entryFile})),externalAdapters:e.externalAdapters,externalSourceResolvers:e.externalSourceResolvers,functionCallContracts:e.functionCallContracts,dev:e.dev});try{for(let N of y){let F=i.get(N)?.composition;if(!F)continue;let M={routeId:F.routeId,...F.effectiveTemplateId!==void 0?{templateId:F.effectiveTemplateId}:{}};await v.initializeComposition(M),v.getDocument(M)}}catch(N){return{ok:!1,errorCode:"ast-error",message:`Source edit preflight failed: ${Ge(N)}`,details:{compositionKeys:y}}}finally{v.dispose()}return{ok:!0}}function ch(p){return p.map(x=>x.path).some(Eg)?[...i.keys()]:[]}function fs(p,y,x,v){let N=fo(y);return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:N,message:x,...v?{details:v}:{}}}}async function ps(p){let y=[];for(let x of new Set(p))y.push(await lh(x));return y}async function lh(p){if(!(typeof n.exists=="function"?await n.exists(p):!0))return{file:p,content:"",version:Math.max(0,G(p)),exists:!1};let x=await n.readFile(p);return{file:p,content:x,version:Math.max(1,G(p)),exists:!0,sha256:be(x)}}async function Dl(p,y,x,v){if(!e.historyStore)return null;let N=new Map(y.map(B=>[B.file,B])),F=new Map(x.map(B=>[B.file,B])),M=[...new Set([...N.keys(),...F.keys()])].sort().map(B=>{let D=N.get(B),U=F.get(B);return{path:B,preDigest:D?.exists===!1||!D?null:be(D.content),postDigest:U?.exists===!1||!U?null:be(U.content)}});return{schemaVersion:2,transactionId:`${p}:${v.expectedIndexDigest}`,operationId:p,phase:"prepared",historyTransition:v,files:M}}async function Ll(p){return!p||!e.historyStore||await e.historyStore.writeTransactionJournal(p),p}async function Mn(p){p&&e.historyStore&&await e.historyStore.clearTransactionJournal(p.transactionId)}async function ms(p,y){let x=[];try{for(let v of p)await Bl(v),typeof n.bumpVersion=="function"&&n.bumpVersion(v.file),x.push(v.file)}catch(v){let N=await uh(y.filter(F=>x.includes(F.file)));return N.ok?{ok:!1,reason:`Writeback failed and committed files were restored: ${Ge(v)}`,rolledBack:!0}:{ok:!1,reason:`Writeback failed, then rollback failed for ${N.failedFiles.join(", ")}: ${Ge(v)}`,rolledBack:!1}}return{ok:!0,snapshots:p.map(dh)}}async function Bl(p){if(p.exists===!1){await n.deleteFile(p.file);return}await n.writeFile(p.file,p.content)}async function uh(p){let y=[];for(let x of p)try{await Bl(x),typeof n.bumpVersion=="function"&&n.bumpVersion(x.file)}catch{y.push(x.file)}return y.length===0?{ok:!0}:{ok:!1,failedFiles:y}}function dh(p){let y=p.exists!==!1;return{file:p.file,content:y?p.content:"",version:p.version,exists:y,...y?{sha256:be(p.content)}:{}}}async function Dn(p){return h.runExclusive(()=>fh(p))}async function fh(p){let y=p.filePlan.edits.map(O=>O.file),x=o.resolveSelector(p.request.composition),v=x.context,N=p.historyPolicy==="none"?void 0:{initiatingComposition:v,affectedCompositions:Zg(y)},F=await ps(y),M=new Map(F.filter(O=>O.exists!==!1).map(O=>[O.file,O.content])),B=jl(),D=new Map(f),U=new Set(m),W=new Set([...i.values()].filter(O=>p.filePlan.edits.some(K=>K.operation==="delete"&&K.file===O.entryFile)).map(O=>O.key)),ye=p.filePlan.edits.map(O=>O.operation==="delete"?{file:O.file,content:"",version:0,exists:!1}:{file:O.file,content:O.content,version:0,exists:!0,sha256:be(O.content)}),ae={operationId:p.filePlan.operationId,intents:p.filePlan.edits.map(O=>O.operation==="delete"?{kind:"delete",path:O.file}:{kind:O.operation==="create-only"?"create-only":"upsert",path:O.file,content:O.content})},ke=null,we=!1,Ne=await Wi({overlay:M,exists:O=>n.exists(O),plan:ae,buildCandidate:async({plan:O})=>({plan:O}),prepareHistory:async()=>{let O=p.historyPolicy==="none"?null:await l.prepareAppend({composition:o.resolveSelector(p.request.composition).context,operationId:p.request.id,kind:p.request.kind,target:p.request.target,preSnapshots:F,postSnapshots:ye,...p.selectionRef?{selectionRef:p.selectionRef}:{},...p.output?{output:p.output}:{},...N?{provenance:N}:{}}),K=O?.historyTransition?O.historyTransition:e.historyStore?HC(await e.historyStore.readIndex()):null;if(e.historyStore&&!K)throw new Error("Durable history did not provide an exact index transition.");return ke=await Dl(p.request.id,F,ye,K),ke=await Ll(ke),{history:O,historyTransition:K}},reverify:async()=>{},writeCandidate:async()=>{let O=await u.executeFilePlan(p.filePlan);if(!O.ok)throw new qi(O);return{postSnapshots:await ps(O.affectedFiles),affectedFiles:O.affectedFiles,internalResultVersion:O.resultVersion}},validateCandidate:async({candidate:O,receipt:K})=>{let ee=await vo(K.affectedFiles,{changed:!0,minimumVersion:K.internalResultVersion,publish:!1,excludedCompositionKeys:W});if(ee.failedRoutes.length>0)throw new Fn(ee.failedRoutes);let re=Ul(B,ee.candidateRouteStates??[]),Fe=Vl(re,x.key);return{...O,rebuild:ee,routeSnapshots:re,resultVersion:Fe,...xg(p.selectionRef,re.map(lt=>lt.state.document))?{selectionRef:xg(p.selectionRef,re.map(lt=>lt.state.document))}:{}}},publishCandidate:async({candidate:O,history:K,receipt:ee})=>{K?.history&&(await l.publishPrepared(K.history),we=!0);let re=O.resultVersion??ee.internalResultVersion;return{composition:v,requestId:p.request.id,kind:p.request.kind,target:p.request.target,ok:!0,resultVersion:re,affectedFiles:ee.affectedFiles,...p.output?{output:p.output}:{},...O.selectionRef?{selectionRef:O.selectionRef}:{}}},swapCandidate:({candidate:O,receipt:K})=>{O.routeSnapshots&&ko(O.routeSnapshots),O.rebuild?.candidateSourceCache&&lr(f,O.rebuild.candidateSourceCache),Tl(K.postSnapshots)},finalizeCandidate:async()=>{await Mn(ke);for(let O of W)i.delete(O)},emitCommitted:({candidate:O,published:K})=>{ds(K,O.rebuild??{rebuiltRoutes:[],failedRoutes:[]})},rollbackCandidate:async({history:O,receipt:K})=>{if(we)throw new Error("history was published before transaction finalization failed");if(K){let ee=await ms(F,K.postSnapshots);if(!ee.ok)throw new Error(ee.reason)}ko(B),lr(f,D),Fl(U),O?.history&&await l.discardPrepared?.(O.history),await Mn(ke)}});if(Ne.ok)return Ne.published;if(Ne.stage==="precheck"||Ne.stage==="build")try{await Mn(ke)}catch(O){let K=await Io(Ge(O));return se(p.request,K,"Unable to clear an uncommitted transaction journal.")}if(Ne.recoveryRequired){let O=await Io(Ne.reason);return se(p.request,O===$.RECOVERY_PERSIST_FAILED?O:$.ROLLBACK_FAILED,Ne.reason)}let Ce=Ne.error;return Ce instanceof qi?{...se(p.request,fo(Ce.result.errorCode),Ce.result.reason),...Ce.result.affectedFiles?{affectedFiles:Ce.result.affectedFiles}:{}}:Ce instanceof Fn?se(p.request,$.ROUTE_REBUILD_FAILED,`Route rebuild failed and source was rolled back: ${qc(Ce.failedRoutes)}`,{failedRoutes:Ce.failedRoutes}):se(p.request,Jl(Ne.stage),Ge(Ce))}async function $l(p){return h.runExclusive(async()=>{let y=p==="undo"?await l.prepareUndo():await l.prepareRedo();return y?ph(p,y):{composition:o.entries[0].context,requestId:p,kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:o.initialVersions.get(o.entries[0].key)??0,error:{code:$.INTERNAL_ERROR,message:p==="undo"?"Nothing to undo":"Nothing to redo"}}})}async function ph(p,y){let x=y.entry,v=p==="undo"?x.preSnapshots:x.postSnapshots,N=p==="undo"?x.postSnapshots:x.preSnapshots,F=v.map(K=>K.file),{context:M,key:B}=qg(x,F),D=await ps(F),U=new Map(D.filter(K=>K.exists!==!1).map(K=>[K.file,K.content])),W=ve(B),ye=jl(),ae=new Map(f),ke=new Set(m),we=null,Ne=!1,Ce,O=await Wi({overlay:U,plan:{operationId:`${p}:${x.operationId}`,intents:v.map(K=>K.exists===!1?{kind:"delete",path:K.file}:{kind:"upsert",path:K.file,content:K.content})},buildCandidate:async()=>({}),prepareHistory:async()=>(we=await Dl(`${p}:${x.operationId}`,D,v,y.historyTransition),we=await Ll(we),y),reverify:async()=>{},writeCandidate:async()=>{let K=await ms(v,N);if(!K.ok)throw new Error(K.reason);return{snapshots:K.snapshots}},validateCandidate:async({candidate:K})=>{Ce=Qg(x,F);let ee=await vo(F,{changed:!0,minimumVersion:W+1,publish:!1,affectedCompositionKeys:Ce});if(ee.failedRoutes.length>0)throw new Fn(ee.failedRoutes);let re=Ul(ye,ee.candidateRouteStates??[]),Fe=Vl(re,B);return{...K,rebuild:ee,routeSnapshots:re,resultVersion:Fe}},publishCandidate:async({candidate:K,history:ee})=>{if(!ee)throw new Error("history cursor intent is missing");await l.publishPrepared(ee),Ne=!0;let re=K.resultVersion??W+1;return{composition:M,requestId:p,kind:x.kind,target:x.target,ok:!0,resultVersion:re,affectedFiles:F,...x.output?{output:x.output}:{}}},swapCandidate:({candidate:K,receipt:ee})=>{K.routeSnapshots&&ko(K.routeSnapshots),K.rebuild?.candidateSourceCache&&lr(f,K.rebuild.candidateSourceCache),Tl(ee.snapshots)},finalizeCandidate:async()=>{await Mn(we)},emitCommitted:({candidate:K,published:ee})=>ds(ee,K.rebuild??{rebuiltRoutes:[],failedRoutes:[]}),rollbackCandidate:async({history:K,receipt:ee})=>{if(Ne)throw new Error("history cursor was published before transaction finalization failed");if(ee){let re=await ms(N,ee.snapshots);if(!re.ok)throw new Error(re.reason)}ko(ye),lr(f,ae),Fl(ke),K&&await l.discardPrepared?.(K),await Mn(we)}});if(O.ok)return O.published;if(O.stage==="precheck"||O.stage==="build")try{await Mn(we)}catch(K){let ee=await Io(Ge(K));return{composition:M,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:W,error:{code:ee,message:"Unable to clear an uncommitted transaction journal."}}}if(O.recoveryRequired){let K=await Io(O.reason);return{composition:M,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:W,affectedFiles:F,error:{code:K===$.RECOVERY_PERSIST_FAILED?K:$.ROLLBACK_FAILED,message:O.reason}}}return{composition:M,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:W,affectedFiles:F,error:{code:O.error instanceof Fn?$.ROUTE_REBUILD_FAILED:Jl(O.stage),message:Ge(O.error),...O.error instanceof Fn?{details:{failedRoutes:O.error.failedRoutes}}:{}}}}function jl(){return[...i.values()].map(p=>({composition:p.composition,key:p.key,routeId:p.routeId,state:{...p,dependencyFiles:new Set(p.dependencyFiles),fileVersions:new Map(p.fileVersions)}}))}function Vl(p,y){return p.find(v=>v.key===y)?.state.graph?.version??o.initialVersions.get(y)??0}function Ul(p,y){let x=new Map(p.map(v=>[v.key,v]));for(let v of y)x.set(v.key,v);return[...x.values()]}function ko(p){for(let y of i.values())C(y);for(let y of p){let x={...y.state,dependencyFiles:new Set(y.state.dependencyFiles),fileVersions:new Map(y.state.fileVersions)};i.set(y.key,x),A(x,x.dependencyFiles)}}async function gs(p){let y=i.get(p);if(!y)throw new Error(`Composition not found: ${p}`);if(y.graph)return;let x=await n.readFile(y.entryFile);await ue(p,x)}function Ln(p,y){let x=i.get(o.resolveSelector(y).key)??null;return!x||!Kl(x,p)?null:x}function Kl(p,y){if(p.documentIndex?.entriesByKey.has(y)||p.graph?.elements.has(y))return!0;let x=it(y);return x&&x!==y?p.graph?.elements.has(x)===!0:!1}function se(p,y,x,v){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:y,message:x,...v?{details:v}:{}}}}function Jl(p){return p==="validate"?$.ROUTE_REBUILD_FAILED:p==="publish"?$.HISTORY_COMMIT_FAILED:$.WRITE_IO_ERROR}async function Io(p){if(g=!0,!l.markRecoveryRequired)return $.RECOVERY_REQUIRED;try{return await l.markRecoveryRequired(p),$.RECOVERY_REQUIRED}catch{return $.RECOVERY_PERSIST_FAILED}}function mh(p){let x=p.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(v=>v.charAt(0).toUpperCase()+v.slice(1)).join("").replace(/^[^a-zA-Z_$]+/,"");return x?`Prefab${x}`:"GeneratedPrefab"}function hs(p){return p==="VERSION_STALE"?$.VERSION_STALE:p==="CROSS_PAGE_MOVE_UNSUPPORTED"?$.CROSS_PAGE_MOVE_UNSUPPORTED:$.UNSUPPORTED_OPERATION}async function Xl(p){if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key)??null;return x?(x.graph||await gs(x.key),x):se(p,$.ROUTE_NOT_FOUND,"Composition not found for route target.")}if(p.target.kind==="page-unit"){let x=i.get(o.resolveSelector(p.target.composition).key)??null;return x?(x.graph||await gs(x.key),x):se(p,$.ROUTE_NOT_FOUND,"Composition not found for page-unit target.")}if(p.target.kind!=="node")return se(p,$.UNSUPPORTED_OPERATION,`${p.kind} source target execution is not implemented yet.`);let y=i.get(o.resolveSelector(p.composition).key)??null;return y?(y.graph||await gs(y.key),Kl(y,p.target.key)?y:se(p,$.NODE_NOT_FOUND,`Target key not found: ${p.target.key}`)):se(p,$.ROUTE_NOT_FOUND,"Composition not found for node target.")}return{get status(){return t},dispose(){t="disposed",a.clear(),i.clear(),s.clear(),f.clear(),m.clear()},registerComposition(p,y){let x=o.register({context:p,entryFile:y}),v=i.get(x.key);if(v?.entryFile===y)return;v&&C(v);let N=yg(x.context,y);i.set(x.key,N),A(N,N.dependencyFiles),r.emit({type:"graph-invalidated",composition:x.context})},unregisterComposition(p){let y=o.resolveSelector(p),x=i.get(y.key);x&&(C(x),i.delete(y.key),o.unregister(y.key),i.size===0&&(t="idle"),r.emit({type:"graph-invalidated",composition:y.context}))},getCompositionEntryFiles(){return[...i.values()].map(p=>p.entryFile)},getCompositionContext(p){return o.resolveSelector(p).context},async initializeComposition(p){let y=o.resolveSelector(p),x=i.get(y.key);if(!x)throw new Error(`Composition not registered: ${y.key}`);if(x.graph)t="ready";else{t="building";try{let v=await n.readFile(x.entryFile);await ue(y.key,v),t="ready",r.emit({type:"graph-ready",composition:y.context,version:i.get(y.key)?.graph?.version??0})}catch(v){throw t="idle",r.emit({type:"graph-error",composition:y.context,message:Ge(v)}),v}}},getDocument(p){let y=o.resolveSelector(p),x=i.get(y.key);if(!x)throw new Error(`Composition not registered: ${y.key}`);if(!x.document)throw new Error(`Composition not built: ${y.key}`);return x.document},async getHistoryStatus(){await S;let p=await l.getStatus?.();return p?{...p,recoveryRequired:g}:{canUndo:!1,canRedo:!1,undoDepth:0,redoDepth:0,recoveryRequired:g}},getObjectEditContext(p,y,x){let v=Ln(p,y),N=it(p)??p;if(v?.graph&&v.topology&&v.capabilities&&v.detailProjections){let F=v.detailProjections.get(N);if(F){let M=v.graph.elements.get(N);if(!M)throw new Error(`Key not found: ${p}`);let B=qC(p,N,x),D=new Map;if(F.isRepeat&&B?.instanceIndex!==void 0)for(let ye of M.attributes??[])D.set(ye.name,Rc({file:M.sourceFile,source:f.get(M.sourceFile)??"",element:M,propertyName:ye.name,selectionRef:B,graph:v.graph,sources:f}));let U=_m({element:M,graph:v.graph,source:f.get(M.sourceFile),documentVersion:v.graph.version,selectionRef:x,isRepeat:F.isRepeat,propertyProvenance:F.propertyProvenances,repeatTargets:D}),W=Dm(N,v.graph,v.topology,v.capabilities,F.textSources,F.provenances,F.dynamicData,U);return p===N?W:cg(W,p,v.document??null,v.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getRenderDetail(p,y){let x=Ln(p,y),v=it(p)??p;if(x?.graph&&x.topology&&x.capabilities&&x.detailProjections){let N=x.detailProjections.get(v);if(N){let F=Mm(v,x.graph,x.topology,x.capabilities,N.textSources,N.writeTarget,N.provenances,N.conditional,N.componentSemantic,N.styleSource,N.dynamicData);return p===v?F:ag(F,p,x.document??null,x.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getClassNameSource(p,y){let x=Ln(p,y),v=it(p)??p;if(!x?.graph)throw new Error(`Key not found: ${p}`);let N=x.graph.elements.get(v);if(!N)throw new Error(`Key not found: ${p}`);let F=f.get(N.sourceFile);if(F===void 0)throw new Error(`Source not loaded: ${N.sourceFile}`);return Ks({key:v,route:{composition:x.composition,routeId:x.routeId,graph:x.graph,source:F}})},refreshSourceForKey:th,async execute(p){if(await S,g)return se(p,$.RECOVERY_REQUIRED,"The edit engine requires explicit recovery before accepting mutations.");if(p.kind==="source-edit")return nh(p);if(p.kind==="insert-page-resource")return rh(p);if(p.kind==="delete-page-source")return oh(p);let y=await Xl(p);if("ok"in y)return y;await Ol(p);let x=await Xl(p);if("ok"in x)return x;let v=x;if(p.target.kind==="page-unit"){let B=p;return p.kind==="insert-child"||p.kind==="replace-node"?ih(B,v):p.kind==="move-node"||p.kind==="remove-node"?sh(B,v):se(p,$.UNSUPPORTED_OPERATION,"Only page-unit insert-child, replace-node, move-node, and remove-node are currently supported by the page composition transaction.")}if(!v.graph||!v.topology||!v.capabilities)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:p.target.kind==="route"?$.ROUTE_NOT_FOUND:$.NODE_NOT_FOUND,message:p.target.kind==="route"?"Composition not ready for route target.":p.target.kind==="node"?`Target key not found: ${p.target.key}`:`${p.kind} source target execution is not implemented yet.`}};let N=pR(v,v.graph,v.capabilities,f,i),F=await new Oi(N).plan(p);if(!F.ok)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:fo(F.errorCode),message:F.reason}};let M=F.plan;if(M.steps.length===0)return p.kind==="set-props"?{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!0,resultVersion:Y(p),affectedFiles:[]}:{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:$.PLAN_FAILED,message:"Planner could not generate a valid execution plan"}};d+=1;try{if(M.steps.some(D=>D.type==="invoke-external-adapter")){let D=await u.execute(M);if(!D.ok)return se(p,fo(D.errorCode),D.reason);let U={composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!0,resultVersion:Math.max(Y(p),D.resultVersion),affectedFiles:D.affectedFiles,...D.selectionRef?{selectionRef:D.selectionRef}:{}};return ds(U,{rebuiltRoutes:[],failedRoutes:[]}),U}let B=await u.prepareRewritePlan(M);return B.ok?await Dn({request:p,filePlan:B.filePlan,...B.selectionRef?{selectionRef:B.selectionRef}:{}}):se(p,fo(B.errorCode),B.reason)}catch(B){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:$.INTERNAL_ERROR,message:Ge(B)}}}finally{d-=1}},async undo(p){if(await S,g)return{composition:o.entries[0].context,requestId:"undo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:ve(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting undo."}};d+=1;try{return await $l("undo")}finally{d-=1}},async redo(p){if(await S,g)return{composition:o.entries[0].context,requestId:"redo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:ve(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting redo."}};d+=1;try{return await $l("redo")}finally{d-=1}},notifyFileChanged(p){Pl([p])},getAffectedCompositions(p){return Yg(p)},subscribe(p){return r.subscribe(p)}}}function uR(e){return e instanceof Error&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function dR(e,t,n){let r=new Map,o=new Map,i=(u,f,m)=>{let d=u.get(f)??new Set,g=d.size;return d.add(m),u.set(f,d),d.size!==g},s=(u,f)=>{if(!u.importedFrom)return!1;if(u.exportName==="default")return i(o,u.importedFrom,f);let m=i(r,`${u.importedFrom}#${u.tag}`,f);return u.exportName&&u.exportName!==u.tag&&(m=i(r,`${u.importedFrom}#${u.exportName}`,f)||m),m},a=u=>r.get(`${u.sourceFile}#${u.componentName}`)??o.get(u.sourceFile);for(let u of t.elements.values()){if(u.sourceFile!==n.entryFile||!u.importedFrom||!/^[A-Z]/.test(u.tag))continue;let f=n.placements.find(d=>d.members.some(g=>g.sourceRange!==null&&nl(u.sourceRange,g.sourceRange)));if(!f)continue;let m=f.placementUnitKey;s(u,m)}let c=!0;for(;c;){c=!1;for(let u of t.elements.values()){if(u.sourceFile===n.entryFile||!u.importedFrom||!/^[A-Z]/.test(u.tag))continue;let f=a(u);if(f)for(let m of f)c=s(u,m)||c}}let l=n.placements.find(u=>u.placementKey===n.container.placementKey&&u.relation==="append");for(let u of e.entries){let f=it(u.key)??u.key,m=t.elements.get(u.key)??t.elements.get(f);if(!m)continue;if(m.sourceFile===n.entryFile){if(n.container.sourceRange&&nl(m.sourceRange,n.container.sourceRange)&&l){u.pageCompositionUnitKey=l.placementUnitKey;continue}let h=n.placements.find(S=>S.members.some(E=>E.sourceRange!==null&&(nl(m.sourceRange,E.sourceRange)||fR(E.sourceRange,m.sourceRange))));if(h){u.pageCompositionUnitKey=h.placementUnitKey;continue}}let d=r.get(`${m.sourceFile}#${m.componentName}`);if(d){d.size===1&&(u.pageCompositionUnitKey=d.values().next().value);continue}let g=o.get(m.sourceFile);g?.size===1&&(u.pageCompositionUnitKey=g.values().next().value)}}function nl(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function fR(e,t){return Sg(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&Sg(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function Sg(e,t,n,r){return e!==n?e-n:t-r}function pR(e,t,n,r,o){let i=new Map,s=new Map,a=(u,f)=>{if(s.has(u))return;s.set(u,f);let m=t.elements.get(u);for(let d of m?.childKeys??[])a(d,f)};for(let u of t.regions)if(u.kind==="repeat-region")for(let f of u.childKeys)i.set(f,u.ownerKey),a(f,u.ownerKey);return{getNode(u){let f=c(u),m=t.elements.get(f.baseKey);return m?l(u,m):null},getChildNodes(u){let f=c(u),d=e.documentIndex?.entriesByKey.get(u)?.childKeys;if(d)return d.map(h=>{let S=it(h)??h,E=t.elements.get(S);return E?l(h,E):null}).filter(h=>h!==null);let g=t.elements.get(f.baseKey);return g?g.childKeys.map(h=>{let S=t.elements.get(h);return S?l(h,S):null}).filter(h=>h!==null):[]},getKnownSourceFiles(){return[...r.entries()].map(([u,f])=>({file:u,content:f}))},getRouteEntryFiles(){return[...o.values()].map(u=>u.entryFile)},getCapability(u){let f=c(u),m=n.get(f.baseKey);return m?{...m,key:u,constraints:m.constraints.map(d=>({...d})),...m.editModes?{editModes:{...m.editModes}}:{}}:{composition:e.composition,key:u,canUpdateText:!1,canRemove:!1,canInsertChild:!1,canMove:!1,constraints:[]}},getFileContent(u){return r.get(u)??""},getFileVersion(u){return Math.max(e.fileVersions.get(u)??0,t.version)},getRouteEntryFile(u){return e.routeId===u?e.entryFile:null},getComponentSemantic(u){let f=c(u);return e.detailProjections?.get(f.baseKey)?.componentSemantic??null},getClassNameSource(u){let f=c(u),m=t.elements.get(f.baseKey),d=m?r.get(m.sourceFile):void 0;return!m||d===void 0?null:Ks({key:f.baseKey,route:{composition:e.composition,routeId:e.routeId,graph:t,source:d}})},getEditableTextSegmentIndex(u){let f=c(u),d=e.detailProjections?.get(f.baseKey)?.textTargets.keys()?.next();return d&&!d.done?d.value:null},async getTextWriteTarget(u,f){let m=c(u);return Qc(e.detailProjections?.get(m.baseKey)?.textTargets.get(f)??null,m.repeatIndex)},async getElementPropertyWriteTarget(u,f){let m=c(u);return Qc(e.detailProjections?.get(m.baseKey)?.elementPropertyTargets.get(f)??null,m.repeatIndex)},getPropertyState(u,f,m){let d=c(u),g=t.elements.get(d.baseKey);if(!g)return null;let S=e.detailProjections?.get(d.baseKey)?.propertyProvenances.get(f);if(S)return S;let E=g.attributes?.find(k=>k.name===f);return E?E.source?{status:"blocked",owner:"generic",diagnostic:{code:"unsupported-property-source",message:`Property '${f}' has an unresolved value source`}}:{status:"direct",owner:"generic",attribute:E,target:{kind:"jsx-attribute",file:g.sourceFile,sourceRange:E.sourceRange}}:(g.attributeSpreads?.length??0)>0?{status:"blocked",owner:"generic",diagnostic:{code:"ambiguous-property-source",message:`A spread may provide or override property '${f}'`}}:{status:"missing",owner:"generic"}},getRepeatPropertyTarget(u,f,m){let d=c(u),g=t.elements.get(d.baseKey);if(!g)return{ok:!1,errorCode:"repeat-not-found",reason:`Node not found: ${u}`};let h=m?{...m,key:d.baseKey}:d.repeatIndex!==null?{key:d.baseKey,instanceIndex:d.repeatIndex}:void 0;return Rc({file:g.sourceFile,source:r.get(g.sourceFile)??"",element:g,propertyName:f,selectionRef:h,graph:t,sources:r})},getTextProvenance(u,f){let m=c(u);return e.detailProjections?.get(m.baseKey)?.provenances.get(f)??null}};function c(u){let f=UC(u);return f?{baseKey:f.baseKey,repeatIndex:sg(e.document??null,u,f.baseKey,e.documentIndex)??ig(f)}:{baseKey:u,repeatIndex:null}}function l(u,f){let m=it(u)??u,d=e.documentIndex?.entriesByKey.get(u);return{key:u,file:f.sourceFile,component:f.componentName,tag:f.tag,structuralPath:f.identity.structuralPath,sourceRange:f.sourceRange,parentKey:d?.parentKey??f.parentKey??void 0,isRepeatRegion:f.boundaryKind==="repeat-region"||s.has(m),isBoundary:!1,importedFrom:f.importedFrom,exportName:f.exportName,isRepeatItemRoot:i.has(m),repeatOwnerKey:i.get(m)??s.get(m),attributes:f.attributes?.map(g=>({name:g.name,value:g.value,source:g.source?{expression:g.source.expression,base:g.source.base,path:g.source.path.map(h=>({...h}))}:null,resolvedValue:g.resolvedValue}))}}}var mR={"stale-version":$.VERSION_STALE,"capability-denied":$.CAPABILITY_REJECTED,"invalid-params":$.INVALID_PARAMS,"locator-miss":$.LOCATOR_FAILED,"route-not-found":$.ROUTE_NOT_FOUND,"unsupported-operation":$.UNSUPPORTED_OPERATION,"invalid-target":$.INVALID_TARGET,"ast-error":$.AST_PARSE_ERROR,"writeback-failed":$.WRITE_IO_ERROR,"rollback-failed":$.RECOVERY_REQUIRED,unknown:$.INTERNAL_ERROR};function fo(e){return mR[e]}function Ge(e){return e instanceof Error&&e.message?e.message:String(e)}function Eg(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function gR(e){let t=_n(e);if(!XC.test(t))return[];let n=t.startsWith("src/app/")?"src/app":"app",r=t.slice(0,t.lastIndexOf("/")),o=[],i=r;for(;(i===n||i.startsWith(`${n}/`))&&(o.unshift(i),i!==n);)i=i.slice(0,i.lastIndexOf("/"));return o.flatMap(s=>zC.map(a=>`${s}/${a}`))}function hR(e){let n=_n(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function yR(e){return Ig(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function xR(e){return Ig(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function Ig(e,t){let n=[];for(let r of e.matchAll(t)){let o=Cg(r[1]??"");o&&n.push(o)}return n}function vg(e,t){let n=Cg(t);return!n||n.startsWith("tailwindcss")||n.startsWith("http:")||n.startsWith("https:")?null:n.startsWith("@/")?_n(`src/${n.slice(2)}`):n.startsWith("./")||n.startsWith("../")?_n(`${bR(e)}/${n}`):n.startsWith("/")?_n(n.slice(1)):rl(n)?_n(n):null}function Cg(e){return e.split(/[?#]/,1)[0]?.trim()??""}function rl(e){return/\.css$/i.test(e)}function bR(e){let t=_n(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function SR(e){return Array.from(new Set(e))}function _n(e){let t=e.replace(/\\/g,"/").replace(/^\.\//,""),n=[];for(let r of t.split("/"))if(!(!r||r===".")){if(r===".."){n.pop();continue}n.push(r)}return n.join("/")}function ER(e,t){let n=t.elements.get(e);if(!n)return!1;for(let r of t.regions){if(r.kind!=="repeat-region")continue;let o=n;for(;o;){if(r.childKeys.includes(o.identity.key))return!0;o=o.parentKey?t.elements.get(o.parentKey):void 0}}return!1}var es=class{constructor(t){this.options=t,this.fileSystem=new pr(t.files),this.engine=this.createEngine(this.fileSystem)}get status(){return this.engine.status}initializeComposition(t){return this.engine.initializeComposition(t)}getDocument(t){return Ro(this.engine.getDocument(t),{siteId:this.options.siteId,snapshotId:this.options.snapshotId})}getInternalDocument(t){return this.engine.getDocument(t)}getStyleContext(t){return this.engine.getDocument(t).styleContext??null}getObjectEditContext(t,n,r){return wo(r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n))}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(t){return Ao(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}getSourceFile(t){return To(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}resolveSourceLocation(t){return Fo(t,this.engine.getRenderDetail(t.key,t.composition))}async planOperation(t){let n=kR.safeParse(t);if(!n.success)return{result:Co(t,n.error.issues.map(i=>i.message))};let r=new pr(this.options.files),o=this.createEngine(r,{emitEvents:!1});try{let i=await o.execute(n.data);if(!i.ok)return{result:{ok:!1,composition:i.composition,error:{code:i.error?.code??"INTERNAL_ERROR",message:i.error?.message??"Operation failed"},data:{requestId:i.requestId,kind:i.kind,target:i.target,resultVersion:i.resultVersion}}};let s={ok:!0,composition:i.composition,data:dn(i)},a=r.getChangedFiles();if(a.length===0)return{result:s};let c=IR.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:a.map(l=>CR(l,t.kind==="source-edit")),changedCompositions:o.getAffectedCompositions(a.map(l=>l.path)),diagnostics:[]});return this.options.onEvent?.({type:"site-edit.operation.planned",siteId:t.siteId,operationId:t.id,baseSnapshotId:t.baseSnapshotId,changedFiles:c.patches.map(l=>l.path),composition:i.composition,at:new Date().toISOString()}),{result:s,patchPlan:c}}finally{o.dispose()}}dispose(){this.engine.dispose()}createEngine(t,n={}){let r=n.emitEvents??!0;return po({projectRoot:"/snapshot",fileSystem:t,compositions:this.options.compositions,onEvent:r&&this.options.onEvent?o=>{let i=No(o,{siteId:this.options.siteId,snapshotId:this.options.snapshotId});i&&this.options.onEvent?.(i)}:void 0,dev:this.options.dev,...this.options.historyStore?{historyStore:this.options.historyStore}:{},...this.options.tenantId?{tenantId:this.options.tenantId}:{},siteId:this.options.siteId,snapshotId:this.options.snapshotId,...this.options.initialDocumentVersions?{initialDocumentVersions:this.options.initialDocumentVersions}:{}})}};function CR(e,t){return e.after===void 0?{path:e.path,operation:"delete",...t||e.before===void 0?{}:{expectedHash:be(e.before)}}:{path:e.path,operation:e.before===void 0?"create":"update",...t||e.before===void 0?{}:{expectedHash:be(e.before)},fullContent:e.after}}function RR(e){return new es(e)}import{SiteEditOperationRequestSchema as PR}from"@vcp-dev/contracts";import It from"node:fs/promises";import Ye from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as wR,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as NR}from"@vcp-dev/contracts";var ts=class{constructor(t){this.options=t,this.fileSystem=this.createFileSystem(),this.engine=po({...t,fileSystem:this.fileSystem})}get status(){return this.engine.status}registerComposition(t,n){this.engine.registerComposition(t,n)}unregisterComposition(t){this.engine.unregisterComposition(t)}getDocument(t){return this.engine.getDocument(t)}getAffectedCompositions(t){return this.engine.getAffectedCompositions(t)}getCompositionContext(t){return this.engine.getCompositionContext(t)}initializeComposition(t){return this.engine.initializeComposition(t)}getHistoryStatus(){return this.engine.getHistoryStatus()}getObjectEditContext(t,n,r){return r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n)}getRenderDetail(t,n){return this.engine.getRenderDetail(t,n)}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(t){return Ao(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.engine.getCompositionEntryFiles()})}getSourceFile(t){return To(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.engine.getCompositionEntryFiles()})}resolveSourceLocation(t){return Fo(t,this.engine.getRenderDetail(t.key,t.composition))}refreshSourceForKey(t,n){return this.engine.refreshSourceForKey(t,n)}execute(t){return this.engine.execute(t)}undo(t){return this.engine.undo(t)}redo(t){return this.engine.redo(t)}notifyFileChanged(t){this.engine.notifyFileChanged(t)}subscribe(t){return this.engine.subscribe(t)}dispose(){this.engine.dispose()}createFileSystem(){if(this.options.fileSystem)return this.options.fileSystem;let t=new Map,{projectRoot:n}=this.options;return{async readFile(r){return It.readFile(Ye.join(n,r),"utf8")},async readFileBytes(r){return It.readFile(Ye.join(n,r))},async getFileInfo(r){let o=Ye.join(n,...r.split("/"));try{let i=await It.lstat(o);return!i.isFile()||i.isSymbolicLink()?null:{path:r,sizeBytes:i.size}}catch{return null}},async writeFile(r,o){await Zo(Ye.join(n,r),o)},async createExclusive(r,o){let i=Ye.join(n,r);await It.mkdir(Ye.dirname(i),{recursive:!0});let s=await It.open(i,"wx");try{await s.writeFile(o,"utf8")}catch(a){throw await s.close(),await It.rm(i,{force:!0}),a}await s.close()},async deleteFile(r){await It.rm(Ye.join(n,r),{force:!0});let o=r.replace(/\\/g,"/"),i=["components/site/generated","src/components/site/generated"].find(c=>o.startsWith(`${c}/`));if(!i)return;let s=Ye.join(n,i),a=Ye.dirname(Ye.join(n,o));for(;a!==s&&a.startsWith(`${s}${Ye.sep}`);){try{await It.rmdir(a)}catch(c){if(c instanceof Error&&"code"in c&&c.code==="ENOENT"){a=Ye.dirname(a);continue}break}a=Ye.dirname(a)}},async exists(r){try{return await It.access(Ye.join(n,r)),!0}catch{return!1}},async listFiles(r={}){let o=r.roots??[...NR,...wR],i=[],s=new Set,a=new Set,c=0;for(let f of o)await u(f,i,1);let l=i.sort((f,m)=>f.path.localeCompare(m.path));return a.size>0?{files:l,truncated:{reasons:[...a]}}:{files:l};async function u(f,m,d){if(r.maxDepth!==void 0&&d>r.maxDepth){a.add("max-depth");return}let g=Ye.join(n,...f.split("/")),h;try{h=await It.lstat(g)}catch{return}if(h.isSymbolicLink())return;if(h.isFile()){let E=h.ino>0?`${String(h.dev)}:${String(h.ino)}`:null;if(E&&s.has(E))return;if(r.maxFiles!==void 0&&m.length>=r.maxFiles){a.add("max-files");return}if(r.maxTotalBytes!==void 0&&c+h.size>r.maxTotalBytes){a.add("max-total-bytes");return}E&&s.add(E),m.push({path:f,sizeBytes:h.size}),c+=h.size;return}if(!h.isDirectory())return;if(r.maxFiles!==void 0&&m.length>=r.maxFiles){a.add("max-files");return}let S=await It.readdir(g,{withFileTypes:!0});for(let E of S)E.isSymbolicLink()||await u(`${f}/${E.name}`,m,d+1)}},getVersion(r){return t.get(r)??1},bumpVersion(r){let o=(t.get(r)??1)+1;return t.set(r,o),o}}}};function ol(e){return new ts(e)}var ns=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=ol({projectRoot:t.projectRoot,fileSystem:t.fileSystem,compositions:t.compositions,onEvent:n=>{let r=No(n,{siteId:t.siteId,snapshotId:t.snapshotId});if(r){t.onEvent?.(r);for(let o of this.listeners)o(r)}},dev:t.dev,...t.historyStore?{historyStore:t.historyStore}:{},...t.tenantId?{tenantId:t.tenantId}:{},...t.initialDocumentVersions!==void 0?{initialDocumentVersions:t.initialDocumentVersions}:{},siteId:t.siteId,snapshotId:t.snapshotId})}get status(){return this.engine.status}initializeComposition(t){return this.engine.initializeComposition(t)}registerComposition(t,n){this.engine.registerComposition(t,n)}unregisterComposition(t){this.engine.unregisterComposition(t)}getDocument(t){return{ok:!0,composition:this.engine.getCompositionContext(t),data:Ro(this.engine.getDocument(t),{siteId:this.options.siteId,snapshotId:this.options.snapshotId})}}getInternalDocument(t){return this.engine.getDocument(t)}getStyleContext(t){return{ok:!0,composition:this.engine.getCompositionContext(t),data:this.engine.getDocument(t).styleContext??null}}async getHistoryStatus(){return{ok:!0,composition:this.options.compositions[0].context,data:await this.engine.getHistoryStatus()}}getObjectEditContext(t,n,r){return{ok:!0,composition:this.engine.getCompositionContext(n),data:wo(r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n))}}getClassNameSource(t,n){return{ok:!0,composition:this.engine.getCompositionContext(n),data:this.engine.getClassNameSource(t,n)}}async getSourceTree(t){return{ok:!0,composition:this.engine.getCompositionContext(t),data:await this.engine.getSourceTree(t)}}async getSourceFile(t){return{ok:!0,composition:this.engine.getCompositionContext(t.composition),data:await this.engine.getSourceFile(t)}}resolveSourceLocation(t){return{ok:!0,composition:this.engine.getCompositionContext(t.composition),data:this.engine.resolveSourceLocation(t)}}refreshSourceForKey(t,n){return this.engine.refreshSourceForKey(t,n)}async executeOperation(t,n){let r=n===void 0||t.mutationContext!==void 0?t:{...t,mutationContext:n},o=PR.safeParse(r);if(!o.success)return Co(t,o.error.issues.map(s=>s.message));let i=await this.engine.execute(o.data);if(!i.ok){let s=i.error;if(!s)throw new Error("executeOperation failed without an error payload");return{ok:!1,composition:i.composition,error:{code:s.code,message:s.message,...s.details?{details:s.details}:{}},data:{requestId:i.requestId,kind:i.kind,composition:i.composition,target:i.target,resultVersion:i.resultVersion,...i.affectedFiles?.length?{affectedFiles:i.affectedFiles}:{}}}}return{ok:!0,composition:i.composition,data:dn(i)}}async undo(t){let n=await this.engine.undo();if(!n.ok){let r=n.error;if(!r)throw new Error("undo failed without an error payload");return{ok:!1,composition:n.composition,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,composition:n.composition,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,composition:n.composition,data:dn(n)}}async redo(t){let n=await this.engine.redo();if(!n.ok){let r=n.error;if(!r)throw new Error("redo failed without an error payload");return{ok:!1,composition:n.composition,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,composition:n.composition,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,composition:n.composition,data:dn(n)}}notifyFileChanged(t){this.engine.notifyFileChanged(t)}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}dispose(){this.listeners.clear(),this.engine.dispose()}};function AR(e){return new ns(e)}import{createHash as TR,randomUUID as hl}from"node:crypto";import Pe from"node:fs/promises";import Te from"node:path";var xt=1,sl=1,FR=2,_R="index.json",OR="recovery.json",MR="transaction-journal.json",DR="document-version.json",os={maxEntries:100,maxSessionBytes:512*1024*1024,maxEntryBytes:128*1024*1024},Q={INVALID_ROOT:"INVALID_ROOT",INVALID_PATH:"INVALID_PATH",INVALID_SCHEMA:"INVALID_SCHEMA",INVALID_JSON:"INVALID_JSON",INDEX_CORRUPT:"INDEX_CORRUPT",ENTRY_CORRUPT:"ENTRY_CORRUPT",BLOB_CORRUPT:"BLOB_CORRUPT",RECOVERY_PENDING:"RECOVERY_PENDING",CAPACITY_EXCEEDED:"CAPACITY_EXCEEDED",NOT_FOUND:"NOT_FOUND"},te=class extends Error{constructor(t,n,r){super(n),this.name="FileHistoryStoreError",this.code=t,r?.cause!==void 0&&(this.cause=r.cause)}};async function Mg(e,t={}){let n=YR(e),r=qR(t.limits),o=il(n),i=ZR(n),s=await qe(i),a=await qe(o)||s;a||(await UR(n),await KR(n)),a||await ew(n);let c=await st(n),l=new Set(a?(await ls(n)).map(f=>f.stageId):[]);a||await mo(n,c.entryIds);let u=async()=>{if(await qe(o)||s)throw new te(Q.RECOVERY_PENDING,"history store requires explicit recovery before accepting writes")};return{rootDir:n,recoveryRequired:a,async readDocumentVersion(){return _g(n)},async writeDocumentVersion(f){if(await u(),!Number.isInteger(f)||f<0)throw new te(Q.INVALID_SCHEMA,"document version must be a non-negative integer");let m=await _g(n);await go(Ug(n),{schemaVersion:1,version:Math.max(m,f)})},async stageAppend(f,m={}){await u();let d=await wg(f,r),g={schemaVersion:sl,stageId:hl(),entryId:d.entryId,blobIds:d.blobs.map(h=>h.digest)};try{await Ng(n,d),await $R(n,g,m.durableManifest!==!1)}catch(h){try{await Ag(n,g)}catch(S){throw new te(Q.INDEX_CORRUPT,"staged history cleanup failed after preparation error",{cause:S})}throw h}return{stageId:g.stageId,entryId:g.entryId,blobIds:g.blobIds}},async discardStage(f){await u(),ul(f);let m=await cl(n,f);m&&await Ag(n,m)},async previewStagedAppend(f,m){return await u(),(await Rg(n,r,f,m)).transition},async previewCursor(f,m){await u();let d=await st(n);return dl(d,m),al(f,d.entryIds.length),Dg(d,d.entryIds,f)},async publishStagedAppend(f,m,d){if(await u(),is(f,"entryId"),d){ul(d);let h=await cl(n,d);if(!h||h.entryId!==f)throw new te(Q.INVALID_SCHEMA,"history stage does not match the published entry")}let g=await Rg(n,r,f,m);return Fg({rootDir:n,previousDigest:g.current.digest,entryIds:g.entryIds,cursor:g.cursor,afterWrite:async()=>{d?await ss(n,d):await VR(n,f),await mo(n,g.entryIds)}})},async append(f){await u();let m=await st(n),d=await wg(f,r),g=[...m.entryIds];m.cursor<g.length-1&&g.splice(m.cursor+1),g.push(d.entryId);try{await Ng(n,d);let h=await Lg(n,g,r);return await xl(n,h.entryIds,h.cursor),await mo(n,h.entryIds),st(n)}catch(h){throw await mo(n,m.entryIds),h}},async readEntry(f){return is(f,"entryId"),yo(n,f)},async readBlob(f){is(f,"blobId");let m=await Rl(n,f),d=await cn(m,Q.NOT_FOUND,"blob");return bl(d,f,m),d},async readIndex(){return st(n)},async readStatus(){let f=await st(n);return{canUndo:f.undoIds.length>0,canRedo:f.redoIds.length>0,undoDepth:f.undoIds.length,redoDepth:f.redoIds.length,cursor:f.cursor,recoveryRequired:await qe(o)||await qe(i)}},async readUndoRedoIds(){let f=await st(n);return{undoIds:f.undoIds,redoIds:f.redoIds,currentId:f.currentId}},async setCursor(f,m){await u();let d=await st(n);return dl(d,m),al(f,d.entryIds.length),Fg({rootDir:n,previousDigest:d.digest,entryIds:d.entryIds,cursor:f})},async markRecoveryRequired(f){await qe(o)||await go(il(n),{schemaVersion:xt,reason:QR(f),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await Pe.rm(il(n),{force:!0})},async readTransactionJournal(){return await qe(i)?rs(i):null},async writeTransactionJournal(f){await u(),Kg(f);try{await go(i,f)}catch(d){let g=await rs(i).catch(()=>null);if(g&&Buffer.from(at(g)).equals(Buffer.from(at(f))))return;throw g?new te(Q.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous",{cause:d}):d}let m=await rs(i);if(!Buffer.from(at(m)).equals(Buffer.from(at(f))))throw new te(Q.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous")},async clearTransactionJournal(f){let m=await qe(i)?await rs(i):null;if(m&&m.transactionId!==f)throw new te(Q.INVALID_SCHEMA,"transaction journal changed concurrently");try{await Pe.rm(i,{force:!0})}catch(d){if(!await qe(i))return;throw d}if(await qe(i))throw new te(Q.INDEX_CORRUPT,"transaction journal clear outcome is ambiguous");s=!1},async cleanupTmp(){await u();for(let m of l)await ss(n,m),l.delete(m);await JR(n);let f=await st(n);await mo(n,f.entryIds)}}}async function Rg(e,t,n,r){is(n,"entryId");let o=await st(e);dl(o,r);let i=await yo(e,n),s=[...o.entryIds];o.cursor<s.length-1&&s.splice(o.cursor+1),s.push(i.id);let a=await Lg(e,s,t);return{current:o,entryIds:a.entryIds,cursor:a.cursor,transition:Dg(o,a.entryIds,a.cursor)}}function Dg(e,t,n){return al(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:LR(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function LR(e,t){return ln(at({schemaVersion:xt,entryIds:e,cursor:t}))}function al(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new te(Q.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function BR(e){if(!Ct(e))return!1;let t=e.publishedCursor,n=e.publishedCurrentId;return!ct(e.expectedIndexDigest)||!ct(e.publishedIndexDigest)||!Number.isInteger(t)||t<-1||n!==null&&!ct(n)?!1:t===-1?n===null:ct(n)}async function wg(e,t){if(!e.kind.trim())throw new te(Q.INVALID_JSON,"history entry kind must not be empty");let n=[],r=[];for(let c of e.blobs??[]){if(!c.name.trim())throw new te(Q.INVALID_JSON,"history blob name must not be empty");let l=GR(c.data),u=ln(l);n.push({name:c.name,bytes:l,digest:u,sizeBytes:l.byteLength}),r.push({name:c.name,digest:u,sizeBytes:l.byteLength})}let o={schemaVersion:xt,kind:e.kind,manifest:e.manifest,blobs:r},i=at({...o}),s=ln(i),a=i.byteLength+n.reduce((c,l)=>c+l.sizeBytes,0);if(a>t.maxEntryBytes)throw new te(Q.CAPACITY_EXCEEDED,`history entry exceeds maxEntryBytes (${a} > ${t.maxEntryBytes})`);return{entryBody:o,entryId:s,blobs:n}}async function Ng(e,t){let n=vl(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Pg(kl(e,a.digest),a.bytes,{kind:"blob",digest:a.digest},Cl(e,a.digest))),Pg(n,at(r),{kind:"entry",digest:t.entryId},Il(e,t.entryId))],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Pg(e,t,n,r){let o=await ml(e)??(r?await ml(r):null);if(o!==null){if(Buffer.compare(o,t)!==0)throw new te(n.kind==="blob"?Q.BLOB_CORRUPT:Q.ENTRY_CORRUPT,`${n.kind} content mismatch for ${n.digest}`);return}await jg(e,t)}async function Lg(e,t,n){let r=[...t],o=r.length-1;for(;;){if((await $g(e,r)).totalBytes<=n.maxSessionBytes&&r.length<=n.maxEntries)return{entryIds:r,cursor:o};if(o<=0||r.length===0)throw new te(Q.CAPACITY_EXCEEDED,"history store exceeds capacity limits and the current entry cannot be trimmed");r.shift(),o-=1}}async function $R(e,t,n){yl(t);let r=El(e,t.stageId);if(n){await go(r,t);return}await WR(r,t)}async function cl(e,t){let n=await ml(El(e,t));if(n===null)return null;let r=xo(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=yl(r);if(o.stageId!==t)throw new te(Q.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function ls(e){let t=[];for(let n of await cs(Sl(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);ul(r);let o=await cl(e,r);o&&t.push(o)}return t}async function Ag(e,t){yl(t);let n=await st(e),r=(await ls(e)).filter(s=>s.stageId!==t.stageId),o=new Set(n.entryIds),i=new Set;for(let s of n.entryIds){let a=await yo(e,s);for(let c of a.blobs)i.add(c.digest)}for(let s of r){o.add(s.entryId);for(let a of s.blobIds)i.add(a)}o.has(t.entryId)||await Tg(vl(e,t.entryId),Il(e,t.entryId));for(let s of t.blobIds)i.has(s)||await Tg(kl(e,s),Cl(e,s));await ss(e,t.stageId),await gl(bo(e)),await gl(So(e))}async function ss(e,t){await ll(El(e,t)),await jR(e)}async function jR(e){try{await Pe.rmdir(Sl(e))}catch(t){if(Eo(t)||Ct(t)&&t.code==="ENOTEMPTY")return;throw t}}async function VR(e,t){for(let n of await ls(e))n.entryId===t&&await ss(e,n.stageId)}async function ll(e){if(await Pe.rm(e,{force:!0}),await qe(e))throw new te(Q.INDEX_CORRUPT,`unable to remove staged history object: ${e}`)}async function Tg(e,t){await ll(e),await ll(t)}function yl(e){if(!Ct(e)||e.schemaVersion!==sl||typeof e.stageId!="string"||!Bg(e.stageId)||!ct(e.entryId))throw new te(Q.INVALID_SCHEMA,"history stage schema is invalid");let t=Vg(e.blobIds,"history stage blobIds");return{schemaVersion:sl,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function ul(e){if(!Bg(e))throw new te(Q.INVALID_PATH,"history stageId must be a UUID")}function Bg(e){return typeof e=="string"&&/^[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/iu.test(e)}async function mo(e,t){let n=new Set(t),r=new Set;for(let c of t){let l=await yo(e,c);for(let u of l.blobs)r.add(u.digest)}for(let c of await ls(e)){n.add(c.entryId);for(let l of c.blobIds)r.add(l)}let o=bo(e),i=await cs(o);for(let c of i){if(!c.endsWith(".json"))continue;let l=Og(c.slice(0,-5));l&&!n.has(l)&&await as(Te.join(o,c))}let s=So(e),a=await cs(s);for(let c of a){let l=Og(c);l&&!r.has(l)&&await as(Te.join(s,c))}}async function st(e){let t=us(e),n=await cn(t,Q.NOT_FOUND,"index"),r=xo(Buffer.from(n).toString("utf8"),"index"),o=XR(r),i=[...o.entryIds],{totalBytes:s}=await $g(e,i),a=i.slice(0,o.cursor+1).reverse(),c=i.slice(o.cursor+1);return{schemaVersion:xt,digest:o.digest,entryIds:i,cursor:o.cursor,currentId:i[o.cursor]??null,undoIds:a,redoIds:c,totalBytes:s}}async function $g(e,t){let n=0,r=new Set,o=us(e),i=await cn(o,Q.NOT_FOUND,"index");n+=i.byteLength;for(let s of t){let a=await yo(e,s),c=await Jg(e,s),l=await cn(c,Q.NOT_FOUND,"entry");n+=l.byteLength;for(let u of a.blobs){if(r.has(u.digest))continue;r.add(u.digest);let f=await Rl(e,u.digest),m=await cn(f,Q.NOT_FOUND,"blob");bl(m,u.digest,f),n+=m.byteLength}}return{totalBytes:n}}async function yo(e,t){let n=await Jg(e,t),r=await cn(n,Q.NOT_FOUND,"entry"),o=xo(Buffer.from(r).toString("utf8"),`entry ${t}`),i=zR(o);if(i.id!==t)throw new te(Q.ENTRY_CORRUPT,`entry id mismatch for ${t}`);if(ln(at({schemaVersion:i.schemaVersion,kind:i.kind,manifest:i.manifest,blobs:i.blobs}))!==t)throw new te(Q.ENTRY_CORRUPT,`entry hash mismatch for ${t}`);for(let a of i.blobs){let c=await Rl(e,a.digest),l=await cn(c,Q.NOT_FOUND,"blob");bl(l,a.digest,c)}return i}async function xl(e,t,n){let r={schemaVersion:xt,digest:ln(at({schemaVersion:xt,entryIds:t,cursor:n})),entryIds:t,cursor:n};await go(us(e),r)}function dl(e,t){if(t!==void 0&&e.digest!==t)throw new te(Q.INVALID_SCHEMA,`history index changed concurrently (expected ${t}, current ${e.digest})`)}async function Fg(e){let t=ln(at({schemaVersion:xt,entryIds:e.entryIds,cursor:e.cursor}));try{return await xl(e.rootDir,e.entryIds,e.cursor),await e.afterWrite?.(),await st(e.rootDir)}catch(n){let r=await st(e.rootDir).catch(()=>null);if(r?.digest===t)return r;throw r?.digest===e.previousDigest?n:new te(Q.INDEX_CORRUPT,"history index publish outcome is ambiguous",{cause:n})}}async function UR(e){await Pe.mkdir(e,{recursive:!0}),await Pe.mkdir(bo(e),{recursive:!0}),await Pe.mkdir(So(e),{recursive:!0}),await Pe.mkdir(ho(e),{recursive:!0})}async function KR(e){await Pe.rm(ho(e),{recursive:!0,force:!0}),await Pe.mkdir(ho(e),{recursive:!0})}async function JR(e){let t=ho(e);await Pe.mkdir(t,{recursive:!0});for(let n of await cs(t))n!=="stages"&&await Pe.rm(Te.join(t,n),{recursive:!0,force:!0})}function XR(e){if(!Ct(e))throw new te(Q.INDEX_CORRUPT,"index.json must be an object");if(e.schemaVersion!==xt)throw new te(Q.INVALID_SCHEMA,`unsupported index schemaVersion: ${String(e.schemaVersion)}`);let t=Vg(e.entryIds,"index.entryIds"),n=e.cursor;if(!Number.isInteger(n)||n<-1||n>=t.length)throw new te(Q.INDEX_CORRUPT,"index cursor is out of bounds");let r=n,o=e.digest;if(!ct(o))throw new te(Q.INDEX_CORRUPT,"index digest is invalid");let i=ln(at({schemaVersion:xt,entryIds:t,cursor:r}));if(o!==i)throw new te(Q.INDEX_CORRUPT,"index digest mismatch");return{schemaVersion:xt,digest:o,entryIds:t,cursor:r}}function zR(e){if(!Ct(e))throw new te(Q.ENTRY_CORRUPT,"entry must be an object");if(e.schemaVersion!==xt)throw new te(Q.INVALID_SCHEMA,`unsupported entry schemaVersion: ${String(e.schemaVersion)}`);let t=e.id;if(!ct(t))throw new te(Q.ENTRY_CORRUPT,"entry id is invalid");let n=e.kind;if(typeof n!="string"||n.trim().length===0)throw new te(Q.ENTRY_CORRUPT,"entry kind is invalid");let r=pl(e.manifest,"entry.manifest"),o=HR(e.blobs);return{id:t,schemaVersion:xt,kind:n,manifest:r,blobs:o}}function HR(e){if(!Array.isArray(e))throw new te(Q.ENTRY_CORRUPT,"entry blobs must be an array");return e.map((t,n)=>{if(!Ct(t))throw new te(Q.ENTRY_CORRUPT,`entry blob ref ${n} must be an object`);let r=t.name;if(typeof r!="string"||r.trim().length===0)throw new te(Q.ENTRY_CORRUPT,`entry blob ref ${n} name is invalid`);let o=t.digest;if(!ct(o))throw new te(Q.ENTRY_CORRUPT,`entry blob ref ${n} digest is invalid`);let i=t.sizeBytes;if(!Number.isInteger(i)||i<0)throw new te(Q.ENTRY_CORRUPT,`entry blob ref ${n} sizeBytes is invalid`);return{name:r,digest:o,sizeBytes:i}})}async function go(e,t){await jg(e,at(t))}async function WR(e,t){let n=Te.dirname(e),r=Te.basename(e),o=Te.join(n,`.${r}.${process.pid}.${hl()}.tmp`);await Pe.mkdir(n,{recursive:!0});try{await Pe.writeFile(o,at(t),{flag:"wx"}),await Pe.rename(o,e)}finally{await as(o)}}async function jg(e,t){let n=Te.dirname(e),r=Te.basename(e),o=Te.join(n,`.${r}.${process.pid}.${hl()}.tmp`);await Pe.mkdir(n,{recursive:!0});try{let i=await Pe.open(o,"wx");try{await i.writeFile(t),await i.sync()}finally{await i.close()}await Pe.rename(o,e),await gl(n)}finally{await as(o)}}function at(e){return Buffer.from(JSON.stringify(fl(e)),"utf8")}function fl(e){if(Array.isArray(e))return e.map(t=>fl(t));if(Ct(e)){let t={};for(let n of Object.keys(e).sort())t[n]=fl(e[n]);return t}return e}function xo(e,t){try{return JSON.parse(e)}catch(n){throw new te(Q.INVALID_JSON,`${t} is not valid JSON`,{cause:n})}}function pl(e,t){if(e===null)return null;switch(typeof e){case"boolean":case"number":case"string":return e;case"object":if(Array.isArray(e))return e.map(n=>pl(n,t));if(Ct(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=pl(o,t);return n}break}throw new te(Q.INVALID_JSON,`${t} must be JSON-serializable`)}function Vg(e,t){if(!Array.isArray(e))throw new te(Q.INDEX_CORRUPT,`${t} must be an array`);return e.map((n,r)=>{if(!ct(n))throw new te(Q.INDEX_CORRUPT,`${t}[${r}] is invalid`);return n})}function is(e,t){if(!ct(e))throw new te(Q.INVALID_PATH,`${t} must be a sha256 digest`)}function ct(e){return typeof e=="string"&&/^sha256:[a-f0-9]{64}$/u.test(e)}function ln(e){return`sha256:${TR("sha256").update(e).digest("hex")}`}function GR(e){return typeof e=="string"?Buffer.from(e,"utf8"):Buffer.from(e)}async function cn(e,t,n){try{return await Pe.readFile(e)}catch(r){throw new te(t,`${n} not found: ${e}`,{cause:r})}}async function ml(e){try{return await Pe.readFile(e)}catch(t){if(Eo(t))return null;throw t}}function bl(e,t,n){if(ln(e)!==t)throw new te(Q.BLOB_CORRUPT,`blob hash mismatch for ${n}`)}async function qe(e){try{return await Pe.access(e),!0}catch(t){if(Eo(t))return!1;throw t}}async function as(e){try{await Pe.rm(e,{force:!0,recursive:!0})}catch{}}async function gl(e){try{let t=await Pe.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function cs(e){try{return await Pe.readdir(e)}catch(t){if(Eo(t))return[];throw t}}function YR(e){if(typeof e!="string"||e.trim().length===0)throw new te(Q.INVALID_ROOT,"history store rootDir must be a non-empty string");return Te.resolve(e)}function us(e){return Te.join(e,_R)}function il(e){return Te.join(e,OR)}function ZR(e){return Te.join(e,MR)}function Ug(e){return Te.join(e,DR)}async function _g(e){try{let t=await Pe.readFile(Ug(e),"utf8"),n=xo(t,"document version");if(!Ct(n)||n.schemaVersion!==1||!Number.isInteger(n.version)||n.version<0)throw new te(Q.INVALID_SCHEMA,"document version schema is invalid");return n.version}catch(t){if(Eo(t))return 0;throw t}}async function rs(e){let t=await cn(e,Q.RECOVERY_PENDING,"transaction journal"),n=xo(Buffer.from(t).toString("utf8"),"transaction journal");return Kg(n),n}function Kg(e){if(!Ct(e)||e.schemaVersion!==FR||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!BR(e.historyTransition)||!Array.isArray(e.files))throw new te(Q.INVALID_SCHEMA,"transaction journal schema is invalid");for(let t of e.files)if(!Ct(t)||typeof t.path!="string"||t.path.length===0||t.preDigest!==null&&!ct(t.preDigest)||t.postDigest!==null&&!ct(t.postDigest))throw new te(Q.INVALID_SCHEMA,"transaction journal file digest is invalid")}function QR(e){return e.replace(/[\r\n]+/g," ").slice(0,512)}function bo(e){return Te.join(e,"entries")}function So(e){return Te.join(e,"blobs")}function ho(e){return Te.join(e,"tmp")}function Sl(e){return Te.join(ho(e),"stages")}function El(e,t){return Te.join(Sl(e),`${t}.json`)}function vl(e,t){return Te.join(bo(e),`${zg(t)}.json`)}function kl(e,t){return Te.join(So(e),zg(t))}function Il(e,t){return Te.join(bo(e),`${t}.json`)}function Cl(e,t){return Te.join(So(e),t)}async function Jg(e,t){return Xg(vl(e,t),Il(e,t))}async function Rl(e,t){return Xg(kl(e,t),Cl(e,t))}async function Xg(e,t){return await qe(e)?e:await qe(t)?t:e}function zg(e){return e.slice(7)}function Og(e){let t=e.startsWith("sha256:")?e:`sha256:${e}`;return ct(t)?t:null}function Ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Eo(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function qR(e){return{maxEntries:e?.maxEntries??os.maxEntries,maxSessionBytes:e?.maxSessionBytes??os.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??os.maxEntryBytes}}async function ew(e){let t=us(e);await qe(t)||await xl(e,[],-1)}export{te as FileHistoryStoreError,Mr as PageTemplateManagedSourceError,ns as PreviewFileSystemSiteEditEngineRuntime,ld as SITE_EDIT_RAW_COLOR_LITERAL_RE,es as SnapshotSiteEditEngineRuntime,Qd as computeManagedPageTemplatePaths,AR as createPreviewSiteEditEngineRuntime,RR as createSiteEditEngineRuntime,Gd as decodePageTemplateKey,Aa as encodePageTemplateId,qd as isManagedPageTemplateSourcePath,Mg as openFileHistoryStore,wE as resolveManagedPageTemplateComposition,hi as scanManagedPageTemplateCandidates,tf as scanSiteEditCompositionsFromFiles,Pr as scanSiteEditThemeStyleViolations};
12
+ `||m==="\r"))return fr(t,`Unterminated string literal in ${t}.`);l=m===`
13
+ `||m==="\r";continue}if(m==="/"&&u==="*"){s=!0,f+=1,l=!1;continue}if(n==="mdx"&&m==="/"&&u==="/"){a=!0,f+=1,l=!1;continue}if(m==="'"||m==='"'||n==="mdx"&&m==="`"){o=m,l=!1;continue}if(m==="{"||m==="("||m==="["){r.push({char:m,offset:f}),l=!1;continue}if(m==="}"||m===")"||m==="]"){let g=m==="}"?"{":m===")"?"(":"[",h=r.pop();if(!h||h.char!==g)return fr(t,`Unexpected closing token "${m}" in ${t}.`);l=!1;continue}l=m===`
14
+ `||m==="\r"}if(s)return fr(t,`Unterminated block comment in ${t}.`);if(o)return fr(t,`Unterminated string literal in ${t}.`);if(c)return fr(t,`Unterminated MDX code fence in ${t}.`);let d=r.at(-1);return d?fr(t,`Unclosed token "${d.char}" in ${t}.`):{ok:!0}}function fr(e,t){return{ok:!1,errorCode:"ast-error",message:t,details:{path:e}}}function go(e){let t="idle",n=e.fileSystem??qC(),r=Ku(),o=rg({compositions:e.compositions,initialDocumentVersions:e.initialDocumentVersions}),i=new Map,s=new Map,a=new Set,c=null,l=e.history??(e.historyStore?od(e.historyStore):eR()),d=tg(n,{externalAdapters:e.externalAdapters}),f=new Map,m=new Set,u=0,g=e.historyStore?.recoveryRequired??!1,h=qc(),b=R();function E(p){return(es.isAbsolute(p)?es.relative(e.projectRoot,p):p).replace(/\\/g,"/").replace(/^\.\//,"")}function v(p,y){let x=es.posix.dirname(p),k=y.replace(/\.(?:tsx?|jsx?)$/i,""),N=es.posix.relative(x,k);return N.startsWith(".")?N:`./${N}`}function I(p,y){return p.startLine===y.startLine&&p.startColumn===y.startColumn&&p.endLine===y.endLine&&p.endColumn===y.endColumn}async function R(){let p=e.historyStore;if(p)try{let y=await p.readTransactionJournal();if(!y)return;let x=await p.readIndex(),k=await Promise.all(y.files.map(async O=>await n.exists(O.path)?ve(await n.readFile(O.path)):null));if(mg({journal:y,index:x,observedFileDigests:k})!=="ambiguous"){await p.clearTransactionJournal(y.transactionId);let O=await p.readStatus();O.recoveryRequired||(await p.cleanupTmp(),O=await p.readStatus()),g=O.recoveryRequired;return}await p.markRecoveryRequired(`Ambiguous transaction journal ${y.transactionId} at phase ${y.phase}`),g=!0}catch(y){g=!0,await p.markRecoveryRequired(`Transaction journal recovery failed: ${Ge(y)}`).catch(()=>{})}}function P(){return t==="disposed"}e.onEvent&&r.subscribe(e.onEvent);for(let p of o.entries){let y=bg(p.context,p.entryFile);i.set(p.key,y),T(y,y.dependencyFiles)}function T(p,y){let x=new Set(y);C(p),p.dependencyFiles=x;for(let k of p.dependencyFiles){let N=s.get(k);N||(N=new Set,s.set(k,N)),N.add(p.key)}}function C(p){for(let y of p.dependencyFiles){let x=s.get(y);x&&(x.delete(p.key),x.size===0&&s.delete(y))}p.dependencyFiles.clear()}function A(p){let y=new Set;for(let x of p)for(let k of s.get(x)??[])y.add(k);return y}function F(p){for(let y of p)if(!s.has(y))return!1;return!0}async function M(p,y,x,k,N){let O=new Map,D=Em(N.values()),z=new Map,L=typeof n.exists=="function"?V=>n.exists(V):async()=>!1;for(let[V,j]of p.elements){let ce=y.nodes.get(V);if(!ce)continue;let re=x.get(j.sourceFile)??k.get(j.sourceFile),be=new Map,Se=new Map,Ie=new Map,Ce=[];for(let Ee of j.textSegments){if(!re){be.set(Ee.index,null);continue}let mr=await vm({file:j.sourceFile,source:re,segment:Ee,readFile:tt=>n.readFile(tt),exists:L,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:tt,adapterId:un,capabilities:bs})=>({sourceType:tt,adapterId:un,capabilities:bs})),functionCallContracts:e.functionCallContracts,fileCache:D}),We=await Kc({file:j.sourceFile,source:re,target:{kind:"text-segment",segment:Ee},readFile:tt=>n.readFile(tt),exists:L,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:tt,adapterId:un,capabilities:bs})=>({sourceType:tt,adapterId:un,capabilities:bs})),functionCallContracts:e.functionCallContracts,fileCache:D}),dt=uR(mr);be.set(Ee.index,dt),Se.set(Ee.index,mr),Ie.set(Ee.index,We),Ce.push({editable:Ee.editable,source:dt})}let _=new Map,U=new Map;if(re)for(let Ee of j.attributes??[]){let mr=await ur({file:j.sourceFile,source:re,sourceRange:Ee.sourceRange,expression:Ee.source?.expression??Ee.value,sourceInfo:Ee.source,readFile:dt=>n.readFile(dt),exists:L,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:dt,adapterId:tt,capabilities:un})=>({sourceType:dt,adapterId:tt,capabilities:un})),functionCallContracts:e.functionCallContracts,fileCache:D}),We=await Am({element:j,file:j.sourceFile,source:re,propertyName:Ee.name,readFile:dt=>n.readFile(dt),exists:L,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:dt,adapterId:tt,capabilities:un})=>({sourceType:dt,adapterId:tt,capabilities:un})),functionCallContracts:e.functionCallContracts,fileCache:D});U.set(Ee.name,We),_.set(Ee.name,mr)}let te=Vm(dR(ce.writeTarget),Ce),ie=Tm({key:V,element:j,graph:p,provenances:Ie}),_e=zm(j),lt=re?await Cp({element:j,graph:p,file:j.sourceFile,source:re,readFile:Ee=>n.readFile(Ee),exists:L,fileCache:z}):void 0,ut=p.regions.find(Ee=>Ee.kind==="conditional-region"&&Ee.childKeys.includes(V)),pr,Je=ut?.sourceCandidates?.[0];if(re&&ut&&Je?.kind==="conditional-branch"){let Ee=await Kc({file:j.sourceFile,source:re,target:{kind:"conditional-branch",candidate:Je},readFile:We=>n.readFile(We),exists:L,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:We,adapterId:dt,capabilities:tt})=>({sourceType:We,adapterId:dt,capabilities:tt})),functionCallContracts:e.functionCallContracts,fileCache:D});pr={currentBranch:ut.childKeys.indexOf(V)<=0?"then":"else",availableBranches:ut.childKeys.length>1?["then","else"]:["then"],conditionExpression:Je.conditionExpression,provenance:{finalSource:Ee.finalSource?{kind:Ee.finalSource.kind,file:Ee.finalSource.file,displayPath:Ee.finalSource.displayPath}:null,chain:Ee.chain.map(We=>({kind:We.kind,file:We.file,displayName:We.displayName,canEditHere:We.canEditHere})),confidence:Ee.confidence,editMode:Ee.editMode,diagnostics:Ee.diagnostics.map(We=>({code:We.code,message:We.message}))}}}O.set(V,{textSources:be,textTargets:Se,elementPropertyTargets:_,propertyProvenances:U,isRepeat:AR(V,p),provenances:Ie,writeTarget:te,componentSemantic:ie,styleSource:_e,conditional:pr,dynamicData:lt})}return O}function K(p){return typeof n.getVersion=="function"?n.getVersion(p):0}function q(p,y){let x=o.initialVersions.get(p.key)??0;for(let k of y.values())x=Math.max(x,k);return Math.max(x,p.graph?.version??0)}function Re(p){return i.get(p)?.graph?.version??o.initialVersions.get(p)??0}function Z(p){try{return Re(o.resolveSelector(p.composition).key)}catch{return 0}}async function fe(p,y,x={}){let k=i.get(p);if(!k)return null;let N=x.sourceCache??nl(f,[]),O=await Te(k.entryFile),{graph:D,allSources:z,diagnostics:L,parsedModules:V,entryModule:j}=await Qu(k.entryFile,y,Je=>n.readFile(Je),typeof n.exists=="function"?Je=>n.exists(Je):async()=>!1,{additionalEntries:O,version:k.graph?.version??1});if(L.length>0)throw new fo(L);let ce=new Map;for(let Je of z.keys())ce.set(Je,K(Je));let re=Math.max(q(k,ce),x.minimumVersion??0);x.changed&&re<=(k.graph?.version??0)&&(re=(k.graph?.version??0)+1),D.version=re;for(let[Je,Ee]of z)rl(N,Je,Ee,hg);let be=await zt(k.composition,k.entryFile,z,N);D.routeId=k.routeId,D.composition=k.composition;let Se=Hm(D),Ie=Bu(Se,D),Ce=await M(D,Se,z,N,V),_=Zg(D,Ie,Ce),U=Yg(Ce),te=sg(Dm(D,Se,Ie,{canUpdateTextByKey:_,dynamicDataSummaryByKey:U}),D,Ce),ie=Vd({route:k.routeId,composition:k.composition,entryFile:k.entryFile,version:re,source:y,ast:j?.ast}),_e=Ud(ie);ie.ok&&hR(te,D,ie.projection,V);let lt={...te,composition:k.composition,...be?{styleContext:be}:{},pageComposition:_e},ut=new Set([k.entryFile,...z.keys()]);if(be){ut.add(be.entryCss.path);for(let Je of be.stylesheets)ut.add(Je.path)}let pr={...k,dependencyFiles:ut,graph:D,topology:Se,capabilities:Ie,document:lt,pageComposition:_e,pageCompositionProjection:ie.projection,pagePlacementByKey:ie.ok?ie.projection.placementByKey:null,pagePlacementUnitByKey:ie.ok?ie.projection.placementUnitByKey:null,pageUnitByKey:ie.ok?ie.projection.unitByKey:null,pagePlacementsByUnitKey:ie.ok?ie.projection.placementsByUnitKey:null,documentIndex:ig(lt),detailProjections:Ce,fileVersions:ce,styleContext:be};if(x.publish===!1)return pr;dr(f,N);for(let Je of N.keys())m.delete(Je);return T(k,ut),Object.assign(k,pr),k}async function Te(p){let y=[];for(let x of IR(p))typeof n.exists=="function"&&await n.exists(x)&&y.push({file:x,source:await n.readFile(x)});return y}async function zt(p,y,x,k){let N=[];for(let[V,j]of x){if(ol(V)){N.push(V);continue}for(let ce of RR(j)){let re=Cg(V,ce);re&&N.push(re)}}if(!N.length){for(let V of CR(y))if(await Nl(V)){N.push(V);break}}let O=new Map,D=PR(N).slice(0,gg);for(;D.length>0&&O.size<gg;){let V=D.shift();if(O.has(V)||!ol(V))continue;let j=await Ht(V,k);if(j!==null){O.set(V,{path:V,content:j});for(let ce of wR(j)){let re=Cg(V,ce);re&&!O.has(re)&&!D.includes(re)&&D.push(re)}}}let z=[...O.values()].map(V=>({...V,hash:ve(V.content)})),L=z[0];return L?{composition:p,revision:ve(JSON.stringify(z.map(({path:V,hash:j})=>({path:V,hash:j})))),entryCss:L,stylesheets:z.slice(1)}:null}async function Ht(p,y){let x=y.get(p);if(x!==void 0)return x;if(!await Nl(p))return null;let k=await n.readFile(p);return rl(y,p,k,hg),k}async function Nl(p){return typeof n.exists=="function"?n.exists(p):!1}function Yg(p){let y=new Map;for(let[x,k]of p)k.dynamicData?.bindings.length&&y.set(x,Dp(k.dynamicData.bindings));return y}function Zg(p,y,x){let k=new Map;for(let[N,O]of p.elements){if(!y.get(N)?.canUpdateText){k.set(N,!1);continue}let z=x.get(N),L=O.textSegments.some(V=>{if(!V.editable)return!1;let j=z?.provenances.get(V.index)??null;return!j||Qg(j)});k.set(N,L)}return k}function Qg(p){return p.editMode==="direct"||p.editMode==="proxy"||p.editMode==="upstream"}async function Io(p,y={}){let x=[...new Set(p)],k=y.affectedCompositionKeys!==void 0,N=k?new Set(y.affectedCompositionKeys):A(x);if(!k&&(N.size===0||!F(x)))for(let L of i.values())Pl(L,x)&&N.add(L.key);let O=!k&&N.size===0&&x.some(Ig),D=y.publish===!1?nl(f,x):void 0,z={rebuiltRoutes:[],failedRoutes:[],...y.publish===!1?{candidateRouteStates:[],candidateSourceCache:D}:{}};for(let L of i.values())if(!(y.excludedCompositionKeys?.has(L.key)||!(N.has(L.key)||O)))try{let j=!!L.graph,ce=await n.readFile(L.entryFile),re=await fe(L.key,ce,{...y,...D?{sourceCache:D}:{}});re?.graph&&(z.rebuiltRoutes.push({documentChanged:j,composition:L.composition,routeId:L.routeId,version:re.graph.version}),z.candidateRouteStates?.push({composition:L.composition,key:L.key,routeId:L.routeId,state:re}))}catch(j){z.failedRoutes.push({...fg(L.routeId,j),composition:L.composition})}return z}function Ln(p){let y=[...new Set(p)],x=A(y);if(x.size>0&&F(y))return[...x];for(let k of i.values())Pl(k,y)&&x.add(k.key);return[...x]}function qg(p){let y=new Set(Ln(p));return o.entries.filter(x=>y.has(x.key)).map(x=>x.context)}function eh(p){return[...new Set(Ln(p))].sort((x,k)=>x<k?-1:x>k?1:0).map(x=>o.getByKey(x)?.context).filter(x=>x!==void 0)}function th(p,y){let x=new Set(Ln(y)),k=p.provenance?.affectedCompositions??[];if(k.length===0)return x;if([...new Set(k.map(O=>o.resolveContext(O).key))].some(O=>!x.has(O)))throw new Error("History provenance does not match the affected composition index.");return x}function nh(p,y){let x=p.composition??p.provenance?.initiatingComposition;if(x){let O=o.resolveContext(x);return{context:O.context,key:O.key}}let k=[...new Set(Ln(y))];if(k.length!==1)throw new Error(`Legacy history entry cannot be attributed to a unique composition (affected composition count: ${k.length}).`);let N=o.getByKey(k[0]);if(!N)throw new Error("Legacy history entry references an unknown affected composition.");return{context:N.context,key:N.key}}function ps(p,y){r.emit({type:"operation-completed",composition:p.composition,result:p});for(let{composition:x,version:k}of y.rebuiltRoutes)r.emit({type:"document-changed",composition:x,version:k});for(let{composition:x,message:k}of y.failedRoutes)r.emit({type:"graph-error",composition:x,message:k})}function Pl(p,y){return y.some(x=>p.dependencyFiles.has(x)||p.entryFile===x||p.graph?.fileIndex.has(x))}function Al(p){for(let y of p)a.add(y);c||P()||(c=(async()=>{t="building";let y=!1;try{for(;a.size>0;){if(P())return;await rh();let x=[...a];a.clear();let k=await Tl(x);if(k.length===0)continue;let N=Ln(k);for(let z of N){let L=i.get(z)?.composition;L&&r.emit({type:"graph-invalidated",composition:L})}let{rebuiltRoutes:O,failedRoutes:D}=await Io(k,{changed:!0});for(let{documentChanged:z,composition:L,version:V}of O)r.emit({type:"graph-ready",composition:L,version:V}),z&&r.emit({type:"document-changed",composition:L,version:V});for(let{composition:z,message:L}of D)y=!0,r.emit({type:"graph-error",composition:z,message:L})}}finally{c=null,t!=="disposed"&&(t=!y&&[...i.values()].some(x=>x.graph)?"ready":"idle"),a.size>0&&Al([])}})())}async function rh(){for(;u>0;)await new Promise(p=>setTimeout(p,0))}async function Tl(p){let y=[];for(let x of new Set(p)){let k=f.get(x);if(k===void 0){if(m.has(x)&&!await n.exists(x))continue;m.delete(x),y.push(x);continue}try{await n.readFile(x)!==k&&(m.delete(x),y.push(x))}catch(N){if(!gR(N))try{if(await n.exists(x))continue}catch{continue}m.add(x),y.push(x)}}return y}function Fl(p){pg(f,p);for(let y of p)y.exists===!1?m.add(y.file):m.delete(y.file)}function _l(p){m.clear();for(let y of p)m.add(y)}async function Ol(p){let y=await Tl(p);if(y.length===0)return;let x=Ln(y);for(let O of x){let D=i.get(O)?.composition;D&&r.emit({type:"graph-invalidated",composition:D})}let{rebuiltRoutes:k,failedRoutes:N}=await Io(y,{changed:!0});for(let{documentChanged:O,composition:D,version:z}of k)r.emit({type:"graph-ready",composition:D,version:z}),O&&r.emit({type:"document-changed",composition:D,version:z});for(let{composition:O,message:D}of N)r.emit({type:"graph-error",composition:O,message:D})}async function oh(p,y){let x=jn(p,y);if(!x?.graph)return;let k=qe(p)??p,N=x.graph.elements.get(k);N&&await Ol([N.sourceFile])}async function Ml(p){let y=new Set;if(p.target.kind==="node"){let x=jn(p.target.key,p.composition),k=qe(p.target.key)??p.target.key,N=x?.graph?.elements.get(k);N&&y.add(N.sourceFile)}else if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&y.add(x.entryFile)}else if(p.target.kind==="page-unit"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&y.add(x.entryFile)}else if(p.target.kind==="source-file")y.add(p.target.path);else if(p.target.kind==="source-batch")for(let x of p.target.paths)y.add(x);if(p.params.kind==="move-node"&&!("kind"in p.params.target)){let x=[p.params.target.parentKey,...p.params.target.relation==="before"||p.params.target.relation==="after"?[p.params.target.anchorKey]:[]];for(let k of x){let N=jn(k,p.composition),O=qe(k)??k,D=N?.graph?.elements.get(O);D&&y.add(D.sourceFile)}}await Ol(y)}async function ih(p){if(p.params.kind!=="source-edit")return ms(p,"invalid-params","source-edit requires source-edit params");for(let y of p.params.edits){let x=mR(y);if(!x.ok)return ms(p,x.errorCode,x.message,x.details)}u+=1;try{let y=await uh(p.params.edits);if(!y.ok)return ms(p,y.errorCode,y.message,y.details);await Ml(p);let x={operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:p.params.conflictPolicy,edits:p.params.edits.map(k=>k.operation==="delete"?{operation:"delete",file:k.path,baseContentHash:k.baseContentHash??null}:{operation:"upsert",file:k.path,baseContentHash:k.baseContentHash??null,content:k.content})};return await $n({request:p,filePlan:x})}catch(y){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Z(p),error:{code:$.INTERNAL_ERROR,message:Ge(y)}}}finally{u-=1}}async function sh(p){if(p.target.kind!=="project"||p.params.kind!=="insert-page-resource")return le(p,$.INVALID_PARAMS,"insert-page-resource requires project target and matching params.");u+=1;try{let y=await ia({files:[...p.params.artifact.components.flatMap(k=>k.materialization.files.map(N=>({path:N.pathTemplate,content:N.content}))),...p.params.artifact.pages.flatMap(k=>k.materialization.files.map(N=>({path:N.pathTemplate,content:N.content})))],exists:k=>n.exists(k),readFile:k=>n.readFile(k)});if(!y.ok)return le(p,$.MATERIALIZATION_REJECTED,y.message);let x=await da({artifact:p.params.artifact,exists:k=>n.exists(k)});return x.ok?await $n({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:"overwrite",edits:x.files},output:{kind:"insert-page-resource",package_instance_id:x.packageInstanceId,pages:x.pages},historyPolicy:"none"}):le(p,x.code==="MATERIALIZATION_CONFLICT"?$.MATERIALIZATION_CONFLICT:$.MATERIALIZATION_REJECTED,x.message,x.path?{path:x.path}:void 0)}catch(y){return le(p,$.INTERNAL_ERROR,Ge(y))}finally{u-=1}}async function ah(p){if(p.target.kind!=="project"||p.params.kind!=="delete-page-source")return le(p,$.INVALID_PARAMS,"delete-page-source requires project target and matching params.");if(!n.listFiles)return le(p,$.PLAN_FAILED,"Complete project file listing is required for page deletion.");u+=1;try{let y=Rg(await n.listFiles({maxFiles:5e4,maxDepth:64}));if(y.truncated)return le(p,$.PLAN_FAILED,"Project file listing is incomplete; page deletion was refused.",{truncationReasons:y.truncated.reasons});let x=y.files.filter(({path:D})=>/\.(?:tsx?|jsx?)$/.test(D)),k=Object.fromEntries(await Promise.all(x.map(async({path:D})=>[D,await n.readFile(D)]))),N=ff({expectedUrlPath:p.params.expectedUrlPath,files:k});if(!N.ok)return le(p,N.code==="HOME_PAGE_LOCKED"?$.HOME_PAGE_LOCKED:N.code==="ROUTE_NOT_FOUND"?$.ROUTE_NOT_FOUND:$.PLAN_FAILED,N.message);let O=await Promise.all(N.edits.map(async D=>({...D,baseContentHash:ve(await n.readFile(D.file))})));return $n({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:O},output:{kind:"delete-page-source",deleted_files:N.deletedFiles,updated_files:N.updatedFiles,preserved_shared_files:N.preservedSharedFiles,warnings:N.warnings},historyPolicy:"none"})}catch(y){return le(p,$.INTERNAL_ERROR,Ge(y))}finally{u-=1}}async function ch(p,y){if(p.kind!=="insert-child"&&p.kind!=="replace-node")return le(p,$.UNSUPPORTED_OPERATION,"Only page-unit insert-child and replace-node materialization are supported by this transaction.");if(p.params.kind!=="insert-child"&&p.params.kind!=="replace-node"||p.kind!==p.params.kind)return le(p,$.INVALID_PARAMS,"Page-unit materialization operation kind must match its params.");if(p.params.kind==="insert-child"){if(!("kind"in p.params.position)||p.params.position.kind!=="page-composition")return le(p,$.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.");if(p.params.position.documentVersion!==p.documentVersion)return le(p,$.VERSION_STALE,"Page-unit insert-child placement belongs to a different document version.")}let x=y.document,k=y.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!k||k.status!=="supported")return le(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||k.documentVersion!==x.version)return le(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let N=p.params.node.kind==="component-call"?p.params.node.materialization:void 0;if(!N)return le(p,$.UNSUPPORTED_OPERATION,"Page-unit insertion currently requires a static materialization manifest.");let O=p.params.kind==="insert-child"?p.params.position:null,D=await ia({files:N.files.map(L=>({path:L.pathTemplate,content:L.content})),exists:L=>n.exists(L),readFile:L=>n.readFile(L)});if(!D.ok)return le(p,$.MATERIALIZATION_REJECTED,D.message);let z=await Cd({manifest:N,generatedRoot:"components/site/generated",controlledFiles:N.files.map(L=>({pathTemplate:L.pathTemplate})),exists:L=>n.exists(L),commit:async L=>{let V=await n.readFile(y.entryFile),j=y.document,ce=y.pageCompositionProjection;if(!j||j.pageComposition?.status!=="supported"||j.version!==p.documentVersion||!ce||ce.status!=="supported"||ce.documentVersion!==j.version)return{ok:!0,data:le(p,$.VERSION_STALE,"The route changed before the page-unit insertion could commit.")};let re=L.entry.path,be=yh(L.instanceName),Se,Ie=[];if(p.params.kind==="insert-child"){if(!O||!("kind"in O)||O.kind!=="page-composition")return{ok:!0,data:le(p,$.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.")};let te=xa({routeId:y.routeId,entryFile:y.entryFile,currentDocumentVersion:j.version,expectedDocumentVersion:p.documentVersion,source:V,projection:ce,placementKey:O.placementKey,component:{source:re,exportName:L.entry.export.kind==="default"?"default":L.entry.export.name,localName:be}});if(!te.ok)return{ok:!0,data:le(p,xs(te.error.code),te.error.message,{diagnostics:te.error.diagnostics})};let ie=te.plan.rewriteStep,_e;switch(ie.kind){case"insert-root-expression":_e=gi({source:V,locator:ie.locator,expectedSourceHash:ie.sourceHash,action:{kind:"insert",jsx:ie.node.jsx,placement:ie.placement,replaceOriginal:ie.replaceOriginal}});break;case"insert-child":_e=Kn({source:V,locator:ie.parentLocator,node:ie.node,placement:ie.placement,...ie.anchorLocator?{anchorLocator:ie.anchorLocator}:{}});break;default:_e={ok:!1,source:V,diagnostic:{code:"unsupported-syntax",message:`Unsupported route composition rewrite: ${String(ie)}`}}}if(!_e.ok)return{ok:!0,data:le(p,$.AST_PARSE_ERROR,_e.diagnostic.message)};Se=_e.source}else{let te=ba({routeId:y.routeId,composition:y.composition,entryFile:y.entryFile,currentDocumentVersion:j.version,expectedDocumentVersion:p.documentVersion,source:V,projection:ce,placementUnitKey:p.target.placementUnitKey,operation:"replace-node"});if(!te.ok)return{ok:!0,data:le(p,xs(te.error.code),te.error.message,{diagnostics:te.error.diagnostics})};let ie=te.plan.rewriteStep,_e;switch(ie.kind){case"replace-root-expression":_e=gi({source:V,locator:ie.locator,expectedSourceHash:ie.sourceHash,action:{kind:"replace",jsx:`<${be} />`}});break;case"replace-node":_e=Ko({source:V,locator:ie.locator,node:{jsx:`<${be} />`}});break;default:_e={ok:!1,source:V,diagnostic:{message:`Unsupported page-unit replacement rewrite: ${ie.kind}`}}}if(!_e.ok)return{ok:!0,data:le(p,$.AST_PARSE_ERROR,_e.diagnostic.message)};let lt=await Dl({routeState:y,placementUnitKey:p.target.placementUnitKey,source:V,mutatedSource:_e.source});Se=lt.source,Ie=await Promise.all(lt.files.map(async ut=>({operation:"delete",file:ut,baseContentHash:ve(await n.readFile(ut))})))}let Ce=zn({source:Se,moduleSpecifier:v(y.entryFile,re),imports:L.entry.export.kind==="default"?[{kind:"default",local:be}]:[{kind:"named",imported:L.entry.export.name,local:be}]});if(!Ce.ok)return{ok:!0,data:le(p,$.AST_PARSE_ERROR,Ce.diagnostic.message)};let _=L.files.map(te=>({operation:"create-only",file:te.path,content:te.content})),U=[{operation:"upsert",file:y.entryFile,content:Ce.source,baseContentHash:ve(V)},..._,...Ie];u+=1;try{let te=await $n({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:U}});return!te.ok&&te.error?.message.includes("MATERIALIZATION_INSTANCE_CONFLICT")?{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:te.error?.message??"Static prefab instance conflicted during commit."}}:{ok:!0,data:te}}finally{u-=1}}});return z.ok?z.data:le(p,$.VERSION_STALE,z.error.message,{materializationCode:z.error.code})}async function lh(p,y){if(p.kind!=="move-node"&&p.kind!=="remove-node")return le(p,$.UNSUPPORTED_OPERATION,"Only page-unit move-node and remove-node are currently supported by the page composition transaction.");let x=y.document,k=y.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!k||k.status!=="supported")return le(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||k.documentVersion!==x.version)return le(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let N=await n.readFile(y.entryFile),O=ba({routeId:y.routeId,composition:y.composition,entryFile:y.entryFile,currentDocumentVersion:x.version,expectedDocumentVersion:p.documentVersion,source:N,projection:k,placementUnitKey:p.target.placementUnitKey,operation:p.kind,targetPlacement:p.kind==="move-node"&&p.params.kind==="move-node"&&"kind"in p.params.target&&p.params.target.kind==="page-composition"?p.params.target:void 0});if(!O.ok)return le(p,xs(O.error.code),O.error.message,{diagnostics:O.error.diagnostics});let D=O.plan.rewriteStep,z;switch(D.kind){case"move-node":z=Jn({source:N,locator:D.locator,targetParentLocator:D.targetParentLocator,placement:D.placement,...D.anchorLocator?{anchorLocator:D.anchorLocator}:{}});break;case"remove-node":z=Un({source:N,locator:D.locator});break;case"remove-root-expression":z=gi({source:N,locator:D.locator,expectedSourceHash:D.sourceHash,action:{kind:"remove"}});break;default:z={ok:!1,source:N,diagnostic:{message:`Unsupported page-unit mutation rewrite: ${D.kind}`}}}if(!z.ok)return le(p,$.AST_PARSE_ERROR,z.diagnostic.message);let L=z.source,V=[];if(p.kind==="remove-node"){let ce=await Dl({routeState:y,placementUnitKey:p.target.placementUnitKey,source:N,mutatedSource:L});L=ce.source,V=await Promise.all(ce.files.map(async re=>({operation:"delete",file:re,baseContentHash:ve(await n.readFile(re))})))}let j=[{operation:"upsert",file:y.entryFile,content:L,baseContentHash:ve(N)},...V];u+=1;try{return await $n({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:j}})}finally{u-=1}}async function Dl(p){let y={source:p.mutatedSource,files:[]},x=p.routeState.graph,k=p.routeState.pageCompositionProjection;if(!x||!k||k.status!=="supported"||!n.listFiles)return y;let O=k.placementUnitByKey.get(p.placementUnitKey)?.sourceRange;if(!O)return y;let D=[...x.elements.values()].find(_=>_.sourceFile===p.routeState.entryFile&&_.importedFrom&&I(_.sourceRange,O));if(!D?.importedFrom||!D.exportName)return y;let z=E(D.importedFrom),L="components/site/generated/";if(!z.startsWith(L))return y;let V=z.slice(L.length).split("/")[0];if(!V||!/-[0-9a-f]{8}$/i.test(V))return y;let j=`${L}${V}`;if([...x.elements.values()].filter(_=>_.sourceFile===p.routeState.entryFile&&E(_.importedFrom??"")===z).length!==1)return y;let re=await n.listFiles({maxFiles:5e3,maxDepth:32}),be=Array.isArray(re)?re:re.files;if(!Array.isArray(re)&&re.truncated)return y;let Se=be.map(({path:_})=>_).filter(_=>_===j||_.startsWith(`${j}/`));if(Se.length===0||!Se.includes(z))return y;for(let{path:_}of be)if(!(_===p.routeState.entryFile||_===j||_.startsWith(`${j}/`)))try{if((await n.readFile(_)).includes(V))return y}catch{return y}let Ie=v(p.routeState.entryFile,z),Ce=Hn({source:p.mutatedSource,moduleSpecifier:Ie,imports:D.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:D.exportName}]});return Ce.ok?{source:Ce.source,files:Se.sort((_,U)=>_.localeCompare(U))}:y}async function uh(p){if(n.getFileInfo){for(let N of p)if(await n.exists(N.path)&&await n.getFileInfo(N.path)===null)return{ok:!1,errorCode:"invalid-params",message:`Source edit path must resolve to a regular non-symbolic-link file: ${N.path}`,details:{path:N.path}}}for(let N of p){if(N.operation!=="upsert"||!/^(?:src\/)?app\/globals\.css$/i.test(N.path))continue;let O=await n.exists(N.path)?await As(n,N.path):null;if(O?.ok){let D=KC(O.content,N.content);if(!D.ok)return{ok:!1,errorCode:"invalid-params",message:D.message,details:{path:N.path,code:D.code}}}}let y=dh(p);if(y.length===0)return{ok:!0};let x=fR(n,p),k=go({projectRoot:e.projectRoot,fileSystem:x,compositions:[...i.values()].map(N=>({context:N.composition,entryFile:N.entryFile})),externalAdapters:e.externalAdapters,externalSourceResolvers:e.externalSourceResolvers,functionCallContracts:e.functionCallContracts,dev:e.dev});try{for(let N of y){let O=i.get(N)?.composition;if(!O)continue;let D={routeId:O.routeId,...O.effectiveTemplateId!==void 0?{templateId:O.effectiveTemplateId}:{}};await k.initializeComposition(D),k.getDocument(D)}}catch(N){return{ok:!1,errorCode:"ast-error",message:`Source edit preflight failed: ${Ge(N)}`,details:{compositionKeys:y}}}finally{k.dispose()}return{ok:!0}}function dh(p){return p.map(x=>x.path).some(Ig)?[...i.keys()]:[]}function ms(p,y,x,k){let N=po(y);return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Z(p),error:{code:N,message:x,...k?{details:k}:{}}}}async function gs(p){let y=[];for(let x of new Set(p))y.push(await fh(x));return y}async function fh(p){if(!(typeof n.exists=="function"?await n.exists(p):!0))return{file:p,content:"",version:Math.max(0,K(p)),exists:!1};let x=await n.readFile(p);return{file:p,content:x,version:Math.max(1,K(p)),exists:!0,sha256:ve(x)}}async function Ll(p,y,x,k){if(!e.historyStore)return null;let N=new Map(y.map(z=>[z.file,z])),O=new Map(x.map(z=>[z.file,z])),D=[...new Set([...N.keys(),...O.keys()])].sort().map(z=>{let L=N.get(z),V=O.get(z);return{path:z,preDigest:L?.exists===!1||!L?null:ve(L.content),postDigest:V?.exists===!1||!V?null:ve(V.content)}});return{schemaVersion:2,transactionId:`${p}:${k.expectedIndexDigest}`,operationId:p,phase:"prepared",historyTransition:k,files:D}}async function Bl(p){return!p||!e.historyStore||await e.historyStore.writeTransactionJournal(p),p}async function Bn(p){p&&e.historyStore&&await e.historyStore.clearTransactionJournal(p.transactionId)}async function hs(p,y){let x=[];try{for(let k of p)await $l(k),typeof n.bumpVersion=="function"&&n.bumpVersion(k.file),x.push(k.file)}catch(k){let N=await ph(y.filter(O=>x.includes(O.file)));return N.ok?{ok:!1,reason:`Writeback failed and committed files were restored: ${Ge(k)}`,rolledBack:!0}:{ok:!1,reason:`Writeback failed, then rollback failed for ${N.failedFiles.join(", ")}: ${Ge(k)}`,rolledBack:!1}}return{ok:!0,snapshots:p.map(mh)}}async function $l(p){if(p.exists===!1){await n.deleteFile(p.file);return}await n.writeFile(p.file,p.content)}async function ph(p){let y=[];for(let x of p)try{await $l(x),typeof n.bumpVersion=="function"&&n.bumpVersion(x.file)}catch{y.push(x.file)}return y.length===0?{ok:!0}:{ok:!1,failedFiles:y}}function mh(p){let y=p.exists!==!1;return{file:p.file,content:y?p.content:"",version:p.version,exists:y,...y?{sha256:ve(p.content)}:{}}}async function $n(p){return h.runExclusive(()=>gh(p))}async function gh(p){let y=p.filePlan.edits.map(_=>_.file),x=o.resolveSelector(p.request.composition),k=x.context,N=p.historyPolicy==="none"?void 0:{initiatingComposition:k,affectedCompositions:eh(y)},O=await gs(y),D=new Map(O.filter(_=>_.exists!==!1).map(_=>[_.file,_.content])),z=Vl(),L=new Map(f),V=new Set(m),j=new Set([...i.values()].filter(_=>p.filePlan.edits.some(U=>U.operation==="delete"&&U.file===_.entryFile)).map(_=>_.key)),ce=p.filePlan.edits.map(_=>_.operation==="delete"?{file:_.file,content:"",version:0,exists:!1}:{file:_.file,content:_.content,version:0,exists:!0,sha256:ve(_.content)}),re={operationId:p.filePlan.operationId,intents:p.filePlan.edits.map(_=>_.operation==="delete"?{kind:"delete",path:_.file}:{kind:_.operation==="create-only"?"create-only":"upsert",path:_.file,content:_.content})},be=null,Se=!1,Ie=await Yi({overlay:D,exists:_=>n.exists(_),plan:re,buildCandidate:async({plan:_})=>({plan:_}),prepareHistory:async()=>{let _=p.historyPolicy==="none"?null:await l.prepareAppend({composition:o.resolveSelector(p.request.composition).context,operationId:p.request.id,kind:p.request.kind,target:p.request.target,preSnapshots:O,postSnapshots:ce,...p.selectionRef?{selectionRef:p.selectionRef}:{},...p.output?{output:p.output}:{},...N?{provenance:N}:{}}),U=_?.historyTransition?_.historyTransition:e.historyStore?QC(await e.historyStore.readIndex()):null;if(e.historyStore&&!U)throw new Error("Durable history did not provide an exact index transition.");return be=await Ll(p.request.id,O,ce,U),be=await Bl(be),{history:_,historyTransition:U}},reverify:async()=>{},writeCandidate:async()=>{let _=await d.executeFilePlan(p.filePlan);if(!_.ok)throw new ts(_);return{postSnapshots:await gs(_.affectedFiles),affectedFiles:_.affectedFiles,internalResultVersion:_.resultVersion}},validateCandidate:async({candidate:_,receipt:U})=>{let te=await Io(U.affectedFiles,{changed:!0,minimumVersion:U.internalResultVersion,publish:!1,excludedCompositionKeys:j});if(te.failedRoutes.length>0)throw new Mn(te.failedRoutes);let ie=Kl(z,te.candidateRouteStates??[]),_e=Ul(ie,x.key);return{..._,rebuild:te,routeSnapshots:ie,resultVersion:_e,...Sg(p.selectionRef,ie.map(lt=>lt.state.document))?{selectionRef:Sg(p.selectionRef,ie.map(lt=>lt.state.document))}:{}}},publishCandidate:async({candidate:_,history:U,receipt:te})=>{U?.history&&(await l.publishPrepared(U.history),Se=!0);let ie=_.resultVersion??te.internalResultVersion;return{composition:k,requestId:p.request.id,kind:p.request.kind,target:p.request.target,ok:!0,resultVersion:ie,affectedFiles:te.affectedFiles,...p.output?{output:p.output}:{},..._.selectionRef?{selectionRef:_.selectionRef}:{}}},swapCandidate:({candidate:_,receipt:U})=>{_.routeSnapshots&&Co(_.routeSnapshots),_.rebuild?.candidateSourceCache&&dr(f,_.rebuild.candidateSourceCache),Fl(U.postSnapshots)},finalizeCandidate:async()=>{await Bn(be);for(let _ of j)i.delete(_)},emitCommitted:({candidate:_,published:U})=>{ps(U,_.rebuild??{rebuiltRoutes:[],failedRoutes:[]})},rollbackCandidate:async({history:_,receipt:U})=>{if(Se)throw new Error("history was published before transaction finalization failed");if(U){let te=await hs(O,U.postSnapshots);if(!te.ok)throw new Error(te.reason)}Co(z),dr(f,L),_l(V),_?.history&&await l.discardPrepared?.(_.history),await Bn(be)}});if(Ie.ok)return Ie.published;if(Ie.stage==="precheck"||Ie.stage==="build")try{await Bn(be)}catch(_){let U=await Ro(Ge(_));return le(p.request,U,"Unable to clear an uncommitted transaction journal.")}if(Ie.recoveryRequired){let _=await Ro(Ie.reason);return le(p.request,_===$.RECOVERY_PERSIST_FAILED?_:$.ROLLBACK_FAILED,Ie.reason)}let Ce=Ie.error;return Ce instanceof ts?{...le(p.request,po(Ce.result.errorCode),Ce.result.reason),...Ce.result.affectedFiles?{affectedFiles:Ce.result.affectedFiles}:{}}:Ce instanceof Mn?le(p.request,$.ROUTE_REBUILD_FAILED,`Route rebuild failed and source was rolled back: ${tl(Ce.failedRoutes)}`,{failedRoutes:Ce.failedRoutes}):le(p.request,Xl(Ie.stage),Ge(Ce))}async function jl(p){return h.runExclusive(async()=>{let y=p==="undo"?await l.prepareUndo():await l.prepareRedo();return y?hh(p,y):{composition:o.entries[0].context,requestId:p,kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:o.initialVersions.get(o.entries[0].key)??0,error:{code:$.INTERNAL_ERROR,message:p==="undo"?"Nothing to undo":"Nothing to redo"}}})}async function hh(p,y){let x=y.entry,k=p==="undo"?x.preSnapshots:x.postSnapshots,N=p==="undo"?x.postSnapshots:x.preSnapshots,O=k.map(U=>U.file),{context:D,key:z}=nh(x,O),L=await gs(O),V=new Map(L.filter(U=>U.exists!==!1).map(U=>[U.file,U.content])),j=Re(z),ce=Vl(),re=new Map(f),be=new Set(m),Se=null,Ie=!1,Ce,_=await Yi({overlay:V,plan:{operationId:`${p}:${x.operationId}`,intents:k.map(U=>U.exists===!1?{kind:"delete",path:U.file}:{kind:"upsert",path:U.file,content:U.content})},buildCandidate:async()=>({}),prepareHistory:async()=>(Se=await Ll(`${p}:${x.operationId}`,L,k,y.historyTransition),Se=await Bl(Se),y),reverify:async()=>{},writeCandidate:async()=>{let U=await hs(k,N);if(!U.ok)throw new Error(U.reason);return{snapshots:U.snapshots}},validateCandidate:async({candidate:U})=>{Ce=th(x,O);let te=await Io(O,{changed:!0,minimumVersion:j+1,publish:!1,affectedCompositionKeys:Ce});if(te.failedRoutes.length>0)throw new Mn(te.failedRoutes);let ie=Kl(ce,te.candidateRouteStates??[]),_e=Ul(ie,z);return{...U,rebuild:te,routeSnapshots:ie,resultVersion:_e}},publishCandidate:async({candidate:U,history:te})=>{if(!te)throw new Error("history cursor intent is missing");await l.publishPrepared(te),Ie=!0;let ie=U.resultVersion??j+1;return{composition:D,requestId:p,kind:x.kind,target:x.target,ok:!0,resultVersion:ie,affectedFiles:O,...x.output?{output:x.output}:{}}},swapCandidate:({candidate:U,receipt:te})=>{U.routeSnapshots&&Co(U.routeSnapshots),U.rebuild?.candidateSourceCache&&dr(f,U.rebuild.candidateSourceCache),Fl(te.snapshots)},finalizeCandidate:async()=>{await Bn(Se)},emitCommitted:({candidate:U,published:te})=>ps(te,U.rebuild??{rebuiltRoutes:[],failedRoutes:[]}),rollbackCandidate:async({history:U,receipt:te})=>{if(Ie)throw new Error("history cursor was published before transaction finalization failed");if(te){let ie=await hs(N,te.snapshots);if(!ie.ok)throw new Error(ie.reason)}Co(ce),dr(f,re),_l(be),U&&await l.discardPrepared?.(U),await Bn(Se)}});if(_.ok)return _.published;if(_.stage==="precheck"||_.stage==="build")try{await Bn(Se)}catch(U){let te=await Ro(Ge(U));return{composition:D,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:j,error:{code:te,message:"Unable to clear an uncommitted transaction journal."}}}if(_.recoveryRequired){let U=await Ro(_.reason);return{composition:D,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:j,affectedFiles:O,error:{code:U===$.RECOVERY_PERSIST_FAILED?U:$.ROLLBACK_FAILED,message:_.reason}}}return{composition:D,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:j,affectedFiles:O,error:{code:_.error instanceof Mn?$.ROUTE_REBUILD_FAILED:Xl(_.stage),message:Ge(_.error),..._.error instanceof Mn?{details:{failedRoutes:_.error.failedRoutes}}:{}}}}function Vl(){return[...i.values()].map(p=>({composition:p.composition,key:p.key,routeId:p.routeId,state:{...p,dependencyFiles:new Set(p.dependencyFiles),fileVersions:new Map(p.fileVersions)}}))}function Ul(p,y){return p.find(k=>k.key===y)?.state.graph?.version??o.initialVersions.get(y)??0}function Kl(p,y){let x=new Map(p.map(k=>[k.key,k]));for(let k of y)x.set(k.key,k);return[...x.values()]}function Co(p){for(let y of i.values())C(y);for(let y of p){let x={...y.state,dependencyFiles:new Set(y.state.dependencyFiles),fileVersions:new Map(y.state.fileVersions)};i.set(y.key,x),T(x,x.dependencyFiles)}}async function ys(p){let y=i.get(p);if(!y)throw new Error(`Composition not found: ${p}`);if(y.graph)return;let x=await n.readFile(y.entryFile);await fe(p,x)}function jn(p,y){let x=i.get(o.resolveSelector(y).key)??null;return!x||!Jl(x,p)?null:x}function Jl(p,y){if(p.documentIndex?.entriesByKey.has(y)||p.graph?.elements.has(y))return!0;let x=qe(y);return x&&x!==y?p.graph?.elements.has(x)===!0:!1}function le(p,y,x,k){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Z(p),error:{code:y,message:x,...k?{details:k}:{}}}}function Xl(p){return p==="validate"?$.ROUTE_REBUILD_FAILED:p==="publish"?$.HISTORY_COMMIT_FAILED:$.WRITE_IO_ERROR}async function Ro(p){if(g=!0,!l.markRecoveryRequired)return $.RECOVERY_REQUIRED;try{return await l.markRecoveryRequired(p),$.RECOVERY_REQUIRED}catch{return $.RECOVERY_PERSIST_FAILED}}function yh(p){let x=p.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(k=>k.charAt(0).toUpperCase()+k.slice(1)).join("").replace(/^[^a-zA-Z_$]+/,"");return x?`Prefab${x}`:"GeneratedPrefab"}function xs(p){return p==="VERSION_STALE"?$.VERSION_STALE:p==="CROSS_PAGE_MOVE_UNSUPPORTED"?$.CROSS_PAGE_MOVE_UNSUPPORTED:$.UNSUPPORTED_OPERATION}async function zl(p){if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key)??null;return x?(x.graph||await ys(x.key),x):le(p,$.ROUTE_NOT_FOUND,"Composition not found for route target.")}if(p.target.kind==="page-unit"){let x=i.get(o.resolveSelector(p.target.composition).key)??null;return x?(x.graph||await ys(x.key),x):le(p,$.ROUTE_NOT_FOUND,"Composition not found for page-unit target.")}if(p.target.kind!=="node")return le(p,$.UNSUPPORTED_OPERATION,`${p.kind} source target execution is not implemented yet.`);let y=i.get(o.resolveSelector(p.composition).key)??null;return y?(y.graph||await ys(y.key),Jl(y,p.target.key)?y:le(p,$.NODE_NOT_FOUND,`Target key not found: ${p.target.key}`)):le(p,$.ROUTE_NOT_FOUND,"Composition not found for node target.")}return{get status(){return t},dispose(){t="disposed",a.clear(),i.clear(),s.clear(),f.clear(),m.clear()},registerComposition(p,y){let x=o.register({context:p,entryFile:y}),k=i.get(x.key);if(k?.entryFile===y)return;k&&C(k);let N=bg(x.context,y);i.set(x.key,N),T(N,N.dependencyFiles),r.emit({type:"graph-invalidated",composition:x.context})},unregisterComposition(p){let y=o.resolveSelector(p),x=i.get(y.key);x&&(C(x),i.delete(y.key),o.unregister(y.key),i.size===0&&(t="idle"),r.emit({type:"graph-invalidated",composition:y.context}))},getCompositionEntryFiles(){return[...i.values()].map(p=>p.entryFile)},getCompositionContext(p){return o.resolveSelector(p).context},async initializeComposition(p){let y=o.resolveSelector(p),x=i.get(y.key);if(!x)throw new Error(`Composition not registered: ${y.key}`);if(x.graph)t="ready";else{t="building";try{let k=await n.readFile(x.entryFile);await fe(y.key,k),t="ready",r.emit({type:"graph-ready",composition:y.context,version:i.get(y.key)?.graph?.version??0})}catch(k){throw t="idle",r.emit({type:"graph-error",composition:y.context,message:Ge(k)}),k}}},getDocument(p){let y=o.resolveSelector(p),x=i.get(y.key);if(!x)throw new Error(`Composition not registered: ${y.key}`);if(!x.document)throw new Error(`Composition not built: ${y.key}`);return x.document},async getHistoryStatus(){await b;let p=await l.getStatus?.();return p?{...p,recoveryRequired:g}:{canUndo:!1,canRedo:!1,undoDepth:0,redoDepth:0,recoveryRequired:g}},getObjectEditContext(p,y,x){let k=jn(p,y),N=qe(p)??p;if(k?.graph&&k.topology&&k.capabilities&&k.detailProjections){let O=k.detailProjections.get(N);if(O){let D=k.graph.elements.get(N);if(!D)throw new Error(`Key not found: ${p}`);let z=oR(p,N,x),L=new Map;if(O.isRepeat&&z?.instanceIndex!==void 0)for(let ce of D.attributes??[])L.set(ce.name,Nc({file:D.sourceFile,source:f.get(D.sourceFile)??"",element:D,propertyName:ce.name,selectionRef:z,graph:k.graph,sources:f}));let V=Mm({element:D,graph:k.graph,source:f.get(D.sourceFile),documentVersion:k.graph.version,selectionRef:x,isRepeat:O.isRepeat,propertyProvenance:O.propertyProvenances,repeatTargets:L}),j=Bm(N,k.graph,k.topology,k.capabilities,O.textSources,O.provenances,O.dynamicData,V);return p===N?j:ug(j,p,k.document??null,k.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getRenderDetail(p,y){let x=jn(p,y),k=qe(p)??p;if(x?.graph&&x.topology&&x.capabilities&&x.detailProjections){let N=x.detailProjections.get(k);if(N){let O=Lm(k,x.graph,x.topology,x.capabilities,N.textSources,N.writeTarget,N.provenances,N.conditional,N.componentSemantic,N.styleSource,N.dynamicData);return p===k?O:lg(O,p,x.document??null,x.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getClassNameSource(p,y){let x=jn(p,y),k=qe(p)??p;if(!x?.graph)throw new Error(`Key not found: ${p}`);let N=x.graph.elements.get(k);if(!N)throw new Error(`Key not found: ${p}`);let O=f.get(N.sourceFile);if(O===void 0)throw new Error(`Source not loaded: ${N.sourceFile}`);return Hs({key:k,route:{composition:x.composition,routeId:x.routeId,graph:x.graph,source:O}})},refreshSourceForKey:oh,async execute(p){if(await b,g)return le(p,$.RECOVERY_REQUIRED,"The edit engine requires explicit recovery before accepting mutations.");if(p.kind==="source-edit")return ih(p);if(p.kind==="insert-page-resource")return sh(p);if(p.kind==="delete-page-source")return ah(p);let y=await zl(p);if("ok"in y)return y;await Ml(p);let x=await zl(p);if("ok"in x)return x;let k=x;if(p.target.kind==="page-unit"){let j=p;return p.kind==="insert-child"||p.kind==="replace-node"?ch(j,k):p.kind==="move-node"||p.kind==="remove-node"?lh(j,k):le(p,$.UNSUPPORTED_OPERATION,"Only page-unit insert-child, replace-node, move-node, and remove-node are currently supported by the page composition transaction.")}let O=p.params,D=p.target.kind==="node"?p.target.key:null;if(O.kind==="move-node"&&"kind"in O.target&&O.target.kind==="source-sibling"){let j=O.target,ce=D?k.document?.entries.find(U=>U.key===D):null,re=k.document?.entries.find(U=>U.key===j.anchorKey),be=ce?.pageCompositionActionScope,Se=be?.kind==="source-siblings"?be.siblingKeys:null,Ie=Se?.indexOf(ce?.key??"")??-1,Ce=Se?.indexOf(j.anchorKey)??-1,_=j.relation==="before"?Ie-1:Ie+1;if(!ce||!re||!Se||Ie<0||Ce!==_||re.pageCompositionActionScope?.kind!=="source-siblings"||re.pageCompositionActionScope.siblingKeys.length!==Se.length||re.pageCompositionActionScope.siblingKeys.some((U,te)=>U!==Se[te])||!ce.operationSummary.canMove)return le(p,$.INVALID_TARGET,"Source sibling move is unavailable because the current source sibling scope or adjacent anchor no longer matches.")}if(!k.graph||!k.topology||!k.capabilities)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Z(p),error:{code:p.target.kind==="route"?$.ROUTE_NOT_FOUND:$.NODE_NOT_FOUND,message:p.target.kind==="route"?"Composition not ready for route target.":p.target.kind==="node"?`Target key not found: ${p.target.key}`:`${p.kind} source target execution is not implemented yet.`}};let z=vR(k,k.graph,k.capabilities,f,i),L=await new Di(z).plan(p);if(!L.ok)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Z(p),error:{code:po(L.errorCode),message:L.reason}};let V=L.plan;if(V.steps.length===0)return p.kind==="set-props"?{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!0,resultVersion:Z(p),affectedFiles:[]}:{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Z(p),error:{code:$.PLAN_FAILED,message:"Planner could not generate a valid execution plan"}};u+=1;try{if(V.steps.some(ce=>ce.type==="invoke-external-adapter")){let ce=await d.execute(V);if(!ce.ok)return le(p,po(ce.errorCode),ce.reason);let re={composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!0,resultVersion:Math.max(Z(p),ce.resultVersion),affectedFiles:ce.affectedFiles,...ce.selectionRef?{selectionRef:ce.selectionRef}:{}};return ps(re,{rebuiltRoutes:[],failedRoutes:[]}),re}let j=await d.prepareRewritePlan(V);return j.ok?await $n({request:p,filePlan:j.filePlan,...j.selectionRef?{selectionRef:j.selectionRef}:{}}):le(p,po(j.errorCode),j.reason)}catch(j){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Z(p),error:{code:$.INTERNAL_ERROR,message:Ge(j)}}}finally{u-=1}},async undo(p){if(await b,g)return{composition:o.entries[0].context,requestId:"undo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:Re(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting undo."}};u+=1;try{return await jl("undo")}finally{u-=1}},async redo(p){if(await b,g)return{composition:o.entries[0].context,requestId:"redo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:Re(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting redo."}};u+=1;try{return await jl("redo")}finally{u-=1}},notifyFileChanged(p){Al([p])},getAffectedCompositions(p){return qg(p)},subscribe(p){return r.subscribe(p)}}}function gR(e){return e instanceof Error&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function hR(e,t,n,r){let o=new Map,i=new Map,s=(f,m,u)=>{let g=f.get(m)??new Set,h=g.size;return g.add(u),f.set(m,g),g.size!==h},a=(f,m)=>{if(!f.importedFrom)return!1;if(f.exportName==="default")return s(i,f.importedFrom,m);let u=s(o,`${f.importedFrom}#${f.tag}`,m);return f.exportName&&f.exportName!==f.tag&&(u=s(o,`${f.importedFrom}#${f.exportName}`,m)||u),u},c=f=>o.get(`${f.sourceFile}#${f.componentName}`)??i.get(f.sourceFile);for(let f of t.elements.values()){if(f.sourceFile!==n.entryFile||!f.importedFrom||!/^[A-Z]/.test(f.tag))continue;let m=n.placements.find(g=>g.members.some(h=>h.sourceRange!==null&&mo(f.sourceRange,h.sourceRange)));if(!m)continue;let u=m.placementUnitKey;a(f,u)}let l=!0;for(;l;){l=!1;for(let f of t.elements.values()){if(f.sourceFile===n.entryFile||!f.importedFrom||!/^[A-Z]/.test(f.tag))continue;let m=c(f);if(m)for(let u of m)l=a(f,u)||l}}let d=n.placements.find(f=>f.placementKey===n.container.placementKey&&f.relation==="append");for(let f of e.entries){let m=qe(f.key)??f.key,u=t.elements.get(f.key)??t.elements.get(m);if(!u)continue;if(u.sourceFile===n.entryFile){if(n.container.sourceRange&&mo(u.sourceRange,n.container.sourceRange)&&d){f.pageCompositionUnitKey=d.placementUnitKey;continue}let b=n.placements.find(E=>E.members.some(v=>v.sourceRange!==null&&(mo(u.sourceRange,v.sourceRange)||ER(v.sourceRange,u.sourceRange))));if(b){f.pageCompositionUnitKey=b.placementUnitKey;continue}}let g=o.get(`${u.sourceFile}#${u.componentName}`);if(g){g.size===1&&(f.pageCompositionUnitKey=g.values().next().value);continue}let h=i.get(u.sourceFile);h?.size===1&&(f.pageCompositionUnitKey=h.values().next().value)}yR(e,t,n,r)}function yR(e,t,n,r){let o=new Map(e.entries.map(m=>[m.key,m])),i=e.entries.filter(m=>{let u=m.pageCompositionUnitKey;return u?m.parentKey?o.get(m.parentKey)?.pageCompositionUnitKey!==u:!0:!1}),s=new Map,a=(m,u)=>{s.set(m,Math.min(2,(s.get(m)??0)+u))},c=m=>n.placements.some(u=>u.members.some(g=>g.sourceRange!==null&&mo(m.sourceRange,g.sourceRange)));for(let m of t.elements.values())m.sourceFile!==n.entryFile||!m.importedFrom||!/^[A-Z]/.test(m.tag)||!c(m)||a(`${m.importedFrom}#${m.exportName??m.tag}`,1);let l=[...t.elements.values()].flatMap(m=>m.sourceFile!==n.entryFile&&m.importedFrom&&/^[A-Z]/.test(m.tag)?[{owner:`${m.sourceFile}#${m.componentName}`,ownerDefault:`${m.sourceFile}#default`,target:`${m.importedFrom}#${m.exportName??m.tag}`}]:[]);for(let m=0;m<=l.length;m+=1){let u=!1;for(let g of l){let h=s.get(g.owner)??s.get(g.ownerDefault)??0;if(!h)continue;let b=s.get(g.target)??0,E=Math.min(2,b+h);E!==b&&(s.set(g.target,E),u=!0)}if(!u)break}let d=m=>s.get(`${m.sourceFile}#${m.componentName}`)??s.get(`${m.sourceFile}#default`)??0;for(let m of i){m.pageCompositionActionScope={kind:"unavailable"};let u=t.elements.get(m.key);m.pageCompositionUnitKey&&u?.sourceFile===n.entryFile&&(m.pageCompositionActionScope={kind:"route-unit"})}let f=new Map;for(let m of i){let u=t.elements.get(m.key);if(!u||u.sourceFile===n.entryFile||m.key!==(qe(m.key)??m.key))continue;let g=r.get(u.sourceFile);if(!g)continue;let h=se(g.ast,{kind:"jsx-node",strategy:"source-range",sourceRange:u.sourceRange});if(!h.ok||!h.match.path.isJSXElement())continue;let b=h.match.path,E=b.parentPath;if(!E||!E.isJSXFragment()&&!(E.isJSXElement()&&Pe(E))){d(u)===1&&vg(b)&&(m.pageCompositionActionScope={kind:"route-unit"});continue}if(!vg(E))continue;let v=f.get(E.node)??[];v.push({entry:m,element:u,parentPath:E}),f.set(E.node,v)}for(let m of f.values()){let u=m[0];if(!u)continue;let g=u.entry.pageCompositionUnitKey,h=[],b=!!(g&&d(u.element)===1);for(let v of u.parentPath.node.children){if(xR(v))continue;if(!bR(v)){b=!1;break}let I=[...t.elements.values()].find(P=>P.sourceFile===u.element.sourceFile&&P.componentName===u.element.componentName&&mo(P.sourceRange,SR(v))),R=I?o.get(I.identity.key):null;if(!I||!R||R.parentKey||R.pageCompositionUnitKey!==g||d(I)!==1){b=!1;break}h.push(R)}if(!b||h.length!==m.length||m.some(({entry:v})=>!h.some(I=>I.key===v.key)))continue;if(h.length===1){h[0].pageCompositionActionScope={kind:"route-unit"};continue}if(h.length<2)continue;let E=h.map(v=>v.key);for(let v of h)v.pageCompositionActionScope={kind:"source-siblings",siblingKeys:E}}}function vg(e){let t=e.parentPath;return!!(t?.isReturnStatement?.()||t?.isArrowFunctionExpression?.()&&t.node.body===e.node)}function xR(e){return!!(e&&typeof e=="object"&&e.type==="JSXText"&&!(e.value??"").trim())}function bR(e){return!!(e&&typeof e=="object"&&e.type==="JSXElement")}function SR(e){return{startLine:e.loc?.start.line??-1,startColumn:e.loc?.start.column??-1,endLine:e.loc?.end.line??-1,endColumn:e.loc?.end.column??-1}}function mo(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function ER(e,t){return kg(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&kg(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function kg(e,t,n,r){return e!==n?e-n:t-r}function vR(e,t,n,r,o){let i=new Map,s=new Map,a=(d,f)=>{if(s.has(d))return;s.set(d,f);let m=t.elements.get(d);for(let u of m?.childKeys??[])a(u,f)};for(let d of t.regions)if(d.kind==="repeat-region")for(let f of d.childKeys)i.set(f,d.ownerKey),a(f,d.ownerKey);return{getNode(d){let f=c(d),m=t.elements.get(f.baseKey);return m?l(d,m):null},getChildNodes(d){let f=c(d),u=e.documentIndex?.entriesByKey.get(d)?.childKeys;if(u)return u.map(h=>{let b=qe(h)??h,E=t.elements.get(b);return E?l(h,E):null}).filter(h=>h!==null);let g=t.elements.get(f.baseKey);return g?g.childKeys.map(h=>{let b=t.elements.get(h);return b?l(h,b):null}).filter(h=>h!==null):[]},getKnownSourceFiles(){return[...r.entries()].map(([d,f])=>({file:d,content:f}))},getRouteEntryFiles(){return[...o.values()].map(d=>d.entryFile)},getCapability(d){let f=c(d),m=n.get(f.baseKey);return m?{...m,key:d,constraints:m.constraints.map(u=>({...u})),...m.editModes?{editModes:{...m.editModes}}:{}}:{composition:e.composition,key:d,canUpdateText:!1,canRemove:!1,canInsertChild:!1,canMove:!1,constraints:[]}},getFileContent(d){return r.get(d)??""},getFileVersion(d){return Math.max(e.fileVersions.get(d)??0,t.version)},getRouteEntryFile(d){return e.routeId===d?e.entryFile:null},getComponentSemantic(d){let f=c(d);return e.detailProjections?.get(f.baseKey)?.componentSemantic??null},getClassNameSource(d){let f=c(d),m=t.elements.get(f.baseKey),u=m?r.get(m.sourceFile):void 0;return!m||u===void 0?null:Hs({key:f.baseKey,route:{composition:e.composition,routeId:e.routeId,graph:t,source:u}})},getEditableTextSegmentIndex(d){let f=c(d),u=e.detailProjections?.get(f.baseKey)?.textTargets.keys()?.next();return u&&!u.done?u.value:null},async getTextWriteTarget(d,f){let m=c(d);return el(e.detailProjections?.get(m.baseKey)?.textTargets.get(f)??null,m.repeatIndex)},async getElementPropertyWriteTarget(d,f){let m=c(d);return el(e.detailProjections?.get(m.baseKey)?.elementPropertyTargets.get(f)??null,m.repeatIndex)},getPropertyState(d,f,m){let u=c(d),g=t.elements.get(u.baseKey);if(!g)return null;let b=e.detailProjections?.get(u.baseKey)?.propertyProvenances.get(f);if(b)return b;let E=g.attributes?.find(v=>v.name===f);return E?E.source?{status:"blocked",owner:"generic",diagnostic:{code:"unsupported-property-source",message:`Property '${f}' has an unresolved value source`}}:{status:"direct",owner:"generic",attribute:E,target:{kind:"jsx-attribute",file:g.sourceFile,sourceRange:E.sourceRange}}:(g.attributeSpreads?.length??0)>0?{status:"blocked",owner:"generic",diagnostic:{code:"ambiguous-property-source",message:`A spread may provide or override property '${f}'`}}:{status:"missing",owner:"generic"}},getRepeatPropertyTarget(d,f,m){let u=c(d),g=t.elements.get(u.baseKey);if(!g)return{ok:!1,errorCode:"repeat-not-found",reason:`Node not found: ${d}`};let h=m?{...m,key:u.baseKey}:u.repeatIndex!==null?{key:u.baseKey,instanceIndex:u.repeatIndex}:void 0;return Nc({file:g.sourceFile,source:r.get(g.sourceFile)??"",element:g,propertyName:f,selectionRef:h,graph:t,sources:r})},getTextProvenance(d,f){let m=c(d);return e.detailProjections?.get(m.baseKey)?.provenances.get(f)??null}};function c(d){let f=HC(d);return f?{baseKey:f.baseKey,repeatIndex:cg(e.document??null,d,f.baseKey,e.documentIndex)??ag(f)}:{baseKey:d,repeatIndex:null}}function l(d,f){let m=qe(d)??d,u=e.documentIndex?.entriesByKey.get(d);return{key:d,file:f.sourceFile,component:f.componentName,tag:f.tag,structuralPath:f.identity.structuralPath,sourceRange:f.sourceRange,parentKey:u?.parentKey??f.parentKey??void 0,isRepeatRegion:f.boundaryKind==="repeat-region"||s.has(m),isBoundary:!1,importedFrom:f.importedFrom,exportName:f.exportName,isRepeatItemRoot:i.has(m),repeatOwnerKey:i.get(m)??s.get(m),attributes:f.attributes?.map(g=>({name:g.name,value:g.value,source:g.source?{expression:g.source.expression,base:g.source.base,path:g.source.path.map(h=>({...h}))}:null,resolvedValue:g.resolvedValue}))}}}var kR={"stale-version":$.VERSION_STALE,"capability-denied":$.CAPABILITY_REJECTED,"invalid-params":$.INVALID_PARAMS,"locator-miss":$.LOCATOR_FAILED,"route-not-found":$.ROUTE_NOT_FOUND,"unsupported-operation":$.UNSUPPORTED_OPERATION,"invalid-target":$.INVALID_TARGET,"ast-error":$.AST_PARSE_ERROR,"writeback-failed":$.WRITE_IO_ERROR,"rollback-failed":$.RECOVERY_REQUIRED,unknown:$.INTERNAL_ERROR};function po(e){return kR[e]}function Ge(e){return e instanceof Error&&e.message?e.message:String(e)}function Ig(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function IR(e){let t=Dn(e);if(!YC.test(t))return[];let n=t.startsWith("src/app/")?"src/app":"app",r=t.slice(0,t.lastIndexOf("/")),o=[],i=r;for(;(i===n||i.startsWith(`${n}/`))&&(o.unshift(i),i!==n);)i=i.slice(0,i.lastIndexOf("/"));return o.flatMap(s=>ZC.map(a=>`${s}/${a}`))}function CR(e){let n=Dn(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function RR(e){return wg(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function wR(e){return wg(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function wg(e,t){let n=[];for(let r of e.matchAll(t)){let o=Ng(r[1]??"");o&&n.push(o)}return n}function Cg(e,t){let n=Ng(t);return!n||n.startsWith("tailwindcss")||n.startsWith("http:")||n.startsWith("https:")?null:n.startsWith("@/")?Dn(`src/${n.slice(2)}`):n.startsWith("./")||n.startsWith("../")?Dn(`${NR(e)}/${n}`):n.startsWith("/")?Dn(n.slice(1)):ol(n)?Dn(n):null}function Ng(e){return e.split(/[?#]/,1)[0]?.trim()??""}function ol(e){return/\.css$/i.test(e)}function NR(e){let t=Dn(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function PR(e){return Array.from(new Set(e))}function Dn(e){let t=e.replace(/\\/g,"/").replace(/^\.\//,""),n=[];for(let r of t.split("/"))if(!(!r||r===".")){if(r===".."){n.pop();continue}n.push(r)}return n.join("/")}function AR(e,t){let n=t.elements.get(e);if(!n)return!1;for(let r of t.regions){if(r.kind!=="repeat-region")continue;let o=n;for(;o;){if(r.childKeys.includes(o.identity.key))return!0;o=o.parentKey?t.elements.get(o.parentKey):void 0}}return!1}var ns=class{constructor(t){this.options=t,this.fileSystem=new hr(t.files),this.engine=this.createEngine(this.fileSystem)}get status(){return this.engine.status}initializeComposition(t){return this.engine.initializeComposition(t)}getDocument(t){return Po(this.engine.getDocument(t),{siteId:this.options.siteId,snapshotId:this.options.snapshotId})}getInternalDocument(t){return this.engine.getDocument(t)}getStyleContext(t){return this.engine.getDocument(t).styleContext??null}getObjectEditContext(t,n,r){return Ao(r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n))}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(t){return _o(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}getSourceFile(t){return Oo(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}resolveSourceLocation(t){return Mo(t,this.engine.getRenderDetail(t.key,t.composition))}async planOperation(t){let n=FR.safeParse(t);if(!n.success)return{result:No(t,n.error.issues.map(i=>i.message))};let r=new hr(this.options.files),o=this.createEngine(r,{emitEvents:!1});try{let i=await o.execute(n.data);if(!i.ok)return{result:{ok:!1,composition:i.composition,error:{code:i.error?.code??"INTERNAL_ERROR",message:i.error?.message??"Operation failed"},data:{requestId:i.requestId,kind:i.kind,target:i.target,resultVersion:i.resultVersion}}};let s={ok:!0,composition:i.composition,data:hn(i)},a=r.getChangedFiles();if(a.length===0)return{result:s};let c=_R.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:a.map(l=>OR(l,t.kind==="source-edit")),changedCompositions:o.getAffectedCompositions(a.map(l=>l.path)),diagnostics:[]});return this.options.onEvent?.({type:"site-edit.operation.planned",siteId:t.siteId,operationId:t.id,baseSnapshotId:t.baseSnapshotId,changedFiles:c.patches.map(l=>l.path),composition:i.composition,at:new Date().toISOString()}),{result:s,patchPlan:c}}finally{o.dispose()}}dispose(){this.engine.dispose()}createEngine(t,n={}){let r=n.emitEvents??!0;return go({projectRoot:"/snapshot",fileSystem:t,compositions:this.options.compositions,onEvent:r&&this.options.onEvent?o=>{let i=To(o,{siteId:this.options.siteId,snapshotId:this.options.snapshotId});i&&this.options.onEvent?.(i)}:void 0,dev:this.options.dev,...this.options.historyStore?{historyStore:this.options.historyStore}:{},...this.options.tenantId?{tenantId:this.options.tenantId}:{},siteId:this.options.siteId,snapshotId:this.options.snapshotId,...this.options.initialDocumentVersions?{initialDocumentVersions:this.options.initialDocumentVersions}:{}})}};function OR(e,t){return e.after===void 0?{path:e.path,operation:"delete",...t||e.before===void 0?{}:{expectedHash:ve(e.before)}}:{path:e.path,operation:e.before===void 0?"create":"update",...t||e.before===void 0?{}:{expectedHash:ve(e.before)},fullContent:e.after}}function MR(e){return new ns(e)}import{SiteEditOperationRequestSchema as BR}from"@vcp-dev/contracts";import Ct from"node:fs/promises";import Ye from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as DR,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as LR}from"@vcp-dev/contracts";var rs=class{constructor(t){this.options=t,this.fileSystem=this.createFileSystem(),this.engine=go({...t,fileSystem:this.fileSystem})}get status(){return this.engine.status}registerComposition(t,n){this.engine.registerComposition(t,n)}unregisterComposition(t){this.engine.unregisterComposition(t)}getDocument(t){return this.engine.getDocument(t)}getAffectedCompositions(t){return this.engine.getAffectedCompositions(t)}getCompositionContext(t){return this.engine.getCompositionContext(t)}initializeComposition(t){return this.engine.initializeComposition(t)}getHistoryStatus(){return this.engine.getHistoryStatus()}getObjectEditContext(t,n,r){return r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n)}getRenderDetail(t,n){return this.engine.getRenderDetail(t,n)}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(t){return _o(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.engine.getCompositionEntryFiles()})}getSourceFile(t){return Oo(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.engine.getCompositionEntryFiles()})}resolveSourceLocation(t){return Mo(t,this.engine.getRenderDetail(t.key,t.composition))}refreshSourceForKey(t,n){return this.engine.refreshSourceForKey(t,n)}execute(t){return this.engine.execute(t)}undo(t){return this.engine.undo(t)}redo(t){return this.engine.redo(t)}notifyFileChanged(t){this.engine.notifyFileChanged(t)}subscribe(t){return this.engine.subscribe(t)}dispose(){this.engine.dispose()}createFileSystem(){if(this.options.fileSystem)return this.options.fileSystem;let t=new Map,{projectRoot:n}=this.options;return{async readFile(r){return Ct.readFile(Ye.join(n,r),"utf8")},async readFileBytes(r){return Ct.readFile(Ye.join(n,r))},async getFileInfo(r){let o=Ye.join(n,...r.split("/"));try{let i=await Ct.lstat(o);return!i.isFile()||i.isSymbolicLink()?null:{path:r,sizeBytes:i.size}}catch{return null}},async writeFile(r,o){await ei(Ye.join(n,r),o)},async createExclusive(r,o){let i=Ye.join(n,r);await Ct.mkdir(Ye.dirname(i),{recursive:!0});let s=await Ct.open(i,"wx");try{await s.writeFile(o,"utf8")}catch(a){throw await s.close(),await Ct.rm(i,{force:!0}),a}await s.close()},async deleteFile(r){await Ct.rm(Ye.join(n,r),{force:!0});let o=r.replace(/\\/g,"/"),i=["components/site/generated","src/components/site/generated"].find(c=>o.startsWith(`${c}/`));if(!i)return;let s=Ye.join(n,i),a=Ye.dirname(Ye.join(n,o));for(;a!==s&&a.startsWith(`${s}${Ye.sep}`);){try{await Ct.rmdir(a)}catch(c){if(c instanceof Error&&"code"in c&&c.code==="ENOENT"){a=Ye.dirname(a);continue}break}a=Ye.dirname(a)}},async exists(r){try{return await Ct.access(Ye.join(n,r)),!0}catch{return!1}},async listFiles(r={}){let o=r.roots??[...LR,...DR],i=[],s=new Set,a=new Set,c=0;for(let f of o)await d(f,i,1);let l=i.sort((f,m)=>f.path.localeCompare(m.path));return a.size>0?{files:l,truncated:{reasons:[...a]}}:{files:l};async function d(f,m,u){if(r.maxDepth!==void 0&&u>r.maxDepth){a.add("max-depth");return}let g=Ye.join(n,...f.split("/")),h;try{h=await Ct.lstat(g)}catch{return}if(h.isSymbolicLink())return;if(h.isFile()){let E=h.ino>0?`${String(h.dev)}:${String(h.ino)}`:null;if(E&&s.has(E))return;if(r.maxFiles!==void 0&&m.length>=r.maxFiles){a.add("max-files");return}if(r.maxTotalBytes!==void 0&&c+h.size>r.maxTotalBytes){a.add("max-total-bytes");return}E&&s.add(E),m.push({path:f,sizeBytes:h.size}),c+=h.size;return}if(!h.isDirectory())return;if(r.maxFiles!==void 0&&m.length>=r.maxFiles){a.add("max-files");return}let b=await Ct.readdir(g,{withFileTypes:!0});for(let E of b)E.isSymbolicLink()||await d(`${f}/${E.name}`,m,u+1)}},getVersion(r){return t.get(r)??1},bumpVersion(r){let o=(t.get(r)??1)+1;return t.set(r,o),o}}}};function il(e){return new rs(e)}var os=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=il({projectRoot:t.projectRoot,fileSystem:t.fileSystem,compositions:t.compositions,onEvent:n=>{let r=To(n,{siteId:t.siteId,snapshotId:t.snapshotId});if(r){t.onEvent?.(r);for(let o of this.listeners)o(r)}},dev:t.dev,...t.historyStore?{historyStore:t.historyStore}:{},...t.tenantId?{tenantId:t.tenantId}:{},...t.initialDocumentVersions!==void 0?{initialDocumentVersions:t.initialDocumentVersions}:{},siteId:t.siteId,snapshotId:t.snapshotId})}get status(){return this.engine.status}initializeComposition(t){return this.engine.initializeComposition(t)}registerComposition(t,n){this.engine.registerComposition(t,n)}unregisterComposition(t){this.engine.unregisterComposition(t)}getDocument(t){return{ok:!0,composition:this.engine.getCompositionContext(t),data:Po(this.engine.getDocument(t),{siteId:this.options.siteId,snapshotId:this.options.snapshotId})}}getInternalDocument(t){return this.engine.getDocument(t)}getStyleContext(t){return{ok:!0,composition:this.engine.getCompositionContext(t),data:this.engine.getDocument(t).styleContext??null}}async getHistoryStatus(){return{ok:!0,composition:this.options.compositions[0].context,data:await this.engine.getHistoryStatus()}}getObjectEditContext(t,n,r){return{ok:!0,composition:this.engine.getCompositionContext(n),data:Ao(r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n))}}getClassNameSource(t,n){return{ok:!0,composition:this.engine.getCompositionContext(n),data:this.engine.getClassNameSource(t,n)}}async getSourceTree(t){return{ok:!0,composition:this.engine.getCompositionContext(t),data:await this.engine.getSourceTree(t)}}async getSourceFile(t){return{ok:!0,composition:this.engine.getCompositionContext(t.composition),data:await this.engine.getSourceFile(t)}}resolveSourceLocation(t){return{ok:!0,composition:this.engine.getCompositionContext(t.composition),data:this.engine.resolveSourceLocation(t)}}refreshSourceForKey(t,n){return this.engine.refreshSourceForKey(t,n)}async executeOperation(t,n){let r=n===void 0||t.mutationContext!==void 0?t:{...t,mutationContext:n},o=BR.safeParse(r);if(!o.success)return No(t,o.error.issues.map(s=>s.message));let i=await this.engine.execute(o.data);if(!i.ok){let s=i.error;if(!s)throw new Error("executeOperation failed without an error payload");return{ok:!1,composition:i.composition,error:{code:s.code,message:s.message,...s.details?{details:s.details}:{}},data:{requestId:i.requestId,kind:i.kind,composition:i.composition,target:i.target,resultVersion:i.resultVersion,...i.affectedFiles?.length?{affectedFiles:i.affectedFiles}:{}}}}return{ok:!0,composition:i.composition,data:hn(i)}}async undo(t){let n=await this.engine.undo();if(!n.ok){let r=n.error;if(!r)throw new Error("undo failed without an error payload");return{ok:!1,composition:n.composition,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,composition:n.composition,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,composition:n.composition,data:hn(n)}}async redo(t){let n=await this.engine.redo();if(!n.ok){let r=n.error;if(!r)throw new Error("redo failed without an error payload");return{ok:!1,composition:n.composition,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,composition:n.composition,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,composition:n.composition,data:hn(n)}}notifyFileChanged(t){this.engine.notifyFileChanged(t)}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}dispose(){this.listeners.clear(),this.engine.dispose()}};function $R(e){return new os(e)}import{createHash as jR,randomUUID as yl}from"node:crypto";import Ae from"node:fs/promises";import Fe from"node:path";var bt=1,al=1,VR=2,UR="index.json",KR="recovery.json",JR="transaction-journal.json",XR="document-version.json",ss={maxEntries:100,maxSessionBytes:512*1024*1024,maxEntryBytes:128*1024*1024},ee={INVALID_ROOT:"INVALID_ROOT",INVALID_PATH:"INVALID_PATH",INVALID_SCHEMA:"INVALID_SCHEMA",INVALID_JSON:"INVALID_JSON",INDEX_CORRUPT:"INDEX_CORRUPT",ENTRY_CORRUPT:"ENTRY_CORRUPT",BLOB_CORRUPT:"BLOB_CORRUPT",RECOVERY_PENDING:"RECOVERY_PENDING",CAPACITY_EXCEEDED:"CAPACITY_EXCEEDED",NOT_FOUND:"NOT_FOUND"},oe=class extends Error{constructor(t,n,r){super(n),this.name="FileHistoryStoreError",this.code=t,r?.cause!==void 0&&(this.cause=r.cause)}};async function Bg(e,t={}){let n=iw(e),r=cw(t.limits),o=sl(n),i=sw(n),s=await et(i),a=await et(o)||s;a||(await ZR(n),await QR(n)),a||await lw(n);let c=await st(n),l=new Set(a?(await ds(n)).map(f=>f.stageId):[]);a||await ho(n,c.entryIds);let d=async()=>{if(await et(o)||s)throw new oe(ee.RECOVERY_PENDING,"history store requires explicit recovery before accepting writes")};return{rootDir:n,recoveryRequired:a,async readDocumentVersion(){return Dg(n)},async writeDocumentVersion(f){if(await d(),!Number.isInteger(f)||f<0)throw new oe(ee.INVALID_SCHEMA,"document version must be a non-negative integer");let m=await Dg(n);await yo(Xg(n),{schemaVersion:1,version:Math.max(m,f)})},async stageAppend(f,m={}){await d();let u=await Ag(f,r),g={schemaVersion:al,stageId:yl(),entryId:u.entryId,blobIds:u.blobs.map(h=>h.digest)};try{await Tg(n,u),await WR(n,g,m.durableManifest!==!1)}catch(h){try{await _g(n,g)}catch(b){throw new oe(ee.INDEX_CORRUPT,"staged history cleanup failed after preparation error",{cause:b})}throw h}return{stageId:g.stageId,entryId:g.entryId,blobIds:g.blobIds}},async discardStage(f){await d(),dl(f);let m=await ll(n,f);m&&await _g(n,m)},async previewStagedAppend(f,m){return await d(),(await Pg(n,r,f,m)).transition},async previewCursor(f,m){await d();let u=await st(n);return fl(u,m),cl(f,u.entryIds.length),$g(u,u.entryIds,f)},async publishStagedAppend(f,m,u){if(await d(),as(f,"entryId"),u){dl(u);let h=await ll(n,u);if(!h||h.entryId!==f)throw new oe(ee.INVALID_SCHEMA,"history stage does not match the published entry")}let g=await Pg(n,r,f,m);return Mg({rootDir:n,previousDigest:g.current.digest,entryIds:g.entryIds,cursor:g.cursor,afterWrite:async()=>{u?await cs(n,u):await YR(n,f),await ho(n,g.entryIds)}})},async append(f){await d();let m=await st(n),u=await Ag(f,r),g=[...m.entryIds];m.cursor<g.length-1&&g.splice(m.cursor+1),g.push(u.entryId);try{await Tg(n,u);let h=await jg(n,g,r);return await bl(n,h.entryIds,h.cursor),await ho(n,h.entryIds),st(n)}catch(h){throw await ho(n,m.entryIds),h}},async readEntry(f){return as(f,"entryId"),bo(n,f)},async readBlob(f){as(f,"blobId");let m=await wl(n,f),u=await cn(m,ee.NOT_FOUND,"blob");return Sl(u,f,m),u},async readIndex(){return st(n)},async readStatus(){let f=await st(n);return{canUndo:f.undoIds.length>0,canRedo:f.redoIds.length>0,undoDepth:f.undoIds.length,redoDepth:f.redoIds.length,cursor:f.cursor,recoveryRequired:await et(o)||await et(i)}},async readUndoRedoIds(){let f=await st(n);return{undoIds:f.undoIds,redoIds:f.redoIds,currentId:f.currentId}},async setCursor(f,m){await d();let u=await st(n);return fl(u,m),cl(f,u.entryIds.length),Mg({rootDir:n,previousDigest:u.digest,entryIds:u.entryIds,cursor:f})},async markRecoveryRequired(f){await et(o)||await yo(sl(n),{schemaVersion:bt,reason:aw(f),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await Ae.rm(sl(n),{force:!0})},async readTransactionJournal(){return await et(i)?is(i):null},async writeTransactionJournal(f){await d(),zg(f);try{await yo(i,f)}catch(u){let g=await is(i).catch(()=>null);if(g&&Buffer.from(at(g)).equals(Buffer.from(at(f))))return;throw g?new oe(ee.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous",{cause:u}):u}let m=await is(i);if(!Buffer.from(at(m)).equals(Buffer.from(at(f))))throw new oe(ee.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous")},async clearTransactionJournal(f){let m=await et(i)?await is(i):null;if(m&&m.transactionId!==f)throw new oe(ee.INVALID_SCHEMA,"transaction journal changed concurrently");try{await Ae.rm(i,{force:!0})}catch(u){if(!await et(i))return;throw u}if(await et(i))throw new oe(ee.INDEX_CORRUPT,"transaction journal clear outcome is ambiguous");s=!1},async cleanupTmp(){await d();for(let m of l)await cs(n,m),l.delete(m);await qR(n);let f=await st(n);await ho(n,f.entryIds)}}}async function Pg(e,t,n,r){as(n,"entryId");let o=await st(e);fl(o,r);let i=await bo(e,n),s=[...o.entryIds];o.cursor<s.length-1&&s.splice(o.cursor+1),s.push(i.id);let a=await jg(e,s,t);return{current:o,entryIds:a.entryIds,cursor:a.cursor,transition:$g(o,a.entryIds,a.cursor)}}function $g(e,t,n){return cl(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:zR(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function zR(e,t){return ln(at({schemaVersion:bt,entryIds:e,cursor:t}))}function cl(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new oe(ee.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function HR(e){if(!Rt(e))return!1;let t=e.publishedCursor,n=e.publishedCurrentId;return!ct(e.expectedIndexDigest)||!ct(e.publishedIndexDigest)||!Number.isInteger(t)||t<-1||n!==null&&!ct(n)?!1:t===-1?n===null:ct(n)}async function Ag(e,t){if(!e.kind.trim())throw new oe(ee.INVALID_JSON,"history entry kind must not be empty");let n=[],r=[];for(let c of e.blobs??[]){if(!c.name.trim())throw new oe(ee.INVALID_JSON,"history blob name must not be empty");let l=ow(c.data),d=ln(l);n.push({name:c.name,bytes:l,digest:d,sizeBytes:l.byteLength}),r.push({name:c.name,digest:d,sizeBytes:l.byteLength})}let o={schemaVersion:bt,kind:e.kind,manifest:e.manifest,blobs:r},i=at({...o}),s=ln(i),a=i.byteLength+n.reduce((c,l)=>c+l.sizeBytes,0);if(a>t.maxEntryBytes)throw new oe(ee.CAPACITY_EXCEEDED,`history entry exceeds maxEntryBytes (${a} > ${t.maxEntryBytes})`);return{entryBody:o,entryId:s,blobs:n}}async function Tg(e,t){let n=kl(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Fg(Il(e,a.digest),a.bytes,{kind:"blob",digest:a.digest},Rl(e,a.digest))),Fg(n,at(r),{kind:"entry",digest:t.entryId},Cl(e,t.entryId))],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Fg(e,t,n,r){let o=await gl(e)??(r?await gl(r):null);if(o!==null){if(Buffer.compare(o,t)!==0)throw new oe(n.kind==="blob"?ee.BLOB_CORRUPT:ee.ENTRY_CORRUPT,`${n.kind} content mismatch for ${n.digest}`);return}await Kg(e,t)}async function jg(e,t,n){let r=[...t],o=r.length-1;for(;;){if((await Ug(e,r)).totalBytes<=n.maxSessionBytes&&r.length<=n.maxEntries)return{entryIds:r,cursor:o};if(o<=0||r.length===0)throw new oe(ee.CAPACITY_EXCEEDED,"history store exceeds capacity limits and the current entry cannot be trimmed");r.shift(),o-=1}}async function WR(e,t,n){xl(t);let r=vl(e,t.stageId);if(n){await yo(r,t);return}await rw(r,t)}async function ll(e,t){let n=await gl(vl(e,t));if(n===null)return null;let r=So(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=xl(r);if(o.stageId!==t)throw new oe(ee.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function ds(e){let t=[];for(let n of await us(El(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);dl(r);let o=await ll(e,r);o&&t.push(o)}return t}async function _g(e,t){xl(t);let n=await st(e),r=(await ds(e)).filter(s=>s.stageId!==t.stageId),o=new Set(n.entryIds),i=new Set;for(let s of n.entryIds){let a=await bo(e,s);for(let c of a.blobs)i.add(c.digest)}for(let s of r){o.add(s.entryId);for(let a of s.blobIds)i.add(a)}o.has(t.entryId)||await Og(kl(e,t.entryId),Cl(e,t.entryId));for(let s of t.blobIds)i.has(s)||await Og(Il(e,s),Rl(e,s));await cs(e,t.stageId),await hl(Eo(e)),await hl(vo(e))}async function cs(e,t){await ul(vl(e,t)),await GR(e)}async function GR(e){try{await Ae.rmdir(El(e))}catch(t){if(ko(t)||Rt(t)&&t.code==="ENOTEMPTY")return;throw t}}async function YR(e,t){for(let n of await ds(e))n.entryId===t&&await cs(e,n.stageId)}async function ul(e){if(await Ae.rm(e,{force:!0}),await et(e))throw new oe(ee.INDEX_CORRUPT,`unable to remove staged history object: ${e}`)}async function Og(e,t){await ul(e),await ul(t)}function xl(e){if(!Rt(e)||e.schemaVersion!==al||typeof e.stageId!="string"||!Vg(e.stageId)||!ct(e.entryId))throw new oe(ee.INVALID_SCHEMA,"history stage schema is invalid");let t=Jg(e.blobIds,"history stage blobIds");return{schemaVersion:al,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function dl(e){if(!Vg(e))throw new oe(ee.INVALID_PATH,"history stageId must be a UUID")}function Vg(e){return typeof e=="string"&&/^[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/iu.test(e)}async function ho(e,t){let n=new Set(t),r=new Set;for(let c of t){let l=await bo(e,c);for(let d of l.blobs)r.add(d.digest)}for(let c of await ds(e)){n.add(c.entryId);for(let l of c.blobIds)r.add(l)}let o=Eo(e),i=await us(o);for(let c of i){if(!c.endsWith(".json"))continue;let l=Lg(c.slice(0,-5));l&&!n.has(l)&&await ls(Fe.join(o,c))}let s=vo(e),a=await us(s);for(let c of a){let l=Lg(c);l&&!r.has(l)&&await ls(Fe.join(s,c))}}async function st(e){let t=fs(e),n=await cn(t,ee.NOT_FOUND,"index"),r=So(Buffer.from(n).toString("utf8"),"index"),o=ew(r),i=[...o.entryIds],{totalBytes:s}=await Ug(e,i),a=i.slice(0,o.cursor+1).reverse(),c=i.slice(o.cursor+1);return{schemaVersion:bt,digest:o.digest,entryIds:i,cursor:o.cursor,currentId:i[o.cursor]??null,undoIds:a,redoIds:c,totalBytes:s}}async function Ug(e,t){let n=0,r=new Set,o=fs(e),i=await cn(o,ee.NOT_FOUND,"index");n+=i.byteLength;for(let s of t){let a=await bo(e,s),c=await Hg(e,s),l=await cn(c,ee.NOT_FOUND,"entry");n+=l.byteLength;for(let d of a.blobs){if(r.has(d.digest))continue;r.add(d.digest);let f=await wl(e,d.digest),m=await cn(f,ee.NOT_FOUND,"blob");Sl(m,d.digest,f),n+=m.byteLength}}return{totalBytes:n}}async function bo(e,t){let n=await Hg(e,t),r=await cn(n,ee.NOT_FOUND,"entry"),o=So(Buffer.from(r).toString("utf8"),`entry ${t}`),i=tw(o);if(i.id!==t)throw new oe(ee.ENTRY_CORRUPT,`entry id mismatch for ${t}`);if(ln(at({schemaVersion:i.schemaVersion,kind:i.kind,manifest:i.manifest,blobs:i.blobs}))!==t)throw new oe(ee.ENTRY_CORRUPT,`entry hash mismatch for ${t}`);for(let a of i.blobs){let c=await wl(e,a.digest),l=await cn(c,ee.NOT_FOUND,"blob");Sl(l,a.digest,c)}return i}async function bl(e,t,n){let r={schemaVersion:bt,digest:ln(at({schemaVersion:bt,entryIds:t,cursor:n})),entryIds:t,cursor:n};await yo(fs(e),r)}function fl(e,t){if(t!==void 0&&e.digest!==t)throw new oe(ee.INVALID_SCHEMA,`history index changed concurrently (expected ${t}, current ${e.digest})`)}async function Mg(e){let t=ln(at({schemaVersion:bt,entryIds:e.entryIds,cursor:e.cursor}));try{return await bl(e.rootDir,e.entryIds,e.cursor),await e.afterWrite?.(),await st(e.rootDir)}catch(n){let r=await st(e.rootDir).catch(()=>null);if(r?.digest===t)return r;throw r?.digest===e.previousDigest?n:new oe(ee.INDEX_CORRUPT,"history index publish outcome is ambiguous",{cause:n})}}async function ZR(e){await Ae.mkdir(e,{recursive:!0}),await Ae.mkdir(Eo(e),{recursive:!0}),await Ae.mkdir(vo(e),{recursive:!0}),await Ae.mkdir(xo(e),{recursive:!0})}async function QR(e){await Ae.rm(xo(e),{recursive:!0,force:!0}),await Ae.mkdir(xo(e),{recursive:!0})}async function qR(e){let t=xo(e);await Ae.mkdir(t,{recursive:!0});for(let n of await us(t))n!=="stages"&&await Ae.rm(Fe.join(t,n),{recursive:!0,force:!0})}function ew(e){if(!Rt(e))throw new oe(ee.INDEX_CORRUPT,"index.json must be an object");if(e.schemaVersion!==bt)throw new oe(ee.INVALID_SCHEMA,`unsupported index schemaVersion: ${String(e.schemaVersion)}`);let t=Jg(e.entryIds,"index.entryIds"),n=e.cursor;if(!Number.isInteger(n)||n<-1||n>=t.length)throw new oe(ee.INDEX_CORRUPT,"index cursor is out of bounds");let r=n,o=e.digest;if(!ct(o))throw new oe(ee.INDEX_CORRUPT,"index digest is invalid");let i=ln(at({schemaVersion:bt,entryIds:t,cursor:r}));if(o!==i)throw new oe(ee.INDEX_CORRUPT,"index digest mismatch");return{schemaVersion:bt,digest:o,entryIds:t,cursor:r}}function tw(e){if(!Rt(e))throw new oe(ee.ENTRY_CORRUPT,"entry must be an object");if(e.schemaVersion!==bt)throw new oe(ee.INVALID_SCHEMA,`unsupported entry schemaVersion: ${String(e.schemaVersion)}`);let t=e.id;if(!ct(t))throw new oe(ee.ENTRY_CORRUPT,"entry id is invalid");let n=e.kind;if(typeof n!="string"||n.trim().length===0)throw new oe(ee.ENTRY_CORRUPT,"entry kind is invalid");let r=ml(e.manifest,"entry.manifest"),o=nw(e.blobs);return{id:t,schemaVersion:bt,kind:n,manifest:r,blobs:o}}function nw(e){if(!Array.isArray(e))throw new oe(ee.ENTRY_CORRUPT,"entry blobs must be an array");return e.map((t,n)=>{if(!Rt(t))throw new oe(ee.ENTRY_CORRUPT,`entry blob ref ${n} must be an object`);let r=t.name;if(typeof r!="string"||r.trim().length===0)throw new oe(ee.ENTRY_CORRUPT,`entry blob ref ${n} name is invalid`);let o=t.digest;if(!ct(o))throw new oe(ee.ENTRY_CORRUPT,`entry blob ref ${n} digest is invalid`);let i=t.sizeBytes;if(!Number.isInteger(i)||i<0)throw new oe(ee.ENTRY_CORRUPT,`entry blob ref ${n} sizeBytes is invalid`);return{name:r,digest:o,sizeBytes:i}})}async function yo(e,t){await Kg(e,at(t))}async function rw(e,t){let n=Fe.dirname(e),r=Fe.basename(e),o=Fe.join(n,`.${r}.${process.pid}.${yl()}.tmp`);await Ae.mkdir(n,{recursive:!0});try{await Ae.writeFile(o,at(t),{flag:"wx"}),await Ae.rename(o,e)}finally{await ls(o)}}async function Kg(e,t){let n=Fe.dirname(e),r=Fe.basename(e),o=Fe.join(n,`.${r}.${process.pid}.${yl()}.tmp`);await Ae.mkdir(n,{recursive:!0});try{let i=await Ae.open(o,"wx");try{await i.writeFile(t),await i.sync()}finally{await i.close()}await Ae.rename(o,e),await hl(n)}finally{await ls(o)}}function at(e){return Buffer.from(JSON.stringify(pl(e)),"utf8")}function pl(e){if(Array.isArray(e))return e.map(t=>pl(t));if(Rt(e)){let t={};for(let n of Object.keys(e).sort())t[n]=pl(e[n]);return t}return e}function So(e,t){try{return JSON.parse(e)}catch(n){throw new oe(ee.INVALID_JSON,`${t} is not valid JSON`,{cause:n})}}function ml(e,t){if(e===null)return null;switch(typeof e){case"boolean":case"number":case"string":return e;case"object":if(Array.isArray(e))return e.map(n=>ml(n,t));if(Rt(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=ml(o,t);return n}break}throw new oe(ee.INVALID_JSON,`${t} must be JSON-serializable`)}function Jg(e,t){if(!Array.isArray(e))throw new oe(ee.INDEX_CORRUPT,`${t} must be an array`);return e.map((n,r)=>{if(!ct(n))throw new oe(ee.INDEX_CORRUPT,`${t}[${r}] is invalid`);return n})}function as(e,t){if(!ct(e))throw new oe(ee.INVALID_PATH,`${t} must be a sha256 digest`)}function ct(e){return typeof e=="string"&&/^sha256:[a-f0-9]{64}$/u.test(e)}function ln(e){return`sha256:${jR("sha256").update(e).digest("hex")}`}function ow(e){return typeof e=="string"?Buffer.from(e,"utf8"):Buffer.from(e)}async function cn(e,t,n){try{return await Ae.readFile(e)}catch(r){throw new oe(t,`${n} not found: ${e}`,{cause:r})}}async function gl(e){try{return await Ae.readFile(e)}catch(t){if(ko(t))return null;throw t}}function Sl(e,t,n){if(ln(e)!==t)throw new oe(ee.BLOB_CORRUPT,`blob hash mismatch for ${n}`)}async function et(e){try{return await Ae.access(e),!0}catch(t){if(ko(t))return!1;throw t}}async function ls(e){try{await Ae.rm(e,{force:!0,recursive:!0})}catch{}}async function hl(e){try{let t=await Ae.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function us(e){try{return await Ae.readdir(e)}catch(t){if(ko(t))return[];throw t}}function iw(e){if(typeof e!="string"||e.trim().length===0)throw new oe(ee.INVALID_ROOT,"history store rootDir must be a non-empty string");return Fe.resolve(e)}function fs(e){return Fe.join(e,UR)}function sl(e){return Fe.join(e,KR)}function sw(e){return Fe.join(e,JR)}function Xg(e){return Fe.join(e,XR)}async function Dg(e){try{let t=await Ae.readFile(Xg(e),"utf8"),n=So(t,"document version");if(!Rt(n)||n.schemaVersion!==1||!Number.isInteger(n.version)||n.version<0)throw new oe(ee.INVALID_SCHEMA,"document version schema is invalid");return n.version}catch(t){if(ko(t))return 0;throw t}}async function is(e){let t=await cn(e,ee.RECOVERY_PENDING,"transaction journal"),n=So(Buffer.from(t).toString("utf8"),"transaction journal");return zg(n),n}function zg(e){if(!Rt(e)||e.schemaVersion!==VR||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!HR(e.historyTransition)||!Array.isArray(e.files))throw new oe(ee.INVALID_SCHEMA,"transaction journal schema is invalid");for(let t of e.files)if(!Rt(t)||typeof t.path!="string"||t.path.length===0||t.preDigest!==null&&!ct(t.preDigest)||t.postDigest!==null&&!ct(t.postDigest))throw new oe(ee.INVALID_SCHEMA,"transaction journal file digest is invalid")}function aw(e){return e.replace(/[\r\n]+/g," ").slice(0,512)}function Eo(e){return Fe.join(e,"entries")}function vo(e){return Fe.join(e,"blobs")}function xo(e){return Fe.join(e,"tmp")}function El(e){return Fe.join(xo(e),"stages")}function vl(e,t){return Fe.join(El(e),`${t}.json`)}function kl(e,t){return Fe.join(Eo(e),`${Gg(t)}.json`)}function Il(e,t){return Fe.join(vo(e),Gg(t))}function Cl(e,t){return Fe.join(Eo(e),`${t}.json`)}function Rl(e,t){return Fe.join(vo(e),t)}async function Hg(e,t){return Wg(kl(e,t),Cl(e,t))}async function wl(e,t){return Wg(Il(e,t),Rl(e,t))}async function Wg(e,t){return await et(e)?e:await et(t)?t:e}function Gg(e){return e.slice(7)}function Lg(e){let t=e.startsWith("sha256:")?e:`sha256:${e}`;return ct(t)?t:null}function Rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ko(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function cw(e){return{maxEntries:e?.maxEntries??ss.maxEntries,maxSessionBytes:e?.maxSessionBytes??ss.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??ss.maxEntryBytes}}async function lw(e){let t=fs(e);await et(t)||await bl(e,[],-1)}export{oe as FileHistoryStoreError,Dr as PageTemplateManagedSourceError,os as PreviewFileSystemSiteEditEngineRuntime,ud as SITE_EDIT_RAW_COLOR_LITERAL_RE,ns as SnapshotSiteEditEngineRuntime,qd as computeManagedPageTemplatePaths,$R as createPreviewSiteEditEngineRuntime,MR as createSiteEditEngineRuntime,Yd as decodePageTemplateKey,Fa as encodePageTemplateId,ef as isManagedPageTemplateSourcePath,Bg as openFileHistoryStore,Ch as parseSourceModule,Rh as resolveImportBase,FE as resolveManagedPageTemplateComposition,xi as scanManagedPageTemplateCandidates,nf as scanSiteEditCompositionsFromFiles,Pr as scanSiteEditThemeStyleViolations};