@vcp-dev/site-edit-engine 0.10.17 → 0.10.18
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 +10 -10
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import{SiteEditOperationRequestSchema as bR,SiteEditPatchPlanSchema as SR}from"@vcp-dev/contracts";function fn(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 Io(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 Co(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 Ro(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:dh(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 wo(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:fn(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 dh(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 OC,computeSiteEditCompositionKey as MC,getSiteEditSourceDeleteProtectionReason as DC,isSiteEditTextSourcePath as LC,parseSiteEditRepeatInstanceKey as BC,SITE_EDIT_SOURCE_DELETE_CAPABILITY as $C,stripSiteEditRepeatInstanceKeys as it}from"@vcp-dev/contracts";import Yi from"node:path";import{parse as jC}from"yaml";import Ss from"node:path";import{TextDecoder as ph}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as Xl,SITE_EDIT_SOURCE_ALLOWED_DIRS as zl,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as Hl,SiteEditCompositionContextSchema as mh,SiteEditSourceFileResponseSchema as hs,SiteEditSourceLocationSchema as gh,SiteEditSourcePathSchema as No,SiteEditSourceTreeResponseSchema as hh,isSiteEditTextSourcePath as yh}from"@vcp-dev/contracts";import{createHash as fh}from"node:crypto";var mr=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 Se(e){return`sha256:${fh("sha256").update(e).digest("hex")}`}var xh=[...Hl,...Xl,...zl];function Es(e){if(!e.composition)throw new Error("Composition unavailable for source access policy.");return mh.parse(e.composition)}var ys=2e3,xs=12,bs=24*1024*1024,Jl=512*1024,bh=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),Sh={".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"},Eh={".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"},vh=new ph("utf-8",{fatal:!0});async function Po(e,t={}){let n=Es(t),{files:r,truncated:o}=await Ph(e,t),i=Fh(r.map(s=>s.metadata));return hh.parse({composition:n,nodes:i,defaultPath:_h(r.map(s=>s.metadata)),totalFiles:r.length,...o?{truncated:o}:{}})}async function Ao(e,t,n={}){let r=Es(n),o=No.parse(t.path),i=await Ih(e,o,n);if(!i)throw new Error(`Source file not found: ${o}`);if(ks(o)){let a=Yl(o),c=await Rh(e,{path:o,sizeBytes:i.sizeBytes,mimeType:a});return hs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:a,readonly:!0,...c})}let s=await vs(e,o);return s.ok?hs.parse({composition:r,path:o,kind:"text",language:Zl(o),sizeBytes:s.sizeBytes,contentHash:Se(s.content),readonly:!1,content:s.content}):hs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:s.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function vs(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=kh(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 kh(e){if(e.includes(0))return null;try{return vh.decode(e)}catch{return null}}async function Ih(e,t,n){if(!wh(t,n))return null;let r=await Ch(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function Ch(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=Wl(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(ks(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function Rh(e,t){if(!bh.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>Jl)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>Jl?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function wh(e,t){return Hl.some(n=>n===e)||Xl.some(n=>n===e)||zl.some(n=>e===n||e.startsWith(`${n}/`))?!0:!e.startsWith("app/")&&!e.startsWith("src/app/")?!1:(t.routeEntryFiles??[]).some(n=>{let r=No.safeParse(n);return r.success&&r.data===e})}function To(e,t){if(!t.sourceLocator)throw new Error(`Source location not available for key: ${e.key}`);return gh.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 Wl(e){return Array.isArray(e)?{files:e}:e}function Nh(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function Ph(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=Wl(await e.listFiles({roots:Ah(t),maxFiles:ys+1,maxDepth:xs,maxTotalBytes:bs+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=No.safeParse(a.path);if(!c.success)continue;let l=c.data;if(l.split("/").length>xs){o.add("max-depth");continue}if(r.size>=ys){o.add("max-files");break}if(i+a.sizeBytes>bs){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:Th(l,a.sizeBytes,Es(t))}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:Nh([...o]),maxFiles:ys,maxDepth:xs,maxTotalBytes:bs}}:{}}}function Ah(e){let t=new Set(xh);for(let n of e.routeEntryFiles??[]){let r=No.safeParse(n);r.success&&(r.data.startsWith("app/")||r.data.startsWith("src/app/"))&&t.add(r.data)}return[...t]}function Th(e,t,n){return ks(e)?{composition:n,path:e,kind:"binary",language:null,sizeBytes:t,mimeType:Yl(e),readonly:!0}:{composition:n,path:e,kind:"text",language:Zl(e),sizeBytes:t,readonly:!1}}function Fh(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 Gl(t)}function Gl(e){return e.map(t=>t.kind==="directory"?{...t,children:Gl(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function _h(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 ks(e){return!yh(e)}function Yl(e){let t=Ss.posix.extname(e).toLowerCase();return!t&&Ss.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":Sh[t]??"application/octet-stream"}function Zl(e){let t=Ss.posix.extname(e).toLowerCase();return Eh[t]??"plaintext"}import*as Ql 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 Is(e,t,n,r,o){return{ok:!1,source:e,diagnostic:pn(t,n,r,o)}}var Oh={"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:Ql.parse(t,{sourceType:"module",plugins:Oh[n]})}}catch(r){return{ok:!1,source:t,diagnostic:pn("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function Cs(e,t){return Rt({source:e,profile:ql(t.kind)})}function gr(e,t){return Rt({source:e,profile:ql(t)})}function ql(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"}import Rs 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")&&eu(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())&&eu(r.parentPath)}function eu(e){return e?.isImportDeclaration()===!0&&e.node.source.value==="react"}var Wt=typeof Rs=="function"?Rs:Rs.default,Fo=new WeakMap,tu=new WeakMap;function Nt(e,t){let n=Cs(e,t);if(!n.ok)return Is(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}}:Is(e,r.diagnostic.code,r.diagnostic.message,t.kind,r.diagnostic.details)}function ie(e,t){return t.kind==="jsx-node"?iu(e,t):t.kind==="jsx-attribute"?jh(e,t):t.kind==="value"?Vh(e,t):t.kind==="expression"?Uh(e,t):t.kind==="directive"?Kh(e,t):t.kind==="export"?Jh(e,t):{ok:!1,diagnostic:pn("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function iu(e,t){return t.strategy==="source-range"?Mh(e,t):Dh(e,t)}function Mh(e,t){let n=null;if(Wt(e,{JSXElement(o){if(!gn(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(!gn(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(!gn(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(!gn(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&&!ny(r.path,t.expectedIdentity)?Me("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function Dh(e,t){if(t.structuralPath===""){let r=Bh(e,t.component);if(r){let o=$h(r);if(o)return o}}let n=null;return Wt(e,{JSXElement(r){if(yr(r)!==t.component||Ns(r)!==t.structuralPath)return;let i=_e("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(yr(r)!==t.component||Ns(r)!==t.structuralPath)return;let i=_e("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=Lh(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:Me("jsx-node","locator-miss","JSX node not found for structural-path locator")}function Lh(e,t,n){let r=null;return Wt(e,{JSXElement(o){if(yr(o)!==t||!gn(o.node,n))return;let i=_e("jsx-node",o);i&&(r=i,o.stop())},JSXFragment(o){if(yr(o)!==t||!gn(o.node,n))return;let i=_e("jsx-node",o);i&&(r=i,o.stop())}}),r}function Bh(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 $h(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=iu(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>ry(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 Vh(e,t){let n=Xh(e,t);if(!n.ok)return n;let r=zh(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 Uh(e,t){let n=null;return Wt(e,{Identifier(r){if(!Qh(r))return;let o=ru(r);if(!o||!ou(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=ru(r);if(!o||!ou(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 Kh(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 Jh(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=Ps(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=Ps(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 '${ty(t)}' not found`)}function Xh(e,t){let n=null;return Wt(e,{Expression(r){if(n||t.root.kind!=="expression"||!gn(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=Ps(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 zh(e,t){let n=ws(e);for(let o of t){if(n=ws(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=>oy(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=ws(n);let r=_e("value",n);return r?{ok:!0,match:r}:Me("value","locator-miss","Resolved value has no source range")}function ws(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 gn(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 Ns(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!Oe(n)){let o=su(n.node.openingElement);o&&(/^[A-Z]/.test(o)?t.unshift(`component:${o}#${nu(n,o)}`):t.unshift(`${o}#${nu(n,o)}`))}}else n.isJSXFragment()&&n.node===r&&t.unshift("fragment");if(!n.parentPath||Yh(n.parentPath)&&!Zh(n.parentPath))break;n=n.parentPath}return t.join("/")}function nu(e,t){let n=Hh(e);if(!n)return 0;let r=Fo.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=0,i=Fo.get(n.node)?.get(t);if(!i){let s=Fo.get(n.node);s||(s=new Map,Fo.set(n.node,s)),i=new WeakMap,s.set(t,i)}for(let s of hr(n))if(su(s.node.openingElement)===t){if(i.set(s.node,o),s.node===e.node)return o;o++}return i.get(e.node)??0}function Hh(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 hr(e){let t=tu.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(...hr(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...hr(o));continue}o.isJSXExpressionContainer()&&n.push(...Vt(o.get("expression")))}return tu.set(e.node,n),n}function Vt(e){if(e.isJSXElement())return Oe(e)?hr(e):[e];if(e.isJSXFragment())return hr(e);if(e.isParenthesizedExpression())return Vt(e.get("expression"));if(e.isLogicalExpression()&&Wh(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 Wh(e){return e==="&&"||e==="||"||e==="??"}function su(e){return e.name.type==="JSXIdentifier"?e.name.name:e.name.type==="JSXMemberExpression"?Gh(e.name):null}function Gh(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 yr(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 Yh(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function Zh(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 Qh(e){return!(!e.isExpression()||e.parentPath?.isMemberExpression({property:e.node}))}function ru(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 ou(e,t){return e.base===t.base&&qh(e.path,t.path??[])}function qh(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 ey(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function ty(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 ny(e,t){return yr(e)!==t.component?!1:Ns(e)===t.structuralPath}function ry(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function Ps(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function oy(e,t){return e.isObjectProperty()?ey(e.node)===t:!1}import*as cu from"@babel/parser";import{arrayExpression as ly,booleanLiteral as uy,identifier as dy,jsxAttribute as fy,jsxExpressionContainer as py,jsxIdentifier as my,nullLiteral as gy,numericLiteral as hy,objectExpression as yy,objectProperty as xy,stringLiteral as Ts}from"@babel/types";import As from"@babel/generator";var iy=typeof As=="function"?As:As.default;function sy(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
|
|
3
|
-
`).map(r=>
|
|
4
|
-
`)}function _o(e){let{ast:t,source:n}=e;try{let r=sy(n),i=iy(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=cy(i,r)),{ok:!0,source:i}}catch(r){return j(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}function au(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 xr(e,t,n){return{ok:!0,source:t,operation:{type:n.kind,nodeId:n.target,kind:n.kind,target:n.target,beforeSourceHash:au(e),afterSourceHash:au(t),inverse:n.inverse}}}function pe(e,t,n){let r=_o({ast:e,source:t});return r.ok?xr(t,r.source,n):r}function Re(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 Oo(e,t){return _o({ast:e,source:t})}function by(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 Mo(e,t,n){let r=by(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"?Ts(e):typeof e=="number"?hy(e):typeof e=="boolean"?uy(e):e===null?gy():Array.isArray(e)?ly(e.map(t=>Gt(t))):yy(Object.entries(e).map(([t,n])=>{let r=xy(Fs(t),Gt(n));return t==="__proto__"&&(r.computed=!0),r}))}function Sy(e){return typeof e=="string"?Ts(e):py(Gt(e))}function br(e,t){return fy(my(e),Sy(t))}function Do(e,t){try{let r=cu.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 Fs(e){return/^[$A-Z_][0-9A-Z_$]*$/i.test(e)?dy(e):Ts(e)}function Lo(e){let{source:t,locator:n,segmentIndex:r,newText:o}=e,i=Re(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=Ey(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=vy(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 pe(i.ast,t,{kind:"update-text",target:"jsx-node",inverse:"restore-text"})}function Ey(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=ky(r.get("expression"));o.length>0&&t.push(...o)}}return t}function vy(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function ky(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 Vn(e){let{source:t,locator:n}=e,r=Re(t,"jsx-node");if(!r.ok)return r.result;let o=ie(r.ast,n);return o.ok?(Iy(o.match.path),pe(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function Iy(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 Cy}from"@babel/types";function Bo(e){let t=Re(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=Do(e.source,e.node.jsx);return r.ok?(n.match.path.replaceWith(Cy(r.node,!0)),pe(t.ast,e.source,{kind:"replace-node",target:"jsx-node",inverse:"replace-node"})):r.result}import{cloneNode as Dy}from"@babel/types";import Os from"@babel/traverse";import*as Z from"@babel/types";function Sr(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 Ry=typeof Os=="function"?Os:Os.default;function dt(e,t,n,r){if(!e.ok)return e;let o=ut(n,t);if(!o)return e;let i=wy(t,o,r);return i?{...e,selectionRef:i}:e}function wy(e,t,n){let r=Ny(e,t);if(!r)return;let o=n.sourceLocator?lu(n.sourceLocator):void 0,i=n.targetParentLocator?lu(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??Ay(r)??i?.component??o?.component;if(!(!s||!a))return{key:Sr(s,a,Ty(r))}}function lu(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function Ny(e,t){let n=gu(e,t);return!n||n.node.type!=="JSXElement"?null:n}function gu(e,t){let n=null;return Ry(e,{JSXElement(r){r.node===t&&(n=r,r.stop())},JSXFragment(r){r.node===t&&(n=r,r.stop())}}),n}function ut(e,t){if(!e)return null;if(Z.isJSXElement(e))return My(t,e)?uu(e.children,t):e;if(Z.isJSXFragment(e))return uu(e.children,t);if(Z.isJSXExpressionContainer(e)||Z.isParenthesizedExpression(e)||Z.isTSAsExpression(e)||Z.isTSSatisfiesExpression(e)||Z.isTSTypeAssertion(e)||Z.isTSNonNullExpression(e))return ut(e.expression,t);if(Z.isLogicalExpression(e))return ut(e.right,t);if(Z.isConditionalExpression(e))return ut(e.consequent,t)??ut(e.alternate,t);if(Z.isCallExpression(e)||Z.isOptionalCallExpression(e))return hu(e)?Py(e.arguments[0],t):null;if(Z.isArrayExpression(e))for(let n of e.elements){if(!n)continue;let r=ut(n,t);if(r)return r}return null}function uu(e,t){for(let n of e){let r=ut(n,t);if(r)return r}return null}function Py(e,t){return!e||!Z.isArrowFunctionExpression(e)&&!Z.isFunctionExpression(e)?null:Z.isBlockStatement(e.body)?Er(e.body.body,t):ut(e.body,t)}function Er(e,t){for(let n of e){if(Z.isReturnStatement(n)){let r=ut(n.argument,t);if(r)return r;continue}if(Z.isBlockStatement(n)){let r=Er(n.body,t);if(r)return r;continue}if(Z.isIfStatement(n)){let r=du(n.consequent,t);if(r)return r;let o=n.alternate?du(n.alternate,t):null;if(o)return o;continue}if(Z.isSwitchStatement(n))for(let r of n.cases){let o=Er(r.consequent,t);if(o)return o}}return null}function du(e,t){return Z.isBlockStatement(e)?Er(e.body,t):Er([e],t)}function Ay(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 fu=new WeakMap,pu=new WeakMap,Ms=new WeakMap;function Ty(e){let t=fu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=Fy(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return fu.set(e.node,o),o}function Fy(e){let t=yu(e.node.openingElement.name);return!t||Oe(e)?null:/^[A-Z]/.test(t)?`component:${t}#${mu(e,t)}`:`${t}#${mu(e,t)}`}function mu(e,t){let n=_y(e);if(!n)return 0;let r=Ms.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Ms.get(n.node);o||(o=new Map,Ms.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0;for(let a of hn(n))if(yu(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 _y(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 hn(e){let t=pu.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(...hn(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...hn(o));continue}o.isJSXExpressionContainer()&&n.push(...Pt(o.get("expression")))}return pu.set(e.node,n),n}function Pt(e){if(e.isJSXElement())return Oe(e)?hn(e):[e];if(e.isJSXFragment())return hn(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())&&hu(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?Oy(n):[]}return[]}function Oy(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return Oe(t)?hn(t):[t];if(t.isJSXFragment())return hn(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 hu(e){let t=e.callee;return(Z.isMemberExpression(t)||Z.isOptionalMemberExpression(t))&&Z.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function My(e,t){let n=gu(e,t);return n?Oe(n):!1}function yu(e){return Z.isJSXIdentifier(e)?e.name:Z.isJSXMemberExpression(e)?xu(e):Z.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function xu(e){return`${Z.isJSXIdentifier(e.object)?e.object.name:xu(e.object)}.${e.property.name}`}function Yt(e,t){if(t.parentPath===e&&t.listKey==="children"&&Ds(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!Ds(n))return null;let r=n;for(;r&&r!==e;){if(!Ds(r)||!Oe(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function Ds(e){return e.isJSXElement()||e.isJSXFragment()}function Un(e){let{source:t,locator:n,node:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Re(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 C=c.match.path.node;if(!C.closingElement||C.openingElement.selfClosing)return j(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=Do(t,r.jsx);if(!u.ok)return u.result;let f=Dy(u.node,!0),m=l.node.children,d={...s,targetParentLocator:n},g=C=>s?dt(C,a.ast,f,d):C;if(o==="append")return m.push(f),g(pe(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return m.unshift(f),g(pe(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,v=E.findIndex(C=>C===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(pe(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"})))}import*as bu from"@babel/parser";import{cloneNode as Ly}from"@babel/types";function $o(e){let{source:t,locator:n,expression:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Re(t,"jsx-node");if(!a.ok)return a.result;let c=By(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 v=Yt(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");u=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=Ly(c.node,!0),d=u.node.children,g={...s,targetParentLocator:n},h=E=>s?dt(E,a.ast,m,g):E;if(o==="append")return d.push(m),h(pe(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return d.unshift(m),h(pe(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(pe(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"})))}function By(e,t){try{let r=bu.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 $y,nullLiteral as Ls}from"@babel/types";import*as Zt from"@babel/types";function Kn(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Re(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 v=l.match.path.node;if(!v.closingElement||v.openingElement.selfClosing)return j(t,"self-closing-element","Cannot move child into self-closing element","jsx-node")}let f=null;if(i){let v=ie(a.ast,i);if(!v.ok)return{ok:!1,source:t,diagnostic:v.diagnostic};let C=Yt(l.match.path,v.match.path);if(!C)return j(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=C,f=v.match.path}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=$y(c.match.path.node,!0);if(!Zt.isJSXElement(d)&&!Zt.isJSXExpressionContainer(d)&&!Zt.isJSXFragment(d)&&!Zt.isJSXText(d))return j(t,"unsupported-syntax","move-node source must resolve to a JSX child","jsx-node");let g=c.match.path.parentPath?.node===u.node&&typeof c.match.path.key=="number"?c.match.path.key:-1;if(f&&c.match.path.parentPath?.node===f.parentPath?.node&&c.match.path.key===f.key)return j(t,"invalid-parent-child-relation","Cannot move a node relative to itself","jsx-node");jy(c.match.path);let h=u.node.children,S={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return h.push(d),dt(Oo(a.ast,t),a.ast,d,S);if(o==="prepend")return h.unshift(d),dt(Oo(a.ast,t),a.ast,d,S);let E=m-(g!==-1&&g<m?1:0);return h.splice(o==="before"?E:E+1,0,d),dt(Oo(a.ast,t),a.ast,d,S)}function jy(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Ls());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Ls());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Ls());return}e.remove()}import*as Su from"@babel/parser";import{cloneNode as Vy,nullLiteral as Bs}from"@babel/types";function jo(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,repeatExpression:s,selectionContext:a}=e,c=Re(t,"jsx-node");if(!c.ok)return c.result;let l=Uy(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 C=f.match.path.node;if(!C.closingElement||C.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 C=ie(c.ast,i);if(!C.ok)return{ok:!1,source:t,diagnostic:C.diagnostic};let N=Yt(f.match.path,C.match.path);if(!N)return j(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");m=N,d=C.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=Vy(l.node,!0);Ky(u.match.path);let S={...a,sourceLocator:n,targetParentLocator:r},E=g.children;if(o==="append")return E.push(h),dt(pe(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),dt(pe(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S);let v=E.findIndex(C=>C===d);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),dt(pe(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S))}function Uy(e,t){try{let r=Su.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 Ky(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Bs());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Bs());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Bs());return}e.remove()}import{SiteEditSetPropsParamsSchema as Jy,classifySiteEditPropertyName as Xy}from"@vcp-dev/contracts";import*as Jn from"@babel/types";function Vo(e){let t=Jy.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=Re(e.source,"jsx-node");if(!n.ok)return n.result;let r=Mo(n.ast,e.locator,e.source);if(!r.ok)return r.result;for(let a of t.data.changes){let c=Xy(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(Jn.isJSXAttribute),s=new Map;for(let a of i){let c=zy(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=br(a.name,a.value).value;c?c.value=l:o.attributes.push(br(a.name,a.value))}return pe(n.ast,e.source,{kind:"set-props",target:"jsx-node",inverse:"set-props"})}function zy(e){return Jn.isJSXIdentifier(e.name)?e.name.name:Jn.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import*as $e from"@babel/types";import{classifySiteEditPropertyName as Eu}from"@vcp-dev/contracts";function Uo(e){let t=Eu(e.name),n=Eu(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(!vu(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=Re(e.source,"jsx-node");if(!r.ok)return r.result;let o=Mo(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)&&Wy(l)===e.name);if(s.length>1)return j(e.source,"unsupported-syntax",`JSX attribute '${e.name}' has multiple sources`,"jsx-node");let a=Hy(e.object,e.property),c=s[0];if(c)c.value=$e.jsxExpressionContainer(a);else{let l=br(e.name,"");l.value=$e.jsxExpressionContainer(a),i.attributes.push(l)}return pe(r.ast,e.source,{kind:"set-property-binding",target:"jsx-node",inverse:"restore-property-binding"})}function Hy(e,t){return vu(t)?$e.memberExpression($e.identifier(e),$e.identifier(t)):$e.memberExpression($e.identifier(e),$e.stringLiteral(t),!0)}function vu(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)}function Wy(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 Yy,identifier as vr,importDeclaration as Zy,importDefaultSpecifier as Qy,importNamespaceSpecifier as qy,importSpecifier as ex,isImportDefaultSpecifier as ku,isImportNamespaceSpecifier as Iu,isImportSpecifier as Cu,stringLiteral as tx}from"@babel/types";function Xn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(S=>!ux(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=ax(r);if(!i.ok)return j(t,"unsupported-syntax",i.message);let s=Re(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 v=dx(S,E);return v?[v]:[]}))),f=i.imports.filter(S=>!u.has(Tu(S)));if(f.length===0)return xr(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let m=cx(c.body),d=f.find(S=>m.has($s(S)));if(d)return j(t,"unsupported-syntax",`Import local binding already exists: ${$s(d)}`);let g=sx(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(!Pu(wu(S)))return j(t,"unsupported-syntax","Unsupported import specifier combination");let E=l.find(v=>nx(v,S));if(E)rx(E,S);else{let v=Zy(Ru(S),tx(n));lx(c.body,v),l.push(v)}}return pe(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function nx(e,t){return e.importKind==="type"?!1:Pu(ix(ox(e),wu(t)))}function rx(e,t){let n=!1,r=new Set(e.specifiers.map(o=>js(o)));for(let o of Ru(t)){let i=js(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return Au(e.specifiers),{changed:n}}function Ru(e){let t=e.map(n=>{switch(n.kind){case"named":return ex(n.local?vr(n.local):vr(n.imported),vr(n.imported));case"default":return Qy(vr(n.local));case"namespace":return qy(vr(n.local));default:return n}});return Au(t),t}function wu(e){let t=Nu();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 ox(e){let t=Nu();for(let n of e.specifiers)ku(n)?t.defaultLocals.add(n.local.name):Iu(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function Nu(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function ix(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function Pu(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function Au(e){let t=[...e.filter(n=>ku(n)),...e.filter(n=>Iu(n)),...e.filter(n=>Cu(n))];e.splice(0,e.length,...t)}function sx(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 ax(e){let t=new Map,n=new Map;for(let r of e){let o=Tu(r);if(t.has(o))continue;let i=$s(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 cx(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(Yy(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 lx(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 ux(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 Tu(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 $s(e){return e.kind==="named"?e.local??e.imported:e.local}function dx(e,t){return e.importKind==="type"||Cu(t)&&t.importKind==="type"?null:js(t)}function js(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 zn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(u=>!px(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=Re(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 xr(t,t,{kind:"remove-import",target:"import",inverse:"add-import"});let l=a.body[c];return r.length===0?(a.body.splice(c,1),pe(s,t,{kind:"remove-import",target:"import",inverse:"add-import"})):(l.specifiers=l.specifiers.filter(u=>!r.some(f=>fx(u,f))),l.specifiers.length===0&&a.body.splice(c,1),pe(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function fx(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 px(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=zo(t,n);return o.ok?(o.path.replaceWith(Gt(r)),pe(o.ast,t,{kind:"update-value",target:"value",inverse:"restore-value"})):o.result}function Ko(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,Gt(o)),pe(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 Jo(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),pe(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 Xo(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),pe(i.ast,t,{kind:"move-array-element",target:"value",inverse:"move-array-element-back"})}function zo(e,t){let n=Re(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 Ue from"@babel/types";function Ho(e){let t=Re(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=>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)&&mx(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)):Gt(e.value.value),s=o[0];if(s)s.value=i,s.shorthand=!1;else{let a=Ue.objectProperty(Fs(e.name),i);e.name==="__proto__"&&(a.computed=!0),r.properties.push(a)}return pe(t.ast,e.source,{kind:"upsert-object-property",target:"value",inverse:"restore-object-property"})}function mx(e){return Ue.isIdentifier(e)?e.name:Ue.isStringLiteral(e)?e.value:Ue.isNumericLiteral(e)?String(e.value):null}import{isSiteEditRuntimeContainerTag as gx,isSiteEditRuntimeVoidElementTag as hx}from"@vcp-dev/contracts/site-edit-runtime-capability";function Hn(e){if(!e.composition)throw new Error("Composition unavailable for render source graph.");return e.composition}function yx(e,t,n){let r=Hn(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(N=>({kind:N.kind,message:N.reason})),a=i.isOpaque,l=o.parentKey===null&&i.componentName==="Page",u=i.tag.toLowerCase(),f=i.tag!==u,m=!f&&hx(u),d=f||gx(u),g=f&&i.childKeys.length>0&&!i.isPublicUiComponent,h=i.textSegments.length>0&&i.textSegments.some(N=>N.editable);m&&!s.some(N=>N.kind==="void-element")&&s.push({kind:"void-element",message:`Element '${i.tag}' is void: children cannot be inserted`}),!m&&!d&&!s.some(N=>N.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 Fu(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,yx(r,e,t));return n}function Vs(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:Se(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Key not found: ${e.key}`}]};let n=xx(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:Se(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:Ou(r),version:{documentVersion:e.route.graph.version,contentHash:Se(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:Ou(o),diagnostics:[]}}function Mu(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 xx(e,t){let n=Rt({source:e,profile:mn({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:bx(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function Du(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 _u(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function Ou(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 bx(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function Lu(){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 Sx}from"node:crypto";import Wo from"node:fs/promises";import Us from"node:path";import{setTimeout as Ex}from"node:timers/promises";var vx={async mkdir(e,t){await Wo.mkdir(e,t)},async writeFile(e,t,n){await Wo.writeFile(e,t,n)},async rename(e,t){await Wo.rename(e,t)},async rm(e,t){await Wo.rm(e,t)}},kx=new Set(["EACCES","EBUSY","EPERM"]),Ix=[10,20,40,80,160];async function Cx(e,t,n){for(let r of Ix)try{await e.rename(t,n);return}catch(o){if(!Rx(o))throw o;await Ex(r)}await e.rename(t,n)}function Rx(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&kx.has(e.code)}async function Go(e,t,n=vx){let r=Us.dirname(e),o=Us.basename(e),i=Us.join(r,`.${o}.${process.pid}.${Sx()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await Cx(n,i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import zs 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=wx(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 wx(e){return ce.isIdentifier(e)?e.name:ce.isStringLiteral(e)?e.value:ce.isNumericLiteral(e)?String(e.value):null}import{createHash as _x}from"node:crypto";import*as Nx from"@babel/parser";import*as Wn from"@babel/types";import*as Qt from"node:path";var Ks=[".tsx",".ts",".jsx",".js"],Px=Ks.map(e=>`/index${e}`),Ax=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 Bu(e){let t=e.replace(/[?#].*$/,""),n=/\.([a-z0-9]+)$/i.exec(t);return n!==null&&Ax.has(n[1].toLowerCase())}function $u(e){let t=[];for(let n of e.program.body)Wn.isImportDeclaration(n)&&typeof n.source.value=="string"&&Tt(n.source.value)&&t.push(n.source.value),Wn.isExportNamedDeclaration(n)&&n.source&&typeof n.source.value=="string"&&Tt(n.source.value)&&t.push(n.source.value),Wn.isExportAllDeclaration(n)&&typeof n.source.value=="string"&&Tt(n.source.value)&&t.push(n.source.value);return Js(e.program,t),t}function Js(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)Js(o,t);else r&&typeof r=="object"&&Js(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 Tx(e,t){if(Ks.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of Ks){let r=`${e}${n}`;if(await t(r))return r}for(let n of Px){let r=`${e}${n}`;if(await t(r))return r}return null}async function yn(e,t,n){let r=await Yo(e,t,n);return r.ok?r.path:null}async function Yo(e,t,n){let r=Ir(e,t);try{if(!Fx(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 Tx(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 Fx(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:mn({filePath:e,source:t})});return n.ok?{ok:!0,module:{file:e,source:t,sourceHash:`sha256:${_x("sha256").update(t).digest("hex")}`,ast:n.ast,imports:$u(n.ast).map(r=>({specifier:r}))}}:{ok:!1,diagnostic:{path:e,code:"parse-failed",message:n.diagnostic.message}}};var Zo="components/ui";function xn(e){if(!e)return!1;let t=Xs(e);return t===Zo||t.startsWith(`${Zo}/`)||t.includes(`/${Zo}/`)||t.endsWith(`/${Zo}`)}function Rr(e,t){return e?e.startsWith("@/")||e.startsWith("~/")?xn(e.slice(2)):e.startsWith("./")||e.startsWith("../")?xn(Xs(`${Ox(t)}/${e}`)):xn(e):!1}function Xs(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 Ox(e){let t=Xs(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}var Mx=typeof zs=="function"?zs:zs.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 Dx(e){return/^[A-Z]/.test(e)}function Zs(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 Yn(e){return b.isJSXFragment(e)}function Vu(e){return b.isJSXIdentifier(e.name)?e.name.name:b.isJSXMemberExpression(e.name)?Uu(e.name):b.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function Uu(e){return b.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:b.isJSXMemberExpression(e.object)?`${Uu(e.object)}.${e.property.name}`:e.property.name}function Lx(e){return e.split(".")[0]??e}function Bx(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 $x(){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 xt(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 Vx(e,t,n){e.set(t,{resolved:!0,value:n})}function Qs(e,t){e.set(t,{resolved:!1})}function Ku(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 Qo([Le(e.left,t,n),Le(e.right,t,n)]);if(b.isBinaryExpression(e))return Qo([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 Qo([Le(e.consequent,t,n),Le(e.alternate,t,n)]);if(b.isTemplateLiteral(e))return Qo(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:xt(e,t),base:o.name,path:r}:null}function Qo(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=Ku(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(b.isCallExpression(e))return Xu(e,t)??void 0}function Ju(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:xt(e,n),source:null}:null;let o=wr(r.base,t.valueScopes),i=r.kind==="identifier"?o:o.kind==="resolved"?Ku(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 Hs(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:$x(),parentStack:[],valueScopes:i,importMap:o}}function Gs(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of Kt(o.id))Qs(n,s);if(!b.isIdentifier(o.id)||!o.init||!b.isExpression(o.init))continue;let i=qt(o.init,t);i!==void 0&&Vx(n,o.id.name,i)}}function Ux(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 Kx(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:xt(s,n),sourceRange:Xe(i),editable:!0,source:Le(s,n,t)})}else if(b.isJSXExpressionContainer(i)&&b.isExpression(i.expression)){let s=Ju(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:Xe(i),editable:!0,source:s.source})}return r}function Jx(e,t,n){let r=[];for(let[o,i]of e.attributes.entries()){if(!b.isJSXAttribute(i))continue;let s=zx(i.name);if(!s)continue;let a=xt(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?Xu(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=Ju(i.value.expression,t,n);if(c!==void 0){r.push({name:s,value:qx(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=Hx(i.value.expression,t),f=Le(i.value.expression,n,t),m=l?.value??xt(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 Xx(e,t,n){return e.attributes.flatMap((r,o)=>!b.isJSXSpreadAttribute(r)||!b.isExpression(r.argument)?[]:[{raw:xt(r.argument,n),sourceRange:Xe(r),order:o,source:Le(r.argument,n,t)}])}function zx(e){return b.isJSXIdentifier(e)?e.name:b.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function Hx(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 Xu(e,t){let n=Gn(e,t);return n&&n.map(o=>o.trim()).filter(Boolean).join(" ")||null}function Gn(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=Gn(e.consequent,t),r=Gn(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?[]:Gn(e.right,t)}if(b.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||b.isSpreadElement(r))return null;let o=Gn(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=Gx(r.key);if(!o)return null;n.push(o)}return n}if(b.isCallExpression(e)){let n=Wx(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=Gn(o,t);if(!i)return null;r.push(...i)}return r}return null}function Wx(e){return b.isIdentifier(e)?e.name:b.isMemberExpression(e)&&b.isIdentifier(e.property)?e.property.name:null}function Gx(e){return b.isIdentifier(e)?e.name:b.isStringLiteral(e)?e.value:null}function Yx(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 Zx(e,t){for(let n of t){let r=Yx(e,n);if(r)return r}return null}function Qx(e){return b.isJSXIdentifier(e.name)?e.name.name:null}function qx(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function eb(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 Ws(e){return b.isArrowFunctionExpression(e)||b.isFunctionExpression(e)}function tb(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function nb(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||!b.isExpression(e))return null;let o={kind:"repeat-template",collectionExpression:xt(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(Zs(e))return ri(e.children,t,n);let r=ti(e,t,n);return r?[r]:[]}return Yn(e)?ni(e,t,n):b.isParenthesizedExpression(e)?Jt(e.expression,t,n):b.isExpression(e)?oi(e,t,n):[]}function qo(e,t,n){let r=new Map;for(let o of e.params)for(let i of Kt(o))Qs(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 zu(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function zu(e,t,n){let r=[];for(let o of e){if(b.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];if(i){Gs([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(...Ys(o,t,n))}return r}function Ys(e,t,n){if(b.isReturnStatement(e))return e.argument?Jt(e.argument,t,n):[];if(b.isBlockStatement(e))return bn(e.body,t,n);if(b.isIfStatement(e)){let r=b.isBlockStatement(e.consequent)?bn(e.consequent.body,t,n):Ys(e.consequent,t,n),o=e.alternate?b.isBlockStatement(e.alternate)?bn(e.alternate.body,t,n):Ys(e.alternate,t,n):[];return[...r,...o]}if(b.isSwitchStatement(e))return bn(e.cases.flatMap(r=>r.consequent),t,n);if(b.isTryStatement(e)){let r=bn(e.block.body,t,n);return e.handler&&r.push(...bn(e.handler.body.body,t,n)),e.finalizer&&r.push(...bn(e.finalizer.body,t,n)),r}return[]}function bn(e,t,n){let r=new Map;t.valueScopes.push(r);try{return zu(e,t,n)}finally{t.valueScopes.pop()}}function ei(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 rb(e,t,n,r){let o=Zx(e.openingElement,["items","dataSource","data"]),i={key:t,tag:Vu(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!b.isJSXAttribute(s))continue;let a=Qx(s);if(!a||!b.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!b.isJSXEmptyExpression(c)){if(tb(a)&&Ws(c)){let l=qo(c,n,r),u=ju(o,c,r,n);ei(n,"repeat-region",t,s,l,u?[u]:void 0);continue}if(nb(a)){let l=Ws(c)?qo(c,n,r):Jt(c,n,r);ei(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!b.isJSXExpressionContainer(s)||!Ws(s.expression))continue;let a=qo(s.expression,n,r),c=ju(o,s.expression,r,n);ei(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function ti(e,t,n){let r=Vu(e.openingElement);if(r==="Fragment"||Zs(e))return ri(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=Dx(r),a;if(s){let N=t.ordinalTracker.getOrdinal(i,r);a=`component:${r}#${N}`}else{let N=t.ordinalTracker.getOrdinal(i,r);a=`${r}#${N}`}let c=o?t.elements.get(o.key)?.identity.structuralPath:void 0,l=c?`${c}/${a}`:a,u=Sr(t.file,t.componentName,l),f={file:t.file,component:t.componentName,structuralPath:l,key:u},m=s?"component-boundary":null,d=Kx(e.children,t,n),g=Jx(e.openingElement,t,n),h=Xx(e.openingElement,t,n),S,E,v=!1;if(s){let N=t.importMap.get(r)??t.importMap.get(Lx(r));N&&(S=N.specifier,E=N.exportName,v=Rr(N.specifier,t.file))}let C={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,...v?{isPublicUiComponent:!0}:{},importedFrom:S,exportName:E};return t.elements.set(u,C),i&&t.elements.has(i)&&t.elements.get(i).childKeys.push(u),rb(e,u,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:u,tag:r}),ob(e.children,t,n),t.parentStack.pop()),u}function ni(e,t,n){return ri(e.children,t,n)}function ri(e,t,n){let r=[];for(let o of e)if(b.isJSXElement(o))if(Zs(o))r.push(...ri(o.children,t,n));else{let i=ti(o,t,n);i&&r.push(i)}else Yn(o)?r.push(...ni(o,t,n)):b.isJSXExpressionContainer(o)&&r.push(...oi(o.expression,t,n));return r}function ob(e,t,n){for(let r of e)b.isJSXElement(r)?ti(r,t,n):Yn(r)?ni(r,t,n):b.isJSXExpressionContainer(r)&&oi(r.expression,t,n)}function ib(e){return e==="&&"||e==="||"||e==="??"}function oi(e,t,n){if(b.isJSXEmptyExpression(e))return[];let r=eb(e);if(r){let o=r.call,i=t.parentStack[t.parentStack.length-1]??null,s=[],a=r.callback,c={kind:"repeat-template",collectionExpression:xt(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(...qo(a,t,n)),l.childKeys}if(b.isConditionalExpression(e)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:xt(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)&&ib(e.operator)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:xt(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 oi(e.expression,t,n);if(b.isJSXElement(e)){let o=ti(e,t,n);return o?[o]:[]}return Yn(e)?ni(e,t,n):[]}function sb(e){let t=e.argument;return t&&(b.isExpression(t)||Yn(t))?t:null}function Nr(e,t){let n=[];for(let r of e){if(b.isReturnStatement(r)){let o=sb(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 Hu(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);Mx(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(f){let m=Bx(f);if(!m)return;let d=f.node,g=[];if(b.isArrowFunctionExpression(d))b.isExpression(d.body)||Yn(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 N=d.body;b.isBlockStatement(N)&&(g=Nr(N.body))}if(g.length===0){f.skip();return}let h=new Map;Gs(Ux(r.program.body),Hs(t,m,i,s,l,[h]),h);let S=new Map;for(let N of d.params)for(let A of Kt(N))Qs(S,A);let E=b.isBlockStatement(d.body)?d.body.body:[],v=g[0]?.statement??null;for(let N of E){if(v&&N===v)break;b.isVariableDeclaration(N)&&Gs([N],Hs(t,m,i,s,l,[h,S]),S)}let C=Hs(t,m,i,s,l,[h,S]);for(let N of g){let A=Jt(N.argument,C,n);for(let P of A)a.includes(P)||a.push(P);if(N.condition){let P={kind:"conditional-branch",conditionExpression:xt(N.condition,n),conditionSource:Le(N.condition,n,C)};ei(C,"conditional-region","",N.statement,A,[P])}}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 qs(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function ii(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function Wu(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 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:C,depth:N,diagnosticEntryFile:A,importStack:P}=E;if(h.has(v))continue;h.add(v),c.set(v,C);let I=a(v,C);if(!I.ok){d(ii(I.diagnostic,A,P));continue}u.set(v,I.module);let{graph:T,localImports:M}=Hu(I.module);for(let L of T.elements.values())if(L.importedFrom&&Tt(L.importedFrom)){let G=L.importedFrom,ne=await Yo(v,G,r);ne.ok?(L.importedFrom=ne.path,xn(ne.path)&&(L.isPublicUiComponent=!0)):Rr(G,v)||d(ii(ne.diagnostic,A,qs(P,v,G,ne.diagnostic.path)))}if(l.set(v,T),!(N>=i))for(let L of M){if(Bu(L))continue;let G=await Yo(v,L,r);if(!G.ok){Rr(L,v)||d(ii(G.diagnostic,A,qs(P,v,L,G.diagnostic.path)));continue}let ne=G.path;if(h.has(ne)||xn(ne))continue;let ke=qs(P,v,L,ne);try{let Y=await n(ne);g.push({file:ne,source:Y,depth:N+1,diagnosticEntryFile:A,importStack:ke})}catch(Y){d(ii({path:ne,code:"import-read-failed",message:`Failed to read imported file: ${ne}`,details:{fromFile:v,specifier:L,reason:Y instanceof Error?Y.message:String(Y)}},A,ke))}}}let S=ab(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 ab(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 cb}from"@vcp-dev/contracts";var lb={affectedCompositions:[]};function ed(e){let t=null,n=new WeakMap;async function r(){return t??=ub(e),t}return{async prepareAppend(o){let i=await e.readIndex(),s=await e.stageAppend(Qu(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);Gu(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(Gu(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(Qu(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 Gu(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 ub(e){let t=await e.readIndex(),n=await Promise.all(t.undoIds.map(async o=>Yu(e,o))),r=await Promise.all(t.redoIds.map(async o=>Yu(e,o)));return{undo:n.reverse(),redo:r.reverse(),entryIds:[...t.entryIds],cursor:t.cursor}}async function Yu(e,t){let n=await e.readEntry(t),r=db(n),o=r.provenance??lb;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 Zu(e,n,r.preSnapshots),postSnapshots:await Zu(e,n,r.postSnapshots)}}async function Zu(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(mb(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function Qu(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=fb(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 db(e){if(!nd(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:td(t.provenance)}:{},preSnapshots:qu(t.preSnapshots,"preSnapshots"),postSnapshots:qu(t.postSnapshots,"postSnapshots")}}function fb(e){if(e.provenance!==void 0)return td(e.provenance);if(e.composition)return{initiatingComposition:e.composition,affectedCompositions:[]}}function td(e){let t=cb.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 qu(e,t){return e.map((n,r)=>{if(!nd(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&&!pb(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 pb(e){return/^sha256:[0-9a-f]{64}$/.test(e)}function mb(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function nd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{COMPONENT_I18N_FILE_SUFFIX as gb,parseComponentI18nResourcesJson as hb,resolveSiteTextDirection as yb,SiteLocaleSchema as xb}from"@vcp-dev/contracts";var bb=["i18next","react-i18next"],Sb="components/ui/site-locale-provider.tsx",Eb="components/ui/component-i18n-provider.tsx",rd="app/layout.tsx";async function ta(e){let t=e.files.filter(m=>m.path.endsWith(gb));if(t.length===0)return{ok:!0};for(let m of["package.json",rd,Sb,Eb])if(!await e.exists(m))return Sn(`Target snapshot is missing required i18n host file: ${m}`);let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return Sn("Target snapshot package.json is invalid.")}let r=od(n)&&od(n.dependencies)?n.dependencies:{},o=bb.filter(m=>typeof r[m]!="string"||r[m].trim().length===0);if(o.length>0)return Sn(`Target snapshot must already declare: ${o.join(", ")}.`);let i=await e.readFile(rd),s=ea(i,"html","lang"),a=ea(i,"html","dir"),c=ea(i,"SiteLocaleProvider","locale"),l=xb.safeParse(s);if(!l.success||!a||!c||s!==c||a!==yb(l.data))return Sn("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 Sn("Target snapshot root layout is not wired to SiteLocaleProvider.");let u=l.data,f=u.split("-")[0];for(let m of t){let d=hb(m.content);if(!d.success)return Sn(`Component i18n resource is invalid: ${m.path}.`);if(!Object.hasOwn(d.data,u)&&!Object.hasOwn(d.data,f))return Sn(`Component i18n resource ${m.path} has no locale for ${u} or ${f}.`)}return{ok:!0}}function ea(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 od(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Sn(e){return{ok:!1,message:e}}import{randomBytes as Db}from"node:crypto";import ai from"node:path";import{parse as sa}from"@babel/parser";import Lb from"@babel/traverse";import*as pd from"@babel/types";import{COMPONENT_I18N_FILE_SUFFIX as ra,PageResourceArtifactSchema as Bb,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as $b,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as jb,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as Vb,parseComponentI18nResourcesJson as Ub}from"@vcp-dev/contracts";var sd=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,ad=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,vb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke)-\[#(?:[0-9a-fA-F]{3,8})\](?:\/\d+)?/g,kb=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*#[0-9a-fA-F]{3,8}[^'"]*['"]/g,Ib=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Cb=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,Rb=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,wb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*(?:oklch|lab|lch|hsla?)\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Nb=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*(?:oklch|lab|lch|hsla?)\([^)]+\)[^'"]*['"]/gi,Pb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*color-mix\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Ab=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*color-mix\([^'"]*['"]/gi,Tb=/\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,Fb=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,_b=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function Pr(e,t){let n=si([...ft(e,vb),...ft(e,kb),...ft(e,Ib),...ft(e,t.includeRgbBackgroundImage?Cb:Rb),...t.includeExtendedColorFunctions?[...ft(e,wb),...ft(e,Nb)]:[]]),r=si([...ft(e,Pb),...ft(e,Ab)]).filter(o=>t.colorMixPolicy==="always"||sd.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...ft(e,Tb).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...ft(e,_b).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:si(ft(e,ad)),hardCodedSurfaceOccurrences:Mb(e),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?si(ft(e,Fb)):[]}}function ft(e,t){return e.match(new RegExp(t.source,t.flags))??[]}var id=160,Ob=/((?:[a-z][a-z0-9-]*(?:\[[^\]]*\])?:)+)$/;function Mb(e){let t=new RegExp(ad.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=
|
|
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>id?`${d.slice(0,id-1)}\u2026`:d})}return o}function si(e){return[...new Set(e)]}var oa="{{$INSTANCE}}",Kb=/\{\{\$PAGE_ROUTE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,Jb=/\{\{\$PAGE_TITLE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,ia="components/site/generated",Xb=/\.(?:tsx?|json)$/,zb=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,Hb=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],Wb=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),na=Lb,Gb=typeof na=="function"?na:na.default;async function aa(e){let t=Bb.safeParse(e.artifact);if(!t.success)return ge("Page resource artifact failed contract validation.");let n=t.data,r=e.randomHex??(()=>Db(4).toString("hex")),o=Math.max(1,Math.min(e.maxAttempts??5,5)),i=sS(r());if(!i)return ge("Random instance suffix must be 8 lowercase hex chars.");let s=`${aS(n.resource_id)}-${i}`,a=new Map,c=new Map,l=[];for(let C of n.pages){let N=C.final_route.slice(1);a.set(C.template_page_id,C.final_route),c.set(C.template_page_id,C.title),l.push({template_page_id:C.template_page_id,title:C.title,final_route:C.final_route,route_file_path:`app/${N}/page.tsx`})}let u=[],f=new Set,m=new Set,d=new Map,g=new Map,h=[],S=new Set(n.pages.flatMap(C=>C.components.map(N=>N.component_id)));for(let C of n.components){if(!S.has(C.component_id))continue;let N=cd({materialization:C.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c});if(!N.ok)return N;for(let A of N.files){let P=ud(A,f,u);if(P)return P}m.add(N.entry),g.set(N.entry,N.entryExport),d.set(C.component_id,N.entry)}for(let[C,N]of n.pages.entries()){let A=l[C],P=cd({materialization:N.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c,pageEntryTarget:A.route_file_path,pageTitle:A.title});if(!P.ok)return P;for(let M of P.files){let L=ud(M,f,u);if(L)return L}m.add(P.entry),g.set(P.entry,P.entryExport),h.push({entry:P.entry,declaredComponentIds:new Set(N.components.map(M=>M.component_id))});let I=u.find(M=>M.file===A.route_file_path);if(!I)return ge("Page materialization entry did not resolve to its final route file.",A.route_file_path);if(eS(I.content,A.route_file_path)!==A.final_route)return ge(`Page ${N.template_page_id} requires a static PAGE_SEO.path equal to ${A.final_route}.`,A.route_file_path)}let E=Zb(u,m,s,d,h,g);if(!E.ok)return E;for(let C of u)if(await e.exists(C.file))return!C.file.startsWith("app/")&&o>1?aa({...e,randomHex:r,maxAttempts:o-1}):{ok:!1,code:"MATERIALIZATION_CONFLICT",message:`Page resource create-only target already exists: ${C.file}`,path:C.file};let v=Qb(u);return v||(u.sort((C,N)=>C.file.localeCompare(N.file)),{ok:!0,packageInstanceId:s,pages:l,files:u})}function cd(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:ld(o.pathTemplate,e.packageInstanceId);if(!s)return ge("Materialization path cannot be mapped into the package namespace.",o.pathTemplate);let a=Yb(o.content,e.packageInstanceId,e.routeByPage,e.titleByPage);if(!a.ok)return a;let c=i&&e.pageTitle!==void 0?tS(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??ld(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 Yb(e,t,n,r){let o,i=e.replace(Kb,(c,l)=>{let u=n.get(l);return u||(o=l,c)});if(o)return ge(`Page route placeholder references unknown template page: ${o}`);let s=i.replace(Jb,(c,l)=>{let u=r.get(l);return u?JSON.stringify(u):(o=l,c)});if(o)return ge(`Page title placeholder references unknown template page: ${o}`);let a=s.replaceAll(oa,t);return a.includes("{{$PAGE_ROUTE:")||a.includes("{{$PAGE_TITLE:")||a.includes("{{$INSTANCE}}")?ge("Materialization contains an unresolved placeholder."):{ok:!0,data:a}}function ld(e,t){let n=`${ia}/${t}`;if(e.split(oa).length>2)return null;let o=e.replace(oa,t),i=`${ia}/${t}/`,s=o.startsWith(i)?o:`${n}/${o}`,a=ai.posix.normalize(s);return a!==s||!a.startsWith(`${n}/`)||!Xb.test(a)||zb.test(a)?null:a}function ud(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 Zb(e,t,n,r,o,i){let s=new Set(e.map(d=>d.file)),a=`${ia}/${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 ge("Materialization JSON file must contain valid JSON.",d.file)}if(d.file.endsWith(ra)&&!Ub(d.content).success)return ge("Materialization component i18n resources are invalid.",d.file);continue}try{let h=sa(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 v=E.source.value,C=oS(d.file,v,s,a);if(!C.allowed)return ge(`Materialization import is outside the controlled package: ${v}`,d.file);C.internalPath&&c.get(d.file).add(C.internalPath)}let S;if(Gb(h,{Identifier(E){E.isReferencedIdentifier()&&Wb.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 ge(`Materialization source uses forbidden capability: ${S}`,d.file)}catch{return ge("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 ge("Materialization source violates the public theme token policy.",d.file)}if([...t].some(d=>!s.has(d)))return ge("Materialization entry is outside the controlled package.");for(let d of t)if(d.endsWith(".json"))return ge("Materialization JSON files cannot be package entries.");for(let[d,g]of i){let h=l.get(d);if(!h||!qb(h,g))return ge("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=fd(d.entry,c);for(let h of d.declaredComponentIds){let S=r.get(h);if(!S||!g.has(S))return ge(`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 ge(`Page entry imports undeclared component: ${S}`,d.entry)}}let f=new Set;for(let d of t)for(let g of fd(d,c))f.add(g);if(f.size!==e.length)return ge("Every materialization file must be reachable from a package entry.");let m=iS(e,l,c);return m||{ok:!0}}function Qb(e){if(e.length>$b)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>jb)return ge("Page resource file exceeds the content byte limit.",n.file);t+=r}return t>Vb?ge("Page resource exceeds the aggregate content byte limit."):null}function qb(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 eS(e,t){let n;try{n=sa(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=ci(i.init);if(s?.type!=="ObjectExpression")return null;for(let a of s.properties){if(a.type!=="ObjectProperty"||a.computed||!nS(a.key))continue;let c=ci(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 tS(e,t,n){let r;try{r=sa(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=ci(s.init);if(a?.type!=="ObjectExpression")return ge("Page materialization PAGE_SEO must be a static object.",n);let c=a.properties.find(u=>u.type==="ObjectProperty"&&!u.computed&&rS(u.key));if(!c||c.type!=="ObjectProperty")return ge("Page materialization PAGE_SEO must declare a static title.",n);let l=ci(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 ci(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression"||t?.type==="TSNonNullExpression";)t=t.expression;return t&&pd.isExpression(t)?t:null}function nS(e){return e.type==="Identifier"&&e.name==="path"||e.type==="StringLiteral"&&e.value==="path"}function rS(e){return e.type==="Identifier"&&e.name==="title"||e.type==="StringLiteral"&&e.value==="title"}function oS(e,t,n,r){if(t.startsWith(`@/${r}/`)){let s=t.slice(2),a=dd(s,n);return a?{allowed:!0,internalPath:a}:{allowed:!1}}if(!t.startsWith("."))return{allowed:Hb.some(s=>s.endsWith("/")?t.startsWith(s):t===s)};if(t.includes("\\")||t.includes("\0"))return{allowed:!1};let o=ai.posix.normalize(ai.posix.join(ai.posix.dirname(e),t)),i=dd(o,n);return i&&(i.startsWith(`${r}/`)||i.startsWith("app/"))?{allowed:!0,internalPath:i}:{allowed:!1}}function dd(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 iS(e,t,n){let r=new Set(e.map(o=>o.file));for(let o of e){if(!o.file.endsWith(ra))continue;let i=o.file.slice(0,-ra.length),s=[`${i}.tsx`,`${i}.ts`].find(u=>r.has(u));if(!s)return ge("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 ge("Component i18n resources must have exactly one same-name Client Component static importer.",s)}return null}function fd(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 sS(e){return/^[a-f0-9]{8}$/.test(e)?e:null}function aS(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 cS}from"node:crypto";import Xt from"node:path";import{parse as lS}from"@babel/parser";import uS from"@babel/traverse";import{COMPONENT_I18N_FILE_SUFFIX as li,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as md,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as dS,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as fS,SiteEditMaterializationSchema as pS,parseComponentI18nResourcesJson as mS}from"@vcp-dev/contracts";var ua="components/site/generated",gd="{{$INSTANCE}}",ui=5,gS=/^[a-z][a-z0-9-]{0,48}$/,hS=/^[a-f0-9]{8}$/,hd=/\.tsx?$/,yS=/\.json$/,xS=/\.(?:tsx?|json)$/,bS=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,SS=["react","react/","next","next/","lucide-react","react-i18next","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],ca=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),la=uS,ES=typeof la=="function"?la:la.default;function vS(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>md)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=_S(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=pS.safeParse(e.manifest);if(!r.success)return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab manifest failed schema validation."}};let o=AS(e.generatedRoot);if(!o)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Generated root must be ${ua}.`,path:e.generatedRoot}};if(!vd(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=bd(r.data.files),s=bd(e.controlledFiles);if(!OS(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>md)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>dS)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>fS?{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 kS(e){let t=vS(e);if(!t.ok)return t;let n=t.data.generatedRoot,r=vd(e.manifest.instanceBaseName),o=Math.max(1,Math.min(ui,e.maxAttempts??ui));for(let i=0;i<o;i+=1){let s=TS(e.instanceNameGenerator?.()??cS(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=Id(n,a),l=IS({manifest:e.manifest,generatedRoot:n,instanceName:a,instanceRoot:c,allowedExternalImports:e.allowedExternalImports??SS});if(!l.ok)return l;if(!await CS(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 Ed(e){let t=Math.max(1,Math.min(ui,e.maxAttempts??ui));for(let n=0;n<t;n+=1){let r=await kS({...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 IS(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=yd({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=yd({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=RS(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 CS(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function yd(e){if(e.pathTemplate.split(gd).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(gd,e.instanceName),n=FS(t);return n?Id(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||!xS.test(n)||bS.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 RS(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(yS.test(f.path)){if(f.path.endsWith(li)){let g=mS(f.content);if(!g.success)return En("MATERIALIZATION_DATA_UNSUPPORTED",g.error.message,f.path);c.set(f.path,new Set)}else try{JSON.parse(f.content)}catch{return En("MATERIALIZATION_DATA_UNSUPPORTED","Static prefab JSON file must contain valid JSON.",f.path)}continue}let m;try{m=lS(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(!hd.test(f.path))continue;let m=s.get(f.path),d=null;if(ES(m,{ImportDeclaration(g){let h=xd({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(li))){let S=wS({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=xd({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=Sd(g.node);h&&ca.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},OptionalMemberExpression(g){let h=Sd(g.node);h&&ca.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},Identifier(g){g.isReferencedIdentifier()&&ca.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(!hd.test(n))return En("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must be a .ts/.tsx source module.",n);let l=s.get(n);if(!l)return En("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must resolve to a controlled source file.",n);if(!NS(l,r))return En("MATERIALIZATION_EXPORT_MISSING","Static prefab entry does not declare the manifest export.",n);for(let[f,m]of c)if(m.size!==1)return En("MATERIALIZATION_IMPORT_FORBIDDEN","Each component .i18n.json file must have exactly one same-name Client Component static importer.",f);return PS(n,a).size!==e.length?En("MATERIALIZATION_ENTRY_INVALID","Every controlled source file must be reachable from the entry module.",n):{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:ua,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}}function xd(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 wS(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,-li.length),i=`./${r}${li}`;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 NS(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 PS(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 En(e,t,n){return{ok:!1,error:{code:e,message:t,...n?{file:n}:{}}}}function AS(e){let t=kd(e);return t===ua?t:null}function TS(e){let t=e.trim().toLowerCase();return hS.test(t)?t:null}function vd(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 gS.test(t)?t:null}function kd(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 FS(e){let t=kd(e);return!t||t!==e?null:t}function Id(...e){return Xt.posix.join(...e)}function bd(e){return new Set(e.map(t=>t.pathTemplate))}function _S(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 OS(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Sd(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 Ca}from"node:crypto";import xa from"@babel/traverse";function da(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 MS}from"node:crypto";import Cd from"node:path";import*as Pd from"@babel/parser";import fa from"@babel/generator";import*as je from"@babel/types";var Rd=typeof fa=="function"?fa:fa.default;function ma(e){let t=Fd(e);if(t)return{ok:!1,error:t};let n=e.projection,r=ya(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=BS(n,o),s={jsx:`<${e.component.localName} />`},a=DS(e);if(i){let d=Ad(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??(ha(c,n.container.sourceRange)?n.container.sourceHash:null);if(!c||!l)return pa("Route page composition does not expose a verifiable container boundary.");let u=Tr(c),f=wd(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 pa("Route page composition placement does not expose a verifiable anchor boundary.");let d=wd(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 DS(e){let t=US(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 di(e){if(e.locator.root.kind!=="expression"||e.locator.path?.length)return vn(e.source,"Root expression rewrite requires an exact expression locator.");let t=gr(e.source,"value");if(!t.ok)return vn(e.source,t.diagnostic.message);let n=ie(t.ast,e.locator);if(!n.ok)return vn(e.source,n.diagnostic.message);let r=n.match.path;if(!r.isExpression())return vn(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 vn(e.source,"Root expression hash no longer matches the current source.");if(e.action.kind==="remove")return r.replaceWith(je.nullLiteral()),{ok:!0,source:Rd(t.ast,{}).code};let i;try{i=Pd.parseExpression(e.action.jsx,{plugins:["jsx","typescript"]})}catch(s){return vn(e.source,s instanceof Error?s.message:String(s))}return!je.isJSXElement(i)&&!je.isJSXFragment(i)?vn(e.source,"Root expression rewrite requires a JSX insertion expression."):(e.action.kind==="replace"?r.replaceWith(i):r.replaceWith(LS(r.node,i,e.action.placement,e.action.replaceOriginal)),{ok:!0,source:Rd(t.ast,{}).code})}function LS(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 vn(e,t){return{ok:!1,source:e,diagnostic:{message:t}}}function ga(e){let t=Fd(e);if(t)return{ok:!1,error:t};let n=e.projection,r=_d(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($S(n,o)){let h=Ad(e);return h.ok?e.operation==="move-node"?pa("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(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")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||!VS(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=ya(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(Zn(e.source,d.match.node.start??null,d.match.node.end??null)!==u.containerSourceHash)return Nd("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),v=Nt(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?[]:[Ar(v.diagnostic)]}}:Zn(e.source,v.match.node.start??null,v.match.node.end??null)!==S?Nd("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 BS(e,t){let n=e.placementUnitByKey.get(t.placementUnitKey);return n&&e.container.kind!=="jsx-container"&&ha(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 $S(e,t){return e.container.kind!=="jsx-container"&&ha(t.sourceRange,e.mutationTarget.sourceRange)&&t.sourceHash===e.mutationTarget.sourceHash}function Ad(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)]}}}:Zn(e.source,r.match.node.start??null,r.match.node.end??null)!==t.sourceHash?{ok:!1,result:Td("Route mutation target hash no longer matches the current source.")}:{ok:!0,locator:n,sourceHash:t.sourceHash}}function wd(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)]}}}:Zn(e,o.match.node.start??null,o.match.node.end??null)!==n?{ok:!1,result:Td(`${r} hash no longer matches the current source.`)}:{ok:!0}}function Td(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function pa(e){return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:e,diagnostics:[]}}}function Nd(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 Fd(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 VS(e,t){return e.routeId===t.routeId&&e.templateId===t.effectiveTemplateId}function US(e,t){let n=Cd.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Cd.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 Zn(e,t,n){return t==null||n==null?null:`sha256:${MS("sha256").update(e.slice(t,n)).digest("hex")}`}function ha(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 KS=typeof xa=="function"?xa:xa.default;function Ld(e){if(!e.ast)return bt(e,[Be("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=ZS(e.ast);if(!t)return bt(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export must resolve to a local function component",{reason:"default-export-unresolved"})]);let n=qS(t);if(!n.ok)return bt(e,[n.diagnostic]);let r=n.expression;if(r.isIdentifier()){let o=tE(r,t);if(o.status==="resolved")r=o.expression;else if(o.status==="invalid")return bt(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export local binding is not a supported JSX root")])}if(rE(r,t))return bt(e,[Be("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(r.isNullLiteral())return Sa(e,t,"virtual-route-root",r);if(nE(r)){let o=aE({input:e,source:e.source,expression:r});return ba(e,t,o,{kind:"virtual-route-root",sourceKind:"atomic-expression"},r)}if(r.isConditionalExpression())return bt(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=ka(r),i=Dd({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[o]});return ba(e,t,i,{kind:"virtual-route-root",sourceKind:"jsx-element"},r)}if(r.isJSXElement()||r.isJSXFragment()){let o=iE(r);if(!o.ok)return bt(e,[o.diagnostic]);let i=Qn(o.path);if(i.unsupported)return bt(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);if(oE(e.source,r,i.members))return Sa(e,t,"starter-placeholder",r);let s=r.isJSXFragment()||Oe(r);if(i.members.length===0&&s)return Sa(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=Dd({input:e,containerKind:a,sourceKind:c,source:e.source,containerPath:o.path,members:i.members});return ba(e,t,l,{kind:a,sourceKind:c},r)}return bt(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")])}function ya(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 _d(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 Bd(e){return e.ok?JS(e.projection):XS(e.projection)}function JS(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)=>$d(e,u,h,S,e.container.placementKey)),m=f.filter(({member:h})=>h.isBusinessMember).map(({sourceMember:h})=>HS(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:zS(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function XS(e){let t=e.diagnostics.map(WS);return{status:"unsupported",version:e.version,composition:e.composition,reason:GS(e.diagnostics),diagnostics:t}}function zS(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 $d(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)=>$d(e,t,a,c,i))]}function HS(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function WS(e){return{code:YS(e),message:e.message}}function GS(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 YS(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 ZS(e){let t=null;return KS(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=QS(o.path);i&&(t=i,n.stop())}}),t}function QS(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 qS(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(!eE(s))return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route guard return shape is not statically safe",{reason:"guard-shape"})};continue}if(jd(s)||Vd(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 eE(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)||Vd(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 Vd(e){let t=!1;return e.traverse({Function(n){n.skip()},ReturnStatement(){t=!0}}),t}function tE(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 nE(e){return e.isConditionalExpression()?Od(_r(e.get("consequent")))&&Od(_r(e.get("alternate"))):!1}function Od(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 rE(e,t){if(e.isIdentifier())return Md(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return Md(n.node.name,t)}return!1}function Md(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 oE(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&va(t)}function va(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(!va(t))return!1;continue}if(t.isJSXElement()&&!va(t))return!1}return!0}function iE(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 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:Ia(r.node.type,r.node.start,r.node.end),kind:"text",nodeType:r.node.type,sourceRange:pt(r.node.loc),businessMemberCount:0,parentSourceRange:pt(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({...ka(o,i?.members),sourceRange:pt(r.node.loc),parentSourceRange:pt(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:Ia(o.node.type,o.node.start,o.node.end),kind:"atomic-expression",nodeType:o.node.type,sourceRange:pt(r.node.loc),businessMemberCount:1,parentSourceRange:pt(e.node.loc),children:[],isBusinessMember:!0,label:"atomic-expression"});continue}if(r.isJSXFragment()||r.isJSXElement()&&Oe(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({...ka(r,o?.members),parentSourceRange:pt(e.node.loc)})}}return{members:t,unsupported:n}}function ka(e,t){let n=e.isJSXElement()&&en(e)?t??Qn(e).members:[],r=e.isJSXElement()&&!en(e)&&!Oe(e);return{memberKey:Ia(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:pt(e.node.loc),businessMemberCount:r?1:Ud(n),parentSourceRange:pt(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:sE(e)}}function en(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name[0]===t.name[0]?.toLowerCase()}function sE(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 Ud(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function fi(e){return e.length===0?0:Math.max(1,Ud(e))}function Dd(e){let t=pt(e.containerPath.node.loc),n=Ra(e.source,e.containerPath.node.start,e.containerPath.node.end),r=mt(e.input,e.containerKind,e.sourceKind,t),o=mt(e.input,e.containerKind,"placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:fi(e.members)<=1,memberCount:fi(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function aE(e){let t=pt(e.expression.node.loc),n=Ra(e.source,e.expression.node.start,e.expression.node.end),r=mt(e.input,"virtual-route-root","atomic-expression",t),o=mt(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:mt(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 Kd(e,t){let n=pt(t.node.loc),r=Ra(e.source,t.node.start,t.node.end);return!n||!r?null:{kind:"expression",documentVersion:e.version,sourceRange:n,sourceHash:r}}function ba(e,t,n,r,o){let i=Kd(e,o);if(!i)return bt(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=cE(e,n,s),c=da(a),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Xd(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 cE(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:fi(g)<=1,memberCount:fi(g),sourceRange:m,sourceHash:m?Ea(e.source,m):null,relation:l,containerSourceRange:h,containerSourceHash:h?Ea(e.source,h):null,anchorSourceRange:d,anchorSourceHash:d?Ea(e.source,d):null,members:g}),i=t.placementKey,s=t.members.map(l=>mt(e,i,"placement-unit",l.sourceRange)),a=s[0]??t.placementUnitKey,c=s.at(-1)??t.placementUnitKey;r.push(o("prepend",mt(e,i,"prepend",n),a,n,null,[]));for(let l of t.members){let u=l.parentSourceRange??n,f=mt(e,i,"placement-unit",l.sourceRange);r.push(o("before",mt(e,f,"before",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u)),r.push(o("after",mt(e,f,"after",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u))}return r.push(o("append",i,c,n,null,[])),r}function Sa(e,t,n,r){let o=Kd(e,r);if(!o)return bt(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let i=mt(e,n,"empty-container",void 0),s=mt(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=da([a]),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Xd(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 bt(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 mt(e,t,n,r){return Jd([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function Ia(e,t,n){return Jd(["member",e,String(t??-1),String(n??-1)])}function Jd(e){return`pc_${Ca("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function Ra(e,t,n){return t==null||n==null?null:`sha256:${Ca("sha256").update(e.slice(t,n)).digest("hex")}`}function Ea(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:${Ca("sha256").update(e.slice(r+t.startColumn,o+t.endColumn)).digest("hex")}`}function pt(e){return e?{startLine:e.start.line,startColumn:e.start.column,endLine:e.end.line,endColumn:e.end.column}:null}function Xd(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 SE}from"@vcp-dev/contracts";import UA from"node:fs";import JA from"node:path";var uE=/^page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function Or(e){let t=e.map(r=>bE(r.path)),n=dE(t);return n?t.filter(r=>pE(n,r)).map(r=>({routeId:mE(n,r),entryFile:r})).sort((r,o)=>r.routeId.localeCompare(o.routeId)):[]}function wa(e,t=""){let r=((e??"/").trim()||"/").split(/[?#]/,1)[0]||"/",o=r.startsWith("/")?r:`/${r}`,i=xE(t),s=i&&(o===i||o.startsWith(`${i}/`))?o.slice(i.length)||"/":o,a=s.startsWith("/")?s:`/${s}`;return a==="/"?"/":a.replace(/\/+$/,"")}function dE(e){return e.some(r=>r.startsWith("app/")&&!fE(r))?"app":e.some(r=>r.startsWith("src/app/"))?"src/app":null}function fE(e){return/^(?:src\/)?app\/(?:_vcp|\.vcp)/.test(e)}function pE(e,t){if(!t.startsWith(`${e}/`))return!1;let n=t.slice(t.lastIndexOf("/")+1);return uE.test(n)?t.slice(e.length+1,-n.length-1).split("/").filter(Boolean).every(r=>!r.startsWith("_")&&!r.startsWith(".")):!1}function mE(e,t){let n=t.slice(e.length+1).split("/").slice(0,-1).map(hE).filter(r=>!!r);return n.length===0?"/":`/${n.join("/")}`}function gE(e){return e.startsWith("(")&&e.endsWith(")")}function hE(e){return!e||e.startsWith("@")||e.startsWith("_")||gE(e)?null:yE(e)}function yE(e){return e.replace(/^\((?:\.|\.\.|\.\.\.)\)/,"")}function xE(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function bE(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 Qe(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 Na(e){return SE.safeParse(e).success||Qe("invalid-template-id",{templateId:e}),Buffer.from(e,"utf8").toString("base64url")}function zd(e){/^[A-Za-z0-9_-]{1,255}$/.test(e)||Qe("invalid-template-key",{path:e});let t;try{t=new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.from(e,"base64url"))}catch{return Qe("invalid-template-key",{path:e})}return Na(t)!==e&&Qe("noncanonical-template-key",{path:e}),t}function EE(e){let t=wa(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("(")||vE(r)&&!Hd(r)))&&Qe("invalid-public-route",{routeId:e}),t}function vE(e){return e.includes("[")||e.includes("]")}function Hd(e){return/^\[\[\.\.\.[^\[\]]+\]\]$|^\[[^\[\]]+\]$/.test(e)}function Wd(e){return e.some(Hd)}function Gd(e,t,n="app"){n!=="app"&&n!=="src/app"&&Qe("invalid-app-root");let r=EE(e),o=Na(t),i=Wd(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))&&Qe("path-too-long",{path:a}),{appRoot:n,routeRoot:s,templateKey:o,templateEntryFile:a}}function Yd(e){return/^(?:src\/)?app\/\.vcp\/page-templates\//.test(e)}function Zd(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===".")&&Qe("invalid-file-path",{path:i}),n.has(i)&&Qe("duplicate-file-path",{path:i}),n.set(i,o)}return n}function mi(e){let t=Zd(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(!Yd(i))continue;let s=/^(app|src\/app)\/\.vcp\/page-templates\/(.+)\/page\.tsx$/.exec(i);s||Qe("candidate-must-be-single-page",{path:i});let a=s[1],c=s[2].split("/"),l=Wd(c),u=l?c[0]:c.pop(),f=l?c.slice(1):c,m=zd(u),d=f.length?`/${f.join("/")}`:"/";Gd(d,m,a).templateEntryFile!==i&&Qe("candidate-path-mismatch",{path:i,routeId:d});let h=r.get(d);(!h||!h.startsWith(`${a}/`))&&Qe("canonical-entry-missing",{path:i,routeId:d}),o.push({routeId:d,templateId:m,entryFile:i,canonicalEntryFile:h,appRoot:a})}return o.sort((i,s)=>pi(i.routeId,s.routeId)||pi(i.templateId,s.templateId))}function Qd(e){let t=Zd(e.files),n=mi({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)=>pi(o.context.routeId,i.context.routeId)||(o.context.effectiveTemplateId===void 0?-1:i.context.effectiveTemplateId===void 0?1:pi(o.context.effectiveTemplateId,i.context.effectiveTemplateId)))}function kE(e){let t=wa(e.selector.routeId),n=Qd({files:e.files}),r=n.find(i=>i.context.routeId===t&&i.context.effectiveTemplateId===void 0);(!r||r.entryFile!==e.canonicalEntryFile)&&Qe("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||Qe("template-selection-not-found",{routeId:t,templateId:e.selector.templateId}),{...o,mode:e.selector.templateId===void 0?"direct":"candidate",effectiveEntryFile:o.entryFile}}function pi(e,t){return e<t?-1:e>t?1:0}import{HOME_PAGE_URL_PATH as LE}from"@vcp-dev/contracts";import{parse as XT}from"@babel/parser";import{parse as qA}from"@babel/parser";import{FormBlockIdSchema as tT,FormSpecV1Schema as nT}from"@vcp-dev/contracts";var Dr="components/site/generated/forms",rT=`${Dr}/vcp-form-runtime.tsx`,gi="[A-Za-z0-9][A-Za-z0-9_-]{0,127}",oT=new RegExp(`^${Dr}/form-(${gi})\\.spec\\.ts$`),iT=new RegExp(`^${Dr}/form-(${gi})\\.tsx$`),sT=new RegExp(`^@/${Dr}/form-(${gi})$`),aT=new RegExp(`(?:^|/)${Dr}/form-(${gi})(?:\\.tsx?)?$`);var cT=Symbol("invalid-literal");import{createHash as dT}from"node:crypto";import{posix as pT}from"node:path";import{parse as gT}from"@babel/parser";import{FormSpecV1Schema as yT}from"@vcp-dev/contracts";var xT=Symbol("dynamic");import{parse as IE}from"@babel/parser";function hi(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"&&typeof t.type=="string"):[]}var CE=/^(?:src\/)?app\/(.*)page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function RE(e){let t=CE.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 wE(e){let t=e;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function qd(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function NE(e){let t=e;for(;t&&(t.type==="TSAsExpression"||t.type==="TSSatisfiesExpression"||t.type==="ParenthesizedExpression");)t=t.expression??null;return t}function Pa(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(Pa);if(t?.type==="ObjectExpression"){let n={};for(let r of hi(t.properties)){if(r.type!=="ObjectProperty"||r.computed)throw new Error("dynamic object property");let o=qd(r.key);if(!o)throw new Error("unsupported object key");n[o]=Pa(r.value)}return n}throw new Error(`unsupported static value: ${t?.type??"unknown"}`)}function Aa(e,t){let n=[],r=RE(t);if(r===null)return{found:!1,seo:null,diagnostics:n};let o;try{o=IE(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 hi(o.program.body)){let u=l.type==="ExportNamedDeclaration"?l.declaration:l;if(u?.type==="VariableDeclaration")for(let f of hi(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=NE(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 hi(s.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=qd(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=wE(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=Pa(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 PE}from"@babel/parser";var ef=["page","anchor","external","email","phone","group","file"],AE=["link","cta"],nf=["description","badge","iconKey"],Ta=["label","targetType","href","role","openInNewTab","nofollow","children",...nf],TE=new Set(Ta);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 FE(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function tf(e){let t=e;return t?.type==="BooleanLiteral"&&typeof t.value=="boolean"?t.value:void 0}function Fa(e){let t=[],n;try{n=PE(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=rf(i,`NAV_ITEMS[${s}]`,t);a&&o.push(a)}),{items:o,diagnostics:t}}function rf(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=FE(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||!ef.includes(i))return n.push({severity:"fatal",path:`${t}.targetType`,message:`targetType must be one of ${ef.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 nf){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))TE.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 ${Ta.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=rf(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&&(AE.includes(c)?s.role=c:n.push({severity:"warning",path:`${t}.role`,message:"role ignored: not link/cta"})),r.openInNewTab!==void 0){let l=tf(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=tf(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 _E}from"@babel/parser";function $r(e){return Array.isArray(e)?e:[]}function of(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression";)t=t.expression;return t?.type==="ArrayExpression"?t:void 0}function OE(e){let t;try{t=_E(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=of(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 _a(e,t){let n=sf(t);if(!n)return{status:"unsupported",source:e};let r=OE(e);if(r.status!=="ok")return{status:r.status,source:e};let o=r.array;if(Fa(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(DE(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 v=/^\s*,/.exec(e.slice(E));s.push({start:S,end:v?E+v[0].length:E})}continue}let d=ME(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 ME(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 of(t.value)}}function sf(e){let t=e.trim();return t.startsWith("/")?t==="/"?t:t.replace(/\/+$/,""):null}function DE(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"&&sf(n??"")===t}import{estimateNavLabelWidth as NT}from"@vcp-dev/contracts";import{parse as TT}from"@babel/parser";var BE="components/site/generated/",jr=[".tsx",".ts",".jsx",".js"];function af(e){if(e.expectedUrlPath===LE)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=Aa(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(mi({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=$E(e.files);if(!o.ok)return o.error;let i=o.graph,s=KE(r,i),a=JE(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=_a(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 $E(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(VE(c))continue;let l=Ir(r,c),u=UE(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 VE(e){return!!(/\.([a-z0-9]+)$/i.exec(e)&&!jr.some(n=>e.endsWith(n)))}function UE(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 KE(e,t){let n=new Set,r=[...t.get(e)??[]];for(;r.length>0;){let o=r.pop();!o.startsWith(BE)||n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function JE(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 ip from"@babel/parser";import*as le from"@babel/types";import*as _i from"node:path";import*as ye from"@babel/types";function cf(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 kn(e.path.node,e.identifier.name);if(e.path.isVariableDeclarator()){let n=e.path.node.id;if(ye.isObjectPattern(n)||ye.isArrayPattern(n))return kn(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(zE(e.path,n))return!0}if(t.isFunction()||t.isVariableDeclarator())return!1;t=t.parentPath}return!1}function kn(e,t,n=!1){return ye.isIdentifier(e)?e.name===t&&n:ye.isObjectPattern(e)?e.properties.some(r=>ye.isObjectProperty(r)?kn(r.value,t,n):kn(r.argument,t,n)):ye.isArrayPattern(e)?e.elements.some(r=>{if(!r)return!1;let o=ye.isRestElement(r)?r.argument:r;return kn(o,t,n)}):ye.isAssignmentPattern(e)?kn(e.left,t,!0):ye.isRestElement(e)?kn(e.argument,t,n):!1}function qn(e,t){if(e.path.isObjectPattern()){if(t){let r=St(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=lf(r),i=!1,s=o?o.initBinding&&Oa(o.initBinding)?(i=Ft(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=St(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=GE(e);if(n){let r=XE(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=HE(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(Oa(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:Ft(e)}}return null}function XE(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=lf(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=Oa(i)?(a=Ft(i),[...s]):(()=>{let u=qn(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=St(n.node.id,t.identifier.name);return l?{path:[...c,...l],hasDefault:a||Ft(t)}:null}function lf(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=YE(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function Oa(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function zE(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function HE(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=St(i.node,t);if(a)return a}return null}function uf(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=yi(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=WE(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 yi(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)&&St(i.node,t)&&!Array.isArray(s)&&s.isExpression())return{propName:r,expressionPath:s}}if(!Array.isArray(o)&&(o.isObjectPattern()||o.isArrayPattern())){let i=yi(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=yi(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=yi(r,t);if(o)return o}}return null}function St(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=Vr(r);if(!o)continue;let i=St(r.value,t,[...n,{kind:"property",name:o}]);if(i)return i}else if(ye.isRestElement(r)){let o=St(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=St(i,t,[...n,{kind:"index",index:r}]);if(s)return s}return ye.isAssignmentPattern(e)?St(e.left,t,n):null}function WE(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isAssignmentPattern()&&t.node.left===e.path.node?t:null}function GE(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:ye.isIdentifier(e.key)?e.key.name:ye.isStringLiteral(e.key)?e.key.value:null}function YE(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 gf from"@babel/parser";import La from"@babel/traverse";import*as er from"@babel/types";import*as re from"@babel/types";function Si(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?xi(n,t):null}if(e.isMemberExpression()){let n=nv(e.node),r=ZE(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?xi(o,[...r,...t]):null}return e.isAwaitExpression()||Da(e.node)?tn(ov(e.node),t,"awaited or fetched expression"):null}function ZE(e){let t=[],n=e;for(;re.isMemberExpression(n);){if(n.computed)if(re.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(re.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(re.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return re.isIdentifier(n)?t:null}function xi(e,t=[]){let n=QE(e,t);if(n)return n;let r=qE(e,t);if(r)return r;let o=ev(e,t);return o||null}function Kr(e){return e?.kind==="api-source"}function QE(e,t){if(e.path.isVariableDeclarator()&&re.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&Ma(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()&&re.isObjectPattern(e.path.node.id)){let s=e.path.node.id.properties.find(c=>re.isObjectProperty(c)&&pf(c)==="data"&&Ur(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&Ma(a.node))return tn(e.identifier.name,t,"query hook data binding")}let n=tv(e);if(!n||pf(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()||!Ma(i.node)?null:tn(e.identifier.name,t,"query hook data binding")}function qE(e,t){if(e.path.isVariableDeclarator()&&re.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!ff(a.node))return null;let[c,l]=e.path.node.id.elements;return!re.isIdentifier(c)||c.name!==e.identifier.name||!re.isIdentifier(l)?null:df(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()||!ff(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return re.isIdentifier(s)&&df(e,s.name)?tn(e.identifier.name,t,"state setter is updated by API data"):null}function ev(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"):Da(r.node)?tn(e.identifier.name,t,"fetch-backed binding result"):null:null}function tv(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 re.isIdentifier(e)?e.name===t:re.isAssignmentPattern(e)?Ur(e.left,t):re.isObjectPattern(e)?e.properties.some(n=>re.isObjectProperty(n)?Ur(n.value,t):Ur(n.argument,t)):re.isArrayPattern(e)?e.elements.some(n=>!!n&&Ur(re.isRestElement(n)?n.argument:n,t)):!1}function df(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){Da(i.node)&&(n=!0),(rv(i.node.callee,t)||i.node.arguments.some(s=>re.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function Ma(e){let t=Ei(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function ff(e){return Ei(e.callee)==="useState"}function Da(e){return bi(e,t=>re.isCallExpression(t)&&Ei(t.callee)==="fetch")}function nv(e){let t=e;for(;re.isMemberExpression(t);)t=t.object;return re.isIdentifier(t)?t.name:null}function pf(e){return e.computed?null:re.isIdentifier(e.key)?e.key.name:re.isStringLiteral(e.key)?e.key.value:null}function Ei(e){return re.isIdentifier(e)?e.name:re.isMemberExpression(e)&&re.isIdentifier(e.property)?e.property.name:null}function rv(e,t){return bi(e,n=>re.isIdentifier(n)&&n.name===t)}function bi(e,t){if(t(e))return!0;let n=re.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(re.isNode(i)&&bi(i,t))return!0;continue}if(re.isNode(o)&&bi(o,t))return!0}return!1}function ov(e){return re.isIdentifier(e)?e.name:re.isCallExpression(e)?Ei(e.callee)??"api":re.isAwaitExpression(e)?"awaited-api":"api"}function tn(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:iv(e,t),reason:n}}function iv(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var hf=typeof La=="function"?La:La.default;function yf(e,t){let n=bf(e);if(!n)return{allowed:!0};let r=!1;return hf(n,{CallExpression(o){if(!Sf(o.node,t.sourceRange)||!sv(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||Kr(Si(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function xf(e,t){let n=bf(e);if(!n)return{allowed:!0};let r=!1;return hf(n,{JSXExpressionContainer(o){Sf(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 bf(e){try{return gf.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function sv(e){let t=e.callee;return er.isMemberExpression(t)&&er.isIdentifier(t.property)&&t.property.name==="map"}function Sf(e,t){let n=e.loc;return n?mf({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&mf({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function mf(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 Ef from"@babel/parser";import Ba from"@babel/traverse";import*as Ne from"@babel/types";import*as tr from"node:path";var Et=typeof Ba=="function"?Ba:Ba.default;function Ke(e){try{return Ef.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function $a(e){return e.computed?Ne.isStringLiteral(e.key)||Ne.isNumericLiteral(e.key)?String(e.key.value):null:av(e.key)}function av(e){return Ne.isIdentifier(e)?e.name:Ne.isStringLiteral(e)||Ne.isNumericLiteral(e)?String(e.value):null}function In(e){return Ne.isParenthesizedExpression(e)||Ne.isTSAsExpression(e)||Ne.isTSSatisfiesExpression(e)||Ne.isTSNonNullExpression(e)||Ne.isTSTypeAssertion(e)?In(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=In(e.object),n=t?ja(t):null;return n?[...n,e.property.name]:null}return null}function Cn(e,t){return t.startsWith("@/")?t.slice(2).replace(/\\/g,"/"):t.startsWith(".")?tr.normalize(tr.join(tr.dirname(e),t)).replace(/\\/g,"/"):t}function tt(e,t){return vi(e)===vi(t)}function vi(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 If(e,t,n){let r=Nf(e,t);if(Pf(e,r),Af(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 Et(e,{JSXElement(s){Of(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:ki(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 Cf(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 cv(i,n))o=r(s)||o}return[...n.values()]}function cv(e,t){let n=[],r=lv(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=Cn(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:Va(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)&&Rn(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(rr({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=Cn(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:Va(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 Va(e,t){return t?`${e}.${t}`:e}function Rn(e,t){return e===t||e?.startsWith(`${t}.`)===!0}function Jr(e,t,n){return!Rn(e,t)||!e?null:e===t?n:`${n}${e.slice(t.length)}`}function lv(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=Cn(e.file,i.source.value);for(let a of i.specifiers){if(V.isImportDefaultSpecifier(a)){let c=t.get(rr({file:s,exportName:"default"}));c&&r(a.local.name,c);let l=[...t.values()].filter(u=>tt(u.file,s)&&Rn(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)&&Rn(f.namespace,c));for(let f of l)r(a.local.name,f);let u=t.get(rr({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:Va(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=In(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(rr));for(let f of c){let m=Jr(f.namespace,a.name,s.id.name),d=m?{...f,namespace:m}:f,g=rr(d);u.has(g)||(r(s.id.name,d),u.add(g),o=!0)}}}return n}function rr(e){let t=e.namespace?`${e.namespace}.${e.exportName}`:e.exportName;return`${vi(e.file)}#${t}`}function nn(e){return V.isIdentifier(e)?e.name:e.value}function Rf(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 Ka(e){let t=uv(e),n=[],r=Af(e.ast,t);return Et(e.ast,{JSXElement(o){tt(e.file,e.sourceFile)&&ki(o)===e.sourceComponent||Of(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function wf(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function Nf(e,t){let n=wf();return Et(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function uv(e){let t=wf();return tt(e.file,e.sourceFile)&&dv(t,Nf(e.ast,e.sourceComponent)),Et(e.ast,{ImportDeclaration(n){let r=n.node,o=r.source.value;if(typeof o!="string")return;let i=Cn(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=>Rn(u.namespace,"default"));if(l.length>0){let u=t.namespaceMembers.get(c)??new Set;for(let f of l){let m=kf(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=>Rn(f.namespace,l));if(u.length>0){let f=t.namespaceMembers.get(c)??new Set;for(let m of u){let d=kf(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)}}}}}),Pf(e.ast,t),t}function dv(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 Pf(e,t){Et(e,{VariableDeclarator(n){if(!n.node.init)return;let r=In(n.node.init);if(r){if(V.isIdentifier(n.node.id)){let o=wn(r,t,n),i=n.scope.getBinding(n.node.id.name);o&&i&&Ua(t,i,o);return}if(V.isObjectPattern(n.node.id)){let o=wn(r,t,n);o?.unsupported||o?.local?t.hasUnsupportedAlias=!0:o&&o.namespaceMembers.size>0&&_f(n.node.id,o.namespaceMembers,t,n)}}}})}function Af(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return Et(e,{ReferencedIdentifier(r){if(n){r.stop();return}fv(r)||!r.isIdentifier()||!Tf(r,t)||pv(r,t)||mv(r)||(n=!0,r.stop())}}),n}function fv(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 Tf(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)&&wn(r.node,t,r)?r:null}function pv(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!vf(e,r))return!1;let o=Tf(e,t);if(!o)return!1;if(In(r.node)===o.node)return!!wn(r.node,t,r);let s=e.findParent(c=>c.isObjectProperty());if(!s?.isObjectProperty())return!1;let a=s.get("value");return a.isExpression()&&vf(e,a)&&!!wn(a.node,t,a)}function mv(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function vf(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function wn(e,t,n){let r=In(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 gv(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?Ff(s,o.slice(1).join(".")):null}function gv(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!V.isObjectProperty(i))continue;let s=$a(i);if(!s||!V.isExpression(i.value)){V.isExpression(i.value)&&(o||=wn(i.value,t,n)!==null);continue}let a=wn(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 Ff(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 Ua(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 _f(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&&Ua(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!V.isObjectProperty(o))continue;let i=$a(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=Ff(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&&Ua(n,c,s);continue}if(V.isObjectPattern(a)&&s.namespaceMembers.size>0){_f(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function kf(e,t){if(!Rn(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 Of(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=Mf(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 Mf(e){if(V.isJSXIdentifier(e))return[e.name];if(V.isJSXMemberExpression(e)){let t=Mf(e.object);return t?[...t,e.property.name]:null}return null}function ki(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 Df(e,t){let n=Ke(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=Ka({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 Ee(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 fe(e){return typeof e.start=="number"&&typeof e.end=="number"?{start:e.start,end:e.end}:null}function _t(e,t){let n=fe(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,Ee(t));return n.ok&&n.match.path.isJSXElement()?n.match.path:Ii(e,t)}function or(e,t){let n=fe(t);return n?e.slice(n.start,n.end):""}function Lf(e,t){return e.start===t.start&&e.end===t.end}function Ii(e,t){let n=null;return Et(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 Ci(e,t){return Ja(e,t).length>0}function Ri(e,t){let n=fe(e.node),r=fe(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()&&!hv(o,n,r)))return!0;o=o.parentPath}return!1}function hv(e,t,n){let r=fe(e.node.consequent);if(r&&nt(r,t)&&!nt(r,n))return!1;let o=e.node.alternate?fe(e.node.alternate):null;return!(o&&nt(o,t)&&!nt(o,n))}function Ja(e,t){let n=fe(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=fe(o.node.consequent),a=fe(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()&&Xa(o.node.operator)){let s=fe(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 Xa(e){return e==="&&"||e==="||"||e==="??"}function Bf(e,t){let n=fe(e.consequent);if(n&&nt(n,t))return n;let r=fe(e.alternate);return r&&nt(r,t)?r:null}function $f(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=Rf(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=Ke(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=Cf(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=Ka({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)||ki(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 vv}from"@vcp-dev/contracts";function wi(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=yv(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 yv(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 xv}from"@vcp-dev/contracts";function jf(e){let t=e.changes??(e.change?[e.change]:[]);if(!xv.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=Re(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?bv(r):Sv(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 bv(e){return e.operation==="set"?{kind:"value",value:e.value}:{kind:"undefined"}}function Sv(e,t){let n=e.properties.filter(i=>Mt.isObjectProperty(i)&&Ev(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 Ev(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 Vf(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 Kf(e){let t=vv.safeParse({kind:"set-props",scope:e.scope,changes:e.changes});if(!t.success)return Nn("invalid-change","Typed property changes are invalid");let n=[];for(let r of t.data.changes){let o=await kv(e,r);if(o){if(!o.ok)return Nn("owner-plan-failed",o.reason);Uf(n,o.steps);continue}let i=await e.getPropertyState(e.node.key,r.name,e.selectionRef);if(!i)return Nn("missing-property-state",`No authoritative property state is available for '${r.name}'`);if(i.status==="blocked")return Nn("readonly-property",i.diagnostic?.message??`Property '${r.name}' is not writable`);if(Rv(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=wi({state:i,scope:e.scope,operation:r.operation,selectionRef:e.selectionRef,repeatTarget:s});if(!a.ok)return Nn(a.code,a.reason);let c=a.target;if(c.kind==="value-binding"&&r.operation==="set"){za(n,{type:"update-value",order:n.length,file:c.file,locator:c.locator,value:r.value});continue}if(c.kind==="repeat-property"){let l=jf({source:e.getFileContent(c.target.sourceFile),target:c.target,changes:[r]});if(!l.ok)return Nn("repeat-target-failed",l.reason);Uf(n,l.steps);continue}za(n,{type:"set-property-changes",order:n.length,file:e.node.file,locator:Iv(e.node),scope:e.scope,changes:[r]})}return n.forEach((r,o)=>{r.order=o}),Cv(n)?Nn("step-conflict","Property changes resolve to conflicting write steps"):{ok:!0,steps:n}}async function kv(e,t){return t.name!=="className"&&t.name!=="class"?null:Vf({node:e.node,change:t,classNameSource:e.classNameSource})}function Iv(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 Cv(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 Uf(e,t){for(let n of t)za(e,{...n,order:e.length})}function za(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 Rv(e,t){if(t.operation!=="set"||e.status!=="direct")return!1;let n=e.attribute?.resolution;return n?.status==="resolved"?Ha(n.value,t.value):e.attribute?.source===null&&e.attribute.value===t.value}function Ha(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)=>Ha(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=>Ha(n[i],r[i]))}return!1}function Nn(e,t){return{ok:!1,errorCode:e,reason:t}}import*as sr from"@babel/types";import*as X from"@babel/types";function Wa(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=or(e,u.node),m=r.node.params.map(h=>or(e,h)),d=fe(i.node),g=fe(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:Ni(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 wv(e,t){let n=fe(e.node);return n?Nv(t).some(r=>{let o=fe(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function Nv(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)?Pv(e)?Jf(e.children):[e]:X.isJSXFragment(e)?Jf(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)&&Xa(e.operator)?on(e.right):[]}function Jf(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 Pv(e){let t=e.openingElement.name;return X.isJSXIdentifier(t)?t.name==="Fragment":X.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function Xf(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function Ni(e){return!(X.isIdentifier(e)||X.isThisExpression(e)||X.isMemberExpression(e)||X.isOptionalMemberExpression(e)||X.isCallExpression(e)||X.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(X.isMemberExpression(n)||X.isOptionalMemberExpression(n))&&X.isIdentifier(n.property)&&n.property.name==="map"&&!n.computed}function ir(e,t){let n=Ke(e);if(!n)return t.isRepeatItemRoot===!0;let r=ie(n,Ee(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Ii(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=Dt(e,o);return i?wv(o,i):t.isRepeatItemRoot===!0}function Hf(e,t){let n=Ke(e);if(!n)return!1;let r=ie(n,Ee(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Ii(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 ve from"@babel/types";function Ga(e){if(ve.isJSXIdentifier(e))return/^[A-Z]/.test(e.name)?e.name:null;if(ve.isJSXMemberExpression(e)){let t=e;for(;ve.isJSXMemberExpression(t);)t=t.object;return t.name}return null}function Av(e,t){let n=fe(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=Ga(i.node.name);s&&o(s,i)}}),[...r].sort()}function Ya(e,t,n){let r=Ke(e);if(!r)return{ok:!0};let o=ie(r,Ee(t));if(!o.ok||!o.match.path.isJSXElement())return{ok:!0};let i=ie(r,Ee(n));if(!i.ok||!i.match.path.isJSXElement())return{ok:!0};if(Ci(o.match.path,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let s=Av(o.match.path,i.match.path);return s.length>0?{ok:!1,bindingNames:s}:{ok:!0}}function Gf(e){let t=e;for(;ve.isTSQualifiedName(t);)t=t.left;return ve.isIdentifier(t)?t.name:null}function Gr(e,t){e.isIdentifier()&&e.isReferencedIdentifier()&&t(e),e.traverse({ReferencedIdentifier(n){n.isIdentifier()&&t(n)}})}function Pi(e){let t=[],n=r=>{if(r){if(ve.isIdentifier(r)){t.push(r.name);return}if(ve.isObjectPattern(r)){for(let o of r.properties){if(ve.isRestElement(o)){n(o.argument);continue}ve.isObjectProperty(o)&&n(o.value)}return}if(ve.isArrayPattern(r)){for(let o of r.elements)n(o);return}if(ve.isAssignmentPattern(r)){n(r.left);return}if(ve.isRestElement(r)){n(r.argument);return}ve.isTSParameterProperty(r)&&n(r.parameter)}};return n(e),t}function Za(e,t){let n=fe(e.node),r=fe(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=Wf(e),i=Wf(t);if(!o||!i||!Lf(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=Bf(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=fe(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())&&zf(s)){let a=fe(s.node.body)??fe(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 Wf(e){let t=e;for(;t;){if(t.isReturnStatement())return t.node.argument?fe(t.node.argument):null;if(t.isArrowFunctionExpression()&&(ve.isJSXElement(t.node.body)||ve.isJSXFragment(t.node.body)||ve.isConditionalExpression(t.node.body)||ve.isLogicalExpression(t.node.body)))return fe(t.node.body);t=t.parentPath}return null}function sn(e,t,n){return n.scope.getBinding(t)===e}function Qa(e,t,n,r={}){if(!r.preserveConditionalBoundary&&Ci(e,t))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let o=fe(e.node);if(!o)return{ok:!0};let i=new Set(n.callbackPath.node.params.flatMap(c=>Pi(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=Ga(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function qa(e,t,n){let r=fe(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>Pi(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 Yf(e,t){let n=new Set(e.callbackPath.node.params.flatMap(a=>Pi(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 u=Gf(l);u&&o(u,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function ec(e,t){let n=fe(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 Zf(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 Qf(e,t){return{...e,callbackParams:t}}function tc(e,t){return`${e.collectionNeedsParens?`(${e.collectionExpression})`:e.collectionExpression}${e.mapOperator}((${e.callbackParams.join(", ")}) => ${t})`}function Pn(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 ar(e){return{file:e.file,component:e.component}}function Tv(e){return e.target.kind==="node"?e.target.key:null}function Fv(e){return"kind"in e}function Ai(e){return!Fv(e)}function sc(e,t){let n=_i.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=_i.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function nc(e,t){let n=e.getFileContent(t.file);if(!n)return;let r=Nt(n,Ee(t));if(r.ok)return n.slice(r.match.start,r.match.end)}function cc(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 _v(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function Ov(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 rc(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function Mv(e){let t=If(e.ast,e.sourceNode.component,e.targetParent.component);if(!t.ok)return{ok:!1,reason:t.reason};let n=Za(t.path,e.targetParentPath);if(!n.ok)return{ok:!1,reason:n.reason};let r=Dv({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=sp(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?Ni(o):!0}}}function Dv(e){let t=fe(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=$v(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=Vv(e.callSitePath,c.propName,e.source);if(!l.ok){o=l.reason;return}let u=Lv(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=ec(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:Uv(e.source,t,[...n.values()])}}function Lv(e,t){if(t.length===0)return e;let n=sp(e);if(!n)return null;let r=Ni(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=Bv(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function Bv(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function $v(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=qn(t,o);if(!i)return null;let s=r?.range??fe(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=fe(n.node);return r?{propertyName:n.node.property.name,range:r}:null}function Vv(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=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 Uv(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 sp(e){try{let n=ip.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 Kv(e){let t=fe(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=qf(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let u=qf(c,e.targetFile,e.targetFile);(!u||u.moduleFile!==a.moduleFile||!Jv(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 Jv(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 qf(e,t,n){let r=Xv(e),o=r?.parentPath;if(!r||!o?.isImportDeclaration())return null;let i=o.node.source.value;if(typeof i!="string")return null;let s=Cn(t,i),a=i.startsWith(".")?sc(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 Xv(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function ep(e,t,n,r){let o=Ja(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=zv(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${Wv(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function zv(e,t){return Hv(e.node)?t:`(${t})`}function Hv(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 Wv(e){return e.trim().startsWith("<")?e:`(${e})`}var Gv={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 Ti(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=Gv[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 Yv(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 Zv(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 tp(e){let t=new Set;return Et(e,{Program(n){for(let r of Object.keys(n.scope.bindings))t.add(r);n.stop()}}),t}function np(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function Qv(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=cc(e),o=Ke(t);if(n.exportName!=="default"){let a=o?Zv(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?np(r,tp(o)):r;return{localName:c,importStep:oc(e,c)}}if(!o)return{localName:r,importStep:oc(e,r)};let i=Yv(o,n.source);if(i)return{localName:i};let s=np(r,tp(o));return{localName:s,importStep:oc(e,s)}}function qv(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??cc(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 ek(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?tk(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function tk(e){return Object.fromEntries(Object.entries(e).filter(t=>ac(t[1])))}function ac(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(ac):typeof e=="object"?Object.values(e).every(ac):!1}function oc(e,t=cc(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 rp(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 nk(e,t,n){let r=e;for(;r;){if(r===t)return!0;r=n.getNode(r)?.parentKey}return!1}function Yr(e,t){return`Operation kind '${e}' does not match params.kind '${t}'`}function lc(e,t=e.path){return{kind:"value",root:e.root,path:t&&t.length>0?t:void 0,expectedRange:e.expectedRange}}function Zr(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:lc(e,t.slice(0,n)),index:r.index}}return null}function ic(e,t){return e.locator?e.collectionPathMap?.[t]?lc(e.locator,e.collectionPathMap[t]):Zr(e.locator)?ok(e.locator,ik(t,e.collectionIndexMap)):null:null}function rk(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:ap(o,t)}function ap(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=ap(r,t);return o===void 0?void 0:{[n.name]:o}}function ok(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},lc(e,i)}return null}function ik(e,t){return t?.[e]??e}function op(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 sk(e,t){return ak(e.root,t.root)&&lk(e.path??[],t.path??[])}function ak(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&&ck(e.sourceRange,t.sourceRange)}}function ck(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function lk(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 Fi=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:Yr(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:Yr(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:Yr(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:Yr(t.kind,t.params.kind)};let r=t;if(!Ai(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=rp(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:Yr(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=Tv(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):uk(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?Kf({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=ic(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:Ee(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=ic(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:Ee(t),segmentIndex:n,newText:r}]}}coerceTextValueForValueTarget(t,n,r,o="update-text"){let i=this.graph.getFileContent(t),s=Ke(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(!_v(a.match.path))return{ok:!0,value:r};let c=Ov(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=ic(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=Ke(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=Zr(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=Pn(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:Ee(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||Df(n,t)>1)return null;let r=sc(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(!Ai(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=Pn(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=yf(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=Ti(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"?Qv(n.params.node,this.graph.getFileContent(r.file)):void 0,v=E?.importStep;return v&&h.push({order:S++,file:r.file,type:"add-import",moduleSpecifier:v.moduleSpecifier,imports:v.imports}),h.push({order:S++,file:r.file,type:"insert-child",parentLocator:Ee(r),node:{jsx:qv(n.params.node,E?.localName)},placement:n.params.position.relation,anchorLocator:i?Ee(i):void 0}),this.buildPlan(t,n,h,o)}async planExternalBackedInsertChild(t,n,r,o,i,s){if(!Ai(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:ek(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(!Ai(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=Zr(a.locator);if(!c)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires an array-backed target"};let l=rk(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"?op(0,a.collectionIndexMap):op(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=Pn(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:")||Hf(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=Ke(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(Ri(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let g=Ya(c,r,o);return g.ok?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:Ee(r),targetParentLocator:Ee(o),placement:s,anchorLocator:a?Ee(a):void 0,selectionContext:ar(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=Ke(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&&!Xf(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 C=Wa(c,l,a);if(d&&!Wr(d,C)||!d&&C)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 C=Ti(o,{kind:"native-tag",tag:r.tag});if(C)return{ok:!1,errorCode:"unsupported-operation",reason:C}}let g=nc(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(Ri(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let h=ep(c,u,f,g);for(let C of h.conditionPaths){let N=qa(C,f,m);if(!N.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${N.bindingNames.join(", ")}`}}let S=Qa(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=Yf(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 C=Mv({source:c,ast:l,sourceContext:m,sourceNode:r,targetParent:o,targetParentPath:f});if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:C.reason};v=C.context}else{let C=ec(m.collectionPath,f);if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:C.reason??`Cannot move repeat-backed child because the repeat collection is not visible at the target: ${C.bindingNames.join(", ")}`}}return this.buildPlan(t,n,[{order:0,file:r.file,type:"move-repeat-template-child",locator:Ee(r),targetParentLocator:Ee(o),placement:s,anchorLocator:a?Ee(a):void 0,repeatExpression:tc(v,h.sourceJsx),selectionContext:ar(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),u=Ke(c),f=Ke(l);if(!u||!f)return null;let m=$f({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=Za(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")&&Wa(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 M=Ti(o,{kind:"native-tag",tag:r.tag});if(M)return{ok:!1,errorCode:"unsupported-operation",reason:M}}let v=nc(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(Ri(d,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let C=ep(c,d,g,v);for(let M of C.conditionPaths){let L=qa(M,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 N=Qa(d,g,S,{preserveConditionalBoundary:C.conditionPaths.length>0});if(!N.ok)return{ok:!1,errorCode:"unsupported-operation",reason:N.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${N.bindingNames.join(", ")}`};let A=Kv({sourceFile:r.file,targetFile:o.file,sourceContext:S,targetParentPath:g});if(!A.ok)return{ok:!1,errorCode:"unsupported-operation",reason:A.reason};let P=Zf(S);if(!P.ok)return{ok:!1,errorCode:"unsupported-operation",reason:P.reason};let I=Qf(S,P.callbackParams),T=[{order:0,file:r.file,type:"remove-node",locator:Ee(r),removeWhitespace:!0}];for(let M of A.imports)T.push({order:T.length,file:o.file,type:"add-import",moduleSpecifier:M.moduleSpecifier,imports:M.imports});return T.push({order:T.length,file:o.file,type:"insert-jsx-expression-child",parentLocator:Ee(o),expression:tc(I,C.sourceJsx),placement:s,anchorLocator:a?Ee(a):void 0,selectionContext:ar(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=rp(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(nk(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 v=n.params.target.relation,C=i.anchorNode&&(v==="before"||v==="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:v,anchorSourceId:C?.kind==="external-entry"?C.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=Pn(r,c,this.graph.getTextProvenance?.(r.key,0)??null);if(m&&!rc(m))return{ok:!1,errorCode:"unsupported-operation",reason:m};if(r.isRepeatItemRoot&&f?.isRepeatItemRoot&&r.repeatOwnerKey&&r.repeatOwnerKey===f.repeatOwnerKey&&(u==="before"||u==="after")){let v=c,C=await this.graph.getTextWriteTarget(f.key,0);if(v?.kind==="value-binding"&&C?.kind==="value-binding"&&v.locator&&C.locator){let N=Zr(v.locator),A=Zr(C.locator);if(N&&A&&v.file===C.file&&sk(N.locator,A.locator)){let P=N.index,I=A.index,T=u==="before"?I-(P<I?1:0):I+(P<I?0:1);return this.buildPlan(t,n,[{order:0,file:v.file,type:"move-array-item",locator:N.locator,fromIndex:P,toIndex:T}],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 d=this.getRepeatBackedTemplateStructureReason(r),g=rc(m)?m:d;if(g&&rc(g)){let v=this.planRepeatTemplateInternalMove(t,n,r,s,o,u,f);if(v)return v;let C=this.planRepeatTemplateHoistMove(t,n,r,s,o,u,f);if(C)return C;let N=this.planCrossFileRepeatTemplateHoistMove(t,n,r,s,o,u,f);return N||{ok:!1,errorCode:"unsupported-operation",reason:g}}if(d)return{ok:!1,errorCode:"unsupported-operation",reason:d};let h=await this.getUpstreamBackedDescendantReason(r);if(h)return{ok:!1,errorCode:"unsupported-operation",reason:h};if(r.tag&&r.tag.toLowerCase()===r.tag){let v=Ti(s,{kind:"native-tag",tag:r.tag});if(v)return{ok:!1,errorCode:"unsupported-operation",reason:v}}if(l)return this.planCrossFileMove(t,n,r,s,o,u,f);let S=Ya(this.graph.getFileContent(r.file),r,s);if(!S.ok)return{ok:!1,errorCode:"unsupported-operation",reason:S.reason??`Cannot move node because it depends on bindings outside the target scope: ${S.bindingNames.join(", ")}`};let E=[{order:0,file:r.file,type:"move-node",locator:Ee(r),targetParentLocator:Ee(s),placement:u,anchorLocator:f?Ee(f):void 0,selectionContext:ar(s)}];return this.buildPlan(t,n,E,o)}planCrossFileMove(t,n,r,o,i,s,a){let c=[],l=0,u=this.graph.getFileContent(r.file),f=nc(this.graph,r)??`<${r.component} />`,m=xf(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:Ee(r),removeWhitespace:!0}),r.importedFrom&&r.exportName){let g=r.tag??r.component,S={moduleSpecifier:sc(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:Ee(o),node:{jsx:f},placement:s,anchorLocator:a?Ee(a):void 0,selectionContext:ar(o)})}else c.push({order:l++,file:o.file,type:"insert-child",parentLocator:Ee(o),node:{jsx:f},placement:s,anchorLocator:a?Ee(a):void 0,selectionContext:ar(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:Se(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 uk(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 mc from"@babel/generator";import{parse as Ck}from"@babel/parser";import gc from"@babel/traverse";import*as R from"@babel/types";import*as Bt from"@babel/types";import uc from"@babel/generator";import*as xe from"@babel/types";var dk=typeof uc=="function"?uc:uc.default,fk=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,pk=/^((?:https?:)?\/\/)[^/@\s]+@/i,mk=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function lp(e,t){let n=Lt(e.callee);if(!n)return null;if(n==="fetch")return dc(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(cp(r))return dc(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(cp(r))return dc(e.arguments[0],r,t,["ky client contract"])}return null}function dc(e,t,n,r){if(!e||xe.isSpreadElement(e)||xe.isJSXNamespacedName(e))return xk(t,n,r,"missing url argument");let o=Qr(e);return{sourceKind:yk(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(xe.isStringLiteral(e))return Oi(e.value);if(xe.isTemplateLiteral(e))return Oi(gk(e));if(xe.isBinaryExpression(e)&&e.operator==="+"){let t=Qr(e.left),n=Qr(e.right);return!t&&!n?void 0:Oi(`${t??fc(e.left)}${n??fc(e.right)}`)}if(xe.isMemberExpression(e)){let t=up(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)?Qr(t):void 0,o=n&&!xe.isSpreadElement(n)?Qr(n):void 0;return o&&r?Oi(`${o} + ${r}`):r??o}if(xe.isIdentifier(e))return`:${e.name}`}}function gk(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+=fc(r))}return t}function fc(e){if(xe.isIdentifier(e))return`:${e.name}`;if(xe.isMemberExpression(e)){let t=up(e);if(t)return`env:${t}`}return`:${hk(e)}`}function hk(e){return dk(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function Oi(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(pk,"$1<redacted>@").replace(mk,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?fk.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function yk(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 xk(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function cp(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function up(e){return!xe.isMemberExpression(e.object)||!xe.isIdentifier(e.object.object,{name:"process"})||!bk(e.object.property,"env")?null:xe.isIdentifier(e.property)?e.property.name:xe.isStringLiteral(e.property)?e.property.value:null}function bk(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 Sk=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),Ek=new Set(["getConfig","submit"]);function dp(e,t){let n=vk(Lt(e.callee),t);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!Sk.has(i))return null;let s=pc(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(!Ek.has(i))return null;let s=pc(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=pc(e,0)??kk(e,0,"path")??"/cms/:path",s=Ik(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 vk(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 fp(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 pp(e){let t=Lt(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function pc(e,t){let n=e.arguments[t];return Bt.isStringLiteral(n)?n.value:null}function kk(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 Ik(e){return/^\/collections\/([^/]+)(?:\/|$)/.exec(e)?.[1]??null}var yc=typeof gc=="function"?gc:gc.default,w_=typeof mc=="function"?mc:mc.default,Rk={maxFunctionDepth:8,maxImportDepth:6},wk=new Set(["src","href","alt","poster","content","title","aria-label"]);async function bp(e){let t=e.fileCache??new Map,n=Sc(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...Rk,...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 Sp(e.element.componentName,e.graph,r);let o=[];o.push(...await Fk(e.element,e.graph,r),...await _k(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await Ok(s,e.element,e.graph,r);a&&o.push(Li(a,"text","children"))}for(let s of e.element.attributes??[]){let a=Tk(s,e.element);if(!a)continue;let c=await kp(s.source,e.element,e.graph,r);c&&o.push(Li(c,a,s.name))}let i=Gk(o).sort(Tp);return{hasDynamicData:i.length>0,bindings:i}}async function Sp(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 Ep(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 vp(l.sourceFile,n);if(!f)continue;let m=$i(f,n,{importDepth:n.importDepth+1});m.paramSources.clear(),m.scopeVariables=_p(f,l.componentName),await Sp(l.componentName,t,m);let d=await Nk(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=Pp(u);f.length===1&&c.set(l,f[0])}Ak(o,c,n)}async function Ep(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 vp(e,r))?.imports.get(t);if(!s||!Tt(s.source))return!1;let a=await Dp(e,s.source,r.exists);return a?a===n?!0:Ep(a,s.importedName,n,r,o):!1}async function Nk(e,t){let n=new Map;yc(t.analysis.ast,{JSXElement(o){if(Pk(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 Pk(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 vp(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 Sc(e,r,t.fileCache)}function Ak(e,t,n){if(R.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,bc(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,Je(o))}}function Tk(e,t){return e.name==="dangerouslySetInnerHTML"?"richtext":wk.has(e.name)?"attribute":t.importedFrom||/^[A-Z]/.test(t.tag)?"component-prop":null}async function Fk(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 Bi(i.collectionSource,n);s&&r.push(Li(An(s),"repeat-region",i.collectionExpression))}return r}async function _k(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 Bi(i.conditionSource,n);s&&r.push(Li(An(s),"conditional-region",i.conditionExpression))}return r}async function Ok(e,t,n,r){return kp(e.source,t,n,r)}async function kp(e,t,n,r){let o=await Mk(e,t,n,r);return o||Bi(e,r)}async function Mk(e,t,n,r){if(!e)return null;let o=Dk(e.base,t,n);if(!o)return null;let i=await Bi(o.collectionSource,r);return i?no(i,e.path,!0):null}function Dk(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 Bi(e,t){if(!e)return null;let n=await Ip(e.base,t);return n?no(n,e.path,!1):null}async function Ip(e,t){let n=t.paramSources.get(e);if(n)return Je(n);if(t.variableCache.has(e))return Yk(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await Lk(e,t);if(r)return t.variableCache.set(e,Je(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?Je(s):null),t.resolvingVariables.delete(e),s}let i=t.analysis.imports.get(e);if(i&&t.importDepth<t.options.maxImportDepth){let s=await Op(i,t);if(s){let a=$i(s,t,{importDepth:t.importDepth+1}),c=Mp(i,s);if(c){let f=(await Tn(c,[],a)).returnSource;return t.variableCache.set(e,f?Je(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?Je(u):null),t.resolvingVariables.delete(e),u}}}return t.variableCache.set(e,null),t.resolvingVariables.delete(e),null}async function Lk(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];yc(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 Ip(e.name,t);if(R.isMemberExpression(e)||R.isOptionalMemberExpression(e)){let n=R.isMemberExpression(e)?fp(e,{file:t.file}):null;if(n)return Np(n);let r=await Bk(e,t);if(!r)return null;let o=Hk(e);return no(r,o,!1)}if(R.isAwaitExpression(e))return R.isExpression(e.argument)?De(e.argument,t):null;if(R.isCallExpression(e))return Cp(e,t);if(R.isObjectExpression(e)){let n=await Rp(e,t);return Object.keys(n).length>0?bc(n,t.file):null}if(R.isConditionalExpression(e)){let n=await De(e.consequent,t),r=await De(e.alternate,t);return to(gp(n,r))}if(R.isLogicalExpression(e)){let n=await De(e.left,t),r=await De(e.right,t);return to(gp(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 Bk(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 Cp(e,t){let n=dp(e,{file:t.file,imports:t.analysis.imports});if(n)return Np(n);if(pp(e)){let f=e.arguments[0];if(f&&R.isExpression(f))return to(await De(f,t))}let r=await $k(e,t);if(r)return r;let o=lp(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 Uk(e,t);if(i)return i;let s=await Kk(e,t);if(s)return s;let a=await Jk(e,t);if(a)return a;let c=await Xk(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=Pp(l);return u.length===1?to(u[0]):null}async function $k(e,t){let n=Lt(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=Vk(e.arguments[0],t.file,"SWR key"),s=e.arguments[1];if(R.isIdentifier(s)){let a=await eo(s.name,t);if(a)return(await Tn(a.node,i?[i]:[],a.context)).returnSource??i}return i}let r=e.arguments[0];if(!R.isObjectExpression(r))return Mi(t.file,`${n} without static options`);let o=jk(r,"queryFn");if(!o)return Mi(t.file,`${n} without queryFn`);if(R.isIdentifier(o)){let i=await eo(o.name,t);return i?(await Tn(i.node,[],i.context)).returnSource:Mi(t.file,`${n} queryFn unresolved`)}return R.isArrowFunctionExpression(o)||R.isFunctionExpression(o)?(await Tn(o,[],t)).returnSource:R.isCallExpression(o)?Cp(o,t):null}function jk(e,t){for(let n of e.properties){if(!R.isObjectProperty(n)||!R.isExpression(n.value))continue;if(wp(n)===t)return n.value}return null}function Vk(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 Uk(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 An(r);let o=e.arguments[0];if(R.isIdentifier(o)){let i=await eo(o.name,t);if(!i)return An(r);let s=await Tn(i.node,[r],i.context);return{...An(r),...s.objectReturnMap??s.returnSource?.fieldMap?{fieldMap:s.objectReturnMap??s.returnSource.fieldMap}:{}}}if(R.isArrowFunctionExpression(o)||R.isFunctionExpression(o)){let i=await Tn(o,[r],t);return{...An(r),...i.objectReturnMap??i.returnSource?.fieldMap?{fieldMap:i.objectReturnMap??i.returnSource.fieldMap}:{}}}return An(r)}async function Kk(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 Jk(e,t){return!R.isMemberExpression(e.callee)||!R.isIdentifier(e.callee.property,{name:"then"})||!R.isExpression(e.callee.object)?null:to(await De(e.callee.object,t))}async function Xk(e,t){if(!R.isIdentifier(e.callee))return null;let n=await eo(e.callee.name,t);if(!n)return null;let r=[];for(let i of e.arguments){if(!R.isExpression(i)){r.push(Mi(t.file,`unsupported argument for ${e.callee.name}`));continue}let s=await De(i,t);r.push(s)}return(await Tn(n.node,r,n.context)).returnSource}async function eo(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 Op(r,t);if(!o)return null;let i=$i(o,t,{importDepth:t.importDepth+1}),s=Mp(r,o);return s?{node:s,context:i}:eo(r.importedName,i)}async function Tn(e,t,n){if(n.functionDepth>=n.options.maxFunctionDepth)return{returnSource:null};let r=$i(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let u=t[l];u&&hc(c,Wk(u),r)});let o=zk(e),i=null,s,a=!1;for(let c of o){if(R.isObjectExpression(c)){s={...s??{},...await Rp(c,r)},i=i??bc(s,n.file);continue}let l=await De(c,r);if(l){if(!i){i=l;continue}let u=xc(i,l);if(!u){a=!0,i=null;continue}i=u}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function hc(e,t,n){if(R.isIdentifier(e)){n.paramSources.set(e.name,Je(t));return}if(R.isAssignmentPattern(e)){hc(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=no(t,[{kind:"property",name:r.key.name}],!0),i=R.isAssignmentPattern(r.value)?r.value.left:r.value;hc(i,o,n)}}function zk(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 Rp(e,t){let n={};for(let r of e.properties){if(!R.isObjectProperty(r))continue;let o=wp(r);if(!o||!R.isExpression(r.value))continue;let i=await De(r.value,t);i&&(n[o]=i)}return n}function wp(e){return R.isIdentifier(e.key)&&!e.computed?e.key.name:R.isStringLiteral(e.key)?e.key.value:null}function Hk(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 no(e,t,n){if(t.length===0)return Je(e);let r=t[0];if(r?.kind==="property"&&e.fieldMap?.[r.name])return no(e.fieldMap[r.name],t.slice(1),n);let o=Je(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=qr(o.valuePath,"data.items[]"),o.cmsFieldRoot=!1,o):i[0]==="fields"?(o.fieldPath=qr(o.fieldPath,i.slice(1).join(".")),o.cmsFieldRoot=!0,o):o.cmsFieldRoot||n||o.fieldMap?(o.fieldPath=qr(o.fieldPath,i.join(".")),o):(o.valuePath=qr(o.valuePath,mp(t)),o)}return o.valuePath=qr(o.valuePath,mp(t)),o}function mp(e){return e.map(t=>t.kind==="property"?t.name:`[${t.index}]`).join(".").replace(/\.\[/g,"[")}function qr(e,t){return t?e?t.startsWith("[")?`${e}${t}`:`${e}.${t}`:t:e}function Np(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 An(e){let t=Je(e);return t.sourceType==="cms-field"&&!t.valuePath&&(t.valuePath="items[]"),t}function Wk(e){let t=Je(e);return t.valuePath=void 0,t.sourceType==="cms-field"&&(t.cmsFieldRoot=!1),t}function to(e){return e?{...Je(e),confidence:e.confidence==="unknown"?"unknown":"safe-derived",evidence:[...e.evidence,{file:e.evidence[0]?.file??"unknown",reason:"safe derived expression"}]}:null}function gp(e,t){return e?t?xc(e,t):Je(e):t?Je(t):null}function xc(e,t){if(Di(e)!==Di(t))return null;let n=Fp(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function Pp(e){let t=new Map;for(let n of e){let r=Di(n),o=t.get(r);t.set(r,o?xc(o,n):Je(n))}return[...t.values()]}function Di(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,Di(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 bc(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 Mi(e,t){return{sourceKind:"unknown-api",sourceType:"api-field",confidence:"unknown",readonly:!0,evidence:[{file:e,reason:t}]}}function Li(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 Ap(e){let t=[...e].sort(Tp),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 Gk(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 Tp(e,t){return hp(e.targetKind)-hp(t.targetKind)||Fp(e.confidence,t.confidence)||yp(e.sourceKind)-yp(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function hp(e){return{"repeat-region":0,"conditional-region":1,text:2,richtext:3,attribute:4,"component-prop":5}[e]}function yp(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function Fp(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function Sc(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=Ck(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 yc(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 cr(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)&&xp(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)&&xp(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 cr(e){return!e||R.isVoidPattern(e)?[]:R.isIdentifier(e)?[e.name]:R.isObjectPattern(e)?e.properties.flatMap(t=>R.isObjectProperty(t)?cr(t.value):cr(t.argument)):R.isArrayPattern(e)?e.elements.flatMap(t=>t?cr(R.isRestElement(t)?t.argument:t):[]):R.isAssignmentPattern(e)?cr(e.left):R.isRestElement(e)?cr(e.argument):[]}function xp(e){return R.isFunctionExpression(e)||R.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 Op(e,t){let n=await Dp(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return Sc(n,r,t.fileCache)}function Mp(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function Dp(e,t,n){return Tt(t)?yn(e,t,n):null}function $i(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 Yk(e){return e?Je(e):null}function Je(e){return{...e,evidence:e.evidence.map(t=>({...t})),...e.fieldMap?{fieldMap:Object.fromEntries(Object.entries(e.fieldMap).map(([t,n])=>[t,Je(n)]))}:{}}}import*as vc from"@babel/parser";import Ec from"@babel/traverse";import*as z from"@babel/types";import{classifySiteEditPropertyName as Zk}from"@vcp-dev/contracts";var kc=typeof Ec=="function"?Ec:Ec.default;function Ic(e){let t=Zk(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=vc.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=Qk(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=qk(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)||!Up(E))return rt("unsafe-collection","Repeat materialization requires an array of local static objects without spreads");let v=[{kind:"index",index:S}];l.push(v),u.push({kind:"value",root:a.root,path:v})}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=iI(e.element,e.propertyName),h=rI(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:oI(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 Qk(e,t){let n=[];return kc(e,{CallExpression(r){let o=Lp(r.node);o&&$p(o.callback,t)&&n.push({...o,span:Bp(r.node)})},OptionalCallExpression(r){let o=Lp(r.node);o&&$p(o.callback,t)&&n.push({...o,span:Bp(r.node)})}}),n.sort((r,o)=>r.span-o.span),n[0]??null}function Lp(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 qk(e,t,n,r){let o=ro(t);if(o&&z.isArrayExpression(o))return{array:o,locator:{kind:"value",root:{kind:"expression",sourceRange:Jp(o)}},sourceFile:n};if(!z.isIdentifier(t))return null;let i=[];if(kc(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=ro(i[0].init);return!s||!z.isArrayExpression(s)?null:{array:s,locator:{kind:"value",root:{kind:"binding",name:t.name}},sourceFile:n}}return eI(e,t.name,n,r)}function eI(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=nI(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=vc.parse(c,{sourceType:"module",plugins:["typescript","jsx"]})}catch{return null}let u=tI(l,a),f=u?ro(u):null;return!f||!z.isArrayExpression(f)?null:{array:f,locator:{kind:"value",root:{kind:"binding",name:a}},sourceFile:s}}return null}function tI(e,t){let n=null;return kc(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 nI(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 ro(e){return z.isParenthesizedExpression(e)?ro(e.expression):z.isTSAsExpression(e)?Vp(e.typeAnnotation)?ro(e.expression):null:z.isTSSatisfiesExpression(e)?null:e}function Vp(e){return z.isTSTypeReference(e)&&z.isIdentifier(e.typeName)&&e.typeName.name==="const"}function Up(e){return e.properties.every(t=>!z.isObjectProperty(t)||t.computed||!z.isExpression(t.value)?!1:ji(t.value))}function ji(e){if(z.isTSAsExpression(e)&&Vp(e.typeAnnotation))return ji(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:ji(n));if(z.isObjectExpression(e))return Up(e);let t=At(e);return t.status==="resolved"||t.status==="undefined"}function rI(e,t){let n=e.properties.filter(o=>z.isObjectProperty(o)&&Kp(o.key)===t);if(n.length>1)return null;let r=n[0];return r?z.isExpression(r.value)?ji(r.value)?"static":z.isIdentifier(r.value)||z.isMemberExpression(r.value)?"binding":null:null:"missing"}function oI(e,t){let n=e.properties.filter(o=>z.isObjectProperty(o)&&Kp(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 iI(e,t){let n=e.attributes?.filter(r=>r.name===t)??[];return n.length===1?n[0]:void 0}function Kp(e){return z.isIdentifier(e)?e.name:z.isStringLiteral(e)?e.value:z.isNumericLiteral(e)?String(e.value):null}function Jp(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 Bp(e){return e.start==null||e.end==null?Number.MAX_SAFE_INTEGER:e.end-e.start}function $p(e,t){let n=Jp(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 XI}from"@vcp-dev/contracts";import*as H from"@babel/types";import ao from"node:path";import*as me from"@babel/types";import*as Gp from"@babel/parser";import Cc from"@babel/traverse";import*as q from"@babel/types";function Vi(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 Xp(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 zp(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 Yp=typeof Cc=="function"?Cc:Cc.default,Hp=new WeakMap;function Zp(e){try{return Gp.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Ui(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=Zp(n);return e.set(t,{source:n,ast:o}),o}function Ki(e,t){let n=null,r=-1;for(let o of oo(e).expressions){let i=o.node.loc;if(!i||!wc(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s>=r&&(n=o,r=s)}return n}function Qp(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of oo(e).expressions){if(!sI(o.node.loc,t))continue;let i=(o.node.end??0)-(o.node.start??0);i<=r&&(n=o,r=i)}return n}function Rc(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of oo(e).jsxElements){let i=o.node.loc;if(!i||!wc(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s<=r&&(n=o,r=s)}return n}function oo(e){let t=Hp.get(e);if(t)return t;let n={expressions:[],jsxElements:[]};return Yp(e,{Expression(r){n.expressions.push(r)},JSXElement(r){n.jsxElements.push(r)}}),Hp.set(e,n),n}function sI(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 wc(e,t){let n=Wp({line:e.start.line,column:e.start.column},{line:t.startLine,column:t.startColumn}),r=Wp({line:e.end.line,column:e.end.column},{line:t.endLine,column:t.endColumn});return n>=0&&r<=0}function Ji(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 Wp(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 lr(e,t){if(t)return Nc(e,t);let n=Xp(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function Nc(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function io(e,t,n){let r=null,o=Number.POSITIVE_INFINITY;for(let i of oo(e).expressions){if(Nc(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function qp(e,t,n,r){let o=null,i=Number.POSITIVE_INFINITY;for(let s of oo(e).expressions){if(Nc(s.node,t)!==n)continue;let a=s.node.loc;if(!a||!wc(a,r))continue;let c=(s.node.end??0)-(s.node.start??0);c<=i&&(o=s,i=c)}return o}function ur(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}function so(e){let t=null;if(Yp(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=Zp(o),s={source:o,ast:i};return n.set(e,s),s}function aI(e){return me.isIdentifier(e.callee)&&(e.callee.name==="useState"||e.callee.name==="useReducer")?e.callee.name:me.isMemberExpression(e.callee)&&me.isIdentifier(e.callee.property)&&(e.callee.property.name==="useState"||e.callee.property.name==="useReducer")?e.callee.property.name:null}function cI(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()||!me.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 lI(e,t){let n=cI(e.path);if(!n)return null;let r=qn(e,t);return r?{...n,...r}:null}function uI(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}function Pc(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 Ac(e,t){for(let n of e.program.body){if(t==="default"&&me.isExportDefaultDeclaration(n))return me.isExpression(n.declaration)?{kind:"default-expression",expression:n.declaration}:(me.isFunctionDeclaration(n.declaration)||me.isClassDeclaration(n.declaration))&&n.declaration.id?{kind:"default-binding",name:n.declaration.id.name}:null;if(me.isExportNamedDeclaration(n)){if(n.declaration){if(me.isVariableDeclaration(n.declaration)){for(let r of n.declaration.declarations)if(me.isIdentifier(r.id)&&r.id.name===t)return{kind:"local-binding",name:r.id.name}}if((me.isFunctionDeclaration(n.declaration)||me.isClassDeclaration(n.declaration))&&n.declaration.id&&n.declaration.id.name===t)return{kind:"local-binding",name:t}}for(let r of n.specifiers)if((me.isIdentifier(r.exported)?r.exported.name:r.exported.value)===t&&me.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 em(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:v,visited:C}=d,N=`${g}::${h.kind}::${h.identifier.name}`;if(C.has(N))return null;C.add(N);try{let A=await a({currentFile:g,binding:h,readFile:S,exists:E,fileCache:v,visited:C});if(A)return A;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:v,visited:C});if(h.kind==="param")return null;if(h.path.isVariableDeclarator()){let P=h.path.node.init;if(!P||!me.isExpression(P))return null;let I=h.path.get("init");if(I&&!Array.isArray(I)&&I.isExpression()){let M=await t({currentFile:g,expressionPath:I,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});if(M)return M;if(I.isCallExpression()){let L=await n({currentFile:g,callPath:I,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});if(L)return L}}let T=await r(P,h.path.scope,g,S,E,v,C);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 P=h.path.parentPath.node.declaration;if(!me.isExpression(P))return null;let I=await r(P,h.path.scope,g,S,E,v,C);return I===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:I,sourceKind:"binding"}}return null}finally{C.delete(N)}}async function a(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:v,visited:C}=d;if(!h.path.isVariableDeclarator()||!h.path.get("id").isArrayPattern())return null;let N=h.path,A=N.node.init;if(!A||!me.isCallExpression(A))return null;let P=aI(A);if(!P||!me.isArrayPattern(N.node.id)||N.node.id.elements.findIndex(G=>me.isIdentifier(G)&&G.name===h.identifier.name)!==0)return null;let T=P==="useReducer"?1:0,M=A.arguments[T];if(!M||!me.isExpression(M))return null;let L=await r(M,N.scope,g,S,E,v,C);return L===void 0?null:{kind:"static",file:g,root:{kind:"hook-state",name:h.identifier.name,hook:P},value:L,sourceKind:"binding"}}async function c(d){let g=lI(d.binding,d.sourceInfo);if(!g||!d.graph)return null;let h=[...d.graph.elements.values()].filter(P=>uI(P,d.currentFile,g.componentName,g.exportName));if(h.length!==1)return null;let S=h[0],E=S.attributes?.find(P=>P.name===g.propName);if(E&&!E.source){let P=await l({caller:S,propName:g.propName,remainingPath:g.remainingPath,readFile:d.readFile,fileCache:d.fileCache});if(P)return Pc(P,{componentName:g.componentName,propName:g.propName,file:S.sourceFile})}if(!E?.source){let P=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(P)return Pc(P,{componentName:g.componentName,propName:g.propName,file:S.sourceFile});let I=uf(d.binding,g.componentName,g.propName);if(!I||I.propName!==g.propName)return null;let T=await r(I.expressionPath.node,I.expressionPath.scope,d.currentFile,d.readFile,d.exists,d.fileCache,d.visited);if(T===void 0)return null;let M=g.remainingPath;return M.length>0&&qe(T,M)===void 0?null:{kind:"value",file:d.currentFile,root:{kind:"binding",name:g.propName},path:M,sourceKind:"binding",semanticKind:"component-prop",displayExpression:I.displayPath,chainPrefix:[{kind:"component-prop",file:d.currentFile,displayName:I.displayPath,canEditHere:!0}],editMode:"upstream",diagnostics:[]}}let v=await $t(S.sourceFile,d.readFile,d.fileCache);if(!v.ast)return null;let C=qp(v.ast,v.source,E.source.expression,E.sourceRange)??io(v.ast,v.source,E.source.expression);if(!C)return null;let N={...E.source,expression:ur(E.source.expression,g.remainingPath),path:[...E.source.path,...g.remainingPath]},A=await o({currentFile:S.sourceFile,expressionPath:C,sourceInfo:N,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 A?Pc(A.kind==="external"?A:{...A,displayExpression:N.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=Rc(g.ast,d.caller.sourceRange);if(!h)return null;let S=h.get("openingElement").get("attributes").find(N=>N.isJSXAttribute()&&N.node.name.type==="JSXIdentifier"&&N.node.name.name===d.propName);if(!S?.isJSXAttribute())return null;let E=S.get("value"),v=E.isStringLiteral()?E:E.isJSXExpressionContainer()?E.get("expression"):null;if(!v?.isExpression())return null;let C=Ji(v.node);return C?{kind:"value",file:d.caller.sourceFile,root:{kind:"expression",sourceRange:C},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=Rc(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 v=E.get("argument");if(!v.isExpression())continue;let C=await i({expression:v.node,scope:v.scope,source:g.source,currentFile:d.caller.sourceFile,readFile:d.readFile,exists:d.exists,fileCache:d.fileCache,visited:d.visited});if(!C)continue;let N=[{kind:"property",name:d.propName},...d.remainingPath],A={...C,expression:ur(C.expression,N),path:[...C.path,...N]},P=await o({currentFile:d.caller.sourceFile,expressionPath:v,sourceInfo:A,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)return P.kind==="external"?P:{...P,displayExpression:A.expression}}return null}async function f(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:v,visited:C}=d,N=h.path.parentPath;if(!N||!N.isImportDeclaration())return null;let A=N.node.source.value;if(typeof A!="string")return null;let P=await yn(g,A,E);if(!P)return null;if(h.path.isImportDefaultSpecifier()){let ne=await $t(P,S,v),ke=ne.ast?Ac(ne.ast,"default"):null,Y=await m({file:P,exportName:"default",readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});return!Y||Y.kind!=="static"?null:{kind:"static",file:ke?.kind==="default-expression"?Y.file:P,root:ke?.kind==="default-expression"?Y.root:{kind:"default-export"},value:Y.value,sourceKind:"imported-binding"}}if(!h.path.isImportSpecifier())return null;let I=h.path.node.imported,T=me.isIdentifier(I)?I.name:I.value,M=await $t(P,S,v),L=M.ast?Ac(M.ast,T):null,G=await m({file:P,exportName:T,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});return G?G.kind==="external"?G:{kind:"static",file:L?.kind==="re-export"?G.file:P,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:v,visited:C}=d,N=`export::${g}::${h}`;if(!C.has(N)){C.add(N);try{let A=await $t(g,S,v);if(!A.ast)return;let P=Ac(A.ast,h);if(!P)return;if(P.kind==="default-expression"){let L=P.expression;if(!L||!me.isIdentifier(L))return;let G=so(A.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:v,visited:C})??void 0:void 0}if(P.kind==="re-export"){if(!P.source||!P.name)return;let L=await yn(g,P.source,E);return L?m({...d,file:L,exportName:P.name}):void 0}let I=P.name;if(!I)return;let T=so(A.ast).getBinding(I);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:v,visited:C})??void 0:void 0}finally{C.delete(N)}}}return{resolveExportValue:m,resolveComponentPropBinding:c,resolveBindingTarget:s}}import*as J from"@babel/types";function Fc(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=St(o,t);if(!i)return null;let s=r.parentPath;return!s||!s.isCallExpression()||!dI(s,r)?null:{callPath:s,basePath:i}}function dI(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 rm(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:Si(r,t)}function tm(e,t){return e?J.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}function nm(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=Tc(i,t,n,r,o);return typeof s=="number"?s:void 0}function Tc(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=Vi(e,t);if(i)return qe(r,i);let s=Vi(e,n);return s?qe(o,s):void 0}if(J.isBinaryExpression(e)&&e.operator==="-"){let i=J.isExpression(e.left)?Tc(e.left,t,n,r,o):void 0,s=J.isExpression(e.right)?Tc(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function fI(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 pI(e,t,n){let r=Fn(e,t,n);return typeof r=="boolean"?r:void 0}function Fn(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=Vi(e,t);return r?qe(n,r):void 0}if(J.isUnaryExpression(e)&&e.operator==="!"){let r=Fn(e.argument,t,n);return r===void 0?void 0:!r}if(J.isLogicalExpression(e)){let r=Fn(e.left,t,n);if(r===void 0)return;if(e.operator==="&&")return r&&Fn(e.right,t,n);if(e.operator==="||")return r||Fn(e.right,t,n)}if(J.isBinaryExpression(e)){let r=J.isExpression(e.left)?Fn(e.left,t,n):void 0,o=J.isExpression(e.right)?Fn(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 om(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 im(e){return e.some(t=>t.kind==="dynamic")}function mI(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}function sm(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 gI(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 am(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:v,visited:C}=d,N=h.node.callee;if(!J.isMemberExpression(N)||!J.isIdentifier(N.property)||N.property.name!=="map")return null;let A=h.get("callee");if(!A.isMemberExpression())return null;let P=A.get("object");if(Array.isArray(P)||!P.isExpression())return null;let I=await s({currentFile:g,expressionPath:P,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});return!I||!Array.isArray(I.value)||I.value.length===0?null:I}async function s(d){let{currentFile:g,expressionPath:h,readFile:S,exists:E,fileCache:v,visited:C}=d;if(h.isIdentifier()){let N=h.scope.getBinding(h.node.name);if(!N)return null;let A=await t({currentFile:g,binding:N,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});return A?.kind==="static"?A: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:v,visited:C});if(h.isTSAsExpression()||h.isTSSatisfiesExpression()||h.isTSNonNullExpression()){let N=h.get("expression");if(!Array.isArray(N)&&N.isExpression())return s({...d,expressionPath:N})}if(h.isArrayExpression()){let N=Ji(h.node);if(!N)return null;let A=await n(h.node,h.scope,g,S,E,v,C);return Array.isArray(A)?{kind:"static",file:g,root:{kind:"expression",sourceRange:N},value:A,sourceKind:"binding"}:null}if(h.isMemberExpression()){let N=await r({expression:h.node,scope:h.scope,currentFile:g,readFile:S,exists:E,fileCache:v,visited:C});if(!N)return null;let A=await o({currentFile:g,expressionPath:h,sourceInfo:N,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});if(!A||A.kind==="external")return null;let P=await a({currentFile:g,expressionPath:h,provenance:A,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:v,visited:C});if(!P||P.kind!=="static")return null;if(A.collectionPathMap?.length){let T=gI(P.value,A.collectionPathMap);if(T)return{kind:"static",file:A.file,root:A.root,value:T.value,sourceKind:A.sourceKind,collectionPathMap:T.collectionPathMap}}let I=qe(P.value,A.path);return Array.isArray(I)?{kind:"static",file:A.file,root:A.root,value:I,sourceKind:A.sourceKind,pathPrefix:A.path,collectionIndexMap:A.collectionIndexMap,collectionPathMap:A.collectionPathMap}:null}return null}async function a(d){let{provenance:g}=d;if(g.root.kind==="binding"){let v=d.expressionPath.scope.getBinding(g.root.name);if(!v&&g.file!==d.currentFile){let C=await $t(g.file,d.readFile,d.fileCache);v=C.ast?so(C.ast).getBinding(g.root.name):void 0}return v?await t({currentFile:g.file,binding:v,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=Qp(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 v=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(!v||!Array.isArray(v.value))return null;let[C]=g.node.arguments;if(!J.isArrowFunctionExpression(C)&&!J.isFunctionExpression(C))return null;let N=C.params[0];if(!J.isIdentifier(N))return null;let A=fI(C);if(!A)return null;let P=[],I=[],T=[];for(let[M,L]of v.value.entries()){let G=pI(A,N.name,L);if(typeof G!="boolean")return null;if(G){P.push(L),I.push(v.collectionIndexMap?.[M]??M);let ne=v.collectionPathMap?.[M];ne&&T.push(ne)}}return{...v,value:P,pathPrefix:v.pathPrefix,collectionIndexMap:I,...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 v=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(!v||!Array.isArray(v.value))return null;let[C,N]=g.node.arguments,A=tm(C,0),P=tm(N,v.value.length);if(A===null||P===null)return null;let I=Math.max(0,A<0?v.value.length+A:A),T=Math.max(0,P<0?v.value.length+P:P),M=v.value.map((G,ne)=>v.collectionIndexMap?.[ne]??ne).slice(I,T),L=v.collectionPathMap?.slice(I,T);return{...v,value:v.value.slice(I,T),pathPrefix:v.pathPrefix,collectionIndexMap:M,...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 v=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(!v||!Array.isArray(v.value))return null;let[C]=g.node.arguments;if(!J.isArrowFunctionExpression(C)&&!J.isFunctionExpression(C))return null;let[N,A]=C.params;if(!J.isIdentifier(N)||!J.isIdentifier(A))return null;let P=v.value.map((T,M)=>({value:T,sourceIndex:v.collectionIndexMap?.[M]??M,originalIndex:M})),I=[...P];for(let T of P)for(let M of P)if(nm(C,N.name,A.name,T.value,M.value)===void 0)return null;return I.sort((T,M)=>{let L=nm(C,N.name,A.name,T.value,M.value)??0;return L===0?T.originalIndex-M.originalIndex:L}),{...v,value:I.map(T=>T.value),pathPrefix:v.pathPrefix,collectionIndexMap:I.map(T=>T.sourceIndex),...v.collectionPathMap?{collectionPathMap:I.map(T=>v.collectionPathMap?.[T.originalIndex]).filter(T=>!!T)}:{}}}async function m(d){let g=null,h,S=[];for(let v of d.segments){if(v.kind!=="dynamic")continue;let C=await r({expression:v.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(!C)return null;let N=Fc(d.expressionPath,C.base);if(!N)return null;let A=await i({currentFile:d.currentFile,callPath:N.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(!A||!Array.isArray(A.value))return null;let P=A.value.map((I,T)=>{let M=qe(A.value,[{kind:"index",index:T},...N.basePath,...C.path]);return mI(M)});if(P.some(I=>I===null)||g!==null&&g!==P.length)return null;g=P.length,h??=A.collectionIndexMap,S.push(P)}if(g===null||g===0)return null;let E=[];for(let v=0;v<g;v+=1){let C=[...d.rootPath],N=0;for(let A of d.segments){if(A.kind==="dynamic"){let P=S[N]?.[v];if(!P)return null;C.push(P),N+=1;continue}C.push({...A})}E.push(C)}return{...h?{collectionIndexMap:h}:{},collectionPathMap:E}}return{resolveRepeatCollectionTarget:i,resolveCollectionCallTarget:c,resolveDynamicMemberPathMap:m}}var{normalizeExpressionWithScope:hI,evaluateStaticExpression:Xi}=zp({resolveBindingTarget:e=>Bc(e)}),{resolveRepeatCollectionTarget:yI,resolveCollectionCallTarget:xI,resolveDynamicMemberPathMap:bI}=am({resolveBindingTarget:e=>Bc(e),evaluateStaticExpression:Xi,buildExpressionSourceInfo:jt,resolveSourceInfoProvenance:gt}),{resolveExportValue:SI,resolveComponentPropBinding:EI,resolveBindingTarget:Bc}=em({resolveExternalExpression:jc,resolveCollectionCallTarget:xI,evaluateStaticExpression:Xi,resolveSourceInfoProvenance:gt,buildExpressionSourceInfo:jt});function gm(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}function cm(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 hm(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=Ui(s,t,n);if(!a)return null;let c=Ki(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 Jc({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?Mc(m,lr(c.node,n)):null}let u=new Set,f=await KI({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?Mc(f,l.expression):null}async function dr(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=Ui(i,t,n);if(!s)return null;let a=e.sourceRange?Ki(s,e.sourceRange):e.expression!==void 0?io(s,n,e.expression):null;if(!a)return null;let c=Xc(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 gt({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 JI({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 Mc(f,e.expression??lr(c.node,n))}async function $c(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=Ui(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"?vI({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}):kI({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 hI(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:lr(e.expression,e.source),base:t.base,path:t.path}:null}function Mc(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 vI(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=Ki(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 lm(t,o.value);let m=await Jc({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"?mm(t,m):Lc(t,lr(l.node,n),m):II({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 gt({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=Dc(l.node);if(m)return ot(m.code,m.message);let d=l.scope.getBinding(u.base);if(d?.path.isVariableDeclarator()){let g=Dc(d.path.node.init);if(g)return ot(g.code,g.message)}return d?.path.isVariableDeclarator()&&H.isCallExpression(d.path.node.init)?CI("unsupported-expression",Em(d.path.node.init,e.functionCallContracts)):ot("unsupported-expression",`Unable to resolve provenance for expression "${u.expression}"`)}return f.kind==="external"?mm(t,f):Lc(t,u.expression,f)}async function kI(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=io(r,n,o.conditionExpression);if(!l)return ot("conditional-branch-unresolved",`Unable to locate conditional expression "${o.conditionExpression}"`);let u=await gt({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=Lc(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 lm(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 II(e){let t=await xm(e);if(t.length===0)return ot("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(RI(e.expression))return ym(t);if(Sm(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 CI(e,t){return ym([{code:e,message:t}])}function ym(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function RI(e){return H.isCallExpression(e)||H.isConditionalExpression(e)||H.isLogicalExpression(e)||H.isBinaryExpression(e)}function co(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 xm(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=Dc(t);if(l)return[l];if(H.isCallExpression(t))return[{code:"unsupported-expression",message:Em(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 Xi(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)?co([...await _c(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)?co([...await _c(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)?co([...await _c(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 Dc(e){return Sm(e)?um("i18n helpers require a static message id string"):TI(e)?um("CMS helpers require static entry id and field path string arguments"):null}async function _c(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await xm({...t,expression:o}));return r}function wI(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:[NI(e.sourceType)]}}async function jc(e){for(let n of MI){if(!dm(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return pm(fm(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(!dm(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return pm(fm(r),e.externalAdapters)}return null}function NI(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function PI(e){return{code:"external-source-readonly",message:e}}function um(e){return{code:"unsupported-expression",message:e}}function Vc(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 dm(e,t){if(!t||t.length===0)return!0;let n=Vc(e.node);return n?t.includes(n):!1}function fm(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:co(e.diagnostics??[])}:{match:e,diagnostics:[]}}function pm(e,t){let n=wI(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:co([...e.diagnostics,...e.editMode==="readonly"||n.editMode==="readonly"?n.diagnostics:[]])}}function AI(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 TI(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 bm(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 Sm(e){return bm(e)===null}async function FI(e,t,n){let r=new Set,o=ao.posix.dirname(e);for(;r.add(o),!(o==="."||o==="/");){let i=ao.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"]:[ao.posix.join(i,"locales"),ao.posix.join(i,"messages")];for(let a of s){let c=ao.posix.join(a,`${t}.json`);if(await n(c))return c}}return null}async function _I(e){let t=bm(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await FI(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function OI(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 Xi(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:[PI("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var MI=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>AI(e)},{helperNames:["apiField"],resolve:e=>OI(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>_I({currentFile:e,expressionPath:t,exists:n})}];function Uc(e){return{...e,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Derived display values are readonly because no identity-preserving write target exists"}]}}function mm(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 Lc(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=UI(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 DI=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function Kc(e,t){let n=[...DI,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function Em(e,t){let n=e.callee;return H.isIdentifier(n)&&Kc(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 Jc(e){let t=await jc(e);if(t)return t;let n=await vm({...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 gt({...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 vm(e){let t=await vt({...e,allowComposed:!1});if(t?.kind!=="source")return null;let n=Xc(e.expressionPath);return n.isIdentifier()||n.isMemberExpression()?t.provenance:Uc(t.provenance)}async function vt(e){let t=Xc(e.expressionPath),n=$I(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 gt({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 gt({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 vt({...e,expressionPath:r,allowComposed:!0}),a=await vt({...e,expressionPath:o,allowComposed:!1}),c=await vt({...e,expressionPath:i,allowComposed:!1});return Oc(s,a,c)}if(t.isCallExpression())return LI({...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 vt({...e,expressionPath:r,allowComposed:!0}),s=await vt({...e,expressionPath:o,allowComposed:!0});return Oc(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 vt({...e,expressionPath:r,allowComposed:!0}),s=await vt({...e,expressionPath:o,allowComposed:!0});return Oc(i,s)}if(t.isUnaryExpression()){let r=t.get("argument");return Array.isArray(r)||!r.isExpression()?null:vt({...e,expressionPath:r,allowComposed:!0})}return null}finally{n&&e.visited.delete(n)}}function Xc(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 LI(e){let t=Vc(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:vt({...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:vt({...e,expressionPath:o,allowComposed:!1})}}return null}function Oc(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!BI(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function BI(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 $I(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=Vc(e.expressionPath.node);if(!t)return null;let n=Kc(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 km({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?Uc(i):null}async function km(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 gt({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 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})}async function VI(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=Kc(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 km({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?Uc(a):null}function UI(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=ur(t,e.path);return{sourceId:o,displayPath:o}}async function KI(e){let t=e.segment.source;return t?gt({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 gt(e){let t=e.sourceInfo,n=Fc(e.expressionPath,t.base);if(n){let l=await yI({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=rm(n.callPath,[...n.basePath,...t.path]);return Kr(h)?cm(e.currentFile,h.sourceId,h.displayPath):null}let u=sm(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 yn(e.currentFile,u.node.source.value,e.exists);if(!f)return null;let m=await SI({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=cf(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 gt({...e,expressionPath:l,sourceInfo:{...u,expression:ur(u.expression,t.path),path:[...u.path,...t.path]}});if(f)return f}if(t.path.length===0){let f=await vm({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 EI({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 VI({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=xi(r,t.path);if(Kr(s))return cm(e.currentFile,s.sourceId,s.displayPath);let a=await Bc({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 JI(e){let t=om(e.expressionPath.node);if(!t||!im(t.segments))return null;let n=await gt({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 bI({...e,rootPath:n.path,segments:t.segments});return r?{...n,path:r.collectionPathMap[0]??n.path,sourceKind:"repeat-template",displayExpression:lr(e.expressionPath.node,e.fileCache.get(e.currentFile)?.source),...r.collectionIndexMap?{collectionIndexMap:r.collectionIndexMap}:{},collectionPathMap:r.collectionPathMap}:null}async function Im(e){let t=XI(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 HI(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`}):zI(e,s.attribute)}async function zI(e,t){if(t.resolution&&t.resolution.status!=="resolved"&&!t.source){let r=await dr({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 dr({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 HI(e,t){let n=t.source?.expression;if(!n)return;let r=await dr({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:WI(r,e.propertyName)}}function WI(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 Cm(e){let{key:t,element:n,graph:r,provenances:o}=e,i=YI(t,n,r),s=i?.tag??(_n(n.tag)?n.tag:n.componentName),a=i?.identity.key??Rm(n,r)??t,c=qI(i),l=eC(t,n,r,o,i),u=GI(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:QI(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:u,impactScope:tC(u),alternativeStrategies:nC(u)}}function GI(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return zc(e,n)?"instance":!_n(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function Rm(e,t){if(_n(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&ZI(r,e.componentName));return n.length!==1?null:n[0].identity.key}function YI(e,t,n){if(_n(t.tag))return t;let r=zc(e,n);if(r)return r;let o=Rm(t,n);return o?n.elements.get(o)??null:null}function ZI(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function QI(e,t){return _n(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function qI(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 eC(e,t,n,r,o){let i=new Set,s=zc(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&&_n(t.tag)&&t.childKeys.length>0&&i.add("children"),[...i]}function zc(e,t){let n=t.elements.get(e)?.parentKey??null;for(;n;){let r=t.elements.get(n);if(!r)break;if(_n(r.tag))return r;n=r.parentKey}return null}function _n(e){return/^[A-Z]/.test(e)}function tC(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function nC(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}function Pm(e){let t=e.isRepeat??(e.graph?dC(e.element,e.graph):!1),n=e.propertyProvenance??new Map,r=e.repeatTargets??new Map,o=uC(e.element.attributes??[]),i=[...r.values()].some(u=>u.ok),s=o.map(u=>rC({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:fC(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 rC(e){let{attribute:t,provenance:n,repeatTarget:r}=e,o=e.selectionRef?.instanceIndex!==void 0&&r?.ok===!0?r:null,i=oC(t,n,e.isRepeat),s=["selection","template"].map(S=>({scope:S,result:wi({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=iC(t,n,l,e.isRepeat),f=c?cC(c,e.element,t.name):void 0,m=s.filter(({result:S})=>S.ok).map(({scope:S})=>S),d=m.length>0?aC(n,o,e.element):"unsupported",g=o?"repeat-item":e.isRepeat?"repeat-template":"node",h=lC(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 oC(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 iC(e,t,n,r){return n?wm(n.selectedResolution):t?.status==="blocked"?{status:"unresolved"}:r&&t?.status==="binding"?{status:"unresolved"}:wm(sC(e))}function sC(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 wm(e){return!e||e.status==="unresolved"?{status:"unresolved"}:e.status==="undefined"?{status:"undefined"}:{status:"resolved",value:e.value}}function aC(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 cC(e,t,n){return e.kind==="repeat-property"?{kind:"value-path",file:e.target.sourceFile,isProxy:e.target.sourceFile!==t.sourceFile,displayPath:Nm({...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:Nm(e.locator)}:{kind:"jsx-node",file:t.sourceFile,isProxy:!1,displayPath:t.componentName+" > "+n}}function lC(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 uC(e){let t=new Set;return e.filter(n=>t.has(n.name)?!1:(t.add(n.name),!0))}function dC(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 Nm(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 fC(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 pC(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var mC=160;function Am(e,t,n,r={}){let o=Hn(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:r.canMoveByKey?.get(s)??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 Tm(e,t,n,r,o,i,s,a,c,l,u){let f=Hn(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=Dm(m.textSegments,s),S=Lm(e,t,m,g,h),E=h?yC(h):void 0,v=xC(i,h),C=m.textSegments.map(I=>({index:I.index,value:I.value,editable:Bm(I,g,s?.get(I.index)??null),source:o.get(I.index)??null})),N=Om(m,t),A=m.childKeys.map(I=>{let T=t.elements.get(I);return T?{key:I,tag:T.tag,label:T.tag}:null}).filter(I=>I!==null),P=[];if(m.parentKey){let I=t.elements.get(m.parentKey);if(I)for(let T of I.childKeys){if(T===e)continue;let M=t.elements.get(T);M&&P.push({key:T,tag:M.tag,label:M.tag})}}return{composition:f,key:e,tag:m.tag,componentName:m.componentName,sourceFile:m.sourceFile,sourceLocator:_m(m),label:m.tag,capabilities:S,writeTarget:i,effectiveWriteTarget:v,provenanceChain:E,componentSemantic:c,styleSource:l,conditional:a,...u?{dynamicData:u}:{},textSegments:C,boundaryKind:m.boundaryKind,isOpaque:m.isOpaque,ancestors:N,children:A,siblings:P}}function Fm(e,t,n,r,o,i,s,a){let c=Hn(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=Dm(l.textSegments,i);return{composition:c,key:e,tag:l.tag,componentName:l.componentName,sourceFile:l.sourceFile,sourceLocator:_m(l),label:l.tag,capabilities:Lm(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:Bm(d,f,i?.get(d.index)??null),source:g?{kind:g.kind}:null}}),boundaryKind:l.boundaryKind,isOpaque:l.isOpaque,ancestors:Om(l,t)}}function _m(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:gC(e.sourceRange),structuralPath:e.identity.structuralPath,...hC(e.textSegments)}}function Om(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 gC(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function hC(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,mC)}:{}}function Mm(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 Dm(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function Lm(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&&$m(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 Bm(e,t,n){return!e.editable||!t.canUpdateText?!1:n?$m(n.editMode):!0}function $m(e){return e==="direct"||e==="proxy"||e==="upstream"}function yC(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 xC(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}:pC(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 Hc=["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:Hc,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:Hc,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:Hc}}function Vm(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}),Um(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function Um(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}),Um(s,t,n,r,o))}}import Km from"node:path";function Gc(){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 Xm(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=vC(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 zi(e){let t=()=>bC(e);return e.mutex?e.mutex.runExclusive(t):t()}async function bC(e){let t=await Xm(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=SC(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 Wc({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 Wc({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 Wc({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 Jm("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return Jm("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 SC(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 Wc(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:EC(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 Jm(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function EC(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 vC(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)||Km.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=Km.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 kC=50,IC=8*1024*1024;function Gm(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??kC),s=Math.max(0,t.maxUndoBytes??IC);return{prepareRewritePlan:a,execute:c,executeFilePlan:l,undo:u,redo:f};async function a(I){let T=[...I.steps].sort((Y,ue)=>Y.order-ue.order),M=T.filter(Y=>Y.type!=="invoke-external-adapter");if(M.length!==T.length)return{ok:!1,errorCode:"unsupported-operation",reason:"External adapter writes require a transactional prepare/commit/rollback contract."};let L=new Set(M.map(Y=>Y.file)),G=await v(L),ne=new Map(G.map(Y=>[Y.file,Y.exists===!1?"":Y.content])),ke;for(let Y of M){let ue=Wm(Y,ne.get(Y.file)??"");if(!ue.ok)return{ok:!1,errorCode:ue.errorCode,reason:ue.reason};ne.set(Y.file,ue.source),ke=ue.selectionRef??ke}return{ok:!0,filePlan:{operationId:I.operationId,kind:"source-edit",target:I.target,documentVersion:I.documentVersion,conflictPolicy:"compare-and-swap",edits:[...ne].map(([Y,ue])=>({operation:"upsert",file:Y,content:ue,baseContentHash:G.find(Te=>Te.file===Y)?.sha256??null}))},...ke?{selectionRef:ke}:{}}}async function c(I){let T=[...I.steps].sort((Te,zt)=>Te.order-zt.order),M=T.filter(Te=>Te.type!=="invoke-external-adapter"),L=T.filter(Te=>Te.type==="invoke-external-adapter"),G=new Set(M.map(Te=>Te.file));if(M.length>0&&L.length>0)return{ok:!1,operationId:I.operationId,errorCode:"unsupported-operation",reason:"Mixed local file rewrites and external adapter writes require an explicit compensation contract.",rolledBack:!1};if(M.length===0)return S(I,L);let ne=await v(G),ke=new Map;for(let Te of ne)ke.set(Te.file,Te.exists===!1?"":Te.content);let Y;for(let Te of M){let zt=ke.get(Te.file)??"",Ht=Wm(Te,zt);if(!Ht.ok)return{ok:!1,operationId:I.operationId,errorCode:Ht.errorCode,reason:Ht.reason,rolledBack:!1};ke.set(Te.file,Ht.source),Ht.selectionRef&&(Y=Ht.selectionRef)}let ue=await N([...ke].map(([Te,zt])=>({file:Te,content:zt,exists:!0,version:0,sha256:Se(zt)})),ne);return ue.ok===!1?{ok:!1,operationId:I.operationId,errorCode:ue.rolledBack?"writeback-failed":"rollback-failed",reason:ue.reason,rolledBack:ue.rolledBack}:(n.push({operationId:I.operationId,preSnapshots:ne,postSnapshots:ue.snapshots,plan:I}),m(),r.length=0,{ok:!0,operationId:I.operationId,kind:I.kind,target:I.target,resultVersion:Math.max(...ue.snapshots.map(Te=>Te.version)),affectedFiles:[...G],...Y?{selectionRef:Y}:{}})}async function l(I){let T=new Set(I.edits.map(ue=>ue.file)),M=await v(T),L=E(I,M);if(L)return{ok:!1,operationId:I.operationId,errorCode:"stale-version",reason:L.reason,affectedFiles:[L.file],rolledBack:!1};let G=new Map(M.map(ue=>[ue.file,ue])),ne=I.edits.find(ue=>ue.operation==="create-only"&&G.get(ue.file)?.exists!==!1);if(ne)return{ok:!1,operationId:I.operationId,errorCode:"stale-version",reason:`MATERIALIZATION_INSTANCE_CONFLICT: create-only target already exists: ${ne.file}`,affectedFiles:[ne.file],rolledBack:!1};let ke=I.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:Se(ue.content)}),Y=await N(ke,M,new Set(I.edits.filter(ue=>ue.operation==="create-only").map(ue=>ue.file)));return Y.ok===!1?{ok:!1,operationId:I.operationId,errorCode:Y.rolledBack?"writeback-failed":"rollback-failed",reason:Y.reason,rolledBack:Y.rolledBack}:(n.push({operationId:I.operationId,preSnapshots:M,postSnapshots:Y.snapshots,plan:{operationId:I.operationId,kind:I.kind,target:I.target,documentVersion:I.documentVersion,steps:[],preSnapshots:M}}),m(),r.length=0,{ok:!0,operationId:I.operationId,kind:I.kind,target:I.target,resultVersion:Math.max(...Y.snapshots.map(ue=>ue.version)),affectedFiles:[...T]})}async function u(){let I=n.at(-1);if(!I)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to undo"};let T=await N(I.preSnapshots,I.postSnapshots);return T.ok===!1?{ok:!1,operationId:I.operationId,errorCode:T.rolledBack?"writeback-failed":"rollback-failed",reason:T.reason,rolledBack:T.rolledBack}:(n.pop(),r.push(I),{ok:!0,operationId:I.operationId,kind:I.plan.kind,target:I.plan.target,resultVersion:Math.max(...T.snapshots.map(M=>M.version)),affectedFiles:I.preSnapshots.map(M=>M.file)})}async function f(){let I=r.at(-1);if(!I)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to redo"};let T=await N(I.postSnapshots,I.preSnapshots);return T.ok===!1?{ok:!1,operationId:I.operationId,errorCode:T.rolledBack?"writeback-failed":"rollback-failed",reason:T.reason,rolledBack:T.rolledBack}:(r.pop(),n.push(I),m(),{ok:!0,operationId:I.operationId,kind:I.plan.kind,target:I.plan.target,resultVersion:Math.max(...T.snapshots.map(M=>M.version)),affectedFiles:I.postSnapshots.map(M=>M.file)})}function m(){for(;n.length>i;)n.shift();for(;n.length>0&&d()>s;)n.shift()}function d(){return n.reduce((I,T)=>I+g(T),0)}function g(I){return h(I.preSnapshots)+h(I.postSnapshots)}function h(I){return I.reduce((T,M)=>T+M.file.length+M.content.length,0)}async function S(I,T){let M=[];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:I.operationId,errorCode:"unsupported-operation",reason:`No external adapter registered for ${L.sourceType}`,rolledBack:!1};let ke=await ne.execute(L);if(!ke.ok)return{ok:!1,operationId:I.operationId,errorCode:"writeback-failed",reason:ke.reason??`External adapter failed for ${L.sourceType}`,rolledBack:!1};M.push(L.file)}return{ok:!0,operationId:I.operationId,kind:I.kind,target:I.target,resultVersion:0,affectedFiles:M}}function E(I,T){if(I.conflictPolicy!=="compare-and-swap")return null;let M=new Map(T.map(L=>[L.file,L]));for(let L of I.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=M.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 v(I){let T=[];for(let M of I)T.push(await C(M));return T}async function C(I){if(!await e.exists(I))return{file:I,content:"",version:0,exists:!1};let M=Math.max(1,e.getVersion(I)),L=await e.readFile(I);return{file:I,content:L,version:M,exists:!0,sha256:Se(L)}}async function N(I,T,M=new Set){let L=[];try{for(let G of I){if(M.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 A(G);let ne=e.bumpVersion(G.file);L.push(G.file),G.version=ne}}catch(G){let ne=await P(T.filter(Y=>L.includes(Y.file)));if(ne.ok===!1)return{ok:!1,reason:`Writeback failed, then rollback failed for ${ne.failedFiles.join(", ")}: ${Hm(G)}`,rolledBack:!1,instanceConflict:zm(G)};let ke=zm(G);return{ok:!1,reason:`${ke?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${Hm(G)}`,rolledBack:!0,instanceConflict:ke}}return{ok:!0,snapshots:I.map(CC)}}async function A(I){if(I.exists===!1){await e.deleteFile(I.file);return}await e.writeFile(I.file,I.content)}async function P(I){let T=[];for(let M of I)try{await A(M),e.bumpVersion(M.file)}catch{T.push(M.file)}return T.length===0?{ok:!0}:{ok:!1,failedFiles:T}}}function zm(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function CC(e){let t=e.exists!==!1;return{file:e.file,content:t?e.content:"",version:e.version,exists:t,...t?{sha256:Se(e.content)}:{}}}function Hm(e){return e instanceof Error?e.message:String(e)}function Wm(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(Xn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-import":return ze(zn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-node":return ze(Vn({source:t,locator:e.locator,removeWhitespace:e.removeWhitespace}));case"insert-child":return ze(Un({source:t,locator:e.parentLocator,node:e.node,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"update-text":return ze(Lo({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(Ko({source:t,locator:e.locator,index:e.index,value:e.value}));case"insert-jsx-expression-child":return ze($o({source:t,locator:e.parentLocator,expression:e.expression,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"remove-bound-array-item":return ze(Jo({source:t,locator:e.locator,index:e.index}));case"move-array-item":return ze(Xo({source:t,locator:e.locator,fromIndex:e.fromIndex,toIndex:e.toIndex}));case"move-node":return ze(Kn({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"move-repeat-template-child":return ze(jo({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 RC(e,t);case"set-property-changes":return ze(Vo({source:t,locator:e.locator,changes:e.changes}));case"set-property-binding":return ze(Uo({source:t,locator:e.locator,name:e.name,object:e.object,property:e.property}));case"upsert-object-property":return ze(Ho({source:t,objectLocator:e.locator,name:e.name,value:e.value}));default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function RC(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!Du(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!==Se(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:Mu({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 Hi,SiteEditCompositionContextSchema as wC,SiteEditCompositionSelectorSchema as NC}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 Ym(e,t){throw new He("INVALID_COMPOSITION",e,{value:t})}function Wi(e){let t=wC.safeParse(e);return t.success?t.data:Ym("Invalid SiteEditCompositionContext.",e)}function Zm(e){let t=[],n=new Map,r=new Map;for(let l of e.compositions){let u=Wi(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=Hi(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=Wi(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=Hi(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=NC.safeParse(l);if(!u.success)return Ym("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=Wi(l),f=Hi(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=Wi(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=Hi(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 PC,stripSiteEditRepeatInstanceKeys as Qm}from"@vcp-dev/contracts";function qm(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=Qm(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 AC(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 Gi(e){return e?.map(t=>({...t}))}function Yc(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=Gi(e.collectionPathMap?.[t])??Gi(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:Gi(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>Gi(o)??[])}}function eg(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)=>PC(d,g),c=(d,g,h)=>{let S=o.get(d);if(!S)return a(d,h);let E=a(d,h),v={...S,key:E,parentKey:g,childKeys:[]};return i.push(v),v.childKeys=S.childKeys.flatMap(C=>l(C,h,E)),E},l=(d,g,h)=>{if(!r.has(d))return[c(d,h,g)];let S=f(d,g),E=[];for(let v=0;v<S;v+=1)E.push(c(d,h,[...g,v]));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 v of[...E.textTargets.values(),...E.elementPropertyTargets.values()])if(!(v?.kind!=="value-binding"||v.sourceKind!=="repeat-template"))for(let C of TC(v))C.length<=g.length||FC(C,g)&&h.add(C[g.length])}}return h.size>0?h.size:AC(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 tg(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function ng(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((Qm(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function TC(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 FC(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 rg(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 og(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 ig(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function _C(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var lo=class extends Error{constructor(t){let n=t.map(ig);super(_C(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function sg(e,t){let n=t instanceof Error&&t.message?t.message:String(t);return t instanceof lo?{routeId:e,message:n,diagnostics:t.diagnostics.map(ig)}:{routeId:e,message:n}}function Zc(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function Qc(e,t){let n=new Map(e);for(let r of t)n.delete(r);return n}function fr(e,t){e.clear();for(let[n,r]of t)e.set(n,r)}function ag(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function qc(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 cg(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 VC=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,UC=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],lg=32,ug=256;function KC(e){return{expectedIndexDigest:e.digest,publishedIndexDigest:e.digest,publishedCursor:e.cursor,publishedCurrentId:e.currentId}}var dg={maxEntries:50,maxBytes:8*1024*1024};function JC(){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 Go(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 XC(){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>dg.maxEntries||zC(e)>dg.maxBytes;)e.shift()}}function zC(e){return e.reduce((t,n)=>t+HC(n),0)}function HC(e){return fg(e.preSnapshots)+fg(e.postSnapshots)+WC(e.provenance)}function WC(e){return e?new TextEncoder().encode(JSON.stringify(e)).byteLength:0}function fg(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function pg(e,t){return{key:MC(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 Zi=class extends Error{constructor(t){super(t.reason),this.result=t}},On=class extends Error{constructor(t){super(Zc(t)),this.failedRoutes=t}};function mg(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 GC(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 YC=/\.(?:[cm]?[jt]sx?)$/i,ZC=/\.json$/i,QC=/\.(?:css|scss|sass)$/i,qC=/\.mdx$/i,eR=/\.ya?ml$/i;function tR(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 nR(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function rR(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=bg(await e.listFiles(r)),i=new Map(o.files.map(a=>[a.path,a]));for(let[a,c]of n)if(oR(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 oR(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function bg(e){return Array.isArray(e)?{files:e}:e}function iR(e){if(!LC(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!==$C||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=DC(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(YC.test(e.path)){let t=Rt({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(ZC.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(QC.test(e.path)){let t=gg({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(qC.test(e.path)){let t=gg({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(eR.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 gg({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{SiteEditOperationRequestSchema as vR,SiteEditPatchPlanSchema as kR}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:mh(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 mh(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 LC,computeSiteEditCompositionKey as BC,getSiteEditSourceDeleteProtectionReason as $C,isSiteEditTextSourcePath as jC,parseSiteEditRepeatInstanceKey as VC,SITE_EDIT_SOURCE_DELETE_CAPABILITY as UC,stripSiteEditRepeatInstanceKeys as it}from"@vcp-dev/contracts";import Zi from"node:path";import{parse as KC}from"yaml";import Es from"node:path";import{TextDecoder as hh}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as zl,SITE_EDIT_SOURCE_ALLOWED_DIRS as Hl,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as Wl,SiteEditCompositionContextSchema as yh,SiteEditSourceFileResponseSchema as ys,SiteEditSourceLocationSchema as xh,SiteEditSourcePathSchema as Po,SiteEditSourceTreeResponseSchema as bh,isSiteEditTextSourcePath as Sh}from"@vcp-dev/contracts";import{createHash as gh}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:${gh("sha256").update(e).digest("hex")}`}var Eh=[...Wl,...zl,...Hl];function vs(e){if(!e.composition)throw new Error("Composition unavailable for source access policy.");return yh.parse(e.composition)}var xs=2e3,bs=12,Ss=24*1024*1024,Xl=512*1024,vh=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),kh={".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"},Ih={".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"},Ch=new hh("utf-8",{fatal:!0});async function Ao(e,t={}){let n=vs(t),{files:r,truncated:o}=await Fh(e,t),i=Mh(r.map(s=>s.metadata));return bh.parse({composition:n,nodes:i,defaultPath:Dh(r.map(s=>s.metadata)),totalFiles:r.length,...o?{truncated:o}:{}})}async function To(e,t,n={}){let r=vs(n),o=Po.parse(t.path),i=await wh(e,o,n);if(!i)throw new Error(`Source file not found: ${o}`);if(Is(o)){let a=Zl(o),c=await Ph(e,{path:o,sizeBytes:i.sizeBytes,mimeType:a});return ys.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:a,readonly:!0,...c})}let s=await ks(e,o);return s.ok?ys.parse({composition:r,path:o,kind:"text",language:Ql(o),sizeBytes:s.sizeBytes,contentHash:be(s.content),readonly:!1,content:s.content}):ys.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:s.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function ks(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=Rh(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 Rh(e){if(e.includes(0))return null;try{return Ch.decode(e)}catch{return null}}async function wh(e,t,n){if(!Ah(t,n))return null;let r=await Nh(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function Nh(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=Gl(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(Is(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function Ph(e,t){if(!vh.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>Xl)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>Xl?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function Ah(e,t){return Wl.some(n=>n===e)||zl.some(n=>n===e)||Hl.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 xh.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 Gl(e){return Array.isArray(e)?{files:e}:e}function Th(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function Fh(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=Gl(await e.listFiles({roots:_h(t),maxFiles:xs+1,maxDepth:bs,maxTotalBytes:Ss+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>bs){o.add("max-depth");continue}if(r.size>=xs){o.add("max-files");break}if(i+a.sizeBytes>Ss){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:Oh(l,a.sizeBytes,vs(t))}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:Th([...o]),maxFiles:xs,maxDepth:bs,maxTotalBytes:Ss}}:{}}}function _h(e){let t=new Set(Eh);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 Oh(e,t,n){return Is(e)?{composition:n,path:e,kind:"binary",language:null,sizeBytes:t,mimeType:Zl(e),readonly:!0}:{composition:n,path:e,kind:"text",language:Ql(e),sizeBytes:t,readonly:!1}}function Mh(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 Yl(t)}function Yl(e){return e.map(t=>t.kind==="directory"?{...t,children:Yl(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function Dh(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 Is(e){return!Sh(e)}function Zl(e){let t=Es.posix.extname(e).toLowerCase();return!t&&Es.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":kh[t]??"application/octet-stream"}function Ql(e){let t=Es.posix.extname(e).toLowerCase();return Ih[t]??"plaintext"}import*as ql 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 Cs(e,t,n,r,o){return{ok:!1,source:e,diagnostic:fn(t,n,r,o)}}var Lh={"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:ql.parse(t,{sourceType:"module",plugins:Lh[n]})}}catch(r){return{ok:!1,source:t,diagnostic:fn("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function Rs(e,t){return Rt({source:e,profile:eu(t.kind)})}function mr(e,t){return Rt({source:e,profile:eu(t)})}function eu(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 ws 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")&&tu(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())&&tu(r.parentPath)}function tu(e){return e?.isImportDeclaration()===!0&&e.node.source.value==="react"}var Wt=typeof ws=="function"?ws:ws.default,_o=new WeakMap,nu=new WeakMap;function Nt(e,t){let n=Rs(e,t);if(!n.ok)return Cs(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}}:Cs(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"?Kh(e,t):t.kind==="value"?Jh(e,t):t.kind==="expression"?Xh(e,t):t.kind==="directive"?zh(e,t):t.kind==="export"?Hh(e,t):{ok:!1,diagnostic:fn("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function su(e,t){return t.strategy==="source-range"?Bh(e,t):$h(e,t)}function Bh(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&&!iy(r.path,t.expectedIdentity)?Me("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function $h(e,t){if(t.structuralPath===""){let r=Vh(e,t.component);if(r){let o=Uh(r);if(o)return o}}let n=null;return Wt(e,{JSXElement(r){if(hr(r)!==t.component||Ps(r)!==t.structuralPath)return;let i=_e("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(hr(r)!==t.component||Ps(r)!==t.structuralPath)return;let i=_e("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=jh(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:Me("jsx-node","locator-miss","JSX node not found for structural-path locator")}function jh(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 Vh(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 Uh(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 Kh(e,t){let n=su(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>sy(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 Jh(e,t){let n=Wh(e,t);if(!n.ok)return n;let r=Gh(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 Xh(e,t){let n=null;return Wt(e,{Identifier(r){if(!ty(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 zh(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 Hh(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=As(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=As(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 '${oy(t)}' not found`)}function Wh(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=As(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 Gh(e,t){let n=Ns(e);for(let o of t){if(n=Ns(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=>ay(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=Ns(n);let r=_e("value",n);return r?{ok:!0,match:r}:Me("value","locator-miss","Resolved value has no source range")}function Ns(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 Ps(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!Oe(n)){let o=au(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||qh(n.parentPath)&&!ey(n.parentPath))break;n=n.parentPath}return t.join("/")}function ru(e,t){let n=Yh(e);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 s=_o.get(n.node);s||(s=new Map,_o.set(n.node,s)),i=new WeakMap,s.set(t,i)}for(let s of gr(n))if(au(s.node.openingElement)===t){if(i.set(s.node,o),s.node===e.node)return o;o++}return i.get(e.node)??0}function Yh(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=nu.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 nu.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()&&Zh(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 Zh(e){return e==="&&"||e==="||"||e==="??"}function au(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 qh(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function ey(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 ty(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&&ny(e.path,t.path??[])}function ny(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 ry(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function oy(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 iy(e,t){return hr(e)!==t.component?!1:Ps(e)===t.structuralPath}function sy(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function As(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function ay(e,t){return e.isObjectProperty()?ry(e.node)===t:!1}import*as lu from"@babel/parser";import{arrayExpression as fy,booleanLiteral as py,identifier as my,jsxAttribute as gy,jsxExpressionContainer as hy,jsxIdentifier as yy,nullLiteral as xy,numericLiteral as by,objectExpression as Sy,objectProperty as Ey,stringLiteral as Fs}from"@babel/types";import Ts from"@babel/generator";var cy=typeof Ts=="function"?Ts:Ts.default;function ly(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 uy(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 dy(e,t){return e.split(`
|
|
3
|
+
`).map(r=>uy(r,t)).join(`
|
|
4
|
+
`)}function Oo(e){let{ast:t,source:n}=e;try{let r=ly(n),i=cy(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=dy(i,r)),{ok:!0,source:i}}catch(r){return j(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}function cu(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:cu(e),afterSourceHash:cu(t),inverse:n.inverse}}}function fe(e,t,n){let r=Oo({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 Mo(e,t){return Oo({ast:e,source:t})}function vy(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 Do(e,t,n){let r=vy(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"?Fs(e):typeof e=="number"?by(e):typeof e=="boolean"?py(e):e===null?xy():Array.isArray(e)?fy(e.map(t=>Gt(t))):Sy(Object.entries(e).map(([t,n])=>{let r=Ey(_s(t),Gt(n));return t==="__proto__"&&(r.computed=!0),r}))}function ky(e){return typeof e=="string"?Fs(e):hy(Gt(e))}function xr(e,t){return gy(yy(e),ky(t))}function Lo(e,t){try{let r=lu.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 _s(e){return/^[$A-Z_][0-9A-Z_$]*$/i.test(e)?my(e):Fs(e)}function Bo(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=Iy(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=Cy(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 Iy(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=Ry(r.get("expression"));o.length>0&&t.push(...o)}}return t}function Cy(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function Ry(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 Os}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?(wy(o.match.path),fe(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function wy(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Os());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Os());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Os());return}e.remove()}import{cloneNode as Ny}from"@babel/types";function $o(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=Lo(e.source,e.node.jsx);return r.ok?(n.match.path.replaceWith(Ny(r.node,!0)),fe(t.ast,e.source,{kind:"replace-node",target:"jsx-node",inverse:"replace-node"})):r.result}import{cloneNode as $y}from"@babel/types";import Ms 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 Py=typeof Ms=="function"?Ms:Ms.default;function pt(e,t,n,r){if(!e.ok)return e;let o=ft(n,t);if(!o)return e;let i=Ay(t,o,r);return i?{...e,selectionRef:i}:e}function Ay(e,t,n){let r=Ty(e,t);if(!r)return;let o=n.sourceLocator?uu(n.sourceLocator):void 0,i=n.targetParentLocator?uu(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??_y(r)??i?.component??o?.component;if(!(!s||!a))return{key:br(s,a,Oy(r))}}function uu(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function Ty(e,t){let n=hu(e,t);return!n||n.node.type!=="JSXElement"?null:n}function hu(e,t){let n=null;return Py(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 By(t,e)?du(e.children,t):e;if(Z.isJSXFragment(e))return du(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 yu(e)?Fy(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 du(e,t){for(let n of e){let r=ft(n,t);if(r)return r}return null}function Fy(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=fu(n.consequent,t);if(r)return r;let o=n.alternate?fu(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 fu(e,t){return Z.isBlockStatement(e)?Sr(e.body,t):Sr([e],t)}function _y(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 pu=new WeakMap,mu=new WeakMap,Ds=new WeakMap;function Oy(e){let t=pu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=My(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return pu.set(e.node,o),o}function My(e){let t=xu(e.node.openingElement.name);return!t||Oe(e)?null:/^[A-Z]/.test(t)?`component:${t}#${gu(e,t)}`:`${t}#${gu(e,t)}`}function gu(e,t){let n=Dy(e);if(!n)return 0;let r=Ds.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Ds.get(n.node);o||(o=new Map,Ds.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(xu(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 Dy(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=mu.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 mu.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())&&yu(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?Ly(n):[]}return[]}function Ly(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 yu(e){let t=e.callee;return(Z.isMemberExpression(t)||Z.isOptionalMemberExpression(t))&&Z.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function By(e,t){let n=hu(e,t);return n?Oe(n):!1}function xu(e){return Z.isJSXIdentifier(e)?e.name:Z.isJSXMemberExpression(e)?bu(e):Z.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function bu(e){return`${Z.isJSXIdentifier(e.object)?e.object.name:bu(e.object)}.${e.property.name}`}function Yt(e,t){if(t.parentPath===e&&t.listKey==="children"&&Ls(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!Ls(n))return null;let r=n;for(;r&&r!==e;){if(!Ls(r)||!Oe(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function Ls(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=Lo(t,r.jsx);if(!u.ok)return u.result;let f=$y(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 Su from"@babel/parser";import{cloneNode as jy}from"@babel/types";function jo(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=Vy(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=jy(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 Vy(e,t){try{let r=Su.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 Uy,nullLiteral as Bs}from"@babel/types";import*as Zt from"@babel/types";import*as Eu from"@babel/types";function Er(e,t){let n=e.parentPath;if(!n?.isConditionalExpression()||e.key!=="consequent"||!Eu.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=Uy(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");Ky(d);let S=u.node.children,E={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return S.push(g),pt(Mo(a.ast,t),a.ast,g,E);if(o==="prepend")return S.unshift(g),pt(Mo(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(Mo(a.ast,t),a.ast,g,E)}function Ky(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Bs());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Bs());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Bs());return}e.remove()}import*as vu from"@babel/parser";import{cloneNode as Jy,nullLiteral as $s}from"@babel/types";function Vo(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=Xy(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=Jy(l.node,!0);zy(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 Xy(e,t){try{let r=vu.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 zy(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{SiteEditSetPropsParamsSchema as Hy,classifySiteEditPropertyName as Wy}from"@vcp-dev/contracts";import*as Vn from"@babel/types";function Uo(e){let t=Hy.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=Do(n.ast,e.locator,e.source);if(!r.ok)return r.result;for(let a of t.data.changes){let c=Wy(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=Gy(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 Gy(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 ku}from"@vcp-dev/contracts";function Ko(e){let t=ku(e.name),n=ku(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(!Iu(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=Do(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)&&Zy(l)===e.name);if(s.length>1)return j(e.source,"unsupported-syntax",`JSX attribute '${e.name}' has multiple sources`,"jsx-node");let a=Yy(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 Yy(e,t){return Iu(t)?$e.memberExpression($e.identifier(e),$e.identifier(t)):$e.memberExpression($e.identifier(e),$e.stringLiteral(t),!0)}function Iu(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)}function Zy(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 qy,identifier as vr,importDeclaration as ex,importDefaultSpecifier as tx,importNamespaceSpecifier as nx,importSpecifier as rx,isImportDefaultSpecifier as Cu,isImportNamespaceSpecifier as Ru,isImportSpecifier as wu,stringLiteral as ox}from"@babel/types";function Un(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(S=>!px(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=ux(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=mx(S,E);return k?[k]:[]}))),f=i.imports.filter(S=>!u.has(_u(S)));if(f.length===0)return yr(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let m=dx(c.body),d=f.find(S=>m.has(js(S)));if(d)return j(t,"unsupported-syntax",`Import local binding already exists: ${js(d)}`);let g=lx(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(!Tu(Pu(S)))return j(t,"unsupported-syntax","Unsupported import specifier combination");let E=l.find(k=>ix(k,S));if(E)sx(E,S);else{let k=ex(Nu(S),ox(n));fx(c.body,k),l.push(k)}}return fe(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function ix(e,t){return e.importKind==="type"?!1:Tu(cx(ax(e),Pu(t)))}function sx(e,t){let n=!1,r=new Set(e.specifiers.map(o=>Vs(o)));for(let o of Nu(t)){let i=Vs(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return Fu(e.specifiers),{changed:n}}function Nu(e){let t=e.map(n=>{switch(n.kind){case"named":return rx(n.local?vr(n.local):vr(n.imported),vr(n.imported));case"default":return tx(vr(n.local));case"namespace":return nx(vr(n.local));default:return n}});return Fu(t),t}function Pu(e){let t=Au();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 ax(e){let t=Au();for(let n of e.specifiers)Cu(n)?t.defaultLocals.add(n.local.name):Ru(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function Au(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function cx(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function Tu(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function Fu(e){let t=[...e.filter(n=>Cu(n)),...e.filter(n=>Ru(n)),...e.filter(n=>wu(n))];e.splice(0,e.length,...t)}function lx(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 ux(e){let t=new Map,n=new Map;for(let r of e){let o=_u(r);if(t.has(o))continue;let i=js(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 dx(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(qy(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 fx(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 px(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 _u(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 js(e){return e.kind==="named"?e.local??e.imported:e.local}function mx(e,t){return e.importKind==="type"||wu(t)&&t.importKind==="type"?null:Vs(t)}function Vs(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=>!hx(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=>gx(u,f))),l.specifiers.length===0&&a.body.splice(c,1),fe(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function gx(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 hx(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=Ho(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 Jo(e){let{source:t,locator:n,index:r,value:o}=e,i=Ho(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 Xo(e){let{source:t,locator:n,index:r}=e,o=Ho(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 zo(e){let{source:t,locator:n,fromIndex:r,toIndex:o}=e,i=Ho(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 Ho(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 Wo(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)&&yx(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(_s(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 yx(e){return Ve.isIdentifier(e)?e.name:Ve.isStringLiteral(e)?e.value:Ve.isNumericLiteral(e)?String(e.value):null}import{isSiteEditRuntimeContainerTag as xx,isSiteEditRuntimeVoidElementTag as bx}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 Sx(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&&bx(u),d=f||xx(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 Ou(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,Sx(r,e,t));return n}function Us(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=Ex(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:Du(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:Mu(e.route.source,o),valueRaw:s?Mu(e.route.source,s):null,attrRange:Du(o),diagnostics:[]}}function Lu(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 Ex(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:vx(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function Bu(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 Mu(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function Du(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 vx(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function $u(){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 kx}from"node:crypto";import Go from"node:fs/promises";import Ks from"node:path";import{setTimeout as Ix}from"node:timers/promises";var Cx={async mkdir(e,t){await Go.mkdir(e,t)},async writeFile(e,t,n){await Go.writeFile(e,t,n)},async rename(e,t){await Go.rename(e,t)},async rm(e,t){await Go.rm(e,t)}},Rx=new Set(["EACCES","EBUSY","EPERM"]),wx=[10,20,40,80,160];async function Nx(e,t,n){for(let r of wx)try{await e.rename(t,n);return}catch(o){if(!Px(o))throw o;await Ix(r)}await e.rename(t,n)}function Px(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&Rx.has(e.code)}async function Yo(e,t,n=Cx){let r=Ks.dirname(e),o=Ks.basename(e),i=Ks.join(r,`.${o}.${process.pid}.${kx()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await Nx(n,i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import Hs 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=Ax(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 Ax(e){return ce.isIdentifier(e)?e.name:ce.isStringLiteral(e)?e.value:ce.isNumericLiteral(e)?String(e.value):null}import{createHash as Dx}from"node:crypto";import*as Tx from"@babel/parser";import*as Xn from"@babel/types";import*as Qt from"node:path";var Js=[".tsx",".ts",".jsx",".js"],Fx=Js.map(e=>`/index${e}`),_x=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 ju(e){let t=e.replace(/[?#].*$/,""),n=/\.([a-z0-9]+)$/i.exec(t);return n!==null&&_x.has(n[1].toLowerCase())}function Vu(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 Xs(e.program,t),t}function Xs(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)Xs(o,t);else r&&typeof r=="object"&&Xs(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 Ox(e,t){if(Js.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of Js){let r=`${e}${n}`;if(await t(r))return r}for(let n of Fx){let r=`${e}${n}`;if(await t(r))return r}return null}async function hn(e,t,n){let r=await Zo(e,t,n);return r.ok?r.path:null}async function Zo(e,t,n){let r=Ir(e,t);try{if(!Mx(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 Ox(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 Mx(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:${Dx("sha256").update(t).digest("hex")}`,ast:n.ast,imports:Vu(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=zs(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(zs(`${Lx(t)}/${e}`)):yn(e):!1}function zs(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 Lx(e){let t=zs(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}var Bx=typeof Hs=="function"?Hs:Hs.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 $x(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 Ku(e){return b.isJSXIdentifier(e.name)?e.name.name:b.isJSXMemberExpression(e.name)?Ju(e.name):b.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function Ju(e){return b.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:b.isJSXMemberExpression(e.object)?`${Ju(e.object)}.${e.property.name}`:e.property.name}function jx(e){return e.split(".")[0]??e}function Vx(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 Ux(){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 Kx(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 Jx(e,t,n){e.set(t,{resolved:!0,value:n})}function qs(e,t){e.set(t,{resolved:!1})}function Xu(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 qo([Le(e.left,t,n),Le(e.right,t,n)]);if(b.isBinaryExpression(e))return qo([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 qo([Le(e.consequent,t,n),Le(e.alternate,t,n)]);if(b.isTemplateLiteral(e))return qo(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 qo(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=Xu(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(b.isCallExpression(e))return Hu(e,t)??void 0}function zu(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"?Xu(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 Ws(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:Ux(),parentStack:[],valueScopes:i,importMap:o}}function Ys(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of Kt(o.id))qs(n,s);if(!b.isIdentifier(o.id)||!o.init||!b.isExpression(o.init))continue;let i=qt(o.init,t);i!==void 0&&Jx(n,o.id.name,i)}}function Xx(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 zx(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=zu(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:Xe(i),editable:!0,source:s.source})}return r}function Hx(e,t,n){let r=[];for(let[o,i]of e.attributes.entries()){if(!b.isJSXAttribute(i))continue;let s=Gx(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?Hu(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=zu(i.value.expression,t,n);if(c!==void 0){r.push({name:s,value:nb(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=Yx(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 Wx(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 Gx(e){return b.isJSXIdentifier(e)?e.name:b.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function Yx(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 Hu(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=Zx(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 Zx(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 qx(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 eb(e,t){for(let n of t){let r=qx(e,n);if(r)return r}return null}function tb(e){return b.isJSXIdentifier(e.name)?e.name.name:null}function nb(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function rb(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 Gs(e){return b.isArrowFunctionExpression(e)||b.isFunctionExpression(e)}function ob(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function ib(e){return e==="empty"||e==="emptyRender"||e==="loading"||e==="loadingRender"||e==="error"||e==="errorRender"||e==="fallback"||e==="headerRender"||e==="footerRender"}function Uu(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 oi(e.children,t,n);let r=ni(e,t,n);return r?[r]:[]}return Hn(e)?ri(e,t,n):b.isParenthesizedExpression(e)?Jt(e.expression,t,n):b.isExpression(e)?ii(e,t,n):[]}function ei(e,t,n){let r=new Map;for(let o of e.params)for(let i of Kt(o))qs(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 Wu(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function Wu(e,t,n){let r=[];for(let o of e){if(b.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];if(i){Ys([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(...Zs(o,t,n))}return r}function Zs(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):Zs(e.consequent,t,n),o=e.alternate?b.isBlockStatement(e.alternate)?xn(e.alternate.body,t,n):Zs(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 Wu(e,t,n)}finally{t.valueScopes.pop()}}function ti(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 sb(e,t,n,r){let o=eb(e.openingElement,["items","dataSource","data"]),i={key:t,tag:Ku(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!b.isJSXAttribute(s))continue;let a=tb(s);if(!a||!b.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!b.isJSXEmptyExpression(c)){if(ob(a)&&Gs(c)){let l=ei(c,n,r),u=Uu(o,c,r,n);ti(n,"repeat-region",t,s,l,u?[u]:void 0);continue}if(ib(a)){let l=Gs(c)?ei(c,n,r):Jt(c,n,r);ti(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!b.isJSXExpressionContainer(s)||!Gs(s.expression))continue;let a=ei(s.expression,n,r),c=Uu(o,s.expression,r,n);ti(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function ni(e,t,n){let r=Ku(e.openingElement);if(r==="Fragment"||Qs(e))return oi(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=$x(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=zx(e.children,t,n),g=Hx(e.openingElement,t,n),h=Wx(e.openingElement,t,n),S,E,k=!1;if(s){let w=t.importMap.get(r)??t.importMap.get(jx(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),sb(e,u,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:u,tag:r}),ab(e.children,t,n),t.parentStack.pop()),u}function ri(e,t,n){return oi(e.children,t,n)}function oi(e,t,n){let r=[];for(let o of e)if(b.isJSXElement(o))if(Qs(o))r.push(...oi(o.children,t,n));else{let i=ni(o,t,n);i&&r.push(i)}else Hn(o)?r.push(...ri(o,t,n)):b.isJSXExpressionContainer(o)&&r.push(...ii(o.expression,t,n));return r}function ab(e,t,n){for(let r of e)b.isJSXElement(r)?ni(r,t,n):Hn(r)?ri(r,t,n):b.isJSXExpressionContainer(r)&&ii(r.expression,t,n)}function cb(e){return e==="&&"||e==="||"||e==="??"}function ii(e,t,n){if(b.isJSXEmptyExpression(e))return[];let r=rb(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(...ei(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)&&cb(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 ii(e.expression,t,n);if(b.isJSXElement(e)){let o=ni(e,t,n);return o?[o]:[]}return Hn(e)?ri(e,t,n):[]}function lb(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=lb(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 Gu(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=Kx(r);Bx(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(f){let m=Vx(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;Ys(Xx(r.program.body),Ws(t,m,i,s,l,[h]),h);let S=new Map;for(let w of d.params)for(let P of Kt(w))qs(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)&&Ys([w],Ws(t,m,i,s,l,[h,S]),S)}let I=Ws(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)};ti(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 ea(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function si(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function Yu(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(si(C.diagnostic,P,A));continue}u.set(k,C.module);let{graph:T,localImports:_}=Gu(C.module);for(let L of T.elements.values())if(L.importedFrom&&Tt(L.importedFrom)){let G=L.importedFrom,ne=await Zo(k,G,r);ne.ok?(L.importedFrom=ne.path,yn(ne.path)&&(L.isPublicUiComponent=!0)):Rr(G,k)||d(si(ne.diagnostic,P,ea(A,k,G,ne.diagnostic.path)))}if(l.set(k,T),!(w>=i))for(let L of _){if(ju(L))continue;let G=await Zo(k,L,r);if(!G.ok){Rr(L,k)||d(si(G.diagnostic,P,ea(A,k,L,G.diagnostic.path)));continue}let ne=G.path;if(h.has(ne)||yn(ne))continue;let ve=ea(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(si({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=ub(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 ub(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 db}from"@vcp-dev/contracts";var fb={affectedCompositions:[]};function nd(e){let t=null,n=new WeakMap;async function r(){return t??=pb(e),t}return{async prepareAppend(o){let i=await e.readIndex(),s=await e.stageAppend(ed(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);Zu(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(Zu(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(ed(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 Zu(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 pb(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=mb(n),o=r.provenance??fb;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 qu(e,n,r.preSnapshots),postSnapshots:await qu(e,n,r.postSnapshots)}}async function qu(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(yb(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function ed(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=gb(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 mb(e){if(!od(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:rd(t.provenance)}:{},preSnapshots:td(t.preSnapshots,"preSnapshots"),postSnapshots:td(t.postSnapshots,"postSnapshots")}}function gb(e){if(e.provenance!==void 0)return rd(e.provenance);if(e.composition)return{initiatingComposition:e.composition,affectedCompositions:[]}}function rd(e){let t=db.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 td(e,t){return e.map((n,r)=>{if(!od(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&&!hb(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 hb(e){return/^sha256:[0-9a-f]{64}$/.test(e)}function yb(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function od(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{COMPONENT_I18N_FILE_SUFFIX as xb,parseComponentI18nResourcesJson as bb,resolveSiteTextDirection as Sb,SiteLocaleSchema as Eb}from"@vcp-dev/contracts";var vb=["i18next","react-i18next"],kb="components/ui/site-locale-provider.tsx",Ib="components/ui/component-i18n-provider.tsx",id="app/layout.tsx";async function na(e){let t=e.files.filter(m=>m.path.endsWith(xb));if(t.length===0)return{ok:!0};for(let m of["package.json",id,kb,Ib])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=sd(n)&&sd(n.dependencies)?n.dependencies:{},o=vb.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(id),s=ta(i,"html","lang"),a=ta(i,"html","dir"),c=ta(i,"SiteLocaleProvider","locale"),l=Eb.safeParse(s);if(!l.success||!a||!c||s!==c||a!==Sb(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=bb(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 ta(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 sd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bn(e){return{ok:!1,message:e}}import{randomBytes as $b}from"node:crypto";import ci from"node:path";import{parse as aa}from"@babel/parser";import jb from"@babel/traverse";import*as gd from"@babel/types";import{COMPONENT_I18N_FILE_SUFFIX as oa,PageResourceArtifactSchema as Vb,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as Ub,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as Kb,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as Jb,parseComponentI18nResourcesJson as Xb}from"@vcp-dev/contracts";var cd=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,ld=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,Cb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke)-\[#(?:[0-9a-fA-F]{3,8})\](?:\/\d+)?/g,Rb=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*#[0-9a-fA-F]{3,8}[^'"]*['"]/g,wb=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Nb=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,Pb=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,Ab=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*(?:oklch|lab|lch|hsla?)\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,Tb=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*(?:oklch|lab|lch|hsla?)\([^)]+\)[^'"]*['"]/gi,Fb=/\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,Ob=/\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,Mb=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,Db=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function Pr(e,t){let n=ai([...mt(e,Cb),...mt(e,Rb),...mt(e,wb),...mt(e,t.includeRgbBackgroundImage?Nb:Pb),...t.includeExtendedColorFunctions?[...mt(e,Ab),...mt(e,Tb)]:[]]),r=ai([...mt(e,Fb),...mt(e,_b)]).filter(o=>t.colorMixPolicy==="always"||cd.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...mt(e,Ob).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...mt(e,Db).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:ai(mt(e,ld)),hardCodedSurfaceOccurrences:Bb(e),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?ai(mt(e,Mb)):[]}}function mt(e,t){return e.match(new RegExp(t.source,t.flags))??[]}var ad=160,Lb=/((?:[a-z][a-z0-9-]*(?:\[[^\]]*\])?:)+)$/;function Bb(e){let t=new RegExp(ld.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=Lb.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>ad?`${d.slice(0,ad-1)}\u2026`:d})}return o}function ai(e){return[...new Set(e)]}var ia="{{$INSTANCE}}",zb=/\{\{\$PAGE_ROUTE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,Hb=/\{\{\$PAGE_TITLE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,sa="components/site/generated",Wb=/\.(?:tsx?|json)$/,Gb=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,Yb=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],Zb=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),ra=jb,Qb=typeof ra=="function"?ra:ra.default;async function ca(e){let t=Vb.safeParse(e.artifact);if(!t.success)return me("Page resource artifact failed contract validation.");let n=t.data,r=e.randomHex??(()=>$b(4).toString("hex")),o=Math.max(1,Math.min(e.maxAttempts??5,5)),i=lS(r());if(!i)return me("Random instance suffix must be 8 lowercase hex chars.");let s=`${uS(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=ud({materialization:I.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c});if(!w.ok)return w;for(let P of w.files){let A=fd(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=ud({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=fd(_,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(rS(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=eS(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?ca({...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=tS(u);return k||(u.sort((I,w)=>I.file.localeCompare(w.file)),{ok:!0,packageInstanceId:s,pages:l,files:u})}function ud(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:dd(o.pathTemplate,e.packageInstanceId);if(!s)return me("Materialization path cannot be mapped into the package namespace.",o.pathTemplate);let a=qb(o.content,e.packageInstanceId,e.routeByPage,e.titleByPage);if(!a.ok)return a;let c=i&&e.pageTitle!==void 0?oS(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??dd(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 qb(e,t,n,r){let o,i=e.replace(zb,(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(Hb,(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(ia,t);return a.includes("{{$PAGE_ROUTE:")||a.includes("{{$PAGE_TITLE:")||a.includes("{{$INSTANCE}}")?me("Materialization contains an unresolved placeholder."):{ok:!0,data:a}}function dd(e,t){let n=`${sa}/${t}`;if(e.split(ia).length>2)return null;let o=e.replace(ia,t),i=`${sa}/${t}/`,s=o.startsWith(i)?o:`${n}/${o}`,a=ci.posix.normalize(s);return a!==s||!a.startsWith(`${n}/`)||!Wb.test(a)||Gb.test(a)?null:a}function fd(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 eS(e,t,n,r,o,i){let s=new Set(e.map(d=>d.file)),a=`${sa}/${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(oa)&&!Xb(d.content).success)return me("Materialization component i18n resources are invalid.",d.file);continue}try{let h=aa(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=aS(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()&&Zb.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||!nS(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=md(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 md(d,c))f.add(g);if(f.size!==e.length)return me("Every materialization file must be reachable from a package entry.");let m=cS(e,l,c);return m||{ok:!0}}function tS(e){if(e.length>Ub)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>Kb)return me("Page resource file exceeds the content byte limit.",n.file);t+=r}return t>Jb?me("Page resource exceeds the aggregate content byte limit."):null}function nS(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 rS(e,t){let n;try{n=aa(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=li(i.init);if(s?.type!=="ObjectExpression")return null;for(let a of s.properties){if(a.type!=="ObjectProperty"||a.computed||!iS(a.key))continue;let c=li(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 oS(e,t,n){let r;try{r=aa(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=li(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&&sS(u.key));if(!c||c.type!=="ObjectProperty")return me("Page materialization PAGE_SEO must declare a static title.",n);let l=li(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 li(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression"||t?.type==="TSNonNullExpression";)t=t.expression;return t&&gd.isExpression(t)?t:null}function iS(e){return e.type==="Identifier"&&e.name==="path"||e.type==="StringLiteral"&&e.value==="path"}function sS(e){return e.type==="Identifier"&&e.name==="title"||e.type==="StringLiteral"&&e.value==="title"}function aS(e,t,n,r){if(t.startsWith(`@/${r}/`)){let s=t.slice(2),a=pd(s,n);return a?{allowed:!0,internalPath:a}:{allowed:!1}}if(!t.startsWith("."))return{allowed:Yb.some(s=>s.endsWith("/")?t.startsWith(s):t===s)};if(t.includes("\\")||t.includes("\0"))return{allowed:!1};let o=ci.posix.normalize(ci.posix.join(ci.posix.dirname(e),t)),i=pd(o,n);return i&&(i.startsWith(`${r}/`)||i.startsWith("app/"))?{allowed:!0,internalPath:i}:{allowed:!1}}function pd(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 cS(e,t,n){let r=new Set(e.map(o=>o.file));for(let o of e){if(!o.file.endsWith(oa))continue;let i=o.file.slice(0,-oa.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 md(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 lS(e){return/^[a-f0-9]{8}$/.test(e)?e:null}function uS(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 dS}from"node:crypto";import Xt from"node:path";import{parse as fS}from"@babel/parser";import pS from"@babel/traverse";import{COMPONENT_I18N_FILE_SUFFIX as ui,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as hd,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as mS,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as gS,SiteEditMaterializationSchema as hS,parseComponentI18nResourcesJson as yS}from"@vcp-dev/contracts";var da="components/site/generated",yd="{{$INSTANCE}}",di=5,xS=/^[a-z][a-z0-9-]{0,48}$/,bS=/^[a-f0-9]{8}$/,xd=/\.tsx?$/,SS=/\.json$/,ES=/\.(?:tsx?|json)$/,vS=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,kS=["react","react/","next","next/","lucide-react","react-i18next","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],la=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),ua=pS,IS=typeof ua=="function"?ua:ua.default;function CS(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>hd)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=DS(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=hS.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 ${da}.`,path:e.generatedRoot}};if(!Id(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=Ed(r.data.files),s=Ed(e.controlledFiles);if(!LS(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>hd)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>mS)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>gS?{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 RS(e){let t=CS(e);if(!t.ok)return t;let n=t.data.generatedRoot,r=Id(e.manifest.instanceBaseName),o=Math.max(1,Math.min(di,e.maxAttempts??di));for(let i=0;i<o;i+=1){let s=OS(e.instanceNameGenerator?.()??dS(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=Rd(n,a),l=wS({manifest:e.manifest,generatedRoot:n,instanceName:a,instanceRoot:c,allowedExternalImports:e.allowedExternalImports??kS});if(!l.ok)return l;if(!await NS(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 kd(e){let t=Math.max(1,Math.min(di,e.maxAttempts??di));for(let n=0;n<t;n+=1){let r=await RS({...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 wS(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=bd({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=bd({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=PS(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 NS(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function bd(e){if(e.pathTemplate.split(yd).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(yd,e.instanceName),n=MS(t);return n?Rd(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||!ES.test(n)||vS.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 PS(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(SS.test(f.path)){if(f.path.endsWith(ui)){let g=yS(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=fS(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(!xd.test(f.path))continue;let m=s.get(f.path),d=null;if(IS(m,{ImportDeclaration(g){let h=Sd({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(ui))){let S=AS({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=Sd({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=vd(g.node);h&&la.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},OptionalMemberExpression(g){let h=vd(g.node);h&&la.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},Identifier(g){g.isReferencedIdentifier()&&la.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(!xd.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(!TS(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 FS(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:da,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}}function Sd(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 AS(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,-ui.length),i=`./${r}${ui}`;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 TS(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 FS(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 _S(e){let t=Cd(e);return t===da?t:null}function OS(e){let t=e.trim().toLowerCase();return bS.test(t)?t:null}function Id(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 xS.test(t)?t:null}function Cd(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 MS(e){let t=Cd(e);return!t||t!==e?null:t}function Rd(...e){return Xt.posix.join(...e)}function Ed(e){return new Set(e.map(t=>t.pathTemplate))}function DS(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 LS(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function vd(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 Ra}from"node:crypto";import ba from"@babel/traverse";function fa(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 BS}from"node:crypto";import wd from"node:path";import*as Td from"@babel/parser";import pa from"@babel/generator";import*as je from"@babel/types";var Nd=typeof pa=="function"?pa:pa.default;function ga(e){let t=Od(e);if(t)return{ok:!1,error:t};let n=e.projection,r=xa(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=VS(n,o),s={jsx:`<${e.component.localName} />`},a=$S(e);if(i){let d=Fd(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??(ya(c,n.container.sourceRange)?n.container.sourceHash:null);if(!c||!l)return ma("Route page composition does not expose a verifiable container boundary.");let u=Tr(c),f=Pd(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 ma("Route page composition placement does not expose a verifiable anchor boundary.");let d=Pd(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 $S(e){let t=XS(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 fi(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:Nd(t.ast,{}).code};let i;try{i=Td.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(jS(r.node,i,e.action.placement,e.action.replaceOriginal)),{ok:!0,source:Nd(t.ast,{}).code})}function jS(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 ha(e){let t=Od(e);if(t)return{ok:!1,error:t};let n=e.projection,r=Md(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(US(n,o)){let h=Fd(e);return h.ok?e.operation==="move-node"?ma("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||!JS(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=xa(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 Ad("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?Ad("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 VS(e,t){let n=e.placementUnitByKey.get(t.placementUnitKey);return n&&e.container.kind!=="jsx-container"&&ya(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 US(e,t){return e.container.kind!=="jsx-container"&&ya(t.sourceRange,e.mutationTarget.sourceRange)&&t.sourceHash===e.mutationTarget.sourceHash}function Fd(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:_d("Route mutation target hash no longer matches the current source.")}:{ok:!0,locator:n,sourceHash:t.sourceHash}}function Pd(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:_d(`${r} hash no longer matches the current source.`)}:{ok:!0}}function _d(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function ma(e){return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:e,diagnostics:[]}}}function Ad(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 Od(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&&!KS(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 KS(e,t){return e.routeId===t.routeId&&e.effectiveTemplateId===t.effectiveTemplateId}function JS(e,t){return e.routeId===t.routeId&&e.templateId===t.effectiveTemplateId}function XS(e,t){let n=wd.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=wd.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:${BS("sha256").update(e.slice(t,n)).digest("hex")}`}function ya(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 zS=typeof ba=="function"?ba:ba.default;function $d(e){if(!e.ast)return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=eE(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=nE(t);if(!n.ok)return St(e,[n.diagnostic]);let r=n.expression;if(r.isIdentifier()){let o=oE(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(sE(r,t))return St(e,[Be("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(r.isNullLiteral())return Ea(e,t,"virtual-route-root",r);if(iE(r)){let o=uE({input:e,source:e.source,expression:r});return Sa(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=Ia(r),i=Bd({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[o]});return Sa(e,t,i,{kind:"virtual-route-root",sourceKind:"jsx-element"},r)}if(r.isJSXElement()||r.isJSXFragment()){let o=cE(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(aE(e.source,r,i.members))return Ea(e,t,"starter-placeholder",r);let s=r.isJSXFragment()||Oe(r);if(i.members.length===0&&s)return Ea(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=Bd({input:e,containerKind:a,sourceKind:c,source:e.source,containerPath:o.path,members:i.members});return Sa(e,t,l,{kind:a,sourceKind:c},r)}return St(e,[Be("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")])}function xa(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 Md(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 jd(e){return e.ok?HS(e.projection):WS(e.projection)}function HS(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)=>Vd(e,u,h,S,e.container.placementKey)),m=f.filter(({member:h})=>h.isBusinessMember).map(({sourceMember:h})=>YS(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:GS(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function WS(e){let t=e.diagnostics.map(ZS);return{status:"unsupported",version:e.version,composition:e.composition,reason:QS(e.diagnostics),diagnostics:t}}function GS(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 Vd(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)=>Vd(e,t,a,c,i))]}function YS(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function ZS(e){return{code:qS(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 qS(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 eE(e){let t=null;return zS(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=tE(o.path);i&&(t=i,n.stop())}}),t}function tE(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 nE(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(!rE(s))return{ok:!1,diagnostic:Be("UNSUPPORTED_PAGE_SHAPE","Route guard return shape is not statically safe",{reason:"guard-shape"})};continue}if(Ud(s)||Kd(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 rE(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(Ud(o)||Kd(o))return null;return r}function Ud(e){return e.isForStatement()||e.isForInStatement()||e.isForOfStatement()||e.isWhileStatement()||e.isDoWhileStatement()||e.isSwitchStatement()||e.isTryStatement()||e.isWithStatement()}function Kd(e){let t=!1;return e.traverse({Function(n){n.skip()},ReturnStatement(){t=!0}}),t}function oE(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 iE(e){return e.isConditionalExpression()?Dd(_r(e.get("consequent")))&&Dd(_r(e.get("alternate"))):!1}function Dd(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 sE(e,t){if(e.isIdentifier())return Ld(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return Ld(n.node.name,t)}return!1}function Ld(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 aE(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&ka(t)}function ka(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(!ka(t))return!1;continue}if(t.isJSXElement()&&!ka(t))return!1}return!0}function cE(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:Ca(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({...Ia(o,i?.members),sourceRange:gt(r.node.loc),parentSourceRange:gt(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:Ca(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({...Ia(r,o?.members),parentSourceRange:gt(e.node.loc)})}}return{members:t,unsupported:n}}function Ia(e,t){let n=e.isJSXElement()&&en(e)?t??Gn(e).members:[],r=e.isJSXElement()&&!en(e)&&!Oe(e);return{memberKey:Ca(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:gt(e.node.loc),businessMemberCount:r?1:Jd(n),parentSourceRange:gt(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:lE(e)}}function en(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name[0]===t.name[0]?.toLowerCase()}function lE(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 Jd(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function pi(e){return e.length===0?0:Math.max(1,Jd(e))}function Bd(e){let t=gt(e.containerPath.node.loc),n=wa(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:pi(e.members)<=1,memberCount:pi(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function uE(e){let t=gt(e.expression.node.loc),n=wa(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 Xd(e,t){let n=gt(t.node.loc),r=wa(e.source,t.node.start,t.node.end);return!n||!r?null:{kind:"expression",documentVersion:e.version,sourceRange:n,sourceHash:r}}function Sa(e,t,n,r,o){let i=Xd(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=dE(e,n,s),c=fa(a),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Hd(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 dE(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:pi(g)<=1,memberCount:pi(g),sourceRange:m,sourceHash:m?va(e.source,m):null,relation:l,containerSourceRange:h,containerSourceHash:h?va(e.source,h):null,anchorSourceRange:d,anchorSourceHash:d?va(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 Ea(e,t,n,r){let o=Xd(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=fa([a]),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Hd(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 zd([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function Ca(e,t,n){return zd(["member",e,String(t??-1),String(n??-1)])}function zd(e){return`pc_${Ra("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function wa(e,t,n){return t==null||n==null?null:`sha256:${Ra("sha256").update(e.slice(t,n)).digest("hex")}`}function va(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:${Ra("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 Hd(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 kE}from"@vcp-dev/contracts";import HA from"node:fs";import GA from"node:path";var pE=/^page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function Or(e){let t=e.map(r=>vE(r.path)),n=mE(t);return n?t.filter(r=>hE(n,r)).map(r=>({routeId:yE(n,r),entryFile:r})).sort((r,o)=>r.routeId.localeCompare(o.routeId)):[]}function Na(e,t=""){let r=((e??"/").trim()||"/").split(/[?#]/,1)[0]||"/",o=r.startsWith("/")?r:`/${r}`,i=EE(t),s=i&&(o===i||o.startsWith(`${i}/`))?o.slice(i.length)||"/":o,a=s.startsWith("/")?s:`/${s}`;return a==="/"?"/":a.replace(/\/+$/,"")}function mE(e){return e.some(r=>r.startsWith("app/")&&!gE(r))?"app":e.some(r=>r.startsWith("src/app/"))?"src/app":null}function gE(e){return/^(?:src\/)?app\/(?:_vcp|\.vcp)/.test(e)}function hE(e,t){if(!t.startsWith(`${e}/`))return!1;let n=t.slice(t.lastIndexOf("/")+1);return pE.test(n)?t.slice(e.length+1,-n.length-1).split("/").filter(Boolean).every(r=>!r.startsWith("_")&&!r.startsWith(".")):!1}function yE(e,t){let n=t.slice(e.length+1).split("/").slice(0,-1).map(bE).filter(r=>!!r);return n.length===0?"/":`/${n.join("/")}`}function xE(e){return e.startsWith("(")&&e.endsWith(")")}function bE(e){return!e||e.startsWith("@")||e.startsWith("_")||xE(e)?null:SE(e)}function SE(e){return e.replace(/^\((?:\.|\.\.|\.\.\.)\)/,"")}function EE(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function vE(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 Pa(e){return kE.safeParse(e).success||Ze("invalid-template-id",{templateId:e}),Buffer.from(e,"utf8").toString("base64url")}function Wd(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 Pa(t)!==e&&Ze("noncanonical-template-key",{path:e}),t}function IE(e){let t=Na(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("(")||CE(r)&&!Gd(r)))&&Ze("invalid-public-route",{routeId:e}),t}function CE(e){return e.includes("[")||e.includes("]")}function Gd(e){return/^\[\[\.\.\.[^\[\]]+\]\]$|^\[[^\[\]]+\]$/.test(e)}function Yd(e){return e.some(Gd)}function Zd(e,t,n="app"){n!=="app"&&n!=="src/app"&&Ze("invalid-app-root");let r=IE(e),o=Pa(t),i=Yd(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 qd(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 gi(e){let t=qd(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=Yd(c),u=l?c[0]:c.pop(),f=l?c.slice(1):c,m=Wd(u),d=f.length?`/${f.join("/")}`:"/";Zd(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)=>mi(i.routeId,s.routeId)||mi(i.templateId,s.templateId))}function ef(e){let t=qd(e.files),n=gi({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)=>mi(o.context.routeId,i.context.routeId)||(o.context.effectiveTemplateId===void 0?-1:i.context.effectiveTemplateId===void 0?1:mi(o.context.effectiveTemplateId,i.context.effectiveTemplateId)))}function RE(e){let t=Na(e.selector.routeId),n=ef({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 mi(e,t){return e<t?-1:e>t?1:0}import{HOME_PAGE_URL_PATH as jE}from"@vcp-dev/contracts";import{parse as YT}from"@babel/parser";import{parse as oT}from"@babel/parser";import{FormBlockIdSchema as sT,FormSpecV1Schema as aT}from"@vcp-dev/contracts";var Dr="components/site/generated/forms",cT=`${Dr}/vcp-form-runtime.tsx`,hi="[A-Za-z0-9][A-Za-z0-9_-]{0,127}",lT=new RegExp(`^${Dr}/form-(${hi})\\.spec\\.ts$`),uT=new RegExp(`^${Dr}/form-(${hi})\\.tsx$`),dT=new RegExp(`^@/${Dr}/form-(${hi})$`),fT=new RegExp(`(?:^|/)${Dr}/form-(${hi})(?:\\.tsx?)?$`);var pT=Symbol("invalid-literal");import{createHash as hT}from"node:crypto";import{posix as xT}from"node:path";import{parse as ST}from"@babel/parser";import{FormSpecV1Schema as vT}from"@vcp-dev/contracts";var kT=Symbol("dynamic");import{parse as wE}from"@babel/parser";function yi(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"&&typeof t.type=="string"):[]}var NE=/^(?:src\/)?app\/(.*)page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function PE(e){let t=NE.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 AE(e){let t=e;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function tf(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function TE(e){let t=e;for(;t&&(t.type==="TSAsExpression"||t.type==="TSSatisfiesExpression"||t.type==="ParenthesizedExpression");)t=t.expression??null;return t}function Aa(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(Aa);if(t?.type==="ObjectExpression"){let n={};for(let r of yi(t.properties)){if(r.type!=="ObjectProperty"||r.computed)throw new Error("dynamic object property");let o=tf(r.key);if(!o)throw new Error("unsupported object key");n[o]=Aa(r.value)}return n}throw new Error(`unsupported static value: ${t?.type??"unknown"}`)}function Ta(e,t){let n=[],r=PE(t);if(r===null)return{found:!1,seo:null,diagnostics:n};let o;try{o=wE(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 yi(o.program.body)){let u=l.type==="ExportNamedDeclaration"?l.declaration:l;if(u?.type==="VariableDeclaration")for(let f of yi(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=TE(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 yi(s.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=tf(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=AE(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=Aa(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 FE}from"@babel/parser";var nf=["page","anchor","external","email","phone","group","file"],_E=["link","cta"],of=["description","badge","iconKey"],Fa=["label","targetType","href","role","openInNewTab","nofollow","children",...of],OE=new Set(Fa);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 ME(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function rf(e){let t=e;return t?.type==="BooleanLiteral"&&typeof t.value=="boolean"?t.value:void 0}function _a(e){let t=[],n;try{n=FE(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=sf(i,`NAV_ITEMS[${s}]`,t);a&&o.push(a)}),{items:o,diagnostics:t}}function sf(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=ME(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||!nf.includes(i))return n.push({severity:"fatal",path:`${t}.targetType`,message:`targetType must be one of ${nf.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 of){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))OE.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 ${Fa.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=sf(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&&(_E.includes(c)?s.role=c:n.push({severity:"warning",path:`${t}.role`,message:"role ignored: not link/cta"})),r.openInNewTab!==void 0){let l=rf(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=rf(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 DE}from"@babel/parser";function $r(e){return Array.isArray(e)?e:[]}function af(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression";)t=t.expression;return t?.type==="ArrayExpression"?t:void 0}function LE(e){let t;try{t=DE(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=af(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 Oa(e,t){let n=cf(t);if(!n)return{status:"unsupported",source:e};let r=LE(e);if(r.status!=="ok")return{status:r.status,source:e};let o=r.array;if(_a(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($E(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=BE(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 BE(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 af(t.value)}}function cf(e){let t=e.trim();return t.startsWith("/")?t==="/"?t:t.replace(/\/+$/,""):null}function $E(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"&&cf(n??"")===t}import{estimateNavLabelWidth as _T}from"@vcp-dev/contracts";import{parse as DT}from"@babel/parser";var VE="components/site/generated/",jr=[".tsx",".ts",".jsx",".js"];function lf(e){if(e.expectedUrlPath===jE)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=Ta(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(gi({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=UE(e.files);if(!o.ok)return o.error;let i=o.graph,s=zE(r,i),a=HE(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=Oa(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 UE(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")||!KE(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(JE(c))continue;let l=Ir(r,c),u=XE(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 KE(e){let t=e.toLowerCase();return jr.some(n=>t.endsWith(n))}function JE(e){return!!(/\.([a-z0-9]+)$/i.exec(e)&&!jr.some(n=>e.endsWith(n)))}function XE(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 zE(e,t){let n=new Set,r=[...t.get(e)??[]];for(;r.length>0;){let o=r.pop();!o.startsWith(VE)||n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function HE(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 cp from"@babel/parser";import*as le from"@babel/types";import*as Oi from"node:path";import*as ge from"@babel/types";function uf(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(GE(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=df(r),i=!1,s=o?o.initBinding&&Ma(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=WE(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=YE(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(Ma(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:Ft(e)}}return null}function WE(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=df(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=Ma(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 df(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=qE(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function Ma(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function GE(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function YE(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 ff(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=xi(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=ZE(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 xi(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=xi(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=xi(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=xi(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 ZE(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 qE(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 yf from"@babel/parser";import Ba from"@babel/traverse";import*as Zn from"@babel/types";import*as oe from"@babel/types";function Ei(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?bi(n,t):null}if(e.isMemberExpression()){let n=iv(e.node),r=ev(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?bi(o,[...r,...t]):null}return e.isAwaitExpression()||La(e.node)?tn(av(e.node),t,"awaited or fetched expression"):null}function ev(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 bi(e,t=[]){let n=tv(e,t);if(n)return n;let r=nv(e,t);if(r)return r;let o=rv(e,t);return o||null}function Kr(e){return e?.kind==="api-source"}function tv(e,t){if(e.path.isVariableDeclarator()&&oe.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&Da(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)&&gf(c)==="data"&&Ur(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&Da(a.node))return tn(e.identifier.name,t,"query hook data binding")}let n=ov(e);if(!n||gf(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()||!Da(i.node)?null:tn(e.identifier.name,t,"query hook data binding")}function nv(e,t){if(e.path.isVariableDeclarator()&&oe.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!mf(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:pf(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()||!mf(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return oe.isIdentifier(s)&&pf(e,s.name)?tn(e.identifier.name,t,"state setter is updated by API data"):null}function rv(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"):La(r.node)?tn(e.identifier.name,t,"fetch-backed binding result"):null:null}function ov(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 pf(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){La(i.node)&&(n=!0),(sv(i.node.callee,t)||i.node.arguments.some(s=>oe.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function Da(e){let t=vi(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function mf(e){return vi(e.callee)==="useState"}function La(e){return Si(e,t=>oe.isCallExpression(t)&&vi(t.callee)==="fetch")}function iv(e){let t=e;for(;oe.isMemberExpression(t);)t=t.object;return oe.isIdentifier(t)?t.name:null}function gf(e){return e.computed?null:oe.isIdentifier(e.key)?e.key.name:oe.isStringLiteral(e.key)?e.key.value:null}function vi(e){return oe.isIdentifier(e)?e.name:oe.isMemberExpression(e)&&oe.isIdentifier(e.property)?e.property.name:null}function sv(e,t){return Si(e,n=>oe.isIdentifier(n)&&n.name===t)}function Si(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)&&Si(i,t))return!0;continue}if(oe.isNode(o)&&Si(o,t))return!0}return!1}function av(e){return oe.isIdentifier(e)?e.name:oe.isCallExpression(e)?vi(e.callee)??"api":oe.isAwaitExpression(e)?"awaited-api":"api"}function tn(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:cv(e,t),reason:n}}function cv(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var xf=typeof Ba=="function"?Ba:Ba.default;function bf(e,t){let n=Ef(e);if(!n)return{allowed:!0};let r=!1;return xf(n,{CallExpression(o){if(!vf(o.node,t.sourceRange)||!lv(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||Kr(Ei(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function Sf(e,t){let n=Ef(e);if(!n)return{allowed:!0};let r=!1;return xf(n,{JSXExpressionContainer(o){vf(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 Ef(e){try{return yf.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function lv(e){let t=e.callee;return Zn.isMemberExpression(t)&&Zn.isIdentifier(t.property)&&t.property.name==="map"}function vf(e,t){let n=e.loc;return n?hf({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&hf({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function hf(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 kf from"@babel/parser";import $a from"@babel/traverse";import*as Re from"@babel/types";import*as Qn from"node:path";var vt=typeof $a=="function"?$a:$a.default;function Ue(e){try{return kf.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function ja(e){return e.computed?Re.isStringLiteral(e.key)||Re.isNumericLiteral(e.key)?String(e.key.value):null:uv(e.key)}function uv(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 Va(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?Va(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 ki(e)===ki(t)}function ki(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 Rf(e,t,n){let r=Af(e,t);if(Tf(e,r),Ff(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){Df(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:Ii(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 wf(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 dv(i,n))o=r(s)||o}return[...n.values()]}function dv(e,t){let n=[],r=fv(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:Ua(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:Ua(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 Ua(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 fv(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:Ua(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`${ki(e.file)}#${t}`}function nn(e){return V.isIdentifier(e)?e.name:e.value}function Nf(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 Ja(e){let t=pv(e),n=[],r=Ff(e.ast,t);return vt(e.ast,{JSXElement(o){tt(e.file,e.sourceFile)&&Ii(o)===e.sourceComponent||Df(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function Pf(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function Af(e,t){let n=Pf();return vt(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function pv(e){let t=Pf();return tt(e.file,e.sourceFile)&&mv(t,Af(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=Cf(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=Cf(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)}}}}}),Tf(e.ast,t),t}function mv(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 Tf(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&&Ka(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&&Mf(n.node.id,o.namespaceMembers,t,n)}}}})}function Ff(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return vt(e,{ReferencedIdentifier(r){if(n){r.stop();return}gv(r)||!r.isIdentifier()||!_f(r,t)||hv(r,t)||yv(r)||(n=!0,r.stop())}}),n}function gv(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 _f(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 hv(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!If(e,r))return!1;let o=_f(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()&&If(e,a)&&!!Rn(a.node,t,a)}function yv(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function If(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 xv(r,t,n);let o=Va(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?Of(s,o.slice(1).join(".")):null}function xv(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!V.isObjectProperty(i))continue;let s=ja(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 Of(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 Ka(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 Mf(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&&Ka(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!V.isObjectProperty(o))continue;let i=ja(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=Of(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&&Ka(n,c,s);continue}if(V.isObjectPattern(a)&&s.namespaceMembers.size>0){Mf(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function Cf(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 Df(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=Lf(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 Lf(e){if(V.isJSXIdentifier(e))return[e.name];if(V.isJSXMemberExpression(e)){let t=Lf(e.object);return t?[...t,e.property.name]:null}return null}function Ii(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 Bf(e,t){let n=Ue(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=Ja({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:Ci(e,t)}function tr(e,t){let n=de(t);return n?e.slice(n.start,n.end):""}function $f(e,t){return e.start===t.start&&e.end===t.end}function Ci(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 Ri(e,t){return Xa(e,t).length>0}function wi(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()&&!bv(o,n,r)))return!0;o=o.parentPath}return!1}function bv(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 Xa(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()&&za(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 za(e){return e==="&&"||e==="||"||e==="??"}function jf(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 Vf(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=Nf(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=wf(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=Ja({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)||Ii(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 Cv}from"@vcp-dev/contracts";function Ni(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=Sv(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 Sv(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 Ev}from"@vcp-dev/contracts";function Uf(e){let t=e.changes??(e.change?[e.change]:[]);if(!Ev.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?vv(r):kv(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 vv(e){return e.operation==="set"?{kind:"value",value:e.value}:{kind:"undefined"}}function kv(e,t){let n=e.properties.filter(i=>Mt.isObjectProperty(i)&&Iv(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 Iv(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 Kf(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 Xf(e){let t=Cv.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 Rv(e,r);if(o){if(!o.ok)return wn("owner-plan-failed",o.reason);Jf(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(Pv(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=Ni({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"){Ha(n,{type:"update-value",order:n.length,file:c.file,locator:c.locator,value:r.value});continue}if(c.kind==="repeat-property"){let l=Uf({source:e.getFileContent(c.target.sourceFile),target:c.target,changes:[r]});if(!l.ok)return wn("repeat-target-failed",l.reason);Jf(n,l.steps);continue}Ha(n,{type:"set-property-changes",order:n.length,file:e.node.file,locator:wv(e.node),scope:e.scope,changes:[r]})}return n.forEach((r,o)=>{r.order=o}),Nv(n)?wn("step-conflict","Property changes resolve to conflicting write steps"):{ok:!0,steps:n}}async function Rv(e,t){return t.name!=="className"&&t.name!=="class"?null:Kf({node:e.node,change:t,classNameSource:e.classNameSource})}function wv(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 Nv(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 Jf(e,t){for(let n of t)Ha(e,{...n,order:e.length})}function Ha(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 Pv(e,t){if(t.operation!=="set"||e.status!=="direct")return!1;let n=e.attribute?.resolution;return n?.status==="resolved"?Wa(n.value,t.value):e.attribute?.source===null&&e.attribute.value===t.value}function Wa(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)=>Wa(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=>Wa(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 Ga(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:Pi(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 Av(e,t){let n=de(e.node);return n?Tv(t).some(r=>{let o=de(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function Tv(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)?Fv(e)?zf(e.children):[e]:X.isJSXFragment(e)?zf(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)&&za(e.operator)?on(e.right):[]}function zf(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 Fv(e){let t=e.openingElement.name;return X.isJSXIdentifier(t)?t.name==="Fragment":X.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function Hf(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function Pi(e){return!(X.isIdentifier(e)||X.isThisExpression(e)||X.isMemberExpression(e)||X.isOptionalMemberExpression(e)||X.isCallExpression(e)||X.isOptionalCallExpression(e))}function Wf(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:Ci(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=Dt(e,o);return i?Av(o,i):t.isRepeatItemRoot===!0}function Gf(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:Ci(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 Ya(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 _v(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=Ya(i.node.name);s&&o(s,i)}}),[...r].sort()}function Za(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(Ri(s,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let a=_v(s,i.match.path);return a.length>0?{ok:!1,bindingNames:a}:{ok:!0}}function Zf(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 Ai(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=Yf(e),i=Yf(t);if(!o||!i||!$f(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=jf(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())&&Wf(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 Yf(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 qa(e,t,n,r={}){if(!r.preserveConditionalBoundary&&Ri(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=>Ai(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=Ya(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function ec(e,t,n){let r=de(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>Ai(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=>Ai(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=Zf(l);u&&o(u,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function tc(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 qf(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 ep(e,t){return{...e,callbackParams:t}}function nc(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 tp(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 Ov(e){return e.target.kind==="node"?e.target.key:null}function Mv(e){return"kind"in e}function Ti(e){return!Mv(e)}function ac(e,t){let n=Oi.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Oi.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function rc(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 lc(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 Dv(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function Lv(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 oc(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function Bv(e){let t=Rf(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=$v({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=lp(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?Pi(o):!0}}}function $v(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=Uv(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=Jv(e.callSitePath,c.propName,e.source);if(!l.ok){o=l.reason;return}let u=jv(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=tc(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:Xv(e.source,t,[...n.values()])}}function jv(e,t){if(t.length===0)return e;let n=lp(e);if(!n)return null;let r=Pi(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=Vv(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function Vv(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function Uv(e,t,n){let r=Kv(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 Kv(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 Jv(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 Xv(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 lp(e){try{let n=cp.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 zv(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=np(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let u=np(c,e.targetFile,e.targetFile);(!u||u.moduleFile!==a.moduleFile||!Hv(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 Hv(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 np(e,t,n){let r=Wv(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(".")?ac(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 Wv(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function rp(e,t,n,r){let o=Xa(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=Gv(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${Zv(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function Gv(e,t){return Yv(e.node)?t:`(${t})`}function Yv(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 Zv(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 Fi(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 qv(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 ek(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 op(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 ip(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function tk(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=lc(e),o=Ue(t);if(n.exportName!=="default"){let a=o?ek(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?ip(r,op(o)):r;return{localName:c,importStep:ic(e,c)}}if(!o)return{localName:r,importStep:ic(e,r)};let i=qv(o,n.source);if(i)return{localName:i};let s=ip(r,op(o));return{localName:s,importStep:ic(e,s)}}function nk(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??lc(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 rk(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?ok(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function ok(e){return Object.fromEntries(Object.entries(e).filter(t=>cc(t[1])))}function cc(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(cc):typeof e=="object"?Object.values(e).every(cc):!1}function ic(e,t=lc(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 sp(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 ik(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 uc(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:uc(e,t.slice(0,n)),index:r.index}}return null}function sc(e,t){return e.locator?e.collectionPathMap?.[t]?uc(e.locator,e.collectionPathMap[t]):Qr(e.locator)?ak(e.locator,ck(t,e.collectionIndexMap)):null:null}function sk(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:up(o,t)}function up(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=up(r,t);return o===void 0?void 0:{[n.name]:o}}function ak(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},uc(e,i)}return null}function ck(e,t){return t?.[e]??e}function ap(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 lk(e,t){return uk(e.root,t.root)&&fk(e.path??[],t.path??[])}function uk(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&&dk(e.sourceRange,t.sourceRange)}}function dk(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function fk(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 _i=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(!Ti(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=sp(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=Ov(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):pk(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?Xf({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=sc(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=sc(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(!Dv(a.match.path))return{ok:!0,value:r};let c=Lv(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=sc(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||Bf(n,t)>1)return null;let r=ac(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(!Ti(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=bf(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=Fi(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"?tk(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:nk(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(!Ti(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:rk(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(!Ti(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=sk(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"?ap(0,a.collectionIndexMap):ap(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:")||Gf(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(wi(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let g=Za(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&&!Hf(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=Ga(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=Fi(o,{kind:"native-tag",tag:r.tag});if(I)return{ok:!1,errorCode:"unsupported-operation",reason:I}}let g=rc(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(wi(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let h=rp(c,u,f,g);for(let I of h.conditionPaths){let w=ec(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=qa(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=Bv({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=tc(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:nc(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=Vf({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")&&Ga(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 _=Fi(o,{kind:"native-tag",tag:r.tag});if(_)return{ok:!1,errorCode:"unsupported-operation",reason:_}}let k=rc(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(wi(d,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let I=rp(c,d,g,k);for(let _ of I.conditionPaths){let L=ec(_,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=qa(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=zv({sourceFile:r.file,targetFile:o.file,sourceContext:S,targetParentPath:g});if(!P.ok)return{ok:!1,errorCode:"unsupported-operation",reason:P.reason};let A=qf(S);if(!A.ok)return{ok:!1,errorCode:"unsupported-operation",reason:A.reason};let C=ep(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:nc(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=sp(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(ik(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&&!oc(d)&&!tp(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&&lk(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=oc(d)?d:g;if(h&&oc(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=Fi(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=Za(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=rc(this.graph,r)??`<${r.component} />`,m=Sf(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:ac(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 pk(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 gc from"@babel/generator";import{parse as Nk}from"@babel/parser";import hc from"@babel/traverse";import*as R from"@babel/types";import*as Bt from"@babel/types";import dc from"@babel/generator";import*as he from"@babel/types";var mk=typeof dc=="function"?dc:dc.default,gk=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,hk=/^((?:https?:)?\/\/)[^/@\s]+@/i,yk=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function fp(e,t){let n=Lt(e.callee);if(!n)return null;if(n==="fetch")return fc(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(dp(r))return fc(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(dp(r))return fc(e.arguments[0],r,t,["ky client contract"])}return null}function fc(e,t,n,r){if(!e||he.isSpreadElement(e)||he.isJSXNamespacedName(e))return Ek(t,n,r,"missing url argument");let o=qr(e);return{sourceKind:Sk(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 Mi(e.value);if(he.isTemplateLiteral(e))return Mi(xk(e));if(he.isBinaryExpression(e)&&e.operator==="+"){let t=qr(e.left),n=qr(e.right);return!t&&!n?void 0:Mi(`${t??pc(e.left)}${n??pc(e.right)}`)}if(he.isMemberExpression(e)){let t=pp(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?Mi(`${o} + ${r}`):r??o}if(he.isIdentifier(e))return`:${e.name}`}}function xk(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+=pc(r))}return t}function pc(e){if(he.isIdentifier(e))return`:${e.name}`;if(he.isMemberExpression(e)){let t=pp(e);if(t)return`env:${t}`}return`:${bk(e)}`}function bk(e){return mk(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function Mi(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(hk,"$1<redacted>@").replace(yk,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?gk.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function Sk(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 Ek(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function dp(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function pp(e){return!he.isMemberExpression(e.object)||!he.isIdentifier(e.object.object,{name:"process"})||!vk(e.object.property,"env")?null:he.isIdentifier(e.property)?e.property.name:he.isStringLiteral(e.property)?e.property.value:null}function vk(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 kk=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),Ik=new Set(["getConfig","submit"]);function mp(e,t){let n=Ck(Lt(e.callee),t);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!kk.has(i))return null;let s=mc(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(!Ik.has(i))return null;let s=mc(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=mc(e,0)??Rk(e,0,"path")??"/cms/:path",s=wk(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 Ck(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 gp(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 hp(e){let t=Lt(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function mc(e,t){let n=e.arguments[t];return Bt.isStringLiteral(n)?n.value:null}function Rk(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 wk(e){return/^\/collections\/([^/]+)(?:\/|$)/.exec(e)?.[1]??null}var xc=typeof hc=="function"?hc:hc.default,__=typeof gc=="function"?gc:gc.default,Pk={maxFunctionDepth:8,maxImportDepth:6},Ak=new Set(["src","href","alt","poster","content","title","aria-label"]);async function vp(e){let t=e.fileCache??new Map,n=Ec(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...Pk,...e.options},variableCache:new Map,functionDepth:0,importDepth:0,paramSources:new Map,resolvingVariables:new Set,resolvingComponentProps:new Set,scopeVariables:Dp(n,e.element.componentName)};await kp(e.element.componentName,e.graph,r);let o=[];o.push(...await Mk(e.element,e.graph,r),...await Dk(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await Lk(s,e.element,e.graph,r);a&&o.push(Bi(a,"text","children"))}for(let s of e.element.attributes??[]){let a=Ok(s,e.element);if(!a)continue;let c=await Rp(s.source,e.element,e.graph,r);c&&o.push(Bi(c,a,s.name))}let i=Qk(o).sort(Op);return{hasDynamicData:i.length>0,bindings:i}}async function kp(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 Ip(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 Cp(l.sourceFile,n);if(!f)continue;let m=ji(f,n,{importDepth:n.importDepth+1});m.paramSources.clear(),m.scopeVariables=Dp(f,l.componentName),await kp(l.componentName,t,m);let d=await Tk(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=Fp(u);f.length===1&&c.set(l,f[0])}_k(o,c,n)}async function Ip(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 Cp(e,r))?.imports.get(t);if(!s||!Tt(s.source))return!1;let a=await $p(e,s.source,r.exists);return a?a===n?!0:Ip(a,s.importedName,n,r,o):!1}async function Tk(e,t){let n=new Map;xc(t.analysis.ast,{JSXElement(o){if(Fk(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 Fk(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 Cp(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 Ec(e,r,t.fileCache)}function _k(e,t,n){if(R.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,Sc(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 Ok(e,t){return e.name==="dangerouslySetInnerHTML"?"richtext":Ak.has(e.name)?"attribute":t.importedFrom||/^[A-Z]/.test(t.tag)?"component-prop":null}async function Mk(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 $i(i.collectionSource,n);s&&r.push(Bi(Nn(s),"repeat-region",i.collectionExpression))}return r}async function Dk(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 $i(i.conditionSource,n);s&&r.push(Bi(Nn(s),"conditional-region",i.conditionExpression))}return r}async function Lk(e,t,n,r){return Rp(e.source,t,n,r)}async function Rp(e,t,n,r){let o=await Bk(e,t,n,r);return o||$i(e,r)}async function Bk(e,t,n,r){if(!e)return null;let o=$k(e.base,t,n);if(!o)return null;let i=await $i(o.collectionSource,r);return i?ro(i,e.path,!0):null}function $k(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 $i(e,t){if(!e)return null;let n=await wp(e.base,t);return n?ro(n,e.path,!1):null}async function wp(e,t){let n=t.paramSources.get(e);if(n)return Ke(n);if(t.variableCache.has(e))return qk(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await jk(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 Lp(i,t);if(s){let a=ji(s,t,{importDepth:t.importDepth+1}),c=Bp(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 jk(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];xc(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 wp(e.name,t);if(R.isMemberExpression(e)||R.isOptionalMemberExpression(e)){let n=R.isMemberExpression(e)?gp(e,{file:t.file}):null;if(n)return Tp(n);let r=await Vk(e,t);if(!r)return null;let o=Yk(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 Np(e,t);if(R.isObjectExpression(e)){let n=await Pp(e,t);return Object.keys(n).length>0?Sc(n,t.file):null}if(R.isConditionalExpression(e)){let n=await De(e.consequent,t),r=await De(e.alternate,t);return no(xp(n,r))}if(R.isLogicalExpression(e)){let n=await De(e.left,t),r=await De(e.right,t);return no(xp(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 Vk(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 Np(e,t){let n=mp(e,{file:t.file,imports:t.analysis.imports});if(n)return Tp(n);if(hp(e)){let f=e.arguments[0];if(f&&R.isExpression(f))return no(await De(f,t))}let r=await Uk(e,t);if(r)return r;let o=fp(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 Xk(e,t);if(i)return i;let s=await zk(e,t);if(s)return s;let a=await Hk(e,t);if(a)return a;let c=await Wk(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=Fp(l);return u.length===1?no(u[0]):null}async function Uk(e,t){let n=Lt(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=Jk(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 Di(t.file,`${n} without static options`);let o=Kk(r,"queryFn");if(!o)return Di(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:Di(t.file,`${n} queryFn unresolved`)}return R.isArrowFunctionExpression(o)||R.isFunctionExpression(o)?(await Pn(o,[],t)).returnSource:R.isCallExpression(o)?Np(o,t):null}function Kk(e,t){for(let n of e.properties){if(!R.isObjectProperty(n)||!R.isExpression(n.value))continue;if(Ap(n)===t)return n.value}return null}function Jk(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 Xk(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 zk(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 Hk(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 Wk(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(Di(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 Lp(r,t);if(!o)return null;let i=ji(o,t,{importDepth:t.importDepth+1}),s=Bp(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=ji(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let u=t[l];u&&yc(c,Zk(u),r)});let o=Gk(e),i=null,s,a=!1;for(let c of o){if(R.isObjectExpression(c)){s={...s??{},...await Pp(c,r)},i=i??Sc(s,n.file);continue}let l=await De(c,r);if(l){if(!i){i=l;continue}let u=bc(i,l);if(!u){a=!0,i=null;continue}i=u}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function yc(e,t,n){if(R.isIdentifier(e)){n.paramSources.set(e.name,Ke(t));return}if(R.isAssignmentPattern(e)){yc(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;yc(i,o,n)}}function Gk(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 Pp(e,t){let n={};for(let r of e.properties){if(!R.isObjectProperty(r))continue;let o=Ap(r);if(!o||!R.isExpression(r.value))continue;let i=await De(r.value,t);i&&(n[o]=i)}return n}function Ap(e){return R.isIdentifier(e.key)&&!e.computed?e.key.name:R.isStringLiteral(e.key)?e.key.value:null}function Yk(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,yp(t)),o)}return o.valuePath=eo(o.valuePath,yp(t)),o}function yp(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 Tp(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 Zk(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 xp(e,t){return e?t?bc(e,t):Ke(e):t?Ke(t):null}function bc(e,t){if(Li(e)!==Li(t))return null;let n=Mp(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function Fp(e){let t=new Map;for(let n of e){let r=Li(n),o=t.get(r);t.set(r,o?bc(o,n):Ke(n))}return[...t.values()]}function Li(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,Li(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 Sc(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 Di(e,t){return{sourceKind:"unknown-api",sourceType:"api-field",confidence:"unknown",readonly:!0,evidence:[{file:e,reason:t}]}}function Bi(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 _p(e){let t=[...e].sort(Op),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 Op(e,t){return bp(e.targetKind)-bp(t.targetKind)||Mp(e.confidence,t.confidence)||Sp(e.sourceKind)-Sp(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function bp(e){return{"repeat-region":0,"conditional-region":1,text:2,richtext:3,attribute:4,"component-prop":5}[e]}function Sp(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function Mp(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function Ec(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=Nk(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 xc(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)&&Ep(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)&&Ep(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 Ep(e){return R.isFunctionExpression(e)||R.isArrowFunctionExpression(e)}function Dp(e,t){let n=e.functions.get(t)??e.functions.get("default");return n?e.functionVariables.get(n):void 0}async function Lp(e,t){let n=await $p(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return Ec(n,r,t.fileCache)}function Bp(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function $p(e,t,n){return Tt(t)?hn(e,t,n):null}function ji(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 qk(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 kc from"@babel/parser";import vc from"@babel/traverse";import*as z from"@babel/types";import{classifySiteEditPropertyName as eI}from"@vcp-dev/contracts";var Ic=typeof vc=="function"?vc:vc.default;function Cc(e){let t=eI(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=kc.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=tI(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=nI(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)||!Xp(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=cI(e.element,e.propertyName),h=sI(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:aI(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 tI(e,t){let n=[];return Ic(e,{CallExpression(r){let o=jp(r.node);o&&Up(o.callback,t)&&n.push({...o,span:Vp(r.node)})},OptionalCallExpression(r){let o=jp(r.node);o&&Up(o.callback,t)&&n.push({...o,span:Vp(r.node)})}}),n.sort((r,o)=>r.span-o.span),n[0]??null}function jp(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 nI(e,t,n,r){let o=oo(t);if(o&&z.isArrayExpression(o))return{array:o,locator:{kind:"value",root:{kind:"expression",sourceRange:Hp(o)}},sourceFile:n};if(!z.isIdentifier(t))return null;let i=[];if(Ic(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 rI(e,t.name,n,r)}function rI(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=iI(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=kc.parse(c,{sourceType:"module",plugins:["typescript","jsx"]})}catch{return null}let u=oI(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 oI(e,t){let n=null;return Ic(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 iI(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)?Jp(e.typeAnnotation)?oo(e.expression):null:z.isTSSatisfiesExpression(e)?null:e}function Jp(e){return z.isTSTypeReference(e)&&z.isIdentifier(e.typeName)&&e.typeName.name==="const"}function Xp(e){return e.properties.every(t=>!z.isObjectProperty(t)||t.computed||!z.isExpression(t.value)?!1:Vi(t.value))}function Vi(e){if(z.isTSAsExpression(e)&&Jp(e.typeAnnotation))return Vi(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:Vi(n));if(z.isObjectExpression(e))return Xp(e);let t=At(e);return t.status==="resolved"||t.status==="undefined"}function sI(e,t){let n=e.properties.filter(o=>z.isObjectProperty(o)&&zp(o.key)===t);if(n.length>1)return null;let r=n[0];return r?z.isExpression(r.value)?Vi(r.value)?"static":z.isIdentifier(r.value)||z.isMemberExpression(r.value)?"binding":null:null:"missing"}function aI(e,t){let n=e.properties.filter(o=>z.isObjectProperty(o)&&zp(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 cI(e,t){let n=e.attributes?.filter(r=>r.name===t)??[];return n.length===1?n[0]:void 0}function zp(e){return z.isIdentifier(e)?e.name:z.isStringLiteral(e)?e.value:z.isNumericLiteral(e)?String(e.value):null}function Hp(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 Vp(e){return e.start==null||e.end==null?Number.MAX_SAFE_INTEGER:e.end-e.start}function Up(e,t){let n=Hp(e);return Kp(n.startLine,n.startColumn,t.startLine,t.startColumn)<=0&&Kp(n.endLine,n.endColumn,t.endLine,t.endColumn)>=0}function Kp(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 WI}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 Rc from"@babel/traverse";import*as q from"@babel/types";function Ui(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 Wp(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 Gp(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 qp=typeof Rc=="function"?Rc:Rc.default,Yp=new WeakMap;function em(e){try{return Qp.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Ki(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=em(n);return e.set(t,{source:n,ast:o}),o}function Ji(e,t){let n=null,r=-1;for(let o of io(e).expressions){let i=o.node.loc;if(!i||!Nc(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s>=r&&(n=o,r=s)}return n}function tm(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of io(e).expressions){if(!lI(o.node.loc,t))continue;let i=(o.node.end??0)-(o.node.start??0);i<=r&&(n=o,r=i)}return n}function wc(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of io(e).jsxElements){let i=o.node.loc;if(!i||!Nc(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=Yp.get(e);if(t)return t;let n={expressions:[],jsxElements:[]};return qp(e,{Expression(r){n.expressions.push(r)},JSXElement(r){n.jsxElements.push(r)}}),Yp.set(e,n),n}function lI(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 Nc(e,t){let n=Zp({line:e.start.line,column:e.start.column},{line:t.startLine,column:t.startColumn}),r=Zp({line:e.end.line,column:e.end.column},{line:t.endLine,column:t.endColumn});return n>=0&&r<=0}function Xi(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 Zp(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 Pc(e,t);let n=Wp(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function Pc(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(Pc(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function nm(e,t,n,r){let o=null,i=Number.POSITIVE_INFINITY;for(let s of io(e).expressions){if(Pc(s.node,t)!==n)continue;let a=s.node.loc;if(!a||!Nc(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(qp(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=em(o),s={source:o,ast:i};return n.set(e,s),s}function uI(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 dI(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 fI(e,t){let n=dI(e.path);if(!n)return null;let r=Yn(e,t);return r?{...n,...r}:null}function pI(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}function Ac(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 Tc(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 rm(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=uI(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=fI(d.binding,d.sourceInfo);if(!g||!d.graph)return null;let h=[...d.graph.elements.values()].filter(A=>pI(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 Ac(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 Ac(A,{componentName:g.componentName,propName:g.propName,file:S.sourceFile});let C=ff(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=nm(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?Ac(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=wc(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=Xi(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=wc(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?Tc(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?Tc(_.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=Tc(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 _c(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()||!mI(s,r)?null:{callPath:s,basePath:i}}function mI(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 sm(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:Ei(r,t)}function om(e,t){return e?J.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}function im(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=Fc(i,t,n,r,o);return typeof s=="number"?s:void 0}function Fc(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=Ui(e,t);if(i)return Qe(r,i);let s=Ui(e,n);return s?Qe(o,s):void 0}if(J.isBinaryExpression(e)&&e.operator==="-"){let i=J.isExpression(e.left)?Fc(e.left,t,n,r,o):void 0,s=J.isExpression(e.right)?Fc(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function gI(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 hI(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=Ui(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 am(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 cm(e){return e.some(t=>t.kind==="dynamic")}function yI(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}function lm(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 xI(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 um(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=Xi(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=xI(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=tm(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=gI(I);if(!P)return null;let A=[],C=[],T=[];for(let[_,L]of k.value.entries()){let G=hI(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=om(I,0),A=om(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(im(I,w.name,P.name,T.value,_.value)===void 0)return null;return C.sort((T,_)=>{let L=im(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=_c(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 yI(_)});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:bI,evaluateStaticExpression:zi}=Gp({resolveBindingTarget:e=>$c(e)}),{resolveRepeatCollectionTarget:SI,resolveCollectionCallTarget:EI,resolveDynamicMemberPathMap:vI}=um({resolveBindingTarget:e=>$c(e),evaluateStaticExpression:zi,buildExpressionSourceInfo:jt,resolveSourceInfoProvenance:yt}),{resolveExportValue:kI,resolveComponentPropBinding:II,resolveBindingTarget:$c}=rm({resolveExternalExpression:Vc,resolveCollectionCallTarget:EI,evaluateStaticExpression:zi,resolveSourceInfoProvenance:yt,buildExpressionSourceInfo:jt});function xm(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}function dm(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 bm(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=Ki(s,t,n);if(!a)return null;let c=Ji(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 Xc({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?Dc(m,sr(c.node,n)):null}let u=new Set,f=await zI({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?Dc(f,l.expression):null}async function cr(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=Ki(i,t,n);if(!s)return null;let a=e.sourceRange?Ji(s,e.sourceRange):e.expression!==void 0?so(s,n,e.expression):null;if(!a)return null;let c=zc(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 HI({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 Dc(f,e.expression??sr(c.node,n))}async function jc(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=Ki(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"?CI({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}):RI({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 bI(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 Dc(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 CI(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=Ji(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 fm(t,o.value);let m=await Xc({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"?ym(t,m):Bc(t,sr(l.node,n),m):wI({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=Lc(l.node);if(m)return ot(m.code,m.message);let d=l.scope.getBinding(u.base);if(d?.path.isVariableDeclarator()){let g=Lc(d.path.node.init);if(g)return ot(g.code,g.message)}return d?.path.isVariableDeclarator()&&H.isCallExpression(d.path.node.init)?NI("unsupported-expression",Im(d.path.node.init,e.functionCallContracts)):ot("unsupported-expression",`Unable to resolve provenance for expression "${u.expression}"`)}return f.kind==="external"?ym(t,f):Bc(t,u.expression,f)}async function RI(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=Bc(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 fm(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 wI(e){let t=await Em(e);if(t.length===0)return ot("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(PI(e.expression))return Sm(t);if(km(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 NI(e,t){return Sm([{code:e,message:t}])}function Sm(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function PI(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 Em(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=Lc(t);if(l)return[l];if(H.isCallExpression(t))return[{code:"unsupported-expression",message:Im(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 zi(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 Oc(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 Oc(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 Oc(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 Lc(e){return km(e)?pm("i18n helpers require a static message id string"):OI(e)?pm("CMS helpers require static entry id and field path string arguments"):null}async function Oc(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await Em({...t,expression:o}));return r}function AI(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:[TI(e.sourceType)]}}async function Vc(e){for(let n of BI){if(!mm(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return hm(gm(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(!mm(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return hm(gm(r),e.externalAdapters)}return null}function TI(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function FI(e){return{code:"external-source-readonly",message:e}}function pm(e){return{code:"unsupported-expression",message:e}}function Uc(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 mm(e,t){if(!t||t.length===0)return!0;let n=Uc(e.node);return n?t.includes(n):!1}function gm(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:lo(e.diagnostics??[])}:{match:e,diagnostics:[]}}function hm(e,t){let n=AI(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 _I(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 OI(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 vm(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 km(e){return vm(e)===null}async function MI(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 DI(e){let t=vm(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await MI(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function LI(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 zi(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:[FI("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var BI=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>_I(e)},{helperNames:["apiField"],resolve:e=>LI(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>DI({currentFile:e,expressionPath:t,exists:n})}];function Kc(e){return{...e,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Derived display values are readonly because no identity-preserving write target exists"}]}}function ym(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 Bc(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=XI(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 $I=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function Jc(e,t){let n=[...$I,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function Im(e,t){let n=e.callee;return H.isIdentifier(n)&&Jc(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 Xc(e){let t=await Vc(e);if(t)return t;let n=await Cm({...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 KI(e)}async function Cm(e){let t=await kt({...e,allowComposed:!1});if(t?.kind!=="source")return null;let n=zc(e.expressionPath);return n.isIdentifier()||n.isMemberExpression()?t.provenance:Kc(t.provenance)}async function kt(e){let t=zc(e.expressionPath),n=UI(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 Mc(s,a,c)}if(t.isCallExpression())return jI({...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 Mc(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 Mc(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 zc(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 jI(e){let t=Uc(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 Mc(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!VI(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function VI(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 UI(e,t){return t.start==null||t.end==null?null:`safe-derived:${e}:${t.start}:${t.end}`}async function KI(e){if(!e.expressionPath.isCallExpression())return null;let t=Uc(e.expressionPath.node);if(!t)return null;let n=Jc(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 Rm({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?Kc(i):null}async function Rm(e){let t=await Vc({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 Xc({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 JI(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=Jc(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 Rm({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?Kc(a):null}function XI(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 zI(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=_c(e.expressionPath,t.base);if(n){let l=await SI({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=sm(n.callPath,[...n.basePath,...t.path]);return Kr(h)?dm(e.currentFile,h.sourceId,h.displayPath):null}let u=lm(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 kI({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=uf(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 Cm({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 II({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 JI({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=bi(r,t.path);if(Kr(s))return dm(e.currentFile,s.sourceId,s.displayPath);let a=await $c({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 HI(e){let t=am(e.expressionPath.node);if(!t||!cm(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 vI({...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 wm(e){let t=WI(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 YI(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`}):GI(e,s.attribute)}async function GI(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 YI(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:ZI(r,e.propertyName)}}function ZI(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 Nm(e){let{key:t,element:n,graph:r,provenances:o}=e,i=qI(t,n,r),s=i?.tag??(Tn(n.tag)?n.tag:n.componentName),a=i?.identity.key??Pm(n,r)??t,c=nC(i),l=rC(t,n,r,o,i),u=QI(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:tC(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:u,impactScope:oC(u),alternativeStrategies:iC(u)}}function QI(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return Hc(e,n)?"instance":!Tn(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function Pm(e,t){if(Tn(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&eC(r,e.componentName));return n.length!==1?null:n[0].identity.key}function qI(e,t,n){if(Tn(t.tag))return t;let r=Hc(e,n);if(r)return r;let o=Pm(t,n);return o?n.elements.get(o)??null:null}function eC(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function tC(e,t){return Tn(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function nC(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 rC(e,t,n,r,o){let i=new Set,s=Hc(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 Hc(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 oC(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function iC(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}function Fm(e){let t=e.isRepeat??(e.graph?mC(e.element,e.graph):!1),n=e.propertyProvenance??new Map,r=e.repeatTargets??new Map,o=pC(e.element.attributes??[]),i=[...r.values()].some(u=>u.ok),s=o.map(u=>sC({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:gC(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 sC(e){let{attribute:t,provenance:n,repeatTarget:r}=e,o=e.selectionRef?.instanceIndex!==void 0&&r?.ok===!0?r:null,i=aC(t,n,e.isRepeat),s=["selection","template"].map(S=>({scope:S,result:Ni({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=cC(t,n,l,e.isRepeat),f=c?dC(c,e.element,t.name):void 0,m=s.filter(({result:S})=>S.ok).map(({scope:S})=>S),d=m.length>0?uC(n,o,e.element):"unsupported",g=o?"repeat-item":e.isRepeat?"repeat-template":"node",h=fC(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 aC(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 cC(e,t,n,r){return n?Am(n.selectedResolution):t?.status==="blocked"?{status:"unresolved"}:r&&t?.status==="binding"?{status:"unresolved"}:Am(lC(e))}function lC(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 Am(e){return!e||e.status==="unresolved"?{status:"unresolved"}:e.status==="undefined"?{status:"undefined"}:{status:"resolved",value:e.value}}function uC(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 dC(e,t,n){return e.kind==="repeat-property"?{kind:"value-path",file:e.target.sourceFile,isProxy:e.target.sourceFile!==t.sourceFile,displayPath:Tm({...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:Tm(e.locator)}:{kind:"jsx-node",file:t.sourceFile,isProxy:!1,displayPath:t.componentName+" > "+n}}function fC(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 pC(e){let t=new Set;return e.filter(n=>t.has(n.name)?!1:(t.add(n.name),!0))}function mC(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 Tm(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 gC(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 hC(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var yC=160;function _m(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 Om(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=$m(m.textSegments,s),S=jm(e,t,m,g,h),E=h?SC(h):void 0,k=EC(i,h),I=m.textSegments.map(C=>({index:C.index,value:C.value,editable:Vm(C,g,s?.get(C.index)??null),source:o.get(C.index)??null})),w=Lm(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:Dm(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 Mm(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=$m(l.textSegments,i);return{composition:c,key:e,tag:l.tag,componentName:l.componentName,sourceFile:l.sourceFile,sourceLocator:Dm(l),label:l.tag,capabilities:jm(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:Vm(d,f,i?.get(d.index)??null),source:g?{kind:g.kind}:null}}),boundaryKind:l.boundaryKind,isOpaque:l.isOpaque,ancestors:Lm(l,t)}}function Dm(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:xC(e.sourceRange),structuralPath:e.identity.structuralPath,...bC(e.textSegments)}}function Lm(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 xC(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function bC(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,yC)}:{}}function Bm(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 $m(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function jm(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&&Um(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 Vm(e,t,n){return!e.editable||!t.canUpdateText?!1:n?Um(n.editMode):!0}function Um(e){return e==="direct"||e==="proxy"||e==="upstream"}function SC(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 EC(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}:hC(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 Wc=["set-class-name-source","apply-style-draft"];function Km(e){let t=e.attributes?.find(n=>n.name==="className");if(!t)return{kind:"class-name-source",className:"",sourceKind:"missing",editable:!0,operationBoundary:Wc,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:Wc,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:Wc}}function Jm(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}),Xm(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function Xm(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}),Xm(s,t,n,r,o))}}import zm from"node:path";function Yc(){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 Wm(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=CC(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 Hi(e){let t=()=>vC(e);return e.mutex?e.mutex.runExclusive(t):t()}async function vC(e){let t=await Wm(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=kC(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 Gc({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 Gc({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 Gc({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 Hm("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return Hm("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 kC(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 Gc(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:IC(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 Hm(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function IC(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 CC(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)||zm.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=zm.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 RC=50,wC=8*1024*1024;function Qm(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??RC),s=Math.max(0,t.maxUndoBytes??wC);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=Zm(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=Zm(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(", ")}: ${Ym(G)}`,rolledBack:!1,instanceConflict:Gm(G)};let ve=Gm(G);return{ok:!1,reason:`${ve?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${Ym(G)}`,rolledBack:!0,instanceConflict:ve}}return{ok:!0,snapshots:C.map(NC)}}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 Gm(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function NC(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 Ym(e){return e instanceof Error?e.message:String(e)}function Zm(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(Bo({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(Jo({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(Xo({source:t,locator:e.locator,index:e.index}));case"move-array-item":return ze(zo({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(Vo({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 PC(e,t);case"set-property-changes":return ze(Uo({source:t,locator:e.locator,changes:e.changes}));case"set-property-binding":return ze(Ko({source:t,locator:e.locator,name:e.name,object:e.object,property:e.property}));case"upsert-object-property":return ze(Wo({source:t,objectLocator:e.locator,name:e.name,value:e.value}));default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function PC(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!Bu(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:Lu({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 Wi,SiteEditCompositionContextSchema as AC,SiteEditCompositionSelectorSchema as TC}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 qm(e,t){throw new He("INVALID_COMPOSITION",e,{value:t})}function Gi(e){let t=AC.safeParse(e);return t.success?t.data:qm("Invalid SiteEditCompositionContext.",e)}function eg(e){let t=[],n=new Map,r=new Map;for(let l of e.compositions){let u=Gi(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=Wi(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=Gi(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=Wi(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=TC.safeParse(l);if(!u.success)return qm("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=Gi(l),f=Wi(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=Gi(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=Wi(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 FC,stripSiteEditRepeatInstanceKeys as tg}from"@vcp-dev/contracts";function ng(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=tg(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 Yi(e){return e?.map(t=>({...t}))}function Zc(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=Yi(e.collectionPathMap?.[t])??Yi(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:Yi(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>Yi(o)??[])}}function rg(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)=>FC(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 OC(k))I.length<=g.length||MC(I,g)&&h.add(I[g.length])}}return h.size>0?h.size:_C(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 og(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function ig(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((tg(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function OC(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 MC(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 sg(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 ag(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 cg(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function DC(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var uo=class extends Error{constructor(t){let n=t.map(cg);super(DC(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function lg(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(cg)}:{routeId:e,message:n}}function Qc(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function qc(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 ug(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function el(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 dg(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 JC=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,XC=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],fg=32,pg=256;function zC(e){return{expectedIndexDigest:e.digest,publishedIndexDigest:e.digest,publishedCursor:e.cursor,publishedCurrentId:e.currentId}}var mg={maxEntries:50,maxBytes:8*1024*1024};function HC(){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 Yo(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 WC(){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>mg.maxEntries||GC(e)>mg.maxBytes;)e.shift()}}function GC(e){return e.reduce((t,n)=>t+YC(n),0)}function YC(e){return gg(e.preSnapshots)+gg(e.postSnapshots)+ZC(e.provenance)}function ZC(e){return e?new TextEncoder().encode(JSON.stringify(e)).byteLength:0}function gg(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function hg(e,t){return{key:BC(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 yg(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 qC=/\.(?:[cm]?[jt]sx?)$/i,eR=/\.json$/i,tR=/\.(?:css|scss|sass)$/i,nR=/\.mdx$/i,rR=/\.ya?ml$/i;function oR(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 iR(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function sR(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=vg(await e.listFiles(r)),i=new Map(o.files.map(a=>[a.path,a]));for(let[a,c]of n)if(aR(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 aR(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function vg(e){return Array.isArray(e)?{files:e}:e}function cR(e){if(!jC(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!==UC||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=$C(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(qC.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(eR.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(tR.test(e.path)){let t=xg({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(nR.test(e.path)){let t=xg({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(rR.test(e.path))try{KC(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`YAML parse failed: ${Ge(t)}`,details:{path:e.path}}}return{ok:!0}}function xg({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(`
|
|
8
8
|
`,f);if(g===-1){l=!0;break}f=g,l=!0;continue}if(c){l=m===`
|
|
9
9
|
`||m==="\r";continue}if(s){m==="*"&&d==="/"&&(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
|
|
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
|
|
14
|
-
`||m==="\r"}if(s)return pr(t,`Unterminated block comment in ${t}.`);if(o)return pr(t,`Unterminated string literal in ${t}.`);if(c)return pr(t,`Unterminated MDX code fence in ${t}.`);let u=r.at(-1);return u?pr(t,`Unclosed token "${u.char}" in ${t}.`):{ok:!0}}function pr(e,t){return{ok:!1,errorCode:"ast-error",message:t,details:{path:e}}}function fo(e){let t="idle",n=e.fileSystem??JC(),r=Lu(),o=Zm({compositions:e.compositions,initialDocumentVersions:e.initialDocumentVersions}),i=new Map,s=new Map,a=new Set,c=null,l=e.history??(e.historyStore?ed(e.historyStore):XC()),u=Gm(n,{externalAdapters:e.externalAdapters}),f=new Map,m=new Set,d=0,g=e.historyStore?.recoveryRequired??!1,h=Gc(),S=N();function E(p){return(Yi.isAbsolute(p)?Yi.relative(e.projectRoot,p):p).replace(/\\/g,"/").replace(/^\.\//,"")}function v(p,y){let x=Yi.posix.dirname(p),k=y.replace(/\.(?:tsx?|jsx?)$/i,""),w=Yi.posix.relative(x,k);return w.startsWith(".")?w:`./${w}`}function C(p,y){return p.startLine===y.startLine&&p.startColumn===y.startColumn&&p.endLine===y.endLine&&p.endColumn===y.endColumn}async function N(){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 F=>await n.exists(F.path)?Se(await n.readFile(F.path)):null));if(cg({journal:y,index:x,observedFileDigests:k})!=="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 A(){return t==="disposed"}e.onEvent&&r.subscribe(e.onEvent);for(let p of o.entries){let y=pg(p.context,p.entryFile);i.set(p.key,y),P(y,y.dependencyFiles)}function P(p,y){let x=new Set(y);I(p),p.dependencyFiles=x;for(let k of p.dependencyFiles){let w=s.get(k);w||(w=new Set,s.set(k,w)),w.add(p.key)}}function I(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 k of s.get(x)??[])y.add(k);return y}function M(p){for(let y of p)if(!s.has(y))return!1;return!0}async function L(p,y,x,k,w){let F=new Map,O=gm(w.values()),B=new Map,D=typeof n.exists=="function"?U=>n.exists(U):async()=>!1;for(let[U,W]of p.elements){let be=y.nodes.get(U);if(!be)continue;let ae=x.get(W.sourceFile)??k.get(W.sourceFile),Ie=new Map,Pe=new Map,we=new Map,Ce=[];for(let oe of W.textSegments){if(!ae){Ie.set(oe.index,null);continue}let yt=await hm({file:W.sourceFile,source:ae,segment:oe,readFile:Ze=>n.readFile(Ze),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:Ze,adapterId:dn,capabilities:gs})=>({sourceType:Ze,adapterId:dn,capabilities:gs})),functionCallContracts:e.functionCallContracts,fileCache:O}),Ve=await $c({file:W.sourceFile,source:ae,target:{kind:"text-segment",segment:oe},readFile:Ze=>n.readFile(Ze),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:Ze,adapterId:dn,capabilities:gs})=>({sourceType:Ze,adapterId:dn,capabilities:gs})),functionCallContracts:e.functionCallContracts,fileCache:O}),We=tR(yt);Ie.set(oe.index,We),Pe.set(oe.index,yt),we.set(oe.index,Ve),Ce.push({editable:oe.editable,source:We})}let _=new Map,K=new Map;if(ae)for(let oe of W.attributes??[]){let yt=await dr({file:W.sourceFile,source:ae,sourceRange:oe.sourceRange,expression:oe.source?.expression??oe.value,sourceInfo:oe.source,readFile:We=>n.readFile(We),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:We,adapterId:Ze,capabilities:dn})=>({sourceType:We,adapterId:Ze,capabilities:dn})),functionCallContracts:e.functionCallContracts,fileCache:O}),Ve=await Im({element:W,file:W.sourceFile,source:ae,propertyName:oe.name,readFile:We=>n.readFile(We),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:We,adapterId:Ze,capabilities:dn})=>({sourceType:We,adapterId:Ze,capabilities:dn})),functionCallContracts:e.functionCallContracts,fileCache:O});K.set(oe.name,Ve),_.set(oe.name,yt)}let ee=Mm(nR(be.writeTarget),Ce),de=Cm({key:U,element:W,graph:p,provenances:we}),he=jm(W),lt=ae?await bp({element:W,graph:p,file:W.sourceFile,source:ae,readFile:oe=>n.readFile(oe),exists:D,fileCache:B}):void 0,Ct=p.regions.find(oe=>oe.kind==="conditional-region"&&oe.childKeys.includes(U)),un,jn=Ct?.sourceCandidates?.[0];if(ae&&Ct&&jn?.kind==="conditional-branch"){let oe=await $c({file:W.sourceFile,source:ae,target:{kind:"conditional-branch",candidate:jn},readFile:Ve=>n.readFile(Ve),exists:D,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:Ve,adapterId:We,capabilities:Ze})=>({sourceType:Ve,adapterId:We,capabilities:Ze})),functionCallContracts:e.functionCallContracts,fileCache:O});un={currentBranch:Ct.childKeys.indexOf(U)<=0?"then":"else",availableBranches:Ct.childKeys.length>1?["then","else"]:["then"],conditionExpression:jn.conditionExpression,provenance:{finalSource:oe.finalSource?{kind:oe.finalSource.kind,file:oe.finalSource.file,displayPath:oe.finalSource.displayPath}:null,chain:oe.chain.map(Ve=>({kind:Ve.kind,file:Ve.file,displayName:Ve.displayName,canEditHere:Ve.canEditHere})),confidence:oe.confidence,editMode:oe.editMode,diagnostics:oe.diagnostics.map(Ve=>({code:Ve.code,message:Ve.message}))}}}F.set(U,{textSources:Ie,textTargets:Pe,elementPropertyTargets:_,propertyProvenances:K,isRepeat:yR(U,p),provenances:we,writeTarget:ee,componentSemantic:de,styleSource:he,conditional:un,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 k of y.values())x=Math.max(x,k);return Math.max(x,p.graph?.version??0)}function ke(p){return i.get(p)?.graph?.version??o.initialVersions.get(p)??0}function Y(p){try{return ke(o.resolveSelector(p.composition).key)}catch{return 0}}async function ue(p,y,x={}){let k=i.get(p);if(!k)return null;let w=x.sourceCache??Qc(f,[]),F=await Te(k.entryFile),{graph:O,allSources:B,diagnostics:D,parsedModules:U,entryModule:W}=await Wu(k.entryFile,y,oe=>n.readFile(oe),typeof n.exists=="function"?oe=>n.exists(oe):async()=>!1,{additionalEntries:F,version:k.graph?.version??1});if(D.length>0)throw new lo(D);let be=new Map;for(let oe of B.keys())be.set(oe,G(oe));let ae=Math.max(ne(k,be),x.minimumVersion??0);x.changed&&ae<=(k.graph?.version??0)&&(ae=(k.graph?.version??0)+1),O.version=ae;for(let[oe,yt]of B)qc(w,oe,yt,ug);let Ie=await zt(k.composition,k.entryFile,B,w);O.routeId=k.routeId,O.composition=k.composition;let Pe=Vm(O),we=Fu(Pe,O),Ce=await L(O,Pe,B,w,U),_=new Map;for(let[oe,yt]of Ce){let Ve=we.get(oe),We=O.elements.get(oe);if(!Ve?.canMove||!We||yt.isRepeat)continue;Pn({file:We.sourceFile},yt.textTargets.get(0)??null,yt.provenances.get(0)??null)&&_.set(oe,!1)}let K=Jg(O,we,Ce),ee=Kg(Ce),de=eg(Am(O,Pe,we,{canUpdateTextByKey:K,canMoveByKey:_,dynamicDataSummaryByKey:ee}),O,Ce),he=Ld({route:k.routeId,composition:k.composition,entryFile:k.entryFile,version:ae,source:y,ast:W?.ast}),lt=Bd(he);he.ok&&aR(de,O,he.projection);let Ct={...de,composition:k.composition,...Ie?{styleContext:Ie}:{},pageComposition:lt},un=new Set([k.entryFile,...B.keys()]);if(Ie){un.add(Ie.entryCss.path);for(let oe of Ie.stylesheets)un.add(oe.path)}let jn={...k,dependencyFiles:un,graph:O,topology:Pe,capabilities:we,document:Ct,pageComposition:lt,pageCompositionProjection:he.projection,pagePlacementByKey:he.ok?he.projection.placementByKey:null,pagePlacementUnitByKey:he.ok?he.projection.placementUnitByKey:null,pageUnitByKey:he.ok?he.projection.unitByKey:null,pagePlacementsByUnitKey:he.ok?he.projection.placementsByUnitKey:null,documentIndex:qm(Ct),detailProjections:Ce,fileVersions:be,styleContext:Ie};if(x.publish===!1)return jn;fr(f,w);for(let oe of w.keys())m.delete(oe);return P(k,un),Object.assign(k,jn),k}async function Te(p){let y=[];for(let x of dR(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 w=[];for(let[U,W]of x){if(tl(U)){w.push(U);continue}for(let be of pR(W)){let ae=xg(U,be);ae&&w.push(ae)}}if(!w.length){for(let U of fR(y))if(await Cl(U)){w.push(U);break}}let F=new Map,O=hR(w).slice(0,lg);for(;O.length>0&&F.size<lg;){let U=O.shift();if(F.has(U)||!tl(U))continue;let W=await Ht(U,k);if(W!==null){F.set(U,{path:U,content:W});for(let be of mR(W)){let ae=xg(U,be);ae&&!F.has(ae)&&!O.includes(ae)&&O.push(ae)}}}let B=[...F.values()].map(U=>({...U,hash:Se(U.content)})),D=B[0];return D?{composition:p,revision:Se(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 Cl(p))return null;let k=await n.readFile(p);return qc(y,p,k,ug),k}async function Cl(p){return typeof n.exists=="function"?n.exists(p):!1}function Kg(p){let y=new Map;for(let[x,k]of p)k.dynamicData?.bindings.length&&y.set(x,Ap(k.dynamicData.bindings));return y}function Jg(p,y,x){let k=new Map;for(let[w,F]of p.elements){if(!y.get(w)?.canUpdateText){k.set(w,!1);continue}let B=x.get(w),D=F.textSegments.some(U=>{if(!U.editable)return!1;let W=B?.provenances.get(U.index)??null;return!W||Xg(W)});k.set(w,D)}return k}function Xg(p){return p.editMode==="direct"||p.editMode==="proxy"||p.editMode==="upstream"}async function Eo(p,y={}){let x=[...new Set(p)],k=y.affectedCompositionKeys!==void 0,w=k?new Set(y.affectedCompositionKeys):T(x);if(!k&&(w.size===0||!M(x)))for(let D of i.values())Rl(D,x)&&w.add(D.key);let F=!k&&w.size===0&&x.some(yg),O=y.publish===!1?Qc(f,x):void 0,B={rebuiltRoutes:[],failedRoutes:[],...y.publish===!1?{candidateRouteStates:[],candidateSourceCache:O}:{}};for(let D of i.values())if(!(y.excludedCompositionKeys?.has(D.key)||!(w.has(D.key)||F)))try{let W=!!D.graph,be=await n.readFile(D.entryFile),ae=await ue(D.key,be,{...y,...O?{sourceCache:O}:{}});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({...sg(D.routeId,W),composition:D.composition})}return B}function Dn(p){let y=[...new Set(p)],x=T(y);if(x.size>0&&M(y))return[...x];for(let k of i.values())Rl(k,y)&&x.add(k.key);return[...x]}function zg(p){let y=new Set(Dn(p));return o.entries.filter(x=>y.has(x.key)).map(x=>x.context)}function Hg(p){return[...new Set(Dn(p))].sort((x,k)=>x<k?-1:x>k?1:0).map(x=>o.getByKey(x)?.context).filter(x=>x!==void 0)}function Wg(p,y){let x=new Set(Dn(y)),k=p.provenance?.affectedCompositions??[];if(k.length===0)return x;if([...new Set(k.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 Gg(p,y){let x=p.composition??p.provenance?.initiatingComposition;if(x){let F=o.resolveContext(x);return{context:F.context,key:F.key}}let k=[...new Set(Dn(y))];if(k.length!==1)throw new Error(`Legacy history entry cannot be attributed to a unique composition (affected composition count: ${k.length}).`);let w=o.getByKey(k[0]);if(!w)throw new Error("Legacy history entry references an unknown affected composition.");return{context:w.context,key:w.key}}function ls(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 Rl(p,y){return y.some(x=>p.dependencyFiles.has(x)||p.entryFile===x||p.graph?.fileIndex.has(x))}function wl(p){for(let y of p)a.add(y);c||A()||(c=(async()=>{t="building";let y=!1;try{for(;a.size>0;){if(A())return;await Yg();let x=[...a];a.clear();let k=await Nl(x);if(k.length===0)continue;let w=Dn(k);for(let B of w){let D=i.get(B)?.composition;D&&r.emit({type:"graph-invalidated",composition:D})}let{rebuiltRoutes:F,failedRoutes:O}=await Eo(k,{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 O)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&&wl([])}})())}async function Yg(){for(;d>0;)await new Promise(p=>setTimeout(p,0))}async function Nl(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(w){if(!sR(w))try{if(await n.exists(x))continue}catch{continue}m.add(x),y.push(x)}}return y}function Pl(p){ag(f,p);for(let y of p)y.exists===!1?m.add(y.file):m.delete(y.file)}function Al(p){m.clear();for(let y of p)m.add(y)}async function Tl(p){let y=await Nl(p);if(y.length===0)return;let x=Dn(y);for(let F of x){let O=i.get(F)?.composition;O&&r.emit({type:"graph-invalidated",composition:O})}let{rebuiltRoutes:k,failedRoutes:w}=await Eo(y,{changed:!0});for(let{documentChanged:F,composition:O,version:B}of k)r.emit({type:"graph-ready",composition:O,version:B}),F&&r.emit({type:"document-changed",composition:O,version:B});for(let{composition:F,message:O}of w)r.emit({type:"graph-error",composition:F,message:O})}async function Zg(p,y){let x=$n(p,y);if(!x?.graph)return;let k=it(p)??p,w=x.graph.elements.get(k);w&&await Tl([w.sourceFile])}async function Fl(p){let y=new Set;if(p.target.kind==="node"){let x=$n(p.target.key,p.composition),k=it(p.target.key)??p.target.key,w=x?.graph?.elements.get(k);w&&y.add(w.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 w=$n(k,p.composition),F=it(k)??k,O=w?.graph?.elements.get(F);O&&y.add(O.sourceFile)}}await Tl(y)}async function Qg(p){if(p.params.kind!=="source-edit")return us(p,"invalid-params","source-edit requires source-edit params");for(let y of p.params.edits){let x=iR(y);if(!x.ok)return us(p,x.errorCode,x.message,x.details)}d+=1;try{let y=await rh(p.params.edits);if(!y.ok)return us(p,y.errorCode,y.message,y.details);await Fl(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 Bn({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 qg(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 ta({files:[...p.params.artifact.components.flatMap(k=>k.materialization.files.map(w=>({path:w.pathTemplate,content:w.content}))),...p.params.artifact.pages.flatMap(k=>k.materialization.files.map(w=>({path:w.pathTemplate,content:w.content})))],exists:k=>n.exists(k),readFile:k=>n.readFile(k)});if(!y.ok)return se(p,$.MATERIALIZATION_REJECTED,y.message);let x=await aa({artifact:p.params.artifact,exists:k=>n.exists(k)});return x.ok?await Bn({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 eh(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=bg(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:O})=>/\.(?:tsx?|jsx?)$/.test(O)),k=Object.fromEntries(await Promise.all(x.map(async({path:O})=>[O,await n.readFile(O)]))),w=af({expectedUrlPath:p.params.expectedUrlPath,files:k});if(!w.ok)return se(p,w.code==="HOME_PAGE_LOCKED"?$.HOME_PAGE_LOCKED:w.code==="ROUTE_NOT_FOUND"?$.ROUTE_NOT_FOUND:$.PLAN_FAILED,w.message);let F=await Promise.all(w.edits.map(async O=>({...O,baseContentHash:Se(await n.readFile(O.file))})));return Bn({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:w.deletedFiles,updated_files:w.updatedFiles,preserved_shared_files:w.preservedSharedFiles,warnings:w.warnings},historyPolicy:"none"})}catch(y){return se(p,$.INTERNAL_ERROR,Ge(y))}finally{d-=1}}async function th(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,k=y.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!k||k.status!=="supported")return se(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||k.documentVersion!==x.version)return se(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let w=p.params.node.kind==="component-call"?p.params.node.materialization:void 0;if(!w)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,O=await ta({files:w.files.map(D=>({path:D.pathTemplate,content:D.content})),exists:D=>n.exists(D),readFile:D=>n.readFile(D)});if(!O.ok)return se(p,$.MATERIALIZATION_REJECTED,O.message);let B=await Ed({manifest:w,generatedRoot:"components/site/generated",controlledFiles:w.files.map(D=>({pathTemplate:D.pathTemplate})),exists:D=>n.exists(D),commit:async D=>{let U=await n.readFile(y.entryFile),W=y.document,be=y.pageCompositionProjection;if(!W||W.pageComposition?.status!=="supported"||W.version!==p.documentVersion||!be||be.status!=="supported"||be.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,Ie=uh(D.instanceName),Pe,we=[];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=ma({routeId:y.routeId,entryFile:y.entryFile,currentDocumentVersion:W.version,expectedDocumentVersion:p.documentVersion,source:U,projection:be,placementKey:F.placementKey,component:{source:ae,exportName:D.entry.export.kind==="default"?"default":D.entry.export.name,localName:Ie}});if(!ee.ok)return{ok:!0,data:se(p,ms(ee.error.code),ee.error.message,{diagnostics:ee.error.diagnostics})};let de=ee.plan.rewriteStep,he;switch(de.kind){case"insert-root-expression":he=di({source:U,locator:de.locator,expectedSourceHash:de.sourceHash,action:{kind:"insert",jsx:de.node.jsx,placement:de.placement,replaceOriginal:de.replaceOriginal}});break;case"insert-child":he=Un({source:U,locator:de.parentLocator,node:de.node,placement:de.placement,...de.anchorLocator?{anchorLocator:de.anchorLocator}:{}});break;default:he={ok:!1,source:U,diagnostic:{code:"unsupported-syntax",message:`Unsupported route composition rewrite: ${String(de)}`}}}if(!he.ok)return{ok:!0,data:se(p,$.AST_PARSE_ERROR,he.diagnostic.message)};Pe=he.source}else{let ee=ga({routeId:y.routeId,composition:y.composition,entryFile:y.entryFile,currentDocumentVersion:W.version,expectedDocumentVersion:p.documentVersion,source:U,projection:be,placementUnitKey:p.target.placementUnitKey,operation:"replace-node"});if(!ee.ok)return{ok:!0,data:se(p,ms(ee.error.code),ee.error.message,{diagnostics:ee.error.diagnostics})};let de=ee.plan.rewriteStep,he;switch(de.kind){case"replace-root-expression":he=di({source:U,locator:de.locator,expectedSourceHash:de.sourceHash,action:{kind:"replace",jsx:`<${Ie} />`}});break;case"replace-node":he=Bo({source:U,locator:de.locator,node:{jsx:`<${Ie} />`}});break;default:he={ok:!1,source:U,diagnostic:{message:`Unsupported page-unit replacement rewrite: ${de.kind}`}}}if(!he.ok)return{ok:!0,data:se(p,$.AST_PARSE_ERROR,he.diagnostic.message)};let lt=await _l({routeState:y,placementUnitKey:p.target.placementUnitKey,source:U,mutatedSource:he.source});Pe=lt.source,we=await Promise.all(lt.files.map(async Ct=>({operation:"delete",file:Ct,baseContentHash:Se(await n.readFile(Ct))})))}let Ce=Xn({source:Pe,moduleSpecifier:v(y.entryFile,ae),imports:D.entry.export.kind==="default"?[{kind:"default",local:Ie}]:[{kind:"named",imported:D.entry.export.name,local:Ie}]});if(!Ce.ok)return{ok:!0,data:se(p,$.AST_PARSE_ERROR,Ce.diagnostic.message)};let _=D.files.map(ee=>({operation:"create-only",file:ee.path,content:ee.content})),K=[{operation:"upsert",file:y.entryFile,content:Ce.source,baseContentHash:Se(U)},..._,...we];d+=1;try{let ee=await Bn({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 nh(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,k=y.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!k||k.status!=="supported")return se(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||k.documentVersion!==x.version)return se(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let w=await n.readFile(y.entryFile),F=ga({routeId:y.routeId,composition:y.composition,entryFile:y.entryFile,currentDocumentVersion:x.version,expectedDocumentVersion:p.documentVersion,source:w,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(!F.ok)return se(p,ms(F.error.code),F.error.message,{diagnostics:F.error.diagnostics});let O=F.plan.rewriteStep,B;switch(O.kind){case"move-node":B=Kn({source:w,locator:O.locator,targetParentLocator:O.targetParentLocator,placement:O.placement,...O.anchorLocator?{anchorLocator:O.anchorLocator}:{}});break;case"remove-node":B=Vn({source:w,locator:O.locator});break;case"remove-root-expression":B=di({source:w,locator:O.locator,expectedSourceHash:O.sourceHash,action:{kind:"remove"}});break;default:B={ok:!1,source:w,diagnostic:{message:`Unsupported page-unit mutation rewrite: ${O.kind}`}}}if(!B.ok)return se(p,$.AST_PARSE_ERROR,B.diagnostic.message);let D=B.source,U=[];if(p.kind==="remove-node"){let be=await _l({routeState:y,placementUnitKey:p.target.placementUnitKey,source:w,mutatedSource:D});D=be.source,U=await Promise.all(be.files.map(async ae=>({operation:"delete",file:ae,baseContentHash:Se(await n.readFile(ae))})))}let W=[{operation:"upsert",file:y.entryFile,content:D,baseContentHash:Se(w)},...U];d+=1;try{return await Bn({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 _l(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 F=k.placementUnitByKey.get(p.placementUnitKey)?.sourceRange;if(!F)return y;let O=[...x.elements.values()].find(_=>_.sourceFile===p.routeState.entryFile&&_.importedFrom&&C(_.sourceRange,F));if(!O?.importedFrom||!O.exportName)return y;let B=E(O.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(_=>_.sourceFile===p.routeState.entryFile&&E(_.importedFrom??"")===B).length!==1)return y;let ae=await n.listFiles({maxFiles:5e3,maxDepth:32}),Ie=Array.isArray(ae)?ae:ae.files;if(!Array.isArray(ae)&&ae.truncated)return y;let Pe=Ie.map(({path:_})=>_).filter(_=>_===W||_.startsWith(`${W}/`));if(Pe.length===0||!Pe.includes(B))return y;for(let{path:_}of Ie)if(!(_===p.routeState.entryFile||_===W||_.startsWith(`${W}/`)))try{if((await n.readFile(_)).includes(U))return y}catch{return y}let we=v(p.routeState.entryFile,B),Ce=zn({source:p.mutatedSource,moduleSpecifier:we,imports:O.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:O.exportName}]});return Ce.ok?{source:Ce.source,files:Pe.sort((_,K)=>_.localeCompare(K))}:y}async function rh(p){if(n.getFileInfo){for(let w of p)if(await n.exists(w.path)&&await n.getFileInfo(w.path)===null)return{ok:!1,errorCode:"invalid-params",message:`Source edit path must resolve to a regular non-symbolic-link file: ${w.path}`,details:{path:w.path}}}for(let w of p){if(w.operation!=="upsert"||!/^(?:src\/)?app\/globals\.css$/i.test(w.path))continue;let F=await n.exists(w.path)?await vs(n,w.path):null;if(F?.ok){let O=OC(F.content,w.content);if(!O.ok)return{ok:!1,errorCode:"invalid-params",message:O.message,details:{path:w.path,code:O.code}}}}let y=oh(p);if(y.length===0)return{ok:!0};let x=rR(n,p),k=fo({projectRoot:e.projectRoot,fileSystem:x,compositions:[...i.values()].map(w=>({context:w.composition,entryFile:w.entryFile})),externalAdapters:e.externalAdapters,externalSourceResolvers:e.externalSourceResolvers,functionCallContracts:e.functionCallContracts,dev:e.dev});try{for(let w of y){let F=i.get(w)?.composition;if(!F)continue;let O={routeId:F.routeId,...F.effectiveTemplateId!==void 0?{templateId:F.effectiveTemplateId}:{}};await k.initializeComposition(O),k.getDocument(O)}}catch(w){return{ok:!1,errorCode:"ast-error",message:`Source edit preflight failed: ${Ge(w)}`,details:{compositionKeys:y}}}finally{k.dispose()}return{ok:!0}}function oh(p){return p.map(x=>x.path).some(yg)?[...i.keys()]:[]}function us(p,y,x,k){let w=uo(y);return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:Y(p),error:{code:w,message:x,...k?{details:k}:{}}}}async function ds(p){let y=[];for(let x of new Set(p))y.push(await ih(x));return y}async function ih(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:Se(x)}}async function Ol(p,y,x,k){if(!e.historyStore)return null;let w=new Map(y.map(B=>[B.file,B])),F=new Map(x.map(B=>[B.file,B])),O=[...new Set([...w.keys(),...F.keys()])].sort().map(B=>{let D=w.get(B),U=F.get(B);return{path:B,preDigest:D?.exists===!1||!D?null:Se(D.content),postDigest:U?.exists===!1||!U?null:Se(U.content)}});return{schemaVersion:2,transactionId:`${p}:${k.expectedIndexDigest}`,operationId:p,phase:"prepared",historyTransition:k,files:O}}async function Ml(p){return!p||!e.historyStore||await e.historyStore.writeTransactionJournal(p),p}async function Ln(p){p&&e.historyStore&&await e.historyStore.clearTransactionJournal(p.transactionId)}async function fs(p,y){let x=[];try{for(let k of p)await Dl(k),typeof n.bumpVersion=="function"&&n.bumpVersion(k.file),x.push(k.file)}catch(k){let w=await sh(y.filter(F=>x.includes(F.file)));return w.ok?{ok:!1,reason:`Writeback failed and committed files were restored: ${Ge(k)}`,rolledBack:!0}:{ok:!1,reason:`Writeback failed, then rollback failed for ${w.failedFiles.join(", ")}: ${Ge(k)}`,rolledBack:!1}}return{ok:!0,snapshots:p.map(ah)}}async function Dl(p){if(p.exists===!1){await n.deleteFile(p.file);return}await n.writeFile(p.file,p.content)}async function sh(p){let y=[];for(let x of p)try{await Dl(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 ah(p){let y=p.exists!==!1;return{file:p.file,content:y?p.content:"",version:p.version,exists:y,...y?{sha256:Se(p.content)}:{}}}async function Bn(p){return h.runExclusive(()=>ch(p))}async function ch(p){let y=p.filePlan.edits.map(_=>_.file),x=o.resolveSelector(p.request.composition),k=x.context,w=p.historyPolicy==="none"?void 0:{initiatingComposition:k,affectedCompositions:Hg(y)},F=await ds(y),O=new Map(F.filter(_=>_.exists!==!1).map(_=>[_.file,_.content])),B=Bl(),D=new Map(f),U=new Set(m),W=new Set([...i.values()].filter(_=>p.filePlan.edits.some(K=>K.operation==="delete"&&K.file===_.entryFile)).map(_=>_.key)),be=p.filePlan.edits.map(_=>_.operation==="delete"?{file:_.file,content:"",version:0,exists:!1}:{file:_.file,content:_.content,version:0,exists:!0,sha256:Se(_.content)}),ae={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})},Ie=null,Pe=!1,we=await zi({overlay:O,exists:_=>n.exists(_),plan:ae,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:F,postSnapshots:be,...p.selectionRef?{selectionRef:p.selectionRef}:{},...p.output?{output:p.output}:{},...w?{provenance:w}:{}}),K=_?.historyTransition?_.historyTransition:e.historyStore?KC(await e.historyStore.readIndex()):null;if(e.historyStore&&!K)throw new Error("Durable history did not provide an exact index transition.");return Ie=await Ol(p.request.id,F,be,K),Ie=await Ml(Ie),{history:_,historyTransition:K}},reverify:async()=>{},writeCandidate:async()=>{let _=await u.executeFilePlan(p.filePlan);if(!_.ok)throw new Zi(_);return{postSnapshots:await ds(_.affectedFiles),affectedFiles:_.affectedFiles,internalResultVersion:_.resultVersion}},validateCandidate:async({candidate:_,receipt:K})=>{let ee=await Eo(K.affectedFiles,{changed:!0,minimumVersion:K.internalResultVersion,publish:!1,excludedCompositionKeys:W});if(ee.failedRoutes.length>0)throw new On(ee.failedRoutes);let de=jl(B,ee.candidateRouteStates??[]),he=$l(de,x.key);return{..._,rebuild:ee,routeSnapshots:de,resultVersion:he,...mg(p.selectionRef,de.map(lt=>lt.state.document))?{selectionRef:mg(p.selectionRef,de.map(lt=>lt.state.document))}:{}}},publishCandidate:async({candidate:_,history:K,receipt:ee})=>{K?.history&&(await l.publishPrepared(K.history),Pe=!0);let de=_.resultVersion??ee.internalResultVersion;return{composition:k,requestId:p.request.id,kind:p.request.kind,target:p.request.target,ok:!0,resultVersion:de,affectedFiles:ee.affectedFiles,...p.output?{output:p.output}:{},..._.selectionRef?{selectionRef:_.selectionRef}:{}}},swapCandidate:({candidate:_,receipt:K})=>{_.routeSnapshots&&vo(_.routeSnapshots),_.rebuild?.candidateSourceCache&&fr(f,_.rebuild.candidateSourceCache),Pl(K.postSnapshots)},finalizeCandidate:async()=>{await Ln(Ie);for(let _ of W)i.delete(_)},emitCommitted:({candidate:_,published:K})=>{ls(K,_.rebuild??{rebuiltRoutes:[],failedRoutes:[]})},rollbackCandidate:async({history:_,receipt:K})=>{if(Pe)throw new Error("history was published before transaction finalization failed");if(K){let ee=await fs(F,K.postSnapshots);if(!ee.ok)throw new Error(ee.reason)}vo(B),fr(f,D),Al(U),_?.history&&await l.discardPrepared?.(_.history),await Ln(Ie)}});if(we.ok)return we.published;if(we.stage==="precheck"||we.stage==="build")try{await Ln(Ie)}catch(_){let K=await ko(Ge(_));return se(p.request,K,"Unable to clear an uncommitted transaction journal.")}if(we.recoveryRequired){let _=await ko(we.reason);return se(p.request,_===$.RECOVERY_PERSIST_FAILED?_:$.ROLLBACK_FAILED,we.reason)}let Ce=we.error;return Ce instanceof Zi?{...se(p.request,uo(Ce.result.errorCode),Ce.result.reason),...Ce.result.affectedFiles?{affectedFiles:Ce.result.affectedFiles}:{}}:Ce instanceof On?se(p.request,$.ROUTE_REBUILD_FAILED,`Route rebuild failed and source was rolled back: ${Zc(Ce.failedRoutes)}`,{failedRoutes:Ce.failedRoutes}):se(p.request,Ul(we.stage),Ge(Ce))}async function Ll(p){return h.runExclusive(async()=>{let y=p==="undo"?await l.prepareUndo():await l.prepareRedo();return y?lh(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 lh(p,y){let x=y.entry,k=p==="undo"?x.preSnapshots:x.postSnapshots,w=p==="undo"?x.postSnapshots:x.preSnapshots,F=k.map(K=>K.file),{context:O,key:B}=Gg(x,F),D=await ds(F),U=new Map(D.filter(K=>K.exists!==!1).map(K=>[K.file,K.content])),W=ke(B),be=Bl(),ae=new Map(f),Ie=new Set(m),Pe=null,we=!1,Ce,_=await zi({overlay:U,plan:{operationId:`${p}:${x.operationId}`,intents:k.map(K=>K.exists===!1?{kind:"delete",path:K.file}:{kind:"upsert",path:K.file,content:K.content})},buildCandidate:async()=>({}),prepareHistory:async()=>(Pe=await Ol(`${p}:${x.operationId}`,D,k,y.historyTransition),Pe=await Ml(Pe),y),reverify:async()=>{},writeCandidate:async()=>{let K=await fs(k,w);if(!K.ok)throw new Error(K.reason);return{snapshots:K.snapshots}},validateCandidate:async({candidate:K})=>{Ce=Wg(x,F);let ee=await Eo(F,{changed:!0,minimumVersion:W+1,publish:!1,affectedCompositionKeys:Ce});if(ee.failedRoutes.length>0)throw new On(ee.failedRoutes);let de=jl(be,ee.candidateRouteStates??[]),he=$l(de,B);return{...K,rebuild:ee,routeSnapshots:de,resultVersion:he}},publishCandidate:async({candidate:K,history:ee})=>{if(!ee)throw new Error("history cursor intent is missing");await l.publishPrepared(ee),we=!0;let de=K.resultVersion??W+1;return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!0,resultVersion:de,affectedFiles:F,...x.output?{output:x.output}:{}}},swapCandidate:({candidate:K,receipt:ee})=>{K.routeSnapshots&&vo(K.routeSnapshots),K.rebuild?.candidateSourceCache&&fr(f,K.rebuild.candidateSourceCache),Pl(ee.snapshots)},finalizeCandidate:async()=>{await Ln(Pe)},emitCommitted:({candidate:K,published:ee})=>ls(ee,K.rebuild??{rebuiltRoutes:[],failedRoutes:[]}),rollbackCandidate:async({history:K,receipt:ee})=>{if(we)throw new Error("history cursor was published before transaction finalization failed");if(ee){let de=await fs(w,ee.snapshots);if(!de.ok)throw new Error(de.reason)}vo(be),fr(f,ae),Al(Ie),K&&await l.discardPrepared?.(K),await Ln(Pe)}});if(_.ok)return _.published;if(_.stage==="precheck"||_.stage==="build")try{await Ln(Pe)}catch(K){let ee=await ko(Ge(K));return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:W,error:{code:ee,message:"Unable to clear an uncommitted transaction journal."}}}if(_.recoveryRequired){let K=await ko(_.reason);return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:W,affectedFiles:F,error:{code:K===$.RECOVERY_PERSIST_FAILED?K:$.ROLLBACK_FAILED,message:_.reason}}}return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:W,affectedFiles:F,error:{code:_.error instanceof On?$.ROUTE_REBUILD_FAILED:Ul(_.stage),message:Ge(_.error),..._.error instanceof On?{details:{failedRoutes:_.error.failedRoutes}}:{}}}}function Bl(){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 $l(p,y){return p.find(k=>k.key===y)?.state.graph?.version??o.initialVersions.get(y)??0}function jl(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 vo(p){for(let y of i.values())I(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),P(x,x.dependencyFiles)}}async function ps(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 $n(p,y){let x=i.get(o.resolveSelector(y).key)??null;return!x||!Vl(x,p)?null:x}function Vl(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,k){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,...k?{details:k}:{}}}}function Ul(p){return p==="validate"?$.ROUTE_REBUILD_FAILED:p==="publish"?$.HISTORY_COMMIT_FAILED:$.WRITE_IO_ERROR}async function ko(p){if(g=!0,!l.markRecoveryRequired)return $.RECOVERY_REQUIRED;try{return await l.markRecoveryRequired(p),$.RECOVERY_REQUIRED}catch{return $.RECOVERY_PERSIST_FAILED}}function uh(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 ms(p){return p==="VERSION_STALE"?$.VERSION_STALE:p==="CROSS_PAGE_MOVE_UNSUPPORTED"?$.CROSS_PAGE_MOVE_UNSUPPORTED:$.UNSUPPORTED_OPERATION}async function Kl(p){if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key)??null;return x?(x.graph||await ps(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 ps(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 ps(y.key),Vl(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}),k=i.get(x.key);if(k?.entryFile===y)return;k&&I(k);let w=pg(x.context,y);i.set(x.key,w),P(w,w.dependencyFiles),r.emit({type:"graph-invalidated",composition:x.context})},unregisterComposition(p){let y=o.resolveSelector(p),x=i.get(y.key);x&&(I(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 ue(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 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 k=$n(p,y),w=it(p)??p;if(k?.graph&&k.topology&&k.capabilities&&k.detailProjections){let F=k.detailProjections.get(w);if(F){let O=k.graph.elements.get(w);if(!O)throw new Error(`Key not found: ${p}`);let B=GC(p,w,x),D=new Map;if(F.isRepeat&&B?.instanceIndex!==void 0)for(let be of O.attributes??[])D.set(be.name,Ic({file:O.sourceFile,source:f.get(O.sourceFile)??"",element:O,propertyName:be.name,selectionRef:B,graph:k.graph,sources:f}));let U=Pm({element:O,graph:k.graph,source:f.get(O.sourceFile),documentVersion:k.graph.version,selectionRef:x,isRepeat:F.isRepeat,propertyProvenance:F.propertyProvenances,repeatTargets:D}),W=Fm(w,k.graph,k.topology,k.capabilities,F.textSources,F.provenances,F.dynamicData,U);return p===w?W:og(W,p,k.document??null,k.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getRenderDetail(p,y){let x=$n(p,y),k=it(p)??p;if(x?.graph&&x.topology&&x.capabilities&&x.detailProjections){let w=x.detailProjections.get(k);if(w){let F=Tm(k,x.graph,x.topology,x.capabilities,w.textSources,w.writeTarget,w.provenances,w.conditional,w.componentSemantic,w.styleSource,w.dynamicData);return p===k?F:rg(F,p,x.document??null,x.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getClassNameSource(p,y){let x=$n(p,y),k=it(p)??p;if(!x?.graph)throw new Error(`Key not found: ${p}`);let w=x.graph.elements.get(k);if(!w)throw new Error(`Key not found: ${p}`);let F=f.get(w.sourceFile);if(F===void 0)throw new Error(`Source not loaded: ${w.sourceFile}`);return Vs({key:k,route:{composition:x.composition,routeId:x.routeId,graph:x.graph,source:F}})},refreshSourceForKey:Zg,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 Qg(p);if(p.kind==="insert-page-resource")return qg(p);if(p.kind==="delete-page-source")return eh(p);let y=await Kl(p);if("ok"in y)return y;await Fl(p);let x=await Kl(p);if("ok"in x)return x;let k=x;if(p.target.kind==="page-unit"){let B=p;return p.kind==="insert-child"||p.kind==="replace-node"?th(B,k):p.kind==="move-node"||p.kind==="remove-node"?nh(B,k):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(!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: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 w=lR(k,k.graph,k.capabilities,f,i),F=await new Fi(w).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:uo(F.errorCode),message:F.reason}};let O=F.plan;if(O.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(O.steps.some(D=>D.type==="invoke-external-adapter")){let D=await u.execute(O);if(!D.ok)return se(p,uo(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 ls(U,{rebuiltRoutes:[],failedRoutes:[]}),U}let B=await u.prepareRewritePlan(O);return B.ok?await Bn({request:p,filePlan:B.filePlan,...B.selectionRef?{selectionRef:B.selectionRef}:{}}):se(p,uo(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:ke(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting undo."}};d+=1;try{return await Ll("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:ke(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting redo."}};d+=1;try{return await Ll("redo")}finally{d-=1}},notifyFileChanged(p){wl([p])},getAffectedCompositions(p){return zg(p)},subscribe(p){return r.subscribe(p)}}}function sR(e){return e instanceof Error&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function aR(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&&el(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&&el(m.sourceRange,n.container.sourceRange)&&l){u.pageCompositionUnitKey=l.placementUnitKey;continue}let h=n.placements.find(S=>S.members.some(E=>E.sourceRange!==null&&(el(m.sourceRange,E.sourceRange)||cR(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 el(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function cR(e,t){return hg(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&hg(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function hg(e,t,n,r){return e!==n?e-n:t-r}function lR(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:Vs({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 Yc(e.detailProjections?.get(m.baseKey)?.textTargets.get(f)??null,m.repeatIndex)},async getElementPropertyWriteTarget(u,f){let m=c(u);return Yc(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(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(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 Ic({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=BC(u);return f?{baseKey:f.baseKey,repeatIndex:ng(e.document??null,u,f.baseKey,e.documentIndex)??tg(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 uR={"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 uo(e){return uR[e]}function Ge(e){return e instanceof Error&&e.message?e.message:String(e)}function yg(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function dR(e){let t=Mn(e);if(!VC.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=>UC.map(a=>`${s}/${a}`))}function fR(e){let n=Mn(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function pR(e){return Sg(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function mR(e){return Sg(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function Sg(e,t){let n=[];for(let r of e.matchAll(t)){let o=Eg(r[1]??"");o&&n.push(o)}return n}function xg(e,t){let n=Eg(t);return!n||n.startsWith("tailwindcss")||n.startsWith("http:")||n.startsWith("https:")?null:n.startsWith("@/")?Mn(`src/${n.slice(2)}`):n.startsWith("./")||n.startsWith("../")?Mn(`${gR(e)}/${n}`):n.startsWith("/")?Mn(n.slice(1)):tl(n)?Mn(n):null}function Eg(e){return e.split(/[?#]/,1)[0]?.trim()??""}function tl(e){return/\.css$/i.test(e)}function gR(e){let t=Mn(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function hR(e){return Array.from(new Set(e))}function Mn(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 yR(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 Qi=class{constructor(t){this.options=t,this.fileSystem=new mr(t.files),this.engine=this.createEngine(this.fileSystem)}get status(){return this.engine.status}initializeComposition(t){return this.engine.initializeComposition(t)}getDocument(t){return Co(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 Ro(r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n))}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(t){return Po(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}getSourceFile(t){return Ao(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}resolveSourceLocation(t){return To(t,this.engine.getRenderDetail(t.key,t.composition))}async planOperation(t){let n=bR.safeParse(t);if(!n.success)return{result:Io(t,n.error.issues.map(i=>i.message))};let r=new mr(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:fn(i)},a=r.getChangedFiles();if(a.length===0)return{result:s};let c=SR.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:a.map(l=>ER(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 fo({projectRoot:"/snapshot",fileSystem:t,compositions:this.options.compositions,onEvent:r&&this.options.onEvent?o=>{let i=wo(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 ER(e,t){return e.after===void 0?{path:e.path,operation:"delete",...t||e.before===void 0?{}:{expectedHash:Se(e.before)}}:{path:e.path,operation:e.before===void 0?"create":"update",...t||e.before===void 0?{}:{expectedHash:Se(e.before)},fullContent:e.after}}function vR(e){return new Qi(e)}import{SiteEditOperationRequestSchema as CR}from"@vcp-dev/contracts";import kt from"node:fs/promises";import Ye from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as kR,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as IR}from"@vcp-dev/contracts";var qi=class{constructor(t){this.options=t,this.fileSystem=this.createFileSystem(),this.engine=fo({...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 Po(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.engine.getCompositionEntryFiles()})}getSourceFile(t){return Ao(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.engine.getCompositionEntryFiles()})}resolveSourceLocation(t){return To(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 kt.readFile(Ye.join(n,r),"utf8")},async readFileBytes(r){return kt.readFile(Ye.join(n,r))},async getFileInfo(r){let o=Ye.join(n,...r.split("/"));try{let i=await kt.lstat(o);return!i.isFile()||i.isSymbolicLink()?null:{path:r,sizeBytes:i.size}}catch{return null}},async writeFile(r,o){await Go(Ye.join(n,r),o)},async createExclusive(r,o){let i=Ye.join(n,r);await kt.mkdir(Ye.dirname(i),{recursive:!0});let s=await kt.open(i,"wx");try{await s.writeFile(o,"utf8")}catch(a){throw await s.close(),await kt.rm(i,{force:!0}),a}await s.close()},async deleteFile(r){await kt.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 kt.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 kt.access(Ye.join(n,r)),!0}catch{return!1}},async listFiles(r={}){let o=r.roots??[...IR,...kR],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 kt.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 kt.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 nl(e){return new qi(e)}var es=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=nl({projectRoot:t.projectRoot,fileSystem:t.fileSystem,compositions:t.compositions,onEvent:n=>{let r=wo(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:Co(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:Ro(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=CR.safeParse(r);if(!o.success)return Io(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:fn(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:fn(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:fn(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 RR(e){return new es(e)}import{createHash as wR,randomUUID as ml}from"node:crypto";import Ae from"node:fs/promises";import Fe from"node:path";var ht=1,ol=1,NR=2,PR="index.json",AR="recovery.json",TR="transaction-journal.json",FR="document-version.json",ns={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 Tg(e,t={}){let n=zR(e),r=GR(t.limits),o=rl(n),i=HR(n),s=await et(i),a=await et(o)||s;a||(await BR(n),await $R(n)),a||await YR(n);let c=await st(n),l=new Set(a?(await as(n)).map(f=>f.stageId):[]);a||await po(n,c.entryIds);let u=async()=>{if(await et(o)||s)throw new te(Q.RECOVERY_PENDING,"history store requires explicit recovery before accepting writes")};return{rootDir:n,recoveryRequired:a,async readDocumentVersion(){return Pg(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 Pg(n);await mo(Bg(n),{schemaVersion:1,version:Math.max(m,f)})},async stageAppend(f,m={}){await u();let d=await kg(f,r),g={schemaVersion:ol,stageId:ml(),entryId:d.entryId,blobIds:d.blobs.map(h=>h.digest)};try{await Ig(n,d),await MR(n,g,m.durableManifest!==!1)}catch(h){try{await Rg(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(),cl(f);let m=await sl(n,f);m&&await Rg(n,m)},async previewStagedAppend(f,m){return await u(),(await vg(n,r,f,m)).transition},async previewCursor(f,m){await u();let d=await st(n);return ll(d,m),il(f,d.entryIds.length),Fg(d,d.entryIds,f)},async publishStagedAppend(f,m,d){if(await u(),rs(f,"entryId"),d){cl(d);let h=await sl(n,d);if(!h||h.entryId!==f)throw new te(Q.INVALID_SCHEMA,"history stage does not match the published entry")}let g=await vg(n,r,f,m);return Ng({rootDir:n,previousDigest:g.current.digest,entryIds:g.entryIds,cursor:g.cursor,afterWrite:async()=>{d?await os(n,d):await LR(n,f),await po(n,g.entryIds)}})},async append(f){await u();let m=await st(n),d=await kg(f,r),g=[...m.entryIds];m.cursor<g.length-1&&g.splice(m.cursor+1),g.push(d.entryId);try{await Ig(n,d);let h=await _g(n,g,r);return await hl(n,h.entryIds,h.cursor),await po(n,h.entryIds),st(n)}catch(h){throw await po(n,m.entryIds),h}},async readEntry(f){return rs(f,"entryId"),ho(n,f)},async readBlob(f){rs(f,"blobId");let m=await Il(n,f),d=await cn(m,Q.NOT_FOUND,"blob");return yl(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 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 u();let d=await st(n);return ll(d,m),il(f,d.entryIds.length),Ng({rootDir:n,previousDigest:d.digest,entryIds:d.entryIds,cursor:f})},async markRecoveryRequired(f){await et(o)||await mo(rl(n),{schemaVersion:ht,reason:WR(f),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await Ae.rm(rl(n),{force:!0})},async readTransactionJournal(){return await et(i)?ts(i):null},async writeTransactionJournal(f){await u(),$g(f);try{await mo(i,f)}catch(d){let g=await ts(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 ts(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 et(i)?await ts(i):null;if(m&&m.transactionId!==f)throw new te(Q.INVALID_SCHEMA,"transaction journal changed concurrently");try{await Ae.rm(i,{force:!0})}catch(d){if(!await et(i))return;throw d}if(await et(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 os(n,m),l.delete(m);await jR(n);let f=await st(n);await po(n,f.entryIds)}}}async function vg(e,t,n,r){rs(n,"entryId");let o=await st(e);ll(o,r);let i=await ho(e,n),s=[...o.entryIds];o.cursor<s.length-1&&s.splice(o.cursor+1),s.push(i.id);let a=await _g(e,s,t);return{current:o,entryIds:a.entryIds,cursor:a.cursor,transition:Fg(o,a.entryIds,a.cursor)}}function Fg(e,t,n){return il(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:_R(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function _R(e,t){return ln(at({schemaVersion:ht,entryIds:e,cursor:t}))}function il(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new te(Q.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function OR(e){if(!It(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 kg(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=XR(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:ht,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 Ig(e,t){let n=Sl(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Cg(El(e,a.digest),a.bytes,{kind:"blob",digest:a.digest},kl(e,a.digest))),Cg(n,at(r),{kind:"entry",digest:t.entryId},vl(e,t.entryId))],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Cg(e,t,n,r){let o=await fl(e)??(r?await fl(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 Dg(e,t)}async function _g(e,t,n){let r=[...t],o=r.length-1;for(;;){if((await Mg(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 MR(e,t,n){gl(t);let r=bl(e,t.stageId);if(n){await mo(r,t);return}await JR(r,t)}async function sl(e,t){let n=await fl(bl(e,t));if(n===null)return null;let r=yo(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=gl(r);if(o.stageId!==t)throw new te(Q.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function as(e){let t=[];for(let n of await ss(xl(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);cl(r);let o=await sl(e,r);o&&t.push(o)}return t}async function Rg(e,t){gl(t);let n=await st(e),r=(await as(e)).filter(s=>s.stageId!==t.stageId),o=new Set(n.entryIds),i=new Set;for(let s of n.entryIds){let a=await ho(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 wg(Sl(e,t.entryId),vl(e,t.entryId));for(let s of t.blobIds)i.has(s)||await wg(El(e,s),kl(e,s));await os(e,t.stageId),await pl(xo(e)),await pl(bo(e))}async function os(e,t){await al(bl(e,t)),await DR(e)}async function DR(e){try{await Ae.rmdir(xl(e))}catch(t){if(So(t)||It(t)&&t.code==="ENOTEMPTY")return;throw t}}async function LR(e,t){for(let n of await as(e))n.entryId===t&&await os(e,n.stageId)}async function al(e){if(await Ae.rm(e,{force:!0}),await et(e))throw new te(Q.INDEX_CORRUPT,`unable to remove staged history object: ${e}`)}async function wg(e,t){await al(e),await al(t)}function gl(e){if(!It(e)||e.schemaVersion!==ol||typeof e.stageId!="string"||!Og(e.stageId)||!ct(e.entryId))throw new te(Q.INVALID_SCHEMA,"history stage schema is invalid");let t=Lg(e.blobIds,"history stage blobIds");return{schemaVersion:ol,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function cl(e){if(!Og(e))throw new te(Q.INVALID_PATH,"history stageId must be a UUID")}function Og(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 po(e,t){let n=new Set(t),r=new Set;for(let c of t){let l=await ho(e,c);for(let u of l.blobs)r.add(u.digest)}for(let c of await as(e)){n.add(c.entryId);for(let l of c.blobIds)r.add(l)}let o=xo(e),i=await ss(o);for(let c of i){if(!c.endsWith(".json"))continue;let l=Ag(c.slice(0,-5));l&&!n.has(l)&&await is(Fe.join(o,c))}let s=bo(e),a=await ss(s);for(let c of a){let l=Ag(c);l&&!r.has(l)&&await is(Fe.join(s,c))}}async function st(e){let t=cs(e),n=await cn(t,Q.NOT_FOUND,"index"),r=yo(Buffer.from(n).toString("utf8"),"index"),o=VR(r),i=[...o.entryIds],{totalBytes:s}=await Mg(e,i),a=i.slice(0,o.cursor+1).reverse(),c=i.slice(o.cursor+1);return{schemaVersion:ht,digest:o.digest,entryIds:i,cursor:o.cursor,currentId:i[o.cursor]??null,undoIds:a,redoIds:c,totalBytes:s}}async function Mg(e,t){let n=0,r=new Set,o=cs(e),i=await cn(o,Q.NOT_FOUND,"index");n+=i.byteLength;for(let s of t){let a=await ho(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 Il(e,u.digest),m=await cn(f,Q.NOT_FOUND,"blob");yl(m,u.digest,f),n+=m.byteLength}}return{totalBytes:n}}async function ho(e,t){let n=await jg(e,t),r=await cn(n,Q.NOT_FOUND,"entry"),o=yo(Buffer.from(r).toString("utf8"),`entry ${t}`),i=UR(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 Il(e,a.digest),l=await cn(c,Q.NOT_FOUND,"blob");yl(l,a.digest,c)}return i}async function hl(e,t,n){let r={schemaVersion:ht,digest:ln(at({schemaVersion:ht,entryIds:t,cursor:n})),entryIds:t,cursor:n};await mo(cs(e),r)}function ll(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 Ng(e){let t=ln(at({schemaVersion:ht,entryIds:e.entryIds,cursor:e.cursor}));try{return await hl(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 BR(e){await Ae.mkdir(e,{recursive:!0}),await Ae.mkdir(xo(e),{recursive:!0}),await Ae.mkdir(bo(e),{recursive:!0}),await Ae.mkdir(go(e),{recursive:!0})}async function $R(e){await Ae.rm(go(e),{recursive:!0,force:!0}),await Ae.mkdir(go(e),{recursive:!0})}async function jR(e){let t=go(e);await Ae.mkdir(t,{recursive:!0});for(let n of await ss(t))n!=="stages"&&await Ae.rm(Fe.join(t,n),{recursive:!0,force:!0})}function VR(e){if(!It(e))throw new te(Q.INDEX_CORRUPT,"index.json must be an object");if(e.schemaVersion!==ht)throw new te(Q.INVALID_SCHEMA,`unsupported index schemaVersion: ${String(e.schemaVersion)}`);let t=Lg(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:ht,entryIds:t,cursor:r}));if(o!==i)throw new te(Q.INDEX_CORRUPT,"index digest mismatch");return{schemaVersion:ht,digest:o,entryIds:t,cursor:r}}function UR(e){if(!It(e))throw new te(Q.ENTRY_CORRUPT,"entry must be an object");if(e.schemaVersion!==ht)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=dl(e.manifest,"entry.manifest"),o=KR(e.blobs);return{id:t,schemaVersion:ht,kind:n,manifest:r,blobs:o}}function KR(e){if(!Array.isArray(e))throw new te(Q.ENTRY_CORRUPT,"entry blobs must be an array");return e.map((t,n)=>{if(!It(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 mo(e,t){await Dg(e,at(t))}async function JR(e,t){let n=Fe.dirname(e),r=Fe.basename(e),o=Fe.join(n,`.${r}.${process.pid}.${ml()}.tmp`);await Ae.mkdir(n,{recursive:!0});try{await Ae.writeFile(o,at(t),{flag:"wx"}),await Ae.rename(o,e)}finally{await is(o)}}async function Dg(e,t){let n=Fe.dirname(e),r=Fe.basename(e),o=Fe.join(n,`.${r}.${process.pid}.${ml()}.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 pl(n)}finally{await is(o)}}function at(e){return Buffer.from(JSON.stringify(ul(e)),"utf8")}function ul(e){if(Array.isArray(e))return e.map(t=>ul(t));if(It(e)){let t={};for(let n of Object.keys(e).sort())t[n]=ul(e[n]);return t}return e}function yo(e,t){try{return JSON.parse(e)}catch(n){throw new te(Q.INVALID_JSON,`${t} is not valid JSON`,{cause:n})}}function dl(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=>dl(n,t));if(It(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=dl(o,t);return n}break}throw new te(Q.INVALID_JSON,`${t} must be JSON-serializable`)}function Lg(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 rs(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:${wR("sha256").update(e).digest("hex")}`}function XR(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 te(t,`${n} not found: ${e}`,{cause:r})}}async function fl(e){try{return await Ae.readFile(e)}catch(t){if(So(t))return null;throw t}}function yl(e,t,n){if(ln(e)!==t)throw new te(Q.BLOB_CORRUPT,`blob hash mismatch for ${n}`)}async function et(e){try{return await Ae.access(e),!0}catch(t){if(So(t))return!1;throw t}}async function is(e){try{await Ae.rm(e,{force:!0,recursive:!0})}catch{}}async function pl(e){try{let t=await Ae.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function ss(e){try{return await Ae.readdir(e)}catch(t){if(So(t))return[];throw t}}function zR(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 Fe.resolve(e)}function cs(e){return Fe.join(e,PR)}function rl(e){return Fe.join(e,AR)}function HR(e){return Fe.join(e,TR)}function Bg(e){return Fe.join(e,FR)}async function Pg(e){try{let t=await Ae.readFile(Bg(e),"utf8"),n=yo(t,"document version");if(!It(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(So(t))return 0;throw t}}async function ts(e){let t=await cn(e,Q.RECOVERY_PENDING,"transaction journal"),n=yo(Buffer.from(t).toString("utf8"),"transaction journal");return $g(n),n}function $g(e){if(!It(e)||e.schemaVersion!==NR||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!OR(e.historyTransition)||!Array.isArray(e.files))throw new te(Q.INVALID_SCHEMA,"transaction journal schema is invalid");for(let t of e.files)if(!It(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 WR(e){return e.replace(/[\r\n]+/g," ").slice(0,512)}function xo(e){return Fe.join(e,"entries")}function bo(e){return Fe.join(e,"blobs")}function go(e){return Fe.join(e,"tmp")}function xl(e){return Fe.join(go(e),"stages")}function bl(e,t){return Fe.join(xl(e),`${t}.json`)}function Sl(e,t){return Fe.join(xo(e),`${Ug(t)}.json`)}function El(e,t){return Fe.join(bo(e),Ug(t))}function vl(e,t){return Fe.join(xo(e),`${t}.json`)}function kl(e,t){return Fe.join(bo(e),t)}async function jg(e,t){return Vg(Sl(e,t),vl(e,t))}async function Il(e,t){return Vg(El(e,t),kl(e,t))}async function Vg(e,t){return await et(e)?e:await et(t)?t:e}function Ug(e){return e.slice(7)}function Ag(e){let t=e.startsWith("sha256:")?e:`sha256:${e}`;return ct(t)?t:null}function It(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function So(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function GR(e){return{maxEntries:e?.maxEntries??ns.maxEntries,maxSessionBytes:e?.maxSessionBytes??ns.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??ns.maxEntryBytes}}async function YR(e){let t=cs(e);await et(t)||await hl(e,[],-1)}export{te as FileHistoryStoreError,Mr as PageTemplateManagedSourceError,es as PreviewFileSystemSiteEditEngineRuntime,sd as SITE_EDIT_RAW_COLOR_LITERAL_RE,Qi as SnapshotSiteEditEngineRuntime,Gd as computeManagedPageTemplatePaths,RR as createPreviewSiteEditEngineRuntime,vR as createSiteEditEngineRuntime,zd as decodePageTemplateKey,Na as encodePageTemplateId,Yd as isManagedPageTemplateSourcePath,Tg as openFileHistoryStore,kE as resolveManagedPageTemplateComposition,mi as scanManagedPageTemplateCandidates,Qd as scanSiteEditCompositionsFromFiles,Pr as scanSiteEditThemeStyleViolations};
|
|
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??HC(),r=$u(),o=eg({compositions:e.compositions,initialDocumentVersions:e.initialDocumentVersions}),i=new Map,s=new Map,a=new Set,c=null,l=e.history??(e.historyStore?nd(e.historyStore):WC()),u=Qm(n,{externalAdapters:e.externalAdapters}),f=new Map,m=new Set,d=0,g=e.historyStore?.recoveryRequired??!1,h=Yc(),S=w();function E(p){return(Zi.isAbsolute(p)?Zi.relative(e.projectRoot,p):p).replace(/\\/g,"/").replace(/^\.\//,"")}function k(p,y){let x=Zi.posix.dirname(p),v=y.replace(/\.(?:tsx?|jsx?)$/i,""),N=Zi.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(dg({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=hg(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=xm(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 bm({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:hs})=>({sourceType:et,adapterId:un,capabilities:hs})),functionCallContracts:e.functionCallContracts,fileCache:M}),We=await jc({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:hs})=>({sourceType:et,adapterId:un,capabilities:hs})),functionCallContracts:e.functionCallContracts,fileCache:M}),dt=oR(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 wm({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=Bm(iR(ye.writeTarget),Ce),re=Nm({key:U,element:W,graph:p,provenances:Ne}),Fe=Km(W),lt=ae?await vp({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 jc({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:SR(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??qc(f,[]),F=await Ae(v.entryFile),{graph:M,allSources:B,diagnostics:D,parsedModules:U,entryModule:W}=await Yu(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)el(N,Je,xe,pg);let ke=await zt(v.composition,v.entryFile,B,N);M.routeId=v.routeId,M.composition=v.composition;let we=Jm(M),Ne=Ou(we,M),Ce=await L(M,we,B,N,U),O=Hg(M,Ne,Ce),K=zg(Ce),ee=rg(_m(M,we,Ne,{canUpdateTextByKey:O,dynamicDataSummaryByKey:K}),M,Ce),re=$d({route:v.routeId,composition:v.composition,entryFile:v.entryFile,version:ae,source:y,ast:W?.ast}),Fe=jd(re);re.ok&&uR(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:ng(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 mR(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(nl(U)){N.push(U);continue}for(let ye of hR(W)){let ae=Eg(U,ye);ae&&N.push(ae)}}if(!N.length){for(let U of gR(y))if(await Rl(U)){N.push(U);break}}let F=new Map,M=bR(N).slice(0,fg);for(;M.length>0&&F.size<fg;){let U=M.shift();if(F.has(U)||!nl(U))continue;let W=await Ht(U,v);if(W!==null){F.set(U,{path:U,content:W});for(let ye of yR(W)){let ae=Eg(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 Rl(p))return null;let v=await n.readFile(p);return el(y,p,v,pg),v}async function Rl(p){return typeof n.exists=="function"?n.exists(p):!1}function zg(p){let y=new Map;for(let[x,v]of p)v.dynamicData?.bindings.length&&y.set(x,_p(v.dynamicData.bindings));return y}function Hg(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||Wg(W)});v.set(N,D)}return v}function Wg(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())wl(D,x)&&N.add(D.key);let F=!v&&N.size===0&&x.some(Sg),M=y.publish===!1?qc(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({...lg(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())wl(v,y)&&x.add(v.key);return[...x]}function Gg(p){let y=new Set(On(p));return o.entries.filter(x=>y.has(x.key)).map(x=>x.context)}function Yg(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 Zg(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 us(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 wl(p,y){return y.some(x=>p.dependencyFiles.has(x)||p.entryFile===x||p.graph?.fileIndex.has(x))}function Nl(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 qg();let x=[...a];a.clear();let v=await Pl(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&&Nl([])}})())}async function qg(){for(;d>0;)await new Promise(p=>setTimeout(p,0))}async function Pl(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(!lR(N))try{if(await n.exists(x))continue}catch{continue}m.add(x),y.push(x)}}return y}function Al(p){ug(f,p);for(let y of p)y.exists===!1?m.add(y.file):m.delete(y.file)}function Tl(p){m.clear();for(let y of p)m.add(y)}async function Fl(p){let y=await Pl(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 eh(p,y){let x=Ln(p,y);if(!x?.graph)return;let v=it(p)??p,N=x.graph.elements.get(v);N&&await Fl([N.sourceFile])}async function _l(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 Fl(y)}async function th(p){if(p.params.kind!=="source-edit")return ds(p,"invalid-params","source-edit requires source-edit params");for(let y of p.params.edits){let x=cR(y);if(!x.ok)return ds(p,x.errorCode,x.message,x.details)}d+=1;try{let y=await sh(p.params.edits);if(!y.ok)return ds(p,y.errorCode,y.message,y.details);await _l(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 nh(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 na({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 ca({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 rh(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=vg(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=lf({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 oh(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 na({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 kd({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=ph(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=ga({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,gs(ee.error.code),ee.error.message,{diagnostics:ee.error.diagnostics})};let re=ee.plan.rewriteStep,Fe;switch(re.kind){case"insert-root-expression":Fe=fi({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=ha({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,gs(ee.error.code),ee.error.message,{diagnostics:ee.error.diagnostics})};let re=ee.plan.rewriteStep,Fe;switch(re.kind){case"replace-root-expression":Fe=fi({source:U,locator:re.locator,expectedSourceHash:re.sourceHash,action:{kind:"replace",jsx:`<${ke} />`}});break;case"replace-node":Fe=$o({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 Ol({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 ih(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=ha({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,gs(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=fi({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 Ol({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 Ol(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 sh(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 ks(n,N.path):null;if(F?.ok){let M=LC(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=ah(p);if(y.length===0)return{ok:!0};let x=sR(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 ah(p){return p.map(x=>x.path).some(Sg)?[...i.keys()]:[]}function ds(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 fs(p){let y=[];for(let x of new Set(p))y.push(await ch(x));return y}async function ch(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 Ml(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 Dl(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 ps(p,y){let x=[];try{for(let v of p)await Ll(v),typeof n.bumpVersion=="function"&&n.bumpVersion(v.file),x.push(v.file)}catch(v){let N=await lh(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(uh)}}async function Ll(p){if(p.exists===!1){await n.deleteFile(p.file);return}await n.writeFile(p.file,p.content)}async function lh(p){let y=[];for(let x of p)try{await Ll(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 uh(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(()=>dh(p))}async function dh(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:Yg(y)},F=await fs(y),M=new Map(F.filter(O=>O.exists!==!1).map(O=>[O.file,O.content])),B=$l(),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 Hi({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?zC(await e.historyStore.readIndex()):null;if(e.historyStore&&!K)throw new Error("Durable history did not provide an exact index transition.");return ke=await Ml(p.request.id,F,ye,K),ke=await Dl(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 fs(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=Vl(B,ee.candidateRouteStates??[]),Fe=jl(re,x.key);return{...O,rebuild:ee,routeSnapshots:re,resultVersion:Fe,...yg(p.selectionRef,re.map(lt=>lt.state.document))?{selectionRef:yg(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),Al(K.postSnapshots)},finalizeCandidate:async()=>{await Mn(ke);for(let O of W)i.delete(O)},emitCommitted:({candidate:O,published:K})=>{us(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 ps(F,K.postSnapshots);if(!ee.ok)throw new Error(ee.reason)}ko(B),lr(f,D),Tl(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,Kl(Ne.stage),Ge(Ce))}async function Bl(p){return h.runExclusive(async()=>{let y=p==="undo"?await l.prepareUndo():await l.prepareRedo();return y?fh(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 fh(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 fs(F),U=new Map(D.filter(K=>K.exists!==!1).map(K=>[K.file,K.content])),W=ve(B),ye=$l(),ae=new Map(f),ke=new Set(m),we=null,Ne=!1,Ce,O=await Hi({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 Ml(`${p}:${x.operationId}`,D,v,y.historyTransition),we=await Dl(we),y),reverify:async()=>{},writeCandidate:async()=>{let K=await ps(v,N);if(!K.ok)throw new Error(K.reason);return{snapshots:K.snapshots}},validateCandidate:async({candidate:K})=>{Ce=Zg(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=Vl(ye,ee.candidateRouteStates??[]),Fe=jl(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),Al(ee.snapshots)},finalizeCandidate:async()=>{await Mn(we)},emitCommitted:({candidate:K,published:ee})=>us(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 ps(N,ee.snapshots);if(!re.ok)throw new Error(re.reason)}ko(ye),lr(f,ae),Tl(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:Kl(O.stage),message:Ge(O.error),...O.error instanceof Fn?{details:{failedRoutes:O.error.failedRoutes}}:{}}}}function $l(){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 jl(p,y){return p.find(v=>v.key===y)?.state.graph?.version??o.initialVersions.get(y)??0}function Vl(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 ms(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||!Ul(x,p)?null:x}function Ul(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 Kl(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 ph(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 gs(p){return p==="VERSION_STALE"?$.VERSION_STALE:p==="CROSS_PAGE_MOVE_UNSUPPORTED"?$.CROSS_PAGE_MOVE_UNSUPPORTED:$.UNSUPPORTED_OPERATION}async function Jl(p){if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key)??null;return x?(x.graph||await ms(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 ms(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 ms(y.key),Ul(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=hg(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,Cc({file:M.sourceFile,source:f.get(M.sourceFile)??"",element:M,propertyName:ye.name,selectionRef:B,graph:v.graph,sources:f}));let U=Fm({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=Mm(N,v.graph,v.topology,v.capabilities,F.textSources,F.provenances,F.dynamicData,U);return p===N?W:ag(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=Om(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:sg(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 Us({key:v,route:{composition:x.composition,routeId:x.routeId,graph:x.graph,source:F}})},refreshSourceForKey:eh,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 th(p);if(p.kind==="insert-page-resource")return nh(p);if(p.kind==="delete-page-source")return rh(p);let y=await Jl(p);if("ok"in y)return y;await _l(p);let x=await Jl(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"?oh(B,v):p.kind==="move-node"||p.kind==="remove-node"?ih(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=fR(v,v.graph,v.capabilities,f,i),F=await new _i(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 us(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 Bl("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 Bl("redo")}finally{d-=1}},notifyFileChanged(p){Nl([p])},getAffectedCompositions(p){return Gg(p)},subscribe(p){return r.subscribe(p)}}}function lR(e){return e instanceof Error&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function uR(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&&tl(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&&tl(m.sourceRange,n.container.sourceRange)&&l){u.pageCompositionUnitKey=l.placementUnitKey;continue}let h=n.placements.find(S=>S.members.some(E=>E.sourceRange!==null&&(tl(m.sourceRange,E.sourceRange)||dR(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 tl(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function dR(e,t){return bg(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&bg(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function bg(e,t,n,r){return e!==n?e-n:t-r}function fR(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:Us({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 Zc(e.detailProjections?.get(m.baseKey)?.textTargets.get(f)??null,m.repeatIndex)},async getElementPropertyWriteTarget(u,f){let m=c(u);return Zc(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 Cc({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=VC(u);return f?{baseKey:f.baseKey,repeatIndex:ig(e.document??null,u,f.baseKey,e.documentIndex)??og(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 pR={"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 pR[e]}function Ge(e){return e instanceof Error&&e.message?e.message:String(e)}function Sg(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function mR(e){let t=_n(e);if(!JC.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=>XC.map(a=>`${s}/${a}`))}function gR(e){let n=_n(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function hR(e){return kg(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function yR(e){return kg(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function kg(e,t){let n=[];for(let r of e.matchAll(t)){let o=Ig(r[1]??"");o&&n.push(o)}return n}function Eg(e,t){let n=Ig(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(`${xR(e)}/${n}`):n.startsWith("/")?_n(n.slice(1)):nl(n)?_n(n):null}function Ig(e){return e.split(/[?#]/,1)[0]?.trim()??""}function nl(e){return/\.css$/i.test(e)}function xR(e){let t=_n(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function bR(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 SR(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 qi=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=vR.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=kR.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:a.map(l=>IR(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 IR(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 CR(e){return new qi(e)}import{SiteEditOperationRequestSchema as NR}from"@vcp-dev/contracts";import It from"node:fs/promises";import Ye from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as RR,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as wR}from"@vcp-dev/contracts";var es=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 Yo(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??[...wR,...RR],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 rl(e){return new es(e)}var ts=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=rl({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=NR.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 PR(e){return new ts(e)}import{createHash as AR,randomUUID as gl}from"node:crypto";import Pe from"node:fs/promises";import Te from"node:path";var xt=1,il=1,TR=2,FR="index.json",_R="recovery.json",OR="transaction-journal.json",MR="document-version.json",rs={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 Og(e,t={}){let n=GR(e),r=QR(t.limits),o=ol(n),i=YR(n),s=await qe(i),a=await qe(o)||s;a||(await VR(n),await UR(n)),a||await qR(n);let c=await st(n),l=new Set(a?(await cs(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 Fg(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 Fg(n);await go(Vg(n),{schemaVersion:1,version:Math.max(m,f)})},async stageAppend(f,m={}){await u();let d=await Rg(f,r),g={schemaVersion:il,stageId:gl(),entryId:d.entryId,blobIds:d.blobs.map(h=>h.digest)};try{await wg(n,d),await BR(n,g,m.durableManifest!==!1)}catch(h){try{await Pg(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(),ll(f);let m=await al(n,f);m&&await Pg(n,m)},async previewStagedAppend(f,m){return await u(),(await Cg(n,r,f,m)).transition},async previewCursor(f,m){await u();let d=await st(n);return ul(d,m),sl(f,d.entryIds.length),Mg(d,d.entryIds,f)},async publishStagedAppend(f,m,d){if(await u(),os(f,"entryId"),d){ll(d);let h=await al(n,d);if(!h||h.entryId!==f)throw new te(Q.INVALID_SCHEMA,"history stage does not match the published entry")}let g=await Cg(n,r,f,m);return Tg({rootDir:n,previousDigest:g.current.digest,entryIds:g.entryIds,cursor:g.cursor,afterWrite:async()=>{d?await is(n,d):await jR(n,f),await mo(n,g.entryIds)}})},async append(f){await u();let m=await st(n),d=await Rg(f,r),g=[...m.entryIds];m.cursor<g.length-1&&g.splice(m.cursor+1),g.push(d.entryId);try{await wg(n,d);let h=await Dg(n,g,r);return await yl(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 os(f,"entryId"),yo(n,f)},async readBlob(f){os(f,"blobId");let m=await Cl(n,f),d=await cn(m,Q.NOT_FOUND,"blob");return xl(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 ul(d,m),sl(f,d.entryIds.length),Tg({rootDir:n,previousDigest:d.digest,entryIds:d.entryIds,cursor:f})},async markRecoveryRequired(f){await qe(o)||await go(ol(n),{schemaVersion:xt,reason:ZR(f),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await Pe.rm(ol(n),{force:!0})},async readTransactionJournal(){return await qe(i)?ns(i):null},async writeTransactionJournal(f){await u(),Ug(f);try{await go(i,f)}catch(d){let g=await ns(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 ns(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 ns(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 is(n,m),l.delete(m);await KR(n);let f=await st(n);await mo(n,f.entryIds)}}}async function Cg(e,t,n,r){os(n,"entryId");let o=await st(e);ul(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 Dg(e,s,t);return{current:o,entryIds:a.entryIds,cursor:a.cursor,transition:Mg(o,a.entryIds,a.cursor)}}function Mg(e,t,n){return sl(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:DR(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function DR(e,t){return ln(at({schemaVersion:xt,entryIds:e,cursor:t}))}function sl(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new te(Q.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function LR(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 Rg(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=WR(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 wg(e,t){let n=El(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Ng(vl(e,a.digest),a.bytes,{kind:"blob",digest:a.digest},Il(e,a.digest))),Ng(n,at(r),{kind:"entry",digest:t.entryId},kl(e,t.entryId))],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Ng(e,t,n,r){let o=await pl(e)??(r?await pl(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 $g(e,t)}async function Dg(e,t,n){let r=[...t],o=r.length-1;for(;;){if((await Bg(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 BR(e,t,n){hl(t);let r=Sl(e,t.stageId);if(n){await go(r,t);return}await HR(r,t)}async function al(e,t){let n=await pl(Sl(e,t));if(n===null)return null;let r=xo(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=hl(r);if(o.stageId!==t)throw new te(Q.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function cs(e){let t=[];for(let n of await as(bl(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);ll(r);let o=await al(e,r);o&&t.push(o)}return t}async function Pg(e,t){hl(t);let n=await st(e),r=(await cs(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 Ag(El(e,t.entryId),kl(e,t.entryId));for(let s of t.blobIds)i.has(s)||await Ag(vl(e,s),Il(e,s));await is(e,t.stageId),await ml(bo(e)),await ml(So(e))}async function is(e,t){await cl(Sl(e,t)),await $R(e)}async function $R(e){try{await Pe.rmdir(bl(e))}catch(t){if(Eo(t)||Ct(t)&&t.code==="ENOTEMPTY")return;throw t}}async function jR(e,t){for(let n of await cs(e))n.entryId===t&&await is(e,n.stageId)}async function cl(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 Ag(e,t){await cl(e),await cl(t)}function hl(e){if(!Ct(e)||e.schemaVersion!==il||typeof e.stageId!="string"||!Lg(e.stageId)||!ct(e.entryId))throw new te(Q.INVALID_SCHEMA,"history stage schema is invalid");let t=jg(e.blobIds,"history stage blobIds");return{schemaVersion:il,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function ll(e){if(!Lg(e))throw new te(Q.INVALID_PATH,"history stageId must be a UUID")}function Lg(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 cs(e)){n.add(c.entryId);for(let l of c.blobIds)r.add(l)}let o=bo(e),i=await as(o);for(let c of i){if(!c.endsWith(".json"))continue;let l=_g(c.slice(0,-5));l&&!n.has(l)&&await ss(Te.join(o,c))}let s=So(e),a=await as(s);for(let c of a){let l=_g(c);l&&!r.has(l)&&await ss(Te.join(s,c))}}async function st(e){let t=ls(e),n=await cn(t,Q.NOT_FOUND,"index"),r=xo(Buffer.from(n).toString("utf8"),"index"),o=JR(r),i=[...o.entryIds],{totalBytes:s}=await Bg(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 Bg(e,t){let n=0,r=new Set,o=ls(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 Kg(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 Cl(e,u.digest),m=await cn(f,Q.NOT_FOUND,"blob");xl(m,u.digest,f),n+=m.byteLength}}return{totalBytes:n}}async function yo(e,t){let n=await Kg(e,t),r=await cn(n,Q.NOT_FOUND,"entry"),o=xo(Buffer.from(r).toString("utf8"),`entry ${t}`),i=XR(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 Cl(e,a.digest),l=await cn(c,Q.NOT_FOUND,"blob");xl(l,a.digest,c)}return i}async function yl(e,t,n){let r={schemaVersion:xt,digest:ln(at({schemaVersion:xt,entryIds:t,cursor:n})),entryIds:t,cursor:n};await go(ls(e),r)}function ul(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 Tg(e){let t=ln(at({schemaVersion:xt,entryIds:e.entryIds,cursor:e.cursor}));try{return await yl(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 VR(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 UR(e){await Pe.rm(ho(e),{recursive:!0,force:!0}),await Pe.mkdir(ho(e),{recursive:!0})}async function KR(e){let t=ho(e);await Pe.mkdir(t,{recursive:!0});for(let n of await as(t))n!=="stages"&&await Pe.rm(Te.join(t,n),{recursive:!0,force:!0})}function JR(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=jg(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 XR(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=fl(e.manifest,"entry.manifest"),o=zR(e.blobs);return{id:t,schemaVersion:xt,kind:n,manifest:r,blobs:o}}function zR(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 $g(e,at(t))}async function HR(e,t){let n=Te.dirname(e),r=Te.basename(e),o=Te.join(n,`.${r}.${process.pid}.${gl()}.tmp`);await Pe.mkdir(n,{recursive:!0});try{await Pe.writeFile(o,at(t),{flag:"wx"}),await Pe.rename(o,e)}finally{await ss(o)}}async function $g(e,t){let n=Te.dirname(e),r=Te.basename(e),o=Te.join(n,`.${r}.${process.pid}.${gl()}.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 ml(n)}finally{await ss(o)}}function at(e){return Buffer.from(JSON.stringify(dl(e)),"utf8")}function dl(e){if(Array.isArray(e))return e.map(t=>dl(t));if(Ct(e)){let t={};for(let n of Object.keys(e).sort())t[n]=dl(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 fl(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=>fl(n,t));if(Ct(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=fl(o,t);return n}break}throw new te(Q.INVALID_JSON,`${t} must be JSON-serializable`)}function jg(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 os(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:${AR("sha256").update(e).digest("hex")}`}function WR(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 pl(e){try{return await Pe.readFile(e)}catch(t){if(Eo(t))return null;throw t}}function xl(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 ss(e){try{await Pe.rm(e,{force:!0,recursive:!0})}catch{}}async function ml(e){try{let t=await Pe.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function as(e){try{return await Pe.readdir(e)}catch(t){if(Eo(t))return[];throw t}}function GR(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 ls(e){return Te.join(e,FR)}function ol(e){return Te.join(e,_R)}function YR(e){return Te.join(e,OR)}function Vg(e){return Te.join(e,MR)}async function Fg(e){try{let t=await Pe.readFile(Vg(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 ns(e){let t=await cn(e,Q.RECOVERY_PENDING,"transaction journal"),n=xo(Buffer.from(t).toString("utf8"),"transaction journal");return Ug(n),n}function Ug(e){if(!Ct(e)||e.schemaVersion!==TR||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!LR(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 ZR(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 bl(e){return Te.join(ho(e),"stages")}function Sl(e,t){return Te.join(bl(e),`${t}.json`)}function El(e,t){return Te.join(bo(e),`${Xg(t)}.json`)}function vl(e,t){return Te.join(So(e),Xg(t))}function kl(e,t){return Te.join(bo(e),`${t}.json`)}function Il(e,t){return Te.join(So(e),t)}async function Kg(e,t){return Jg(El(e,t),kl(e,t))}async function Cl(e,t){return Jg(vl(e,t),Il(e,t))}async function Jg(e,t){return await qe(e)?e:await qe(t)?t:e}function Xg(e){return e.slice(7)}function _g(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??rs.maxEntries,maxSessionBytes:e?.maxSessionBytes??rs.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??rs.maxEntryBytes}}async function qR(e){let t=ls(e);await qe(t)||await yl(e,[],-1)}export{te as FileHistoryStoreError,Mr as PageTemplateManagedSourceError,ts as PreviewFileSystemSiteEditEngineRuntime,cd as SITE_EDIT_RAW_COLOR_LITERAL_RE,qi as SnapshotSiteEditEngineRuntime,Zd as computeManagedPageTemplatePaths,PR as createPreviewSiteEditEngineRuntime,CR as createSiteEditEngineRuntime,Wd as decodePageTemplateKey,Pa as encodePageTemplateId,Qd as isManagedPageTemplateSourcePath,Og as openFileHistoryStore,RE as resolveManagedPageTemplateComposition,gi as scanManagedPageTemplateCandidates,ef as scanSiteEditCompositionsFromFiles,Pr as scanSiteEditThemeStyleViolations};
|