@vcp-dev/site-edit-engine 0.10.39 → 0.10.40
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 +8 -8
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import*as sy from"@babel/parser";import*as Ge from"@babel/types";import*as tn from"node:path";var Bs=[".tsx",".ts",".jsx",".js"],ay=Bs.map(e=>`/index${e}`),cy=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 au(e){let t=e.replace(/[?#].*$/,""),n=/\.([a-z0-9]+)$/i.exec(t);return n!==null&&cy.has(n[1].toLowerCase())}function cu(e){let t=[];for(let n of e.program.body)Ge.isImportDeclaration(n)&&typeof n.source.value=="string"&&Nt(n.source.value)&&t.push(n.source.value),Ge.isExportNamedDeclaration(n)&&n.source&&typeof n.source.value=="string"&&Nt(n.source.value)&&t.push(n.source.value),Ge.isExportAllDeclaration(n)&&typeof n.source.value=="string"&&Nt(n.source.value)&&t.push(n.source.value);return Ge.traverseFast(e.program,n=>{let r=Ge.isImportExpression(n)?n.source:Ge.isCallExpression(n)&&Ge.isImport(n.callee)?n.arguments[0]:null;Ge.isStringLiteral(r)&&Nt(r.value)&&t.push(r.value)}),t}function Nt(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("@/")}function bn(e,t){if(t.startsWith("@/"))return t.slice(2).replace(/\\/g,"/");let n=tn.dirname(e);return tn.join(n,t).replace(/\\/g,"/")}async function ly(e,t){if(Bs.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of Bs){let r=`${e}${n}`;if(await t(r))return r}for(let n of ay){let r=`${e}${n}`;if(await t(r))return r}return null}async function Sn(e,t,n){let r=await Oo(e,t,n);return r.ok?r.path:null}async function Oo(e,t,n){let r=bn(e,t);try{if(!uy(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 ly(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 uy(e,t,n){if(!Nt(t)||t.includes("\0")||t.includes("\\")||tn.posix.isAbsolute(n))return!1;let r=tn.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!tn.posix.isAbsolute(e)}import{createHash as fy}from"node:crypto";import*as lu from"@babel/parser";function En(e,t,n,r){return{code:e,message:t,locatorKind:n,details:r}}function K(e,t,n,r,o){return{ok:!1,source:e,diagnostic:En(t,n,r,o)}}function js(e,t,n,r,o){return{ok:!1,source:e,diagnostic:En(t,n,r,o)}}var dy={"tsx-module":["jsx","typescript"],"ts-module":["typescript"],"next-app-entry":["jsx","typescript"]};function Pt(e){let{source:t,profile:n}=e;try{return{ok:!0,ast:lu.parse(t,{sourceType:"module",plugins:dy[n]})}}catch(r){return{ok:!1,source:t,diagnostic:En("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function $s(e,t){return Pt({source:e,profile:uu(t.kind)})}function kr(e,t){return Pt({source:e,profile:uu(t)})}function uu(e){return"next-app-entry"}function vn(e){let{filePath:t,source:n}=e,r=t.toLowerCase().split(".").pop()??"";return r==="tsx"?"tsx-module":r==="ts"?"ts-module":r==="jsx"||r==="js"||r===""&&/<\w[\s\S]*>/.test(n)?"tsx-module":"next-app-entry"}var Ut=(e,t)=>{let n=Pt({source:t,profile:vn({filePath:e,source:t})});return n.ok?{ok:!0,module:{file:e,source:t,sourceHash:`sha256:${fy("sha256").update(t).digest("hex")}`,ast:n.ast,imports:cu(n.ast).map(r=>({specifier:r}))}}:{ok:!1,diagnostic:{path:e,code:"parse-failed",message:n.diagnostic.message}}};function py(e,t){return Ut(e,t)}function my(e,t){return bn(e,t)}import{COMPONENT_I18N_FILE_SUFFIX as gy,parseComponentI18nResourcesJson as hy,resolveSiteTextDirection as yy,SiteLocaleSchema as xy}from"@vcp-dev/contracts";var by=["i18next","react-i18next"],Sy="components/ui/site-locale-provider.tsx",Ey="components/ui/component-i18n-provider.tsx",du="app/layout.tsx";async function Lo(e){let t=e.files.filter(m=>m.path.endsWith(gy));if(t.length===0)return{ok:!0};for(let m of["package.json",du,Sy,Ey])if(!await e.exists(m))return nn(`Target snapshot is missing required i18n host file: ${m}`);let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return nn("Target snapshot package.json is invalid.")}let r=fu(n)&&fu(n.dependencies)?n.dependencies:{},o=by.filter(m=>typeof r[m]!="string"||r[m].trim().length===0);if(o.length>0)return nn(`Target snapshot must already declare: ${o.join(", ")}.`);let i=await e.readFile(du),s=Vs(i,"html","lang"),a=Vs(i,"html","dir"),c=Vs(i,"SiteLocaleProvider","locale"),l=xy.safeParse(s);if(!l.success||!a||!c||s!==c||a!==yy(l.data))return nn("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 nn("Target snapshot root layout is not wired to SiteLocaleProvider.");let u=l.data;if(e.targetLocale&&e.targetLocale!==u)return nn("Target snapshot locale does not match the authoritative site language.");let f=u.split("-")[0];for(let m of t){let d=hy(m.content);if(!d.success)return nn(`Component i18n resource is invalid: ${m.path}.`);if(!e.deferTargetLocale&&!Object.hasOwn(d.data,u)&&!Object.hasOwn(d.data,f))return nn(`Component i18n resource ${m.path} has no locale for ${u} or ${f}.`)}return{ok:!0}}function Vs(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 fu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nn(e){return{ok:!1,message:e}}import Us from"@babel/generator";import*as xu from"@babel/parser";import Js from"@babel/traverse";import*as Ce from"@babel/types";import{computeSiteEditSourceIdentityKey as ky}from"@vcp-dev/contracts";var pu="data-vcp-ui-component",Do="components/ui";function Jt(e){if(!e)return!1;let t=Ks(e);return t===Do||t.startsWith(`${Do}/`)||t.includes(`/${Do}/`)||t.endsWith(`/${Do}`)}function kn(e,t){return e?e.startsWith("@/")||e.startsWith("~/")?Jt(e.slice(2)):e.startsWith("./")||e.startsWith("../")?Jt(Ks(`${vy(t)}/${e}`)):Jt(e):!1}function Ks(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 vy(e){let t=Ks(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}import{stripSiteEditRepeatInstanceKeys as YN}from"@vcp-dev/contracts";import{isSiteEditRuntimeContainerTag as QN,isSiteEditRuntimeTextTag as qN}from"@vcp-dev/contracts/site-edit-runtime-capability";var mu={key:"data-vcp-edit-key",parentKey:"data-vcp-edit-parent-key",movable:"data-vcp-movable",removable:"data-vcp-removable",flags:"data-vcp-flags",publicUiComponent:"data-vcp-ui-component"};var Iy=typeof Us=="function"?Us:Us.default,Cy=typeof Js=="function"?Js:Js.default,Ry=new Set(["base","body","head","html","link","meta","noscript","script","style","template","title"]),wy="suppressHydrationWarning",Ny=new Set(["SiteEditBootstrap"]);function Py(e){let t=Fy(e.file,e.projectRoot);if(!Ty(e.source)||Jt(t))return{code:e.source,elements:[]};let n=e.attributes??mu,r=xu.parse(e.source,{sourceType:"module",plugins:["jsx","typescript"]}),o=[],i=My(r,t);return Cy(r,{JSXElement(s){let a=s.node.openingElement,c=a.name;if(!Ly(c)||bu(a,n.key))return;let l=By(s)??"default",u=$y(s),f=ky(t,l,u),m=jo(c)??"unknown",d=_y(c)?"jsx":"component-call";if(d==="component-call"&&!jy(s.node.children)&&Ny.has(m))return;let g=d==="component-call"&&Oy(m,i);Dy(a,n.key,f),g&&gu(a,pu),Ay(s)&&gu(a,wy),o.push({key:f,tag:m,componentName:l,sourceFile:t,sourceKind:d})}}),o.length===0?{code:e.source,elements:o}:{code:Iy(r,{jsescOption:{minimal:!0}}).code,elements:o}}function Ay(e){return!e.findParent(t=>t.isJSXElement())}function Ty(e){return/(?:^|[=(:,?;\[{>&|\n\r]|return\s+)\s*<(?:[A-Za-z][\w.:-]*|>)(?:\s|>|\/)/m.test(e)}function Fy(e,t){let n=e.replace(/\\/g,"/").replace(/^\.\//,""),r=t?.replace(/\\/g,"/").replace(/\/+$/,"");if(r&&n.startsWith(`${r}/`))return n.slice(r.length+1);for(let[i,s]of[["/src/app/",1],["/src/components/",1],["/app/",1],["/components/",1]]){let a=n.indexOf(i);if(a>=0)return n.slice(a+s)}return n.match(/(?:^|\/)((?:src\/app|src\/components|app|components)\/.+)$/)?.[1]??n}function _y(e){return Ce.isJSXIdentifier(e)&&/^[a-z]/.test(e.name)}function jo(e){return Ce.isJSXIdentifier(e)?e.name:Ce.isJSXMemberExpression(e)?Eu(e):null}function My(e,t){let n=new Set;for(let r of e.program.body)if(!(!Ce.isImportDeclaration(r)||!kn(r.source.value,t)))for(let o of r.specifiers)n.add(o.local.name);return n}function Oy(e,t){let n=e.split(".")[0]??e;return t.has(n)}function Ly(e){let t=jo(e);return!t||t==="Fragment"||t.endsWith(".Fragment")?!1:!Ry.has(t)}function bu(e,t){return e.attributes.some(n=>Ce.isJSXAttribute(n)&&Ce.isJSXIdentifier(n.name,{name:t}))}function Dy(e,t,n){Su(e,Ce.jsxAttribute(Ce.jsxIdentifier(t),Ce.stringLiteral(n)))}function gu(e,t){bu(e,t)||Su(e,Ce.jsxAttribute(Ce.jsxIdentifier(t),null))}function Su(e,t){let n=e.attributes.findIndex(r=>Ce.isJSXSpreadAttribute(r));if(n>=0){e.attributes.splice(n,0,t);return}e.attributes.push(t)}function Eu(e){return`${Ce.isJSXIdentifier(e.object)?e.object.name:Eu(e.object)}.${e.property.name}`}function By(e){let t=e;for(;t;){if(t.isFunctionDeclaration()||t.isClassDeclaration())return t.node.id?.name??null;if(t.isVariableDeclarator()&&Ce.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}function jy(e){return e.some(t=>Ce.isJSXElement(t)||Ce.isJSXFragment(t))}var hu=new WeakMap,Bo=new WeakMap,Xs=new WeakMap;function $y(e){let t=hu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=Vy(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return hu.set(e.node,o),o}function Vy(e){let t=jo(e.node.openingElement.name);return!t||t==="Fragment"||t.endsWith(".Fragment")?null:/^[A-Z]/.test(t)?`component:${t}#${yu(e,t)}`:`${t}#${yu(e,t)}`}function yu(e,t){let n=vu(e)??e.getFunctionParent();if(!n)return 0;let r=Xs.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Xs.get(n.node);o||(o=new Map,Xs.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0,a=n.isJSXElement()||n.isJSXFragment()?$o(n):Ky(n);for(let c of a)if(jo(c.node.openingElement.name)===t){if(i.set(c.node,s),c.node===e.node)return s;s+=1}return i.get(e.node)??0}function Ky(e){let t=Bo.get(e.node);if(t)return t;let n=[];return e.traverse({JSXElement(r){r.getFunctionParent()?.node===e.node&&!vu(r)&&n.push(r)}}),Bo.set(e.node,n),n}function vu(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement())return t;t=t.parentPath}return n}function $o(e){let t=Bo.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()){n.push(o);continue}if(o.isJSXFragment()){n.push(...$o(o));continue}o.isJSXExpressionContainer()&&n.push(...In(o.get("expression")))}return Bo.set(e.node,n),n}function In(e){if(e.isJSXElement())return[e];if(e.isJSXFragment())return $o(e);if(e.isParenthesizedExpression())return In(e.get("expression"));if(e.isLogicalExpression()&&e.node.operator==="&&")return In(e.get("right"));if(e.isConditionalExpression())return[...In(e.get("consequent")),...In(e.get("alternate"))];if(e.isCallExpression()&&Jy(e.node)){let t=e.get("arguments")[0];return Uy(t)}return[]}function Uy(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return[t];if(t.isJSXFragment())return $o(t);if(t.isParenthesizedExpression())return In(t.get("expression"));if(!t.isBlockStatement())return[];for(let n of t.get("body")){if(!n.isReturnStatement())continue;let r=n.get("argument");return r.node?In(r):[]}return[]}function Jy(e){return Ce.isMemberExpression(e.callee)&&Ce.isIdentifier(e.callee.property)&&e.callee.property.name==="map"}import{SiteEditOperationRequestSchema as RN,SiteEditPatchPlanSchema as wN}from"@vcp-dev/contracts";function Cn(e){return{requestId:e.requestId,kind:e.kind,composition:e.composition,target:e.target,resultVersion:e.resultVersion,affectedFiles:e.affectedFiles,...e.fileChanges?{fileChanges:e.fileChanges}:{},...e.output?{output:e.output}:{},...e.selectionRef?{selectionRef:e.selectionRef}:{}}}function Vo(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 Ko(e,t){if(!e.pageComposition)throw new Error("RenderDocument is missing the required Page Composition projection.");return{siteId:t.siteId,snapshotId:t.snapshotId,composition:e.composition,version:e.version,entries:e.entries.map(n=>({key:n.key,parentKey:n.parentKey,...n.pageCompositionUnitKey?{pageCompositionUnitKey:n.pageCompositionUnitKey}:{},...n.pageCompositionActionScope?{pageCompositionActionScope:n.pageCompositionActionScope}:{},operationSummary:{canUpdateText:n.operationSummary.canUpdateText,canInsertChild:n.operationSummary.canInsertChild,canMove:n.operationSummary.canMove,canRemove:n.operationSummary.canRemove},...n.dynamicDataSummary?{dynamicDataSummary:n.dynamicDataSummary}:{}})),pageComposition:e.pageComposition.status==="unsupported"?{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics}:{status:"supported",containerKey:e.pageComposition.container.key,hasBusinessMembers:e.pageComposition.businessMembers.length>0,placementUnitKeys:e.pageComposition.placementUnits.map(n=>n.key),placements:e.pageComposition.placements.map(n=>({placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,relation:n.relation}))}}}function Uo(e){return{composition:e.composition,key:e.key,tag:e.tag,...e.linkSourceKind?{linkSourceKind:e.linkSourceKind}:{},label:e.label,sourceLocator:e.sourceLocator,isOpaque:e.isOpaque,ancestors:e.ancestors,componentName:e.componentName,sourceFile:e.sourceFile,capabilities:Xy(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 Jo(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:Cn(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 Xy(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 Lw,computeSiteEditCompositionKey as Dw,getSiteEditSourceDeleteProtectionReason as Bw,isSiteEditTextSourcePath as jw,parseSiteEditRepeatInstanceKey as $w,SITE_EDIT_SOURCE_DELETE_CAPABILITY as Vw,stripSiteEditRepeatInstanceKeys as it}from"@vcp-dev/contracts";import Is from"node:path";import{parse as Kw}from"yaml";import Ys from"node:path";import{TextDecoder as Hy}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as Iu,SITE_EDIT_SOURCE_ALLOWED_DIRS as Cu,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as Ru,SiteEditCompositionContextSchema as Wy,SiteEditSourceFileResponseSchema as zs,SiteEditSourceLocationSchema as Gy,SiteEditSourcePathSchema as Xo,SiteEditSourceTreeResponseSchema as Yy,isSiteEditTextSourcePath as Zy}from"@vcp-dev/contracts";import{createHash as zy}from"node:crypto";var Ir=class{constructor(t){this.original=new Map,this.files=new Map,this.versions=new Map;for(let n of t)this.original.set(n.path,n.content),this.files.set(n.path,n.content),this.versions.set(n.path,n.version??1)}async readFile(t){let n=this.files.get(t);if(n===void 0)throw new Error(`Snapshot file not found: ${t}`);return n}async readFileBytes(t){return Buffer.from(await this.readFile(t),"utf8")}async getFileInfo(t){let n=this.files.get(t);return n===void 0?null:{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async writeFile(t,n){this.files.set(t,n)}async createExclusive(t,n){if(this.files.has(t))throw Object.assign(new Error(`Snapshot file already exists: ${t}`),{code:"EEXIST"});this.files.set(t,n)}async deleteFile(t){this.files.delete(t)}async exists(t){return this.files.has(t)}async listFiles(t={}){let n=t.roots??[],r=[...this.files.keys()].filter(a=>n.length===0?!0:n.some(c=>a===c||a.startsWith(`${c}/`))),o=[],i=new Set,s=0;for(let a of r.sort()){let c=Buffer.byteLength(this.files.get(a)??"","utf8"),l=a.split("/").length;if(t.maxDepth!==void 0&&l>t.maxDepth){i.add("max-depth");continue}if(t.maxFiles!==void 0&&o.length>=t.maxFiles){i.add("max-files");break}if(t.maxTotalBytes!==void 0&&s+c>t.maxTotalBytes){i.add("max-total-bytes");break}o.push({path:a,sizeBytes:c}),s+=c}return i.size>0?{files:o,truncated:{reasons:[...i]}}:{files:o}}getVersion(t){return this.versions.get(t)??0}bumpVersion(t){let n=this.getVersion(t)+1;return this.versions.set(t,n),n}getChangedFiles(){let t=new Set([...this.original.keys(),...this.files.keys()]),n=[];for(let r of[...t].sort()){let o=this.original.get(r),i=this.files.get(r);o!==i&&n.push({path:r,before:o,after:i})}return n}};function ve(e){return`sha256:${zy("sha256").update(e).digest("hex")}`}var Qy=[...Ru,...Iu,...Cu];function Zs(e){if(!e.composition)throw new Error("Composition unavailable for source access policy.");return Wy.parse(e.composition)}var Hs=2e3,Ws=12,Gs=24*1024*1024,ku=512*1024,qy=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),ex={".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"},tx={".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"},nx=new Hy("utf-8",{fatal:!0});async function zo(e,t={}){let n=Zs(t),{files:r,truncated:o}=await lx(e,t),i=fx(r.map(s=>s.metadata));return Yy.parse({composition:n,nodes:i,defaultPath:px(r.map(s=>s.metadata)),totalFiles:r.length,...o?{truncated:o}:{}})}async function Ho(e,t,n={}){let r=Zs(n),o=Xo.parse(t.path),i=await ox(e,o,n);if(!i)throw new Error(`Source file not found: ${o}`);if(qs(o)){let a=Pu(o),c=await sx(e,{path:o,sizeBytes:i.sizeBytes,mimeType:a});return zs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:a,readonly:!0,...c})}let s=await Qs(e,o);return s.ok?zs.parse({composition:r,path:o,kind:"text",language:Au(o),sizeBytes:s.sizeBytes,contentHash:ve(s.content),readonly:!1,content:s.content}):zs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:s.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function Qs(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=rx(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 rx(e){if(e.includes(0))return null;try{return nx.decode(e)}catch{return null}}async function ox(e,t,n){if(!ax(t,n))return null;let r=await ix(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function ix(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=wu(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(qs(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function sx(e,t){if(!qy.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>ku)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>ku?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function ax(e,t){return Ru.some(n=>n===e)||Iu.some(n=>n===e)||Cu.some(n=>e===n||e.startsWith(`${n}/`))?!0:!e.startsWith("app/")&&!e.startsWith("src/app/")?!1:(t.routeEntryFiles??[]).some(n=>{let r=Xo.safeParse(n);return r.success&&r.data===e})}function Wo(e,t){if(!t.sourceLocator)throw new Error(`Source location not available for key: ${e.key}`);return Gy.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 wu(e){return Array.isArray(e)?{files:e}:e}function cx(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function lx(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=wu(await e.listFiles({roots:ux(t),maxFiles:Hs+1,maxDepth:Ws,maxTotalBytes:Gs+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=Xo.safeParse(a.path);if(!c.success)continue;let l=c.data;if(l.split("/").length>Ws){o.add("max-depth");continue}if(r.size>=Hs){o.add("max-files");break}if(i+a.sizeBytes>Gs){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:dx(l,a.sizeBytes,Zs(t))}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:cx([...o]),maxFiles:Hs,maxDepth:Ws,maxTotalBytes:Gs}}:{}}}function ux(e){let t=new Set(Qy);for(let n of e.routeEntryFiles??[]){let r=Xo.safeParse(n);r.success&&(r.data.startsWith("app/")||r.data.startsWith("src/app/"))&&t.add(r.data)}return[...t]}function dx(e,t,n){return qs(e)?{composition:n,path:e,kind:"binary",language:null,sizeBytes:t,mimeType:Pu(e),readonly:!0}:{composition:n,path:e,kind:"text",language:Au(e),sizeBytes:t,readonly:!1}}function fx(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 Nu(t)}function Nu(e){return e.map(t=>t.kind==="directory"?{...t,children:Nu(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function px(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 qs(e){return!Zy(e)}function Pu(e){let t=Ys.posix.extname(e).toLowerCase();return!t&&Ys.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":ex[t]??"application/octet-stream"}function Au(e){let t=Ys.posix.extname(e).toLowerCase();return tx[t]??"plaintext"}import ea from"@babel/traverse";import*as At from"@babel/types";function Me(e){if(e.isJSXFragment())return!0;if(!e.isJSXElement())return!1;let t=e.node.openingElement.name;if(At.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(At.isIdentifier(s)&&s.name==="Fragment"||At.isStringLiteral(s)&&s.value==="Fragment")&&Tu(i.parentPath)}if(!At.isJSXMemberExpression(t)||!At.isJSXIdentifier(t.property)||t.property.name!=="Fragment"||!At.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 rn=typeof ea=="function"?ea:ea.default,Go=new WeakMap,Yo=new WeakMap;function Tt(e,t){let n=$s(e,t);if(!n.ok)return js(e,n.diagnostic.code,n.diagnostic.message,t.kind);let r=se(n.ast,t);return r.ok?{ok:!0,match:{locatorKind:r.match.locatorKind,node:r.match.node,start:r.match.start,end:r.match.end}}:js(e,r.diagnostic.code,r.diagnostic.message,t.kind,r.diagnostic.details)}function se(e,t){return t.kind==="jsx-node"?Ou(e,t):t.kind==="jsx-attribute"?bx(e,t):t.kind==="value"?Sx(e,t):t.kind==="expression"?Ex(e,t):t.kind==="directive"?vx(e,t):t.kind==="export"?kx(e,t):{ok:!1,diagnostic:En("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function Ou(e,t){return t.strategy==="source-range"?mx(e,t):gx(e,t)}function mx(e,t){let n=null;if(rn(e,{JSXElement(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);if(i){if(!n){n=i;return}i.end-i.start<n.end-n.start&&(n=i)}},JSXFragment(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXExpressionContainer(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXText(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)}}),!n)return Be("jsx-node","locator-miss","JSX node not found for source-range locator");let r=n;return t.expectedIdentity&&!Ox(r.path,t.expectedIdentity)?Be("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function gx(e,t){if(t.structuralPath===""){let r=yx(e,t.component);if(r){let o=xx(r);if(o)return o}}let n=null;return rn(e,{JSXElement(r){if(Rr(r)!==t.component||na(r)!==t.structuralPath)return;let i=De("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(Rr(r)!==t.component||na(r)!==t.structuralPath)return;let i=De("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=hx(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:Be("jsx-node","locator-miss","JSX node not found for structural-path locator")}function hx(e,t,n){let r=null;return rn(e,{JSXElement(o){if(Rr(o)!==t||!Rn(o.node,n))return;let i=De("jsx-node",o);i&&(r=i,o.stop())},JSXFragment(o){if(Rr(o)!==t||!Rn(o.node,n))return;let i=De("jsx-node",o);i&&(r=i,o.stop())}}),r}function yx(e,t){let n=null;return rn(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 xx(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 Be("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}return null}return(t.isParenthesizedExpression()?t.get("expression"):t).isJSXFragment()?Be("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 Be("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}}}return null}function bx(e,t){let n=Ou(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>Lx(c,t.name));if(!s||!s.isJSXAttribute())return Be("jsx-attribute","locator-miss",`JSX attribute '${t.name}' not found`);let a=De("jsx-attribute",s);return a?{ok:!0,match:a}:Be("jsx-attribute","locator-miss",`JSX attribute '${t.name}' has no source range`)}function Sx(e,t){let n=Ix(e,t);if(!n.ok)return n;let r=Cx(n.match.path,t.path??[]);return r.ok?t.expectedRange&&!zt(r.match.path.node.loc,t.expectedRange)?Be("value","locator-miss","Resolved value does not match expected range"):{ok:!0,match:r.match}:r}function Ex(e,t){let n=null;return rn(e,{Identifier(r){if(!Tx(r))return;let o=_u(r);if(!o||!Mu(o,t))return;let i=De("expression",r);i&&(t.expectedRange&&!zt(r.node.loc,t.expectedRange)||(n=i,r.stop()))},MemberExpression(r){let o=_u(r);if(!o||!Mu(o,t))return;let i=De("expression",r);i&&(t.expectedRange&&!zt(r.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Be("expression","locator-miss","Expression not found")}function vx(e,t){let n=null;return rn(e,{Program(r){let i=r.get("directives").find(a=>a.node.value.value===t.value);if(!i||t.expectedRange&&!zt(i.node.loc,t.expectedRange))return;let s=De("directive",i);s&&(n=s,r.stop())}}),n?{ok:!0,match:n}:Be("directive","locator-miss",`Directive '${t.value}' not found`)}function kx(e,t){let n=null;return rn(e,{ExportNamedDeclaration(r){if(t.exportKind==="generate-metadata"){let c=r.get("declaration");if(c.isFunctionDeclaration()&&c.node.id?.name==="generateMetadata"){let m=De("export",c);if(!m||t.expectedRange&&!zt(c.node.loc,t.expectedRange))return;n=m,r.stop();return}if(!c.isVariableDeclaration())return;let l=ra(c,"generateMetadata");if(!l||!l.isVariableDeclarator())return;let u=l.get("init");if(!u.node)return;let f=De("export",u);if(!f||t.expectedRange&&!zt(u.node.loc,t.expectedRange))return;n=f,r.stop();return}let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=ra(o,t.exportKind==="named"?t.name:"metadata");if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node||t.expectedRange&&!zt(s.node.loc,t.expectedRange))return;let a=De("export",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(t.exportKind!=="default")return;let o=r.get("declaration"),i=De("export",o);i&&(t.expectedRange&&!zt(o.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Be("export","export-not-found",`Export '${Mx(t)}' not found`)}function Ix(e,t){let n=null;return rn(e,{Expression(r){if(n||t.root.kind!=="expression"||!Rn(r.node,t.root.sourceRange))return;let o=De("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=De("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=De("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=ra(o,t.root.name);if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node)return;let a=De("value",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(n||t.root.kind!=="default-export")return;let o=r.get("declaration"),i=De("value",o);i&&(n=i,r.stop())}}),n?{ok:!0,match:n}:Be("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 Cx(e,t){let n=ta(e);for(let o of t){if(n=ta(n),o.kind==="property"){if(!n.isObjectExpression())return Be("value","unsupported-syntax","Property path requires object expression");let a=n.get("properties");if(a.some(l=>!l.isObjectProperty()))return Be("value","unsupported-syntax","Spread properties are not supported");let c=a.find(l=>Dx(l,o.name));if(!c||!c.isObjectProperty())return Be("value","property-not-found",`Property '${o.name}' not found`);n=c.get("value");continue}if(!n.isArrayExpression())return Be("value","unsupported-syntax","Array index path requires array expression");let i=n.get("elements");if(i.some(a=>a.node?.type==="SpreadElement"))return Be("value","unsupported-syntax","Spread array elements are not supported");let s=i[o.index];if(!s?.node)return Be("value","array-index-out-of-range",`Array index ${o.index} is out of range`);n=s}n=ta(n);let r=De("value",n);return r?{ok:!0,match:r}:Be("value","locator-miss","Resolved value has no source range")}function ta(e){let t=e;for(;t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression();)t=t.get("expression");return t}function De(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 Rn(e,t){return zt(e.loc,t)}function zt(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 na(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!Me(n)){let o=Du(n.node.openingElement);o&&(/^[A-Z]/.test(o)?t.unshift(`component:${o}#${Fu(n,o)}`):t.unshift(`${o}#${Fu(n,o)}`))}}else n.isJSXFragment()&&n.node===r&&t.unshift("fragment");if(!n.parentPath||Px(n.parentPath)&&!Ax(n.parentPath))break;n=n.parentPath}return t.join("/")}function Fu(e,t){let n=Lu(e)??e.getFunctionParent();if(!n)return 0;let r=Go.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=0,i=Go.get(n.node)?.get(t);if(!i){let a=Go.get(n.node);a||(a=new Map,Go.set(n.node,a)),i=new WeakMap,a.set(t,i)}let s=n.isJSXElement()||n.isJSXFragment()?Cr(n):Rx(n);for(let a of s)if(Du(a.node.openingElement)===t){if(i.set(a.node,o),a.node===e.node)return o;o++}return i.get(e.node)??0}function Rx(e){let t=Yo.get(e.node);if(t)return t;let n=[];return e.traverse({JSXElement(r){r.getFunctionParent()?.node===e.node&&!Lu(r)&&n.push(r)}}),Yo.set(e.node,n),n}function Lu(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Me(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function Cr(e){let t=Yo.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(Me(o)){n.push(...Cr(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...Cr(o));continue}o.isJSXExpressionContainer()&&n.push(...Xt(o.get("expression")))}return Yo.set(e.node,n),n}function Xt(e){if(e.isJSXElement())return Me(e)?Cr(e):[e];if(e.isJSXFragment())return Cr(e);if(e.isParenthesizedExpression())return Xt(e.get("expression"));if(e.isLogicalExpression()&&wx(e.node.operator))return Xt(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(...Xt(c))}if(s.isReturnStatement()){let a=s.get("argument");a.isExpression()&&i.push(...Xt(a));break}}return i}else if(o.node&&o.isExpression())return Xt(o)}}}}return e.isConditionalExpression()?[...Xt(e.get("consequent")),...Xt(e.get("alternate"))]:e.isArrayExpression()?e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Xt(t)):[]}function wx(e){return e==="&&"||e==="||"||e==="??"}function Du(e){return e.name.type==="JSXIdentifier"?e.name.name:e.name.type==="JSXMemberExpression"?Nx(e.name):null}function Nx(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 Rr(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 Px(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function Ax(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 Tx(e){return!(!e.isExpression()||e.parentPath?.isMemberExpression({property:e.node}))}function _u(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 Mu(e,t){return e.base===t.base&&Fx(e.path,t.path??[])}function Fx(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 _x(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function Mx(e){return e.exportKind==="named"?e.name:e.exportKind}function Be(e,t,n,r){return{ok:!1,diagnostic:En(t,n,e,r)}}function Ox(e,t){return Rr(e)!==t.component?!1:na(e)===t.structuralPath}function Lx(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function ra(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function Dx(e,t){return e.isObjectProperty()?_x(e.node)===t:!1}import*as ju from"@babel/parser";import{arrayExpression as Kx,booleanLiteral as Ux,identifier as Jx,jsxAttribute as Xx,jsxExpressionContainer as zx,jsxIdentifier as Hx,nullLiteral as Wx,numericLiteral as Gx,objectExpression as Yx,objectProperty as Zx,stringLiteral as ia}from"@babel/types";import oa from"@babel/generator";var Bx=typeof oa=="function"?oa:oa.default;function jx(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 Zo(e){let{ast:t,source:n}=e;try{let r=jx(n),i=Bx(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=Vx(i,r)),{ok:!0,source:i}}catch(r){return K(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}function Bu(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 wr(e,t,n){return{ok:!0,source:t,operation:{type:n.kind,nodeId:n.target,kind:n.kind,target:n.target,beforeSourceHash:Bu(e),afterSourceHash:Bu(t),inverse:n.inverse}}}function ge(e,t,n){let r=Zo({ast:e,source:t});return r.ok?wr(t,r.source,n):r}function Re(e,t){let n=kr(e,t);return n.ok?{ok:!0,ast:n.ast}:{ok:!1,result:{ok:!1,source:e,diagnostic:n.diagnostic}}}function Qo(e,t){return Zo({ast:e,source:t})}function Qx(e,t,n){let r=se(e,t);return r.ok?{ok:!0,match:r.match}:{ok:!1,result:{ok:!1,source:n,diagnostic:r.diagnostic}}}function Hn(e,t,n){let r=Qx(e,t,n);return r.ok?r.match.path.isJSXElement()?r:{ok:!1,result:K(n,"unsupported-syntax","JSX locator must resolve to JSXElement","jsx-node")}:r}function on(e){return typeof e=="string"?ia(e):typeof e=="number"?Gx(e):typeof e=="boolean"?Ux(e):e===null?Wx():Array.isArray(e)?Kx(e.map(t=>on(t))):Yx(Object.entries(e).map(([t,n])=>{let r=Zx(sa(t),on(n));return t==="__proto__"&&(r.computed=!0),r}))}function qx(e){return typeof e=="string"?ia(e):zx(on(e))}function Nr(e,t){return Xx(Hx(e),qx(t))}function qo(e,t){try{let r=ju.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:K(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:K(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function sa(e){return/^[$A-Z_][0-9A-Z_$]*$/i.test(e)?Jx(e):ia(e)}function ei(e){let{source:t,locator:n,segmentIndex:r,newText:o}=e,i=Re(t,"jsx-node");if(!i.ok)return i.result;let s=se(i.ast,n);if(!s.ok)return{ok:!1,source:t,diagnostic:s.diagnostic};let c=eb(s.match.path)[r];if(!c)return K(t,"locator-miss",`Text segment ${r} not found`,"jsx-node");switch(c.kind){case"jsx-text":c.path.node.value=tb(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 ge(i.ast,t,{kind:"update-text",target:"jsx-node",inverse:"restore-text"})}function eb(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=nb(r.get("expression"));o.length>0&&t.push(...o)}}return t}function tb(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function nb(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 aa}from"@babel/types";function Wn(e){let{source:t,locator:n}=e,r=Re(t,"jsx-node");if(!r.ok)return r.result;let o=se(r.ast,n);return o.ok?(rb(o.match.path),ge(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function rb(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(aa());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(aa());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(aa());return}e.remove()}import{cloneNode as ob}from"@babel/types";function ti(e){let t=Re(e.source,"jsx-node");if(!t.ok)return t.result;let n=se(t.ast,e.locator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};let r=qo(e.source,e.node.jsx);return r.ok?(n.match.path.replaceWith(ob(r.node,!0)),ge(t.ast,e.source,{kind:"replace-node",target:"jsx-node",inverse:"replace-node"})):r.result}import{cloneNode as gb}from"@babel/types";import ca from"@babel/traverse";import*as ee from"@babel/types";function Pr(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 ib=typeof ca=="function"?ca:ca.default;function mt(e,t,n,r){if(!e.ok)return e;let o=pt(n,t);if(!o)return e;let i=sb(t,o,r);return i?{...e,selectionRef:i}:e}function sb(e,t,n){let r=ab(e,t);if(!r)return;let o=n.sourceLocator?$u(n.sourceLocator):void 0,i=n.targetParentLocator?$u(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??lb(r)??i?.component??o?.component;if(!(!s||!a))return{key:Pr(s,a,ub(r))}}function $u(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function ab(e,t){let n=zu(e,t);return!n||n.node.type!=="JSXElement"?null:n}function zu(e,t){let n=null;return ib(e,{JSXElement(r){r.node===t&&(n=r,r.stop())},JSXFragment(r){r.node===t&&(n=r,r.stop())}}),n}function pt(e,t){if(!e)return null;if(ee.isJSXElement(e))return mb(t,e)?Vu(e.children,t):e;if(ee.isJSXFragment(e))return Vu(e.children,t);if(ee.isJSXExpressionContainer(e)||ee.isParenthesizedExpression(e)||ee.isTSAsExpression(e)||ee.isTSSatisfiesExpression(e)||ee.isTSTypeAssertion(e)||ee.isTSNonNullExpression(e))return pt(e.expression,t);if(ee.isLogicalExpression(e))return pt(e.right,t);if(ee.isConditionalExpression(e))return pt(e.consequent,t)??pt(e.alternate,t);if(ee.isCallExpression(e)||ee.isOptionalCallExpression(e))return Hu(e)?cb(e.arguments[0],t):null;if(ee.isArrayExpression(e))for(let n of e.elements){if(!n)continue;let r=pt(n,t);if(r)return r}return null}function Vu(e,t){for(let n of e){let r=pt(n,t);if(r)return r}return null}function cb(e,t){return!e||!ee.isArrowFunctionExpression(e)&&!ee.isFunctionExpression(e)?null:ee.isBlockStatement(e.body)?Ar(e.body.body,t):pt(e.body,t)}function Ar(e,t){for(let n of e){if(ee.isReturnStatement(n)){let r=pt(n.argument,t);if(r)return r;continue}if(ee.isBlockStatement(n)){let r=Ar(n.body,t);if(r)return r;continue}if(ee.isIfStatement(n)){let r=Ku(n.consequent,t);if(r)return r;let o=n.alternate?Ku(n.alternate,t):null;if(o)return o;continue}if(ee.isSwitchStatement(n))for(let r of n.cases){let o=Ar(r.consequent,t);if(o)return o}}return null}function Ku(e,t){return ee.isBlockStatement(e)?Ar(e.body,t):Ar([e],t)}function lb(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(ee.isFunctionDeclaration(n))return n.id?.name??"default"}if(t.isVariableDeclarator()&&ee.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 Uu=new WeakMap,Ju=new WeakMap,la=new WeakMap;function ub(e){let t=Uu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=db(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return Uu.set(e.node,o),o}function db(e){let t=Wu(e.node.openingElement.name);return!t||Me(e)?null:/^[A-Z]/.test(t)?`component:${t}#${Xu(e,t)}`:`${t}#${Xu(e,t)}`}function Xu(e,t){let n=fb(e);if(!n)return 0;let r=la.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=la.get(n.node);o||(o=new Map,la.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0;for(let a of wn(n))if(Wu(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 fb(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Me(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function wn(e){let t=Ju.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(Me(o)){n.push(...wn(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...wn(o));continue}o.isJSXExpressionContainer()&&n.push(...Ft(o.get("expression")))}return Ju.set(e.node,n),n}function Ft(e){if(e.isJSXElement())return Me(e)?wn(e):[e];if(e.isJSXFragment())return wn(e);if(e.isParenthesizedExpression())return Ft(e.get("expression"));if(e.isLogicalExpression())return Ft(e.get("right"));if(e.isConditionalExpression())return[...Ft(e.get("consequent")),...Ft(e.get("alternate"))];if(e.isArrayExpression())return e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Ft(t));if((e.isCallExpression()||e.isOptionalCallExpression())&&Hu(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?pb(n):[]}return[]}function pb(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return Me(t)?wn(t):[t];if(t.isJSXFragment())return wn(t);if(t.isParenthesizedExpression())return Ft(t.get("expression"));if(t.isLogicalExpression()||t.isConditionalExpression())return Ft(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(...Ft(s))}if(!r.isReturnStatement())continue;let o=r.get("argument");return o.node&&n.push(...Ft(o)),n}return n}function Hu(e){let t=e.callee;return(ee.isMemberExpression(t)||ee.isOptionalMemberExpression(t))&&ee.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function mb(e,t){let n=zu(e,t);return n?Me(n):!1}function Wu(e){return ee.isJSXIdentifier(e)?e.name:ee.isJSXMemberExpression(e)?Gu(e):ee.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function Gu(e){return`${ee.isJSXIdentifier(e.object)?e.object.name:Gu(e.object)}.${e.property.name}`}function sn(e,t){if(t.parentPath===e&&t.listKey==="children"&&ua(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!ua(n))return null;let r=n;for(;r&&r!==e;){if(!ua(r)||!Me(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function ua(e){return e.isJSXElement()||e.isJSXFragment()}function Gn(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=se(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};if(!c.match.path.isJSXElement()&&!c.match.path.isJSXFragment())return K(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 v=c.match.path.node;if(!v.closingElement||v.openingElement.selfClosing)return K(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=qo(t,r.jsx);if(!u.ok)return u.result;let f=gb(u.node,!0),m=l.node.children,d={...s,targetParentLocator:n},g=v=>s?mt(v,a.ast,f,d):v;if(o==="append")return m.push(f),g(ge(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return m.unshift(f),g(ge(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(!i)return K(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let h=se(a.ast,i);if(!h.ok)return{ok:!1,source:t,diagnostic:h.diagnostic};let S=sn(c.match.path,h.match.path);if(!S)return K(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,y=E.findIndex(v=>v===h.match.path.node);return y===-1?K(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?y:y+1,0,f),g(ge(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"})))}import*as Yu from"@babel/parser";import{cloneNode as hb}from"@babel/types";function ni(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=yb(t,r);if(!c.ok)return c.result;let l=se(a.ast,n);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return K(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 K(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=l.match.path,f=null;if(i){let E=se(a.ast,i);if(!E.ok)return{ok:!1,source:t,diagnostic:E.diagnostic};let y=sn(l.match.path,E.match.path);if(!y)return K(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=y,f=E.match.path.node}else if(o==="before"||o==="after")return K(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=hb(c.node,!0),d=u.node.children,g={...s,targetParentLocator:n},h=E=>s?mt(E,a.ast,m,g):E;if(o==="append")return d.push(m),h(ge(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return d.unshift(m),h(ge(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));let S=d.findIndex(E=>E===f);return S===-1?K(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(d.splice(o==="before"?S:S+1,0,m),h(ge(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"})))}function yb(e,t){try{let r=Yu.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:K(e,"unsupported-syntax","Expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:K(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}import{cloneNode as xb,nullLiteral as da}from"@babel/types";import*as an from"@babel/types";import*as Zu from"@babel/types";function Tr(e,t){let n=e.parentPath;if(!n?.isConditionalExpression()||e.key!=="consequent"||!Zu.isNullLiteral(n.node.alternate))return e;let r=n.parentPath;return!r?.isJSXExpressionContainer()||r.parentPath?.node!==t.node||r.listKey!=="children"?e:r}function Yn(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=se(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};let l=se(a.ast,r);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return K(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 K(t,"self-closing-element","Cannot move child into self-closing element","jsx-node")}let f=null;if(i){let v=se(a.ast,i);if(!v.ok)return{ok:!1,source:t,diagnostic:v.diagnostic};let C=v.match.path.isJSXElement()?Tr(v.match.path,l.match.path):v.match.path,N=sn(l.match.path,C);if(!N)return K(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=N,f=C}else if(o==="before"||o==="after")return K(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=f&&typeof f.key=="number"?f.key:-1;if(f&&m===-1)return K(t,"locator-miss","Anchor node does not exist in target parent","jsx-node");let d=c.match.path.isJSXElement()?Tr(c.match.path,l.match.path):c.match.path,g=xb(d.node,!0);if(!an.isJSXElement(g)&&!an.isJSXExpressionContainer(g)&&!an.isJSXFragment(g)&&!an.isJSXText(g))return K(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 K(t,"invalid-parent-child-relation","Cannot move a node relative to itself","jsx-node");bb(d);let S=u.node.children,E={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return S.push(g),mt(Qo(a.ast,t),a.ast,g,E);if(o==="prepend")return S.unshift(g),mt(Qo(a.ast,t),a.ast,g,E);let y=m-(h!==-1&&h<m?1:0);return S.splice(o==="before"?y:y+1,0,g),mt(Qo(a.ast,t),a.ast,g,E)}function bb(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(da());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(da());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(da());return}e.remove()}import*as Qu from"@babel/parser";import{cloneNode as Sb,nullLiteral as fa}from"@babel/types";function ri(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=Eb(t,s);if(!l.ok)return l.result;let u=se(c.ast,n);if(!u.ok)return{ok:!1,source:t,diagnostic:u.diagnostic};let f=se(c.ast,r);if(!f.ok)return{ok:!1,source:t,diagnostic:f.diagnostic};if(!f.match.path.isJSXElement()&&!f.match.path.isJSXFragment())return K(t,"unsupported-syntax","move-repeat-template-child target parent must be a JSXElement or JSXFragment","jsx-node");if(f.match.path.isJSXElement()){let v=f.match.path.node;if(!v.closingElement||v.openingElement.selfClosing)return K(t,"self-closing-element","Cannot move repeat child into self-closing element","jsx-node")}let m=f.match.path,d=null;if(i){let v=se(c.ast,i);if(!v.ok)return{ok:!1,source:t,diagnostic:v.diagnostic};let C=sn(f.match.path,v.match.path);if(!C)return K(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");m=C,d=v.match.path.node}else if(o==="before"||o==="after")return K(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");if(!u.match.path.isJSXElement())return K(t,"unsupported-syntax","move-repeat-template-child source must be a JSXElement","jsx-node");let g=m.node,h=Sb(l.node,!0);vb(u.match.path);let S={...a,sourceLocator:n,targetParentLocator:r},E=g.children;if(o==="append")return E.push(h),mt(ge(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),mt(ge(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S);let y=E.findIndex(v=>v===d);return y===-1?K(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?y:y+1,0,h),mt(ge(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S))}function Eb(e,t){try{let r=Qu.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:K(e,"unsupported-syntax","Repeat expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:K(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function vb(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(fa());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(fa());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(fa());return}e.remove()}import{SiteEditSetPropsParamsSchema as kb,classifySiteEditPropertyName as Ib}from"@vcp-dev/contracts";import*as Zn from"@babel/types";function oi(e){let t=kb.safeParse({kind:"set-props",scope:"selection",changes:e.changes});if(!t.success)return K(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=Hn(n.ast,e.locator,e.source);if(!r.ok)return r.result;for(let a of t.data.changes){let c=Ib(a.name);if(c.owner!=="generic")return K(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(Zn.isJSXAttribute),s=new Map;for(let a of i){let c=Cb(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 K(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=Nr(a.name,a.value).value;c?c.value=l:o.attributes.push(Nr(a.name,a.value))}return ge(n.ast,e.source,{kind:"set-props",target:"jsx-node",inverse:"set-props"})}function Cb(e){return Zn.isJSXIdentifier(e.name)?e.name.name:Zn.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import{SiteEditOperationParamsSchema as Rb}from"@vcp-dev/contracts";import*as z from"@babel/types";var qu=["prefetch","replace","scroll","locale","onNavigate"],wb=/^on(?:Click|DoubleClick|AuxClick|MouseDown|MouseUp|PointerDown|PointerUp|TouchStart|TouchEnd|KeyDown|KeyUp|ContextMenu)(?:Capture)?$/;function Nb(e){let t=e;for(;t;){if(t.isJSXElement()&&t.node.openingElement.attributes.some(n=>z.isJSXAttribute(n)&&z.isJSXIdentifier(n.name)&&wb.test(n.name.name)))return!0;t=t.parentPath}return!1}function ii(e){let t=Re(e.source,"jsx-node");if(!t.ok)return t.result;let n=Hn(t.ast,e.locator,e.source);if(!n.ok)return n.result;let r=Rb.safeParse({kind:"set-link-target",scope:"selection",link:e.link,changes:e.changes});if(!r.success||r.data.kind!=="set-link-target")return Ht(e.source,"Invalid typed link-target changes");let o=n.match.path,i=o.node,s=i.openingElement,a=Ob(s.name);if(!a)return Ht(e.source,"Unsupported JSX link tag");if(s.attributes.some(z.isJSXSpreadAttribute))return Ht(e.source,"Link elements with spread props cannot be transformed safely");let c=new Map;for(let g of s.attributes){if(!z.isJSXAttribute(g))continue;let h=ma(g);if(!h)return Ht(e.source,"Unsupported JSX attribute name");let S=c.get(h)??[];S.push(g),c.set(h,S)}if([...c.values()].some(g=>g.length>1))return Ht(e.source,"Duplicate JSX attributes cannot be transformed safely");let l=c.get("href")?.[0];if(l&&!Mb(l))return Ht(e.source,"Dynamic link href cannot be transformed safely");let u=a==="a",f=u?null:Tb(o,s.name);if(!u&&!f)return Ht(e.source,"Only native anchors and imported next/link components are supported");if(e.link.kind==="none"&&Nb(o))return Ht(e.source,"A link with an active event handler in its JSX ancestry cannot become an inert anchor");let m=null;if(e.link.kind==="internal-route")if(f)m=a;else{let g=Fb(t.ast,o);if(!g.ok)return Ht(e.source,g.reason);m=g.localName}if(f&&e.link.kind!=="internal-route"){let g=z.jsxIdentifier("a");s.name=g,i.closingElement&&(i.closingElement.name=z.jsxIdentifier("a")),_b(t.ast,f,o)}else m&&u&&(s.name=z.jsxIdentifier(m),i.closingElement&&(i.closingElement.name=z.jsxIdentifier(m)));let d=new Set;return e.link.kind==="none"?(d.add("href"),d.add("target"),d.add("rel"),qu.forEach(g=>d.add(g))):(d.add("href"),e.link.kind==="native-link"&&qu.forEach(g=>d.add(g))),s.attributes=s.attributes.filter(g=>{if(!z.isJSXAttribute(g))return!0;let h=ma(g);return!h||!d.has(h)}),e.link.kind!=="none"&&s.attributes.push(z.jsxAttribute(z.jsxIdentifier("href"),z.stringLiteral(e.link.href))),Pb(s,e.changes),ge(t.ast,e.source,{kind:"set-link-target",target:"jsx-node",inverse:"set-link-target"})}function Pb(e,t){for(let n of t){let r=e.attributes.find(s=>z.isJSXAttribute(s)&&ma(s)===n.name);if(n.operation==="remove"){e.attributes=e.attributes.filter(s=>s!==r);continue}let o=typeof n.value=="string"?z.stringLiteral(n.value):z.jsxExpressionContainer(pa(n.value)),i=z.jsxAttribute(z.jsxIdentifier(n.name),o);r&&z.isJSXAttribute(r)?r.value=i.value:e.attributes.push(i)}}function pa(e){return e===null?z.nullLiteral():typeof e=="string"?z.stringLiteral(e):typeof e=="number"?z.numericLiteral(e):typeof e=="boolean"?z.booleanLiteral(e):Array.isArray(e)?z.arrayExpression(e.map(t=>pa(t))):typeof e=="object"?z.objectExpression(Object.entries(e).map(([t,n])=>z.objectProperty(z.isValidIdentifier(t)?z.identifier(t):z.stringLiteral(t),pa(n)))):z.nullLiteral()}function Ab(e){return z.isImportDefaultSpecifier(e)||z.isImportSpecifier(e)&&e.importKind!=="type"&&(z.isIdentifier(e.imported,{name:"default"})||z.isStringLiteral(e.imported,{value:"default"}))}function ed(e){return!e.parentPath?.isImportDeclaration()||e.parentPath.node.importKind==="type"?!1:e.isImportDefaultSpecifier()||e.isImportSpecifier()&&e.node.importKind!=="type"&&(z.isIdentifier(e.node.imported,{name:"default"})||z.isStringLiteral(e.node.imported,{value:"default"}))}function Tb(e,t){if(!z.isJSXIdentifier(t))return null;let n=e.scope.getBinding(t.name);if(!n||!ed(n.path))return null;let r=n.path.parentPath;return!r?.isImportDeclaration()||r.node.source.value!=="next/link"?null:t.name}function Fb(e,t){let n=e.program.body.filter(c=>z.isImportDeclaration(c)&&c.source.value==="next/link"&&c.importKind!=="type"),r=n[0],o=n.flatMap(c=>c.specifiers).find(Ab);if(o)return t.scope.getBinding(o.local.name)?.path.node!==o?{ok:!1,reason:"The next/link import is shadowed at the selected element"}:{ok:!0,localName:o.local.name};let i=t.scope.getProgramParent(),s=["Link","NextLink",...Array.from({length:20},(c,l)=>`NextLink${l+2}`)].find(c=>!i.hasBinding(c)&&!t.scope.hasBinding(c));if(!s)return{ok:!1,reason:"Cannot create an unshadowed runtime next/link import"};let a=z.importDefaultSpecifier(z.identifier(s));if(r)r.specifiers.unshift(a);else{let c=z.importDeclaration([a],z.stringLiteral("next/link")),l=0;for(;l<e.program.body.length&&z.isImportDeclaration(e.program.body[l]);)l+=1;e.program.body.splice(l,0,c)}return{ok:!0,localName:s}}function _b(e,t,n){let r=n.scope.getProgramParent();r.crawl();let o=r.getBinding(t);if(!o||!ed(o.path)||o.referenced)return;let i=o.path.parentPath;if(!(!i?.isImportDeclaration()||i.node.source.value!=="next/link")&&(i.node.specifiers=i.node.specifiers.filter(s=>s!==o.path.node),i.node.specifiers.length===0)){let s=e.program.body.indexOf(i.node);s>=0&&e.program.body.splice(s,1)}}function Mb(e){return!e.value||z.isStringLiteral(e.value)}function Ob(e){return z.isJSXIdentifier(e)?e.name:null}function ma(e){return z.isJSXIdentifier(e.name)?e.name.name:null}function Ht(e,t){return K(e,"unsupported-syntax",t,"jsx-node")}import*as Ke from"@babel/types";import{classifySiteEditPropertyName as td}from"@vcp-dev/contracts";function si(e){let t=td(e.name),n=td(e.property);if(t.owner!=="generic"||n.owner!=="generic")return K(e.source,"unsupported-syntax","Property binding is only available for generic properties","jsx-node");if(!nd(e.object))return K(e.source,"unsupported-syntax","Property binding object must be a single identifier","jsx-node");if(e.property.length===0)return K(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=Hn(r.ast,e.locator,e.source);if(!o.ok)return o.result;let i=o.match.path.node.openingElement,s=i.attributes.filter(l=>Ke.isJSXAttribute(l)&&Db(l)===e.name);if(s.length>1)return K(e.source,"unsupported-syntax",`JSX attribute '${e.name}' has multiple sources`,"jsx-node");let a=Lb(e.object,e.property),c=s[0];if(c)c.value=Ke.jsxExpressionContainer(a);else{let l=Nr(e.name,"");l.value=Ke.jsxExpressionContainer(a),i.attributes.push(l)}return ge(r.ast,e.source,{kind:"set-property-binding",target:"jsx-node",inverse:"restore-property-binding"})}function Lb(e,t){return nd(t)?Ke.memberExpression(Ke.identifier(e),Ke.identifier(t)):Ke.memberExpression(Ke.identifier(e),Ke.stringLiteral(t),!0)}function nd(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)}function Db(e){return Ke.isJSXIdentifier(e.name)?e.name.name:Ke.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import{getBindingIdentifiers as jb,identifier as Fr,importDeclaration as $b,importDefaultSpecifier as Vb,importNamespaceSpecifier as Kb,importSpecifier as Ub,isImportDefaultSpecifier as rd,isImportNamespaceSpecifier as od,isImportSpecifier as id,stringLiteral as Jb}from"@babel/types";function Qn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(S=>!qb(S));if(o!==-1){let S=r[o],E=S&&typeof S=="object"&&"kind"in S?S.kind:void 0;return K(t,"unsupported-syntax",`Unsupported import spec kind: ${String(E)}`)}let i=Yb(r);if(!i.ok)return K(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 y=eS(S,E);return y?[y]:[]}))),f=i.imports.filter(S=>!u.has(dd(S)));if(f.length===0)return wr(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let m=Zb(c.body),d=f.find(S=>m.has(ga(S)));if(d)return K(t,"unsupported-syntax",`Import local binding already exists: ${ga(d)}`);let g=Gb(f);if(g.reduce((S,E)=>S+E.length,0)!==f.length)return K(t,"unsupported-syntax","Unsupported import specifier grouping");for(let S of g){if(!ld(ad(S)))return K(t,"unsupported-syntax","Unsupported import specifier combination");let E=l.find(y=>Xb(y,S));if(E)zb(E,S);else{let y=$b(sd(S),Jb(n));Qb(c.body,y),l.push(y)}}return ge(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function Xb(e,t){return e.importKind==="type"?!1:ld(Wb(Hb(e),ad(t)))}function zb(e,t){let n=!1,r=new Set(e.specifiers.map(o=>ha(o)));for(let o of sd(t)){let i=ha(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return ud(e.specifiers),{changed:n}}function sd(e){let t=e.map(n=>{switch(n.kind){case"named":return Ub(n.local?Fr(n.local):Fr(n.imported),Fr(n.imported));case"default":return Vb(Fr(n.local));case"namespace":return Kb(Fr(n.local));default:return n}});return ud(t),t}function ad(e){let t=cd();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 Hb(e){let t=cd();for(let n of e.specifiers)rd(n)?t.defaultLocals.add(n.local.name):od(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function cd(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function Wb(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function ld(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function ud(e){let t=[...e.filter(n=>rd(n)),...e.filter(n=>od(n)),...e.filter(n=>id(n))];e.splice(0,e.length,...t)}function Gb(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 Yb(e){let t=new Map,n=new Map;for(let r of e){let o=dd(r);if(t.has(o))continue;let i=ga(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 Zb(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(jb(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 Qb(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 qb(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 dd(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 ga(e){return e.kind==="named"?e.local??e.imported:e.local}function eS(e,t){return e.importKind==="type"||id(t)&&t.importKind==="type"?null:ha(t)}function ha(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 qn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(u=>!nS(u));if(o!==-1){let u=r[o],f=u&&typeof u=="object"&&"kind"in u?u.kind:void 0;return K(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 wr(t,t,{kind:"remove-import",target:"import",inverse:"add-import"});let l=a.body[c];return r.length===0?(a.body.splice(c,1),ge(s,t,{kind:"remove-import",target:"import",inverse:"add-import"})):(l.specifiers=l.specifiers.filter(u=>!r.some(f=>tS(u,f))),l.specifiers.length===0&&a.body.splice(c,1),ge(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function tS(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 nS(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 _r(e){let{source:t,locator:n,next:r}=e,o=ui(t,n);return o.ok?(o.path.replaceWith(on(r)),ge(o.ast,t,{kind:"update-value",target:"value",inverse:"restore-value"})):o.result}function ai(e){let{source:t,locator:n,index:r,value:o}=e,i=ui(t,n);return i.ok?i.path.isArrayExpression()?i.path.node.elements.some(s=>s?.type==="SpreadElement")?K(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>i.path.node.elements.length?K(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(i.path.node.elements.splice(r,0,on(o)),ge(i.ast,t,{kind:"insert-array-element",target:"value",inverse:"remove-array-element"})):K(t,"unsupported-syntax","Array operations require array expression target","value"):i.result}function ci(e){let{source:t,locator:n,index:r}=e,o=ui(t,n);return o.ok?o.path.isArrayExpression()?o.path.node.elements.some(i=>i?.type==="SpreadElement")?K(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>=o.path.node.elements.length?K(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(o.path.node.elements.splice(r,1),ge(o.ast,t,{kind:"remove-array-element",target:"value",inverse:"insert-array-element"})):K(t,"unsupported-syntax","Array operations require array expression target","value"):o.result}function li(e){let{source:t,locator:n,fromIndex:r,toIndex:o}=e,i=ui(t,n);if(!i.ok)return i.result;if(!i.path.isArrayExpression())return K(t,"unsupported-syntax","Array operations require array expression target","value");if(i.path.node.elements.some(c=>c?.type==="SpreadElement"))return K(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 K(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),ge(i.ast,t,{kind:"move-array-element",target:"value",inverse:"move-array-element-back"})}function ui(e,t){let n=Re(e,"value");if(!n.ok)return{ok:!1,result:n.result};let r=se(n.ast,t);return r.ok?{ok:!0,ast:n.ast,path:r.match.path}:{ok:!1,result:{ok:!1,source:e,diagnostic:r.diagnostic}}}import*as Xe from"@babel/types";function di(e){let t=Re(e.source,"value");if(!t.ok)return t.result;let n=se(t.ast,e.objectLocator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};if(!n.match.path.isObjectExpression())return K(e.source,"unsupported-syntax","Object property upsert requires an ObjectExpression parent","value");let r=n.match.path.node;if(r.properties.some(a=>Xe.isSpreadElement(a)||Xe.isObjectProperty(a)&&a.computed))return K(e.source,"unsupported-syntax","Object property upsert does not support spreads or computed keys","value");let o=r.properties.filter(a=>Xe.isObjectProperty(a)&&rS(a.key)===e.name);if(o.length>1)return K(e.source,"unsupported-syntax",`Object property '${e.name}' has multiple sources`,"value");let i=e.value.kind==="undefined"?Xe.unaryExpression("void",Xe.numericLiteral(0)):on(e.value.value),s=o[0];if(s)s.value=i,s.shorthand=!1;else{let a=Xe.objectProperty(sa(e.name),i);e.name==="__proto__"&&(a.computed=!0),r.properties.push(a)}return ge(t.ast,e.source,{kind:"upsert-object-property",target:"value",inverse:"restore-object-property"})}function rS(e){return Xe.isIdentifier(e)?e.name:Xe.isStringLiteral(e)?e.value:Xe.isNumericLiteral(e)?String(e.value):null}import{isSiteEditRuntimeContainerTag as oS,isSiteEditRuntimeVoidElementTag as iS}from"@vcp-dev/contracts/site-edit-runtime-capability";function er(e){if(!e.composition)throw new Error("Composition unavailable for render source graph.");return e.composition}function sS(e,t,n){let r=er(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(C=>({kind:C.kind,message:C.reason})),a=i.isOpaque,l=o.parentKey===null&&i.componentName==="Page",u=i.tag.toLowerCase(),f=i.tag!==u,m=!f&&iS(u),d=f||oS(u),g=f&&i.childKeys.length>0&&!i.isPublicUiComponent,h=i.textSegments.length>0&&i.textSegments.some(C=>C.editable);m&&!s.some(C=>C.kind==="void-element")&&s.push({kind:"void-element",message:`Element '${i.tag}' is void: children cannot be inserted`}),!m&&!d&&!s.some(C=>C.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 fd(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,sS(r,e,t));return n}function ya(e){let t=e.route.graph.elements.get(e.key);if(!t)return{key:e.key,composition:e.route.composition,filePath:"",componentName:"",sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:ve(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Key not found: ${e.key}`}]};let n=aS(e.route.source,t);if(!n)return{key:e.key,composition:e.route.composition,filePath:t.sourceFile,componentName:t.componentName,sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:ve(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Unable to locate JSX element for key ${t.identity.key}`}]};let r=n.openingElement,o=r.attributes.find(c=>c.type==="JSXAttribute"&&c.name.type==="JSXIdentifier"&&c.name.name==="className"),i={key:e.key,composition:e.route.composition,filePath:t.sourceFile,componentName:t.componentName,openingElementRange:md(r),version:{documentVersion:e.route.graph.version,contentHash:ve(e.route.source)}};if(!o)return{...i,sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,diagnostics:[{code:"missing-class-name",message:"No className attribute is present on this element."}]};let s=o.value,a=s?.type==="StringLiteral"?"stringLiteral":"expression";return{...i,sourceKind:a,attrRaw:pd(e.route.source,o),valueRaw:s?pd(e.route.source,s):null,attrRange:md(o),diagnostics:[]}}function gd(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 aS(e,t){let n=Pt({source:e,profile:vn({filePath:t.sourceFile,source:e})});if(!n.ok)return null;let r=se(n.ast,{kind:"jsx-node",strategy:"structural-path",file:t.identity.file,component:t.identity.component,structuralPath:t.identity.structuralPath,expectedRange:cS(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function hd(e){let t=Pt({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 pd(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function md(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 cS(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function yd(){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 lS}from"node:crypto";import fi from"node:fs/promises";import xa from"node:path";import{setTimeout as uS}from"node:timers/promises";var dS={async mkdir(e,t){await fi.mkdir(e,t)},async writeFile(e,t,n){await fi.writeFile(e,t,n)},async rename(e,t){await fi.rename(e,t)},async rm(e,t){await fi.rm(e,t)}},fS=new Set(["EACCES","EBUSY","EPERM"]),pS=[10,20,40,80,160];async function mS(e,t,n){for(let r of pS)try{await e.rename(t,n);return}catch(o){if(!gS(o))throw o;await uS(r)}await e.rename(t,n)}function gS(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&fS.has(e.code)}async function pi(e,t,n=dS){let r=xa.dirname(e),o=xa.basename(e),i=xa.join(r,`.${o}.${process.pid}.${lS()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await mS(n,i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import ba from"@babel/traverse";import*as k from"@babel/types";import*as ue from"@babel/types";function _t(e,t={}){if(ue.isTSAsExpression(e)||ue.isTSSatisfiesExpression(e)||ue.isTSNonNullExpression(e)||ue.isTypeCastExpression(e)||ue.isParenthesizedExpression(e))return _t(e.expression,t);if(ue.isStringLiteral(e))return{status:"resolved",value:e.value};if(ue.isNumericLiteral(e))return Number.isFinite(e.value)?{status:"resolved",value:e.value}:{status:"unresolved"};if(ue.isBooleanLiteral(e))return{status:"resolved",value:e.value};if(ue.isNullLiteral(e))return{status:"resolved",value:null};if(ue.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?{status:"resolved",value:e.quasis[0].value.cooked??e.quasis[0].value.raw}:{status:"unresolved"};if(ue.isIdentifier(e))return e.name==="undefined"&&!t.resolveIdentifier?{status:"undefined"}:t.resolveIdentifier?.(e.name)??{status:"unresolved"};if(ue.isUnaryExpression(e)&&e.operator==="void"&&ue.isNumericLiteral(e.argument)&&e.argument.value===0)return{status:"undefined"};if(ue.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||ue.isSpreadElement(r))return{status:"unresolved"};let o=_t(r,t);if(o.status!=="resolved")return{status:"unresolved"};n.push(o.value)}return{status:"resolved",value:n}}if(ue.isObjectExpression(e)){let n=Object.create(null);for(let r of e.properties){if(!ue.isObjectProperty(r)||r.computed||!ue.isExpression(r.value))return{status:"unresolved"};let o=hS(r.key);if(o===null)return{status:"unresolved"};let i=_t(r.value,t);if(i.status!=="resolved")return{status:"unresolved"};Object.defineProperty(n,o,{configurable:!0,enumerable:!0,value:i.value,writable:!0})}return{status:"resolved",value:n}}return ue.isMemberExpression(e)||ue.isOptionalMemberExpression(e)?t.resolveMember?.(e)??{status:"unresolved"}:{status:"unresolved"}}function hS(e){return ue.isIdentifier(e)?e.name:ue.isStringLiteral(e)?e.value:ue.isNumericLiteral(e)?String(e.value):null}var yS=typeof ba=="function"?ba:ba.default;function Ye(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 xS(e){return/^[A-Z]/.test(e)}function Ia(e){let t=e.openingElement;return k.isJSXIdentifier(t.name)?t.name.name==="Fragment":k.isJSXMemberExpression(t.name)?t.name.property.name==="Fragment":!1}function nr(e){return k.isJSXFragment(e)}function bd(e){return k.isJSXIdentifier(e.name)?e.name.name:k.isJSXMemberExpression(e.name)?Sd(e.name):k.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function Sd(e){return k.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:k.isJSXMemberExpression(e.object)?`${Sd(e.object)}.${e.property.name}`:e.property.name}function bS(e){return e.split(".")[0]??e}function SS(e){let t=e;for(;t;){let n=t.node;if(k.isFunctionDeclaration(n)&&n.id||k.isVariableDeclarator(n)&&k.isIdentifier(n.id))return n.id.name;if(k.isExportDefaultDeclaration(n)){let r=n.declaration;if(k.isFunctionDeclaration(r)&&r.id)return r.id.name;if(k.isFunctionDeclaration(r)&&!r.id)return"default"}t=t.parentPath}return null}function ES(){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 vS(e){let t=new Map;for(let n of e.program.body){if(!k.isImportDeclaration(n))continue;let r=n.source.value;for(let o of n.specifiers)if(k.isImportDefaultSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"default"});else if(k.isImportNamespaceSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"*"});else if(k.isImportSpecifier(o)){let i=k.isIdentifier(o.imported)?o.imported.name:o.imported.value;t.set(o.local.name,{specifier:r,exportName:i})}}return t}function Wt(e,t=[]){if(k.isIdentifier(e))return t.push(e.name),t;if(k.isObjectPattern(e)){for(let n of e.properties)k.isObjectProperty(n)?Wt(n.value,t):k.isRestElement(n)&&Wt(n.argument,t);return t}if(k.isArrayPattern(e)){for(let n of e.elements)n&&(k.isRestElement(n)?Wt(n.argument,t):Wt(n,t));return t}return k.isAssignmentPattern(e)?(Wt(e.left,t),t):(k.isRestElement(e)&&Wt(e.argument,t),t)}function Et(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function Mr(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 kS(e,t,n){e.set(t,{resolved:!0,value:n})}function Ca(e,t){e.set(t,{resolved:!1})}function Ed(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 $e(e,t,n){if(k.isTSAsExpression(e)||k.isTSSatisfiesExpression(e)||k.isTSNonNullExpression(e)||k.isTypeCastExpression(e)||k.isParenthesizedExpression(e))return $e(e.expression,t,n);if(k.isLogicalExpression(e))return mi([$e(e.left,t,n),$e(e.right,t,n)]);if(k.isBinaryExpression(e))return mi([k.isExpression(e.left)?$e(e.left,t,n):null,k.isExpression(e.right)?$e(e.right,t,n):null]);if(k.isConditionalExpression(e))return mi([$e(e.consequent,t,n),$e(e.alternate,t,n)]);if(k.isTemplateLiteral(e))return mi(e.expressions.filter(k.isExpression).map(i=>$e(i,t,n)));if(k.isIdentifier(e))return{kind:"identifier",expression:e.name,base:e.name,path:[]};if(!k.isMemberExpression(e)&&!k.isOptionalMemberExpression(e))return null;let r=[],o=e;for(;k.isMemberExpression(o)||k.isOptionalMemberExpression(o);){if(o.computed)if(k.isNumericLiteral(o.property))r.unshift({kind:"index",index:o.property.value});else if(k.isStringLiteral(o.property))r.unshift({kind:"property",name:o.property.value});else if(n&&k.isExpression(o.property)){let i=cn(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(!k.isIdentifier(o.property))return null;r.unshift({kind:"property",name:o.property.name})}o=o.object}return k.isIdentifier(o)?{kind:r.some(i=>i.kind==="index")?"index-expression":"member-expression",expression:Et(e,t),base:o.name,path:r}:null}function mi(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 cn(e,t){if(k.isStringLiteral(e)||k.isNumericLiteral(e)||k.isBooleanLiteral(e))return e.value;if(k.isNullLiteral(e))return null;if(k.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(k.isIdentifier(e)){let n=Mr(e.name,t.valueScopes);return n.kind==="resolved"?n.value:void 0}if(k.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||k.isSpreadElement(r))return;let o=cn(r,t);if(o===void 0)return;n.push(o)}return n}if(k.isObjectExpression(e)){let n={};for(let r of e.properties){if(!k.isObjectProperty(r)||r.computed||!k.isExpression(r.value))return;let o=null;if(k.isIdentifier(r.key)?o=r.key.name:k.isStringLiteral(r.key)&&(o=r.key.value),!o)return;let i;if(r.shorthand){if(!k.isIdentifier(r.value))return;let s=Mr(r.value.name,t.valueScopes);if(s.kind!=="resolved")return;i=s.value}else i=cn(r.value,t);if(i===void 0)return;n[o]=i}return n}if(k.isMemberExpression(e)){let n=$e(e,"",t);if(!n)return;let r=Mr(n.base,t.valueScopes);if(r.kind!=="resolved")return;let o=Ed(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(k.isCallExpression(e))return kd(e,t)??void 0}function vd(e,t,n){let r=$e(e,n,t);if(!r)return k.isMemberExpression(e)||k.isBinaryExpression(e)||k.isLogicalExpression(e)||k.isConditionalExpression(e)||k.isCallExpression(e)?{value:Et(e,n),source:null}:null;let o=Mr(r.base,t.valueScopes),i=r.kind==="identifier"?o:o.kind==="resolved"?Ed(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 Sa(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:ES(),parentStack:[],valueScopes:i,importMap:o}}function va(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of Wt(o.id))Ca(n,s);if(!k.isIdentifier(o.id)||!o.init||!k.isExpression(o.init))continue;let i=cn(o.init,t);i!==void 0&&kS(n,o.id.name,i)}}function IS(e){let t=[];for(let n of e){if(k.isVariableDeclaration(n)){t.push(n);continue}k.isExportNamedDeclaration(n)&&n.declaration&&k.isVariableDeclaration(n.declaration)&&t.push(n.declaration)}return t}function CS(e,t,n){let r=[],o=0;for(let i of e)if(k.isJSXText(i)){let s=i.value.trim();s&&r.push({index:o++,value:s,sourceRange:Ye(i),editable:!0,source:null})}else if(k.isJSXExpressionContainer(i)&&k.isStringLiteral(i.expression))r.push({index:o++,value:i.expression.value,sourceRange:Ye(i),editable:!0,source:null});else if(k.isJSXExpressionContainer(i)&&k.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:Ye(i),editable:!0,source:null}):r.push({index:o++,value:Et(s,n),sourceRange:Ye(i),editable:!0,source:$e(s,n,t)})}else if(k.isJSXExpressionContainer(i)&&k.isExpression(i.expression)){let s=vd(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:Ye(i),editable:!0,source:s.source})}return r}function RS(e,t,n){let r=[];for(let[o,i]of e.attributes.entries()){if(!k.isJSXAttribute(i))continue;let s=NS(i.name);if(!s)continue;let a=Et(i,n);if(k.isStringLiteral(i.value)){r.push({name:s,value:i.value.value,sourceRange:Ye(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:Ye(i),source:null,syntaxKind:"boolean-shorthand",raw:a,order:o,resolution:{status:"resolved",value:!0},resolvedValue:!0});continue}if(k.isJSXExpressionContainer(i.value)&&k.isExpression(i.value.expression)){let c=cn(i.value.expression,t);if(s==="className"){let d=typeof c=="string"?c:c===void 0?kd(i.value.expression,t):null;if(d){r.push({name:s,value:d,sourceRange:Ye(i),source:null,resolvedValue:d,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:d}});continue}}let l=vd(i.value.expression,t,n);if(c!==void 0){r.push({name:s,value:OS(c),sourceRange:Ye(i),source:$e(i.value.expression,n,t),resolvedValue:c,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:c}});continue}let u=PS(i.value.expression,t),f=$e(i.value.expression,n,t),m=l?.value??Et(i.value.expression,n);r.push({name:s,value:u.status==="undefined"?"undefined":m,sourceRange:Ye(i),source:l?.source??f,syntaxKind:"expression",raw:a,order:o,resolution:u})}}return r}function wS(e,t,n){return e.attributes.flatMap((r,o)=>!k.isJSXSpreadAttribute(r)||!k.isExpression(r.argument)?[]:[{raw:Et(r.argument,n),sourceRange:Ye(r),order:o,source:$e(r.argument,n,t)}])}function NS(e){return k.isJSXIdentifier(e)?e.name:k.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function PS(e,t){return _t(e,{resolveIdentifier(n){let r=Mr(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=cn(n,t);return r===void 0?{status:"unresolved"}:{status:"resolved",value:r}}})}function kd(e,t){let n=tr(e,t);return n&&n.map(o=>o.trim()).filter(Boolean).join(" ")||null}function tr(e,t){if(k.isStringLiteral(e))return[e.value];if(k.isTemplateLiteral(e))return e.expressions.length>0?null:[e.quasis.map(n=>n.value.cooked??"").join("")];if(k.isNullLiteral(e))return[];if(k.isBooleanLiteral(e))return e.value?null:[];if(k.isIdentifier(e)||k.isMemberExpression(e)){if(k.isIdentifier(e)&&e.name==="undefined")return[];let n=cn(e,t);return typeof n=="string"?[n]:null}if(k.isConditionalExpression(e)){let n=tr(e.consequent,t),r=tr(e.alternate,t);return!n||!r?null:[...n,...r]}if(k.isLogicalExpression(e)){if(e.operator!=="&&")return null;let n=cn(e.left,t);return n===!1||n===null?[]:tr(e.right,t)}if(k.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||k.isSpreadElement(r))return null;let o=tr(r,t);if(!o)return null;n.push(...o)}return n}if(k.isObjectExpression(e)){let n=[];for(let r of e.properties){if(!k.isObjectProperty(r))return null;let o=TS(r.key);if(!o)return null;n.push(o)}return n}if(k.isCallExpression(e)){let n=AS(e.callee);if(!n||!["cn","clsx","twMerge"].includes(n))return null;let r=[];for(let o of e.arguments){if(!k.isExpression(o))return null;let i=tr(o,t);if(!i)return null;r.push(...i)}return r}return null}function AS(e){return k.isIdentifier(e)?e.name:k.isMemberExpression(e)&&k.isIdentifier(e.property)?e.property.name:null}function TS(e){return k.isIdentifier(e)?e.name:k.isStringLiteral(e)?e.value:null}function FS(e,t){let n=e.attributes.find(r=>k.isJSXAttribute(r)&&k.isJSXIdentifier(r.name)&&r.name.name===t);return!n||!k.isJSXAttribute(n)||!k.isJSXExpressionContainer(n.value)?null:n.value.expression}function _S(e,t){for(let n of t){let r=FS(e,n);if(r)return r}return null}function MS(e){return k.isJSXIdentifier(e.name)?e.name.name:null}function OS(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function LS(e){if(!k.isCallExpression(e)&&!k.isOptionalCallExpression(e))return null;let t=e.callee;return!k.isMemberExpression(t)&&!k.isOptionalMemberExpression(t)||!k.isIdentifier(t.property)||t.property.name!=="map"||t.computed||!k.isExpression(t.object)?null:{call:e,collection:t.object,callback:e.arguments[0]}}function Ea(e){return k.isArrowFunctionExpression(e)||k.isFunctionExpression(e)}function DS(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function BS(e){return e==="empty"||e==="emptyRender"||e==="loading"||e==="loadingRender"||e==="error"||e==="errorRender"||e==="fallback"||e==="headerRender"||e==="footerRender"}function xd(e,t,n,r){if(!e||!k.isExpression(e))return null;let o={kind:"repeat-template",collectionExpression:Et(e,n),collectionSource:$e(e,n,r)};if(t){let i=t.params[0],s=t.params[1];k.isIdentifier(i)&&(o.itemParamName=i.name),k.isIdentifier(s)&&(o.indexParamName=s.name)}return o}function Gt(e,t,n){if(!e)return[];if(k.isJSXElement(e)){if(Ia(e))return bi(e.children,t,n);let r=yi(e,t,n);return r?[r]:[]}return nr(e)?xi(e,t,n):k.isParenthesizedExpression(e)?Gt(e.expression,t,n):k.isExpression(e)?Si(e,t,n):[]}function gi(e,t,n){let r=new Map;for(let o of e.params)for(let i of Wt(o))Ca(r,i);t.valueScopes.push(r);try{if(!k.isBlockStatement(e.body))return Gt(e.body,t,n);let o=new Map;t.valueScopes.push(o);try{return Id(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function Id(e,t,n){let r=[];for(let o of e){if(k.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];if(i){va([o],t,i);for(let s of o.declarations)k.isIdentifier(s.id)&&(k.isJSXElement(s.init)||k.isJSXFragment(s.init))&&r.push(...Gt(s.init,t,n))}continue}r.push(...ka(o,t,n))}return r}function ka(e,t,n){if(k.isReturnStatement(e))return e.argument?Gt(e.argument,t,n):[];if(k.isBlockStatement(e))return Nn(e.body,t,n);if(k.isIfStatement(e)){let r=k.isBlockStatement(e.consequent)?Nn(e.consequent.body,t,n):ka(e.consequent,t,n),o=e.alternate?k.isBlockStatement(e.alternate)?Nn(e.alternate.body,t,n):ka(e.alternate,t,n):[];return[...r,...o]}if(k.isSwitchStatement(e))return Nn(e.cases.flatMap(r=>r.consequent),t,n);if(k.isTryStatement(e)){let r=Nn(e.block.body,t,n);return e.handler&&r.push(...Nn(e.handler.body.body,t,n)),e.finalizer&&r.push(...Nn(e.finalizer.body,t,n)),r}return[]}function Nn(e,t,n){let r=new Map;t.valueScopes.push(r);try{return Id(e,t,n)}finally{t.valueScopes.pop()}}function hi(e,t,n,r,o,i){o.length!==0&&e.regions.push({kind:t,ownerKey:n,childKeys:o,sourceRange:Ye(r),sourceCandidates:i&&i.length>0?i:void 0})}function jS(e,t,n,r){let o=_S(e.openingElement,["items","dataSource","data"]),i={key:t,tag:bd(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!k.isJSXAttribute(s))continue;let a=MS(s);if(!a||!k.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!k.isJSXEmptyExpression(c)){if(DS(a)&&Ea(c)){let l=gi(c,n,r),u=xd(o,c,r,n);hi(n,"repeat-region",t,s,l,u?[u]:void 0);continue}if(BS(a)){let l=Ea(c)?gi(c,n,r):Gt(c,n,r);hi(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!k.isJSXExpressionContainer(s)||!Ea(s.expression))continue;let a=gi(s.expression,n,r),c=xd(o,s.expression,r,n);hi(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function yi(e,t,n){let r=bd(e.openingElement);if(r==="Fragment"||Ia(e))return bi(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=xS(r),a;if(s){let C=t.ordinalTracker.getOrdinal(i,r);a=`component:${r}#${C}`}else{let C=t.ordinalTracker.getOrdinal(i,r);a=`${r}#${C}`}let c=o?t.elements.get(o.key)?.identity.structuralPath:void 0,l=c?`${c}/${a}`:a,u=Pr(t.file,t.componentName,l),f={file:t.file,component:t.componentName,structuralPath:l,key:u},m=s?"component-boundary":null,d=CS(e.children,t,n),g=RS(e.openingElement,t,n),h=wS(e.openingElement,t,n),S,E,y=!1;if(s){let C=t.importMap.get(r)??t.importMap.get(bS(r));C&&(S=C.specifier,E=C.exportName,y=kn(C.specifier,t.file))}let v={identity:f,tag:r,componentName:t.componentName,sourceFile:t.file,sourceRange:Ye(e),parentKey:i,childKeys:[],textSegments:d,attributes:g.length>0?g:void 0,attributeSpreads:h.length>0?h:void 0,boundaryKind:m,isOpaque:s,...y?{isPublicUiComponent:!0}:{},importedFrom:S,exportName:E};return t.elements.set(u,v),i&&t.elements.has(i)&&t.elements.get(i).childKeys.push(u),jS(e,u,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:u,tag:r}),$S(e.children,t,n),t.parentStack.pop()),u}function xi(e,t,n){return bi(e.children,t,n)}function bi(e,t,n){let r=[];for(let o of e)if(k.isJSXElement(o))if(Ia(o))r.push(...bi(o.children,t,n));else{let i=yi(o,t,n);i&&r.push(i)}else nr(o)?r.push(...xi(o,t,n)):k.isJSXExpressionContainer(o)&&r.push(...Si(o.expression,t,n));return r}function $S(e,t,n){for(let r of e)k.isJSXElement(r)?yi(r,t,n):nr(r)?xi(r,t,n):k.isJSXExpressionContainer(r)&&Si(r.expression,t,n)}function VS(e){return e==="&&"||e==="||"||e==="??"}function Si(e,t,n){if(k.isJSXEmptyExpression(e))return[];let r=LS(e);if(r){let o=r.call,i=t.parentStack[t.parentStack.length-1]??null,s=[],a=r.callback,c={kind:"repeat-template",collectionExpression:Et(r.collection,n),collectionSource:$e(r.collection,n,t)};if(k.isArrowFunctionExpression(a)||k.isFunctionExpression(a)){let u=a.params[0],f=a.params[1];k.isIdentifier(u)&&(c.itemParamName=u.name),k.isIdentifier(f)&&(c.indexParamName=f.name)}s.push(c);let l={kind:"repeat-region",ownerKey:i?.key??"",childKeys:[],sourceRange:Ye(o),sourceCandidates:s.length>0?s:void 0};return t.regions.push(l),(k.isArrowFunctionExpression(a)||k.isFunctionExpression(a))&&l.childKeys.push(...gi(a,t,n)),l.childKeys}if(k.isConditionalExpression(e)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:Et(e.test,n),conditionSource:$e(e.test,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Ye(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Gt(e.consequent,t,n)),s.childKeys.push(...Gt(e.alternate,t,n)),s.childKeys}if(k.isLogicalExpression(e)&&VS(e.operator)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:Et(e.left,n),conditionSource:$e(e.left,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Ye(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Gt(e.right,t,n)),s.childKeys}if(k.isParenthesizedExpression(e))return Si(e.expression,t,n);if(k.isJSXElement(e)){let o=yi(e,t,n);return o?[o]:[]}return nr(e)?xi(e,t,n):[]}function KS(e){let t=e.argument;return t&&(k.isExpression(t)||nr(t))?t:null}function Or(e,t){let n=[];for(let r of e){if(k.isReturnStatement(r)){let o=KS(r);o&&n.push({argument:o,statement:r,condition:t});continue}if(k.isIfStatement(r)){let o=k.isBlockStatement(r.consequent)?r.consequent.body:[r.consequent];if(n.push(...Or(o,r.test)),r.alternate){let i=k.isBlockStatement(r.alternate)?r.alternate.body:[r.alternate];n.push(...Or(i,r.test))}continue}if(k.isSwitchStatement(r))for(let o of r.cases){let i=o.test?k.binaryExpression("===",r.discriminant,o.test):r.discriminant;n.push(...Or(o.consequent,i))}}return n}function Cd(e){return{routeId:e,rootKeys:[],elements:new Map,regions:[],fileIndex:new Map,version:1,diagnostics:[]}}function Rd(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=vS(r);yS(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(f){let m=SS(f);if(!m)return;let d=f.node,g=[];if(k.isArrowFunctionExpression(d))k.isExpression(d.body)||nr(d.body)?g=[{argument:d.body,statement:k.returnStatement(k.isExpression(d.body)?d.body:null)}]:k.isBlockStatement(d.body)&&(g=Or(d.body.body));else{let C=d.body;k.isBlockStatement(C)&&(g=Or(C.body))}if(g.length===0){f.skip();return}let h=new Map;va(IS(r.program.body),Sa(t,m,i,s,l,[h]),h);let S=new Map;for(let C of d.params)for(let N of Wt(C))Ca(S,N);let E=k.isBlockStatement(d.body)?d.body.body:[],y=g[0]?.statement??null;for(let C of E){if(y&&C===y)break;k.isVariableDeclaration(C)&&va([C],Sa(t,m,i,s,l,[h,S]),S)}let v=Sa(t,m,i,s,l,[h,S]);for(let C of g){let N=Gt(C.argument,v,n);for(let A of N)a.includes(A)||a.push(A);if(C.condition){let A={kind:"conditional-branch",conditionExpression:Et(C.condition,n),conditionSource:$e(C.condition,n,v)};hi(v,"conditional-region","",C.statement,N,[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 Ra(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function Ei(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function wd(e,t,n,r,o={}){let i=o.maxDepth??10,s=o.version??1,a=o.parseModule??Ut,c=new Map,l=new Map,u=new Map,f=[],m=new Set,d=E=>{let y=`${E.path}\0${E.code}\0${E.message}\0${JSON.stringify(E.details??{})}`;m.has(y)||(m.add(y),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:y,source:v,depth:C,diagnosticEntryFile:N,importStack:A}=E;if(h.has(y))continue;h.add(y),c.set(y,v);let R=a(y,v);if(!R.ok){d(Ei(R.diagnostic,N,A));continue}u.set(y,R.module);let{graph:F,localImports:_}=o.validationOnly&&C<i?{graph:Cd(y),localImports:R.module.imports.map(L=>L.specifier)}:Rd(R.module);for(let L of F.elements.values())if(L.importedFrom&&Nt(L.importedFrom)){let U=L.importedFrom,te=await Oo(y,U,r);te.ok?(L.importedFrom=te.path,Jt(te.path)&&(L.isPublicUiComponent=!0)):kn(U,y)||d(Ei(te.diagnostic,N,Ra(A,y,U,te.diagnostic.path)))}if(l.set(y,F),!(C>=i))for(let L of _){if(au(L))continue;let U=await Oo(y,L,r);if(!U.ok){kn(L,y)||d(Ei(U.diagnostic,N,Ra(A,y,L,U.diagnostic.path)));continue}let te=U.path;if(h.has(te)||Jt(te))continue;let Ne=Ra(A,y,L,te);try{let q=await n(te);g.push({file:te,source:q,depth:C+1,diagnosticEntryFile:N,importStack:Ne})}catch(q){d(Ei({path:te,code:"import-read-failed",message:`Failed to read imported file: ${te}`,details:{fromFile:y,specifier:L,reason:q instanceof Error?q.message:String(q)}},N,Ne))}}}let S=US(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 US(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 xE}from"@vcp-dev/contracts";import{createHash as JS,randomUUID as La}from"node:crypto";import Oe from"node:fs/promises";import Le from"node:path";var Dd=new WeakMap;function rr(e){return Dd.get(e)?.()??e.readIndex()}var gt=1,Na=1,XS=2,zS="index.json",HS="recovery.json",WS="transaction-journal.json",GS="document-version.json",Ii={maxEntries:100,maxSessionBytes:512*1024*1024,maxEntryBytes:128*1024*1024},ne={INVALID_ROOT:"INVALID_ROOT",INVALID_PATH:"INVALID_PATH",INVALID_SCHEMA:"INVALID_SCHEMA",INVALID_JSON:"INVALID_JSON",INDEX_CORRUPT:"INDEX_CORRUPT",ENTRY_CORRUPT:"ENTRY_CORRUPT",BLOB_CORRUPT:"BLOB_CORRUPT",RECOVERY_PENDING:"RECOVERY_PENDING",CAPACITY_EXCEEDED:"CAPACITY_EXCEEDED",NOT_FOUND:"NOT_FOUND"},oe=class extends Error{constructor(t,n,r){super(n),this.name="FileHistoryStoreError",this.code=t,r?.cause!==void 0&&(this.cause=r.cause)}};function Yt(){return{entries:new Map,blobSizes:new Map}}function vi(e,t){let n={entries:new Map,blobs:new Map,objectBytes:0};for(let r of e)Bd(n,r,t);return n}function Bd(e,t,n){let r=e.entries.get(t);if(r){e.entries.set(t,{...r,references:r.references+1});return}let o=n.entries.get(t),i=new Map(o.entry.blobs.map(s=>[s.digest,n.blobSizes.get(s.digest)]));e.entries.set(t,{sizeBytes:o.sizeBytes,references:1,blobs:i}),e.objectBytes+=o.sizeBytes;for(let[s,a]of i){let c=e.blobs.get(s);e.blobs.set(s,{sizeBytes:a,references:(c?.references??0)+1}),c||(e.objectBytes+=a)}}function jd(e,t){let n=e.entries.get(t);if(n.references>1){e.entries.set(t,{...n,references:n.references-1});return}e.entries.delete(t),e.objectBytes-=n.sizeBytes;for(let r of n.blobs.keys()){let o=e.blobs.get(r);o.references>1?e.blobs.set(r,{...o,references:o.references-1}):(e.blobs.delete(r),e.objectBytes-=o.sizeBytes)}}async function $d(e,t={}){let n=fE(e),r=hE(t.limits),o=wa(n),i=pE(n),s=await nt(i),a=await nt(o)||s;a||(await oE(n),await iE(n)),a||await yE(n);let c=Yt(),l=await Ri(n,c),u=new Set(a?(await Ti(n)).map(y=>y.stageId):[]);a||await Fd(n,l.entryIds,c);let f=l.digest,m=vi(l.entryIds,c),d=async y=>{let{index:v,sizeBytes:C}=await $r(n);if(Hd(v,y),v.digest!==f){let N=Yt();await Jd(n,v.entryIds,N,C),m=vi(v.entryIds,N),f=v.digest}return{...Fi(v),totalBytes:m.objectBytes+C}},g=async y=>{Da(y),await d(),await Ad(n,m,[y.entryId],y.blobIds,y.stageId),await Ci(n,y.stageId)},h=async(y,v)=>{let C=await d(v);Kd(y,C.entryIds.length);let N=Yt();for(let A of C.entryIds.slice(Math.min(C.cursor,y)+1,Math.max(C.cursor,y)+1))await Dr(n,A,N);return C},S=async()=>{if(await nt(o)||s)throw new oe(ne.RECOVERY_PENDING,"history store requires explicit recovery before accepting writes")},E={rootDir:n,recoveryRequired:a,async readDocumentVersion(){return Od(n)},async writeDocumentVersion(y){if(await S(),!Number.isInteger(y)||y<0)throw new oe(ne.INVALID_SCHEMA,"document version must be a non-negative integer");let v=await Od(n);y<=v||await Lr(Zd(n),{schemaVersion:1,version:Math.max(v,y)})},async stageAppend(y,v={}){await S();let C=await QS(y,r),N={schemaVersion:Na,stageId:La(),entryId:C.entryId,blobIds:C.blobs.map(A=>A.digest)};try{await qS(n,C),await tE(n,N,v.durableManifest!==!1)}catch(A){try{await g(N)}catch(R){throw new oe(ne.INDEX_CORRUPT,"staged history cleanup failed after preparation error",{cause:R})}throw A}return{stageId:N.stageId,entryId:N.entryId,blobIds:N.blobIds}},async discardStage(y){await S(),Ta(y);let v=await Pa(n,y);v&&await g(v)},async previewStagedAppend(y,v){await S();let C=await d(v);return(await Nd(n,r,y,C,m)).transition},async previewCursor(y,v){await S();let C=await h(y,v);return Vd(C,C.entryIds,y)},async publishStagedAppend(y,v,C){if(await S(),Ni(y,"entryId"),C){Ta(C);let _=await Pa(n,C);if(!_||_.entryId!==y)throw new oe(ne.INVALID_SCHEMA,"history stage does not match the published entry")}let N=await d(v),A=m,R=await Nd(n,r,y,N,A),F=await Md({rootDir:n,previousDigest:R.current.digest,entryIds:R.entryIds,cursor:R.cursor,readback:async()=>_d(n,R.usage),afterWrite:async()=>{C?await Ci(n,C):await rE(n,y),await Ad(n,R.usage,[...A.entries.keys()].filter(_=>!R.usage.entries.has(_)),[...A.blobs.keys()].filter(_=>!R.usage.blobs.has(_)))}});return m=R.usage,f=F.digest,F},async append(y){await S();let v=await d(),C=await E.stageAppend(y);try{return await E.publishStagedAppend(C.entryId,v.digest,C.stageId)}catch(N){throw await E.discardStage(C.stageId),N}},async readEntry(y){return Ni(y,"entryId"),Dr(n,y)},async readBlob(y){Ni(y,"blobId");let v=await qd(n,y),C=await Br(v,ne.NOT_FOUND,"blob");return Yd(C,y,v),C},async readIndex(){let y=Yt(),v=await Ri(n,y);return m=vi(v.entryIds,y),f=v.digest,v},async readStatus(){let y=await wi(n);return{canUndo:y.undoIds.length>0,canRedo:y.redoIds.length>0,undoDepth:y.undoIds.length,redoDepth:y.redoIds.length,cursor:y.cursor,recoveryRequired:await nt(o)||await nt(i)}},async readUndoRedoIds(){let y=await wi(n);return{undoIds:y.undoIds,redoIds:y.redoIds,currentId:y.currentId}},async setCursor(y,v){await S();let C=await h(y,v),N=await Md({rootDir:n,previousDigest:C.digest,entryIds:C.entryIds,cursor:y,readback:async()=>_d(n,m)});return f=N.digest,N},async markRecoveryRequired(y){await nt(o)||await Lr(wa(n),{schemaVersion:gt,reason:mE(y),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await Oe.rm(wa(n),{force:!0})},async readTransactionJournal(){return await nt(i)?ki(i):null},async writeTransactionJournal(y){await S(),Qd(y);try{await Lr(i,y)}catch(C){let N=await ki(i).catch(()=>null);if(N&&Buffer.from(rt(N)).equals(Buffer.from(rt(y))))return;throw N?new oe(ne.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous",{cause:C}):C}let v=await ki(i);if(!Buffer.from(rt(v)).equals(Buffer.from(rt(y))))throw new oe(ne.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous")},async clearTransactionJournal(y){let v=await nt(i)?await ki(i):null;if(v&&v.transactionId!==y)throw new oe(ne.INVALID_SCHEMA,"transaction journal changed concurrently");try{await Oe.rm(i,{force:!0})}catch(C){if(!await nt(i))return;throw C}if(await nt(i))throw new oe(ne.INDEX_CORRUPT,"transaction journal clear outcome is ambiguous");s=!1},async cleanupTmp(){await S();for(let C of u)await Ci(n,C),u.delete(C);await sE(n);let y=Yt(),v=await Ri(n,y);await Fd(n,v.entryIds,y),m=vi(v.entryIds,y),f=v.digest}};return Dd.set(E,()=>wi(n)),E}async function Nd(e,t,n,r,o){Ni(n,"entryId");let i=Yt(),s=await Dr(e,n,i),a={entries:new Map(o.entries),blobs:new Map(o.blobs),objectBytes:o.objectBytes},c=r.entryIds.slice(0,r.cursor+1);for(let u of r.entryIds.slice(r.cursor+1))jd(a,u);Bd(a,s.id,i),c.push(s.id);let l=eE(c,t,a);return{current:r,entryIds:l.entryIds,cursor:l.cursor,usage:a,transition:Vd(r,l.entryIds,l.cursor)}}function Vd(e,t,n){return Kd(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:YS(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function YS(e,t){return ln(rt({schemaVersion:gt,entryIds:e,cursor:t}))}function Kd(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new oe(ne.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function ZS(e){if(!vt(e))return!1;let t=e.publishedCursor,n=e.publishedCurrentId;return!at(e.expectedIndexDigest)||!at(e.publishedIndexDigest)||!Number.isInteger(t)||t<-1||n!==null&&!at(n)?!1:t===-1?n===null:at(n)}async function QS(e,t){if(!e.kind.trim())throw new oe(ne.INVALID_JSON,"history entry kind must not be empty");let n=[],r=[];for(let c of e.blobs??[]){if(!c.name.trim())throw new oe(ne.INVALID_JSON,"history blob name must not be empty");let l=dE(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:gt,kind:e.kind,manifest:e.manifest,blobs:r},i=rt({...o}),s=ln(i),a=i.byteLength+n.reduce((c,l)=>c+l.sizeBytes,0);if(a>t.maxEntryBytes)throw new oe(ne.CAPACITY_EXCEEDED,`history entry exceeds maxEntryBytes (${a} > ${t.maxEntryBytes})`);return{entryBody:o,entryId:s,blobs:n}}async function qS(e,t){let n=Va(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Pd(Ka(e,a.digest),a.bytes,{kind:"blob",digest:a.digest},Ja(e,a.digest))),Pd(n,rt(r),{kind:"entry",digest:t.entryId},Ua(e,t.entryId))],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Pd(e,t,n,r){let o=await Ma(e)??(r?await Ma(r):null);if(o!==null){if(Buffer.compare(o,t)!==0)throw new oe(n.kind==="blob"?ne.BLOB_CORRUPT:ne.ENTRY_CORRUPT,`${n.kind} content mismatch for ${n.digest}`);return}await Wd(e,t)}function eE(e,t,n){let r=[...e],o=r.length-1;for(;;){if(n.objectBytes+rt(zd(r,o)).byteLength<=t.maxSessionBytes&&r.length<=t.maxEntries)return{entryIds:r,cursor:o};if(o<=0||r.length===0)throw new oe(ne.CAPACITY_EXCEEDED,"history store exceeds capacity limits and the current entry cannot be trimmed");jd(n,r.shift()),o-=1}}async function tE(e,t,n){Da(t);let r=$a(e,t.stageId);if(n){await Lr(r,t);return}await uE(r,t)}async function Pa(e,t){let n=await Ma($a(e,t));if(n===null)return null;let r=Vr(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=Da(r);if(o.stageId!==t)throw new oe(ne.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function Ti(e){let t=[];for(let n of await Ai(ja(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);Ta(r);let o=await Pa(e,r);o&&t.push(o)}return t}async function Ad(e,t,n,r,o){if(n.length===0&&r.length===0)return;let i=new Set(t.entries.keys()),s=new Set;for(let a of await Ti(e))if(a.stageId!==o){i.add(a.entryId);for(let c of a.blobIds)s.add(c)}for(let a of new Set(n))i.has(a)||await Td(Va(e,a),Ua(e,a));for(let a of new Set(r))!t.blobs.has(a)&&!s.has(a)&&await Td(Ka(e,a),Ja(e,a));await Oa(Kr(e)),await Oa(Ur(e))}async function Ci(e,t){await Aa($a(e,t)),await nE(e)}async function nE(e){try{await Oe.rmdir(ja(e))}catch(t){if(Jr(t)||vt(t)&&t.code==="ENOTEMPTY")return;throw t}}async function rE(e,t){for(let n of await Ti(e))n.entryId===t&&await Ci(e,n.stageId)}async function Aa(e){if(await Oe.rm(e,{force:!0}),await nt(e))throw new oe(ne.INDEX_CORRUPT,`unable to remove staged history object: ${e}`)}async function Td(e,t){await Aa(e),await Aa(t)}function Da(e){if(!vt(e)||e.schemaVersion!==Na||typeof e.stageId!="string"||!Ud(e.stageId)||!at(e.entryId))throw new oe(ne.INVALID_SCHEMA,"history stage schema is invalid");let t=Gd(e.blobIds,"history stage blobIds");return{schemaVersion:Na,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function Ta(e){if(!Ud(e))throw new oe(ne.INVALID_PATH,"history stageId must be a UUID")}function Ud(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 Fd(e,t,n=Yt()){let r=new Set(t),o=new Set;for(let l of t){let u=await Dr(e,l,n);for(let f of u.blobs)o.add(f.digest)}for(let l of await Ti(e)){r.add(l.entryId);for(let u of l.blobIds)o.add(u)}let i=Kr(e),s=await Ai(i);for(let l of s){if(!l.endsWith(".json"))continue;let u=Ld(l.slice(0,-5));u&&!r.has(u)&&await Pi(Le.join(i,l))}let a=Ur(e),c=await Ai(a);for(let l of c){let u=Ld(l);u&&!o.has(u)&&await Pi(Le.join(a,l))}}async function Ri(e,t=Yt()){let{index:n,sizeBytes:r}=await $r(e),{totalBytes:o}=await Jd(e,n.entryIds,t,r);return{...Fi(n),totalBytes:o}}async function _d(e,t){let{index:n,sizeBytes:r}=await $r(e);return{...Fi(n),totalBytes:t.objectBytes+r}}async function $r(e){let t=Ba(e),n=await Br(t,ne.NOT_FOUND,"index"),r=Vr(Buffer.from(n).toString("utf8"),"index");return{index:aE(r),sizeBytes:n.byteLength}}async function wi(e){return Fi((await $r(e)).index)}function Fi(e){let t=[...e.entryIds],n=t.slice(0,e.cursor+1).reverse(),r=t.slice(e.cursor+1);return{schemaVersion:gt,digest:e.digest,entryIds:t,cursor:e.cursor,currentId:t[e.cursor]??null,undoIds:n,redoIds:r}}async function Jd(e,t,n,r){let o=0,i=new Set;o+=r??(await $r(e)).sizeBytes;for(let s of new Set(t)){let a=await Dr(e,s,n);o+=n.entries.get(s).sizeBytes;for(let c of a.blobs)i.has(c.digest)||(i.add(c.digest),o+=n.blobSizes.get(c.digest))}return{totalBytes:o}}async function Dr(e,t,n=Yt()){let r=n.entries.get(t);if(r)return r.entry;let o=await gE(e,t),i=await Br(o,ne.NOT_FOUND,"entry"),s=Vr(Buffer.from(i).toString("utf8"),`entry ${t}`),a=cE(s);if(a.id!==t)throw new oe(ne.ENTRY_CORRUPT,`entry id mismatch for ${t}`);if(ln(rt({schemaVersion:a.schemaVersion,kind:a.kind,manifest:a.manifest,blobs:a.blobs}))!==t)throw new oe(ne.ENTRY_CORRUPT,`entry hash mismatch for ${t}`);for(let l of a.blobs){if(n.blobSizes.has(l.digest))continue;let u=await qd(e,l.digest),f=await Br(u,ne.NOT_FOUND,"blob");Yd(f,l.digest,u),n.blobSizes.set(l.digest,f.byteLength)}return n.entries.set(t,{entry:a,sizeBytes:i.byteLength}),a}async function Xd(e,t,n){await Lr(Ba(e),zd(t,n))}function zd(e,t){return{schemaVersion:gt,digest:ln(rt({schemaVersion:gt,entryIds:e,cursor:t})),entryIds:e,cursor:t}}function Hd(e,t){if(t!==void 0&&e.digest!==t)throw new oe(ne.INVALID_SCHEMA,`history index changed concurrently (expected ${t}, current ${e.digest})`)}async function Md(e){Hd(await wi(e.rootDir),e.previousDigest);let t=ln(rt({schemaVersion:gt,entryIds:e.entryIds,cursor:e.cursor}));try{await Xd(e.rootDir,e.entryIds,e.cursor),await e.afterWrite?.();let n=await e.readback();if(n.digest!==t)throw new oe(ne.INDEX_CORRUPT,"history index readback did not match the published transition");return n}catch(n){let r=await Ri(e.rootDir).catch(()=>null);if(r?.digest===t)return r;throw r?.digest===e.previousDigest?n:new oe(ne.INDEX_CORRUPT,"history index publish outcome is ambiguous",{cause:n})}}async function oE(e){await Oe.mkdir(e,{recursive:!0}),await Oe.mkdir(Kr(e),{recursive:!0}),await Oe.mkdir(Ur(e),{recursive:!0}),await Oe.mkdir(jr(e),{recursive:!0})}async function iE(e){await Oe.rm(jr(e),{recursive:!0,force:!0}),await Oe.mkdir(jr(e),{recursive:!0})}async function sE(e){let t=jr(e);await Oe.mkdir(t,{recursive:!0});for(let n of await Ai(t))n!=="stages"&&await Oe.rm(Le.join(t,n),{recursive:!0,force:!0})}function aE(e){if(!vt(e))throw new oe(ne.INDEX_CORRUPT,"index.json must be an object");if(e.schemaVersion!==gt)throw new oe(ne.INVALID_SCHEMA,`unsupported index schemaVersion: ${String(e.schemaVersion)}`);let t=Gd(e.entryIds,"index.entryIds"),n=e.cursor;if(!Number.isInteger(n)||n<-1||n>=t.length)throw new oe(ne.INDEX_CORRUPT,"index cursor is out of bounds");let r=n,o=e.digest;if(!at(o))throw new oe(ne.INDEX_CORRUPT,"index digest is invalid");let i=ln(rt({schemaVersion:gt,entryIds:t,cursor:r}));if(o!==i)throw new oe(ne.INDEX_CORRUPT,"index digest mismatch");return{schemaVersion:gt,digest:o,entryIds:t,cursor:r}}function cE(e){if(!vt(e))throw new oe(ne.ENTRY_CORRUPT,"entry must be an object");if(e.schemaVersion!==gt)throw new oe(ne.INVALID_SCHEMA,`unsupported entry schemaVersion: ${String(e.schemaVersion)}`);let t=e.id;if(!at(t))throw new oe(ne.ENTRY_CORRUPT,"entry id is invalid");let n=e.kind;if(typeof n!="string"||n.trim().length===0)throw new oe(ne.ENTRY_CORRUPT,"entry kind is invalid");let r=_a(e.manifest,"entry.manifest"),o=lE(e.blobs);return{id:t,schemaVersion:gt,kind:n,manifest:r,blobs:o}}function lE(e){if(!Array.isArray(e))throw new oe(ne.ENTRY_CORRUPT,"entry blobs must be an array");return e.map((t,n)=>{if(!vt(t))throw new oe(ne.ENTRY_CORRUPT,`entry blob ref ${n} must be an object`);let r=t.name;if(typeof r!="string"||r.trim().length===0)throw new oe(ne.ENTRY_CORRUPT,`entry blob ref ${n} name is invalid`);let o=t.digest;if(!at(o))throw new oe(ne.ENTRY_CORRUPT,`entry blob ref ${n} digest is invalid`);let i=t.sizeBytes;if(!Number.isInteger(i)||i<0)throw new oe(ne.ENTRY_CORRUPT,`entry blob ref ${n} sizeBytes is invalid`);return{name:r,digest:o,sizeBytes:i}})}async function Lr(e,t){await Wd(e,rt(t))}async function uE(e,t){let n=Le.dirname(e),r=Le.basename(e),o=Le.join(n,`.${r}.${process.pid}.${La()}.tmp`);await Oe.mkdir(n,{recursive:!0});try{await Oe.writeFile(o,rt(t),{flag:"wx"}),await Oe.rename(o,e)}finally{await Pi(o)}}async function Wd(e,t){let n=Le.dirname(e),r=Le.basename(e),o=Le.join(n,`.${r}.${process.pid}.${La()}.tmp`);await Oe.mkdir(n,{recursive:!0});try{let i=await Oe.open(o,"wx");try{await i.writeFile(t),await i.sync()}finally{await i.close()}await Oe.rename(o,e),await Oa(n)}finally{await Pi(o)}}function rt(e){return Buffer.from(JSON.stringify(Fa(e)),"utf8")}function Fa(e){if(Array.isArray(e))return e.map(t=>Fa(t));if(vt(e)){let t={};for(let n of Object.keys(e).sort())t[n]=Fa(e[n]);return t}return e}function Vr(e,t){try{return JSON.parse(e)}catch(n){throw new oe(ne.INVALID_JSON,`${t} is not valid JSON`,{cause:n})}}function _a(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=>_a(n,t));if(vt(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=_a(o,t);return n}break}throw new oe(ne.INVALID_JSON,`${t} must be JSON-serializable`)}function Gd(e,t){if(!Array.isArray(e))throw new oe(ne.INDEX_CORRUPT,`${t} must be an array`);return e.map((n,r)=>{if(!at(n))throw new oe(ne.INDEX_CORRUPT,`${t}[${r}] is invalid`);return n})}function Ni(e,t){if(!at(e))throw new oe(ne.INVALID_PATH,`${t} must be a sha256 digest`)}function at(e){return typeof e=="string"&&/^sha256:[a-f0-9]{64}$/u.test(e)}function ln(e){return`sha256:${JS("sha256").update(e).digest("hex")}`}function dE(e){return typeof e=="string"?Buffer.from(e,"utf8"):Buffer.from(e)}async function Br(e,t,n){try{return await Oe.readFile(e)}catch(r){throw new oe(t,`${n} not found: ${e}`,{cause:r})}}async function Ma(e){try{return await Oe.readFile(e)}catch(t){if(Jr(t))return null;throw t}}function Yd(e,t,n){if(ln(e)!==t)throw new oe(ne.BLOB_CORRUPT,`blob hash mismatch for ${n}`)}async function nt(e){try{return await Oe.access(e),!0}catch(t){if(Jr(t))return!1;throw t}}async function Pi(e){try{await Oe.rm(e,{force:!0,recursive:!0})}catch{}}async function Oa(e){try{let t=await Oe.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function Ai(e){try{return await Oe.readdir(e)}catch(t){if(Jr(t))return[];throw t}}function fE(e){if(typeof e!="string"||e.trim().length===0)throw new oe(ne.INVALID_ROOT,"history store rootDir must be a non-empty string");return Le.resolve(e)}function Ba(e){return Le.join(e,zS)}function wa(e){return Le.join(e,HS)}function pE(e){return Le.join(e,WS)}function Zd(e){return Le.join(e,GS)}async function Od(e){try{let t=await Oe.readFile(Zd(e),"utf8"),n=Vr(t,"document version");if(!vt(n)||n.schemaVersion!==1||!Number.isInteger(n.version)||n.version<0)throw new oe(ne.INVALID_SCHEMA,"document version schema is invalid");return n.version}catch(t){if(Jr(t))return 0;throw t}}async function ki(e){let t=await Br(e,ne.RECOVERY_PENDING,"transaction journal"),n=Vr(Buffer.from(t).toString("utf8"),"transaction journal");return Qd(n),n}function Qd(e){if(!vt(e)||e.schemaVersion!==XS||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!ZS(e.historyTransition)||!Array.isArray(e.files))throw new oe(ne.INVALID_SCHEMA,"transaction journal schema is invalid");for(let t of e.files)if(!vt(t)||typeof t.path!="string"||t.path.length===0||t.preDigest!==null&&!at(t.preDigest)||t.postDigest!==null&&!at(t.postDigest))throw new oe(ne.INVALID_SCHEMA,"transaction journal file digest is invalid")}function mE(e){return e.replace(/[\r\n]+/g," ").slice(0,512)}function Kr(e){return Le.join(e,"entries")}function Ur(e){return Le.join(e,"blobs")}function jr(e){return Le.join(e,"tmp")}function ja(e){return Le.join(jr(e),"stages")}function $a(e,t){return Le.join(ja(e),`${t}.json`)}function Va(e,t){return Le.join(Kr(e),`${tf(t)}.json`)}function Ka(e,t){return Le.join(Ur(e),tf(t))}function Ua(e,t){return Le.join(Kr(e),`${t}.json`)}function Ja(e,t){return Le.join(Ur(e),t)}async function gE(e,t){return ef(Va(e,t),Ua(e,t))}async function qd(e,t){return ef(Ka(e,t),Ja(e,t))}async function ef(e,t){return await nt(e)?e:await nt(t)?t:e}function tf(e){return e.slice(7)}function Ld(e){let t=e.startsWith("sha256:")?e:`sha256:${e}`;return at(t)?t:null}function vt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Jr(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function hE(e){return{maxEntries:e?.maxEntries??Ii.maxEntries,maxSessionBytes:e?.maxSessionBytes??Ii.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??Ii.maxEntryBytes}}async function yE(e){let t=Ba(e);await nt(t)||await Xd(e,[],-1)}var bE={affectedCompositions:[]};function af(e){let t=null,n=new WeakMap;async function r(){return t??=SE(e),t}async function o(i){if(!i)return null;let s=Xa(i);return s?EE(e,s):i}return{async prepareAppend(i){let s=await rr(e),a=await e.stageAppend(of(i),{durableManifest:!1}),c;try{c=await e.previewStagedAppend(a.entryId,s.digest)}catch(u){throw await e.discardStage(a.stageId),u}let l={kind:"append",entry:i,historyTransition:c};return n.set(l,{expectedDigest:s.digest,stageId:a.stageId,entryId:a.entryId}),l},async prepareUndo(){let i=await r(),s=await o(i.undo.at(-1));if(!s?.historyId)return null;let a=await rr(e),c=a.entryIds.indexOf(s.historyId);if(c<0)throw new Error("undo entry is missing from index");if(c!==a.cursor)throw new Error("undo state changed before prepare");let l=c-1,u=await e.previewCursor(l,a.digest),f={kind:"undo",entry:s,historyTransition:u};return n.set(f,{expectedDigest:a.digest,cursor:l}),f},async prepareRedo(){let i=await r(),s=await o(i.redo.at(-1));if(!s?.historyId)return null;let a=await rr(e),c=a.entryIds.indexOf(s.historyId);if(c<0)throw new Error("redo entry is missing from index");if(c!==a.cursor+1)throw new Error("redo state changed before prepare");let l=c,u=await e.previewCursor(l,a.digest),f={kind:"redo",entry:s,historyTransition:u};return n.set(f,{expectedDigest:a.digest,cursor:l}),f},async publishPrepared(i){let s=n.get(i);if(!s)throw new Error("history mutation was not prepared");let a=await r();if(i.kind==="append"){if(!s.entryId)throw new Error("staged entry id is missing");let c=await e.publishStagedAppend(s.entryId,s.expectedDigest,s.stageId);nf(c,i.historyTransition),i.entry.historyId=s.entryId,Object.assign(a,or(c))}else{if(s.cursor===void 0)throw new Error("prepared cursor is missing");let c=i.kind==="undo"?a.undo:a.redo;if(Xa(c.at(-1))!==Xa(i.entry))throw new Error("history state changed before publish");let l=await e.setCursor(s.cursor,s.expectedDigest);nf(l,i.historyTransition),Object.assign(a,or(l))}n.delete(i)},async discardPrepared(i){let s=n.get(i);if(!s)return;let a=i.historyTransition;if(a){let c=await rr(e);if(c.digest===a.publishedIndexDigest&&c.cursor===a.publishedCursor&&c.currentId===a.publishedCurrentId)throw new Error("cannot discard a history mutation whose index was published")}s.stageId&&await e.discardStage(s.stageId),n.delete(i)},async peekUndo(){return o((await r()).undo.at(-1))},async pushUndo(i){let s=await r(),a=i;if(a.historyId){let u=s.entryIds.indexOf(a.historyId);if(u>=0)try{let f=await e.setCursor(u);Object.assign(s,or(f));return}catch(f){throw s.redo.push(i),f}}let c=await e.append(of(i)),l=c.currentId;if(!l)throw new Error("history store did not publish an entry");i.historyId=l,Object.assign(s,or(c))},async popUndo(){let i=await r(),s=await o(i.undo.at(-1));return i.undo.pop(),s},async peekRedo(){return o((await r()).redo.at(-1))},async pushRedo(i){let s=await r(),a=i;if(!a.historyId)throw s.undo.push(i),new Error("cannot move an unpersisted history entry to redo");let c=s.entryIds.indexOf(a.historyId);if(c<0)throw s.undo.push(i),new Error("history entry is missing from the durable index");try{let l=await e.setCursor(c-1);Object.assign(s,or(l))}catch(l){throw s.undo.push(i),l}},async popRedo(){let i=await r(),s=await o(i.redo.at(-1));return i.redo.pop(),s},async clearRedo(){(await r()).redo.length=0},async getStatus(){let i=await e.readStatus();return{canUndo:i.canUndo,canRedo:i.canRedo,undoDepth:i.undoDepth,redoDepth:i.redoDepth,recoveryRequired:i.recoveryRequired}},async markRecoveryRequired(i){await e.markRecoveryRequired(i)}}}function nf(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")}function Xa(e){return typeof e=="string"?e:e?.historyId}async function SE(e){let t=await rr(e);return or(t)}function or(e){return{undo:[...e.undoIds].reverse(),redo:[...e.redoIds].reverse(),entryIds:[...e.entryIds],cursor:e.cursor}}async function EE(e,t){let n=await e.readEntry(t),r=vE(n),o=r.provenance??bE;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 rf(e,n,r.preSnapshots),postSnapshots:await rf(e,n,r.postSnapshots)}}async function rf(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(CE(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function of(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=kE(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 vE(e){if(!lf(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:cf(t.provenance)}:{},preSnapshots:sf(t.preSnapshots,"preSnapshots"),postSnapshots:sf(t.postSnapshots,"postSnapshots")}}function kE(e){if(e.provenance!==void 0)return cf(e.provenance);if(e.composition)return{initiatingComposition:e.composition,affectedCompositions:[]}}function cf(e){let t=xE.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 sf(e,t){return e.map((n,r)=>{if(!lf(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&&!IE(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 IE(e){return/^sha256:[0-9a-f]{64}$/.test(e)}function CE(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function lf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{randomBytes as $E}from"node:crypto";import Mi from"node:path";import{parse as bf}from"@babel/parser";import VE from"@babel/traverse";import*as Sf from"@babel/types";import{COMPONENT_I18N_FILE_SUFFIX as Ha,PageResourceArtifactSchema as KE,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as UE,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as JE,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as XE,parseComponentI18nResourcesJson as zE}from"@vcp-dev/contracts";var df=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,ff=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,RE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke)-\[#(?:[0-9a-fA-F]{3,8})\](?:\/\d+)?/g,wE=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*#[0-9a-fA-F]{3,8}[^'"]*['"]/g,NE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,PE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,AE=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,TE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*(?:oklch|lab|lch|hsla?)\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,FE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*(?:oklch|lab|lch|hsla?)\([^)]+\)[^'"]*['"]/gi,_E=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*color-mix\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,ME=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*color-mix\([^'"]*['"]/gi,OE=/\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,LE=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,DE=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function Xr(e,t){let n=_i([...ht(e,RE),...ht(e,wE),...ht(e,NE),...ht(e,t.includeRgbBackgroundImage?PE:AE),...t.includeExtendedColorFunctions?[...ht(e,TE),...ht(e,FE)]:[]]),r=_i([...ht(e,_E),...ht(e,ME)]).filter(o=>t.colorMixPolicy==="always"||df.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...ht(e,OE).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...ht(e,DE).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:_i(ht(e,ff)),hardCodedSurfaceOccurrences:jE(e),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?_i(ht(e,LE)):[]}}function ht(e,t){return e.match(new RegExp(t.source,t.flags))??[]}var uf=160,BE=/((?:[a-z][a-z0-9-]*(?:\[[^\]]*\])?:)+)$/;function jE(e){let t=new RegExp(ff.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>uf?`${d.slice(0,uf-1)}\u2026`:d})}return o}function _i(e){return[...new Set(e)]}var Wa="{{$INSTANCE}}",HE=/\{\{\$PAGE_ROUTE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,WE=/\{\{\$PAGE_TITLE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,Ga="components/site/generated",GE=/\.(?:tsx?|json)$/,YE=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,ZE=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],QE=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),za=VE,qE=typeof za=="function"?za:za.default;async function Ya(e){let t=KE.safeParse(e.artifact);if(!t.success)return Te("Page resource artifact failed contract validation.");let n=t.data,r=e.randomHex??(()=>$E(4).toString("hex")),o=Math.max(1,Math.min(e.maxAttempts??5,5)),i=cv(r());if(!i)return Te("Random instance suffix must be 8 lowercase hex chars.");let s=`${lv(n.resource_id)}-${i}`,a=new Map,c=new Map,l=[];for(let v of n.pages){let C=v.final_route.slice(1);a.set(v.template_page_id,v.final_route),c.set(v.template_page_id,v.title),l.push({template_page_id:v.template_page_id,title:v.title,final_route:v.final_route,route_file_path:`app/${C}/page.tsx`})}let u=[],f=new Set,m=new Set,d=new Map,g=new Map,h=[],S=new Set(n.pages.flatMap(v=>v.components.map(C=>C.component_id)));for(let v of n.components){if(!S.has(v.component_id))continue;let C=pf({materialization:v.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c});if(!C.ok)return C;for(let N of C.files){let A=gf(N,f,u);if(A)return A}m.add(C.entry),g.set(C.entry,C.entryExport),d.set(v.component_id,C.entry)}for(let[v,C]of n.pages.entries()){let N=l[v],A=pf({materialization:C.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c,pageEntryTarget:N.route_file_path,pageTitle:N.title});if(!A.ok)return A;for(let R of A.files){let F=gf(R,f,u);if(F)return F}m.add(A.entry),g.set(A.entry,A.entryExport),h.push({entry:A.entry,declaredComponentIds:new Set(C.components.map(R=>R.component_id))})}let E=tv(u,m,s,d,h,g);if(!E.ok)return E;for(let v of u)if(await e.exists(v.file))return!v.file.startsWith("app/")&&o>1?Ya({...e,randomHex:r,maxAttempts:o-1}):{ok:!1,code:"MATERIALIZATION_CONFLICT",message:`Page resource create-only target already exists: ${v.file}`,path:v.file};let y=nv(u);return y||(u.sort((v,C)=>v.file.localeCompare(C.file)),{ok:!0,packageInstanceId:s,pages:l,files:u})}function pf(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:mf(o.pathTemplate,e.packageInstanceId);if(!s)return Te("Materialization path cannot be mapped into the package namespace.",o.pathTemplate);let a=ev(o.content,e.packageInstanceId,e.routeByPage,e.titleByPage);if(!a.ok)return a;let c=i&&e.pageTitle!==void 0?ov(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??mf(t,e.packageInstanceId);return!r||!n.some(o=>o.file===r)?Te("Materialization entry must match one controlled source file.",t):{ok:!0,files:n,entry:r,entryExport:e.materialization.entry.export}}function ev(e,t,n,r){let o,i=e.replace(HE,(c,l)=>{let u=n.get(l);return u||(o=l,c)});if(o)return Te(`Page route placeholder references unknown template page: ${o}`);let s=i.replace(WE,(c,l)=>{let u=r.get(l);return u?JSON.stringify(u):(o=l,c)});if(o)return Te(`Page title placeholder references unknown template page: ${o}`);let a=s.replaceAll(Wa,t);return a.includes("{{$PAGE_ROUTE:")||a.includes("{{$PAGE_TITLE:")||a.includes("{{$INSTANCE}}")?Te("Materialization contains an unresolved placeholder."):{ok:!0,data:a}}function mf(e,t){let n=`${Ga}/${t}`;if(e.split(Wa).length>2)return null;let o=e.replace(Wa,t),i=`${Ga}/${t}/`,s=o.startsWith(i)?o:`${n}/${o}`,a=Mi.posix.normalize(s);return a!==s||!a.startsWith(`${n}/`)||!GE.test(a)||YE.test(a)?null:a}function gf(e,t,n){return t.has(e.file)?Te(`Page resource materializations resolve duplicate target: ${e.file}`,e.file):(t.add(e.file),n.push(e),null)}function tv(e,t,n,r,o,i){let s=new Set(e.map(d=>d.file)),a=`${Ga}/${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 Te("Materialization JSON file must contain valid JSON.",d.file)}if(d.file.endsWith(Ha)&&!zE(d.content).success)return Te("Materialization component i18n resources are invalid.",d.file);continue}try{let h=bf(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 y=E.source.value,v=sv(d.file,y,s,a);if(!v.allowed)return Te(`Materialization import is outside the controlled package: ${y}`,d.file);v.internalPath&&c.get(d.file).add(v.internalPath)}let S;if(qE(h,{Identifier(E){E.isReferencedIdentifier()&&QE.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 Te(`Materialization source uses forbidden capability: ${S}`,d.file)}catch{return Te("Materialization source must parse as TS/TSX.",d.file)}let g=Xr(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 Te("Materialization source violates the public theme token policy.",d.file)}if([...t].some(d=>!s.has(d)))return Te("Materialization entry is outside the controlled package.");for(let d of t)if(d.endsWith(".json"))return Te("Materialization JSON files cannot be package entries.");for(let[d,g]of i){let h=l.get(d);if(!h||!rv(h,g))return Te("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=xf(d.entry,c);for(let h of d.declaredComponentIds){let S=r.get(h);if(!S||!g.has(S))return Te(`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 Te(`Page entry imports undeclared component: ${S}`,d.entry)}}let f=new Set;for(let d of t)for(let g of xf(d,c))f.add(g);if(f.size!==e.length)return Te("Every materialization file must be reachable from a package entry.");let m=av(e,l,c);return m||{ok:!0}}function nv(e){if(e.length>UE)return Te("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>JE)return Te("Page resource file exceeds the content byte limit.",n.file);t+=r}return t>XE?Te("Page resource exceeds the aggregate content byte limit."):null}function rv(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 ov(e,t,n){let r;try{r=bf(e,{sourceType:"module",sourceFilename:n,plugins:["jsx","typescript"]})}catch{return Te("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=hf(s.init);if(a?.type!=="ObjectExpression")return{ok:!0,data:e};let c=a.properties.find(u=>u.type==="ObjectProperty"&&!u.computed&&iv(u.key));if(!c||c.type!=="ObjectProperty")return{ok:!0,data:e};let l=hf(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"?{ok:!0,data:e}:{ok:!0,data:e.slice(0,l.start)+JSON.stringify(t)+e.slice(l.end)}:{ok:!0,data:e}}}return{ok:!0,data:e}}function hf(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression"||t?.type==="TSNonNullExpression";)t=t.expression;return t&&Sf.isExpression(t)?t:null}function iv(e){return e.type==="Identifier"&&e.name==="title"||e.type==="StringLiteral"&&e.value==="title"}function sv(e,t,n,r){if(t.startsWith(`@/${r}/`)){let s=t.slice(2),a=yf(s,n);return a?{allowed:!0,internalPath:a}:{allowed:!1}}if(!t.startsWith("."))return{allowed:ZE.some(s=>s.endsWith("/")?t.startsWith(s):t===s)};if(t.includes("\\")||t.includes("\0"))return{allowed:!1};let o=Mi.posix.normalize(Mi.posix.join(Mi.posix.dirname(e),t)),i=yf(o,n);return i&&(i.startsWith(`${r}/`)||i.startsWith("app/"))?{allowed:!0,internalPath:i}:{allowed:!1}}function yf(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 av(e,t,n){let r=new Set(e.map(o=>o.file));for(let o of e){if(!o.file.endsWith(Ha))continue;let i=o.file.slice(0,-Ha.length),s=[`${i}.tsx`,`${i}.ts`].find(u=>r.has(u));if(!s)return Te("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 Te("Component i18n resources must have exactly one same-name Client Component static importer.",s)}return null}function xf(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 cv(e){return/^[a-f0-9]{8}$/.test(e)?e:null}function lv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"page-resource"}function Te(e,t){return{ok:!1,code:"MATERIALIZATION_REJECTED",message:e,...t?{path:t}:{}}}import{randomBytes as uv}from"node:crypto";import Zt from"node:path";import{parse as dv}from"@babel/parser";import fv from"@babel/traverse";import{COMPONENT_I18N_FILE_SUFFIX as Oi,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as Ef,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as pv,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as mv,SiteEditMaterializationSchema as gv,parseComponentI18nResourcesJson as hv}from"@vcp-dev/contracts";var qa="components/site/generated",vf="{{$INSTANCE}}",Li=5,yv=/^[a-z][a-z0-9-]{0,48}$/,xv=/^[a-f0-9]{8}$/,kf=/\.tsx?$/,bv=/\.json$/,Sv=/\.(?:tsx?|json)$/,Ev=/^(?:@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9][a-z0-9._~-]*$/,vv=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,kv=["react","react/","next","next/","lucide-react","react-i18next","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],Za=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),Qa=fv,Iv=typeof Qa=="function"?Qa:Qa.default;function Cv(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>Ef)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=Lv(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=gv.safeParse(e.manifest);if(!r.success)return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab manifest failed schema validation."}};let o=_v(e.generatedRoot);if(!o)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Generated root must be ${qa}.`,path:e.generatedRoot}};if(!Pf(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=Rf(r.data.files),s=Rf(e.controlledFiles);if(!Dv(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>Ef)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>pv)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>mv?{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 Rv(e){let t=Cv(e);if(!t.ok)return t;let n=Object.keys(e.manifest.projectDependencies??{}),r=new Set(e.availableHostDependencies??[]),o=n.find(u=>!Ev.test(u)||!r.has(u));if(o)return{ok:!1,error:{code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:`Declared project dependency is not available in the target site host: ${o}.`,path:o}};let i=n.flatMap(u=>[u,`${u}/`]),s=[...e.allowedExternalImports??kv,...i],a=t.data.generatedRoot,c=Pf(e.manifest.instanceBaseName),l=Math.max(1,Math.min(Li,e.maxAttempts??Li));for(let u=0;u<l;u+=1){let f=Mv(e.instanceNameGenerator?.()??uv(4).toString("hex"));if(!f)return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instance suffix must be 8 lowercase hex chars."}};let m=`${c}-${f}`,d=Tf(a,m),g=wv({manifest:e.manifest,generatedRoot:a,instanceName:m,instanceRoot:d,allowedExternalImports:s});if(!g.ok)return g;if(!await Nv(e.exists,d,g.data.files))return{ok:!0,data:g.data}}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to allocate a create-only static prefab instance after repeated conflicts."}}}async function Nf(e){let t=Math.max(1,Math.min(Li,e.maxAttempts??Li));for(let n=0;n<t;n+=1){let r=await Rv({...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 wv(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=If({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=If({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=Pv(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 Nv(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function If(e){if(e.pathTemplate.split(vf).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(vf,e.instanceName),n=Ov(t);return n?Tf(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||!Sv.test(n)||vv.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 Pv(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(bv.test(f.path)){if(f.path.endsWith(Oi)){let g=hv(f.content);if(!g.success)return Pn("MATERIALIZATION_DATA_UNSUPPORTED",g.error.message,f.path);c.set(f.path,new Set)}else try{JSON.parse(f.content)}catch{return Pn("MATERIALIZATION_DATA_UNSUPPORTED","Static prefab JSON file must contain valid JSON.",f.path)}continue}let m;try{m=dv(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=Xr(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(!kf.test(f.path))continue;let m=s.get(f.path),d=null;if(Iv(m,{ImportDeclaration(g){let h=Cf({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(Oi))){let S=Av({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=Cf({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=wf(g.node);h&&Za.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},OptionalMemberExpression(g){let h=wf(g.node);h&&Za.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},Identifier(g){g.isReferencedIdentifier()&&Za.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(!kf.test(n))return Pn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must be a .ts/.tsx source module.",n);let l=s.get(n);if(!l)return Pn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must resolve to a controlled source file.",n);if(!Tv(l,r))return Pn("MATERIALIZATION_EXPORT_MISSING","Static prefab entry does not declare the manifest export.",n);for(let[f,m]of c)if(m.size!==1)return Pn("MATERIALIZATION_IMPORT_FORBIDDEN","Each component .i18n.json file must have exactly one same-name Client Component static importer.",f);return Fv(n,a).size!==e.length?Pn("MATERIALIZATION_ENTRY_INVALID","Every controlled source file must be reachable from the entry module.",n):{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:qa,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}}function Cf(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=Zt.posix.normalize(Zt.posix.join(Zt.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 Av(e){let t=Zt.posix.dirname(e.importer),n=Zt.posix.dirname(e.imported),r=Zt.posix.basename(e.importer).replace(/\.tsx?$/,""),o=Zt.posix.basename(e.imported).slice(0,-Oi.length),i=`./${r}${Oi}`;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 Tv(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 Fv(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 Pn(e,t,n){return{ok:!1,error:{code:e,message:t,...n?{file:n}:{}}}}function _v(e){let t=Af(e);return t===qa?t:null}function Mv(e){let t=e.trim().toLowerCase();return xv.test(t)?t:null}function Pf(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 yv.test(t)?t:null}function Af(e){if(!e||e.startsWith("/")||e.includes("\\"))return null;let t=Zt.posix.normalize(e);return t==="."||t.startsWith("../")||t.includes("/../")||t.includes("//")?null:t}function Ov(e){let t=Af(e);return!t||t!==e?null:t}function Tf(...e){return Zt.posix.join(...e)}function Rf(e){return new Set(e.map(t=>t.pathTemplate))}function Lv(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 Dv(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function wf(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 mc}from"node:crypto";import ac from"@babel/traverse";function ec(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 Bv}from"node:crypto";import Ff from"node:path";import*as Df from"@babel/parser";import tc from"@babel/generator";import*as Ue from"@babel/types";var _f=typeof tc=="function"?tc:tc.default;function rc(e){let t=jf(e);if(t)return{ok:!1,error:t};let n=e.projection,r=sc(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=Vv(n,o),s={jsx:`<${e.component.localName} />`},a=jv(e);if(i){let d=nc(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??(ic(c,n.container.sourceRange)?n.container.sourceHash:null);if(!c||!l)return zr("Route page composition does not expose a verifiable container boundary.");let u=Wr(c),f=Of(e.source,u,l,"Route page composition container");if(!f.ok)return f.result;let m=o.anchorSourceRange?Wr(o.anchorSourceRange):void 0;if(m){if(!o.anchorSourceHash)return zr("Route page composition placement does not expose a verifiable anchor boundary.");let d=Of(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 jv(e){let t=Xv(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 An(e.source,"Root expression rewrite requires an exact expression locator.");let t=kr(e.source,"value");if(!t.ok)return An(e.source,t.diagnostic.message);let n=se(t.ast,e.locator);if(!n.ok)return An(e.source,n.diagnostic.message);let r=n.match.path;if(!r.isExpression())return An(e.source,"Resolved value locator does not point to an expression.");let o=ir(e.source,r.node.start??null,r.node.end??null);if(!o||o!==e.expectedSourceHash)return An(e.source,"Root expression hash no longer matches the current source.");if(e.action.kind==="remove")return r.replaceWith(Ue.nullLiteral()),{ok:!0,source:_f(t.ast,{}).code};let i;try{i=Df.parseExpression(e.action.jsx,{plugins:["jsx","typescript"]})}catch(s){return An(e.source,s instanceof Error?s.message:String(s))}return!Ue.isJSXElement(i)&&!Ue.isJSXFragment(i)?An(e.source,"Root expression rewrite requires a JSX insertion expression."):(e.action.kind==="replace"?r.replaceWith(i):r.replaceWith($v(r.node,i,e.action.placement,e.action.replaceOriginal)),{ok:!0,source:_f(t.ast,{}).code})}function $v(e,t,n,r){if(Ue.isNullLiteral(e)||r)return t;let o=Ue.isJSXFragment(e)?[...e.children]:[Ue.isJSXElement(e)?e:Ue.jsxExpressionContainer(e)],s=n==="before"||n==="prepend"?[t,...o]:[...o,t];return Ue.jsxFragment(Ue.jsxOpeningFragment(),Ue.jsxClosingFragment(),s)}function An(e,t){return{ok:!1,source:e,diagnostic:{message:t}}}function oc(e){let t=jf(e);if(t)return{ok:!1,error:t};let n=e.projection,r=$f(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(Kv(n,o)){let h=nc(e);return h.ok?e.operation==="remove-node"&&!Mf(n,o.placementUnitKey)?zr("The last editable page unit cannot be deleted."):e.operation==="move-node"?zr("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=Wr(o.sourceRange),a=Tt(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?[]:[Hr(a.diagnostic)]}};if(ir(e.source,a.match.node.start??null,a.match.node.end??null)!==o.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source."}]}};if(e.operation==="remove-node"){let h=nc(e);return h.ok?Mf(n,o.placementUnitKey)?{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"remove-node",locator:s}}}:zr("The last editable page unit cannot be deleted."):h.result}if(e.operation==="replace-node")return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"replace-node",locator:s}}};if(!e.targetPlacement)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit move requires a target placement.",diagnostics:[]}};if(e.targetPlacement.composition.routeId!==e.routeId||!Jv(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=sc(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=Wr(f),d=Tt(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?[]:[Hr(d.diagnostic)]}};if(ir(e.source,d.match.node.start??null,d.match.node.end??null)!==u.containerSourceHash)return Lf("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=Wr(h),y=Tt(e.source,E);return!y.ok||!y.match.node?{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:y.ok===!1?y.diagnostic.message:"Route page composition target anchor could not be resolved.",diagnostics:y.ok?[]:[Hr(y.diagnostic)]}}:ir(e.source,y.match.node.start??null,y.match.node.end??null)!==S?Lf("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 Mf(e,t){for(let n of e.placementUnitByKey.values())if(n.placementUnitKey!==t&&n.members.length>0)return!0;return!1}function Vv(e,t){let n=e.placementUnitByKey.get(t.placementUnitKey);return n&&e.container.kind!=="jsx-container"&&ic(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 Kv(e,t){return e.container.kind!=="jsx-container"&&ic(t.sourceRange,e.mutationTarget.sourceRange)&&t.sourceHash===e.mutationTarget.sourceHash}function nc(e){let t=e.projection.mutationTarget,n={kind:"value",root:{kind:"expression",sourceRange:t.sourceRange}},r=Tt(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?[]:[Hr(r.diagnostic)]}}}:ir(e.source,r.match.node.start??null,r.match.node.end??null)!==t.sourceHash?{ok:!1,result:Bf("Route mutation target hash no longer matches the current source.")}:{ok:!0,locator:n,sourceHash:t.sourceHash}}function Of(e,t,n,r){let o=Tt(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?[]:[Hr(o.diagnostic)]}}}:ir(e,o.match.node.start??null,o.match.node.end??null)!==n?{ok:!1,result:Bf(`${r} hash no longer matches the current source.`)}:{ok:!0}}function Bf(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function zr(e){return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:e,diagnostics:[]}}}function Lf(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function Hr(e){return{code:"UNSUPPORTED_PAGE_SHAPE",message:e.message,details:{astCode:e.code}}}function jf(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&&!Uv(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 Uv(e,t){return e.routeId===t.routeId&&e.effectiveTemplateId===t.effectiveTemplateId}function Jv(e,t){return e.routeId===t.routeId&&e.templateId===t.effectiveTemplateId}function Xv(e,t){let n=Ff.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Ff.posix.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Wr(e){return{kind:"jsx-node",strategy:"source-range",sourceRange:e}}function ir(e,t,n){return t==null||n==null?null:`sha256:${Bv("sha256").update(e.slice(t,n)).digest("hex")}`}function ic(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 zv=typeof ac=="function"?ac:ac.default;function Jf(e){if(!e.ast)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=ek(e.ast);if(!t)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export must resolve to a local function component",{reason:"default-export-unresolved"})]);let n=nk(t);if(!n.ok)return kt(e,[n.diagnostic]);let r=n.expression;if(r.isIdentifier()){let o=ok(r,t);if(o.status==="resolved")r=o.expression;else if(o.status==="invalid")return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export local binding is not a supported JSX root")])}if(sk(r,t))return kt(e,[Ve("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(r.isNullLiteral())return lc(e,t,"virtual-route-root",r);if(ik(r)){let o=uk({input:e,source:e.source,expression:r});return cc(e,t,o,{kind:"virtual-route-root",sourceKind:"atomic-expression"},r)}if(r.isConditionalExpression())return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route conditional root contains an unsupported branch shape",{reason:"ambiguous-placement"})]);if(r.isJSXElement()&&!Me(r)&&!un(r)){let o=fc(r),i=Uf({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[o]});return cc(e,t,i,{kind:"virtual-route-root",sourceKind:"jsx-element"},r)}if(r.isJSXElement()||r.isJSXFragment()){let o=ck(r);if(!o.ok)return kt(e,[o.diagnostic]);let i=sr(o.path);if(i.unsupported)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);if(ak(e.source,r,i.members))return lc(e,t,"starter-placeholder",r);let s=r.isJSXFragment()||Me(r);if(i.members.length===0&&s)return lc(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=Uf({input:e,containerKind:a,sourceKind:c,source:e.source,containerPath:o.path,members:i.members});return cc(e,t,l,{kind:a,sourceKind:c},r)}return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")])}function sc(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ve("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:Ve("PLACEMENT_KEY_NOT_FOUND","Placement key was not found in the projected page composition",{placementKey:t})}}function $f(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ve("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:Ve("PLACEMENT_KEY_NOT_FOUND","Placement unit key was not found in the projected page composition",{placementUnitKey:t})}}function Xf(e){return e.ok?Hv(e.projection):Wv(e.projection)}function Hv(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)=>zf(e,u,h,S,e.container.placementKey)),m=f.filter(({member:h})=>h.isBusinessMember).map(({sourceMember:h})=>Yv(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:Gv(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function Wv(e){let t=e.diagnostics.map(Zv);return{status:"unsupported",version:e.version,composition:e.composition,reason:Qv(e.diagnostics),diagnostics:t}}function Gv(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 zf(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)=>zf(e,t,a,c,i))]}function Yv(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function Zv(e){return{code:qv(e),message:e.message}}function Qv(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 qv(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 ek(e){let t=null;return zv(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=tk(o.path);i&&(t=i,n.stop())}}),t}function tk(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 nk(e){let t=e.get("body");if(!t.isBlockStatement()){let s=Yr(t);return s?{ok:!0,expression:s}:{ok:!1,diagnostic:Ve("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:Ve("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")};if(!r.isReturnStatement())return{ok:!1,diagnostic:Ve("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(!rk(s))return{ok:!1,diagnostic:Ve("UNSUPPORTED_PAGE_SHAPE","Route guard return shape is not statically safe",{reason:"guard-shape"})};continue}if(Hf(s)||Wf(s))return{ok:!1,diagnostic:Ve("UNSUPPORTED_PAGE_SHAPE","Route default export contains unsupported control flow before the terminal return",{reason:"control-flow-return"})}}let o=r.get("argument"),i=Yr(o);return i?{ok:!0,expression:i}:{ok:!1,diagnostic:Ve("ROUTE_RETURN_NOT_FOUND","Route default export returns without a boundary expression",{reason:"bare-return"})}}function rk(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(Hf(o)||Wf(o))return null;return r}function Hf(e){return e.isForStatement()||e.isForInStatement()||e.isForOfStatement()||e.isWhileStatement()||e.isDoWhileStatement()||e.isSwitchStatement()||e.isTryStatement()||e.isWithStatement()}function Wf(e){let t=!1;return e.traverse({Function(n){n.skip()},ReturnStatement(){t=!0}}),t}function ok(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=Yr(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 ik(e){return e.isConditionalExpression()?Vf(Yr(e.get("consequent")))&&Vf(Yr(e.get("alternate"))):!1}function Vf(e){return!!(e&&(e.isJSXElement()||e.isJSXFragment()||e.isNullLiteral()))}function Yr(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 sk(e,t){if(e.isIdentifier())return Kf(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return Kf(n.node.name,t)}return!1}function Kf(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 ak(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&dc(t)}function dc(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(!dc(t))return!1;continue}if(t.isJSXElement()&&!dc(t))return!1}return!0}function ck(e){let t=e;if(e.isJSXFragment()||Me(e)){let r=Gr(e),o=r[0];if(r.length===1&&o?.isJSXElement()&&un(o))t=o;else return{ok:!0,path:t}}for(;t.isJSXElement()&&un(t);){let r=Gr(t);if(r.length!==1)return{ok:!0,path:t};let o=r[0];if(!o?.isJSXElement()||!un(o))return{ok:!0,path:t};if(Gr(o).length<=1)return{ok:!0,path:t};t=o}return{ok:!0,path:t}}function Gr(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(...Gr(n));continue}n.isJSXElement()&&(Me(n)?t.push(...Gr(n)):t.push(n))}return t}function sr(e){let t=[],n=!1;for(let r of e.get("children")){if(r.isJSXText()){if(!r.node.value.trim())continue;t.push({memberKey:pc(r.node.type,r.node.start,r.node.end),kind:"text",nodeType:r.node.type,sourceRange:yt(r.node.loc),businessMemberCount:0,parentSourceRange:yt(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=sr(o);n||=i.unsupported,t.push(...i.members);continue}if(o.isJSXElement()){let i=un(o)?sr(o):null;n||=i?.unsupported??!1,t.push({...fc(o,i?.members),sourceRange:yt(r.node.loc),parentSourceRange:yt(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:pc(o.node.type,o.node.start,o.node.end),kind:"atomic-expression",nodeType:o.node.type,sourceRange:yt(r.node.loc),businessMemberCount:1,parentSourceRange:yt(e.node.loc),children:[],isBusinessMember:!0,label:"atomic-expression"});continue}if(r.isJSXFragment()||r.isJSXElement()&&Me(r)){let o=sr(r);n||=o.unsupported,t.push(...o.members);continue}if(r.isJSXElement()){let o=un(r)?sr(r):null;n||=o?.unsupported??!1,t.push({...fc(r,o?.members),parentSourceRange:yt(e.node.loc)})}}return{members:t,unsupported:n}}function fc(e,t){let n=e.isJSXElement()&&un(e)?t??sr(e).members:[],r=e.isJSXElement()&&!un(e)&&!Me(e);return{memberKey:pc(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:yt(e.node.loc),businessMemberCount:r?1:Gf(n),parentSourceRange:yt(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:lk(e)}}function un(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name[0]===t.name[0]?.toLowerCase()}function lk(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 Gf(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function Bi(e){return e.length===0?0:Math.max(1,Gf(e))}function Uf(e){let t=yt(e.containerPath.node.loc),n=gc(e.source,e.containerPath.node.start,e.containerPath.node.end),r=xt(e.input,e.containerKind,e.sourceKind,t),o=xt(e.input,e.containerKind,"placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:Bi(e.members)<=1,memberCount:Bi(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function uk(e){let t=yt(e.expression.node.loc),n=gc(e.source,e.expression.node.start,e.expression.node.end),r=xt(e.input,"virtual-route-root","atomic-expression",t),o=xt(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:xt(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 Yf(e,t){let n=yt(t.node.loc),r=gc(e.source,t.node.start,t.node.end);return!n||!r?null:{kind:"expression",documentVersion:e.version,sourceRange:n,sourceHash:r}}function cc(e,t,n,r,o){let i=Yf(e,o);if(!i)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let s=n.containerSourceRange??n.sourceRange,a=dk(e,n,s),c=ec(a),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Qf(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 dk(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:Bi(g)<=1,memberCount:Bi(g),sourceRange:m,sourceHash:m?uc(e.source,m):null,relation:l,containerSourceRange:h,containerSourceHash:h?uc(e.source,h):null,anchorSourceRange:d,anchorSourceHash:d?uc(e.source,d):null,members:g}),i=t.placementKey,s=t.members.map(l=>xt(e,i,"placement-unit",l.sourceRange)),a=s[0]??t.placementUnitKey,c=s.at(-1)??t.placementUnitKey;r.push(o("prepend",xt(e,i,"prepend",n),a,n,null,[]));for(let l of t.members){let u=l.parentSourceRange??n,f=xt(e,i,"placement-unit",l.sourceRange);r.push(o("before",xt(e,f,"before",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u)),r.push(o("after",xt(e,f,"after",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u))}return r.push(o("append",i,c,n,null,[])),r}function lc(e,t,n,r){let o=Yf(e,r);if(!o)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let i=xt(e,n,"empty-container",void 0),s=xt(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=ec([a]),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Qf(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 kt(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 Ve(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,details:n}}function xt(e,t,n,r){return Zf([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function pc(e,t,n){return Zf(["member",e,String(t??-1),String(n??-1)])}function Zf(e){return`pc_${mc("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function gc(e,t,n){return t==null||n==null?null:`sha256:${mc("sha256").update(e.slice(t,n)).digest("hex")}`}function uc(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:${mc("sha256").update(e.slice(r+t.startColumn,o+t.endColumn)).digest("hex")}`}function yt(e){return e?{startLine:e.start.line,startColumn:e.start.column,endLine:e.end.line,endColumn:e.end.column}:null}function Qf(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 kk}from"@vcp-dev/contracts";import qF from"node:fs";import t_ from"node:path";var pk=/^page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function Zr(e){let t=e.map(r=>vk(r.path)),n=mk(t);return n?t.filter(r=>hk(n,r)).map(r=>({routeId:yk(n,r),entryFile:r})).sort((r,o)=>r.routeId.localeCompare(o.routeId)):[]}function hc(e,t=""){let r=((e??"/").trim()||"/").split(/[?#]/,1)[0]||"/",o=r.startsWith("/")?r:`/${r}`,i=Ek(t),s=i&&(o===i||o.startsWith(`${i}/`))?o.slice(i.length)||"/":o,a=s.startsWith("/")?s:`/${s}`;return a==="/"?"/":a.replace(/\/+$/,"")}function mk(e){return e.some(r=>r.startsWith("app/")&&!gk(r))?"app":e.some(r=>r.startsWith("src/app/"))?"src/app":null}function gk(e){return/^(?:src\/)?app\/(?:_vcp|\.vcp)/.test(e)}function hk(e,t){if(!t.startsWith(`${e}/`))return!1;let n=t.slice(t.lastIndexOf("/")+1);return pk.test(n)?t.slice(e.length+1,-n.length-1).split("/").filter(Boolean).every(r=>!r.startsWith("_")&&!r.startsWith(".")):!1}function yk(e,t){let n=t.slice(e.length+1).split("/").slice(0,-1).map(bk).filter(r=>!!r);return n.length===0?"/":`/${n.join("/")}`}function xk(e){return e.startsWith("(")&&e.endsWith(")")}function bk(e){return!e||e.startsWith("@")||e.startsWith("_")||xk(e)?null:Sk(e)}function Sk(e){return e.replace(/^\((?:\.|\.\.|\.\.\.)\)/,"")}function Ek(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function vk(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}var Qr=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="PageTemplateManagedSourceError"}};function ot(e,t={}){throw new Qr("PAGE_TEMPLATE_MANAGED_SOURCE_INVALID",`Invalid page-template source (${e}): ${t.path??t.routeId??t.templateId??""}`,{reason:e,...t})}function yc(e){return kk.safeParse(e).success||ot("invalid-template-id",{templateId:e}),Buffer.from(e,"utf8").toString("base64url")}function qf(e){/^[A-Za-z0-9_-]{1,255}$/.test(e)||ot("invalid-template-key",{path:e});let t;try{t=new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.from(e,"base64url"))}catch{return ot("invalid-template-key",{path:e})}return yc(t)!==e&&ot("noncanonical-template-key",{path:e}),t}function Ik(e){let t=hc(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("(")||Ck(r)&&!ep(r)))&&ot("invalid-public-route",{routeId:e}),t}function Ck(e){return e.includes("[")||e.includes("]")}function ep(e){return/^\[\[\.\.\.[^\[\]]+\]\]$|^\[[^\[\]]+\]$/.test(e)}function tp(e){return e.some(ep)}function np(e,t,n="app"){n!=="app"&&n!=="src/app"&&ot("invalid-app-root");let r=Ik(e),o=yc(t),i=tp(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))&&ot("path-too-long",{path:a}),{appRoot:n,routeRoot:s,templateKey:o,templateEntryFile:a}}function rp(e){return/^(?:src\/)?app\/\.vcp\/page-templates\//.test(e)}function op(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===".")&&ot("invalid-file-path",{path:i}),n.has(i)&&ot("duplicate-file-path",{path:i}),n.set(i,o)}return n}function $i(e){let t=op(e.files),n=Zr([...t.keys()].map(i=>({path:i}))),r=new Map;for(let i of n){if(r.has(i.routeId))throw new Qr("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(!rp(i))continue;let s=/^(app|src\/app)\/\.vcp\/page-templates\/(.+)\/page\.tsx$/.exec(i);s||ot("candidate-must-be-single-page",{path:i});let a=s[1],c=s[2].split("/"),l=tp(c),u=l?c[0]:c.pop(),f=l?c.slice(1):c,m=qf(u),d=f.length?`/${f.join("/")}`:"/";np(d,m,a).templateEntryFile!==i&&ot("candidate-path-mismatch",{path:i,routeId:d});let h=r.get(d);(!h||!h.startsWith(`${a}/`))&&ot("canonical-entry-missing",{path:i,routeId:d}),o.push({routeId:d,templateId:m,entryFile:i,canonicalEntryFile:h,appRoot:a})}return o.sort((i,s)=>ji(i.routeId,s.routeId)||ji(i.templateId,s.templateId))}function ip(e){let t=op(e.files),n=$i({files:t}),r=Zr([...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)=>ji(o.context.routeId,i.context.routeId)||(o.context.effectiveTemplateId===void 0?-1:i.context.effectiveTemplateId===void 0?1:ji(o.context.effectiveTemplateId,i.context.effectiveTemplateId)))}function Rk(e){let t=hc(e.selector.routeId),n=ip({files:e.files}),r=n.find(i=>i.context.routeId===t&&i.context.effectiveTemplateId===void 0);(!r||r.entryFile!==e.canonicalEntryFile)&&ot("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||ot("template-selection-not-found",{routeId:t,templateId:e.selector.templateId}),{...o,mode:e.selector.templateId===void 0?"direct":"candidate",effectiveEntryFile:o.entryFile}}function ji(e,t){return e<t?-1:e>t?1:0}import{HOME_PAGE_URL_PATH as jk}from"@vcp-dev/contracts";import{parse as nM}from"@babel/parser";import{parse as u_}from"@babel/parser";import{FormBlockIdSchema as f_,FormSpecV1Schema as p_}from"@vcp-dev/contracts";var qr="components/site/generated/forms",m_=`${qr}/vcp-form-runtime.tsx`,Vi="[A-Za-z0-9][A-Za-z0-9_-]{0,127}",g_=new RegExp(`^${qr}/form-(${Vi})\\.spec\\.ts$`),h_=new RegExp(`^${qr}/form-(${Vi})\\.tsx$`),y_=new RegExp(`^@/${qr}/form-(${Vi})$`),x_=new RegExp(`(?:^|/)${qr}/form-(${Vi})(?:\\.tsx?)?$`);var b_=Symbol("invalid-literal");import{createHash as v_}from"node:crypto";import{posix as I_}from"node:path";import{parse as R_}from"@babel/parser";import{FormSpecV1Schema as N_}from"@vcp-dev/contracts";var P_=Symbol("dynamic");import{parse as wk}from"@babel/parser";function Ki(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"&&typeof t.type=="string"):[]}var Nk=/^(?:src\/)?app\/(.*)page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function sp(e){let t=Nk.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 Pk(e){let t=e;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function ap(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function Ak(e){let t=e;for(;t&&(t.type==="TSAsExpression"||t.type==="TSSatisfiesExpression"||t.type==="ParenthesizedExpression");)t=t.expression??null;return t}function xc(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(xc);if(t?.type==="ObjectExpression"){let n={};for(let r of Ki(t.properties)){if(r.type!=="ObjectProperty"||r.computed)throw new Error("dynamic object property");let o=ap(r.key);if(!o)throw new Error("unsupported object key");n[o]=xc(r.value)}return n}throw new Error(`unsupported static value: ${t?.type??"unknown"}`)}function bc(e,t){let n=[],r=sp(t);if(r===null)return{found:!1,seo:null,diagnostics:n};let o;try{o=wk(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 Ki(o.program.body)){let u=l.type==="ExportNamedDeclaration"?l.declaration:l;if(u?.type==="VariableDeclaration")for(let f of Ki(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=Ak(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 Ki(s.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=ap(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=Pk(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=xc(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 Tk}from"@babel/parser";var cp=["page","anchor","external","email","phone","group","file"],Fk=["link","cta"],up=["description","badge","iconKey"],Sc=["label","targetType","href","role","openInNewTab","nofollow","children",...up],_k=new Set(Sc);function to(e){return Array.isArray(e)?e:[]}function eo(e){let t=e;return t?.type==="StringLiteral"&&typeof t.value=="string"?t.value:void 0}function Mk(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function lp(e){let t=e;return t?.type==="BooleanLiteral"&&typeof t.value=="boolean"?t.value:void 0}function Ec(e){let t=[],n;try{n=Tk(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 to(n.program.body)){let s=i.type==="ExportNamedDeclaration"?i.declaration:i;if(s?.type==="VariableDeclaration")for(let a of to(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 to(r.elements).forEach((i,s)=>{let a=dp(i,`NAV_ITEMS[${s}]`,t);a&&o.push(a)}),{items:o,diagnostics:t}}function dp(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 to(e.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=Mk(l.key);u&&(r[u]=l.value)}let o=eo(r.label),i=eo(r.targetType);if(!o)return n.push({severity:"fatal",path:`${t}.label`,message:"label must be a static string"}),null;if(!i||!cp.includes(i))return n.push({severity:"fatal",path:`${t}.targetType`,message:`targetType must be one of ${cp.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 up){if(r[l]===void 0)continue;let u=eo(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))_k.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 ${Sc.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=[];to(r.children.elements).forEach((u,f)=>{let m=dp(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=eo(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=eo(r.role);if(c!==void 0&&(Fk.includes(c)?s.role=c:n.push({severity:"warning",path:`${t}.role`,message:"role ignored: not link/cta"})),r.openInNewTab!==void 0){let l=lp(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=lp(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 Ok}from"@babel/parser";function no(e){return Array.isArray(e)?e:[]}function fp(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression";)t=t.expression;return t?.type==="ArrayExpression"?t:void 0}function Lk(e){let t;try{t=Ok(e,{sourceType:"module",plugins:["typescript","jsx"],tokens:!0})}catch{return{status:"unsupported"}}let n=[];for(let o of no(t.program.body)){let i=o.type==="ExportNamedDeclaration"?o.declaration:o;if(i?.type==="VariableDeclaration")for(let s of no(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=fp(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 vc(e,t){let n=pp(t);if(!n)return{status:"unsupported",source:e};let r=Lk(e);if(r.status!=="ok")return{status:r.status,source:e};let o=r.array;if(Ec(e).diagnostics.some(({severity:l})=>l==="fatal"))return{status:"unsupported",source:e};let s=[],a=l=>{let u=no(l.elements);for(let[f,m]of u.entries()){if(Bk(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 y=/^\s*,/.exec(e.slice(E));s.push({start:S,end:y?E+y[0].length:E})}continue}let d=Dk(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 Dk(e){if(e.type==="ObjectExpression")for(let t of no(e.properties)){if(t.type!=="ObjectProperty")continue;let n=t.key;if((n?.name??n?.value)==="children")return fp(t.value)}}function pp(e){let t=e.trim();return t.startsWith("/")?t==="/"?t:t.replace(/\/+$/,""):null}function Bk(e,t){if(e.type!=="ObjectExpression")return!1;let n,r;for(let o of no(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"&&pp(n??"")===t}import{estimateNavLabelWidth as j_}from"@vcp-dev/contracts";import{parse as K_}from"@babel/parser";var $k="components/site/generated/",ro=[".tsx",".ts",".jsx",".js"];function mp(e){if(e.expectedUrlPath===jk)return{ok:!1,code:"HOME_PAGE_LOCKED",message:"The homepage source is protected from deletion."};let t=new Set(Zr(Object.keys(e.files).map(h=>({path:h}))).map(h=>h.entryFile)),n=Object.entries(e.files).filter(([h,S])=>{let E=h.replace(/\\/g,"/");if(!t.has(E))return!1;let y=bc(S,E);return y.found&&y.seo?.path===e.expectedUrlPath});if(n.length===0)return{ok:!1,code:"ROUTE_NOT_FOUND",message:"No route uniquely matches the requested page identity."};if(n.length>1)return{ok:!1,code:"ROUTE_AMBIGUOUS",message:"Multiple routes match the requested page identity."};let[r]=n[0],o=new Set([r]);try{let h=$i({files:new Map(Object.entries(e.files))});for(let S of h)S.canonicalEntryFile===r&&o.add(S.entryFile)}catch(h){return{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:h instanceof Error?h.message:"Invalid page template source."}}let i=Vk(e.files);if(!i.ok)return i.error;let s=i.graph,a=Xk(o,s),c=zk(o,a,s),l=[...a].filter(h=>!c.has(h)).sort((h,S)=>h.localeCompare(S)),u=[...o,...[...c].sort((h,S)=>h.localeCompare(S))],f=new Set(u),m=u.map(h=>({operation:"delete",file:h})),d=[],g=[];for(let[h,S]of Object.entries(e.files))if(!f.has(h)){if(S.includes("NAV_ITEMS")){let E=vc(S,e.expectedUrlPath);E.status==="removed"?(m.push({operation:"upsert",file:h,content:E.source}),d.push(h)):E.status==="unsupported"&&g.push(`unsupported_navigation:${h}`)}S.includes(e.expectedUrlPath)&&!S.includes("NAV_ITEMS")&&g.push(`preserved_link:${h}`)}return{ok:!0,edits:m,deletedFiles:u,updatedFiles:d,preservedSharedFiles:l,warnings:g}}function Vk(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")||!Kk(r))continue;let s=Ut(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(Uk(c))continue;let l=bn(r,c),u=Jk(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 Kk(e){let t=e.toLowerCase();return ro.some(n=>t.endsWith(n))}function Uk(e){return!!(/\.([a-z0-9]+)$/i.exec(e)&&!ro.some(n=>e.endsWith(n)))}function Jk(e,t){let n=e.replace(/\\/g,"/");return(ro.some(o=>n.endsWith(o))?[n]:[...ro.map(o=>`${n}${o}`),...ro.map(o=>`${n}/index${o}`)]).find(o=>t.has(o))??null}function Xk(e,t){let n=new Set,r=[...e].flatMap(o=>[...t.get(o)??[]]);for(;r.length>0;){let o=r.pop();!o.startsWith($k)||n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function zk(e,t,n){let r=new Set(t),o=!0;for(;o;){o=!1;for(let i of[...r])[...n].some(([a,c])=>!e.has(a)&&!r.has(a)&&c.has(i))&&(r.delete(i),o=!0)}return r}import*as mm from"@babel/parser";import*as de from"@babel/types";import*as is from"node:path";import*as Se from"@babel/types";function gp(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 Mt(e){if(e.path.isObjectPattern()||e.path.isArrayPattern())return Tn(e.path.node,e.identifier.name);if(e.path.isVariableDeclarator()){let n=e.path.node.id;if(Se.isObjectPattern(n)||Se.isArrayPattern(n))return Tn(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(Wk(e.path,n))return!0}if(t.isFunction()||t.isVariableDeclarator())return!1;t=t.parentPath}return!1}function Tn(e,t,n=!1){return Se.isIdentifier(e)?e.name===t&&n:Se.isObjectPattern(e)?e.properties.some(r=>Se.isObjectProperty(r)?Tn(r.value,t,n):Tn(r.argument,t,n)):Se.isArrayPattern(e)?e.elements.some(r=>{if(!r)return!1;let o=Se.isRestElement(r)?r.argument:r;return Tn(o,t,n)}):Se.isAssignmentPattern(e)?Tn(e.left,t,!0):Se.isRestElement(e)?Tn(e.argument,t,n):!1}function ar(e,t){if(e.path.isObjectPattern()){if(t){let r=It(e.path.node,t.base),[o,...i]=r??[];if(o?.kind==="property")return{propName:o.name,remainingPath:[...i,...t.path],hasDefault:Mt(e)}}return t?{propName:t.base,remainingPath:t.path,hasDefault:Mt(e)}:null}if(e.path.isVariableDeclarator()){let r=e.path.get("init");if(r?.isExpression()){let o=hp(r),i=!1,s=o?o.initBinding&&kc(o.initBinding)?(i=Mt(o.initBinding),[...o.initPathPrefix]):o.initBinding?(()=>{let c=ar(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=It(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||Mt(e)}}}}let n=Zk(e);if(n){let r=Hk(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||Mt(e)}}if(n.findParent(s=>s.isVariableDeclarator()))return null;let o=Gk(e);if(o){let[s,...a]=o;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:Mt(e)}}let i=oo(n.node);return i?{propName:i,remainingPath:t?.path??[],hasDefault:Mt(e)}:null}if(kc(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:Mt(e)}}return null}function Hk(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=hp(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=kc(i)?(a=Mt(i),[...s]):(()=>{let u=ar(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=It(n.node.id,t.identifier.name);return l?{path:[...c,...l],hasDefault:a||Mt(t)}:null}function hp(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=Qk(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function kc(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function Wk(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function Gk(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=It(i.node,t);if(a)return a}return null}function yp(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=Ui(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=oo(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=Yk(e);if(!r)return null;let o=r.parentPath;if(!o?.isObjectProperty())return null;let i=oo(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 Ui(e,t){if(e.isObjectPattern()){for(let n of e.get("properties"))if(n.isObjectProperty()){let r=oo(n.node),o=n.get("value");if(o.isAssignmentPattern()){let i=o.get("left"),s=o.get("right");if(r&&!Array.isArray(i)&&It(i.node,t)&&!Array.isArray(s)&&s.isExpression())return{propName:r,expressionPath:s}}if(!Array.isArray(o)&&(o.isObjectPattern()||o.isArrayPattern())){let i=Ui(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=Ui(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=Ui(r,t);if(o)return o}}return null}function It(e,t,n=[]){if(Se.isIdentifier(e))return e.name===t?n:null;if(Se.isObjectPattern(e)){for(let r of e.properties)if(Se.isObjectProperty(r)){let o=oo(r);if(!o)continue;let i=It(r.value,t,[...n,{kind:"property",name:o}]);if(i)return i}else if(Se.isRestElement(r)){let o=It(r.argument,t,n);if(o)return o}}if(Se.isArrayPattern(e))for(let r=0;r<e.elements.length;r+=1){let o=e.elements[r];if(!o)continue;let i=Se.isRestElement(o)?o.argument:o,s=It(i,t,[...n,{kind:"index",index:r}]);if(s)return s}return Se.isAssignmentPattern(e)?It(e.left,t,n):null}function Yk(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isAssignmentPattern()&&t.node.left===e.path.node?t:null}function Zk(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 oo(e){return e.computed?null:Se.isIdentifier(e.key)?e.key.name:Se.isStringLiteral(e.key)?e.key.value:null}function Qk(e){let t=[],n=e;for(;Se.isMemberExpression(n);){if(n.computed)if(Se.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(Se.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(Se.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return Se.isIdentifier(n)?{base:n.name,path:t}:null}import*as vp from"@babel/parser";import Rc from"@babel/traverse";import*as cr from"@babel/types";import*as ae from"@babel/types";function zi(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?Ji(n,t):null}if(e.isMemberExpression()){let n=oI(e.node),r=qk(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?Ji(o,[...r,...t]):null}return e.isAwaitExpression()||Cc(e.node)?dn(sI(e.node),t,"awaited or fetched expression"):null}function qk(e){let t=[],n=e;for(;ae.isMemberExpression(n);){if(n.computed)if(ae.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ae.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(ae.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return ae.isIdentifier(n)?t:null}function Ji(e,t=[],n){let r=eI(e,t);if(r)return r;let o=tI(e,t);if(o)return o;let i=nI(e,t,n);return i||null}function so(e){return e?.kind==="api-source"}function eI(e,t){if(e.path.isVariableDeclarator()&&ae.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&Ic(s.node)&&t[0]?.kind==="property"&&t[0].name==="data")return dn(e.identifier.name,t,"query hook result.data binding")}if(e.path.isVariableDeclarator()&&ae.isObjectPattern(e.path.node.id)){let s=e.path.node.id.properties.find(c=>ae.isObjectProperty(c)&&Sp(c)==="data"&&io(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&Ic(a.node))return dn(e.identifier.name,t,"query hook data binding")}let n=rI(e);if(!n||Sp(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()||!Ic(i.node)?null:dn(e.identifier.name,t,"query hook data binding")}function tI(e,t){if(e.path.isVariableDeclarator()&&ae.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!bp(a.node))return null;let[c,l]=e.path.node.id.elements;return!ae.isIdentifier(c)||c.name!==e.identifier.name||!ae.isIdentifier(l)?null:xp(e,l.name)?dn(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()||!bp(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return ae.isIdentifier(s)&&xp(e,s.name)?dn(e.identifier.name,t,"state setter is updated by API data"):null}function nI(e,t,n){let r=e.path.isVariableDeclarator()?e.path:e.path.findParent(i=>i.isVariableDeclarator());if(!r?.isVariableDeclarator())return null;let o=r.get("init");return o?.isExpression()?o.isAwaitExpression()?dn(e.identifier.name,t,"awaited binding result"):Cc(o.node,n)?dn(e.identifier.name,t,"fetch-backed binding result"):null:null}function rI(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 io(e,t){return ae.isIdentifier(e)?e.name===t:ae.isAssignmentPattern(e)?io(e.left,t):ae.isObjectPattern(e)?e.properties.some(n=>ae.isObjectProperty(n)?io(n.value,t):io(n.argument,t)):ae.isArrayPattern(e)?e.elements.some(n=>!!n&&io(ae.isRestElement(n)?n.argument:n,t)):!1}function xp(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){Cc(i.node)&&(n=!0),(iI(i.node.callee,t)||i.node.arguments.some(s=>ae.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function Ic(e){let t=Hi(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function bp(e){return Hi(e.callee)==="useState"}function Cc(e,t){let n=t?.get(e);if(n!==void 0)return n;let r=Xi(e,o=>ae.isCallExpression(o)&&Hi(o.callee)==="fetch");return t?.set(e,r),r}function oI(e){let t=e;for(;ae.isMemberExpression(t);)t=t.object;return ae.isIdentifier(t)?t.name:null}function Sp(e){return e.computed?null:ae.isIdentifier(e.key)?e.key.name:ae.isStringLiteral(e.key)?e.key.value:null}function Hi(e){return ae.isIdentifier(e)?e.name:ae.isMemberExpression(e)&&ae.isIdentifier(e.property)?e.property.name:null}function iI(e,t){return Xi(e,n=>ae.isIdentifier(n)&&n.name===t)}function Xi(e,t){if(t(e))return!0;let n=ae.VISITOR_KEYS[e.type];if(!n)return!1;for(let r of n){let o=e[r];if(Array.isArray(o)){for(let i of o)if(ae.isNode(i)&&Xi(i,t))return!0;continue}if(ae.isNode(o)&&Xi(o,t))return!0}return!1}function sI(e){return ae.isIdentifier(e)?e.name:ae.isCallExpression(e)?Hi(e.callee)??"api":ae.isAwaitExpression(e)?"awaited-api":"api"}function dn(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:aI(e,t),reason:n}}function aI(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var kp=typeof Rc=="function"?Rc:Rc.default;function Ip(e,t){let n=Rp(e);if(!n)return{allowed:!0};let r=!1;return kp(n,{CallExpression(o){if(!wp(o.node,t.sourceRange)||!cI(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||so(zi(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function Cp(e,t){let n=Rp(e);if(!n)return{allowed:!0};let r=!1;return kp(n,{JSXExpressionContainer(o){wp(o.node,t.sourceRange)&&(cr.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 Rp(e){try{return vp.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function cI(e){let t=e.callee;return cr.isMemberExpression(t)&&cr.isIdentifier(t.property)&&t.property.name==="map"}function wp(e,t){let n=e.loc;return n?Ep({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&Ep({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function Ep(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 J from"@babel/types";import*as Np from"@babel/parser";import wc from"@babel/traverse";import*as Fe from"@babel/types";import*as lr from"node:path";var Ct=typeof wc=="function"?wc:wc.default;function Je(e){try{return Np.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Nc(e){return e.computed?Fe.isStringLiteral(e.key)||Fe.isNumericLiteral(e.key)?String(e.key.value):null:lI(e.key)}function lI(e){return Fe.isIdentifier(e)?e.name:Fe.isStringLiteral(e)||Fe.isNumericLiteral(e)?String(e.value):null}function Fn(e){return Fe.isParenthesizedExpression(e)||Fe.isTSAsExpression(e)||Fe.isTSSatisfiesExpression(e)||Fe.isTSNonNullExpression(e)||Fe.isTSTypeAssertion(e)?Fn(e.expression):Fe.isExpression(e)?e:null}function Pc(e){if(Fe.isIdentifier(e))return[e.name];if((Fe.isMemberExpression(e)||Fe.isOptionalMemberExpression(e))&&!e.computed&&Fe.isIdentifier(e.property)){let t=Fn(e.object),n=t?Pc(t):null;return n?[...n,e.property.name]:null}return null}function _n(e,t){return t.startsWith("@/")?t.slice(2).replace(/\\/g,"/"):t.startsWith(".")?lr.normalize(lr.join(lr.dirname(e),t)).replace(/\\/g,"/"):t}function ct(e,t){return Wi(e)===Wi(t)}function Wi(e){let t=ur(e);return t.endsWith("/index")?t.slice(0,-6):t}function ur(e){return e.replace(/\.(tsx|ts|jsx|js)$/,"")}function Tp(e,t,n){let r=Op(e,t);if(Lp(e,r),Dp(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 Ct(e,{JSXElement(s){Vp(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:Gi(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 Fp(e,t){let n=new Map,r=i=>{let s=dr(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 uI(i,n))o=r(s)||o}return[...n.values()]}function uI(e,t){let n=[],r=dI(e,t);for(let o of e.ast.program.body){if(J.isExportDefaultDeclaration(o)&&J.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=ao(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(J.isExportNamedDeclaration(o)&&o.source&&typeof o.source.value=="string"){let i=_n(e.file,o.source.value);for(let s of o.specifiers){if(J.isExportNamespaceSpecifier(s)){let l=fn(s.exported);for(let u of t.values())ct(u.file,i)&&n.push({file:e.file,namespace:Ac(l,u.namespace),exportName:u.exportName});continue}if(!J.isExportSpecifier(s))continue;let a=fn(s.local),c=[...t.values()].filter(l=>ct(l.file,i)&&Mn(l.namespace,a));if(c.length>0){let l=fn(s.exported);for(let u of c){let f=ao(u.namespace,a,l);f&&n.push({file:e.file,namespace:f,exportName:u.exportName})}continue}t.has(dr({file:i,exportName:a}))&&n.push({file:e.file,exportName:fn(s.exported)})}continue}if(J.isExportNamedDeclaration(o)&&!o.source){for(let i of o.specifiers){if(!J.isExportSpecifier(i))continue;let s=fn(i.local),a=r.get(s)??[];if(a.length>0){let c=fn(i.exported);n.push({file:e.file,exportName:c});for(let l of a){let u=ao(l.namespace,s,c);u&&n.push({file:e.file,namespace:u,exportName:l.exportName})}}}continue}if(J.isExportAllDeclaration(o)&&typeof o.source.value=="string"){let i=_n(e.file,o.source.value),s=o.exported;if(s){let a=fn(s);for(let c of t.values())ct(c.file,i)&&n.push({file:e.file,namespace:Ac(a,c.namespace),exportName:c.exportName});continue}for(let a of t.values())ct(a.file,i)&&(a.namespace||a.exportName!=="default")&&n.push({file:e.file,namespace:a.namespace,exportName:a.exportName})}}return n}function Ac(e,t){return t?`${e}.${t}`:e}function Mn(e,t){return e===t||e?.startsWith(`${t}.`)===!0}function ao(e,t,n){return!Mn(e,t)||!e?null:e===t?n:`${n}${e.slice(t.length)}`}function dI(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(!J.isImportDeclaration(i)||typeof i.source.value!="string")continue;let s=_n(e.file,i.source.value);for(let a of i.specifiers){if(J.isImportDefaultSpecifier(a)){let c=t.get(dr({file:s,exportName:"default"}));c&&r(a.local.name,c);let l=[...t.values()].filter(u=>ct(u.file,s)&&Mn(u.namespace,"default"));for(let u of l){let f=ao(u.namespace,"default",a.local.name);f&&r(a.local.name,{...u,namespace:f})}continue}if(J.isImportSpecifier(a)){let c=fn(a.imported),l=[...t.values()].filter(f=>ct(f.file,s)&&Mn(f.namespace,c));for(let f of l)r(a.local.name,f);let u=t.get(dr({file:s,exportName:c}));u&&r(a.local.name,u);continue}if(J.isImportNamespaceSpecifier(a))for(let c of t.values())ct(c.file,s)&&r(a.local.name,{...c,namespace:Ac(a.local.name,c.namespace)})}}let o=!0;for(;o;){o=!1;for(let i of e.ast.program.body)if(J.isVariableDeclaration(i))for(let s of i.declarations){if(!J.isIdentifier(s.id)||!s.init)continue;let a=Fn(s.init);if(!a||!J.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(dr));for(let f of c){let m=ao(f.namespace,a.name,s.id.name),d=m?{...f,namespace:m}:f,g=dr(d);u.has(g)||(r(s.id.name,d),u.add(g),o=!0)}}}return n}function dr(e){let t=e.namespace?`${e.namespace}.${e.exportName}`:e.exportName;return`${Wi(e.file)}#${t}`}function fn(e){return J.isIdentifier(e)?e.name:e.value}function _p(e,t){for(let n of e.program.body){if(J.isExportDefaultDeclaration(n)){let o=n.declaration;if((J.isFunctionDeclaration(o)||J.isClassDeclaration(o))&&o.id?.name===t)return{exportName:"default"};if(J.isIdentifier(o)&&o.name===t)return{exportName:"default"}}if(!J.isExportNamedDeclaration(n))continue;let r=n.declaration;if((J.isFunctionDeclaration(r)||J.isClassDeclaration(r))&&r.id?.name===t)return{exportName:t};if(J.isVariableDeclaration(r)){for(let o of r.declarations)if(J.isIdentifier(o.id,{name:t}))return{exportName:t}}for(let o of n.specifiers){if(!J.isExportSpecifier(o)||o.local.name!==t)continue;return{exportName:J.isIdentifier(o.exported)?o.exported.name:o.exported.value}}}return null}function Fc(e){let t=fI(e),n=[],r=Dp(e.ast,t);return Ct(e.ast,{JSXElement(o){ct(e.file,e.sourceFile)&&Gi(o)===e.sourceComponent||Vp(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function Mp(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function Op(e,t){let n=Mp();return Ct(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function fI(e){let t=Mp();return ct(e.file,e.sourceFile)&&pI(t,Op(e.ast,e.sourceComponent)),Ct(e.ast,{ImportDeclaration(n){let r=n.node,o=r.source.value;if(typeof o!="string")return;let i=_n(e.file,o),s=e.componentIdentities.filter(a=>ct(a.file,i));if(s.length!==0)for(let a of r.specifiers){let c=n.scope.getBinding(a.local.name);if(c){if(J.isImportDefaultSpecifier(a)&&s.some(l=>l.exportName==="default")&&t.localBindings.add(c),J.isImportDefaultSpecifier(a)){let l=s.filter(u=>Mn(u.namespace,"default"));if(l.length>0){let u=t.namespaceMembers.get(c)??new Set;for(let f of l){let m=Ap(f,"default");m&&u.add(m)}t.namespaceMembers.set(c,u)}continue}if(J.isImportSpecifier(a)){let l=J.isIdentifier(a.imported)?a.imported.name:a.imported.value,u=s.filter(f=>Mn(f.namespace,l));if(u.length>0){let f=t.namespaceMembers.get(c)??new Set;for(let m of u){let d=Ap(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(J.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)}}}}}),Lp(e.ast,t),t}function pI(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 Lp(e,t){Ct(e,{VariableDeclarator(n){if(!n.node.init)return;let r=Fn(n.node.init);if(r){if(J.isIdentifier(n.node.id)){let o=On(r,t,n),i=n.scope.getBinding(n.node.id.name);o&&i&&Tc(t,i,o);return}if(J.isObjectPattern(n.node.id)){let o=On(r,t,n);o?.unsupported||o?.local?t.hasUnsupportedAlias=!0:o&&o.namespaceMembers.size>0&&$p(n.node.id,o.namespaceMembers,t,n)}}}})}function Dp(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return Ct(e,{ReferencedIdentifier(r){if(n){r.stop();return}mI(r)||!r.isIdentifier()||!Bp(r,t)||gI(r,t)||hI(r)||(n=!0,r.stop())}}),n}function mI(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 Bp(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)&&On(r.node,t,r)?r:null}function gI(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!Pp(e,r))return!1;let o=Bp(e,t);if(!o)return!1;if(Fn(r.node)===o.node)return!!On(r.node,t,r);let s=e.findParent(c=>c.isObjectProperty());if(!s?.isObjectProperty())return!1;let a=s.get("value");return a.isExpression()&&Pp(e,a)&&!!On(a.node,t,a)}function hI(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function Pp(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function On(e,t,n){let r=Fn(e);if(!r)return null;if(J.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(J.isObjectExpression(r))return yI(r,t,n);let o=Pc(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?jp(s,o.slice(1).join(".")):null}function yI(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!J.isObjectProperty(i))continue;let s=Nc(i);if(!s||!J.isExpression(i.value)){J.isExpression(i.value)&&(o||=On(i.value,t,n)!==null);continue}let a=On(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 jp(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 Tc(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 $p(e,t,n,r){for(let o of e.properties){if(J.isRestElement(o)){if(J.isIdentifier(o.argument)){let c=r.scope.getBinding(o.argument.name);c&&Tc(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!J.isObjectProperty(o))continue;let i=Nc(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=jp(t,i);if(!s)continue;n.hasUnsupportedAlias||=s.unsupported;let a=J.isAssignmentPattern(o.value)?o.value.left:o.value;if(J.isIdentifier(a)){let c=r.scope.getBinding(a.name);c&&Tc(n,c,s);continue}if(J.isObjectPattern(a)&&s.namespaceMembers.size>0){$p(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function Ap(e,t){if(!Mn(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 Vp(e,t){let n=e.node.openingElement.name;if(J.isJSXIdentifier(n)){let o=e.scope.getBinding(n.name);return!!(o&&t.localBindings.has(o))}let r=Kp(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 Kp(e){if(J.isJSXIdentifier(e))return[e.name];if(J.isJSXMemberExpression(e)){let t=Kp(e.object);return t?[...t,e.property.name]:null}return null}function Gi(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()&&J.isIdentifier(n.node.id))return n.node.id.name}return null}function Up(e,t){let n=Je(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=Fc({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 ye(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 he(e){return typeof e.start=="number"&&typeof e.end=="number"?{start:e.start,end:e.end}:null}function Ot(e,t){let n=he(e);return!!(n&<(t,n))}function lt(e,t){return t.start>=e.start&&t.end<=e.end}function bt(e,t){let n=se(e,ye(t));return n.ok&&n.match.path.isJSXElement()?n.match.path:Yi(e,t)}function fr(e,t){let n=he(t);return n?e.slice(n.start,n.end):""}function Jp(e,t){return e.start===t.start&&e.end===t.end}function Yi(e,t){let n=null;return Ct(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 Zi(e,t){return _c(e,t).length>0}function Qi(e,t){let n=he(e.node),r=he(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()&&!xI(o,n,r)))return!0;o=o.parentPath}return!1}function xI(e,t,n){let r=he(e.node.consequent);if(r&<(r,t)&&!lt(r,n))return!1;let o=e.node.alternate?he(e.node.alternate):null;return!(o&<(o,t)&&!lt(o,n))}function _c(e,t){let n=he(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=he(o.node.consequent),a=he(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()&&Mc(o.node.operator)){let s=he(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 Mc(e){return e==="&&"||e==="||"||e==="??"}function Xp(e,t){let n=he(e.consequent);if(n&<(n,t))return n;let r=he(e.alternate);return r&<(r,t)?r:null}function zp(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=>ur(a.file)));if(!t.has(ur(e.sourceFile))||!t.has(ur(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(ur(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=_p(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=Je(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=Fp(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=Fc({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!ct(s.file,e.targetFile)||Gi(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 II}from"@vcp-dev/contracts";function qi(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 co();let a=s.target,c=a.locator;if(a.sourceKind==="repeat-template"){let l=o?.instanceIndex;if(l===void 0)return co();let u=bI(a,l,o?.instanceCount);if(!u)return co();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"?co():{ok:!0,target:{kind:"jsx-attribute"}}}function co(){return{ok:!1,code:"unsupported-binding",reason:"Property does not have a safe typed binding write target for this scope and operation"}}function bI(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 Lt from"@babel/types";import{SiteEditSetPropsParamsSchema as SI}from"@vcp-dev/contracts";function Hp(e){let t=e.changes??(e.change?[e.change]:[]);if(!SI.safeParse({kind:"set-props",scope:"selection",changes:t}).success)return lo("invalid-change","Repeat property changes are invalid");if(t.length!==1||t[0].name!==e.target.propertyName)return lo("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 lo("invalid-target","Repeat property source could not be parsed");let i=[{type:"set-property-binding",order:0,file:e.target.templateFile,locator:e.target.targetElementLocator,name:r.name,object:e.target.callbackItemName,property:r.name}];for(let[s,a]of e.target.parentObjectLocators.entries()){let c=se(o.ast,a);if(!c.ok||!c.match.path.isObjectExpression())return lo("unsupported-object",`Repeat item ${s} is not a writable object expression`);let l=s===e.target.sourceItemIndex?EI(r):vI(c.match.path.node,r.name);if(!l)return lo("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 EI(e){return e.operation==="set"?{kind:"value",value:e.value}:{kind:"undefined"}}function vI(e,t){let n=e.properties.filter(i=>Lt.isObjectProperty(i)&&kI(i.key)===t);if(n.length>1)return null;let r=n[0];if(!r)return{kind:"undefined"};if(!Lt.isExpression(r.value))return null;let o=_t(r.value);return o.status==="undefined"?{kind:"undefined"}:o.status!=="resolved"?null:{kind:"value",value:o.value}}function kI(e){return Lt.isIdentifier(e)?e.name:Lt.isStringLiteral(e)?e.value:Lt.isNumericLiteral(e)?String(e.value):null}function lo(e,t){return{ok:!1,errorCode:e,reason:t}}function Wp(e){if(e.change.name!=="className"&&e.change.name!=="class")return uo("unsupported-owner",`No specialized property owner is available for '${e.change.name}'`);let t=e.classNameSource;if(!t||t.filePath!==e.node.file)return uo("owner-source-unavailable","className source details are unavailable for the selected node");if(e.change.name==="class"&&t.sourceKind==="missing")return uo("owner-source-unavailable","The class alias requires an existing className source");if(t.sourceKind==="expression")return uo("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 uo("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 uo(e,t){return{ok:!1,errorCode:e,reason:t}}async function Yp(e){let t=II.safeParse({kind:"set-props",scope:e.scope,changes:e.changes});if(!t.success)return pn("invalid-change","Typed property changes are invalid");if(e.node.importedFrom==="next/link"&&e.node.exportName==="default"){let r=t.data.changes.find(o=>o.name==="href");if(r&&(r.operation==="remove"||typeof r.value!="string"||r.value.trim().length===0))return pn("invalid-change","next/link requires a non-empty href; use the dedicated link-target operation to remove the link")}let n=[];for(let r of t.data.changes){let o=await CI(e,r);if(o){if(!o.ok)return pn("owner-plan-failed",o.reason);Gp(n,o.steps);continue}let i=await e.getPropertyState(e.node.key,r.name,e.selectionRef);if(!i)return pn("missing-property-state",`No authoritative property state is available for '${r.name}'`);if(i.status==="blocked")return pn("readonly-property",i.diagnostic?.message??`Property '${r.name}' is not writable`);if(NI(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=qi({state:i,scope:e.scope,operation:r.operation,selectionRef:e.selectionRef,repeatTarget:s});if(!a.ok)return pn(a.code,a.reason);let c=a.target;if(c.kind==="value-binding"&&r.operation==="set"){Oc(n,{type:"update-value",order:n.length,file:c.file,locator:c.locator,value:r.value});continue}if(c.kind==="repeat-property"){let l=Hp({source:e.getFileContent(c.target.sourceFile),target:c.target,changes:[r]});if(!l.ok)return pn("repeat-target-failed",l.reason);Gp(n,l.steps);continue}Oc(n,{type:"set-property-changes",order:n.length,file:e.node.file,locator:RI(e.node),scope:e.scope,changes:[r]})}return n.forEach((r,o)=>{r.order=o}),wI(n)?pn("step-conflict","Property changes resolve to conflicting write steps"):{ok:!0,steps:n}}async function CI(e,t){return t.name!=="className"&&t.name!=="class"?null:Wp({node:e.node,change:t,classNameSource:e.classNameSource})}function RI(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 wI(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 Gp(e,t){for(let n of t)Oc(e,{...n,order:e.length})}function Oc(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 NI(e,t){if(t.operation!=="set"||e.status!=="direct")return!1;let n=e.attribute?.resolution;return n?.status==="resolved"?Lc(n.value,t.value):e.attribute?.source===null&&e.attribute.value===t.value}function Lc(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)=>Lc(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=>Lc(n[i],r[i]))}return!1}function pn(e,t){return{ok:!1,errorCode:e,reason:t}}import*as mr from"@babel/types";import*as G from"@babel/types";function Dc(e,t,n){let r=bt(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(!G.isIdentifier(l)||l.name!=="map"||c.computed)return null;let u=a.get("object"),f=fr(e,u.node),m=r.node.params.map(h=>fr(e,h)),d=he(i.node),g=he(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:G.isOptionalMemberExpression(c)&&c.optional?"?.map":".map",collectionNeedsParens:es(u.node),callbackPath:r,collectionPath:u}}function fo(e,t){return!!(e&&t&&e.callStart===t.callStart&&e.callEnd===t.callEnd&&e.callbackStart===t.callbackStart&&e.callbackEnd===t.callbackEnd)}function PI(e,t){let n=he(e.node);return n?AI(t).some(r=>{let o=he(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function AI(e){let t=e.callbackPath.node.body;return G.isBlockStatement(t)?mn(t.body):gn(t)}function mn(e){let t=[];for(let n of e){if(G.isReturnStatement(n)){n.argument&&t.push(...gn(n.argument));continue}if(G.isBlockStatement(n)){t.push(...mn(n.body));continue}if(G.isIfStatement(n)){let r=G.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent];if(t.push(...mn(r)),n.alternate){let o=G.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];t.push(...mn(o))}continue}if(G.isSwitchStatement(n)){for(let r of n.cases)t.push(...mn(r.consequent));continue}G.isTryStatement(n)&&(t.push(...mn(n.block.body)),n.handler&&t.push(...mn(n.handler.body.body)),n.finalizer&&t.push(...mn(n.finalizer.body)))}return t}function gn(e){return G.isJSXElement(e)?TI(e)?Zp(e.children):[e]:G.isJSXFragment(e)?Zp(e.children):G.isParenthesizedExpression(e)||G.isTSAsExpression(e)||G.isTSSatisfiesExpression(e)||G.isTSNonNullExpression(e)||G.isTSTypeAssertion(e)?gn(e.expression):G.isConditionalExpression(e)?[...gn(e.consequent),...gn(e.alternate)]:G.isLogicalExpression(e)&&Mc(e.operator)?gn(e.right):[]}function Zp(e){return e.flatMap(t=>G.isJSXElement(t)||G.isJSXFragment(t)?gn(t):G.isJSXExpressionContainer(t)&&(G.isJSXElement(t.expression)||G.isJSXFragment(t.expression)||G.isConditionalExpression(t.expression)||G.isLogicalExpression(t.expression))?gn(t.expression):[])}function TI(e){let t=e.openingElement.name;return G.isJSXIdentifier(t)?t.name==="Fragment":G.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function Qp(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function es(e){return!(G.isIdentifier(e)||G.isThisExpression(e)||G.isMemberExpression(e)||G.isOptionalMemberExpression(e)||G.isCallExpression(e)||G.isOptionalCallExpression(e))}function qp(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(G.isMemberExpression(n)||G.isOptionalMemberExpression(n))&&G.isIdentifier(n.property)&&n.property.name==="map"&&!n.computed}function pr(e,t){let n=Je(e);if(!n)return t.isRepeatItemRoot===!0;let r=se(n,ye(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Yi(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=Dt(e,o);return i?PI(o,i):t.isRepeatItemRoot===!0}function em(e,t){let n=Je(e);if(!n)return!1;let r=se(n,ye(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Yi(n,t);return o?!!o.findParent(i=>{if(!i.isCallExpression()&&!i.isOptionalCallExpression())return!1;let s=i.node.callee;return(G.isMemberExpression(s)||G.isOptionalMemberExpression(s))&&G.isIdentifier(s.property)&&s.property.name==="map"}):!1}import*as ke from"@babel/types";function Bc(e){if(ke.isJSXIdentifier(e))return/^[A-Z]/.test(e.name)?e.name:null;if(ke.isJSXMemberExpression(e)){let t=e;for(;ke.isJSXMemberExpression(t);)t=t.object;return t.name}return null}function FI(e,t){let n=he(e.node);if(!n)return[];let r=new Set,o=(i,s)=>{let a=s.scope.getBinding(i);!a||Ot(a.path.node,n)||hn(a,i,t)||r.add(i)};return e.traverse({ReferencedIdentifier(i){o(i.node.name,i)},JSXOpeningElement(i){let s=Bc(i.node.name);s&&o(s,i)}}),[...r].sort()}function jc(e,t,n){let r=Je(e);if(!r)return{ok:!0};let o=se(r,ye(t));if(!o.ok||!o.match.path.isJSXElement())return{ok:!0};let i=se(r,ye(n));if(!i.ok||!i.match.path.isJSXElement())return{ok:!0};let s=Tr(o.match.path,i.match.path);if(Zi(s,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let a=FI(s,i.match.path);return a.length>0?{ok:!1,bindingNames:a}:{ok:!0}}function nm(e){let t=e;for(;ke.isTSQualifiedName(t);)t=t.left;return ke.isIdentifier(t)?t.name:null}function po(e,t){e.isIdentifier()&&e.isReferencedIdentifier()&&t(e),e.traverse({ReferencedIdentifier(n){n.isIdentifier()&&t(n)}})}function ts(e){let t=[],n=r=>{if(r){if(ke.isIdentifier(r)){t.push(r.name);return}if(ke.isObjectPattern(r)){for(let o of r.properties){if(ke.isRestElement(o)){n(o.argument);continue}ke.isObjectProperty(o)&&n(o.value)}return}if(ke.isArrayPattern(r)){for(let o of r.elements)n(o);return}if(ke.isAssignmentPattern(r)){n(r.left);return}if(ke.isRestElement(r)){n(r.argument);return}ke.isTSParameterProperty(r)&&n(r.parameter)}};return n(e),t}function $c(e,t){let n=he(e.node),r=he(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=tm(e),i=tm(t);if(!o||!i||!Jp(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=Xp(s.node,n);if(a&&!lt(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=he(s.node.right);if(a&<(a,n)&&!lt(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())&&qp(s)){let a=he(s.node.body)??he(s.node);if(a&&!lt(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 tm(e){let t=e;for(;t;){if(t.isReturnStatement())return t.node.argument?he(t.node.argument):null;if(t.isArrowFunctionExpression()&&(ke.isJSXElement(t.node.body)||ke.isJSXFragment(t.node.body)||ke.isConditionalExpression(t.node.body)||ke.isLogicalExpression(t.node.body)))return he(t.node.body);t=t.parentPath}return null}function hn(e,t,n){return n.scope.getBinding(t)===e}function Vc(e,t,n,r={}){if(!r.preserveConditionalBoundary&&Zi(e,t))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let o=he(e.node);if(!o)return{ok:!0};let i=new Set(n.callbackPath.node.params.flatMap(c=>ts(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||Ot(u.path.node,o)||i.has(u.path.node)||hn(u,c,t)||s.add(c)};return e.traverse({ReferencedIdentifier(c){a(c.node.name,c)},JSXOpeningElement(c){let l=Bc(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function Kc(e,t,n){let r=he(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>ts(s)).map(s=>n.callbackPath.scope.getBinding(s)?.path.node).filter(Boolean)),i=new Set;return po(e,s=>{let a=s.scope.getBinding(s.node.name);!a||Ot(a.path.node,r)||o.has(a.path.node)||hn(a,s.node.name,t)||i.add(s.node.name)}),i.size>0?{ok:!1,bindingNames:[...i].sort()}:{ok:!0}}function rm(e,t){let n=new Set(e.callbackPath.node.params.flatMap(a=>ts(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)||hn(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(mr.isIdentifier(l))o(l.name,c);else{let u=nm(l);u&&o(u,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function Uc(e,t){let n=he(e.node),r=new Set;return po(e,o=>{let i=o.scope.getBinding(o.node.name);i&&(n&&Ot(i.path.node,n)||hn(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 om(e){let t=[];for(let n of e.callbackPath.node.params){if(mr.isIdentifier(n)){t.push(n.name);continue}if(mr.isRestElement(n)&&mr.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 im(e,t){return{...e,callbackParams:t}}function Jc(e,t){return`${e.collectionNeedsParens?`(${e.collectionExpression})`:e.collectionExpression}${e.mapOperator}((${e.callbackParams.join(", ")}) => ${t})`}function mo(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 sm(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 Ln(e){return{file:e.file,component:e.component}}function _I(e){return e.target.kind==="node"?e.target.key:null}function MI(e){return"kind"in e}function ns(e){return!MI(e)}function Gc(e,t){let n=is.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=is.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Xc(e,t){let n=e.getFileContent(t.file);if(!n)return;let r=Tt(n,ye(t));if(r.ok)return n.slice(r.match.start,r.match.end)}function Zc(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 OI(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function LI(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 zc(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function DI(e){let t=Tp(e.ast,e.sourceNode.component,e.targetParent.component);if(!t.ok)return{ok:!1,reason:t.reason};let n=$c(t.path,e.targetParentPath);if(!n.ok)return{ok:!1,reason:n.reason};let r=BI({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=gm(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?es(o):!0}}}function BI(e){let t=he(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move prop-backed repeat child because the collection expression cannot be mapped"};let n=new Map,r=new Set,o=null,i=s=>{if(o)return;let a=s.scope.getBinding(s.node.name);if(!a||Ot(a.path.node,t))return;let c=VI(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=UI(e.callSitePath,c.propName,e.source);if(!l.ok){o=l.reason;return}let u=jI(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=Uc(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}hn(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:JI(e.source,t,[...n.values()])}}function jI(e,t){if(t.length===0)return e;let n=gm(e);if(!n)return null;let r=es(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=$I(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function $I(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function VI(e,t,n){let r=KI(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=ar(t,o);if(!i)return null;let s=r?.range??he(e.node);return s?{propName:i.propName,remainingPath:i.remainingPath,hasDefault:i.hasDefault,range:s}:null}function KI(e,t){let n=e.parentPath;if(!n||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.object!==e.node||!Ot(n.node,t)||n.node.computed||!de.isIdentifier(n.node.property))return null;let r=he(n.node);return r?{propertyName:n.node.property.name,range:r}:null}function UI(e,t,n){let r=e.get("openingElement").get("attributes");if(r.some(c=>c.isJSXSpreadAttribute()))return{ok:!1,reason:"Cannot move prop-backed repeat child through spread props; use an explicit prop mapping"};let o=r.find(c=>c.isJSXAttribute()&&de.isJSXIdentifier(c.node.name)&&c.node.name.name===t);if(!o?.isJSXAttribute())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not passed explicitly`};let i=o.get("value");if(!i.isJSXExpressionContainer())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not an expression`};let s=i.get("expression");if(!s.isExpression())return{ok:!1,reason:`Cannot move prop-backed repeat child because prop '${t}' is not a usable expression`};let a=fr(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 JI(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 gm(e){try{let n=mm.parse(`const __VD_EXPR__ = (${e});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],r=de.isVariableDeclaration(n)?n.declarations[0]?.init:null;return r&&de.isExpression(r)?r:null}catch{return null}}function XI(e){let t=he(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move cross-file repeat child because the collection expression cannot be inspected"};let n=new Map,r=new Set,o=i=>{let s=i.scope.getBinding(i.node.name);if(!s||Ot(s.path.node,t))return;let a=am(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let u=am(c,e.targetFile,e.targetFile);(!u||u.moduleFile!==a.moduleFile||!zI(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 po(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 zI(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 am(e,t,n){let r=HI(e),o=r?.parentPath;if(!r||!o?.isImportDeclaration())return null;let i=o.node.source.value;if(typeof i!="string")return null;let s=_n(t,i),a=i.startsWith(".")?Gc(n,s):i;if(r.isImportDefaultSpecifier()){let c=r.node.local.name;return{localName:c,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"default",local:c}}}if(r.isImportNamespaceSpecifier()){let c=r.node.local.name;return{localName:c,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"namespace",local:c}}}if(r.isImportSpecifier()){let c=de.isIdentifier(r.node.imported)?r.node.imported.name:r.node.imported.value,l=r.node.local.name;return{localName:l,moduleFile:s,moduleSpecifier:a,importSpec:{kind:"named",imported:c,local:l===c?void 0:l}}}return null}function HI(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function cm(e,t,n,r){let o=_c(t,n);if(o.length===0)return{sourceJsx:r,conditionPaths:[]};let i=r,s=[];for(let a of o){let c=fr(e,a.conditionPath.node);if(!c)return{sourceJsx:r,conditionPaths:[]};let l=WI(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${YI(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function WI(e,t){return GI(e.node)?t:`(${t})`}function GI(e){return de.isIdentifier(e)||de.isThisExpression(e)||de.isSuper(e)||de.isMemberExpression(e)||de.isOptionalMemberExpression(e)||de.isCallExpression(e)||de.isOptionalCallExpression(e)||de.isBooleanLiteral(e)||de.isNumericLiteral(e)||de.isStringLiteral(e)||de.isNullLiteral(e)||de.isUnaryExpression(e)}function YI(e){return e.trim().startsWith("<")?e:`(${e})`}var ZI={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 rs(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=ZI[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 QI(e,t){for(let n of e.program.body){if(!de.isImportDeclaration(n)||n.source.value!==t)continue;let r=n.specifiers.find(o=>de.isImportDefaultSpecifier(o));if(r&&de.isImportDefaultSpecifier(r))return r.local.name}return null}function qI(e,t,n){for(let r of e.program.body){if(!de.isImportDeclaration(r)||r.source.value!==t)continue;let o=r.specifiers.find(i=>de.isImportSpecifier(i)&&(de.isIdentifier(i.imported)?i.imported.name:i.imported.value)===n);if(o&&de.isImportSpecifier(o))return o.local.name}return null}function lm(e){let t=new Set;return Ct(e,{Program(n){for(let r of Object.keys(n.scope.bindings))t.add(r);n.stop()}}),t}function um(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function eC(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=Zc(e),o=Je(t);if(n.exportName!=="default"){let a=o?qI(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?um(r,lm(o)):r;return{localName:c,importStep:Hc(e,c)}}if(!o)return{localName:r,importStep:Hc(e,r)};let i=QI(o,n.source);if(i)return{localName:i};let s=um(r,lm(o));return{localName:s,importStep:Hc(e,s)}}function tC(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??Zc(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 nC(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?rC(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function rC(e){return Object.fromEntries(Object.entries(e).filter(t=>Yc(t[1])))}function Yc(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(Yc):typeof e=="object"?Object.values(e).every(Yc):!1}function Hc(e,t=Zc(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 dm(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 oC(e,t,n){let r=e;for(;r;){if(r===t)return!0;r=n.getNode(r)?.parentKey}return!1}function gr(e,t){return`Operation kind '${e}' does not match params.kind '${t}'`}function Qc(e,t=e.path){return{kind:"value",root:e.root,path:t&&t.length>0?t:void 0,expectedRange:e.expectedRange}}function go(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:Qc(e,t.slice(0,n)),index:r.index}}return null}function Wc(e,t){return e.locator?e.collectionPathMap?.[t]?Qc(e.locator,e.collectionPathMap[t]):go(e.locator)?sC(e.locator,aC(t,e.collectionIndexMap)):null:null}function iC(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:hm(o,t)}function hm(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=hm(r,t);return o===void 0?void 0:{[n.name]:o}}function sC(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},Qc(e,i)}return null}function aC(e,t){return t?.[e]??e}function fm(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 cC(e,t){return lC(e.root,t.root)&&dC(e.path??[],t.path??[])}function lC(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&&uC(e.sourceRange,t.sourceRange)}}function uC(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function dC(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 os=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:gr(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:gr(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:gr(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:gr(t.kind,t.params.kind)};let r=t;if(!ns(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=dm(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:gr(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"set-link-target":{if(t.params.kind!=="set-link-target")return{ok:!1,errorCode:"invalid-params",reason:gr(t.kind,t.params.kind)};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.planSetLinkTarget(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=_I(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):pm(i)}async planSetLinkTarget(t,n,r){if(r.tag!=="a"&&!(r.importedFrom==="next/link"&&r.exportName==="default"))return{ok:!1,errorCode:"capability-denied",reason:"Only native anchors and source-verified next/link nodes can be changed"};if(r.structuralPath.includes("#repeat:")||r.isRepeatRegion||r.isRepeatItemRoot)return{ok:!1,errorCode:"capability-denied",reason:"Link target changes are not supported inside repeat templates"};if(n.selectionRef?.instanceIndex!==void 0||(n.selectionRef?.instanceCount??1)>1)return{ok:!1,errorCode:"capability-denied",reason:"Link target changes require a single non-repeated selection"};if(n.params.changes.length>0){let o=await this.buildTypedPropertySteps({node:r,scope:"selection",changes:n.params.changes,selectionRef:n.selectionRef});if(!o.ok)return pm(o);if(o.steps.some(i=>i.type!=="set-property-changes"||i.file!==r.file))return{ok:!1,errorCode:"capability-denied",reason:"Link descriptions must have a direct, unique source in the selected file"}}return this.buildPlan(t,n,[{type:"set-link-target",order:0,file:r.file,locator:ye(r),link:n.params.link,changes:n.params.changes}],this.graph.getCapability(r.key))}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?Yp({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=Wc(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:ye(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=Wc(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:ye(t),segmentIndex:n,newText:r}]}}coerceTextValueForValueTarget(t,n,r,o="update-text"){let i=this.graph.getFileContent(t),s=Je(i);if(!s)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not inspect the value source`};let a=se(s,n);if(!a.ok)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not resolve the value source`};if(!OI(a.match.path))return{ok:!0,value:r};let c=LI(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=Wc(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=Je(this.graph.getFileContent(t));if(!o)return!1;let i=se(o,n);if(!i.ok)return!1;let s=i.match.path;if(s.isStringLiteral())return typeof r=="string"&&s.node.value===r;if(s.isNumericLiteral())return typeof r=="number"&&Object.is(s.node.value,r);if(s.isBooleanLiteral())return typeof r=="boolean"&&s.node.value===r;if(s.isNullLiteral())return r===null;if(s.isUnaryExpression({operator:"-"})){let a=s.get("argument");return typeof r=="number"&&!Array.isArray(a)&&a.isNumericLiteral()&&Object.is(-a.node.value,r)}return!1}planUpdateText(t,n,r,o,i){let s=this.graph.getTextProvenance?.(r.key,n.params.segmentIndex);if(s&&(s.editMode==="readonly"||s.editMode==="unsupported"))return{ok:!1,errorCode:"unsupported-operation",reason:"Text has no identity-preserving write target"};if(!o.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update text on this node"};let a=this.buildTextRewriteSteps(r,n.params.segmentIndex,n.params.value,i,n.selectionRef);return a.ok?this.buildPlan(t,n,a.steps,o):a}async planRemoveNode(t,n,r,o){if(!o.canRemove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot remove this node"};let i=await this.graph.getTextWriteTarget(r.key,0);if(i?.kind==="external-entry")return this.buildPlan(t,n,[{order:0,file:`external:${i.sourceId}`,type:"invoke-external-adapter",sourceType:i.sourceType,sourceId:i.sourceId,adapterId:i.adapterId,capability:"remove-node",value:{operation:"remove-node"}}],o);if(r.isRepeatItemRoot){let f=i;if(f?.kind==="value-binding"&&f.locator){let m=go(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=mo(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:ye(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||Up(n,t)>1)return null;let r=Gc(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(!ns(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=mo(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=Ip(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=rs(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"?eC(n.params.node,this.graph.getFileContent(r.file)):void 0,y=E?.importStep;return y&&h.push({order:S++,file:r.file,type:"add-import",moduleSpecifier:y.moduleSpecifier,imports:y.imports}),h.push({order:S++,file:r.file,type:"insert-child",parentLocator:ye(r),node:{jsx:tC(n.params.node,E?.localName)},placement:n.params.position.relation,anchorLocator:i?ye(i):void 0}),this.buildPlan(t,n,h,o)}async planExternalBackedInsertChild(t,n,r,o,i,s){if(!ns(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:nC(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(!ns(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=go(a.locator);if(!c)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires an array-backed target"};let l=iC(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"?fm(0,a.collectionIndexMap):fm(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=mo(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 pr(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:")||em(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&&pr(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Je(c);if(!l)return null;let u=bt(l,r),f=bt(l,o);if(!u||!f)return null;let m=Dt(c,u),d=Dt(c,f);if(!fo(m,d))return null;if(a&&(s==="before"||s==="after")){let h=bt(l,a),S=h?Dt(c,h):null;if(!fo(m,S))return null}if(Qi(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let g=jc(c,r,o);return g.ok?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:ye(r),targetParentLocator:ye(o),placement:s,anchorLocator:a?ye(a):void 0,selectionContext:Ln(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&&pr(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Je(c);if(!l)return null;let u=bt(l,r),f=bt(l,o);if(!u||!f)return null;let m=Dt(c,u);if(!m)return null;let d=Dt(c,f);if(fo(m,d))return null;if(d&&!Qp(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 v=Dc(c,l,a);if(d&&!fo(d,v)||!d&&v)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 v=rs(o,{kind:"native-tag",tag:r.tag});if(v)return{ok:!1,errorCode:"unsupported-operation",reason:v}}let g=Xc(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(Qi(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let h=cm(c,u,f,g);for(let v of h.conditionPaths){let C=Kc(v,f,m);if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${C.bindingNames.join(", ")}`}}let S=Vc(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=rm(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 y=m;if(r.component!==o.component){let v=DI({source:c,ast:l,sourceContext:m,sourceNode:r,targetParent:o,targetParentPath:f});if(!v.ok)return{ok:!1,errorCode:"unsupported-operation",reason:v.reason};y=v.context}else{let v=Uc(m.collectionPath,f);if(!v.ok)return{ok:!1,errorCode:"unsupported-operation",reason:v.reason??`Cannot move repeat-backed child because the repeat collection is not visible at the target: ${v.bindingNames.join(", ")}`}}return this.buildPlan(t,n,[{order:0,file:r.file,type:"move-repeat-template-child",locator:ye(r),targetParentLocator:ye(o),placement:s,anchorLocator:a?ye(a):void 0,repeatExpression:Jc(y,h.sourceJsx),selectionContext:Ln(o)}],i)}planCrossFileRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&pr(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=Je(c),f=Je(l);if(!u||!f)return null;let m=zp({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=bt(u,r),g=bt(f,o);if(!d||!g)return null;let h=$c(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")&&Dc(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 _=rs(o,{kind:"native-tag",tag:r.tag});if(_)return{ok:!1,errorCode:"unsupported-operation",reason:_}}let y=Xc(this.graph,r);if(!y)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Qi(d,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let v=cm(c,d,g,y);for(let _ of v.conditionPaths){let L=Kc(_,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 C=Vc(d,g,S,{preserveConditionalBoundary:v.conditionPaths.length>0});if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:C.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${C.bindingNames.join(", ")}`};let N=XI({sourceFile:r.file,targetFile:o.file,sourceContext:S,targetParentPath:g});if(!N.ok)return{ok:!1,errorCode:"unsupported-operation",reason:N.reason};let A=om(S);if(!A.ok)return{ok:!1,errorCode:"unsupported-operation",reason:A.reason};let R=im(S,A.callbackParams),F=[{order:0,file:r.file,type:"remove-node",locator:ye(r),removeWhitespace:!0}];for(let _ of N.imports)F.push({order:F.length,file:o.file,type:"add-import",moduleSpecifier:_.moduleSpecifier,imports:_.imports});return F.push({order:F.length,file:o.file,type:"insert-jsx-expression-child",parentLocator:ye(o),expression:Jc(R,v.sourceJsx),placement:s,anchorLocator:a?ye(a):void 0,selectionContext:Ln(o)}),this.buildPlan(t,n,F,i)}async planMoveNode(t,n,r,o){if(!o.canMove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move this node"};if("kind"in n.params.target&&n.params.target.kind==="source-sibling"){let v=n.params.target,C=this.graph.getNode(v.anchorKey);if(!C||r.file!==C.file||r.component!==C.component)return{ok:!1,errorCode:"locator-miss",reason:"Source sibling move requires a sibling in the same component file"};let N=this.graph.getFileVersion(r.file);if(n.documentVersion!==N)return{ok:!1,errorCode:"stale-version",reason:`Document version ${n.documentVersion} is stale or otherwise does not match source sibling file version (current: ${N})`};let A=this.graph.getFileContent(r.file),R=Je(A),F=R?bt(R,r):null,_=R?bt(R,C):null,L=F?.parentPath,U=_?.parentPath;if(!F||!_||!L||!U||L.node!==U.node||!L.isJSXFragment()&&!(L.isJSXElement()&&Me(L)))return{ok:!1,errorCode:"unsupported-operation",reason:"Source sibling move requires two direct children of the same transparent Fragment"};let te=L.node.loc;return te?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:ye(r),targetParentLocator:{kind:"jsx-node",strategy:"source-range",sourceRange:{startLine:te.start.line,startColumn:te.start.column,endLine:te.end.line,endColumn:te.end.column}},placement:v.relation,anchorLocator:ye(C),selectionContext:Ln(r)}],o):{ok:!1,errorCode:"locator-miss",reason:"Source Fragment has no stable source range"}}let i=dm(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(oC(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=this.graph.getTextProvenance?.(r.key,0)??null,d=mo(r,c,m);if(d&&!zc(d)&&!sm(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 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=go(v.locator),A=go(C.locator);if(N&&A&&v.file===C.file&&cC(N.locator,A.locator)){let R=N.index,F=A.index,_=u==="before"?F-(R<F?1:0):F+(R<F?0:1);return this.buildPlan(t,n,[{order:0,file:v.file,type:"move-array-item",locator:N.locator,fromIndex:R,toIndex:_}],o)}}}if(r.isRepeatItemRoot&&pr(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=zc(d)?d:g;if(h&&zc(h)){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: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 v=rs(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 E=jc(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 y=[{order:0,file:r.file,type:"move-node",locator:ye(r),targetParentLocator:ye(s),placement:u,anchorLocator:f?ye(f):void 0,selectionContext:Ln(s)}];return this.buildPlan(t,n,y,o)}planCrossFileMove(t,n,r,o,i,s,a){let c=[],l=0,u=this.graph.getFileContent(r.file),f=Xc(this.graph,r)??`<${r.component} />`,m=Cp(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:ye(r),removeWhitespace:!0}),r.importedFrom&&r.exportName){let g=r.tag??r.component,S={moduleSpecifier:Gc(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:ye(o),node:{jsx:f},placement:s,anchorLocator:a?ye(a):void 0,selectionContext:Ln(o)})}else c.push({order:l++,file:o.file,type:"insert-child",parentLocator:ye(o),node:{jsx:f},placement:s,anchorLocator:a?ye(a):void 0,selectionContext:Ln(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:ve(this.graph.getFileContent(a))}));return{ok:!0,plan:{operationId:t,kind:n.kind,target:n.target,documentVersion:n.documentVersion,steps:r,preSnapshots:s,validatedCapability:o}}}};function pm(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 rl from"@babel/generator";import{parse as RC}from"@babel/parser";import ol from"@babel/traverse";import*as w from"@babel/types";import*as jt from"@babel/types";import qc from"@babel/generator";import*as Ee from"@babel/types";var fC=typeof qc=="function"?qc:qc.default,pC=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,mC=/^((?:https?:)?\/\/)[^/@\s]+@/i,gC=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function xm(e,t){let n=Bt(e.callee);if(!n)return null;if(n==="fetch")return el(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(ym(r))return el(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(ym(r))return el(e.arguments[0],r,t,["ky client contract"])}return null}function el(e,t,n,r){if(!e||Ee.isSpreadElement(e)||Ee.isJSXNamespacedName(e))return bC(t,n,r,"missing url argument");let o=ho(e);return{sourceKind:xC(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 ho(e){if(Ee.isStringLiteral(e))return ss(e.value);if(Ee.isTemplateLiteral(e))return ss(hC(e));if(Ee.isBinaryExpression(e)&&e.operator==="+"){let t=ho(e.left),n=ho(e.right);return!t&&!n?void 0:ss(`${t??tl(e.left)}${n??tl(e.right)}`)}if(Ee.isMemberExpression(e)){let t=bm(e);if(t)return`env:${t}`}if(!(Ee.isCallExpression(e)&&Bt(e.callee)==="new URL")){if(Ee.isNewExpression(e)&&Ee.isIdentifier(e.callee,{name:"URL"})){let[t,n]=e.arguments,r=t&&!Ee.isSpreadElement(t)?ho(t):void 0,o=n&&!Ee.isSpreadElement(n)?ho(n):void 0;return o&&r?ss(`${o} + ${r}`):r??o}if(Ee.isIdentifier(e))return`:${e.name}`}}function hC(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+=tl(r))}return t}function tl(e){if(Ee.isIdentifier(e))return`:${e.name}`;if(Ee.isMemberExpression(e)){let t=bm(e);if(t)return`env:${t}`}return`:${yC(e)}`}function yC(e){return fC(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function ss(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(mC,"$1<redacted>@").replace(gC,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?pC.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function xC(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 bC(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function ym(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function bm(e){return!Ee.isMemberExpression(e.object)||!Ee.isIdentifier(e.object.object,{name:"process"})||!SC(e.object.property,"env")?null:Ee.isIdentifier(e.property)?e.property.name:Ee.isStringLiteral(e.property)?e.property.value:null}function SC(e,t){return Ee.isIdentifier(e)&&e.name===t}function Bt(e){if(Ee.isIdentifier(e))return e.name;if(Ee.isMemberExpression(e)){let t=Bt(e.object),n=Ee.isIdentifier(e.property)?e.property.name:Ee.isStringLiteral(e.property)?e.property.value:null;if(t&&n)return`${t}.${n}`}return null}var EC=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),vC=new Set(["getConfig","submit"]);function Sm(e,t){let n=kC(Bt(e.callee),t);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!EC.has(i))return null;let s=nl(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(!vC.has(i))return null;let s=nl(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=nl(e,0)??IC(e,0,"path")??"/cms/:path",s=CC(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 kC(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 Em(e,t){let n=Bt(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 vm(e){let t=Bt(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function nl(e,t){let n=e.arguments[t];return jt.isStringLiteral(n)?n.value:null}function IC(e,t,n){let r=e.arguments[t];if(!jt.isObjectExpression(r))return null;for(let o of r.properties)if(jt.isObjectProperty(o)&&!o.computed&&(jt.isIdentifier(o.key)&&o.key.name===n||jt.isStringLiteral(o.key)&&o.key.value===n)&&jt.isStringLiteral(o.value))return o.value.value;return null}function CC(e){return/^\/collections\/([^/]+)(?:\/|$)/.exec(e)?.[1]??null}var sl=typeof ol=="function"?ol:ol.default,$O=typeof rl=="function"?rl:rl.default,wC={maxFunctionDepth:8,maxImportDepth:6},NC=new Set(["src","href","alt","poster","content","title","aria-label"]);async function Nm(e){let t=e.fileCache??new Map,n=ll(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...wC,...e.options},variableCache:new Map,functionDepth:0,importDepth:0,paramSources:new Map,resolvingVariables:new Set,resolvingComponentProps:new Set,scopeVariables:Km(n,e.element.componentName)};await Pm(e.element.componentName,e.graph,r);let o=[];o.push(...await _C(e.element,e.graph,r),...await MC(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await OC(s,e.element,e.graph,r);a&&o.push(ls(a,"text","children"))}for(let s of e.element.attributes??[]){let a=FC(s,e.element);if(!a)continue;let c=await Fm(s.source,e.element,e.graph,r);c&&o.push(ls(c,a,s.name))}let i=YC(o).sort($m);return{hasDynamicData:i.length>0,bindings:i}}async function Pm(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 Am(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 Tm(l.sourceFile,n);if(!f)continue;let m=ds(f,n,{importDepth:n.importDepth+1});m.paramSources.clear(),m.scopeVariables=Km(f,l.componentName),await Pm(l.componentName,t,m);let d=await PC(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=Bm(u);f.length===1&&c.set(l,f[0])}TC(o,c,n)}async function Am(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 Tm(e,r))?.imports.get(t);if(!s||!Nt(s.source))return!1;let a=await Xm(e,s.source,r.exists);return a?a===n?!0:Am(a,s.importedName,n,r,o):!1}async function PC(e,t){let n=new Map;sl(t.analysis.ast,{JSXElement(o){if(AC(o.node,e.sourceRange)){for(let i of o.node.openingElement.attributes)!w.isJSXAttribute(i)||!w.isJSXIdentifier(i.name)||!w.isJSXExpressionContainer(i.value)||!w.isExpression(i.value.expression)||n.set(i.name.name,i.value.expression);o.stop()}}});let r=new Map;for(let[o,i]of n){let s=await je(i,t);s&&r.set(o,s)}return r}function AC(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 Tm(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 ll(e,r,t.fileCache)}function TC(e,t,n){if(w.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,cl(Object.fromEntries(t),n.file));return}if(w.isObjectPattern(e))for(let r of e.properties){if(!w.isObjectProperty(r)||r.computed||!w.isIdentifier(r.key))continue;let o=t.get(r.key.name);if(!o)continue;let i=w.isAssignmentPattern(r.value)?r.value.left:r.value;w.isIdentifier(i)&&n.paramSources.set(i.name,ze(o))}}function FC(e,t){return e.name==="dangerouslySetInnerHTML"?"richtext":NC.has(e.name)?"attribute":t.importedFrom||/^[A-Z]/.test(t.tag)?"component-prop":null}async function _C(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 us(i.collectionSource,n);s&&r.push(ls(Dn(s),"repeat-region",i.collectionExpression))}return r}async function MC(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 us(i.conditionSource,n);s&&r.push(ls(Dn(s),"conditional-region",i.conditionExpression))}return r}async function OC(e,t,n,r){return Fm(e.source,t,n,r)}async function Fm(e,t,n,r){let o=await LC(e,t,n,r);return o||us(e,r)}async function LC(e,t,n,r){if(!e)return null;let o=DC(e.base,t,n);if(!o)return null;let i=await us(o.collectionSource,r);return i?So(i,e.path,!0):null}function DC(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 us(e,t){if(!e)return null;let n=await _m(e.base,t);return n?So(n,e.path,!1):null}async function _m(e,t){let n=t.paramSources.get(e);if(n)return ze(n);if(t.variableCache.has(e))return ZC(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await BC(e,t);if(r)return t.variableCache.set(e,ze(r)),t.resolvingVariables.delete(e),r;let o=t.scopeVariables?.get(e)??t.analysis.variables.get(e);if(o){let s=await je(o,t);return t.variableCache.set(e,s?ze(s):null),t.resolvingVariables.delete(e),s}let i=t.analysis.imports.get(e);if(i&&t.importDepth<t.options.maxImportDepth){let s=await Um(i,t);if(s){let a=ds(s,t,{importDepth:t.importDepth+1}),c=Jm(i,s);if(c){let f=(await Bn(c,[],a)).returnSource;return t.variableCache.set(e,f?ze(f):null),t.resolvingVariables.delete(e),f}let l=s.variables.get(i.importedName);if(l){let u=await je(l,a);return t.variableCache.set(e,u?ze(u):null),t.resolvingVariables.delete(e),u}}}return t.variableCache.set(e,null),t.resolvingVariables.delete(e),null}async function BC(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];sl(t.analysis.ast,{CallExpression(o){if(w.isIdentifier(o.node.callee,{name:n})){let i=o.node.arguments[0];w.isExpression(i)&&r.push(i);return}o.node.arguments.some(i=>w.isIdentifier(i)&&i.name===n)&&r.push(o.node)}});for(let o of r){let i=await je(o,t);if(i)return i}return null}async function je(e,t){if(w.isIdentifier(e))return _m(e.name,t);if(w.isMemberExpression(e)||w.isOptionalMemberExpression(e)){let n=w.isMemberExpression(e)?Em(e,{file:t.file}):null;if(n)return Dm(n);let r=await jC(e,t);if(!r)return null;let o=WC(e);return So(r,o,!1)}if(w.isAwaitExpression(e))return w.isExpression(e.argument)?je(e.argument,t):null;if(w.isCallExpression(e))return Mm(e,t);if(w.isObjectExpression(e)){let n=await Om(e,t);return Object.keys(n).length>0?cl(n,t.file):null}if(w.isConditionalExpression(e)){let n=await je(e.consequent,t),r=await je(e.alternate,t);return bo(Im(n,r))}if(w.isLogicalExpression(e)){let n=await je(e.left,t),r=await je(e.right,t);return bo(Im(n,r))}return w.isTSAsExpression(e)||w.isTSSatisfiesExpression(e)||w.isTSNonNullExpression(e)||w.isTypeCastExpression(e)||w.isParenthesizedExpression(e)?je(e.expression,t):null}async function jC(e,t){let n=e;for(;w.isMemberExpression(n)||w.isOptionalMemberExpression(n);)n=n.object;return w.isExpression(n)?je(n,t):null}async function Mm(e,t){let n=Sm(e,{file:t.file,imports:t.analysis.imports});if(n)return Dm(n);if(vm(e)){let f=e.arguments[0];if(f&&w.isExpression(f))return bo(await je(f,t))}let r=await $C(e,t);if(r)return r;let o=xm(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 UC(e,t);if(i)return i;let s=await JC(e,t);if(s)return s;let a=await XC(e,t);if(a)return a;let c=await zC(e,t);if(c)return c;let l=[];for(let f of e.arguments)if(w.isExpression(f)){let m=await je(f,t);m&&l.push(m)}let u=Bm(l);return u.length===1?bo(u[0]):null}async function $C(e,t){let n=Bt(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=KC(e.arguments[0],t.file,"SWR key"),s=e.arguments[1];if(w.isIdentifier(s)){let a=await xo(s.name,t);if(a)return(await Bn(a.node,i?[i]:[],a.context)).returnSource??i}return i}let r=e.arguments[0];if(!w.isObjectExpression(r))return as(t.file,`${n} without static options`);let o=VC(r,"queryFn");if(!o)return as(t.file,`${n} without queryFn`);if(w.isIdentifier(o)){let i=await xo(o.name,t);return i?(await Bn(i.node,[],i.context)).returnSource:as(t.file,`${n} queryFn unresolved`)}return w.isArrowFunctionExpression(o)||w.isFunctionExpression(o)?(await Bn(o,[],t)).returnSource:w.isCallExpression(o)?Mm(o,t):null}function VC(e,t){for(let n of e.properties){if(!w.isObjectProperty(n)||!w.isExpression(n.value))continue;if(Lm(n)===t)return n.value}return null}function KC(e,t,n){return w.isStringLiteral(e)?{sourceKind:e.value.startsWith("/api/")?"site-api-route":"external-api",sourceType:"api-field",endpointPattern:e.value,confidence:"exact",readonly:!0,evidence:[{file:t,reason:n}]}:null}async function UC(e,t){if(!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property))return null;let n=e.callee.property.name;if(!["map","filter","slice","sort","toSorted"].includes(n))return null;let r=w.isExpression(e.callee.object)?await je(e.callee.object,t):null;if(!r)return null;if(n!=="map")return Dn(r);let o=e.arguments[0];if(w.isIdentifier(o)){let i=await xo(o.name,t);if(!i)return Dn(r);let s=await Bn(i.node,[r],i.context);return{...Dn(r),...s.objectReturnMap??s.returnSource?.fieldMap?{fieldMap:s.objectReturnMap??s.returnSource.fieldMap}:{}}}if(w.isArrowFunctionExpression(o)||w.isFunctionExpression(o)){let i=await Bn(o,[r],t);return{...Dn(r),...i.objectReturnMap??i.returnSource?.fieldMap?{fieldMap:i.objectReturnMap??i.returnSource.fieldMap}:{}}}return Dn(r)}async function JC(e,t){return!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property,{name:"json"})||!w.isExpression(e.callee.object)?null:je(e.callee.object,t)}async function XC(e,t){return!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property,{name:"then"})||!w.isExpression(e.callee.object)?null:bo(await je(e.callee.object,t))}async function zC(e,t){if(!w.isIdentifier(e.callee))return null;let n=await xo(e.callee.name,t);if(!n)return null;let r=[];for(let i of e.arguments){if(!w.isExpression(i)){r.push(as(t.file,`unsupported argument for ${e.callee.name}`));continue}let s=await je(i,t);r.push(s)}return(await Bn(n.node,r,n.context)).returnSource}async function xo(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 Um(r,t);if(!o)return null;let i=ds(o,t,{importDepth:t.importDepth+1}),s=Jm(r,o);return s?{node:s,context:i}:xo(r.importedName,i)}async function Bn(e,t,n){if(n.functionDepth>=n.options.maxFunctionDepth)return{returnSource:null};let r=ds(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let u=t[l];u&&il(c,GC(u),r)});let o=HC(e),i=null,s,a=!1;for(let c of o){if(w.isObjectExpression(c)){s={...s??{},...await Om(c,r)},i=i??cl(s,n.file);continue}let l=await je(c,r);if(l){if(!i){i=l;continue}let u=al(i,l);if(!u){a=!0,i=null;continue}i=u}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function il(e,t,n){if(w.isIdentifier(e)){n.paramSources.set(e.name,ze(t));return}if(w.isAssignmentPattern(e)){il(e.left,t,n);return}if(w.isObjectPattern(e))for(let r of e.properties){if(!w.isObjectProperty(r)||r.computed||!w.isIdentifier(r.key))continue;let o=So(t,[{kind:"property",name:r.key.name}],!0),i=w.isAssignmentPattern(r.value)?r.value.left:r.value;il(i,o,n)}}function HC(e){if(w.isArrowFunctionExpression(e)&&w.isExpression(e.body))return[e.body];let t=[],n=e.body;if(!w.isBlockStatement(n))return t;let r=o=>{if(w.isFunction(o)&&o!==e)return;if(w.isReturnStatement(o)){o.argument&&w.isExpression(o.argument)&&t.push(o.argument);return}let i=w.VISITOR_KEYS[o.type];for(let s of i??[]){let a=o[s];if(Array.isArray(a))for(let c of a)w.isNode(c)&&r(c);else w.isNode(a)&&r(a)}};return r(n),t}async function Om(e,t){let n={};for(let r of e.properties){if(!w.isObjectProperty(r))continue;let o=Lm(r);if(!o||!w.isExpression(r.value))continue;let i=await je(r.value,t);i&&(n[o]=i)}return n}function Lm(e){return w.isIdentifier(e.key)&&!e.computed?e.key.name:w.isStringLiteral(e.key)?e.key.value:null}function WC(e){let t=[],n=e;for(;w.isMemberExpression(n)||w.isOptionalMemberExpression(n);){let r=n.property;n.computed?w.isStringLiteral(r)?t.unshift({kind:"property",name:r.value}):w.isNumericLiteral(r)&&t.unshift({kind:"index",index:r.value}):w.isIdentifier(r)&&t.unshift({kind:"property",name:r.name}),n=n.object}return w.isIdentifier(n),t}function So(e,t,n){if(t.length===0)return ze(e);let r=t[0];if(r?.kind==="property"&&e.fieldMap?.[r.name])return So(e.fieldMap[r.name],t.slice(1),n);let o=ze(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=yo(o.valuePath,"data.items[]"),o.cmsFieldRoot=!1,o):i[0]==="fields"?(o.fieldPath=yo(o.fieldPath,i.slice(1).join(".")),o.cmsFieldRoot=!0,o):o.cmsFieldRoot||n||o.fieldMap?(o.fieldPath=yo(o.fieldPath,i.join(".")),o):(o.valuePath=yo(o.valuePath,km(t)),o)}return o.valuePath=yo(o.valuePath,km(t)),o}function km(e){return e.map(t=>t.kind==="property"?t.name:`[${t.index}]`).join(".").replace(/\.\[/g,"[")}function yo(e,t){return t?e?t.startsWith("[")?`${e}${t}`:`${e}.${t}`:t:e}function Dm(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 Dn(e){let t=ze(e);return t.sourceType==="cms-field"&&!t.valuePath&&(t.valuePath="items[]"),t}function GC(e){let t=ze(e);return t.valuePath=void 0,t.sourceType==="cms-field"&&(t.cmsFieldRoot=!1),t}function bo(e){return e?{...ze(e),confidence:e.confidence==="unknown"?"unknown":"safe-derived",evidence:[...e.evidence,{file:e.evidence[0]?.file??"unknown",reason:"safe derived expression"}]}:null}function Im(e,t){return e?t?al(e,t):ze(e):t?ze(t):null}function al(e,t){if(cs(e)!==cs(t))return null;let n=Vm(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function Bm(e){let t=new Map;for(let n of e){let r=cs(n),o=t.get(r);t.set(r,o?al(o,n):ze(n))}return[...t.values()]}function cs(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,cs(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 cl(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 as(e,t){return{sourceKind:"unknown-api",sourceType:"api-field",confidence:"unknown",readonly:!0,evidence:[{file:e,reason:t}]}}function ls(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 jm(e){let t=[...e].sort($m),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 YC(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 $m(e,t){return Cm(e.targetKind)-Cm(t.targetKind)||Vm(e.confidence,t.confidence)||Rm(e.sourceKind)-Rm(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function Cm(e){return{"repeat-region":0,"conditional-region":1,text:2,richtext:3,attribute:4,"component-prop":5}[e]}function Rm(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function Vm(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function ll(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=RC(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 sl(o,{ImportDeclaration(s){let a=s.node.source.value;for(let c of s.node.specifiers)w.isImportSpecifier(c)&&w.isIdentifier(c.local)?i.imports.set(c.local.name,{source:a,importedName:w.isIdentifier(c.imported)?c.imported.name:c.imported.value,localName:c.local.name,isDefault:!1}):w.isImportDefaultSpecifier(c)&&i.imports.set(c.local.name,{source:a,importedName:"default",localName:c.local.name,isDefault:!0})},FunctionDeclaration(s){s.node.id?.name&&i.functions.set(s.node.id.name,s.node)},VariableDeclarator(s){let a=s.getFunctionParent(),c=a&&(w.isFunctionDeclaration(a.node)||w.isFunctionExpression(a.node)||w.isArrowFunctionExpression(a.node))?a.node:null,l=c?i.functionVariables.get(c)??new Map:i.variables;c&&!i.functionVariables.has(c)&&i.functionVariables.set(c,l);for(let u of hr(s.node.id))l.set(u,w.isExpression(s.node.init)?s.node.init:null);if(w.isArrayPattern(s.node.id)&&w.isCallExpression(s.node.init)&&Bt(s.node.init.callee)==="useState"){let[u,f]=s.node.id.elements;w.isIdentifier(u)&&w.isIdentifier(f)&&i.stateSetters.set(u.name,f.name)}w.isIdentifier(s.node.id)&&wm(s.node.init)&&i.functions.set(s.node.id.name,s.node.init)},ExportNamedDeclaration(s){let a=s.node.declaration,c=s.node.source?.value;if(c)for(let l of s.node.specifiers){if(!w.isExportSpecifier(l))continue;let u=w.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(w.isFunctionDeclaration(a)&&a.id?.name&&i.functions.set(a.id.name,a),w.isVariableDeclaration(a))for(let l of a.declarations)w.isIdentifier(l.id)&&wm(l.init)&&i.functions.set(l.id.name,l.init)},ExportDefaultDeclaration(s){let a=s.node.declaration;if((w.isFunctionDeclaration(a)||w.isFunctionExpression(a)||w.isArrowFunctionExpression(a))&&i.functions.set("default",a),w.isIdentifier(a)){let c=i.functions.get(a.name);c&&i.functions.set("default",c)}}}),n.set(e,i),i}function hr(e){return!e||w.isVoidPattern(e)?[]:w.isIdentifier(e)?[e.name]:w.isObjectPattern(e)?e.properties.flatMap(t=>w.isObjectProperty(t)?hr(t.value):hr(t.argument)):w.isArrayPattern(e)?e.elements.flatMap(t=>t?hr(w.isRestElement(t)?t.argument:t):[]):w.isAssignmentPattern(e)?hr(e.left):w.isRestElement(e)?hr(e.argument):[]}function wm(e){return w.isFunctionExpression(e)||w.isArrowFunctionExpression(e)}function Km(e,t){let n=e.functions.get(t)??e.functions.get("default");return n?e.functionVariables.get(n):void 0}async function Um(e,t){let n=await Xm(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return ll(n,r,t.fileCache)}function Jm(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function Xm(e,t,n){return Nt(t)?Sn(e,t,n):null}function ds(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 ZC(e){return e?ze(e):null}function ze(e){return{...e,evidence:e.evidence.map(t=>({...t})),...e.fieldMap?{fieldMap:Object.fromEntries(Object.entries(e.fieldMap).map(([t,n])=>[t,ze(n)]))}:{}}}import*as dl from"@babel/parser";import ul from"@babel/traverse";import*as Z from"@babel/types";import{classifySiteEditPropertyName as QC}from"@vcp-dev/contracts";var fl=typeof ul=="function"?ul:ul.default;function pl(e){let t=QC(e.propertyName);if(t.owner!=="generic")return ut("invalid-property",t.diagnostic?.message??`Property '${e.propertyName}' is not a generic property`);let n=e.selectionRef;if(!n)return ut("missing-selection-ref","A repeat property target requires a complete selection reference");if(n.key!==e.element.identity.key)return ut("selection-mismatch","Selection reference does not identify the requested element");if(n.instanceIndex===void 0)return ut("missing-instance-index","A repeat property target requires an instance index");let r;try{r=dl.parse(e.source,{sourceType:"module",plugins:["typescript","jsx"]})}catch(S){return ut("repeat-not-found",`Unable to parse repeat source: ${S instanceof Error?S.message:String(S)}`)}let o=qC(r,e.element.sourceRange);if(!o)return ut("repeat-not-found","The selected element is not inside a supported map repeat");if(!Z.isIdentifier(o.callback.params[0]))return ut("unsupported-callback","Repeat property materialization requires an identifier callback item");let i=eR(r,o.collection,e.file,e.sources);if(!i)return ut("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)||!Zm(E))return ut("unsafe-collection","Repeat materialization requires an array of local static objects without spreads");let y=[{kind:"index",index:S}];l.push(y),u.push({kind:"value",root:a.root,path:y})}let f=u.length;if(n.instanceCount!==void 0&&n.instanceCount!==f)return ut("count-mismatch",`Selection reports ${n.instanceCount} instances but the source collection has ${f}`);let m=n.instanceIndex;if(m>=f)return ut("index-out-of-range",`Selected repeat instance ${m} is outside the source collection`);let d=s.elements[m];if(!d||!Z.isObjectExpression(d))return ut("unsafe-collection","Selected repeat item is not an object");let g=sR(e.element,e.propertyName),h=oR(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:iR(d,e.propertyName),...g?{property:g}:{},selectionRef:n}:ut("unsafe-property-source",`Property '${e.propertyName}' has a dynamic or unsupported source in the repeat item`)}function qC(e,t){let n=[];return fl(e,{CallExpression(r){let o=zm(r.node);o&&Wm(o.callback,t)&&n.push({...o,span:Hm(r.node)})},OptionalCallExpression(r){let o=zm(r.node);o&&Wm(o.callback,t)&&n.push({...o,span:Hm(r.node)})}}),n.sort((r,o)=>r.span-o.span),n[0]??null}function zm(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 eR(e,t,n,r){let o=Eo(t);if(o&&Z.isArrayExpression(o))return{array:o,locator:{kind:"value",root:{kind:"expression",sourceRange:qm(o)}},sourceFile:n};if(!Z.isIdentifier(t))return null;let i=[];if(fl(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=Eo(i[0].init);return!s||!Z.isArrayExpression(s)?null:{array:s,locator:{kind:"value",root:{kind:"binding",name:t.name}},sourceFile:n}}return tR(e,t.name,n,r)}function tR(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=rR(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=dl.parse(c,{sourceType:"module",plugins:["typescript","jsx"]})}catch{return null}let u=nR(l,a),f=u?Eo(u):null;return!f||!Z.isArrayExpression(f)?null:{array:f,locator:{kind:"value",root:{kind:"binding",name:a}},sourceFile:s}}return null}function nR(e,t){let n=null;return fl(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 rR(e,t,n){let r=bn(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 Eo(e){return Z.isParenthesizedExpression(e)?Eo(e.expression):Z.isTSAsExpression(e)?Ym(e.typeAnnotation)?Eo(e.expression):null:Z.isTSSatisfiesExpression(e)?null:e}function Ym(e){return Z.isTSTypeReference(e)&&Z.isIdentifier(e.typeName)&&e.typeName.name==="const"}function Zm(e){return e.properties.every(t=>!Z.isObjectProperty(t)||t.computed||!Z.isExpression(t.value)?!1:fs(t.value))}function fs(e){if(Z.isTSAsExpression(e)&&Ym(e.typeAnnotation))return fs(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:fs(n));if(Z.isObjectExpression(e))return Zm(e);let t=_t(e);return t.status==="resolved"||t.status==="undefined"}function oR(e,t){let n=e.properties.filter(o=>Z.isObjectProperty(o)&&Qm(o.key)===t);if(n.length>1)return null;let r=n[0];return r?Z.isExpression(r.value)?fs(r.value)?"static":Z.isIdentifier(r.value)||Z.isMemberExpression(r.value)?"binding":null:null:"missing"}function iR(e,t){let n=e.properties.filter(o=>Z.isObjectProperty(o)&&Qm(o.key)===t);if(n.length>1)return{status:"unresolved"};let r=n[0];return!r||!Z.isExpression(r.value)?{status:"undefined"}:_t(r.value)}function sR(e,t){let n=e.attributes?.filter(r=>r.name===t)??[];return n.length===1?n[0]:void 0}function Qm(e){return Z.isIdentifier(e)?e.name:Z.isStringLiteral(e)?e.value:Z.isNumericLiteral(e)?String(e.value):null}function qm(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 Hm(e){return e.start==null||e.end==null?Number.MAX_SAFE_INTEGER:e.end-e.start}function Wm(e,t){let n=qm(e);return Gm(n.startLine,n.startColumn,t.startLine,t.startColumn)<=0&&Gm(n.endLine,n.endColumn,t.endLine,t.endColumn)>=0}function Gm(e,t,n,r){return e===n?t-r:e-n}function ut(e,t){return{ok:!1,errorCode:e,reason:t}}import{classifySiteEditPropertyName as zR}from"@vcp-dev/contracts";import*as Q from"@babel/types";import Ro from"node:path";import*as j from"@babel/types";import*as ig from"@babel/parser";import ml from"@babel/traverse";import*as re from"@babel/types";function ms(e,t){let n=[],r=e;for(;re.isMemberExpression(r);){if(r.computed)if(re.isNumericLiteral(r.property))n.unshift({kind:"index",index:r.property.value});else if(re.isStringLiteral(r.property))n.unshift({kind:"property",name:r.property.value});else return null;else{if(!re.isIdentifier(r.property))return null;n.unshift({kind:"property",name:r.property.name})}r=r.object}return!re.isIdentifier(r)||r.name!==t?null:n}function eg(e){if(re.isIdentifier(e))return{base:e.name,path:[]};if(!re.isMemberExpression(e))return null;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))return null;t.unshift({kind:"property",name:n.property.name})}n=n.object}return re.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}var $t=Symbol("not-closed-literal");function ps(e){switch(e.type){case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":return e.value;case"NullLiteral":return null;case"TemplateLiteral":return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:$t;case"TSAsExpression":case"TSSatisfiesExpression":case"TSNonNullExpression":return ps(e.expression);case"ArrayExpression":{let t=[];for(let n of e.elements){if(!n||re.isSpreadElement(n))return $t;let r=ps(n);if(r===$t)return $t;t.push(r)}return t}case"ObjectExpression":{let t={};for(let n of e.properties){if(!re.isObjectProperty(n)||n.computed||n.shorthand||!re.isExpression(n.value))return $t;let r=re.isIdentifier(n.key)?n.key.name:re.isStringLiteral(n.key)?n.key.value:null;if(!r)return $t;let o=ps(n.value);if(o===$t)return $t;t[r]=o}return t}default:return $t}}function tg(e){let{resolveBindingTarget:t}=e;async function n(i,s,a,c,l,u,f){let m=ps(i);if(m!==$t)return m;if(!re.isTemplateLiteral(i)){if(re.isTSAsExpression(i)||re.isTSSatisfiesExpression(i)||re.isTSNonNullExpression(i))return await n(i.expression,s,a,c,l,u,f);if(re.isIdentifier(i)){let d=s.getBinding(i.name);if(!d)return;let g=await t({currentFile:a,binding:d,readFile:c,exists:l,fileCache:u,visited:f});return g?.kind==="static"?g.value:void 0}if(re.isArrayExpression(i)){let d=[];for(let g of i.elements){if(!g||re.isSpreadElement(g))return;let h=await r(g,s,a,c,l,u,f);if(h===void 0)return;d.push(h)}return d}if(re.isObjectExpression(i)){let d={};for(let g of i.properties){if(!re.isObjectProperty(g)||g.computed)return;let h=null;if(re.isIdentifier(g.key)?h=g.key.name:re.isStringLiteral(g.key)&&(h=g.key.value),!h)return;if(g.shorthand){if(!re.isIdentifier(g.value))return;let E=await r(g.value,s,a,c,l,u,f);if(E===void 0)return;d[h]=E;continue}if(!re.isExpression(g.value))return;let S=await r(g.value,s,a,c,l,u,f);S!==void 0&&(d[h]=S)}return d}if(re.isMemberExpression(i)){let d=await o(i,s,a,c,l,u,f);if(!d)return;let g=s.getBinding(d.base);if(!g)return;let h=await t({currentFile:a,binding:g,readFile:c,exists:l,fileCache:u,visited:f});return!h||h.kind!=="static"?void 0:qe(h.value,d.path)}}}async function r(i,s,a,c,l,u,f){if(!re.isSpreadElement(i))return await n(i,s,a,c,l,u,f)}async function o(i,s,a,c,l,u,f){if(re.isIdentifier(i))return{base:i.name,path:[]};if(!re.isMemberExpression(i))return null;let m=[],d=i;for(;re.isMemberExpression(d);){if(d.computed){let g=d.property;if(re.isNumericLiteral(g))m.unshift({kind:"index",index:g.value});else if(re.isStringLiteral(g))m.unshift({kind:"property",name:g.value});else{let h=re.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(!re.isIdentifier(d.property))return null;m.unshift({kind:"property",name:d.property.name})}d=d.object}return re.isIdentifier(d)?{base:d.name,path:m}:null}return{normalizeExpressionWithScope:o,evaluateStaticExpression:n}}var sg=typeof ml=="function"?ml:ml.default,ng=new WeakMap;function ag(e){try{return ig.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function gs(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=ag(n);return e.set(t,{source:n,ast:o}),o}function hs(e,t){return hl(vo(e).expressionRanges,t,!1)}function cg(e,t){return vo(e).exactExpressions.get(lg(t))??null}function gl(e,t){return hl(vo(e).jsxRanges,t,!0)}function vo(e){let t=ng.get(e);if(t)return t;let n={expressions:[],expressionRanges:[],jsxRanges:[],exactExpressions:new Map};return sg(e,{Expression(r){let o=r;n.expressions.push(o);let i=rg(o,n.expressions.length-1);if(!i)return;n.expressionRanges.push(i);let s=lg(i.range),a=n.exactExpressions.get(s);(!a||i.span<=(a.node.end??0)-(a.node.start??0))&&n.exactExpressions.set(s,o)},JSXElement(r){let o=rg(r,n.jsxRanges.length);o&&n.jsxRanges.push(o)}}),n.expressionRanges.sort(og),n.jsxRanges.sort(og),ng.set(e,n),n}function rg(e,t){let n=ko(e.node);return n?{path:e,range:n,traversalIndex:t,span:(e.node.end??0)-(e.node.start??0)}:null}function lg(e){return`${e.startLine}:${e.startColumn}:${e.endLine}:${e.endColumn}`}function og(e,t){return e.range.startLine-t.range.startLine||e.range.startColumn-t.range.startColumn||e.traversalIndex-t.traversalIndex}function hl(e,t,n,r){let o=0,i=e.length;for(;o<i;){let c=o+Math.floor((i-o)/2),l=e[c].range;l.startLine<t.startLine||l.startLine===t.startLine&&l.startColumn<t.startColumn?o=c+1:i=c}let s=null,a=n?1/0:-1;for(let c=o;c<e.length;c++){let l=e[c],u=l.range;if(u.startLine>t.endLine||u.startLine===t.endLine&&u.startColumn>t.endColumn)break;if(u.endLine>t.endLine||u.endLine===t.endLine&&u.endColumn>t.endColumn||r&&!r(l.path))continue;((n?l.span<a:l.span>a)||l.span===a&&(!s||l.traversalIndex>s.traversalIndex))&&(s=l,a=l.span)}return s?.path??null}function ko(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 yr(e,t){if(t)return yl(e,t);let n=eg(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function yl(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 vo(e).expressions){if(yl(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function ug(e,t,n,r){return hl(vo(e).expressionRanges,r,!0,o=>yl(o.node,t)===n)}function xr(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}function Co(e){let t=null;if(sg(e,{Program(n){t=n.scope,n.stop()}}),!t)throw new Error("Unable to determine program scope");return t}async function Vt(e,t,n){let r=n.get(e);if(r)return r;let o=await t(e),i=ag(o),s={source:o,ast:i};return n.set(e,s),s}function aR(e){return j.isIdentifier(e.callee)&&(e.callee.name==="useState"||e.callee.name==="useReducer")?e.callee.name:j.isMemberExpression(e.callee)&&j.isIdentifier(e.callee.property)&&(e.callee.property.name==="useState"||e.callee.property.name==="useReducer")?e.callee.property.name:null}function cR(e){if(!j.isNewExpression(e)||!j.isIdentifier(e.callee,{name:"Proxy"})||e.arguments.length!==2||!j.isIdentifier(e.arguments[0])||!j.isObjectExpression(e.arguments[1])||e.arguments[1].properties.length!==1)return null;let[t]=e.arguments[1].properties;if(!j.isObjectMethod(t)||t.kind!=="method"||t.computed||t.async||t.generator||!j.isIdentifier(t.key,{name:"get"})||t.params.length!==3||!t.params.every(j.isIdentifier)||t.body.body.length!==2)return null;let[n,r,o]=t.params,[i,s]=t.body.body;if(j.isIfStatement(i)&&j.isBlockStatement(i.consequent)&&i.consequent.body.length!==1)return null;let a=j.isIfStatement(i)?i.test:null,c=a&&j.isLogicalExpression(a,{operator:"&&"})?a.right:null,l=j.isIfStatement(i)?j.isBlockStatement(i.consequent)?i.consequent.body[0]:i.consequent:null,u=j.isReturnStatement(s)?s.argument:null;return!a||!j.isLogicalExpression(a,{operator:"&&"})||!j.isBinaryExpression(a.left,{operator:"==="})||!j.isUnaryExpression(a.left.left,{operator:"typeof"})||!j.isIdentifier(a.left.left.argument,{name:r.name})||!j.isStringLiteral(a.left.right,{value:"string"})||!j.isUnaryExpression(c,{operator:"!"})||!j.isBinaryExpression(c.argument,{operator:"in"})||!j.isIdentifier(c.argument.left,{name:r.name})||!j.isIdentifier(c.argument.right,{name:n.name})||!j.isReturnStatement(l)||!j.isIfStatement(i)||i.alternate||!j.isCallExpression(u)||!j.isMemberExpression(u.callee)||!j.isIdentifier(u.callee.object,{name:"Reflect"})||!j.isIdentifier(u.callee.property,{name:"get"})||u.arguments.length!==3||!j.isIdentifier(u.arguments[0],{name:n.name})||!j.isIdentifier(u.arguments[1],{name:r.name})||!j.isIdentifier(u.arguments[2],{name:o.name})?null:e.arguments[0].name}function lR(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()||!j.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 uR(e,t){let n=lR(e.path);if(!n)return null;let r=ar(e,t);return r?{...n,...r}:null}function dR(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}function xl(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 bl(e,t){for(let n of e.program.body){if(t==="default"&&j.isExportDefaultDeclaration(n))return j.isExpression(n.declaration)?{kind:"default-expression",expression:n.declaration}:(j.isFunctionDeclaration(n.declaration)||j.isClassDeclaration(n.declaration))&&n.declaration.id?{kind:"default-binding",name:n.declaration.id.name}:null;if(j.isExportNamedDeclaration(n)){if(n.declaration){if(j.isVariableDeclaration(n.declaration)){for(let r of n.declaration.declarations)if(j.isIdentifier(r.id)&&r.id.name===t)return{kind:"local-binding",name:r.id.name}}if((j.isFunctionDeclaration(n.declaration)||j.isClassDeclaration(n.declaration))&&n.declaration.id&&n.declaration.id.name===t)return{kind:"local-binding",name:t}}for(let r of n.specifiers)if((j.isIdentifier(r.exported)?r.exported.name:r.exported.value)===t&&j.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 dg(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:y,visited:v}=d,C=`${g}::${h.kind}::${h.identifier.name}`;if(v.has(C))return null;v.add(C);try{let N=await a({currentFile:g,binding:h,readFile:S,exists:E,fileCache:y,visited:v});if(N)return N;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:y,visited:v});if(h.kind==="param")return null;if(h.path.isVariableDeclarator()){let A=h.path.node.init;if(!A||!j.isExpression(A))return null;let R=cR(A);if(R&&!h.path.scope.getBinding("Proxy")&&!h.path.scope.getBinding("Reflect")){let L=h.path.scope.getBinding(R),U=L?await s({...d,binding:L}):null;if(U?.kind==="static"&&U.value!==null&&!Array.isArray(U.value)&&typeof U.value=="object")return U}let F=h.path.get("init");if(F&&!Array.isArray(F)&&F.isExpression()){let L=await t({currentFile:g,expressionPath:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(L)return L;if(F.isCallExpression()){let U=await n({currentFile:g,callPath:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(U)return U}}let _=await r(A,h.path.scope,g,S,E,y,v);return _===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:_,sourceKind:"binding"}}if(h.path.isIdentifier()&&h.path.parentPath?.isExportDefaultDeclaration()){let A=h.path.parentPath.node.declaration;if(!j.isExpression(A))return null;let R=await r(A,h.path.scope,g,S,E,y,v);return R===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:R,sourceKind:"binding"}}return null}finally{v.delete(C)}}async function a(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:y,visited:v}=d;if(!h.path.isVariableDeclarator()||!h.path.get("id").isArrayPattern())return null;let C=h.path,N=C.node.init;if(!N||!j.isCallExpression(N))return null;let A=aR(N);if(!A||!j.isArrayPattern(C.node.id)||C.node.id.elements.findIndex(U=>j.isIdentifier(U)&&U.name===h.identifier.name)!==0)return null;let F=A==="useReducer"?1:0,_=N.arguments[F];if(!_||!j.isExpression(_))return null;let L=await r(_,C.scope,g,S,E,y,v);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=uR(d.binding,d.sourceInfo);if(!g||!d.graph)return null;let h=[...d.graph.elements.values()].filter(A=>dR(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 xl(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 xl(A,{componentName:g.componentName,propName:g.propName,file:S.sourceFile});let R=yp(d.binding,g.componentName,g.propName);if(!R||R.propName!==g.propName)return null;let F=await r(R.expressionPath.node,R.expressionPath.scope,d.currentFile,d.readFile,d.exists,d.fileCache,d.visited);if(F===void 0)return null;let _=g.remainingPath;return _.length>0&&qe(F,_)===void 0?null:{kind:"value",file:d.currentFile,root:{kind:"binding",name:g.propName},path:_,sourceKind:"binding",semanticKind:"component-prop",displayExpression:R.displayPath,chainPrefix:[{kind:"component-prop",file:d.currentFile,displayName:R.displayPath,canEditHere:!0}],editMode:"upstream",diagnostics:[]}}let y=await Vt(S.sourceFile,d.readFile,d.fileCache);if(!y.ast)return null;let v=ug(y.ast,y.source,E.source.expression,E.sourceRange)??Io(y.ast,y.source,E.source.expression);if(!v)return null;let C={...E.source,expression:xr(E.source.expression,g.remainingPath),path:[...E.source.path,...g.remainingPath]},N=await o({currentFile:S.sourceFile,expressionPath:v,sourceInfo:C,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 N?xl(N.kind==="external"?N:{...N,displayExpression:C.expression},{componentName:g.componentName,propName:g.propName,file:S.sourceFile}):null}async function l(d){let g=await Vt(d.caller.sourceFile,d.readFile,d.fileCache);if(!g.ast)return null;let h=gl(g.ast,d.caller.sourceRange);if(!h)return null;let S=h.get("openingElement").get("attributes").find(C=>C.isJSXAttribute()&&C.node.name.type==="JSXIdentifier"&&C.node.name.name===d.propName);if(!S?.isJSXAttribute())return null;let E=S.get("value"),y=E.isStringLiteral()?E:E.isJSXExpressionContainer()?E.get("expression"):null;if(!y?.isExpression())return null;let v=ko(y.node);return v?{kind:"value",file:d.caller.sourceFile,root:{kind:"expression",sourceRange:v},path:d.remainingPath,sourceKind:"binding",semanticKind:"component-prop",displayExpression:d.propName,editMode:"upstream",diagnostics:[]}:null}async function u(d){let g=await Vt(d.caller.sourceFile,d.readFile,d.fileCache);if(!g.ast)return null;let h=gl(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 y=E.get("argument");if(!y.isExpression())continue;let v=await i({expression:y.node,scope:y.scope,source:g.source,currentFile:d.caller.sourceFile,readFile:d.readFile,exists:d.exists,fileCache:d.fileCache,visited:d.visited});if(!v)continue;let C=[{kind:"property",name:d.propName},...d.remainingPath],N={...v,expression:xr(v.expression,C),path:[...v.path,...C]},A=await o({currentFile:d.caller.sourceFile,expressionPath:y,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});if(A)return A.kind==="external"?A:{...A,displayExpression:N.expression}}return null}async function f(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:y,visited:v}=d,C=h.path.parentPath;if(!C||!C.isImportDeclaration())return null;let N=C.node.source.value;if(typeof N!="string")return null;let A=await Sn(g,N,E);if(!A)return null;if(h.path.isImportDefaultSpecifier()){let te=await Vt(A,S,y),Ne=te.ast?bl(te.ast,"default"):null,q=await m({file:A,exportName:"default",readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return!q||q.kind!=="static"?null:{kind:"static",file:Ne?.kind==="default-expression"?q.file:A,root:Ne?.kind==="default-expression"?q.root:{kind:"default-export"},value:q.value,sourceKind:"imported-binding"}}if(!h.path.isImportSpecifier())return null;let R=h.path.node.imported,F=j.isIdentifier(R)?R.name:R.value,_=await Vt(A,S,y),L=_.ast?bl(_.ast,F):null,U=await m({file:A,exportName:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return U?U.kind==="external"?U:{kind:"static",file:L?.kind==="re-export"?U.file:A,root:L?.kind==="re-export"||U.root.kind==="binding"&&U.root.name!==L?.name?U.root:{kind:"named-export",name:F},value:U.value,sourceKind:"imported-binding"}:null}async function m(d){let{file:g,exportName:h,readFile:S,exists:E,fileCache:y,visited:v}=d,C=`export::${g}::${h}`;if(!v.has(C)){v.add(C);try{let N=await Vt(g,S,y);if(!N.ast)return;let A=bl(N.ast,h);if(!A)return;if(A.kind==="default-expression"){let L=A.expression;if(!L||!j.isIdentifier(L))return;let U=Co(N.ast).getBinding(L.name);return U?await s({currentFile:g,binding:U,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v})??void 0:void 0}if(A.kind==="re-export"){if(!A.source||!A.name)return;let L=await Sn(g,A.source,E);return L?m({...d,file:L,exportName:A.name}):void 0}let R=A.name;if(!R)return;let F=Co(N.ast).getBinding(R);return F?await s({currentFile:g,binding:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v})??void 0:void 0}finally{v.delete(C)}}}return{resolveExportValue:m,resolveComponentPropBinding:c,resolveBindingTarget:s}}import*as W from"@babel/types";function El(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=It(o,t);if(!i)return null;let s=r.parentPath;return!s||!s.isCallExpression()||!fR(s,r)?null:{callPath:s,basePath:i}}function fR(e,t){let n=e.node.callee;return!W.isMemberExpression(n)||!W.isIdentifier(n.property)||n.property.name!=="map"?!1:e.node.arguments.some(r=>r===t.node)}function mg(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:zi(r,t)}function fg(e,t){return e?W.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}function pg(e,t,n,r,o){let i=W.isExpression(e.body)?e.body:e.body.body.find(a=>W.isReturnStatement(a))?.argument;if(!i||!W.isExpression(i))return;let s=Sl(i,t,n,r,o);return typeof s=="number"?s:void 0}function Sl(e,t,n,r,o){if(W.isNumericLiteral(e)||W.isStringLiteral(e)||W.isBooleanLiteral(e))return e.value;if(W.isIdentifier(e))return e.name===t?r:e.name===n?o:void 0;if(W.isMemberExpression(e)){let i=ms(e,t);if(i)return qe(r,i);let s=ms(e,n);return s?qe(o,s):void 0}if(W.isBinaryExpression(e)&&e.operator==="-"){let i=W.isExpression(e.left)?Sl(e.left,t,n,r,o):void 0,s=W.isExpression(e.right)?Sl(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function pR(e){if(W.isExpression(e.body))return e.body;for(let t of e.body.body)if(W.isReturnStatement(t)&&t.argument&&W.isExpression(t.argument))return t.argument;return null}function mR(e,t,n){let r=jn(e,t,n);return typeof r=="boolean"?r:void 0}function jn(e,t,n){if(W.isStringLiteral(e)||W.isNumericLiteral(e)||W.isBooleanLiteral(e))return e.value;if(W.isNullLiteral(e))return null;if(W.isIdentifier(e))return e.name===t?n:void 0;if(W.isMemberExpression(e)){let r=ms(e,t);return r?qe(n,r):void 0}if(W.isUnaryExpression(e)&&e.operator==="!"){let r=jn(e.argument,t,n);return r===void 0?void 0:!r}if(W.isLogicalExpression(e)){let r=jn(e.left,t,n);if(r===void 0)return;if(e.operator==="&&")return r&&jn(e.right,t,n);if(e.operator==="||")return r||jn(e.right,t,n)}if(W.isBinaryExpression(e)){let r=W.isExpression(e.left)?jn(e.left,t,n):void 0,o=W.isExpression(e.right)?jn(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 gg(e){let t=[],n=e;for(;W.isMemberExpression(n)||W.isOptionalMemberExpression(n);){let r=n.property;if(n.computed)if(W.isNumericLiteral(r))t.unshift({kind:"index",index:r.value});else if(W.isStringLiteral(r))t.unshift({kind:"property",name:r.value});else if(W.isExpression(r))t.unshift({kind:"dynamic",expression:r});else return null;else if(W.isIdentifier(r))t.unshift({kind:"property",name:r.name});else return null;n=n.object}return W.isIdentifier(n)?{base:n.name,segments:t}:null}function hg(e){return e.some(t=>t.kind==="dynamic")}function gR(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}function yg(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 hR(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 xg(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:y,visited:v}=d,C=h.node.callee;if(!W.isMemberExpression(C)||!W.isIdentifier(C.property)||C.property.name!=="map")return null;let N=h.get("callee");if(!N.isMemberExpression())return null;let A=N.get("object");if(Array.isArray(A)||!A.isExpression())return null;let R=await s({currentFile:g,expressionPath:A,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return!R||!Array.isArray(R.value)||R.value.length===0?null:R}async function s(d){let{currentFile:g,expressionPath:h,readFile:S,exists:E,fileCache:y,visited:v}=d;if(h.isIdentifier()){let C=h.scope.getBinding(h.node.name);if(!C)return null;let N=await t({currentFile:g,binding:C,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return N?.kind==="static"?N: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:y,visited:v});if(h.isTSAsExpression()||h.isTSSatisfiesExpression()||h.isTSNonNullExpression()){let C=h.get("expression");if(!Array.isArray(C)&&C.isExpression())return s({...d,expressionPath:C})}if(h.isArrayExpression()){let C=ko(h.node);if(!C)return null;let N=await n(h.node,h.scope,g,S,E,y,v);return Array.isArray(N)?{kind:"static",file:g,root:{kind:"expression",sourceRange:C},value:N,sourceKind:"binding"}:null}if(h.isMemberExpression()){let C=await r({expression:h.node,scope:h.scope,currentFile:g,readFile:S,exists:E,fileCache:y,visited:v});if(!C)return null;let N=await o({currentFile:g,expressionPath:h,sourceInfo:C,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(!N||N.kind==="external")return null;let A=await a({currentFile:g,expressionPath:h,provenance:N,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(!A||A.kind!=="static")return null;if(N.collectionPathMap?.length){let F=hR(A.value,N.collectionPathMap);if(F)return{kind:"static",file:N.file,root:N.root,value:F.value,sourceKind:N.sourceKind,collectionPathMap:F.collectionPathMap}}let R=qe(A.value,N.path);return Array.isArray(R)?{kind:"static",file:N.file,root:N.root,value:R,sourceKind:N.sourceKind,pathPrefix:N.path,collectionIndexMap:N.collectionIndexMap,collectionPathMap:N.collectionPathMap}:null}return null}async function a(d){let{provenance:g}=d;if(g.root.kind==="binding"){let y=d.expressionPath.scope.getBinding(g.root.name);if(!y&&g.file!==d.currentFile){let v=await Vt(g.file,d.readFile,d.fileCache);y=v.ast?Co(v.ast).getBinding(g.root.name):void 0}return y?await t({currentFile:g.file,binding:y,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 Vt(g.file,d.readFile,d.fileCache);if(!h.ast)return null;let S=cg(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(!W.isMemberExpression(h)||!W.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 y=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(!y||!Array.isArray(y.value))return null;let[v]=g.node.arguments;if(!W.isArrowFunctionExpression(v)&&!W.isFunctionExpression(v))return null;let C=v.params[0];if(!W.isIdentifier(C))return null;let N=pR(v);if(!N)return null;let A=[],R=[],F=[];for(let[_,L]of y.value.entries()){let U=mR(N,C.name,L);if(typeof U!="boolean")return null;if(U){A.push(L),R.push(y.collectionIndexMap?.[_]??_);let te=y.collectionPathMap?.[_];te&&F.push(te)}}return{...y,value:A,pathPrefix:y.pathPrefix,collectionIndexMap:R,...F.length>0?{collectionPathMap:F}:{}}}async function u(d){let{callPath:g}=d,h=g.node.callee;if(!W.isMemberExpression(h)||!W.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 y=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(!y||!Array.isArray(y.value))return null;let[v,C]=g.node.arguments,N=fg(v,0),A=fg(C,y.value.length);if(N===null||A===null)return null;let R=Math.max(0,N<0?y.value.length+N:N),F=Math.max(0,A<0?y.value.length+A:A),_=y.value.map((U,te)=>y.collectionIndexMap?.[te]??te).slice(R,F),L=y.collectionPathMap?.slice(R,F);return{...y,value:y.value.slice(R,F),pathPrefix:y.pathPrefix,collectionIndexMap:_,...L?{collectionPathMap:L}:{}}}async function f(d){let{callPath:g}=d,h=g.node.callee;if(!W.isMemberExpression(h)||!W.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 y=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(!y||!Array.isArray(y.value))return null;let[v]=g.node.arguments;if(!W.isArrowFunctionExpression(v)&&!W.isFunctionExpression(v))return null;let[C,N]=v.params;if(!W.isIdentifier(C)||!W.isIdentifier(N))return null;let A=y.value.map((F,_)=>({value:F,sourceIndex:y.collectionIndexMap?.[_]??_,originalIndex:_})),R=[...A];for(let F of A)for(let _ of A)if(pg(v,C.name,N.name,F.value,_.value)===void 0)return null;return R.sort((F,_)=>{let L=pg(v,C.name,N.name,F.value,_.value)??0;return L===0?F.originalIndex-_.originalIndex:L}),{...y,value:R.map(F=>F.value),pathPrefix:y.pathPrefix,collectionIndexMap:R.map(F=>F.sourceIndex),...y.collectionPathMap?{collectionPathMap:R.map(F=>y.collectionPathMap?.[F.originalIndex]).filter(F=>!!F)}:{}}}async function m(d){let g=null,h,S=[];for(let y of d.segments){if(y.kind!=="dynamic")continue;let v=await r({expression:y.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(!v)return null;let C=El(d.expressionPath,v.base);if(!C)return null;let N=await i({currentFile:d.currentFile,callPath:C.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(!N||!Array.isArray(N.value))return null;let A=N.value.map((R,F)=>{let _=qe(N.value,[{kind:"index",index:F},...C.basePath,...v.path]);return gR(_)});if(A.some(R=>R===null)||g!==null&&g!==A.length)return null;g=A.length,h??=N.collectionIndexMap,S.push(A)}if(g===null||g===0)return null;let E=[];for(let y=0;y<g;y+=1){let v=[...d.rootPath],C=0;for(let N of d.segments){if(N.kind==="dynamic"){let A=S[C]?.[y];if(!A)return null;v.push(A),C+=1;continue}v.push({...N})}E.push(v)}return{...h?{collectionIndexMap:h}:{},collectionPathMap:E}}return{resolveRepeatCollectionTarget:i,resolveCollectionCallTarget:c,resolveDynamicMemberPathMap:m}}var{normalizeExpressionWithScope:yR,evaluateStaticExpression:ys}=tg({resolveBindingTarget:e=>xs(e)}),{resolveRepeatCollectionTarget:xR,resolveCollectionCallTarget:bR,resolveDynamicMemberPathMap:SR}=xg({resolveBindingTarget:e=>xs(e),evaluateStaticExpression:ys,buildExpressionSourceInfo:Kt,resolveSourceInfoProvenance:St}),{resolveExportValue:ER,resolveComponentPropBinding:vR,resolveBindingTarget:xs}=dg({resolveExternalExpression:Nl,resolveCollectionCallTarget:bR,evaluateStaticExpression:ys,resolveSourceInfoProvenance:St,buildExpressionSourceInfo:Kt});function wg(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}var bg=new WeakMap;function kR(e){let t=bg.get(e);return t||(t=new WeakMap,bg.set(e,t)),t}function Sg(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 Ng(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=gs(s,t,n);if(!a)return null;let c=hs(a,r.sourceRange);if(!c)return null;let l=await Kt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:o,exists:i,fileCache:s,visited:new Set});if(!l){let m=await Fl({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?Il(m,yr(c.node,n)):null}let u=new Set,f=await XR({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?Il(f,l.expression):null}async function br(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=gs(i,t,n);if(!s)return null;let a=e.sourceRange?hs(s,e.sourceRange):e.expression!==void 0?Io(s,n,e.expression):null;if(!a)return null;let c=bs(a);if(!c.isIdentifier()&&!c.isMemberExpression())return null;let l=new Set,u=await Kt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:r,exists:o,fileCache:i,visited:l}),f=u?await St({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 Lg({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 Il(f,e.expression??yr(c.node,n))}async function wl(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=gs(i,t,n);if(!s)return dt("unsupported-expression","Unable to parse source for provenance resolution");let a=new Set;return e.target.kind==="text-segment"?IR({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}):CR({file:t,source:n,ast:s,candidate:e.target.candidate,readFile:r,exists:o,graph:e.graph,fileCache:i,visited:a})}async function Kt(e){if(Q.isIdentifier(e.expression))return{kind:"identifier",expression:e.expression.name,base:e.expression.name,path:[]};if(!Q.isMemberExpression(e.expression))return null;let t=await yR(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:yr(e.expression,e.source),base:t.base,path:t.path}:null}function Il(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 IR(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=hs(r,o.sourceRange),u=l?await Kt({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 Eg(t,o.value);let m=await Fl({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"?Rg(t,m):Rl(t,yr(l.node,n),m):RR({expression:l.node,scope:l.scope,currentFile:t,source:n,readFile:i,exists:s,fileCache:a,visited:c,functionCallContracts:e.functionCallContracts})}if(!l)return dt("unsupported-expression","Unable to locate text expression for provenance resolution");let f=await St({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=Cl(l.node);if(m)return dt(m.code,m.message);let d=l.scope.getBinding(u.base);if(d?.path.isVariableDeclarator()){let g=Cl(d.path.node.init);if(g)return dt(g.code,g.message)}return d?.path.isVariableDeclarator()&&Q.isCallExpression(d.path.node.init)?wR("unsupported-expression",_g(d.path.node.init,e.functionCallContracts)):dt("unsupported-expression",`Unable to resolve provenance for expression "${u.expression}"`)}return f.kind==="external"?Rg(t,f):Rl(t,u.expression,f)}async function CR(e){let{file:t,source:n,ast:r,candidate:o,readFile:i,exists:s,fileCache:a,visited:c}=e;if(!o.conditionSource)return dt("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let l=Io(r,n,o.conditionExpression);if(!l)return dt("conditional-branch-unresolved",`Unable to locate conditional expression "${o.conditionExpression}"`);let u=await St({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 dt("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);if(u.kind==="external")return dt("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let f=Rl(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 Eg(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 RR(e){let t=await Ag(e);if(t.length===0)return dt("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(NR(e.expression))return Pg(t);if(Fg(e.expression))return dt("unsupported-expression","i18n helpers require a static message id string");if(Q.isMemberExpression(e.expression)&&e.expression.computed&&!Q.isNumericLiteral(e.expression.property)&&!Q.isStringLiteral(e.expression.property))return dt("dynamic-key","Computed member expressions are not supported for provenance resolution");let[n]=t;return dt(n.code,n.message)}function dt(e,t){return{finalSource:null,chain:[],confidence:"unknown",editMode:"unsupported",diagnostics:[{code:e,message:t}]}}function wR(e,t){return Pg([{code:e,message:t}])}function Pg(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function NR(e){return Q.isCallExpression(e)||Q.isConditionalExpression(e)||Q.isLogicalExpression(e)||Q.isBinaryExpression(e)}function wo(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 Ag(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=Cl(t);if(l)return[l];if(Q.isCallExpression(t))return[{code:"unsupported-expression",message:_g(t,c)}];if(Q.isMemberExpression(t)&&t.computed){let u=t.property;if(!Q.isNumericLiteral(u)&&!Q.isStringLiteral(u)){if(!Q.isExpression(u))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}];let m=await ys(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 Q.isBinaryExpression(t)?wo([...await vl(t.left,t.right,e),{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]):Q.isLogicalExpression(t)?wo([...await vl(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"}]):Q.isConditionalExpression(t)?wo([...await vl(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 Cl(e){return Fg(e)?vg("i18n helpers require a static message id string"):_R(e)?vg("CMS helpers require static entry id and field path string arguments"):null}async function vl(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await Ag({...t,expression:o}));return r}function PR(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:[AR(e.sourceType)]}}async function Nl(e){for(let n of DR){if(!kg(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return Cg(Ig(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(!kg(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return Cg(Ig(r),e.externalAdapters)}return null}function AR(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function TR(e){return{code:"external-source-readonly",message:e}}function vg(e){return{code:"unsupported-expression",message:e}}function Pl(e){return!e||!Q.isCallExpression(e)?null:Q.isIdentifier(e.callee)?e.callee.name:Q.isMemberExpression(e.callee)&&!e.callee.computed&&Q.isIdentifier(e.callee.object)&&Q.isIdentifier(e.callee.property)?`${e.callee.object.name}.${e.callee.property.name}`:null}function kg(e,t){if(!t||t.length===0)return!0;let n=Pl(e.node);return n?t.includes(n):!1}function Ig(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:wo(e.diagnostics??[])}:{match:e,diagnostics:[]}}function Cg(e,t){let n=PR(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:wo([...e.diagnostics,...e.editMode==="readonly"||n.editMode==="readonly"?n.diagnostics:[]])}}function FR(e){if(!e.isCallExpression())return null;let t=e.node.callee;if(!Q.isIdentifier(t)||t.name!=="getCmsField")return null;let[n,r]=e.node.arguments;if(!n||!r||!Q.isStringLiteral(n)||!Q.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 _R(e){return!!e&&Q.isCallExpression(e)&&Q.isIdentifier(e.callee)&&e.callee.name==="getCmsField"&&(e.arguments.length<2||!Q.isStringLiteral(e.arguments[0])||!Q.isStringLiteral(e.arguments[1]))}function Tg(e){if(!(!e||!Q.isCallExpression(e))){if(Q.isIdentifier(e.callee)&&e.callee.name==="t"){let[t]=e.arguments;return t&&Q.isStringLiteral(t)?t.value:null}if(Q.isMemberExpression(e.callee)&&!e.callee.computed&&Q.isIdentifier(e.callee.object)&&e.callee.object.name==="intl"&&Q.isIdentifier(e.callee.property)&&e.callee.property.name==="formatMessage"){let[t]=e.arguments;if(!t||!Q.isObjectExpression(t))return null;for(let n of t.properties)if(Q.isObjectProperty(n)&&!n.computed&&(Q.isIdentifier(n.key)&&n.key.name==="id"||Q.isStringLiteral(n.key)&&n.key.value==="id")&&Q.isStringLiteral(n.value))return n.value.value;return null}}}function Fg(e){return Tg(e)===null}async function MR(e,t,n){let r=new Set,o=Ro.posix.dirname(e);for(;r.add(o),!(o==="."||o==="/");){let i=Ro.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"]:[Ro.posix.join(i,"locales"),Ro.posix.join(i,"messages")];for(let a of s){let c=Ro.posix.join(a,`${t}.json`);if(await n(c))return c}}return null}async function OR(e){let t=Tg(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await MR(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function LR(e){if(!e.expressionPath.isCallExpression())return null;let t=e.expressionPath.node.callee;if(!Q.isIdentifier(t)||t.name!=="apiField")return null;let[n,r]=e.expressionPath.node.arguments;if(!n||!Q.isExpression(n))return null;let o=await ys(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:[TR("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var DR=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>FR(e)},{helperNames:["apiField"],resolve:e=>LR(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>OR({currentFile:e,expressionPath:t,exists:n})}];function Al(e){return{...e,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Derived display values are readonly because no identity-preserving write target exists"}]}}function Rg(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 Rl(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=JR(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 BR=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function Tl(e,t){let n=[...BR,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function _g(e,t){let n=e.callee;return Q.isIdentifier(n)&&Tl(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 Fl(e){let t=await Nl(e);if(t)return t;let n=await Mg({...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 Kt({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 St({...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 KR(e)}async function Mg(e){let t=await Rt({...e,allowComposed:!1});if(t?.kind!=="source")return null;let n=bs(e.expressionPath);return n.isIdentifier()||n.isMemberExpression()?t.provenance:Al(t.provenance)}async function Rt(e){let t=bs(e.expressionPath),n=VR(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 Kt({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 St({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 Kt({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 St({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 Rt({...e,expressionPath:r,allowComposed:!0}),a=await Rt({...e,expressionPath:o,allowComposed:!1}),c=await Rt({...e,expressionPath:i,allowComposed:!1});return kl(s,a,c)}if(t.isCallExpression())return jR({...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 Rt({...e,expressionPath:r,allowComposed:!0}),s=await Rt({...e,expressionPath:o,allowComposed:!0});return kl(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 Rt({...e,expressionPath:r,allowComposed:!0}),s=await Rt({...e,expressionPath:o,allowComposed:!0});return kl(i,s)}if(t.isUnaryExpression()){let r=t.get("argument");return Array.isArray(r)||!r.isExpression()?null:Rt({...e,expressionPath:r,allowComposed:!0})}return null}finally{n&&e.visited.delete(n)}}function bs(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 jR(e){let t=Pl(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:Rt({...e,expressionPath:r,allowComposed:!1})}let n=e.expressionPath.get("callee");if(n.isMemberExpression()&&!n.node.computed){let r=n.node.property;if(Q.isIdentifier(r)&&(r.name==="toFixed"||r.name==="toString")){let o=n.get("object");return Array.isArray(o)||!o.isExpression()?null:Rt({...e,expressionPath:o,allowComposed:!1})}}return null}function kl(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!$R(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function $R(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 VR(e,t){return t.start==null||t.end==null?null:`safe-derived:${e}:${t.start}:${t.end}`}async function KR(e){if(!e.expressionPath.isCallExpression())return null;let t=Pl(e.expressionPath.node);if(!t)return null;let n=Tl(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 Og({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?Al(i):null}async function Og(e){let t=await Nl({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 Kt({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 St({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 Fl({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 UR(e){if(!e.binding.path.isVariableDeclarator())return null;let t=e.binding.path.node.init;if(!t||!Q.isCallExpression(t))return null;let n=t.callee;if(!Q.isIdentifier(n))return null;let r=Tl(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 Og({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?Al(a):null}function JR(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=xr(t,e.path);return{sourceId:o,displayPath:o}}async function XR(e){let t=e.segment.source;return t?St({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 St(e){let t=e.sourceInfo,n=El(e.expressionPath,t.base);if(n){let l=await xR({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=mg(n.callPath,[...n.basePath,...t.path]);return so(h)?Sg(e.currentFile,h.sourceId,h.displayPath):null}let u=yg(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 Sn(e.currentFile,u.node.source.value,e.exists);if(!f)return null;let m=await ER({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=gp(r);if(o){let l=o.expressionPath,u=await Kt({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 St({...e,expressionPath:l,sourceInfo:{...u,expression:xr(u.expression,t.path),path:[...u.path,...t.path]}});if(f)return f}else if(r.constant){let f=`dynamic-alias:${e.currentFile}:${l.node.start}`;if(e.visited.has(f))return null;e.visited.add(f);try{let m=await Lg({...e,expressionPath:bs(l),memberSuffix:t.path});if(m?.kind==="value")return m}finally{e.visited.delete(f)}}if(t.path.length===0){let f=await Mg({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 vR({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 UR({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=Ji(r,t.path,kR(e.fileCache));if(so(s))return Sg(e.currentFile,s.sourceId,s.displayPath);let a=await xs({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 Lg(e){let t=gg(e.expressionPath.node);if(!t||!hg(t.segments))return null;let n=await St({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 SR({...e,rootPath:n.path,segments:t.segments});if(!r)return null;let o=r.collectionPathMap.map(i=>[...i,...e.memberSuffix??[]]);if(e.memberSuffix){let i=e.expressionPath.scope.getBinding(t.base),s=i?await xs({...e,binding:i}):null;if(s?.kind!=="static"||o.some(a=>qe(s.value,a.slice(n.path.length))===void 0))return null}return{...n,path:o[0]??n.path,sourceKind:"repeat-template",displayExpression:yr(e.expressionPath.node,e.fileCache.get(e.currentFile)?.source),...r.collectionIndexMap?{collectionIndexMap:r.collectionIndexMap}:{},collectionPathMap:o}}async function Dg(e){let t=zR(e.propertyName);if(t.owner==="blocked")return yn(t.owner,t.diagnostic);if(t.owner==="class-name-source"||t.owner==="style")return yn(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 yn("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 WR(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 yn("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}:yn("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?yn("generic",{code:"remove-exposes-spread",message:`Removing '${e.propertyName}' would expose an earlier spread source`}):HR(e,s.attribute)}async function HR(e,t){if(t.resolution&&t.resolution.status!=="resolved"&&!t.source){let r=await br({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}}:yn("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 br({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"?yn("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 WR(e,t){let n=t.source?.expression;if(!n)return;let r=await br({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:GR(r,e.propertyName)}}function GR(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 yn(e,t){return{status:"blocked",owner:e,...t?{diagnostic:t}:{}}}function Bg(e){let{key:t,element:n,graph:r,provenances:o}=e,i=ZR(t,n,r),s=i?.tag??($n(n.tag)?n.tag:n.componentName),a=i?.identity.key??jg(n,r)??t,c=ew(i),l=tw(t,n,r,o,i),u=YR(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:qR(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:u,impactScope:nw(u),alternativeStrategies:rw(u)}}function YR(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return _l(e,n)?"instance":!$n(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function jg(e,t){if($n(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&QR(r,e.componentName));return n.length!==1?null:n[0].identity.key}function ZR(e,t,n){if($n(t.tag))return t;let r=_l(e,n);if(r)return r;let o=jg(t,n);return o?n.elements.get(o)??null:null}function QR(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function qR(e,t){return $n(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function ew(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 tw(e,t,n,r,o){let i=new Set,s=_l(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 _l(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 nw(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function rw(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}function Kg(e){let t=e.isRepeat??(e.graph?fw(e.element,e.graph):!1),n=e.propertyProvenance??new Map,r=e.repeatTargets??new Map,o=dw(e.element.attributes??[]),i=[...r.values()].some(u=>u.ok),s=o.map(u=>ow({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:pw(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 ow(e){let{attribute:t,provenance:n,repeatTarget:r}=e,o=e.selectionRef?.instanceIndex!==void 0&&r?.ok===!0?r:null,i=iw(t,n,e.isRepeat),s=["selection","template"].map(S=>({scope:S,result:qi({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=sw(t,n,l,e.isRepeat),f=c?lw(c,e.element,t.name):void 0,m=s.filter(({result:S})=>S.ok).map(({scope:S})=>S),d=m.length>0?cw(n,o,e.element):"unsupported",g=o?"repeat-item":e.isRepeat?"repeat-template":"node",h=uw(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 iw(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 sw(e,t,n,r){return n?$g(n.selectedResolution):t?.status==="blocked"?{status:"unresolved"}:r&&t?.status==="binding"?{status:"unresolved"}:$g(aw(e))}function aw(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 $g(e){return!e||e.status==="unresolved"?{status:"unresolved"}:e.status==="undefined"?{status:"undefined"}:{status:"resolved",value:e.value}}function cw(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 lw(e,t,n){return e.kind==="repeat-property"?{kind:"value-path",file:e.target.sourceFile,isProxy:e.target.sourceFile!==t.sourceFile,displayPath:Vg({...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:Vg(e.locator)}:{kind:"jsx-node",file:t.sourceFile,isProxy:!1,displayPath:t.componentName+" > "+n}}function uw(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 dw(e){let t=new Set;return e.filter(n=>t.has(n.name)?!1:(t.add(n.name),!0))}function fw(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 Vg(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 pw(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 mw(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var gw=160;function Ug(e,t,n,r={}){let o=er(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 Jg(e,t,n,r,o,i,s,a,c,l,u){let f=er(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=Gg(m.textSegments,s),S=Yg(e,t,m,g,h),E=h?bw(h):void 0,y=Sw(i,h),v=m.textSegments.map(R=>({index:R.index,value:R.value,editable:Zg(R,g,s?.get(R.index)??null),source:o.get(R.index)??null})),C=Hg(m,t),N=m.childKeys.map(R=>{let F=t.elements.get(R);return F?{key:R,tag:F.tag,label:F.tag}:null}).filter(R=>R!==null),A=[];if(m.parentKey){let R=t.elements.get(m.parentKey);if(R)for(let F of R.childKeys){if(F===e)continue;let _=t.elements.get(F);_&&A.push({key:F,tag:_.tag,label:_.tag})}}return{composition:f,key:e,tag:m.tag,componentName:m.componentName,sourceFile:m.sourceFile,sourceLocator:zg(m),label:m.tag,capabilities:S,writeTarget:i,effectiveWriteTarget:y,provenanceChain:E,componentSemantic:c,styleSource:l,conditional:a,...u?{dynamicData:u}:{},textSegments:v,boundaryKind:m.boundaryKind,isOpaque:m.isOpaque,ancestors:C,children:N,siblings:A}}function Xg(e,t,n,r,o,i,s,a){let c=er(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=Gg(l.textSegments,i),d=hw(l);return{composition:c,key:e,tag:l.tag,...d?{linkSourceKind:d}:{},componentName:l.componentName,sourceFile:l.sourceFile,sourceLocator:zg(l),label:l.tag,capabilities:Yg(e,t,l,f,m),provenanceChain:m?{editMode:m.editMode,diagnostics:m.diagnostics.map(g=>({code:g.code,message:g.message}))}:void 0,...s?{dynamicData:s}:{},...a?{properties:a}:{},textSegments:l.textSegments.map(g=>{let h=o.get(g.index);return{index:g.index,editable:Zg(g,f,i?.get(g.index)??null),source:h?{kind:h.kind}:null}}),boundaryKind:l.boundaryKind,isOpaque:l.isOpaque,ancestors:Hg(l,t)}}function hw(e){if(e.tag==="a")return"native-anchor";if(e.importedFrom==="next/link"&&e.exportName==="default")return"next-link";if(e.tag==="Link")return"unsupported"}function zg(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:yw(e.sourceRange),structuralPath:e.identity.structuralPath,...xw(e.textSegments)}}function Hg(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 yw(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function xw(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,gw)}:{}}function Wg(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 Gg(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function Yg(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&&Qg(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 Zg(e,t,n){return!e.editable||!t.canUpdateText?!1:n?Qg(n.editMode):!0}function Qg(e){return e==="direct"||e==="proxy"||e==="upstream"}function bw(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 Sw(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}:mw(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 Ml=["set-class-name-source","apply-style-draft"];function qg(e){let t=e.attributes?.find(n=>n.name==="className");if(!t)return{kind:"class-name-source",className:"",sourceKind:"missing",editable:!0,operationBoundary:Ml,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:Ml,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:Ml}}function eh(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}),th(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function th(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}),th(s,t,n,r,o))}}import nh from"node:path";function Ll(){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 oh(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=Iw(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 Ss(e){let t=()=>Ew(e);return e.mutex?e.mutex.runExclusive(t):t()}async function Ew(e){let t=await oh(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=vw(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 Ol({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 Ol({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 Ol({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 rh("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return rh("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 vw(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 Ol(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:kw(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 rh(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function kw(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 Iw(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)||nh.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=nh.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 Cw=50,Rw=8*1024*1024;function ch(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??Cw),s=Math.max(0,t.maxUndoBytes??Rw);return{prepareRewritePlan:a,execute:c,executeFilePlan:l,undo:u,redo:f};async function a(R){let F=[...R.steps].sort((q,pe)=>q.order-pe.order),_=F.filter(q=>q.type!=="invoke-external-adapter");if(_.length!==F.length)return{ok:!1,errorCode:"unsupported-operation",reason:"External adapter writes require a transactional prepare/commit/rollback contract."};let L=new Set(_.map(q=>q.file)),U=await y(L),te=new Map(U.map(q=>[q.file,q.exists===!1?"":q.content])),Ne;for(let q of _){let pe=ah(q,te.get(q.file)??"");if(!pe.ok)return{ok:!1,errorCode:pe.errorCode,reason:pe.reason};te.set(q.file,pe.source),Ne=pe.selectionRef??Ne}return{ok:!0,filePlan:{operationId:R.operationId,kind:"source-edit",target:R.target,documentVersion:R.documentVersion,conflictPolicy:"compare-and-swap",edits:[...te].map(([q,pe])=>({operation:"upsert",file:q,content:pe,baseContentHash:U.find(_e=>_e.file===q)?.sha256??null}))},...Ne?{selectionRef:Ne}:{}}}async function c(R){let F=[...R.steps].sort((_e,Qt)=>_e.order-Qt.order),_=F.filter(_e=>_e.type!=="invoke-external-adapter"),L=F.filter(_e=>_e.type==="invoke-external-adapter"),U=new Set(_.map(_e=>_e.file));if(_.length>0&&L.length>0)return{ok:!1,operationId:R.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(R,L);let te=await y(U),Ne=new Map;for(let _e of te)Ne.set(_e.file,_e.exists===!1?"":_e.content);let q;for(let _e of _){let Qt=Ne.get(_e.file)??"",qt=ah(_e,Qt);if(!qt.ok)return{ok:!1,operationId:R.operationId,errorCode:qt.errorCode,reason:qt.reason,rolledBack:!1};Ne.set(_e.file,qt.source),qt.selectionRef&&(q=qt.selectionRef)}let pe=await C([...Ne].map(([_e,Qt])=>({file:_e,content:Qt,exists:!0,version:0,sha256:ve(Qt)})),te);return pe.ok===!1?{ok:!1,operationId:R.operationId,errorCode:pe.rolledBack?"writeback-failed":"rollback-failed",reason:pe.reason,rolledBack:pe.rolledBack}:(n.push({operationId:R.operationId,preSnapshots:te,postSnapshots:pe.snapshots,plan:R}),m(),r.length=0,{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:Math.max(...pe.snapshots.map(_e=>_e.version)),affectedFiles:[...U],...q?{selectionRef:q}:{}})}async function l(R){let F=new Set(R.edits.map(pe=>pe.file)),_=await y(F),L=E(R,_);if(L)return{ok:!1,operationId:R.operationId,errorCode:"stale-version",reason:L.reason,affectedFiles:[L.file],rolledBack:!1};let U=new Map(_.map(pe=>[pe.file,pe])),te=R.edits.find(pe=>pe.operation==="create-only"&&U.get(pe.file)?.exists!==!1);if(te)return{ok:!1,operationId:R.operationId,errorCode:"stale-version",reason:`MATERIALIZATION_INSTANCE_CONFLICT: create-only target already exists: ${te.file}`,affectedFiles:[te.file],rolledBack:!1};let Ne=R.edits.map(pe=>pe.operation==="delete"?{file:pe.file,content:"",exists:!1,version:0}:{file:pe.file,content:pe.content,exists:!0,version:0,sha256:ve(pe.content)}),q=await C(Ne,_,new Set(R.edits.filter(pe=>pe.operation==="create-only").map(pe=>pe.file)));return q.ok===!1?{ok:!1,operationId:R.operationId,errorCode:q.rolledBack?"writeback-failed":"rollback-failed",reason:q.reason,rolledBack:q.rolledBack}:(n.push({operationId:R.operationId,preSnapshots:_,postSnapshots:q.snapshots,plan:{operationId:R.operationId,kind:R.kind,target:R.target,documentVersion:R.documentVersion,steps:[],preSnapshots:_}}),m(),r.length=0,{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:Math.max(...q.snapshots.map(pe=>pe.version)),affectedFiles:[...F]})}async function u(){let R=n.at(-1);if(!R)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to undo"};let F=await C(R.preSnapshots,R.postSnapshots);return F.ok===!1?{ok:!1,operationId:R.operationId,errorCode:F.rolledBack?"writeback-failed":"rollback-failed",reason:F.reason,rolledBack:F.rolledBack}:(n.pop(),r.push(R),{ok:!0,operationId:R.operationId,kind:R.plan.kind,target:R.plan.target,resultVersion:Math.max(...F.snapshots.map(_=>_.version)),affectedFiles:R.preSnapshots.map(_=>_.file)})}async function f(){let R=r.at(-1);if(!R)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to redo"};let F=await C(R.postSnapshots,R.preSnapshots);return F.ok===!1?{ok:!1,operationId:R.operationId,errorCode:F.rolledBack?"writeback-failed":"rollback-failed",reason:F.reason,rolledBack:F.rolledBack}:(r.pop(),n.push(R),m(),{ok:!0,operationId:R.operationId,kind:R.plan.kind,target:R.plan.target,resultVersion:Math.max(...F.snapshots.map(_=>_.version)),affectedFiles:R.postSnapshots.map(_=>_.file)})}function m(){for(;n.length>i;)n.shift();for(;n.length>0&&d()>s;)n.shift()}function d(){return n.reduce((R,F)=>R+g(F),0)}function g(R){return h(R.preSnapshots)+h(R.postSnapshots)}function h(R){return R.reduce((F,_)=>F+_.file.length+_.content.length,0)}async function S(R,F){let _=[];for(let L of F){let U=L.capability??"write-text",te=o.find(q=>q.sourceType===L.sourceType&&(L.adapterId===void 0||q.adapterId===L.adapterId)&&(q.capabilities===void 0||q.capabilities.includes(U)));if(!te)return{ok:!1,operationId:R.operationId,errorCode:"unsupported-operation",reason:`No external adapter registered for ${L.sourceType}`,rolledBack:!1};let Ne=await te.execute(L);if(!Ne.ok)return{ok:!1,operationId:R.operationId,errorCode:"writeback-failed",reason:Ne.reason??`External adapter failed for ${L.sourceType}`,rolledBack:!1};_.push(L.file)}return{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:0,affectedFiles:_}}function E(R,F){if(R.conflictPolicy!=="compare-and-swap")return null;let _=new Map(F.map(L=>[L.file,L]));for(let L of R.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 U=_.get(L.file),te=L.baseContentHash;if(te===null){if(U?.exists!==!1)return{file:L.file,reason:`Source file ${L.file} was created or changed before save.`};continue}if(!te)return{file:L.file,reason:`Source file ${L.file} is missing baseContentHash. Reopen the file before saving.`};if(U?.exists===!1||U?.sha256!==te)return{file:L.file,reason:`Source file ${L.file} changed before save. Reload or explicitly overwrite the newer version.`}}return null}async function y(R){let F=[];for(let _ of R)F.push(await v(_));return F}async function v(R){if(!await e.exists(R))return{file:R,content:"",version:0,exists:!1};let _=Math.max(1,e.getVersion(R)),L=await e.readFile(R);return{file:R,content:L,version:_,exists:!0,sha256:ve(L)}}async function C(R,F,_=new Set){let L=[];try{for(let U of R){if(_.has(U.file)){if(!e.createExclusive)throw new Error("Create-only write requires atomic exclusive-create support.");await e.createExclusive(U.file,U.content)}else await N(U);let te=e.bumpVersion(U.file);L.push(U.file),U.version=te}}catch(U){let te=await A(F.filter(q=>L.includes(q.file)));if(te.ok===!1)return{ok:!1,reason:`Writeback failed, then rollback failed for ${te.failedFiles.join(", ")}: ${sh(U)}`,rolledBack:!1,instanceConflict:ih(U)};let Ne=ih(U);return{ok:!1,reason:`${Ne?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${sh(U)}`,rolledBack:!0,instanceConflict:Ne}}return{ok:!0,snapshots:R.map(ww)}}async function N(R){if(R.exists===!1){await e.deleteFile(R.file);return}await e.writeFile(R.file,R.content)}async function A(R){let F=[];for(let _ of R)try{await N(_),e.bumpVersion(_.file)}catch{F.push(_.file)}return F.length===0?{ok:!0}:{ok:!1,failedFiles:F}}}function ih(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function ww(e){let t=e.exists!==!1;return{file:e.file,content:t?e.content:"",version:e.version,exists:t,...t?{sha256:ve(e.content)}:{}}}function sh(e){return e instanceof Error?e.message:String(e)}function ah(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 He(Qn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-import":return He(qn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-node":return He(Wn({source:t,locator:e.locator,removeWhitespace:e.removeWhitespace}));case"insert-child":return He(Gn({source:t,locator:e.parentLocator,node:e.node,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"update-text":return He(ei({source:t,locator:e.locator,segmentIndex:e.segmentIndex,newText:e.newText}));case"update-value":return He(_r({source:t,locator:e.locator,next:e.value}));case"update-array-item":return He(_r({source:t,locator:e.locator,next:e.value}));case"insert-bound-array-item":return He(ai({source:t,locator:e.locator,index:e.index,value:e.value}));case"insert-jsx-expression-child":return He(ni({source:t,locator:e.parentLocator,expression:e.expression,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"remove-bound-array-item":return He(ci({source:t,locator:e.locator,index:e.index}));case"move-array-item":return He(li({source:t,locator:e.locator,fromIndex:e.fromIndex,toIndex:e.toIndex}));case"move-node":return He(Yn({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"move-repeat-template-child":return He(ri({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 Nw(e,t);case"set-property-changes":return He(oi({source:t,locator:e.locator,changes:e.changes}));case"set-link-target":return He(ii({source:t,locator:e.locator,link:e.link,changes:e.changes}));case"set-property-binding":return He(si({source:t,locator:e.locator,name:e.name,object:e.object,property:e.property}));case"upsert-object-property":return He(di({source:t,objectLocator:e.locator,name:e.name,value:e.value}));default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function Nw(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!hd(n.newAttrRaw))return{ok:!1,reason:"newAttrRaw must be a valid JSX className attribute.",errorCode:"invalid-params"};let r=n.oldAttrRange!==null&&n.oldAttrRaw!==null,o=n.openingElementRange.start,i=n.openingElementRange.end,s=t.slice(o,i);if(!(Number.isInteger(o)&&Number.isInteger(i)&&o>=0&&i>o&&i<=t.length&&s.startsWith("<")&&s.endsWith(">")&&!s.startsWith("</")&&(n.oldAttrRange===null||n.oldAttrRange.start>=o&&n.oldAttrRange.end<=i)))return{ok:!1,reason:"The opening element range changed before className save.",errorCode:"stale-version"};if(!r&&n.expectedVersion.contentHash!==ve(t))return{ok:!1,reason:"The source file changed before className save.",errorCode:"stale-version"};if(n.oldAttrRange){if(t.slice(n.oldAttrRange.start,n.oldAttrRange.end)!==n.oldAttrRaw)return{ok:!1,reason:"The className attribute changed before save.",errorCode:"stale-version"}}else if(n.oldAttrRaw!==null)return{ok:!1,reason:"The className attribute range no longer matches.",errorCode:"stale-version"};return{ok:!0,source:gd({source:t,oldAttrRange:n.oldAttrRange,openingElementRange:n.openingElementRange,newAttrRaw:n.newAttrRaw})}}function He(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 Es,SiteEditCompositionContextSchema as Pw,SiteEditCompositionSelectorSchema as Aw}from"@vcp-dev/contracts";var Ze=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="SiteEditCompositionError"}};function lh(e,t){throw new Ze("INVALID_COMPOSITION",e,{value:t})}function vs(e){let t=Pw.safeParse(e);return t.success?t.data:lh("Invalid SiteEditCompositionContext.",e)}function uh(e){let t=[],n=new Map,r=new Map;for(let l of e.compositions){let u=vs(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new Ze("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Es(u);if(n.has(f))throw new Ze("DUPLICATE_COMPOSITION",`Composition key ${f} is registered more than once.`,{key:f,context:u});let m=r.get(l.entryFile);if(m)throw new Ze("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 Ze("INVALID_COMPOSITION","At least one composition must be registered.");let o=new Map;for(let l of e.initialDocumentVersions??[]){let u=vs(l?.composition);if(!Number.isInteger(l?.version)||(l?.version??-1)<0)throw new Ze("INVALID_INITIAL_DOCUMENT_VERSION","Initial document version must be a non-negative integer.",{context:u,version:l?.version});let f=Es(u);if(!n.has(f))throw new Ze("UNKNOWN_COMPOSITION","Initial document version references an unregistered composition.",{context:u,key:f});if(o.has(f))throw new Ze("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=Aw.safeParse(l);if(!u.success)return lh("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 Ze("AMBIGUOUS_COMPOSITION","The composition selector matches multiple registered contexts.",{selector:u.data}):new Ze("UNKNOWN_COMPOSITION","The composition selector is not registered.",{selector:u.data})}function s(l){let u=vs(l),f=Es(u),m=n.get(f);if(!m)throw new Ze("UNKNOWN_COMPOSITION","The composition context is not registered.",{context:u,key:f});return m}function a(l){let u=vs(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new Ze("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Es(u),m=n.get(f);if(m){if(m.entryFile===l.entryFile)return m;throw new Ze("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 Ze("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))]}}function dh(e){let t=new Map,n=new Map;return{readFile(r){let o=t.get(r);return o||(o=e.readFile(r),t.set(r,o)),o},exists(r){let o=n.get(r);return o||(o=e.exists(r),n.set(r,o)),o}}}import{composeSiteEditRepeatInstanceKey as Tw,stripSiteEditRepeatInstanceKeys as fh}from"@vcp-dev/contracts";function ph(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=fh(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 Fw(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 ks(e){return e?.map(t=>({...t}))}function Dl(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=ks(e.collectionPathMap?.[t])??ks(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:ks(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>ks(o)??[])}}function mh(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)=>Tw(d,g),c=(d,g,h)=>{let S=o.get(d);if(!S)return a(d,h);let E=a(d,h),y={...S,key:E,parentKey:g,childKeys:[]};return i.push(y),y.childKeys=S.childKeys.flatMap(v=>l(v,h,E)),E},l=(d,g,h)=>{if(!r.has(d))return[c(d,h,g)];let S=f(d,g),E=[];for(let y=0;y<S;y+=1)E.push(c(d,h,[...g,y]));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 y of[...E.textTargets.values(),...E.elementPropertyTargets.values()])if(!(y?.kind!=="value-binding"||y.sourceKind!=="repeat-template"))for(let v of _w(y))v.length<=g.length||Mw(v,g)&&h.add(v[g.length])}}return h.size>0?h.size:Fw(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 gh(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function hh(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((fh(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function _w(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 Mw(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 yh(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 xh(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 bh(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function Ow(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var No=class extends Error{constructor(t){let n=t.map(bh);super(Ow(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function Sh(e,t){let n=t instanceof Error&&t.message?t.message:String(t);return t instanceof No?{routeId:e,message:n,diagnostics:t.diagnostics.map(bh)}:{routeId:e,message:n}}function Bl(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function jl(e,t){let n=new Map(e);for(let r of t)n.delete(r);return n}function Sr(e,t){e.clear();for(let[n,r]of t)e.set(n,r)}function Eh(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function $l(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 vh(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 Uw=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,Jw=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],kh=32,Ih=256;function Xw(e){return{expectedIndexDigest:e.digest,publishedIndexDigest:e.digest,publishedCursor:e.cursor,publishedCurrentId:e.currentId}}var Ch={maxEntries:50,maxBytes:8*1024*1024};function zw(){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 pi(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}}}async function Hw(e,t){if(t.length===0)return[];let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return[]}if(!n||typeof n!="object")return[];let r=n.dependencies;return!r||typeof r!="object"||Array.isArray(r)?[]:t.filter(o=>{if(!Object.prototype.hasOwnProperty.call(r,o))return!1;let i=r[o];return typeof i=="string"&&i.trim().length>0})}function Ww(){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>Ch.maxEntries||Gw(e)>Ch.maxBytes;)e.shift()}}function Gw(e){return e.reduce((t,n)=>t+Yw(n),0)}function Yw(e){return Rh(e.preSnapshots)+Rh(e.postSnapshots)+Zw(e.provenance)}function Zw(e){return e?new TextEncoder().encode(JSON.stringify(e)).byteLength:0}function Rh(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function wh(e,t){return{key:Dw(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 Cs=class extends Error{constructor(t){super(t.reason),this.result=t}},Vn=class extends Error{constructor(t){super(Bl(t)),this.failedRoutes=t}};function Nh(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 Qw(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 qw=/\.(?:[cm]?[jt]sx?)$/i,eN=/\.json$/i,tN=/\.(?:css|scss|sass)$/i,nN=/\.mdx$/i,rN=/\.ya?ml$/i;function oN(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 iN(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function sN(e,t){let n=new Map;for(let i of t)n.set(i.path,i.operation==="delete"?{exists:!1}:{exists:!0,content:i.content});let r=new Map,o=new Map;return{async readFile(i){let s=n.get(i);if(s){if(!s.exists)throw new Error(`Source file not found: ${i}`);return s.content}let a=r.get(i);return a||(a=e.readFile(i),r.set(i,a)),a},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(i){let s=n.get(i);if(s)return s.exists;let a=o.get(i);return a||(a=e.exists(i),o.set(i,a)),a},async getFileInfo(i){let s=n.get(i);return s?s.exists?{path:i,sizeBytes:Buffer.byteLength(s.content,"utf8")}:null:e.getFileInfo?.(i)??null},async listFiles(i={}){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let s=Mh(await e.listFiles(i)),a=new Map(s.files.map(l=>[l.path,l]));for(let[l,u]of n)if(aN(l,i.roots??[])){if(!u.exists){a.delete(l);continue}a.set(l,{path:l,sizeBytes:Buffer.byteLength(u.content,"utf8")})}let c=[...a.values()].sort((l,u)=>l.path.localeCompare(u.path));return s.truncated?{files:c,truncated:s.truncated}:c},getVersion(i){return e.getVersion(i)},bumpVersion(i){return e.getVersion(i)}}}function aN(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function Mh(e){return Array.isArray(e)?{files:e}:e}function cN(e){if(!jw(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!==Vw||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=Bw(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(qw.test(e.path)){let t=Pt({source:e.content,profile:vn({filePath:e.path,source:e.content})});if(!t.ok)return{ok:!1,errorCode:"ast-error",message:t.diagnostic.message,details:{path:e.path}}}if(eN.test(e.path))try{JSON.parse(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`JSON parse failed: ${et(t)}`,details:{path:e.path}}}if(tN.test(e.path)){let t=Ph({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(nN.test(e.path)){let t=Ph({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(rN.test(e.path))try{Kw(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`YAML parse failed: ${et(t)}`,details:{path:e.path}}}return{ok:!0}}function Ph({content:e,path:t,profile:n}){let r=[],o=null,i=!1,s=!1,a=!1,c=!1,l=!0;for(let f=0;f<e.length;f+=1){let m=e[f]??"",d=e[f+1]??"";if(n==="mdx"&&l&&e.startsWith("```",f)){c=!c;let g=e.indexOf(`
|
|
1
|
+
import*as ay from"@babel/parser";import*as Ge from"@babel/types";import*as tn from"node:path";var Bs=[".tsx",".ts",".jsx",".js"],cy=Bs.map(e=>`/index${e}`),ly=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 au(e){let t=e.replace(/[?#].*$/,""),n=/\.([a-z0-9]+)$/i.exec(t);return n!==null&&ly.has(n[1].toLowerCase())}function cu(e){let t=[];for(let n of e.program.body)Ge.isImportDeclaration(n)&&typeof n.source.value=="string"&&Nt(n.source.value)&&t.push(n.source.value),Ge.isExportNamedDeclaration(n)&&n.source&&typeof n.source.value=="string"&&Nt(n.source.value)&&t.push(n.source.value),Ge.isExportAllDeclaration(n)&&typeof n.source.value=="string"&&Nt(n.source.value)&&t.push(n.source.value);return Ge.traverseFast(e.program,n=>{let r=Ge.isImportExpression(n)?n.source:Ge.isCallExpression(n)&&Ge.isImport(n.callee)?n.arguments[0]:null;Ge.isStringLiteral(r)&&Nt(r.value)&&t.push(r.value)}),t}function Nt(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("@/")}function bn(e,t){if(t.startsWith("@/"))return t.slice(2).replace(/\\/g,"/");let n=tn.dirname(e);return tn.join(n,t).replace(/\\/g,"/")}async function uy(e,t){if(Bs.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of Bs){let r=`${e}${n}`;if(await t(r))return r}for(let n of cy){let r=`${e}${n}`;if(await t(r))return r}return null}async function Sn(e,t,n){let r=await Oo(e,t,n);return r.ok?r.path:null}async function Oo(e,t,n){let r=bn(e,t);try{if(!dy(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 uy(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 dy(e,t,n){if(!Nt(t)||t.includes("\0")||t.includes("\\")||tn.posix.isAbsolute(n))return!1;let r=tn.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!tn.posix.isAbsolute(e)}import{createHash as py}from"node:crypto";import*as lu from"@babel/parser";function En(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:En(t,n,r,o)}}function js(e,t,n,r,o){return{ok:!1,source:e,diagnostic:En(t,n,r,o)}}var fy={"tsx-module":["jsx","typescript"],"ts-module":["typescript"],"next-app-entry":["jsx","typescript"]};function Pt(e){let{source:t,profile:n}=e;try{return{ok:!0,ast:lu.parse(t,{sourceType:"module",plugins:fy[n]})}}catch(r){return{ok:!1,source:t,diagnostic:En("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function $s(e,t){return Pt({source:e,profile:uu(t.kind)})}function kr(e,t){return Pt({source:e,profile:uu(t)})}function uu(e){return"next-app-entry"}function vn(e){let{filePath:t,source:n}=e,r=t.toLowerCase().split(".").pop()??"";return r==="tsx"?"tsx-module":r==="ts"?"ts-module":r==="jsx"||r==="js"||r===""&&/<\w[\s\S]*>/.test(n)?"tsx-module":"next-app-entry"}var Ut=(e,t)=>{let n=Pt({source:t,profile:vn({filePath:e,source:t})});return n.ok?{ok:!0,module:{file:e,source:t,sourceHash:`sha256:${py("sha256").update(t).digest("hex")}`,ast:n.ast,imports:cu(n.ast).map(r=>({specifier:r}))}}:{ok:!1,diagnostic:{path:e,code:"parse-failed",message:n.diagnostic.message}}};function my(e,t){return Ut(e,t)}function gy(e,t){return bn(e,t)}import{COMPONENT_I18N_FILE_SUFFIX as hy,parseComponentI18nResourcesJson as yy,resolveSiteTextDirection as xy,SiteLocaleSchema as by}from"@vcp-dev/contracts";var Sy=["i18next","react-i18next"],Ey="components/ui/site-locale-provider.tsx",vy="components/ui/component-i18n-provider.tsx",du="app/layout.tsx";async function Lo(e){let t=e.files.filter(m=>m.path.endsWith(hy));if(t.length===0)return{ok:!0};for(let m of["package.json",du,Ey,vy])if(!await e.exists(m))return nn(`Target snapshot is missing required i18n host file: ${m}`);let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return nn("Target snapshot package.json is invalid.")}let r=fu(n)&&fu(n.dependencies)?n.dependencies:{},o=Sy.filter(m=>typeof r[m]!="string"||r[m].trim().length===0);if(o.length>0)return nn(`Target snapshot must already declare: ${o.join(", ")}.`);let i=await e.readFile(du),s=Vs(i,"html","lang"),a=Vs(i,"html","dir"),c=Vs(i,"SiteLocaleProvider","locale"),l=by.safeParse(s);if(!l.success||!a||!c||s!==c||a!==xy(l.data))return nn("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 nn("Target snapshot root layout is not wired to SiteLocaleProvider.");let u=l.data;if(e.targetLocale&&e.targetLocale!==u)return nn("Target snapshot locale does not match the authoritative site language.");let f=u.split("-")[0];for(let m of t){let d=yy(m.content);if(!d.success)return nn(`Component i18n resource is invalid: ${m.path}.`);if(!e.deferTargetLocale&&!Object.hasOwn(d.data,u)&&!Object.hasOwn(d.data,f))return nn(`Component i18n resource ${m.path} has no locale for ${u} or ${f}.`)}return{ok:!0}}function Vs(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 fu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nn(e){return{ok:!1,message:e}}import Us from"@babel/generator";import*as xu from"@babel/parser";import Js from"@babel/traverse";import*as Re from"@babel/types";import{computeSiteEditSourceIdentityKey as Iy}from"@vcp-dev/contracts";var pu="data-vcp-ui-component",Do="components/ui";function Jt(e){if(!e)return!1;let t=Ks(e);return t===Do||t.startsWith(`${Do}/`)||t.includes(`/${Do}/`)||t.endsWith(`/${Do}`)}function kn(e,t){return e?e.startsWith("@/")||e.startsWith("~/")?Jt(e.slice(2)):e.startsWith("./")||e.startsWith("../")?Jt(Ks(`${ky(t)}/${e}`)):Jt(e):!1}function Ks(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 ky(e){let t=Ks(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}import{stripSiteEditRepeatInstanceKeys as ZN}from"@vcp-dev/contracts";import{isSiteEditRuntimeContainerTag as qN,isSiteEditRuntimeTextTag as eP}from"@vcp-dev/contracts/site-edit-runtime-capability";var mu={key:"data-vcp-edit-key",parentKey:"data-vcp-edit-parent-key",movable:"data-vcp-movable",removable:"data-vcp-removable",flags:"data-vcp-flags",publicUiComponent:"data-vcp-ui-component"};var Cy=typeof Us=="function"?Us:Us.default,Ry=typeof Js=="function"?Js:Js.default,wy=new Set(["base","body","head","html","link","meta","noscript","script","style","template","title"]),Ny="suppressHydrationWarning",Py=new Set(["SiteEditBootstrap"]);function Ay(e){let t=_y(e.file,e.projectRoot);if(!Fy(e.source)||Jt(t))return{code:e.source,elements:[]};let n=e.attributes??mu,r=xu.parse(e.source,{sourceType:"module",plugins:["jsx","typescript"]}),o=[],i=Oy(r,t);return Ry(r,{JSXElement(s){let a=s.node.openingElement,c=a.name;if(!Dy(c)||bu(a,n.key))return;let l=jy(s)??"default",u=Vy(s),f=Iy(t,l,u),m=jo(c)??"unknown",d=My(c)?"jsx":"component-call";if(d==="component-call"&&!$y(s.node.children)&&Py.has(m))return;let g=d==="component-call"&&Ly(m,i);By(a,n.key,f),g&&gu(a,pu),Ty(s)&&gu(a,Ny),o.push({key:f,tag:m,componentName:l,sourceFile:t,sourceKind:d})}}),o.length===0?{code:e.source,elements:o}:{code:Cy(r,{jsescOption:{minimal:!0}}).code,elements:o}}function Ty(e){return!e.findParent(t=>t.isJSXElement())}function Fy(e){return/(?:^|[=(:,?;\[{>&|\n\r]|return\s+)\s*<(?:[A-Za-z][\w.:-]*|>)(?:\s|>|\/)/m.test(e)}function _y(e,t){let n=e.replace(/\\/g,"/").replace(/^\.\//,""),r=t?.replace(/\\/g,"/").replace(/\/+$/,"");if(r&&n.startsWith(`${r}/`))return n.slice(r.length+1);for(let[i,s]of[["/src/app/",1],["/src/components/",1],["/app/",1],["/components/",1]]){let a=n.indexOf(i);if(a>=0)return n.slice(a+s)}return n.match(/(?:^|\/)((?:src\/app|src\/components|app|components)\/.+)$/)?.[1]??n}function My(e){return Re.isJSXIdentifier(e)&&/^[a-z]/.test(e.name)}function jo(e){return Re.isJSXIdentifier(e)?e.name:Re.isJSXMemberExpression(e)?Eu(e):null}function Oy(e,t){let n=new Set;for(let r of e.program.body)if(!(!Re.isImportDeclaration(r)||!kn(r.source.value,t)))for(let o of r.specifiers)n.add(o.local.name);return n}function Ly(e,t){let n=e.split(".")[0]??e;return t.has(n)}function Dy(e){let t=jo(e);return!t||t==="Fragment"||t.endsWith(".Fragment")?!1:!wy.has(t)}function bu(e,t){return e.attributes.some(n=>Re.isJSXAttribute(n)&&Re.isJSXIdentifier(n.name,{name:t}))}function By(e,t,n){Su(e,Re.jsxAttribute(Re.jsxIdentifier(t),Re.stringLiteral(n)))}function gu(e,t){bu(e,t)||Su(e,Re.jsxAttribute(Re.jsxIdentifier(t),null))}function Su(e,t){let n=e.attributes.findIndex(r=>Re.isJSXSpreadAttribute(r));if(n>=0){e.attributes.splice(n,0,t);return}e.attributes.push(t)}function Eu(e){return`${Re.isJSXIdentifier(e.object)?e.object.name:Eu(e.object)}.${e.property.name}`}function jy(e){let t=e;for(;t;){if(t.isFunctionDeclaration()||t.isClassDeclaration())return t.node.id?.name??null;if(t.isVariableDeclarator()&&Re.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}function $y(e){return e.some(t=>Re.isJSXElement(t)||Re.isJSXFragment(t))}var hu=new WeakMap,Bo=new WeakMap,Xs=new WeakMap;function Vy(e){let t=hu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=Ky(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return hu.set(e.node,o),o}function Ky(e){let t=jo(e.node.openingElement.name);return!t||t==="Fragment"||t.endsWith(".Fragment")?null:/^[A-Z]/.test(t)?`component:${t}#${yu(e,t)}`:`${t}#${yu(e,t)}`}function yu(e,t){let n=vu(e)??e.getFunctionParent();if(!n)return 0;let r=Xs.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Xs.get(n.node);o||(o=new Map,Xs.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0,a=n.isJSXElement()||n.isJSXFragment()?$o(n):Uy(n);for(let c of a)if(jo(c.node.openingElement.name)===t){if(i.set(c.node,s),c.node===e.node)return s;s+=1}return i.get(e.node)??0}function Uy(e){let t=Bo.get(e.node);if(t)return t;let n=[];return e.traverse({JSXElement(r){r.getFunctionParent()?.node===e.node&&!vu(r)&&n.push(r)}}),Bo.set(e.node,n),n}function vu(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement())return t;t=t.parentPath}return n}function $o(e){let t=Bo.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()){n.push(o);continue}if(o.isJSXFragment()){n.push(...$o(o));continue}o.isJSXExpressionContainer()&&n.push(...In(o.get("expression")))}return Bo.set(e.node,n),n}function In(e){if(e.isJSXElement())return[e];if(e.isJSXFragment())return $o(e);if(e.isParenthesizedExpression())return In(e.get("expression"));if(e.isLogicalExpression()&&e.node.operator==="&&")return In(e.get("right"));if(e.isConditionalExpression())return[...In(e.get("consequent")),...In(e.get("alternate"))];if(e.isCallExpression()&&Xy(e.node)){let t=e.get("arguments")[0];return Jy(t)}return[]}function Jy(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return[t];if(t.isJSXFragment())return $o(t);if(t.isParenthesizedExpression())return In(t.get("expression"));if(!t.isBlockStatement())return[];for(let n of t.get("body")){if(!n.isReturnStatement())continue;let r=n.get("argument");return r.node?In(r):[]}return[]}function Xy(e){return Re.isMemberExpression(e.callee)&&Re.isIdentifier(e.callee.property)&&e.callee.property.name==="map"}import{SiteEditOperationRequestSchema as wN,SiteEditPatchPlanSchema as NN}from"@vcp-dev/contracts";function Cn(e){return{requestId:e.requestId,kind:e.kind,composition:e.composition,target:e.target,resultVersion:e.resultVersion,affectedFiles:e.affectedFiles,...e.fileChanges?{fileChanges:e.fileChanges}:{},...e.output?{output:e.output}:{},...e.selectionRef?{selectionRef:e.selectionRef}:{}}}function Vo(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 Ko(e,t){if(!e.pageComposition)throw new Error("RenderDocument is missing the required Page Composition projection.");return{siteId:t.siteId,snapshotId:t.snapshotId,composition:e.composition,version:e.version,entries:e.entries.map(n=>({key:n.key,parentKey:n.parentKey,...n.pageCompositionUnitKey?{pageCompositionUnitKey:n.pageCompositionUnitKey}:{},...n.pageCompositionActionScope?{pageCompositionActionScope:n.pageCompositionActionScope}:{},operationSummary:{canUpdateText:n.operationSummary.canUpdateText,canInsertChild:n.operationSummary.canInsertChild,canMove:n.operationSummary.canMove,canRemove:n.operationSummary.canRemove},...n.dynamicDataSummary?{dynamicDataSummary:n.dynamicDataSummary}:{}})),pageComposition:e.pageComposition.status==="unsupported"?{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics}:{status:"supported",containerKey:e.pageComposition.container.key,hasBusinessMembers:e.pageComposition.businessMembers.length>0,placementUnitKeys:e.pageComposition.placementUnits.map(n=>n.key),placements:e.pageComposition.placements.map(n=>({placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,relation:n.relation}))}}}function Uo(e){return{composition:e.composition,key:e.key,tag:e.tag,...e.linkSourceKind?{linkSourceKind:e.linkSourceKind}:{},label:e.label,sourceLocator:e.sourceLocator,isOpaque:e.isOpaque,ancestors:e.ancestors,componentName:e.componentName,sourceFile:e.sourceFile,capabilities:zy(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 Jo(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:Cn(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 zy(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 Dw,computeSiteEditCompositionKey as Bw,getSiteEditSourceDeleteProtectionReason as jw,isSiteEditTextSourcePath as $w,parseSiteEditRepeatInstanceKey as Vw,SITE_EDIT_SOURCE_DELETE_CAPABILITY as Kw,stripSiteEditRepeatInstanceKeys as it}from"@vcp-dev/contracts";import Is from"node:path";import{parse as Uw}from"yaml";import Ys from"node:path";import{TextDecoder as Wy}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as Iu,SITE_EDIT_SOURCE_ALLOWED_DIRS as Cu,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as Ru,SiteEditCompositionContextSchema as Gy,SiteEditSourceFileResponseSchema as zs,SiteEditSourceLocationSchema as Yy,SiteEditSourcePathSchema as Xo,SiteEditSourceTreeResponseSchema as Zy,isSiteEditTextSourcePath as Qy}from"@vcp-dev/contracts";import{createHash as Hy}from"node:crypto";var Ir=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 ke(e){return`sha256:${Hy("sha256").update(e).digest("hex")}`}var qy=[...Ru,...Iu,...Cu];function Zs(e){if(!e.composition)throw new Error("Composition unavailable for source access policy.");return Gy.parse(e.composition)}var Hs=2e3,Ws=12,Gs=24*1024*1024,ku=512*1024,ex=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),tx={".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"},nx={".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"},rx=new Wy("utf-8",{fatal:!0});async function zo(e,t={}){let n=Zs(t),{files:r,truncated:o}=await ux(e,t),i=px(r.map(s=>s.metadata));return Zy.parse({composition:n,nodes:i,defaultPath:mx(r.map(s=>s.metadata)),totalFiles:r.length,...o?{truncated:o}:{}})}async function Ho(e,t,n={}){let r=Zs(n),o=Xo.parse(t.path),i=await ix(e,o,n);if(!i)throw new Error(`Source file not found: ${o}`);if(qs(o)){let a=Pu(o),c=await ax(e,{path:o,sizeBytes:i.sizeBytes,mimeType:a});return zs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:a,readonly:!0,...c})}let s=await Qs(e,o);return s.ok?zs.parse({composition:r,path:o,kind:"text",language:Au(o),sizeBytes:s.sizeBytes,contentHash:ke(s.content),readonly:!1,content:s.content}):zs.parse({composition:r,path:o,kind:"binary",language:null,sizeBytes:s.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function Qs(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=ox(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 ox(e){if(e.includes(0))return null;try{return rx.decode(e)}catch{return null}}async function ix(e,t,n){if(!cx(t,n))return null;let r=await sx(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function sx(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=wu(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(qs(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function ax(e,t){if(!ex.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>ku)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>ku?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function cx(e,t){return Ru.some(n=>n===e)||Iu.some(n=>n===e)||Cu.some(n=>e===n||e.startsWith(`${n}/`))?!0:!e.startsWith("app/")&&!e.startsWith("src/app/")?!1:(t.routeEntryFiles??[]).some(n=>{let r=Xo.safeParse(n);return r.success&&r.data===e})}function Wo(e,t){if(!t.sourceLocator)throw new Error(`Source location not available for key: ${e.key}`);return Yy.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 wu(e){return Array.isArray(e)?{files:e}:e}function lx(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function ux(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=wu(await e.listFiles({roots:dx(t),maxFiles:Hs+1,maxDepth:Ws,maxTotalBytes:Gs+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=Xo.safeParse(a.path);if(!c.success)continue;let l=c.data;if(l.split("/").length>Ws){o.add("max-depth");continue}if(r.size>=Hs){o.add("max-files");break}if(i+a.sizeBytes>Gs){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:fx(l,a.sizeBytes,Zs(t))}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:lx([...o]),maxFiles:Hs,maxDepth:Ws,maxTotalBytes:Gs}}:{}}}function dx(e){let t=new Set(qy);for(let n of e.routeEntryFiles??[]){let r=Xo.safeParse(n);r.success&&(r.data.startsWith("app/")||r.data.startsWith("src/app/"))&&t.add(r.data)}return[...t]}function fx(e,t,n){return qs(e)?{composition:n,path:e,kind:"binary",language:null,sizeBytes:t,mimeType:Pu(e),readonly:!0}:{composition:n,path:e,kind:"text",language:Au(e),sizeBytes:t,readonly:!1}}function px(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 Nu(t)}function Nu(e){return e.map(t=>t.kind==="directory"?{...t,children:Nu(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function mx(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 qs(e){return!Qy(e)}function Pu(e){let t=Ys.posix.extname(e).toLowerCase();return!t&&Ys.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":tx[t]??"application/octet-stream"}function Au(e){let t=Ys.posix.extname(e).toLowerCase();return nx[t]??"plaintext"}import ea from"@babel/traverse";import*as At from"@babel/types";function Me(e){if(e.isJSXFragment())return!0;if(!e.isJSXElement())return!1;let t=e.node.openingElement.name;if(At.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(At.isIdentifier(s)&&s.name==="Fragment"||At.isStringLiteral(s)&&s.value==="Fragment")&&Tu(i.parentPath)}if(!At.isJSXMemberExpression(t)||!At.isJSXIdentifier(t.property)||t.property.name!=="Fragment"||!At.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 rn=typeof ea=="function"?ea:ea.default,Go=new WeakMap,Yo=new WeakMap;function Tt(e,t){let n=$s(e,t);if(!n.ok)return js(e,n.diagnostic.code,n.diagnostic.message,t.kind);let r=se(n.ast,t);return r.ok?{ok:!0,match:{locatorKind:r.match.locatorKind,node:r.match.node,start:r.match.start,end:r.match.end}}:js(e,r.diagnostic.code,r.diagnostic.message,t.kind,r.diagnostic.details)}function se(e,t){return t.kind==="jsx-node"?Ou(e,t):t.kind==="jsx-attribute"?Sx(e,t):t.kind==="value"?Ex(e,t):t.kind==="expression"?vx(e,t):t.kind==="directive"?kx(e,t):t.kind==="export"?Ix(e,t):{ok:!1,diagnostic:En("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function Ou(e,t){return t.strategy==="source-range"?gx(e,t):hx(e,t)}function gx(e,t){let n=null;if(rn(e,{JSXElement(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);if(i){if(!n){n=i;return}i.end-i.start<n.end-n.start&&(n=i)}},JSXFragment(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXExpressionContainer(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXText(o){if(!Rn(o.node,t.sourceRange))return;let i=De("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)}}),!n)return Be("jsx-node","locator-miss","JSX node not found for source-range locator");let r=n;return t.expectedIdentity&&!Lx(r.path,t.expectedIdentity)?Be("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function hx(e,t){if(t.structuralPath===""){let r=xx(e,t.component);if(r){let o=bx(r);if(o)return o}}let n=null;return rn(e,{JSXElement(r){if(Rr(r)!==t.component||na(r)!==t.structuralPath)return;let i=De("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(Rr(r)!==t.component||na(r)!==t.structuralPath)return;let i=De("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=yx(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:Be("jsx-node","locator-miss","JSX node not found for structural-path locator")}function yx(e,t,n){let r=null;return rn(e,{JSXElement(o){if(Rr(o)!==t||!Rn(o.node,n))return;let i=De("jsx-node",o);i&&(r=i,o.stop())},JSXFragment(o){if(Rr(o)!==t||!Rn(o.node,n))return;let i=De("jsx-node",o);i&&(r=i,o.stop())}}),r}function xx(e,t){let n=null;return rn(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 bx(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 Be("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}return null}return(t.isParenthesizedExpression()?t.get("expression"):t).isJSXFragment()?Be("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 Be("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}}}return null}function Sx(e,t){let n=Ou(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>Dx(c,t.name));if(!s||!s.isJSXAttribute())return Be("jsx-attribute","locator-miss",`JSX attribute '${t.name}' not found`);let a=De("jsx-attribute",s);return a?{ok:!0,match:a}:Be("jsx-attribute","locator-miss",`JSX attribute '${t.name}' has no source range`)}function Ex(e,t){let n=Cx(e,t);if(!n.ok)return n;let r=Rx(n.match.path,t.path??[]);return r.ok?t.expectedRange&&!zt(r.match.path.node.loc,t.expectedRange)?Be("value","locator-miss","Resolved value does not match expected range"):{ok:!0,match:r.match}:r}function vx(e,t){let n=null;return rn(e,{Identifier(r){if(!Fx(r))return;let o=_u(r);if(!o||!Mu(o,t))return;let i=De("expression",r);i&&(t.expectedRange&&!zt(r.node.loc,t.expectedRange)||(n=i,r.stop()))},MemberExpression(r){let o=_u(r);if(!o||!Mu(o,t))return;let i=De("expression",r);i&&(t.expectedRange&&!zt(r.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Be("expression","locator-miss","Expression not found")}function kx(e,t){let n=null;return rn(e,{Program(r){let i=r.get("directives").find(a=>a.node.value.value===t.value);if(!i||t.expectedRange&&!zt(i.node.loc,t.expectedRange))return;let s=De("directive",i);s&&(n=s,r.stop())}}),n?{ok:!0,match:n}:Be("directive","locator-miss",`Directive '${t.value}' not found`)}function Ix(e,t){let n=null;return rn(e,{ExportNamedDeclaration(r){if(t.exportKind==="generate-metadata"){let c=r.get("declaration");if(c.isFunctionDeclaration()&&c.node.id?.name==="generateMetadata"){let m=De("export",c);if(!m||t.expectedRange&&!zt(c.node.loc,t.expectedRange))return;n=m,r.stop();return}if(!c.isVariableDeclaration())return;let l=ra(c,"generateMetadata");if(!l||!l.isVariableDeclarator())return;let u=l.get("init");if(!u.node)return;let f=De("export",u);if(!f||t.expectedRange&&!zt(u.node.loc,t.expectedRange))return;n=f,r.stop();return}let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=ra(o,t.exportKind==="named"?t.name:"metadata");if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node||t.expectedRange&&!zt(s.node.loc,t.expectedRange))return;let a=De("export",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(t.exportKind!=="default")return;let o=r.get("declaration"),i=De("export",o);i&&(t.expectedRange&&!zt(o.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Be("export","export-not-found",`Export '${Ox(t)}' not found`)}function Cx(e,t){let n=null;return rn(e,{Expression(r){if(n||t.root.kind!=="expression"||!Rn(r.node,t.root.sourceRange))return;let o=De("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=De("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=De("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=ra(o,t.root.name);if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node)return;let a=De("value",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(n||t.root.kind!=="default-export")return;let o=r.get("declaration"),i=De("value",o);i&&(n=i,r.stop())}}),n?{ok:!0,match:n}:Be("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 Rx(e,t){let n=ta(e);for(let o of t){if(n=ta(n),o.kind==="property"){if(!n.isObjectExpression())return Be("value","unsupported-syntax","Property path requires object expression");let a=n.get("properties");if(a.some(l=>!l.isObjectProperty()))return Be("value","unsupported-syntax","Spread properties are not supported");let c=a.find(l=>Bx(l,o.name));if(!c||!c.isObjectProperty())return Be("value","property-not-found",`Property '${o.name}' not found`);n=c.get("value");continue}if(!n.isArrayExpression())return Be("value","unsupported-syntax","Array index path requires array expression");let i=n.get("elements");if(i.some(a=>a.node?.type==="SpreadElement"))return Be("value","unsupported-syntax","Spread array elements are not supported");let s=i[o.index];if(!s?.node)return Be("value","array-index-out-of-range",`Array index ${o.index} is out of range`);n=s}n=ta(n);let r=De("value",n);return r?{ok:!0,match:r}:Be("value","locator-miss","Resolved value has no source range")}function ta(e){let t=e;for(;t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression();)t=t.get("expression");return t}function De(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 Rn(e,t){return zt(e.loc,t)}function zt(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 na(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!Me(n)){let o=Du(n.node.openingElement);o&&(/^[A-Z]/.test(o)?t.unshift(`component:${o}#${Fu(n,o)}`):t.unshift(`${o}#${Fu(n,o)}`))}}else n.isJSXFragment()&&n.node===r&&t.unshift("fragment");if(!n.parentPath||Ax(n.parentPath)&&!Tx(n.parentPath))break;n=n.parentPath}return t.join("/")}function Fu(e,t){let n=Lu(e)??e.getFunctionParent();if(!n)return 0;let r=Go.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=0,i=Go.get(n.node)?.get(t);if(!i){let a=Go.get(n.node);a||(a=new Map,Go.set(n.node,a)),i=new WeakMap,a.set(t,i)}let s=n.isJSXElement()||n.isJSXFragment()?Cr(n):wx(n);for(let a of s)if(Du(a.node.openingElement)===t){if(i.set(a.node,o),a.node===e.node)return o;o++}return i.get(e.node)??0}function wx(e){let t=Yo.get(e.node);if(t)return t;let n=[];return e.traverse({JSXElement(r){r.getFunctionParent()?.node===e.node&&!Lu(r)&&n.push(r)}}),Yo.set(e.node,n),n}function Lu(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Me(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function Cr(e){let t=Yo.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(Me(o)){n.push(...Cr(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...Cr(o));continue}o.isJSXExpressionContainer()&&n.push(...Xt(o.get("expression")))}return Yo.set(e.node,n),n}function Xt(e){if(e.isJSXElement())return Me(e)?Cr(e):[e];if(e.isJSXFragment())return Cr(e);if(e.isParenthesizedExpression())return Xt(e.get("expression"));if(e.isLogicalExpression()&&Nx(e.node.operator))return Xt(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(...Xt(c))}if(s.isReturnStatement()){let a=s.get("argument");a.isExpression()&&i.push(...Xt(a));break}}return i}else if(o.node&&o.isExpression())return Xt(o)}}}}return e.isConditionalExpression()?[...Xt(e.get("consequent")),...Xt(e.get("alternate"))]:e.isArrayExpression()?e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Xt(t)):[]}function Nx(e){return e==="&&"||e==="||"||e==="??"}function Du(e){return e.name.type==="JSXIdentifier"?e.name.name:e.name.type==="JSXMemberExpression"?Px(e.name):null}function Px(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 Rr(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 Ax(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function Tx(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 Fx(e){return!(!e.isExpression()||e.parentPath?.isMemberExpression({property:e.node}))}function _u(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 Mu(e,t){return e.base===t.base&&_x(e.path,t.path??[])}function _x(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 Mx(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function Ox(e){return e.exportKind==="named"?e.name:e.exportKind}function Be(e,t,n,r){return{ok:!1,diagnostic:En(t,n,e,r)}}function Lx(e,t){return Rr(e)!==t.component?!1:na(e)===t.structuralPath}function Dx(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function ra(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function Bx(e,t){return e.isObjectProperty()?Mx(e.node)===t:!1}import*as ju from"@babel/parser";import{arrayExpression as Ux,booleanLiteral as Jx,identifier as Xx,jsxAttribute as zx,jsxExpressionContainer as Hx,jsxIdentifier as Wx,nullLiteral as Gx,numericLiteral as Yx,objectExpression as Zx,objectProperty as Qx,stringLiteral as ia}from"@babel/types";import oa from"@babel/generator";var jx=typeof oa=="function"?oa:oa.default;function $x(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 Vx(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 Kx(e,t){return e.split(`
|
|
3
|
+
`).map(r=>Vx(r,t)).join(`
|
|
4
|
+
`)}function Zo(e){let{ast:t,source:n}=e;try{let r=$x(n),i=jx(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=Kx(i,r)),{ok:!0,source:i}}catch(r){return J(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}function Bu(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 wr(e,t,n){return{ok:!0,source:t,operation:{type:n.kind,nodeId:n.target,kind:n.kind,target:n.target,beforeSourceHash:Bu(e),afterSourceHash:Bu(t),inverse:n.inverse}}}function he(e,t,n){let r=Zo({ast:e,source:t});return r.ok?wr(t,r.source,n):r}function we(e,t){let n=kr(e,t);return n.ok?{ok:!0,ast:n.ast}:{ok:!1,result:{ok:!1,source:e,diagnostic:n.diagnostic}}}function Qo(e,t){return Zo({ast:e,source:t})}function qx(e,t,n){let r=se(e,t);return r.ok?{ok:!0,match:r.match}:{ok:!1,result:{ok:!1,source:n,diagnostic:r.diagnostic}}}function Hn(e,t,n){let r=qx(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 on(e){return typeof e=="string"?ia(e):typeof e=="number"?Yx(e):typeof e=="boolean"?Jx(e):e===null?Gx():Array.isArray(e)?Ux(e.map(t=>on(t))):Zx(Object.entries(e).map(([t,n])=>{let r=Qx(sa(t),on(n));return t==="__proto__"&&(r.computed=!0),r}))}function eb(e){return typeof e=="string"?ia(e):Hx(on(e))}function Nr(e,t){return zx(Wx(e),eb(t))}function qo(e,t){try{let r=ju.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 sa(e){return/^[$A-Z_][0-9A-Z_$]*$/i.test(e)?Xx(e):ia(e)}function ei(e){let{source:t,locator:n,segmentIndex:r,newText:o}=e,i=we(t,"jsx-node");if(!i.ok)return i.result;let s=se(i.ast,n);if(!s.ok)return{ok:!1,source:t,diagnostic:s.diagnostic};let c=tb(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=nb(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 he(i.ast,t,{kind:"update-text",target:"jsx-node",inverse:"restore-text"})}function tb(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=rb(r.get("expression"));o.length>0&&t.push(...o)}}return t}function nb(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function rb(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 aa}from"@babel/types";function Wn(e){let{source:t,locator:n}=e,r=we(t,"jsx-node");if(!r.ok)return r.result;let o=se(r.ast,n);return o.ok?(ob(o.match.path),he(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function ob(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(aa());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(aa());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(aa());return}e.remove()}import{cloneNode as ib}from"@babel/types";function ti(e){let t=we(e.source,"jsx-node");if(!t.ok)return t.result;let n=se(t.ast,e.locator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};let r=qo(e.source,e.node.jsx);return r.ok?(n.match.path.replaceWith(ib(r.node,!0)),he(t.ast,e.source,{kind:"replace-node",target:"jsx-node",inverse:"replace-node"})):r.result}import{cloneNode as hb}from"@babel/types";import ca from"@babel/traverse";import*as Q from"@babel/types";function Pr(e,t,n){return`${e}::${t}::${n}`}var K={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 sb=typeof ca=="function"?ca:ca.default;function mt(e,t,n,r){if(!e.ok)return e;let o=pt(n,t);if(!o)return e;let i=ab(t,o,r);return i?{...e,selectionRef:i}:e}function ab(e,t,n){let r=cb(e,t);if(!r)return;let o=n.sourceLocator?$u(n.sourceLocator):void 0,i=n.targetParentLocator?$u(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??ub(r)??i?.component??o?.component;if(!(!s||!a))return{key:Pr(s,a,db(r))}}function $u(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function cb(e,t){let n=zu(e,t);return!n||n.node.type!=="JSXElement"?null:n}function zu(e,t){let n=null;return sb(e,{JSXElement(r){r.node===t&&(n=r,r.stop())},JSXFragment(r){r.node===t&&(n=r,r.stop())}}),n}function pt(e,t){if(!e)return null;if(Q.isJSXElement(e))return gb(t,e)?Vu(e.children,t):e;if(Q.isJSXFragment(e))return Vu(e.children,t);if(Q.isJSXExpressionContainer(e)||Q.isParenthesizedExpression(e)||Q.isTSAsExpression(e)||Q.isTSSatisfiesExpression(e)||Q.isTSTypeAssertion(e)||Q.isTSNonNullExpression(e))return pt(e.expression,t);if(Q.isLogicalExpression(e))return pt(e.right,t);if(Q.isConditionalExpression(e))return pt(e.consequent,t)??pt(e.alternate,t);if(Q.isCallExpression(e)||Q.isOptionalCallExpression(e))return Hu(e)?lb(e.arguments[0],t):null;if(Q.isArrayExpression(e))for(let n of e.elements){if(!n)continue;let r=pt(n,t);if(r)return r}return null}function Vu(e,t){for(let n of e){let r=pt(n,t);if(r)return r}return null}function lb(e,t){return!e||!Q.isArrowFunctionExpression(e)&&!Q.isFunctionExpression(e)?null:Q.isBlockStatement(e.body)?Ar(e.body.body,t):pt(e.body,t)}function Ar(e,t){for(let n of e){if(Q.isReturnStatement(n)){let r=pt(n.argument,t);if(r)return r;continue}if(Q.isBlockStatement(n)){let r=Ar(n.body,t);if(r)return r;continue}if(Q.isIfStatement(n)){let r=Ku(n.consequent,t);if(r)return r;let o=n.alternate?Ku(n.alternate,t):null;if(o)return o;continue}if(Q.isSwitchStatement(n))for(let r of n.cases){let o=Ar(r.consequent,t);if(o)return o}}return null}function Ku(e,t){return Q.isBlockStatement(e)?Ar(e.body,t):Ar([e],t)}function ub(e){let t=e;for(;t;){if(t.isFunctionDeclaration()||t.isClassDeclaration())return t.node.id?.name??null;if(t.isExportDefaultDeclaration()){let n=t.node.declaration;if(Q.isFunctionDeclaration(n))return n.id?.name??"default"}if(t.isVariableDeclarator()&&Q.isIdentifier(t.node.id)){let n=t.get("init");if(!Array.isArray(n)&&(n.isArrowFunctionExpression()||n.isFunctionExpression()))return t.node.id.name}t=t.parentPath}return null}var Uu=new WeakMap,Ju=new WeakMap,la=new WeakMap;function db(e){let t=Uu.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=fb(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return Uu.set(e.node,o),o}function fb(e){let t=Wu(e.node.openingElement.name);return!t||Me(e)?null:/^[A-Z]/.test(t)?`component:${t}#${Xu(e,t)}`:`${t}#${Xu(e,t)}`}function Xu(e,t){let n=pb(e);if(!n)return 0;let r=la.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=la.get(n.node);o||(o=new Map,la.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0;for(let a of wn(n))if(Wu(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 pb(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Me(t)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function wn(e){let t=Ju.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(Me(o)){n.push(...wn(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...wn(o));continue}o.isJSXExpressionContainer()&&n.push(...Ft(o.get("expression")))}return Ju.set(e.node,n),n}function Ft(e){if(e.isJSXElement())return Me(e)?wn(e):[e];if(e.isJSXFragment())return wn(e);if(e.isParenthesizedExpression())return Ft(e.get("expression"));if(e.isLogicalExpression())return Ft(e.get("right"));if(e.isConditionalExpression())return[...Ft(e.get("consequent")),...Ft(e.get("alternate"))];if(e.isArrayExpression())return e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:Ft(t));if((e.isCallExpression()||e.isOptionalCallExpression())&&Hu(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?mb(n):[]}return[]}function mb(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return Me(t)?wn(t):[t];if(t.isJSXFragment())return wn(t);if(t.isParenthesizedExpression())return Ft(t.get("expression"));if(t.isLogicalExpression()||t.isConditionalExpression())return Ft(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(...Ft(s))}if(!r.isReturnStatement())continue;let o=r.get("argument");return o.node&&n.push(...Ft(o)),n}return n}function Hu(e){let t=e.callee;return(Q.isMemberExpression(t)||Q.isOptionalMemberExpression(t))&&Q.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function gb(e,t){let n=zu(e,t);return n?Me(n):!1}function Wu(e){return Q.isJSXIdentifier(e)?e.name:Q.isJSXMemberExpression(e)?Gu(e):Q.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function Gu(e){return`${Q.isJSXIdentifier(e.object)?e.object.name:Gu(e.object)}.${e.property.name}`}function sn(e,t){if(t.parentPath===e&&t.listKey==="children"&&ua(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!ua(n))return null;let r=n;for(;r&&r!==e;){if(!ua(r)||!Me(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function ua(e){return e.isJSXElement()||e.isJSXFragment()}function Gn(e){let{source:t,locator:n,node:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=we(t,"jsx-node");if(!a.ok)return a.result;let c=se(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};if(!c.match.path.isJSXElement()&&!c.match.path.isJSXFragment())return J(t,"unsupported-syntax","insert-child target must be a JSXElement or JSXFragment","jsx-node");let l=c.match.path;if(c.match.path.isJSXElement()){let v=c.match.path.node;if(!v.closingElement||v.openingElement.selfClosing)return J(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=qo(t,r.jsx);if(!u.ok)return u.result;let f=hb(u.node,!0),m=l.node.children,d={...s,targetParentLocator:n},g=v=>s?mt(v,a.ast,f,d):v;if(o==="append")return m.push(f),g(he(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return m.unshift(f),g(he(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(!i)return J(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let h=se(a.ast,i);if(!h.ok)return{ok:!1,source:t,diagnostic:h.diagnostic};let S=sn(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,y=E.findIndex(v=>v===h.match.path.node);return y===-1?J(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?y:y+1,0,f),g(he(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"})))}import*as Yu from"@babel/parser";import{cloneNode as yb}from"@babel/types";function ni(e){let{source:t,locator:n,expression:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=we(t,"jsx-node");if(!a.ok)return a.result;let c=xb(t,r);if(!c.ok)return c.result;let l=se(a.ast,n);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return J(t,"unsupported-syntax","insert-jsx-expression-child target must be a JSXElement or JSXFragment","jsx-node");if(l.match.path.isJSXElement()){let E=l.match.path.node;if(!E.closingElement||E.openingElement.selfClosing)return J(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=l.match.path,f=null;if(i){let E=se(a.ast,i);if(!E.ok)return{ok:!1,source:t,diagnostic:E.diagnostic};let y=sn(l.match.path,E.match.path);if(!y)return J(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=y,f=E.match.path.node}else if(o==="before"||o==="after")return J(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=yb(c.node,!0),d=u.node.children,g={...s,targetParentLocator:n},h=E=>s?mt(E,a.ast,m,g):E;if(o==="append")return d.push(m),h(he(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return d.unshift(m),h(he(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(he(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"})))}function xb(e,t){try{let r=Yu.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 bb,nullLiteral as da}from"@babel/types";import*as an from"@babel/types";import*as Zu from"@babel/types";function Tr(e,t){let n=e.parentPath;if(!n?.isConditionalExpression()||e.key!=="consequent"||!Zu.isNullLiteral(n.node.alternate))return e;let r=n.parentPath;return!r?.isJSXExpressionContainer()||r.parentPath?.node!==t.node||r.listKey!=="children"?e:r}function Yn(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=we(t,"jsx-node");if(!a.ok)return a.result;let c=se(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};let l=se(a.ast,r);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return J(t,"unsupported-syntax","move-node target parent must be a JSXElement or JSXFragment","jsx-node");let 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=se(a.ast,i);if(!v.ok)return{ok:!1,source:t,diagnostic:v.diagnostic};let C=v.match.path.isJSXElement()?Tr(v.match.path,l.match.path):v.match.path,N=sn(l.match.path,C);if(!N)return J(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=N,f=C}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()?Tr(c.match.path,l.match.path):c.match.path,g=bb(d.node,!0);if(!an.isJSXElement(g)&&!an.isJSXExpressionContainer(g)&&!an.isJSXFragment(g)&&!an.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");Sb(d);let S=u.node.children,E={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return S.push(g),mt(Qo(a.ast,t),a.ast,g,E);if(o==="prepend")return S.unshift(g),mt(Qo(a.ast,t),a.ast,g,E);let y=m-(h!==-1&&h<m?1:0);return S.splice(o==="before"?y:y+1,0,g),mt(Qo(a.ast,t),a.ast,g,E)}function Sb(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(da());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(da());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(da());return}e.remove()}import*as Qu from"@babel/parser";import{cloneNode as Eb,nullLiteral as fa}from"@babel/types";function ri(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,repeatExpression:s,selectionContext:a}=e,c=we(t,"jsx-node");if(!c.ok)return c.result;let l=vb(t,s);if(!l.ok)return l.result;let u=se(c.ast,n);if(!u.ok)return{ok:!1,source:t,diagnostic:u.diagnostic};let f=se(c.ast,r);if(!f.ok)return{ok:!1,source:t,diagnostic:f.diagnostic};if(!f.match.path.isJSXElement()&&!f.match.path.isJSXFragment())return J(t,"unsupported-syntax","move-repeat-template-child target parent must be a JSXElement or JSXFragment","jsx-node");if(f.match.path.isJSXElement()){let v=f.match.path.node;if(!v.closingElement||v.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 v=se(c.ast,i);if(!v.ok)return{ok:!1,source:t,diagnostic:v.diagnostic};let C=sn(f.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");m=C,d=v.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=Eb(l.node,!0);kb(u.match.path);let S={...a,sourceLocator:n,targetParentLocator:r},E=g.children;if(o==="append")return E.push(h),mt(he(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),mt(he(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S);let y=E.findIndex(v=>v===d);return y===-1?J(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(E.splice(o==="before"?y:y+1,0,h),mt(he(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,h,S))}function vb(e,t){try{let r=Qu.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 kb(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(fa());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(fa());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(fa());return}e.remove()}import{SiteEditSetPropsParamsSchema as Ib,classifySiteEditPropertyName as Cb}from"@vcp-dev/contracts";import*as Zn from"@babel/types";function oi(e){let t=Ib.safeParse({kind:"set-props",scope:"selection",changes:e.changes});if(!t.success)return J(e.source,"unsupported-syntax","Invalid typed JSX property changes","jsx-node",{issues:t.error.issues});let n=we(e.source,"jsx-node");if(!n.ok)return n.result;let r=Hn(n.ast,e.locator,e.source);if(!r.ok)return r.result;for(let a of t.data.changes){let c=Cb(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(Zn.isJSXAttribute),s=new Map;for(let a of i){let c=Rb(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=Nr(a.name,a.value).value;c?c.value=l:o.attributes.push(Nr(a.name,a.value))}return he(n.ast,e.source,{kind:"set-props",target:"jsx-node",inverse:"set-props"})}function Rb(e){return Zn.isJSXIdentifier(e.name)?e.name.name:Zn.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import{SiteEditOperationParamsSchema as wb}from"@vcp-dev/contracts";import*as z from"@babel/types";var qu=["prefetch","replace","scroll","locale","onNavigate"],Nb=/^on(?:Click|DoubleClick|AuxClick|MouseDown|MouseUp|PointerDown|PointerUp|TouchStart|TouchEnd|KeyDown|KeyUp|ContextMenu)(?:Capture)?$/;function Pb(e){let t=e;for(;t;){if(t.isJSXElement()&&t.node.openingElement.attributes.some(n=>z.isJSXAttribute(n)&&z.isJSXIdentifier(n.name)&&Nb.test(n.name.name)))return!0;t=t.parentPath}return!1}function ii(e){let t=we(e.source,"jsx-node");if(!t.ok)return t.result;let n=Hn(t.ast,e.locator,e.source);if(!n.ok)return n.result;let r=wb.safeParse({kind:"set-link-target",scope:"selection",link:e.link,changes:e.changes});if(!r.success||r.data.kind!=="set-link-target")return Ht(e.source,"Invalid typed link-target changes");let o=n.match.path,i=o.node,s=i.openingElement,a=Lb(s.name);if(!a)return Ht(e.source,"Unsupported JSX link tag");if(s.attributes.some(z.isJSXSpreadAttribute))return Ht(e.source,"Link elements with spread props cannot be transformed safely");let c=new Map;for(let g of s.attributes){if(!z.isJSXAttribute(g))continue;let h=ma(g);if(!h)return Ht(e.source,"Unsupported JSX attribute name");let S=c.get(h)??[];S.push(g),c.set(h,S)}if([...c.values()].some(g=>g.length>1))return Ht(e.source,"Duplicate JSX attributes cannot be transformed safely");let l=c.get("href")?.[0];if(l&&!Ob(l))return Ht(e.source,"Dynamic link href cannot be transformed safely");let u=a==="a",f=u?null:Fb(o,s.name);if(!u&&!f)return Ht(e.source,"Only native anchors and imported next/link components are supported");if(e.link.kind==="none"&&Pb(o))return Ht(e.source,"A link with an active event handler in its JSX ancestry cannot become an inert anchor");let m=null;if(e.link.kind==="internal-route")if(f)m=a;else{let g=_b(t.ast,o);if(!g.ok)return Ht(e.source,g.reason);m=g.localName}if(f&&e.link.kind!=="internal-route"){let g=z.jsxIdentifier("a");s.name=g,i.closingElement&&(i.closingElement.name=z.jsxIdentifier("a")),Mb(t.ast,f,o)}else m&&u&&(s.name=z.jsxIdentifier(m),i.closingElement&&(i.closingElement.name=z.jsxIdentifier(m)));let d=new Set;return e.link.kind==="none"?(d.add("href"),d.add("target"),d.add("rel"),qu.forEach(g=>d.add(g))):(d.add("href"),e.link.kind==="native-link"&&qu.forEach(g=>d.add(g))),s.attributes=s.attributes.filter(g=>{if(!z.isJSXAttribute(g))return!0;let h=ma(g);return!h||!d.has(h)}),e.link.kind!=="none"&&s.attributes.push(z.jsxAttribute(z.jsxIdentifier("href"),z.stringLiteral(e.link.href))),Ab(s,e.changes),he(t.ast,e.source,{kind:"set-link-target",target:"jsx-node",inverse:"set-link-target"})}function Ab(e,t){for(let n of t){let r=e.attributes.find(s=>z.isJSXAttribute(s)&&ma(s)===n.name);if(n.operation==="remove"){e.attributes=e.attributes.filter(s=>s!==r);continue}let o=typeof n.value=="string"?z.stringLiteral(n.value):z.jsxExpressionContainer(pa(n.value)),i=z.jsxAttribute(z.jsxIdentifier(n.name),o);r&&z.isJSXAttribute(r)?r.value=i.value:e.attributes.push(i)}}function pa(e){return e===null?z.nullLiteral():typeof e=="string"?z.stringLiteral(e):typeof e=="number"?z.numericLiteral(e):typeof e=="boolean"?z.booleanLiteral(e):Array.isArray(e)?z.arrayExpression(e.map(t=>pa(t))):typeof e=="object"?z.objectExpression(Object.entries(e).map(([t,n])=>z.objectProperty(z.isValidIdentifier(t)?z.identifier(t):z.stringLiteral(t),pa(n)))):z.nullLiteral()}function Tb(e){return z.isImportDefaultSpecifier(e)||z.isImportSpecifier(e)&&e.importKind!=="type"&&(z.isIdentifier(e.imported,{name:"default"})||z.isStringLiteral(e.imported,{value:"default"}))}function ed(e){return!e.parentPath?.isImportDeclaration()||e.parentPath.node.importKind==="type"?!1:e.isImportDefaultSpecifier()||e.isImportSpecifier()&&e.node.importKind!=="type"&&(z.isIdentifier(e.node.imported,{name:"default"})||z.isStringLiteral(e.node.imported,{value:"default"}))}function Fb(e,t){if(!z.isJSXIdentifier(t))return null;let n=e.scope.getBinding(t.name);if(!n||!ed(n.path))return null;let r=n.path.parentPath;return!r?.isImportDeclaration()||r.node.source.value!=="next/link"?null:t.name}function _b(e,t){let n=e.program.body.filter(c=>z.isImportDeclaration(c)&&c.source.value==="next/link"&&c.importKind!=="type"),r=n[0],o=n.flatMap(c=>c.specifiers).find(Tb);if(o)return t.scope.getBinding(o.local.name)?.path.node!==o?{ok:!1,reason:"The next/link import is shadowed at the selected element"}:{ok:!0,localName:o.local.name};let i=t.scope.getProgramParent(),s=["Link","NextLink",...Array.from({length:20},(c,l)=>`NextLink${l+2}`)].find(c=>!i.hasBinding(c)&&!t.scope.hasBinding(c));if(!s)return{ok:!1,reason:"Cannot create an unshadowed runtime next/link import"};let a=z.importDefaultSpecifier(z.identifier(s));if(r)r.specifiers.unshift(a);else{let c=z.importDeclaration([a],z.stringLiteral("next/link")),l=0;for(;l<e.program.body.length&&z.isImportDeclaration(e.program.body[l]);)l+=1;e.program.body.splice(l,0,c)}return{ok:!0,localName:s}}function Mb(e,t,n){let r=n.scope.getProgramParent();r.crawl();let o=r.getBinding(t);if(!o||!ed(o.path)||o.referenced)return;let i=o.path.parentPath;if(!(!i?.isImportDeclaration()||i.node.source.value!=="next/link")&&(i.node.specifiers=i.node.specifiers.filter(s=>s!==o.path.node),i.node.specifiers.length===0)){let s=e.program.body.indexOf(i.node);s>=0&&e.program.body.splice(s,1)}}function Ob(e){return!e.value||z.isStringLiteral(e.value)}function Lb(e){return z.isJSXIdentifier(e)?e.name:null}function ma(e){return z.isJSXIdentifier(e.name)?e.name.name:null}function Ht(e,t){return J(e,"unsupported-syntax",t,"jsx-node")}import*as Ke from"@babel/types";import{classifySiteEditPropertyName as td}from"@vcp-dev/contracts";function si(e){let t=td(e.name),n=td(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(!nd(e.object))return J(e.source,"unsupported-syntax","Property binding object must be a single identifier","jsx-node");if(e.property.length===0)return J(e.source,"unsupported-syntax","Property binding requires a non-empty property name","jsx-node");let r=we(e.source,"jsx-node");if(!r.ok)return r.result;let o=Hn(r.ast,e.locator,e.source);if(!o.ok)return o.result;let i=o.match.path.node.openingElement,s=i.attributes.filter(l=>Ke.isJSXAttribute(l)&&Bb(l)===e.name);if(s.length>1)return J(e.source,"unsupported-syntax",`JSX attribute '${e.name}' has multiple sources`,"jsx-node");let a=Db(e.object,e.property),c=s[0];if(c)c.value=Ke.jsxExpressionContainer(a);else{let l=Nr(e.name,"");l.value=Ke.jsxExpressionContainer(a),i.attributes.push(l)}return he(r.ast,e.source,{kind:"set-property-binding",target:"jsx-node",inverse:"restore-property-binding"})}function Db(e,t){return nd(t)?Ke.memberExpression(Ke.identifier(e),Ke.identifier(t)):Ke.memberExpression(Ke.identifier(e),Ke.stringLiteral(t),!0)}function nd(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)}function Bb(e){return Ke.isJSXIdentifier(e.name)?e.name.name:Ke.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:null}import{getBindingIdentifiers as $b,identifier as Fr,importDeclaration as Vb,importDefaultSpecifier as Kb,importNamespaceSpecifier as Ub,importSpecifier as Jb,isImportDefaultSpecifier as rd,isImportNamespaceSpecifier as od,isImportSpecifier as id,stringLiteral as Xb}from"@babel/types";function Qn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(S=>!eS(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=Zb(r);if(!i.ok)return J(t,"unsupported-syntax",i.message);let s=we(t);if(!s.ok)return s.result;let{ast:a}=s,c=a.program,l=c.body.filter(S=>S.type==="ImportDeclaration"&&S.source.value===n),u=new Set(l.flatMap(S=>S.specifiers.flatMap(E=>{let y=tS(S,E);return y?[y]:[]}))),f=i.imports.filter(S=>!u.has(dd(S)));if(f.length===0)return wr(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let m=Qb(c.body),d=f.find(S=>m.has(ga(S)));if(d)return J(t,"unsupported-syntax",`Import local binding already exists: ${ga(d)}`);let g=Yb(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(!ld(ad(S)))return J(t,"unsupported-syntax","Unsupported import specifier combination");let E=l.find(y=>zb(y,S));if(E)Hb(E,S);else{let y=Vb(sd(S),Xb(n));qb(c.body,y),l.push(y)}}return he(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function zb(e,t){return e.importKind==="type"?!1:ld(Gb(Wb(e),ad(t)))}function Hb(e,t){let n=!1,r=new Set(e.specifiers.map(o=>ha(o)));for(let o of sd(t)){let i=ha(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return ud(e.specifiers),{changed:n}}function sd(e){let t=e.map(n=>{switch(n.kind){case"named":return Jb(n.local?Fr(n.local):Fr(n.imported),Fr(n.imported));case"default":return Kb(Fr(n.local));case"namespace":return Ub(Fr(n.local));default:return n}});return ud(t),t}function ad(e){let t=cd();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 Wb(e){let t=cd();for(let n of e.specifiers)rd(n)?t.defaultLocals.add(n.local.name):od(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function cd(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function Gb(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function ld(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function ud(e){let t=[...e.filter(n=>rd(n)),...e.filter(n=>od(n)),...e.filter(n=>id(n))];e.splice(0,e.length,...t)}function Yb(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 Zb(e){let t=new Map,n=new Map;for(let r of e){let o=dd(r);if(t.has(o))continue;let i=ga(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 Qb(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($b(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 qb(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 eS(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 dd(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 ga(e){return e.kind==="named"?e.local??e.imported:e.local}function tS(e,t){return e.importKind==="type"||id(t)&&t.importKind==="type"?null:ha(t)}function ha(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 qn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(u=>!rS(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=we(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 wr(t,t,{kind:"remove-import",target:"import",inverse:"add-import"});let l=a.body[c];return r.length===0?(a.body.splice(c,1),he(s,t,{kind:"remove-import",target:"import",inverse:"add-import"})):(l.specifiers=l.specifiers.filter(u=>!r.some(f=>nS(u,f))),l.specifiers.length===0&&a.body.splice(c,1),he(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function nS(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 rS(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 _r(e){let{source:t,locator:n,next:r}=e,o=ui(t,n);return o.ok?(o.path.replaceWith(on(r)),he(o.ast,t,{kind:"update-value",target:"value",inverse:"restore-value"})):o.result}function ai(e){let{source:t,locator:n,index:r,value:o}=e,i=ui(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,on(o)),he(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 ci(e){let{source:t,locator:n,index:r}=e,o=ui(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),he(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 li(e){let{source:t,locator:n,fromIndex:r,toIndex:o}=e,i=ui(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),he(i.ast,t,{kind:"move-array-element",target:"value",inverse:"move-array-element-back"})}function ui(e,t){let n=we(e,"value");if(!n.ok)return{ok:!1,result:n.result};let r=se(n.ast,t);return r.ok?{ok:!0,ast:n.ast,path:r.match.path}:{ok:!1,result:{ok:!1,source:e,diagnostic:r.diagnostic}}}import*as Xe from"@babel/types";function di(e){let t=we(e.source,"value");if(!t.ok)return t.result;let n=se(t.ast,e.objectLocator);if(!n.ok)return{ok:!1,source:e.source,diagnostic:n.diagnostic};if(!n.match.path.isObjectExpression())return J(e.source,"unsupported-syntax","Object property upsert requires an ObjectExpression parent","value");let r=n.match.path.node;if(r.properties.some(a=>Xe.isSpreadElement(a)||Xe.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=>Xe.isObjectProperty(a)&&oS(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"?Xe.unaryExpression("void",Xe.numericLiteral(0)):on(e.value.value),s=o[0];if(s)s.value=i,s.shorthand=!1;else{let a=Xe.objectProperty(sa(e.name),i);e.name==="__proto__"&&(a.computed=!0),r.properties.push(a)}return he(t.ast,e.source,{kind:"upsert-object-property",target:"value",inverse:"restore-object-property"})}function oS(e){return Xe.isIdentifier(e)?e.name:Xe.isStringLiteral(e)?e.value:Xe.isNumericLiteral(e)?String(e.value):null}import{isSiteEditRuntimeContainerTag as iS,isSiteEditRuntimeVoidElementTag as sS}from"@vcp-dev/contracts/site-edit-runtime-capability";function er(e){if(!e.composition)throw new Error("Composition unavailable for render source graph.");return e.composition}function aS(e,t,n){let r=er(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(C=>({kind:C.kind,message:C.reason})),a=i.isOpaque,l=o.parentKey===null&&i.componentName==="Page",u=i.tag.toLowerCase(),f=i.tag!==u,m=!f&&sS(u),d=f||iS(u),g=f&&i.childKeys.length>0&&!i.isPublicUiComponent,h=i.textSegments.length>0&&i.textSegments.some(C=>C.editable);m&&!s.some(C=>C.kind==="void-element")&&s.push({kind:"void-element",message:`Element '${i.tag}' is void: children cannot be inserted`}),!m&&!d&&!s.some(C=>C.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 fd(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,aS(r,e,t));return n}function ya(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:ke(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Key not found: ${e.key}`}]};let n=cS(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:ke(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:md(r),version:{documentVersion:e.route.graph.version,contentHash:ke(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:pd(e.route.source,o),valueRaw:s?pd(e.route.source,s):null,attrRange:md(o),diagnostics:[]}}function gd(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 cS(e,t){let n=Pt({source:e,profile:vn({filePath:t.sourceFile,source:e})});if(!n.ok)return null;let r=se(n.ast,{kind:"jsx-node",strategy:"structural-path",file:t.identity.file,component:t.identity.component,structuralPath:t.identity.structuralPath,expectedRange:lS(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function hd(e){let t=Pt({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 pd(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function md(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 lS(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function yd(){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 uS}from"node:crypto";import fi from"node:fs/promises";import xa from"node:path";import{setTimeout as dS}from"node:timers/promises";var fS={async mkdir(e,t){await fi.mkdir(e,t)},async writeFile(e,t,n){await fi.writeFile(e,t,n)},async rename(e,t){await fi.rename(e,t)},async rm(e,t){await fi.rm(e,t)}},pS=new Set(["EACCES","EBUSY","EPERM"]),mS=[10,20,40,80,160];async function gS(e,t,n){for(let r of mS)try{await e.rename(t,n);return}catch(o){if(!hS(o))throw o;await dS(r)}await e.rename(t,n)}function hS(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&pS.has(e.code)}async function pi(e,t,n=fS){let r=xa.dirname(e),o=xa.basename(e),i=xa.join(r,`.${o}.${process.pid}.${uS()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await gS(n,i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import ba from"@babel/traverse";import*as k from"@babel/types";import*as fe from"@babel/types";function _t(e,t={}){if(fe.isTSAsExpression(e)||fe.isTSSatisfiesExpression(e)||fe.isTSNonNullExpression(e)||fe.isTypeCastExpression(e)||fe.isParenthesizedExpression(e))return _t(e.expression,t);if(fe.isStringLiteral(e))return{status:"resolved",value:e.value};if(fe.isNumericLiteral(e))return Number.isFinite(e.value)?{status:"resolved",value:e.value}:{status:"unresolved"};if(fe.isBooleanLiteral(e))return{status:"resolved",value:e.value};if(fe.isNullLiteral(e))return{status:"resolved",value:null};if(fe.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(fe.isIdentifier(e))return e.name==="undefined"&&!t.resolveIdentifier?{status:"undefined"}:t.resolveIdentifier?.(e.name)??{status:"unresolved"};if(fe.isUnaryExpression(e)&&e.operator==="void"&&fe.isNumericLiteral(e.argument)&&e.argument.value===0)return{status:"undefined"};if(fe.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||fe.isSpreadElement(r))return{status:"unresolved"};let o=_t(r,t);if(o.status!=="resolved")return{status:"unresolved"};n.push(o.value)}return{status:"resolved",value:n}}if(fe.isObjectExpression(e)){let n=Object.create(null);for(let r of e.properties){if(!fe.isObjectProperty(r)||r.computed||!fe.isExpression(r.value))return{status:"unresolved"};let o=yS(r.key);if(o===null)return{status:"unresolved"};let i=_t(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 fe.isMemberExpression(e)||fe.isOptionalMemberExpression(e)?t.resolveMember?.(e)??{status:"unresolved"}:{status:"unresolved"}}function yS(e){return fe.isIdentifier(e)?e.name:fe.isStringLiteral(e)?e.value:fe.isNumericLiteral(e)?String(e.value):null}var xS=typeof ba=="function"?ba:ba.default;function Ye(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 bS(e){return/^[A-Z]/.test(e)}function Ia(e){let t=e.openingElement;return k.isJSXIdentifier(t.name)?t.name.name==="Fragment":k.isJSXMemberExpression(t.name)?t.name.property.name==="Fragment":!1}function nr(e){return k.isJSXFragment(e)}function bd(e){return k.isJSXIdentifier(e.name)?e.name.name:k.isJSXMemberExpression(e.name)?Sd(e.name):k.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function Sd(e){return k.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:k.isJSXMemberExpression(e.object)?`${Sd(e.object)}.${e.property.name}`:e.property.name}function SS(e){return e.split(".")[0]??e}function ES(e){let t=e;for(;t;){let n=t.node;if(k.isFunctionDeclaration(n)&&n.id||k.isVariableDeclarator(n)&&k.isIdentifier(n.id))return n.id.name;if(k.isExportDefaultDeclaration(n)){let r=n.declaration;if(k.isFunctionDeclaration(r)&&r.id)return r.id.name;if(k.isFunctionDeclaration(r)&&!r.id)return"default"}t=t.parentPath}return null}function vS(){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 kS(e){let t=new Map;for(let n of e.program.body){if(!k.isImportDeclaration(n))continue;let r=n.source.value;for(let o of n.specifiers)if(k.isImportDefaultSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"default"});else if(k.isImportNamespaceSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"*"});else if(k.isImportSpecifier(o)){let i=k.isIdentifier(o.imported)?o.imported.name:o.imported.value;t.set(o.local.name,{specifier:r,exportName:i})}}return t}function Wt(e,t=[]){if(k.isIdentifier(e))return t.push(e.name),t;if(k.isObjectPattern(e)){for(let n of e.properties)k.isObjectProperty(n)?Wt(n.value,t):k.isRestElement(n)&&Wt(n.argument,t);return t}if(k.isArrayPattern(e)){for(let n of e.elements)n&&(k.isRestElement(n)?Wt(n.argument,t):Wt(n,t));return t}return k.isAssignmentPattern(e)?(Wt(e.left,t),t):(k.isRestElement(e)&&Wt(e.argument,t),t)}function Et(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function Mr(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 IS(e,t,n){e.set(t,{resolved:!0,value:n})}function Ca(e,t){e.set(t,{resolved:!1})}function Ed(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 $e(e,t,n){if(k.isTSAsExpression(e)||k.isTSSatisfiesExpression(e)||k.isTSNonNullExpression(e)||k.isTypeCastExpression(e)||k.isParenthesizedExpression(e))return $e(e.expression,t,n);if(k.isLogicalExpression(e))return mi([$e(e.left,t,n),$e(e.right,t,n)]);if(k.isBinaryExpression(e))return mi([k.isExpression(e.left)?$e(e.left,t,n):null,k.isExpression(e.right)?$e(e.right,t,n):null]);if(k.isConditionalExpression(e))return mi([$e(e.consequent,t,n),$e(e.alternate,t,n)]);if(k.isTemplateLiteral(e))return mi(e.expressions.filter(k.isExpression).map(i=>$e(i,t,n)));if(k.isIdentifier(e))return{kind:"identifier",expression:e.name,base:e.name,path:[]};if(!k.isMemberExpression(e)&&!k.isOptionalMemberExpression(e))return null;let r=[],o=e;for(;k.isMemberExpression(o)||k.isOptionalMemberExpression(o);){if(o.computed)if(k.isNumericLiteral(o.property))r.unshift({kind:"index",index:o.property.value});else if(k.isStringLiteral(o.property))r.unshift({kind:"property",name:o.property.value});else if(n&&k.isExpression(o.property)){let i=cn(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(!k.isIdentifier(o.property))return null;r.unshift({kind:"property",name:o.property.name})}o=o.object}return k.isIdentifier(o)?{kind:r.some(i=>i.kind==="index")?"index-expression":"member-expression",expression:Et(e,t),base:o.name,path:r}:null}function mi(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 cn(e,t){if(k.isStringLiteral(e)||k.isNumericLiteral(e)||k.isBooleanLiteral(e))return e.value;if(k.isNullLiteral(e))return null;if(k.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(k.isIdentifier(e)){let n=Mr(e.name,t.valueScopes);return n.kind==="resolved"?n.value:void 0}if(k.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||k.isSpreadElement(r))return;let o=cn(r,t);if(o===void 0)return;n.push(o)}return n}if(k.isObjectExpression(e)){let n={};for(let r of e.properties){if(!k.isObjectProperty(r)||r.computed||!k.isExpression(r.value))return;let o=null;if(k.isIdentifier(r.key)?o=r.key.name:k.isStringLiteral(r.key)&&(o=r.key.value),!o)return;let i;if(r.shorthand){if(!k.isIdentifier(r.value))return;let s=Mr(r.value.name,t.valueScopes);if(s.kind!=="resolved")return;i=s.value}else i=cn(r.value,t);if(i===void 0)return;n[o]=i}return n}if(k.isMemberExpression(e)){let n=$e(e,"",t);if(!n)return;let r=Mr(n.base,t.valueScopes);if(r.kind!=="resolved")return;let o=Ed(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(k.isCallExpression(e))return kd(e,t)??void 0}function vd(e,t,n){let r=$e(e,n,t);if(!r)return k.isMemberExpression(e)||k.isBinaryExpression(e)||k.isLogicalExpression(e)||k.isConditionalExpression(e)||k.isCallExpression(e)?{value:Et(e,n),source:null}:null;let o=Mr(r.base,t.valueScopes),i=r.kind==="identifier"?o:o.kind==="resolved"?Ed(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 Sa(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:vS(),parentStack:[],valueScopes:i,importMap:o}}function va(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of Wt(o.id))Ca(n,s);if(!k.isIdentifier(o.id)||!o.init||!k.isExpression(o.init))continue;let i=cn(o.init,t);i!==void 0&&IS(n,o.id.name,i)}}function CS(e){let t=[];for(let n of e){if(k.isVariableDeclaration(n)){t.push(n);continue}k.isExportNamedDeclaration(n)&&n.declaration&&k.isVariableDeclaration(n.declaration)&&t.push(n.declaration)}return t}function RS(e,t,n){let r=[],o=0;for(let i of e)if(k.isJSXText(i)){let s=i.value.trim();s&&r.push({index:o++,value:s,sourceRange:Ye(i),editable:!0,source:null})}else if(k.isJSXExpressionContainer(i)&&k.isStringLiteral(i.expression))r.push({index:o++,value:i.expression.value,sourceRange:Ye(i),editable:!0,source:null});else if(k.isJSXExpressionContainer(i)&&k.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:Ye(i),editable:!0,source:null}):r.push({index:o++,value:Et(s,n),sourceRange:Ye(i),editable:!0,source:$e(s,n,t)})}else if(k.isJSXExpressionContainer(i)&&k.isExpression(i.expression)){let s=vd(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:Ye(i),editable:!0,source:s.source})}return r}function wS(e,t,n){let r=[];for(let[o,i]of e.attributes.entries()){if(!k.isJSXAttribute(i))continue;let s=PS(i.name);if(!s)continue;let a=Et(i,n);if(k.isStringLiteral(i.value)){r.push({name:s,value:i.value.value,sourceRange:Ye(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:Ye(i),source:null,syntaxKind:"boolean-shorthand",raw:a,order:o,resolution:{status:"resolved",value:!0},resolvedValue:!0});continue}if(k.isJSXExpressionContainer(i.value)&&k.isExpression(i.value.expression)){let c=cn(i.value.expression,t);if(s==="className"){let d=typeof c=="string"?c:c===void 0?kd(i.value.expression,t):null;if(d){r.push({name:s,value:d,sourceRange:Ye(i),source:null,resolvedValue:d,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:d}});continue}}let l=vd(i.value.expression,t,n);if(c!==void 0){r.push({name:s,value:LS(c),sourceRange:Ye(i),source:$e(i.value.expression,n,t),resolvedValue:c,syntaxKind:"expression",raw:a,order:o,resolution:{status:"resolved",value:c}});continue}let u=AS(i.value.expression,t),f=$e(i.value.expression,n,t),m=l?.value??Et(i.value.expression,n);r.push({name:s,value:u.status==="undefined"?"undefined":m,sourceRange:Ye(i),source:l?.source??f,syntaxKind:"expression",raw:a,order:o,resolution:u})}}return r}function NS(e,t,n){return e.attributes.flatMap((r,o)=>!k.isJSXSpreadAttribute(r)||!k.isExpression(r.argument)?[]:[{raw:Et(r.argument,n),sourceRange:Ye(r),order:o,source:$e(r.argument,n,t)}])}function PS(e){return k.isJSXIdentifier(e)?e.name:k.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function AS(e,t){return _t(e,{resolveIdentifier(n){let r=Mr(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=cn(n,t);return r===void 0?{status:"unresolved"}:{status:"resolved",value:r}}})}function kd(e,t){let n=tr(e,t);return n&&n.map(o=>o.trim()).filter(Boolean).join(" ")||null}function tr(e,t){if(k.isStringLiteral(e))return[e.value];if(k.isTemplateLiteral(e))return e.expressions.length>0?null:[e.quasis.map(n=>n.value.cooked??"").join("")];if(k.isNullLiteral(e))return[];if(k.isBooleanLiteral(e))return e.value?null:[];if(k.isIdentifier(e)||k.isMemberExpression(e)){if(k.isIdentifier(e)&&e.name==="undefined")return[];let n=cn(e,t);return typeof n=="string"?[n]:null}if(k.isConditionalExpression(e)){let n=tr(e.consequent,t),r=tr(e.alternate,t);return!n||!r?null:[...n,...r]}if(k.isLogicalExpression(e)){if(e.operator!=="&&")return null;let n=cn(e.left,t);return n===!1||n===null?[]:tr(e.right,t)}if(k.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||k.isSpreadElement(r))return null;let o=tr(r,t);if(!o)return null;n.push(...o)}return n}if(k.isObjectExpression(e)){let n=[];for(let r of e.properties){if(!k.isObjectProperty(r))return null;let o=FS(r.key);if(!o)return null;n.push(o)}return n}if(k.isCallExpression(e)){let n=TS(e.callee);if(!n||!["cn","clsx","twMerge"].includes(n))return null;let r=[];for(let o of e.arguments){if(!k.isExpression(o))return null;let i=tr(o,t);if(!i)return null;r.push(...i)}return r}return null}function TS(e){return k.isIdentifier(e)?e.name:k.isMemberExpression(e)&&k.isIdentifier(e.property)?e.property.name:null}function FS(e){return k.isIdentifier(e)?e.name:k.isStringLiteral(e)?e.value:null}function _S(e,t){let n=e.attributes.find(r=>k.isJSXAttribute(r)&&k.isJSXIdentifier(r.name)&&r.name.name===t);return!n||!k.isJSXAttribute(n)||!k.isJSXExpressionContainer(n.value)?null:n.value.expression}function MS(e,t){for(let n of t){let r=_S(e,n);if(r)return r}return null}function OS(e){return k.isJSXIdentifier(e.name)?e.name.name:null}function LS(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function DS(e){if(!k.isCallExpression(e)&&!k.isOptionalCallExpression(e))return null;let t=e.callee;return!k.isMemberExpression(t)&&!k.isOptionalMemberExpression(t)||!k.isIdentifier(t.property)||t.property.name!=="map"||t.computed||!k.isExpression(t.object)?null:{call:e,collection:t.object,callback:e.arguments[0]}}function Ea(e){return k.isArrowFunctionExpression(e)||k.isFunctionExpression(e)}function BS(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function jS(e){return e==="empty"||e==="emptyRender"||e==="loading"||e==="loadingRender"||e==="error"||e==="errorRender"||e==="fallback"||e==="headerRender"||e==="footerRender"}function xd(e,t,n,r){if(!e||!k.isExpression(e))return null;let o={kind:"repeat-template",collectionExpression:Et(e,n),collectionSource:$e(e,n,r)};if(t){let i=t.params[0],s=t.params[1];k.isIdentifier(i)&&(o.itemParamName=i.name),k.isIdentifier(s)&&(o.indexParamName=s.name)}return o}function Gt(e,t,n){if(!e)return[];if(k.isJSXElement(e)){if(Ia(e))return bi(e.children,t,n);let r=yi(e,t,n);return r?[r]:[]}return nr(e)?xi(e,t,n):k.isParenthesizedExpression(e)?Gt(e.expression,t,n):k.isExpression(e)?Si(e,t,n):[]}function gi(e,t,n){let r=new Map;for(let o of e.params)for(let i of Wt(o))Ca(r,i);t.valueScopes.push(r);try{if(!k.isBlockStatement(e.body))return Gt(e.body,t,n);let o=new Map;t.valueScopes.push(o);try{return Id(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function Id(e,t,n){let r=[];for(let o of e){if(k.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];if(i){va([o],t,i);for(let s of o.declarations)k.isIdentifier(s.id)&&(k.isJSXElement(s.init)||k.isJSXFragment(s.init))&&r.push(...Gt(s.init,t,n))}continue}r.push(...ka(o,t,n))}return r}function ka(e,t,n){if(k.isReturnStatement(e))return e.argument?Gt(e.argument,t,n):[];if(k.isBlockStatement(e))return Nn(e.body,t,n);if(k.isIfStatement(e)){let r=k.isBlockStatement(e.consequent)?Nn(e.consequent.body,t,n):ka(e.consequent,t,n),o=e.alternate?k.isBlockStatement(e.alternate)?Nn(e.alternate.body,t,n):ka(e.alternate,t,n):[];return[...r,...o]}if(k.isSwitchStatement(e))return Nn(e.cases.flatMap(r=>r.consequent),t,n);if(k.isTryStatement(e)){let r=Nn(e.block.body,t,n);return e.handler&&r.push(...Nn(e.handler.body.body,t,n)),e.finalizer&&r.push(...Nn(e.finalizer.body,t,n)),r}return[]}function Nn(e,t,n){let r=new Map;t.valueScopes.push(r);try{return Id(e,t,n)}finally{t.valueScopes.pop()}}function hi(e,t,n,r,o,i){o.length!==0&&e.regions.push({kind:t,ownerKey:n,childKeys:o,sourceRange:Ye(r),sourceCandidates:i&&i.length>0?i:void 0})}function $S(e,t,n,r){let o=MS(e.openingElement,["items","dataSource","data"]),i={key:t,tag:bd(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!k.isJSXAttribute(s))continue;let a=OS(s);if(!a||!k.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!k.isJSXEmptyExpression(c)){if(BS(a)&&Ea(c)){let l=gi(c,n,r),u=xd(o,c,r,n);hi(n,"repeat-region",t,s,l,u?[u]:void 0);continue}if(jS(a)){let l=Ea(c)?gi(c,n,r):Gt(c,n,r);hi(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!k.isJSXExpressionContainer(s)||!Ea(s.expression))continue;let a=gi(s.expression,n,r),c=xd(o,s.expression,r,n);hi(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function yi(e,t,n){let r=bd(e.openingElement);if(r==="Fragment"||Ia(e))return bi(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=bS(r),a;if(s){let C=t.ordinalTracker.getOrdinal(i,r);a=`component:${r}#${C}`}else{let C=t.ordinalTracker.getOrdinal(i,r);a=`${r}#${C}`}let c=o?t.elements.get(o.key)?.identity.structuralPath:void 0,l=c?`${c}/${a}`:a,u=Pr(t.file,t.componentName,l),f={file:t.file,component:t.componentName,structuralPath:l,key:u},m=s?"component-boundary":null,d=RS(e.children,t,n),g=wS(e.openingElement,t,n),h=NS(e.openingElement,t,n),S,E,y=!1;if(s){let C=t.importMap.get(r)??t.importMap.get(SS(r));C&&(S=C.specifier,E=C.exportName,y=kn(C.specifier,t.file))}let v={identity:f,tag:r,componentName:t.componentName,sourceFile:t.file,sourceRange:Ye(e),parentKey:i,childKeys:[],textSegments:d,attributes:g.length>0?g:void 0,attributeSpreads:h.length>0?h:void 0,boundaryKind:m,isOpaque:s,...y?{isPublicUiComponent:!0}:{},importedFrom:S,exportName:E};return t.elements.set(u,v),i&&t.elements.has(i)&&t.elements.get(i).childKeys.push(u),$S(e,u,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:u,tag:r}),VS(e.children,t,n),t.parentStack.pop()),u}function xi(e,t,n){return bi(e.children,t,n)}function bi(e,t,n){let r=[];for(let o of e)if(k.isJSXElement(o))if(Ia(o))r.push(...bi(o.children,t,n));else{let i=yi(o,t,n);i&&r.push(i)}else nr(o)?r.push(...xi(o,t,n)):k.isJSXExpressionContainer(o)&&r.push(...Si(o.expression,t,n));return r}function VS(e,t,n){for(let r of e)k.isJSXElement(r)?yi(r,t,n):nr(r)?xi(r,t,n):k.isJSXExpressionContainer(r)&&Si(r.expression,t,n)}function KS(e){return e==="&&"||e==="||"||e==="??"}function Si(e,t,n){if(k.isJSXEmptyExpression(e))return[];let r=DS(e);if(r){let o=r.call,i=t.parentStack[t.parentStack.length-1]??null,s=[],a=r.callback,c={kind:"repeat-template",collectionExpression:Et(r.collection,n),collectionSource:$e(r.collection,n,t)};if(k.isArrowFunctionExpression(a)||k.isFunctionExpression(a)){let u=a.params[0],f=a.params[1];k.isIdentifier(u)&&(c.itemParamName=u.name),k.isIdentifier(f)&&(c.indexParamName=f.name)}s.push(c);let l={kind:"repeat-region",ownerKey:i?.key??"",childKeys:[],sourceRange:Ye(o),sourceCandidates:s.length>0?s:void 0};return t.regions.push(l),(k.isArrowFunctionExpression(a)||k.isFunctionExpression(a))&&l.childKeys.push(...gi(a,t,n)),l.childKeys}if(k.isConditionalExpression(e)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:Et(e.test,n),conditionSource:$e(e.test,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Ye(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Gt(e.consequent,t,n)),s.childKeys.push(...Gt(e.alternate,t,n)),s.childKeys}if(k.isLogicalExpression(e)&&KS(e.operator)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:Et(e.left,n),conditionSource:$e(e.left,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Ye(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...Gt(e.right,t,n)),s.childKeys}if(k.isParenthesizedExpression(e))return Si(e.expression,t,n);if(k.isJSXElement(e)){let o=yi(e,t,n);return o?[o]:[]}return nr(e)?xi(e,t,n):[]}function US(e){let t=e.argument;return t&&(k.isExpression(t)||nr(t))?t:null}function Or(e,t){let n=[];for(let r of e){if(k.isReturnStatement(r)){let o=US(r);o&&n.push({argument:o,statement:r,condition:t});continue}if(k.isIfStatement(r)){let o=k.isBlockStatement(r.consequent)?r.consequent.body:[r.consequent];if(n.push(...Or(o,r.test)),r.alternate){let i=k.isBlockStatement(r.alternate)?r.alternate.body:[r.alternate];n.push(...Or(i,r.test))}continue}if(k.isSwitchStatement(r))for(let o of r.cases){let i=o.test?k.binaryExpression("===",r.discriminant,o.test):r.discriminant;n.push(...Or(o.consequent,i))}}return n}function Cd(e){return{routeId:e,rootKeys:[],elements:new Map,regions:[],fileIndex:new Map,version:1,diagnostics:[]}}function Rd(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=kS(r);xS(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(f){let m=ES(f);if(!m)return;let d=f.node,g=[];if(k.isArrowFunctionExpression(d))k.isExpression(d.body)||nr(d.body)?g=[{argument:d.body,statement:k.returnStatement(k.isExpression(d.body)?d.body:null)}]:k.isBlockStatement(d.body)&&(g=Or(d.body.body));else{let C=d.body;k.isBlockStatement(C)&&(g=Or(C.body))}if(g.length===0){f.skip();return}let h=new Map;va(CS(r.program.body),Sa(t,m,i,s,l,[h]),h);let S=new Map;for(let C of d.params)for(let N of Wt(C))Ca(S,N);let E=k.isBlockStatement(d.body)?d.body.body:[],y=g[0]?.statement??null;for(let C of E){if(y&&C===y)break;k.isVariableDeclaration(C)&&va([C],Sa(t,m,i,s,l,[h,S]),S)}let v=Sa(t,m,i,s,l,[h,S]);for(let C of g){let N=Gt(C.argument,v,n);for(let A of N)a.includes(A)||a.push(A);if(C.condition){let A={kind:"conditional-branch",conditionExpression:Et(C.condition,n),conditionSource:$e(C.condition,n,v)};hi(v,"conditional-region","",C.statement,N,[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 Ra(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function Ei(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function JS(e,t){if(e.length===0)return[];if(e.length===1)return[await t(e[0])];let n=new Array(e.length),r=0,o=Array.from({length:Math.min(8,e.length)},async()=>{for(;r<e.length;){let s=r++;n[s]=await t(e[s])}}),i=await Promise.allSettled(o);for(let s of i)if(s.status==="rejected")throw s.reason;return n}async function wd(e,t,n,r,o={}){let i=o.maxDepth??10,s=o.version??1,a=o.parseModule??Ut,c=new Map,l=new Map,u=new Map,f=[],m=new Set,d=E=>{let y=`${E.path}\0${E.code}\0${E.message}\0${JSON.stringify(E.details??{})}`;m.has(y)||(m.add(y),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:y,source:v,depth:C,diagnosticEntryFile:N,importStack:A}=E;if(h.has(y))continue;h.add(y),c.set(y,v);let R=a(y,v);if(!R.ok){d(Ei(R.diagnostic,N,A));continue}u.set(y,R.module);let{graph:F,localImports:_}=o.validationOnly&&C<i?{graph:Cd(y),localImports:R.module.imports.map(L=>L.specifier)}:Rd(R.module);for(let L of F.elements.values())if(L.importedFrom&&Nt(L.importedFrom)){let oe=L.importedFrom,me=await Oo(y,oe,r);me.ok?(L.importedFrom=me.path,Jt(me.path)&&(L.isPublicUiComponent=!0)):kn(oe,y)||d(Ei(me.diagnostic,N,Ra(A,y,oe,me.diagnostic.path)))}if(l.set(y,F),C>=i)continue;let D=await JS(_,async L=>{if(au(L))return null;let oe=await Oo(y,L,r);if(!oe.ok)return kn(L,y)?null:{diagnostic:Ei(oe.diagnostic,N,Ra(A,y,L,oe.diagnostic.path))};let me=oe.path;if(h.has(me)||Jt(me))return null;let ee=Ra(A,y,L,me);try{let ce=await n(me);return{entry:{file:me,source:ce,depth:C+1,diagnosticEntryFile:N,importStack:ee}}}catch(ce){return{diagnostic:Ei({path:me,code:"import-read-failed",message:`Failed to read imported file: ${me}`,details:{fromFile:y,specifier:L,reason:ce instanceof Error?ce.message:String(ce)}},N,ee)}}});for(let L of D)L&&"entry"in L?g.push(L.entry):L&&d(L.diagnostic)}let S=XS(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 XS(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 SE}from"@vcp-dev/contracts";import{createHash as zS,randomUUID as La}from"node:crypto";import Oe from"node:fs/promises";import Le from"node:path";var Dd=new WeakMap;function rr(e){return Dd.get(e)?.()??e.readIndex()}var gt=1,Na=1,HS=2,WS="index.json",GS="recovery.json",YS="transaction-journal.json",ZS="document-version.json",Ii={maxEntries:100,maxSessionBytes:512*1024*1024,maxEntryBytes:128*1024*1024},te={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"},re=class extends Error{constructor(t,n,r){super(n),this.name="FileHistoryStoreError",this.code=t,r?.cause!==void 0&&(this.cause=r.cause)}};function Yt(){return{entries:new Map,blobSizes:new Map}}function vi(e,t){let n={entries:new Map,blobs:new Map,objectBytes:0};for(let r of e)Bd(n,r,t);return n}function Bd(e,t,n){let r=e.entries.get(t);if(r){e.entries.set(t,{...r,references:r.references+1});return}let o=n.entries.get(t),i=new Map(o.entry.blobs.map(s=>[s.digest,n.blobSizes.get(s.digest)]));e.entries.set(t,{sizeBytes:o.sizeBytes,references:1,blobs:i}),e.objectBytes+=o.sizeBytes;for(let[s,a]of i){let c=e.blobs.get(s);e.blobs.set(s,{sizeBytes:a,references:(c?.references??0)+1}),c||(e.objectBytes+=a)}}function jd(e,t){let n=e.entries.get(t);if(n.references>1){e.entries.set(t,{...n,references:n.references-1});return}e.entries.delete(t),e.objectBytes-=n.sizeBytes;for(let r of n.blobs.keys()){let o=e.blobs.get(r);o.references>1?e.blobs.set(r,{...o,references:o.references-1}):(e.blobs.delete(r),e.objectBytes-=o.sizeBytes)}}async function $d(e,t={}){let n=mE(e),r=xE(t.limits),o=wa(n),i=gE(n),s=await nt(i),a=await nt(o)||s;a||(await sE(n),await aE(n)),a||await bE(n);let c=Yt(),l=await Ri(n,c),u=new Set(a?(await Ti(n)).map(y=>y.stageId):[]);a||await Fd(n,l.entryIds,c);let f=l.digest,m=vi(l.entryIds,c),d=async y=>{let{index:v,sizeBytes:C}=await $r(n);if(Hd(v,y),v.digest!==f){let N=Yt();await Jd(n,v.entryIds,N,C),m=vi(v.entryIds,N),f=v.digest}return{...Fi(v),totalBytes:m.objectBytes+C}},g=async y=>{Da(y),await d(),await Ad(n,m,[y.entryId],y.blobIds,y.stageId),await Ci(n,y.stageId)},h=async(y,v)=>{let C=await d(v);Kd(y,C.entryIds.length);let N=Yt();for(let A of C.entryIds.slice(Math.min(C.cursor,y)+1,Math.max(C.cursor,y)+1))await Dr(n,A,N);return C},S=async()=>{if(await nt(o)||s)throw new re(te.RECOVERY_PENDING,"history store requires explicit recovery before accepting writes")},E={rootDir:n,recoveryRequired:a,async readDocumentVersion(){return Od(n)},async writeDocumentVersion(y){if(await S(),!Number.isInteger(y)||y<0)throw new re(te.INVALID_SCHEMA,"document version must be a non-negative integer");let v=await Od(n);y<=v||await Lr(Zd(n),{schemaVersion:1,version:Math.max(v,y)})},async stageAppend(y,v={}){await S();let C=await eE(y,r),N={schemaVersion:Na,stageId:La(),entryId:C.entryId,blobIds:C.blobs.map(A=>A.digest)};try{await tE(n,C),await rE(n,N,v.durableManifest!==!1)}catch(A){try{await g(N)}catch(R){throw new re(te.INDEX_CORRUPT,"staged history cleanup failed after preparation error",{cause:R})}throw A}return{stageId:N.stageId,entryId:N.entryId,blobIds:N.blobIds}},async discardStage(y){await S(),Ta(y);let v=await Pa(n,y);v&&await g(v)},async previewStagedAppend(y,v){await S();let C=await d(v);return(await Nd(n,r,y,C,m)).transition},async previewCursor(y,v){await S();let C=await h(y,v);return Vd(C,C.entryIds,y)},async publishStagedAppend(y,v,C){if(await S(),Ni(y,"entryId"),C){Ta(C);let _=await Pa(n,C);if(!_||_.entryId!==y)throw new re(te.INVALID_SCHEMA,"history stage does not match the published entry")}let N=await d(v),A=m,R=await Nd(n,r,y,N,A),F=await Md({rootDir:n,previousDigest:R.current.digest,entryIds:R.entryIds,cursor:R.cursor,readback:async()=>_d(n,R.usage),afterWrite:async()=>{C?await Ci(n,C):await iE(n,y),await Ad(n,R.usage,[...A.entries.keys()].filter(_=>!R.usage.entries.has(_)),[...A.blobs.keys()].filter(_=>!R.usage.blobs.has(_)))}});return m=R.usage,f=F.digest,F},async append(y){await S();let v=await d(),C=await E.stageAppend(y);try{return await E.publishStagedAppend(C.entryId,v.digest,C.stageId)}catch(N){throw await E.discardStage(C.stageId),N}},async readEntry(y){return Ni(y,"entryId"),Dr(n,y)},async readBlob(y){Ni(y,"blobId");let v=await qd(n,y),C=await Br(v,te.NOT_FOUND,"blob");return Yd(C,y,v),C},async readIndex(){let y=Yt(),v=await Ri(n,y);return m=vi(v.entryIds,y),f=v.digest,v},async readStatus(){let y=await wi(n);return{canUndo:y.undoIds.length>0,canRedo:y.redoIds.length>0,undoDepth:y.undoIds.length,redoDepth:y.redoIds.length,cursor:y.cursor,recoveryRequired:await nt(o)||await nt(i)}},async readUndoRedoIds(){let y=await wi(n);return{undoIds:y.undoIds,redoIds:y.redoIds,currentId:y.currentId}},async setCursor(y,v){await S();let C=await h(y,v),N=await Md({rootDir:n,previousDigest:C.digest,entryIds:C.entryIds,cursor:y,readback:async()=>_d(n,m)});return f=N.digest,N},async markRecoveryRequired(y){await nt(o)||await Lr(wa(n),{schemaVersion:gt,reason:hE(y),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await Oe.rm(wa(n),{force:!0})},async readTransactionJournal(){return await nt(i)?ki(i):null},async writeTransactionJournal(y){await S(),Qd(y);try{await Lr(i,y)}catch(C){let N=await ki(i).catch(()=>null);if(N&&Buffer.from(rt(N)).equals(Buffer.from(rt(y))))return;throw N?new re(te.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous",{cause:C}):C}let v=await ki(i);if(!Buffer.from(rt(v)).equals(Buffer.from(rt(y))))throw new re(te.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous")},async clearTransactionJournal(y){let v=await nt(i)?await ki(i):null;if(v&&v.transactionId!==y)throw new re(te.INVALID_SCHEMA,"transaction journal changed concurrently");try{await Oe.rm(i,{force:!0})}catch(C){if(!await nt(i))return;throw C}if(await nt(i))throw new re(te.INDEX_CORRUPT,"transaction journal clear outcome is ambiguous");s=!1},async cleanupTmp(){await S();for(let C of u)await Ci(n,C),u.delete(C);await cE(n);let y=Yt(),v=await Ri(n,y);await Fd(n,v.entryIds,y),m=vi(v.entryIds,y),f=v.digest}};return Dd.set(E,()=>wi(n)),E}async function Nd(e,t,n,r,o){Ni(n,"entryId");let i=Yt(),s=await Dr(e,n,i),a={entries:new Map(o.entries),blobs:new Map(o.blobs),objectBytes:o.objectBytes},c=r.entryIds.slice(0,r.cursor+1);for(let u of r.entryIds.slice(r.cursor+1))jd(a,u);Bd(a,s.id,i),c.push(s.id);let l=nE(c,t,a);return{current:r,entryIds:l.entryIds,cursor:l.cursor,usage:a,transition:Vd(r,l.entryIds,l.cursor)}}function Vd(e,t,n){return Kd(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:QS(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function QS(e,t){return ln(rt({schemaVersion:gt,entryIds:e,cursor:t}))}function Kd(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new re(te.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function qS(e){if(!vt(e))return!1;let t=e.publishedCursor,n=e.publishedCurrentId;return!at(e.expectedIndexDigest)||!at(e.publishedIndexDigest)||!Number.isInteger(t)||t<-1||n!==null&&!at(n)?!1:t===-1?n===null:at(n)}async function eE(e,t){if(!e.kind.trim())throw new re(te.INVALID_JSON,"history entry kind must not be empty");let n=[],r=[];for(let c of e.blobs??[]){if(!c.name.trim())throw new re(te.INVALID_JSON,"history blob name must not be empty");let l=pE(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:gt,kind:e.kind,manifest:e.manifest,blobs:r},i=rt({...o}),s=ln(i),a=i.byteLength+n.reduce((c,l)=>c+l.sizeBytes,0);if(a>t.maxEntryBytes)throw new re(te.CAPACITY_EXCEEDED,`history entry exceeds maxEntryBytes (${a} > ${t.maxEntryBytes})`);return{entryBody:o,entryId:s,blobs:n}}async function tE(e,t){let n=Va(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Pd(Ka(e,a.digest),a.bytes,{kind:"blob",digest:a.digest},Ja(e,a.digest))),Pd(n,rt(r),{kind:"entry",digest:t.entryId},Ua(e,t.entryId))],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Pd(e,t,n,r){let o=await Ma(e)??(r?await Ma(r):null);if(o!==null){if(Buffer.compare(o,t)!==0)throw new re(n.kind==="blob"?te.BLOB_CORRUPT:te.ENTRY_CORRUPT,`${n.kind} content mismatch for ${n.digest}`);return}await Wd(e,t)}function nE(e,t,n){let r=[...e],o=r.length-1;for(;;){if(n.objectBytes+rt(zd(r,o)).byteLength<=t.maxSessionBytes&&r.length<=t.maxEntries)return{entryIds:r,cursor:o};if(o<=0||r.length===0)throw new re(te.CAPACITY_EXCEEDED,"history store exceeds capacity limits and the current entry cannot be trimmed");jd(n,r.shift()),o-=1}}async function rE(e,t,n){Da(t);let r=$a(e,t.stageId);if(n){await Lr(r,t);return}await fE(r,t)}async function Pa(e,t){let n=await Ma($a(e,t));if(n===null)return null;let r=Vr(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=Da(r);if(o.stageId!==t)throw new re(te.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function Ti(e){let t=[];for(let n of await Ai(ja(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);Ta(r);let o=await Pa(e,r);o&&t.push(o)}return t}async function Ad(e,t,n,r,o){if(n.length===0&&r.length===0)return;let i=new Set(t.entries.keys()),s=new Set;for(let a of await Ti(e))if(a.stageId!==o){i.add(a.entryId);for(let c of a.blobIds)s.add(c)}for(let a of new Set(n))i.has(a)||await Td(Va(e,a),Ua(e,a));for(let a of new Set(r))!t.blobs.has(a)&&!s.has(a)&&await Td(Ka(e,a),Ja(e,a));await Oa(Kr(e)),await Oa(Ur(e))}async function Ci(e,t){await Aa($a(e,t)),await oE(e)}async function oE(e){try{await Oe.rmdir(ja(e))}catch(t){if(Jr(t)||vt(t)&&t.code==="ENOTEMPTY")return;throw t}}async function iE(e,t){for(let n of await Ti(e))n.entryId===t&&await Ci(e,n.stageId)}async function Aa(e){if(await Oe.rm(e,{force:!0}),await nt(e))throw new re(te.INDEX_CORRUPT,`unable to remove staged history object: ${e}`)}async function Td(e,t){await Aa(e),await Aa(t)}function Da(e){if(!vt(e)||e.schemaVersion!==Na||typeof e.stageId!="string"||!Ud(e.stageId)||!at(e.entryId))throw new re(te.INVALID_SCHEMA,"history stage schema is invalid");let t=Gd(e.blobIds,"history stage blobIds");return{schemaVersion:Na,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function Ta(e){if(!Ud(e))throw new re(te.INVALID_PATH,"history stageId must be a UUID")}function Ud(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 Fd(e,t,n=Yt()){let r=new Set(t),o=new Set;for(let l of t){let u=await Dr(e,l,n);for(let f of u.blobs)o.add(f.digest)}for(let l of await Ti(e)){r.add(l.entryId);for(let u of l.blobIds)o.add(u)}let i=Kr(e),s=await Ai(i);for(let l of s){if(!l.endsWith(".json"))continue;let u=Ld(l.slice(0,-5));u&&!r.has(u)&&await Pi(Le.join(i,l))}let a=Ur(e),c=await Ai(a);for(let l of c){let u=Ld(l);u&&!o.has(u)&&await Pi(Le.join(a,l))}}async function Ri(e,t=Yt()){let{index:n,sizeBytes:r}=await $r(e),{totalBytes:o}=await Jd(e,n.entryIds,t,r);return{...Fi(n),totalBytes:o}}async function _d(e,t){let{index:n,sizeBytes:r}=await $r(e);return{...Fi(n),totalBytes:t.objectBytes+r}}async function $r(e){let t=Ba(e),n=await Br(t,te.NOT_FOUND,"index"),r=Vr(Buffer.from(n).toString("utf8"),"index");return{index:lE(r),sizeBytes:n.byteLength}}async function wi(e){return Fi((await $r(e)).index)}function Fi(e){let t=[...e.entryIds],n=t.slice(0,e.cursor+1).reverse(),r=t.slice(e.cursor+1);return{schemaVersion:gt,digest:e.digest,entryIds:t,cursor:e.cursor,currentId:t[e.cursor]??null,undoIds:n,redoIds:r}}async function Jd(e,t,n,r){let o=0,i=new Set;o+=r??(await $r(e)).sizeBytes;for(let s of new Set(t)){let a=await Dr(e,s,n);o+=n.entries.get(s).sizeBytes;for(let c of a.blobs)i.has(c.digest)||(i.add(c.digest),o+=n.blobSizes.get(c.digest))}return{totalBytes:o}}async function Dr(e,t,n=Yt()){let r=n.entries.get(t);if(r)return r.entry;let o=await yE(e,t),i=await Br(o,te.NOT_FOUND,"entry"),s=Vr(Buffer.from(i).toString("utf8"),`entry ${t}`),a=uE(s);if(a.id!==t)throw new re(te.ENTRY_CORRUPT,`entry id mismatch for ${t}`);if(ln(rt({schemaVersion:a.schemaVersion,kind:a.kind,manifest:a.manifest,blobs:a.blobs}))!==t)throw new re(te.ENTRY_CORRUPT,`entry hash mismatch for ${t}`);for(let l of a.blobs){if(n.blobSizes.has(l.digest))continue;let u=await qd(e,l.digest),f=await Br(u,te.NOT_FOUND,"blob");Yd(f,l.digest,u),n.blobSizes.set(l.digest,f.byteLength)}return n.entries.set(t,{entry:a,sizeBytes:i.byteLength}),a}async function Xd(e,t,n){await Lr(Ba(e),zd(t,n))}function zd(e,t){return{schemaVersion:gt,digest:ln(rt({schemaVersion:gt,entryIds:e,cursor:t})),entryIds:e,cursor:t}}function Hd(e,t){if(t!==void 0&&e.digest!==t)throw new re(te.INVALID_SCHEMA,`history index changed concurrently (expected ${t}, current ${e.digest})`)}async function Md(e){Hd(await wi(e.rootDir),e.previousDigest);let t=ln(rt({schemaVersion:gt,entryIds:e.entryIds,cursor:e.cursor}));try{await Xd(e.rootDir,e.entryIds,e.cursor),await e.afterWrite?.();let n=await e.readback();if(n.digest!==t)throw new re(te.INDEX_CORRUPT,"history index readback did not match the published transition");return n}catch(n){let r=await Ri(e.rootDir).catch(()=>null);if(r?.digest===t)return r;throw r?.digest===e.previousDigest?n:new re(te.INDEX_CORRUPT,"history index publish outcome is ambiguous",{cause:n})}}async function sE(e){await Oe.mkdir(e,{recursive:!0}),await Oe.mkdir(Kr(e),{recursive:!0}),await Oe.mkdir(Ur(e),{recursive:!0}),await Oe.mkdir(jr(e),{recursive:!0})}async function aE(e){await Oe.rm(jr(e),{recursive:!0,force:!0}),await Oe.mkdir(jr(e),{recursive:!0})}async function cE(e){let t=jr(e);await Oe.mkdir(t,{recursive:!0});for(let n of await Ai(t))n!=="stages"&&await Oe.rm(Le.join(t,n),{recursive:!0,force:!0})}function lE(e){if(!vt(e))throw new re(te.INDEX_CORRUPT,"index.json must be an object");if(e.schemaVersion!==gt)throw new re(te.INVALID_SCHEMA,`unsupported index schemaVersion: ${String(e.schemaVersion)}`);let t=Gd(e.entryIds,"index.entryIds"),n=e.cursor;if(!Number.isInteger(n)||n<-1||n>=t.length)throw new re(te.INDEX_CORRUPT,"index cursor is out of bounds");let r=n,o=e.digest;if(!at(o))throw new re(te.INDEX_CORRUPT,"index digest is invalid");let i=ln(rt({schemaVersion:gt,entryIds:t,cursor:r}));if(o!==i)throw new re(te.INDEX_CORRUPT,"index digest mismatch");return{schemaVersion:gt,digest:o,entryIds:t,cursor:r}}function uE(e){if(!vt(e))throw new re(te.ENTRY_CORRUPT,"entry must be an object");if(e.schemaVersion!==gt)throw new re(te.INVALID_SCHEMA,`unsupported entry schemaVersion: ${String(e.schemaVersion)}`);let t=e.id;if(!at(t))throw new re(te.ENTRY_CORRUPT,"entry id is invalid");let n=e.kind;if(typeof n!="string"||n.trim().length===0)throw new re(te.ENTRY_CORRUPT,"entry kind is invalid");let r=_a(e.manifest,"entry.manifest"),o=dE(e.blobs);return{id:t,schemaVersion:gt,kind:n,manifest:r,blobs:o}}function dE(e){if(!Array.isArray(e))throw new re(te.ENTRY_CORRUPT,"entry blobs must be an array");return e.map((t,n)=>{if(!vt(t))throw new re(te.ENTRY_CORRUPT,`entry blob ref ${n} must be an object`);let r=t.name;if(typeof r!="string"||r.trim().length===0)throw new re(te.ENTRY_CORRUPT,`entry blob ref ${n} name is invalid`);let o=t.digest;if(!at(o))throw new re(te.ENTRY_CORRUPT,`entry blob ref ${n} digest is invalid`);let i=t.sizeBytes;if(!Number.isInteger(i)||i<0)throw new re(te.ENTRY_CORRUPT,`entry blob ref ${n} sizeBytes is invalid`);return{name:r,digest:o,sizeBytes:i}})}async function Lr(e,t){await Wd(e,rt(t))}async function fE(e,t){let n=Le.dirname(e),r=Le.basename(e),o=Le.join(n,`.${r}.${process.pid}.${La()}.tmp`);await Oe.mkdir(n,{recursive:!0});try{await Oe.writeFile(o,rt(t),{flag:"wx"}),await Oe.rename(o,e)}finally{await Pi(o)}}async function Wd(e,t){let n=Le.dirname(e),r=Le.basename(e),o=Le.join(n,`.${r}.${process.pid}.${La()}.tmp`);await Oe.mkdir(n,{recursive:!0});try{let i=await Oe.open(o,"wx");try{await i.writeFile(t),await i.sync()}finally{await i.close()}await Oe.rename(o,e),await Oa(n)}finally{await Pi(o)}}function rt(e){return Buffer.from(JSON.stringify(Fa(e)),"utf8")}function Fa(e){if(Array.isArray(e))return e.map(t=>Fa(t));if(vt(e)){let t={};for(let n of Object.keys(e).sort())t[n]=Fa(e[n]);return t}return e}function Vr(e,t){try{return JSON.parse(e)}catch(n){throw new re(te.INVALID_JSON,`${t} is not valid JSON`,{cause:n})}}function _a(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=>_a(n,t));if(vt(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=_a(o,t);return n}break}throw new re(te.INVALID_JSON,`${t} must be JSON-serializable`)}function Gd(e,t){if(!Array.isArray(e))throw new re(te.INDEX_CORRUPT,`${t} must be an array`);return e.map((n,r)=>{if(!at(n))throw new re(te.INDEX_CORRUPT,`${t}[${r}] is invalid`);return n})}function Ni(e,t){if(!at(e))throw new re(te.INVALID_PATH,`${t} must be a sha256 digest`)}function at(e){return typeof e=="string"&&/^sha256:[a-f0-9]{64}$/u.test(e)}function ln(e){return`sha256:${zS("sha256").update(e).digest("hex")}`}function pE(e){return typeof e=="string"?Buffer.from(e,"utf8"):Buffer.from(e)}async function Br(e,t,n){try{return await Oe.readFile(e)}catch(r){throw new re(t,`${n} not found: ${e}`,{cause:r})}}async function Ma(e){try{return await Oe.readFile(e)}catch(t){if(Jr(t))return null;throw t}}function Yd(e,t,n){if(ln(e)!==t)throw new re(te.BLOB_CORRUPT,`blob hash mismatch for ${n}`)}async function nt(e){try{return await Oe.access(e),!0}catch(t){if(Jr(t))return!1;throw t}}async function Pi(e){try{await Oe.rm(e,{force:!0,recursive:!0})}catch{}}async function Oa(e){try{let t=await Oe.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function Ai(e){try{return await Oe.readdir(e)}catch(t){if(Jr(t))return[];throw t}}function mE(e){if(typeof e!="string"||e.trim().length===0)throw new re(te.INVALID_ROOT,"history store rootDir must be a non-empty string");return Le.resolve(e)}function Ba(e){return Le.join(e,WS)}function wa(e){return Le.join(e,GS)}function gE(e){return Le.join(e,YS)}function Zd(e){return Le.join(e,ZS)}async function Od(e){try{let t=await Oe.readFile(Zd(e),"utf8"),n=Vr(t,"document version");if(!vt(n)||n.schemaVersion!==1||!Number.isInteger(n.version)||n.version<0)throw new re(te.INVALID_SCHEMA,"document version schema is invalid");return n.version}catch(t){if(Jr(t))return 0;throw t}}async function ki(e){let t=await Br(e,te.RECOVERY_PENDING,"transaction journal"),n=Vr(Buffer.from(t).toString("utf8"),"transaction journal");return Qd(n),n}function Qd(e){if(!vt(e)||e.schemaVersion!==HS||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!qS(e.historyTransition)||!Array.isArray(e.files))throw new re(te.INVALID_SCHEMA,"transaction journal schema is invalid");for(let t of e.files)if(!vt(t)||typeof t.path!="string"||t.path.length===0||t.preDigest!==null&&!at(t.preDigest)||t.postDigest!==null&&!at(t.postDigest))throw new re(te.INVALID_SCHEMA,"transaction journal file digest is invalid")}function hE(e){return e.replace(/[\r\n]+/g," ").slice(0,512)}function Kr(e){return Le.join(e,"entries")}function Ur(e){return Le.join(e,"blobs")}function jr(e){return Le.join(e,"tmp")}function ja(e){return Le.join(jr(e),"stages")}function $a(e,t){return Le.join(ja(e),`${t}.json`)}function Va(e,t){return Le.join(Kr(e),`${tf(t)}.json`)}function Ka(e,t){return Le.join(Ur(e),tf(t))}function Ua(e,t){return Le.join(Kr(e),`${t}.json`)}function Ja(e,t){return Le.join(Ur(e),t)}async function yE(e,t){return ef(Va(e,t),Ua(e,t))}async function qd(e,t){return ef(Ka(e,t),Ja(e,t))}async function ef(e,t){return await nt(e)?e:await nt(t)?t:e}function tf(e){return e.slice(7)}function Ld(e){let t=e.startsWith("sha256:")?e:`sha256:${e}`;return at(t)?t:null}function vt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Jr(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function xE(e){return{maxEntries:e?.maxEntries??Ii.maxEntries,maxSessionBytes:e?.maxSessionBytes??Ii.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??Ii.maxEntryBytes}}async function bE(e){let t=Ba(e);await nt(t)||await Xd(e,[],-1)}var EE={affectedCompositions:[]};function af(e){let t=null,n=new WeakMap;async function r(){return t??=vE(e),t}async function o(i){if(!i)return null;let s=Xa(i);return s?kE(e,s):i}return{async prepareAppend(i){let s=await rr(e),a=await e.stageAppend(of(i),{durableManifest:!1}),c;try{c=await e.previewStagedAppend(a.entryId,s.digest)}catch(u){throw await e.discardStage(a.stageId),u}let l={kind:"append",entry:i,historyTransition:c};return n.set(l,{expectedDigest:s.digest,stageId:a.stageId,entryId:a.entryId}),l},async prepareUndo(){let i=await r(),s=await o(i.undo.at(-1));if(!s?.historyId)return null;let a=await rr(e),c=a.entryIds.indexOf(s.historyId);if(c<0)throw new Error("undo entry is missing from index");if(c!==a.cursor)throw new Error("undo state changed before prepare");let l=c-1,u=await e.previewCursor(l,a.digest),f={kind:"undo",entry:s,historyTransition:u};return n.set(f,{expectedDigest:a.digest,cursor:l}),f},async prepareRedo(){let i=await r(),s=await o(i.redo.at(-1));if(!s?.historyId)return null;let a=await rr(e),c=a.entryIds.indexOf(s.historyId);if(c<0)throw new Error("redo entry is missing from index");if(c!==a.cursor+1)throw new Error("redo state changed before prepare");let l=c,u=await e.previewCursor(l,a.digest),f={kind:"redo",entry:s,historyTransition:u};return n.set(f,{expectedDigest:a.digest,cursor:l}),f},async publishPrepared(i){let s=n.get(i);if(!s)throw new Error("history mutation was not prepared");let a=await r();if(i.kind==="append"){if(!s.entryId)throw new Error("staged entry id is missing");let c=await e.publishStagedAppend(s.entryId,s.expectedDigest,s.stageId);nf(c,i.historyTransition),i.entry.historyId=s.entryId,Object.assign(a,or(c))}else{if(s.cursor===void 0)throw new Error("prepared cursor is missing");let c=i.kind==="undo"?a.undo:a.redo;if(Xa(c.at(-1))!==Xa(i.entry))throw new Error("history state changed before publish");let l=await e.setCursor(s.cursor,s.expectedDigest);nf(l,i.historyTransition),Object.assign(a,or(l))}n.delete(i)},async discardPrepared(i){let s=n.get(i);if(!s)return;let a=i.historyTransition;if(a){let c=await rr(e);if(c.digest===a.publishedIndexDigest&&c.cursor===a.publishedCursor&&c.currentId===a.publishedCurrentId)throw new Error("cannot discard a history mutation whose index was published")}s.stageId&&await e.discardStage(s.stageId),n.delete(i)},async peekUndo(){return o((await r()).undo.at(-1))},async pushUndo(i){let s=await r(),a=i;if(a.historyId){let u=s.entryIds.indexOf(a.historyId);if(u>=0)try{let f=await e.setCursor(u);Object.assign(s,or(f));return}catch(f){throw s.redo.push(i),f}}let c=await e.append(of(i)),l=c.currentId;if(!l)throw new Error("history store did not publish an entry");i.historyId=l,Object.assign(s,or(c))},async popUndo(){let i=await r(),s=await o(i.undo.at(-1));return i.undo.pop(),s},async peekRedo(){return o((await r()).redo.at(-1))},async pushRedo(i){let s=await r(),a=i;if(!a.historyId)throw s.undo.push(i),new Error("cannot move an unpersisted history entry to redo");let c=s.entryIds.indexOf(a.historyId);if(c<0)throw s.undo.push(i),new Error("history entry is missing from the durable index");try{let l=await e.setCursor(c-1);Object.assign(s,or(l))}catch(l){throw s.undo.push(i),l}},async popRedo(){let i=await r(),s=await o(i.redo.at(-1));return i.redo.pop(),s},async clearRedo(){(await r()).redo.length=0},async getStatus(){let i=await e.readStatus();return{canUndo:i.canUndo,canRedo:i.canRedo,undoDepth:i.undoDepth,redoDepth:i.redoDepth,recoveryRequired:i.recoveryRequired}},async markRecoveryRequired(i){await e.markRecoveryRequired(i)}}}function nf(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")}function Xa(e){return typeof e=="string"?e:e?.historyId}async function vE(e){let t=await rr(e);return or(t)}function or(e){return{undo:[...e.undoIds].reverse(),redo:[...e.redoIds].reverse(),entryIds:[...e.entryIds],cursor:e.cursor}}async function kE(e,t){let n=await e.readEntry(t),r=IE(n),o=r.provenance??EE;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 rf(e,n,r.preSnapshots),postSnapshots:await rf(e,n,r.postSnapshots)}}async function rf(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(wE(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function of(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=CE(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 IE(e){if(!lf(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:cf(t.provenance)}:{},preSnapshots:sf(t.preSnapshots,"preSnapshots"),postSnapshots:sf(t.postSnapshots,"postSnapshots")}}function CE(e){if(e.provenance!==void 0)return cf(e.provenance);if(e.composition)return{initiatingComposition:e.composition,affectedCompositions:[]}}function cf(e){let t=SE.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 sf(e,t){return e.map((n,r)=>{if(!lf(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&&!RE(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 RE(e){return/^sha256:[0-9a-f]{64}$/.test(e)}function wE(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function lf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{randomBytes as KE}from"node:crypto";import Mi from"node:path";import{parse as bf}from"@babel/parser";import UE from"@babel/traverse";import*as Sf from"@babel/types";import{COMPONENT_I18N_FILE_SUFFIX as Ha,PageResourceArtifactSchema as JE,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as XE,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as zE,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as HE,parseComponentI18nResourcesJson as WE}from"@vcp-dev/contracts";var df=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,ff=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,NE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke)-\[#(?:[0-9a-fA-F]{3,8})\](?:\/\d+)?/g,PE=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*#[0-9a-fA-F]{3,8}[^'"]*['"]/g,AE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,TE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,FE=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,_E=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*(?:oklch|lab|lch|hsla?)\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,ME=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*(?:oklch|lab|lch|hsla?)\([^)]+\)[^'"]*['"]/gi,OE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*color-mix\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,LE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*color-mix\([^'"]*['"]/gi,DE=/\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,BE=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,jE=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function Xr(e,t){let n=_i([...ht(e,NE),...ht(e,PE),...ht(e,AE),...ht(e,t.includeRgbBackgroundImage?TE:FE),...t.includeExtendedColorFunctions?[...ht(e,_E),...ht(e,ME)]:[]]),r=_i([...ht(e,OE),...ht(e,LE)]).filter(o=>t.colorMixPolicy==="always"||df.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...ht(e,DE).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...ht(e,jE).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:_i(ht(e,ff)),hardCodedSurfaceOccurrences:VE(e),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?_i(ht(e,BE)):[]}}function ht(e,t){return e.match(new RegExp(t.source,t.flags))??[]}var uf=160,$E=/((?:[a-z][a-z0-9-]*(?:\[[^\]]*\])?:)+)$/;function VE(e){let t=new RegExp(ff.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=$E.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>uf?`${d.slice(0,uf-1)}\u2026`:d})}return o}function _i(e){return[...new Set(e)]}var Wa="{{$INSTANCE}}",GE=/\{\{\$PAGE_ROUTE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,YE=/\{\{\$PAGE_TITLE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,Ga="components/site/generated",ZE=/\.(?:tsx?|json)$/,QE=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,qE=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],ev=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),za=UE,tv=typeof za=="function"?za:za.default;async function Ya(e){let t=JE.safeParse(e.artifact);if(!t.success)return Te("Page resource artifact failed contract validation.");let n=t.data,r=e.randomHex??(()=>KE(4).toString("hex")),o=Math.max(1,Math.min(e.maxAttempts??5,5)),i=uv(r());if(!i)return Te("Random instance suffix must be 8 lowercase hex chars.");let s=`${dv(n.resource_id)}-${i}`,a=new Map,c=new Map,l=[];for(let v of n.pages){let C=v.final_route.slice(1);a.set(v.template_page_id,v.final_route),c.set(v.template_page_id,v.title),l.push({template_page_id:v.template_page_id,title:v.title,final_route:v.final_route,route_file_path:`app/${C}/page.tsx`})}let u=[],f=new Set,m=new Set,d=new Map,g=new Map,h=[],S=new Set(n.pages.flatMap(v=>v.components.map(C=>C.component_id)));for(let v of n.components){if(!S.has(v.component_id))continue;let C=pf({materialization:v.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c});if(!C.ok)return C;for(let N of C.files){let A=gf(N,f,u);if(A)return A}m.add(C.entry),g.set(C.entry,C.entryExport),d.set(v.component_id,C.entry)}for(let[v,C]of n.pages.entries()){let N=l[v],A=pf({materialization:C.materialization,packageInstanceId:s,routeByPage:a,titleByPage:c,pageEntryTarget:N.route_file_path,pageTitle:N.title});if(!A.ok)return A;for(let R of A.files){let F=gf(R,f,u);if(F)return F}m.add(A.entry),g.set(A.entry,A.entryExport),h.push({entry:A.entry,declaredComponentIds:new Set(C.components.map(R=>R.component_id))})}let E=rv(u,m,s,d,h,g);if(!E.ok)return E;for(let v of u)if(await e.exists(v.file))return!v.file.startsWith("app/")&&o>1?Ya({...e,randomHex:r,maxAttempts:o-1}):{ok:!1,code:"MATERIALIZATION_CONFLICT",message:`Page resource create-only target already exists: ${v.file}`,path:v.file};let y=ov(u);return y||(u.sort((v,C)=>v.file.localeCompare(C.file)),{ok:!0,packageInstanceId:s,pages:l,files:u})}function pf(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:mf(o.pathTemplate,e.packageInstanceId);if(!s)return Te("Materialization path cannot be mapped into the package namespace.",o.pathTemplate);let a=nv(o.content,e.packageInstanceId,e.routeByPage,e.titleByPage);if(!a.ok)return a;let c=i&&e.pageTitle!==void 0?sv(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??mf(t,e.packageInstanceId);return!r||!n.some(o=>o.file===r)?Te("Materialization entry must match one controlled source file.",t):{ok:!0,files:n,entry:r,entryExport:e.materialization.entry.export}}function nv(e,t,n,r){let o,i=e.replace(GE,(c,l)=>{let u=n.get(l);return u||(o=l,c)});if(o)return Te(`Page route placeholder references unknown template page: ${o}`);let s=i.replace(YE,(c,l)=>{let u=r.get(l);return u?JSON.stringify(u):(o=l,c)});if(o)return Te(`Page title placeholder references unknown template page: ${o}`);let a=s.replaceAll(Wa,t);return a.includes("{{$PAGE_ROUTE:")||a.includes("{{$PAGE_TITLE:")||a.includes("{{$INSTANCE}}")?Te("Materialization contains an unresolved placeholder."):{ok:!0,data:a}}function mf(e,t){let n=`${Ga}/${t}`;if(e.split(Wa).length>2)return null;let o=e.replace(Wa,t),i=`${Ga}/${t}/`,s=o.startsWith(i)?o:`${n}/${o}`,a=Mi.posix.normalize(s);return a!==s||!a.startsWith(`${n}/`)||!ZE.test(a)||QE.test(a)?null:a}function gf(e,t,n){return t.has(e.file)?Te(`Page resource materializations resolve duplicate target: ${e.file}`,e.file):(t.add(e.file),n.push(e),null)}function rv(e,t,n,r,o,i){let s=new Set(e.map(d=>d.file)),a=`${Ga}/${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 Te("Materialization JSON file must contain valid JSON.",d.file)}if(d.file.endsWith(Ha)&&!WE(d.content).success)return Te("Materialization component i18n resources are invalid.",d.file);continue}try{let h=bf(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 y=E.source.value,v=cv(d.file,y,s,a);if(!v.allowed)return Te(`Materialization import is outside the controlled package: ${y}`,d.file);v.internalPath&&c.get(d.file).add(v.internalPath)}let S;if(tv(h,{Identifier(E){E.isReferencedIdentifier()&&ev.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 Te(`Materialization source uses forbidden capability: ${S}`,d.file)}catch{return Te("Materialization source must parse as TS/TSX.",d.file)}let g=Xr(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 Te("Materialization source violates the public theme token policy.",d.file)}if([...t].some(d=>!s.has(d)))return Te("Materialization entry is outside the controlled package.");for(let d of t)if(d.endsWith(".json"))return Te("Materialization JSON files cannot be package entries.");for(let[d,g]of i){let h=l.get(d);if(!h||!iv(h,g))return Te("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=xf(d.entry,c);for(let h of d.declaredComponentIds){let S=r.get(h);if(!S||!g.has(S))return Te(`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 Te(`Page entry imports undeclared component: ${S}`,d.entry)}}let f=new Set;for(let d of t)for(let g of xf(d,c))f.add(g);if(f.size!==e.length)return Te("Every materialization file must be reachable from a package entry.");let m=lv(e,l,c);return m||{ok:!0}}function ov(e){if(e.length>XE)return Te("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>zE)return Te("Page resource file exceeds the content byte limit.",n.file);t+=r}return t>HE?Te("Page resource exceeds the aggregate content byte limit."):null}function iv(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 sv(e,t,n){let r;try{r=bf(e,{sourceType:"module",sourceFilename:n,plugins:["jsx","typescript"]})}catch{return Te("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=hf(s.init);if(a?.type!=="ObjectExpression")return{ok:!0,data:e};let c=a.properties.find(u=>u.type==="ObjectProperty"&&!u.computed&&av(u.key));if(!c||c.type!=="ObjectProperty")return{ok:!0,data:e};let l=hf(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"?{ok:!0,data:e}:{ok:!0,data:e.slice(0,l.start)+JSON.stringify(t)+e.slice(l.end)}:{ok:!0,data:e}}}return{ok:!0,data:e}}function hf(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression"||t?.type==="TSNonNullExpression";)t=t.expression;return t&&Sf.isExpression(t)?t:null}function av(e){return e.type==="Identifier"&&e.name==="title"||e.type==="StringLiteral"&&e.value==="title"}function cv(e,t,n,r){if(t.startsWith(`@/${r}/`)){let s=t.slice(2),a=yf(s,n);return a?{allowed:!0,internalPath:a}:{allowed:!1}}if(!t.startsWith("."))return{allowed:qE.some(s=>s.endsWith("/")?t.startsWith(s):t===s)};if(t.includes("\\")||t.includes("\0"))return{allowed:!1};let o=Mi.posix.normalize(Mi.posix.join(Mi.posix.dirname(e),t)),i=yf(o,n);return i&&(i.startsWith(`${r}/`)||i.startsWith("app/"))?{allowed:!0,internalPath:i}:{allowed:!1}}function yf(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 lv(e,t,n){let r=new Set(e.map(o=>o.file));for(let o of e){if(!o.file.endsWith(Ha))continue;let i=o.file.slice(0,-Ha.length),s=[`${i}.tsx`,`${i}.ts`].find(u=>r.has(u));if(!s)return Te("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 Te("Component i18n resources must have exactly one same-name Client Component static importer.",s)}return null}function xf(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 uv(e){return/^[a-f0-9]{8}$/.test(e)?e:null}function dv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"page-resource"}function Te(e,t){return{ok:!1,code:"MATERIALIZATION_REJECTED",message:e,...t?{path:t}:{}}}import{randomBytes as fv}from"node:crypto";import Zt from"node:path";import{parse as pv}from"@babel/parser";import mv from"@babel/traverse";import{COMPONENT_I18N_FILE_SUFFIX as Oi,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as Ef,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as gv,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as hv,SiteEditMaterializationSchema as yv,parseComponentI18nResourcesJson as xv}from"@vcp-dev/contracts";var qa="components/site/generated",vf="{{$INSTANCE}}",Li=5,bv=/^[a-z][a-z0-9-]{0,48}$/,Sv=/^[a-f0-9]{8}$/,kf=/\.tsx?$/,Ev=/\.json$/,vv=/\.(?:tsx?|json)$/,kv=/^(?:@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9][a-z0-9._~-]*$/,Iv=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,Cv=["react","react/","next","next/","lucide-react","react-i18next","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],Za=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),Qa=mv,Rv=typeof Qa=="function"?Qa:Qa.default;function wv(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>Ef)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=Bv(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=yv.safeParse(e.manifest);if(!r.success)return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab manifest failed schema validation."}};let o=Ov(e.generatedRoot);if(!o)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Generated root must be ${qa}.`,path:e.generatedRoot}};if(!Pf(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=Rf(r.data.files),s=Rf(e.controlledFiles);if(!jv(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>Ef)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>gv)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>hv?{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 Nv(e){let t=wv(e);if(!t.ok)return t;let n=Object.keys(e.manifest.projectDependencies??{}),r=new Set(e.availableHostDependencies??[]),o=n.find(u=>!kv.test(u)||!r.has(u));if(o)return{ok:!1,error:{code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:`Declared project dependency is not available in the target site host: ${o}.`,path:o}};let i=n.flatMap(u=>[u,`${u}/`]),s=[...e.allowedExternalImports??Cv,...i],a=t.data.generatedRoot,c=Pf(e.manifest.instanceBaseName),l=Math.max(1,Math.min(Li,e.maxAttempts??Li));for(let u=0;u<l;u+=1){let f=Lv(e.instanceNameGenerator?.()??fv(4).toString("hex"));if(!f)return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instance suffix must be 8 lowercase hex chars."}};let m=`${c}-${f}`,d=Tf(a,m),g=Pv({manifest:e.manifest,generatedRoot:a,instanceName:m,instanceRoot:d,allowedExternalImports:s});if(!g.ok)return g;if(!await Av(e.exists,d,g.data.files))return{ok:!0,data:g.data}}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to allocate a create-only static prefab instance after repeated conflicts."}}}async function Nf(e){let t=Math.max(1,Math.min(Li,e.maxAttempts??Li));for(let n=0;n<t;n+=1){let r=await Nv({...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 Pv(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=If({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=If({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=Tv(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 Av(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function If(e){if(e.pathTemplate.split(vf).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(vf,e.instanceName),n=Dv(t);return n?Tf(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||!vv.test(n)||Iv.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 Tv(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(Ev.test(f.path)){if(f.path.endsWith(Oi)){let g=xv(f.content);if(!g.success)return Pn("MATERIALIZATION_DATA_UNSUPPORTED",g.error.message,f.path);c.set(f.path,new Set)}else try{JSON.parse(f.content)}catch{return Pn("MATERIALIZATION_DATA_UNSUPPORTED","Static prefab JSON file must contain valid JSON.",f.path)}continue}let m;try{m=pv(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=Xr(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(!kf.test(f.path))continue;let m=s.get(f.path),d=null;if(Rv(m,{ImportDeclaration(g){let h=Cf({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(Oi))){let S=Fv({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=Cf({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=wf(g.node);h&&Za.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},OptionalMemberExpression(g){let h=wf(g.node);h&&Za.has(h)&&(d??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h}.`,file:f.path},g.stop())},Identifier(g){g.isReferencedIdentifier()&&Za.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(!kf.test(n))return Pn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must be a .ts/.tsx source module.",n);let l=s.get(n);if(!l)return Pn("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must resolve to a controlled source file.",n);if(!_v(l,r))return Pn("MATERIALIZATION_EXPORT_MISSING","Static prefab entry does not declare the manifest export.",n);for(let[f,m]of c)if(m.size!==1)return Pn("MATERIALIZATION_IMPORT_FORBIDDEN","Each component .i18n.json file must have exactly one same-name Client Component static importer.",f);return Mv(n,a).size!==e.length?Pn("MATERIALIZATION_ENTRY_INVALID","Every controlled source file must be reachable from the entry module.",n):{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:qa,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}}function Cf(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=Zt.posix.normalize(Zt.posix.join(Zt.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 Fv(e){let t=Zt.posix.dirname(e.importer),n=Zt.posix.dirname(e.imported),r=Zt.posix.basename(e.importer).replace(/\.tsx?$/,""),o=Zt.posix.basename(e.imported).slice(0,-Oi.length),i=`./${r}${Oi}`;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 _v(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 Mv(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 Pn(e,t,n){return{ok:!1,error:{code:e,message:t,...n?{file:n}:{}}}}function Ov(e){let t=Af(e);return t===qa?t:null}function Lv(e){let t=e.trim().toLowerCase();return Sv.test(t)?t:null}function Pf(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 bv.test(t)?t:null}function Af(e){if(!e||e.startsWith("/")||e.includes("\\"))return null;let t=Zt.posix.normalize(e);return t==="."||t.startsWith("../")||t.includes("/../")||t.includes("//")?null:t}function Dv(e){let t=Af(e);return!t||t!==e?null:t}function Tf(...e){return Zt.posix.join(...e)}function Rf(e){return new Set(e.map(t=>t.pathTemplate))}function Bv(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 jv(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function wf(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 mc}from"node:crypto";import ac from"@babel/traverse";function ec(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 $v}from"node:crypto";import Ff from"node:path";import*as Df from"@babel/parser";import tc from"@babel/generator";import*as Ue from"@babel/types";var _f=typeof tc=="function"?tc:tc.default;function rc(e){let t=jf(e);if(t)return{ok:!1,error:t};let n=e.projection,r=sc(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=Uv(n,o),s={jsx:`<${e.component.localName} />`},a=Vv(e);if(i){let d=nc(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??(ic(c,n.container.sourceRange)?n.container.sourceHash:null);if(!c||!l)return zr("Route page composition does not expose a verifiable container boundary.");let u=Wr(c),f=Of(e.source,u,l,"Route page composition container");if(!f.ok)return f.result;let m=o.anchorSourceRange?Wr(o.anchorSourceRange):void 0;if(m){if(!o.anchorSourceHash)return zr("Route page composition placement does not expose a verifiable anchor boundary.");let d=Of(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 Vv(e){let t=Hv(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 An(e.source,"Root expression rewrite requires an exact expression locator.");let t=kr(e.source,"value");if(!t.ok)return An(e.source,t.diagnostic.message);let n=se(t.ast,e.locator);if(!n.ok)return An(e.source,n.diagnostic.message);let r=n.match.path;if(!r.isExpression())return An(e.source,"Resolved value locator does not point to an expression.");let o=ir(e.source,r.node.start??null,r.node.end??null);if(!o||o!==e.expectedSourceHash)return An(e.source,"Root expression hash no longer matches the current source.");if(e.action.kind==="remove")return r.replaceWith(Ue.nullLiteral()),{ok:!0,source:_f(t.ast,{}).code};let i;try{i=Df.parseExpression(e.action.jsx,{plugins:["jsx","typescript"]})}catch(s){return An(e.source,s instanceof Error?s.message:String(s))}return!Ue.isJSXElement(i)&&!Ue.isJSXFragment(i)?An(e.source,"Root expression rewrite requires a JSX insertion expression."):(e.action.kind==="replace"?r.replaceWith(i):r.replaceWith(Kv(r.node,i,e.action.placement,e.action.replaceOriginal)),{ok:!0,source:_f(t.ast,{}).code})}function Kv(e,t,n,r){if(Ue.isNullLiteral(e)||r)return t;let o=Ue.isJSXFragment(e)?[...e.children]:[Ue.isJSXElement(e)?e:Ue.jsxExpressionContainer(e)],s=n==="before"||n==="prepend"?[t,...o]:[...o,t];return Ue.jsxFragment(Ue.jsxOpeningFragment(),Ue.jsxClosingFragment(),s)}function An(e,t){return{ok:!1,source:e,diagnostic:{message:t}}}function oc(e){let t=jf(e);if(t)return{ok:!1,error:t};let n=e.projection,r=$f(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(Jv(n,o)){let h=nc(e);return h.ok?e.operation==="remove-node"&&!Mf(n,o.placementUnitKey)?zr("The last editable page unit cannot be deleted."):e.operation==="move-node"?zr("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=Wr(o.sourceRange),a=Tt(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?[]:[Hr(a.diagnostic)]}};if(ir(e.source,a.match.node.start??null,a.match.node.end??null)!==o.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source."}]}};if(e.operation==="remove-node"){let h=nc(e);return h.ok?Mf(n,o.placementUnitKey)?{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"remove-node",locator:s}}}:zr("The last editable page unit cannot be deleted."):h.result}if(e.operation==="replace-node")return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"replace-node",locator:s}}};if(!e.targetPlacement)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit move requires a target placement.",diagnostics:[]}};if(e.targetPlacement.composition.routeId!==e.routeId||!zv(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=sc(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=Wr(f),d=Tt(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?[]:[Hr(d.diagnostic)]}};if(ir(e.source,d.match.node.start??null,d.match.node.end??null)!==u.containerSourceHash)return Lf("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=Wr(h),y=Tt(e.source,E);return!y.ok||!y.match.node?{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:y.ok===!1?y.diagnostic.message:"Route page composition target anchor could not be resolved.",diagnostics:y.ok?[]:[Hr(y.diagnostic)]}}:ir(e.source,y.match.node.start??null,y.match.node.end??null)!==S?Lf("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 Mf(e,t){for(let n of e.placementUnitByKey.values())if(n.placementUnitKey!==t&&n.members.length>0)return!0;return!1}function Uv(e,t){let n=e.placementUnitByKey.get(t.placementUnitKey);return n&&e.container.kind!=="jsx-container"&&ic(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 Jv(e,t){return e.container.kind!=="jsx-container"&&ic(t.sourceRange,e.mutationTarget.sourceRange)&&t.sourceHash===e.mutationTarget.sourceHash}function nc(e){let t=e.projection.mutationTarget,n={kind:"value",root:{kind:"expression",sourceRange:t.sourceRange}},r=Tt(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?[]:[Hr(r.diagnostic)]}}}:ir(e.source,r.match.node.start??null,r.match.node.end??null)!==t.sourceHash?{ok:!1,result:Bf("Route mutation target hash no longer matches the current source.")}:{ok:!0,locator:n,sourceHash:t.sourceHash}}function Of(e,t,n,r){let o=Tt(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?[]:[Hr(o.diagnostic)]}}}:ir(e,o.match.node.start??null,o.match.node.end??null)!==n?{ok:!1,result:Bf(`${r} hash no longer matches the current source.`)}:{ok:!0}}function Bf(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function zr(e){return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:e,diagnostics:[]}}}function Lf(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function Hr(e){return{code:"UNSUPPORTED_PAGE_SHAPE",message:e.message,details:{astCode:e.code}}}function jf(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&&!Xv(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 Xv(e,t){return e.routeId===t.routeId&&e.effectiveTemplateId===t.effectiveTemplateId}function zv(e,t){return e.routeId===t.routeId&&e.templateId===t.effectiveTemplateId}function Hv(e,t){let n=Ff.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Ff.posix.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Wr(e){return{kind:"jsx-node",strategy:"source-range",sourceRange:e}}function ir(e,t,n){return t==null||n==null?null:`sha256:${$v("sha256").update(e.slice(t,n)).digest("hex")}`}function ic(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 Wv=typeof ac=="function"?ac:ac.default;function Jf(e){if(!e.ast)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=nk(e.ast);if(!t)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export must resolve to a local function component",{reason:"default-export-unresolved"})]);let n=ok(t);if(!n.ok)return kt(e,[n.diagnostic]);let r=n.expression;if(r.isIdentifier()){let o=sk(r,t);if(o.status==="resolved")r=o.expression;else if(o.status==="invalid")return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export local binding is not a supported JSX root")])}if(ck(r,t))return kt(e,[Ve("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(r.isNullLiteral())return lc(e,t,"virtual-route-root",r);if(ak(r)){let o=fk({input:e,source:e.source,expression:r});return cc(e,t,o,{kind:"virtual-route-root",sourceKind:"atomic-expression"},r)}if(r.isConditionalExpression())return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route conditional root contains an unsupported branch shape",{reason:"ambiguous-placement"})]);if(r.isJSXElement()&&!Me(r)&&!un(r)){let o=fc(r),i=Uf({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[o]});return cc(e,t,i,{kind:"virtual-route-root",sourceKind:"jsx-element"},r)}if(r.isJSXElement()||r.isJSXFragment()){let o=uk(r);if(!o.ok)return kt(e,[o.diagnostic]);let i=sr(o.path);if(i.unsupported)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);if(lk(e.source,r,i.members))return lc(e,t,"starter-placeholder",r);let s=r.isJSXFragment()||Me(r);if(i.members.length===0&&s)return lc(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=Uf({input:e,containerKind:a,sourceKind:c,source:e.source,containerPath:o.path,members:i.members});return cc(e,t,l,{kind:a,sourceKind:c},r)}return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")])}function sc(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ve("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:Ve("PLACEMENT_KEY_NOT_FOUND","Placement key was not found in the projected page composition",{placementKey:t})}}function $f(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ve("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:Ve("PLACEMENT_KEY_NOT_FOUND","Placement unit key was not found in the projected page composition",{placementUnitKey:t})}}function Xf(e){return e.ok?Gv(e.projection):Yv(e.projection)}function Gv(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)=>zf(e,u,h,S,e.container.placementKey)),m=f.filter(({member:h})=>h.isBusinessMember).map(({sourceMember:h})=>Qv(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:Zv(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function Yv(e){let t=e.diagnostics.map(qv);return{status:"unsupported",version:e.version,composition:e.composition,reason:ek(e.diagnostics),diagnostics:t}}function Zv(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 zf(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)=>zf(e,t,a,c,i))]}function Qv(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function qv(e){return{code:tk(e),message:e.message}}function ek(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 tk(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 nk(e){let t=null;return Wv(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=rk(o.path);i&&(t=i,n.stop())}}),t}function rk(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 ok(e){let t=e.get("body");if(!t.isBlockStatement()){let s=Yr(t);return s?{ok:!0,expression:s}:{ok:!1,diagnostic:Ve("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:Ve("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")};if(!r.isReturnStatement())return{ok:!1,diagnostic:Ve("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(!ik(s))return{ok:!1,diagnostic:Ve("UNSUPPORTED_PAGE_SHAPE","Route guard return shape is not statically safe",{reason:"guard-shape"})};continue}if(Hf(s)||Wf(s))return{ok:!1,diagnostic:Ve("UNSUPPORTED_PAGE_SHAPE","Route default export contains unsupported control flow before the terminal return",{reason:"control-flow-return"})}}let o=r.get("argument"),i=Yr(o);return i?{ok:!0,expression:i}:{ok:!1,diagnostic:Ve("ROUTE_RETURN_NOT_FOUND","Route default export returns without a boundary expression",{reason:"bare-return"})}}function ik(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(Hf(o)||Wf(o))return null;return r}function Hf(e){return e.isForStatement()||e.isForInStatement()||e.isForOfStatement()||e.isWhileStatement()||e.isDoWhileStatement()||e.isSwitchStatement()||e.isTryStatement()||e.isWithStatement()}function Wf(e){let t=!1;return e.traverse({Function(n){n.skip()},ReturnStatement(){t=!0}}),t}function sk(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=Yr(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 ak(e){return e.isConditionalExpression()?Vf(Yr(e.get("consequent")))&&Vf(Yr(e.get("alternate"))):!1}function Vf(e){return!!(e&&(e.isJSXElement()||e.isJSXFragment()||e.isNullLiteral()))}function Yr(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 ck(e,t){if(e.isIdentifier())return Kf(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return Kf(n.node.name,t)}return!1}function Kf(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 lk(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&dc(t)}function dc(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(!dc(t))return!1;continue}if(t.isJSXElement()&&!dc(t))return!1}return!0}function uk(e){let t=e;if(e.isJSXFragment()||Me(e)){let r=Gr(e),o=r[0];if(r.length===1&&o?.isJSXElement()&&un(o))t=o;else return{ok:!0,path:t}}for(;t.isJSXElement()&&un(t);){let r=Gr(t);if(r.length!==1)return{ok:!0,path:t};let o=r[0];if(!o?.isJSXElement()||!un(o))return{ok:!0,path:t};if(Gr(o).length<=1)return{ok:!0,path:t};t=o}return{ok:!0,path:t}}function Gr(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(...Gr(n));continue}n.isJSXElement()&&(Me(n)?t.push(...Gr(n)):t.push(n))}return t}function sr(e){let t=[],n=!1;for(let r of e.get("children")){if(r.isJSXText()){if(!r.node.value.trim())continue;t.push({memberKey:pc(r.node.type,r.node.start,r.node.end),kind:"text",nodeType:r.node.type,sourceRange:yt(r.node.loc),businessMemberCount:0,parentSourceRange:yt(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=sr(o);n||=i.unsupported,t.push(...i.members);continue}if(o.isJSXElement()){let i=un(o)?sr(o):null;n||=i?.unsupported??!1,t.push({...fc(o,i?.members),sourceRange:yt(r.node.loc),parentSourceRange:yt(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:pc(o.node.type,o.node.start,o.node.end),kind:"atomic-expression",nodeType:o.node.type,sourceRange:yt(r.node.loc),businessMemberCount:1,parentSourceRange:yt(e.node.loc),children:[],isBusinessMember:!0,label:"atomic-expression"});continue}if(r.isJSXFragment()||r.isJSXElement()&&Me(r)){let o=sr(r);n||=o.unsupported,t.push(...o.members);continue}if(r.isJSXElement()){let o=un(r)?sr(r):null;n||=o?.unsupported??!1,t.push({...fc(r,o?.members),parentSourceRange:yt(e.node.loc)})}}return{members:t,unsupported:n}}function fc(e,t){let n=e.isJSXElement()&&un(e)?t??sr(e).members:[],r=e.isJSXElement()&&!un(e)&&!Me(e);return{memberKey:pc(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:yt(e.node.loc),businessMemberCount:r?1:Gf(n),parentSourceRange:yt(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:dk(e)}}function un(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name[0]===t.name[0]?.toLowerCase()}function dk(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 Gf(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function Bi(e){return e.length===0?0:Math.max(1,Gf(e))}function Uf(e){let t=yt(e.containerPath.node.loc),n=gc(e.source,e.containerPath.node.start,e.containerPath.node.end),r=xt(e.input,e.containerKind,e.sourceKind,t),o=xt(e.input,e.containerKind,"placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:Bi(e.members)<=1,memberCount:Bi(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function fk(e){let t=yt(e.expression.node.loc),n=gc(e.source,e.expression.node.start,e.expression.node.end),r=xt(e.input,"virtual-route-root","atomic-expression",t),o=xt(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:xt(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 Yf(e,t){let n=yt(t.node.loc),r=gc(e.source,t.node.start,t.node.end);return!n||!r?null:{kind:"expression",documentVersion:e.version,sourceRange:n,sourceHash:r}}function cc(e,t,n,r,o){let i=Yf(e,o);if(!i)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let s=n.containerSourceRange??n.sourceRange,a=pk(e,n,s),c=ec(a),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Qf(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 pk(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:Bi(g)<=1,memberCount:Bi(g),sourceRange:m,sourceHash:m?uc(e.source,m):null,relation:l,containerSourceRange:h,containerSourceHash:h?uc(e.source,h):null,anchorSourceRange:d,anchorSourceHash:d?uc(e.source,d):null,members:g}),i=t.placementKey,s=t.members.map(l=>xt(e,i,"placement-unit",l.sourceRange)),a=s[0]??t.placementUnitKey,c=s.at(-1)??t.placementUnitKey;r.push(o("prepend",xt(e,i,"prepend",n),a,n,null,[]));for(let l of t.members){let u=l.parentSourceRange??n,f=xt(e,i,"placement-unit",l.sourceRange);r.push(o("before",xt(e,f,"before",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u)),r.push(o("after",xt(e,f,"after",l.sourceRange),f,l.sourceRange,l.sourceRange,[l],u))}return r.push(o("append",i,c,n,null,[])),r}function lc(e,t,n,r){let o=Yf(e,r);if(!o)return kt(e,[Ve("UNSUPPORTED_PAGE_SHAPE","Route default export does not provide an exact mutation target",{reason:"mutation-target-unavailable"})]);let i=xt(e,n,"empty-container",void 0),s=xt(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=ec([a]),l={status:"supported",composition:e.composition,route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Qf(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 kt(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 Ve(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,details:n}}function xt(e,t,n,r){return Zf([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function pc(e,t,n){return Zf(["member",e,String(t??-1),String(n??-1)])}function Zf(e){return`pc_${mc("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function gc(e,t,n){return t==null||n==null?null:`sha256:${mc("sha256").update(e.slice(t,n)).digest("hex")}`}function uc(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:${mc("sha256").update(e.slice(r+t.startColumn,o+t.endColumn)).digest("hex")}`}function yt(e){return e?{startLine:e.start.line,startColumn:e.start.column,endLine:e.end.line,endColumn:e.end.column}:null}function Qf(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 Ck}from"@vcp-dev/contracts";import e_ from"node:fs";import n_ from"node:path";var gk=/^page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function Zr(e){let t=e.map(r=>Ik(r.path)),n=hk(t);return n?t.filter(r=>xk(n,r)).map(r=>({routeId:bk(n,r),entryFile:r})).sort((r,o)=>r.routeId.localeCompare(o.routeId)):[]}function hc(e,t=""){let r=((e??"/").trim()||"/").split(/[?#]/,1)[0]||"/",o=r.startsWith("/")?r:`/${r}`,i=kk(t),s=i&&(o===i||o.startsWith(`${i}/`))?o.slice(i.length)||"/":o,a=s.startsWith("/")?s:`/${s}`;return a==="/"?"/":a.replace(/\/+$/,"")}function hk(e){return e.some(r=>r.startsWith("app/")&&!yk(r))?"app":e.some(r=>r.startsWith("src/app/"))?"src/app":null}function yk(e){return/^(?:src\/)?app\/(?:_vcp|\.vcp)/.test(e)}function xk(e,t){if(!t.startsWith(`${e}/`))return!1;let n=t.slice(t.lastIndexOf("/")+1);return gk.test(n)?t.slice(e.length+1,-n.length-1).split("/").filter(Boolean).every(r=>!r.startsWith("_")&&!r.startsWith(".")):!1}function bk(e,t){let n=t.slice(e.length+1).split("/").slice(0,-1).map(Ek).filter(r=>!!r);return n.length===0?"/":`/${n.join("/")}`}function Sk(e){return e.startsWith("(")&&e.endsWith(")")}function Ek(e){return!e||e.startsWith("@")||e.startsWith("_")||Sk(e)?null:vk(e)}function vk(e){return e.replace(/^\((?:\.|\.\.|\.\.\.)\)/,"")}function kk(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function Ik(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}var Qr=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="PageTemplateManagedSourceError"}};function ot(e,t={}){throw new Qr("PAGE_TEMPLATE_MANAGED_SOURCE_INVALID",`Invalid page-template source (${e}): ${t.path??t.routeId??t.templateId??""}`,{reason:e,...t})}function yc(e){return Ck.safeParse(e).success||ot("invalid-template-id",{templateId:e}),Buffer.from(e,"utf8").toString("base64url")}function qf(e){/^[A-Za-z0-9_-]{1,255}$/.test(e)||ot("invalid-template-key",{path:e});let t;try{t=new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.from(e,"base64url"))}catch{return ot("invalid-template-key",{path:e})}return yc(t)!==e&&ot("noncanonical-template-key",{path:e}),t}function Rk(e){let t=hc(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("(")||wk(r)&&!ep(r)))&&ot("invalid-public-route",{routeId:e}),t}function wk(e){return e.includes("[")||e.includes("]")}function ep(e){return/^\[\[\.\.\.[^\[\]]+\]\]$|^\[[^\[\]]+\]$/.test(e)}function tp(e){return e.some(ep)}function np(e,t,n="app"){n!=="app"&&n!=="src/app"&&ot("invalid-app-root");let r=Rk(e),o=yc(t),i=tp(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))&&ot("path-too-long",{path:a}),{appRoot:n,routeRoot:s,templateKey:o,templateEntryFile:a}}function rp(e){return/^(?:src\/)?app\/\.vcp\/page-templates\//.test(e)}function op(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===".")&&ot("invalid-file-path",{path:i}),n.has(i)&&ot("duplicate-file-path",{path:i}),n.set(i,o)}return n}function $i(e){let t=op(e.files),n=Zr([...t.keys()].map(i=>({path:i}))),r=new Map;for(let i of n){if(r.has(i.routeId))throw new Qr("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(!rp(i))continue;let s=/^(app|src\/app)\/\.vcp\/page-templates\/(.+)\/page\.tsx$/.exec(i);s||ot("candidate-must-be-single-page",{path:i});let a=s[1],c=s[2].split("/"),l=tp(c),u=l?c[0]:c.pop(),f=l?c.slice(1):c,m=qf(u),d=f.length?`/${f.join("/")}`:"/";np(d,m,a).templateEntryFile!==i&&ot("candidate-path-mismatch",{path:i,routeId:d});let h=r.get(d);(!h||!h.startsWith(`${a}/`))&&ot("canonical-entry-missing",{path:i,routeId:d}),o.push({routeId:d,templateId:m,entryFile:i,canonicalEntryFile:h,appRoot:a})}return o.sort((i,s)=>ji(i.routeId,s.routeId)||ji(i.templateId,s.templateId))}function ip(e){let t=op(e.files),n=$i({files:t}),r=Zr([...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)=>ji(o.context.routeId,i.context.routeId)||(o.context.effectiveTemplateId===void 0?-1:i.context.effectiveTemplateId===void 0?1:ji(o.context.effectiveTemplateId,i.context.effectiveTemplateId)))}function Nk(e){let t=hc(e.selector.routeId),n=ip({files:e.files}),r=n.find(i=>i.context.routeId===t&&i.context.effectiveTemplateId===void 0);(!r||r.entryFile!==e.canonicalEntryFile)&&ot("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||ot("template-selection-not-found",{routeId:t,templateId:e.selector.templateId}),{...o,mode:e.selector.templateId===void 0?"direct":"candidate",effectiveEntryFile:o.entryFile}}function ji(e,t){return e<t?-1:e>t?1:0}import{HOME_PAGE_URL_PATH as Vk}from"@vcp-dev/contracts";import{parse as rM}from"@babel/parser";import{parse as d_}from"@babel/parser";import{FormBlockIdSchema as p_,FormSpecV1Schema as m_}from"@vcp-dev/contracts";var qr="components/site/generated/forms",g_=`${qr}/vcp-form-runtime.tsx`,Vi="[A-Za-z0-9][A-Za-z0-9_-]{0,127}",h_=new RegExp(`^${qr}/form-(${Vi})\\.spec\\.ts$`),y_=new RegExp(`^${qr}/form-(${Vi})\\.tsx$`),x_=new RegExp(`^@/${qr}/form-(${Vi})$`),b_=new RegExp(`(?:^|/)${qr}/form-(${Vi})(?:\\.tsx?)?$`);var S_=Symbol("invalid-literal");import{createHash as k_}from"node:crypto";import{posix as C_}from"node:path";import{parse as w_}from"@babel/parser";import{FormSpecV1Schema as P_}from"@vcp-dev/contracts";var A_=Symbol("dynamic");import{parse as Pk}from"@babel/parser";function Ki(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"&&typeof t.type=="string"):[]}var Ak=/^(?:src\/)?app\/(.*)page\.(?:tsx|ts|jsx|js|mjs|cjs)$/;function sp(e){let t=Ak.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 Tk(e){let t=e;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function ap(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function Fk(e){let t=e;for(;t&&(t.type==="TSAsExpression"||t.type==="TSSatisfiesExpression"||t.type==="ParenthesizedExpression");)t=t.expression??null;return t}function xc(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(xc);if(t?.type==="ObjectExpression"){let n={};for(let r of Ki(t.properties)){if(r.type!=="ObjectProperty"||r.computed)throw new Error("dynamic object property");let o=ap(r.key);if(!o)throw new Error("unsupported object key");n[o]=xc(r.value)}return n}throw new Error(`unsupported static value: ${t?.type??"unknown"}`)}function bc(e,t){let n=[],r=sp(t);if(r===null)return{found:!1,seo:null,diagnostics:n};let o;try{o=Pk(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 Ki(o.program.body)){let u=l.type==="ExportNamedDeclaration"?l.declaration:l;if(u?.type==="VariableDeclaration")for(let f of Ki(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=Fk(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 Ki(s.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=ap(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=Tk(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=xc(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 _k}from"@babel/parser";var cp=["page","anchor","external","email","phone","group","file"],Mk=["link","cta"],up=["description","badge","iconKey"],Sc=["label","targetType","href","role","openInNewTab","nofollow","children",...up],Ok=new Set(Sc);function to(e){return Array.isArray(e)?e:[]}function eo(e){let t=e;return t?.type==="StringLiteral"&&typeof t.value=="string"?t.value:void 0}function Lk(e){let t=e;if(t?.type==="Identifier")return t.name;if(t?.type==="StringLiteral"&&typeof t.value=="string")return t.value}function lp(e){let t=e;return t?.type==="BooleanLiteral"&&typeof t.value=="boolean"?t.value:void 0}function Ec(e){let t=[],n;try{n=_k(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 to(n.program.body)){let s=i.type==="ExportNamedDeclaration"?i.declaration:i;if(s?.type==="VariableDeclaration")for(let a of to(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 to(r.elements).forEach((i,s)=>{let a=dp(i,`NAV_ITEMS[${s}]`,t);a&&o.push(a)}),{items:o,diagnostics:t}}function dp(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 to(e.properties)){if(l.type!=="ObjectProperty"||l.computed)continue;let u=Lk(l.key);u&&(r[u]=l.value)}let o=eo(r.label),i=eo(r.targetType);if(!o)return n.push({severity:"fatal",path:`${t}.label`,message:"label must be a static string"}),null;if(!i||!cp.includes(i))return n.push({severity:"fatal",path:`${t}.targetType`,message:`targetType must be one of ${cp.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 up){if(r[l]===void 0)continue;let u=eo(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))Ok.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 ${Sc.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=[];to(r.children.elements).forEach((u,f)=>{let m=dp(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=eo(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=eo(r.role);if(c!==void 0&&(Mk.includes(c)?s.role=c:n.push({severity:"warning",path:`${t}.role`,message:"role ignored: not link/cta"})),r.openInNewTab!==void 0){let l=lp(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=lp(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 Dk}from"@babel/parser";function no(e){return Array.isArray(e)?e:[]}function fp(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression";)t=t.expression;return t?.type==="ArrayExpression"?t:void 0}function Bk(e){let t;try{t=Dk(e,{sourceType:"module",plugins:["typescript","jsx"],tokens:!0})}catch{return{status:"unsupported"}}let n=[];for(let o of no(t.program.body)){let i=o.type==="ExportNamedDeclaration"?o.declaration:o;if(i?.type==="VariableDeclaration")for(let s of no(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=fp(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 vc(e,t){let n=pp(t);if(!n)return{status:"unsupported",source:e};let r=Bk(e);if(r.status!=="ok")return{status:r.status,source:e};let o=r.array;if(Ec(e).diagnostics.some(({severity:l})=>l==="fatal"))return{status:"unsupported",source:e};let s=[],a=l=>{let u=no(l.elements);for(let[f,m]of u.entries()){if($k(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 y=/^\s*,/.exec(e.slice(E));s.push({start:S,end:y?E+y[0].length:E})}continue}let d=jk(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 jk(e){if(e.type==="ObjectExpression")for(let t of no(e.properties)){if(t.type!=="ObjectProperty")continue;let n=t.key;if((n?.name??n?.value)==="children")return fp(t.value)}}function pp(e){let t=e.trim();return t.startsWith("/")?t==="/"?t:t.replace(/\/+$/,""):null}function $k(e,t){if(e.type!=="ObjectExpression")return!1;let n,r;for(let o of no(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"&&pp(n??"")===t}import{estimateNavLabelWidth as $_}from"@vcp-dev/contracts";import{parse as U_}from"@babel/parser";var Kk="components/site/generated/",ro=[".tsx",".ts",".jsx",".js"];function mp(e){if(e.expectedUrlPath===Vk)return{ok:!1,code:"HOME_PAGE_LOCKED",message:"The homepage source is protected from deletion."};let t=new Set(Zr(Object.keys(e.files).map(h=>({path:h}))).map(h=>h.entryFile)),n=Object.entries(e.files).filter(([h,S])=>{let E=h.replace(/\\/g,"/");if(!t.has(E))return!1;let y=bc(S,E);return y.found&&y.seo?.path===e.expectedUrlPath});if(n.length===0)return{ok:!1,code:"ROUTE_NOT_FOUND",message:"No route uniquely matches the requested page identity."};if(n.length>1)return{ok:!1,code:"ROUTE_AMBIGUOUS",message:"Multiple routes match the requested page identity."};let[r]=n[0],o=new Set([r]);try{let h=$i({files:new Map(Object.entries(e.files))});for(let S of h)S.canonicalEntryFile===r&&o.add(S.entryFile)}catch(h){return{ok:!1,code:"SOURCE_DEPENDENCY_UNSAFE",message:h instanceof Error?h.message:"Invalid page template source."}}let i=Uk(e.files);if(!i.ok)return i.error;let s=i.graph,a=Hk(o,s),c=Wk(o,a,s),l=[...a].filter(h=>!c.has(h)).sort((h,S)=>h.localeCompare(S)),u=[...o,...[...c].sort((h,S)=>h.localeCompare(S))],f=new Set(u),m=u.map(h=>({operation:"delete",file:h})),d=[],g=[];for(let[h,S]of Object.entries(e.files))if(!f.has(h)){if(S.includes("NAV_ITEMS")){let E=vc(S,e.expectedUrlPath);E.status==="removed"?(m.push({operation:"upsert",file:h,content:E.source}),d.push(h)):E.status==="unsupported"&&g.push(`unsupported_navigation:${h}`)}S.includes(e.expectedUrlPath)&&!S.includes("NAV_ITEMS")&&g.push(`preserved_link:${h}`)}return{ok:!0,edits:m,deletedFiles:u,updatedFiles:d,preservedSharedFiles:l,warnings:g}}function Uk(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")||!Jk(r))continue;let s=Ut(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(Xk(c))continue;let l=bn(r,c),u=zk(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 Jk(e){let t=e.toLowerCase();return ro.some(n=>t.endsWith(n))}function Xk(e){return!!(/\.([a-z0-9]+)$/i.exec(e)&&!ro.some(n=>e.endsWith(n)))}function zk(e,t){let n=e.replace(/\\/g,"/");return(ro.some(o=>n.endsWith(o))?[n]:[...ro.map(o=>`${n}${o}`),...ro.map(o=>`${n}/index${o}`)]).find(o=>t.has(o))??null}function Hk(e,t){let n=new Set,r=[...e].flatMap(o=>[...t.get(o)??[]]);for(;r.length>0;){let o=r.pop();!o.startsWith(Kk)||n.has(o)||(n.add(o),r.push(...t.get(o)??[]))}return n}function Wk(e,t,n){let r=new Set(t),o=!0;for(;o;){o=!1;for(let i of[...r])[...n].some(([a,c])=>!e.has(a)&&!r.has(a)&&c.has(i))&&(r.delete(i),o=!0)}return r}import*as mm from"@babel/parser";import*as pe from"@babel/types";import*as is from"node:path";import*as Ee from"@babel/types";function gp(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 Mt(e){if(e.path.isObjectPattern()||e.path.isArrayPattern())return Tn(e.path.node,e.identifier.name);if(e.path.isVariableDeclarator()){let n=e.path.node.id;if(Ee.isObjectPattern(n)||Ee.isArrayPattern(n))return Tn(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(Yk(e.path,n))return!0}if(t.isFunction()||t.isVariableDeclarator())return!1;t=t.parentPath}return!1}function Tn(e,t,n=!1){return Ee.isIdentifier(e)?e.name===t&&n:Ee.isObjectPattern(e)?e.properties.some(r=>Ee.isObjectProperty(r)?Tn(r.value,t,n):Tn(r.argument,t,n)):Ee.isArrayPattern(e)?e.elements.some(r=>{if(!r)return!1;let o=Ee.isRestElement(r)?r.argument:r;return Tn(o,t,n)}):Ee.isAssignmentPattern(e)?Tn(e.left,t,!0):Ee.isRestElement(e)?Tn(e.argument,t,n):!1}function ar(e,t){if(e.path.isObjectPattern()){if(t){let r=It(e.path.node,t.base),[o,...i]=r??[];if(o?.kind==="property")return{propName:o.name,remainingPath:[...i,...t.path],hasDefault:Mt(e)}}return t?{propName:t.base,remainingPath:t.path,hasDefault:Mt(e)}:null}if(e.path.isVariableDeclarator()){let r=e.path.get("init");if(r?.isExpression()){let o=hp(r),i=!1,s=o?o.initBinding&&kc(o.initBinding)?(i=Mt(o.initBinding),[...o.initPathPrefix]):o.initBinding?(()=>{let c=ar(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=It(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||Mt(e)}}}}let n=qk(e);if(n){let r=Gk(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||Mt(e)}}if(n.findParent(s=>s.isVariableDeclarator()))return null;let o=Zk(e);if(o){let[s,...a]=o;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:Mt(e)}}let i=oo(n.node);return i?{propName:i,remainingPath:t?.path??[],hasDefault:Mt(e)}:null}if(kc(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:Mt(e)}}return null}function Gk(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=hp(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=kc(i)?(a=Mt(i),[...s]):(()=>{let u=ar(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=It(n.node.id,t.identifier.name);return l?{path:[...c,...l],hasDefault:a||Mt(t)}:null}function hp(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=eI(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function kc(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function Yk(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function Zk(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=It(i.node,t);if(a)return a}return null}function yp(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=Ui(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=oo(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=Qk(e);if(!r)return null;let o=r.parentPath;if(!o?.isObjectProperty())return null;let i=oo(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 Ui(e,t){if(e.isObjectPattern()){for(let n of e.get("properties"))if(n.isObjectProperty()){let r=oo(n.node),o=n.get("value");if(o.isAssignmentPattern()){let i=o.get("left"),s=o.get("right");if(r&&!Array.isArray(i)&&It(i.node,t)&&!Array.isArray(s)&&s.isExpression())return{propName:r,expressionPath:s}}if(!Array.isArray(o)&&(o.isObjectPattern()||o.isArrayPattern())){let i=Ui(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=Ui(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=Ui(r,t);if(o)return o}}return null}function It(e,t,n=[]){if(Ee.isIdentifier(e))return e.name===t?n:null;if(Ee.isObjectPattern(e)){for(let r of e.properties)if(Ee.isObjectProperty(r)){let o=oo(r);if(!o)continue;let i=It(r.value,t,[...n,{kind:"property",name:o}]);if(i)return i}else if(Ee.isRestElement(r)){let o=It(r.argument,t,n);if(o)return o}}if(Ee.isArrayPattern(e))for(let r=0;r<e.elements.length;r+=1){let o=e.elements[r];if(!o)continue;let i=Ee.isRestElement(o)?o.argument:o,s=It(i,t,[...n,{kind:"index",index:r}]);if(s)return s}return Ee.isAssignmentPattern(e)?It(e.left,t,n):null}function Qk(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isAssignmentPattern()&&t.node.left===e.path.node?t:null}function qk(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 oo(e){return e.computed?null:Ee.isIdentifier(e.key)?e.key.name:Ee.isStringLiteral(e.key)?e.key.value:null}function eI(e){let t=[],n=e;for(;Ee.isMemberExpression(n);){if(n.computed)if(Ee.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(Ee.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(Ee.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return Ee.isIdentifier(n)?{base:n.name,path:t}:null}import*as vp from"@babel/parser";import Rc from"@babel/traverse";import*as cr from"@babel/types";import*as ae from"@babel/types";function zi(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?Ji(n,t):null}if(e.isMemberExpression()){let n=sI(e.node),r=tI(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?Ji(o,[...r,...t]):null}return e.isAwaitExpression()||Cc(e.node)?dn(cI(e.node),t,"awaited or fetched expression"):null}function tI(e){let t=[],n=e;for(;ae.isMemberExpression(n);){if(n.computed)if(ae.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ae.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(ae.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return ae.isIdentifier(n)?t:null}function Ji(e,t=[],n){let r=nI(e,t);if(r)return r;let o=rI(e,t);if(o)return o;let i=oI(e,t,n);return i||null}function so(e){return e?.kind==="api-source"}function nI(e,t){if(e.path.isVariableDeclarator()&&ae.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&Ic(s.node)&&t[0]?.kind==="property"&&t[0].name==="data")return dn(e.identifier.name,t,"query hook result.data binding")}if(e.path.isVariableDeclarator()&&ae.isObjectPattern(e.path.node.id)){let s=e.path.node.id.properties.find(c=>ae.isObjectProperty(c)&&Sp(c)==="data"&&io(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&Ic(a.node))return dn(e.identifier.name,t,"query hook data binding")}let n=iI(e);if(!n||Sp(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()||!Ic(i.node)?null:dn(e.identifier.name,t,"query hook data binding")}function rI(e,t){if(e.path.isVariableDeclarator()&&ae.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!bp(a.node))return null;let[c,l]=e.path.node.id.elements;return!ae.isIdentifier(c)||c.name!==e.identifier.name||!ae.isIdentifier(l)?null:xp(e,l.name)?dn(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()||!bp(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return ae.isIdentifier(s)&&xp(e,s.name)?dn(e.identifier.name,t,"state setter is updated by API data"):null}function oI(e,t,n){let r=e.path.isVariableDeclarator()?e.path:e.path.findParent(i=>i.isVariableDeclarator());if(!r?.isVariableDeclarator())return null;let o=r.get("init");return o?.isExpression()?o.isAwaitExpression()?dn(e.identifier.name,t,"awaited binding result"):Cc(o.node,n)?dn(e.identifier.name,t,"fetch-backed binding result"):null:null}function iI(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 io(e,t){return ae.isIdentifier(e)?e.name===t:ae.isAssignmentPattern(e)?io(e.left,t):ae.isObjectPattern(e)?e.properties.some(n=>ae.isObjectProperty(n)?io(n.value,t):io(n.argument,t)):ae.isArrayPattern(e)?e.elements.some(n=>!!n&&io(ae.isRestElement(n)?n.argument:n,t)):!1}function xp(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){Cc(i.node)&&(n=!0),(aI(i.node.callee,t)||i.node.arguments.some(s=>ae.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function Ic(e){let t=Hi(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function bp(e){return Hi(e.callee)==="useState"}function Cc(e,t){let n=t?.get(e);if(n!==void 0)return n;let r=Xi(e,o=>ae.isCallExpression(o)&&Hi(o.callee)==="fetch");return t?.set(e,r),r}function sI(e){let t=e;for(;ae.isMemberExpression(t);)t=t.object;return ae.isIdentifier(t)?t.name:null}function Sp(e){return e.computed?null:ae.isIdentifier(e.key)?e.key.name:ae.isStringLiteral(e.key)?e.key.value:null}function Hi(e){return ae.isIdentifier(e)?e.name:ae.isMemberExpression(e)&&ae.isIdentifier(e.property)?e.property.name:null}function aI(e,t){return Xi(e,n=>ae.isIdentifier(n)&&n.name===t)}function Xi(e,t){if(t(e))return!0;let n=ae.VISITOR_KEYS[e.type];if(!n)return!1;for(let r of n){let o=e[r];if(Array.isArray(o)){for(let i of o)if(ae.isNode(i)&&Xi(i,t))return!0;continue}if(ae.isNode(o)&&Xi(o,t))return!0}return!1}function cI(e){return ae.isIdentifier(e)?e.name:ae.isCallExpression(e)?Hi(e.callee)??"api":ae.isAwaitExpression(e)?"awaited-api":"api"}function dn(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:lI(e,t),reason:n}}function lI(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var kp=typeof Rc=="function"?Rc:Rc.default;function Ip(e,t){let n=Rp(e);if(!n)return{allowed:!0};let r=!1;return kp(n,{CallExpression(o){if(!wp(o.node,t.sourceRange)||!uI(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||so(zi(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function Cp(e,t){let n=Rp(e);if(!n)return{allowed:!0};let r=!1;return kp(n,{JSXExpressionContainer(o){wp(o.node,t.sourceRange)&&(cr.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 Rp(e){try{return vp.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function uI(e){let t=e.callee;return cr.isMemberExpression(t)&&cr.isIdentifier(t.property)&&t.property.name==="map"}function wp(e,t){let n=e.loc;return n?Ep({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&Ep({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function Ep(e,t){return e.line!==t.line?e.line<t.line?-1:1:e.column!==t.column?e.column<t.column?-1:1:0}import*as X from"@babel/types";import*as Np from"@babel/parser";import wc from"@babel/traverse";import*as Fe from"@babel/types";import*as lr from"node:path";var Ct=typeof wc=="function"?wc:wc.default;function Je(e){try{return Np.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Nc(e){return e.computed?Fe.isStringLiteral(e.key)||Fe.isNumericLiteral(e.key)?String(e.key.value):null:dI(e.key)}function dI(e){return Fe.isIdentifier(e)?e.name:Fe.isStringLiteral(e)||Fe.isNumericLiteral(e)?String(e.value):null}function Fn(e){return Fe.isParenthesizedExpression(e)||Fe.isTSAsExpression(e)||Fe.isTSSatisfiesExpression(e)||Fe.isTSNonNullExpression(e)||Fe.isTSTypeAssertion(e)?Fn(e.expression):Fe.isExpression(e)?e:null}function Pc(e){if(Fe.isIdentifier(e))return[e.name];if((Fe.isMemberExpression(e)||Fe.isOptionalMemberExpression(e))&&!e.computed&&Fe.isIdentifier(e.property)){let t=Fn(e.object),n=t?Pc(t):null;return n?[...n,e.property.name]:null}return null}function _n(e,t){return t.startsWith("@/")?t.slice(2).replace(/\\/g,"/"):t.startsWith(".")?lr.normalize(lr.join(lr.dirname(e),t)).replace(/\\/g,"/"):t}function ct(e,t){return Wi(e)===Wi(t)}function Wi(e){let t=ur(e);return t.endsWith("/index")?t.slice(0,-6):t}function ur(e){return e.replace(/\.(tsx|ts|jsx|js)$/,"")}function Tp(e,t,n){let r=Op(e,t);if(Lp(e,r),Dp(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 Ct(e,{JSXElement(s){Vp(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:Gi(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 Fp(e,t){let n=new Map,r=i=>{let s=dr(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 fI(i,n))o=r(s)||o}return[...n.values()]}function fI(e,t){let n=[],r=pI(e,t);for(let o of e.ast.program.body){if(X.isExportDefaultDeclaration(o)&&X.isIdentifier(o.declaration)&&(r.get(o.declaration.name)?.length??0)>0){let i=r.get(o.declaration.name)??[];for(let s of i){if(s.namespace){let a=ao(s.namespace,o.declaration.name,"default");a&&n.push({file:e.file,namespace:a,exportName:s.exportName});continue}n.push({file:e.file,exportName:"default"})}continue}if(X.isExportNamedDeclaration(o)&&o.source&&typeof o.source.value=="string"){let i=_n(e.file,o.source.value);for(let s of o.specifiers){if(X.isExportNamespaceSpecifier(s)){let l=fn(s.exported);for(let u of t.values())ct(u.file,i)&&n.push({file:e.file,namespace:Ac(l,u.namespace),exportName:u.exportName});continue}if(!X.isExportSpecifier(s))continue;let a=fn(s.local),c=[...t.values()].filter(l=>ct(l.file,i)&&Mn(l.namespace,a));if(c.length>0){let l=fn(s.exported);for(let u of c){let f=ao(u.namespace,a,l);f&&n.push({file:e.file,namespace:f,exportName:u.exportName})}continue}t.has(dr({file:i,exportName:a}))&&n.push({file:e.file,exportName:fn(s.exported)})}continue}if(X.isExportNamedDeclaration(o)&&!o.source){for(let i of o.specifiers){if(!X.isExportSpecifier(i))continue;let s=fn(i.local),a=r.get(s)??[];if(a.length>0){let c=fn(i.exported);n.push({file:e.file,exportName:c});for(let l of a){let u=ao(l.namespace,s,c);u&&n.push({file:e.file,namespace:u,exportName:l.exportName})}}}continue}if(X.isExportAllDeclaration(o)&&typeof o.source.value=="string"){let i=_n(e.file,o.source.value),s=o.exported;if(s){let a=fn(s);for(let c of t.values())ct(c.file,i)&&n.push({file:e.file,namespace:Ac(a,c.namespace),exportName:c.exportName});continue}for(let a of t.values())ct(a.file,i)&&(a.namespace||a.exportName!=="default")&&n.push({file:e.file,namespace:a.namespace,exportName:a.exportName})}}return n}function Ac(e,t){return t?`${e}.${t}`:e}function Mn(e,t){return e===t||e?.startsWith(`${t}.`)===!0}function ao(e,t,n){return!Mn(e,t)||!e?null:e===t?n:`${n}${e.slice(t.length)}`}function pI(e,t){let n=new Map,r=(i,s)=>{let a=n.get(i)??[];a.push(s),n.set(i,a)};for(let i of e.ast.program.body){if(!X.isImportDeclaration(i)||typeof i.source.value!="string")continue;let s=_n(e.file,i.source.value);for(let a of i.specifiers){if(X.isImportDefaultSpecifier(a)){let c=t.get(dr({file:s,exportName:"default"}));c&&r(a.local.name,c);let l=[...t.values()].filter(u=>ct(u.file,s)&&Mn(u.namespace,"default"));for(let u of l){let f=ao(u.namespace,"default",a.local.name);f&&r(a.local.name,{...u,namespace:f})}continue}if(X.isImportSpecifier(a)){let c=fn(a.imported),l=[...t.values()].filter(f=>ct(f.file,s)&&Mn(f.namespace,c));for(let f of l)r(a.local.name,f);let u=t.get(dr({file:s,exportName:c}));u&&r(a.local.name,u);continue}if(X.isImportNamespaceSpecifier(a))for(let c of t.values())ct(c.file,s)&&r(a.local.name,{...c,namespace:Ac(a.local.name,c.namespace)})}}let o=!0;for(;o;){o=!1;for(let i of e.ast.program.body)if(X.isVariableDeclaration(i))for(let s of i.declarations){if(!X.isIdentifier(s.id)||!s.init)continue;let a=Fn(s.init);if(!a||!X.isIdentifier(a))continue;let c=n.get(a.name)??[];if(c.length===0)continue;let l=n.get(s.id.name)??[],u=new Set(l.map(dr));for(let f of c){let m=ao(f.namespace,a.name,s.id.name),d=m?{...f,namespace:m}:f,g=dr(d);u.has(g)||(r(s.id.name,d),u.add(g),o=!0)}}}return n}function dr(e){let t=e.namespace?`${e.namespace}.${e.exportName}`:e.exportName;return`${Wi(e.file)}#${t}`}function fn(e){return X.isIdentifier(e)?e.name:e.value}function _p(e,t){for(let n of e.program.body){if(X.isExportDefaultDeclaration(n)){let o=n.declaration;if((X.isFunctionDeclaration(o)||X.isClassDeclaration(o))&&o.id?.name===t)return{exportName:"default"};if(X.isIdentifier(o)&&o.name===t)return{exportName:"default"}}if(!X.isExportNamedDeclaration(n))continue;let r=n.declaration;if((X.isFunctionDeclaration(r)||X.isClassDeclaration(r))&&r.id?.name===t)return{exportName:t};if(X.isVariableDeclaration(r)){for(let o of r.declarations)if(X.isIdentifier(o.id,{name:t}))return{exportName:t}}for(let o of n.specifiers){if(!X.isExportSpecifier(o)||o.local.name!==t)continue;return{exportName:X.isIdentifier(o.exported)?o.exported.name:o.exported.value}}}return null}function Fc(e){let t=mI(e),n=[],r=Dp(e.ast,t);return Ct(e.ast,{JSXElement(o){ct(e.file,e.sourceFile)&&Gi(o)===e.sourceComponent||Vp(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function Mp(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function Op(e,t){let n=Mp();return Ct(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function mI(e){let t=Mp();return ct(e.file,e.sourceFile)&&gI(t,Op(e.ast,e.sourceComponent)),Ct(e.ast,{ImportDeclaration(n){let r=n.node,o=r.source.value;if(typeof o!="string")return;let i=_n(e.file,o),s=e.componentIdentities.filter(a=>ct(a.file,i));if(s.length!==0)for(let a of r.specifiers){let c=n.scope.getBinding(a.local.name);if(c){if(X.isImportDefaultSpecifier(a)&&s.some(l=>l.exportName==="default")&&t.localBindings.add(c),X.isImportDefaultSpecifier(a)){let l=s.filter(u=>Mn(u.namespace,"default"));if(l.length>0){let u=t.namespaceMembers.get(c)??new Set;for(let f of l){let m=Ap(f,"default");m&&u.add(m)}t.namespaceMembers.set(c,u)}continue}if(X.isImportSpecifier(a)){let l=X.isIdentifier(a.imported)?a.imported.name:a.imported.value,u=s.filter(f=>Mn(f.namespace,l));if(u.length>0){let f=t.namespaceMembers.get(c)??new Set;for(let m of u){let d=Ap(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(X.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)}}}}}),Lp(e.ast,t),t}function gI(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 Lp(e,t){Ct(e,{VariableDeclarator(n){if(!n.node.init)return;let r=Fn(n.node.init);if(r){if(X.isIdentifier(n.node.id)){let o=On(r,t,n),i=n.scope.getBinding(n.node.id.name);o&&i&&Tc(t,i,o);return}if(X.isObjectPattern(n.node.id)){let o=On(r,t,n);o?.unsupported||o?.local?t.hasUnsupportedAlias=!0:o&&o.namespaceMembers.size>0&&$p(n.node.id,o.namespaceMembers,t,n)}}}})}function Dp(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return Ct(e,{ReferencedIdentifier(r){if(n){r.stop();return}hI(r)||!r.isIdentifier()||!Bp(r,t)||yI(r,t)||xI(r)||(n=!0,r.stop())}}),n}function hI(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 Bp(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)&&On(r.node,t,r)?r:null}function yI(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!Pp(e,r))return!1;let o=Bp(e,t);if(!o)return!1;if(Fn(r.node)===o.node)return!!On(r.node,t,r);let s=e.findParent(c=>c.isObjectProperty());if(!s?.isObjectProperty())return!1;let a=s.get("value");return a.isExpression()&&Pp(e,a)&&!!On(a.node,t,a)}function xI(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function Pp(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function On(e,t,n){let r=Fn(e);if(!r)return null;if(X.isIdentifier(r)){let a=n.scope.getBinding(r.name);if(!a)return null;let c=t.namespaceMembers.get(a);return t.localBindings.has(a)?{local:!0,namespaceMembers:new Set,unsupported:!1}:c?{local:!1,namespaceMembers:new Set(c),unsupported:!1}:null}if(X.isObjectExpression(r))return bI(r,t,n);let o=Pc(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?jp(s,o.slice(1).join(".")):null}function bI(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!X.isObjectProperty(i))continue;let s=Nc(i);if(!s||!X.isExpression(i.value)){X.isExpression(i.value)&&(o||=On(i.value,t,n)!==null);continue}let a=On(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 jp(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 Tc(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 $p(e,t,n,r){for(let o of e.properties){if(X.isRestElement(o)){if(X.isIdentifier(o.argument)){let c=r.scope.getBinding(o.argument.name);c&&Tc(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!X.isObjectProperty(o))continue;let i=Nc(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=jp(t,i);if(!s)continue;n.hasUnsupportedAlias||=s.unsupported;let a=X.isAssignmentPattern(o.value)?o.value.left:o.value;if(X.isIdentifier(a)){let c=r.scope.getBinding(a.name);c&&Tc(n,c,s);continue}if(X.isObjectPattern(a)&&s.namespaceMembers.size>0){$p(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function Ap(e,t){if(!Mn(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 Vp(e,t){let n=e.node.openingElement.name;if(X.isJSXIdentifier(n)){let o=e.scope.getBinding(n.name);return!!(o&&t.localBindings.has(o))}let r=Kp(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 Kp(e){if(X.isJSXIdentifier(e))return[e.name];if(X.isJSXMemberExpression(e)){let t=Kp(e.object);return t?[...t,e.property.name]:null}return null}function Gi(e){let t=e.getFunctionParent();if(!t)return null;if(t.isFunctionDeclaration())return t.node.id?.name??null;if(t.isArrowFunctionExpression()||t.isFunctionExpression()){let n=t.parentPath;if(n?.isVariableDeclarator()&&X.isIdentifier(n.node.id))return n.node.id.name}return null}function Up(e,t){let n=Je(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=Fc({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 xe(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 ye(e){return typeof e.start=="number"&&typeof e.end=="number"?{start:e.start,end:e.end}:null}function Ot(e,t){let n=ye(e);return!!(n&<(t,n))}function lt(e,t){return t.start>=e.start&&t.end<=e.end}function bt(e,t){let n=se(e,xe(t));return n.ok&&n.match.path.isJSXElement()?n.match.path:Yi(e,t)}function fr(e,t){let n=ye(t);return n?e.slice(n.start,n.end):""}function Jp(e,t){return e.start===t.start&&e.end===t.end}function Yi(e,t){let n=null;return Ct(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 Zi(e,t){return _c(e,t).length>0}function Qi(e,t){let n=ye(e.node),r=ye(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()&&!SI(o,n,r)))return!0;o=o.parentPath}return!1}function SI(e,t,n){let r=ye(e.node.consequent);if(r&<(r,t)&&!lt(r,n))return!1;let o=e.node.alternate?ye(e.node.alternate):null;return!(o&<(o,t)&&!lt(o,n))}function _c(e,t){let n=ye(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=ye(o.node.consequent),a=ye(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()&&Mc(o.node.operator)){let s=ye(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 Mc(e){return e==="&&"||e==="||"||e==="??"}function Xp(e,t){let n=ye(e.consequent);if(n&<(n,t))return n;let r=ye(e.alternate);return r&<(r,t)?r:null}function zp(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=>ur(a.file)));if(!t.has(ur(e.sourceFile))||!t.has(ur(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(ur(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=_p(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=Je(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=Fp(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=Fc({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!ct(s.file,e.targetFile)||Gi(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 RI}from"@vcp-dev/contracts";function qi(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 co();let a=s.target,c=a.locator;if(a.sourceKind==="repeat-template"){let l=o?.instanceIndex;if(l===void 0)return co();let u=EI(a,l,o?.instanceCount);if(!u)return co();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"?co():{ok:!0,target:{kind:"jsx-attribute"}}}function co(){return{ok:!1,code:"unsupported-binding",reason:"Property does not have a safe typed binding write target for this scope and operation"}}function EI(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 Lt from"@babel/types";import{SiteEditSetPropsParamsSchema as vI}from"@vcp-dev/contracts";function Hp(e){let t=e.changes??(e.change?[e.change]:[]);if(!vI.safeParse({kind:"set-props",scope:"selection",changes:t}).success)return lo("invalid-change","Repeat property changes are invalid");if(t.length!==1||t[0].name!==e.target.propertyName)return lo("target-mismatch","A repeat property plan must contain exactly one change for its target property");let r=t[0];if(r.operation==="remove"&&e.target.propertyState==="missing")return{ok:!0,steps:[]};let o=we(e.source,"value");if(!o.ok)return lo("invalid-target","Repeat property source could not be parsed");let i=[{type:"set-property-binding",order:0,file:e.target.templateFile,locator:e.target.targetElementLocator,name:r.name,object:e.target.callbackItemName,property:r.name}];for(let[s,a]of e.target.parentObjectLocators.entries()){let c=se(o.ast,a);if(!c.ok||!c.match.path.isObjectExpression())return lo("unsupported-object",`Repeat item ${s} is not a writable object expression`);let l=s===e.target.sourceItemIndex?kI(r):II(c.match.path.node,r.name);if(!l)return lo("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 kI(e){return e.operation==="set"?{kind:"value",value:e.value}:{kind:"undefined"}}function II(e,t){let n=e.properties.filter(i=>Lt.isObjectProperty(i)&&CI(i.key)===t);if(n.length>1)return null;let r=n[0];if(!r)return{kind:"undefined"};if(!Lt.isExpression(r.value))return null;let o=_t(r.value);return o.status==="undefined"?{kind:"undefined"}:o.status!=="resolved"?null:{kind:"value",value:o.value}}function CI(e){return Lt.isIdentifier(e)?e.name:Lt.isStringLiteral(e)?e.value:Lt.isNumericLiteral(e)?String(e.value):null}function lo(e,t){return{ok:!1,errorCode:e,reason:t}}function Wp(e){if(e.change.name!=="className"&&e.change.name!=="class")return uo("unsupported-owner",`No specialized property owner is available for '${e.change.name}'`);let t=e.classNameSource;if(!t||t.filePath!==e.node.file)return uo("owner-source-unavailable","className source details are unavailable for the selected node");if(e.change.name==="class"&&t.sourceKind==="missing")return uo("owner-source-unavailable","The class alias requires an existing className source");if(t.sourceKind==="expression")return uo("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 uo("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 uo(e,t){return{ok:!1,errorCode:e,reason:t}}async function Yp(e){let t=RI.safeParse({kind:"set-props",scope:e.scope,changes:e.changes});if(!t.success)return pn("invalid-change","Typed property changes are invalid");if(e.node.importedFrom==="next/link"&&e.node.exportName==="default"){let r=t.data.changes.find(o=>o.name==="href");if(r&&(r.operation==="remove"||typeof r.value!="string"||r.value.trim().length===0))return pn("invalid-change","next/link requires a non-empty href; use the dedicated link-target operation to remove the link")}let n=[];for(let r of t.data.changes){let o=await wI(e,r);if(o){if(!o.ok)return pn("owner-plan-failed",o.reason);Gp(n,o.steps);continue}let i=await e.getPropertyState(e.node.key,r.name,e.selectionRef);if(!i)return pn("missing-property-state",`No authoritative property state is available for '${r.name}'`);if(i.status==="blocked")return pn("readonly-property",i.diagnostic?.message??`Property '${r.name}' is not writable`);if(AI(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=qi({state:i,scope:e.scope,operation:r.operation,selectionRef:e.selectionRef,repeatTarget:s});if(!a.ok)return pn(a.code,a.reason);let c=a.target;if(c.kind==="value-binding"&&r.operation==="set"){Oc(n,{type:"update-value",order:n.length,file:c.file,locator:c.locator,value:r.value});continue}if(c.kind==="repeat-property"){let l=Hp({source:e.getFileContent(c.target.sourceFile),target:c.target,changes:[r]});if(!l.ok)return pn("repeat-target-failed",l.reason);Gp(n,l.steps);continue}Oc(n,{type:"set-property-changes",order:n.length,file:e.node.file,locator:NI(e.node),scope:e.scope,changes:[r]})}return n.forEach((r,o)=>{r.order=o}),PI(n)?pn("step-conflict","Property changes resolve to conflicting write steps"):{ok:!0,steps:n}}async function wI(e,t){return t.name!=="className"&&t.name!=="class"?null:Wp({node:e.node,change:t,classNameSource:e.classNameSource})}function NI(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 PI(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 Gp(e,t){for(let n of t)Oc(e,{...n,order:e.length})}function Oc(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 AI(e,t){if(t.operation!=="set"||e.status!=="direct")return!1;let n=e.attribute?.resolution;return n?.status==="resolved"?Lc(n.value,t.value):e.attribute?.source===null&&e.attribute.value===t.value}function Lc(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)=>Lc(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=>Lc(n[i],r[i]))}return!1}function pn(e,t){return{ok:!1,errorCode:e,reason:t}}import*as mr from"@babel/types";import*as G from"@babel/types";function Dc(e,t,n){let r=bt(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(!G.isIdentifier(l)||l.name!=="map"||c.computed)return null;let u=a.get("object"),f=fr(e,u.node),m=r.node.params.map(h=>fr(e,h)),d=ye(i.node),g=ye(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:G.isOptionalMemberExpression(c)&&c.optional?"?.map":".map",collectionNeedsParens:es(u.node),callbackPath:r,collectionPath:u}}function fo(e,t){return!!(e&&t&&e.callStart===t.callStart&&e.callEnd===t.callEnd&&e.callbackStart===t.callbackStart&&e.callbackEnd===t.callbackEnd)}function TI(e,t){let n=ye(e.node);return n?FI(t).some(r=>{let o=ye(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function FI(e){let t=e.callbackPath.node.body;return G.isBlockStatement(t)?mn(t.body):gn(t)}function mn(e){let t=[];for(let n of e){if(G.isReturnStatement(n)){n.argument&&t.push(...gn(n.argument));continue}if(G.isBlockStatement(n)){t.push(...mn(n.body));continue}if(G.isIfStatement(n)){let r=G.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent];if(t.push(...mn(r)),n.alternate){let o=G.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];t.push(...mn(o))}continue}if(G.isSwitchStatement(n)){for(let r of n.cases)t.push(...mn(r.consequent));continue}G.isTryStatement(n)&&(t.push(...mn(n.block.body)),n.handler&&t.push(...mn(n.handler.body.body)),n.finalizer&&t.push(...mn(n.finalizer.body)))}return t}function gn(e){return G.isJSXElement(e)?_I(e)?Zp(e.children):[e]:G.isJSXFragment(e)?Zp(e.children):G.isParenthesizedExpression(e)||G.isTSAsExpression(e)||G.isTSSatisfiesExpression(e)||G.isTSNonNullExpression(e)||G.isTSTypeAssertion(e)?gn(e.expression):G.isConditionalExpression(e)?[...gn(e.consequent),...gn(e.alternate)]:G.isLogicalExpression(e)&&Mc(e.operator)?gn(e.right):[]}function Zp(e){return e.flatMap(t=>G.isJSXElement(t)||G.isJSXFragment(t)?gn(t):G.isJSXExpressionContainer(t)&&(G.isJSXElement(t.expression)||G.isJSXFragment(t.expression)||G.isConditionalExpression(t.expression)||G.isLogicalExpression(t.expression))?gn(t.expression):[])}function _I(e){let t=e.openingElement.name;return G.isJSXIdentifier(t)?t.name==="Fragment":G.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function Qp(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function es(e){return!(G.isIdentifier(e)||G.isThisExpression(e)||G.isMemberExpression(e)||G.isOptionalMemberExpression(e)||G.isCallExpression(e)||G.isOptionalCallExpression(e))}function qp(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(G.isMemberExpression(n)||G.isOptionalMemberExpression(n))&&G.isIdentifier(n.property)&&n.property.name==="map"&&!n.computed}function pr(e,t){let n=Je(e);if(!n)return t.isRepeatItemRoot===!0;let r=se(n,xe(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Yi(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=Dt(e,o);return i?TI(o,i):t.isRepeatItemRoot===!0}function em(e,t){let n=Je(e);if(!n)return!1;let r=se(n,xe(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:Yi(n,t);return o?!!o.findParent(i=>{if(!i.isCallExpression()&&!i.isOptionalCallExpression())return!1;let s=i.node.callee;return(G.isMemberExpression(s)||G.isOptionalMemberExpression(s))&&G.isIdentifier(s.property)&&s.property.name==="map"}):!1}import*as Ie from"@babel/types";function Bc(e){if(Ie.isJSXIdentifier(e))return/^[A-Z]/.test(e.name)?e.name:null;if(Ie.isJSXMemberExpression(e)){let t=e;for(;Ie.isJSXMemberExpression(t);)t=t.object;return t.name}return null}function MI(e,t){let n=ye(e.node);if(!n)return[];let r=new Set,o=(i,s)=>{let a=s.scope.getBinding(i);!a||Ot(a.path.node,n)||hn(a,i,t)||r.add(i)};return e.traverse({ReferencedIdentifier(i){o(i.node.name,i)},JSXOpeningElement(i){let s=Bc(i.node.name);s&&o(s,i)}}),[...r].sort()}function jc(e,t,n){let r=Je(e);if(!r)return{ok:!0};let o=se(r,xe(t));if(!o.ok||!o.match.path.isJSXElement())return{ok:!0};let i=se(r,xe(n));if(!i.ok||!i.match.path.isJSXElement())return{ok:!0};let s=Tr(o.match.path,i.match.path);if(Zi(s,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let a=MI(s,i.match.path);return a.length>0?{ok:!1,bindingNames:a}:{ok:!0}}function nm(e){let t=e;for(;Ie.isTSQualifiedName(t);)t=t.left;return Ie.isIdentifier(t)?t.name:null}function po(e,t){e.isIdentifier()&&e.isReferencedIdentifier()&&t(e),e.traverse({ReferencedIdentifier(n){n.isIdentifier()&&t(n)}})}function ts(e){let t=[],n=r=>{if(r){if(Ie.isIdentifier(r)){t.push(r.name);return}if(Ie.isObjectPattern(r)){for(let o of r.properties){if(Ie.isRestElement(o)){n(o.argument);continue}Ie.isObjectProperty(o)&&n(o.value)}return}if(Ie.isArrayPattern(r)){for(let o of r.elements)n(o);return}if(Ie.isAssignmentPattern(r)){n(r.left);return}if(Ie.isRestElement(r)){n(r.argument);return}Ie.isTSParameterProperty(r)&&n(r.parameter)}};return n(e),t}function $c(e,t){let n=ye(e.node),r=ye(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=tm(e),i=tm(t);if(!o||!i||!Jp(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=Xp(s.node,n);if(a&&!lt(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=ye(s.node.right);if(a&<(a,n)&&!lt(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())&&qp(s)){let a=ye(s.node.body)??ye(s.node);if(a&&!lt(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 tm(e){let t=e;for(;t;){if(t.isReturnStatement())return t.node.argument?ye(t.node.argument):null;if(t.isArrowFunctionExpression()&&(Ie.isJSXElement(t.node.body)||Ie.isJSXFragment(t.node.body)||Ie.isConditionalExpression(t.node.body)||Ie.isLogicalExpression(t.node.body)))return ye(t.node.body);t=t.parentPath}return null}function hn(e,t,n){return n.scope.getBinding(t)===e}function Vc(e,t,n,r={}){if(!r.preserveConditionalBoundary&&Zi(e,t))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let o=ye(e.node);if(!o)return{ok:!0};let i=new Set(n.callbackPath.node.params.flatMap(c=>ts(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||Ot(u.path.node,o)||i.has(u.path.node)||hn(u,c,t)||s.add(c)};return e.traverse({ReferencedIdentifier(c){a(c.node.name,c)},JSXOpeningElement(c){let l=Bc(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function Kc(e,t,n){let r=ye(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>ts(s)).map(s=>n.callbackPath.scope.getBinding(s)?.path.node).filter(Boolean)),i=new Set;return po(e,s=>{let a=s.scope.getBinding(s.node.name);!a||Ot(a.path.node,r)||o.has(a.path.node)||hn(a,s.node.name,t)||i.add(s.node.name)}),i.size>0?{ok:!1,bindingNames:[...i].sort()}:{ok:!0}}function rm(e,t){let n=new Set(e.callbackPath.node.params.flatMap(a=>ts(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)||hn(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(mr.isIdentifier(l))o(l.name,c);else{let u=nm(l);u&&o(u,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function Uc(e,t){let n=ye(e.node),r=new Set;return po(e,o=>{let i=o.scope.getBinding(o.node.name);i&&(n&&Ot(i.path.node,n)||hn(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 om(e){let t=[];for(let n of e.callbackPath.node.params){if(mr.isIdentifier(n)){t.push(n.name);continue}if(mr.isRestElement(n)&&mr.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 im(e,t){return{...e,callbackParams:t}}function Jc(e,t){return`${e.collectionNeedsParens?`(${e.collectionExpression})`:e.collectionExpression}${e.mapOperator}((${e.callbackParams.join(", ")}) => ${t})`}function mo(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 sm(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 Ln(e){return{file:e.file,component:e.component}}function OI(e){return e.target.kind==="node"?e.target.key:null}function LI(e){return"kind"in e}function ns(e){return!LI(e)}function Gc(e,t){let n=is.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=is.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Xc(e,t){let n=e.getFileContent(t.file);if(!n)return;let r=Tt(n,xe(t));if(r.ok)return n.slice(r.match.start,r.match.end)}function Zc(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 DI(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function BI(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 zc(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function jI(e){let t=Tp(e.ast,e.sourceNode.component,e.targetParent.component);if(!t.ok)return{ok:!1,reason:t.reason};let n=$c(t.path,e.targetParentPath);if(!n.ok)return{ok:!1,reason:n.reason};let r=$I({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=gm(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?es(o):!0}}}function $I(e){let t=ye(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move prop-backed repeat child because the collection expression cannot be mapped"};let n=new Map,r=new Set,o=null,i=s=>{if(o)return;let a=s.scope.getBinding(s.node.name);if(!a||Ot(a.path.node,t))return;let c=UI(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=XI(e.callSitePath,c.propName,e.source);if(!l.ok){o=l.reason;return}let u=VI(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=Uc(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}hn(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:zI(e.source,t,[...n.values()])}}function VI(e,t){if(t.length===0)return e;let n=gm(e);if(!n)return null;let r=es(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=KI(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function KI(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function UI(e,t,n){let r=JI(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=ar(t,o);if(!i)return null;let s=r?.range??ye(e.node);return s?{propName:i.propName,remainingPath:i.remainingPath,hasDefault:i.hasDefault,range:s}:null}function JI(e,t){let n=e.parentPath;if(!n||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.object!==e.node||!Ot(n.node,t)||n.node.computed||!pe.isIdentifier(n.node.property))return null;let r=ye(n.node);return r?{propertyName:n.node.property.name,range:r}:null}function XI(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()&&pe.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=fr(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 zI(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 gm(e){try{let n=mm.parse(`const __VD_EXPR__ = (${e});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],r=pe.isVariableDeclaration(n)?n.declarations[0]?.init:null;return r&&pe.isExpression(r)?r:null}catch{return null}}function HI(e){let t=ye(e.sourceContext.collectionPath.node);if(!t)return{ok:!1,reason:"Cannot move cross-file repeat child because the collection expression cannot be inspected"};let n=new Map,r=new Set,o=i=>{let s=i.scope.getBinding(i.node.name);if(!s||Ot(s.path.node,t))return;let a=am(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let u=am(c,e.targetFile,e.targetFile);(!u||u.moduleFile!==a.moduleFile||!WI(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 po(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 WI(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 am(e,t,n){let r=GI(e),o=r?.parentPath;if(!r||!o?.isImportDeclaration())return null;let i=o.node.source.value;if(typeof i!="string")return null;let s=_n(t,i),a=i.startsWith(".")?Gc(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=pe.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 GI(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function cm(e,t,n,r){let o=_c(t,n);if(o.length===0)return{sourceJsx:r,conditionPaths:[]};let i=r,s=[];for(let a of o){let c=fr(e,a.conditionPath.node);if(!c)return{sourceJsx:r,conditionPaths:[]};let l=YI(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${QI(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function YI(e,t){return ZI(e.node)?t:`(${t})`}function ZI(e){return pe.isIdentifier(e)||pe.isThisExpression(e)||pe.isSuper(e)||pe.isMemberExpression(e)||pe.isOptionalMemberExpression(e)||pe.isCallExpression(e)||pe.isOptionalCallExpression(e)||pe.isBooleanLiteral(e)||pe.isNumericLiteral(e)||pe.isStringLiteral(e)||pe.isNullLiteral(e)||pe.isUnaryExpression(e)}function QI(e){return e.trim().startsWith("<")?e:`(${e})`}var qI={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 rs(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=qI[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 eC(e,t){for(let n of e.program.body){if(!pe.isImportDeclaration(n)||n.source.value!==t)continue;let r=n.specifiers.find(o=>pe.isImportDefaultSpecifier(o));if(r&&pe.isImportDefaultSpecifier(r))return r.local.name}return null}function tC(e,t,n){for(let r of e.program.body){if(!pe.isImportDeclaration(r)||r.source.value!==t)continue;let o=r.specifiers.find(i=>pe.isImportSpecifier(i)&&(pe.isIdentifier(i.imported)?i.imported.name:i.imported.value)===n);if(o&&pe.isImportSpecifier(o))return o.local.name}return null}function lm(e){let t=new Set;return Ct(e,{Program(n){for(let r of Object.keys(n.scope.bindings))t.add(r);n.stop()}}),t}function um(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function nC(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=Zc(e),o=Je(t);if(n.exportName!=="default"){let a=o?tC(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?um(r,lm(o)):r;return{localName:c,importStep:Hc(e,c)}}if(!o)return{localName:r,importStep:Hc(e,r)};let i=eC(o,n.source);if(i)return{localName:i};let s=um(r,lm(o));return{localName:s,importStep:Hc(e,s)}}function rC(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??Zc(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 oC(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?iC(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function iC(e){return Object.fromEntries(Object.entries(e).filter(t=>Yc(t[1])))}function Yc(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(Yc):typeof e=="object"?Object.values(e).every(Yc):!1}function Hc(e,t=Zc(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 dm(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 sC(e,t,n){let r=e;for(;r;){if(r===t)return!0;r=n.getNode(r)?.parentKey}return!1}function gr(e,t){return`Operation kind '${e}' does not match params.kind '${t}'`}function Qc(e,t=e.path){return{kind:"value",root:e.root,path:t&&t.length>0?t:void 0,expectedRange:e.expectedRange}}function go(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:Qc(e,t.slice(0,n)),index:r.index}}return null}function Wc(e,t){return e.locator?e.collectionPathMap?.[t]?Qc(e.locator,e.collectionPathMap[t]):go(e.locator)?cC(e.locator,lC(t,e.collectionIndexMap)):null:null}function aC(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:hm(o,t)}function hm(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=hm(r,t);return o===void 0?void 0:{[n.name]:o}}function cC(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},Qc(e,i)}return null}function lC(e,t){return t?.[e]??e}function fm(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 uC(e,t){return dC(e.root,t.root)&&pC(e.path??[],t.path??[])}function dC(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&&fC(e.sourceRange,t.sourceRange)}}function fC(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function pC(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 os=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:gr(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:gr(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:gr(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:gr(t.kind,t.params.kind)};let r=t;if(!ns(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=dm(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:gr(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"set-link-target":{if(t.params.kind!=="set-link-target")return{ok:!1,errorCode:"invalid-params",reason:gr(t.kind,t.params.kind)};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.planSetLinkTarget(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=OI(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):pm(i)}async planSetLinkTarget(t,n,r){if(r.tag!=="a"&&!(r.importedFrom==="next/link"&&r.exportName==="default"))return{ok:!1,errorCode:"capability-denied",reason:"Only native anchors and source-verified next/link nodes can be changed"};if(r.structuralPath.includes("#repeat:")||r.isRepeatRegion||r.isRepeatItemRoot)return{ok:!1,errorCode:"capability-denied",reason:"Link target changes are not supported inside repeat templates"};if(n.selectionRef?.instanceIndex!==void 0||(n.selectionRef?.instanceCount??1)>1)return{ok:!1,errorCode:"capability-denied",reason:"Link target changes require a single non-repeated selection"};if(n.params.changes.length>0){let o=await this.buildTypedPropertySteps({node:r,scope:"selection",changes:n.params.changes,selectionRef:n.selectionRef});if(!o.ok)return pm(o);if(o.steps.some(i=>i.type!=="set-property-changes"||i.file!==r.file))return{ok:!1,errorCode:"capability-denied",reason:"Link descriptions must have a direct, unique source in the selected file"}}return this.buildPlan(t,n,[{type:"set-link-target",order:0,file:r.file,locator:xe(r),link:n.params.link,changes:n.params.changes}],this.graph.getCapability(r.key))}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?Yp({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=Wc(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:xe(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=Wc(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:xe(t),segmentIndex:n,newText:r}]}}coerceTextValueForValueTarget(t,n,r,o="update-text"){let i=this.graph.getFileContent(t),s=Je(i);if(!s)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not inspect the value source`};let a=se(s,n);if(!a.ok)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not resolve the value source`};if(!DI(a.match.path))return{ok:!0,value:r};let c=BI(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=Wc(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=Je(this.graph.getFileContent(t));if(!o)return!1;let i=se(o,n);if(!i.ok)return!1;let s=i.match.path;if(s.isStringLiteral())return typeof r=="string"&&s.node.value===r;if(s.isNumericLiteral())return typeof r=="number"&&Object.is(s.node.value,r);if(s.isBooleanLiteral())return typeof r=="boolean"&&s.node.value===r;if(s.isNullLiteral())return r===null;if(s.isUnaryExpression({operator:"-"})){let a=s.get("argument");return typeof r=="number"&&!Array.isArray(a)&&a.isNumericLiteral()&&Object.is(-a.node.value,r)}return!1}planUpdateText(t,n,r,o,i){let s=this.graph.getTextProvenance?.(r.key,n.params.segmentIndex);if(s&&(s.editMode==="readonly"||s.editMode==="unsupported"))return{ok:!1,errorCode:"unsupported-operation",reason:"Text has no identity-preserving write target"};if(!o.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update text on this node"};let a=this.buildTextRewriteSteps(r,n.params.segmentIndex,n.params.value,i,n.selectionRef);return a.ok?this.buildPlan(t,n,a.steps,o):a}async planRemoveNode(t,n,r,o){if(!o.canRemove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot remove this node"};let i=await this.graph.getTextWriteTarget(r.key,0);if(i?.kind==="external-entry")return this.buildPlan(t,n,[{order:0,file:`external:${i.sourceId}`,type:"invoke-external-adapter",sourceType:i.sourceType,sourceId:i.sourceId,adapterId:i.adapterId,capability:"remove-node",value:{operation:"remove-node"}}],o);if(r.isRepeatItemRoot){let f=i;if(f?.kind==="value-binding"&&f.locator){let m=go(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=mo(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:xe(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||Up(n,t)>1)return null;let r=Gc(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(!ns(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=mo(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=Ip(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=rs(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"?nC(n.params.node,this.graph.getFileContent(r.file)):void 0,y=E?.importStep;return y&&h.push({order:S++,file:r.file,type:"add-import",moduleSpecifier:y.moduleSpecifier,imports:y.imports}),h.push({order:S++,file:r.file,type:"insert-child",parentLocator:xe(r),node:{jsx:rC(n.params.node,E?.localName)},placement:n.params.position.relation,anchorLocator:i?xe(i):void 0}),this.buildPlan(t,n,h,o)}async planExternalBackedInsertChild(t,n,r,o,i,s){if(!ns(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:oC(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(!ns(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=go(a.locator);if(!c)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires an array-backed target"};let l=aC(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"?fm(0,a.collectionIndexMap):fm(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=mo(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 pr(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:")||em(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&&pr(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Je(c);if(!l)return null;let u=bt(l,r),f=bt(l,o);if(!u||!f)return null;let m=Dt(c,u),d=Dt(c,f);if(!fo(m,d))return null;if(a&&(s==="before"||s==="after")){let h=bt(l,a),S=h?Dt(c,h):null;if(!fo(m,S))return null}if(Qi(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let g=jc(c,r,o);return g.ok?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:xe(r),targetParentLocator:xe(o),placement:s,anchorLocator:a?xe(a):void 0,selectionContext:Ln(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&&pr(this.graph.getFileContent(r.file),r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Je(c);if(!l)return null;let u=bt(l,r),f=bt(l,o);if(!u||!f)return null;let m=Dt(c,u);if(!m)return null;let d=Dt(c,f);if(fo(m,d))return null;if(d&&!Qp(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 v=Dc(c,l,a);if(d&&!fo(d,v)||!d&&v)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 v=rs(o,{kind:"native-tag",tag:r.tag});if(v)return{ok:!1,errorCode:"unsupported-operation",reason:v}}let g=Xc(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(Qi(u,f))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let h=cm(c,u,f,g);for(let v of h.conditionPaths){let C=Kc(v,f,m);if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${C.bindingNames.join(", ")}`}}let S=Vc(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=rm(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 y=m;if(r.component!==o.component){let v=jI({source:c,ast:l,sourceContext:m,sourceNode:r,targetParent:o,targetParentPath:f});if(!v.ok)return{ok:!1,errorCode:"unsupported-operation",reason:v.reason};y=v.context}else{let v=Uc(m.collectionPath,f);if(!v.ok)return{ok:!1,errorCode:"unsupported-operation",reason:v.reason??`Cannot move repeat-backed child because the repeat collection is not visible at the target: ${v.bindingNames.join(", ")}`}}return this.buildPlan(t,n,[{order:0,file:r.file,type:"move-repeat-template-child",locator:xe(r),targetParentLocator:xe(o),placement:s,anchorLocator:a?xe(a):void 0,repeatExpression:Jc(y,h.sourceJsx),selectionContext:Ln(o)}],i)}planCrossFileRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&pr(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=Je(c),f=Je(l);if(!u||!f)return null;let m=zp({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=bt(u,r),g=bt(f,o);if(!d||!g)return null;let h=$c(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")&&Dc(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 _=rs(o,{kind:"native-tag",tag:r.tag});if(_)return{ok:!1,errorCode:"unsupported-operation",reason:_}}let y=Xc(this.graph,r);if(!y)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Qi(d,g))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let v=cm(c,d,g,y);for(let _ of v.conditionPaths){let D=Kc(_,g,S);if(!D.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${D.bindingNames.join(", ")}`}}let C=Vc(d,g,S,{preserveConditionalBoundary:v.conditionPaths.length>0});if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:C.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${C.bindingNames.join(", ")}`};let N=HI({sourceFile:r.file,targetFile:o.file,sourceContext:S,targetParentPath:g});if(!N.ok)return{ok:!1,errorCode:"unsupported-operation",reason:N.reason};let A=om(S);if(!A.ok)return{ok:!1,errorCode:"unsupported-operation",reason:A.reason};let R=im(S,A.callbackParams),F=[{order:0,file:r.file,type:"remove-node",locator:xe(r),removeWhitespace:!0}];for(let _ of N.imports)F.push({order:F.length,file:o.file,type:"add-import",moduleSpecifier:_.moduleSpecifier,imports:_.imports});return F.push({order:F.length,file:o.file,type:"insert-jsx-expression-child",parentLocator:xe(o),expression:Jc(R,v.sourceJsx),placement:s,anchorLocator:a?xe(a):void 0,selectionContext:Ln(o)}),this.buildPlan(t,n,F,i)}async planMoveNode(t,n,r,o){if(!o.canMove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move this node"};if("kind"in n.params.target&&n.params.target.kind==="source-sibling"){let v=n.params.target,C=this.graph.getNode(v.anchorKey);if(!C||r.file!==C.file||r.component!==C.component)return{ok:!1,errorCode:"locator-miss",reason:"Source sibling move requires a sibling in the same component file"};let N=this.graph.getFileVersion(r.file);if(n.documentVersion!==N)return{ok:!1,errorCode:"stale-version",reason:`Document version ${n.documentVersion} is stale or otherwise does not match source sibling file version (current: ${N})`};let A=this.graph.getFileContent(r.file),R=Je(A),F=R?bt(R,r):null,_=R?bt(R,C):null,D=F?.parentPath,L=_?.parentPath;if(!F||!_||!D||!L||D.node!==L.node||!D.isJSXFragment()&&!(D.isJSXElement()&&Me(D)))return{ok:!1,errorCode:"unsupported-operation",reason:"Source sibling move requires two direct children of the same transparent Fragment"};let oe=D.node.loc;return oe?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:xe(r),targetParentLocator:{kind:"jsx-node",strategy:"source-range",sourceRange:{startLine:oe.start.line,startColumn:oe.start.column,endLine:oe.end.line,endColumn:oe.end.column}},placement:v.relation,anchorLocator:xe(C),selectionContext:Ln(r)}],o):{ok:!1,errorCode:"locator-miss",reason:"Source Fragment has no stable source range"}}let i=dm(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(sC(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=this.graph.getTextProvenance?.(r.key,0)??null,d=mo(r,c,m);if(d&&!zc(d)&&!sm(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 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=go(v.locator),A=go(C.locator);if(N&&A&&v.file===C.file&&uC(N.locator,A.locator)){let R=N.index,F=A.index,_=u==="before"?F-(R<F?1:0):F+(R<F?0:1);return this.buildPlan(t,n,[{order:0,file:v.file,type:"move-array-item",locator:N.locator,fromIndex:R,toIndex:_}],o)}}}if(r.isRepeatItemRoot&&pr(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=zc(d)?d:g;if(h&&zc(h)){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: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 v=rs(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 E=jc(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 y=[{order:0,file:r.file,type:"move-node",locator:xe(r),targetParentLocator:xe(s),placement:u,anchorLocator:f?xe(f):void 0,selectionContext:Ln(s)}];return this.buildPlan(t,n,y,o)}planCrossFileMove(t,n,r,o,i,s,a){let c=[],l=0,u=this.graph.getFileContent(r.file),f=Xc(this.graph,r)??`<${r.component} />`,m=Cp(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:xe(r),removeWhitespace:!0}),r.importedFrom&&r.exportName){let g=r.tag??r.component,S={moduleSpecifier:Gc(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:xe(o),node:{jsx:f},placement:s,anchorLocator:a?xe(a):void 0,selectionContext:Ln(o)})}else c.push({order:l++,file:o.file,type:"insert-child",parentLocator:xe(o),node:{jsx:f},placement:s,anchorLocator:a?xe(a):void 0,selectionContext:Ln(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:ke(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 pm(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 rl from"@babel/generator";import{parse as NC}from"@babel/parser";import ol from"@babel/traverse";import*as w from"@babel/types";import*as jt from"@babel/types";import qc from"@babel/generator";import*as ve from"@babel/types";var mC=typeof qc=="function"?qc:qc.default,gC=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,hC=/^((?:https?:)?\/\/)[^/@\s]+@/i,yC=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function xm(e,t){let n=Bt(e.callee);if(!n)return null;if(n==="fetch")return el(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(ym(r))return el(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(ym(r))return el(e.arguments[0],r,t,["ky client contract"])}return null}function el(e,t,n,r){if(!e||ve.isSpreadElement(e)||ve.isJSXNamespacedName(e))return EC(t,n,r,"missing url argument");let o=ho(e);return{sourceKind:SC(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 ho(e){if(ve.isStringLiteral(e))return ss(e.value);if(ve.isTemplateLiteral(e))return ss(xC(e));if(ve.isBinaryExpression(e)&&e.operator==="+"){let t=ho(e.left),n=ho(e.right);return!t&&!n?void 0:ss(`${t??tl(e.left)}${n??tl(e.right)}`)}if(ve.isMemberExpression(e)){let t=bm(e);if(t)return`env:${t}`}if(!(ve.isCallExpression(e)&&Bt(e.callee)==="new URL")){if(ve.isNewExpression(e)&&ve.isIdentifier(e.callee,{name:"URL"})){let[t,n]=e.arguments,r=t&&!ve.isSpreadElement(t)?ho(t):void 0,o=n&&!ve.isSpreadElement(n)?ho(n):void 0;return o&&r?ss(`${o} + ${r}`):r??o}if(ve.isIdentifier(e))return`:${e.name}`}}function xC(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+=tl(r))}return t}function tl(e){if(ve.isIdentifier(e))return`:${e.name}`;if(ve.isMemberExpression(e)){let t=bm(e);if(t)return`env:${t}`}return`:${bC(e)}`}function bC(e){return mC(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function ss(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(hC,"$1<redacted>@").replace(yC,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?gC.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function SC(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 EC(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function ym(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function bm(e){return!ve.isMemberExpression(e.object)||!ve.isIdentifier(e.object.object,{name:"process"})||!vC(e.object.property,"env")?null:ve.isIdentifier(e.property)?e.property.name:ve.isStringLiteral(e.property)?e.property.value:null}function vC(e,t){return ve.isIdentifier(e)&&e.name===t}function Bt(e){if(ve.isIdentifier(e))return e.name;if(ve.isMemberExpression(e)){let t=Bt(e.object),n=ve.isIdentifier(e.property)?e.property.name:ve.isStringLiteral(e.property)?e.property.value:null;if(t&&n)return`${t}.${n}`}return null}var kC=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),IC=new Set(["getConfig","submit"]);function Sm(e,t){let n=CC(Bt(e.callee),t);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!kC.has(i))return null;let s=nl(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(!IC.has(i))return null;let s=nl(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=nl(e,0)??RC(e,0,"path")??"/cms/:path",s=wC(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 CC(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 Em(e,t){let n=Bt(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 vm(e){let t=Bt(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function nl(e,t){let n=e.arguments[t];return jt.isStringLiteral(n)?n.value:null}function RC(e,t,n){let r=e.arguments[t];if(!jt.isObjectExpression(r))return null;for(let o of r.properties)if(jt.isObjectProperty(o)&&!o.computed&&(jt.isIdentifier(o.key)&&o.key.name===n||jt.isStringLiteral(o.key)&&o.key.value===n)&&jt.isStringLiteral(o.value))return o.value.value;return null}function wC(e){return/^\/collections\/([^/]+)(?:\/|$)/.exec(e)?.[1]??null}var Nm=typeof ol=="function"?ol:ol.default,VO=typeof rl=="function"?rl:rl.default,PC={maxFunctionDepth:8,maxImportDepth:6},AC=new Set(["src","href","alt","poster","content","title","aria-label"]);async function Pm(e){let t=e.fileCache??new Map,n=cl(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...PC,...e.options},variableCache:new Map,functionDepth:0,importDepth:0,paramSources:new Map,resolvingVariables:new Set,resolvingComponentProps:new Set,scopeVariables:Jm(n,e.element.componentName)};await Am(e.element.componentName,e.graph,r);let o=[];o.push(...await MC(e.element,e.graph,r),...await OC(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await LC(s,e.element,e.graph,r);a&&o.push(ls(a,"text","children"))}for(let s of e.element.attributes??[]){let a=_C(s,e.element);if(!a)continue;let c=await Mm(s.source,e.element,e.graph,r);c&&o.push(ls(c,a,s.name))}let i=ZC(o).sort(Km);return{hasDynamicData:i.length>0,bindings:i}}async function Am(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 Tm(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 _m(l.sourceFile,n);if(!f)continue;let m=ds(f,n,{importDepth:n.importDepth+1});m.paramSources.clear(),m.scopeVariables=Jm(f,l.componentName),await Am(l.componentName,t,m);let d=await TC(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=$m(u);f.length===1&&c.set(l,f[0])}FC(o,c,n)}async function Tm(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 _m(e,r))?.imports.get(t);if(!s||!Nt(s.source))return!1;let a=await Hm(e,s.source,r.exists);return a?a===n?!0:Tm(a,s.importedName,n,r,o):!1}async function TC(e,t){let n=new Map,r=t.analysis.jsxElementsByRange.get(Fm(e.sourceRange));if(r)for(let i of r.openingElement.attributes)!w.isJSXAttribute(i)||!w.isJSXIdentifier(i.name)||!w.isJSXExpressionContainer(i.value)||!w.isExpression(i.value.expression)||n.set(i.name.name,i.value.expression);let o=new Map;for(let[i,s]of n){let a=await je(s,t);a&&o.set(i,a)}return o}function Fm(e){return`${e.startLine}:${e.startColumn}:${e.endLine}:${e.endColumn}`}async function _m(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 cl(e,r,t.fileCache)}function FC(e,t,n){if(w.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,al(Object.fromEntries(t),n.file));return}if(w.isObjectPattern(e))for(let r of e.properties){if(!w.isObjectProperty(r)||r.computed||!w.isIdentifier(r.key))continue;let o=t.get(r.key.name);if(!o)continue;let i=w.isAssignmentPattern(r.value)?r.value.left:r.value;w.isIdentifier(i)&&n.paramSources.set(i.name,ze(o))}}function _C(e,t){return e.name==="dangerouslySetInnerHTML"?"richtext":AC.has(e.name)?"attribute":t.importedFrom||/^[A-Z]/.test(t.tag)?"component-prop":null}async function MC(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 us(i.collectionSource,n);s&&r.push(ls(Dn(s),"repeat-region",i.collectionExpression))}return r}async function OC(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 us(i.conditionSource,n);s&&r.push(ls(Dn(s),"conditional-region",i.conditionExpression))}return r}async function LC(e,t,n,r){return Mm(e.source,t,n,r)}async function Mm(e,t,n,r){let o=await DC(e,t,n,r);return o||us(e,r)}async function DC(e,t,n,r){if(!e)return null;let o=BC(e.base,t,n);if(!o)return null;let i=await us(o.collectionSource,r);return i?So(i,e.path,!0):null}function BC(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 us(e,t){if(!e)return null;let n=await Om(e.base,t);return n?So(n,e.path,!1):null}async function Om(e,t){let n=t.paramSources.get(e);if(n)return ze(n);if(t.variableCache.has(e))return QC(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await jC(e,t);if(r)return t.variableCache.set(e,ze(r)),t.resolvingVariables.delete(e),r;let o=t.scopeVariables?.get(e)??t.analysis.variables.get(e);if(o){let s=await je(o,t);return t.variableCache.set(e,s?ze(s):null),t.resolvingVariables.delete(e),s}let i=t.analysis.imports.get(e);if(i&&t.importDepth<t.options.maxImportDepth){let s=await Xm(i,t);if(s){let a=ds(s,t,{importDepth:t.importDepth+1}),c=zm(i,s);if(c){let f=(await Bn(c,[],a)).returnSource;return t.variableCache.set(e,f?ze(f):null),t.resolvingVariables.delete(e),f}let l=s.variables.get(i.importedName);if(l){let u=await je(l,a);return t.variableCache.set(e,u?ze(u):null),t.resolvingVariables.delete(e),u}}}return t.variableCache.set(e,null),t.resolvingVariables.delete(e),null}async function jC(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];Nm(t.analysis.ast,{CallExpression(o){if(w.isIdentifier(o.node.callee,{name:n})){let i=o.node.arguments[0];w.isExpression(i)&&r.push(i);return}o.node.arguments.some(i=>w.isIdentifier(i)&&i.name===n)&&r.push(o.node)}});for(let o of r){let i=await je(o,t);if(i)return i}return null}async function je(e,t){if(w.isIdentifier(e))return Om(e.name,t);if(w.isMemberExpression(e)||w.isOptionalMemberExpression(e)){let n=w.isMemberExpression(e)?Em(e,{file:t.file}):null;if(n)return jm(n);let r=await $C(e,t);if(!r)return null;let o=GC(e);return So(r,o,!1)}if(w.isAwaitExpression(e))return w.isExpression(e.argument)?je(e.argument,t):null;if(w.isCallExpression(e))return Lm(e,t);if(w.isObjectExpression(e)){let n=await Dm(e,t);return Object.keys(n).length>0?al(n,t.file):null}if(w.isConditionalExpression(e)){let n=await je(e.consequent,t),r=await je(e.alternate,t);return bo(Im(n,r))}if(w.isLogicalExpression(e)){let n=await je(e.left,t),r=await je(e.right,t);return bo(Im(n,r))}return w.isTSAsExpression(e)||w.isTSSatisfiesExpression(e)||w.isTSNonNullExpression(e)||w.isTypeCastExpression(e)||w.isParenthesizedExpression(e)?je(e.expression,t):null}async function $C(e,t){let n=e;for(;w.isMemberExpression(n)||w.isOptionalMemberExpression(n);)n=n.object;return w.isExpression(n)?je(n,t):null}async function Lm(e,t){let n=Sm(e,{file:t.file,imports:t.analysis.imports});if(n)return jm(n);if(vm(e)){let f=e.arguments[0];if(f&&w.isExpression(f))return bo(await je(f,t))}let r=await VC(e,t);if(r)return r;let o=xm(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 JC(e,t);if(i)return i;let s=await XC(e,t);if(s)return s;let a=await zC(e,t);if(a)return a;let c=await HC(e,t);if(c)return c;let l=[];for(let f of e.arguments)if(w.isExpression(f)){let m=await je(f,t);m&&l.push(m)}let u=$m(l);return u.length===1?bo(u[0]):null}async function VC(e,t){let n=Bt(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=UC(e.arguments[0],t.file,"SWR key"),s=e.arguments[1];if(w.isIdentifier(s)){let a=await xo(s.name,t);if(a)return(await Bn(a.node,i?[i]:[],a.context)).returnSource??i}return i}let r=e.arguments[0];if(!w.isObjectExpression(r))return as(t.file,`${n} without static options`);let o=KC(r,"queryFn");if(!o)return as(t.file,`${n} without queryFn`);if(w.isIdentifier(o)){let i=await xo(o.name,t);return i?(await Bn(i.node,[],i.context)).returnSource:as(t.file,`${n} queryFn unresolved`)}return w.isArrowFunctionExpression(o)||w.isFunctionExpression(o)?(await Bn(o,[],t)).returnSource:w.isCallExpression(o)?Lm(o,t):null}function KC(e,t){for(let n of e.properties){if(!w.isObjectProperty(n)||!w.isExpression(n.value))continue;if(Bm(n)===t)return n.value}return null}function UC(e,t,n){return w.isStringLiteral(e)?{sourceKind:e.value.startsWith("/api/")?"site-api-route":"external-api",sourceType:"api-field",endpointPattern:e.value,confidence:"exact",readonly:!0,evidence:[{file:t,reason:n}]}:null}async function JC(e,t){if(!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property))return null;let n=e.callee.property.name;if(!["map","filter","slice","sort","toSorted"].includes(n))return null;let r=w.isExpression(e.callee.object)?await je(e.callee.object,t):null;if(!r)return null;if(n!=="map")return Dn(r);let o=e.arguments[0];if(w.isIdentifier(o)){let i=await xo(o.name,t);if(!i)return Dn(r);let s=await Bn(i.node,[r],i.context);return{...Dn(r),...s.objectReturnMap??s.returnSource?.fieldMap?{fieldMap:s.objectReturnMap??s.returnSource.fieldMap}:{}}}if(w.isArrowFunctionExpression(o)||w.isFunctionExpression(o)){let i=await Bn(o,[r],t);return{...Dn(r),...i.objectReturnMap??i.returnSource?.fieldMap?{fieldMap:i.objectReturnMap??i.returnSource.fieldMap}:{}}}return Dn(r)}async function XC(e,t){return!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property,{name:"json"})||!w.isExpression(e.callee.object)?null:je(e.callee.object,t)}async function zC(e,t){return!w.isMemberExpression(e.callee)||!w.isIdentifier(e.callee.property,{name:"then"})||!w.isExpression(e.callee.object)?null:bo(await je(e.callee.object,t))}async function HC(e,t){if(!w.isIdentifier(e.callee))return null;let n=await xo(e.callee.name,t);if(!n)return null;let r=[];for(let i of e.arguments){if(!w.isExpression(i)){r.push(as(t.file,`unsupported argument for ${e.callee.name}`));continue}let s=await je(i,t);r.push(s)}return(await Bn(n.node,r,n.context)).returnSource}async function xo(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 Xm(r,t);if(!o)return null;let i=ds(o,t,{importDepth:t.importDepth+1}),s=zm(r,o);return s?{node:s,context:i}:xo(r.importedName,i)}async function Bn(e,t,n){if(n.functionDepth>=n.options.maxFunctionDepth)return{returnSource:null};let r=ds(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let u=t[l];u&&il(c,YC(u),r)});let o=WC(e),i=null,s,a=!1;for(let c of o){if(w.isObjectExpression(c)){s={...s??{},...await Dm(c,r)},i=i??al(s,n.file);continue}let l=await je(c,r);if(l){if(!i){i=l;continue}let u=sl(i,l);if(!u){a=!0,i=null;continue}i=u}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function il(e,t,n){if(w.isIdentifier(e)){n.paramSources.set(e.name,ze(t));return}if(w.isAssignmentPattern(e)){il(e.left,t,n);return}if(w.isObjectPattern(e))for(let r of e.properties){if(!w.isObjectProperty(r)||r.computed||!w.isIdentifier(r.key))continue;let o=So(t,[{kind:"property",name:r.key.name}],!0),i=w.isAssignmentPattern(r.value)?r.value.left:r.value;il(i,o,n)}}function WC(e){if(w.isArrowFunctionExpression(e)&&w.isExpression(e.body))return[e.body];let t=[],n=e.body;if(!w.isBlockStatement(n))return t;let r=o=>{if(w.isFunction(o)&&o!==e)return;if(w.isReturnStatement(o)){o.argument&&w.isExpression(o.argument)&&t.push(o.argument);return}let i=w.VISITOR_KEYS[o.type];for(let s of i??[]){let a=o[s];if(Array.isArray(a))for(let c of a)w.isNode(c)&&r(c);else w.isNode(a)&&r(a)}};return r(n),t}async function Dm(e,t){let n={};for(let r of e.properties){if(!w.isObjectProperty(r))continue;let o=Bm(r);if(!o||!w.isExpression(r.value))continue;let i=await je(r.value,t);i&&(n[o]=i)}return n}function Bm(e){return w.isIdentifier(e.key)&&!e.computed?e.key.name:w.isStringLiteral(e.key)?e.key.value:null}function GC(e){let t=[],n=e;for(;w.isMemberExpression(n)||w.isOptionalMemberExpression(n);){let r=n.property;n.computed?w.isStringLiteral(r)?t.unshift({kind:"property",name:r.value}):w.isNumericLiteral(r)&&t.unshift({kind:"index",index:r.value}):w.isIdentifier(r)&&t.unshift({kind:"property",name:r.name}),n=n.object}return w.isIdentifier(n),t}function So(e,t,n){if(t.length===0)return ze(e);let r=t[0];if(r?.kind==="property"&&e.fieldMap?.[r.name])return So(e.fieldMap[r.name],t.slice(1),n);let o=ze(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=yo(o.valuePath,"data.items[]"),o.cmsFieldRoot=!1,o):i[0]==="fields"?(o.fieldPath=yo(o.fieldPath,i.slice(1).join(".")),o.cmsFieldRoot=!0,o):o.cmsFieldRoot||n||o.fieldMap?(o.fieldPath=yo(o.fieldPath,i.join(".")),o):(o.valuePath=yo(o.valuePath,km(t)),o)}return o.valuePath=yo(o.valuePath,km(t)),o}function km(e){return e.map(t=>t.kind==="property"?t.name:`[${t.index}]`).join(".").replace(/\.\[/g,"[")}function yo(e,t){return t?e?t.startsWith("[")?`${e}${t}`:`${e}.${t}`:t:e}function jm(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 Dn(e){let t=ze(e);return t.sourceType==="cms-field"&&!t.valuePath&&(t.valuePath="items[]"),t}function YC(e){let t=ze(e);return t.valuePath=void 0,t.sourceType==="cms-field"&&(t.cmsFieldRoot=!1),t}function bo(e){return e?{...ze(e),confidence:e.confidence==="unknown"?"unknown":"safe-derived",evidence:[...e.evidence,{file:e.evidence[0]?.file??"unknown",reason:"safe derived expression"}]}:null}function Im(e,t){return e?t?sl(e,t):ze(e):t?ze(t):null}function sl(e,t){if(cs(e)!==cs(t))return null;let n=Um(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function $m(e){let t=new Map;for(let n of e){let r=cs(n),o=t.get(r);t.set(r,o?sl(o,n):ze(n))}return[...t.values()]}function cs(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,cs(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 al(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 as(e,t){return{sourceKind:"unknown-api",sourceType:"api-field",confidence:"unknown",readonly:!0,evidence:[{file:e,reason:t}]}}function ls(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 Vm(e){let t=[...e].sort(Km),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 ZC(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 Km(e,t){return Cm(e.targetKind)-Cm(t.targetKind)||Um(e.confidence,t.confidence)||Rm(e.sourceKind)-Rm(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function Cm(e){return{"repeat-region":0,"conditional-region":1,text:2,richtext:3,attribute:4,"component-prop":5}[e]}function Rm(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function Um(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function cl(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=NC(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,jsxElementsByRange:new Map,functionVariables:new WeakMap};return Nm(o,{JSXElement(s){let a=s.node.loc;if(!a)return;let c=Fm({startLine:a.start.line,startColumn:a.start.column,endLine:a.end.line,endColumn:a.end.column});i.jsxElementsByRange.has(c)||i.jsxElementsByRange.set(c,s.node)},ImportDeclaration(s){let a=s.node.source.value;for(let c of s.node.specifiers)w.isImportSpecifier(c)&&w.isIdentifier(c.local)?i.imports.set(c.local.name,{source:a,importedName:w.isIdentifier(c.imported)?c.imported.name:c.imported.value,localName:c.local.name,isDefault:!1}):w.isImportDefaultSpecifier(c)&&i.imports.set(c.local.name,{source:a,importedName:"default",localName:c.local.name,isDefault:!0})},FunctionDeclaration(s){s.node.id?.name&&i.functions.set(s.node.id.name,s.node)},VariableDeclarator(s){let a=s.getFunctionParent(),c=a&&(w.isFunctionDeclaration(a.node)||w.isFunctionExpression(a.node)||w.isArrowFunctionExpression(a.node))?a.node:null,l=c?i.functionVariables.get(c)??new Map:i.variables;c&&!i.functionVariables.has(c)&&i.functionVariables.set(c,l);for(let u of hr(s.node.id))l.set(u,w.isExpression(s.node.init)?s.node.init:null);if(w.isArrayPattern(s.node.id)&&w.isCallExpression(s.node.init)&&Bt(s.node.init.callee)==="useState"){let[u,f]=s.node.id.elements;w.isIdentifier(u)&&w.isIdentifier(f)&&i.stateSetters.set(u.name,f.name)}w.isIdentifier(s.node.id)&&wm(s.node.init)&&i.functions.set(s.node.id.name,s.node.init)},ExportNamedDeclaration(s){let a=s.node.declaration,c=s.node.source?.value;if(c)for(let l of s.node.specifiers){if(!w.isExportSpecifier(l))continue;let u=w.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(w.isFunctionDeclaration(a)&&a.id?.name&&i.functions.set(a.id.name,a),w.isVariableDeclaration(a))for(let l of a.declarations)w.isIdentifier(l.id)&&wm(l.init)&&i.functions.set(l.id.name,l.init)},ExportDefaultDeclaration(s){let a=s.node.declaration;if((w.isFunctionDeclaration(a)||w.isFunctionExpression(a)||w.isArrowFunctionExpression(a))&&i.functions.set("default",a),w.isIdentifier(a)){let c=i.functions.get(a.name);c&&i.functions.set("default",c)}}}),n.set(e,i),i}function hr(e){return!e||w.isVoidPattern(e)?[]:w.isIdentifier(e)?[e.name]:w.isObjectPattern(e)?e.properties.flatMap(t=>w.isObjectProperty(t)?hr(t.value):hr(t.argument)):w.isArrayPattern(e)?e.elements.flatMap(t=>t?hr(w.isRestElement(t)?t.argument:t):[]):w.isAssignmentPattern(e)?hr(e.left):w.isRestElement(e)?hr(e.argument):[]}function wm(e){return w.isFunctionExpression(e)||w.isArrowFunctionExpression(e)}function Jm(e,t){let n=e.functions.get(t)??e.functions.get("default");return n?e.functionVariables.get(n):void 0}async function Xm(e,t){let n=await Hm(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return cl(n,r,t.fileCache)}function zm(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function Hm(e,t,n){return Nt(t)?Sn(e,t,n):null}function ds(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 QC(e){return e?ze(e):null}function ze(e){return{...e,evidence:e.evidence.map(t=>({...t})),...e.fieldMap?{fieldMap:Object.fromEntries(Object.entries(e.fieldMap).map(([t,n])=>[t,ze(n)]))}:{}}}import*as ul from"@babel/parser";import ll from"@babel/traverse";import*as Y from"@babel/types";import{classifySiteEditPropertyName as qC}from"@vcp-dev/contracts";var dl=typeof ll=="function"?ll:ll.default;function fl(e){let t=qC(e.propertyName);if(t.owner!=="generic")return ut("invalid-property",t.diagnostic?.message??`Property '${e.propertyName}' is not a generic property`);let n=e.selectionRef;if(!n)return ut("missing-selection-ref","A repeat property target requires a complete selection reference");if(n.key!==e.element.identity.key)return ut("selection-mismatch","Selection reference does not identify the requested element");if(n.instanceIndex===void 0)return ut("missing-instance-index","A repeat property target requires an instance index");let r;try{r=ul.parse(e.source,{sourceType:"module",plugins:["typescript","jsx"]})}catch(S){return ut("repeat-not-found",`Unable to parse repeat source: ${S instanceof Error?S.message:String(S)}`)}let o=eR(r,e.element.sourceRange);if(!o)return ut("repeat-not-found","The selected element is not inside a supported map repeat");if(!Y.isIdentifier(o.callback.params[0]))return ut("unsupported-callback","Repeat property materialization requires an identifier callback item");let i=tR(r,o.collection,e.file,e.sources);if(!i)return ut("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||!Y.isObjectExpression(E)||!qm(E))return ut("unsafe-collection","Repeat materialization requires an array of local static objects without spreads");let y=[{kind:"index",index:S}];l.push(y),u.push({kind:"value",root:a.root,path:y})}let f=u.length;if(n.instanceCount!==void 0&&n.instanceCount!==f)return ut("count-mismatch",`Selection reports ${n.instanceCount} instances but the source collection has ${f}`);let m=n.instanceIndex;if(m>=f)return ut("index-out-of-range",`Selected repeat instance ${m} is outside the source collection`);let d=s.elements[m];if(!d||!Y.isObjectExpression(d))return ut("unsafe-collection","Selected repeat item is not an object");let g=aR(e.element,e.propertyName),h=iR(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:sR(d,e.propertyName),...g?{property:g}:{},selectionRef:n}:ut("unsafe-property-source",`Property '${e.propertyName}' has a dynamic or unsupported source in the repeat item`)}function eR(e,t){let n=[];return dl(e,{CallExpression(r){let o=Wm(r.node);o&&Ym(o.callback,t)&&n.push({...o,span:Gm(r.node)})},OptionalCallExpression(r){let o=Wm(r.node);o&&Ym(o.callback,t)&&n.push({...o,span:Gm(r.node)})}}),n.sort((r,o)=>r.span-o.span),n[0]??null}function Wm(e){let t=e.callee;if(!Y.isMemberExpression(t)&&!Y.isOptionalMemberExpression(t)||t.computed||!Y.isIdentifier(t.property)||t.property.name!=="map"||!Y.isExpression(t.object))return null;let n=e.arguments[0];return!n||!Y.isExpression(n)||!Y.isArrowFunctionExpression(n)&&!Y.isFunctionExpression(n)?null:{collection:t.object,callback:n}}function tR(e,t,n,r){let o=Eo(t);if(o&&Y.isArrayExpression(o))return{array:o,locator:{kind:"value",root:{kind:"expression",sourceRange:tg(o)}},sourceFile:n};if(!Y.isIdentifier(t))return null;let i=[];if(dl(e,{VariableDeclarator(s){Y.isIdentifier(s.node.id)&&s.node.id.name===t.name&&s.node.init&&i.push(s.node)}}),i.length===1){let s=Eo(i[0].init);return!s||!Y.isArrayExpression(s)?null:{array:s,locator:{kind:"value",root:{kind:"binding",name:t.name}},sourceFile:n}}return nR(e,t.name,n,r)}function nR(e,t,n,r){if(!r)return null;for(let o of e.program.body){if(!Y.isImportDeclaration(o))continue;let i=o.specifiers.find(m=>m.local.name===t);if(!i||!Y.isStringLiteral(o.source)||!Y.isImportSpecifier(i))continue;let s=oR(n,o.source.value,r);if(!s)return null;let a=Y.isIdentifier(i.imported)?i.imported.name:i.imported.value,c=r.get(s);if(c===void 0)return null;let l;try{l=ul.parse(c,{sourceType:"module",plugins:["typescript","jsx"]})}catch{return null}let u=rR(l,a),f=u?Eo(u):null;return!f||!Y.isArrayExpression(f)?null:{array:f,locator:{kind:"value",root:{kind:"binding",name:a}},sourceFile:s}}return null}function rR(e,t){let n=null;return dl(e,{VariableDeclarator(r){n||!Y.isIdentifier(r.node.id)||r.node.id.name!==t||!r.node.init||!Y.isExpression(r.node.init)||(n=r.node.init)}}),n}function oR(e,t,n){let r=bn(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 Eo(e){return Y.isParenthesizedExpression(e)?Eo(e.expression):Y.isTSAsExpression(e)?Qm(e.typeAnnotation)?Eo(e.expression):null:Y.isTSSatisfiesExpression(e)?null:e}function Qm(e){return Y.isTSTypeReference(e)&&Y.isIdentifier(e.typeName)&&e.typeName.name==="const"}function qm(e){return e.properties.every(t=>!Y.isObjectProperty(t)||t.computed||!Y.isExpression(t.value)?!1:fs(t.value))}function fs(e){if(Y.isTSAsExpression(e)&&Qm(e.typeAnnotation))return fs(e.expression);if(Y.isTSSatisfiesExpression(e))return!1;if(Y.isArrayExpression(e))return e.elements.every(n=>!n||Y.isSpreadElement(n)||!Y.isExpression(n)?!1:fs(n));if(Y.isObjectExpression(e))return qm(e);let t=_t(e);return t.status==="resolved"||t.status==="undefined"}function iR(e,t){let n=e.properties.filter(o=>Y.isObjectProperty(o)&&eg(o.key)===t);if(n.length>1)return null;let r=n[0];return r?Y.isExpression(r.value)?fs(r.value)?"static":Y.isIdentifier(r.value)||Y.isMemberExpression(r.value)?"binding":null:null:"missing"}function sR(e,t){let n=e.properties.filter(o=>Y.isObjectProperty(o)&&eg(o.key)===t);if(n.length>1)return{status:"unresolved"};let r=n[0];return!r||!Y.isExpression(r.value)?{status:"undefined"}:_t(r.value)}function aR(e,t){let n=e.attributes?.filter(r=>r.name===t)??[];return n.length===1?n[0]:void 0}function eg(e){return Y.isIdentifier(e)?e.name:Y.isStringLiteral(e)?e.value:Y.isNumericLiteral(e)?String(e.value):null}function tg(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 Gm(e){return e.start==null||e.end==null?Number.MAX_SAFE_INTEGER:e.end-e.start}function Ym(e,t){let n=tg(e);return Zm(n.startLine,n.startColumn,t.startLine,t.startColumn)<=0&&Zm(n.endLine,n.endColumn,t.endLine,t.endColumn)>=0}function Zm(e,t,n,r){return e===n?t-r:e-n}function ut(e,t){return{ok:!1,errorCode:e,reason:t}}import{classifySiteEditPropertyName as HR}from"@vcp-dev/contracts";import*as Z from"@babel/types";import Ro from"node:path";import*as V from"@babel/types";import*as ag from"@babel/parser";import pl from"@babel/traverse";import*as ne from"@babel/types";function ms(e,t){let n=[],r=e;for(;ne.isMemberExpression(r);){if(r.computed)if(ne.isNumericLiteral(r.property))n.unshift({kind:"index",index:r.property.value});else if(ne.isStringLiteral(r.property))n.unshift({kind:"property",name:r.property.value});else return null;else{if(!ne.isIdentifier(r.property))return null;n.unshift({kind:"property",name:r.property.name})}r=r.object}return!ne.isIdentifier(r)||r.name!==t?null:n}function ng(e){if(ne.isIdentifier(e))return{base:e.name,path:[]};if(!ne.isMemberExpression(e))return null;let t=[],n=e;for(;ne.isMemberExpression(n);){if(n.computed)if(ne.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ne.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else{if(!ne.isIdentifier(n.property))return null;t.unshift({kind:"property",name:n.property.name})}n=n.object}return ne.isIdentifier(n)?{base:n.name,path:t}:null}function qe(e,t){let n=e;for(let r of t){if(r.kind==="property"){if(n===null||Array.isArray(n)||typeof n!="object"||!(r.name in n))return;n=n[r.name];continue}if(!Array.isArray(n)||r.index<0||r.index>=n.length)return;n=n[r.index]}return n}var $t=Symbol("not-closed-literal");function ps(e){switch(e.type){case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":return e.value;case"NullLiteral":return null;case"TemplateLiteral":return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:$t;case"TSAsExpression":case"TSSatisfiesExpression":case"TSNonNullExpression":return ps(e.expression);case"ArrayExpression":{let t=[];for(let n of e.elements){if(!n||ne.isSpreadElement(n))return $t;let r=ps(n);if(r===$t)return $t;t.push(r)}return t}case"ObjectExpression":{let t={};for(let n of e.properties){if(!ne.isObjectProperty(n)||n.computed||n.shorthand||!ne.isExpression(n.value))return $t;let r=ne.isIdentifier(n.key)?n.key.name:ne.isStringLiteral(n.key)?n.key.value:null;if(!r)return $t;let o=ps(n.value);if(o===$t)return $t;t[r]=o}return t}default:return $t}}function rg(e){let{resolveBindingTarget:t}=e;async function n(i,s,a,c,l,u,f){let m=ps(i);if(m!==$t)return m;if(!ne.isTemplateLiteral(i)){if(ne.isTSAsExpression(i)||ne.isTSSatisfiesExpression(i)||ne.isTSNonNullExpression(i))return await n(i.expression,s,a,c,l,u,f);if(ne.isIdentifier(i)){let d=s.getBinding(i.name);if(!d)return;let g=await t({currentFile:a,binding:d,readFile:c,exists:l,fileCache:u,visited:f});return g?.kind==="static"?g.value:void 0}if(ne.isArrayExpression(i)){let d=[];for(let g of i.elements){if(!g||ne.isSpreadElement(g))return;let h=await r(g,s,a,c,l,u,f);if(h===void 0)return;d.push(h)}return d}if(ne.isObjectExpression(i)){let d={};for(let g of i.properties){if(!ne.isObjectProperty(g)||g.computed)return;let h=null;if(ne.isIdentifier(g.key)?h=g.key.name:ne.isStringLiteral(g.key)&&(h=g.key.value),!h)return;if(g.shorthand){if(!ne.isIdentifier(g.value))return;let E=await r(g.value,s,a,c,l,u,f);if(E===void 0)return;d[h]=E;continue}if(!ne.isExpression(g.value))return;let S=await r(g.value,s,a,c,l,u,f);S!==void 0&&(d[h]=S)}return d}if(ne.isMemberExpression(i)){let d=await o(i,s,a,c,l,u,f);if(!d)return;let g=s.getBinding(d.base);if(!g)return;let h=await t({currentFile:a,binding:g,readFile:c,exists:l,fileCache:u,visited:f});return!h||h.kind!=="static"?void 0:qe(h.value,d.path)}}}async function r(i,s,a,c,l,u,f){if(!ne.isSpreadElement(i))return await n(i,s,a,c,l,u,f)}async function o(i,s,a,c,l,u,f){if(ne.isIdentifier(i))return{base:i.name,path:[]};if(!ne.isMemberExpression(i))return null;let m=[],d=i;for(;ne.isMemberExpression(d);){if(d.computed){let g=d.property;if(ne.isNumericLiteral(g))m.unshift({kind:"index",index:g.value});else if(ne.isStringLiteral(g))m.unshift({kind:"property",name:g.value});else{let h=ne.isExpression(g)?await n(g,s,a,c,l,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(!ne.isIdentifier(d.property))return null;m.unshift({kind:"property",name:d.property.name})}d=d.object}return ne.isIdentifier(d)?{base:d.name,path:m}:null}return{normalizeExpressionWithScope:o,evaluateStaticExpression:n}}var cg=typeof pl=="function"?pl:pl.default,og=new WeakMap;function lg(e){try{return ag.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function gs(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=lg(n);return e.set(t,{source:n,ast:o}),o}function hs(e,t){return gl(vo(e).expressionRanges,t,!1)}function ug(e,t){return vo(e).exactExpressions.get(dg(t))??null}function ml(e,t){return gl(vo(e).jsxRanges,t,!0)}function vo(e){let t=og.get(e);if(t)return t;let n={expressions:[],expressionRanges:[],jsxRanges:[],exactExpressions:new Map};return cg(e,{Expression(r){let o=r;n.expressions.push(o);let i=ig(o,n.expressions.length-1);if(!i)return;n.expressionRanges.push(i);let s=dg(i.range),a=n.exactExpressions.get(s);(!a||i.span<=(a.node.end??0)-(a.node.start??0))&&n.exactExpressions.set(s,o)},JSXElement(r){let o=ig(r,n.jsxRanges.length);o&&n.jsxRanges.push(o)}}),n.expressionRanges.sort(sg),n.jsxRanges.sort(sg),og.set(e,n),n}function ig(e,t){let n=ko(e.node);return n?{path:e,range:n,traversalIndex:t,span:(e.node.end??0)-(e.node.start??0)}:null}function dg(e){return`${e.startLine}:${e.startColumn}:${e.endLine}:${e.endColumn}`}function sg(e,t){return e.range.startLine-t.range.startLine||e.range.startColumn-t.range.startColumn||e.traversalIndex-t.traversalIndex}function gl(e,t,n,r){let o=0,i=e.length;for(;o<i;){let c=o+Math.floor((i-o)/2),l=e[c].range;l.startLine<t.startLine||l.startLine===t.startLine&&l.startColumn<t.startColumn?o=c+1:i=c}let s=null,a=n?1/0:-1;for(let c=o;c<e.length;c++){let l=e[c],u=l.range;if(u.startLine>t.endLine||u.startLine===t.endLine&&u.startColumn>t.endColumn)break;if(u.endLine>t.endLine||u.endLine===t.endLine&&u.endColumn>t.endColumn||r&&!r(l.path))continue;((n?l.span<a:l.span>a)||l.span===a&&(!s||l.traversalIndex>s.traversalIndex))&&(s=l,a=l.span)}return s?.path??null}function ko(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 yr(e,t){if(t)return hl(e,t);let n=ng(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function hl(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 vo(e).expressions){if(hl(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function fg(e,t,n,r){return gl(vo(e).expressionRanges,r,!0,o=>hl(o.node,t)===n)}function xr(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}function Co(e){let t=null;if(cg(e,{Program(n){t=n.scope,n.stop()}}),!t)throw new Error("Unable to determine program scope");return t}async function Vt(e,t,n){let r=n.get(e);if(r)return r;let o=await t(e),i=lg(o),s={source:o,ast:i};return n.set(e,s),s}function cR(e){return V.isIdentifier(e.callee)&&(e.callee.name==="useState"||e.callee.name==="useReducer")?e.callee.name:V.isMemberExpression(e.callee)&&V.isIdentifier(e.callee.property)&&(e.callee.property.name==="useState"||e.callee.property.name==="useReducer")?e.callee.property.name:null}function lR(e){if(!V.isNewExpression(e)||!V.isIdentifier(e.callee,{name:"Proxy"})||e.arguments.length!==2||!V.isIdentifier(e.arguments[0])||!V.isObjectExpression(e.arguments[1])||e.arguments[1].properties.length!==1)return null;let[t]=e.arguments[1].properties;if(!V.isObjectMethod(t)||t.kind!=="method"||t.computed||t.async||t.generator||!V.isIdentifier(t.key,{name:"get"})||t.params.length!==3||!t.params.every(V.isIdentifier)||t.body.body.length!==2)return null;let[n,r,o]=t.params,[i,s]=t.body.body;if(V.isIfStatement(i)&&V.isBlockStatement(i.consequent)&&i.consequent.body.length!==1)return null;let a=V.isIfStatement(i)?i.test:null,c=a&&V.isLogicalExpression(a,{operator:"&&"})?a.right:null,l=V.isIfStatement(i)?V.isBlockStatement(i.consequent)?i.consequent.body[0]:i.consequent:null,u=V.isReturnStatement(s)?s.argument:null;return!a||!V.isLogicalExpression(a,{operator:"&&"})||!V.isBinaryExpression(a.left,{operator:"==="})||!V.isUnaryExpression(a.left.left,{operator:"typeof"})||!V.isIdentifier(a.left.left.argument,{name:r.name})||!V.isStringLiteral(a.left.right,{value:"string"})||!V.isUnaryExpression(c,{operator:"!"})||!V.isBinaryExpression(c.argument,{operator:"in"})||!V.isIdentifier(c.argument.left,{name:r.name})||!V.isIdentifier(c.argument.right,{name:n.name})||!V.isReturnStatement(l)||!V.isIfStatement(i)||i.alternate||!V.isCallExpression(u)||!V.isMemberExpression(u.callee)||!V.isIdentifier(u.callee.object,{name:"Reflect"})||!V.isIdentifier(u.callee.property,{name:"get"})||u.arguments.length!==3||!V.isIdentifier(u.arguments[0],{name:n.name})||!V.isIdentifier(u.arguments[1],{name:r.name})||!V.isIdentifier(u.arguments[2],{name:o.name})?null:e.arguments[0].name}function uR(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()||!V.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 dR(e,t){let n=uR(e.path);if(!n)return null;let r=ar(e,t);return r?{...n,...r}:null}function fR(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}function yl(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 xl(e,t){for(let n of e.program.body){if(t==="default"&&V.isExportDefaultDeclaration(n))return V.isExpression(n.declaration)?{kind:"default-expression",expression:n.declaration}:(V.isFunctionDeclaration(n.declaration)||V.isClassDeclaration(n.declaration))&&n.declaration.id?{kind:"default-binding",name:n.declaration.id.name}:null;if(V.isExportNamedDeclaration(n)){if(n.declaration){if(V.isVariableDeclaration(n.declaration)){for(let r of n.declaration.declarations)if(V.isIdentifier(r.id)&&r.id.name===t)return{kind:"local-binding",name:r.id.name}}if((V.isFunctionDeclaration(n.declaration)||V.isClassDeclaration(n.declaration))&&n.declaration.id&&n.declaration.id.name===t)return{kind:"local-binding",name:t}}for(let r of n.specifiers)if((V.isIdentifier(r.exported)?r.exported.name:r.exported.value)===t&&V.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 pg(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:y,visited:v}=d,C=`${g}::${h.kind}::${h.identifier.name}`;if(v.has(C))return null;v.add(C);try{let N=await a({currentFile:g,binding:h,readFile:S,exists:E,fileCache:y,visited:v});if(N)return N;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:y,visited:v});if(h.kind==="param")return null;if(h.path.isVariableDeclarator()){let A=h.path.node.init;if(!A||!V.isExpression(A))return null;let R=lR(A);if(R&&!h.path.scope.getBinding("Proxy")&&!h.path.scope.getBinding("Reflect")){let D=h.path.scope.getBinding(R),L=D?await s({...d,binding:D}):null;if(L?.kind==="static"&&L.value!==null&&!Array.isArray(L.value)&&typeof L.value=="object")return L}let F=h.path.get("init");if(F&&!Array.isArray(F)&&F.isExpression()){let D=await t({currentFile:g,expressionPath:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(D)return D;if(F.isCallExpression()){let L=await n({currentFile:g,callPath:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(L)return L}}let _=await r(A,h.path.scope,g,S,E,y,v);return _===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:_,sourceKind:"binding"}}if(h.path.isIdentifier()&&h.path.parentPath?.isExportDefaultDeclaration()){let A=h.path.parentPath.node.declaration;if(!V.isExpression(A))return null;let R=await r(A,h.path.scope,g,S,E,y,v);return R===void 0?null:{kind:"static",file:g,root:{kind:"binding",name:h.identifier.name},value:R,sourceKind:"binding"}}return null}finally{v.delete(C)}}async function a(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:y,visited:v}=d;if(!h.path.isVariableDeclarator()||!h.path.get("id").isArrayPattern())return null;let C=h.path,N=C.node.init;if(!N||!V.isCallExpression(N))return null;let A=cR(N);if(!A||!V.isArrayPattern(C.node.id)||C.node.id.elements.findIndex(L=>V.isIdentifier(L)&&L.name===h.identifier.name)!==0)return null;let F=A==="useReducer"?1:0,_=N.arguments[F];if(!_||!V.isExpression(_))return null;let D=await r(_,C.scope,g,S,E,y,v);return D===void 0?null:{kind:"static",file:g,root:{kind:"hook-state",name:h.identifier.name,hook:A},value:D,sourceKind:"binding"}}async function c(d){let g=dR(d.binding,d.sourceInfo);if(!g||!d.graph)return null;let h=[...d.graph.elements.values()].filter(A=>fR(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 yl(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 yl(A,{componentName:g.componentName,propName:g.propName,file:S.sourceFile});let R=yp(d.binding,g.componentName,g.propName);if(!R||R.propName!==g.propName)return null;let F=await r(R.expressionPath.node,R.expressionPath.scope,d.currentFile,d.readFile,d.exists,d.fileCache,d.visited);if(F===void 0)return null;let _=g.remainingPath;return _.length>0&&qe(F,_)===void 0?null:{kind:"value",file:d.currentFile,root:{kind:"binding",name:g.propName},path:_,sourceKind:"binding",semanticKind:"component-prop",displayExpression:R.displayPath,chainPrefix:[{kind:"component-prop",file:d.currentFile,displayName:R.displayPath,canEditHere:!0}],editMode:"upstream",diagnostics:[]}}let y=await Vt(S.sourceFile,d.readFile,d.fileCache);if(!y.ast)return null;let v=fg(y.ast,y.source,E.source.expression,E.sourceRange)??Io(y.ast,y.source,E.source.expression);if(!v)return null;let C={...E.source,expression:xr(E.source.expression,g.remainingPath),path:[...E.source.path,...g.remainingPath]},N=await o({currentFile:S.sourceFile,expressionPath:v,sourceInfo:C,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 N?yl(N.kind==="external"?N:{...N,displayExpression:C.expression},{componentName:g.componentName,propName:g.propName,file:S.sourceFile}):null}async function l(d){let g=await Vt(d.caller.sourceFile,d.readFile,d.fileCache);if(!g.ast)return null;let h=ml(g.ast,d.caller.sourceRange);if(!h)return null;let S=h.get("openingElement").get("attributes").find(C=>C.isJSXAttribute()&&C.node.name.type==="JSXIdentifier"&&C.node.name.name===d.propName);if(!S?.isJSXAttribute())return null;let E=S.get("value"),y=E.isStringLiteral()?E:E.isJSXExpressionContainer()?E.get("expression"):null;if(!y?.isExpression())return null;let v=ko(y.node);return v?{kind:"value",file:d.caller.sourceFile,root:{kind:"expression",sourceRange:v},path:d.remainingPath,sourceKind:"binding",semanticKind:"component-prop",displayExpression:d.propName,editMode:"upstream",diagnostics:[]}:null}async function u(d){let g=await Vt(d.caller.sourceFile,d.readFile,d.fileCache);if(!g.ast)return null;let h=ml(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 y=E.get("argument");if(!y.isExpression())continue;let v=await i({expression:y.node,scope:y.scope,source:g.source,currentFile:d.caller.sourceFile,readFile:d.readFile,exists:d.exists,fileCache:d.fileCache,visited:d.visited});if(!v)continue;let C=[{kind:"property",name:d.propName},...d.remainingPath],N={...v,expression:xr(v.expression,C),path:[...v.path,...C]},A=await o({currentFile:d.caller.sourceFile,expressionPath:y,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});if(A)return A.kind==="external"?A:{...A,displayExpression:N.expression}}return null}async function f(d){let{currentFile:g,binding:h,readFile:S,exists:E,fileCache:y,visited:v}=d,C=h.path.parentPath;if(!C||!C.isImportDeclaration())return null;let N=C.node.source.value;if(typeof N!="string")return null;let A=await Sn(g,N,E);if(!A)return null;if(h.path.isImportDefaultSpecifier()){let oe=await Vt(A,S,y),me=oe.ast?xl(oe.ast,"default"):null,ee=await m({file:A,exportName:"default",readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return!ee||ee.kind!=="static"?null:{kind:"static",file:me?.kind==="default-expression"?ee.file:A,root:me?.kind==="default-expression"?ee.root:{kind:"default-export"},value:ee.value,sourceKind:"imported-binding"}}if(!h.path.isImportSpecifier())return null;let R=h.path.node.imported,F=V.isIdentifier(R)?R.name:R.value,_=await Vt(A,S,y),D=_.ast?xl(_.ast,F):null,L=await m({file:A,exportName:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return L?L.kind==="external"?L:{kind:"static",file:D?.kind==="re-export"?L.file:A,root:D?.kind==="re-export"||L.root.kind==="binding"&&L.root.name!==D?.name?L.root:{kind:"named-export",name:F},value:L.value,sourceKind:"imported-binding"}:null}async function m(d){let{file:g,exportName:h,readFile:S,exists:E,fileCache:y,visited:v}=d,C=`export::${g}::${h}`;if(!v.has(C)){v.add(C);try{let N=await Vt(g,S,y);if(!N.ast)return;let A=xl(N.ast,h);if(!A)return;if(A.kind==="default-expression"){let D=A.expression;if(!D||!V.isIdentifier(D))return;let L=Co(N.ast).getBinding(D.name);return L?await s({currentFile:g,binding:L,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v})??void 0:void 0}if(A.kind==="re-export"){if(!A.source||!A.name)return;let D=await Sn(g,A.source,E);return D?m({...d,file:D,exportName:A.name}):void 0}let R=A.name;if(!R)return;let F=Co(N.ast).getBinding(R);return F?await s({currentFile:g,binding:F,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v})??void 0:void 0}finally{v.delete(C)}}}return{resolveExportValue:m,resolveComponentPropBinding:c,resolveBindingTarget:s}}import*as W from"@babel/types";function Sl(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=It(o,t);if(!i)return null;let s=r.parentPath;return!s||!s.isCallExpression()||!pR(s,r)?null:{callPath:s,basePath:i}}function pR(e,t){let n=e.node.callee;return!W.isMemberExpression(n)||!W.isIdentifier(n.property)||n.property.name!=="map"?!1:e.node.arguments.some(r=>r===t.node)}function hg(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:zi(r,t)}function mg(e,t){return e?W.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}function gg(e,t,n,r,o){let i=W.isExpression(e.body)?e.body:e.body.body.find(a=>W.isReturnStatement(a))?.argument;if(!i||!W.isExpression(i))return;let s=bl(i,t,n,r,o);return typeof s=="number"?s:void 0}function bl(e,t,n,r,o){if(W.isNumericLiteral(e)||W.isStringLiteral(e)||W.isBooleanLiteral(e))return e.value;if(W.isIdentifier(e))return e.name===t?r:e.name===n?o:void 0;if(W.isMemberExpression(e)){let i=ms(e,t);if(i)return qe(r,i);let s=ms(e,n);return s?qe(o,s):void 0}if(W.isBinaryExpression(e)&&e.operator==="-"){let i=W.isExpression(e.left)?bl(e.left,t,n,r,o):void 0,s=W.isExpression(e.right)?bl(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function mR(e){if(W.isExpression(e.body))return e.body;for(let t of e.body.body)if(W.isReturnStatement(t)&&t.argument&&W.isExpression(t.argument))return t.argument;return null}function gR(e,t,n){let r=jn(e,t,n);return typeof r=="boolean"?r:void 0}function jn(e,t,n){if(W.isStringLiteral(e)||W.isNumericLiteral(e)||W.isBooleanLiteral(e))return e.value;if(W.isNullLiteral(e))return null;if(W.isIdentifier(e))return e.name===t?n:void 0;if(W.isMemberExpression(e)){let r=ms(e,t);return r?qe(n,r):void 0}if(W.isUnaryExpression(e)&&e.operator==="!"){let r=jn(e.argument,t,n);return r===void 0?void 0:!r}if(W.isLogicalExpression(e)){let r=jn(e.left,t,n);if(r===void 0)return;if(e.operator==="&&")return r&&jn(e.right,t,n);if(e.operator==="||")return r||jn(e.right,t,n)}if(W.isBinaryExpression(e)){let r=W.isExpression(e.left)?jn(e.left,t,n):void 0,o=W.isExpression(e.right)?jn(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 yg(e){let t=[],n=e;for(;W.isMemberExpression(n)||W.isOptionalMemberExpression(n);){let r=n.property;if(n.computed)if(W.isNumericLiteral(r))t.unshift({kind:"index",index:r.value});else if(W.isStringLiteral(r))t.unshift({kind:"property",name:r.value});else if(W.isExpression(r))t.unshift({kind:"dynamic",expression:r});else return null;else if(W.isIdentifier(r))t.unshift({kind:"property",name:r.name});else return null;n=n.object}return W.isIdentifier(n)?{base:n.name,segments:t}:null}function xg(e){return e.some(t=>t.kind==="dynamic")}function hR(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}function bg(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 yR(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 Sg(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:y,visited:v}=d,C=h.node.callee;if(!W.isMemberExpression(C)||!W.isIdentifier(C.property)||C.property.name!=="map")return null;let N=h.get("callee");if(!N.isMemberExpression())return null;let A=N.get("object");if(Array.isArray(A)||!A.isExpression())return null;let R=await s({currentFile:g,expressionPath:A,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return!R||!Array.isArray(R.value)||R.value.length===0?null:R}async function s(d){let{currentFile:g,expressionPath:h,readFile:S,exists:E,fileCache:y,visited:v}=d;if(h.isIdentifier()){let C=h.scope.getBinding(h.node.name);if(!C)return null;let N=await t({currentFile:g,binding:C,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});return N?.kind==="static"?N: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:y,visited:v});if(h.isTSAsExpression()||h.isTSSatisfiesExpression()||h.isTSNonNullExpression()){let C=h.get("expression");if(!Array.isArray(C)&&C.isExpression())return s({...d,expressionPath:C})}if(h.isArrayExpression()){let C=ko(h.node);if(!C)return null;let N=await n(h.node,h.scope,g,S,E,y,v);return Array.isArray(N)?{kind:"static",file:g,root:{kind:"expression",sourceRange:C},value:N,sourceKind:"binding"}:null}if(h.isMemberExpression()){let C=await r({expression:h.node,scope:h.scope,currentFile:g,readFile:S,exists:E,fileCache:y,visited:v});if(!C)return null;let N=await o({currentFile:g,expressionPath:h,sourceInfo:C,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(!N||N.kind==="external")return null;let A=await a({currentFile:g,expressionPath:h,provenance:N,readFile:S,exists:E,graph:d.graph,externalSourceResolvers:d.externalSourceResolvers,externalAdapters:d.externalAdapters,functionCallContracts:d.functionCallContracts,fileCache:y,visited:v});if(!A||A.kind!=="static")return null;if(N.collectionPathMap?.length){let F=yR(A.value,N.collectionPathMap);if(F)return{kind:"static",file:N.file,root:N.root,value:F.value,sourceKind:N.sourceKind,collectionPathMap:F.collectionPathMap}}let R=qe(A.value,N.path);return Array.isArray(R)?{kind:"static",file:N.file,root:N.root,value:R,sourceKind:N.sourceKind,pathPrefix:N.path,collectionIndexMap:N.collectionIndexMap,collectionPathMap:N.collectionPathMap}:null}return null}async function a(d){let{provenance:g}=d;if(g.root.kind==="binding"){let y=d.expressionPath.scope.getBinding(g.root.name);if(!y&&g.file!==d.currentFile){let v=await Vt(g.file,d.readFile,d.fileCache);y=v.ast?Co(v.ast).getBinding(g.root.name):void 0}return y?await t({currentFile:g.file,binding:y,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 Vt(g.file,d.readFile,d.fileCache);if(!h.ast)return null;let S=ug(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(!W.isMemberExpression(h)||!W.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 y=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(!y||!Array.isArray(y.value))return null;let[v]=g.node.arguments;if(!W.isArrowFunctionExpression(v)&&!W.isFunctionExpression(v))return null;let C=v.params[0];if(!W.isIdentifier(C))return null;let N=mR(v);if(!N)return null;let A=[],R=[],F=[];for(let[_,D]of y.value.entries()){let L=gR(N,C.name,D);if(typeof L!="boolean")return null;if(L){A.push(D),R.push(y.collectionIndexMap?.[_]??_);let oe=y.collectionPathMap?.[_];oe&&F.push(oe)}}return{...y,value:A,pathPrefix:y.pathPrefix,collectionIndexMap:R,...F.length>0?{collectionPathMap:F}:{}}}async function u(d){let{callPath:g}=d,h=g.node.callee;if(!W.isMemberExpression(h)||!W.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 y=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(!y||!Array.isArray(y.value))return null;let[v,C]=g.node.arguments,N=mg(v,0),A=mg(C,y.value.length);if(N===null||A===null)return null;let R=Math.max(0,N<0?y.value.length+N:N),F=Math.max(0,A<0?y.value.length+A:A),_=y.value.map((L,oe)=>y.collectionIndexMap?.[oe]??oe).slice(R,F),D=y.collectionPathMap?.slice(R,F);return{...y,value:y.value.slice(R,F),pathPrefix:y.pathPrefix,collectionIndexMap:_,...D?{collectionPathMap:D}:{}}}async function f(d){let{callPath:g}=d,h=g.node.callee;if(!W.isMemberExpression(h)||!W.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 y=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(!y||!Array.isArray(y.value))return null;let[v]=g.node.arguments;if(!W.isArrowFunctionExpression(v)&&!W.isFunctionExpression(v))return null;let[C,N]=v.params;if(!W.isIdentifier(C)||!W.isIdentifier(N))return null;let A=y.value.map((F,_)=>({value:F,sourceIndex:y.collectionIndexMap?.[_]??_,originalIndex:_})),R=[...A];for(let F of A)for(let _ of A)if(gg(v,C.name,N.name,F.value,_.value)===void 0)return null;return R.sort((F,_)=>{let D=gg(v,C.name,N.name,F.value,_.value)??0;return D===0?F.originalIndex-_.originalIndex:D}),{...y,value:R.map(F=>F.value),pathPrefix:y.pathPrefix,collectionIndexMap:R.map(F=>F.sourceIndex),...y.collectionPathMap?{collectionPathMap:R.map(F=>y.collectionPathMap?.[F.originalIndex]).filter(F=>!!F)}:{}}}async function m(d){let g=null,h,S=[];for(let y of d.segments){if(y.kind!=="dynamic")continue;let v=await r({expression:y.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(!v)return null;let C=Sl(d.expressionPath,v.base);if(!C)return null;let N=await i({currentFile:d.currentFile,callPath:C.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(!N||!Array.isArray(N.value))return null;let A=N.value.map((R,F)=>{let _=qe(N.value,[{kind:"index",index:F},...C.basePath,...v.path]);return hR(_)});if(A.some(R=>R===null)||g!==null&&g!==A.length)return null;g=A.length,h??=N.collectionIndexMap,S.push(A)}if(g===null||g===0)return null;let E=[];for(let y=0;y<g;y+=1){let v=[...d.rootPath],C=0;for(let N of d.segments){if(N.kind==="dynamic"){let A=S[C]?.[y];if(!A)return null;v.push(A),C+=1;continue}v.push({...N})}E.push(v)}return{...h?{collectionIndexMap:h}:{},collectionPathMap:E}}return{resolveRepeatCollectionTarget:i,resolveCollectionCallTarget:c,resolveDynamicMemberPathMap:m}}var{normalizeExpressionWithScope:xR,evaluateStaticExpression:ys}=rg({resolveBindingTarget:e=>xs(e)}),{resolveRepeatCollectionTarget:bR,resolveCollectionCallTarget:SR,resolveDynamicMemberPathMap:ER}=Sg({resolveBindingTarget:e=>xs(e),evaluateStaticExpression:ys,buildExpressionSourceInfo:Kt,resolveSourceInfoProvenance:St}),{resolveExportValue:vR,resolveComponentPropBinding:kR,resolveBindingTarget:xs}=pg({resolveExternalExpression:wl,resolveCollectionCallTarget:SR,evaluateStaticExpression:ys,resolveSourceInfoProvenance:St,buildExpressionSourceInfo:Kt});function Pg(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}var Eg=new WeakMap;function IR(e){let t=Eg.get(e);return t||(t=new WeakMap,Eg.set(e,t)),t}function vg(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 Ag(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=gs(s,t,n);if(!a)return null;let c=hs(a,r.sourceRange);if(!c)return null;let l=await Kt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:o,exists:i,fileCache:s,visited:new Set});if(!l){let m=await Tl({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?kl(m,yr(c.node,n)):null}let u=new Set,f=await zR({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?kl(f,l.expression):null}async function br(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=gs(i,t,n);if(!s)return null;let a=e.sourceRange?hs(s,e.sourceRange):e.expression!==void 0?Io(s,n,e.expression):null;if(!a)return null;let c=bs(a);if(!c.isIdentifier()&&!c.isMemberExpression())return null;let l=new Set,u=await Kt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:r,exists:o,fileCache:i,visited:l}),f=u?await St({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 Bg({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 kl(f,e.expression??yr(c.node,n))}async function Rl(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=gs(i,t,n);if(!s)return dt("unsupported-expression","Unable to parse source for provenance resolution");let a=new Set;return e.target.kind==="text-segment"?CR({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}):RR({file:t,source:n,ast:s,candidate:e.target.candidate,readFile:r,exists:o,graph:e.graph,fileCache:i,visited:a})}async function Kt(e){if(Z.isIdentifier(e.expression))return{kind:"identifier",expression:e.expression.name,base:e.expression.name,path:[]};if(!Z.isMemberExpression(e.expression))return null;let t=await xR(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:yr(e.expression,e.source),base:t.base,path:t.path}:null}function kl(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 CR(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=hs(r,o.sourceRange),u=l?await Kt({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 kg(t,o.value);let m=await Tl({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"?Ng(t,m):Cl(t,yr(l.node,n),m):wR({expression:l.node,scope:l.scope,currentFile:t,source:n,readFile:i,exists:s,fileCache:a,visited:c,functionCallContracts:e.functionCallContracts})}if(!l)return dt("unsupported-expression","Unable to locate text expression for provenance resolution");let f=await St({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=Il(l.node);if(m)return dt(m.code,m.message);let d=l.scope.getBinding(u.base);if(d?.path.isVariableDeclarator()){let g=Il(d.path.node.init);if(g)return dt(g.code,g.message)}return d?.path.isVariableDeclarator()&&Z.isCallExpression(d.path.node.init)?NR("unsupported-expression",Og(d.path.node.init,e.functionCallContracts)):dt("unsupported-expression",`Unable to resolve provenance for expression "${u.expression}"`)}return f.kind==="external"?Ng(t,f):Cl(t,u.expression,f)}async function RR(e){let{file:t,source:n,ast:r,candidate:o,readFile:i,exists:s,fileCache:a,visited:c}=e;if(!o.conditionSource)return dt("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let l=Io(r,n,o.conditionExpression);if(!l)return dt("conditional-branch-unresolved",`Unable to locate conditional expression "${o.conditionExpression}"`);let u=await St({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 dt("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);if(u.kind==="external")return dt("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let f=Cl(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 kg(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 wR(e){let t=await Fg(e);if(t.length===0)return dt("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(PR(e.expression))return Tg(t);if(Mg(e.expression))return dt("unsupported-expression","i18n helpers require a static message id string");if(Z.isMemberExpression(e.expression)&&e.expression.computed&&!Z.isNumericLiteral(e.expression.property)&&!Z.isStringLiteral(e.expression.property))return dt("dynamic-key","Computed member expressions are not supported for provenance resolution");let[n]=t;return dt(n.code,n.message)}function dt(e,t){return{finalSource:null,chain:[],confidence:"unknown",editMode:"unsupported",diagnostics:[{code:e,message:t}]}}function NR(e,t){return Tg([{code:e,message:t}])}function Tg(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function PR(e){return Z.isCallExpression(e)||Z.isConditionalExpression(e)||Z.isLogicalExpression(e)||Z.isBinaryExpression(e)}function wo(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 Fg(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=Il(t);if(l)return[l];if(Z.isCallExpression(t))return[{code:"unsupported-expression",message:Og(t,c)}];if(Z.isMemberExpression(t)&&t.computed){let u=t.property;if(!Z.isNumericLiteral(u)&&!Z.isStringLiteral(u)){if(!Z.isExpression(u))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}];let m=await ys(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 Z.isBinaryExpression(t)?wo([...await El(t.left,t.right,e),{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]):Z.isLogicalExpression(t)?wo([...await El(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"}]):Z.isConditionalExpression(t)?wo([...await El(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 Il(e){return Mg(e)?Ig("i18n helpers require a static message id string"):MR(e)?Ig("CMS helpers require static entry id and field path string arguments"):null}async function El(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await Fg({...t,expression:o}));return r}function AR(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:[TR(e.sourceType)]}}async function wl(e){for(let n of BR){if(!Cg(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return wg(Rg(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(!Cg(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return wg(Rg(r),e.externalAdapters)}return null}function TR(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function FR(e){return{code:"external-source-readonly",message:e}}function Ig(e){return{code:"unsupported-expression",message:e}}function Nl(e){return!e||!Z.isCallExpression(e)?null:Z.isIdentifier(e.callee)?e.callee.name:Z.isMemberExpression(e.callee)&&!e.callee.computed&&Z.isIdentifier(e.callee.object)&&Z.isIdentifier(e.callee.property)?`${e.callee.object.name}.${e.callee.property.name}`:null}function Cg(e,t){if(!t||t.length===0)return!0;let n=Nl(e.node);return n?t.includes(n):!1}function Rg(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:wo(e.diagnostics??[])}:{match:e,diagnostics:[]}}function wg(e,t){let n=AR(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:wo([...e.diagnostics,...e.editMode==="readonly"||n.editMode==="readonly"?n.diagnostics:[]])}}function _R(e){if(!e.isCallExpression())return null;let t=e.node.callee;if(!Z.isIdentifier(t)||t.name!=="getCmsField")return null;let[n,r]=e.node.arguments;if(!n||!r||!Z.isStringLiteral(n)||!Z.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 MR(e){return!!e&&Z.isCallExpression(e)&&Z.isIdentifier(e.callee)&&e.callee.name==="getCmsField"&&(e.arguments.length<2||!Z.isStringLiteral(e.arguments[0])||!Z.isStringLiteral(e.arguments[1]))}function _g(e){if(!(!e||!Z.isCallExpression(e))){if(Z.isIdentifier(e.callee)&&e.callee.name==="t"){let[t]=e.arguments;return t&&Z.isStringLiteral(t)?t.value:null}if(Z.isMemberExpression(e.callee)&&!e.callee.computed&&Z.isIdentifier(e.callee.object)&&e.callee.object.name==="intl"&&Z.isIdentifier(e.callee.property)&&e.callee.property.name==="formatMessage"){let[t]=e.arguments;if(!t||!Z.isObjectExpression(t))return null;for(let n of t.properties)if(Z.isObjectProperty(n)&&!n.computed&&(Z.isIdentifier(n.key)&&n.key.name==="id"||Z.isStringLiteral(n.key)&&n.key.value==="id")&&Z.isStringLiteral(n.value))return n.value.value;return null}}}function Mg(e){return _g(e)===null}async function OR(e,t,n){let r=new Set,o=Ro.posix.dirname(e);for(;r.add(o),!(o==="."||o==="/");){let i=Ro.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"]:[Ro.posix.join(i,"locales"),Ro.posix.join(i,"messages")];for(let a of s){let c=Ro.posix.join(a,`${t}.json`);if(await n(c))return c}}return null}async function LR(e){let t=_g(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await OR(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function DR(e){if(!e.expressionPath.isCallExpression())return null;let t=e.expressionPath.node.callee;if(!Z.isIdentifier(t)||t.name!=="apiField")return null;let[n,r]=e.expressionPath.node.arguments;if(!n||!Z.isExpression(n))return null;let o=await ys(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:[FR("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var BR=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>_R(e)},{helperNames:["apiField"],resolve:e=>DR(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>LR({currentFile:e,expressionPath:t,exists:n})}];function Pl(e){return{...e,editMode:"readonly",diagnostics:[{code:"unsupported-expression",message:"Derived display values are readonly because no identity-preserving write target exists"}]}}function Ng(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 Cl(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=XR(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 jR=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function Al(e,t){let n=[...jR,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function Og(e,t){let n=e.callee;return Z.isIdentifier(n)&&Al(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 Tl(e){let t=await wl(e);if(t)return t;let n=await Lg({...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 Kt({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 St({...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 UR(e)}async function Lg(e){let t=await Rt({...e,allowComposed:!1});if(t?.kind!=="source")return null;let n=bs(e.expressionPath);return n.isIdentifier()||n.isMemberExpression()?t.provenance:Pl(t.provenance)}async function Rt(e){let t=bs(e.expressionPath),n=KR(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 Kt({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 St({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 Kt({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 St({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 Rt({...e,expressionPath:r,allowComposed:!0}),a=await Rt({...e,expressionPath:o,allowComposed:!1}),c=await Rt({...e,expressionPath:i,allowComposed:!1});return vl(s,a,c)}if(t.isCallExpression())return $R({...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 Rt({...e,expressionPath:r,allowComposed:!0}),s=await Rt({...e,expressionPath:o,allowComposed:!0});return vl(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 Rt({...e,expressionPath:r,allowComposed:!0}),s=await Rt({...e,expressionPath:o,allowComposed:!0});return vl(i,s)}if(t.isUnaryExpression()){let r=t.get("argument");return Array.isArray(r)||!r.isExpression()?null:Rt({...e,expressionPath:r,allowComposed:!0})}return null}finally{n&&e.visited.delete(n)}}function bs(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 $R(e){let t=Nl(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:Rt({...e,expressionPath:r,allowComposed:!1})}let n=e.expressionPath.get("callee");if(n.isMemberExpression()&&!n.node.computed){let r=n.node.property;if(Z.isIdentifier(r)&&(r.name==="toFixed"||r.name==="toString")){let o=n.get("object");return Array.isArray(o)||!o.isExpression()?null:Rt({...e,expressionPath:o,allowComposed:!1})}}return null}function vl(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!VR(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function VR(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 KR(e,t){return t.start==null||t.end==null?null:`safe-derived:${e}:${t.start}:${t.end}`}async function UR(e){if(!e.expressionPath.isCallExpression())return null;let t=Nl(e.expressionPath.node);if(!t)return null;let n=Al(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 Dg({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?Pl(i):null}async function Dg(e){let t=await wl({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 Kt({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 St({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 Tl({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 JR(e){if(!e.binding.path.isVariableDeclarator())return null;let t=e.binding.path.node.init;if(!t||!Z.isCallExpression(t))return null;let n=t.callee;if(!Z.isIdentifier(n))return null;let r=Al(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 Dg({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?Pl(a):null}function XR(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=xr(t,e.path);return{sourceId:o,displayPath:o}}async function zR(e){let t=e.segment.source;return t?St({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 St(e){let t=e.sourceInfo,n=Sl(e.expressionPath,t.base);if(n){let l=await bR({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=hg(n.callPath,[...n.basePath,...t.path]);return so(h)?vg(e.currentFile,h.sourceId,h.displayPath):null}let u=bg(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 Sn(e.currentFile,u.node.source.value,e.exists);if(!f)return null;let m=await vR({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=gp(r);if(o){let l=o.expressionPath,u=await Kt({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 St({...e,expressionPath:l,sourceInfo:{...u,expression:xr(u.expression,t.path),path:[...u.path,...t.path]}});if(f)return f}else if(r.constant){let f=`dynamic-alias:${e.currentFile}:${l.node.start}`;if(e.visited.has(f))return null;e.visited.add(f);try{let m=await Bg({...e,expressionPath:bs(l),memberSuffix:t.path});if(m?.kind==="value")return m}finally{e.visited.delete(f)}}if(t.path.length===0){let f=await Lg({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 kR({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 JR({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=Ji(r,t.path,IR(e.fileCache));if(so(s))return vg(e.currentFile,s.sourceId,s.displayPath);let a=await xs({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 Bg(e){let t=yg(e.expressionPath.node);if(!t||!xg(t.segments))return null;let n=await St({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 ER({...e,rootPath:n.path,segments:t.segments});if(!r)return null;let o=r.collectionPathMap.map(i=>[...i,...e.memberSuffix??[]]);if(e.memberSuffix){let i=e.expressionPath.scope.getBinding(t.base),s=i?await xs({...e,binding:i}):null;if(s?.kind!=="static"||o.some(a=>qe(s.value,a.slice(n.path.length))===void 0))return null}return{...n,path:o[0]??n.path,sourceKind:"repeat-template",displayExpression:yr(e.expressionPath.node,e.fileCache.get(e.currentFile)?.source),...r.collectionIndexMap?{collectionIndexMap:r.collectionIndexMap}:{},collectionPathMap:o}}async function jg(e){let t=HR(e.propertyName);if(t.owner==="blocked")return yn(t.owner,t.diagnostic);if(t.owner==="class-name-source"||t.owner==="style")return yn(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 yn("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 GR(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 yn("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}:yn("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?yn("generic",{code:"remove-exposes-spread",message:`Removing '${e.propertyName}' would expose an earlier spread source`}):WR(e,s.attribute)}async function WR(e,t){if(t.resolution&&t.resolution.status!=="resolved"&&!t.source){let r=await br({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}}:yn("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 br({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"?yn("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 GR(e,t){let n=t.source?.expression;if(!n)return;let r=await br({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:YR(r,e.propertyName)}}function YR(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 yn(e,t){return{status:"blocked",owner:e,...t?{diagnostic:t}:{}}}function $g(e){let{key:t,element:n,graph:r,provenances:o}=e,i=QR(t,n,r),s=i?.tag??($n(n.tag)?n.tag:n.componentName),a=i?.identity.key??Vg(n,r)??t,c=tw(i),l=nw(t,n,r,o,i),u=ZR(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:ew(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:u,impactScope:rw(u),alternativeStrategies:ow(u)}}function ZR(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return Fl(e,n)?"instance":!$n(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function Vg(e,t){if($n(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&qR(r,e.componentName));return n.length!==1?null:n[0].identity.key}function QR(e,t,n){if($n(t.tag))return t;let r=Fl(e,n);if(r)return r;let o=Vg(t,n);return o?n.elements.get(o)??null:null}function qR(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function ew(e,t){return $n(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function tw(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 nw(e,t,n,r,o){let i=new Set,s=Fl(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 Fl(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 rw(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function ow(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}function Jg(e){let t=e.isRepeat??(e.graph?pw(e.element,e.graph):!1),n=e.propertyProvenance??new Map,r=e.repeatTargets??new Map,o=fw(e.element.attributes??[]),i=[...r.values()].some(u=>u.ok),s=o.map(u=>iw({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:mw(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 iw(e){let{attribute:t,provenance:n,repeatTarget:r}=e,o=e.selectionRef?.instanceIndex!==void 0&&r?.ok===!0?r:null,i=sw(t,n,e.isRepeat),s=["selection","template"].map(S=>({scope:S,result:qi({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=aw(t,n,l,e.isRepeat),f=c?uw(c,e.element,t.name):void 0,m=s.filter(({result:S})=>S.ok).map(({scope:S})=>S),d=m.length>0?lw(n,o,e.element):"unsupported",g=o?"repeat-item":e.isRepeat?"repeat-template":"node",h=dw(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 sw(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 aw(e,t,n,r){return n?Kg(n.selectedResolution):t?.status==="blocked"?{status:"unresolved"}:r&&t?.status==="binding"?{status:"unresolved"}:Kg(cw(e))}function cw(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 Kg(e){return!e||e.status==="unresolved"?{status:"unresolved"}:e.status==="undefined"?{status:"undefined"}:{status:"resolved",value:e.value}}function lw(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 uw(e,t,n){return e.kind==="repeat-property"?{kind:"value-path",file:e.target.sourceFile,isProxy:e.target.sourceFile!==t.sourceFile,displayPath:Ug({...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:Ug(e.locator)}:{kind:"jsx-node",file:t.sourceFile,isProxy:!1,displayPath:t.componentName+" > "+n}}function dw(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 fw(e){let t=new Set;return e.filter(n=>t.has(n.name)?!1:(t.add(n.name),!0))}function pw(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 Ug(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 mw(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 gw(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var hw=160;function Xg(e,t,n,r={}){let o=er(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 zg(e,t,n,r,o,i,s,a,c,l,u){let f=er(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=Zg(m.textSegments,s),S=Qg(e,t,m,g,h),E=h?Sw(h):void 0,y=Ew(i,h),v=m.textSegments.map(R=>({index:R.index,value:R.value,editable:qg(R,g,s?.get(R.index)??null),source:o.get(R.index)??null})),C=Gg(m,t),N=m.childKeys.map(R=>{let F=t.elements.get(R);return F?{key:R,tag:F.tag,label:F.tag}:null}).filter(R=>R!==null),A=[];if(m.parentKey){let R=t.elements.get(m.parentKey);if(R)for(let F of R.childKeys){if(F===e)continue;let _=t.elements.get(F);_&&A.push({key:F,tag:_.tag,label:_.tag})}}return{composition:f,key:e,tag:m.tag,componentName:m.componentName,sourceFile:m.sourceFile,sourceLocator:Wg(m),label:m.tag,capabilities:S,writeTarget:i,effectiveWriteTarget:y,provenanceChain:E,componentSemantic:c,styleSource:l,conditional:a,...u?{dynamicData:u}:{},textSegments:v,boundaryKind:m.boundaryKind,isOpaque:m.isOpaque,ancestors:C,children:N,siblings:A}}function Hg(e,t,n,r,o,i,s,a){let c=er(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=Zg(l.textSegments,i),d=yw(l);return{composition:c,key:e,tag:l.tag,...d?{linkSourceKind:d}:{},componentName:l.componentName,sourceFile:l.sourceFile,sourceLocator:Wg(l),label:l.tag,capabilities:Qg(e,t,l,f,m),provenanceChain:m?{editMode:m.editMode,diagnostics:m.diagnostics.map(g=>({code:g.code,message:g.message}))}:void 0,...s?{dynamicData:s}:{},...a?{properties:a}:{},textSegments:l.textSegments.map(g=>{let h=o.get(g.index);return{index:g.index,editable:qg(g,f,i?.get(g.index)??null),source:h?{kind:h.kind}:null}}),boundaryKind:l.boundaryKind,isOpaque:l.isOpaque,ancestors:Gg(l,t)}}function yw(e){if(e.tag==="a")return"native-anchor";if(e.importedFrom==="next/link"&&e.exportName==="default")return"next-link";if(e.tag==="Link")return"unsupported"}function Wg(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:xw(e.sourceRange),structuralPath:e.identity.structuralPath,...bw(e.textSegments)}}function Gg(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 xw(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function bw(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,hw)}:{}}function Yg(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 Zg(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function Qg(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&&eh(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 qg(e,t,n){return!e.editable||!t.canUpdateText?!1:n?eh(n.editMode):!0}function eh(e){return e==="direct"||e==="proxy"||e==="upstream"}function Sw(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 Ew(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}:gw(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 _l=["set-class-name-source","apply-style-draft"];function th(e){let t=e.attributes?.find(n=>n.name==="className");if(!t)return{kind:"class-name-source",className:"",sourceKind:"missing",editable:!0,operationBoundary:_l,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:_l,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:_l}}function nh(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}),rh(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function rh(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}),rh(s,t,n,r,o))}}import oh from"node:path";function Ol(){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 sh(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=Cw(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 Ss(e){let t=()=>vw(e);return e.mutex?e.mutex.runExclusive(t):t()}async function vw(e){let t=await sh(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=kw(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 Ml({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 Ml({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 Ml({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 ih("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return ih("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 kw(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 Ml(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:Iw(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 ih(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function Iw(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 Cw(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)||oh.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=oh.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 Rw=50,ww=8*1024*1024;function uh(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??Rw),s=Math.max(0,t.maxUndoBytes??ww);return{prepareRewritePlan:a,execute:c,executeFilePlan:l,undo:u,redo:f};async function a(R){let F=[...R.steps].sort((ee,ce)=>ee.order-ce.order),_=F.filter(ee=>ee.type!=="invoke-external-adapter");if(_.length!==F.length)return{ok:!1,errorCode:"unsupported-operation",reason:"External adapter writes require a transactional prepare/commit/rollback contract."};let D=new Set(_.map(ee=>ee.file)),L=await y(D),oe=new Map(L.map(ee=>[ee.file,ee.exists===!1?"":ee.content])),me;for(let ee of _){let ce=lh(ee,oe.get(ee.file)??"");if(!ce.ok)return{ok:!1,errorCode:ce.errorCode,reason:ce.reason};oe.set(ee.file,ce.source),me=ce.selectionRef??me}return{ok:!0,filePlan:{operationId:R.operationId,kind:"source-edit",target:R.target,documentVersion:R.documentVersion,conflictPolicy:"compare-and-swap",edits:[...oe].map(([ee,ce])=>({operation:"upsert",file:ee,content:ce,baseContentHash:L.find(_e=>_e.file===ee)?.sha256??null}))},...me?{selectionRef:me}:{}}}async function c(R){let F=[...R.steps].sort((_e,Qt)=>_e.order-Qt.order),_=F.filter(_e=>_e.type!=="invoke-external-adapter"),D=F.filter(_e=>_e.type==="invoke-external-adapter"),L=new Set(_.map(_e=>_e.file));if(_.length>0&&D.length>0)return{ok:!1,operationId:R.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(R,D);let oe=await y(L),me=new Map;for(let _e of oe)me.set(_e.file,_e.exists===!1?"":_e.content);let ee;for(let _e of _){let Qt=me.get(_e.file)??"",qt=lh(_e,Qt);if(!qt.ok)return{ok:!1,operationId:R.operationId,errorCode:qt.errorCode,reason:qt.reason,rolledBack:!1};me.set(_e.file,qt.source),qt.selectionRef&&(ee=qt.selectionRef)}let ce=await C([...me].map(([_e,Qt])=>({file:_e,content:Qt,exists:!0,version:0,sha256:ke(Qt)})),oe);return ce.ok===!1?{ok:!1,operationId:R.operationId,errorCode:ce.rolledBack?"writeback-failed":"rollback-failed",reason:ce.reason,rolledBack:ce.rolledBack}:(n.push({operationId:R.operationId,preSnapshots:oe,postSnapshots:ce.snapshots,plan:R}),m(),r.length=0,{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:Math.max(...ce.snapshots.map(_e=>_e.version)),affectedFiles:[...L],...ee?{selectionRef:ee}:{}})}async function l(R){let F=new Set(R.edits.map(ce=>ce.file)),_=await y(F),D=E(R,_);if(D)return{ok:!1,operationId:R.operationId,errorCode:"stale-version",reason:D.reason,affectedFiles:[D.file],rolledBack:!1};let L=new Map(_.map(ce=>[ce.file,ce])),oe=R.edits.find(ce=>ce.operation==="create-only"&&L.get(ce.file)?.exists!==!1);if(oe)return{ok:!1,operationId:R.operationId,errorCode:"stale-version",reason:`MATERIALIZATION_INSTANCE_CONFLICT: create-only target already exists: ${oe.file}`,affectedFiles:[oe.file],rolledBack:!1};let me=R.edits.map(ce=>ce.operation==="delete"?{file:ce.file,content:"",exists:!1,version:0}:{file:ce.file,content:ce.content,exists:!0,version:0,sha256:ke(ce.content)}),ee=await C(me,_,new Set(R.edits.filter(ce=>ce.operation==="create-only").map(ce=>ce.file)));return ee.ok===!1?{ok:!1,operationId:R.operationId,errorCode:ee.rolledBack?"writeback-failed":"rollback-failed",reason:ee.reason,rolledBack:ee.rolledBack}:(n.push({operationId:R.operationId,preSnapshots:_,postSnapshots:ee.snapshots,plan:{operationId:R.operationId,kind:R.kind,target:R.target,documentVersion:R.documentVersion,steps:[],preSnapshots:_}}),m(),r.length=0,{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:Math.max(...ee.snapshots.map(ce=>ce.version)),affectedFiles:[...F]})}async function u(){let R=n.at(-1);if(!R)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to undo"};let F=await C(R.preSnapshots,R.postSnapshots);return F.ok===!1?{ok:!1,operationId:R.operationId,errorCode:F.rolledBack?"writeback-failed":"rollback-failed",reason:F.reason,rolledBack:F.rolledBack}:(n.pop(),r.push(R),{ok:!0,operationId:R.operationId,kind:R.plan.kind,target:R.plan.target,resultVersion:Math.max(...F.snapshots.map(_=>_.version)),affectedFiles:R.preSnapshots.map(_=>_.file)})}async function f(){let R=r.at(-1);if(!R)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to redo"};let F=await C(R.postSnapshots,R.preSnapshots);return F.ok===!1?{ok:!1,operationId:R.operationId,errorCode:F.rolledBack?"writeback-failed":"rollback-failed",reason:F.reason,rolledBack:F.rolledBack}:(r.pop(),n.push(R),m(),{ok:!0,operationId:R.operationId,kind:R.plan.kind,target:R.plan.target,resultVersion:Math.max(...F.snapshots.map(_=>_.version)),affectedFiles:R.postSnapshots.map(_=>_.file)})}function m(){for(;n.length>i;)n.shift();for(;n.length>0&&d()>s;)n.shift()}function d(){return n.reduce((R,F)=>R+g(F),0)}function g(R){return h(R.preSnapshots)+h(R.postSnapshots)}function h(R){return R.reduce((F,_)=>F+_.file.length+_.content.length,0)}async function S(R,F){let _=[];for(let D of F){let L=D.capability??"write-text",oe=o.find(ee=>ee.sourceType===D.sourceType&&(D.adapterId===void 0||ee.adapterId===D.adapterId)&&(ee.capabilities===void 0||ee.capabilities.includes(L)));if(!oe)return{ok:!1,operationId:R.operationId,errorCode:"unsupported-operation",reason:`No external adapter registered for ${D.sourceType}`,rolledBack:!1};let me=await oe.execute(D);if(!me.ok)return{ok:!1,operationId:R.operationId,errorCode:"writeback-failed",reason:me.reason??`External adapter failed for ${D.sourceType}`,rolledBack:!1};_.push(D.file)}return{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:0,affectedFiles:_}}function E(R,F){if(R.conflictPolicy!=="compare-and-swap")return null;let _=new Map(F.map(D=>[D.file,D]));for(let D of R.edits){if(D.operation==="create-only")continue;if(D.baseContentHash===void 0)return{file:D.file,reason:`Source file ${D.file} is missing baseContentHash. Reopen the file before saving.`};let L=_.get(D.file),oe=D.baseContentHash;if(oe===null){if(L?.exists!==!1)return{file:D.file,reason:`Source file ${D.file} was created or changed before save.`};continue}if(!oe)return{file:D.file,reason:`Source file ${D.file} is missing baseContentHash. Reopen the file before saving.`};if(L?.exists===!1||L?.sha256!==oe)return{file:D.file,reason:`Source file ${D.file} changed before save. Reload or explicitly overwrite the newer version.`}}return null}async function y(R){let F=[];for(let _ of R)F.push(await v(_));return F}async function v(R){if(!await e.exists(R))return{file:R,content:"",version:0,exists:!1};let _=Math.max(1,e.getVersion(R)),D=await e.readFile(R);return{file:R,content:D,version:_,exists:!0,sha256:ke(D)}}async function C(R,F,_=new Set){let D=[];try{for(let L of R){if(_.has(L.file)){if(!e.createExclusive)throw new Error("Create-only write requires atomic exclusive-create support.");await e.createExclusive(L.file,L.content)}else await N(L);let oe=e.bumpVersion(L.file);D.push(L.file),L.version=oe}}catch(L){let oe=await A(F.filter(ee=>D.includes(ee.file)));if(oe.ok===!1)return{ok:!1,reason:`Writeback failed, then rollback failed for ${oe.failedFiles.join(", ")}: ${ch(L)}`,rolledBack:!1,instanceConflict:ah(L)};let me=ah(L);return{ok:!1,reason:`${me?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${ch(L)}`,rolledBack:!0,instanceConflict:me}}return{ok:!0,snapshots:R.map(Nw)}}async function N(R){if(R.exists===!1){await e.deleteFile(R.file);return}await e.writeFile(R.file,R.content)}async function A(R){let F=[];for(let _ of R)try{await N(_),e.bumpVersion(_.file)}catch{F.push(_.file)}return F.length===0?{ok:!0}:{ok:!1,failedFiles:F}}}function ah(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function Nw(e){let t=e.exists!==!1;return{file:e.file,content:t?e.content:"",version:e.version,exists:t,...t?{sha256:ke(e.content)}:{}}}function ch(e){return e instanceof Error?e.message:String(e)}function lh(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 He(Qn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-import":return He(qn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-node":return He(Wn({source:t,locator:e.locator,removeWhitespace:e.removeWhitespace}));case"insert-child":return He(Gn({source:t,locator:e.parentLocator,node:e.node,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"update-text":return He(ei({source:t,locator:e.locator,segmentIndex:e.segmentIndex,newText:e.newText}));case"update-value":return He(_r({source:t,locator:e.locator,next:e.value}));case"update-array-item":return He(_r({source:t,locator:e.locator,next:e.value}));case"insert-bound-array-item":return He(ai({source:t,locator:e.locator,index:e.index,value:e.value}));case"insert-jsx-expression-child":return He(ni({source:t,locator:e.parentLocator,expression:e.expression,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"remove-bound-array-item":return He(ci({source:t,locator:e.locator,index:e.index}));case"move-array-item":return He(li({source:t,locator:e.locator,fromIndex:e.fromIndex,toIndex:e.toIndex}));case"move-node":return He(Yn({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"move-repeat-template-child":return He(ri({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 Pw(e,t);case"set-property-changes":return He(oi({source:t,locator:e.locator,changes:e.changes}));case"set-link-target":return He(ii({source:t,locator:e.locator,link:e.link,changes:e.changes}));case"set-property-binding":return He(si({source:t,locator:e.locator,name:e.name,object:e.object,property:e.property}));case"upsert-object-property":return He(di({source:t,objectLocator:e.locator,name:e.name,value:e.value}));default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function Pw(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!hd(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!==ke(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:gd({source:t,oldAttrRange:n.oldAttrRange,openingElementRange:n.openingElementRange,newAttrRaw:n.newAttrRaw})}}function He(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 Es,SiteEditCompositionContextSchema as Aw,SiteEditCompositionSelectorSchema as Tw}from"@vcp-dev/contracts";var Ze=class extends Error{constructor(t,n,r){super(n),this.code=t,this.details=r,this.name="SiteEditCompositionError"}};function dh(e,t){throw new Ze("INVALID_COMPOSITION",e,{value:t})}function vs(e){let t=Aw.safeParse(e);return t.success?t.data:dh("Invalid SiteEditCompositionContext.",e)}function fh(e){let t=[],n=new Map,r=new Map;for(let l of e.compositions){let u=vs(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new Ze("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Es(u);if(n.has(f))throw new Ze("DUPLICATE_COMPOSITION",`Composition key ${f} is registered more than once.`,{key:f,context:u});let m=r.get(l.entryFile);if(m)throw new Ze("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 Ze("INVALID_COMPOSITION","At least one composition must be registered.");let o=new Map;for(let l of e.initialDocumentVersions??[]){let u=vs(l?.composition);if(!Number.isInteger(l?.version)||(l?.version??-1)<0)throw new Ze("INVALID_INITIAL_DOCUMENT_VERSION","Initial document version must be a non-negative integer.",{context:u,version:l?.version});let f=Es(u);if(!n.has(f))throw new Ze("UNKNOWN_COMPOSITION","Initial document version references an unregistered composition.",{context:u,key:f});if(o.has(f))throw new Ze("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=Tw.safeParse(l);if(!u.success)return dh("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 Ze("AMBIGUOUS_COMPOSITION","The composition selector matches multiple registered contexts.",{selector:u.data}):new Ze("UNKNOWN_COMPOSITION","The composition selector is not registered.",{selector:u.data})}function s(l){let u=vs(l),f=Es(u),m=n.get(f);if(!m)throw new Ze("UNKNOWN_COMPOSITION","The composition context is not registered.",{context:u,key:f});return m}function a(l){let u=vs(l?.context);if(typeof l.entryFile!="string"||!l.entryFile)throw new Ze("INVALID_COMPOSITION","A registered composition must have a non-empty entryFile.");let f=Es(u),m=n.get(f);if(m){if(m.entryFile===l.entryFile)return m;throw new Ze("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 Ze("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))]}}function Ll(e){let t=new Map,n=new Map;return{readFile(r){let o=t.get(r);return o||(o=e.readFile(r),t.set(r,o)),o},exists(r){let o=n.get(r);return o||(o=e.exists(r),n.set(r,o)),o}}}import{composeSiteEditRepeatInstanceKey as Fw,stripSiteEditRepeatInstanceKeys as ph}from"@vcp-dev/contracts";function mh(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=ph(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 _w(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 ks(e){return e?.map(t=>({...t}))}function Dl(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=ks(e.collectionPathMap?.[t])??ks(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:ks(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>ks(o)??[])}}function gh(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)=>Fw(d,g),c=(d,g,h)=>{let S=o.get(d);if(!S)return a(d,h);let E=a(d,h),y={...S,key:E,parentKey:g,childKeys:[]};return i.push(y),y.childKeys=S.childKeys.flatMap(v=>l(v,h,E)),E},l=(d,g,h)=>{if(!r.has(d))return[c(d,h,g)];let S=f(d,g),E=[];for(let y=0;y<S;y+=1)E.push(c(d,h,[...g,y]));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 y of[...E.textTargets.values(),...E.elementPropertyTargets.values()])if(!(y?.kind!=="value-binding"||y.sourceKind!=="repeat-template"))for(let v of Mw(y))v.length<=g.length||Ow(v,g)&&h.add(v[g.length])}}return h.size>0?h.size:_w(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 hh(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function yh(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((ph(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function Mw(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 Ow(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 xh(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 bh(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 Sh(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function Lw(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var No=class extends Error{constructor(t){let n=t.map(Sh);super(Lw(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function Eh(e,t){let n=t instanceof Error&&t.message?t.message:String(t);return t instanceof No?{routeId:e,message:n,diagnostics:t.diagnostics.map(Sh)}:{routeId:e,message:n}}function Bl(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function jl(e,t){let n=new Map(e);for(let r of t)n.delete(r);return n}function Sr(e,t){e.clear();for(let[n,r]of t)e.set(n,r)}function vh(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function $l(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 kh(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 Jw=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,Xw=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],Ih=32,Ch=256;function zw(e){return{expectedIndexDigest:e.digest,publishedIndexDigest:e.digest,publishedCursor:e.cursor,publishedCurrentId:e.currentId}}var Rh={maxEntries:50,maxBytes:8*1024*1024};function Hw(){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 pi(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}}}async function Ww(e,t){if(t.length===0)return[];let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return[]}if(!n||typeof n!="object")return[];let r=n.dependencies;return!r||typeof r!="object"||Array.isArray(r)?[]:t.filter(o=>{if(!Object.prototype.hasOwnProperty.call(r,o))return!1;let i=r[o];return typeof i=="string"&&i.trim().length>0})}function Gw(){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>Rh.maxEntries||Yw(e)>Rh.maxBytes;)e.shift()}}function Yw(e){return e.reduce((t,n)=>t+Zw(n),0)}function Zw(e){return wh(e.preSnapshots)+wh(e.postSnapshots)+Qw(e.provenance)}function Qw(e){return e?new TextEncoder().encode(JSON.stringify(e)).byteLength:0}function wh(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function Nh(e,t){return{key:Bw(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 Cs=class extends Error{constructor(t){super(t.reason),this.result=t}},Vn=class extends Error{constructor(t){super(Bl(t)),this.failedRoutes=t}};function Ph(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 qw(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 eN=/\.(?:[cm]?[jt]sx?)$/i,tN=/\.json$/i,nN=/\.(?:css|scss|sass)$/i,rN=/\.mdx$/i,oN=/\.ya?ml$/i;function iN(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 sN(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function aN(e,t){let n=new Map;for(let i of t)n.set(i.path,i.operation==="delete"?{exists:!1}:{exists:!0,content:i.content});let r=new Map,o=new Map;return{async readFile(i){let s=n.get(i);if(s){if(!s.exists)throw new Error(`Source file not found: ${i}`);return s.content}let a=r.get(i);return a||(a=e.readFile(i),r.set(i,a)),a},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(i){let s=n.get(i);if(s)return s.exists;let a=o.get(i);return a||(a=e.exists(i),o.set(i,a)),a},async getFileInfo(i){let s=n.get(i);return s?s.exists?{path:i,sizeBytes:Buffer.byteLength(s.content,"utf8")}:null:e.getFileInfo?.(i)??null},async listFiles(i={}){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let s=Oh(await e.listFiles(i)),a=new Map(s.files.map(l=>[l.path,l]));for(let[l,u]of n)if(cN(l,i.roots??[])){if(!u.exists){a.delete(l);continue}a.set(l,{path:l,sizeBytes:Buffer.byteLength(u.content,"utf8")})}let c=[...a.values()].sort((l,u)=>l.path.localeCompare(u.path));return s.truncated?{files:c,truncated:s.truncated}:c},getVersion(i){return e.getVersion(i)},bumpVersion(i){return e.getVersion(i)}}}function cN(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function Oh(e){return Array.isArray(e)?{files:e}:e}function lN(e){if(!$w(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!==Kw||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=jw(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(eN.test(e.path)){let t=Pt({source:e.content,profile:vn({filePath:e.path,source:e.content})});if(!t.ok)return{ok:!1,errorCode:"ast-error",message:t.diagnostic.message,details:{path:e.path}}}if(tN.test(e.path))try{JSON.parse(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`JSON parse failed: ${et(t)}`,details:{path:e.path}}}if(nN.test(e.path)){let t=Ah({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(rN.test(e.path)){let t=Ah({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(oN.test(e.path))try{Uw(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`YAML parse failed: ${et(t)}`,details:{path:e.path}}}return{ok:!0}}function Ah({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
12
|
`||m==="\r"))return Er(t,`Unterminated string literal in ${t}.`);l=m===`
|
|
13
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 Er(t,`Unexpected closing token "${m}" in ${t}.`);l=!1;continue}l=m===`
|
|
14
|
-
`||m==="\r"}if(s)return Er(t,`Unterminated block comment in ${t}.`);if(o)return Er(t,`Unterminated string literal in ${t}.`);if(c)return Er(t,`Unterminated MDX code fence in ${t}.`);let u=r.at(-1);return u?Er(t,`Unclosed token "${u.char}" in ${t}.`):{ok:!0}}function Er(e,t){return{ok:!1,errorCode:"ast-error",message:t,details:{path:e}}}function Rs(e){let t="idle",n=e.fileSystem??zw(),r=yd(),o=uh({compositions:e.compositions,initialDocumentVersions:e.initialDocumentVersions}),i=new Map,s=new Map,a=new Set,c=null,l=e.history??(e.historyStore?af(e.historyStore):Ww()),u=ch(n,{externalAdapters:e.externalAdapters}),f=new Map,m=new Set,d=0,g=e.historyStore?.recoveryRequired??!1,h=Ll(),S=C();function E(p){return(Is.isAbsolute(p)?Is.relative(e.projectRoot,p):p).replace(/\\/g,"/").replace(/^\.\//,"")}function y(p,b){let x=Is.posix.dirname(p),I=b.replace(/\.(?:tsx?|jsx?)$/i,""),P=Is.posix.relative(x,I);return P.startsWith(".")?P:`./${P}`}function v(p,b){return p.startLine===b.startLine&&p.startColumn===b.startColumn&&p.endLine===b.endLine&&p.endColumn===b.endColumn}async function C(){let p=e.historyStore;if(p)try{let b=await p.readTransactionJournal();if(!b)return;let x=await p.readIndex(),I=await Promise.all(b.files.map(async T=>await n.exists(T.path)?ve(await n.readFile(T.path)):null));if(vh({journal:b,index:x,observedFileDigests:I})!=="ambiguous"){await p.clearTransactionJournal(b.transactionId);let T=await p.readStatus();T.recoveryRequired||(await p.cleanupTmp(),T=await p.readStatus()),g=T.recoveryRequired;return}await p.markRecoveryRequired(`Ambiguous transaction journal ${b.transactionId} at phase ${b.phase}`),g=!0}catch(b){g=!0,await p.markRecoveryRequired(`Transaction journal recovery failed: ${et(b)}`).catch(()=>{})}}function N(){return t==="disposed"}e.onEvent&&r.subscribe(e.onEvent);for(let p of o.entries){let b=wh(p.context,p.entryFile);i.set(p.key,b),A(b,b.dependencyFiles)}function A(p,b){let x=new Set(b);R(p),p.dependencyFiles=x;for(let I of p.dependencyFiles){let P=s.get(I);P||(P=new Set,s.set(I,P)),P.add(p.key)}}function R(p){for(let b of p.dependencyFiles){let x=s.get(b);x&&(x.delete(p.key),x.size===0&&s.delete(b))}p.dependencyFiles.clear()}function F(p){let b=new Set;for(let x of p)for(let I of s.get(x)??[])b.add(I);return b}function _(p){for(let b of p)if(!s.has(b))return!1;return!0}async function L(p,b,x,I,P,T){let O=new Map,B=wg(P.values()),X=new Map,Y=typeof T.exists=="function"?D=>T.exists(D):async()=>!1;for(let[D,H]of p.elements){let le=b.nodes.get(D);if(!le)continue;let fe=x.get(H.sourceFile)??I.get(H.sourceFile),xe=new Map,Ie=new Map,Pe=new Map,M=[];for(let we of H.textSegments){if(!fe){xe.set(we.index,null);continue}let vr=await Ng({file:H.sourceFile,source:fe,segment:we,readFile:st=>T.readFile(st),exists:Y,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:st,adapterId:xn,capabilities:Ds})=>({sourceType:st,adapterId:xn,capabilities:Ds})),functionCallContracts:e.functionCallContracts,fileCache:B}),Qe=await wl({file:H.sourceFile,source:fe,target:{kind:"text-segment",segment:we},readFile:st=>T.readFile(st),exists:Y,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:st,adapterId:xn,capabilities:Ds})=>({sourceType:st,adapterId:xn,capabilities:Ds})),functionCallContracts:e.functionCallContracts,fileCache:B}),ft=oN(vr);xe.set(we.index,ft),Ie.set(we.index,vr),Pe.set(we.index,Qe),M.push({editable:we.editable,source:ft})}let V=new Map,ie=new Map;if(fe)for(let we of H.attributes??[]){let vr=await br({file:H.sourceFile,source:fe,sourceRange:we.sourceRange,expression:we.source?.expression??we.value,sourceInfo:we.source,readFile:ft=>T.readFile(ft),exists:Y,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:ft,adapterId:st,capabilities:xn})=>({sourceType:ft,adapterId:st,capabilities:xn})),functionCallContracts:e.functionCallContracts,fileCache:B}),Qe=await Dg({element:H,file:H.sourceFile,source:fe,propertyName:we.name,readFile:ft=>T.readFile(ft),exists:Y,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:ft,adapterId:st,capabilities:xn})=>({sourceType:ft,adapterId:st,capabilities:xn})),functionCallContracts:e.functionCallContracts,fileCache:B});ie.set(we.name,Qe),V.set(we.name,vr)}let me=Wg(iN(le.writeTarget),M),be=Bg({key:D,element:H,graph:p,provenances:Pe}),Ae=qg(H),en=fe?await Nm({element:H,graph:p,file:H.sourceFile,source:fe,readFile:we=>T.readFile(we),exists:Y,fileCache:X}):void 0,We=p.regions.find(we=>we.kind==="conditional-region"&&we.childKeys.includes(D)),Mo,Ls=We?.sourceCandidates?.[0];if(fe&&We&&Ls?.kind==="conditional-branch"){let we=await wl({file:H.sourceFile,source:fe,target:{kind:"conditional-branch",candidate:Ls},readFile:Qe=>T.readFile(Qe),exists:Y,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:Qe,adapterId:ft,capabilities:st})=>({sourceType:Qe,adapterId:ft,capabilities:st})),functionCallContracts:e.functionCallContracts,fileCache:B});Mo={currentBranch:We.childKeys.indexOf(D)<=0?"then":"else",availableBranches:We.childKeys.length>1?["then","else"]:["then"],conditionExpression:Ls.conditionExpression,provenance:{finalSource:we.finalSource?{kind:we.finalSource.kind,file:we.finalSource.file,displayPath:we.finalSource.displayPath}:null,chain:we.chain.map(Qe=>({kind:Qe.kind,file:Qe.file,displayName:Qe.displayName,canEditHere:Qe.canEditHere})),confidence:we.confidence,editMode:we.editMode,diagnostics:we.diagnostics.map(Qe=>({code:Qe.code,message:Qe.message}))}}}O.set(D,{textSources:xe,textTargets:Ie,elementPropertyTargets:V,propertyProvenances:ie,isRepeat:IN(D,p),provenances:Pe,writeTarget:me,componentSemantic:be,styleSource:Ae,conditional:Mo,dynamicData:en})}return O}function U(p){return typeof n.getVersion=="function"?n.getVersion(p):0}function te(p,b){let x=o.initialVersions.get(p.key)??0;for(let I of b.values())x=Math.max(x,I);return Math.max(x,p.graph?.version??0)}function Ne(p){return i.get(p)?.graph?.version??o.initialVersions.get(p)??0}function q(p){try{return Ne(o.resolveSelector(p.composition).key)}catch{return 0}}async function pe(p,b,x=n,I={}){let P=await wd(p,b,T=>x.readFile(T),T=>x.exists(T),{additionalEntries:await Qt(p,x),...I});if(P.diagnostics.length>0)throw new No(P.diagnostics);return P}async function _e(p,b,x={}){let I=i.get(p);if(!I)return null;let P=x.sourceCache??jl(f,[]),T=dh(n),{graph:O,allSources:B,parsedModules:X,entryModule:Y}=await pe(I.entryFile,b,T,{version:I.graph?.version??1}),D=new Map;for(let We of B.keys())D.set(We,U(We));let H=Math.max(te(I,D),x.minimumVersion??0);x.changed&&H<=(I.graph?.version??0)&&(H=(I.graph?.version??0)+1),O.version=H;for(let[We,Mo]of B)$l(P,We,Mo,Ih);let le=await qt(I.composition,I.entryFile,B,P,T);O.routeId=I.routeId,O.composition=I.composition;let fe=eh(O),xe=fd(fe,O),Ie=await L(O,fe,B,P,X,T),Pe=jh(O,xe,Ie),M=Bh(Ie),V=mh(Ug(O,fe,xe,{canUpdateTextByKey:Pe,dynamicDataSummaryByKey:M}),O,Ie),ie=Jf({route:I.routeId,composition:I.composition,entryFile:I.entryFile,version:H,source:b,ast:Y?.ast}),me=Xf(ie);ie.ok&&uN(V,O,ie.projection,X);let be={...V,composition:I.composition,...le?{styleContext:le}:{},pageComposition:me},Ae=new Set([I.entryFile,...B.keys()]);if(le){Ae.add(le.entryCss.path);for(let We of le.stylesheets)Ae.add(We.path)}let en={...I,dependencyFiles:Ae,graph:O,topology:fe,capabilities:xe,document:be,pageComposition:me,pageCompositionProjection:ie.projection,pagePlacementByKey:ie.ok?ie.projection.placementByKey:null,pagePlacementUnitByKey:ie.ok?ie.projection.placementUnitByKey:null,pageUnitByKey:ie.ok?ie.projection.unitByKey:null,pagePlacementsByUnitKey:ie.ok?ie.projection.placementsByUnitKey:null,documentIndex:ph(be),detailProjections:Ie,fileVersions:D,styleContext:le};if(x.publish===!1)return en;Sr(f,P);for(let We of P.keys())m.delete(We);return A(I,Ae),Object.assign(I,en),I}async function Qt(p,b=n){let x=[];for(let I of xN(p))typeof b.exists=="function"&&await b.exists(I)&&x.push({file:I,source:await b.readFile(I)});return x}async function qt(p,b,x,I,P){let T=[];for(let[D,H]of x){if(Vl(D)){T.push(D);continue}for(let le of SN(H)){let fe=_h(D,le);fe&&T.push(fe)}}if(!T.length){for(let D of bN(b))if(await P.exists(D)){T.push(D);break}}let O=new Map,B=kN(T).slice(0,kh);for(;B.length>0&&O.size<kh;){let D=B.shift();if(O.has(D)||!Vl(D))continue;let H=await Dh(D,I,P);if(H!==null){O.set(D,{path:D,content:H});for(let le of EN(H)){let fe=_h(D,le);fe&&!O.has(fe)&&!B.includes(fe)&&B.push(fe)}}}let X=[...O.values()].map(D=>({...D,hash:ve(D.content)})),Y=X[0];return Y?{composition:p,revision:ve(JSON.stringify(X.map(({path:D,hash:H})=>({path:D,hash:H})))),entryCss:Y,stylesheets:X.slice(1)}:null}async function Dh(p,b,x){let I=b.get(p);if(I!==void 0)return I;if(!await x.exists(p))return null;let P=await x.readFile(p);return $l(b,p,P,Ih),P}function Bh(p){let b=new Map;for(let[x,I]of p)I.dynamicData?.bindings.length&&b.set(x,jm(I.dynamicData.bindings));return b}function jh(p,b,x){let I=new Map;for(let[P,T]of p.elements){if(!b.get(P)?.canUpdateText){I.set(P,!1);continue}let B=x.get(P),X=T.textSegments.some(Y=>{if(!Y.editable)return!1;let D=B?.provenances.get(Y.index)??null;return!D||$h(D)});I.set(P,X)}return I}function $h(p){return p.editMode==="direct"||p.editMode==="proxy"||p.editMode==="upstream"}async function To(p,b={}){let x=[...new Set(p)],I=b.affectedCompositionKeys!==void 0,P=I?new Set(b.affectedCompositionKeys):F(x);if(!I&&(P.size===0||!_(x)))for(let X of i.values())Ul(X,x)&&P.add(X.key);let T=!I&&P.size===0&&x.some(Fh),O=b.publish===!1?jl(f,x):void 0,B={rebuiltRoutes:[],failedRoutes:[],...b.publish===!1?{candidateRouteStates:[],candidateSourceCache:O}:{}};for(let X of i.values())if(!(b.excludedCompositionKeys?.has(X.key)||!(P.has(X.key)||T)))try{let D=!!X.graph,H=await n.readFile(X.entryFile),le=await _e(X.key,H,{...b,...O?{sourceCache:O}:{}});le?.graph&&(B.rebuiltRoutes.push({documentChanged:D,composition:X.composition,routeId:X.routeId,version:le.graph.version}),B.candidateRouteStates?.push({composition:X.composition,key:X.key,routeId:X.routeId,state:le}))}catch(D){B.failedRoutes.push({...Sh(X.routeId,D),composition:X.composition})}return B}function Un(p){let b=[...new Set(p)],x=F(b);if(x.size>0&&_(b))return[...x];for(let I of i.values())Ul(I,b)&&x.add(I.key);return[...x]}function Vh(p){let b=new Set(Un(p));return o.entries.filter(x=>b.has(x.key)).map(x=>x.context)}function Kh(p){return[...new Set(Un(p))].sort((x,I)=>x<I?-1:x>I?1:0).map(x=>o.getByKey(x)?.context).filter(x=>x!==void 0)}function Uh(p,b){let x=new Set(Un(b)),I=p.provenance?.affectedCompositions??[];if(I.length===0)return x;if([...new Set(I.map(T=>o.resolveContext(T).key))].some(T=>!x.has(T)))throw new Error("History provenance does not match the affected composition index.");return x}function Jh(p,b){let x=p.composition??p.provenance?.initiatingComposition;if(x){let T=o.resolveContext(x);return{context:T.context,key:T.key}}let I=[...new Set(Un(b))];if(I.length!==1)throw new Error(`Legacy history entry cannot be attributed to a unique composition (affected composition count: ${I.length}).`);let P=o.getByKey(I[0]);if(!P)throw new Error("Legacy history entry references an unknown affected composition.");return{context:P.context,key:P.key}}function As(p,b){r.emit({type:"operation-completed",composition:p.composition,result:p});for(let{composition:x,version:I}of b.rebuiltRoutes)r.emit({type:"document-changed",composition:x,version:I});for(let{composition:x,message:I}of b.failedRoutes)r.emit({type:"graph-error",composition:x,message:I})}function Ul(p,b){return b.some(x=>p.dependencyFiles.has(x)||p.entryFile===x||p.graph?.fileIndex.has(x))}function Jl(p){for(let b of p)a.add(b);c||N()||(c=(async()=>{t="building";let b=!1;try{for(;a.size>0;){if(N())return;await Xh(),await h.runExclusive(async()=>{if(d>0||N())return;let x=[...a];a.clear();let I=await Xl(x);if(I.length===0)return;let P=Un(I);for(let B of P){let X=i.get(B)?.composition;X&&r.emit({type:"graph-invalidated",composition:X})}let{rebuiltRoutes:T,failedRoutes:O}=await To(I,{changed:!0});for(let{documentChanged:B,composition:X,version:Y}of T)r.emit({type:"graph-ready",composition:X,version:Y}),B&&r.emit({type:"document-changed",composition:X,version:Y});for(let{composition:B,message:X}of O)b=!0,r.emit({type:"graph-error",composition:B,message:X})})}}finally{c=null,t!=="disposed"&&(t=!b&&[...i.values()].some(x=>x.graph)?"ready":"idle"),a.size>0&&Jl([])}})())}async function Xh(){for(;d>0;)await new Promise(p=>setTimeout(p,0))}async function Xl(p){let b=[];for(let x of new Set(p)){let I=f.get(x);if(I===void 0){if(m.has(x)&&!await n.exists(x))continue;m.delete(x),b.push(x);continue}try{await n.readFile(x)!==I&&(m.delete(x),b.push(x))}catch(P){if(!lN(P))try{if(await n.exists(x))continue}catch{continue}m.add(x),b.push(x)}}return b}function zl(p){Eh(f,p);for(let b of p)b.exists===!1?m.add(b.file):m.delete(b.file)}function Hl(p){m.clear();for(let b of p)m.add(b)}async function Wl(p){let b=await Xl(p);if(b.length===0)return;let x=Un(b);for(let T of x){let O=i.get(T)?.composition;O&&r.emit({type:"graph-invalidated",composition:O})}let{rebuiltRoutes:I,failedRoutes:P}=await To(b,{changed:!0});for(let{documentChanged:T,composition:O,version:B}of I)r.emit({type:"graph-ready",composition:O,version:B}),T&&r.emit({type:"document-changed",composition:O,version:B});for(let{composition:T,message:O}of P)r.emit({type:"graph-error",composition:T,message:O})}async function zh(p,b){let x=zn(p,b);if(!x?.graph)return;let I=it(p)??p,P=x.graph.elements.get(I);P&&await Wl([P.sourceFile])}async function Gl(p){let b=new Set;if(p.target.kind==="node"){let x=zn(p.target.key,p.composition),I=it(p.target.key)??p.target.key,P=x?.graph?.elements.get(I);P&&b.add(P.sourceFile)}else if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&b.add(x.entryFile)}else if(p.target.kind==="page-unit"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&b.add(x.entryFile)}else if(p.target.kind==="source-file")b.add(p.target.path);else if(p.target.kind==="source-batch")for(let x of p.target.paths)b.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 I of x){let P=zn(I,p.composition),T=it(I)??I,O=P?.graph?.elements.get(T);O&&b.add(O.sourceFile)}}await Wl(b)}async function Hh(p){if(p.params.kind!=="source-edit")return Ts(p,"invalid-params","source-edit requires source-edit params");for(let b of p.params.edits){let x=cN(b);if(!x.ok)return Ts(p,x.errorCode,x.message,x.details)}d+=1;try{let b=await Qh(p.params.edits);if(!b.ok)return Ts(p,b.errorCode,b.message,b.details);await Gl(p);let x={operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:p.params.conflictPolicy,edits:p.params.edits.map(I=>I.operation==="delete"?{operation:"delete",file:I.path,baseContentHash:I.baseContentHash??null}:{operation:"upsert",file:I.path,baseContentHash:I.baseContentHash??null,content:I.content})};return await Xn({request:p,filePlan:x})}catch(b){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:q(p),error:{code:$.INTERNAL_ERROR,message:et(b)}}}finally{d-=1}}async function Wh(p){if(p.target.kind!=="project"||p.params.kind!=="insert-page-resource")return ce(p,$.INVALID_PARAMS,"insert-page-resource requires project target and matching params.");d+=1;try{let b=await Lo({deferTargetLocale:!!e.resourceTranslationLocale,targetLocale:e.resourceTranslationLocale,files:[...p.params.artifact.components.flatMap(I=>I.materialization.files.map(P=>({path:P.pathTemplate,content:P.content}))),...p.params.artifact.pages.flatMap(I=>I.materialization.files.map(P=>({path:P.pathTemplate,content:P.content})))],exists:I=>n.exists(I),readFile:I=>n.readFile(I)});if(!b.ok)return ce(p,$.MATERIALIZATION_REJECTED,b.message);let x=await Ya({artifact:p.params.artifact,exists:I=>n.exists(I)});return x.ok?await Xn({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"}):ce(p,x.code==="MATERIALIZATION_CONFLICT"?$.MATERIALIZATION_CONFLICT:$.MATERIALIZATION_REJECTED,x.message,x.path?{path:x.path}:void 0)}catch(b){return ce(p,$.INTERNAL_ERROR,et(b))}finally{d-=1}}async function Gh(p){if(p.target.kind!=="project"||p.params.kind!=="delete-page-source")return ce(p,$.INVALID_PARAMS,"delete-page-source requires project target and matching params.");if(!n.listFiles)return ce(p,$.PLAN_FAILED,"Complete project file listing is required for page deletion.");d+=1;try{let b=Mh(await n.listFiles({maxFiles:5e4,maxDepth:64}));if(b.truncated)return ce(p,$.PLAN_FAILED,"Project file listing is incomplete; page deletion was refused.",{truncationReasons:b.truncated.reasons});let x=b.files.filter(({path:O})=>/\.(?:tsx?|jsx?)$/.test(O)),I=Object.fromEntries(await Promise.all(x.map(async({path:O})=>[O,await n.readFile(O)]))),P=mp({expectedUrlPath:p.params.expectedUrlPath,files:I});if(!P.ok)return ce(p,P.code==="HOME_PAGE_LOCKED"?$.HOME_PAGE_LOCKED:P.code==="ROUTE_NOT_FOUND"?$.ROUTE_NOT_FOUND:$.PLAN_FAILED,P.message);let T=await Promise.all(P.edits.map(async O=>({...O,baseContentHash:ve(await n.readFile(O.file))})));return Xn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:T},output:{kind:"delete-page-source",deleted_files:P.deletedFiles,updated_files:P.updatedFiles,preserved_shared_files:P.preservedSharedFiles,warnings:P.warnings},historyPolicy:"none"})}catch(b){return ce(p,$.INTERNAL_ERROR,et(b))}finally{d-=1}}async function Yh(p,b){if(p.kind!=="insert-child"&&p.kind!=="replace-node")return ce(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 ce(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 ce(p,$.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.");if(p.params.position.documentVersion!==p.documentVersion)return ce(p,$.VERSION_STALE,"Page-unit insert-child placement belongs to a different document version.")}let x=b.document,I=b.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!I||I.status!=="supported")return ce(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||I.documentVersion!==x.version)return ce(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let P=p.params.node.kind==="component-call"?p.params.node.materialization:void 0;if(!P)return ce(p,$.UNSUPPORTED_OPERATION,"Page-unit insertion currently requires a static materialization manifest.");let T=p.params.kind==="insert-child"?p.params.position:null,O=await Lo({deferTargetLocale:!!e.resourceTranslationLocale,targetLocale:e.resourceTranslationLocale,files:P.files.map(Y=>({path:Y.pathTemplate,content:Y.content})),exists:Y=>n.exists(Y),readFile:Y=>n.readFile(Y)});if(!O.ok)return ce(p,$.MATERIALIZATION_REJECTED,O.message);let B=await Hw(n,Object.keys(P.projectDependencies??{})),X=await Nf({manifest:P,generatedRoot:"components/site/generated",controlledFiles:P.files.map(Y=>({pathTemplate:Y.pathTemplate})),exists:Y=>n.exists(Y),availableHostDependencies:B,commit:async Y=>{let D=await n.readFile(b.entryFile),H=b.document,le=b.pageCompositionProjection;if(!H||H.pageComposition?.status!=="supported"||H.version!==p.documentVersion||!le||le.status!=="supported"||le.documentVersion!==H.version)return{ok:!0,data:ce(p,$.VERSION_STALE,"The route changed before the page-unit insertion could commit.")};let fe=Y.entry.path,xe=iy(Y.instanceName),Ie,Pe=[];if(p.params.kind==="insert-child"){if(!T||!("kind"in T)||T.kind!=="page-composition")return{ok:!0,data:ce(p,$.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.")};let me=rc({routeId:b.routeId,entryFile:b.entryFile,currentDocumentVersion:H.version,expectedDocumentVersion:p.documentVersion,source:D,projection:le,placementKey:T.placementKey,component:{source:fe,exportName:Y.entry.export.kind==="default"?"default":Y.entry.export.name,localName:xe}});if(!me.ok)return{ok:!0,data:ce(p,Os(me.error.code),me.error.message,{diagnostics:me.error.diagnostics})};let be=me.plan.rewriteStep,Ae;switch(be.kind){case"insert-root-expression":Ae=Di({source:D,locator:be.locator,expectedSourceHash:be.sourceHash,action:{kind:"insert",jsx:be.node.jsx,placement:be.placement,replaceOriginal:be.replaceOriginal}});break;case"insert-child":Ae=Gn({source:D,locator:be.parentLocator,node:be.node,placement:be.placement,...be.anchorLocator?{anchorLocator:be.anchorLocator}:{}});break;default:Ae={ok:!1,source:D,diagnostic:{code:"unsupported-syntax",message:`Unsupported route composition rewrite: ${String(be)}`}}}if(!Ae.ok)return{ok:!0,data:ce(p,$.AST_PARSE_ERROR,Ae.diagnostic.message)};Ie=Ae.source}else{let me=oc({routeId:b.routeId,composition:b.composition,entryFile:b.entryFile,currentDocumentVersion:H.version,expectedDocumentVersion:p.documentVersion,source:D,projection:le,placementUnitKey:p.target.placementUnitKey,operation:"replace-node"});if(!me.ok)return{ok:!0,data:ce(p,Os(me.error.code),me.error.message,{diagnostics:me.error.diagnostics})};let be=me.plan.rewriteStep,Ae;switch(be.kind){case"replace-root-expression":Ae=Di({source:D,locator:be.locator,expectedSourceHash:be.sourceHash,action:{kind:"replace",jsx:`<${xe} />`}});break;case"replace-node":Ae=ti({source:D,locator:be.locator,node:{jsx:`<${xe} />`}});break;default:Ae={ok:!1,source:D,diagnostic:{message:`Unsupported page-unit replacement rewrite: ${be.kind}`}}}if(!Ae.ok)return{ok:!0,data:ce(p,$.AST_PARSE_ERROR,Ae.diagnostic.message)};let en=await Yl({routeState:b,placementUnitKey:p.target.placementUnitKey,source:D,mutatedSource:Ae.source});Ie=en.source,Pe=await Promise.all(en.files.map(async We=>({operation:"delete",file:We,baseContentHash:ve(await n.readFile(We))})))}let M=Qn({source:Ie,moduleSpecifier:y(b.entryFile,fe),imports:Y.entry.export.kind==="default"?[{kind:"default",local:xe}]:[{kind:"named",imported:Y.entry.export.name,local:xe}]});if(!M.ok)return{ok:!0,data:ce(p,$.AST_PARSE_ERROR,M.diagnostic.message)};let V=Y.files.map(me=>({operation:"create-only",file:me.path,content:me.content})),ie=[{operation:"upsert",file:b.entryFile,content:M.source,baseContentHash:ve(D)},...V,...Pe];d+=1;try{let me=await Xn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:b.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:ie}});return!me.ok&&me.error?.message.includes("MATERIALIZATION_INSTANCE_CONFLICT")?{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:me.error?.message??"Static prefab instance conflicted during commit."}}:{ok:!0,data:me}}finally{d-=1}}});return X.ok?X.data:ce(p,X.error.code==="MATERIALIZATION_INSTANCE_CONFLICT"?$.MATERIALIZATION_CONFLICT:$.MATERIALIZATION_REJECTED,X.error.message,{materializationCode:X.error.code})}async function Zh(p,b){if(p.kind!=="move-node"&&p.kind!=="remove-node")return ce(p,$.UNSUPPORTED_OPERATION,"Only page-unit move-node and remove-node are currently supported by the page composition transaction.");let x=b.document,I=b.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!I||I.status!=="supported")return ce(p,$.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||I.documentVersion!==x.version)return ce(p,$.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let P=await n.readFile(b.entryFile),T=oc({routeId:b.routeId,composition:b.composition,entryFile:b.entryFile,currentDocumentVersion:x.version,expectedDocumentVersion:p.documentVersion,source:P,projection:I,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(!T.ok)return ce(p,Os(T.error.code),T.error.message,{diagnostics:T.error.diagnostics});let O=T.plan.rewriteStep,B;switch(O.kind){case"move-node":B=Yn({source:P,locator:O.locator,targetParentLocator:O.targetParentLocator,placement:O.placement,...O.anchorLocator?{anchorLocator:O.anchorLocator}:{}});break;case"remove-node":B=Wn({source:P,locator:O.locator});break;case"remove-root-expression":B=Di({source:P,locator:O.locator,expectedSourceHash:O.sourceHash,action:{kind:"remove"}});break;default:B={ok:!1,source:P,diagnostic:{message:`Unsupported page-unit mutation rewrite: ${O.kind}`}}}if(!B.ok)return ce(p,$.AST_PARSE_ERROR,B.diagnostic.message);let X=B.source,Y=[];if(p.kind==="remove-node"){let H=await Yl({routeState:b,placementUnitKey:p.target.placementUnitKey,source:P,mutatedSource:X});X=H.source,Y=await Promise.all(H.files.map(async le=>({operation:"delete",file:le,baseContentHash:ve(await n.readFile(le))})))}let D=[{operation:"upsert",file:b.entryFile,content:X,baseContentHash:ve(P)},...Y];d+=1;try{return await Xn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:b.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:D}})}finally{d-=1}}async function Yl(p){let b={source:p.mutatedSource,files:[]},x=p.routeState.graph,I=p.routeState.pageCompositionProjection;if(!x||!I||I.status!=="supported"||!n.listFiles)return b;let T=I.placementUnitByKey.get(p.placementUnitKey)?.sourceRange;if(!T)return b;let O=[...x.elements.values()].find(M=>M.sourceFile===p.routeState.entryFile&&M.importedFrom&&v(M.sourceRange,T));if(!O?.importedFrom||!O.exportName)return b;let B=E(O.importedFrom),X="components/site/generated/";if(!B.startsWith(X))return b;let Y=B.slice(X.length).split("/")[0];if(!Y||!/-[0-9a-f]{8}$/i.test(Y))return b;let D=`${X}${Y}`;if([...x.elements.values()].filter(M=>M.sourceFile===p.routeState.entryFile&&E(M.importedFrom??"")===B).length!==1)return b;let le=await n.listFiles({maxFiles:5e3,maxDepth:32}),fe=Array.isArray(le)?le:le.files;if(!Array.isArray(le)&&le.truncated)return b;let xe=fe.map(({path:M})=>M).filter(M=>M===D||M.startsWith(`${D}/`));if(xe.length===0||!xe.includes(B))return b;for(let{path:M}of fe)if(!(M===p.routeState.entryFile||M===D||M.startsWith(`${D}/`)))try{if((await n.readFile(M)).includes(Y))return b}catch{return b}let Ie=y(p.routeState.entryFile,B),Pe=qn({source:p.mutatedSource,moduleSpecifier:Ie,imports:O.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:O.exportName}]});return Pe.ok?Pe.source.includes(Y)?{source:Pe.source,files:[]}:{source:Pe.source,files:xe.sort((M,V)=>M.localeCompare(V))}:b}async function Qh(p){if(n.getFileInfo){for(let T of p)if(await n.exists(T.path)&&await n.getFileInfo(T.path)===null)return{ok:!1,errorCode:"invalid-params",message:`Source edit path must resolve to a regular non-symbolic-link file: ${T.path}`,details:{path:T.path}}}for(let T of p){if(T.operation!=="upsert"||!/^(?:src\/)?app\/globals\.css$/i.test(T.path))continue;let O=await n.exists(T.path)?await Qs(n,T.path):null;if(O?.ok){let B=Lw(O.content,T.content);if(!B.ok)return{ok:!1,errorCode:"invalid-params",message:B.message,details:{path:T.path,code:B.code}}}}let b=qh(p);if(b.length===0)return{ok:!0};let x=sN(n,p),I=new Map,P=(T,O)=>{let B=I.get(T);if(B?.source===O)return B.result;let X=Ut(T,O);return I.set(T,{source:O,result:X}),X};try{for(let T of b){let O=i.get(T);O&&await pe(O.entryFile,await x.readFile(O.entryFile),x,{validationOnly:!0,parseModule:P})}}catch(T){return{ok:!1,errorCode:"ast-error",message:`Source edit preflight failed: ${et(T)}`,details:{compositionKeys:b}}}return{ok:!0}}function qh(p){return p.map(x=>x.path).some(Fh)?[...i.keys()]:[]}function Ts(p,b,x,I){let P=Po(b);return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:q(p),error:{code:P,message:x,...I?{details:I}:{}}}}async function Fs(p){let b=[];for(let x of new Set(p))b.push(await ey(x));return b}async function ey(p){if(!(typeof n.exists=="function"?await n.exists(p):!0))return{file:p,content:"",version:Math.max(0,U(p)),exists:!1};let x=await n.readFile(p);return{file:p,content:x,version:Math.max(1,U(p)),exists:!0,sha256:ve(x)}}async function Zl(p,b,x,I){if(!e.historyStore)return null;let P=new Map(b.map(B=>[B.file,B])),T=new Map(x.map(B=>[B.file,B])),O=[...new Set([...P.keys(),...T.keys()])].sort().map(B=>{let X=P.get(B),Y=T.get(B);return{path:B,preDigest:X?.exists===!1||!X?null:ve(X.content),postDigest:Y?.exists===!1||!Y?null:ve(Y.content)}});return{schemaVersion:2,transactionId:`${p}:${I.expectedIndexDigest}`,operationId:p,phase:"prepared",historyTransition:I,files:O}}async function Ql(p){return!p||!e.historyStore||await e.historyStore.writeTransactionJournal(p),p}async function Jn(p){p&&e.historyStore&&await e.historyStore.clearTransactionJournal(p.transactionId)}async function _s(p,b){let x=[];try{for(let I of p)await ql(I),typeof n.bumpVersion=="function"&&n.bumpVersion(I.file),x.push(I.file)}catch(I){let P=await ty(b.filter(T=>x.includes(T.file)));return P.ok?{ok:!1,reason:`Writeback failed and committed files were restored: ${et(I)}`,rolledBack:!0}:{ok:!1,reason:`Writeback failed, then rollback failed for ${P.failedFiles.join(", ")}: ${et(I)}`,rolledBack:!1}}return{ok:!0,snapshots:p.map(ny)}}async function ql(p){if(p.exists===!1){await n.deleteFile(p.file);return}await n.writeFile(p.file,p.content)}async function ty(p){let b=[];for(let x of p)try{await ql(x),typeof n.bumpVersion=="function"&&n.bumpVersion(x.file)}catch{b.push(x.file)}return b.length===0?{ok:!0}:{ok:!1,failedFiles:b}}function ny(p){let b=p.exists!==!1;return{file:p.file,content:b?p.content:"",version:p.version,exists:b,...b?{sha256:ve(p.content)}:{}}}async function Xn(p){return h.runExclusive(()=>ry(p))}async function ry(p){let b=p.filePlan.edits.map(M=>M.file),x=o.resolveSelector(p.request.composition),I=x.context,P=p.historyPolicy==="none"?void 0:{initiatingComposition:I,affectedCompositions:Kh(b)},T=await Fs(b),O=new Map(T.filter(M=>M.exists!==!1).map(M=>[M.file,M.content])),B=tu(),X=new Map(f),Y=new Set(m),D=new Set([...i.values()].filter(M=>p.filePlan.edits.some(V=>V.operation==="delete"&&V.file===M.entryFile)).map(M=>M.key)),H=p.filePlan.edits.map(M=>M.operation==="delete"?{file:M.file,content:"",version:0,exists:!1}:{file:M.file,content:M.content,version:0,exists:!0,sha256:ve(M.content)}),le={operationId:p.filePlan.operationId,intents:p.filePlan.edits.map(M=>M.operation==="delete"?{kind:"delete",path:M.file}:{kind:M.operation==="create-only"?"create-only":"upsert",path:M.file,content:M.content})},fe=null,xe=!1,Ie=await Ss({overlay:O,exists:M=>n.exists(M),plan:le,buildCandidate:async({plan:M})=>({plan:M}),prepareHistory:async()=>{let M=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:T,postSnapshots:H,...p.selectionRef?{selectionRef:p.selectionRef}:{},...p.output?{output:p.output}:{},...P?{provenance:P}:{}}),V=M?.historyTransition?M.historyTransition:e.historyStore?Xw(await e.historyStore.readIndex()):null;if(e.historyStore&&!V)throw new Error("Durable history did not provide an exact index transition.");return fe=await Zl(p.request.id,T,H,V),fe=await Ql(fe),{history:M,historyTransition:V}},reverify:async()=>{},writeCandidate:async()=>{let M=await u.executeFilePlan(p.filePlan);if(!M.ok)throw new Cs(M);return{postSnapshots:await Fs(M.affectedFiles),affectedFiles:M.affectedFiles,internalResultVersion:M.resultVersion}},validateCandidate:async({candidate:M,receipt:V})=>{let ie=await To(V.affectedFiles,{changed:!0,minimumVersion:V.internalResultVersion,publish:!1,excludedCompositionKeys:D});if(ie.failedRoutes.length>0)throw new Vn(ie.failedRoutes);let me=ru(B,ie.candidateRouteStates??[]),be=nu(me,x.key);return{...M,rebuild:ie,routeSnapshots:me,resultVersion:be,...Nh(p.selectionRef,me.map(Ae=>Ae.state.document))?{selectionRef:Nh(p.selectionRef,me.map(Ae=>Ae.state.document))}:{}}},publishCandidate:async({candidate:M,history:V,receipt:ie})=>{V?.history&&(await l.publishPrepared(V.history),xe=!0);let me=M.resultVersion??ie.internalResultVersion;return{composition:I,requestId:p.request.id,kind:p.request.kind,target:p.request.target,ok:!0,resultVersion:me,affectedFiles:ie.affectedFiles,fileChanges:ie.postSnapshots.map(be=>({path:be.file,operation:be.exists===!1?"delete":"upsert"})),...p.output?{output:p.output}:{},...M.selectionRef?{selectionRef:M.selectionRef}:{}}},swapCandidate:({candidate:M,receipt:V})=>{M.routeSnapshots&&Fo(M.routeSnapshots),M.rebuild?.candidateSourceCache&&Sr(f,M.rebuild.candidateSourceCache),zl(V.postSnapshots)},finalizeCandidate:async()=>{await Jn(fe);for(let M of D)i.delete(M)},emitCommitted:({candidate:M,published:V})=>{As(V,M.rebuild??{rebuiltRoutes:[],failedRoutes:[]})},rollbackCandidate:async({history:M,receipt:V})=>{if(xe)throw new Error("history was published before transaction finalization failed");if(V){let ie=await _s(T,V.postSnapshots);if(!ie.ok)throw new Error(ie.reason)}Fo(B),Sr(f,X),Hl(Y),M?.history&&await l.discardPrepared?.(M.history),await Jn(fe)}});if(Ie.ok)return Ie.published;if(Ie.stage==="precheck"||Ie.stage==="build")try{await Jn(fe)}catch(M){let V=await _o(et(M));return ce(p.request,V,"Unable to clear an uncommitted transaction journal.")}if(Ie.recoveryRequired){let M=await _o(Ie.reason);return ce(p.request,M===$.RECOVERY_PERSIST_FAILED?M:$.ROLLBACK_FAILED,Ie.reason)}let Pe=Ie.error;return Pe instanceof Cs?{...ce(p.request,Po(Pe.result.errorCode),Pe.result.reason),...Pe.result.affectedFiles?{affectedFiles:Pe.result.affectedFiles}:{}}:Pe instanceof Vn?ce(p.request,$.ROUTE_REBUILD_FAILED,`Route rebuild failed and source was rolled back: ${Bl(Pe.failedRoutes)}`,{failedRoutes:Pe.failedRoutes}):ce(p.request,iu(Ie.stage),et(Pe))}async function eu(p){return h.runExclusive(async()=>{let b=p==="undo"?await l.prepareUndo():await l.prepareRedo();return b?oy(p,b):{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 oy(p,b){let x=b.entry,I=p==="undo"?x.preSnapshots:x.postSnapshots,P=p==="undo"?x.postSnapshots:x.preSnapshots,T=I.map(V=>V.file),{context:O,key:B}=Jh(x,T),X=await Fs(T),Y=new Map(X.filter(V=>V.exists!==!1).map(V=>[V.file,V.content])),D=Ne(B),H=tu(),le=new Map(f),fe=new Set(m),xe=null,Ie=!1,Pe,M=await Ss({overlay:Y,plan:{operationId:`${p}:${x.operationId}`,intents:I.map(V=>V.exists===!1?{kind:"delete",path:V.file}:{kind:"upsert",path:V.file,content:V.content})},buildCandidate:async()=>({}),prepareHistory:async()=>(xe=await Zl(`${p}:${x.operationId}`,X,I,b.historyTransition),xe=await Ql(xe),b),reverify:async()=>{},writeCandidate:async()=>{let V=await _s(I,P);if(!V.ok)throw new Error(V.reason);return{snapshots:V.snapshots}},validateCandidate:async({candidate:V})=>{Pe=Uh(x,T);let ie=await To(T,{changed:!0,minimumVersion:D+1,publish:!1,affectedCompositionKeys:Pe});if(ie.failedRoutes.length>0)throw new Vn(ie.failedRoutes);let me=ru(H,ie.candidateRouteStates??[]),be=nu(me,B);return{...V,rebuild:ie,routeSnapshots:me,resultVersion:be}},publishCandidate:async({candidate:V,history:ie,receipt:me})=>{if(!ie)throw new Error("history cursor intent is missing");await l.publishPrepared(ie),Ie=!0;let be=V.resultVersion??D+1;return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!0,resultVersion:be,affectedFiles:T,fileChanges:me.snapshots.map(Ae=>({path:Ae.file,operation:Ae.exists===!1?"delete":"upsert"})),...x.output?{output:x.output}:{}}},swapCandidate:({candidate:V,receipt:ie})=>{V.routeSnapshots&&Fo(V.routeSnapshots),V.rebuild?.candidateSourceCache&&Sr(f,V.rebuild.candidateSourceCache),zl(ie.snapshots)},finalizeCandidate:async()=>{await Jn(xe)},emitCommitted:({candidate:V,published:ie})=>As(ie,V.rebuild??{rebuiltRoutes:[],failedRoutes:[]}),rollbackCandidate:async({history:V,receipt:ie})=>{if(Ie)throw new Error("history cursor was published before transaction finalization failed");if(ie){let me=await _s(P,ie.snapshots);if(!me.ok)throw new Error(me.reason)}Fo(H),Sr(f,le),Hl(fe),V&&await l.discardPrepared?.(V),await Jn(xe)}});if(M.ok)return M.published;if(M.stage==="precheck"||M.stage==="build")try{await Jn(xe)}catch(V){let ie=await _o(et(V));return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:D,error:{code:ie,message:"Unable to clear an uncommitted transaction journal."}}}if(M.recoveryRequired){let V=await _o(M.reason);return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:D,affectedFiles:T,error:{code:V===$.RECOVERY_PERSIST_FAILED?V:$.ROLLBACK_FAILED,message:M.reason}}}return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:D,affectedFiles:T,error:{code:M.error instanceof Vn?$.ROUTE_REBUILD_FAILED:iu(M.stage),message:et(M.error),...M.error instanceof Vn?{details:{failedRoutes:M.error.failedRoutes}}:{}}}}function tu(){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 nu(p,b){return p.find(I=>I.key===b)?.state.graph?.version??o.initialVersions.get(b)??0}function ru(p,b){let x=new Map(p.map(I=>[I.key,I]));for(let I of b)x.set(I.key,I);return[...x.values()]}function Fo(p){for(let b of i.values())R(b);for(let b of p){let x={...b.state,dependencyFiles:new Set(b.state.dependencyFiles),fileVersions:new Map(b.state.fileVersions)};i.set(b.key,x),A(x,x.dependencyFiles)}}async function Ms(p){let b=i.get(p);if(!b)throw new Error(`Composition not found: ${p}`);if(b.graph)return;let x=await n.readFile(b.entryFile);await _e(p,x)}function zn(p,b){let x=i.get(o.resolveSelector(b).key)??null;return!x||!ou(x,p)?null:x}function ou(p,b){if(p.documentIndex?.entriesByKey.has(b)||p.graph?.elements.has(b))return!0;let x=it(b);return x&&x!==b?p.graph?.elements.has(x)===!0:!1}function ce(p,b,x,I){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:q(p),error:{code:b,message:x,...I?{details:I}:{}}}}function iu(p){return p==="validate"?$.ROUTE_REBUILD_FAILED:p==="publish"?$.HISTORY_COMMIT_FAILED:$.WRITE_IO_ERROR}async function _o(p){if(g=!0,!l.markRecoveryRequired)return $.RECOVERY_REQUIRED;try{return await l.markRecoveryRequired(p),$.RECOVERY_REQUIRED}catch{return $.RECOVERY_PERSIST_FAILED}}function iy(p){let x=p.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(I=>I.charAt(0).toUpperCase()+I.slice(1)).join("").replace(/^[^a-zA-Z_$]+/,"");return x?`Prefab${x}`:"GeneratedPrefab"}function Os(p){return p==="VERSION_STALE"?$.VERSION_STALE:p==="CROSS_PAGE_MOVE_UNSUPPORTED"?$.CROSS_PAGE_MOVE_UNSUPPORTED:$.UNSUPPORTED_OPERATION}async function su(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):ce(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):ce(p,$.ROUTE_NOT_FOUND,"Composition not found for page-unit target.")}if(p.target.kind!=="node")return ce(p,$.UNSUPPORTED_OPERATION,`${p.kind} source target execution is not implemented yet.`);let b=i.get(o.resolveSelector(p.composition).key)??null;return b?(b.graph||await Ms(b.key),ou(b,p.target.key)?b:ce(p,$.NODE_NOT_FOUND,`Target key not found: ${p.target.key}`)):ce(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,b){let x=o.register({context:p,entryFile:b}),I=i.get(x.key);if(I?.entryFile===b)return;I&&R(I);let P=wh(x.context,b);i.set(x.key,P),A(P,P.dependencyFiles),r.emit({type:"graph-invalidated",composition:x.context})},unregisterComposition(p){let b=o.resolveSelector(p),x=i.get(b.key);x&&(R(x),i.delete(b.key),o.unregister(b.key),i.size===0&&(t="idle"),r.emit({type:"graph-invalidated",composition:b.context}))},getCompositionEntryFiles(){return[...i.values()].map(p=>p.entryFile)},getCompositionContext(p){return o.resolveSelector(p).context},async initializeComposition(p){let b=o.resolveSelector(p),x=i.get(b.key);if(!x)throw new Error(`Composition not registered: ${b.key}`);if(x.graph)t="ready";else{t="building";try{let I=await n.readFile(x.entryFile);await _e(b.key,I),t="ready",r.emit({type:"graph-ready",composition:b.context,version:i.get(b.key)?.graph?.version??0})}catch(I){throw t="idle",r.emit({type:"graph-error",composition:b.context,message:et(I)}),I}}},getDocument(p){let b=o.resolveSelector(p),x=i.get(b.key);if(!x)throw new Error(`Composition not registered: ${b.key}`);if(!x.document)throw new Error(`Composition not built: ${b.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,b,x){let I=zn(p,b),P=it(p)??p;if(I?.graph&&I.topology&&I.capabilities&&I.detailProjections){let T=I.detailProjections.get(P);if(T){let O=I.graph.elements.get(P);if(!O)throw new Error(`Key not found: ${p}`);let B=Qw(p,P,x),X=new Map;if(T.isRepeat&&B?.instanceIndex!==void 0)for(let H of O.attributes??[])X.set(H.name,pl({file:O.sourceFile,source:f.get(O.sourceFile)??"",element:O,propertyName:H.name,selectionRef:B,graph:I.graph,sources:f}));let Y=Kg({element:O,graph:I.graph,source:f.get(O.sourceFile),documentVersion:I.graph.version,selectionRef:x,isRepeat:T.isRepeat,propertyProvenance:T.propertyProvenances,repeatTargets:X}),D=Xg(P,I.graph,I.topology,I.capabilities,T.textSources,T.provenances,T.dynamicData,Y);return p===P?D:xh(D,p,I.document??null,I.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getRenderDetail(p,b){let x=zn(p,b),I=it(p)??p;if(x?.graph&&x.topology&&x.capabilities&&x.detailProjections){let P=x.detailProjections.get(I);if(P){let T=Jg(I,x.graph,x.topology,x.capabilities,P.textSources,P.writeTarget,P.provenances,P.conditional,P.componentSemantic,P.styleSource,P.dynamicData);return p===I?T:yh(T,p,x.document??null,x.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getClassNameSource(p,b){let x=zn(p,b),I=it(p)??p;if(!x?.graph)throw new Error(`Key not found: ${p}`);let P=x.graph.elements.get(I);if(!P)throw new Error(`Key not found: ${p}`);let T=f.get(P.sourceFile);if(T===void 0)throw new Error(`Source not loaded: ${P.sourceFile}`);return ya({key:I,route:{composition:x.composition,routeId:x.routeId,graph:x.graph,source:T}})},refreshSourceForKey:zh,async execute(p){if(await S,g)return ce(p,$.RECOVERY_REQUIRED,"The edit engine requires explicit recovery before accepting mutations.");if(p.kind==="source-edit")return Hh(p);if(p.kind==="insert-page-resource")return Wh(p);if(p.kind==="delete-page-source")return Gh(p);let b=await su(p);if("ok"in b)return b;await Gl(p);let x=await su(p);if("ok"in x)return x;let I=x;if(p.target.kind==="page-unit"){let D=p;return p.kind==="insert-child"||p.kind==="replace-node"?Yh(D,I):p.kind==="move-node"||p.kind==="remove-node"?Zh(D,I):ce(p,$.UNSUPPORTED_OPERATION,"Only page-unit insert-child, replace-node, move-node, and remove-node are currently supported by the page composition transaction.")}let T=p.params,O=p.target.kind==="node"?p.target.key:null;if(T.kind==="move-node"&&"kind"in T.target&&T.target.kind==="source-sibling"){let D=T.target,H=O?I.document?.entries.find(V=>V.key===O):null,le=I.document?.entries.find(V=>V.key===D.anchorKey),fe=H?.pageCompositionActionScope,xe=fe?.kind==="source-siblings"?fe.siblingKeys:null,Ie=xe?.indexOf(H?.key??"")??-1,Pe=xe?.indexOf(D.anchorKey)??-1,M=D.relation==="before"?Ie-1:Ie+1;if(!H||!le||!xe||Ie<0||Pe!==M||le.pageCompositionActionScope?.kind!=="source-siblings"||le.pageCompositionActionScope.siblingKeys.length!==xe.length||le.pageCompositionActionScope.siblingKeys.some((V,ie)=>V!==xe[ie])||!H.operationSummary.canMove)return ce(p,$.INVALID_TARGET,"Source sibling move is unavailable because the current source sibling scope or adjacent anchor no longer matches.")}if(!I.graph||!I.topology||!I.capabilities)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:q(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 B=hN(I,I.graph,I.capabilities,f,i),X=await new os(B).plan(p);if(!X.ok)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:q(p),error:{code:Po(X.errorCode),message:X.reason}};let Y=X.plan;if(Y.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:q(p),affectedFiles:[]}:{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:q(p),error:{code:$.PLAN_FAILED,message:"Planner could not generate a valid execution plan"}};d+=1;try{if(Y.steps.some(H=>H.type==="invoke-external-adapter")){let H=await u.execute(Y);if(!H.ok)return ce(p,Po(H.errorCode),H.reason);let le={composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!0,resultVersion:Math.max(q(p),H.resultVersion),affectedFiles:H.affectedFiles,...H.selectionRef?{selectionRef:H.selectionRef}:{}};return As(le,{rebuiltRoutes:[],failedRoutes:[]}),le}let D=await u.prepareRewritePlan(Y);return D.ok?await Xn({request:p,filePlan:D.filePlan,...D.selectionRef?{selectionRef:D.selectionRef}:{}}):ce(p,Po(D.errorCode),D.reason)}catch(D){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:q(p),error:{code:$.INTERNAL_ERROR,message:et(D)}}}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:Ne(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting undo."}};d+=1;try{return await eu("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:Ne(o.entries[0].key),error:{code:$.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting redo."}};d+=1;try{return await eu("redo")}finally{d-=1}},notifyFileChanged(p){Jl([p])},getAffectedCompositions(p){return Vh(p)},subscribe(p){return r.subscribe(p)}}}function lN(e){return e instanceof Error&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function uN(e,t,n,r){let o=new Map,i=new Map,s=(f,m,d)=>{let g=f.get(m)??new Set,h=g.size;return g.add(d),f.set(m,g),g.size!==h},a=(f,m)=>{if(!f.importedFrom)return!1;if(f.exportName==="default")return s(i,f.importedFrom,m);let d=s(o,`${f.importedFrom}#${f.tag}`,m);return f.exportName&&f.exportName!==f.tag&&(d=s(o,`${f.importedFrom}#${f.exportName}`,m)||d),d},c=f=>o.get(`${f.sourceFile}#${f.componentName}`)??i.get(f.sourceFile);for(let f of t.elements.values()){if(f.sourceFile!==n.entryFile||!f.importedFrom||!/^[A-Z]/.test(f.tag))continue;let m=n.placements.find(g=>g.members.some(h=>h.sourceRange!==null&&Ao(f.sourceRange,h.sourceRange)));if(!m)continue;let d=m.placementUnitKey;a(f,d)}let l=!0;for(;l;){l=!1;for(let f of t.elements.values()){if(f.sourceFile===n.entryFile||!f.importedFrom||!/^[A-Z]/.test(f.tag))continue;let m=c(f);if(m)for(let d of m)l=a(f,d)||l}}let u=n.placements.find(f=>f.placementKey===n.container.placementKey&&f.relation==="append");for(let f of e.entries){let m=it(f.key)??f.key,d=t.elements.get(f.key)??t.elements.get(m);if(!d)continue;if(d.sourceFile===n.entryFile){if(n.container.sourceRange&&Ao(d.sourceRange,n.container.sourceRange)&&u){f.pageCompositionUnitKey=u.placementUnitKey;continue}let S=n.placements.find(E=>E.members.some(y=>y.sourceRange!==null&&(Ao(d.sourceRange,y.sourceRange)||gN(y.sourceRange,d.sourceRange))));if(S){f.pageCompositionUnitKey=S.placementUnitKey;continue}}let g=o.get(`${d.sourceFile}#${d.componentName}`);if(g){g.size===1&&(f.pageCompositionUnitKey=g.values().next().value);continue}let h=i.get(d.sourceFile);h?.size===1&&(f.pageCompositionUnitKey=h.values().next().value)}dN(e,t,n,r)}function dN(e,t,n,r){let o=new Map(e.entries.map(m=>[m.key,m])),i=e.entries.filter(m=>{let d=m.pageCompositionUnitKey;return d?m.parentKey?o.get(m.parentKey)?.pageCompositionUnitKey!==d:!0:!1}),s=new Map,a=(m,d)=>{s.set(m,Math.min(2,(s.get(m)??0)+d))},c=m=>n.placements.some(d=>d.members.some(g=>g.sourceRange!==null&&Ao(m.sourceRange,g.sourceRange)));for(let m of t.elements.values())m.sourceFile!==n.entryFile||!m.importedFrom||!/^[A-Z]/.test(m.tag)||!c(m)||a(`${m.importedFrom}#${m.exportName??m.tag}`,1);let l=[...t.elements.values()].flatMap(m=>m.sourceFile!==n.entryFile&&m.importedFrom&&/^[A-Z]/.test(m.tag)?[{owner:`${m.sourceFile}#${m.componentName}`,ownerDefault:`${m.sourceFile}#default`,target:`${m.importedFrom}#${m.exportName??m.tag}`}]:[]);for(let m=0;m<=l.length;m+=1){let d=!1;for(let g of l){let h=s.get(g.owner)??s.get(g.ownerDefault)??0;if(!h)continue;let S=s.get(g.target)??0,E=Math.min(2,S+h);E!==S&&(s.set(g.target,E),d=!0)}if(!d)break}let u=m=>s.get(`${m.sourceFile}#${m.componentName}`)??s.get(`${m.sourceFile}#default`)??0;for(let m of i){m.pageCompositionActionScope={kind:"unavailable"};let d=t.elements.get(m.key);m.pageCompositionUnitKey&&d?.sourceFile===n.entryFile&&(m.pageCompositionActionScope={kind:"route-unit"})}let f=new Map;for(let m of i){let d=t.elements.get(m.key);if(!d||d.sourceFile===n.entryFile||m.key!==(it(m.key)??m.key))continue;let g=r.get(d.sourceFile);if(!g)continue;let h=se(g.ast,{kind:"jsx-node",strategy:"source-range",sourceRange:d.sourceRange});if(!h.ok||!h.match.path.isJSXElement())continue;let S=h.match.path,E=S.parentPath;if(!E||!E.isJSXFragment()&&!(E.isJSXElement()&&Me(E))){u(d)===1&&Ah(S)&&(m.pageCompositionActionScope={kind:"route-unit"});continue}if(!Ah(E))continue;let y=f.get(E.node)??[];y.push({entry:m,element:d,parentPath:E}),f.set(E.node,y)}for(let m of f.values()){let d=m[0];if(!d)continue;let g=d.entry.pageCompositionUnitKey,h=[],S=!!(g&&u(d.element)===1);for(let y of d.parentPath.node.children){if(fN(y))continue;if(!pN(y)){S=!1;break}let v=[...t.elements.values()].find(N=>N.sourceFile===d.element.sourceFile&&N.componentName===d.element.componentName&&Ao(N.sourceRange,mN(y))),C=v?o.get(v.identity.key):null;if(!v||!C||C.parentKey||C.pageCompositionUnitKey!==g||u(v)!==1){S=!1;break}h.push(C)}if(!S||h.length!==m.length||m.some(({entry:y})=>!h.some(v=>v.key===y.key)))continue;if(h.length===1){h[0].pageCompositionActionScope={kind:"route-unit"};continue}if(h.length<2)continue;let E=h.map(y=>y.key);for(let y of h)y.pageCompositionActionScope={kind:"source-siblings",siblingKeys:E}}}function Ah(e){let t=e.parentPath;return!!(t?.isReturnStatement?.()||t?.isArrowFunctionExpression?.()&&t.node.body===e.node)}function fN(e){return!!(e&&typeof e=="object"&&e.type==="JSXText"&&!(e.value??"").trim())}function pN(e){return!!(e&&typeof e=="object"&&e.type==="JSXElement")}function mN(e){return{startLine:e.loc?.start.line??-1,startColumn:e.loc?.start.column??-1,endLine:e.loc?.end.line??-1,endColumn:e.loc?.end.column??-1}}function Ao(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function gN(e,t){return Th(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&Th(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function Th(e,t,n,r){return e!==n?e-n:t-r}function hN(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:ya({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 Dl(e.detailProjections?.get(m.baseKey)?.textTargets.get(f)??null,m.repeatIndex)},async getElementPropertyWriteTarget(u,f){let m=c(u);return Dl(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(y=>y.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 pl({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=$w(u);return f?{baseKey:f.baseKey,repeatIndex:hh(e.document??null,u,f.baseKey,e.documentIndex)??gh(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 yN={"stale-version":$.VERSION_STALE,"capability-denied":$.CAPABILITY_REJECTED,"invalid-params":$.INVALID_PARAMS,"locator-miss":$.LOCATOR_FAILED,"route-not-found":$.ROUTE_NOT_FOUND,"unsupported-operation":$.UNSUPPORTED_OPERATION,"invalid-target":$.INVALID_TARGET,"ast-error":$.AST_PARSE_ERROR,"writeback-failed":$.WRITE_IO_ERROR,"rollback-failed":$.RECOVERY_REQUIRED,unknown:$.INTERNAL_ERROR};function Po(e){return yN[e]}function et(e){return e instanceof Error&&e.message?e.message:String(e)}function Fh(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function xN(e){let t=Kn(e);if(!Uw.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=>Jw.map(a=>`${s}/${a}`))}function bN(e){let n=Kn(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function SN(e){return Oh(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function EN(e){return Oh(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function Oh(e,t){let n=[];for(let r of e.matchAll(t)){let o=Lh(r[1]??"");o&&n.push(o)}return n}function _h(e,t){let n=Lh(t);return!n||n.startsWith("tailwindcss")||n.startsWith("http:")||n.startsWith("https:")?null:n.startsWith("@/")?Kn(`src/${n.slice(2)}`):n.startsWith("./")||n.startsWith("../")?Kn(`${vN(e)}/${n}`):n.startsWith("/")?Kn(n.slice(1)):Vl(n)?Kn(n):null}function Lh(e){return e.split(/[?#]/,1)[0]?.trim()??""}function Vl(e){return/\.css$/i.test(e)}function vN(e){let t=Kn(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function kN(e){return Array.from(new Set(e))}function Kn(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 IN(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 ws=class{constructor(t){this.options=t,this.fileSystem=new Ir(t.files),this.engine=this.createEngine(this.fileSystem)}get status(){return this.engine.status}initializeComposition(t){return this.engine.initializeComposition(t)}getDocument(t){return Ko(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 Uo(r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n))}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(t){return zo(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}getSourceFile(t){return Ho(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}resolveSourceLocation(t){return Wo(t,this.engine.getRenderDetail(t.key,t.composition))}async planOperation(t){let n=RN.safeParse(t);if(!n.success)return{result:Vo(t,n.error.issues.map(i=>i.message))};let r=new Ir(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:Cn(i)},a=r.getChangedFiles();if(a.length===0)return{result:s};let c=wN.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:a.map(l=>NN(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 Rs({projectRoot:"/snapshot",fileSystem:t,compositions:this.options.compositions,onEvent:r&&this.options.onEvent?o=>{let i=Jo(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}:{},resourceTranslationLocale:this.options.resourceTranslationLocale})}};function NN(e,t){return e.after===void 0?{path:e.path,operation:"delete",...t||e.before===void 0?{}:{expectedHash:ve(e.before)}}:{path:e.path,operation:e.before===void 0?"create":"update",...t||e.before===void 0?{}:{expectedHash:ve(e.before)},fullContent:e.after}}function PN(e){return new ws(e)}import{SiteEditOperationRequestSchema as FN}from"@vcp-dev/contracts";import wt from"node:fs/promises";import tt from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as AN,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as TN}from"@vcp-dev/contracts";var Ns=class{constructor(t){this.options=t,this.fileSystem=this.createFileSystem(),this.engine=Rs({...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 zo(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.engine.getCompositionEntryFiles()})}getSourceFile(t){return Ho(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.engine.getCompositionEntryFiles()})}resolveSourceLocation(t){return Wo(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 wt.readFile(tt.join(n,r),"utf8")},async readFileBytes(r){return wt.readFile(tt.join(n,r))},async getFileInfo(r){let o=tt.join(n,...r.split("/"));try{let i=await wt.lstat(o);return!i.isFile()||i.isSymbolicLink()?null:{path:r,sizeBytes:i.size}}catch{return null}},async writeFile(r,o){await pi(tt.join(n,r),o)},async createExclusive(r,o){let i=tt.join(n,r);await wt.mkdir(tt.dirname(i),{recursive:!0});let s=await wt.open(i,"wx");try{await s.writeFile(o,"utf8")}catch(a){throw await s.close(),await wt.rm(i,{force:!0}),a}await s.close()},async deleteFile(r){await wt.rm(tt.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=tt.join(n,i),a=tt.dirname(tt.join(n,o));for(;a!==s&&a.startsWith(`${s}${tt.sep}`);){try{await wt.rmdir(a)}catch(c){if(c instanceof Error&&"code"in c&&c.code==="ENOENT"){a=tt.dirname(a);continue}break}a=tt.dirname(a)}},async exists(r){try{return await wt.access(tt.join(n,r)),!0}catch{return!1}},async listFiles(r={}){let o=r.roots??[...TN,...AN],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=tt.join(n,...f.split("/")),h;try{h=await wt.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 wt.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 Kl(e){return new Ns(e)}var Ps=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=Kl({projectRoot:t.projectRoot,fileSystem:t.fileSystem,compositions:t.compositions,onEvent:n=>{let r=Jo(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:Ko(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:Uo(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=FN.safeParse(r);if(!o.success)return Vo(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:Cn(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:Cn(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:Cn(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 _N(e){return new Ps(e)}export{oe as FileHistoryStoreError,Qr as PageTemplateManagedSourceError,Ps as PreviewFileSystemSiteEditEngineRuntime,df as SITE_EDIT_RAW_COLOR_LITERAL_RE,ws as SnapshotSiteEditEngineRuntime,Lo as checkComponentI18nHostCompatibility,np as computeManagedPageTemplatePaths,_N as createPreviewSiteEditEngineRuntime,PN as createSiteEditEngineRuntime,qf as decodePageTemplateKey,yc as encodePageTemplateId,Py as instrumentSiteEditRuntimeAttributes,rp as isManagedPageTemplateSourcePath,$d as openFileHistoryStore,py as parseSourceModule,my as resolveImportBase,Rk as resolveManagedPageTemplateComposition,$i as scanManagedPageTemplateCandidates,ip as scanSiteEditCompositionsFromFiles,Xr as scanSiteEditThemeStyleViolations};
|
|
14
|
+
`||m==="\r"}if(s)return Er(t,`Unterminated block comment in ${t}.`);if(o)return Er(t,`Unterminated string literal in ${t}.`);if(c)return Er(t,`Unterminated MDX code fence in ${t}.`);let u=r.at(-1);return u?Er(t,`Unclosed token "${u.char}" in ${t}.`):{ok:!0}}function Er(e,t){return{ok:!1,errorCode:"ast-error",message:t,details:{path:e}}}function Rs(e){let t="idle",n=e.fileSystem??Hw(),r=yd(),o=fh({compositions:e.compositions,initialDocumentVersions:e.initialDocumentVersions}),i=new Map,s=new Map,a=new Set,c=null,l=e.history??(e.historyStore?af(e.historyStore):Gw()),u=uh(n,{externalAdapters:e.externalAdapters}),f=new Map,m=new Set,d=0,g=e.historyStore?.recoveryRequired??!1,h=Ol(),S=C();function E(p){return(Is.isAbsolute(p)?Is.relative(e.projectRoot,p):p).replace(/\\/g,"/").replace(/^\.\//,"")}function y(p,b){let x=Is.posix.dirname(p),I=b.replace(/\.(?:tsx?|jsx?)$/i,""),P=Is.posix.relative(x,I);return P.startsWith(".")?P:`./${P}`}function v(p,b){return p.startLine===b.startLine&&p.startColumn===b.startColumn&&p.endLine===b.endLine&&p.endColumn===b.endColumn}async function C(){let p=e.historyStore;if(p)try{let b=await p.readTransactionJournal();if(!b)return;let x=await p.readIndex(),I=await Promise.all(b.files.map(async T=>await n.exists(T.path)?ke(await n.readFile(T.path)):null));if(kh({journal:b,index:x,observedFileDigests:I})!=="ambiguous"){await p.clearTransactionJournal(b.transactionId);let T=await p.readStatus();T.recoveryRequired||(await p.cleanupTmp(),T=await p.readStatus()),g=T.recoveryRequired;return}await p.markRecoveryRequired(`Ambiguous transaction journal ${b.transactionId} at phase ${b.phase}`),g=!0}catch(b){g=!0,await p.markRecoveryRequired(`Transaction journal recovery failed: ${et(b)}`).catch(()=>{})}}function N(){return t==="disposed"}e.onEvent&&r.subscribe(e.onEvent);for(let p of o.entries){let b=Nh(p.context,p.entryFile);i.set(p.key,b),A(b,b.dependencyFiles)}function A(p,b){let x=new Set(b);R(p),p.dependencyFiles=x;for(let I of p.dependencyFiles){let P=s.get(I);P||(P=new Set,s.set(I,P)),P.add(p.key)}}function R(p){for(let b of p.dependencyFiles){let x=s.get(b);x&&(x.delete(p.key),x.size===0&&s.delete(b))}p.dependencyFiles.clear()}function F(p){let b=new Set;for(let x of p)for(let I of s.get(x)??[])b.add(I);return b}function _(p){for(let b of p)if(!s.has(b))return!1;return!0}async function D(p,b,x,I,P,T){let O=new Map,j=Pg(P.values()),q=new Map,$=typeof T.exists=="function"?B=>T.exists(B):async()=>!1;for(let[B,H]of p.elements){let de=b.nodes.get(B);if(!de)continue;let ue=x.get(H.sourceFile)??I.get(H.sourceFile),be=new Map,Ce=new Map,Pe=new Map,M=[];for(let Ne of H.textSegments){if(!ue){be.set(Ne.index,null);continue}let vr=await Ag({file:H.sourceFile,source:ue,segment:Ne,readFile:st=>T.readFile(st),exists:$,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:st,adapterId:xn,capabilities:Ds})=>({sourceType:st,adapterId:xn,capabilities:Ds})),functionCallContracts:e.functionCallContracts,fileCache:j}),Qe=await Rl({file:H.sourceFile,source:ue,target:{kind:"text-segment",segment:Ne},readFile:st=>T.readFile(st),exists:$,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:st,adapterId:xn,capabilities:Ds})=>({sourceType:st,adapterId:xn,capabilities:Ds})),functionCallContracts:e.functionCallContracts,fileCache:j}),ft=iN(vr);be.set(Ne.index,ft),Ce.set(Ne.index,vr),Pe.set(Ne.index,Qe),M.push({editable:Ne.editable,source:ft})}let U=new Map,ie=new Map;if(ue)for(let Ne of H.attributes??[]){let vr=await br({file:H.sourceFile,source:ue,sourceRange:Ne.sourceRange,expression:Ne.source?.expression??Ne.value,sourceInfo:Ne.source,readFile:ft=>T.readFile(ft),exists:$,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:ft,adapterId:st,capabilities:xn})=>({sourceType:ft,adapterId:st,capabilities:xn})),functionCallContracts:e.functionCallContracts,fileCache:j}),Qe=await jg({element:H,file:H.sourceFile,source:ue,propertyName:Ne.name,readFile:ft=>T.readFile(ft),exists:$,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:ft,adapterId:st,capabilities:xn})=>({sourceType:ft,adapterId:st,capabilities:xn})),functionCallContracts:e.functionCallContracts,fileCache:j});ie.set(Ne.name,Qe),U.set(Ne.name,vr)}let ge=Yg(sN(de.writeTarget),M),Se=$g({key:B,element:H,graph:p,provenances:Pe}),Ae=th(H),en=ue?await Pm({element:H,graph:p,file:H.sourceFile,source:ue,readFile:Ne=>T.readFile(Ne),exists:$,fileCache:q}):void 0,We=p.regions.find(Ne=>Ne.kind==="conditional-region"&&Ne.childKeys.includes(B)),Mo,Ls=We?.sourceCandidates?.[0];if(ue&&We&&Ls?.kind==="conditional-branch"){let Ne=await Rl({file:H.sourceFile,source:ue,target:{kind:"conditional-branch",candidate:Ls},readFile:Qe=>T.readFile(Qe),exists:$,graph:p,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:Qe,adapterId:ft,capabilities:st})=>({sourceType:Qe,adapterId:ft,capabilities:st})),functionCallContracts:e.functionCallContracts,fileCache:j});Mo={currentBranch:We.childKeys.indexOf(B)<=0?"then":"else",availableBranches:We.childKeys.length>1?["then","else"]:["then"],conditionExpression:Ls.conditionExpression,provenance:{finalSource:Ne.finalSource?{kind:Ne.finalSource.kind,file:Ne.finalSource.file,displayPath:Ne.finalSource.displayPath}:null,chain:Ne.chain.map(Qe=>({kind:Qe.kind,file:Qe.file,displayName:Qe.displayName,canEditHere:Qe.canEditHere})),confidence:Ne.confidence,editMode:Ne.editMode,diagnostics:Ne.diagnostics.map(Qe=>({code:Qe.code,message:Qe.message}))}}}O.set(B,{textSources:be,textTargets:Ce,elementPropertyTargets:U,propertyProvenances:ie,isRepeat:CN(B,p),provenances:Pe,writeTarget:ge,componentSemantic:Se,styleSource:Ae,conditional:Mo,dynamicData:en})}return O}function L(p){return typeof n.getVersion=="function"?n.getVersion(p):0}function oe(p,b){let x=o.initialVersions.get(p.key)??0;for(let I of b.values())x=Math.max(x,I);return Math.max(x,p.graph?.version??0)}function me(p){return i.get(p)?.graph?.version??o.initialVersions.get(p)??0}function ee(p){try{return me(o.resolveSelector(p.composition).key)}catch{return 0}}async function ce(p,b,x=n,I={}){let P=await wd(p,b,T=>x.readFile(T),T=>x.exists(T),{additionalEntries:await Qt(p,x),...I});if(P.diagnostics.length>0)throw new No(P.diagnostics);return P}async function _e(p,b,x={}){let I=i.get(p);if(!I)return null;let P=x.sourceCache??jl(f,[]),T=x.fileSystem??Ll(n),{graph:O,allSources:j,parsedModules:q,entryModule:$}=await ce(I.entryFile,b,T,{version:I.graph?.version??1}),B=new Map;for(let We of j.keys())B.set(We,L(We));let H=Math.max(oe(I,B),x.minimumVersion??0);x.changed&&H<=(I.graph?.version??0)&&(H=(I.graph?.version??0)+1),O.version=H;for(let[We,Mo]of j)$l(P,We,Mo,Ch);let de=await qt(I.composition,I.entryFile,j,P,T);O.routeId=I.routeId,O.composition=I.composition;let ue=nh(O),be=fd(ue,O),Ce=await D(O,ue,j,P,q,T),Pe=$h(O,be,Ce),M=jh(Ce),U=gh(Xg(O,ue,be,{canUpdateTextByKey:Pe,dynamicDataSummaryByKey:M}),O,Ce),ie=Jf({route:I.routeId,composition:I.composition,entryFile:I.entryFile,version:H,source:b,ast:$?.ast}),ge=Xf(ie);ie.ok&&dN(U,O,ie.projection,q);let Se={...U,composition:I.composition,...de?{styleContext:de}:{},pageComposition:ge},Ae=new Set([I.entryFile,...j.keys()]);if(de){Ae.add(de.entryCss.path);for(let We of de.stylesheets)Ae.add(We.path)}let en={...I,dependencyFiles:Ae,graph:O,topology:ue,capabilities:be,document:Se,pageComposition:ge,pageCompositionProjection:ie.projection,pagePlacementByKey:ie.ok?ie.projection.placementByKey:null,pagePlacementUnitByKey:ie.ok?ie.projection.placementUnitByKey:null,pageUnitByKey:ie.ok?ie.projection.unitByKey:null,pagePlacementsByUnitKey:ie.ok?ie.projection.placementsByUnitKey:null,documentIndex:mh(Se),detailProjections:Ce,fileVersions:B,styleContext:de};if(x.publish===!1)return en;Sr(f,P);for(let We of P.keys())m.delete(We);return A(I,Ae),Object.assign(I,en),I}async function Qt(p,b=n){let x=[];for(let I of bN(p))typeof b.exists=="function"&&await b.exists(I)&&x.push({file:I,source:await b.readFile(I)});return x}async function qt(p,b,x,I,P){let T=[];for(let[B,H]of x){if(Vl(B)){T.push(B);continue}for(let de of EN(H)){let ue=Mh(B,de);ue&&T.push(ue)}}if(!T.length){for(let B of SN(b))if(await P.exists(B)){T.push(B);break}}let O=new Map,j=IN(T).slice(0,Ih);for(;j.length>0&&O.size<Ih;){let B=j.shift();if(O.has(B)||!Vl(B))continue;let H=await Bh(B,I,P);if(H!==null){O.set(B,{path:B,content:H});for(let de of vN(H)){let ue=Mh(B,de);ue&&!O.has(ue)&&!j.includes(ue)&&j.push(ue)}}}let q=[...O.values()].map(B=>({...B,hash:ke(B.content)})),$=q[0];return $?{composition:p,revision:ke(JSON.stringify(q.map(({path:B,hash:H})=>({path:B,hash:H})))),entryCss:$,stylesheets:q.slice(1)}:null}async function Bh(p,b,x){let I=b.get(p);if(I!==void 0)return I;if(!await x.exists(p))return null;let P=await x.readFile(p);return $l(b,p,P,Ch),P}function jh(p){let b=new Map;for(let[x,I]of p)I.dynamicData?.bindings.length&&b.set(x,Vm(I.dynamicData.bindings));return b}function $h(p,b,x){let I=new Map;for(let[P,T]of p.elements){if(!b.get(P)?.canUpdateText){I.set(P,!1);continue}let j=x.get(P),q=T.textSegments.some($=>{if(!$.editable)return!1;let B=j?.provenances.get($.index)??null;return!B||Vh(B)});I.set(P,q)}return I}function Vh(p){return p.editMode==="direct"||p.editMode==="proxy"||p.editMode==="upstream"}async function To(p,b={}){let x=[...new Set(p)],I=b.affectedCompositionKeys!==void 0,P=I?new Set(b.affectedCompositionKeys):F(x);if(!I&&(P.size===0||!_(x)))for(let $ of i.values())Ul($,x)&&P.add($.key);let T=!I&&P.size===0&&x.some(_h),O=b.publish===!1?jl(f,x):void 0,j={rebuiltRoutes:[],failedRoutes:[],...b.publish===!1?{candidateRouteStates:[],candidateSourceCache:O}:{}},q=Ll(n);for(let $ of i.values())if(!(b.excludedCompositionKeys?.has($.key)||!(P.has($.key)||T)))try{let H=!!$.graph,de=await q.readFile($.entryFile),ue=await _e($.key,de,{...b,fileSystem:q,...O?{sourceCache:O}:{}});ue?.graph&&(j.rebuiltRoutes.push({documentChanged:H,composition:$.composition,routeId:$.routeId,version:ue.graph.version}),j.candidateRouteStates?.push({composition:$.composition,key:$.key,routeId:$.routeId,state:ue}))}catch(H){j.failedRoutes.push({...Eh($.routeId,H),composition:$.composition})}return j}function Un(p){let b=[...new Set(p)],x=F(b);if(x.size>0&&_(b))return[...x];for(let I of i.values())Ul(I,b)&&x.add(I.key);return[...x]}function Kh(p){let b=new Set(Un(p));return o.entries.filter(x=>b.has(x.key)).map(x=>x.context)}function Uh(p){return[...new Set(Un(p))].sort((x,I)=>x<I?-1:x>I?1:0).map(x=>o.getByKey(x)?.context).filter(x=>x!==void 0)}function Jh(p,b){let x=new Set(Un(b)),I=p.provenance?.affectedCompositions??[];if(I.length===0)return x;if([...new Set(I.map(T=>o.resolveContext(T).key))].some(T=>!x.has(T)))throw new Error("History provenance does not match the affected composition index.");return x}function Xh(p,b){let x=p.composition??p.provenance?.initiatingComposition;if(x){let T=o.resolveContext(x);return{context:T.context,key:T.key}}let I=[...new Set(Un(b))];if(I.length!==1)throw new Error(`Legacy history entry cannot be attributed to a unique composition (affected composition count: ${I.length}).`);let P=o.getByKey(I[0]);if(!P)throw new Error("Legacy history entry references an unknown affected composition.");return{context:P.context,key:P.key}}function As(p,b){r.emit({type:"operation-completed",composition:p.composition,result:p});for(let{composition:x,version:I}of b.rebuiltRoutes)r.emit({type:"document-changed",composition:x,version:I});for(let{composition:x,message:I}of b.failedRoutes)r.emit({type:"graph-error",composition:x,message:I})}function Ul(p,b){return b.some(x=>p.dependencyFiles.has(x)||p.entryFile===x||p.graph?.fileIndex.has(x))}function Jl(p){for(let b of p)a.add(b);c||N()||(c=(async()=>{t="building";let b=!1;try{for(;a.size>0;){if(N())return;await zh(),await h.runExclusive(async()=>{if(d>0||N())return;let x=[...a];a.clear();let I=await Xl(x);if(I.length===0)return;let P=Un(I);for(let j of P){let q=i.get(j)?.composition;q&&r.emit({type:"graph-invalidated",composition:q})}let{rebuiltRoutes:T,failedRoutes:O}=await To(I,{changed:!0});for(let{documentChanged:j,composition:q,version:$}of T)r.emit({type:"graph-ready",composition:q,version:$}),j&&r.emit({type:"document-changed",composition:q,version:$});for(let{composition:j,message:q}of O)b=!0,r.emit({type:"graph-error",composition:j,message:q})})}}finally{c=null,t!=="disposed"&&(t=!b&&[...i.values()].some(x=>x.graph)?"ready":"idle"),a.size>0&&Jl([])}})())}async function zh(){for(;d>0;)await new Promise(p=>setTimeout(p,0))}async function Xl(p){let b=[];for(let x of new Set(p)){let I=f.get(x);if(I===void 0){if(m.has(x)&&!await n.exists(x))continue;m.delete(x),b.push(x);continue}try{await n.readFile(x)!==I&&(m.delete(x),b.push(x))}catch(P){if(!uN(P))try{if(await n.exists(x))continue}catch{continue}m.add(x),b.push(x)}}return b}function zl(p){vh(f,p);for(let b of p)b.exists===!1?m.add(b.file):m.delete(b.file)}function Hl(p){m.clear();for(let b of p)m.add(b)}async function Wl(p){let b=await Xl(p);if(b.length===0)return;let x=Un(b);for(let T of x){let O=i.get(T)?.composition;O&&r.emit({type:"graph-invalidated",composition:O})}let{rebuiltRoutes:I,failedRoutes:P}=await To(b,{changed:!0});for(let{documentChanged:T,composition:O,version:j}of I)r.emit({type:"graph-ready",composition:O,version:j}),T&&r.emit({type:"document-changed",composition:O,version:j});for(let{composition:T,message:O}of P)r.emit({type:"graph-error",composition:T,message:O})}async function Hh(p,b){let x=zn(p,b);if(!x?.graph)return;let I=it(p)??p,P=x.graph.elements.get(I);P&&await Wl([P.sourceFile])}async function Gl(p){let b=new Set;if(p.target.kind==="node"){let x=zn(p.target.key,p.composition),I=it(p.target.key)??p.target.key,P=x?.graph?.elements.get(I);P&&b.add(P.sourceFile)}else if(p.target.kind==="route"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&b.add(x.entryFile)}else if(p.target.kind==="page-unit"){let x=i.get(o.resolveSelector(p.target.composition).key);x&&b.add(x.entryFile)}else if(p.target.kind==="source-file")b.add(p.target.path);else if(p.target.kind==="source-batch")for(let x of p.target.paths)b.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 I of x){let P=zn(I,p.composition),T=it(I)??I,O=P?.graph?.elements.get(T);O&&b.add(O.sourceFile)}}await Wl(b)}async function Wh(p){if(p.params.kind!=="source-edit")return Ts(p,"invalid-params","source-edit requires source-edit params");for(let b of p.params.edits){let x=lN(b);if(!x.ok)return Ts(p,x.errorCode,x.message,x.details)}d+=1;try{let b=await qh(p.params.edits);if(!b.ok)return Ts(p,b.errorCode,b.message,b.details);await Gl(p);let x={operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:p.params.conflictPolicy,edits:p.params.edits.map(I=>I.operation==="delete"?{operation:"delete",file:I.path,baseContentHash:I.baseContentHash??null}:{operation:"upsert",file:I.path,baseContentHash:I.baseContentHash??null,content:I.content})};return await Xn({request:p,filePlan:x})}catch(b){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:ee(p),error:{code:K.INTERNAL_ERROR,message:et(b)}}}finally{d-=1}}async function Gh(p){if(p.target.kind!=="project"||p.params.kind!=="insert-page-resource")return le(p,K.INVALID_PARAMS,"insert-page-resource requires project target and matching params.");d+=1;try{let b=await Lo({deferTargetLocale:!!e.resourceTranslationLocale,targetLocale:e.resourceTranslationLocale,files:[...p.params.artifact.components.flatMap(I=>I.materialization.files.map(P=>({path:P.pathTemplate,content:P.content}))),...p.params.artifact.pages.flatMap(I=>I.materialization.files.map(P=>({path:P.pathTemplate,content:P.content})))],exists:I=>n.exists(I),readFile:I=>n.readFile(I)});if(!b.ok)return le(p,K.MATERIALIZATION_REJECTED,b.message);let x=await Ya({artifact:p.params.artifact,exists:I=>n.exists(I)});return x.ok?await Xn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:"overwrite",edits:x.files},output:{kind:"insert-page-resource",package_instance_id:x.packageInstanceId,pages:x.pages},historyPolicy:"none"}):le(p,x.code==="MATERIALIZATION_CONFLICT"?K.MATERIALIZATION_CONFLICT:K.MATERIALIZATION_REJECTED,x.message,x.path?{path:x.path}:void 0)}catch(b){return le(p,K.INTERNAL_ERROR,et(b))}finally{d-=1}}async function Yh(p){if(p.target.kind!=="project"||p.params.kind!=="delete-page-source")return le(p,K.INVALID_PARAMS,"delete-page-source requires project target and matching params.");if(!n.listFiles)return le(p,K.PLAN_FAILED,"Complete project file listing is required for page deletion.");d+=1;try{let b=Oh(await n.listFiles({maxFiles:5e4,maxDepth:64}));if(b.truncated)return le(p,K.PLAN_FAILED,"Project file listing is incomplete; page deletion was refused.",{truncationReasons:b.truncated.reasons});let x=b.files.filter(({path:O})=>/\.(?:tsx?|jsx?)$/.test(O)),I=Object.fromEntries(await Promise.all(x.map(async({path:O})=>[O,await n.readFile(O)]))),P=mp({expectedUrlPath:p.params.expectedUrlPath,files:I});if(!P.ok)return le(p,P.code==="HOME_PAGE_LOCKED"?K.HOME_PAGE_LOCKED:P.code==="ROUTE_NOT_FOUND"?K.ROUTE_NOT_FOUND:K.PLAN_FAILED,P.message);let T=await Promise.all(P.edits.map(async O=>({...O,baseContentHash:ke(await n.readFile(O.file))})));return Xn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:p.target,documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:T},output:{kind:"delete-page-source",deleted_files:P.deletedFiles,updated_files:P.updatedFiles,preserved_shared_files:P.preservedSharedFiles,warnings:P.warnings},historyPolicy:"none"})}catch(b){return le(p,K.INTERNAL_ERROR,et(b))}finally{d-=1}}async function Zh(p,b){if(p.kind!=="insert-child"&&p.kind!=="replace-node")return le(p,K.UNSUPPORTED_OPERATION,"Only page-unit insert-child and replace-node materialization are supported by this transaction.");if(p.params.kind!=="insert-child"&&p.params.kind!=="replace-node"||p.kind!==p.params.kind)return le(p,K.INVALID_PARAMS,"Page-unit materialization operation kind must match its params.");if(p.params.kind==="insert-child"){if(!("kind"in p.params.position)||p.params.position.kind!=="page-composition")return le(p,K.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.");if(p.params.position.documentVersion!==p.documentVersion)return le(p,K.VERSION_STALE,"Page-unit insert-child placement belongs to a different document version.")}let x=b.document,I=b.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!I||I.status!=="supported")return le(p,K.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||I.documentVersion!==x.version)return le(p,K.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let P=p.params.node.kind==="component-call"?p.params.node.materialization:void 0;if(!P)return le(p,K.UNSUPPORTED_OPERATION,"Page-unit insertion currently requires a static materialization manifest.");let T=p.params.kind==="insert-child"?p.params.position:null,O=await Lo({deferTargetLocale:!!e.resourceTranslationLocale,targetLocale:e.resourceTranslationLocale,files:P.files.map($=>({path:$.pathTemplate,content:$.content})),exists:$=>n.exists($),readFile:$=>n.readFile($)});if(!O.ok)return le(p,K.MATERIALIZATION_REJECTED,O.message);let j=await Ww(n,Object.keys(P.projectDependencies??{})),q=await Nf({manifest:P,generatedRoot:"components/site/generated",controlledFiles:P.files.map($=>({pathTemplate:$.pathTemplate})),exists:$=>n.exists($),availableHostDependencies:j,commit:async $=>{let B=await n.readFile(b.entryFile),H=b.document,de=b.pageCompositionProjection;if(!H||H.pageComposition?.status!=="supported"||H.version!==p.documentVersion||!de||de.status!=="supported"||de.documentVersion!==H.version)return{ok:!0,data:le(p,K.VERSION_STALE,"The route changed before the page-unit insertion could commit.")};let ue=$.entry.path,be=sy($.instanceName),Ce,Pe=[];if(p.params.kind==="insert-child"){if(!T||!("kind"in T)||T.kind!=="page-composition")return{ok:!0,data:le(p,K.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.")};let ge=rc({routeId:b.routeId,entryFile:b.entryFile,currentDocumentVersion:H.version,expectedDocumentVersion:p.documentVersion,source:B,projection:de,placementKey:T.placementKey,component:{source:ue,exportName:$.entry.export.kind==="default"?"default":$.entry.export.name,localName:be}});if(!ge.ok)return{ok:!0,data:le(p,Os(ge.error.code),ge.error.message,{diagnostics:ge.error.diagnostics})};let Se=ge.plan.rewriteStep,Ae;switch(Se.kind){case"insert-root-expression":Ae=Di({source:B,locator:Se.locator,expectedSourceHash:Se.sourceHash,action:{kind:"insert",jsx:Se.node.jsx,placement:Se.placement,replaceOriginal:Se.replaceOriginal}});break;case"insert-child":Ae=Gn({source:B,locator:Se.parentLocator,node:Se.node,placement:Se.placement,...Se.anchorLocator?{anchorLocator:Se.anchorLocator}:{}});break;default:Ae={ok:!1,source:B,diagnostic:{code:"unsupported-syntax",message:`Unsupported route composition rewrite: ${String(Se)}`}}}if(!Ae.ok)return{ok:!0,data:le(p,K.AST_PARSE_ERROR,Ae.diagnostic.message)};Ce=Ae.source}else{let ge=oc({routeId:b.routeId,composition:b.composition,entryFile:b.entryFile,currentDocumentVersion:H.version,expectedDocumentVersion:p.documentVersion,source:B,projection:de,placementUnitKey:p.target.placementUnitKey,operation:"replace-node"});if(!ge.ok)return{ok:!0,data:le(p,Os(ge.error.code),ge.error.message,{diagnostics:ge.error.diagnostics})};let Se=ge.plan.rewriteStep,Ae;switch(Se.kind){case"replace-root-expression":Ae=Di({source:B,locator:Se.locator,expectedSourceHash:Se.sourceHash,action:{kind:"replace",jsx:`<${be} />`}});break;case"replace-node":Ae=ti({source:B,locator:Se.locator,node:{jsx:`<${be} />`}});break;default:Ae={ok:!1,source:B,diagnostic:{message:`Unsupported page-unit replacement rewrite: ${Se.kind}`}}}if(!Ae.ok)return{ok:!0,data:le(p,K.AST_PARSE_ERROR,Ae.diagnostic.message)};let en=await Yl({routeState:b,placementUnitKey:p.target.placementUnitKey,source:B,mutatedSource:Ae.source});Ce=en.source,Pe=await Promise.all(en.files.map(async We=>({operation:"delete",file:We,baseContentHash:ke(await n.readFile(We))})))}let M=Qn({source:Ce,moduleSpecifier:y(b.entryFile,ue),imports:$.entry.export.kind==="default"?[{kind:"default",local:be}]:[{kind:"named",imported:$.entry.export.name,local:be}]});if(!M.ok)return{ok:!0,data:le(p,K.AST_PARSE_ERROR,M.diagnostic.message)};let U=$.files.map(ge=>({operation:"create-only",file:ge.path,content:ge.content})),ie=[{operation:"upsert",file:b.entryFile,content:M.source,baseContentHash:ke(B)},...U,...Pe];d+=1;try{let ge=await Xn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:b.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:ie}});return!ge.ok&&ge.error?.message.includes("MATERIALIZATION_INSTANCE_CONFLICT")?{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:ge.error?.message??"Static prefab instance conflicted during commit."}}:{ok:!0,data:ge}}finally{d-=1}}});return q.ok?q.data:le(p,q.error.code==="MATERIALIZATION_INSTANCE_CONFLICT"?K.MATERIALIZATION_CONFLICT:K.MATERIALIZATION_REJECTED,q.error.message,{materializationCode:q.error.code})}async function Qh(p,b){if(p.kind!=="move-node"&&p.kind!=="remove-node")return le(p,K.UNSUPPORTED_OPERATION,"Only page-unit move-node and remove-node are currently supported by the page composition transaction.");let x=b.document,I=b.pageCompositionProjection;if(!x||x.pageComposition?.status!=="supported"||!I||I.status!=="supported")return le(p,K.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(p.documentVersion!==x.version||I.documentVersion!==x.version)return le(p,K.VERSION_STALE,`Document version ${p.documentVersion} is stale (current: ${x.version}).`);let P=await n.readFile(b.entryFile),T=oc({routeId:b.routeId,composition:b.composition,entryFile:b.entryFile,currentDocumentVersion:x.version,expectedDocumentVersion:p.documentVersion,source:P,projection:I,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(!T.ok)return le(p,Os(T.error.code),T.error.message,{diagnostics:T.error.diagnostics});let O=T.plan.rewriteStep,j;switch(O.kind){case"move-node":j=Yn({source:P,locator:O.locator,targetParentLocator:O.targetParentLocator,placement:O.placement,...O.anchorLocator?{anchorLocator:O.anchorLocator}:{}});break;case"remove-node":j=Wn({source:P,locator:O.locator});break;case"remove-root-expression":j=Di({source:P,locator:O.locator,expectedSourceHash:O.sourceHash,action:{kind:"remove"}});break;default:j={ok:!1,source:P,diagnostic:{message:`Unsupported page-unit mutation rewrite: ${O.kind}`}}}if(!j.ok)return le(p,K.AST_PARSE_ERROR,j.diagnostic.message);let q=j.source,$=[];if(p.kind==="remove-node"){let H=await Yl({routeState:b,placementUnitKey:p.target.placementUnitKey,source:P,mutatedSource:q});q=H.source,$=await Promise.all(H.files.map(async de=>({operation:"delete",file:de,baseContentHash:ke(await n.readFile(de))})))}let B=[{operation:"upsert",file:b.entryFile,content:q,baseContentHash:ke(P)},...$];d+=1;try{return await Xn({request:p,filePlan:{operationId:p.id,kind:"source-edit",target:{kind:"source-file",path:b.entryFile},documentVersion:p.documentVersion,conflictPolicy:"compare-and-swap",edits:B}})}finally{d-=1}}async function Yl(p){let b={source:p.mutatedSource,files:[]},x=p.routeState.graph,I=p.routeState.pageCompositionProjection;if(!x||!I||I.status!=="supported"||!n.listFiles)return b;let T=I.placementUnitByKey.get(p.placementUnitKey)?.sourceRange;if(!T)return b;let O=[...x.elements.values()].find(M=>M.sourceFile===p.routeState.entryFile&&M.importedFrom&&v(M.sourceRange,T));if(!O?.importedFrom||!O.exportName)return b;let j=E(O.importedFrom),q="components/site/generated/";if(!j.startsWith(q))return b;let $=j.slice(q.length).split("/")[0];if(!$||!/-[0-9a-f]{8}$/i.test($))return b;let B=`${q}${$}`;if([...x.elements.values()].filter(M=>M.sourceFile===p.routeState.entryFile&&E(M.importedFrom??"")===j).length!==1)return b;let de=await n.listFiles({maxFiles:5e3,maxDepth:32}),ue=Array.isArray(de)?de:de.files;if(!Array.isArray(de)&&de.truncated)return b;let be=ue.map(({path:M})=>M).filter(M=>M===B||M.startsWith(`${B}/`));if(be.length===0||!be.includes(j))return b;for(let{path:M}of ue)if(!(M===p.routeState.entryFile||M===B||M.startsWith(`${B}/`)))try{if((await n.readFile(M)).includes($))return b}catch{return b}let Ce=y(p.routeState.entryFile,j),Pe=qn({source:p.mutatedSource,moduleSpecifier:Ce,imports:O.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:O.exportName}]});return Pe.ok?Pe.source.includes($)?{source:Pe.source,files:[]}:{source:Pe.source,files:be.sort((M,U)=>M.localeCompare(U))}:b}async function qh(p){if(n.getFileInfo){for(let T of p)if(await n.exists(T.path)&&await n.getFileInfo(T.path)===null)return{ok:!1,errorCode:"invalid-params",message:`Source edit path must resolve to a regular non-symbolic-link file: ${T.path}`,details:{path:T.path}}}for(let T of p){if(T.operation!=="upsert"||!/^(?:src\/)?app\/globals\.css$/i.test(T.path))continue;let O=await n.exists(T.path)?await Qs(n,T.path):null;if(O?.ok){let j=Dw(O.content,T.content);if(!j.ok)return{ok:!1,errorCode:"invalid-params",message:j.message,details:{path:T.path,code:j.code}}}}let b=ey(p);if(b.length===0)return{ok:!0};let x=aN(n,p),I=new Map,P=(T,O)=>{let j=I.get(T);if(j?.source===O)return j.result;let q=Ut(T,O);return I.set(T,{source:O,result:q}),q};try{for(let T of b){let O=i.get(T);O&&await ce(O.entryFile,await x.readFile(O.entryFile),x,{validationOnly:!0,parseModule:P})}}catch(T){return{ok:!1,errorCode:"ast-error",message:`Source edit preflight failed: ${et(T)}`,details:{compositionKeys:b}}}return{ok:!0}}function ey(p){return p.map(x=>x.path).some(_h)?[...i.keys()]:[]}function Ts(p,b,x,I){let P=Po(b);return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:ee(p),error:{code:P,message:x,...I?{details:I}:{}}}}async function Fs(p){let b=[];for(let x of new Set(p))b.push(await ty(x));return b}async function ty(p){if(!(typeof n.exists=="function"?await n.exists(p):!0))return{file:p,content:"",version:Math.max(0,L(p)),exists:!1};let x=await n.readFile(p);return{file:p,content:x,version:Math.max(1,L(p)),exists:!0,sha256:ke(x)}}async function Zl(p,b,x,I){if(!e.historyStore)return null;let P=new Map(b.map(j=>[j.file,j])),T=new Map(x.map(j=>[j.file,j])),O=[...new Set([...P.keys(),...T.keys()])].sort().map(j=>{let q=P.get(j),$=T.get(j);return{path:j,preDigest:q?.exists===!1||!q?null:ke(q.content),postDigest:$?.exists===!1||!$?null:ke($.content)}});return{schemaVersion:2,transactionId:`${p}:${I.expectedIndexDigest}`,operationId:p,phase:"prepared",historyTransition:I,files:O}}async function Ql(p){return!p||!e.historyStore||await e.historyStore.writeTransactionJournal(p),p}async function Jn(p){p&&e.historyStore&&await e.historyStore.clearTransactionJournal(p.transactionId)}async function _s(p,b){let x=[];try{for(let I of p)await ql(I),typeof n.bumpVersion=="function"&&n.bumpVersion(I.file),x.push(I.file)}catch(I){let P=await ny(b.filter(T=>x.includes(T.file)));return P.ok?{ok:!1,reason:`Writeback failed and committed files were restored: ${et(I)}`,rolledBack:!0}:{ok:!1,reason:`Writeback failed, then rollback failed for ${P.failedFiles.join(", ")}: ${et(I)}`,rolledBack:!1}}return{ok:!0,snapshots:p.map(ry)}}async function ql(p){if(p.exists===!1){await n.deleteFile(p.file);return}await n.writeFile(p.file,p.content)}async function ny(p){let b=[];for(let x of p)try{await ql(x),typeof n.bumpVersion=="function"&&n.bumpVersion(x.file)}catch{b.push(x.file)}return b.length===0?{ok:!0}:{ok:!1,failedFiles:b}}function ry(p){let b=p.exists!==!1;return{file:p.file,content:b?p.content:"",version:p.version,exists:b,...b?{sha256:ke(p.content)}:{}}}async function Xn(p){return h.runExclusive(()=>oy(p))}async function oy(p){let b=p.filePlan.edits.map(M=>M.file),x=o.resolveSelector(p.request.composition),I=x.context,P=p.historyPolicy==="none"?void 0:{initiatingComposition:I,affectedCompositions:Uh(b)},T=await Fs(b),O=new Map(T.filter(M=>M.exists!==!1).map(M=>[M.file,M.content])),j=tu(),q=new Map(f),$=new Set(m),B=new Set([...i.values()].filter(M=>p.filePlan.edits.some(U=>U.operation==="delete"&&U.file===M.entryFile)).map(M=>M.key)),H=p.filePlan.edits.map(M=>M.operation==="delete"?{file:M.file,content:"",version:0,exists:!1}:{file:M.file,content:M.content,version:0,exists:!0,sha256:ke(M.content)}),de={operationId:p.filePlan.operationId,intents:p.filePlan.edits.map(M=>M.operation==="delete"?{kind:"delete",path:M.file}:{kind:M.operation==="create-only"?"create-only":"upsert",path:M.file,content:M.content})},ue=null,be=!1,Ce=await Ss({overlay:O,exists:M=>n.exists(M),plan:de,buildCandidate:async({plan:M})=>({plan:M}),prepareHistory:async()=>{let M=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:T,postSnapshots:H,...p.selectionRef?{selectionRef:p.selectionRef}:{},...p.output?{output:p.output}:{},...P?{provenance:P}:{}}),U=M?.historyTransition?M.historyTransition:e.historyStore?zw(await e.historyStore.readIndex()):null;if(e.historyStore&&!U)throw new Error("Durable history did not provide an exact index transition.");return ue=await Zl(p.request.id,T,H,U),ue=await Ql(ue),{history:M,historyTransition:U}},reverify:async()=>{},writeCandidate:async()=>{let M=await u.executeFilePlan(p.filePlan);if(!M.ok)throw new Cs(M);return{postSnapshots:await Fs(M.affectedFiles),affectedFiles:M.affectedFiles,internalResultVersion:M.resultVersion}},validateCandidate:async({candidate:M,receipt:U})=>{let ie=await To(U.affectedFiles,{changed:!0,minimumVersion:U.internalResultVersion,publish:!1,excludedCompositionKeys:B});if(ie.failedRoutes.length>0)throw new Vn(ie.failedRoutes);let ge=ru(j,ie.candidateRouteStates??[]),Se=nu(ge,x.key);return{...M,rebuild:ie,routeSnapshots:ge,resultVersion:Se,...Ph(p.selectionRef,ge.map(Ae=>Ae.state.document))?{selectionRef:Ph(p.selectionRef,ge.map(Ae=>Ae.state.document))}:{}}},publishCandidate:async({candidate:M,history:U,receipt:ie})=>{U?.history&&(await l.publishPrepared(U.history),be=!0);let ge=M.resultVersion??ie.internalResultVersion;return{composition:I,requestId:p.request.id,kind:p.request.kind,target:p.request.target,ok:!0,resultVersion:ge,affectedFiles:ie.affectedFiles,fileChanges:ie.postSnapshots.map(Se=>({path:Se.file,operation:Se.exists===!1?"delete":"upsert"})),...p.output?{output:p.output}:{},...M.selectionRef?{selectionRef:M.selectionRef}:{}}},swapCandidate:({candidate:M,receipt:U})=>{M.routeSnapshots&&Fo(M.routeSnapshots),M.rebuild?.candidateSourceCache&&Sr(f,M.rebuild.candidateSourceCache),zl(U.postSnapshots)},finalizeCandidate:async()=>{await Jn(ue);for(let M of B)i.delete(M)},emitCommitted:({candidate:M,published:U})=>{As(U,M.rebuild??{rebuiltRoutes:[],failedRoutes:[]})},rollbackCandidate:async({history:M,receipt:U})=>{if(be)throw new Error("history was published before transaction finalization failed");if(U){let ie=await _s(T,U.postSnapshots);if(!ie.ok)throw new Error(ie.reason)}Fo(j),Sr(f,q),Hl($),M?.history&&await l.discardPrepared?.(M.history),await Jn(ue)}});if(Ce.ok)return Ce.published;if(Ce.stage==="precheck"||Ce.stage==="build")try{await Jn(ue)}catch(M){let U=await _o(et(M));return le(p.request,U,"Unable to clear an uncommitted transaction journal.")}if(Ce.recoveryRequired){let M=await _o(Ce.reason);return le(p.request,M===K.RECOVERY_PERSIST_FAILED?M:K.ROLLBACK_FAILED,Ce.reason)}let Pe=Ce.error;return Pe instanceof Cs?{...le(p.request,Po(Pe.result.errorCode),Pe.result.reason),...Pe.result.affectedFiles?{affectedFiles:Pe.result.affectedFiles}:{}}:Pe instanceof Vn?le(p.request,K.ROUTE_REBUILD_FAILED,`Route rebuild failed and source was rolled back: ${Bl(Pe.failedRoutes)}`,{failedRoutes:Pe.failedRoutes}):le(p.request,iu(Ce.stage),et(Pe))}async function eu(p){return h.runExclusive(async()=>{let b=p==="undo"?await l.prepareUndo():await l.prepareRedo();return b?iy(p,b):{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:K.INTERNAL_ERROR,message:p==="undo"?"Nothing to undo":"Nothing to redo"}}})}async function iy(p,b){let x=b.entry,I=p==="undo"?x.preSnapshots:x.postSnapshots,P=p==="undo"?x.postSnapshots:x.preSnapshots,T=I.map(U=>U.file),{context:O,key:j}=Xh(x,T),q=await Fs(T),$=new Map(q.filter(U=>U.exists!==!1).map(U=>[U.file,U.content])),B=me(j),H=tu(),de=new Map(f),ue=new Set(m),be=null,Ce=!1,Pe,M=await Ss({overlay:$,plan:{operationId:`${p}:${x.operationId}`,intents:I.map(U=>U.exists===!1?{kind:"delete",path:U.file}:{kind:"upsert",path:U.file,content:U.content})},buildCandidate:async()=>({}),prepareHistory:async()=>(be=await Zl(`${p}:${x.operationId}`,q,I,b.historyTransition),be=await Ql(be),b),reverify:async()=>{},writeCandidate:async()=>{let U=await _s(I,P);if(!U.ok)throw new Error(U.reason);return{snapshots:U.snapshots}},validateCandidate:async({candidate:U})=>{Pe=Jh(x,T);let ie=await To(T,{changed:!0,minimumVersion:B+1,publish:!1,affectedCompositionKeys:Pe});if(ie.failedRoutes.length>0)throw new Vn(ie.failedRoutes);let ge=ru(H,ie.candidateRouteStates??[]),Se=nu(ge,j);return{...U,rebuild:ie,routeSnapshots:ge,resultVersion:Se}},publishCandidate:async({candidate:U,history:ie,receipt:ge})=>{if(!ie)throw new Error("history cursor intent is missing");await l.publishPrepared(ie),Ce=!0;let Se=U.resultVersion??B+1;return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!0,resultVersion:Se,affectedFiles:T,fileChanges:ge.snapshots.map(Ae=>({path:Ae.file,operation:Ae.exists===!1?"delete":"upsert"})),...x.output?{output:x.output}:{}}},swapCandidate:({candidate:U,receipt:ie})=>{U.routeSnapshots&&Fo(U.routeSnapshots),U.rebuild?.candidateSourceCache&&Sr(f,U.rebuild.candidateSourceCache),zl(ie.snapshots)},finalizeCandidate:async()=>{await Jn(be)},emitCommitted:({candidate:U,published:ie})=>As(ie,U.rebuild??{rebuiltRoutes:[],failedRoutes:[]}),rollbackCandidate:async({history:U,receipt:ie})=>{if(Ce)throw new Error("history cursor was published before transaction finalization failed");if(ie){let ge=await _s(P,ie.snapshots);if(!ge.ok)throw new Error(ge.reason)}Fo(H),Sr(f,de),Hl(ue),U&&await l.discardPrepared?.(U),await Jn(be)}});if(M.ok)return M.published;if(M.stage==="precheck"||M.stage==="build")try{await Jn(be)}catch(U){let ie=await _o(et(U));return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:B,error:{code:ie,message:"Unable to clear an uncommitted transaction journal."}}}if(M.recoveryRequired){let U=await _o(M.reason);return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:B,affectedFiles:T,error:{code:U===K.RECOVERY_PERSIST_FAILED?U:K.ROLLBACK_FAILED,message:M.reason}}}return{composition:O,requestId:p,kind:x.kind,target:x.target,ok:!1,resultVersion:B,affectedFiles:T,error:{code:M.error instanceof Vn?K.ROUTE_REBUILD_FAILED:iu(M.stage),message:et(M.error),...M.error instanceof Vn?{details:{failedRoutes:M.error.failedRoutes}}:{}}}}function tu(){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 nu(p,b){return p.find(I=>I.key===b)?.state.graph?.version??o.initialVersions.get(b)??0}function ru(p,b){let x=new Map(p.map(I=>[I.key,I]));for(let I of b)x.set(I.key,I);return[...x.values()]}function Fo(p){for(let b of i.values())R(b);for(let b of p){let x={...b.state,dependencyFiles:new Set(b.state.dependencyFiles),fileVersions:new Map(b.state.fileVersions)};i.set(b.key,x),A(x,x.dependencyFiles)}}async function Ms(p){let b=i.get(p);if(!b)throw new Error(`Composition not found: ${p}`);if(b.graph)return;let x=await n.readFile(b.entryFile);await _e(p,x)}function zn(p,b){let x=i.get(o.resolveSelector(b).key)??null;return!x||!ou(x,p)?null:x}function ou(p,b){if(p.documentIndex?.entriesByKey.has(b)||p.graph?.elements.has(b))return!0;let x=it(b);return x&&x!==b?p.graph?.elements.has(x)===!0:!1}function le(p,b,x,I){return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:ee(p),error:{code:b,message:x,...I?{details:I}:{}}}}function iu(p){return p==="validate"?K.ROUTE_REBUILD_FAILED:p==="publish"?K.HISTORY_COMMIT_FAILED:K.WRITE_IO_ERROR}async function _o(p){if(g=!0,!l.markRecoveryRequired)return K.RECOVERY_REQUIRED;try{return await l.markRecoveryRequired(p),K.RECOVERY_REQUIRED}catch{return K.RECOVERY_PERSIST_FAILED}}function sy(p){let x=p.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(I=>I.charAt(0).toUpperCase()+I.slice(1)).join("").replace(/^[^a-zA-Z_$]+/,"");return x?`Prefab${x}`:"GeneratedPrefab"}function Os(p){return p==="VERSION_STALE"?K.VERSION_STALE:p==="CROSS_PAGE_MOVE_UNSUPPORTED"?K.CROSS_PAGE_MOVE_UNSUPPORTED:K.UNSUPPORTED_OPERATION}async function su(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):le(p,K.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):le(p,K.ROUTE_NOT_FOUND,"Composition not found for page-unit target.")}if(p.target.kind!=="node")return le(p,K.UNSUPPORTED_OPERATION,`${p.kind} source target execution is not implemented yet.`);let b=i.get(o.resolveSelector(p.composition).key)??null;return b?(b.graph||await Ms(b.key),ou(b,p.target.key)?b:le(p,K.NODE_NOT_FOUND,`Target key not found: ${p.target.key}`)):le(p,K.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,b){let x=o.register({context:p,entryFile:b}),I=i.get(x.key);if(I?.entryFile===b)return;I&&R(I);let P=Nh(x.context,b);i.set(x.key,P),A(P,P.dependencyFiles),r.emit({type:"graph-invalidated",composition:x.context})},unregisterComposition(p){let b=o.resolveSelector(p),x=i.get(b.key);x&&(R(x),i.delete(b.key),o.unregister(b.key),i.size===0&&(t="idle"),r.emit({type:"graph-invalidated",composition:b.context}))},getCompositionEntryFiles(){return[...i.values()].map(p=>p.entryFile)},getCompositionContext(p){return o.resolveSelector(p).context},async initializeComposition(p){let b=o.resolveSelector(p),x=i.get(b.key);if(!x)throw new Error(`Composition not registered: ${b.key}`);if(x.graph)t="ready";else{t="building";try{let I=await n.readFile(x.entryFile);await _e(b.key,I),t="ready",r.emit({type:"graph-ready",composition:b.context,version:i.get(b.key)?.graph?.version??0})}catch(I){throw t="idle",r.emit({type:"graph-error",composition:b.context,message:et(I)}),I}}},getDocument(p){let b=o.resolveSelector(p),x=i.get(b.key);if(!x)throw new Error(`Composition not registered: ${b.key}`);if(!x.document)throw new Error(`Composition not built: ${b.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,b,x){let I=zn(p,b),P=it(p)??p;if(I?.graph&&I.topology&&I.capabilities&&I.detailProjections){let T=I.detailProjections.get(P);if(T){let O=I.graph.elements.get(P);if(!O)throw new Error(`Key not found: ${p}`);let j=qw(p,P,x),q=new Map;if(T.isRepeat&&j?.instanceIndex!==void 0)for(let H of O.attributes??[])q.set(H.name,fl({file:O.sourceFile,source:f.get(O.sourceFile)??"",element:O,propertyName:H.name,selectionRef:j,graph:I.graph,sources:f}));let $=Jg({element:O,graph:I.graph,source:f.get(O.sourceFile),documentVersion:I.graph.version,selectionRef:x,isRepeat:T.isRepeat,propertyProvenance:T.propertyProvenances,repeatTargets:q}),B=Hg(P,I.graph,I.topology,I.capabilities,T.textSources,T.provenances,T.dynamicData,$);return p===P?B:bh(B,p,I.document??null,I.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getRenderDetail(p,b){let x=zn(p,b),I=it(p)??p;if(x?.graph&&x.topology&&x.capabilities&&x.detailProjections){let P=x.detailProjections.get(I);if(P){let T=zg(I,x.graph,x.topology,x.capabilities,P.textSources,P.writeTarget,P.provenances,P.conditional,P.componentSemantic,P.styleSource,P.dynamicData);return p===I?T:xh(T,p,x.document??null,x.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${p}`)},getClassNameSource(p,b){let x=zn(p,b),I=it(p)??p;if(!x?.graph)throw new Error(`Key not found: ${p}`);let P=x.graph.elements.get(I);if(!P)throw new Error(`Key not found: ${p}`);let T=f.get(P.sourceFile);if(T===void 0)throw new Error(`Source not loaded: ${P.sourceFile}`);return ya({key:I,route:{composition:x.composition,routeId:x.routeId,graph:x.graph,source:T}})},refreshSourceForKey:Hh,async execute(p){if(await S,g)return le(p,K.RECOVERY_REQUIRED,"The edit engine requires explicit recovery before accepting mutations.");if(p.kind==="source-edit")return Wh(p);if(p.kind==="insert-page-resource")return Gh(p);if(p.kind==="delete-page-source")return Yh(p);let b=await su(p);if("ok"in b)return b;await Gl(p);let x=await su(p);if("ok"in x)return x;let I=x;if(p.target.kind==="page-unit"){let B=p;return p.kind==="insert-child"||p.kind==="replace-node"?Zh(B,I):p.kind==="move-node"||p.kind==="remove-node"?Qh(B,I):le(p,K.UNSUPPORTED_OPERATION,"Only page-unit insert-child, replace-node, move-node, and remove-node are currently supported by the page composition transaction.")}let T=p.params,O=p.target.kind==="node"?p.target.key:null;if(T.kind==="move-node"&&"kind"in T.target&&T.target.kind==="source-sibling"){let B=T.target,H=O?I.document?.entries.find(U=>U.key===O):null,de=I.document?.entries.find(U=>U.key===B.anchorKey),ue=H?.pageCompositionActionScope,be=ue?.kind==="source-siblings"?ue.siblingKeys:null,Ce=be?.indexOf(H?.key??"")??-1,Pe=be?.indexOf(B.anchorKey)??-1,M=B.relation==="before"?Ce-1:Ce+1;if(!H||!de||!be||Ce<0||Pe!==M||de.pageCompositionActionScope?.kind!=="source-siblings"||de.pageCompositionActionScope.siblingKeys.length!==be.length||de.pageCompositionActionScope.siblingKeys.some((U,ie)=>U!==be[ie])||!H.operationSummary.canMove)return le(p,K.INVALID_TARGET,"Source sibling move is unavailable because the current source sibling scope or adjacent anchor no longer matches.")}if(!I.graph||!I.topology||!I.capabilities)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:ee(p),error:{code:p.target.kind==="route"?K.ROUTE_NOT_FOUND:K.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 j=yN(I,I.graph,I.capabilities,f,i),q=await new os(j).plan(p);if(!q.ok)return{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:ee(p),error:{code:Po(q.errorCode),message:q.reason}};let $=q.plan;if($.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:ee(p),affectedFiles:[]}:{composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!1,resultVersion:ee(p),error:{code:K.PLAN_FAILED,message:"Planner could not generate a valid execution plan"}};d+=1;try{if($.steps.some(H=>H.type==="invoke-external-adapter")){let H=await u.execute($);if(!H.ok)return le(p,Po(H.errorCode),H.reason);let de={composition:o.resolveSelector(p.composition).context,requestId:p.id,kind:p.kind,target:p.target,ok:!0,resultVersion:Math.max(ee(p),H.resultVersion),affectedFiles:H.affectedFiles,...H.selectionRef?{selectionRef:H.selectionRef}:{}};return As(de,{rebuiltRoutes:[],failedRoutes:[]}),de}let B=await u.prepareRewritePlan($);return B.ok?await Xn({request:p,filePlan:B.filePlan,...B.selectionRef?{selectionRef:B.selectionRef}:{}}):le(p,Po(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:ee(p),error:{code:K.INTERNAL_ERROR,message:et(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:me(o.entries[0].key),error:{code:K.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting undo."}};d+=1;try{return await eu("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:me(o.entries[0].key),error:{code:K.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting redo."}};d+=1;try{return await eu("redo")}finally{d-=1}},notifyFileChanged(p){Jl([p])},getAffectedCompositions(p){return Kh(p)},subscribe(p){return r.subscribe(p)}}}function uN(e){return e instanceof Error&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function dN(e,t,n,r){let o=new Map,i=new Map,s=(f,m,d)=>{let g=f.get(m)??new Set,h=g.size;return g.add(d),f.set(m,g),g.size!==h},a=(f,m)=>{if(!f.importedFrom)return!1;if(f.exportName==="default")return s(i,f.importedFrom,m);let d=s(o,`${f.importedFrom}#${f.tag}`,m);return f.exportName&&f.exportName!==f.tag&&(d=s(o,`${f.importedFrom}#${f.exportName}`,m)||d),d},c=f=>o.get(`${f.sourceFile}#${f.componentName}`)??i.get(f.sourceFile);for(let f of t.elements.values()){if(f.sourceFile!==n.entryFile||!f.importedFrom||!/^[A-Z]/.test(f.tag))continue;let m=n.placements.find(g=>g.members.some(h=>h.sourceRange!==null&&Ao(f.sourceRange,h.sourceRange)));if(!m)continue;let d=m.placementUnitKey;a(f,d)}let l=!0;for(;l;){l=!1;for(let f of t.elements.values()){if(f.sourceFile===n.entryFile||!f.importedFrom||!/^[A-Z]/.test(f.tag))continue;let m=c(f);if(m)for(let d of m)l=a(f,d)||l}}let u=n.placements.find(f=>f.placementKey===n.container.placementKey&&f.relation==="append");for(let f of e.entries){let m=it(f.key)??f.key,d=t.elements.get(f.key)??t.elements.get(m);if(!d)continue;if(d.sourceFile===n.entryFile){if(n.container.sourceRange&&Ao(d.sourceRange,n.container.sourceRange)&&u){f.pageCompositionUnitKey=u.placementUnitKey;continue}let S=n.placements.find(E=>E.members.some(y=>y.sourceRange!==null&&(Ao(d.sourceRange,y.sourceRange)||hN(y.sourceRange,d.sourceRange))));if(S){f.pageCompositionUnitKey=S.placementUnitKey;continue}}let g=o.get(`${d.sourceFile}#${d.componentName}`);if(g){g.size===1&&(f.pageCompositionUnitKey=g.values().next().value);continue}let h=i.get(d.sourceFile);h?.size===1&&(f.pageCompositionUnitKey=h.values().next().value)}fN(e,t,n,r)}function fN(e,t,n,r){let o=new Map(e.entries.map(m=>[m.key,m])),i=e.entries.filter(m=>{let d=m.pageCompositionUnitKey;return d?m.parentKey?o.get(m.parentKey)?.pageCompositionUnitKey!==d:!0:!1}),s=new Map,a=(m,d)=>{s.set(m,Math.min(2,(s.get(m)??0)+d))},c=m=>n.placements.some(d=>d.members.some(g=>g.sourceRange!==null&&Ao(m.sourceRange,g.sourceRange)));for(let m of t.elements.values())m.sourceFile!==n.entryFile||!m.importedFrom||!/^[A-Z]/.test(m.tag)||!c(m)||a(`${m.importedFrom}#${m.exportName??m.tag}`,1);let l=[...t.elements.values()].flatMap(m=>m.sourceFile!==n.entryFile&&m.importedFrom&&/^[A-Z]/.test(m.tag)?[{owner:`${m.sourceFile}#${m.componentName}`,ownerDefault:`${m.sourceFile}#default`,target:`${m.importedFrom}#${m.exportName??m.tag}`}]:[]);for(let m=0;m<=l.length;m+=1){let d=!1;for(let g of l){let h=s.get(g.owner)??s.get(g.ownerDefault)??0;if(!h)continue;let S=s.get(g.target)??0,E=Math.min(2,S+h);E!==S&&(s.set(g.target,E),d=!0)}if(!d)break}let u=m=>s.get(`${m.sourceFile}#${m.componentName}`)??s.get(`${m.sourceFile}#default`)??0;for(let m of i){m.pageCompositionActionScope={kind:"unavailable"};let d=t.elements.get(m.key);m.pageCompositionUnitKey&&d?.sourceFile===n.entryFile&&(m.pageCompositionActionScope={kind:"route-unit"})}let f=new Map;for(let m of i){let d=t.elements.get(m.key);if(!d||d.sourceFile===n.entryFile||m.key!==(it(m.key)??m.key))continue;let g=r.get(d.sourceFile);if(!g)continue;let h=se(g.ast,{kind:"jsx-node",strategy:"source-range",sourceRange:d.sourceRange});if(!h.ok||!h.match.path.isJSXElement())continue;let S=h.match.path,E=S.parentPath;if(!E||!E.isJSXFragment()&&!(E.isJSXElement()&&Me(E))){u(d)===1&&Th(S)&&(m.pageCompositionActionScope={kind:"route-unit"});continue}if(!Th(E))continue;let y=f.get(E.node)??[];y.push({entry:m,element:d,parentPath:E}),f.set(E.node,y)}for(let m of f.values()){let d=m[0];if(!d)continue;let g=d.entry.pageCompositionUnitKey,h=[],S=!!(g&&u(d.element)===1);for(let y of d.parentPath.node.children){if(pN(y))continue;if(!mN(y)){S=!1;break}let v=[...t.elements.values()].find(N=>N.sourceFile===d.element.sourceFile&&N.componentName===d.element.componentName&&Ao(N.sourceRange,gN(y))),C=v?o.get(v.identity.key):null;if(!v||!C||C.parentKey||C.pageCompositionUnitKey!==g||u(v)!==1){S=!1;break}h.push(C)}if(!S||h.length!==m.length||m.some(({entry:y})=>!h.some(v=>v.key===y.key)))continue;if(h.length===1){h[0].pageCompositionActionScope={kind:"route-unit"};continue}if(h.length<2)continue;let E=h.map(y=>y.key);for(let y of h)y.pageCompositionActionScope={kind:"source-siblings",siblingKeys:E}}}function Th(e){let t=e.parentPath;return!!(t?.isReturnStatement?.()||t?.isArrowFunctionExpression?.()&&t.node.body===e.node)}function pN(e){return!!(e&&typeof e=="object"&&e.type==="JSXText"&&!(e.value??"").trim())}function mN(e){return!!(e&&typeof e=="object"&&e.type==="JSXElement")}function gN(e){return{startLine:e.loc?.start.line??-1,startColumn:e.loc?.start.column??-1,endLine:e.loc?.end.line??-1,endColumn:e.loc?.end.column??-1}}function Ao(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function hN(e,t){return Fh(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&Fh(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function Fh(e,t,n,r){return e!==n?e-n:t-r}function yN(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:ya({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 Dl(e.detailProjections?.get(m.baseKey)?.textTargets.get(f)??null,m.repeatIndex)},async getElementPropertyWriteTarget(u,f){let m=c(u);return Dl(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(y=>y.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 fl({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=Vw(u);return f?{baseKey:f.baseKey,repeatIndex:yh(e.document??null,u,f.baseKey,e.documentIndex)??hh(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 xN={"stale-version":K.VERSION_STALE,"capability-denied":K.CAPABILITY_REJECTED,"invalid-params":K.INVALID_PARAMS,"locator-miss":K.LOCATOR_FAILED,"route-not-found":K.ROUTE_NOT_FOUND,"unsupported-operation":K.UNSUPPORTED_OPERATION,"invalid-target":K.INVALID_TARGET,"ast-error":K.AST_PARSE_ERROR,"writeback-failed":K.WRITE_IO_ERROR,"rollback-failed":K.RECOVERY_REQUIRED,unknown:K.INTERNAL_ERROR};function Po(e){return xN[e]}function et(e){return e instanceof Error&&e.message?e.message:String(e)}function _h(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function bN(e){let t=Kn(e);if(!Jw.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=>Xw.map(a=>`${s}/${a}`))}function SN(e){let n=Kn(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function EN(e){return Lh(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function vN(e){return Lh(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function Lh(e,t){let n=[];for(let r of e.matchAll(t)){let o=Dh(r[1]??"");o&&n.push(o)}return n}function Mh(e,t){let n=Dh(t);return!n||n.startsWith("tailwindcss")||n.startsWith("http:")||n.startsWith("https:")?null:n.startsWith("@/")?Kn(`src/${n.slice(2)}`):n.startsWith("./")||n.startsWith("../")?Kn(`${kN(e)}/${n}`):n.startsWith("/")?Kn(n.slice(1)):Vl(n)?Kn(n):null}function Dh(e){return e.split(/[?#]/,1)[0]?.trim()??""}function Vl(e){return/\.css$/i.test(e)}function kN(e){let t=Kn(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function IN(e){return Array.from(new Set(e))}function Kn(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 CN(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 ws=class{constructor(t){this.options=t,this.fileSystem=new Ir(t.files),this.engine=this.createEngine(this.fileSystem)}get status(){return this.engine.status}initializeComposition(t){return this.engine.initializeComposition(t)}getDocument(t){return Ko(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 Uo(r?this.engine.getObjectEditContext(t,n,r):this.engine.getObjectEditContext(t,n))}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(t){return zo(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}getSourceFile(t){return Ho(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.options.compositions.map(n=>n.entryFile)})}resolveSourceLocation(t){return Wo(t,this.engine.getRenderDetail(t.key,t.composition))}async planOperation(t){let n=wN.safeParse(t);if(!n.success)return{result:Vo(t,n.error.issues.map(i=>i.message))};let r=new Ir(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:Cn(i)},a=r.getChangedFiles();if(a.length===0)return{result:s};let c=NN.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:a.map(l=>PN(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 Rs({projectRoot:"/snapshot",fileSystem:t,compositions:this.options.compositions,onEvent:r&&this.options.onEvent?o=>{let i=Jo(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}:{},resourceTranslationLocale:this.options.resourceTranslationLocale})}};function PN(e,t){return e.after===void 0?{path:e.path,operation:"delete",...t||e.before===void 0?{}:{expectedHash:ke(e.before)}}:{path:e.path,operation:e.before===void 0?"create":"update",...t||e.before===void 0?{}:{expectedHash:ke(e.before)},fullContent:e.after}}function AN(e){return new ws(e)}import{SiteEditOperationRequestSchema as _N}from"@vcp-dev/contracts";import wt from"node:fs/promises";import tt from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as TN,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as FN}from"@vcp-dev/contracts";var Ns=class{constructor(t){this.options=t,this.fileSystem=this.createFileSystem(),this.engine=Rs({...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 zo(this.fileSystem,{composition:this.engine.getCompositionContext(t),routeEntryFiles:this.engine.getCompositionEntryFiles()})}getSourceFile(t){return Ho(this.fileSystem,t,{composition:this.engine.getCompositionContext(t.composition),routeEntryFiles:this.engine.getCompositionEntryFiles()})}resolveSourceLocation(t){return Wo(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 wt.readFile(tt.join(n,r),"utf8")},async readFileBytes(r){return wt.readFile(tt.join(n,r))},async getFileInfo(r){let o=tt.join(n,...r.split("/"));try{let i=await wt.lstat(o);return!i.isFile()||i.isSymbolicLink()?null:{path:r,sizeBytes:i.size}}catch{return null}},async writeFile(r,o){await pi(tt.join(n,r),o)},async createExclusive(r,o){let i=tt.join(n,r);await wt.mkdir(tt.dirname(i),{recursive:!0});let s=await wt.open(i,"wx");try{await s.writeFile(o,"utf8")}catch(a){throw await s.close(),await wt.rm(i,{force:!0}),a}await s.close()},async deleteFile(r){await wt.rm(tt.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=tt.join(n,i),a=tt.dirname(tt.join(n,o));for(;a!==s&&a.startsWith(`${s}${tt.sep}`);){try{await wt.rmdir(a)}catch(c){if(c instanceof Error&&"code"in c&&c.code==="ENOENT"){a=tt.dirname(a);continue}break}a=tt.dirname(a)}},async exists(r){try{return await wt.access(tt.join(n,r)),!0}catch{return!1}},async listFiles(r={}){let o=r.roots??[...FN,...TN],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=tt.join(n,...f.split("/")),h;try{h=await wt.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 wt.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 Kl(e){return new Ns(e)}var Ps=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=Kl({projectRoot:t.projectRoot,fileSystem:t.fileSystem,compositions:t.compositions,onEvent:n=>{let r=Jo(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:Ko(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:Uo(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=_N.safeParse(r);if(!o.success)return Vo(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:Cn(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:Cn(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:Cn(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 MN(e){return new Ps(e)}export{re as FileHistoryStoreError,Qr as PageTemplateManagedSourceError,Ps as PreviewFileSystemSiteEditEngineRuntime,df as SITE_EDIT_RAW_COLOR_LITERAL_RE,ws as SnapshotSiteEditEngineRuntime,Lo as checkComponentI18nHostCompatibility,np as computeManagedPageTemplatePaths,MN as createPreviewSiteEditEngineRuntime,AN as createSiteEditEngineRuntime,qf as decodePageTemplateKey,yc as encodePageTemplateId,Ay as instrumentSiteEditRuntimeAttributes,rp as isManagedPageTemplateSourcePath,$d as openFileHistoryStore,my as parseSourceModule,gy as resolveImportBase,Nk as resolveManagedPageTemplateComposition,$i as scanManagedPageTemplateCandidates,ip as scanSiteEditCompositionsFromFiles,Xr as scanSiteEditThemeStyleViolations};
|