@vcp-dev/site-edit-engine 0.6.5 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{SiteEditOperationRequestSchema as cb,SiteEditPatchPlanSchema as lb}from"@vcp-dev/contracts";function Ot(e){return{requestId:e.requestId,kind:e.kind,target:e.target,resultVersion:e.resultVersion,affectedFiles:e.affectedFiles,...e.selectionRef?{selectionRef:e.selectionRef}:{}}}function br(e,t){return{ok:!1,error:{code:"INVALID_PARAMS",message:t[0]??"Site edit operation request failed contract validation."},data:{requestId:e.id,kind:e.kind,target:e.target,resultVersion:e.documentVersion}}}function Ir(e,t){if(!e.pageComposition)throw new Error("RenderDocument is missing the required Page Composition projection.");return{siteId:t.siteId,snapshotId:t.snapshotId,routeId:e.routeId,version:e.version,entries:e.entries.map(n=>({key:n.key,...n.pageCompositionUnitKey?{pageCompositionUnitKey:n.pageCompositionUnitKey}:{},operationSummary:{canUpdateText:n.operationSummary.canUpdateText,canInsertChild:n.operationSummary.canInsertChild,canMove:n.operationSummary.canMove,canRemove:n.operationSummary.canRemove},...n.dynamicDataSummary?{dynamicDataSummary:n.dynamicDataSummary}:{}})),pageComposition:e.pageComposition.status==="unsupported"?{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics}:{status:"supported",containerKey:e.pageComposition.container.key,hasBusinessMembers:e.pageComposition.businessMembers.length>0,placementUnitKeys:e.pageComposition.placementUnits.map(n=>n.key),placements:e.pageComposition.placements.map(n=>({placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,relation:n.relation}))}}}function kr(e){return{key:e.key,tag:e.tag,label:e.label,sourceLocator:e.sourceLocator,isOpaque:e.isOpaque,ancestors:e.ancestors,componentName:e.componentName,sourceFile:e.sourceFile,capabilities:Yf(e.capabilities),provenanceChain:e.provenanceChain?{editMode:e.provenanceChain.editMode,diagnostics:e.provenanceChain.diagnostics}:void 0,dynamicData:e.dynamicData,textSegments:e.textSegments.map(t=>({index:t.index,editable:t.editable,sourceKind:t.source?.kind??null})),boundaryKind:e.boundaryKind}}function vr(e,t){let n=new Date().toISOString();return e.type==="document-changed"?{type:"site-edit.document.changed",siteId:t.siteId,snapshotId:t.snapshotId,routeId:e.routeId,version:e.version,at:n}:e.type==="operation-completed"?{type:"site-edit.operation.completed",siteId:t.siteId,result:Ot(e.result),at:n}:e.type==="operation-failed"?{type:"site-edit.operation.failed",siteId:t.siteId,requestId:e.requestId,error:e.error,at:n}:e.type==="capability-changed"?{type:"site-edit.capability.changed",siteId:t.siteId,routeId:"",keys:e.keys,at:n}:null}function Yf(e){return{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{composeSiteEditRepeatInstanceKey as qE,getSiteEditSourceDeleteProtectionReason as eS,isSiteEditTextSourcePath as tS,parseSiteEditRepeatInstanceKey as nS,SITE_EDIT_SOURCE_DELETE_CAPABILITY as rS,stripSiteEditRepeatInstanceKeys as Ke}from"@vcp-dev/contracts";import{parse as oS}from"yaml";import ko from"node:path";function An(e,t,n){return`${e}::${t}::${n}`}var B={NODE_NOT_FOUND:"NODE_NOT_FOUND",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"};import ri from"@babel/traverse";import*as h from"@babel/types";import{createHash as np}from"node:crypto";import*as Ua from"@babel/parser";function _t(e,t,n,r){return{code:e,message:t,locatorKind:n,details:r}}function U(e,t,n,r,o){return{ok:!1,source:e,diagnostic:_t(t,n,r,o)}}function Zo(e,t,n,r,o){return{ok:!1,source:e,diagnostic:_t(t,n,r,o)}}var Gf={"tsx-module":["jsx","typescript"],"ts-module":["typescript"],"next-app-entry":["jsx","typescript"]};function rt(e){let{source:t,profile:n}=e;try{return{ok:!0,ast:Ua.parse(t,{sourceType:"module",plugins:Gf[n]})}}catch(r){return{ok:!1,source:t,diagnostic:_t("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function Qo(e,t){return rt({source:e,profile:$a(t.kind)})}function qo(e,t){return rt({source:e,profile:$a(t)})}function $a(e){return"next-app-entry"}function Dt(e){let{filePath:t,source:n}=e,r=t.toLowerCase().split(".").pop()??"";return r==="tsx"?"tsx-module":r==="ts"?"ts-module":r==="jsx"||r==="js"||r===""&&/<\w[\s\S]*>/.test(n)?"tsx-module":"next-app-entry"}import*as Zf from"@babel/parser";import*as en from"@babel/types";import*as gt from"node:path";var ei=[".tsx",".ts",".jsx",".js"],Qf=ei.map(e=>`/index${e}`);function Ka(e){let t=[];for(let n of e.program.body)en.isImportDeclaration(n)&&typeof n.source.value=="string"&&ct(n.source.value)&&t.push(n.source.value),en.isExportNamedDeclaration(n)&&n.source&&typeof n.source.value=="string"&&ct(n.source.value)&&t.push(n.source.value),en.isExportAllDeclaration(n)&&typeof n.source.value=="string"&&ct(n.source.value)&&t.push(n.source.value);return t}function ct(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("@/")}function qf(e,t){if(t.startsWith("@/"))return t.slice(2).replace(/\\/g,"/");let n=gt.dirname(e);return gt.join(n,t).replace(/\\/g,"/")}async function ep(e,t){if(ei.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of ei){let r=`${e}${n}`;if(await t(r))return r}for(let n of Qf){let r=`${e}${n}`;if(await t(r))return r}return null}async function tn(e,t,n){let r=await Cr(e,t,n);return r.ok?r.path:null}async function Cr(e,t,n){let r=qf(e,t);try{if(!tp(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 ep(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 tp(e,t,n){if(!ct(t)||t.includes("\0")||t.includes("\\")||gt.posix.isAbsolute(n))return!1;let r=gt.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!gt.posix.isAbsolute(e)}var ti=(e,t)=>{let n=rt({source:t,profile:Dt({filePath:e,source:t})});return n.ok?{ok:!0,module:{file:e,source:t,sourceHash:`sha256:${np("sha256").update(t).digest("hex")}`,ast:n.ast,imports:Ka(n.ast).map(r=>({specifier:r}))}}:{ok:!1,diagnostic:{path:e,code:"parse-failed",message:n.diagnostic.message}}};var Rr="components/ui";function Lt(e){if(!e)return!1;let t=ni(e);return t===Rr||t.startsWith(`${Rr}/`)||t.includes(`/${Rr}/`)||t.endsWith(`/${Rr}`)}function Nn(e,t){return e?e.startsWith("@/")||e.startsWith("~/")?Lt(e.slice(2)):e.startsWith("./")||e.startsWith("../")?Lt(ni(`${rp(t)}/${e}`)):Lt(e):!1}function ni(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 rp(e){let t=ni(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}var op=typeof ri=="function"?ri:ri.default;function Re(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 ip(e){return/^[A-Z]/.test(e)}function li(e){let t=e.openingElement;return h.isJSXIdentifier(t.name)?t.name.name==="Fragment":h.isJSXMemberExpression(t.name)?t.name.property.name==="Fragment":!1}function rn(e){return h.isJSXFragment(e)}function Ha(e){return h.isJSXIdentifier(e.name)?e.name.name:h.isJSXMemberExpression(e.name)?za(e.name):h.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function za(e){return h.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:h.isJSXMemberExpression(e.object)?`${za(e.object)}.${e.property.name}`:e.property.name}function sp(e){return e.split(".")[0]??e}function ap(e){let t=e;for(;t;){let n=t.node;if(h.isFunctionDeclaration(n)&&n.id||h.isVariableDeclarator(n)&&h.isIdentifier(n.id))return n.id.name;if(h.isExportDefaultDeclaration(n)){let r=n.declaration;if(h.isFunctionDeclaration(r)&&r.id)return r.id.name;if(h.isFunctionDeclaration(r)&&!r.id)return"default"}t=t.parentPath}return null}function cp(){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 lp(e){let t=new Map;for(let n of e.program.body){if(!h.isImportDeclaration(n))continue;let r=n.source.value;for(let o of n.specifiers)if(h.isImportDefaultSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"default"});else if(h.isImportNamespaceSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"*"});else if(h.isImportSpecifier(o)){let i=h.isIdentifier(o.imported)?o.imported.name:o.imported.value;t.set(o.local.name,{specifier:r,exportName:i})}}return t}function lt(e,t=[]){if(h.isIdentifier(e))return t.push(e.name),t;if(h.isObjectPattern(e)){for(let n of e.properties)h.isObjectProperty(n)?lt(n.value,t):h.isRestElement(n)&<(n.argument,t);return t}if(h.isArrayPattern(e)){for(let n of e.elements)n&&(h.isRestElement(n)?lt(n.argument,t):lt(n,t));return t}return h.isAssignmentPattern(e)?(lt(e.left,t),t):(h.isRestElement(e)&<(e.argument,t),t)}function yt(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function Pr(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 up(e,t,n){e.set(t,{resolved:!0,value:n})}function ui(e,t){e.set(t,{resolved:!1})}function Wa(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 Ce(e,t,n){if(h.isTSAsExpression(e)||h.isTSSatisfiesExpression(e)||h.isTSNonNullExpression(e)||h.isTypeCastExpression(e)||h.isParenthesizedExpression(e))return Ce(e.expression,t,n);if(h.isLogicalExpression(e))return oi([Ce(e.left,t,n),Ce(e.right,t,n)]);if(h.isConditionalExpression(e))return oi([Ce(e.consequent,t,n),Ce(e.alternate,t,n)]);if(h.isTemplateLiteral(e))return oi(e.expressions.filter(h.isExpression).map(i=>Ce(i,t,n)));if(h.isIdentifier(e))return{kind:"identifier",expression:e.name,base:e.name,path:[]};if(!h.isMemberExpression(e)&&!h.isOptionalMemberExpression(e))return null;let r=[],o=e;for(;h.isMemberExpression(o)||h.isOptionalMemberExpression(o);){if(o.computed)if(h.isNumericLiteral(o.property))r.unshift({kind:"index",index:o.property.value});else if(h.isStringLiteral(o.property))r.unshift({kind:"property",name:o.property.value});else if(n&&h.isExpression(o.property)){let i=Bt(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(!h.isIdentifier(o.property))return null;r.unshift({kind:"property",name:o.property.name})}o=o.object}return h.isIdentifier(o)?{kind:r.some(i=>i.kind==="index")?"index-expression":"member-expression",expression:yt(e,t),base:o.name,path:r}:null}function oi(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 Bt(e,t){if(h.isStringLiteral(e)||h.isNumericLiteral(e)||h.isBooleanLiteral(e))return e.value;if(h.isNullLiteral(e))return null;if(h.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(h.isIdentifier(e)){let n=Pr(e.name,t.valueScopes);return n.kind==="resolved"?n.value:void 0}if(h.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||h.isSpreadElement(r))return;let o=Bt(r,t);if(o===void 0)return;n.push(o)}return n}if(h.isObjectExpression(e)){let n={};for(let r of e.properties){if(!h.isObjectProperty(r)||r.computed||!h.isExpression(r.value))return;let o=null;if(h.isIdentifier(r.key)?o=r.key.name:h.isStringLiteral(r.key)&&(o=r.key.value),!o)return;let i;if(r.shorthand){if(!h.isIdentifier(r.value))return;let s=Pr(r.value.name,t.valueScopes);if(s.kind!=="resolved")return;i=s.value}else i=Bt(r.value,t);if(i===void 0)return;n[o]=i}return n}if(h.isMemberExpression(e)){let n=Ce(e,"",t);if(!n)return;let r=Pr(n.base,t.valueScopes);if(r.kind!=="resolved")return;let o=Wa(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(h.isCallExpression(e))return Ga(e,t)??void 0}function Ya(e,t,n){let r=Ce(e,n,t);if(!r)return h.isMemberExpression(e)||h.isBinaryExpression(e)||h.isLogicalExpression(e)||h.isConditionalExpression(e)||h.isCallExpression(e)?{value:yt(e,n),source:null}:null;let o=Pr(r.base,t.valueScopes),i=r.kind==="identifier"?o:o.kind==="resolved"?Wa(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 ii(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:cp(),parentStack:[],valueScopes:i,importMap:o}}function ai(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of lt(o.id))ui(n,s);if(!h.isIdentifier(o.id)||!o.init||!h.isExpression(o.init))continue;let i=Bt(o.init,t);i!==void 0&&up(n,o.id.name,i)}}function dp(e){let t=[];for(let n of e){if(h.isVariableDeclaration(n)){t.push(n);continue}h.isExportNamedDeclaration(n)&&n.declaration&&h.isVariableDeclaration(n.declaration)&&t.push(n.declaration)}return t}function fp(e,t,n){let r=[],o=0;for(let i of e)if(h.isJSXText(i)){let s=i.value.trim();s&&r.push({index:o++,value:s,sourceRange:Re(i),editable:!0,source:null})}else if(h.isJSXExpressionContainer(i)&&h.isStringLiteral(i.expression))r.push({index:o++,value:i.expression.value,sourceRange:Re(i),editable:!0,source:null});else if(h.isJSXExpressionContainer(i)&&h.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:Re(i),editable:!0,source:null}):r.push({index:o++,value:yt(s,n),sourceRange:Re(i),editable:!0,source:Ce(s,n,t)})}else if(h.isJSXExpressionContainer(i)&&h.isExpression(i.expression)){let s=Ya(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:Re(i),editable:!0,source:s.source})}return r}function pp(e,t,n){let r=[];for(let o of e.attributes)if(!(!h.isJSXAttribute(o)||!h.isJSXIdentifier(o.name))){if(h.isStringLiteral(o.value)){r.push({name:o.name.name,value:o.value.value,sourceRange:Re(o),source:null});continue}if(h.isJSXExpressionContainer(o.value)&&h.isExpression(o.value.expression)){let i=Bt(o.value.expression,t);if(o.name.name==="className"){let a=typeof i=="string"?i:i===void 0?Ga(o.value.expression,t):null;if(a){r.push({name:o.name.name,value:a,sourceRange:Re(o),source:null,resolvedValue:a});continue}}let s=Ya(o.value.expression,t,n);if(i!==void 0&&typeof i!="string"&&typeof i!="number"){r.push({name:o.name.name,value:Ja(i),sourceRange:Re(o),source:Ce(o.value.expression,n,t),resolvedValue:i});continue}if(!s){i!==void 0&&r.push({name:o.name.name,value:Ja(i),sourceRange:Re(o),source:Ce(o.value.expression,n,t),resolvedValue:i});continue}r.push({name:o.name.name,value:s.value,sourceRange:Re(o),source:s.source})}}return r}function Ga(e,t){let n=nn(e,t);return n&&n.map(o=>o.trim()).filter(Boolean).join(" ")||null}function nn(e,t){if(h.isStringLiteral(e))return[e.value];if(h.isTemplateLiteral(e))return e.expressions.length>0?null:[e.quasis.map(n=>n.value.cooked??"").join("")];if(h.isNullLiteral(e))return[];if(h.isBooleanLiteral(e))return e.value?null:[];if(h.isIdentifier(e)||h.isMemberExpression(e)){if(h.isIdentifier(e)&&e.name==="undefined")return[];let n=Bt(e,t);return typeof n=="string"?[n]:null}if(h.isConditionalExpression(e)){let n=nn(e.consequent,t),r=nn(e.alternate,t);return!n||!r?null:[...n,...r]}if(h.isLogicalExpression(e)){if(e.operator!=="&&")return null;let n=Bt(e.left,t);return n===!1||n===null?[]:nn(e.right,t)}if(h.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||h.isSpreadElement(r))return null;let o=nn(r,t);if(!o)return null;n.push(...o)}return n}if(h.isObjectExpression(e)){let n=[];for(let r of e.properties){if(!h.isObjectProperty(r))return null;let o=hp(r.key);if(!o)return null;n.push(o)}return n}if(h.isCallExpression(e)){let n=mp(e.callee);if(!n||!["cn","clsx","twMerge"].includes(n))return null;let r=[];for(let o of e.arguments){if(!h.isExpression(o))return null;let i=nn(o,t);if(!i)return null;r.push(...i)}return r}return null}function mp(e){return h.isIdentifier(e)?e.name:h.isMemberExpression(e)&&h.isIdentifier(e.property)?e.property.name:null}function hp(e){return h.isIdentifier(e)?e.name:h.isStringLiteral(e)?e.value:null}function gp(e,t){let n=e.attributes.find(r=>h.isJSXAttribute(r)&&h.isJSXIdentifier(r.name)&&r.name.name===t);return!n||!h.isJSXAttribute(n)||!h.isJSXExpressionContainer(n.value)?null:n.value.expression}function yp(e,t){for(let n of t){let r=gp(e,n);if(r)return r}return null}function xp(e){return h.isJSXIdentifier(e.name)?e.name.name:null}function Ja(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function Ep(e){if(!h.isCallExpression(e)&&!h.isOptionalCallExpression(e))return null;let t=e.callee;return!h.isMemberExpression(t)&&!h.isOptionalMemberExpression(t)||!h.isIdentifier(t.property)||t.property.name!=="map"||t.computed||!h.isExpression(t.object)?null:{call:e,collection:t.object,callback:e.arguments[0]}}function si(e){return h.isArrowFunctionExpression(e)||h.isFunctionExpression(e)}function Sp(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function bp(e){return e==="empty"||e==="emptyRender"||e==="loading"||e==="loadingRender"||e==="error"||e==="errorRender"||e==="fallback"||e==="headerRender"||e==="footerRender"}function Xa(e,t,n,r){if(!e||!h.isExpression(e))return null;let o={kind:"repeat-template",collectionExpression:yt(e,n),collectionSource:Ce(e,n,r)};if(t){let i=t.params[0],s=t.params[1];h.isIdentifier(i)&&(o.itemParamName=i.name),h.isIdentifier(s)&&(o.indexParamName=s.name)}return o}function xt(e,t,n){if(!e)return[];if(h.isJSXElement(e)){if(li(e))return Fr(e.children,t,n);let r=Nr(e,t,n);return r?[r]:[]}return rn(e)?Tr(e,t,n):h.isParenthesizedExpression(e)?xt(e.expression,t,n):h.isExpression(e)?Mr(e,t,n):[]}function wr(e,t,n){let r=new Map;for(let o of e.params)for(let i of lt(o))ui(r,i);t.valueScopes.push(r);try{if(!h.isBlockStatement(e.body))return xt(e.body,t,n);let o=new Map;t.valueScopes.push(o);try{return Za(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function Za(e,t,n){let r=[];for(let o of e){if(h.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];i&&ai([o],t,i);continue}r.push(...ci(o,t,n))}return r}function ci(e,t,n){if(h.isReturnStatement(e))return e.argument?xt(e.argument,t,n):[];if(h.isBlockStatement(e))return jt(e.body,t,n);if(h.isIfStatement(e)){let r=h.isBlockStatement(e.consequent)?jt(e.consequent.body,t,n):ci(e.consequent,t,n),o=e.alternate?h.isBlockStatement(e.alternate)?jt(e.alternate.body,t,n):ci(e.alternate,t,n):[];return[...r,...o]}if(h.isSwitchStatement(e))return jt(e.cases.flatMap(r=>r.consequent),t,n);if(h.isTryStatement(e)){let r=jt(e.block.body,t,n);return e.handler&&r.push(...jt(e.handler.body.body,t,n)),e.finalizer&&r.push(...jt(e.finalizer.body,t,n)),r}return[]}function jt(e,t,n){let r=new Map;t.valueScopes.push(r);try{return Za(e,t,n)}finally{t.valueScopes.pop()}}function Ar(e,t,n,r,o,i){o.length!==0&&e.regions.push({kind:t,ownerKey:n,childKeys:o,sourceRange:Re(r),sourceCandidates:i&&i.length>0?i:void 0})}function Ip(e,t,n,r){let o=yp(e.openingElement,["items","dataSource","data"]),i={key:t,tag:Ha(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!h.isJSXAttribute(s))continue;let a=xp(s);if(!a||!h.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!h.isJSXEmptyExpression(c)){if(Sp(a)&&si(c)){let l=wr(c,n,r),u=Xa(o,c,r,n);Ar(n,"repeat-region",t,s,l,u?[u]:void 0);continue}if(bp(a)){let l=si(c)?wr(c,n,r):xt(c,n,r);Ar(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!h.isJSXExpressionContainer(s)||!si(s.expression))continue;let a=wr(s.expression,n,r),c=Xa(o,s.expression,r,n);Ar(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function Nr(e,t,n){let r=Ha(e.openingElement);if(r==="Fragment"||li(e))return Fr(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=ip(r),a;if(s){let N=t.ordinalTracker.getOrdinal(i,r);a=`component:${r}#${N}`}else{let N=t.ordinalTracker.getOrdinal(i,r);a=`${r}#${N}`}let c=o?t.elements.get(o.key)?.identity.structuralPath:void 0,l=c?`${c}/${a}`:a,u=An(t.file,t.componentName,l),d={file:t.file,component:t.componentName,structuralPath:l,key:u},p=s?"component-boundary":null,m=fp(e.children,t,n),E=pp(e.openingElement,t,n),b,v,C=!1;if(s){let N=t.importMap.get(r)??t.importMap.get(sp(r));N&&(b=N.specifier,v=N.exportName,C=Nn(N.specifier,t.file))}let A={identity:d,tag:r,componentName:t.componentName,sourceFile:t.file,sourceRange:Re(e),parentKey:i,childKeys:[],textSegments:m,attributes:E.length>0?E:void 0,boundaryKind:p,isOpaque:s,...C?{isPublicUiComponent:!0}:{},importedFrom:b,exportName:v};return t.elements.set(u,A),i&&t.elements.has(i)&&t.elements.get(i).childKeys.push(u),Ip(e,u,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:u,tag:r}),kp(e.children,t,n),t.parentStack.pop()),u}function Tr(e,t,n){return Fr(e.children,t,n)}function Fr(e,t,n){let r=[];for(let o of e)if(h.isJSXElement(o))if(li(o))r.push(...Fr(o.children,t,n));else{let i=Nr(o,t,n);i&&r.push(i)}else rn(o)?r.push(...Tr(o,t,n)):h.isJSXExpressionContainer(o)&&r.push(...Mr(o.expression,t,n));return r}function kp(e,t,n){for(let r of e)h.isJSXElement(r)?Nr(r,t,n):rn(r)?Tr(r,t,n):h.isJSXExpressionContainer(r)&&Mr(r.expression,t,n)}function vp(e){return e==="&&"||e==="||"||e==="??"}function Mr(e,t,n){if(h.isJSXEmptyExpression(e))return[];let r=Ep(e);if(r){let o=r.call,i=t.parentStack[t.parentStack.length-1]??null,s=[],a=r.callback,c={kind:"repeat-template",collectionExpression:yt(r.collection,n),collectionSource:Ce(r.collection,n,t)};if(h.isArrowFunctionExpression(a)||h.isFunctionExpression(a)){let u=a.params[0],d=a.params[1];h.isIdentifier(u)&&(c.itemParamName=u.name),h.isIdentifier(d)&&(c.indexParamName=d.name)}s.push(c);let l={kind:"repeat-region",ownerKey:i?.key??"",childKeys:[],sourceRange:Re(o),sourceCandidates:s.length>0?s:void 0};return t.regions.push(l),(h.isArrowFunctionExpression(a)||h.isFunctionExpression(a))&&l.childKeys.push(...wr(a,t,n)),l.childKeys}if(h.isConditionalExpression(e)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:yt(e.test,n),conditionSource:Ce(e.test,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Re(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...xt(e.consequent,t,n)),s.childKeys.push(...xt(e.alternate,t,n)),s.childKeys}if(h.isLogicalExpression(e)&&vp(e.operator)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:yt(e.left,n),conditionSource:Ce(e.left,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:Re(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...xt(e.right,t,n)),s.childKeys}if(h.isParenthesizedExpression(e))return Mr(e.expression,t,n);if(h.isJSXElement(e)){let o=Nr(e,t,n);return o?[o]:[]}return rn(e)?Tr(e,t,n):[]}function Cp(e){let t=e.argument;return t&&(h.isExpression(t)||rn(t))?t:null}function Tn(e,t){let n=[];for(let r of e){if(h.isReturnStatement(r)){let o=Cp(r);o&&n.push({argument:o,statement:r,condition:t});continue}if(h.isIfStatement(r)){let o=h.isBlockStatement(r.consequent)?r.consequent.body:[r.consequent];if(n.push(...Tn(o,r.test)),r.alternate){let i=h.isBlockStatement(r.alternate)?r.alternate.body:[r.alternate];n.push(...Tn(i,r.test))}continue}if(h.isSwitchStatement(r))for(let o of r.cases){let i=o.test?h.binaryExpression("===",r.discriminant,o.test):r.discriminant;n.push(...Tn(o.consequent,i))}}return n}function Qa(e){let{file:t,source:n,ast:r}=e,o=e.imports.map(d=>d.specifier),i=new Map,s=[],a=[],c=new Map,l=lp(r);op(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(d){let p=ap(d);if(!p)return;let m=d.node,E=[];if(h.isArrowFunctionExpression(m))h.isExpression(m.body)||rn(m.body)?E=[{argument:m.body,statement:h.returnStatement(h.isExpression(m.body)?m.body:null)}]:h.isBlockStatement(m.body)&&(E=Tn(m.body.body));else{let G=m.body;h.isBlockStatement(G)&&(E=Tn(G.body))}if(E.length===0){d.skip();return}let b=new Map;ai(dp(r.program.body),ii(t,p,i,s,l,[b]),b);let v=new Map;for(let G of m.params)for(let fe of lt(G))ui(v,fe);let C=h.isBlockStatement(m.body)?m.body.body:[],A=E[0]?.statement??null;for(let G of C){if(A&&G===A)break;h.isVariableDeclaration(G)&&ai([G],ii(t,p,i,s,l,[b,v]),v)}let N=ii(t,p,i,s,l,[b,v]);for(let G of E){let fe=xt(G.argument,N,n);for(let ue of fe)a.includes(ue)||a.push(ue);if(G.condition){let ue={kind:"conditional-branch",conditionExpression:yt(G.condition,n),conditionSource:Ce(G.condition,n,N)};Ar(N,"conditional-region","",G.statement,fe,[ue])}}d.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 di(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function Or(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function qa(e,t,n,r,o={}){let i=o.maxDepth??10,s=o.version??1,a=o.parseModule??ti,c=new Map,l=new Map,u=new Map,d=[],p=new Set,m=C=>{let A=`${C.path}\0${C.code}\0${C.message}\0${JSON.stringify(C.details??{})}`;p.has(A)||(p.add(A),d.push(C))},E=[{file:e,source:t,depth:0,diagnosticEntryFile:e,importStack:[]},...(o.additionalEntries??[]).map(C=>({file:C.file,source:C.source,depth:0,diagnosticEntryFile:C.file,importStack:[]}))],b=new Set;for(;E.length>0;){let C=E.shift(),{file:A,source:N,depth:G,diagnosticEntryFile:fe,importStack:ue}=C;if(b.has(A))continue;b.add(A),c.set(A,N);let R=a(A,N);if(!R.ok){m(Or(R.diagnostic,fe,ue));continue}u.set(A,R.module);let{graph:_,localImports:D}=Qa(R.module);for(let L of _.elements.values())if(L.importedFrom&&ct(L.importedFrom)){let Z=L.importedFrom,Q=await Cr(A,Z,r);Q.ok?(L.importedFrom=Q.path,Lt(Q.path)&&(L.isPublicUiComponent=!0)):Nn(Z,A)||m(Or(Q.diagnostic,fe,di(ue,A,Z,Q.diagnostic.path)))}if(l.set(A,_),!(G>=i))for(let L of D){if(Rp(L))continue;let Z=await Cr(A,L,r);if(!Z.ok){Nn(L,A)||m(Or(Z.diagnostic,fe,di(ue,A,L,Z.diagnostic.path)));continue}let Q=Z.path;if(b.has(Q)||Lt(Q))continue;let he=di(ue,A,L,Q);try{let W=await n(Q);E.push({file:Q,source:W,depth:G+1,diagnosticEntryFile:fe,importStack:he})}catch(W){m(Or({path:Q,code:"import-read-failed",message:`Failed to read imported file: ${Q}`,details:{fromFile:A,specifier:L,reason:W instanceof Error?W.message:String(W)}},fe,he))}}}let v=Pp(e,l,s,(o.additionalEntries??[]).map(C=>C.file));return v.diagnostics=d,{graph:v,allSources:c,diagnostics:d,parsedModules:u,entryModule:u.get(e)??null}}function Rp(e){return/\.(?:css|scss|sass|less)(?:\?.*)?$/i.test(e)}function Pp(e,t,n,r=[]){let o=new Map,i=[],s=new Map,a=[];for(let[c,l]of t){for(let[u,d]of l.elements)o.set(u,d);for(let u of l.regions)i.push(u);for(let[u,d]of l.fileIndex){let p=s.get(u)??[];s.set(u,[...p,...d])}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}}function ec(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}),tc(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function tc(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}),tc(s,t,n,r,o))}}import{isSiteEditRuntimeContainerTag as wp,isSiteEditRuntimeVoidElementTag as Ap}from"@vcp-dev/contracts/site-edit-runtime-capability";function Np(e,t,n){let r=t.nodes.get(e),o=n.elements.get(e);if(!r||!o)return{key:e,canUpdateText:!1,canInsertChild:!1,canMove:!1,canRemove:!1,constraints:[{kind:"opaque-region",message:"Node not found in graph"}]};let i=r.constraints.map(N=>({kind:N.kind,message:N.reason})),s=o.isOpaque,c=r.parentKey===null&&o.componentName==="Page",l=o.tag.toLowerCase(),u=o.tag!==l,d=!u&&Ap(l),p=u||wp(l),m=u&&o.childKeys.length>0&&!o.isPublicUiComponent,E=o.textSegments.length>0&&o.textSegments.some(N=>N.editable);d&&!i.some(N=>N.kind==="void-element")&&i.push({kind:"void-element",message:`Element '${o.tag}' is void: children cannot be inserted`}),!d&&!p&&!i.some(N=>N.kind==="void-element")&&i.push({kind:"void-element",message:`Element '${o.tag}' cannot contain structured children`});let b=E&&!s,v=!o.isPublicUiComponent&&!d&&p&&(!s||m);return{key:e,canUpdateText:b,canInsertChild:v,canMove:!c,canRemove:!c,constraints:i}}function nc(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,Np(r,e,t));return n}import{createHash as Li}from"node:crypto";import Ti from"@babel/traverse";function fi(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 nh}from"node:crypto";import _c from"node:path";import*as Gr from"@babel/parser";import Ri from"@babel/generator";import Pi from"@babel/traverse";import*as bt from"@babel/types";import pi from"@babel/traverse";var Et=typeof pi=="function"?pi:pi.default,_r=new WeakMap,rc=new WeakMap;function dt(e,t){let n=Qo(e,t);if(!n.ok)return Zo(e,n.diagnostic.code,n.diagnostic.message,t.kind);let r=te(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}}:Zo(e,r.diagnostic.code,r.diagnostic.message,t.kind,r.diagnostic.details)}function te(e,t){return t.kind==="jsx-node"?ac(e,t):t.kind==="jsx-attribute"?Dp(e,t):t.kind==="value"?Lp(e,t):t.kind==="expression"?jp(e,t):t.kind==="directive"?Bp(e,t):t.kind==="export"?Vp(e,t):{ok:!1,diagnostic:_t("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function ac(e,t){return t.strategy==="source-range"?Tp(e,t):Fp(e,t)}function Tp(e,t){let n=null;if(Et(e,{JSXElement(o){if(!sn(o.node,t.sourceRange))return;let i=xe("jsx-node",o);if(i){if(!n){n=i;return}i.end-i.start<n.end-n.start&&(n=i)}},JSXFragment(o){if(!sn(o.node,t.sourceRange))return;let i=xe("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXExpressionContainer(o){if(!sn(o.node,t.sourceRange))return;let i=xe("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)}}),!n)return Ee("jsx-node","locator-miss","JSX node not found for source-range locator");let r=n;return t.expectedIdentity&&!Zp(r.path,t.expectedIdentity)?Ee("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function Fp(e,t){if(t.structuralPath===""){let r=Op(e,t.component);if(r){let o=_p(r);if(o)return o}}let n=null;return Et(e,{JSXElement(r){if(Mn(r)!==t.component||hi(r)!==t.structuralPath)return;let i=xe("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(Mn(r)!==t.component||hi(r)!==t.structuralPath)return;let i=xe("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=Mp(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:Ee("jsx-node","locator-miss","JSX node not found for structural-path locator")}function Mp(e,t,n){let r=null;return Et(e,{JSXElement(o){if(Mn(o)!==t||!sn(o.node,n))return;let i=xe("jsx-node",o);i&&(r=i,o.stop())},JSXFragment(o){if(Mn(o)!==t||!sn(o.node,n))return;let i=xe("jsx-node",o);i&&(r=i,o.stop())}}),r}function Op(e,t){let n=null;return Et(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 _p(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 Ee("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}return null}return(t.isParenthesizedExpression()?t.get("expression"):t).isJSXFragment()?Ee("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 Ee("jsx-node","unsupported-syntax","JSXFragment is not a supported edit target")}}}return null}function Dp(e,t){let n=ac(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>Qp(c,t.name));if(!s||!s.isJSXAttribute())return Ee("jsx-attribute","locator-miss",`JSX attribute '${t.name}' not found`);let a=xe("jsx-attribute",s);return a?{ok:!0,match:a}:Ee("jsx-attribute","locator-miss",`JSX attribute '${t.name}' has no source range`)}function Lp(e,t){let n=Up(e,t);if(!n.ok)return n;let r=$p(n.match.path,t.path??[]);return r.ok?t.expectedRange&&!ut(r.match.path.node.loc,t.expectedRange)?Ee("value","locator-miss","Resolved value does not match expected range"):{ok:!0,match:r.match}:r}function jp(e,t){let n=null;return Et(e,{Identifier(r){if(!zp(r))return;let o=ic(r);if(!o||!sc(o,t))return;let i=xe("expression",r);i&&(t.expectedRange&&!ut(r.node.loc,t.expectedRange)||(n=i,r.stop()))},MemberExpression(r){let o=ic(r);if(!o||!sc(o,t))return;let i=xe("expression",r);i&&(t.expectedRange&&!ut(r.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Ee("expression","locator-miss","Expression not found")}function Bp(e,t){let n=null;return Et(e,{Program(r){let i=r.get("directives").find(a=>a.node.value.value===t.value);if(!i||t.expectedRange&&!ut(i.node.loc,t.expectedRange))return;let s=xe("directive",i);s&&(n=s,r.stop())}}),n?{ok:!0,match:n}:Ee("directive","locator-miss",`Directive '${t.value}' not found`)}function Vp(e,t){let n=null;return Et(e,{ExportNamedDeclaration(r){if(t.exportKind==="generate-metadata"){let c=r.get("declaration");if(c.isFunctionDeclaration()&&c.node.id?.name==="generateMetadata"){let p=xe("export",c);if(!p||t.expectedRange&&!ut(c.node.loc,t.expectedRange))return;n=p,r.stop();return}if(!c.isVariableDeclaration())return;let l=gi(c,"generateMetadata");if(!l||!l.isVariableDeclarator())return;let u=l.get("init");if(!u.node)return;let d=xe("export",u);if(!d||t.expectedRange&&!ut(u.node.loc,t.expectedRange))return;n=d,r.stop();return}let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=gi(o,t.exportKind==="named"?t.name:"metadata");if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node||t.expectedRange&&!ut(s.node.loc,t.expectedRange))return;let a=xe("export",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(t.exportKind!=="default")return;let o=r.get("declaration"),i=xe("export",o);i&&(t.expectedRange&&!ut(o.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:Ee("export","export-not-found",`Export '${Gp(t)}' not found`)}function Up(e,t){let n=null;return Et(e,{Expression(r){if(n||t.root.kind!=="expression"||!sn(r.node,t.root.sourceRange))return;let o=xe("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 m=r.get("init");if(!m.node)return;let E=xe("value",m);if(!E)return;n=E,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(m=>m?.type==="Identifier"&&m.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,d=r.get(`init.arguments.${u}`);if(!d||Array.isArray(d)||!d.node)return;let p=xe("value",d);p&&(n=p,r.stop())},ExportNamedDeclaration(r){if(n||t.root.kind!=="named-export")return;let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=gi(o,t.root.name);if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node)return;let a=xe("value",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(n||t.root.kind!=="default-export")return;let o=r.get("declaration"),i=xe("value",o);i&&(n=i,r.stop())}}),n?{ok:!0,match:n}:Ee("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 $p(e,t){let n=mi(e);for(let o of t){if(n=mi(n),o.kind==="property"){if(!n.isObjectExpression())return Ee("value","unsupported-syntax","Property path requires object expression");let a=n.get("properties");if(a.some(l=>!l.isObjectProperty()))return Ee("value","unsupported-syntax","Spread properties are not supported");let c=a.find(l=>qp(l,o.name));if(!c||!c.isObjectProperty())return Ee("value","property-not-found",`Property '${o.name}' not found`);n=c.get("value");continue}if(!n.isArrayExpression())return Ee("value","unsupported-syntax","Array index path requires array expression");let i=n.get("elements");if(i.some(a=>a.node?.type==="SpreadElement"))return Ee("value","unsupported-syntax","Spread array elements are not supported");let s=i[o.index];if(!s?.node)return Ee("value","array-index-out-of-range",`Array index ${o.index} is out of range`);n=s}n=mi(n);let r=xe("value",n);return r?{ok:!0,match:r}:Ee("value","locator-miss","Resolved value has no source range")}function mi(e){let t=e;for(;t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression();)t=t.get("expression");return t}function xe(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 sn(e,t){return ut(e.loc,t)}function ut(e,t){return e?e.start.line===t.startLine&&e.start.column===t.startColumn&&e.end.line===t.endLine&&e.end.column===t.endColumn:!1}function hi(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!Dr(n.node)){let o=cc(n.node.openingElement);o&&(/^[A-Z]/.test(o)?t.unshift(`component:${o}#${oc(n,o)}`):t.unshift(`${o}#${oc(n,o)}`))}}else n.isJSXFragment()&&n.node===r&&t.unshift("fragment");if(!n.parentPath||Hp(n.parentPath))break;n=n.parentPath}return t.join("/")}function Dr(e){let t=e.openingElement.name;return t.type==="JSXIdentifier"?t.name==="Fragment":t.type==="JSXMemberExpression"&&t.property.name==="Fragment"}function oc(e,t){let n=Kp(e);if(!n)return 0;let r=_r.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=0,i=_r.get(n.node)?.get(t);if(!i){let s=_r.get(n.node);s||(s=new Map,_r.set(n.node,s)),i=new WeakMap,s.set(t,i)}for(let s of Fn(n))if(cc(s.node.openingElement)===t){if(i.set(s.node,o),s.node===e.node)return o;o++}return i.get(e.node)??0}function Kp(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(Dr(t.node)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function Fn(e){let t=rc.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(Dr(o.node)){n.push(...Fn(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...Fn(o));continue}o.isJSXExpressionContainer()&&n.push(...on(o.get("expression")))}return rc.set(e.node,n),n}function on(e){return e.isJSXElement()?Dr(e.node)?Fn(e):[e]:e.isJSXFragment()?Fn(e):e.isParenthesizedExpression()?on(e.get("expression")):e.isLogicalExpression()&&Jp(e.node.operator)?on(e.get("right")):e.isConditionalExpression()?[...on(e.get("consequent")),...on(e.get("alternate"))]:e.isArrayExpression()?e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:on(t)):[]}function Jp(e){return e==="&&"||e==="||"||e==="??"}function cc(e){return e.name.type==="JSXIdentifier"?e.name.name:e.name.type==="JSXMemberExpression"?Xp(e.name):null}function Xp(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 Mn(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 Hp(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function zp(e){return!(!e.isExpression()||e.parentPath?.isMemberExpression({property:e.node}))}function ic(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 sc(e,t){return e.base===t.base&&Wp(e.path,t.path??[])}function Wp(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 Yp(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function Gp(e){return e.exportKind==="named"?e.name:e.exportKind}function Ee(e,t,n,r){return{ok:!1,diagnostic:_t(t,n,e,r)}}function Zp(e,t){return Mn(e)!==t.component?!1:hi(e)===t.structuralPath}function Qp(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function gi(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function qp(e,t){return e.isObjectProperty()?Yp(e.node)===t:!1}import yi from"@babel/generator";var em=typeof yi=="function"?yi:yi.default;function tm(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 Lr(e){let{ast:t,source:n}=e;try{let r=tm(n),i=em(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=rm(i,r)),{ok:!0,source:i}}catch(r){return U(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}import*as uc from"@babel/parser";import{arrayExpression as om,booleanLiteral as im,identifier as sm,jsxAttribute as am,jsxExpressionContainer as cm,jsxIdentifier as lm,nullLiteral as um,numericLiteral as dm,objectExpression as fm,objectProperty as pm,stringLiteral as dc}from"@babel/types";function lc(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 On(e,t,n){return{ok:!0,source:t,operation:{type:n.kind,nodeId:n.target,kind:n.kind,target:n.target,beforeSourceHash:lc(e),afterSourceHash:lc(t),inverse:n.inverse}}}function ce(e,t,n){let r=Lr({ast:e,source:t});return r.ok?On(t,r.source,n):r}function Se(e,t){let n=qo(e,t);return n.ok?{ok:!0,ast:n.ast}:{ok:!1,result:{ok:!1,source:e,diagnostic:n.diagnostic}}}function jr(e,t){return Lr({ast:e,source:t})}function mm(e,t,n){let r=te(e,t);return r.ok?{ok:!0,match:r.match}:{ok:!1,result:{ok:!1,source:n,diagnostic:r.diagnostic}}}function fc(e,t,n){let r=mm(e,t,n);return r.ok?r.match.path.isJSXElement()?r:{ok:!1,result:U(n,"unsupported-syntax","JSX locator must resolve to JSXElement","jsx-node")}:r}function pc(e,t){let n=te(e,t);return n.ok?{ok:!0,match:n.match}:n.diagnostic.code==="locator-miss"?{ok:!0,match:null}:{ok:!1,diagnostic:n.diagnostic}}function an(e){return typeof e=="string"?dc(e):typeof e=="number"?dm(e):typeof e=="boolean"?im(e):e===null?um():Array.isArray(e)?om(e.map(t=>an(t))):fm(Object.entries(e).map(([t,n])=>pm(sm(t),an(n))))}function hm(e){return typeof e=="string"?dc(e):cm(an(e))}function Br(e,t){return am(lm(e),hm(t))}function mc(e,t){try{let r=uc.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:U(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:U(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function Vr(e){let{source:t,locator:n,segmentIndex:r,newText:o}=e,i=Se(t,"jsx-node");if(!i.ok)return i.result;let s=te(i.ast,n);if(!s.ok)return{ok:!1,source:t,diagnostic:s.diagnostic};let c=gm(s.match.path)[r];if(!c)return U(t,"locator-miss",`Text segment ${r} not found`,"jsx-node");switch(c.kind){case"jsx-text":c.path.node.value=ym(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 ce(i.ast,t,{kind:"update-text",target:"jsx-node",inverse:"restore-text"})}function gm(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=xm(r.get("expression"));o.length>0&&t.push(...o)}}return t}function ym(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function xm(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 xi}from"@babel/types";function cn(e){let{source:t,locator:n}=e,r=Se(t,"jsx-node");if(!r.ok)return r.result;let o=te(r.ast,n);return o.ok?(Em(o.match.path),ce(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function Em(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(xi());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(xi());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(xi());return}e.remove()}import{cloneNode as Nm}from"@babel/types";import Ei from"@babel/traverse";import*as $ from"@babel/types";var Sm=typeof Ei=="function"?Ei:Ei.default;function Be(e,t,n,r){if(!e.ok)return e;let o=je(n);if(!o)return e;let i=bm(t,o,r);return i?{...e,selectionRef:i}:e}function bm(e,t,n){let r=Im(e,t);if(!r)return;let o=n.sourceLocator?hc(n.sourceLocator):void 0,i=n.targetParentLocator?hc(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??vm(r)??i?.component??o?.component;if(!(!s||!a))return{key:An(s,a,Cm(r))}}function hc(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function Im(e,t){let n=null;return Sm(e,{JSXElement(r){r.node===t&&(n=r,r.stop())}}),n}function je(e){if(!e)return null;if($.isJSXElement(e))return ln(e)?gc(e.children):e;if($.isJSXFragment(e))return gc(e.children);if($.isJSXExpressionContainer(e)||$.isParenthesizedExpression(e)||$.isTSAsExpression(e)||$.isTSSatisfiesExpression(e)||$.isTSTypeAssertion(e)||$.isTSNonNullExpression(e))return je(e.expression);if($.isLogicalExpression(e))return je(e.right);if($.isConditionalExpression(e))return je(e.consequent)??je(e.alternate);if($.isCallExpression(e)||$.isOptionalCallExpression(e))return bc(e)?km(e.arguments[0]):null;if($.isArrayExpression(e))for(let t of e.elements){if(!t)continue;let n=je(t);if(n)return n}return null}function gc(e){for(let t of e){let n=je(t);if(n)return n}return null}function km(e){return!e||!$.isArrowFunctionExpression(e)&&!$.isFunctionExpression(e)?null:$.isBlockStatement(e.body)?_n(e.body.body):je(e.body)}function _n(e){for(let t of e){if($.isReturnStatement(t)){let n=je(t.argument);if(n)return n;continue}if($.isBlockStatement(t)){let n=_n(t.body);if(n)return n;continue}if($.isIfStatement(t)){let n=yc(t.consequent);if(n)return n;let r=t.alternate?yc(t.alternate):null;if(r)return r;continue}if($.isSwitchStatement(t))for(let n of t.cases){let r=_n(n.consequent);if(r)return r}}return null}function yc(e){return $.isBlockStatement(e)?_n(e.body):_n([e])}function vm(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($.isFunctionDeclaration(n))return n.id?.name??"default"}if(t.isVariableDeclarator()&&$.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 xc=new WeakMap,Ec=new WeakMap,Si=new WeakMap;function Cm(e){let t=xc.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=Rm(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return xc.set(e.node,o),o}function Rm(e){let t=bi(e.node.openingElement.name);return!t||ln(e.node)?null:/^[A-Z]/.test(t)?`component:${t}#${Sc(e,t)}`:`${t}#${Sc(e,t)}`}function Sc(e,t){let n=Pm(e);if(!n)return 0;let r=Si.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Si.get(n.node);o||(o=new Map,Si.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0;for(let a of Vt(n))if(bi(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 Pm(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(ln(t.node)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function Vt(e){let t=Ec.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(ln(o.node)){n.push(...Vt(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...Vt(o));continue}o.isJSXExpressionContainer()&&n.push(...ft(o.get("expression")))}return Ec.set(e.node,n),n}function ft(e){if(e.isJSXElement())return ln(e.node)?Vt(e):[e];if(e.isJSXFragment())return Vt(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())&&bc(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?wm(n):[]}return[]}function wm(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return ln(t.node)?Vt(t):[t];if(t.isJSXFragment())return Vt(t);if(t.isParenthesizedExpression())return ft(t.get("expression"));if(t.isLogicalExpression()||t.isConditionalExpression())return ft(t);if(!t.isBlockStatement())return[];for(let n of t.get("body")){if(!n.isReturnStatement())continue;let r=n.get("argument");return r.node?ft(r):[]}return[]}function bc(e){let t=e.callee;return($.isMemberExpression(t)||$.isOptionalMemberExpression(t))&&$.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function ln(e){let t=bi(e.openingElement.name);return t==="Fragment"||t==="React.Fragment"}function bi(e){return $.isJSXIdentifier(e)?e.name:$.isJSXMemberExpression(e)?Ic(e):$.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function Ic(e){return`${$.isJSXIdentifier(e.object)?e.object.name:Ic(e.object)}.${e.property.name}`}function St(e,t){if(t.parentPath===e&&t.listKey==="children"&&kc(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!kc(n))return null;let r=n;for(;r&&r!==e;){if(!Am(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function kc(e){return e.isJSXElement()||e.isJSXFragment()}function Am(e){if(e.isJSXFragment())return!0;if(!e.isJSXElement())return!1;let t=e.node.openingElement.name;return t.type==="JSXIdentifier"?t.name==="Fragment":t.type==="JSXMemberExpression"&&t.property.name==="Fragment"}function un(e){let{source:t,locator:n,node:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Se(t,"jsx-node");if(!a.ok)return a.result;let c=te(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};if(!c.match.path.isJSXElement()&&!c.match.path.isJSXFragment())return U(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 N=c.match.path.node;if(!N.closingElement||N.openingElement.selfClosing)return U(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=mc(t,r.jsx);if(!u.ok)return u.result;let d=Nm(u.node,!0),p=l.node.children,m={...s,targetParentLocator:n},E=N=>s?Be(N,a.ast,d,m):N;if(o==="append")return p.push(d),E(ce(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return p.unshift(d),E(ce(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(!i)return U(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let b=te(a.ast,i);if(!b.ok)return{ok:!1,source:t,diagnostic:b.diagnostic};let v=St(c.match.path,b.match.path);if(!v)return U(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");l=v;let C=l.node.children,A=C.findIndex(N=>N===b.match.path.node);return A===-1?U(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(C.splice(o==="before"?A:A+1,0,d),E(ce(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"})))}import*as vc from"@babel/parser";import{cloneNode as Tm}from"@babel/types";function Ur(e){let{source:t,locator:n,expression:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Se(t,"jsx-node");if(!a.ok)return a.result;let c=Fm(t,r);if(!c.ok)return c.result;let l=te(a.ast,n);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return U(t,"unsupported-syntax","insert-jsx-expression-child target must be a JSXElement or JSXFragment","jsx-node");if(l.match.path.isJSXElement()){let C=l.match.path.node;if(!C.closingElement||C.openingElement.selfClosing)return U(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=l.match.path,d=null;if(i){let C=te(a.ast,i);if(!C.ok)return{ok:!1,source:t,diagnostic:C.diagnostic};let A=St(l.match.path,C.match.path);if(!A)return U(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=A,d=C.match.path.node}else if(o==="before"||o==="after")return U(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let p=Tm(c.node,!0),m=u.node.children,E={...s,targetParentLocator:n},b=C=>s?Be(C,a.ast,p,E):C;if(o==="append")return m.push(p),b(ce(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return m.unshift(p),b(ce(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));let v=m.findIndex(C=>C===d);return v===-1?U(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(m.splice(o==="before"?v:v+1,0,p),b(ce(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"})))}function Fm(e,t){try{let r=vc.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:U(e,"unsupported-syntax","Expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:U(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}import{cloneNode as Mm,nullLiteral as Ii}from"@babel/types";import*as dn from"@babel/types";function fn(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Se(t,"jsx-node");if(!a.ok)return a.result;let c=te(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};let l=te(a.ast,r);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return U(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 A=l.match.path.node;if(!A.closingElement||A.openingElement.selfClosing)return U(t,"self-closing-element","Cannot move child into self-closing element","jsx-node")}let d=null;if(i){let A=te(a.ast,i);if(!A.ok)return{ok:!1,source:t,diagnostic:A.diagnostic};let N=St(l.match.path,A.match.path);if(!N)return U(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=N,d=A.match.path}else if(o==="before"||o==="after")return U(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let p=d&&typeof d.key=="number"?d.key:-1;if(d&&p===-1)return U(t,"locator-miss","Anchor node does not exist in target parent","jsx-node");let m=Mm(c.match.path.node,!0);if(!dn.isJSXElement(m)&&!dn.isJSXExpressionContainer(m)&&!dn.isJSXFragment(m))return U(t,"unsupported-syntax","move-node source must resolve to a JSX child","jsx-node");let E=c.match.path.parentPath?.node===u.node&&typeof c.match.path.key=="number"?c.match.path.key:-1;if(d&&c.match.path.parentPath?.node===d.parentPath?.node&&c.match.path.key===d.key)return U(t,"invalid-parent-child-relation","Cannot move a node relative to itself","jsx-node");Om(c.match.path);let b=u.node.children,v={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return b.push(m),Be(jr(a.ast,t),a.ast,m,v);if(o==="prepend")return b.unshift(m),Be(jr(a.ast,t),a.ast,m,v);let C=p-(E!==-1&&E<p?1:0);return b.splice(o==="before"?C:C+1,0,m),Be(jr(a.ast,t),a.ast,m,v)}function Om(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Ii());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Ii());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Ii());return}e.remove()}import*as Cc from"@babel/parser";import{cloneNode as _m,nullLiteral as ki}from"@babel/types";function $r(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,repeatExpression:s,selectionContext:a}=e,c=Se(t,"jsx-node");if(!c.ok)return c.result;let l=Dm(t,s);if(!l.ok)return l.result;let u=te(c.ast,n);if(!u.ok)return{ok:!1,source:t,diagnostic:u.diagnostic};let d=te(c.ast,r);if(!d.ok)return{ok:!1,source:t,diagnostic:d.diagnostic};if(!d.match.path.isJSXElement()&&!d.match.path.isJSXFragment())return U(t,"unsupported-syntax","move-repeat-template-child target parent must be a JSXElement or JSXFragment","jsx-node");if(d.match.path.isJSXElement()){let N=d.match.path.node;if(!N.closingElement||N.openingElement.selfClosing)return U(t,"self-closing-element","Cannot move repeat child into self-closing element","jsx-node")}let p=d.match.path,m=null;if(i){let N=te(c.ast,i);if(!N.ok)return{ok:!1,source:t,diagnostic:N.diagnostic};let G=St(d.match.path,N.match.path);if(!G)return U(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");p=G,m=N.match.path.node}else if(o==="before"||o==="after")return U(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");if(!u.match.path.isJSXElement())return U(t,"unsupported-syntax","move-repeat-template-child source must be a JSXElement","jsx-node");let E=p.node,b=_m(l.node,!0);Lm(u.match.path);let v={...a,sourceLocator:n,targetParentLocator:r},C=E.children;if(o==="append")return C.push(b),Be(ce(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,b,v);if(o==="prepend")return C.unshift(b),Be(ce(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,b,v);let A=C.findIndex(N=>N===m);return A===-1?U(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(C.splice(o==="before"?A:A+1,0,b),Be(ce(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,b,v))}function Dm(e,t){try{let r=Cc.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:U(e,"unsupported-syntax","Repeat expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:U(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function Lm(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(ki());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(ki());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(ki());return}e.remove()}function Kr(e){let{source:t,locator:n,props:r}=e,o=Se(t,"jsx-node");if(!o.ok)return o.result;let i=fc(o.ast,n,t);if(!i.ok)return i.result;let s=i.match.path.node.openingElement;for(let[a,c]of Object.entries(r)){if(c===void 0)continue;let l={kind:"jsx-attribute",element:n,name:a},u=pc(o.ast,l);if(u.ok&&u.match!==null){let d=u.match.path.node;d.value=c===""?Br(a,"").value:Br(a,c).value}else s.attributes.push(Br(a,c))}return ce(o.ast,t,{kind:"set-props",target:"jsx-node",inverse:"set-props"})}import{getBindingIdentifiers as jm,identifier as Dn,importDeclaration as Bm,importDefaultSpecifier as Vm,importNamespaceSpecifier as Um,importSpecifier as $m,isImportDefaultSpecifier as Rc,isImportNamespaceSpecifier as Pc,isImportSpecifier as wc,stringLiteral as Km}from"@babel/types";function pn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(v=>!Qm(v));if(o!==-1){let v=r[o],C=v&&typeof v=="object"&&"kind"in v?v.kind:void 0;return U(t,"unsupported-syntax",`Unsupported import spec kind: ${String(C)}`)}let i=Ym(r);if(!i.ok)return U(t,"unsupported-syntax",i.message);let s=Se(t);if(!s.ok)return s.result;let{ast:a}=s,c=a.program,l=c.body.filter(v=>v.type==="ImportDeclaration"&&v.source.value===n),u=new Set(l.flatMap(v=>v.specifiers.flatMap(C=>{let A=qm(v,C);return A?[A]:[]}))),d=i.imports.filter(v=>!u.has(Oc(v)));if(d.length===0)return On(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let p=Gm(c.body),m=d.find(v=>p.has(vi(v)));if(m)return U(t,"unsupported-syntax",`Import local binding already exists: ${vi(m)}`);let E=Wm(d);if(E.reduce((v,C)=>v+C.length,0)!==d.length)return U(t,"unsupported-syntax","Unsupported import specifier grouping");for(let v of E){if(!Fc(Nc(v)))return U(t,"unsupported-syntax","Unsupported import specifier combination");let C=l.find(A=>Jm(A,v));if(C)Xm(C,v);else{let A=Bm(Ac(v),Km(n));Zm(c.body,A),l.push(A)}}return ce(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function Jm(e,t){return e.importKind==="type"?!1:Fc(zm(Hm(e),Nc(t)))}function Xm(e,t){let n=!1,r=new Set(e.specifiers.map(o=>Ci(o)));for(let o of Ac(t)){let i=Ci(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return Mc(e.specifiers),{changed:n}}function Ac(e){let t=e.map(n=>{switch(n.kind){case"named":return $m(n.local?Dn(n.local):Dn(n.imported),Dn(n.imported));case"default":return Vm(Dn(n.local));case"namespace":return Um(Dn(n.local));default:return n}});return Mc(t),t}function Nc(e){let t=Tc();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 Hm(e){let t=Tc();for(let n of e.specifiers)Rc(n)?t.defaultLocals.add(n.local.name):Pc(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function Tc(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function zm(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function Fc(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function Mc(e){let t=[...e.filter(n=>Rc(n)),...e.filter(n=>Pc(n)),...e.filter(n=>wc(n))];e.splice(0,e.length,...t)}function Wm(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 Ym(e){let t=new Map,n=new Map;for(let r of e){let o=Oc(r);if(t.has(o))continue;let i=vi(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 Gm(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(jm(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 Zm(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 Qm(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 Oc(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 vi(e){return e.kind==="named"?e.local??e.imported:e.local}function qm(e,t){return e.importKind==="type"||wc(t)&&t.importKind==="type"?null:Ci(t)}function Ci(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 mn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(u=>!th(u));if(o!==-1){let u=r[o],d=u&&typeof u=="object"&&"kind"in u?u.kind:void 0;return U(t,"unsupported-syntax",`Unsupported remove import spec kind: ${String(d)}`)}let i=Se(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 On(t,t,{kind:"remove-import",target:"import",inverse:"add-import"});let l=a.body[c];return r.length===0?(a.body.splice(c,1),ce(s,t,{kind:"remove-import",target:"import",inverse:"add-import"})):(l.specifiers=l.specifiers.filter(u=>!r.some(d=>eh(u,d))),l.specifiers.length===0&&a.body.splice(c,1),ce(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function eh(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 th(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 Ln(e){let{source:t,locator:n,next:r}=e,o=zr(t,n);return o.ok?(o.path.replaceWith(an(r)),ce(o.ast,t,{kind:"update-value",target:"value",inverse:"restore-value"})):o.result}function Jr(e){let{source:t,locator:n,index:r,value:o}=e,i=zr(t,n);return i.ok?i.path.isArrayExpression()?i.path.node.elements.some(s=>s?.type==="SpreadElement")?U(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>i.path.node.elements.length?U(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(i.path.node.elements.splice(r,0,an(o)),ce(i.ast,t,{kind:"insert-array-element",target:"value",inverse:"remove-array-element"})):U(t,"unsupported-syntax","Array operations require array expression target","value"):i.result}function Xr(e){let{source:t,locator:n,index:r}=e,o=zr(t,n);return o.ok?o.path.isArrayExpression()?o.path.node.elements.some(i=>i?.type==="SpreadElement")?U(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>=o.path.node.elements.length?U(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(o.path.node.elements.splice(r,1),ce(o.ast,t,{kind:"remove-array-element",target:"value",inverse:"insert-array-element"})):U(t,"unsupported-syntax","Array operations require array expression target","value"):o.result}function Hr(e){let{source:t,locator:n,fromIndex:r,toIndex:o}=e,i=zr(t,n);if(!i.ok)return i.result;if(!i.path.isArrayExpression())return U(t,"unsupported-syntax","Array operations require array expression target","value");if(i.path.node.elements.some(c=>c?.type==="SpreadElement"))return U(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 U(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),ce(i.ast,t,{kind:"move-array-element",target:"value",inverse:"move-array-element-back"})}function zr(e,t){let n=Se(e,"value");if(!n.ok)return{ok:!1,result:n.result};let r=te(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}}}var rh=typeof Ri=="function"?Ri:Ri.default;function Ai(e){let t=Uc(e);if(t)return{ok:!1,error:t};let n=e.projection,r=Ni(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.containerSourceRange??n.container.sourceRange,i=r.placement;if((n.container.kind==="virtual-route-root"||n.container.kind==="starter-placeholder")&&(n.container.sourceRange===null||n.container.sourceKind==="jsx-element"||n.container.sourceKind==="atomic-expression"||n.container.kind==="starter-placeholder"))return n.container.sourceKind==="atomic-expression"?{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"An indirect page expression does not expose a safe return boundary.",diagnostics:[]}}:{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:i.placementUnitKey,importStep:Dc(e),returnStep:{kind:"insert-return",node:{jsx:`<${e.component.localName} />`},placement:i.relation,replaceOriginal:n.container.kind==="starter-placeholder"}}};if(!o)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition does not expose a safe placement boundary.",diagnostics:[]}};let a={kind:"jsx-node",strategy:"source-range",sourceRange:o},c=dt(e.source,a);if(!c.ok||!c.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:c.ok===!1?c.diagnostic.message:"Route page composition anchor could not be resolved.",diagnostics:c.ok?[]:[Wr(c.diagnostic)]}};let l=Yr(e.source,c.match.node.start??null,c.match.node.end??null);if(sh(o,n.container.sourceRange)&&n.container.sourceHash&&l!==n.container.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition container hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition container hash no longer matches the current source."}]}};let u=Dc(e);return{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:r.placement.placementUnitKey,parentLocator:a,importStep:u,insertStep:{kind:"insert-child",parentLocator:a,node:{jsx:`<${e.component.localName} />`},placement:r.placement.relation,...r.placement.anchorSourceRange?{anchorLocator:{kind:"jsx-node",strategy:"source-range",sourceRange:r.placement.anchorSourceRange}}:{}}}}}function Dc(e){let t=ih(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 Bc(e){let t;try{t=Gr.parse(e.source,{sourceType:"module",plugins:["jsx","typescript"]})}catch(i){return{ok:!1,source:e.source,diagnostic:{message:i instanceof Error?i.message:String(i)}}}let n=Gr.parseExpression(e.jsx,{plugins:["jsx","typescript"]}),r=!1;return(typeof Pi=="function"?Pi:Pi.default)(t,{ExportDefaultDeclaration(i){let s=i.get("declaration"),a=oh(i,s);if(a){if(a.isArrowFunctionExpression()&&!a.get("body").isBlockStatement()){let c=a.get("body");c.replaceWith(Lc(c.node,n,e.placement,e.replaceOriginal===!0)),r=!0,i.stop();return}a.traverse({Function(c){c.node!==a.node&&c.skip()},ReturnStatement(c){if(r)return;let l=c.get("argument");l.node&&(l.replaceWith(Lc(l.node,n,e.placement,e.replaceOriginal===!0)),r=!0,c.stop())}}),r&&i.stop()}}}),r?{ok:!0,source:rh(t,{}).code}:{ok:!1,source:e.source,diagnostic:{message:"Route default return boundary could not be resolved."}}}function oh(e,t){if(t.isFunctionDeclaration()||t.isFunctionExpression()||t.isArrowFunctionExpression())return t;if(!t.isIdentifier())return null;let n=e.scope.getBinding(t.node.name);if(!n)return null;let r=n.path;if(r.isFunctionDeclaration()||r.isFunctionExpression())return r;if(r.isVariableDeclarator()){let o=r.get("init");if(o.isArrowFunctionExpression()||o.isFunctionExpression())return o}return null}function Lc(e,t,n,r){if(bt.isNullLiteral(e)||r)return t;let s=n==="before"||n==="prepend"?[t,e]:[e,t];return bt.jsxFragment(bt.jsxOpeningFragment(),bt.jsxClosingFragment(),s)}function Vc(e){let t=Uc(e);if(t)return{ok:!1,error:t};let n=e.projection;if(n.container.sourceRange===null)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition does not expose a safe placement boundary.",diagnostics:[]}};let r=$c(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:[]}};let i=wi(o.sourceRange),s=dt(e.source,i);if(!s.ok||!s.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:s.ok===!1?s.diagnostic.message:"Route page composition source anchor could not be resolved.",diagnostics:s.ok?[]:[Wr(s.diagnostic)]}};if(Yr(e.source,s.match.node.start??null,s.match.node.end??null)!==o.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source."}]}};if(e.operation==="remove-node")return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"remove-node",locator:i}}};if(!e.targetPlacement)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit move requires a target placement.",diagnostics:[]}};if(e.targetPlacement.routeId!==e.routeId)return{ok:!1,error:{code:"CROSS_PAGE_MOVE_UNSUPPORTED",message:"Page-unit move across routes 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 c=Ni(n,e.targetPlacement.placementKey,e.expectedDocumentVersion);if(!c.ok)return{ok:!1,error:{code:c.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"NO_SAFE_PAGE_PLACEMENT",message:c.diagnostic.message,diagnostics:[c.diagnostic]}};let l=c.placement;if(l.placementUnitKey!==e.targetPlacement.placementUnitKey||l.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 u=l.containerSourceRange;if(!u||!l.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 d=wi(u),p=dt(e.source,d);if(!p.ok||!p.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:p.ok===!1?p.diagnostic.message:"Route page composition target container could not be resolved.",diagnostics:p.ok?[]:[Wr(p.diagnostic)]}};if(Yr(e.source,p.match.node.start??null,p.match.node.end??null)!==l.containerSourceHash)return jc("Route page composition target container hash no longer matches the current source.");if(l.relation==="before"||l.relation==="after"){let E=l.anchorSourceRange,b=l.anchorSourceHash;if(!E||!b)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition target placement does not expose a verifiable anchor boundary.",diagnostics:[]}};let v=wi(E),C=dt(e.source,v);return!C.ok||!C.match.node?{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:C.ok===!1?C.diagnostic.message:"Route page composition target anchor could not be resolved.",diagnostics:C.ok?[]:[Wr(C.diagnostic)]}}:Yr(e.source,C.match.node.start??null,C.match.node.end??null)!==b?jc("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:i,targetParentLocator:d,anchorLocator:v,placement:l.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:i,targetParentLocator:d,placement:l.relation}}}}function jc(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function Wr(e){return{code:"UNSUPPORTED_PAGE_SHAPE",message:e.message,details:{astCode:e.code}}}function Uc(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.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 ih(e,t){let n=_c.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=_c.posix.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function wi(e){return{kind:"jsx-node",strategy:"source-range",sourceRange:e}}function Yr(e,t,n){return t==null||n==null?null:`sha256:${nh("sha256").update(e.slice(t,n)).digest("hex")}`}function sh(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 ah=typeof Ti=="function"?Ti:Ti.default;function Jc(e){if(!e.ast)return ot(e,[Ae("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=hh(e.ast);if(!t)return ot(e,[Ae("UNSUPPORTED_PAGE_SHAPE","Route default export must resolve to a local function component",{reason:"default-export-unresolved"})]);let n=yh(t);if(n.length===0)return ot(e,[Ae("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")]);if(n.length>1)return ot(e,[Ae("MULTIPLE_PAGE_RETURNS","Route default export contains multiple page-level return statements",{returnCount:n.length})]);let r=xh(n[0].argument);if(!r)return ot(e,[Ae("ROUTE_RETURN_NOT_FOUND","Route default export returns without a boundary expression",{reason:"bare-return"})]);if(r.isNullLiteral())return Kc(e,t,"virtual-route-root");if(Eh(r,t))return ot(e,[Ae("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(Sh(r,t)||bh(r)&&!e.source.includes("DESIGN_PLAN_REPLACE_ME"))return ot(e,[Ae("UNSUPPORTED_PAGE_SHAPE","Route default export shape does not provide a single safe placement boundary",{reason:"ambiguous-placement"})]);if(r.isJSXFragment()){let i=kt(r);if(i.unsupported)return ot(e,[Ae("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);let s=Fi({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-fragment",source:e.source,containerPath:r,members:i.members});return Zr(e,t,s,{kind:"virtual-route-root",sourceKind:"jsx-fragment"})}if(r.isJSXElement()&&!hn(r)){let i=_i(r),s=Fi({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[i]});return Zr(e,t,s,{kind:"virtual-route-root",sourceKind:"jsx-element"})}if(r.isJSXElement()){let i=kt(r);if(i.unsupported)return ot(e,[Ae("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);let s=i.members;if(kh(e.source,r,s))return Kc(e,t,"starter-placeholder");let a=Fi({input:e,containerKind:"jsx-container",sourceKind:"jsx-element",source:e.source,containerPath:r,members:s});return Zr(e,t,a,{kind:"jsx-container",sourceKind:"jsx-element"})}if(Ih(r))return ot(e,[Ae("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);let o=Ch({input:e,source:e.source,expression:r});return Zr(e,t,o,{kind:"virtual-route-root",sourceKind:"atomic-expression"})}function Ni(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ae("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:Ae("PLACEMENT_KEY_NOT_FOUND","Placement key was not found in the projected page composition",{placementKey:t})}}function $c(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ae("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:Ae("PLACEMENT_KEY_NOT_FOUND","Placement unit key was not found in the projected page composition",{placementUnitKey:t})}}function Xc(e){return e.ok?ch(e.projection):lh(e.projection)}function ch(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 d=u.members.flatMap((b,v)=>Hc(e,u,b,v,e.container.placementKey)),p=d.filter(({member:b})=>b.isBusinessMember).map(({sourceMember:b})=>dh(l,b,u.independent)),m=d.length>0?d:[{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,m.map(({sourceMember:b})=>b)),o.set(l,p);let E=m[0]?.sourceMember.key??l;n.push({key:l,containerKey:E,businessMemberKeys:p.map(b=>b.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,routeId:e.route,placementUnitKey:l.placementUnitKey,relation:l.relation}));return{status:"supported",version:e.version,routeId:e.route,container:uh(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function lh(e){let t=e.diagnostics.map(fh);return{status:"unsupported",version:e.version,routeId:e.route,reason:ph(e.diagnostics),diagnostics:t}}function uh(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 Hc(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)=>Hc(e,t,a,c,i))]}function dh(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function fh(e){return{code:mh(e),message:e.message}}function ph(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 mh(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 hh(e){let t=null;return ah(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=gh(o.path);i&&(t=i,n.stop())}}),t}function gh(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 yh(e){if(e.isArrowFunctionExpression()){let r=e.get("body");if(!r.isBlockStatement())return[{argument:r}]}let t=e.get("body");if(!t.isBlockStatement())return[];let n=[];return t.traverse({Function(r){r.node!==e.node&&r.skip()},ReturnStatement(r){n.push({argument:r.get("argument")})}}),n}function xh(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 Eh(e,t){if(e.isIdentifier())return Qr(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return Qr(n.node.name,t)}return!1}function Sh(e,t){return e.isConditionalExpression()?It(e.get("consequent"),t)||It(e.get("alternate"),t):e.isLogicalExpression()?It(e.get("left"),t)||It(e.get("right"),t):!1}function bh(e){if(!e.isJSXElement()||!hn(e))return!1;let t=kt(e).members;if(t.length!==1)return!1;let n=t[0];return n.kind==="jsx-element"&&!n.isBusinessMember&&n.businessMemberCount>0}function It(e,t){if(e.isIdentifier())return Qr(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return Qr(n.node.name,t)}return e.isConditionalExpression()?It(e.get("consequent"),t)||It(e.get("alternate"),t):e.isLogicalExpression()?It(e.get("left"),t)||It(e.get("right"),t):!1}function Qr(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 Ih(e){return e.isJSXSpreadChild()}function kh(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&Oi(t)}function Oi(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(!Oi(t))return!1;continue}if(t.isJSXElement()&&!Oi(t))return!1}return!0}function kt(e){let t=[],n=!1;for(let r of e.get("children")){if(r.isJSXText()){if(!r.node.value.trim())continue;t.push({memberKey:Di(r.node.type,r.node.start,r.node.end),kind:"text",nodeType:r.node.type,sourceRange:ze(r.node.loc),businessMemberCount:0,parentSourceRange:ze(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=kt(o);n||=i.unsupported,t.push(...i.members);continue}if(o.isJSXElement()){let i=hn(o)?kt(o):null;n||=i?.unsupported??!1,t.push({..._i(o,i?.members),sourceRange:ze(r.node.loc),parentSourceRange:ze(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:Di(o.node.type,o.node.start,o.node.end),kind:"atomic-expression",nodeType:o.node.type,sourceRange:ze(r.node.loc),businessMemberCount:1,parentSourceRange:ze(e.node.loc),children:[],isBusinessMember:!0,label:"atomic-expression"});continue}if(r.isJSXFragment()||r.isJSXElement()&&zc(r)){let o=kt(r);n||=o.unsupported,t.push(...o.members);continue}if(r.isJSXElement()){let o=hn(r)?kt(r):null;n||=o?.unsupported??!1,t.push({..._i(r,o?.members),parentSourceRange:ze(e.node.loc)})}}return{members:t,unsupported:n}}function _i(e,t){let n=e.isJSXElement()&&hn(e)?t??kt(e).members:[],r=e.isJSXElement()&&!hn(e)&&!zc(e);return{memberKey:Di(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:ze(e.node.loc),businessMemberCount:r?1:Wc(n),parentSourceRange:ze(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:vh(e)}}function zc(e){if(e.isJSXFragment())return!0;let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name==="Fragment"||t.type==="JSXMemberExpression"&&t.object.type==="JSXIdentifier"&&t.object.name==="React"&&t.property.name==="Fragment"}function hn(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name!=="Fragment"&&t.name[0]===t.name[0]?.toLowerCase()}function vh(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 Wc(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function qr(e){return e.length===0?0:Math.max(1,Wc(e))}function Fi(e){let t=ze(e.containerPath.node.loc),n=Gc(e.source,e.containerPath.node.start,e.containerPath.node.end),r=Ve(e.input,e.containerKind,e.sourceKind,t),o=Ve(e.input,e.containerKind,"placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:qr(e.members)<=1,memberCount:qr(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function Ch(e){let t=ze(e.expression.node.loc),n=Gc(e.source,e.expression.node.start,e.expression.node.end),r=Ve(e.input,"virtual-route-root","atomic-expression",t),o=Ve(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:Ve(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 Zr(e,t,n,r){let o=n.containerSourceRange??n.sourceRange,i=Rh(e,n,o),s=fi(i),a={status:"supported",route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Zc(t),container:{kind:r.kind,placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,version:e.version,isEmptyPage:n.memberCount===0,sourceKind:r.sourceKind,sourceRange:o,sourceHash:n.sourceHash},placements:i,diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map};return Object.defineProperties(a,{placementByKey:{value:s.placementByKey,enumerable:!1},unitByKey:{value:s.unitByKey,enumerable:!1},placementsByUnitKey:{value:s.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:s.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:a}}function Rh(e,t,n){if(t.members.length===0)return[t];let r=[],o=(l,u,d,p,m,E,b=n)=>({...t,placementKey:u,placementUnitKey:d,containerKey:t.placementKey,independent:qr(E)<=1,memberCount:qr(E),sourceRange:p,sourceHash:p?Mi(e.source,p):null,relation:l,containerSourceRange:b,containerSourceHash:b?Mi(e.source,b):null,anchorSourceRange:m,anchorSourceHash:m?Mi(e.source,m):null,members:E}),i=t.placementKey,s=t.members.map(l=>Ve(e,i,"placement-unit",l.sourceRange)),a=s[0]??t.placementUnitKey,c=s.at(-1)??t.placementUnitKey;r.push(o("prepend",Ve(e,i,"prepend",n),a,n,null,[]));for(let l of t.members){let u=l.parentSourceRange??n,d=Ve(e,i,"placement-unit",l.sourceRange);r.push(o("before",Ve(e,d,"before",l.sourceRange),d,l.sourceRange,l.sourceRange,[l],u)),r.push(o("after",Ve(e,d,"after",l.sourceRange),d,l.sourceRange,l.sourceRange,[l],u))}return r.push(o("append",i,c,n,null,[])),r}function Kc(e,t,n){let r=Ve(e,n,"empty-container",void 0),o=Ve(e,n,"empty-unit",void 0),i={placementKey:r,placementUnitKey:o,version:e.version,containerKey:r,independent:!0,memberCount:0,sourceRange:null,sourceHash:null,relation:"append",containerSourceRange:null,containerSourceHash:null,anchorSourceRange:null,anchorSourceHash:null,members:[]},s=fi([i]),a={status:"supported",route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:Zc(t),container:{kind:n,placementKey:r,placementUnitKey:o,version:e.version,isEmptyPage:!0,sourceKind:n==="starter-placeholder"?"starter-placeholder":"jsx-fragment",sourceRange:null,sourceHash:null},placements:[i],diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map};return Object.defineProperties(a,{placementByKey:{value:s.placementByKey,enumerable:!1},unitByKey:{value:s.unitByKey,enumerable:!1},placementsByUnitKey:{value:s.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:s.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:a}}function ot(e,t){return{ok:!1,projection:{status:"unsupported",route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,diagnostics:t}}}function Ae(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,details:n}}function Ve(e,t,n,r){return Yc([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function Di(e,t,n){return Yc(["member",e,String(t??-1),String(n??-1)])}function Yc(e){return`pc_${Li("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function Gc(e,t,n){return t==null||n==null?null:`sha256:${Li("sha256").update(e.slice(t,n)).digest("hex")}`}function Mi(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:${Li("sha256").update(e.slice(r+t.startColumn,o+t.endColumn)).digest("hex")}`}function ze(e){return e?{startLine:e.start.line,startColumn:e.start.column,endLine:e.end.line,endColumn:e.end.column}:null}function Zc(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}function wh(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var Ah=160;function Qc(e,t,n,r={}){let o=[];for(let[i,s]of e.elements){let a=n.get(i),c={canUpdateText:r.canUpdateTextByKey?.get(i)??a?.canUpdateText??!1,canInsertChild:a?.canInsertChild??!1,canMove:a?.canMove??!1,canRemove:a?.canRemove??!1};o.push({key:i,tag:s.tag,label:s.tag===s.componentName?s.tag:`${s.tag} (${s.componentName})`,parentKey:s.parentKey,childKeys:[...s.childKeys],operationSummary:c,...r.dynamicDataSummaryByKey?.get(i)?{dynamicDataSummary:r.dynamicDataSummaryByKey.get(i)}:{}})}return{routeId:e.routeId,version:e.version,rootKeys:[...e.rootKeys],entries:o}}function qc(e,t,n,r,o,i,s,a,c,l,u,d,p){let m=t.elements.get(e),E=n.nodes.get(e),b=r.get(e);if(!m||!E||!b)throw new Error(`Node not found: ${e}`);let v=ol(m.textSegments,s),C=il(e,t,m,b,v),A=v?Fh(v):void 0,N=Mh(i,v),G=m.textSegments.map(_=>({index:_.index,value:_.value,editable:sl(_,b,s?.get(_.index)??null),source:o.get(_.index)??null})),fe=nl(m,t),ue=m.childKeys.map(_=>{let D=t.elements.get(_);return D?{key:_,tag:D.tag,label:D.tag}:null}).filter(_=>_!==null),R=[];if(m.parentKey){let _=t.elements.get(m.parentKey);if(_)for(let D of _.childKeys){if(D===e)continue;let L=t.elements.get(D);L&&R.push({key:D,tag:L.tag,label:L.tag})}}return{key:e,tag:m.tag,componentName:m.componentName,sourceFile:m.sourceFile,sourceLocator:tl(m),label:m.tag,capabilities:C,writeTarget:i,effectiveWriteTarget:N,provenanceChain:A,componentSemantic:c,contentModel:l,mediaModel:u,styleSource:d,conditional:a,...p?{dynamicData:p}:{},textSegments:G,boundaryKind:m.boundaryKind,isOpaque:m.isOpaque,ancestors:fe,children:ue,siblings:R}}function el(e,t,n,r,o,i,s){let a=t.elements.get(e),c=n.nodes.get(e),l=r.get(e);if(!a||!c||!l)throw new Error(`Node not found: ${e}`);let u=ol(a.textSegments,i);return{key:e,tag:a.tag,componentName:a.componentName,sourceFile:a.sourceFile,sourceLocator:tl(a),label:a.tag,capabilities:il(e,t,a,l,u),provenanceChain:u?{editMode:u.editMode,diagnostics:u.diagnostics.map(d=>({code:d.code,message:d.message}))}:void 0,...s?{dynamicData:s}:{},textSegments:a.textSegments.map(d=>{let p=o.get(d.index);return{index:d.index,editable:sl(d,l,i?.get(d.index)??null),source:p?{kind:p.kind}:null}}),boundaryKind:a.boundaryKind,isOpaque:a.isOpaque,ancestors:nl(a,t)}}function tl(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:Nh(e.sourceRange),structuralPath:e.identity.structuralPath,...Th(e.textSegments)}}function nl(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 Nh(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function Th(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,Ah)}:{}}function rl(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 ol(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function il(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&&al(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 sl(e,t,n){return!e.editable||!t.canUpdateText?!1:n?al(n.editMode):!0}function al(e){return e==="direct"||e==="proxy"||e==="upstream"}function Fh(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 Mh(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}:wh(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}}function cl(e){let{key:t,element:n,graph:r,provenances:o}=e,i=_h(t,n,r),s=i?.tag??(Ut(n.tag)?n.tag:n.componentName),a=i?.identity.key??ll(n,r)??t,c=jh(i),l=Bh(t,n,r,o,i),u=Oh(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:Lh(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:u,impactScope:Vh(u),alternativeStrategies:Uh(u)}}function Oh(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return ji(e,n)?"instance":!Ut(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function ll(e,t){if(Ut(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&Dh(r,e.componentName));return n.length!==1?null:n[0].identity.key}function _h(e,t,n){if(Ut(t.tag))return t;let r=ji(e,n);if(r)return r;let o=ll(t,n);return o?n.elements.get(o)??null:null}function Dh(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function Lh(e,t){return Ut(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function jh(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 Bh(e,t,n,r,o){let i=new Set,s=ji(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&&Ut(t.tag)&&t.childKeys.length>0&&i.add("children"),[...i]}function ji(e,t){let n=t.elements.get(e)?.parentKey??null;for(;n;){let r=t.elements.get(n);if(!r)break;if(Ut(r.tag))return r;n=r.parentKey}return null}function Ut(e){return/^[A-Z]/.test(e)}function Vh(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function Uh(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}var $h=new Set(["markdown","body","content","value","document"]),ul=[];function fl(e){if(!(!Xh(e.tag)||!e.attributes))for(let t of e.attributes){if(!$h.has(t.name))continue;if(Jh(t))return{kind:"markdown",field:t.name,schema:"markdown",valuePath:t.source?.expression,operationBoundary:ul};let n=Kh(t.resolvedValue);if(n==="prosemirror-doc"||n==="node-array")return{kind:"rich-text-json",field:t.name,valuePath:t.source?.expression,schema:n,operationBoundary:ul};if(n==="unsupported-json-tree")return{kind:"rich-text-json",field:t.name,valuePath:t.source?.expression,schema:"unsupported-json-tree",operationBoundary:[],diagnostics:[{code:"unsupported-schema",field:t.name,message:'Only top-level node arrays and { type: "doc", content: [] } rich-text JSON are editable in stage D'}]}}}function Kh(e){if(e){if(Array.isArray(e)&&e.every(t=>dl(t)))return"node-array";if(dl(e)){if(e.type==="doc"&&Array.isArray(e.content))return"prosemirror-doc";if(Array.isArray(e.content)||Array.isArray(e.children))return"unsupported-json-tree"}}}function dl(e){return!Array.isArray(e)&&typeof e=="object"&&e!==null}function Jh(e){return e.name==="markdown"}function Xh(e){return/^[A-Z]/.test(e)}var Hh=["src","alt","poster","caption","width","height"];function pl(e){let t=e.attributes?.filter(i=>Hh.includes(i.name))??[];if(t.length===0)return;let n=t.map(i=>i.name),r=Object.fromEntries(t.filter(i=>i.source?.expression).map(i=>[i.name,i.source.expression])),o=Wh(t.map(i=>i.value));return{kind:zh(e.tag,n),sourceType:o,fields:n,editableFields:[],operationBoundary:[],...Object.keys(r).length>0?{valuePaths:r}:{}}}function zh(e,t){return e==="img"?"image":e==="video"||t.includes("poster")?"video":"media"}function Wh(e){return e.some(t=>t.startsWith("cms:"))?"cms-media-field":e.some(t=>/^(\.?\/|\/)/.test(t))?"local-file-reference":"asset-id"}var Bi=["set-class-name-source","apply-style-draft"];function ml(e){let t=e.attributes?.find(n=>n.name==="className");if(!t)return{kind:"class-name-source",className:"",sourceKind:"missing",editable:!0,operationBoundary:Bi,diagnostics:[{code:"missing-class-name",message:"No className attribute is present on this element"}]};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:Bi,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:Bi}}import{createHash as Yh}from"node:crypto";var jn=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 ae(e){return`sha256:${Yh("sha256").update(e).digest("hex")}`}function yl(e){let t=e.route.graph.elements.get(e.key);if(!t)return{key:e.key,routeId:e.route.routeId,filePath:"",componentName:"",sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:ae(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Key not found: ${e.key}`}]};let n=Gh(e.route.source,t);if(!n)return{key:e.key,routeId:e.route.routeId,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:ae(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,routeId:e.route.routeId,filePath:t.sourceFile,componentName:t.componentName,openingElementRange:gl(r),version:{documentVersion:e.route.graph.version,contentHash:ae(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:hl(e.route.source,o),valueRaw:s?hl(e.route.source,s):null,attrRange:gl(o),diagnostics:[]}}function xl(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 Gh(e,t){let n=rt({source:e,profile:Dt({filePath:t.sourceFile,source:e})});if(!n.ok)return null;let r=te(n.ast,{kind:"jsx-node",strategy:"structural-path",file:t.identity.file,component:t.identity.component,structuralPath:t.identity.structuralPath,expectedRange:Zh(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function El(e){let t=rt({source:`const __v = <div ${e} />;`,profile:"tsx-module"});if(!t.ok)return!1;let n=t.ast.program.body[0],o=(n?.type==="VariableDeclaration"?n.declarations[0]:null)?.init;if(o?.type!=="JSXElement")return!1;let i=o.openingElement.attributes;return i.length===1&&i[0]?.type==="JSXAttribute"&&i[0].name.type==="JSXIdentifier"&&i[0].name.name==="className"}function hl(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function gl(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 Zh(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}import*as ns from"@babel/parser";import Ji from"@babel/traverse";import*as x from"@babel/types";import*as mt from"node:path";import*as vl from"@babel/parser";import $i from"@babel/traverse";import*as gn from"@babel/types";import*as H from"@babel/types";function no(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?eo(n,t):null}if(e.isMemberExpression()){let n=rg(e.node),r=Qh(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?eo(o,[...r,...t]):null}return e.isAwaitExpression()||Ui(e.node)?vt(ig(e.node),t,"awaited or fetched expression"):null}function Qh(e){let t=[],n=e;for(;H.isMemberExpression(n);){if(n.computed)if(H.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(H.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(H.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return H.isIdentifier(n)?t:null}function eo(e,t=[]){let n=qh(e,t);if(n)return n;let r=eg(e,t);if(r)return r;let o=tg(e,t);return o||null}function Vn(e){return e?.kind==="api-source"}function qh(e,t){if(e.path.isVariableDeclarator()&&H.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&Vi(s.node)&&t[0]?.kind==="property"&&t[0].name==="data")return vt(e.identifier.name,t,"query hook result.data binding")}if(e.path.isVariableDeclarator()&&H.isObjectPattern(e.path.node.id)){let s=e.path.node.id.properties.find(c=>H.isObjectProperty(c)&&Il(c)==="data"&&Bn(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&Vi(a.node))return vt(e.identifier.name,t,"query hook data binding")}let n=ng(e);if(!n||Il(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()||!Vi(i.node)?null:vt(e.identifier.name,t,"query hook data binding")}function eg(e,t){if(e.path.isVariableDeclarator()&&H.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!bl(a.node))return null;let[c,l]=e.path.node.id.elements;return!H.isIdentifier(c)||c.name!==e.identifier.name||!H.isIdentifier(l)?null:Sl(e,l.name)?vt(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()||!bl(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return H.isIdentifier(s)&&Sl(e,s.name)?vt(e.identifier.name,t,"state setter is updated by API data"):null}function tg(e,t){let n=e.path.isVariableDeclarator()?e.path:e.path.findParent(o=>o.isVariableDeclarator());if(!n?.isVariableDeclarator())return null;let r=n.get("init");return r?.isExpression()?r.isAwaitExpression()?vt(e.identifier.name,t,"awaited binding result"):Ui(r.node)?vt(e.identifier.name,t,"fetch-backed binding result"):null:null}function ng(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 Bn(e,t){return H.isIdentifier(e)?e.name===t:H.isAssignmentPattern(e)?Bn(e.left,t):H.isObjectPattern(e)?e.properties.some(n=>H.isObjectProperty(n)?Bn(n.value,t):Bn(n.argument,t)):H.isArrayPattern(e)?e.elements.some(n=>!!n&&Bn(H.isRestElement(n)?n.argument:n,t)):!1}function Sl(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){Ui(i.node)&&(n=!0),(og(i.node.callee,t)||i.node.arguments.some(s=>H.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function Vi(e){let t=ro(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function bl(e){return ro(e.callee)==="useState"}function Ui(e){return to(e,t=>H.isCallExpression(t)&&ro(t.callee)==="fetch")}function rg(e){let t=e;for(;H.isMemberExpression(t);)t=t.object;return H.isIdentifier(t)?t.name:null}function Il(e){return e.computed?null:H.isIdentifier(e.key)?e.key.name:H.isStringLiteral(e.key)?e.key.value:null}function ro(e){return H.isIdentifier(e)?e.name:H.isMemberExpression(e)&&H.isIdentifier(e.property)?e.property.name:null}function og(e,t){return to(e,n=>H.isIdentifier(n)&&n.name===t)}function to(e,t){if(t(e))return!0;let n=H.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(H.isNode(i)&&to(i,t))return!0;continue}if(H.isNode(o)&&to(o,t))return!0}return!1}function ig(e){return H.isIdentifier(e)?e.name:H.isCallExpression(e)?ro(e.callee)??"api":H.isAwaitExpression(e)?"awaited-api":"api"}function vt(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:sg(e,t),reason:n}}function sg(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var Cl=typeof $i=="function"?$i:$i.default;function Rl(e,t){let n=wl(e);if(!n)return{allowed:!0};let r=!1;return Cl(n,{CallExpression(o){if(!Al(o.node,t.sourceRange)||!ag(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||Vn(no(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function Pl(e,t){let n=wl(e);if(!n)return{allowed:!0};let r=!1;return Cl(n,{JSXExpressionContainer(o){Al(o.node,t.sourceRange)&&(gn.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 wl(e){try{return vl.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function ag(e){let t=e.callee;return gn.isMemberExpression(t)&&gn.isIdentifier(t.property)&&t.property.name==="map"}function Al(e,t){let n=e.loc;return n?kl({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&kl({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function kl(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 ne from"@babel/types";function Nl(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 it(e){if(e.path.isObjectPattern()||e.path.isArrayPattern())return $t(e.path.node,e.identifier.name);if(e.path.isVariableDeclarator()){let n=e.path.node.id;if(ne.isObjectPattern(n)||ne.isArrayPattern(n))return $t(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(lg(e.path,n))return!0}if(t.isFunction()||t.isVariableDeclarator())return!1;t=t.parentPath}return!1}function $t(e,t,n=!1){return ne.isIdentifier(e)?e.name===t&&n:ne.isObjectPattern(e)?e.properties.some(r=>ne.isObjectProperty(r)?$t(r.value,t,n):$t(r.argument,t,n)):ne.isArrayPattern(e)?e.elements.some(r=>{if(!r)return!1;let o=ne.isRestElement(r)?r.argument:r;return $t(o,t,n)}):ne.isAssignmentPattern(e)?$t(e.left,t,!0):ne.isRestElement(e)?$t(e.argument,t,n):!1}function yn(e,t){if(e.path.isObjectPattern()){if(t){let r=We(e.path.node,t.base),[o,...i]=r??[];if(o?.kind==="property")return{propName:o.name,remainingPath:[...i,...t.path],hasDefault:it(e)}}return t?{propName:t.base,remainingPath:t.path,hasDefault:it(e)}:null}if(e.path.isVariableDeclarator()){let r=e.path.get("init");if(r?.isExpression()){let o=Tl(r),i=!1,s=o?o.initBinding&&Ki(o.initBinding)?(i=it(o.initBinding),[...o.initPathPrefix]):o.initBinding?(()=>{let c=yn(o.initBinding,{kind:"identifier",expression:o.initBinding.identifier.name,base:o.initBinding.identifier.name,path:[]});return i=c?.hasDefault??!1,c?[{kind:"property",name:c.propName},...c.remainingPath,...o.initPathPrefix]:null})():null:null,a=We(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||it(e)}}}}let n=fg(e);if(n){let r=cg(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||it(e)}}if(n.findParent(s=>s.isVariableDeclarator()))return null;let o=ug(e);if(o){let[s,...a]=o;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:it(e)}}let i=Un(n.node);return i?{propName:i,remainingPath:t?.path??[],hasDefault:it(e)}:null}if(Ki(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:it(e)}}return null}function cg(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=Tl(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=Ki(i)?(a=it(i),[...s]):(()=>{let u=yn(i,{kind:"identifier",expression:i.identifier.name,base:i.identifier.name,path:[]});return a=u?.hasDefault??!1,u?[{kind:"property",name:u.propName},...u.remainingPath,...s]:null})();if(!c)return null;let l=We(n.node.id,t.identifier.name);return l?{path:[...c,...l],hasDefault:a||it(t)}:null}function Tl(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=pg(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function Ki(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function lg(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function ug(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=We(i.node,t);if(a)return a}return null}function Fl(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=oo(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=Un(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=dg(e);if(!r)return null;let o=r.parentPath;if(!o?.isObjectProperty())return null;let i=Un(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 oo(e,t){if(e.isObjectPattern()){for(let n of e.get("properties"))if(n.isObjectProperty()){let r=Un(n.node),o=n.get("value");if(o.isAssignmentPattern()){let i=o.get("left"),s=o.get("right");if(r&&!Array.isArray(i)&&We(i.node,t)&&!Array.isArray(s)&&s.isExpression())return{propName:r,expressionPath:s}}if(!Array.isArray(o)&&(o.isObjectPattern()||o.isArrayPattern())){let i=oo(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=oo(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=oo(r,t);if(o)return o}}return null}function We(e,t,n=[]){if(ne.isIdentifier(e))return e.name===t?n:null;if(ne.isObjectPattern(e)){for(let r of e.properties)if(ne.isObjectProperty(r)){let o=Un(r);if(!o)continue;let i=We(r.value,t,[...n,{kind:"property",name:o}]);if(i)return i}else if(ne.isRestElement(r)){let o=We(r.argument,t,n);if(o)return o}}if(ne.isArrayPattern(e))for(let r=0;r<e.elements.length;r+=1){let o=e.elements[r];if(!o)continue;let i=ne.isRestElement(o)?o.argument:o,s=We(i,t,[...n,{kind:"index",index:r}]);if(s)return s}return ne.isAssignmentPattern(e)?We(e.left,t,n):null}function dg(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isAssignmentPattern()&&t.node.left===e.path.node?t:null}function fg(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 Un(e){return e.computed?null:ne.isIdentifier(e.key)?e.key.name:ne.isStringLiteral(e.key)?e.key.value:null}function pg(e){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))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return ne.isIdentifier(n)?{base:n.name,path:t}:null}var At=typeof Ji=="function"?Ji:Ji.default;function le(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 xn(e){return{file:e.file,component:e.component}}function mg(e){return e.target.kind==="node"?e.target.key:null}function hg(e){return"kind"in e}function io(e){return!hg(e)}function Gi(e,t){let n=mt.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=mt.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Xi(e,t){let n=e.getFileContent(t.file);if(!n)return;let r=dt(n,le(t));if(r.ok)return n.slice(r.match.start,r.match.end)}function rs(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 Ue(e){try{return ns.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function gg(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function yg(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 ie(e){return typeof e.start=="number"&&typeof e.end=="number"?{start:e.start,end:e.end}:null}function Xt(e,t){let n=ie(e);return!!(n&&Ye(t,n))}function Ye(e,t){return t.start>=e.start&&t.end<=e.end}function Wl(e){if(x.isJSXIdentifier(e))return/^[A-Z]/.test(e.name)?e.name:null;if(x.isJSXMemberExpression(e)){let t=e;for(;x.isJSXMemberExpression(t);)t=t.object;return t.name}return null}function xg(e,t){let n=ie(e.node);if(!n)return[];let r=new Set,o=(i,s)=>{let a=s.scope.getBinding(i);if(!a||Xt(a.path.node,n))return;t.scope.getBinding(i)!==a&&r.add(i)};return e.traverse({ReferencedIdentifier(i){o(i.node.name,i)},JSXOpeningElement(i){let s=Wl(i.node.name);s&&o(s,i)}}),[...r].sort()}function Ml(e,t,n){let r=Ue(e);if(!r)return{ok:!0};let o=te(r,le(t));if(!o.ok||!o.match.path.isJSXElement())return{ok:!0};let i=te(r,le(n));if(!i.ok||!i.match.path.isJSXElement())return{ok:!0};if(lu(o.match.path,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let s=xg(o.match.path,i.match.path);return s.length>0?{ok:!1,bindingNames:s}:{ok:!0}}function Ol(e,t,n){let r=Ct(t,n);return r?pt(e,r):null}function Ct(e,t){let n=te(e,le(t));return n.ok&&n.match.path.isJSXElement()?n.match.path:ts(e,t)}function pt(e,t){let n=t.findParent(b=>b.isArrowFunctionExpression()||b.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(b=>b===r.node)!==0)return null;let a=i.get("callee");if(!a.isMemberExpression()&&!a.isOptionalMemberExpression())return null;let c=a.node,l=c.property;if(!x.isIdentifier(l)||l.name!=="map"||c.computed)return null;let u=a.get("object"),d=lo(e,u.node),p=r.node.params.map(b=>lo(e,b)),m=ie(i.node),E=ie(r.node);return!d||p.some(b=>b.length===0)||!m||!E?null:{callStart:m.start,callEnd:m.end,callbackStart:E.start,callbackEnd:E.end,collectionExpression:d,callbackParams:p,mapOperator:x.isOptionalMemberExpression(c)&&c.optional?"?.map":".map",collectionNeedsParens:as(u.node),callbackPath:r,collectionPath:u}}function lo(e,t){let n=ie(t);return n?e.slice(n.start,n.end):""}function so(e,t){return!!(e&&t&&e.callStart===t.callStart&&e.callEnd===t.callEnd&&e.callbackStart===t.callbackStart&&e.callbackEnd===t.callbackEnd)}function Eg(e,t){let n=ie(e.node);return n?Sg(t).some(r=>{let o=ie(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function Sg(e){let t=e.callbackPath.node.body;return x.isBlockStatement(t)?Rt(t.body):wt(t)}function Rt(e){let t=[];for(let n of e){if(x.isReturnStatement(n)){n.argument&&t.push(...wt(n.argument));continue}if(x.isBlockStatement(n)){t.push(...Rt(n.body));continue}if(x.isIfStatement(n)){let r=x.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent];if(t.push(...Rt(r)),n.alternate){let o=x.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];t.push(...Rt(o))}continue}if(x.isSwitchStatement(n)){for(let r of n.cases)t.push(...Rt(r.consequent));continue}x.isTryStatement(n)&&(t.push(...Rt(n.block.body)),n.handler&&t.push(...Rt(n.handler.body.body)),n.finalizer&&t.push(...Rt(n.finalizer.body)))}return t}function wt(e){return x.isJSXElement(e)?bg(e)?_l(e.children):[e]:x.isJSXFragment(e)?_l(e.children):x.isParenthesizedExpression(e)||x.isTSAsExpression(e)||x.isTSSatisfiesExpression(e)||x.isTSNonNullExpression(e)||x.isTSTypeAssertion(e)?wt(e.expression):x.isConditionalExpression(e)?[...wt(e.consequent),...wt(e.alternate)]:x.isLogicalExpression(e)&&du(e.operator)?wt(e.right):[]}function _l(e){return e.flatMap(t=>x.isJSXElement(t)||x.isJSXFragment(t)?wt(t):x.isJSXExpressionContainer(t)&&(x.isJSXElement(t.expression)||x.isJSXFragment(t.expression)||x.isConditionalExpression(t.expression)||x.isLogicalExpression(t.expression))?wt(t.expression):[])}function bg(e){let t=e.openingElement.name;return x.isJSXIdentifier(t)?t.name==="Fragment":x.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function Ig(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function Hi(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function Dl(e,t,n,r={}){if(!r.preserveConditionalBoundary&&lu(e,t))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let o=ie(e.node);if(!o)return{ok:!0};let i=new Set(n.callbackPath.node.params.flatMap(c=>ss(c)).map(c=>n.callbackPath.scope.getBinding(c)?.path.node).filter(Boolean)),s=new Set,a=(c,l)=>{let u=l.scope.getBinding(c);if(!u||Xt(u.path.node,o)||i.has(u.path.node))return;t.scope.getBinding(c)!==u&&s.add(c)};return e.traverse({ReferencedIdentifier(c){a(c.node.name,c)},JSXOpeningElement(c){let l=Wl(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function Ll(e,t,n){let r=ie(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>ss(s)).map(s=>n.callbackPath.scope.getBinding(s)?.path.node).filter(Boolean)),i=new Set;return os(e,s=>{let a=s.scope.getBinding(s.node.name);if(!a||Xt(a.path.node,r)||o.has(a.path.node))return;t.scope.getBinding(s.node.name)!==a&&i.add(s.node.name)}),i.size>0?{ok:!1,bindingNames:[...i].sort()}:{ok:!0}}function kg(e,t){let n=new Set(e.callbackPath.node.params.flatMap(a=>ss(a)).map(a=>e.callbackPath.scope.getBinding(a)?.path.node).filter(Boolean)),r=new Set,o=(a,c)=>{let l=c.scope.getBinding(a);if(!l||n.has(l.path.node))return;t.scope.getBinding(a)!==l&&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(x.isIdentifier(l))o(l.name,c);else{let u=vg(l);u&&o(u,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function vg(e){let t=e;for(;x.isTSQualifiedName(t);)t=t.left;return x.isIdentifier(t)?t.name:null}function Yl(e,t){let n=ie(e.node),r=new Set;return os(e,o=>{let i=o.scope.getBinding(o.node.name);if(!i||n&&Xt(i.path.node,n))return;t.scope.getBinding(o.node.name)!==i&&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 os(e,t){e.isIdentifier()&&e.isReferencedIdentifier()&&t(e),e.traverse({ReferencedIdentifier(n){n.isIdentifier()&&t(n)}})}function Cg(e){let t=Rg(e.ast,e.sourceNode.component,e.targetParent.component);if(!t.ok)return{ok:!1,reason:t.reason};let n=fu(t.path,e.targetParentPath);if(!n.ok)return{ok:!1,reason:n.reason};let r=Bg({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=cu(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?as(o):!0}}}function Rg(e,t,n){let r=Ql(e,t);if(ql(e,r),eu(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 At(e,{JSXElement(s){su(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:is(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 Pg(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=>Kn(a.file)));if(!t.has(Kn(e.sourceFile))||!t.has(Kn(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(Kn(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=Tg(e.sourceAst,e.sourceComponent);if(!n)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without an exported source component identity"};let r=[];for(let a of e.knownSourceFiles){let c=Ue(a.content);if(!c)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because a loaded source file cannot be parsed"};r.push({file:a.file,ast:c})}let o=wg(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=Gl({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!Ge(s.file,e.targetFile)||is(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}}function wg(e,t){let n=new Map,r=i=>{let s=En(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 Ag(i,n))o=r(s)||o}return[...n.values()]}function Ag(e,t){let n=[],r=Ng(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=Xn(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=Hn(e.file,o.source.value);for(let s of o.specifiers){if(x.isExportNamespaceSpecifier(s)){let l=Pt(s.exported);for(let u of t.values())Ge(u.file,i)&&n.push({file:e.file,namespace:Zi(l,u.namespace),exportName:u.exportName});continue}if(!x.isExportSpecifier(s))continue;let a=Pt(s.local),c=[...t.values()].filter(l=>Ge(l.file,i)&&Kt(l.namespace,a));if(c.length>0){let l=Pt(s.exported);for(let u of c){let d=Xn(u.namespace,a,l);d&&n.push({file:e.file,namespace:d,exportName:u.exportName})}continue}t.has(En({file:i,exportName:a}))&&n.push({file:e.file,exportName:Pt(s.exported)})}continue}if(x.isExportNamedDeclaration(o)&&!o.source){for(let i of o.specifiers){if(!x.isExportSpecifier(i))continue;let s=Pt(i.local),a=r.get(s)??[];if(a.length>0){let c=Pt(i.exported);n.push({file:e.file,exportName:c});for(let l of a){let u=Xn(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=Hn(e.file,o.source.value),s=o.exported;if(s){let a=Pt(s);for(let c of t.values())Ge(c.file,i)&&n.push({file:e.file,namespace:Zi(a,c.namespace),exportName:c.exportName});continue}for(let a of t.values())Ge(a.file,i)&&(a.namespace||a.exportName!=="default")&&n.push({file:e.file,namespace:a.namespace,exportName:a.exportName})}}return n}function Zi(e,t){return t?`${e}.${t}`:e}function Kt(e,t){return e===t||e?.startsWith(`${t}.`)===!0}function Xn(e,t,n){return!Kt(e,t)||!e?null:e===t?n:`${n}${e.slice(t.length)}`}function Ng(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=Hn(e.file,i.source.value);for(let a of i.specifiers){if(x.isImportDefaultSpecifier(a)){let c=t.get(En({file:s,exportName:"default"}));c&&r(a.local.name,c);let l=[...t.values()].filter(u=>Ge(u.file,s)&&Kt(u.namespace,"default"));for(let u of l){let d=Xn(u.namespace,"default",a.local.name);d&&r(a.local.name,{...u,namespace:d})}continue}if(x.isImportSpecifier(a)){let c=Pt(a.imported),l=[...t.values()].filter(d=>Ge(d.file,s)&&Kt(d.namespace,c));for(let d of l)r(a.local.name,d);let u=t.get(En({file:s,exportName:c}));u&&r(a.local.name,u);continue}if(x.isImportNamespaceSpecifier(a))for(let c of t.values())Ge(c.file,s)&&r(a.local.name,{...c,namespace:Zi(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=Sn(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(En));for(let d of c){let p=Xn(d.namespace,a.name,s.id.name),m=p?{...d,namespace:p}:d,E=En(m);u.has(E)||(r(s.id.name,m),u.add(E),o=!0)}}}return n}function En(e){let t=e.namespace?`${e.namespace}.${e.exportName}`:e.exportName;return`${qi(e.file)}#${t}`}function Pt(e){return x.isIdentifier(e)?e.name:e.value}function Tg(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 Gl(e){let t=Fg(e),n=[],r=eu(e.ast,t);return At(e.ast,{JSXElement(o){Ge(e.file,e.sourceFile)&&is(o)===e.sourceComponent||su(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function Zl(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function Ql(e,t){let n=Zl();return At(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function Fg(e){let t=Zl();return Ge(e.file,e.sourceFile)&&Mg(t,Ql(e.ast,e.sourceComponent)),At(e.ast,{ImportDeclaration(n){let r=n.node,o=r.source.value;if(typeof o!="string")return;let i=Hn(e.file,o),s=e.componentIdentities.filter(a=>Ge(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=>Kt(u.namespace,"default"));if(l.length>0){let u=t.namespaceMembers.get(c)??new Set;for(let d of l){let p=Bl(d,"default");p&&u.add(p)}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(d=>Kt(d.namespace,l));if(u.length>0){let d=t.namespaceMembers.get(c)??new Set;for(let p of u){let m=Bl(p,l);m&&d.add(m)}t.namespaceMembers.set(c,d);continue}s.some(d=>!d.namespace&&d.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,d=t.namespaceMembers.get(c)??new Set;d.add(u),t.namespaceMembers.set(c,d)}}}}}),ql(e.ast,t),t}function Mg(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 ql(e,t){At(e,{VariableDeclarator(n){if(!n.node.init)return;let r=Sn(n.node.init);if(r){if(x.isIdentifier(n.node.id)){let o=Jt(r,t,n),i=n.scope.getBinding(n.node.id.name);o&&i&&Qi(t,i,o);return}if(x.isObjectPattern(n.node.id)){let o=Jt(r,t,n);o?.unsupported||o?.local?t.hasUnsupportedAlias=!0:o&&o.namespaceMembers.size>0&&ru(n.node.id,o.namespaceMembers,t,n)}}}})}function eu(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return At(e,{ReferencedIdentifier(r){if(n){r.stop();return}Og(r)||!r.isIdentifier()||!tu(r,t)||_g(r,t)||Dg(r)||(n=!0,r.stop())}}),n}function Og(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 tu(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)&&Jt(r.node,t,r)?r:null}function _g(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!jl(e,r))return!1;let o=tu(e,t);if(!o)return!1;if(Sn(r.node)===o.node)return!!Jt(r.node,t,r);let s=e.findParent(c=>c.isObjectProperty());if(!s?.isObjectProperty())return!1;let a=s.get("value");return a.isExpression()&&jl(e,a)&&!!Jt(a.node,t,a)}function Dg(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function jl(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function Jt(e,t,n){let r=Sn(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 Lg(r,t,n);let o=iu(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?nu(s,o.slice(1).join(".")):null}function Lg(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!x.isObjectProperty(i))continue;let s=ou(i);if(!s||!x.isExpression(i.value)){x.isExpression(i.value)&&(o||=Jt(i.value,t,n)!==null);continue}let a=Jt(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 nu(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 Qi(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 ru(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&&Qi(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!x.isObjectProperty(o))continue;let i=ou(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=nu(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&&Qi(n,c,s);continue}if(x.isObjectPattern(a)&&s.namespaceMembers.size>0){ru(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function ou(e){return e.computed?x.isStringLiteral(e.key)||x.isNumericLiteral(e.key)?String(e.key.value):null:jg(e.key)}function jg(e){return x.isIdentifier(e)?e.name:x.isStringLiteral(e)||x.isNumericLiteral(e)?String(e.value):null}function Sn(e){return x.isParenthesizedExpression(e)||x.isTSAsExpression(e)||x.isTSSatisfiesExpression(e)||x.isTSNonNullExpression(e)||x.isTSTypeAssertion(e)?Sn(e.expression):x.isExpression(e)?e:null}function iu(e){if(x.isIdentifier(e))return[e.name];if((x.isMemberExpression(e)||x.isOptionalMemberExpression(e))&&!e.computed&&x.isIdentifier(e.property)){let t=Sn(e.object),n=t?iu(t):null;return n?[...n,e.property.name]:null}return null}function Bl(e,t){if(!Kt(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 su(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=au(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 au(e){if(x.isJSXIdentifier(e))return[e.name];if(x.isJSXMemberExpression(e)){let t=au(e.object);return t?[...t,e.property.name]:null}return null}function is(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 Bg(e){let t=ie(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||Xt(a.path.node,t))return;let c=$g(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 u=Jg(e.callSitePath,c.propName,e.source);if(!u.ok){o=u.reason;return}let d=Vg(u.expression,c.remainingPath);if(!d){o="Cannot move prop-backed repeat child because the mapped prop path is not a portable expression";return}let p=Yl(u.expressionPath,e.targetParentPath);if(!p.ok){o=p.reason??`Cannot move prop-backed repeat child because the mapped prop source is not visible at the target: ${p.bindingNames.join(", ")}`;return}n.set(`${c.range.start}:${c.range.end}`,{...c.range,text:d});return}e.targetParentPath.scope.getBinding(s.node.name)!==a&&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:Xg(e.source,t,[...n.values()])}}function Vg(e,t){if(t.length===0)return e;let n=cu(e);if(!n)return null;let r=as(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=Ug(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function Ug(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function $g(e,t,n){let r=Kg(e,n),o=r?{kind:"member-expression",expression:e.node.name,base:e.node.name,path:[{kind:"property",name:r.propertyName}]}:{kind:"identifier",expression:e.node.name,base:e.node.name,path:[]},i=yn(t,o);if(!i)return null;let s=r?.range??ie(e.node);return s?{propName:i.propName,remainingPath:i.remainingPath,hasDefault:i.hasDefault,range:s}:null}function Kg(e,t){let n=e.parentPath;if(!n||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.object!==e.node||!Xt(n.node,t)||n.node.computed||!x.isIdentifier(n.node.property))return null;let r=ie(n.node);return r?{propertyName:n.node.property.name,range:r}:null}function Jg(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()&&x.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=lo(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 Xg(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 cu(e){try{let n=ns.parse(`const __VD_EXPR__ = (${e});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],r=x.isVariableDeclaration(n)?n.declarations[0]?.init:null;return r&&x.isExpression(r)?r:null}catch{return null}}function Hg(e){let t=ie(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||Xt(s.path.node,t))return;let a=Vl(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let u=Vl(c,e.targetFile,e.targetFile);(!u||u.moduleFile!==a.moduleFile||!zg(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 os(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 zg(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 Vl(e,t,n){let r=Wg(e),o=r?.parentPath;if(!r||!o?.isImportDeclaration())return null;let i=o.node.source.value;if(typeof i!="string")return null;let s=Hn(t,i),a=i.startsWith(".")?Gi(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=x.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 Wg(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function Hn(e,t){return t.startsWith("@/")?t.slice(2).replace(/\\/g,"/"):t.startsWith(".")?mt.normalize(mt.join(mt.dirname(e),t)).replace(/\\/g,"/"):t}function Ge(e,t){return qi(e)===qi(t)}function qi(e){let t=Kn(e);return t.endsWith("/index")?t.slice(0,-6):t}function Kn(e){return e.replace(/\.(tsx|ts|jsx|js)$/,"")}function ss(e){let t=[],n=r=>{if(r){if(x.isIdentifier(r)){t.push(r.name);return}if(x.isObjectPattern(r)){for(let o of r.properties){if(x.isRestElement(o)){n(o.argument);continue}x.isObjectProperty(o)&&n(o.value)}return}if(x.isArrayPattern(r)){for(let o of r.elements)n(o);return}if(x.isAssignmentPattern(r)){n(r.left);return}if(x.isRestElement(r)){n(r.argument);return}x.isTSParameterProperty(r)&&n(r.parameter)}};return n(e),t}function Yg(e){let t=[];for(let n of e.callbackPath.node.params){if(x.isIdentifier(n)){t.push(n.name);continue}if(x.isRestElement(n)&&x.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 Gg(e,t){return{...e,callbackParams:t}}function Ul(e,t){return`${e.collectionNeedsParens?`(${e.collectionExpression})`:e.collectionExpression}${e.mapOperator}((${e.callbackParams.join(", ")}) => ${t})`}function as(e){return!(x.isIdentifier(e)||x.isThisExpression(e)||x.isMemberExpression(e)||x.isOptionalMemberExpression(e)||x.isCallExpression(e)||x.isOptionalCallExpression(e))}function lu(e,t){return uu(e,t).length>0}function zi(e,t){let n=ie(e.node),r=ie(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()&&!Zg(o,n,r)))return!0;o=o.parentPath}return!1}function Zg(e,t,n){let r=ie(e.node.consequent);if(r&&Ye(r,t)&&!Ye(r,n))return!1;let o=e.node.alternate?ie(e.node.alternate):null;return!(o&&Ye(o,t)&&!Ye(o,n))}function uu(e,t){let n=ie(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=ie(o.node.consequent),a=ie(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()&&du(o.node.operator)){let s=ie(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 $l(e,t,n,r){let o=uu(t,n);if(o.length===0)return{sourceJsx:r,conditionPaths:[]};let i=r,s=[];for(let a of o){let c=lo(e,a.conditionPath.node);if(!c)return{sourceJsx:r,conditionPaths:[]};let l=Qg(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${ey(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function Qg(e,t){return qg(e.node)?t:`(${t})`}function qg(e){return x.isIdentifier(e)||x.isThisExpression(e)||x.isSuper(e)||x.isMemberExpression(e)||x.isOptionalMemberExpression(e)||x.isCallExpression(e)||x.isOptionalCallExpression(e)||x.isBooleanLiteral(e)||x.isNumericLiteral(e)||x.isStringLiteral(e)||x.isNullLiteral(e)||x.isUnaryExpression(e)}function du(e){return e==="&&"||e==="||"||e==="??"}function ey(e){return e.trim().startsWith("<")?e:`(${e})`}function fu(e,t){let n=ie(e.node),r=ie(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=Kl(e),i=Kl(t);if(!o||!i||!ty(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=ny(s.node,n);if(a&&!Ye(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=ie(s.node.right);if(a&&Ye(a,n)&&!Ye(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())&&ry(s)){let a=ie(s.node.body)??ie(s.node);if(a&&!Ye(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 Kl(e){let t=e;for(;t;){if(t.isReturnStatement())return t.node.argument?ie(t.node.argument):null;if(t.isArrowFunctionExpression()&&(x.isJSXElement(t.node.body)||x.isJSXFragment(t.node.body)||x.isConditionalExpression(t.node.body)||x.isLogicalExpression(t.node.body)))return ie(t.node.body);t=t.parentPath}return null}function ty(e,t){return e.start===t.start&&e.end===t.end}function ny(e,t){let n=ie(e.consequent);if(n&&Ye(n,t))return n;let r=ie(e.alternate);return r&&Ye(r,t)?r:null}function ry(e){let t=e.parentPath;if(!t||!t.isCallExpression()&&!t.isOptionalCallExpression()||t.node.arguments[0]!==e.node)return!1;let n=t.node.callee;return(x.isMemberExpression(n)||x.isOptionalMemberExpression(n))&&x.isIdentifier(n.property)&&n.property.name==="map"&&!n.computed}var oy={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 ao(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=oy[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 iy(e,t){for(let n of e.program.body){if(!x.isImportDeclaration(n)||n.source.value!==t)continue;let r=n.specifiers.find(o=>x.isImportDefaultSpecifier(o));if(r&&x.isImportDefaultSpecifier(r))return r.local.name}return null}function sy(e,t,n){for(let r of e.program.body){if(!x.isImportDeclaration(r)||r.source.value!==t)continue;let o=r.specifiers.find(i=>x.isImportSpecifier(i)&&(x.isIdentifier(i.imported)?i.imported.name:i.imported.value)===n);if(o&&x.isImportSpecifier(o))return o.local.name}return null}function Jl(e){let t=new Set;return At(e,{Program(n){for(let r of Object.keys(n.scope.bindings))t.add(r);n.stop()}}),t}function Xl(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function ay(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=rs(e),o=Ue(t);if(n.exportName!=="default"){let a=o?sy(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?Xl(r,Jl(o)):r;return{localName:c,importStep:Wi(e,c)}}if(!o)return{localName:r,importStep:Wi(e,r)};let i=iy(o,n.source);if(i)return{localName:i};let s=Xl(r,Jl(o));return{localName:s,importStep:Wi(e,s)}}function cy(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??rs(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 ly(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?uy(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function uy(e){return Object.fromEntries(Object.entries(e).filter(t=>es(t[1])))}function es(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(es):typeof e=="object"?Object.values(e).every(es):!1}function dy(e,t){let n=Ue(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=Gl({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 Wi(e,t=rs(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 Hl(e,t){if("kind"in e)return{parentNode:null,anchorNode:null,placement:e.relation};if("parentKey"in e)return{parentNode:t.getNode(e.parentKey),anchorNode:null,placement:e.relation};let n=t.getNode(e.anchorKey);return{parentNode:n?.parentKey?t.getNode(n.parentKey)??n:n,anchorNode:n,placement:e.relation}}function fy(e,t,n){let r=e;for(;r;){if(r===t)return!0;r=n.getNode(r)?.parentKey}return!1}function $n(e,t){return`Operation kind '${e}' does not match params.kind '${t}'`}function cs(e,t=e.path){return{kind:"value",root:e.root,path:t&&t.length>0?t:void 0,expectedRange:e.expectedRange}}function Jn(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:cs(e,t.slice(0,n)),index:r.index}}return null}function Yi(e,t){return e.locator?e.collectionPathMap?.[t]?cs(e.locator,e.collectionPathMap[t]):Jn(e.locator)?my(e.locator,hy(t,e.collectionIndexMap)):null:null}function py(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:pu(o,t)}function pu(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=pu(r,t);return o===void 0?void 0:{[n.name]:o}}function co(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 my(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},cs(e,i)}return null}function hy(e,t){return t?.[e]??e}function zl(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 gy(e,t){return yy(e.root,t.root)&&Ey(e.path??[],t.path??[])}function yy(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&&xy(e.sourceRange,t.sourceRange)}}function xy(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function ts(e,t){let n=null;return At(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 Ey(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 uo=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:$n(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:$n(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:$n(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:$n(t.kind,t.params.kind)};let r=t;if(!io(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=Hl(r.params.position,this.graph);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:$n(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planMoveNode(n,r,i,this.graph.getCapability(i.key))}case"set-class-name-source":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:this.planNodeAttributeOperation(n,t,r.node)}case"set-props":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planSetProps(n,t,r.node)}case"apply-style-draft":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planApplyStyleDraft(n,t,r.node)}default:return{ok:!1,errorCode:"unknown",reason:`Unknown operation kind: ${t.kind}`}}}resolveNodeRequest(t){let n=mg(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.routeId&&n.routeId&&n.params.routeId!==n.routeId?{ok:!1,errorCode:"stale-version",reason:"The className source route changed before save."}: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.buildSetPropsSteps({initialOrder:0,node:r,props:n.params.props,request:n});return i.ok?this.buildPlan(t,n,i.steps,o):i}async planApplyStyleDraft(t,n,r){let o=r.file,i=this.graph.getCapability(r.key),s=[];if(n.params.className){if(n.params.className.filePath!==o)return{ok:!1,errorCode:"stale-version",reason:"The className source file changed before save."};s.push({order:s.length,file:o,type:"set-class-name-source",request:{kind:"set-class-name-source",...n.params.className,key:r.key}})}if(n.params.props){let a=await this.buildSetPropsSteps({initialOrder:s.length,node:r,props:n.params.props,request:n});if(!a.ok)return a;s.push(...a.steps)}return this.buildPlan(t,n,s,i)}async buildSetPropsSteps(t){let{initialOrder:n,node:r,props:o,request:i}=t,s=r.file,a=[],c={};for(let[l,u]of Object.entries(o)){if(u===void 0)continue;let d=await this.graph.getElementPropertyWriteTarget?.(r.key,l),p=r.attributes?.find(m=>m.name===l);if(!(typeof p?.resolvedValue=="string"&&p.resolvedValue===u||p?.source===null&&p.value===u)){if(d?.kind==="external-entry")return{ok:!1,errorCode:"capability-denied",reason:`set-props cannot overwrite readonly external property '${l}'`};if(d?.kind==="value-binding"&&d.locator){let m=d.locator;if(d.sourceKind==="repeat-template"&&typeof i.selectionRef?.instanceIndex=="number"){let E=Yi(d,i.selectionRef.instanceIndex);if(!E)return{ok:!1,errorCode:"invalid-params",reason:"set-props could not resolve the selected repeat item"};m=E}a.push({order:n+a.length,file:d.file,type:"update-value",locator:m,value:u});continue}c[l]=u}}return Object.keys(c).length>0&&a.push({order:n+a.length,file:s,type:"set-props",locator:le(r),props:c}),{ok:!0,steps:a}}buildTextRewriteSteps(t,n,r,o,i){if(o?.kind==="value-binding"&&o.locator){if(o.sourceKind==="repeat-template"&&typeof i?.instanceIndex=="number"){let a=Yi(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:le(t),segmentIndex:n,newText:r}]}}coerceTextValueForValueTarget(t,n,r,o="update-text"){let i=this.graph.getFileContent(t),s=Ue(i);if(!s)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not inspect the value source`};let a=te(s,n);if(!a.ok)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not resolve the value source`};if(!gg(a.match.path))return{ok:!0,value:r};let c=yg(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=Yi(o,i);if(!c)return{ok:!1,errorCode:"invalid-params",reason:"update-array-item could not resolve the selected repeat item"};let l=this.coerceTextValueForValueTarget(o.file,c,s,"update-array-item");return l.ok?this.isValueTargetUnchanged(o.file,c,l.value)?{ok:!1,errorCode:"invalid-params",reason:"update-array-item value is unchanged"}:this.buildPlan(t,n,[{order:0,file:o.file,type:"update-array-item",locator:c,value:l.value}],r):l}isValueTargetUnchanged(t,n,r){let o=Ue(this.graph.getFileContent(t));if(!o)return!1;let i=te(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){if(!o.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update text on this node"};let s=this.buildTextRewriteSteps(r,n.params.segmentIndex,n.params.value,i,n.selectionRef);return s.ok?this.buildPlan(t,n,s.steps,o):s}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 d=i;if(d?.kind==="value-binding"&&d.locator){let p=Jn(d.locator);if(p)return this.buildPlan(t,n,[{order:0,file:d.file,type:"remove-bound-array-item",locator:p.locator,index:p.index}],o)}return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed node removal requires a writable array target"}}let s=co(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:le(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||dy(n,t)>1)return null;let r=Gi(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(!io(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=co(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 d=await this.planRepeatBackedInsertChild(t,n,r,o);if(d)return d;let p=this.getRepeatBackedTemplateStructureReason(r);if(p)return{ok:!1,errorCode:"unsupported-operation",reason:p};let m=Rl(this.graph.getFileContent(r.file),r);if(!m.allowed)return{ok:!1,errorCode:"unsupported-operation",reason:m.reason??"Cannot insert child into this node"};let E=ao(r,n.params.node);if(E)return{ok:!1,errorCode:"unsupported-operation",reason:E};let b=[],v=0,C=n.params.node.kind==="component-call"?ay(n.params.node,this.graph.getFileContent(r.file)):void 0,A=C?.importStep;return A&&b.push({order:v++,file:r.file,type:"add-import",moduleSpecifier:A.moduleSpecifier,imports:A.imports}),b.push({order:v++,file:r.file,type:"insert-child",parentLocator:le(r),node:{jsx:cy(n.params.node,C?.localName)},placement:n.params.position.relation,anchorLocator:i?le(i):void 0}),this.buildPlan(t,n,b,o)}async planExternalBackedInsertChild(t,n,r,o,i,s){if(!io(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:ly(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(!io(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(d=>d.isRepeatItemRoot&&d.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=Jn(a.locator);if(!c)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires an array-backed target"};let l=py(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"?zl(0,a.collectionIndexMap):zl(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=co(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 this.isRepeatTemplateRootNode(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:")||this.isInsideMapCallback(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}isRepeatTemplateRootNode(t){let n=Ue(this.graph.getFileContent(t.file));if(!n)return t.isRepeatItemRoot===!0;let r=te(n,le(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:ts(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=pt(this.graph.getFileContent(t.file),o);return i?Eg(o,i):t.isRepeatItemRoot===!0}isInsideMapCallback(t){let n=Ue(this.graph.getFileContent(t.file));if(!n)return!1;let r=te(n,le(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:ts(n,t);return o?!!o.findParent(i=>{if(!i.isCallExpression()&&!i.isOptionalCallExpression())return!1;let s=i.node.callee;return(x.isMemberExpression(s)||x.isOptionalMemberExpression(s))&&x.isIdentifier(s.property)&&s.property.name==="map"}):!1}planRepeatTemplateInternalMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ue(c);if(!l)return null;let u=Ct(l,r),d=Ct(l,o);if(!u||!d)return null;let p=pt(c,u),m=pt(c,d);if(!so(p,m))return null;if(a&&(s==="before"||s==="after")){let b=Ct(l,a),v=b?pt(c,b):null;if(!so(p,v))return null}if(zi(u,d))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let E=Ml(c,r,o);return E.ok?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:le(r),targetParentLocator:le(o),placement:s,anchorLocator:a?le(a):void 0,selectionContext:xn(o)}],i):{ok:!1,errorCode:"unsupported-operation",reason:E.reason??`Cannot move node because it depends on bindings outside the target scope: ${E.bindingNames.join(", ")}`}}planRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ue(c);if(!l)return null;let u=Ct(l,r),d=Ct(l,o);if(!u||!d)return null;let p=pt(c,u);if(!p)return null;let m=pt(c,d);if(so(p,m))return null;if(m&&!Ig(m,p))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child into a different repeat template"};if(a&&(s==="before"||s==="after")){let N=Ol(c,l,a);if(m&&!so(m,N)||!m&&N)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 N=ao(o,{kind:"native-tag",tag:r.tag});if(N)return{ok:!1,errorCode:"unsupported-operation",reason:N}}let E=Xi(this.graph,r);if(!E)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(zi(u,d))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let b=$l(c,u,d,E);for(let N of b.conditionPaths){let G=Ll(N,d,p);if(!G.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${G.bindingNames.join(", ")}`}}let v=Dl(u,d,p,{preserveConditionalBoundary:b.conditionPaths.length>0});if(!v.ok)return{ok:!1,errorCode:"unsupported-operation",reason:v.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${v.bindingNames.join(", ")}`};let C=kg(p,d);if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its callback parameters depend on bindings outside the target scope: ${C.bindingNames.join(", ")}`};let A=p;if(r.component!==o.component){let N=Cg({source:c,ast:l,sourceContext:p,sourceNode:r,targetParent:o,targetParentPath:d});if(!N.ok)return{ok:!1,errorCode:"unsupported-operation",reason:N.reason};A=N.context}else{let N=Yl(p.collectionPath,d);if(!N.ok)return{ok:!1,errorCode:"unsupported-operation",reason:N.reason??`Cannot move repeat-backed child because the repeat collection is not visible at the target: ${N.bindingNames.join(", ")}`}}return this.buildPlan(t,n,[{order:0,file:r.file,type:"move-repeat-template-child",locator:le(r),targetParentLocator:le(o),placement:s,anchorLocator:a?le(a):void 0,repeatExpression:Ul(A,b.sourceJsx),selectionContext:xn(o)}],i)}planCrossFileRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r)||r.file===o.file)return null;let c=this.graph.getFileContent(r.file),l=this.graph.getFileContent(o.file),u=Ue(c),d=Ue(l);if(!u||!d)return null;let p=Pg({knownSourceFiles:this.graph.getKnownSourceFiles?.(),routeEntryFiles:this.graph.getRouteEntryFiles?.(),sourceAst:u,sourceFile:r.file,targetFile:o.file,sourceComponent:r.component,targetComponent:o.component});if(!p.ok)return{ok:!1,errorCode:"unsupported-operation",reason:p.reason};let m=Ct(u,r),E=Ct(d,o);if(!m||!E)return null;let b=fu(p.callSitePath,E);if(!b.ok)return{ok:!1,errorCode:"unsupported-operation",reason:b.reason};let v=pt(c,m);if(!v)return null;if(pt(l,E))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child into a different repeat template"};if(a&&(s==="before"||s==="after")&&Ol(l,d,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 D=ao(o,{kind:"native-tag",tag:r.tag});if(D)return{ok:!1,errorCode:"unsupported-operation",reason:D}}let A=Xi(this.graph,r);if(!A)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(zi(m,E))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let N=$l(c,m,E,A);for(let D of N.conditionPaths){let L=Ll(D,E,v);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 G=Dl(m,E,v,{preserveConditionalBoundary:N.conditionPaths.length>0});if(!G.ok)return{ok:!1,errorCode:"unsupported-operation",reason:G.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${G.bindingNames.join(", ")}`};let fe=Hg({sourceFile:r.file,targetFile:o.file,sourceContext:v,targetParentPath:E});if(!fe.ok)return{ok:!1,errorCode:"unsupported-operation",reason:fe.reason};let ue=Yg(v);if(!ue.ok)return{ok:!1,errorCode:"unsupported-operation",reason:ue.reason};let R=Gg(v,ue.callbackParams),_=[{order:0,file:r.file,type:"remove-node",locator:le(r),removeWhitespace:!0}];for(let D of fe.imports)_.push({order:_.length,file:o.file,type:"add-import",moduleSpecifier:D.moduleSpecifier,imports:D.imports});return _.push({order:_.length,file:o.file,type:"insert-jsx-expression-child",parentLocator:le(o),expression:Ul(R,N.sourceJsx),placement:s,anchorLocator:a?le(a):void 0,selectionContext:xn(o)}),this.buildPlan(t,n,_,i)}async planMoveNode(t,n,r,o){if(!o.canMove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move this node"};let i=Hl(n.params.target,this.graph),s=i.parentNode;if(!s)return{ok:!1,errorCode:"locator-miss",reason:`Target parent for request '${n.id}' not found in graph`};if(fy(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 a=await this.graph.getTextWriteTarget(r.key,0);if(a?.kind==="external-entry"){let C=n.params.target.relation,A=i.anchorNode&&(C==="before"||C==="after")?await this.graph.getTextWriteTarget(i.anchorNode.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:"move-node",value:{operation:"move-node",relation:C,anchorSourceId:A?.kind==="external-entry"?A.sourceId:null,parentKey:"parentKey"in n.params.target?n.params.target.parentKey:null}}],o)}let c=r.file!==s.file,l=n.params.target.relation,u=i.anchorNode,d=co(r,a,this.graph.getTextProvenance?.(r.key,0)??null);if(d&&!Hi(d))return{ok:!1,errorCode:"unsupported-operation",reason:d};if(r.isRepeatItemRoot&&u?.isRepeatItemRoot&&r.repeatOwnerKey&&r.repeatOwnerKey===u.repeatOwnerKey&&(l==="before"||l==="after")){let C=a,A=await this.graph.getTextWriteTarget(u.key,0);if(C?.kind==="value-binding"&&A?.kind==="value-binding"&&C.locator&&A.locator){let N=Jn(C.locator),G=Jn(A.locator);if(N&&G&&C.file===A.file&&gy(N.locator,G.locator)){let fe=N.index,ue=G.index,R=l==="before"?ue-(fe<ue?1:0):ue+(fe<ue?0:1);return this.buildPlan(t,n,[{order:0,file:C.file,type:"move-array-item",locator:N.locator,fromIndex:fe,toIndex:R}],o)}}}if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed item outside its collection"};let p=this.getRepeatBackedTemplateStructureReason(r),m=Hi(d)?d:p;if(m&&Hi(m)){let C=this.planRepeatTemplateInternalMove(t,n,r,s,o,l,u);if(C)return C;let A=this.planRepeatTemplateHoistMove(t,n,r,s,o,l,u);if(A)return A;let N=this.planCrossFileRepeatTemplateHoistMove(t,n,r,s,o,l,u);return N||{ok:!1,errorCode:"unsupported-operation",reason:m}}if(p)return{ok:!1,errorCode:"unsupported-operation",reason:p};let E=await this.getUpstreamBackedDescendantReason(r);if(E)return{ok:!1,errorCode:"unsupported-operation",reason:E};if(r.tag&&r.tag.toLowerCase()===r.tag){let C=ao(s,{kind:"native-tag",tag:r.tag});if(C)return{ok:!1,errorCode:"unsupported-operation",reason:C}}if(c)return this.planCrossFileMove(t,n,r,s,o,l,u);let b=Ml(this.graph.getFileContent(r.file),r,s);if(!b.ok)return{ok:!1,errorCode:"unsupported-operation",reason:b.reason??`Cannot move node because it depends on bindings outside the target scope: ${b.bindingNames.join(", ")}`};let v=[{order:0,file:r.file,type:"move-node",locator:le(r),targetParentLocator:le(s),placement:l,anchorLocator:u?le(u):void 0,selectionContext:xn(s)}];return this.buildPlan(t,n,v,o)}planCrossFileMove(t,n,r,o,i,s,a){let c=[],l=0,u=this.graph.getFileContent(r.file),d=Xi(this.graph,r)??`<${r.component} />`,p=Pl(u,r);if(!p.allowed)return{ok:!1,errorCode:"unsupported-operation",reason:p.reason??"Cannot move subtree across files"};if(c.push({order:l++,file:r.file,type:"remove-node",locator:le(r),removeWhitespace:!0}),r.importedFrom&&r.exportName){let E=r.tag??r.component,v={moduleSpecifier:Gi(o.file,r.importedFrom),imports:r.exportName==="default"?[{kind:"default",local:E}]:[{kind:"named",imported:r.exportName,local:E===r.exportName?void 0:E}]};c.push({order:l++,file:o.file,type:"add-import",moduleSpecifier:v.moduleSpecifier,imports:v.imports}),c.push({order:l++,file:o.file,type:"insert-child",parentLocator:le(o),node:{jsx:d},placement:s,anchorLocator:a?le(a):void 0,selectionContext:xn(o)})}else c.push({order:l++,file:o.file,type:"insert-child",parentLocator:le(o),node:{jsx:d},placement:s,anchorLocator:a?le(a):void 0,selectionContext:xn(o)});let m=this.buildRemoveComponentImportStep(r,u);return m&&c.push({...m,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:ae(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}}}};import zn from"node:path";import*as vu from"@babel/parser";import ls from"@babel/traverse";import*as S from"@babel/types";var Cu=typeof ls=="function"?ls:ls.default;function Ru(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}var mu=new WeakMap;function hu(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 Pu(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=bs(s,t,n);if(!a)return null;let c=Is(a,r.sourceRange);if(!c)return null;let l=r.source??await qe({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:o,exists:i,fileCache:s,visited:new Set});if(!l){let m=await As({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});if(!m)return null;if(m.kind==="external")return{kind:"external-entry",file:m.file,sourceType:m.sourceType,sourceId:m.sourceId,adapterId:m.adapterId,displayExpression:m.displayPath};let E={kind:"value",root:m.root,path:m.path.length>0?m.path:[]};return{kind:"value-binding",file:m.file,locator:E,root:m.root,path:m.path,displayExpression:m.displayExpression??Gn(c.node,n),sourceKind:m.sourceKind,...m.collectionIndexMap?{collectionIndexMap:m.collectionIndexMap}:{},...m.collectionPathMap?{collectionPathMap:m.collectionPathMap}:{}}}let u=new Set,d=await zy({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});if(!d)return null;if(d.kind==="external")return{kind:"external-entry",file:d.file,sourceType:d.sourceType,sourceId:d.sourceId,adapterId:d.adapterId,displayExpression:d.displayPath};let p={kind:"value",root:d.root,path:d.path.length>0?d.path:[]};return{kind:"value-binding",file:d.file,locator:p,root:d.root,path:d.path,displayExpression:d.displayExpression??l.expression,sourceKind:d.sourceKind,...d.collectionIndexMap?{collectionIndexMap:d.collectionIndexMap}:{},...d.collectionPathMap?{collectionPathMap:d.collectionPathMap}:{}}}async function wu(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=bs(i,t,n);if(!s)return null;let a=e.expression!==void 0?(e.sourceRange?Fu(s,n,e.expression,e.sourceRange):null)??Cs(s,n,e.expression):e.sourceRange?Is(s,e.sourceRange):null;if(!a)return null;let c=ky(a),l=new Set,u=e.sourceInfo??await qe({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:r,exists:o,fileCache:i,visited:l}),d=u?await Oe({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 ax({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 Iy(d,e.expression??Gn(c.node,n))}async function Ss(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=bs(i,t,n);if(!s)return Me("unsupported-expression","Unable to parse source for provenance resolution");let a=new Set;return e.target.kind==="text-segment"?vy({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}):Cy({file:t,source:n,ast:s,candidate:e.target.candidate,readFile:r,exists:o,graph:e.graph,fileCache:i,visited:a})}function Au(e){try{return vu.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function bs(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=Au(n);return e.set(t,{source:n,ast:o}),o}function Is(e,t){let n=null,r=-1;for(let o of Yn(e).expressions){let i=o.node.loc;if(!i||!ks(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s>=r&&(n=o,r=s)}return n}function Sy(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of Yn(e).expressions){if(!by(o.node.loc,t))continue;let i=(o.node.end??0)-(o.node.start??0);i<=r&&(n=o,r=i)}return n}function Nu(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of Yn(e).jsxElements){let i=o.node.loc;if(!i||!ks(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s<=r&&(n=o,r=s)}return n}function Yn(e){let t=mu.get(e);if(t)return t;let n={expressions:[],jsxElements:[]};return Cu(e,{Expression(r){n.expressions.push(r)},JSXElement(r){n.jsxElements.push(r)}}),mu.set(e,n),n}function by(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 ks(e,t){let n=gu({line:e.start.line,column:e.start.column},{line:t.startLine,column:t.startColumn}),r=gu({line:e.end.line,column:e.end.column},{line:t.endLine,column:t.endColumn});return n>=0&&r<=0}function Tu(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 gu(e,t){return e.line!==t.line?e.line<t.line?-1:1:e.column!==t.column?e.column<t.column?-1:1:0}async function qe(e){if(S.isIdentifier(e.expression))return{kind:"identifier",expression:e.expression.name,base:e.expression.name,path:[]};if(!S.isMemberExpression(e.expression))return null;let t=await Ku(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:Gn(e.expression,e.source),base:t.base,path:t.path}:null}function Iy(e,t){if(!e)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}:{}}}function ky(e){if(e.isLogicalExpression()&&(e.node.operator==="||"||e.node.operator==="??")){let t=e.get("left");if(!Array.isArray(t)&&t.isExpression())return t}return e}function Gn(e,t){if(t)return vs(e,t);let n=gx(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function vs(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function Cs(e,t,n){let r=null,o=Number.POSITIVE_INFINITY;for(let i of Yn(e).expressions){if(vs(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function Fu(e,t,n,r){let o=null,i=Number.POSITIVE_INFINITY;for(let s of Yn(e).expressions){if(vs(s.node,t)!==n)continue;let a=s.node.loc;if(!a||!ks(a,r))continue;let c=(s.node.end??0)-(s.node.start??0);c<=i&&(o=s,i=c)}return o}async function vy(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=Is(r,o.sourceRange),u=o.source??(l?await qe({expression:l.node,scope:l.scope,source:n,currentFile:t,readFile:i,exists:s,fileCache:a,visited:c}):null);if(!u){if(!l)return Ry(t,o.value);let p=await As({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 p?p.kind==="external"?bu(t,p):hs(t,Gn(l.node,n),p):Py({expression:l.node,scope:l.scope,currentFile:t,source:n,readFile:i,exists:s,fileCache:a,visited:c,functionCallContracts:e.functionCallContracts})}if(!l)return Me("unsupported-expression","Unable to locate text expression for provenance resolution");let d=await Oe({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(!d){let p=ms(l.node);if(p)return Me(p.code,p.message);let m=l.scope.getBinding(u.base);if(m?.path.isVariableDeclarator()){let E=ms(m.path.node.init);if(E)return Me(E.code,E.message)}return m?.path.isVariableDeclarator()&&S.isCallExpression(m.path.node.init)?wy("unsupported-expression",Lu(m.path.node.init,e.functionCallContracts)):Me("unsupported-expression",`Unable to resolve provenance for expression "${u.expression}"`)}return d.kind==="external"?bu(t,d):hs(t,u.expression,d)}async function Cy(e){let{file:t,source:n,ast:r,candidate:o,readFile:i,exists:s,fileCache:a,visited:c}=e;if(!o.conditionSource)return Me("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let l=Cs(r,n,o.conditionExpression);if(!l)return Me("conditional-branch-unresolved",`Unable to locate conditional expression "${o.conditionExpression}"`);let u=await Oe({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 Me("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);if(u.kind==="external")return Me("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let d=hs(t,o.conditionExpression,u);return d.finalSource?{...d,finalSource:{...d.finalSource,kind:"conditional-branch",displayPath:o.conditionExpression},chain:[...d.chain,{kind:"conditional-branch",file:u.file,displayName:o.conditionExpression,canEditHere:!0}]}:d}function Ry(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 Py(e){let t=await Ou(e);if(t.length===0)return Me("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(Ay(e.expression))return Mu(t);if(Du(e.expression))return Me("unsupported-expression","i18n helpers require a static message id string");if(S.isMemberExpression(e.expression)&&e.expression.computed&&!S.isNumericLiteral(e.expression.property)&&!S.isStringLiteral(e.expression.property))return Me("dynamic-key","Computed member expressions are not supported for provenance resolution");let[n]=t;return Me(n.code,n.message)}function Me(e,t){return{finalSource:null,chain:[],confidence:"unknown",editMode:"unsupported",diagnostics:[{code:e,message:t}]}}function wy(e,t){return Mu([{code:e,message:t}])}function Mu(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function Ay(e){return S.isCallExpression(e)||S.isConditionalExpression(e)||S.isLogicalExpression(e)||S.isBinaryExpression(e)}function Wn(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 Ou(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=ms(t);if(l)return[l];if(S.isCallExpression(t))return[{code:"unsupported-expression",message:Lu(t,c)}];if(S.isMemberExpression(t)&&t.computed){let u=t.property;if(!S.isNumericLiteral(u)&&!S.isStringLiteral(u)){if(!S.isExpression(u))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}];let p=await et(u,n,r,o,i,s,a);if(typeof p!="string"&&!Number.isInteger(p))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}]}}return S.isBinaryExpression(t)?Wn([...await us(t.left,t.right,e),{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]):S.isLogicalExpression(t)?Wn([...await us(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"}]):S.isConditionalExpression(t)?Wn([...await us(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 ms(e){return Du(e)?yu("i18n helpers require a static message id string"):Oy(e)?yu("CMS helpers require static entry id and field path string arguments"):null}async function us(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await Ou({...t,expression:o}));return r}function Ny(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:[Ty(e.sourceType)]}}async function Rs(e){for(let n of jy){if(!xu(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return Su(Eu(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(!xu(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return Su(Eu(r),e.externalAdapters)}return null}function Ty(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function Fy(e){return{code:"external-source-readonly",message:e}}function yu(e){return{code:"unsupported-expression",message:e}}function Ps(e){return!e||!S.isCallExpression(e)?null:S.isIdentifier(e.callee)?e.callee.name:S.isMemberExpression(e.callee)&&!e.callee.computed&&S.isIdentifier(e.callee.object)&&S.isIdentifier(e.callee.property)?`${e.callee.object.name}.${e.callee.property.name}`:null}function xu(e,t){if(!t||t.length===0)return!0;let n=Ps(e.node);return n?t.includes(n):!1}function Eu(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:Wn(e.diagnostics??[])}:{match:e,diagnostics:[]}}function Su(e,t){let n=Ny(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:Wn([...e.diagnostics,...e.editMode==="readonly"||n.editMode==="readonly"?n.diagnostics:[]])}}function My(e){if(!e.isCallExpression())return null;let t=e.node.callee;if(!S.isIdentifier(t)||t.name!=="getCmsField")return null;let[n,r]=e.node.arguments;if(!n||!r||!S.isStringLiteral(n)||!S.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 Oy(e){return!!e&&S.isCallExpression(e)&&S.isIdentifier(e.callee)&&e.callee.name==="getCmsField"&&(e.arguments.length<2||!S.isStringLiteral(e.arguments[0])||!S.isStringLiteral(e.arguments[1]))}function _u(e){if(!(!e||!S.isCallExpression(e))){if(S.isIdentifier(e.callee)&&e.callee.name==="t"){let[t]=e.arguments;return t&&S.isStringLiteral(t)?t.value:null}if(S.isMemberExpression(e.callee)&&!e.callee.computed&&S.isIdentifier(e.callee.object)&&e.callee.object.name==="intl"&&S.isIdentifier(e.callee.property)&&e.callee.property.name==="formatMessage"){let[t]=e.arguments;if(!t||!S.isObjectExpression(t))return null;for(let n of t.properties)if(S.isObjectProperty(n)&&!n.computed&&(S.isIdentifier(n.key)&&n.key.name==="id"||S.isStringLiteral(n.key)&&n.key.value==="id")&&S.isStringLiteral(n.value))return n.value.value;return null}}}function Du(e){return _u(e)===null}async function _y(e,t,n){let r=new Set,o=zn.posix.dirname(e);for(;r.add(o),!(o==="."||o==="/");){let i=zn.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"]:[zn.posix.join(i,"locales"),zn.posix.join(i,"messages")];for(let a of s){let c=zn.posix.join(a,`${t}.json`);if(await n(c))return c}}return null}async function Dy(e){let t=_u(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await _y(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function Ly(e){if(!e.expressionPath.isCallExpression())return null;let t=e.expressionPath.node.callee;if(!S.isIdentifier(t)||t.name!=="apiField")return null;let[n,r]=e.expressionPath.node.arguments;if(!n||!S.isExpression(n))return null;let o=await et(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:[Fy("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var jy=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>My(e)},{helperNames:["apiField"],resolve:e=>Ly(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>Dy({currentFile:e,expressionPath:t,exists:n})}];function bu(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 hs(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=Hy(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:!0}):n.sourceKind==="imported-binding"?c.push({kind:"imported-binding",file:n.file,displayName:n.root.kind==="named-export"?n.root.name:"default",canEditHere:!0}):n.sourceKind==="repeat-template"&&c.push({kind:"repeat-template",file:n.file,displayName:t,canEditHere:!0}),n.path.length>0&&n.sourceKind!=="repeat-template"&&c.push({kind:o?"array-item":"object-field",file:n.file,displayName:a,canEditHere:!0}),i&&c.push({kind:"config-entry",file:n.file,displayName:i.displayPath,canEditHere:!0}),{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:c,confidence:n.sourceKind==="repeat-template"?"safe-derived":"exact",editMode:n.editMode??(n.file===e?"direct":"proxy"),diagnostics:n.diagnostics??[]}}var By=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function ws(e,t){let n=[...By,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function Lu(e,t){let n=e.callee;return S.isIdentifier(n)&&ws(n.name,t)?.purity==="side-effect"?`Helper "${n.name}" is registered as side-effectful and remains readonly`:"Function calls are recognized but remain readonly until a pure-call strategy is registered"}async function As(e){let t=await Rs(e);if(t)return t;let n=await ju({...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 qe({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 Oe({...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 Jy(e)}async function ju(e){let t=await Ze({...e,allowComposed:!1});return t?.kind==="source"?t.provenance:null}async function Ze(e){let t=Vy(e.expressionPath),n=Ky(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 qe({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 Oe({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 qe({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 Oe({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 Ze({...e,expressionPath:r,allowComposed:!0}),a=await Ze({...e,expressionPath:o,allowComposed:!1}),c=await Ze({...e,expressionPath:i,allowComposed:!1});return ds(s,a,c)}if(t.isCallExpression())return Uy({...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 Ze({...e,expressionPath:r,allowComposed:!0}),s=await Ze({...e,expressionPath:o,allowComposed:!0});return ds(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 Ze({...e,expressionPath:r,allowComposed:!0}),s=await Ze({...e,expressionPath:o,allowComposed:!0});return ds(i,s)}if(t.isUnaryExpression()){let r=t.get("argument");return Array.isArray(r)||!r.isExpression()?null:Ze({...e,expressionPath:r,allowComposed:!0})}return null}finally{n&&e.visited.delete(n)}}function Vy(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 Uy(e){let t=Ps(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:Ze({...e,expressionPath:r,allowComposed:!1})}let n=e.expressionPath.get("callee");if(n.isMemberExpression()&&!n.node.computed){let r=n.node.property;if(S.isIdentifier(r)&&(r.name==="toFixed"||r.name==="toString")){let o=n.get("object");return Array.isArray(o)||!o.isExpression()?null:Ze({...e,expressionPath:o,allowComposed:!1})}}return null}function ds(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!$y(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function $y(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 Ky(e,t){return t.start==null||t.end==null?null:`safe-derived:${e}:${t.start}:${t.end}`}async function Jy(e){if(!e.expressionPath.isCallExpression())return null;let t=Ps(e.expressionPath.node);if(!t)return null;let n=ws(t,e.functionCallContracts);if(!n||n.purity!=="pure")return null;let r=n.sourceArgIndex??0,o=e.expressionPath.get(`arguments.${r}`);return!o||Array.isArray(o)||!o.isExpression()?null:await Bu({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})}async function Bu(e){let t=await Rs({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 qe({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 Oe({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 As({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 Xy(e){if(!e.binding.path.isVariableDeclarator())return null;let t=e.binding.path.node.init;if(!t||!S.isCallExpression(t))return null;let n=t.callee;if(!S.isIdentifier(n))return null;let r=ws(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}`);return!s||Array.isArray(s)||!s.isExpression()?null:await Bu({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})}function Hy(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=po(t,e.path);return{sourceId:o,displayPath:o}}async function zy(e){let t=e.segment.source;return t?Oe({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 Oe(e){let t=e.sourceInfo,n=Vu(e.expressionPath,t.base);if(n){let l=await Uu({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 b=Yy(n.callPath,[...n.basePath,...t.path]);return Vn(b)?hu(e.currentFile,b.sourceId,b.displayPath):null}let u=yx(l,[...n.basePath,...t.path]),d=l.collectionIndexMap?.[0]??0,p=[...l.pathPrefix??[],{kind:"index",index:d},...n.basePath,...t.path],m=[{kind:"index",index:0},...n.basePath,...t.path];return Qe(l.value,m)===void 0?null:{kind:"value",file:l.file,root:l.root,path:u?.[0]??p,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 d=await tn(e.currentFile,u.node.source.value,e.exists);if(!d)return null;let p=await fo({file:d,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(!p||p.kind==="external")return null;let m=t.path.slice(1);return Qe(p.value,m)===void 0?null:{kind:"value",file:p.file,root:p.root,path:m,sourceKind:"imported-binding",collectionIndexMap:p.collectionIndexMap}}let o=Nl(r);if(o){let l=o.expressionPath,u=await qe({expression:l.node,scope:l.scope,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(u){let d=await Oe({...e,expressionPath:l,sourceInfo:{...u,expression:po(u.expression,t.path),path:[...u.path,...t.path]}});if(d)return d}if(t.path.length===0){let d=await ju({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(d)return d}}if(r.kind==="param")return fx({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 Xy({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=eo(r,t.path);if(Vn(s))return hu(e.currentFile,s.sourceId,s.displayPath);let a=await zt({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}function Vu(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=We(o,t);if(!i)return null;let s=r.parentPath;return!s||!s.isCallExpression()||!Wy(s,r)?null:{callPath:s,basePath:i}}function Wy(e,t){let n=e.node.callee;return!S.isMemberExpression(n)||!S.isIdentifier(n.property)||n.property.name!=="map"?!1:e.node.arguments.some(r=>r===t.node)}async function Uu(e){let{currentFile:t,callPath:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=n.node.callee;if(!S.isMemberExpression(a)||!S.isIdentifier(a.property)||a.property.name!=="map")return null;let c=n.get("callee");if(!c.isMemberExpression())return null;let l=c.get("object");if(Array.isArray(l)||!l.isExpression())return null;let u=await Zn({currentFile:t,expressionPath:l,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return!u||!Array.isArray(u.value)||u.value.length===0?null:u}function Yy(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:no(r,t)}async function Zn(e){let{currentFile:t,expressionPath:n,readFile:r,exists:o,fileCache:i,visited:s}=e;if(n.isIdentifier()){let a=n.scope.getBinding(n.node.name);if(!a)return null;let c=await zt({currentFile:t,binding:a,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return c?.kind==="static"?c:null}if(n.isCallExpression())return $u({currentFile:t,callPath:n,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(n.isTSAsExpression()||n.isTSSatisfiesExpression()||n.isTSNonNullExpression()){let a=n.get("expression");if(!Array.isArray(a)&&a.isExpression())return Zn({...e,expressionPath:a})}if(n.isArrayExpression()){let a=Tu(n.node);if(!a)return null;let c=await et(n.node,n.scope,t,r,o,i,s);return Array.isArray(c)?{kind:"static",file:t,root:{kind:"expression",sourceRange:a},value:c,sourceKind:"binding"}:null}if(n.isMemberExpression()){let a=await qe({expression:n.node,scope:n.scope,currentFile:t,readFile:r,exists:o,fileCache:i,visited:s});if(!a)return null;let c=await Oe({currentFile:t,expressionPath:n,sourceInfo:a,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(!c||c.kind==="external")return null;let l=await Gy({currentFile:t,expressionPath:n,provenance:c,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(!l||l.kind!=="static")return null;if(c.collectionPathMap?.length){let d=xx(l.value,c.collectionPathMap);if(d)return{kind:"static",file:c.file,root:c.root,value:d.value,sourceKind:c.sourceKind,collectionPathMap:d.collectionPathMap}}let u=Qe(l.value,c.path);return Array.isArray(u)?{kind:"static",file:c.file,root:c.root,value:u,sourceKind:c.sourceKind,pathPrefix:c.path,collectionIndexMap:c.collectionIndexMap,collectionPathMap:c.collectionPathMap}:null}return null}async function Gy(e){let{provenance:t}=e;if(t.root.kind==="binding"){let i=e.expressionPath.scope.getBinding(t.root.name);if(!i&&t.file!==e.currentFile){let s=await Nt(t.file,e.readFile,e.fileCache);i=s.ast?xs(s.ast).getBinding(t.root.name):void 0}return i?await zt({currentFile:t.file,binding:i,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}if(t.root.kind!=="expression")return null;let n=await Nt(t.file,e.readFile,e.fileCache);if(!n.ast)return null;let r=Sy(n.ast,t.root.sourceRange);if(!r)return null;let o=await et(r.node,r.scope,t.file,e.readFile,e.exists,e.fileCache,e.visited);return o===void 0?null:{kind:"static",file:t.file,root:t.root,value:o,sourceKind:t.sourceKind}}async function $u(e){return await Zy(e)??await Qy(e)??await qy(e)}async function Zy(e){let{callPath:t}=e,n=t.node.callee;if(!S.isMemberExpression(n)||!S.isIdentifier(n.property)||n.property.name!=="filter")return null;let r=t.get("callee");if(!r.isMemberExpression())return null;let o=r.get("object");if(Array.isArray(o)||!o.isExpression())return null;let i=await Zn({currentFile:e.currentFile,expressionPath: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});if(!i||!Array.isArray(i.value))return null;let[s]=t.node.arguments;if(!S.isArrowFunctionExpression(s)&&!S.isFunctionExpression(s))return null;let a=s.params[0];if(!S.isIdentifier(a))return null;let c=ex(s);if(!c)return null;let l=[],u=[],d=[];for(let[p,m]of i.value.entries()){let E=tx(c,a.name,m);if(typeof E!="boolean")return null;if(E){l.push(m),u.push(i.collectionIndexMap?.[p]??p);let b=i.collectionPathMap?.[p];b&&d.push(b)}}return{...i,value:l,pathPrefix:i.pathPrefix,collectionIndexMap:u,...d.length>0?{collectionPathMap:d}:{}}}async function Qy(e){let{callPath:t}=e,n=t.node.callee;if(!S.isMemberExpression(n)||!S.isIdentifier(n.property)||n.property.name!=="slice")return null;let r=t.get("callee");if(!r.isMemberExpression())return null;let o=r.get("object");if(Array.isArray(o)||!o.isExpression())return null;let i=await Zn({currentFile:e.currentFile,expressionPath: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});if(!i||!Array.isArray(i.value))return null;let[s,a]=t.node.arguments,c=Iu(s,0),l=Iu(a,i.value.length);if(c===null||l===null)return null;let u=Math.max(0,c<0?i.value.length+c:c),d=Math.max(0,l<0?i.value.length+l:l),p=i.value.map((E,b)=>i.collectionIndexMap?.[b]??b).slice(u,d),m=i.collectionPathMap?.slice(u,d);return{...i,value:i.value.slice(u,d),pathPrefix:i.pathPrefix,collectionIndexMap:p,...m?{collectionPathMap:m}:{}}}function Iu(e,t){return e?S.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}async function qy(e){let{callPath:t}=e,n=t.node.callee;if(!S.isMemberExpression(n)||!S.isIdentifier(n.property)||n.property.name!=="sort"&&n.property.name!=="toSorted")return null;let r=t.get("callee");if(!r.isMemberExpression())return null;let o=r.get("object");if(Array.isArray(o)||!o.isExpression())return null;let i=await Zn({currentFile:e.currentFile,expressionPath: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});if(!i||!Array.isArray(i.value))return null;let[s]=t.node.arguments;if(!S.isArrowFunctionExpression(s)&&!S.isFunctionExpression(s))return null;let[a,c]=s.params;if(!S.isIdentifier(a)||!S.isIdentifier(c))return null;let l=i.value.map((d,p)=>({value:d,sourceIndex:i.collectionIndexMap?.[p]??p,originalIndex:p})),u=[...l];for(let d of l)for(let p of l)if(ku(s,a.name,c.name,d.value,p.value)===void 0)return null;return u.sort((d,p)=>{let m=ku(s,a.name,c.name,d.value,p.value)??0;return m===0?d.originalIndex-p.originalIndex:m}),{...i,value:u.map(d=>d.value),pathPrefix:i.pathPrefix,collectionIndexMap:u.map(d=>d.sourceIndex),...i.collectionPathMap?{collectionPathMap:u.map(d=>i.collectionPathMap?.[d.originalIndex]).filter(d=>!!d)}:{}}}function ku(e,t,n,r,o){let i=S.isExpression(e.body)?e.body:e.body.body.find(a=>S.isReturnStatement(a))?.argument;if(!i||!S.isExpression(i))return;let s=gs(i,t,n,r,o);return typeof s=="number"?s:void 0}function gs(e,t,n,r,o){if(S.isNumericLiteral(e)||S.isStringLiteral(e)||S.isBooleanLiteral(e))return e.value;if(S.isIdentifier(e))return e.name===t?r:e.name===n?o:void 0;if(S.isMemberExpression(e)){let i=ys(e,t);if(i)return Qe(r,i);let s=ys(e,n);return s?Qe(o,s):void 0}if(S.isBinaryExpression(e)&&e.operator==="-"){let i=S.isExpression(e.left)?gs(e.left,t,n,r,o):void 0,s=S.isExpression(e.right)?gs(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function ex(e){if(S.isExpression(e.body))return e.body;for(let t of e.body.body)if(S.isReturnStatement(t)&&t.argument&&S.isExpression(t.argument))return t.argument;return null}function tx(e,t,n){let r=Ht(e,t,n);return typeof r=="boolean"?r:void 0}function Ht(e,t,n){if(S.isStringLiteral(e)||S.isNumericLiteral(e)||S.isBooleanLiteral(e))return e.value;if(S.isNullLiteral(e))return null;if(S.isIdentifier(e))return e.name===t?n:void 0;if(S.isMemberExpression(e)){let r=ys(e,t);return r?Qe(n,r):void 0}if(S.isUnaryExpression(e)&&e.operator==="!"){let r=Ht(e.argument,t,n);return r===void 0?void 0:!r}if(S.isLogicalExpression(e)){let r=Ht(e.left,t,n);if(r===void 0)return;if(e.operator==="&&")return r&&Ht(e.right,t,n);if(e.operator==="||")return r||Ht(e.right,t,n)}if(S.isBinaryExpression(e)){let r=S.isExpression(e.left)?Ht(e.left,t,n):void 0,o=S.isExpression(e.right)?Ht(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 ys(e,t){let n=[],r=e;for(;S.isMemberExpression(r);){if(r.computed)if(S.isNumericLiteral(r.property))n.unshift({kind:"index",index:r.property.value});else if(S.isStringLiteral(r.property))n.unshift({kind:"property",name:r.property.value});else return null;else{if(!S.isIdentifier(r.property))return null;n.unshift({kind:"property",name:r.property.name})}r=r.object}return!S.isIdentifier(r)||r.name!==t?null:n}async function zt(e){let{currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=`${t}::${n.kind}::${n.identifier.name}`;if(s.has(a))return null;s.add(a);try{let c=await nx({currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s});if(c)return c;if(n.path.isImportSpecifier()||n.path.isImportDefaultSpecifier())return await hx({currentFile:t,binding:n,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,fileCache:i,visited:s});if(n.kind==="param")return null;if(n.path.isVariableDeclarator()){let l=n.path.node.init;if(!l||!S.isExpression(l))return null;let u=n.path.get("init");if(u&&!Array.isArray(u)&&u.isExpression()){let p=await Rs({currentFile:t,expressionPath:u,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(p)return p;if(u.isCallExpression()){let m=await $u({currentFile:t,callPath:u,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(m)return m}}let d=await et(l,n.path.scope,t,r,o,i,s);return d===void 0?null:{kind:"static",file:t,root:{kind:"binding",name:n.identifier.name},value:d,sourceKind:"binding"}}if(n.path.isIdentifier()&&n.path.parentPath?.isExportDefaultDeclaration()){let l=n.path.parentPath.node.declaration;if(!S.isExpression(l))return null;let u=await et(l,n.path.scope,t,r,o,i,s);return u===void 0?null:{kind:"static",file:t,root:{kind:"binding",name:n.identifier.name},value:u,sourceKind:"binding"}}return null}finally{s.delete(a)}}async function nx(e){let{currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s}=e;if(!n.path.isVariableDeclarator()||!n.path.get("id").isArrayPattern())return null;let a=n.path,c=a.node.init;if(!c||!S.isCallExpression(c))return null;let l=rx(c);if(!l||!S.isArrayPattern(a.node.id)||a.node.id.elements.findIndex(E=>S.isIdentifier(E)&&E.name===n.identifier.name)!==0)return null;let d=l==="useReducer"?1:0,p=c.arguments[d];if(!p||!S.isExpression(p))return null;let m=await et(p,a.scope,t,r,o,i,s);return m===void 0?null:{kind:"static",file:t,root:{kind:"hook-state",name:n.identifier.name,hook:l},value:m,sourceKind:"binding"}}function rx(e){return S.isIdentifier(e.callee)&&(e.callee.name==="useState"||e.callee.name==="useReducer")?e.callee.name:S.isMemberExpression(e.callee)&&S.isIdentifier(e.callee.property)&&(e.callee.property.name==="useState"||e.callee.property.name==="useReducer")?e.callee.property.name:null}function ox(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()||!S.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 ix(e,t){let n=ox(e.path);if(!n)return null;let r=yn(e,t);return r?{...n,...r}:null}function po(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}function sx(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}async function ax(e){let t=lx(e.expressionPath.node);if(!t||!ux(t.segments))return null;let n=await Oe({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 cx({...e,rootPath:n.path,segments:t.segments});return r?{...n,path:r.collectionPathMap[0]??n.path,sourceKind:"repeat-template",displayExpression:Gn(e.expressionPath.node,e.fileCache.get(e.currentFile)?.source),...r.collectionIndexMap?{collectionIndexMap:r.collectionIndexMap}:{},collectionPathMap:r.collectionPathMap}:null}async function cx(e){let t=null,n,r=[];for(let i of e.segments){if(i.kind!=="dynamic")continue;let s=await qe({expression:i.expression,scope:e.expressionPath.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!s)return null;let a=Vu(e.expressionPath,s.base);if(!a)return null;let c=await Uu({currentFile:e.currentFile,callPath:a.callPath,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(!c||!Array.isArray(c.value))return null;let l=c.value.map((u,d)=>{let p=Qe(c.value,[{kind:"index",index:d},...a.basePath,...s.path]);return dx(p)});if(l.some(u=>u===null)||t!==null&&t!==l.length)return null;t=l.length,n??=c.collectionIndexMap,r.push(l)}if(t===null||t===0)return null;let o=[];for(let i=0;i<t;i+=1){let s=[...e.rootPath],a=0;for(let c of e.segments){if(c.kind==="dynamic"){let l=r[a]?.[i];if(!l)return null;s.push(l),a+=1;continue}s.push({...c})}o.push(s)}return{...n?{collectionIndexMap:n}:{},collectionPathMap:o}}function lx(e){let t=[],n=e;for(;S.isMemberExpression(n)||S.isOptionalMemberExpression(n);){let r=n.property;if(n.computed)if(S.isNumericLiteral(r))t.unshift({kind:"index",index:r.value});else if(S.isStringLiteral(r))t.unshift({kind:"property",name:r.value});else if(S.isExpression(r))t.unshift({kind:"dynamic",expression:r});else return null;else if(S.isIdentifier(r))t.unshift({kind:"property",name:r.name});else return null;n=n.object}return S.isIdentifier(n)?{base:n.name,segments:t}:null}function ux(e){return e.some(t=>t.kind==="dynamic")}function dx(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}async function fx(e){let t=ix(e.binding,e.sourceInfo);if(!t||!e.graph)return null;let n=[...e.graph.elements.values()].filter(l=>sx(l,e.currentFile,t.componentName,t.exportName));if(n.length!==1)return null;let r=n[0],o=r.attributes?.find(l=>l.name===t.propName);if(o&&!o.source){let l=await px({caller:r,propName:t.propName,remainingPath:t.remainingPath,readFile:e.readFile,fileCache:e.fileCache});if(l)return fs(l,{componentName:t.componentName,propName:t.propName,file:r.sourceFile})}if(!o?.source){let l=await mx({caller:r,propName:t.propName,remainingPath:t.remainingPath,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(l)return fs(l,{componentName:t.componentName,propName:t.propName,file:r.sourceFile});let u=Fl(e.binding,t.componentName,t.propName);if(!u||u.propName!==t.propName)return null;let d=await et(u.expressionPath.node,u.expressionPath.scope,e.currentFile,e.readFile,e.exists,e.fileCache,e.visited);if(d===void 0)return null;let p=t.remainingPath;return p.length>0&&Qe(d,p)===void 0?null:{kind:"value",file:e.currentFile,root:{kind:"binding",name:t.propName},path:p,sourceKind:"binding",semanticKind:"component-prop",displayExpression:u.displayPath,chainPrefix:[{kind:"component-prop",file:e.currentFile,displayName:u.displayPath,canEditHere:!0}],editMode:"upstream",diagnostics:[]}}let i=await Nt(r.sourceFile,e.readFile,e.fileCache);if(!i.ast)return null;let s=Fu(i.ast,i.source,o.source.expression,o.sourceRange)??Cs(i.ast,i.source,o.source.expression);if(!s)return null;let a={...o.source,expression:po(o.source.expression,t.remainingPath),path:[...o.source.path,...t.remainingPath]},c=await Oe({currentFile:r.sourceFile,expressionPath:s,sourceInfo:a,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 c?fs(c.kind==="external"?c:{...c,displayExpression:a.expression},{componentName:t.componentName,propName:t.propName,file:r.sourceFile}):null}async function px(e){let t=await Nt(e.caller.sourceFile,e.readFile,e.fileCache);if(!t.ast)return null;let n=Nu(t.ast,e.caller.sourceRange);if(!n)return null;let r=n.get("openingElement").get("attributes").find(a=>a.isJSXAttribute()&&a.node.name.type==="JSXIdentifier"&&a.node.name.name===e.propName);if(!r?.isJSXAttribute())return null;let o=r.get("value"),i=o.isStringLiteral()?o:o.isJSXExpressionContainer()?o.get("expression"):null;if(!i?.isExpression())return null;let s=Tu(i.node);return s?{kind:"value",file:e.caller.sourceFile,root:{kind:"expression",sourceRange:s},path:e.remainingPath,sourceKind:"binding",semanticKind:"component-prop",displayExpression:e.propName,editMode:"upstream",diagnostics:[]}:null}async function mx(e){let t=await Nt(e.caller.sourceFile,e.readFile,e.fileCache);if(!t.ast)return null;let n=Nu(t.ast,e.caller.sourceRange);if(!n)return null;let r=n.get("openingElement");for(let o of r.get("attributes")){if(!o.isJSXSpreadAttribute())continue;let i=o.get("argument");if(!i.isExpression())continue;let s=await qe({expression:i.node,scope:i.scope,source:t.source,currentFile:e.caller.sourceFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!s)continue;let a=[{kind:"property",name:e.propName},...e.remainingPath],c={...s,expression:po(s.expression,a),path:[...s.path,...a]},l=await Oe({currentFile:e.caller.sourceFile,expressionPath:i,sourceInfo:c,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(l)return l.kind==="external"?l:{...l,displayExpression:c.expression}}return null}function fs(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"}}async function hx(e){let{currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=n.path.parentPath;if(!a||!a.isImportDeclaration())return null;let c=a.node.source.value;if(typeof c!="string")return null;let l=await tn(t,c,o);if(!l)return null;if(n.path.isImportDefaultSpecifier()){let b=await Nt(l,r,i),v=b.ast?Es(b.ast,"default"):null,C=await fo({file:l,exportName:"default",readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return!C||C.kind!=="static"?null:{kind:"static",file:v?.kind==="default-expression"?C.file:l,root:v?.kind==="default-expression"?C.root:{kind:"default-export"},value:C.value,sourceKind:"imported-binding"}}if(!n.path.isImportSpecifier())return null;let u=n.path.node.imported,d=S.isIdentifier(u)?u.name:u.value,p=await Nt(l,r,i),m=p.ast?Es(p.ast,d):null,E=await fo({file:l,exportName:d,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return E?E.kind==="external"?E:{kind:"static",file:m?.kind==="re-export"?E.file:l,root:m?.kind==="re-export"?E.root:{kind:"named-export",name:d},value:E.value,sourceKind:"imported-binding"}:null}async function fo(e){let{file:t,exportName:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=`export::${t}::${n}`;if(!s.has(a)){s.add(a);try{let c=await Nt(t,r,i);if(!c.ast)return;let l=Es(c.ast,n);if(!l)return;if(l.kind==="default-expression"){let m=l.expression;if(!m||!S.isIdentifier(m))return;let E=xs(c.ast).getBinding(m.name);return E?await zt({currentFile:t,binding:E,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s})??void 0:void 0}if(l.kind==="re-export"){if(!l.source||!l.name)return;let m=await tn(t,l.source,o);return m?fo({...e,file:m,exportName:l.name}):void 0}let u=l.name;if(!u)return;let d=xs(c.ast).getBinding(u);return d?await zt({currentFile:t,binding:d,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s})??void 0:void 0}finally{s.delete(a)}}}function xs(e){let t=null;if(Cu(e,{Program(n){t=n.scope,n.stop()}}),!t)throw new Error("Unable to determine program scope");return t}function Es(e,t){for(let n of e.program.body){if(t==="default"&&S.isExportDefaultDeclaration(n))return S.isExpression(n.declaration)?{kind:"default-expression",expression:n.declaration}:(S.isFunctionDeclaration(n.declaration)||S.isClassDeclaration(n.declaration))&&n.declaration.id?{kind:"default-binding",name:n.declaration.id.name}:null;if(S.isExportNamedDeclaration(n)){if(n.declaration){if(S.isVariableDeclaration(n.declaration)){for(let r of n.declaration.declarations)if(S.isIdentifier(r.id)&&r.id.name===t)return{kind:"local-binding",name:r.id.name}}if((S.isFunctionDeclaration(n.declaration)||S.isClassDeclaration(n.declaration))&&n.declaration.id&&n.declaration.id.name===t)return{kind:"local-binding",name:t}}for(let r of n.specifiers)if((S.isIdentifier(r.exported)?r.exported.name:r.exported.value)===t&&S.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}async function et(e,t,n,r,o,i,s){if(S.isStringLiteral(e)||S.isNumericLiteral(e)||S.isBooleanLiteral(e))return e.value;if(S.isNullLiteral(e))return null;if(S.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(S.isTSAsExpression(e)||S.isTSSatisfiesExpression(e)||S.isTSNonNullExpression(e))return await et(e.expression,t,n,r,o,i,s);if(S.isIdentifier(e)){let a=t.getBinding(e.name);if(!a)return;let c=await zt({currentFile:n,binding:a,readFile:r,exists:o,fileCache:i,visited:s});return c?.kind==="static"?c.value:void 0}if(S.isArrayExpression(e)){let a=[];for(let c of e.elements){if(!c||S.isSpreadElement(c))return;let l=await ps(c,t,n,r,o,i,s);if(l===void 0)return;a.push(l)}return a}if(S.isObjectExpression(e)){let a={};for(let c of e.properties){if(!S.isObjectProperty(c)||c.computed)return;let l=null;if(S.isIdentifier(c.key)?l=c.key.name:S.isStringLiteral(c.key)&&(l=c.key.value),!l)return;if(c.shorthand){if(!S.isIdentifier(c.value))return;let d=await ps(c.value,t,n,r,o,i,s);if(d===void 0)return;a[l]=d;continue}if(!S.isExpression(c.value))return;let u=await ps(c.value,t,n,r,o,i,s);u!==void 0&&(a[l]=u)}return a}if(S.isMemberExpression(e)){let a=await Ku(e,t,n,r,o,i,s);if(!a)return;let c=t.getBinding(a.base);if(!c)return;let l=await zt({currentFile:n,binding:c,readFile:r,exists:o,fileCache:i,visited:s});return!l||l.kind!=="static"?void 0:Qe(l.value,a.path)}}async function ps(e,t,n,r,o,i,s){if(!S.isSpreadElement(e))return await et(e,t,n,r,o,i,s)}async function Ku(e,t,n,r,o,i,s){if(S.isIdentifier(e))return{base:e.name,path:[]};if(!S.isMemberExpression(e))return null;let a=[],c=e;for(;S.isMemberExpression(c);){if(c.computed){let l=c.property;if(S.isNumericLiteral(l))a.unshift({kind:"index",index:l.value});else if(S.isStringLiteral(l))a.unshift({kind:"property",name:l.value});else{let u=S.isExpression(l)?await et(l,t,n,r,o,i,s):void 0;if(typeof u=="string")a.unshift({kind:"property",name:u});else if(Number.isInteger(u))a.unshift({kind:"index",index:u});else return null}}else{if(!S.isIdentifier(c.property))return null;a.unshift({kind:"property",name:c.property.name})}c=c.object}return S.isIdentifier(c)?{base:c.name,path:a}:null}function gx(e){if(S.isIdentifier(e))return{base:e.name,path:[]};if(!S.isMemberExpression(e))return null;let t=[],n=e;for(;S.isMemberExpression(n);){if(n.computed)if(S.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(S.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else{if(!S.isIdentifier(n.property))return null;t.unshift({kind:"property",name:n.property.name})}n=n.object}return S.isIdentifier(n)?{base:n.name,path:t}:null}function Qe(e,t){let n=e;for(let r of t){if(r.kind==="property"){if(n===null||Array.isArray(n)||typeof n!="object"||!(r.name in n))return;n=n[r.name];continue}if(!Array.isArray(n)||r.index<0||r.index>=n.length)return;n=n[r.index]}return n}function yx(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 xx(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}}async function Nt(e,t,n){let r=n.get(e);if(r)return r;let o=await t(e),i=Au(o),s={source:o,ast:i};return n.set(e,s),s}import Os from"@babel/generator";import{parse as Nx}from"@babel/parser";import _s from"@babel/traverse";import*as k from"@babel/types";import*as zu from"@babel/types";import Ns from"@babel/generator";import*as re from"@babel/types";var Ex=typeof Ns=="function"?Ns:Ns.default,Sx=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,bx=/^((?:https?:)?\/\/)[^/@\s]+@/i,Ix=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function Xu(e,t){let n=st(e.callee);if(!n)return null;if(n==="fetch")return Ts(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(Ju(r))return Ts(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(Ju(r))return Ts(e.arguments[0],r,t,["ky client contract"])}return null}function Ts(e,t,n,r){if(!e||re.isSpreadElement(e)||re.isJSXNamespacedName(e))return Rx(t,n,r,"missing url argument");let o=Qn(e);return{sourceKind:Cx(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 Qn(e){if(re.isStringLiteral(e))return mo(e.value);if(re.isTemplateLiteral(e))return mo(kx(e));if(re.isBinaryExpression(e)&&e.operator==="+"){let t=Qn(e.left),n=Qn(e.right);return!t&&!n?void 0:mo(`${t??Fs(e.left)}${n??Fs(e.right)}`)}if(re.isMemberExpression(e)){let t=Hu(e);if(t)return`env:${t}`}if(!(re.isCallExpression(e)&&st(e.callee)==="new URL")){if(re.isNewExpression(e)&&re.isIdentifier(e.callee,{name:"URL"})){let[t,n]=e.arguments,r=t&&!re.isSpreadElement(t)?Qn(t):void 0,o=n&&!re.isSpreadElement(n)?Qn(n):void 0;return o&&r?mo(`${o} + ${r}`):r??o}if(re.isIdentifier(e))return`:${e.name}`}}function kx(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+=Fs(r))}return t}function Fs(e){if(re.isIdentifier(e))return`:${e.name}`;if(re.isMemberExpression(e)){let t=Hu(e);if(t)return`env:${t}`}return`:${vx(e)}`}function vx(e){return Ex(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function mo(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(bx,"$1<redacted>@").replace(Ix,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?Sx.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function Cx(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 Rx(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function Ju(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function Hu(e){return!re.isMemberExpression(e.object)||!re.isIdentifier(e.object.object,{name:"process"})||!Px(e.object.property,"env")?null:re.isIdentifier(e.property)?e.property.name:re.isStringLiteral(e.property)?e.property.value:null}function Px(e,t){return re.isIdentifier(e)&&e.name===t}function st(e){if(re.isIdentifier(e))return e.name;if(re.isMemberExpression(e)){let t=st(e.object),n=re.isIdentifier(e.property)?e.property.name:re.isStringLiteral(e.property)?e.property.value:null;if(t&&n)return`${t}.${n}`}return null}var wx=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),Ax=new Set(["getConfig","submit"]);function Wu(e,t){let n=st(e.callee);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!wx.has(i))return null;let s=Ms(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(!Ax.has(i))return null;let s=Ms(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=Ms(e,0)??"/cms/:path";return{sourceKind:"vcp-cms-collection",sourceType:"cms-field",operation:n,endpointPattern:i,confidence:i==="/cms/:path"?"partial":"safe-derived",evidence:[{file:t.file,symbol:n,reason:"VCP CMS fetch helper"}]}}return null}function Yu(e,t){let n=st(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 Gu(e){let t=st(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function Ms(e,t){let n=e.arguments[t];return zu.isStringLiteral(n)?n.value:null}var js=typeof _s=="function"?_s:_s.default,iC=typeof Os=="function"?Os:Os.default,Tx={maxFunctionDepth:8,maxImportDepth:6},Fx=new Set(["src","href","alt","poster","content","title","aria-label"]);async function nd(e){let t=e.fileCache??new Map,n=$s(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...Tx,...e.options},variableCache:new Map,functionDepth:0,importDepth:0,paramSources:new Map,resolvingVariables:new Set,resolvingComponentProps:new Set,scopeVariables:gd(n,e.element.componentName)};await rd(e.element.componentName,e.graph,r);let o=[];o.push(...await Lx(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await jx(s,e.element,e.graph,r);a&&o.push(Ls(a,"text","children"))}for(let s of e.element.attributes??[]){let a=Dx(s);if(!a)continue;let c=await sd(s.source,e.element,e.graph,r);c&&o.push(Ls(c,a,s.name))}let i=qx(o).sort(md);return{hasDynamicData:i.length>0,bindings:i}}async function rd(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 od(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 d=await id(l.sourceFile,n);if(!d)continue;let p=yo(d,n,{importDepth:n.importDepth+1});p.paramSources.clear(),p.scopeVariables=gd(d,l.componentName),await rd(l.componentName,t,p);let m=await Mx(l,p);for(let[E,b]of m){if(!b)continue;let v=a.get(E)??[];v.push(b),a.set(E,v)}}finally{n.resolvingComponentProps.delete(u)}}}let c=new Map;for(let[l,u]of a){let d=fd(u);d.length===1&&c.set(l,d[0])}_x(o,c,n)}async function od(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 id(e,r))?.imports.get(t);if(!s||!ct(s.source))return!1;let a=await Ed(e,s.source,r.exists);return a?a===n?!0:od(a,s.importedName,n,r,o):!1}async function Mx(e,t){let n=new Map;js(t.analysis.ast,{JSXElement(o){if(Ox(o.node,e.sourceRange)){for(let i of o.node.openingElement.attributes)!k.isJSXAttribute(i)||!k.isJSXIdentifier(i.name)||!k.isJSXExpressionContainer(i.value)||!k.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 be(i,t);s&&r.set(o,s)}return r}function Ox(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 id(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 $s(e,r,t.fileCache)}function _x(e,t,n){if(k.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,Us(Object.fromEntries(t),n.file));return}if(k.isObjectPattern(e))for(let r of e.properties){if(!k.isObjectProperty(r)||r.computed||!k.isIdentifier(r.key))continue;let o=t.get(r.key.name);if(!o)continue;let i=k.isAssignmentPattern(r.value)?r.value.left:r.value;k.isIdentifier(i)&&n.paramSources.set(i.name,ve(o))}}function Dx(e){return e.name==="dangerouslySetInnerHTML"?"richtext":Fx.has(e.name)?"attribute":null}async function Lx(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 Bs(i.collectionSource,n);s&&r.push(Ls(bn(s),"repeat-region",i.collectionExpression))}return r}async function jx(e,t,n,r){return sd(e.source,t,n,r)}async function sd(e,t,n,r){let o=await Bx(e,t,n,r);return o||Bs(e,r)}async function Bx(e,t,n,r){if(!e)return null;let o=Vx(e.base,t,n);if(!o)return null;let i=await Bs(o.collectionSource,r);return i?nr(i,e.path,!0):null}function Vx(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 Bs(e,t){if(!e)return null;let n=await ad(e.base,t);return n?nr(n,e.path,!1):null}async function ad(e,t){let n=t.paramSources.get(e);if(n)return ve(n);if(t.variableCache.has(e))return eE(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await Ux(e,t);if(r)return t.variableCache.set(e,ve(r)),t.resolvingVariables.delete(e),r;let o=t.scopeVariables?.get(e)??t.analysis.variables.get(e);if(o){let s=await be(o,t);return t.variableCache.set(e,s?ve(s):null),t.resolvingVariables.delete(e),s}let i=t.analysis.imports.get(e);if(i&&t.importDepth<t.options.maxImportDepth){let s=await yd(i,t);if(s){let a=yo(s,t,{importDepth:t.importDepth+1}),c=xd(i,s);if(c){let d=(await Wt(c,[],a)).returnSource;return t.variableCache.set(e,d?ve(d):null),t.resolvingVariables.delete(e),d}let l=s.variables.get(i.importedName);if(l){let u=await be(l,a);return t.variableCache.set(e,u?ve(u):null),t.resolvingVariables.delete(e),u}}}return t.variableCache.set(e,null),t.resolvingVariables.delete(e),null}async function Ux(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];js(t.analysis.ast,{CallExpression(o){if(k.isIdentifier(o.node.callee,{name:n})){let i=o.node.arguments[0];k.isExpression(i)&&r.push(i);return}o.node.arguments.some(i=>k.isIdentifier(i)&&i.name===n)&&r.push(o.node)}});for(let o of r){let i=await be(o,t);if(i)return i}return null}async function be(e,t){if(k.isIdentifier(e))return ad(e.name,t);if(k.isMemberExpression(e)||k.isOptionalMemberExpression(e)){let n=k.isMemberExpression(e)?Yu(e,{file:t.file}):null;if(n)return dd(n);let r=await $x(e,t);if(!r)return null;let o=Zx(e);return nr(r,o,!1)}if(k.isAwaitExpression(e))return k.isExpression(e.argument)?be(e.argument,t):null;if(k.isCallExpression(e))return cd(e,t);if(k.isObjectExpression(e)){let n=await ld(e,t);return Object.keys(n).length>0?Us(n,t.file):null}if(k.isConditionalExpression(e)){let n=await be(e.consequent,t),r=await be(e.alternate,t);return tr(Qu(n,r))}if(k.isLogicalExpression(e)){let n=await be(e.left,t),r=await be(e.right,t);return tr(Qu(n,r))}return k.isTSAsExpression(e)||k.isTSSatisfiesExpression(e)||k.isTSNonNullExpression(e)||k.isTypeCastExpression(e)||k.isParenthesizedExpression(e)?be(e.expression,t):null}async function $x(e,t){let n=e;for(;k.isMemberExpression(n)||k.isOptionalMemberExpression(n);)n=n.object;return k.isExpression(n)?be(n,t):null}async function cd(e,t){let n=Wu(e,{file:t.file});if(n)return dd(n);if(Gu(e)){let d=e.arguments[0];if(d&&k.isExpression(d))return tr(await be(d,t))}let r=await Kx(e,t);if(r)return r;let o=Xu(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 Hx(e,t);if(i)return i;let s=await zx(e,t);if(s)return s;let a=await Wx(e,t);if(a)return a;let c=await Yx(e,t);if(c)return c;let l=[];for(let d of e.arguments)if(k.isExpression(d)){let p=await be(d,t);p&&l.push(p)}let u=fd(l);return u.length===1?tr(u[0]):null}async function Kx(e,t){let n=st(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=Xx(e.arguments[0],t.file,"SWR key"),s=e.arguments[1];if(k.isIdentifier(s)){let a=await er(s.name,t);if(a)return(await Wt(a.node,i?[i]:[],a.context)).returnSource??i}return i}let r=e.arguments[0];if(!k.isObjectExpression(r))return ho(t.file,`${n} without static options`);let o=Jx(r,"queryFn");if(!o)return ho(t.file,`${n} without queryFn`);if(k.isIdentifier(o)){let i=await er(o.name,t);return i?(await Wt(i.node,[],i.context)).returnSource:ho(t.file,`${n} queryFn unresolved`)}return k.isArrowFunctionExpression(o)||k.isFunctionExpression(o)?(await Wt(o,[],t)).returnSource:k.isCallExpression(o)?cd(o,t):null}function Jx(e,t){for(let n of e.properties){if(!k.isObjectProperty(n)||!k.isExpression(n.value))continue;if(ud(n)===t)return n.value}return null}function Xx(e,t,n){return k.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 Hx(e,t){if(!k.isMemberExpression(e.callee)||!k.isIdentifier(e.callee.property))return null;let n=e.callee.property.name;if(!["map","filter","slice","sort","toSorted"].includes(n))return null;let r=k.isExpression(e.callee.object)?await be(e.callee.object,t):null;if(!r)return null;if(n!=="map")return bn(r);let o=e.arguments[0];if(k.isIdentifier(o)){let i=await er(o.name,t);if(!i)return bn(r);let s=await Wt(i.node,[r],i.context);return{...bn(r),...s.objectReturnMap??s.returnSource?.fieldMap?{fieldMap:s.objectReturnMap??s.returnSource.fieldMap}:{}}}if(k.isArrowFunctionExpression(o)||k.isFunctionExpression(o)){let i=await Wt(o,[r],t);return{...bn(r),...i.objectReturnMap??i.returnSource?.fieldMap?{fieldMap:i.objectReturnMap??i.returnSource.fieldMap}:{}}}return bn(r)}async function zx(e,t){return!k.isMemberExpression(e.callee)||!k.isIdentifier(e.callee.property,{name:"json"})||!k.isExpression(e.callee.object)?null:be(e.callee.object,t)}async function Wx(e,t){return!k.isMemberExpression(e.callee)||!k.isIdentifier(e.callee.property,{name:"then"})||!k.isExpression(e.callee.object)?null:tr(await be(e.callee.object,t))}async function Yx(e,t){if(!k.isIdentifier(e.callee))return null;let n=await er(e.callee.name,t);if(!n)return null;let r=[];for(let i of e.arguments){if(!k.isExpression(i)){r.push(ho(t.file,`unsupported argument for ${e.callee.name}`));continue}let s=await be(i,t);r.push(s)}return(await Wt(n.node,r,n.context)).returnSource}async function er(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 yd(r,t);if(!o)return null;let i=yo(o,t,{importDepth:t.importDepth+1}),s=xd(r,o);return s?{node:s,context:i}:er(r.importedName,i)}async function Wt(e,t,n){if(n.functionDepth>=n.options.maxFunctionDepth)return{returnSource:null};let r=yo(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let u=t[l];u&&Ds(c,Qx(u),r)});let o=Gx(e),i=null,s,a=!1;for(let c of o){if(k.isObjectExpression(c)){s={...s??{},...await ld(c,r)},i=i??Us(s,n.file);continue}let l=await be(c,r);if(l){if(!i){i=l;continue}let u=Vs(i,l);if(!u){a=!0,i=null;continue}i=u}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function Ds(e,t,n){if(k.isIdentifier(e)){n.paramSources.set(e.name,ve(t));return}if(k.isAssignmentPattern(e)){Ds(e.left,t,n);return}if(k.isObjectPattern(e))for(let r of e.properties){if(!k.isObjectProperty(r)||r.computed||!k.isIdentifier(r.key))continue;let o=nr(t,[{kind:"property",name:r.key.name}],!0),i=k.isAssignmentPattern(r.value)?r.value.left:r.value;Ds(i,o,n)}}function Gx(e){if(k.isArrowFunctionExpression(e)&&k.isExpression(e.body))return[e.body];let t=[],n=e.body;if(!k.isBlockStatement(n))return t;let r=o=>{if(k.isFunction(o)&&o!==e)return;if(k.isReturnStatement(o)){o.argument&&k.isExpression(o.argument)&&t.push(o.argument);return}let i=k.VISITOR_KEYS[o.type];for(let s of i??[]){let a=o[s];if(Array.isArray(a))for(let c of a)k.isNode(c)&&r(c);else k.isNode(a)&&r(a)}};return r(n),t}async function ld(e,t){let n={};for(let r of e.properties){if(!k.isObjectProperty(r))continue;let o=ud(r);if(!o||!k.isExpression(r.value))continue;let i=await be(r.value,t);i&&(n[o]=i)}return n}function ud(e){return k.isIdentifier(e.key)&&!e.computed?e.key.name:k.isStringLiteral(e.key)?e.key.value:null}function Zx(e){let t=[],n=e;for(;k.isMemberExpression(n)||k.isOptionalMemberExpression(n);){let r=n.property;n.computed?k.isStringLiteral(r)?t.unshift({kind:"property",name:r.value}):k.isNumericLiteral(r)&&t.unshift({kind:"index",index:r.value}):k.isIdentifier(r)&&t.unshift({kind:"property",name:r.name}),n=n.object}return k.isIdentifier(n),t}function nr(e,t,n){if(t.length===0)return ve(e);let r=t[0];if(r?.kind==="property"&&e.fieldMap?.[r.name])return nr(e.fieldMap[r.name],t.slice(1),n);let o=ve(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=qn(o.valuePath,"data.items[]"),o.cmsFieldRoot=!1,o):i[0]==="fields"?(o.fieldPath=qn(o.fieldPath,i.slice(1).join(".")),o.cmsFieldRoot=!0,o):o.cmsFieldRoot||n||o.fieldMap?(o.fieldPath=qn(o.fieldPath,i.join(".")),o):(o.valuePath=qn(o.valuePath,Zu(t)),o)}return o.valuePath=qn(o.valuePath,Zu(t)),o}function Zu(e){return e.map(t=>t.kind==="property"?t.name:`[${t.index}]`).join(".").replace(/\.\[/g,"[")}function qn(e,t){return t?e?t.startsWith("[")?`${e}${t}`:`${e}.${t}`:t:e}function dd(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 bn(e){let t=ve(e);return t.sourceType==="cms-field"&&!t.valuePath&&(t.valuePath="items[]"),t}function Qx(e){let t=ve(e);return t.valuePath=void 0,t.sourceType==="cms-field"&&(t.cmsFieldRoot=!1),t}function tr(e){return e?{...ve(e),confidence:e.confidence==="unknown"?"unknown":"safe-derived",evidence:[...e.evidence,{file:e.evidence[0]?.file??"unknown",reason:"safe derived expression"}]}:null}function Qu(e,t){return e?t?Vs(e,t):ve(e):t?ve(t):null}function Vs(e,t){if(go(e)!==go(t))return null;let n=hd(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function fd(e){let t=new Map;for(let n of e){let r=go(n),o=t.get(r);t.set(r,o?Vs(o,n):ve(n))}return[...t.values()]}function go(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,go(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 Us(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 ho(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 pd(e){let t=[...e].sort(md),n=t[0];return{hasDynamicData:t.length>0,sourceKinds:[...new Set(t.map(r=>r.sourceKind))],...n?.endpointPattern?{primaryEndpoint:n.endpointPattern}:{},...n?.collection?{primaryCollection:n.collection}:{},...n?.fieldPath?{primaryFieldPath:n.fieldPath}:{}}}function qx(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 md(e,t){return qu(e.targetKind)-qu(t.targetKind)||hd(e.confidence,t.confidence)||ed(e.sourceKind)-ed(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function qu(e){return{"repeat-region":0,text:1,richtext:2,attribute:3,"component-prop":4}[e]}function ed(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function hd(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function $s(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=Nx(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 js(o,{ImportDeclaration(s){let a=s.node.source.value;for(let c of s.node.specifiers)k.isImportSpecifier(c)&&k.isIdentifier(c.local)?i.imports.set(c.local.name,{source:a,importedName:k.isIdentifier(c.imported)?c.imported.name:c.imported.value,localName:c.local.name,isDefault:!1}):k.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&&(k.isFunctionDeclaration(a.node)||k.isFunctionExpression(a.node)||k.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 In(s.node.id))l.set(u,k.isExpression(s.node.init)?s.node.init:null);if(k.isArrayPattern(s.node.id)&&k.isCallExpression(s.node.init)&&st(s.node.init.callee)==="useState"){let[u,d]=s.node.id.elements;k.isIdentifier(u)&&k.isIdentifier(d)&&i.stateSetters.set(u.name,d.name)}k.isIdentifier(s.node.id)&&td(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(!k.isExportSpecifier(l))continue;let u=k.isIdentifier(l.exported)?l.exported.name:l.exported.value,d=l.local.name;i.imports.set(u,{source:c,importedName:d,localName:u,isDefault:d==="default"})}if(k.isFunctionDeclaration(a)&&a.id?.name&&i.functions.set(a.id.name,a),k.isVariableDeclaration(a))for(let l of a.declarations)k.isIdentifier(l.id)&&td(l.init)&&i.functions.set(l.id.name,l.init)},ExportDefaultDeclaration(s){let a=s.node.declaration;if((k.isFunctionDeclaration(a)||k.isFunctionExpression(a)||k.isArrowFunctionExpression(a))&&i.functions.set("default",a),k.isIdentifier(a)){let c=i.functions.get(a.name);c&&i.functions.set("default",c)}}}),n.set(e,i),i}function In(e){return!e||k.isVoidPattern(e)?[]:k.isIdentifier(e)?[e.name]:k.isObjectPattern(e)?e.properties.flatMap(t=>k.isObjectProperty(t)?In(t.value):In(t.argument)):k.isArrayPattern(e)?e.elements.flatMap(t=>t?In(k.isRestElement(t)?t.argument:t):[]):k.isAssignmentPattern(e)?In(e.left):k.isRestElement(e)?In(e.argument):[]}function td(e){return k.isFunctionExpression(e)||k.isArrowFunctionExpression(e)}function gd(e,t){let n=e.functions.get(t)??e.functions.get("default");return n?e.functionVariables.get(n):void 0}async function yd(e,t){let n=await Ed(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return $s(n,r,t.fileCache)}function xd(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function Ed(e,t,n){return ct(t)?tn(e,t,n):null}function yo(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 eE(e){return e?ve(e):null}function ve(e){return{...e,evidence:e.evidence.map(t=>({...t})),...e.fieldMap?{fieldMap:Object.fromEntries(Object.entries(e.fieldMap).map(([t,n])=>[t,ve(n)]))}:{}}}var tE=50,nE=8*1024*1024;function kd(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??tE),s=Math.max(0,t.maxUndoBytes??nE);return{prepareRewritePlan:a,execute:c,executeFilePlan:l,undo:u,redo:d};async function a(R){let _=[...R.steps].sort((W,q)=>W.order-q.order),D=_.filter(W=>W.type!=="invoke-external-adapter");if(D.length!==_.length)return{ok:!1,errorCode:"unsupported-operation",reason:"External adapter writes require a transactional prepare/commit/rollback contract."};let L=new Set(D.map(W=>W.file)),Z=await A(L),Q=new Map(Z.map(W=>[W.file,W.exists===!1?"":W.content])),he;for(let W of D){let q=Id(W,Q.get(W.file)??"");if(!q.ok)return{ok:!1,errorCode:q.errorCode,reason:q.reason};Q.set(W.file,q.source),he=q.selectionRef??he}return{ok:!0,filePlan:{operationId:R.operationId,kind:"source-edit",target:R.target,documentVersion:R.documentVersion,conflictPolicy:"compare-and-swap",edits:[...Q].map(([W,q])=>({operation:"upsert",file:W,content:q,baseContentHash:Z.find(ge=>ge.file===W)?.sha256??null}))},...he?{selectionRef:he}:{}}}async function c(R){let _=[...R.steps].sort((ge,at)=>ge.order-at.order),D=_.filter(ge=>ge.type!=="invoke-external-adapter"),L=_.filter(ge=>ge.type==="invoke-external-adapter"),Z=new Set(D.map(ge=>ge.file));if(D.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(D.length===0)return v(R,L);let Q=await A(Z),he=new Map;for(let ge of Q)he.set(ge.file,ge.exists===!1?"":ge.content);let W;for(let ge of D){let at=he.get(ge.file)??"",ht=Id(ge,at);if(!ht.ok)return{ok:!1,operationId:R.operationId,errorCode:ht.errorCode,reason:ht.reason,rolledBack:!1};he.set(ge.file,ht.source),ht.selectionRef&&(W=ht.selectionRef)}let q=await G([...he].map(([ge,at])=>({file:ge,content:at,exists:!0,version:0,sha256:ae(at)})),Q);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:Q,postSnapshots:q.snapshots,plan:R}),p(),r.length=0,{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:Math.max(...q.snapshots.map(ge=>ge.version)),affectedFiles:[...Z],...W?{selectionRef:W}:{}})}async function l(R){let _=new Set(R.edits.map(q=>q.file)),D=await A(_),L=C(R,D);if(L)return{ok:!1,operationId:R.operationId,errorCode:"stale-version",reason:L.reason,affectedFiles:[L.file],rolledBack:!1};let Z=new Map(D.map(q=>[q.file,q])),Q=R.edits.find(q=>q.operation==="create-only"&&Z.get(q.file)?.exists!==!1);if(Q)return{ok:!1,operationId:R.operationId,errorCode:"stale-version",reason:`MATERIALIZATION_INSTANCE_CONFLICT: create-only target already exists: ${Q.file}`,affectedFiles:[Q.file],rolledBack:!1};let he=R.edits.map(q=>q.operation==="delete"?{file:q.file,content:"",exists:!1,version:0}:{file:q.file,content:q.content,exists:!0,version:0,sha256:ae(q.content)}),W=await G(he,D,new Set(R.edits.filter(q=>q.operation==="create-only").map(q=>q.file)));return W.ok===!1?{ok:!1,operationId:R.operationId,errorCode:W.rolledBack?"writeback-failed":"rollback-failed",reason:W.reason,rolledBack:W.rolledBack}:(n.push({operationId:R.operationId,preSnapshots:D,postSnapshots:W.snapshots,plan:{operationId:R.operationId,kind:R.kind,target:R.target,documentVersion:R.documentVersion,steps:[],preSnapshots:D}}),p(),r.length=0,{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:Math.max(...W.snapshots.map(q=>q.version)),affectedFiles:[..._]})}async function u(){let R=n.at(-1);if(!R)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to undo"};let _=await G(R.preSnapshots,R.postSnapshots);return _.ok===!1?{ok:!1,operationId:R.operationId,errorCode:_.rolledBack?"writeback-failed":"rollback-failed",reason:_.reason,rolledBack:_.rolledBack}:(n.pop(),r.push(R),{ok:!0,operationId:R.operationId,kind:R.plan.kind,target:R.plan.target,resultVersion:Math.max(..._.snapshots.map(D=>D.version)),affectedFiles:R.preSnapshots.map(D=>D.file)})}async function d(){let R=r.at(-1);if(!R)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to redo"};let _=await G(R.postSnapshots,R.preSnapshots);return _.ok===!1?{ok:!1,operationId:R.operationId,errorCode:_.rolledBack?"writeback-failed":"rollback-failed",reason:_.reason,rolledBack:_.rolledBack}:(r.pop(),n.push(R),p(),{ok:!0,operationId:R.operationId,kind:R.plan.kind,target:R.plan.target,resultVersion:Math.max(..._.snapshots.map(D=>D.version)),affectedFiles:R.postSnapshots.map(D=>D.file)})}function p(){for(;n.length>i;)n.shift();for(;n.length>0&&m()>s;)n.shift()}function m(){return n.reduce((R,_)=>R+E(_),0)}function E(R){return b(R.preSnapshots)+b(R.postSnapshots)}function b(R){return R.reduce((_,D)=>_+D.file.length+D.content.length,0)}async function v(R,_){let D=[];for(let L of _){let Z=L.capability??"write-text",Q=o.find(W=>W.sourceType===L.sourceType&&(L.adapterId===void 0||W.adapterId===L.adapterId)&&(W.capabilities===void 0||W.capabilities.includes(Z)));if(!Q)return{ok:!1,operationId:R.operationId,errorCode:"unsupported-operation",reason:`No external adapter registered for ${L.sourceType}`,rolledBack:!1};let he=await Q.execute(L);if(!he.ok)return{ok:!1,operationId:R.operationId,errorCode:"writeback-failed",reason:he.reason??`External adapter failed for ${L.sourceType}`,rolledBack:!1};D.push(L.file)}return{ok:!0,operationId:R.operationId,kind:R.kind,target:R.target,resultVersion:0,affectedFiles:D}}function C(R,_){if(R.conflictPolicy!=="compare-and-swap")return null;let D=new Map(_.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 Z=D.get(L.file),Q=L.baseContentHash;if(Q===null){if(Z?.exists!==!1)return{file:L.file,reason:`Source file ${L.file} was created or changed before save.`};continue}if(!Q)return{file:L.file,reason:`Source file ${L.file} is missing baseContentHash. Reopen the file before saving.`};if(Z?.exists===!1||Z?.sha256!==Q)return{file:L.file,reason:`Source file ${L.file} changed before save. Reload or explicitly overwrite the newer version.`}}return null}async function A(R){let _=[];for(let D of R)_.push(await N(D));return _}async function N(R){if(!await e.exists(R))return{file:R,content:"",version:0,exists:!1};let D=Math.max(1,e.getVersion(R)),L=await e.readFile(R);return{file:R,content:L,version:D,exists:!0,sha256:ae(L)}}async function G(R,_,D=new Set){let L=[];try{for(let Z of R){if(D.has(Z.file)){if(!e.createExclusive)throw new Error("Create-only write requires atomic exclusive-create support.");await e.createExclusive(Z.file,Z.content)}else await fe(Z);let Q=e.bumpVersion(Z.file);L.push(Z.file),Z.version=Q}}catch(Z){let Q=await ue(_.filter(W=>L.includes(W.file)));if(Q.ok===!1)return{ok:!1,reason:`Writeback failed, then rollback failed for ${Q.failedFiles.join(", ")}: ${bd(Z)}`,rolledBack:!1,instanceConflict:Sd(Z)};let he=Sd(Z);return{ok:!1,reason:`${he?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${bd(Z)}`,rolledBack:!0,instanceConflict:he}}return{ok:!0,snapshots:R.map(rE)}}async function fe(R){if(R.exists===!1){await e.deleteFile(R.file);return}await e.writeFile(R.file,R.content)}async function ue(R){let _=[];for(let D of R)try{await fe(D),e.bumpVersion(D.file)}catch{_.push(D.file)}return _.length===0?{ok:!0}:{ok:!1,failedFiles:_}}}function Sd(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function rE(e){let t=e.exists!==!1;return{file:e.file,content:t?e.content:"",version:e.version,exists:t,...t?{sha256:ae(e.content)}:{}}}function bd(e){return e instanceof Error?e.message:String(e)}function Id(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 Ne(pn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-import":return Ne(mn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-node":return Ne(cn({source:t,locator:e.locator,removeWhitespace:e.removeWhitespace}));case"insert-child":return Ne(un({source:t,locator:e.parentLocator,node:e.node,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"update-text":return Ne(Vr({source:t,locator:e.locator,segmentIndex:e.segmentIndex,newText:e.newText}));case"update-value":return Ne(Ln({source:t,locator:e.locator,next:e.value}));case"update-array-item":return Ne(Ln({source:t,locator:e.locator,next:e.value}));case"insert-bound-array-item":return Ne(Jr({source:t,locator:e.locator,index:e.index,value:e.value}));case"insert-jsx-expression-child":return Ne(Ur({source:t,locator:e.parentLocator,expression:e.expression,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"remove-bound-array-item":return Ne(Xr({source:t,locator:e.locator,index:e.index}));case"move-array-item":return Ne(Hr({source:t,locator:e.locator,fromIndex:e.fromIndex,toIndex:e.toIndex}));case"move-node":return Ne(fn({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"move-repeat-template-child":return Ne($r({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 oE(e,t);case"set-props":{let n=e;return Ne(Kr({source:t,locator:n.locator,props:n.props}))}default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function oE(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!El(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!==ae(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:xl({source:t,oldAttrRange:n.oldAttrRange,openingElementRange:n.openingElementRange,newAttrRaw:n.newAttrRaw})}}function Ne(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"}}}function vd(){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 iE}from"node:crypto";import xo from"node:fs/promises";import Ks from"node:path";var sE={async mkdir(e,t){await xo.mkdir(e,t)},async writeFile(e,t,n){await xo.writeFile(e,t,n)},async rename(e,t){await xo.rename(e,t)},async rm(e,t){await xo.rm(e,t)}};async function Eo(e,t,n=sE){let r=Ks.dirname(e),o=Ks.basename(e),i=Ks.join(r,`.${o}.${process.pid}.${iE()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await n.rename(i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import{randomBytes as SE}from"node:crypto";import rr from"node:path";import{parse as bE}from"@babel/parser";import IE from"@babel/traverse";import{SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as Rd,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as kE,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as vE,SiteEditMaterializationSchema as CE}from"@vcp-dev/contracts";var Cd=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,aE=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,cE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke)-\[#(?:[0-9a-fA-F]{3,8})\](?:\/\d+)?/g,lE=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*#[0-9a-fA-F]{3,8}[^'"]*['"]/g,uE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,dE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,fE=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,pE=/\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,hE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*color-mix\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,gE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*color-mix\([^'"]*['"]/gi,yE=/\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,xE=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,EE=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function Js(e,t){let n=So([...$e(e,cE),...$e(e,lE),...$e(e,uE),...$e(e,t.includeRgbBackgroundImage?dE:fE),...t.includeExtendedColorFunctions?[...$e(e,pE),...$e(e,mE)]:[]]),r=So([...$e(e,hE),...$e(e,gE)]).filter(o=>t.colorMixPolicy==="always"||Cd.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...$e(e,yE).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...$e(e,EE).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:So($e(e,aE)),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?So($e(e,xE)):[]}}function $e(e,t){return e.match(new RegExp(t.source,t.flags))??[]}function So(e){return[...new Set(e)]}var Ws="components/site/generated",Pd="{{$INSTANCE}}",bo=5,RE=/^[a-z][a-z0-9-]{0,48}$/,PE=/^[a-f0-9]{8}$/,wE=/\.tsx?$/,AE=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,NE=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],Xs=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),Hs=IE,TE=typeof Hs=="function"?Hs:Hs.default;function FE(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>Rd)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=$E(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=CE.safeParse(e.manifest);if(!r.success)return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab manifest failed schema validation."}};let o=BE(e.generatedRoot);if(!o)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Generated root must be ${Ws}.`,path:e.generatedRoot}};if(!Md(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=Nd(r.data.files),s=Nd(e.controlledFiles);if(!KE(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>Rd)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>kE)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>vE?{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 ME(e){let t=FE(e);if(!t.ok)return t;let n=t.data.generatedRoot,r=Md(e.manifest.instanceBaseName),o=Math.max(1,Math.min(bo,e.maxAttempts??bo));for(let i=0;i<o;i+=1){let s=VE(e.instanceNameGenerator?.()??SE(4).toString("hex"));if(!s)return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instance suffix must be 8 lowercase hex chars."}};let a=`${r}-${s}`,c=_d(n,a),l=OE({manifest:e.manifest,generatedRoot:n,instanceName:a,instanceRoot:c,allowedExternalImports:e.allowedExternalImports??NE});if(!l.ok)return l;if(!await _E(e.exists,c,l.data.files))return{ok:!0,data:l.data}}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to allocate a create-only static prefab instance after repeated conflicts."}}}async function Fd(e){let t=Math.max(1,Math.min(bo,e.maxAttempts??bo));for(let n=0;n<t;n+=1){let r=await ME({...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 OE(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=wd({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=wd({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=DE(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 _E(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function wd(e){if(e.pathTemplate.split(Pd).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(Pd,e.instanceName),n=UE(t);return n?_d(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||!wE.test(n)||AE.test(n)?{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:"Static prefab files must be .ts/.tsx source files and cannot be config, layout, provider, or global 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 DE(e,t,n,r,o){let i=new Set(e.map(u=>u.path)),s=new Map,a=new Map;for(let u of e){let d;try{d=bE(u.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:u.path}}}let p=Js(u.content,{colorMixPolicy:"always",includeExtendedColorFunctions:!0,includeRgbBackgroundImage:!0,rejectAnyRawColorLiteral:!0,rejectPrivateTokens:!0,rejectTailwindPalette:!0});if(p.hardCodedSurfaceHits.length>0||p.rawColorHits.length>0||p.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:u.path}};s.set(u.path,d),a.set(u.path,new Set)}for(let u of e){let d=s.get(u.path),p=null;if(TE(d,{ImportDeclaration(m){let E=Ad({importer:u.path,source:m.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});E.allowed?E.internalPath&&a.get(u.path).add(E.internalPath):(p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab imports must resolve within the controlled instance or match the starter allowlist.",file:u.path},m.stop())},ExportAllDeclaration(m){p??={code:"MATERIALIZATION_ENTRY_INVALID",message:"Static prefab files cannot use export-star declarations.",file:u.path},m.stop()},ExportNamedDeclaration(m){if(m.node.source){let E=Ad({importer:u.path,source:m.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});!E.allowed||!E.internalPath?(p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab re-exports must resolve within the controlled instance.",file:u.path},m.stop()):a.get(u.path).add(E.internalPath)}},CallExpression(m){if(m.node.callee.type==="Import"){p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use dynamic import().",file:u.path},m.stop();return}m.node.callee.type==="Identifier"&&m.node.callee.name==="require"&&(p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use require().",file:u.path},m.stop())},NewExpression(m){m.node.callee.type==="Identifier"&&m.node.callee.name==="Function"&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot construct functions dynamically.",file:u.path},m.stop())},MetaProperty(m){m.node.meta.type==="Identifier"&&m.node.meta.name==="import"&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot use import.meta.",file:u.path},m.stop())},MemberExpression(m){let E=Td(m.node);E&&Xs.has(E)&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${E}.`,file:u.path},m.stop())},OptionalMemberExpression(m){let E=Td(m.node);E&&Xs.has(E)&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${E}.`,file:u.path},m.stop())},Identifier(m){m.isReferencedIdentifier()&&Xs.has(m.node.name)&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${m.node.name}.`,file:u.path},m.stop())},JSXAttribute(m){m.node.name.type==="JSXIdentifier"&&m.node.name.name==="style"&&(p??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot use inline style attributes.",file:u.path},m.stop())},JSXOpeningElement(m){m.node.name.type==="JSXIdentifier"&&m.node.name.name.toLowerCase()==="style"&&(p??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot declare style elements.",file:u.path},m.stop())}}),p)return{ok:!1,error:p}}let c=s.get(n);return c?LE(c,r)?jE(n,a).size!==e.length?zs("MATERIALIZATION_ENTRY_INVALID","Every controlled source file must be reachable from the entry module.",n):{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:Ws,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}:zs("MATERIALIZATION_EXPORT_MISSING","Static prefab entry does not declare the manifest export.",n):zs("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must resolve to a controlled source file.",n)}function Ad(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=rr.posix.normalize(rr.posix.join(rr.posix.dirname(e.importer),e.source));if(t===e.instanceRoot||!t.startsWith(`${e.instanceRoot}/`))return{allowed:!1};let r=[t,`${t}.ts`,`${t}.tsx`,...["ts","tsx"].map(o=>`${t}/index.${o}`)].find(o=>e.filePaths.has(o));return r?{allowed:!0,internalPath:r}:{allowed:!1}}function LE(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 jE(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 zs(e,t,n){return{ok:!1,error:{code:e,message:t,...n?{file:n}:{}}}}function BE(e){let t=Od(e);return t===Ws?t:null}function VE(e){let t=e.trim().toLowerCase();return PE.test(t)?t:null}function Md(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 RE.test(t)?t:null}function Od(e){if(!e||e.startsWith("/")||e.includes("\\"))return null;let t=rr.posix.normalize(e);return t==="."||t.startsWith("../")||t.includes("/../")||t.includes("//")?null:t}function UE(e){let t=Od(e);return!t||t!==e?null:t}function _d(...e){return rr.posix.join(...e)}function Nd(e){return new Set(e.map(t=>t.pathTemplate))}function $E(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 KE(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Td(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}}function Vd(e){let t=null,n=new WeakMap;async function r(){return t??=JE(e),t}return{async prepareAppend(o){let i=await e.readIndex(),s=await e.stageAppend(Bd(o),{durableManifest:!1}),a;try{a=await e.previewStagedAppend(s.entryId,i.digest)}catch(l){throw await e.discardStage(s.stageId),l}let c={kind:"append",entry:o,historyTransition:a};return n.set(c,{expectedDigest:i.digest,stageId:s.stageId,entryId:s.entryId}),c},async prepareUndo(){let i=(await r()).undo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("undo entry is missing from index");let c=a-1,l=await e.previewCursor(c,s.digest),u={kind:"undo",entry:i,historyTransition:l};return n.set(u,{expectedDigest:s.digest,cursor:c}),u},async prepareRedo(){let i=(await r()).redo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("redo entry is missing from index");let c=a,l=await e.previewCursor(c,s.digest),u={kind:"redo",entry:i,historyTransition:l};return n.set(u,{expectedDigest:s.digest,cursor:c}),u},async publishPrepared(o){let i=n.get(o);if(!i)throw new Error("history mutation was not prepared");let s=await r();if(o.kind==="append"){if(!i.entryId)throw new Error("staged entry id is missing");let a=await e.publishStagedAppend(i.entryId,i.expectedDigest,i.stageId);Dd(a,o.historyTransition),o.entry.historyId=i.entryId,s.entryIds=[...a.entryIds],s.cursor=a.cursor,s.undo.push(o.entry),s.redo.length=0}else{if(i.cursor===void 0)throw new Error("prepared cursor is missing");let a=await e.setCursor(i.cursor,i.expectedDigest);if(Dd(a,o.historyTransition),o.kind==="undo"){if(s.undo.at(-1)!==o.entry)throw new Error("undo state changed before publish");s.undo.pop(),s.redo.push(o.entry)}else{if(s.redo.at(-1)!==o.entry)throw new Error("redo state changed before publish");s.redo.pop(),s.undo.push(o.entry)}s.cursor=i.cursor}n.delete(o)},async discardPrepared(o){let i=n.get(o);if(!i)return;let s=o.historyTransition;if(s){let a=await e.readIndex();if(a.digest===s.publishedIndexDigest&&a.cursor===s.publishedCursor&&a.currentId===s.publishedCurrentId)throw new Error("cannot discard a history mutation whose index was published")}i.stageId&&await e.discardStage(i.stageId),n.delete(o)},async peekUndo(){return(await r()).undo.at(-1)??null},async pushUndo(o){let i=await r(),s=o;if(s.historyId){let l=i.entryIds.indexOf(s.historyId);if(l>=0)try{await e.setCursor(l),i.undo.push(o),i.cursor=l;return}catch(u){throw i.redo.push(o),u}}let a=await e.append(Bd(o)),c=a.currentId;if(!c)throw new Error("history store did not publish an entry");o.historyId=c,i.entryIds=[...a.entryIds],i.cursor=a.cursor,i.undo.push(o),i.redo.length=0},async popUndo(){return(await r()).undo.pop()??null},async peekRedo(){return(await r()).redo.at(-1)??null},async pushRedo(o){let i=await r(),s=o;if(!s.historyId)throw i.undo.push(o),new Error("cannot move an unpersisted history entry to redo");let a=i.entryIds.indexOf(s.historyId);if(a<0)throw i.undo.push(o),new Error("history entry is missing from the durable index");try{await e.setCursor(a-1),i.cursor=a-1,i.redo.push(o)}catch(c){throw i.undo.push(o),c}},async popRedo(){return(await r()).redo.pop()??null},async clearRedo(){(await r()).redo.length=0},async getStatus(){let o=await e.readStatus();return{canUndo:o.canUndo,canRedo:o.canRedo,undoDepth:o.undoDepth,redoDepth:o.redoDepth,recoveryRequired:o.recoveryRequired}},async markRecoveryRequired(o){await e.markRecoveryRequired(o)}}}function Dd(e,t){if(!t)throw new Error("durable history transition is missing");if(e.digest!==t.publishedIndexDigest||e.cursor!==t.publishedCursor||e.currentId!==t.publishedCurrentId)throw new Error("durable history published an unexpected index state")}async function JE(e){let t=await e.readIndex(),n=await Promise.all(t.undoIds.map(async o=>Ld(e,o))),r=await Promise.all(t.redoIds.map(async o=>Ld(e,o)));return{undo:n.reverse(),redo:r.reverse(),entryIds:[...t.entryIds],cursor:t.cursor}}async function Ld(e,t){let n=await e.readEntry(t),r=XE(n);return{historyId:t,operationId:r.operationId,kind:r.kind,target:r.target,...r.selectionRef?{selectionRef:r.selectionRef}:{},preSnapshots:await jd(e,n,r.preSnapshots),postSnapshots:await jd(e,n,r.postSnapshots)}}async function jd(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(HE(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function Bd(e){let t=[],n=(o,i)=>o.map((s,a)=>{let c={file:s.file,exists:s.exists!==!1,version:s.version,...s.sha256?{sha256:s.sha256}:{}};if(c.exists){let l=`${i}-${a}`;c.blobName=l,t.push({name:l,data:s.content})}return c}),r={operationId:e.operationId,kind:e.kind,target:e.target,...e.selectionRef?{selectionRef:e.selectionRef}:{},preSnapshots:n(e.preSnapshots,"pre"),postSnapshots:n(e.postSnapshots,"post")};return{kind:"site-edit-operation",manifest:JSON.parse(JSON.stringify(r)),blobs:t}}function XE(e){if(!zE(e.manifest))throw new Error("durable history manifest is not an object");return e.manifest}function HE(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function zE(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import Ud from"node:path";function Gs(){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 Kd(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=ZE(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 Io(e){let t=()=>WE(e);return e.mutex?e.mutex.runExclusive(t):t()}async function WE(e){let t=await Kd(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=YE(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 Ys({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 Ys({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 Ys({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 $d("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return $d("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 YE(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 Ys(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:GE(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 $d(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function GE(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 ZE(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)||Ud.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=Ud.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}}function Zs(e,t){let n=new Map(e);for(let r of t)n.delete(r);return n}function kn(e,t){e.clear();for(let[n,r]of t)e.set(n,r)}function Qs(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function qs(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 Jd(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function QE(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var or=class extends Error{constructor(t){let n=t.map(Jd);super(QE(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function Xd(e,t){let n=t instanceof Error&&t.message?t.message:String(t);return t instanceof or?{routeId:e,message:n,diagnostics:t.diagnostics.map(Jd)}:{routeId:e,message:n}}function ea(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function Hd(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 iS=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,sS=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],zd=32,Wd=256,Yd={maxEntries:50,maxBytes:8*1024*1024};function aS(){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 Eo(t,n)},async deleteFile(t){await(await import("node:fs/promises")).rm(t,{force:!0})},async exists(t){let n=await import("node:fs/promises");try{return await n.access(t),!0}catch{return!1}},getVersion(t){return e.get(t)??1},bumpVersion(t){let n=(e.get(t)??1)+1;return e.set(t,n),n}}}function cS(){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>Yd.maxEntries||lS(e)>Yd.maxBytes;)e.shift()}}function lS(e){return e.reduce((t,n)=>t+uS(n),0)}function uS(e){return Gd(e.preSnapshots)+Gd(e.postSnapshots)}function Gd(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function Zd(e,t){return{routeId:e,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}}function dS(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=Ke(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}}var Co=class extends Error{constructor(t){super(t.reason),this.result=t}},Yt=class extends Error{constructor(t){super(ea(t)),this.failedRoutes=t}};function Qd(e,t){if(!e)return;let n=[...t];if(n.some(o=>o?.entries.some(i=>i.key===e.key)))return e;let r=Ke(e.key)??e.key;for(let o of n){let i=o?.entries.find(s=>(Ke(s.key)??s.key)===r);if(i)return{...e,key:i.key}}return e}var fS=/\.(?:[cm]?[jt]sx?)$/i,pS=/\.json$/i,mS=/\.(?:css|scss|sass)$/i,hS=/\.mdx$/i,gS=/\.ya?ml$/i;function yS(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 xS(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function ES(e,t){let n=new Map;for(let r of t)n.set(r.path,r.operation==="delete"?{exists:!1}:{exists:!0,content:r.content});return{async readFile(r){let o=n.get(r);if(o){if(!o.exists)throw new Error(`Source file not found: ${r}`);return o.content}return e.readFile(r)},async writeFile(){throw new Error("Source edit preflight overlay is read-only.")},async deleteFile(){throw new Error("Source edit preflight overlay is read-only.")},async exists(r){let o=n.get(r);return o?o.exists:e.exists(r)},async getFileInfo(r){let o=n.get(r);return o?o.exists?{path:r,sizeBytes:Buffer.byteLength(o.content,"utf8")}:null:e.getFileInfo?.(r)??null},async listFiles(r={}){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let o=bS(await e.listFiles(r)),i=new Map(o.files.map(a=>[a.path,a]));for(let[a,c]of n)if(SS(a,r.roots??[])){if(!c.exists){i.delete(a);continue}i.set(a,{path:a,sizeBytes:Buffer.byteLength(c.content,"utf8")})}let s=[...i.values()].sort((a,c)=>a.path.localeCompare(c.path));return o.truncated?{files:s,truncated:o.truncated}:s},getVersion(r){return e.getVersion(r)},bumpVersion(r){return e.getVersion(r)}}}function SS(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function bS(e){return Array.isArray(e)?{files:e}:e}function IS(e){if(!tS(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!==rS||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=eS(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(fS.test(e.path)){let t=rt({source:e.content,profile:Dt({filePath:e.path,source:e.content})});if(!t.ok)return{ok:!1,errorCode:"ast-error",message:t.diagnostic.message,details:{path:e.path}}}if(pS.test(e.path))try{JSON.parse(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`JSON parse failed: ${_e(t)}`,details:{path:e.path}}}if(mS.test(e.path)){let t=qd({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(hS.test(e.path)){let t=qd({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(gS.test(e.path))try{oS(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`YAML parse failed: ${_e(t)}`,details:{path:e.path}}}return{ok:!0}}function qd({content:e,path:t,profile:n}){let r=[],o=null,i=!1,s=!1,a=!1,c=!1,l=!0;for(let d=0;d<e.length;d+=1){let p=e[d]??"",m=e[d+1]??"";if(n==="mdx"&&l&&e.startsWith("```",d)){c=!c;let E=e.indexOf(`
|
|
5
|
-
`,d);if(
|
|
6
|
-
`||
|
|
7
|
-
`||
|
|
8
|
-
`||
|
|
9
|
-
`||
|
|
10
|
-
`||
|
|
11
|
-
`||p==="\r"}if(s)return vn(t,`Unterminated block comment in ${t}.`);if(o)return vn(t,`Unterminated string literal in ${t}.`);if(c)return vn(t,`Unterminated MDX code fence in ${t}.`);let u=r.at(-1);return u?vn(t,`Unclosed token "${u.char}" in ${t}.`):{ok:!0}}function vn(e,t){return{ok:!1,errorCode:"ast-error",message:t,details:{path:e}}}function sr(e){let t="idle",n=e.fileSystem??aS(),r=vd(),o=new Map,i=new Map,s=null,a=new Set,c=null,l=e.history??(e.historyStore?Vd(e.historyStore):cS()),u=kd(n,{externalAdapters:e.externalAdapters}),d=new Map,p=Math.max(0,e.initialDocumentVersion??0),m=0,E=e.historyStore?.recoveryRequired??!1,b=Gs(),v=G();function C(f){return(ko.isAbsolute(f)?ko.relative(e.projectRoot,f):f).replace(/\\/g,"/").replace(/^\.\//,"")}function A(f,y){let g=ko.posix.dirname(f),I=y.replace(/\.(?:tsx?|jsx?)$/i,""),P=ko.posix.relative(g,I);return P.startsWith(".")?P:`./${P}`}function N(f,y){return f.startLine===y.startLine&&f.startColumn===y.startColumn&&f.endLine===y.endLine&&f.endColumn===y.endColumn}async function G(){let f=e.historyStore;if(f)try{let y=await f.readTransactionJournal();if(!y)return;let g=await f.readIndex(),I=await Promise.all(y.files.map(async T=>await n.exists(T.path)?ae(await n.readFile(T.path)):null));if(Hd({journal:y,index:g,observedFileDigests:I})!=="ambiguous"){await f.clearTransactionJournal(y.transactionId);let T=await f.readStatus();T.recoveryRequired||(await f.cleanupTmp(),T=await f.readStatus()),E=T.recoveryRequired;return}await f.markRecoveryRequired(`Ambiguous transaction journal ${y.transactionId} at phase ${y.phase}`),E=!0}catch(y){E=!0,await f.markRecoveryRequired(`Transaction journal recovery failed: ${_e(y)}`).catch(()=>{})}}function fe(){return t==="disposed"}if(e.onEvent&&r.subscribe(e.onEvent),e.routes)for(let f of e.routes){let y=Zd(f.routeId,f.entryFile);o.set(f.routeId,y),ue(y,y.dependencyFiles)}function ue(f,y){let g=new Set(y);R(f),f.dependencyFiles=g;for(let I of f.dependencyFiles){let P=i.get(I);P||(P=new Set,i.set(I,P)),P.add(f.routeId)}}function R(f){for(let y of f.dependencyFiles){let g=i.get(y);g&&(g.delete(f.routeId),g.size===0&&i.delete(y))}f.dependencyFiles.clear()}function _(f){let y=new Set;for(let g of f)for(let I of i.get(g)??[])y.add(I);return y}function D(f){for(let y of f)if(!i.has(y))return!1;return!0}async function L(f,y,g,I,P){let T=new Map,j=Ru(P.values()),M=new Map,F=typeof n.exists=="function"?V=>n.exists(V):async()=>!1;for(let[V,X]of f.elements){let Y=y.nodes.get(V);if(!Y)continue;let ee=g.get(X.sourceFile)??I.get(X.sourceFile),w=new Map,O=new Map,z=new Map,pe=[];for(let de of X.textSegments){if(!ee){w.set(de.index,null);continue}let wn=await Pu({file:X.sourceFile,source:ee,segment:de,readFile:He=>n.readFile(He),exists:F,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:He,adapterId:Yo,capabilities:Go})=>({sourceType:He,adapterId:Yo,capabilities:Go})),functionCallContracts:e.functionCallContracts,fileCache:j}),ke=await Ss({file:X.sourceFile,source:ee,target:{kind:"text-segment",segment:de},readFile:He=>n.readFile(He),exists:F,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:He,adapterId:Yo,capabilities:Go})=>({sourceType:He,adapterId:Yo,capabilities:Go})),functionCallContracts:e.functionCallContracts,fileCache:j}),qt=yS(wn);w.set(de.index,qt),O.set(de.index,wn),z.set(de.index,ke),pe.push({editable:de.editable,source:qt})}let se=new Map;if(ee)for(let de of X.attributes??[]){let wn=await wu({file:X.sourceFile,source:ee,sourceRange:de.sourceRange,expression:de.source?.expression??de.value,sourceInfo:de.source,readFile:ke=>n.readFile(ke),exists:F,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:ke,adapterId:qt,capabilities:He})=>({sourceType:ke,adapterId:qt,capabilities:He})),functionCallContracts:e.functionCallContracts,fileCache:j});se.set(de.name,wn)}let ye=rl(xS(Y.writeTarget),pe),xr=cl({key:V,element:X,graph:f,provenances:z}),we=fl(X),Er=pl(X),Sr=ml(X),Qt=ee?await nd({element:X,graph:f,file:X.sourceFile,source:ee,readFile:de=>n.readFile(de),exists:F,fileCache:M}):void 0,Mt=f.regions.find(de=>de.kind==="conditional-region"&&de.childKeys.includes(V)),Fe,Pn=Mt?.sourceCandidates?.[0];if(ee&&Mt&&Pn?.kind==="conditional-branch"){let de=await Ss({file:X.sourceFile,source:ee,target:{kind:"conditional-branch",candidate:Pn},readFile:ke=>n.readFile(ke),exists:F,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:ke,adapterId:qt,capabilities:He})=>({sourceType:ke,adapterId:qt,capabilities:He})),functionCallContracts:e.functionCallContracts,fileCache:j});Fe={currentBranch:Mt.childKeys.indexOf(V)<=0?"then":"else",availableBranches:Mt.childKeys.length>1?["then","else"]:["then"],conditionExpression:Pn.conditionExpression,provenance:{finalSource:de.finalSource?{kind:de.finalSource.kind,file:de.finalSource.file,displayPath:de.finalSource.displayPath}:null,chain:de.chain.map(ke=>({kind:ke.kind,file:ke.file,displayName:ke.displayName,canEditHere:ke.canEditHere})),confidence:de.confidence,editMode:de.editMode,diagnostics:de.diagnostics.map(ke=>({code:ke.code,message:ke.message}))}}}T.set(V,{textSources:w,textTargets:O,elementPropertyTargets:se,provenances:z,writeTarget:ye,componentSemantic:xr,contentModel:we,mediaModel:Er,styleSource:Sr,conditional:Fe,dynamicData:Qt})}return T}function Z(f){return typeof n.getVersion=="function"?n.getVersion(f):0}function Q(f,y){let g=1;for(let I of y.values())g=Math.max(g,I);return Math.max(g,f.graph?.version??0)}async function he(f,y,g={}){let I=o.get(f);if(!I)return null;let P=g.sourceCache??Zs(d,[]),T=await W(I.entryFile),{graph:j,allSources:M,diagnostics:F,parsedModules:V,entryModule:X}=await qa(I.entryFile,y,Fe=>n.readFile(Fe),typeof n.exists=="function"?Fe=>n.exists(Fe):async()=>!1,{additionalEntries:T,version:I.graph?.version??1});if(F.length>0)throw new or(F);let Y=new Map;for(let Fe of M.keys())Y.set(Fe,Z(Fe));let ee=Math.max(Q(I,Y),g.minimumVersion??0,p);g.changed&&ee<=(I.graph?.version??0)&&(ee=(I.graph?.version??0)+1),j.version=ee;for(let[Fe,Pn]of M)qs(P,Fe,Pn,Wd);let w=await q(I.entryFile,M,P);j.routeId=f;let O=ec(j),z=nc(O,j),pe=await L(j,O,M,P,V),se=Mf(j,z,pe),ye=ht(pe),xr=MS(Qc(j,O,z,{canUpdateTextByKey:se,dynamicDataSummaryByKey:ye}),j,pe),we=Jc({route:f,entryFile:I.entryFile,version:ee,source:y,ast:X?.ast}),Er=Xc(we);we.ok&&kS(xr,j,we.projection);let Sr={...xr,...w?{styleContext:w}:{},pageComposition:Er},Qt=new Set([I.entryFile,...M.keys()]);if(w){Qt.add(w.entryCss.path);for(let Fe of w.stylesheets)Qt.add(Fe.path)}let Mt={...I,dependencyFiles:Qt,graph:j,topology:O,capabilities:z,document:Sr,pageComposition:Er,pageCompositionProjection:we.projection,pagePlacementByKey:we.ok?we.projection.placementByKey:null,pagePlacementUnitByKey:we.ok?we.projection.placementUnitByKey:null,pageUnitByKey:we.ok?we.projection.unitByKey:null,pagePlacementsByUnitKey:we.ok?we.projection.placementsByUnitKey:null,documentIndex:dS(Sr),detailProjections:pe,fileVersions:Y,styleContext:w};return g.publish===!1?Mt:(kn(d,P),p=Math.max(p,ee),ue(I,Qt),Object.assign(I,Mt),I)}async function W(f){let y=[];for(let g of PS(f))typeof n.exists=="function"&&await n.exists(g)&&y.push({file:g,source:await n.readFile(g)});return y}async function q(f,y,g){let I=[];for(let[F,V]of y){if(na(F)){I.push(F);continue}for(let X of AS(V)){let Y=nf(F,X);Y&&I.push(Y)}}if(!I.length){for(let F of wS(f))if(await at(F)){I.push(F);break}}let P=new Map,T=af(I).slice(0,zd);for(;T.length>0&&P.size<zd;){let F=T.shift();if(P.has(F)||!na(F))continue;let V=await ge(F,g);if(V!==null){P.set(F,{path:F,content:V});for(let X of NS(V)){let Y=nf(F,X);Y&&!P.has(Y)&&!T.includes(Y)&&T.push(Y)}}}let j=[...P.values()].map(F=>({...F,hash:ae(F.content)})),M=j[0];return M?{revision:ae(JSON.stringify(j.map(({path:F,hash:V})=>({path:F,hash:V})))),entryCss:M,stylesheets:j.slice(1)}:null}async function ge(f,y){let g=y.get(f);if(g!==void 0)return g;if(!await at(f))return null;let I=await n.readFile(f);return qs(y,f,I,Wd),I}async function at(f){return typeof n.exists=="function"?n.exists(f):!1}function ht(f){let y=new Map;for(let[g,I]of f)I.dynamicData?.bindings.length&&y.set(g,pd(I.dynamicData.bindings));return y}function Mf(f,y,g){let I=new Map;for(let[P,T]of f.elements){if(!y.get(P)?.canUpdateText){I.set(P,!1);continue}let M=g.get(P),F=T.textSegments.some(V=>{if(!V.editable)return!1;let X=M?.provenances.get(V.index)??null;return!X||Of(X)});I.set(P,F)}return I}function Of(f){return f.editMode==="direct"||f.editMode==="proxy"||f.editMode==="upstream"}async function mr(f,y={}){let g=[...new Set(f)],I=_(g);if(I.size===0||!D(g))for(let M of o.values())Pa(M,g)&&I.add(M.routeId);let P=I.size===0&&g.some(tf),T=y.publish===!1?Zs(d,g):void 0,j={rebuiltRoutes:[],failedRoutes:[],...y.publish===!1?{candidateRouteStates:[],candidateSourceCache:T}:{}};for(let M of o.values())if(I.has(M.routeId)||P)try{let V=!!M.graph,X=await n.readFile(M.entryFile),Y=await he(M.routeId,X,{...y,...T?{sourceCache:T}:{}});Y?.graph&&(j.rebuiltRoutes.push({documentChanged:V,routeId:M.routeId,version:Y.graph.version}),j.candidateRouteStates?.push({routeId:M.routeId,state:Y}))}catch(V){j.failedRoutes.push(Xd(M.routeId,V))}return j}function Ra(f){let y=[...new Set(f)],g=_(y);if(g.size>0&&D(y))return[...g];for(let I of o.values())Pa(I,y)&&g.add(I.routeId);return[...g]}function Ko(f,y){r.emit({type:"operation-completed",result:f});for(let{routeId:g,version:I}of y.rebuiltRoutes)r.emit({type:"document-changed",routeId:g,version:I});for(let{routeId:g,message:I}of y.failedRoutes)r.emit({type:"graph-error",routeId:g,message:I})}function Pa(f,y){return y.some(g=>f.dependencyFiles.has(g)||f.entryFile===g||f.graph?.fileIndex.has(g))}function wa(f){for(let y of f)a.add(y);c||fe()||(c=(async()=>{t="building";let y=!1;try{for(;a.size>0;){if(fe())return;await _f();let g=[...a];a.clear();let I=await Aa(g);if(I.length===0)continue;let P=Ra(I);for(let M of P)r.emit({type:"graph-invalidated",routeId:M});let{rebuiltRoutes:T,failedRoutes:j}=await mr(I,{changed:!0});for(let{documentChanged:M,routeId:F,version:V}of T)r.emit({type:"graph-ready",routeId:F,version:V}),M&&r.emit({type:"document-changed",routeId:F,version:V});for(let{routeId:M,message:F}of j)y=!0,r.emit({type:"graph-error",routeId:M,message:F})}}finally{if(c=null,t!=="disposed"){let g=s?o.get(s):null;t=!y&&g?.graph?"ready":"idle"}a.size>0&&wa([])}})())}async function _f(){for(;m>0;)await new Promise(f=>setTimeout(f,0))}async function Aa(f){let y=[];for(let g of new Set(f)){let I=d.get(g);if(I===void 0){y.push(g);continue}try{await n.readFile(g)!==I&&y.push(g)}catch{y.push(g)}}return y}async function Na(f){let y=await Aa(f);if(y.length===0)return;let g=Ra(y);for(let T of g)r.emit({type:"graph-invalidated",routeId:T});let{rebuiltRoutes:I,failedRoutes:P}=await mr(y,{changed:!0});for(let{documentChanged:T,routeId:j,version:M}of I)r.emit({type:"graph-ready",routeId:j,version:M}),T&&r.emit({type:"document-changed",routeId:j,version:M});for(let{routeId:T,message:j}of P)r.emit({type:"graph-error",routeId:T,message:j})}async function Df(f,y){let g=Rn(f,y);if(!g?.graph)return;let I=Ke(f)??f,P=g.graph.elements.get(I);P&&await Na([P.sourceFile])}async function Ta(f){let y=new Set;if(f.target.kind==="node"){let g=Rn(f.target.key,f.routeId),I=Ke(f.target.key)??f.target.key,P=g?.graph?.elements.get(I);P&&y.add(P.sourceFile)}else if(f.target.kind==="route"){let g=o.get(f.target.routeId);g&&y.add(g.entryFile)}else if(f.target.kind==="page-unit"){let g=o.get(f.target.routeId);g&&y.add(g.entryFile)}else if(f.target.kind==="source-file")y.add(f.target.path);else if(f.target.kind==="source-batch")for(let g of f.target.paths)y.add(g);await Na(y)}async function Lf(f){if(f.params.kind!=="source-edit")return Jo(f,"invalid-params","source-edit requires source-edit params");for(let y of f.params.edits){let g=IS(y);if(!g.ok)return Jo(f,g.errorCode,g.message,g.details)}m+=1;try{let y=await Uf(f.params.edits);if(!y.ok)return Jo(f,y.errorCode,y.message,y.details);let g={operationId:f.id,kind:"source-edit",target:f.target,documentVersion:f.documentVersion,conflictPolicy:f.params.conflictPolicy,edits:f.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 hr({request:f,filePlan:g})}catch(y){return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:B.INTERNAL_ERROR,message:_e(y)}}}finally{m-=1}}async function jf(f,y){if(f.kind!=="insert-child"||f.params.kind!=="insert-child")return oe(f,B.UNSUPPORTED_OPERATION,"Only page-unit insert-child is currently supported by the page composition transaction.");if(!("kind"in f.params.position)||f.params.position.kind!=="page-composition")return oe(f,B.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.");if(f.params.position.documentVersion!==f.documentVersion)return oe(f,B.VERSION_STALE,"Page-unit insert-child placement belongs to a different document version.");let g=y.document,I=y.pageCompositionProjection;if(!g||g.pageComposition?.status!=="supported"||!I||I.status!=="supported")return oe(f,B.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(f.documentVersion!==g.version||I.documentVersion!==g.version)return oe(f,B.VERSION_STALE,`Document version ${f.documentVersion} is stale (current: ${g.version}).`);let P=f.params.node.kind==="component-call"?f.params.node.materialization:void 0;if(!P)return oe(f,B.UNSUPPORTED_OPERATION,"Page-unit insertion currently requires a static materialization manifest.");let T=f.params.position,j=await Fd({manifest:P,generatedRoot:"components/site/generated",controlledFiles:P.files.map(M=>({pathTemplate:M.pathTemplate})),exists:M=>n.exists(M),commit:async M=>{let F=await n.readFile(y.entryFile),V=y.document,X=y.pageCompositionProjection;if(!V||V.pageComposition?.status!=="supported"||V.version!==f.documentVersion||!X||X.status!=="supported"||X.documentVersion!==V.version)return{ok:!0,data:oe(f,B.VERSION_STALE,"The route changed before the page-unit insertion could commit.")};let Y=M.entry.path,ee=Wf(M.instanceName),w=Ai({routeId:y.routeId,entryFile:y.entryFile,currentDocumentVersion:V.version,expectedDocumentVersion:f.documentVersion,source:F,projection:X,placementKey:T.placementKey,component:{source:Y,exportName:M.entry.export.kind==="default"?"default":M.entry.export.name,localName:ee}});if(!w.ok)return{ok:!0,data:oe(f,Ba(w.error.code),w.error.message,{diagnostics:w.error.diagnostics})};let O=w.plan.returnStep?Bc({source:F,jsx:w.plan.returnStep.node.jsx,placement:w.plan.returnStep.placement,...w.plan.returnStep.replaceOriginal?{replaceOriginal:!0}:{}}):w.plan.insertStep?.parentLocator?un({source:F,locator:w.plan.insertStep.parentLocator,node:w.plan.insertStep.node,placement:w.plan.insertStep.placement,...w.plan.insertStep.anchorLocator?{anchorLocator:w.plan.insertStep.anchorLocator}:{}}):{ok:!1,source:F,diagnostic:{code:"unsupported-syntax",message:"Route composition rewrite has no insertion step."}};if(!O.ok)return{ok:!0,data:oe(f,B.AST_PARSE_ERROR,O.diagnostic.message)};let z=pn({source:O.source,moduleSpecifier:w.plan.importStep.moduleSpecifier,imports:w.plan.importStep.imports});if(!z.ok)return{ok:!0,data:oe(f,B.AST_PARSE_ERROR,z.diagnostic.message)};let pe=M.files.map(ye=>({operation:"create-only",file:ye.path,content:ye.content})),se=[{operation:"upsert",file:y.entryFile,content:z.source,baseContentHash:ae(F)},...pe];m+=1;try{let ye=await hr({request:f,filePlan:{operationId:f.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:f.documentVersion,conflictPolicy:"compare-and-swap",edits:se}});return!ye.ok&&ye.error?.message.includes("MATERIALIZATION_INSTANCE_CONFLICT")?{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:ye.error?.message??"Static prefab instance conflicted during commit."}}:{ok:!0,data:ye}}finally{m-=1}}});return j.ok?j.data:oe(f,B.VERSION_STALE,j.error.message,{materializationCode:j.error.code})}async function Bf(f,y){if(f.kind!=="move-node"&&f.kind!=="remove-node")return oe(f,B.UNSUPPORTED_OPERATION,"Only page-unit move-node and remove-node are currently supported by the page composition transaction.");let g=y.document,I=y.pageCompositionProjection;if(!g||g.pageComposition?.status!=="supported"||!I||I.status!=="supported")return oe(f,B.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(f.documentVersion!==g.version||I.documentVersion!==g.version)return oe(f,B.VERSION_STALE,`Document version ${f.documentVersion} is stale (current: ${g.version}).`);let P=await n.readFile(y.entryFile),T=Vc({routeId:y.routeId,entryFile:y.entryFile,currentDocumentVersion:g.version,expectedDocumentVersion:f.documentVersion,source:P,projection:I,placementUnitKey:f.target.placementUnitKey,operation:f.kind,targetPlacement:f.kind==="move-node"&&f.params.kind==="move-node"&&"kind"in f.params.target&&f.params.target.kind==="page-composition"?f.params.target:void 0});if(!T.ok)return oe(f,Ba(T.error.code),T.error.message,{diagnostics:T.error.diagnostics});let j=T.plan.rewriteStep.kind==="move-node"?fn({source:P,locator:T.plan.rewriteStep.locator,targetParentLocator:T.plan.rewriteStep.targetParentLocator,placement:T.plan.rewriteStep.placement,...T.plan.rewriteStep.anchorLocator?{anchorLocator:T.plan.rewriteStep.anchorLocator}:{}}):cn({source:P,locator:T.plan.rewriteStep.locator});if(!j.ok)return oe(f,B.AST_PARSE_ERROR,j.diagnostic.message);let M=j.source,F=[];if(f.kind==="remove-node"){let X=await Vf({routeState:y,placementUnitKey:f.target.placementUnitKey,source:P,mutatedSource:M});M=X.source,F=await Promise.all(X.files.map(async Y=>({operation:"delete",file:Y,baseContentHash:ae(await n.readFile(Y))})))}let V=[{operation:"upsert",file:y.entryFile,content:M,baseContentHash:ae(P)},...F];m+=1;try{return await hr({request:f,filePlan:{operationId:f.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:f.documentVersion,conflictPolicy:"compare-and-swap",edits:V}})}finally{m-=1}}async function Vf(f){let y={source:f.mutatedSource,files:[]},g=f.routeState.graph,I=f.routeState.pageCompositionProjection;if(!g||!I||I.status!=="supported"||!n.listFiles)return y;let T=I.placementUnitByKey.get(f.placementUnitKey)?.sourceRange;if(!T)return y;let j=[...g.elements.values()].find(se=>se.sourceFile===f.routeState.entryFile&&se.importedFrom&&N(se.sourceRange,T));if(!j?.importedFrom||!j.exportName)return y;let M=C(j.importedFrom),F="components/site/generated/";if(!M.startsWith(F))return y;let V=M.slice(F.length).split("/")[0];if(!V||!/-[0-9a-f]{8}$/i.test(V))return y;let X=`${F}${V}`;if([...g.elements.values()].filter(se=>se.sourceFile===f.routeState.entryFile&&C(se.importedFrom??"")===M).length!==1)return y;let ee=await n.listFiles({maxFiles:5e3,maxDepth:32}),w=Array.isArray(ee)?ee:ee.files;if(!Array.isArray(ee)&&ee.truncated)return y;let O=w.map(({path:se})=>se).filter(se=>se===X||se.startsWith(`${X}/`));if(O.length===0||!O.includes(M))return y;for(let{path:se}of w)if(!(se===f.routeState.entryFile||se===X||se.startsWith(`${X}/`)))try{if((await n.readFile(se)).includes(V))return y}catch{return y}let z=A(f.routeState.entryFile,M),pe=mn({source:f.mutatedSource,moduleSpecifier:z,imports:j.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:j.exportName}]});return pe.ok?{source:pe.source,files:O.sort((se,ye)=>se.localeCompare(ye))}:y}async function Uf(f){if(n.getFileInfo){for(let P of f)if(await n.exists(P.path)&&await n.getFileInfo(P.path)===null)return{ok:!1,errorCode:"invalid-params",message:`Source edit path must resolve to a regular non-symbolic-link file: ${P.path}`,details:{path:P.path}}}let y=$f(f);if(y.length===0)return{ok:!0};let g=ES(n,f),I=sr({projectRoot:e.projectRoot,fileSystem:g,routes:[...o.values()].map(P=>({routeId:P.routeId,entryFile:P.entryFile})),externalAdapters:e.externalAdapters,externalSourceResolvers:e.externalSourceResolvers,functionCallContracts:e.functionCallContracts,dev:e.dev});try{for(let P of y)await I.setActiveRoute(P)}catch(P){return{ok:!1,errorCode:"ast-error",message:`Source edit preflight failed: ${_e(P)}`,details:{routeIds:y}}}finally{I.dispose()}return{ok:!0}}function $f(f){return f.map(g=>g.path).some(tf)?[...o.keys()]:[]}function Jo(f,y,g,I){let P=ir(y);return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:P,message:g,...I?{details:I}:{}}}}async function Xo(f){let y=[];for(let g of new Set(f))y.push(await Kf(g));return y}async function Kf(f){if(!(typeof n.exists=="function"?await n.exists(f):!0))return{file:f,content:"",version:Math.max(0,Z(f)),exists:!1};let g=await n.readFile(f);return{file:f,content:g,version:Math.max(1,Z(f)),exists:!0,sha256:ae(g)}}async function Fa(f,y,g,I){if(!e.historyStore)return null;let P=I.historyTransition;if(!P)throw new Error("Durable history did not provide an exact index transition.");let T=new Map(y.map(F=>[F.file,F])),j=new Map(g.map(F=>[F.file,F])),M=[...new Set([...T.keys(),...j.keys()])].sort().map(F=>{let V=T.get(F),X=j.get(F);return{path:F,preDigest:V?.exists===!1||!V?null:ae(V.content),postDigest:X?.exists===!1||!X?null:ae(X.content)}});return{schemaVersion:2,transactionId:`${f}:${P.expectedIndexDigest}`,operationId:f,phase:"prepared",historyTransition:P,files:M}}async function Ma(f){return!f||!e.historyStore||await e.historyStore.writeTransactionJournal(f),f}async function Zt(f){f&&e.historyStore&&await e.historyStore.clearTransactionJournal(f.transactionId)}async function Ho(f,y){let g=[];try{for(let I of f)await Oa(I),typeof n.bumpVersion=="function"&&n.bumpVersion(I.file),g.push(I.file)}catch(I){let P=await Jf(y.filter(T=>g.includes(T.file)));return P.ok?{ok:!1,reason:`Writeback failed and committed files were restored: ${_e(I)}`,rolledBack:!0}:{ok:!1,reason:`Writeback failed, then rollback failed for ${P.failedFiles.join(", ")}: ${_e(I)}`,rolledBack:!1}}return{ok:!0,snapshots:f.map(Xf)}}async function Oa(f){if(f.exists===!1){await n.deleteFile(f.file);return}await n.writeFile(f.file,f.content)}async function Jf(f){let y=[];for(let g of f)try{await Oa(g),typeof n.bumpVersion=="function"&&n.bumpVersion(g.file)}catch{y.push(g.file)}return y.length===0?{ok:!0}:{ok:!1,failedFiles:y}}function Xf(f){let y=f.exists!==!1;return{file:f.file,content:y?f.content:"",version:f.version,exists:y,...y?{sha256:ae(f.content)}:{}}}async function hr(f){return b.runExclusive(()=>Hf(f))}async function Hf(f){let y=f.filePlan.edits.map(w=>w.file),g=await Xo(y),I=new Map(g.filter(w=>w.exists!==!1).map(w=>[w.file,w.content])),P=p,T=Da(),j=new Map(d),M=f.filePlan.edits.map(w=>w.operation==="delete"?{file:w.file,content:"",version:0,exists:!1}:{file:w.file,content:w.content,version:0,exists:!0,sha256:ae(w.content)}),F={operationId:f.filePlan.operationId,intents:f.filePlan.edits.map(w=>w.operation==="delete"?{kind:"delete",path:w.file}:{kind:w.operation==="create-only"?"create-only":"upsert",path:w.file,content:w.content})},V=null,X=!1,Y=await Io({overlay:I,exists:w=>n.exists(w),plan:F,buildCandidate:async({plan:w})=>({plan:w}),prepareHistory:async()=>{let w=await l.prepareAppend({operationId:f.request.id,kind:f.request.kind,target:f.request.target,preSnapshots:g,postSnapshots:M,...f.selectionRef?{selectionRef:f.selectionRef}:{}});return V=await Fa(f.request.id,g,M,w),V=await Ma(V),w},reverify:async()=>{},writeCandidate:async()=>{let w=await u.executeFilePlan(f.filePlan);if(!w.ok)throw new Co(w);return{postSnapshots:await Xo(w.affectedFiles),affectedFiles:w.affectedFiles,internalResultVersion:w.resultVersion}},validateCandidate:async({candidate:w,receipt:O})=>{let z=await mr(O.affectedFiles,{changed:!0,minimumVersion:O.internalResultVersion,publish:!1});if(z.failedRoutes.length>0)throw new Yt(z.failedRoutes);let pe=La(T,z.candidateRouteStates??[]),se=Math.max(O.internalResultVersion,...z.rebuiltRoutes.map(ye=>ye.version));return{...w,rebuild:z,routeSnapshots:pe,resultVersion:se,...Qd(f.selectionRef,pe.map(ye=>ye.state.document))?{selectionRef:Qd(f.selectionRef,pe.map(ye=>ye.state.document))}:{}}},publishCandidate:async({candidate:w,history:O,receipt:z})=>{if(!O)throw new Error("history intent is missing");await l.publishPrepared(O),X=!0;let pe=w.resultVersion??z.internalResultVersion;return{requestId:f.request.id,kind:f.request.kind,target:f.request.target,ok:!0,resultVersion:pe,affectedFiles:z.affectedFiles,...w.selectionRef?{selectionRef:w.selectionRef}:{}}},swapCandidate:({candidate:w,receipt:O})=>{w.routeSnapshots&&gr(w.routeSnapshots),w.rebuild?.candidateSourceCache&&kn(d,w.rebuild.candidateSourceCache),Qs(d,O.postSnapshots),p=Math.max(p,w.resultVersion??P)},finalizeCandidate:async()=>{await Zt(V)},emitCommitted:({candidate:w,published:O})=>{Ko(O,w.rebuild??{rebuiltRoutes:[],failedRoutes:[]})},rollbackCandidate:async({history:w,receipt:O})=>{if(X)throw new Error("history was published before transaction finalization failed");if(O){let z=await Ho(g,O.postSnapshots);if(!z.ok)throw new Error(z.reason)}gr(T),kn(d,j),p=P,w&&await l.discardPrepared?.(w),await Zt(V)}});if(Y.ok)return Y.published;if(Y.stage==="precheck"||Y.stage==="build")try{await Zt(V)}catch(w){let O=await yr(_e(w));return oe(f.request,O,"Unable to clear an uncommitted transaction journal.")}if(Y.recoveryRequired){let w=await yr(Y.reason);return oe(f.request,w===B.RECOVERY_PERSIST_FAILED?w:B.ROLLBACK_FAILED,Y.reason)}let ee=Y.error;return ee instanceof Co?{...oe(f.request,ir(ee.result.errorCode),ee.result.reason),...ee.result.affectedFiles?{affectedFiles:ee.result.affectedFiles}:{}}:ee instanceof Yt?oe(f.request,B.ROUTE_REBUILD_FAILED,`Route rebuild failed and source was rolled back: ${ea(ee.failedRoutes)}`,{failedRoutes:ee.failedRoutes}):oe(f.request,ja(Y.stage),_e(ee))}async function _a(f){return b.runExclusive(async()=>{let y=f==="undo"?await l.prepareUndo():await l.prepareRedo();return y?zf(f,y):{requestId:f,kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:p,error:{code:B.INTERNAL_ERROR,message:f==="undo"?"Nothing to undo":"Nothing to redo"}}})}async function zf(f,y){let g=y.entry,I=f==="undo"?g.preSnapshots:g.postSnapshots,P=f==="undo"?g.postSnapshots:g.preSnapshots,T=I.map(O=>O.file),j=await Xo(T),M=new Map(j.filter(O=>O.exists!==!1).map(O=>[O.file,O.content])),F=p,V=Da(),X=new Map(d),Y=null,ee=!1,w=await Io({overlay:M,plan:{operationId:`${f}:${g.operationId}`,intents:I.map(O=>O.exists===!1?{kind:"delete",path:O.file}:{kind:"upsert",path:O.file,content:O.content})},buildCandidate:async()=>({}),prepareHistory:async()=>(Y=await Fa(`${f}:${g.operationId}`,j,I,y),Y=await Ma(Y),y),reverify:async()=>{},writeCandidate:async()=>{let O=await Ho(I,P);if(!O.ok)throw new Error(O.reason);return{snapshots:O.snapshots}},validateCandidate:async({candidate:O})=>{let z=await mr(T,{changed:!0,minimumVersion:p+1,publish:!1});if(z.failedRoutes.length>0)throw new Yt(z.failedRoutes);let pe=La(V,z.candidateRouteStates??[]),se=Math.max(p+1,...z.rebuiltRoutes.map(ye=>ye.version));return{...O,rebuild:z,routeSnapshots:pe,resultVersion:se}},publishCandidate:async({candidate:O,history:z})=>{if(!z)throw new Error("history cursor intent is missing");await l.publishPrepared(z),ee=!0;let pe=O.resultVersion??p+1;return{requestId:f,kind:g.kind,target:g.target,ok:!0,resultVersion:pe,affectedFiles:T}},swapCandidate:({candidate:O,receipt:z})=>{O.routeSnapshots&&gr(O.routeSnapshots),O.rebuild?.candidateSourceCache&&kn(d,O.rebuild.candidateSourceCache),Qs(d,z.snapshots),p=Math.max(p,O.resultVersion??F)},finalizeCandidate:async()=>{await Zt(Y)},emitCommitted:({candidate:O,published:z})=>Ko(z,O.rebuild??{rebuiltRoutes:[],failedRoutes:[]}),rollbackCandidate:async({history:O,receipt:z})=>{if(ee)throw new Error("history cursor was published before transaction finalization failed");if(z){let pe=await Ho(P,z.snapshots);if(!pe.ok)throw new Error(pe.reason)}gr(V),kn(d,X),p=F,O&&await l.discardPrepared?.(O),await Zt(Y)}});if(w.ok)return w.published;if(w.stage==="precheck"||w.stage==="build")try{await Zt(Y)}catch(O){let z=await yr(_e(O));return{requestId:f,kind:g.kind,target:g.target,ok:!1,resultVersion:p,error:{code:z,message:"Unable to clear an uncommitted transaction journal."}}}if(w.recoveryRequired){let O=await yr(w.reason);return{requestId:f,kind:g.kind,target:g.target,ok:!1,resultVersion:p,affectedFiles:T,error:{code:O===B.RECOVERY_PERSIST_FAILED?O:B.ROLLBACK_FAILED,message:w.reason}}}return{requestId:f,kind:g.kind,target:g.target,ok:!1,resultVersion:p,affectedFiles:T,error:{code:w.error instanceof Yt?B.ROUTE_REBUILD_FAILED:ja(w.stage),message:_e(w.error),...w.error instanceof Yt?{details:{failedRoutes:w.error.failedRoutes}}:{}}}}function Da(){return[...o.values()].map(f=>({routeId:f.routeId,state:{...f,dependencyFiles:new Set(f.dependencyFiles),fileVersions:new Map(f.fileVersions)}}))}function La(f,y){let g=new Map(f.map(I=>[I.routeId,I]));for(let I of y)g.set(I.routeId,I);return[...g.values()]}function gr(f){for(let y of o.values())R(y);for(let y of f){let g={...y.state,dependencyFiles:new Set(y.state.dependencyFiles),fileVersions:new Map(y.state.fileVersions)};o.set(y.routeId,g),ue(g,g.dependencyFiles)}}async function zo(f){let y=o.get(f);if(!y)throw new Error(`Route not found: ${f}`);if(y.graph)return;let g=await n.readFile(y.entryFile);await he(f,g)}function Rn(f,y){if(y){let g=o.get(y)??null;return!g||!Wo(g,f)?null:g}for(let g of o.values())if(Wo(g,f))return g;return null}function Wo(f,y){if(f.documentIndex?.entriesByKey.has(y)||f.graph?.elements.has(y))return!0;let g=Ke(y);return g&&g!==y?f.graph?.elements.has(g)===!0:!1}function oe(f,y,g,I){return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:y,message:g,...I?{details:I}:{}}}}function ja(f){return f==="validate"?B.ROUTE_REBUILD_FAILED:f==="publish"?B.HISTORY_COMMIT_FAILED:B.WRITE_IO_ERROR}async function yr(f){if(E=!0,!l.markRecoveryRequired)return B.RECOVERY_REQUIRED;try{return await l.markRecoveryRequired(f),B.RECOVERY_REQUIRED}catch{return B.RECOVERY_PERSIST_FAILED}}function Wf(f){let g=f.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(I=>I.charAt(0).toUpperCase()+I.slice(1)).join("").replace(/^[^a-zA-Z_$]+/,"");return g?`Prefab${g}`:"GeneratedPrefab"}function Ba(f){return f==="VERSION_STALE"?B.VERSION_STALE:f==="CROSS_PAGE_MOVE_UNSUPPORTED"?B.CROSS_PAGE_MOVE_UNSUPPORTED:B.UNSUPPORTED_OPERATION}async function Va(f){if(f.target.kind==="route"){let g=o.get(f.target.routeId)??null;return g?(g.graph||await zo(g.routeId),g):oe(f,B.ROUTE_NOT_FOUND,`Route not found: ${f.target.routeId}`)}if(f.target.kind==="page-unit"){let g=o.get(f.target.routeId)??null;return g?(g.graph||await zo(g.routeId),g):oe(f,B.ROUTE_NOT_FOUND,`Route not found: ${f.target.routeId}`)}if(f.target.kind!=="node")return oe(f,B.UNSUPPORTED_OPERATION,`${f.kind} source target execution is not implemented yet.`);if(!f.routeId)return oe(f,B.INVALID_TARGET,"routeId is required when executing a node target");let y=o.get(f.routeId)??null;return y?(y.graph||await zo(y.routeId),Wo(y,f.target.key)?y:oe(f,B.NODE_NOT_FOUND,`Target key not found: ${f.target.key}`)):oe(f,B.ROUTE_NOT_FOUND,`Route not found: ${f.routeId}`)}return{get status(){return t},dispose(){t="disposed",a.clear(),o.clear(),i.clear(),d.clear(),s=null},registerRoute(f,y){let g=o.get(f);if(g?.entryFile===y)return;g&&R(g);let I=Zd(f,y);o.set(f,I),ue(I,I.dependencyFiles),r.emit({type:"graph-invalidated",routeId:f})},unregisterRoute(f){let y=o.get(f);y&&(R(y),o.delete(f),s===f&&(s=null,t="idle"),r.emit({type:"graph-invalidated",routeId:f}))},getRouteEntryFiles(){return[...o.values()].map(f=>f.entryFile)},async setActiveRoute(f){let y=o.get(f);if(!y)throw new Error(`Route not found: ${f}`);let g=s===f;if(s=f,!y.graph){t="building";try{let I=await n.readFile(y.entryFile);await he(f,I);let P=o.get(f)?.graph?.version??1;t="ready",r.emit({type:"graph-ready",routeId:f,version:P})}catch(I){throw t="idle",r.emit({type:"graph-error",routeId:f,message:_e(I)}),I}return}t="ready",g||r.emit({type:"graph-ready",routeId:f,version:y.graph.version})},getDocument(f){let y=o.get(f);if(!y)throw new Error(`Route not found: ${f}`);if(!y.document)throw new Error(`Route not built: ${f}`);return y.document},async getHistoryStatus(){await v;let f=await l.getStatus?.();return f?{...f,recoveryRequired:E}:{canUndo:!1,canRedo:!1,undoDepth:0,redoDepth:0,recoveryRequired:E}},getObjectEditContext(f,y){let g=Rn(f,y),I=Ke(f)??f;if(g?.graph&&g.topology&&g.capabilities&&g.detailProjections){let P=g.detailProjections.get(I);if(P){let T=el(I,g.graph,g.topology,g.capabilities,P.textSources,P.provenances,P.dynamicData);return f===I?T:BS(T,f,g.document??null,g.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${f}`)},getRenderDetail(f,y){let g=Rn(f,y),I=Ke(f)??f;if(g?.graph&&g.topology&&g.capabilities&&g.detailProjections){let P=g.detailProjections.get(I);if(P){let T=qc(I,g.graph,g.topology,g.capabilities,P.textSources,P.writeTarget,P.provenances,P.conditional,P.componentSemantic,P.contentModel,P.mediaModel,P.styleSource,P.dynamicData);return f===I?T:jS(T,f,g.document??null,g.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${f}`)},getClassNameSource(f,y){let g=Rn(f,y),I=Ke(f)??f;if(!g?.graph)throw new Error(`Key not found: ${f}`);let P=g.graph.elements.get(I);if(!P)throw new Error(`Key not found: ${f}`);let T=d.get(P.sourceFile);if(T===void 0)throw new Error(`Source not loaded: ${P.sourceFile}`);return yl({key:I,route:{routeId:g.routeId,graph:g.graph,source:T}})},refreshSourceForKey:Df,async execute(f){if(await v,E)return oe(f,B.RECOVERY_REQUIRED,"The edit engine requires explicit recovery before accepting mutations.");if(f.kind==="source-edit")return await Ta(f),Lf(f);let y=await Va(f);if("ok"in y)return y;await Ta(f);let g=await Va(f);if("ok"in g)return g;let I=g;if(f.target.kind==="page-unit"){let M=f;return f.kind==="insert-child"?jf(M,I):f.kind==="move-node"||f.kind==="remove-node"?Bf(M,I):oe(f,B.UNSUPPORTED_OPERATION,"Only page-unit insert-child, move-node, and remove-node are currently supported by the page composition transaction.")}if(!I.graph||!I.topology||!I.capabilities)return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:f.target.kind==="route"?B.ROUTE_NOT_FOUND:B.NODE_NOT_FOUND,message:f.target.kind==="route"?`Route not ready: ${f.target.routeId}`:f.target.kind==="node"?`Target key not found: ${f.target.key}`:`${f.kind} source target execution is not implemented yet.`}};let P=CS(I,I.graph,I.capabilities,d,o),T=await new uo(P).plan(f);if(!T.ok)return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:ir(T.errorCode),message:T.reason}};let j=T.plan;if(j.steps.length===0)return f.kind==="set-props"?{requestId:f.id,kind:f.kind,target:f.target,ok:!0,resultVersion:p,affectedFiles:[]}:{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:B.PLAN_FAILED,message:"Planner could not generate a valid execution plan"}};m+=1;try{if(j.steps.some(F=>F.type==="invoke-external-adapter")){let F=await u.execute(j);if(!F.ok)return oe(f,ir(F.errorCode),F.reason);let V={requestId:f.id,kind:f.kind,target:f.target,ok:!0,resultVersion:Math.max(p,F.resultVersion),affectedFiles:F.affectedFiles,...F.selectionRef?{selectionRef:F.selectionRef}:{}};return Ko(V,{rebuiltRoutes:[],failedRoutes:[]}),V}let M=await u.prepareRewritePlan(j);return M.ok?await hr({request:f,filePlan:M.filePlan,...M.selectionRef?{selectionRef:M.selectionRef}:{}}):oe(f,ir(M.errorCode),M.reason)}catch(M){return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:B.INTERNAL_ERROR,message:_e(M)}}}finally{m-=1}},async undo(f){if(await v,E)return{requestId:"undo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:p,error:{code:B.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting undo."}};m+=1;try{return await _a("undo")}finally{m-=1}},async redo(f){if(await v,E)return{requestId:"redo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:p,error:{code:B.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting redo."}};m+=1;try{return await _a("redo")}finally{m-=1}},notifyFileChanged(f){wa([f])},subscribe(f){return r.subscribe(f)}}}function kS(e,t,n){let r=new Map;for(let i of t.elements.values()){if(i.sourceFile!==n.entryFile||!i.importedFrom||!/^[A-Z]/.test(i.tag))continue;let s=n.placements.find(c=>c.members.some(l=>l.sourceRange!==null&&ta(i.sourceRange,l.sourceRange)));if(!s)continue;let a=s.placementUnitKey;r.set(`${i.importedFrom}#${i.tag}`,a),i.exportName&&i.exportName!==i.tag&&r.set(`${i.importedFrom}#${i.exportName}`,a)}let o=n.placements.find(i=>i.placementKey===n.container.placementKey&&i.relation==="append");for(let i of e.entries){let s=t.elements.get(i.key);if(!s)continue;if(s.sourceFile===n.entryFile){if(n.container.sourceRange&&ta(s.sourceRange,n.container.sourceRange)&&o){i.pageCompositionUnitKey=o.placementUnitKey;continue}let c=n.placements.find(l=>l.members.some(u=>u.sourceRange!==null&&(ta(s.sourceRange,u.sourceRange)||vS(u.sourceRange,s.sourceRange))));if(c){i.pageCompositionUnitKey=c.placementUnitKey;continue}}let a=r.get(`${s.sourceFile}#${s.componentName}`);a&&(i.pageCompositionUnitKey=a)}}function ta(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function vS(e,t){return ef(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&ef(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function ef(e,t,n,r){return e!==n?e-n:t-r}function CS(e,t,n,r,o){let i=new Map,s=new Map,a=(u,d)=>{if(s.has(u))return;s.set(u,d);let p=t.elements.get(u);for(let m of p?.childKeys??[])a(m,d)};for(let u of t.regions)if(u.kind==="repeat-region")for(let d of u.childKeys)i.set(d,u.ownerKey),a(d,u.ownerKey);return{getNode(u){let d=c(u),p=t.elements.get(d.baseKey);return p?l(u,p):null},getChildNodes(u){let d=c(u),m=e.documentIndex?.entriesByKey.get(u)?.childKeys;if(m)return m.map(b=>{let v=Ke(b)??b,C=t.elements.get(v);return C?l(b,C):null}).filter(b=>b!==null);let E=t.elements.get(d.baseKey);return E?E.childKeys.map(b=>{let v=t.elements.get(b);return v?l(b,v):null}).filter(b=>b!==null):[]},getKnownSourceFiles(){return[...r.entries()].map(([u,d])=>({file:u,content:d}))},getRouteEntryFiles(){return[...o.values()].map(u=>u.entryFile)},getCapability(u){let d=c(u),p=n.get(d.baseKey);return p?{...p,key:u,constraints:p.constraints.map(m=>({...m})),...p.editModes?{editModes:{...p.editModes}}:{}}:{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 d=c(u);return e.detailProjections?.get(d.baseKey)?.componentSemantic??null},getEditableTextSegmentIndex(u){let d=c(u),m=e.detailProjections?.get(d.baseKey)?.textTargets.keys()?.next();return m&&!m.done?m.value:null},async getTextWriteTarget(u,d){let p=c(u);return rf(e.detailProjections?.get(p.baseKey)?.textTargets.get(d)??null,p.repeatIndex)},async getElementPropertyWriteTarget(u,d){let p=c(u);return rf(e.detailProjections?.get(p.baseKey)?.elementPropertyTargets.get(d)??null,p.repeatIndex)},getTextProvenance(u,d){let p=c(u);return e.detailProjections?.get(p.baseKey)?.provenances.get(d)??null}};function c(u){let d=nS(u);return d?{baseKey:d.baseKey,repeatIndex:_S(e.document??null,u,d.baseKey,e.documentIndex)??OS(d)}:{baseKey:u,repeatIndex:null}}function l(u,d){let p=Ke(u)??u,m=e.documentIndex?.entriesByKey.get(u),E=e.detailProjections?.get(p);return{key:u,file:d.sourceFile,component:d.componentName,tag:d.tag,structuralPath:d.identity.structuralPath,sourceRange:d.sourceRange,parentKey:m?.parentKey??d.parentKey??void 0,isRepeatRegion:d.boundaryKind==="repeat-region"||s.has(p),isBoundary:!1,importedFrom:d.importedFrom,exportName:d.exportName,isRepeatItemRoot:i.has(p),repeatOwnerKey:i.get(p)??s.get(p),contentModel:E?.contentModel,attributes:d.attributes?.map(b=>({name:b.name,value:b.value,source:b.source?{expression:b.source.expression,base:b.source.base,path:b.source.path.map(v=>({...v}))}:null,resolvedValue:b.resolvedValue}))}}}var RS={"stale-version":B.VERSION_STALE,"capability-denied":B.CAPABILITY_REJECTED,"invalid-params":B.INVALID_PARAMS,"locator-miss":B.LOCATOR_FAILED,"route-not-found":B.ROUTE_NOT_FOUND,"unsupported-operation":B.UNSUPPORTED_OPERATION,"invalid-target":B.INVALID_TARGET,"ast-error":B.AST_PARSE_ERROR,"writeback-failed":B.WRITE_IO_ERROR,"rollback-failed":B.RECOVERY_REQUIRED,unknown:B.INTERNAL_ERROR};function ir(e){return RS[e]}function _e(e){return e instanceof Error&&e.message?e.message:String(e)}function tf(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function PS(e){let t=Gt(e);if(!iS.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=>sS.map(a=>`${s}/${a}`))}function wS(e){let n=Gt(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function AS(e){return of(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function NS(e){return of(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function of(e,t){let n=[];for(let r of e.matchAll(t)){let o=sf(r[1]??"");o&&n.push(o)}return n}function nf(e,t){let n=sf(t);return!n||n.startsWith("tailwindcss")||n.startsWith("http:")||n.startsWith("https:")?null:n.startsWith("@/")?Gt(`src/${n.slice(2)}`):n.startsWith("./")||n.startsWith("../")?Gt(`${TS(e)}/${n}`):n.startsWith("/")?Gt(n.slice(1)):na(n)?Gt(n):null}function sf(e){return e.split(/[?#]/,1)[0]?.trim()??""}function na(e){return/\.css$/i.test(e)}function TS(e){let t=Gt(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function af(e){return Array.from(new Set(e))}function Gt(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 FS(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 vo(e){return e?.map(t=>({...t}))}function rf(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=vo(e.collectionPathMap?.[t])??vo(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:vo(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>vo(o)??[])}}function MS(e,t,n){let r=new Set;for(let m of t.regions)if(m.kind==="repeat-region")for(let E of m.childKeys)r.add(E);if(r.size===0)return e;let o=new Map(e.entries.map(m=>[m.key,m])),i=[],s=new Map,a=(m,E)=>qE(m,E),c=(m,E,b)=>{let v=o.get(m);if(!v)return a(m,b);let C=a(m,b),A={...v,key:C,parentKey:E,childKeys:[]};return i.push(A),A.childKeys=v.childKeys.flatMap(N=>l(N,b,C)),C},l=(m,E,b)=>{if(!r.has(m))return[c(m,b,E)];let v=d(m,E),C=[];for(let A=0;A<v;A+=1)C.push(c(m,b,[...E,A]));return C},u=af([...e.rootKeys,...e.entries.filter(m=>m.parentKey===null).map(m=>m.key)]);for(let m of u){if(!r.has(m)){c(m,null,[]);continue}let E=d(m,[]);for(let b=0;b<E;b+=1)c(m,null,[b])}return{...e,rootKeys:[...e.rootKeys],entries:i};function d(m,E){let b=new Set;for(let v of p(m)){let C=n.get(v);if(C){for(let A of[...C.textTargets.values(),...C.elementPropertyTargets.values()])if(!(A?.kind!=="value-binding"||A.sourceKind!=="repeat-template"))for(let N of DS(A))N.length<=E.length||LS(N,E)&&b.add(N[E.length])}}return b.size>0?b.size:FS(n.get(m))}function p(m){let E=s.get(m);if(E)return E;let b=[m],v=o.get(m);for(let C of v?.childKeys??[])b.push(...p(C));return s.set(m,b),b}}function OS(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function _S(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((Ke(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function DS(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 LS(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 jS(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 BS(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}}import aa from"node:path";import{TextDecoder as VS}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as lf,SITE_EDIT_SOURCE_ALLOWED_DIRS as uf,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as df,SiteEditSourceFileResponseSchema as ra,SiteEditSourceLocationSchema as US,SiteEditSourcePathSchema as Ro,SiteEditSourceTreeResponseSchema as $S,isSiteEditTextSourcePath as KS}from"@vcp-dev/contracts";var JS=[...df,...lf,...uf],oa=2e3,ia=12,sa=24*1024*1024,cf=512*1024,XS=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),HS={".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"},zS={".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"},WS=new VS("utf-8",{fatal:!0});async function Po(e,t={}){let{files:n,truncated:r}=await nb(e,t),o=ib(n.map(i=>i.metadata));return $S.parse({nodes:o,defaultPath:sb(n.map(i=>i.metadata)),totalFiles:n.length,...r?{truncated:r}:{}})}async function wo(e,t,n={}){let r=Ro.parse(t.path),o=await ZS(e,r,n);if(!o)throw new Error(`Source file not found: ${r}`);if(ca(r)){let s=mf(r),a=await qS(e,{path:r,sizeBytes:o.sizeBytes,mimeType:s});return ra.parse({path:r,kind:"binary",language:null,sizeBytes:o.sizeBytes,mimeType:s,readonly:!0,...a})}let i=await YS(e,r);return i.ok?ra.parse({path:r,kind:"text",language:hf(r),sizeBytes:i.sizeBytes,contentHash:ae(i.content),readonly:!1,content:i.content}):ra.parse({path:r,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function YS(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=GS(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 GS(e){if(e.includes(0))return null;try{return WS.decode(e)}catch{return null}}async function ZS(e,t,n){if(!eb(t,n))return null;let r=await QS(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function QS(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=ff(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(ca(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function qS(e,t){if(!XS.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>cf)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>cf?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function eb(e,t){return df.some(n=>n===e)||lf.some(n=>n===e)||uf.some(n=>e===n||e.startsWith(`${n}/`))?!0:!e.startsWith("app/")&&!e.startsWith("src/app/")?!1:(t.routeEntryFiles??[]).some(n=>{let r=Ro.safeParse(n);return r.success&&r.data===e})}function Ao(e,t){if(!t.sourceLocator)throw new Error(`Source location not available for key: ${e.key}`);return US.parse({key:e.key,routeId:e.routeId,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 ff(e){return Array.isArray(e)?{files:e}:e}function tb(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function nb(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=ff(await e.listFiles({roots:rb(t),maxFiles:oa+1,maxDepth:ia,maxTotalBytes:sa+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=Ro.safeParse(a.path);if(!c.success)continue;let l=c.data;if(l.split("/").length>ia){o.add("max-depth");continue}if(r.size>=oa){o.add("max-files");break}if(i+a.sizeBytes>sa){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:ob(l,a.sizeBytes)}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:tb([...o]),maxFiles:oa,maxDepth:ia,maxTotalBytes:sa}}:{}}}function rb(e){let t=new Set(JS);for(let n of e.routeEntryFiles??[]){let r=Ro.safeParse(n);r.success&&(r.data.startsWith("app/")||r.data.startsWith("src/app/"))&&t.add(r.data)}return[...t]}function ob(e,t){return ca(e)?{path:e,kind:"binary",language:null,sizeBytes:t,mimeType:mf(e),readonly:!0}:{path:e,kind:"text",language:hf(e),sizeBytes:t,readonly:!1}}function ib(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 pf(t)}function pf(e){return e.map(t=>t.kind==="directory"?{...t,children:pf(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function sb(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 ca(e){return!KS(e)}function mf(e){let t=aa.posix.extname(e).toLowerCase();return!t&&aa.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":HS[t]??"application/octet-stream"}function hf(e){let t=aa.posix.extname(e).toLowerCase();return zS[t]??"plaintext"}var No=class{constructor(t){this.options=t,this.fileSystem=new jn(t.files),this.engine=this.createEngine(this.fileSystem)}get status(){return this.engine.status}async setActiveRoute(t){await this.engine.setActiveRoute(t)}getDocument(t){return Ir(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){return kr(this.engine.getObjectEditContext(t,n))}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(){return Po(this.fileSystem,{routeEntryFiles:this.options.routes.map(t=>t.entryFile)})}getSourceFile(t){return wo(this.fileSystem,t,{routeEntryFiles:this.options.routes.map(n=>n.entryFile)})}resolveSourceLocation(t){return Ao(t,this.engine.getRenderDetail(t.key,t.routeId))}async planOperation(t){let n=cb.safeParse(t);if(!n.success)return{result:br(t,n.error.issues.map(i=>i.message))};let r=new jn(this.options.files),o=this.createEngine(r,{emitEvents:!1});try{for(let u of this.getPlanningRouteIds(n.data))await o.setActiveRoute(u);let i=this.withInferredNodeRouteId(n.data,o),s=await o.execute(i);if(!s.ok)return{result:{ok:!1,error:{code:s.error?.code??"INTERNAL_ERROR",message:s.error?.message??"Operation failed"},data:{requestId:s.requestId,kind:s.kind,target:s.target,resultVersion:s.resultVersion}}};let a={ok:!0,data:Ot(s)},c=r.getChangedFiles();if(c.length===0)return{result:a};let l=lb.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:c.map(u=>ub(u,t.kind==="source-edit")),changedRouteIds:this.getChangedRouteIds(c.map(u=>u.path)),diagnostics:[]});return this.options.onEvent?.({type:"site-edit.operation.planned",siteId:t.siteId,operationId:t.id,baseSnapshotId:t.baseSnapshotId,changedFiles:l.patches.map(u=>u.path),at:new Date().toISOString()}),{result:a,patchPlan:l}}finally{o.dispose()}}dispose(){this.engine.dispose()}getPlanningRouteIds(t){let n=this.getExplicitPlanningRouteId(t);if(n){let r=this.options.routes.find(o=>o.routeId===n);return r?[r.routeId]:this.options.routes.map(o=>o.routeId)}if(t.target.kind==="node"){let r=this.getBuiltRouteIdsForKey(t.target.key);if(r.length>0)return r}return this.options.routes.map(r=>r.routeId)}getExplicitPlanningRouteId(t){if(t.routeId)return t.routeId;if(t.target.kind==="route")return t.target.routeId;if(t.params.kind==="set-class-name-source")return t.params.routeId;if(t.params.kind==="apply-style-draft")return t.params.className?.routeId}getBuiltRouteIdsForKey(t){let n=[];for(let r of this.options.routes)try{this.engine.getRenderDetail(t,r.routeId),n.push(r.routeId)}catch{}return n}withInferredNodeRouteId(t,n){if(t.target.kind!=="node"||t.routeId)return t;let r=this.findRouteIdForNodeTarget(n,t.target.key);return r?{...t,routeId:r}:t}findRouteIdForNodeTarget(t,n){for(let r of this.options.routes)try{if(t.getDocument(r.routeId).entries.some(i=>i.key===n))return r.routeId}catch{}return this.options.routes.length===1?this.options.routes[0]?.routeId:void 0}createEngine(t,n={}){let r=n.emitEvents??!0;return sr({projectRoot:"/snapshot",fileSystem:t,routes:this.options.routes.map(o=>({routeId:o.routeId,entryFile:o.entryFile})),onEvent:r&&this.options.onEvent?o=>{let i=vr(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})}getChangedRouteIds(t){let n=new Set(t),r=new Set(this.options.routes.map(s=>s.entryFile));if(t.some(s=>!r.has(s)))return this.options.routes.map(s=>s.routeId);let i=this.options.routes.filter(s=>n.has(s.entryFile)).map(s=>s.routeId);return i.length>0?i:this.options.routes.map(s=>s.routeId)}};function ub(e,t){return e.after===void 0?{path:e.path,operation:"delete",...t||e.before===void 0?{}:{expectedHash:ae(e.before)}}:{path:e.path,operation:e.before===void 0?"create":"update",...t||e.before===void 0?{}:{expectedHash:ae(e.before)},fullContent:e.after}}function db(e){return new No(e)}import{SiteEditOperationRequestSchema as mb}from"@vcp-dev/contracts";import tt from"node:fs/promises";import Pe from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as fb,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as pb}from"@vcp-dev/contracts";var To=class{constructor(t){this.options=t,this.fileSystem=this.createFileSystem(),this.engine=sr({...t,fileSystem:this.fileSystem})}get status(){return this.engine.status}registerRoute(t,n){this.engine.registerRoute(t,n)}unregisterRoute(t){this.engine.unregisterRoute(t)}async setActiveRoute(t){await this.engine.setActiveRoute(t)}getDocument(t){return this.engine.getDocument(t)}getHistoryStatus(){return this.engine.getHistoryStatus()}getObjectEditContext(t,n){return this.engine.getObjectEditContext(t,n)}getRenderDetail(t,n){return this.engine.getRenderDetail(t,n)}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(){return Po(this.fileSystem,{routeEntryFiles:this.engine.getRouteEntryFiles()})}getSourceFile(t){return wo(this.fileSystem,t,{routeEntryFiles:this.engine.getRouteEntryFiles()})}resolveSourceLocation(t){return Ao(t,this.engine.getRenderDetail(t.key,t.routeId))}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 tt.readFile(Pe.join(n,r),"utf8")},async readFileBytes(r){return tt.readFile(Pe.join(n,r))},async getFileInfo(r){let o=Pe.join(n,...r.split("/"));try{let i=await tt.lstat(o);return!i.isFile()||i.isSymbolicLink()?null:{path:r,sizeBytes:i.size}}catch{return null}},async writeFile(r,o){await Eo(Pe.join(n,r),o)},async createExclusive(r,o){let i=Pe.join(n,r);await tt.mkdir(Pe.dirname(i),{recursive:!0});let s=await tt.open(i,"wx");try{await s.writeFile(o,"utf8")}catch(a){throw await s.close(),await tt.rm(i,{force:!0}),a}await s.close()},async deleteFile(r){await tt.rm(Pe.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=Pe.join(n,i),a=Pe.dirname(Pe.join(n,o));for(;a!==s&&a.startsWith(`${s}${Pe.sep}`);){try{await tt.rmdir(a)}catch(c){if(c instanceof Error&&"code"in c&&c.code==="ENOENT"){a=Pe.dirname(a);continue}break}a=Pe.dirname(a)}},async exists(r){try{return await tt.access(Pe.join(n,r)),!0}catch{return!1}},async listFiles(r={}){let o=r.roots??[...pb,...fb],i=[],s=new Set,a=0;for(let u of o)await l(u,i,1);let c=i.sort((u,d)=>u.path.localeCompare(d.path));return s.size>0?{files:c,truncated:{reasons:[...s]}}:{files:c};async function l(u,d,p){if(r.maxFiles!==void 0&&d.length>=r.maxFiles){s.add("max-files");return}if(r.maxDepth!==void 0&&p>r.maxDepth){s.add("max-depth");return}let m=Pe.join(n,...u.split("/")),E;try{E=await tt.lstat(m)}catch{return}if(E.isSymbolicLink())return;if(E.isFile()){if(r.maxTotalBytes!==void 0&&a+E.size>r.maxTotalBytes){s.add("max-total-bytes");return}d.push({path:u,sizeBytes:E.size}),a+=E.size;return}if(!E.isDirectory())return;let b=await tt.readdir(m,{withFileTypes:!0});for(let v of b)v.isSymbolicLink()||await l(`${u}/${v.name}`,d,p+1)}},getVersion(r){return t.get(r)??1},bumpVersion(r){let o=(t.get(r)??1)+1;return t.set(r,o),o}}}};function la(e){return new To(e)}var Fo=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=la({projectRoot:t.projectRoot,fileSystem:t.fileSystem,routes:t.routes.map(n=>({routeId:n.routeId,entryFile:n.entryFile})),onEvent:n=>{let r=vr(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.initialDocumentVersion!==void 0?{initialDocumentVersion:t.initialDocumentVersion}:{},siteId:t.siteId,snapshotId:t.snapshotId})}get status(){return this.engine.status}registerRoute(t,n){this.engine.registerRoute(t,n)}unregisterRoute(t){this.engine.unregisterRoute(t)}async setActiveRoute(t){await this.engine.setActiveRoute(t)}getDocument(t){return{ok:!0,data:Ir(this.engine.getDocument(t),{siteId:this.options.siteId,snapshotId:this.options.snapshotId})}}getInternalDocument(t){return this.engine.getDocument(t)}getStyleContext(t){return{ok:!0,data:this.engine.getDocument(t).styleContext??null}}async getHistoryStatus(){return{ok:!0,data:await this.engine.getHistoryStatus()}}getObjectEditContext(t,n){return{ok:!0,data:kr(this.engine.getObjectEditContext(t,n))}}getClassNameSource(t,n){return{ok:!0,data:this.engine.getClassNameSource(t,n)}}async getSourceTree(){return{ok:!0,data:await this.engine.getSourceTree()}}async getSourceFile(t){return{ok:!0,data:await this.engine.getSourceFile(t)}}resolveSourceLocation(t){return{ok:!0,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=mb.safeParse(r);if(!o.success)return br(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,error:{code:s.code,message:s.message},data:{requestId:i.requestId,kind:i.kind,target:i.target,resultVersion:i.resultVersion,...i.affectedFiles?.length?{affectedFiles:i.affectedFiles}:{}}}}return{ok:!0,data:Ot(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,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,data:Ot(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,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,data:Ot(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 hb(e){return new Fo(e)}import{createHash as gb,randomUUID as Sa}from"node:crypto";import me from"node:fs/promises";import Ie from"node:path";var Xe=1,da=1,yb=2,xb="index.json",Eb="recovery.json",Sb="transaction-journal.json",bb="document-version.json",Oo={maxEntries:100,maxSessionBytes:512*1024*1024,maxEntryBytes:128*1024*1024},K={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"},J=class extends Error{constructor(t,n,r){super(n),this.name="FileHistoryStoreError",this.code=t,r?.cause!==void 0&&(this.cause=r.cause)}};async function kf(e,t={}){let n=_b(e),r=jb(t.limits),o=ua(n),i=Db(n),s=await Je(i),a=await Je(o)||s;a||(await Pb(n),await wb(n)),a||await Bb(n);let c=await De(n),l=new Set(a?(await Bo(n)).map(d=>d.stageId):[]);a||await ar(n,c.entryIds);let u=async()=>{if(await Je(o)||s)throw new J(K.RECOVERY_PENDING,"history store requires explicit recovery before accepting writes")};return{rootDir:n,recoveryRequired:a,async readDocumentVersion(){return If(n)},async writeDocumentVersion(d){if(await u(),!Number.isInteger(d)||d<0)throw new J(K.INVALID_SCHEMA,"document version must be a non-negative integer");let p=await If(n);await cr(Tf(n),{schemaVersion:1,version:Math.max(p,d)})},async stageAppend(d,p={}){await u();let m=await yf(d,r),E={schemaVersion:da,stageId:Sa(),entryId:m.entryId,blobIds:m.blobs.map(b=>b.digest)};try{await xf(n,m),await vb(n,E,p.durableManifest!==!1)}catch(b){try{await Sf(n,E)}catch(v){throw new J(K.INDEX_CORRUPT,"staged history cleanup failed after preparation error",{cause:v})}throw b}return{stageId:E.stageId,entryId:E.entryId,blobIds:E.blobIds}},async discardStage(d){await u(),ha(d);let p=await pa(n,d);p&&await Sf(n,p)},async previewStagedAppend(d,p){return await u(),(await gf(n,r,d,p)).transition},async previewCursor(d,p){await u();let m=await De(n);return ga(m,p),fa(d,m.entryIds.length),vf(m,m.entryIds,d)},async publishStagedAppend(d,p,m){if(await u(),_o(d,"entryId"),m){ha(m);let b=await pa(n,m);if(!b||b.entryId!==d)throw new J(K.INVALID_SCHEMA,"history stage does not match the published entry")}let E=await gf(n,r,d,p);return bf({rootDir:n,previousDigest:E.current.digest,entryIds:E.entryIds,cursor:E.cursor,afterWrite:async()=>{m?await Do(n,m):await Rb(n,d),await ar(n,E.entryIds)}})},async append(d){await u();let p=await De(n),m=await yf(d,r),E=[...p.entryIds];p.cursor<E.length-1&&E.splice(p.cursor+1),E.push(m.entryId);try{await xf(n,m);let b=await Cf(n,E,r);return await Ia(n,b.entryIds,b.cursor),await ar(n,b.entryIds),De(n)}catch(b){throw await ar(n,p.entryIds),b}},async readEntry(d){return _o(d,"entryId"),ur(n,d)},async readBlob(d){_o(d,"blobId");let p=Cn(n,d),m=await Tt(p,K.NOT_FOUND,"blob");return ka(m,d,p),m},async readIndex(){return De(n)},async readStatus(){let d=await De(n);return{canUndo:d.undoIds.length>0,canRedo:d.redoIds.length>0,undoDepth:d.undoIds.length,redoDepth:d.redoIds.length,cursor:d.cursor,recoveryRequired:await Je(o)||await Je(i)}},async readUndoRedoIds(){let d=await De(n);return{undoIds:d.undoIds,redoIds:d.redoIds,currentId:d.currentId}},async setCursor(d,p){await u();let m=await De(n);return ga(m,p),fa(d,m.entryIds.length),bf({rootDir:n,previousDigest:m.digest,entryIds:m.entryIds,cursor:d})},async markRecoveryRequired(d){await Je(o)||await cr(ua(n),{schemaVersion:Xe,reason:Lb(d),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await me.rm(ua(n),{force:!0})},async readTransactionJournal(){return await Je(i)?Mo(i):null},async writeTransactionJournal(d){await u(),Ff(d);try{await cr(i,d)}catch(m){let E=await Mo(i).catch(()=>null);if(E&&Buffer.from(Le(E)).equals(Buffer.from(Le(d))))return;throw E?new J(K.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous",{cause:m}):m}let p=await Mo(i);if(!Buffer.from(Le(p)).equals(Buffer.from(Le(d))))throw new J(K.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous")},async clearTransactionJournal(d){let p=await Je(i)?await Mo(i):null;if(p&&p.transactionId!==d)throw new J(K.INVALID_SCHEMA,"transaction journal changed concurrently");try{await me.rm(i,{force:!0})}catch(m){if(!await Je(i))return;throw m}if(await Je(i))throw new J(K.INDEX_CORRUPT,"transaction journal clear outcome is ambiguous");s=!1},async cleanupTmp(){await u();for(let p of l)await Do(n,p),l.delete(p);await Ab(n);let d=await De(n);await ar(n,d.entryIds)}}}async function gf(e,t,n,r){_o(n,"entryId");let o=await De(e);ga(o,r);let i=await ur(e,n),s=[...o.entryIds];o.cursor<s.length-1&&s.splice(o.cursor+1),s.push(i.id);let a=await Cf(e,s,t);return{current:o,entryIds:a.entryIds,cursor:a.cursor,transition:vf(o,a.entryIds,a.cursor)}}function vf(e,t,n){return fa(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:Ib(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function Ib(e,t){return Ft(Le({schemaVersion:Xe,entryIds:e,cursor:t}))}function fa(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new J(K.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function kb(e){if(!nt(e))return!1;let t=e.publishedCursor,n=e.publishedCurrentId;return!Te(e.expectedIndexDigest)||!Te(e.publishedIndexDigest)||!Number.isInteger(t)||t<-1||n!==null&&!Te(n)?!1:t===-1?n===null:Te(n)}async function yf(e,t){if(!e.kind.trim())throw new J(K.INVALID_JSON,"history entry kind must not be empty");let n=[],r=[];for(let c of e.blobs??[]){if(!c.name.trim())throw new J(K.INVALID_JSON,"history blob name must not be empty");let l=Ob(c.data),u=Ft(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:Xe,kind:e.kind,manifest:e.manifest,blobs:r},i=Le({...o}),s=Ft(i),a=i.byteLength+n.reduce((c,l)=>c+l.sizeBytes,0);if(a>t.maxEntryBytes)throw new J(K.CAPACITY_EXCEEDED,`history entry exceeds maxEntryBytes (${a} > ${t.maxEntryBytes})`);return{entryBody:o,entryId:s,blobs:n}}async function xf(e,t){let n=fr(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Ef(Cn(e,a.digest),a.bytes,{kind:"blob",digest:a.digest})),Ef(n,Le(r),{kind:"entry",digest:t.entryId})],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Ef(e,t,n){let r=await Nf(e);if(r!==null){if(Buffer.compare(r,t)!==0)throw new J(n.kind==="blob"?K.BLOB_CORRUPT:K.ENTRY_CORRUPT,`${n.kind} content mismatch for ${n.digest}`);return}await wf(e,t)}async function Cf(e,t,n){let r=[...t],o=r.length-1;for(;;){if((await Pf(e,r)).totalBytes<=n.maxSessionBytes&&r.length<=n.maxEntries)return{entryIds:r,cursor:o};if(o<=0||r.length===0)throw new J(K.CAPACITY_EXCEEDED,"history store exceeds capacity limits and the current entry cannot be trimmed");r.shift(),o-=1}}async function vb(e,t,n){ba(t);let r=Ca(e,t.stageId);if(n){await cr(r,t);return}await Mb(r,t)}async function pa(e,t){let n=await Nf(Ca(e,t));if(n===null)return null;let r=dr(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=ba(r);if(o.stageId!==t)throw new J(K.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function Bo(e){let t=[];for(let n of await jo(va(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);ha(r);let o=await pa(e,r);o&&t.push(o)}return t}async function Sf(e,t){ba(t);let n=await De(e),r=(await Bo(e)).filter(s=>s.stageId!==t.stageId),o=new Set(n.entryIds),i=new Set;for(let s of n.entryIds){let a=await ur(e,s);for(let c of a.blobs)i.add(c.digest)}for(let s of r){o.add(s.entryId);for(let a of s.blobIds)i.add(a)}o.has(t.entryId)||await ma(fr(e,t.entryId));for(let s of t.blobIds)i.has(s)||await ma(Cn(e,s));await Do(e,t.stageId),await Ea(Uo(e)),await Ea($o(e))}async function Do(e,t){await ma(Ca(e,t)),await Cb(e)}async function Cb(e){try{await me.rmdir(va(e))}catch(t){if(pr(t)||nt(t)&&t.code==="ENOTEMPTY")return;throw t}}async function Rb(e,t){for(let n of await Bo(e))n.entryId===t&&await Do(e,n.stageId)}async function ma(e){if(await me.rm(e,{force:!0}),await Je(e))throw new J(K.INDEX_CORRUPT,`unable to remove staged history object: ${e}`)}function ba(e){if(!nt(e)||e.schemaVersion!==da||typeof e.stageId!="string"||!Rf(e.stageId)||!Te(e.entryId))throw new J(K.INVALID_SCHEMA,"history stage schema is invalid");let t=Af(e.blobIds,"history stage blobIds");return{schemaVersion:da,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function ha(e){if(!Rf(e))throw new J(K.INVALID_PATH,"history stageId must be a UUID")}function Rf(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 ar(e,t){let n=new Set(t),r=new Set;for(let c of t){let l=await ur(e,c);for(let u of l.blobs)r.add(u.digest)}for(let c of await Bo(e)){n.add(c.entryId);for(let l of c.blobIds)r.add(l)}let o=Uo(e),i=await jo(o);for(let c of i){if(!c.endsWith(".json"))continue;let l=c.slice(0,-5);Te(l)&&!n.has(l)&&await Lo(fr(e,l))}let s=$o(e),a=await jo(s);for(let c of a){let l=c;Te(l)&&!r.has(l)&&await Lo(Cn(e,l))}}async function De(e){let t=Vo(e),n=await Tt(t,K.NOT_FOUND,"index"),r=dr(Buffer.from(n).toString("utf8"),"index"),o=Nb(r),i=[...o.entryIds],{totalBytes:s}=await Pf(e,i),a=i.slice(0,o.cursor+1).reverse(),c=i.slice(o.cursor+1);return{schemaVersion:Xe,digest:o.digest,entryIds:i,cursor:o.cursor,currentId:i[o.cursor]??null,undoIds:a,redoIds:c,totalBytes:s}}async function Pf(e,t){let n=0,r=new Set,o=Vo(e),i=await Tt(o,K.NOT_FOUND,"index");n+=i.byteLength;for(let s of t){let a=await ur(e,s),c=fr(e,s),l=await Tt(c,K.NOT_FOUND,"entry");n+=l.byteLength;for(let u of a.blobs){if(r.has(u.digest))continue;r.add(u.digest);let d=Cn(e,u.digest),p=await Tt(d,K.NOT_FOUND,"blob");ka(p,u.digest,d),n+=p.byteLength}}return{totalBytes:n}}async function ur(e,t){let n=fr(e,t),r=await Tt(n,K.NOT_FOUND,"entry"),o=dr(Buffer.from(r).toString("utf8"),`entry ${t}`),i=Tb(o);if(i.id!==t)throw new J(K.ENTRY_CORRUPT,`entry id mismatch for ${t}`);if(Ft(Le({schemaVersion:i.schemaVersion,kind:i.kind,manifest:i.manifest,blobs:i.blobs}))!==t)throw new J(K.ENTRY_CORRUPT,`entry hash mismatch for ${t}`);for(let a of i.blobs){let c=Cn(e,a.digest),l=await Tt(c,K.NOT_FOUND,"blob");ka(l,a.digest,c)}return i}async function Ia(e,t,n){let r={schemaVersion:Xe,digest:Ft(Le({schemaVersion:Xe,entryIds:t,cursor:n})),entryIds:t,cursor:n};await cr(Vo(e),r)}function ga(e,t){if(t!==void 0&&e.digest!==t)throw new J(K.INVALID_SCHEMA,`history index changed concurrently (expected ${t}, current ${e.digest})`)}async function bf(e){let t=Ft(Le({schemaVersion:Xe,entryIds:e.entryIds,cursor:e.cursor}));try{return await Ia(e.rootDir,e.entryIds,e.cursor),await e.afterWrite?.(),await De(e.rootDir)}catch(n){let r=await De(e.rootDir).catch(()=>null);if(r?.digest===t)return r;throw r?.digest===e.previousDigest?n:new J(K.INDEX_CORRUPT,"history index publish outcome is ambiguous",{cause:n})}}async function Pb(e){await me.mkdir(e,{recursive:!0}),await me.mkdir(Uo(e),{recursive:!0}),await me.mkdir($o(e),{recursive:!0}),await me.mkdir(lr(e),{recursive:!0})}async function wb(e){await me.rm(lr(e),{recursive:!0,force:!0}),await me.mkdir(lr(e),{recursive:!0})}async function Ab(e){let t=lr(e);await me.mkdir(t,{recursive:!0});for(let n of await jo(t))n!=="stages"&&await me.rm(Ie.join(t,n),{recursive:!0,force:!0})}function Nb(e){if(!nt(e))throw new J(K.INDEX_CORRUPT,"index.json must be an object");if(e.schemaVersion!==Xe)throw new J(K.INVALID_SCHEMA,`unsupported index schemaVersion: ${String(e.schemaVersion)}`);let t=Af(e.entryIds,"index.entryIds"),n=e.cursor;if(!Number.isInteger(n)||n<-1||n>=t.length)throw new J(K.INDEX_CORRUPT,"index cursor is out of bounds");let r=n,o=e.digest;if(!Te(o))throw new J(K.INDEX_CORRUPT,"index digest is invalid");let i=Ft(Le({schemaVersion:Xe,entryIds:t,cursor:r}));if(o!==i)throw new J(K.INDEX_CORRUPT,"index digest mismatch");return{schemaVersion:Xe,digest:o,entryIds:t,cursor:r}}function Tb(e){if(!nt(e))throw new J(K.ENTRY_CORRUPT,"entry must be an object");if(e.schemaVersion!==Xe)throw new J(K.INVALID_SCHEMA,`unsupported entry schemaVersion: ${String(e.schemaVersion)}`);let t=e.id;if(!Te(t))throw new J(K.ENTRY_CORRUPT,"entry id is invalid");let n=e.kind;if(typeof n!="string"||n.trim().length===0)throw new J(K.ENTRY_CORRUPT,"entry kind is invalid");let r=xa(e.manifest,"entry.manifest"),o=Fb(e.blobs);return{id:t,schemaVersion:Xe,kind:n,manifest:r,blobs:o}}function Fb(e){if(!Array.isArray(e))throw new J(K.ENTRY_CORRUPT,"entry blobs must be an array");return e.map((t,n)=>{if(!nt(t))throw new J(K.ENTRY_CORRUPT,`entry blob ref ${n} must be an object`);let r=t.name;if(typeof r!="string"||r.trim().length===0)throw new J(K.ENTRY_CORRUPT,`entry blob ref ${n} name is invalid`);let o=t.digest;if(!Te(o))throw new J(K.ENTRY_CORRUPT,`entry blob ref ${n} digest is invalid`);let i=t.sizeBytes;if(!Number.isInteger(i)||i<0)throw new J(K.ENTRY_CORRUPT,`entry blob ref ${n} sizeBytes is invalid`);return{name:r,digest:o,sizeBytes:i}})}async function cr(e,t){await wf(e,Le(t))}async function Mb(e,t){let n=Ie.dirname(e),r=Ie.basename(e),o=Ie.join(n,`.${r}.${process.pid}.${Sa()}.tmp`);await me.mkdir(n,{recursive:!0});try{await me.writeFile(o,Le(t),{flag:"wx"}),await me.rename(o,e)}finally{await Lo(o)}}async function wf(e,t){let n=Ie.dirname(e),r=Ie.basename(e),o=Ie.join(n,`.${r}.${process.pid}.${Sa()}.tmp`);await me.mkdir(n,{recursive:!0});try{let i=await me.open(o,"wx");try{await i.writeFile(t),await i.sync()}finally{await i.close()}await me.rename(o,e),await Ea(n)}finally{await Lo(o)}}function Le(e){return Buffer.from(JSON.stringify(ya(e)),"utf8")}function ya(e){if(Array.isArray(e))return e.map(t=>ya(t));if(nt(e)){let t={};for(let n of Object.keys(e).sort())t[n]=ya(e[n]);return t}return e}function dr(e,t){try{return JSON.parse(e)}catch(n){throw new J(K.INVALID_JSON,`${t} is not valid JSON`,{cause:n})}}function xa(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=>xa(n,t));if(nt(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=xa(o,t);return n}break}throw new J(K.INVALID_JSON,`${t} must be JSON-serializable`)}function Af(e,t){if(!Array.isArray(e))throw new J(K.INDEX_CORRUPT,`${t} must be an array`);return e.map((n,r)=>{if(!Te(n))throw new J(K.INDEX_CORRUPT,`${t}[${r}] is invalid`);return n})}function _o(e,t){if(!Te(e))throw new J(K.INVALID_PATH,`${t} must be a sha256 digest`)}function Te(e){return typeof e=="string"&&/^sha256:[a-f0-9]{64}$/u.test(e)}function Ft(e){return`sha256:${gb("sha256").update(e).digest("hex")}`}function Ob(e){return typeof e=="string"?Buffer.from(e,"utf8"):Buffer.from(e)}async function Tt(e,t,n){try{return await me.readFile(e)}catch(r){throw new J(t,`${n} not found: ${e}`,{cause:r})}}async function Nf(e){try{return await me.readFile(e)}catch(t){if(pr(t))return null;throw t}}function ka(e,t,n){if(Ft(e)!==t)throw new J(K.BLOB_CORRUPT,`blob hash mismatch for ${n}`)}async function Je(e){try{return await me.access(e),!0}catch(t){if(pr(t))return!1;throw t}}async function Lo(e){try{await me.rm(e,{force:!0,recursive:!0})}catch{}}async function Ea(e){try{let t=await me.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function jo(e){try{return await me.readdir(e)}catch(t){if(pr(t))return[];throw t}}function _b(e){if(typeof e!="string"||e.trim().length===0)throw new J(K.INVALID_ROOT,"history store rootDir must be a non-empty string");return Ie.resolve(e)}function Vo(e){return Ie.join(e,xb)}function ua(e){return Ie.join(e,Eb)}function Db(e){return Ie.join(e,Sb)}function Tf(e){return Ie.join(e,bb)}async function If(e){try{let t=await me.readFile(Tf(e),"utf8"),n=dr(t,"document version");if(!nt(n)||n.schemaVersion!==1||!Number.isInteger(n.version)||n.version<0)throw new J(K.INVALID_SCHEMA,"document version schema is invalid");return n.version}catch(t){if(pr(t))return 0;throw t}}async function Mo(e){let t=await Tt(e,K.RECOVERY_PENDING,"transaction journal"),n=dr(Buffer.from(t).toString("utf8"),"transaction journal");return Ff(n),n}function Ff(e){if(!nt(e)||e.schemaVersion!==yb||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!kb(e.historyTransition)||!Array.isArray(e.files))throw new J(K.INVALID_SCHEMA,"transaction journal schema is invalid");for(let t of e.files)if(!nt(t)||typeof t.path!="string"||t.path.length===0||t.preDigest!==null&&!Te(t.preDigest)||t.postDigest!==null&&!Te(t.postDigest))throw new J(K.INVALID_SCHEMA,"transaction journal file digest is invalid")}function Lb(e){return e.replace(/[\r\n]+/g," ").slice(0,512)}function Uo(e){return Ie.join(e,"entries")}function $o(e){return Ie.join(e,"blobs")}function lr(e){return Ie.join(e,"tmp")}function va(e){return Ie.join(lr(e),"stages")}function Ca(e,t){return Ie.join(va(e),`${t}.json`)}function fr(e,t){return Ie.join(Uo(e),`${t}.json`)}function Cn(e,t){return Ie.join($o(e),t)}function nt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function pr(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function jb(e){return{maxEntries:e?.maxEntries??Oo.maxEntries,maxSessionBytes:e?.maxSessionBytes??Oo.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??Oo.maxEntryBytes}}async function Bb(e){let t=Vo(e);await Je(t)||await Ia(e,[],-1)}export{J as FileHistoryStoreError,Fo as PreviewFileSystemSiteEditEngineRuntime,Cd as SITE_EDIT_RAW_COLOR_LITERAL_RE,No as SnapshotSiteEditEngineRuntime,hb as createPreviewSiteEditEngineRuntime,db as createSiteEditEngineRuntime,kf as openFileHistoryStore,Js as scanSiteEditThemeStyleViolations};
|
|
1
|
+
import{SiteEditOperationRequestSchema as PI,SiteEditPatchPlanSchema as wI}from"@vcp-dev/contracts";function Lt(e){return{requestId:e.requestId,kind:e.kind,target:e.target,resultVersion:e.resultVersion,affectedFiles:e.affectedFiles,...e.output?{output:e.output}:{},...e.selectionRef?{selectionRef:e.selectionRef}:{}}}function vr(e,t){return{ok:!1,error:{code:"INVALID_PARAMS",message:t[0]??"Site edit operation request failed contract validation."},data:{requestId:e.id,kind:e.kind,target:e.target,resultVersion:e.documentVersion}}}function Rr(e,t){if(!e.pageComposition)throw new Error("RenderDocument is missing the required Page Composition projection.");return{siteId:t.siteId,snapshotId:t.snapshotId,routeId:e.routeId,version:e.version,entries:e.entries.map(n=>({key:n.key,...n.pageCompositionUnitKey?{pageCompositionUnitKey:n.pageCompositionUnitKey}:{},operationSummary:{canUpdateText:n.operationSummary.canUpdateText,canInsertChild:n.operationSummary.canInsertChild,canMove:n.operationSummary.canMove,canRemove:n.operationSummary.canRemove},...n.dynamicDataSummary?{dynamicDataSummary:n.dynamicDataSummary}:{}})),pageComposition:e.pageComposition.status==="unsupported"?{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics}:{status:"supported",containerKey:e.pageComposition.container.key,hasBusinessMembers:e.pageComposition.businessMembers.length>0,placementUnitKeys:e.pageComposition.placementUnits.map(n=>n.key),placements:e.pageComposition.placements.map(n=>({placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,relation:n.relation}))}}}function Pr(e){return{key:e.key,tag:e.tag,label:e.label,sourceLocator:e.sourceLocator,isOpaque:e.isOpaque,ancestors:e.ancestors,componentName:e.componentName,sourceFile:e.sourceFile,capabilities:Ap(e.capabilities),provenanceChain:e.provenanceChain?{editMode:e.provenanceChain.editMode,diagnostics:e.provenanceChain.diagnostics}:void 0,dynamicData:e.dynamicData,textSegments:e.textSegments.map(t=>({index:t.index,editable:t.editable,sourceKind:t.source?.kind??null})),boundaryKind:e.boundaryKind}}function wr(e,t){let n=new Date().toISOString();return e.type==="document-changed"?{type:"site-edit.document.changed",siteId:t.siteId,snapshotId:t.snapshotId,routeId:e.routeId,version:e.version,at:n}:e.type==="operation-completed"?{type:"site-edit.operation.completed",siteId:t.siteId,result:Lt(e.result),at:n}:e.type==="operation-failed"?{type:"site-edit.operation.failed",siteId:t.siteId,requestId:e.requestId,error:e.error,at:n}:e.type==="capability-changed"?{type:"site-edit.capability.changed",siteId:t.siteId,routeId:"",keys:e.keys,at:n}:null}function Ap(e){return{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{composeSiteEditRepeatInstanceKey as yb,getSiteEditSourceDeleteProtectionReason as xb,isSiteEditTextSourcePath as Eb,parseSiteEditRepeatInstanceKey as Sb,SITE_EDIT_SOURCE_DELETE_CAPABILITY as bb,stripSiteEditRepeatInstanceKeys as Xe}from"@vcp-dev/contracts";import{parse as Ib}from"yaml";import Ao from"node:path";function _n(e,t,n){return`${e}::${t}::${n}`}var L={NODE_NOT_FOUND:"NODE_NOT_FOUND",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"};import ai from"@babel/traverse";import*as x from"@babel/types";import{createHash as Dp}from"node:crypto";import*as rc from"@babel/parser";function jt(e,t,n,r){return{code:e,message:t,locatorKind:n,details:r}}function $(e,t,n,r,o){return{ok:!1,source:e,diagnostic:jt(t,n,r,o)}}function ti(e,t,n,r,o){return{ok:!1,source:e,diagnostic:jt(t,n,r,o)}}var Tp={"tsx-module":["jsx","typescript"],"ts-module":["typescript"],"next-app-entry":["jsx","typescript"]};function it(e){let{source:t,profile:n}=e;try{return{ok:!0,ast:rc.parse(t,{sourceType:"module",plugins:Tp[n]})}}catch(r){return{ok:!1,source:t,diagnostic:jt("parse-failed",`AST parse failed: ${r instanceof Error?r.message:String(r)}`)}}}function ni(e,t){return it({source:e,profile:oc(t.kind)})}function ri(e,t){return it({source:e,profile:oc(t)})}function oc(e){return"next-app-entry"}function Bt(e){let{filePath:t,source:n}=e,r=t.toLowerCase().split(".").pop()??"";return r==="tsx"?"tsx-module":r==="ts"?"ts-module":r==="jsx"||r==="js"||r===""&&/<\w[\s\S]*>/.test(n)?"tsx-module":"next-app-entry"}import*as Np from"@babel/parser";import*as sn from"@babel/types";import*as Et from"node:path";var oi=[".tsx",".ts",".jsx",".js"],Fp=oi.map(e=>`/index${e}`);function ic(e){let t=[];for(let n of e.program.body)sn.isImportDeclaration(n)&&typeof n.source.value=="string"&&ut(n.source.value)&&t.push(n.source.value),sn.isExportNamedDeclaration(n)&&n.source&&typeof n.source.value=="string"&&ut(n.source.value)&&t.push(n.source.value),sn.isExportAllDeclaration(n)&&typeof n.source.value=="string"&&ut(n.source.value)&&t.push(n.source.value);return t}function ut(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("@/")}function Mp(e,t){if(t.startsWith("@/"))return t.slice(2).replace(/\\/g,"/");let n=Et.dirname(e);return Et.join(n,t).replace(/\\/g,"/")}async function _p(e,t){if(oi.some(n=>e.endsWith(n))&&await t(e))return e;for(let n of oi){let r=`${e}${n}`;if(await t(r))return r}for(let n of Fp){let r=`${e}${n}`;if(await t(r))return r}return null}async function an(e,t,n){let r=await Ar(e,t,n);return r.ok?r.path:null}async function Ar(e,t,n){let r=Mp(e,t);try{if(!Op(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 _p(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 Op(e,t,n){if(!ut(t)||t.includes("\0")||t.includes("\\")||Et.posix.isAbsolute(n))return!1;let r=Et.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!Et.posix.isAbsolute(e)}var ii=(e,t)=>{let n=it({source:t,profile:Bt({filePath:e,source:t})});return n.ok?{ok:!0,module:{file:e,source:t,sourceHash:`sha256:${Dp("sha256").update(t).digest("hex")}`,ast:n.ast,imports:ic(n.ast).map(r=>({specifier:r}))}}:{ok:!1,diagnostic:{path:e,code:"parse-failed",message:n.diagnostic.message}}};var Tr="components/ui";function $t(e){if(!e)return!1;let t=si(e);return t===Tr||t.startsWith(`${Tr}/`)||t.includes(`/${Tr}/`)||t.endsWith(`/${Tr}`)}function On(e,t){return e?e.startsWith("@/")||e.startsWith("~/")?$t(e.slice(2)):e.startsWith("./")||e.startsWith("../")?$t(si(`${Lp(t)}/${e}`)):$t(e):!1}function si(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 Lp(e){let t=si(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}var jp=typeof ai=="function"?ai:ai.default;function we(e){return{startLine:e.loc?.start.line??0,startColumn:e.loc?.start.column??0,endLine:e.loc?.end.line??0,endColumn:e.loc?.end.column??0}}function Bp(e){return/^[A-Z]/.test(e)}function pi(e){let t=e.openingElement;return x.isJSXIdentifier(t.name)?t.name.name==="Fragment":x.isJSXMemberExpression(t.name)?t.name.property.name==="Fragment":!1}function ln(e){return x.isJSXFragment(e)}function cc(e){return x.isJSXIdentifier(e.name)?e.name.name:x.isJSXMemberExpression(e.name)?lc(e.name):x.isJSXNamespacedName(e.name)?`${e.name.namespace.name}:${e.name.name.name}`:"unknown"}function lc(e){return x.isJSXIdentifier(e.object)?`${e.object.name}.${e.property.name}`:x.isJSXMemberExpression(e.object)?`${lc(e.object)}.${e.property.name}`:e.property.name}function $p(e){return e.split(".")[0]??e}function Vp(e){let t=e;for(;t;){let n=t.node;if(x.isFunctionDeclaration(n)&&n.id||x.isVariableDeclarator(n)&&x.isIdentifier(n.id))return n.id.name;if(x.isExportDefaultDeclaration(n)){let r=n.declaration;if(x.isFunctionDeclaration(r)&&r.id)return r.id.name;if(x.isFunctionDeclaration(r)&&!r.id)return"default"}t=t.parentPath}return null}function Up(){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 Kp(e){let t=new Map;for(let n of e.program.body){if(!x.isImportDeclaration(n))continue;let r=n.source.value;for(let o of n.specifiers)if(x.isImportDefaultSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"default"});else if(x.isImportNamespaceSpecifier(o))t.set(o.local.name,{specifier:r,exportName:"*"});else if(x.isImportSpecifier(o)){let i=x.isIdentifier(o.imported)?o.imported.name:o.imported.value;t.set(o.local.name,{specifier:r,exportName:i})}}return t}function dt(e,t=[]){if(x.isIdentifier(e))return t.push(e.name),t;if(x.isObjectPattern(e)){for(let n of e.properties)x.isObjectProperty(n)?dt(n.value,t):x.isRestElement(n)&&dt(n.argument,t);return t}if(x.isArrayPattern(e)){for(let n of e.elements)n&&(x.isRestElement(n)?dt(n.argument,t):dt(n,t));return t}return x.isAssignmentPattern(e)?(dt(e.left,t),t):(x.isRestElement(e)&&dt(e.argument,t),t)}function St(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function Nr(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 Jp(e,t,n){e.set(t,{resolved:!0,value:n})}function mi(e,t){e.set(t,{resolved:!1})}function uc(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 Re(e,t,n){if(x.isTSAsExpression(e)||x.isTSSatisfiesExpression(e)||x.isTSNonNullExpression(e)||x.isTypeCastExpression(e)||x.isParenthesizedExpression(e))return Re(e.expression,t,n);if(x.isLogicalExpression(e))return ci([Re(e.left,t,n),Re(e.right,t,n)]);if(x.isConditionalExpression(e))return ci([Re(e.consequent,t,n),Re(e.alternate,t,n)]);if(x.isTemplateLiteral(e))return ci(e.expressions.filter(x.isExpression).map(i=>Re(i,t,n)));if(x.isIdentifier(e))return{kind:"identifier",expression:e.name,base:e.name,path:[]};if(!x.isMemberExpression(e)&&!x.isOptionalMemberExpression(e))return null;let r=[],o=e;for(;x.isMemberExpression(o)||x.isOptionalMemberExpression(o);){if(o.computed)if(x.isNumericLiteral(o.property))r.unshift({kind:"index",index:o.property.value});else if(x.isStringLiteral(o.property))r.unshift({kind:"property",name:o.property.value});else if(n&&x.isExpression(o.property)){let i=Ut(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(!x.isIdentifier(o.property))return null;r.unshift({kind:"property",name:o.property.name})}o=o.object}return x.isIdentifier(o)?{kind:r.some(i=>i.kind==="index")?"index-expression":"member-expression",expression:St(e,t),base:o.name,path:r}:null}function ci(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 Ut(e,t){if(x.isStringLiteral(e)||x.isNumericLiteral(e)||x.isBooleanLiteral(e))return e.value;if(x.isNullLiteral(e))return null;if(x.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(x.isIdentifier(e)){let n=Nr(e.name,t.valueScopes);return n.kind==="resolved"?n.value:void 0}if(x.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||x.isSpreadElement(r))return;let o=Ut(r,t);if(o===void 0)return;n.push(o)}return n}if(x.isObjectExpression(e)){let n={};for(let r of e.properties){if(!x.isObjectProperty(r)||r.computed||!x.isExpression(r.value))return;let o=null;if(x.isIdentifier(r.key)?o=r.key.name:x.isStringLiteral(r.key)&&(o=r.key.value),!o)return;let i;if(r.shorthand){if(!x.isIdentifier(r.value))return;let s=Nr(r.value.name,t.valueScopes);if(s.kind!=="resolved")return;i=s.value}else i=Ut(r.value,t);if(i===void 0)return;n[o]=i}return n}if(x.isMemberExpression(e)){let n=Re(e,"",t);if(!n)return;let r=Nr(n.base,t.valueScopes);if(r.kind!=="resolved")return;let o=uc(r.value,n.path);return o.kind==="resolved"?o.value:void 0}if(x.isCallExpression(e))return fc(e,t)??void 0}function dc(e,t,n){let r=Re(e,n,t);if(!r)return x.isMemberExpression(e)||x.isBinaryExpression(e)||x.isLogicalExpression(e)||x.isConditionalExpression(e)||x.isCallExpression(e)?{value:St(e,n),source:null}:null;let o=Nr(r.base,t.valueScopes),i=r.kind==="identifier"?o:o.kind==="resolved"?uc(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 li(e,t,n,r,o,i){return{file:e,componentName:t,elements:n,regions:r,ordinalTracker:Up(),parentStack:[],valueScopes:i,importMap:o}}function di(e,t,n){for(let r of e)for(let o of r.declarations){for(let s of dt(o.id))mi(n,s);if(!x.isIdentifier(o.id)||!o.init||!x.isExpression(o.init))continue;let i=Ut(o.init,t);i!==void 0&&Jp(n,o.id.name,i)}}function Xp(e){let t=[];for(let n of e){if(x.isVariableDeclaration(n)){t.push(n);continue}x.isExportNamedDeclaration(n)&&n.declaration&&x.isVariableDeclaration(n.declaration)&&t.push(n.declaration)}return t}function zp(e,t,n){let r=[],o=0;for(let i of e)if(x.isJSXText(i)){let s=i.value.trim();s&&r.push({index:o++,value:s,sourceRange:we(i),editable:!0,source:null})}else if(x.isJSXExpressionContainer(i)&&x.isStringLiteral(i.expression))r.push({index:o++,value:i.expression.value,sourceRange:we(i),editable:!0,source:null});else if(x.isJSXExpressionContainer(i)&&x.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:we(i),editable:!0,source:null}):r.push({index:o++,value:St(s,n),sourceRange:we(i),editable:!0,source:Re(s,n,t)})}else if(x.isJSXExpressionContainer(i)&&x.isExpression(i.expression)){let s=dc(i.expression,t,n);s&&r.push({index:o++,value:s.value,sourceRange:we(i),editable:!0,source:s.source})}return r}function Hp(e,t,n){let r=[];for(let o of e.attributes)if(!(!x.isJSXAttribute(o)||!x.isJSXIdentifier(o.name))){if(x.isStringLiteral(o.value)){r.push({name:o.name.name,value:o.value.value,sourceRange:we(o),source:null});continue}if(x.isJSXExpressionContainer(o.value)&&x.isExpression(o.value.expression)){let i=Ut(o.value.expression,t);if(o.name.name==="className"){let a=typeof i=="string"?i:i===void 0?fc(o.value.expression,t):null;if(a){r.push({name:o.name.name,value:a,sourceRange:we(o),source:null,resolvedValue:a});continue}}let s=dc(o.value.expression,t,n);if(i!==void 0&&typeof i!="string"&&typeof i!="number"){r.push({name:o.name.name,value:sc(i),sourceRange:we(o),source:Re(o.value.expression,n,t),resolvedValue:i});continue}if(!s){i!==void 0&&r.push({name:o.name.name,value:sc(i),sourceRange:we(o),source:Re(o.value.expression,n,t),resolvedValue:i});continue}r.push({name:o.name.name,value:s.value,sourceRange:we(o),source:s.source})}}return r}function fc(e,t){let n=cn(e,t);return n&&n.map(o=>o.trim()).filter(Boolean).join(" ")||null}function cn(e,t){if(x.isStringLiteral(e))return[e.value];if(x.isTemplateLiteral(e))return e.expressions.length>0?null:[e.quasis.map(n=>n.value.cooked??"").join("")];if(x.isNullLiteral(e))return[];if(x.isBooleanLiteral(e))return e.value?null:[];if(x.isIdentifier(e)||x.isMemberExpression(e)){if(x.isIdentifier(e)&&e.name==="undefined")return[];let n=Ut(e,t);return typeof n=="string"?[n]:null}if(x.isConditionalExpression(e)){let n=cn(e.consequent,t),r=cn(e.alternate,t);return!n||!r?null:[...n,...r]}if(x.isLogicalExpression(e)){if(e.operator!=="&&")return null;let n=Ut(e.left,t);return n===!1||n===null?[]:cn(e.right,t)}if(x.isArrayExpression(e)){let n=[];for(let r of e.elements){if(!r||x.isSpreadElement(r))return null;let o=cn(r,t);if(!o)return null;n.push(...o)}return n}if(x.isObjectExpression(e)){let n=[];for(let r of e.properties){if(!x.isObjectProperty(r))return null;let o=Yp(r.key);if(!o)return null;n.push(o)}return n}if(x.isCallExpression(e)){let n=Wp(e.callee);if(!n||!["cn","clsx","twMerge"].includes(n))return null;let r=[];for(let o of e.arguments){if(!x.isExpression(o))return null;let i=cn(o,t);if(!i)return null;r.push(...i)}return r}return null}function Wp(e){return x.isIdentifier(e)?e.name:x.isMemberExpression(e)&&x.isIdentifier(e.property)?e.property.name:null}function Yp(e){return x.isIdentifier(e)?e.name:x.isStringLiteral(e)?e.value:null}function Gp(e,t){let n=e.attributes.find(r=>x.isJSXAttribute(r)&&x.isJSXIdentifier(r.name)&&r.name.name===t);return!n||!x.isJSXAttribute(n)||!x.isJSXExpressionContainer(n.value)?null:n.value.expression}function Zp(e,t){for(let n of t){let r=Gp(e,n);if(r)return r}return null}function Qp(e){return x.isJSXIdentifier(e.name)?e.name.name:null}function sc(e){return e===null?"null":typeof e=="boolean"?e?"true":"false":JSON.stringify(e)}function qp(e){if(!x.isCallExpression(e)&&!x.isOptionalCallExpression(e))return null;let t=e.callee;return!x.isMemberExpression(t)&&!x.isOptionalMemberExpression(t)||!x.isIdentifier(t.property)||t.property.name!=="map"||t.computed||!x.isExpression(t.object)?null:{call:e,collection:t.object,callback:e.arguments[0]}}function ui(e){return x.isArrowFunctionExpression(e)||x.isFunctionExpression(e)}function em(e){return e==="render"||e==="itemRender"||e==="rowRender"||e==="children"}function tm(e){return e==="empty"||e==="emptyRender"||e==="loading"||e==="loadingRender"||e==="error"||e==="errorRender"||e==="fallback"||e==="headerRender"||e==="footerRender"}function ac(e,t,n,r){if(!e||!x.isExpression(e))return null;let o={kind:"repeat-template",collectionExpression:St(e,n),collectionSource:Re(e,n,r)};if(t){let i=t.params[0],s=t.params[1];x.isIdentifier(i)&&(o.itemParamName=i.name),x.isIdentifier(s)&&(o.indexParamName=s.name)}return o}function bt(e,t,n){if(!e)return[];if(x.isJSXElement(e)){if(pi(e))return Dr(e.children,t,n);let r=_r(e,t,n);return r?[r]:[]}return ln(e)?Or(e,t,n):x.isParenthesizedExpression(e)?bt(e.expression,t,n):x.isExpression(e)?Lr(e,t,n):[]}function Fr(e,t,n){let r=new Map;for(let o of e.params)for(let i of dt(o))mi(r,i);t.valueScopes.push(r);try{if(!x.isBlockStatement(e.body))return bt(e.body,t,n);let o=new Map;t.valueScopes.push(o);try{return pc(e.body.body,t,n)}finally{t.valueScopes.pop()}}finally{t.valueScopes.pop()}}function pc(e,t,n){let r=[];for(let o of e){if(x.isVariableDeclaration(o)){let i=t.valueScopes[t.valueScopes.length-1];i&&di([o],t,i);continue}r.push(...fi(o,t,n))}return r}function fi(e,t,n){if(x.isReturnStatement(e))return e.argument?bt(e.argument,t,n):[];if(x.isBlockStatement(e))return Vt(e.body,t,n);if(x.isIfStatement(e)){let r=x.isBlockStatement(e.consequent)?Vt(e.consequent.body,t,n):fi(e.consequent,t,n),o=e.alternate?x.isBlockStatement(e.alternate)?Vt(e.alternate.body,t,n):fi(e.alternate,t,n):[];return[...r,...o]}if(x.isSwitchStatement(e))return Vt(e.cases.flatMap(r=>r.consequent),t,n);if(x.isTryStatement(e)){let r=Vt(e.block.body,t,n);return e.handler&&r.push(...Vt(e.handler.body.body,t,n)),e.finalizer&&r.push(...Vt(e.finalizer.body,t,n)),r}return[]}function Vt(e,t,n){let r=new Map;t.valueScopes.push(r);try{return pc(e,t,n)}finally{t.valueScopes.pop()}}function Mr(e,t,n,r,o,i){o.length!==0&&e.regions.push({kind:t,ownerKey:n,childKeys:o,sourceRange:we(r),sourceCandidates:i&&i.length>0?i:void 0})}function nm(e,t,n,r){let o=Zp(e.openingElement,["items","dataSource","data"]),i={key:t,tag:cc(e.openingElement)};n.parentStack.push(i);try{for(let s of e.openingElement.attributes){if(!x.isJSXAttribute(s))continue;let a=Qp(s);if(!a||!x.isJSXExpressionContainer(s.value))continue;let c=s.value.expression;if(!x.isJSXEmptyExpression(c)){if(em(a)&&ui(c)){let l=Fr(c,n,r),u=ac(o,c,r,n);Mr(n,"repeat-region",t,s,l,u?[u]:void 0);continue}if(tm(a)){let l=ui(c)?Fr(c,n,r):bt(c,n,r);Mr(n,"conditional-region",t,s,l)}}}if(o)for(let s of e.children){if(!x.isJSXExpressionContainer(s)||!ui(s.expression))continue;let a=Fr(s.expression,n,r),c=ac(o,s.expression,r,n);Mr(n,"repeat-region",t,s,a,c?[c]:void 0)}}finally{n.parentStack.pop()}}function _r(e,t,n){let r=cc(e.openingElement);if(r==="Fragment"||pi(e))return Dr(e.children,t,n),null;let o=t.parentStack[t.parentStack.length-1]??null,i=o?.key??null,s=Bp(r),a;if(s){let w=t.ordinalTracker.getOrdinal(i,r);a=`component:${r}#${w}`}else{let w=t.ordinalTracker.getOrdinal(i,r);a=`${r}#${w}`}let c=o?t.elements.get(o.key)?.identity.structuralPath:void 0,l=c?`${c}/${a}`:a,u=_n(t.file,t.componentName,l),d={file:t.file,component:t.componentName,structuralPath:l,key:u},m=s?"component-boundary":null,p=zp(e.children,t,n),h=Hp(e.openingElement,t,n),E,v,C=!1;if(s){let w=t.importMap.get(r)??t.importMap.get($p(r));w&&(E=w.specifier,v=w.exportName,C=On(w.specifier,t.file))}let R={identity:d,tag:r,componentName:t.componentName,sourceFile:t.file,sourceRange:we(e),parentKey:i,childKeys:[],textSegments:p,attributes:h.length>0?h:void 0,boundaryKind:m,isOpaque:s,...C?{isPublicUiComponent:!0}:{},importedFrom:E,exportName:v};return t.elements.set(u,R),i&&t.elements.has(i)&&t.elements.get(i).childKeys.push(u),nm(e,u,t,n),(!s||e.children.length>0)&&(t.parentStack.push({key:u,tag:r}),rm(e.children,t,n),t.parentStack.pop()),u}function Or(e,t,n){return Dr(e.children,t,n)}function Dr(e,t,n){let r=[];for(let o of e)if(x.isJSXElement(o))if(pi(o))r.push(...Dr(o.children,t,n));else{let i=_r(o,t,n);i&&r.push(i)}else ln(o)?r.push(...Or(o,t,n)):x.isJSXExpressionContainer(o)&&r.push(...Lr(o.expression,t,n));return r}function rm(e,t,n){for(let r of e)x.isJSXElement(r)?_r(r,t,n):ln(r)?Or(r,t,n):x.isJSXExpressionContainer(r)&&Lr(r.expression,t,n)}function om(e){return e==="&&"||e==="||"||e==="??"}function Lr(e,t,n){if(x.isJSXEmptyExpression(e))return[];let r=qp(e);if(r){let o=r.call,i=t.parentStack[t.parentStack.length-1]??null,s=[],a=r.callback,c={kind:"repeat-template",collectionExpression:St(r.collection,n),collectionSource:Re(r.collection,n,t)};if(x.isArrowFunctionExpression(a)||x.isFunctionExpression(a)){let u=a.params[0],d=a.params[1];x.isIdentifier(u)&&(c.itemParamName=u.name),x.isIdentifier(d)&&(c.indexParamName=d.name)}s.push(c);let l={kind:"repeat-region",ownerKey:i?.key??"",childKeys:[],sourceRange:we(o),sourceCandidates:s.length>0?s:void 0};return t.regions.push(l),(x.isArrowFunctionExpression(a)||x.isFunctionExpression(a))&&l.childKeys.push(...Fr(a,t,n)),l.childKeys}if(x.isConditionalExpression(e)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:St(e.test,n),conditionSource:Re(e.test,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:we(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...bt(e.consequent,t,n)),s.childKeys.push(...bt(e.alternate,t,n)),s.childKeys}if(x.isLogicalExpression(e)&&om(e.operator)){let o=t.parentStack[t.parentStack.length-1]??null,i={kind:"conditional-branch",conditionExpression:St(e.left,n),conditionSource:Re(e.left,n,t)},s={kind:"conditional-region",ownerKey:o?.key??"",childKeys:[],sourceRange:we(e),sourceCandidates:[i]};return t.regions.push(s),s.childKeys.push(...bt(e.right,t,n)),s.childKeys}if(x.isParenthesizedExpression(e))return Lr(e.expression,t,n);if(x.isJSXElement(e)){let o=_r(e,t,n);return o?[o]:[]}return ln(e)?Or(e,t,n):[]}function im(e){let t=e.argument;return t&&(x.isExpression(t)||ln(t))?t:null}function Dn(e,t){let n=[];for(let r of e){if(x.isReturnStatement(r)){let o=im(r);o&&n.push({argument:o,statement:r,condition:t});continue}if(x.isIfStatement(r)){let o=x.isBlockStatement(r.consequent)?r.consequent.body:[r.consequent];if(n.push(...Dn(o,r.test)),r.alternate){let i=x.isBlockStatement(r.alternate)?r.alternate.body:[r.alternate];n.push(...Dn(i,r.test))}continue}if(x.isSwitchStatement(r))for(let o of r.cases){let i=o.test?x.binaryExpression("===",r.discriminant,o.test):r.discriminant;n.push(...Dn(o.consequent,i))}}return n}function mc(e){let{file:t,source:n,ast:r}=e,o=e.imports.map(d=>d.specifier),i=new Map,s=[],a=[],c=new Map,l=Kp(r);jp(r,{"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(d){let m=Vp(d);if(!m)return;let p=d.node,h=[];if(x.isArrowFunctionExpression(p))x.isExpression(p.body)||ln(p.body)?h=[{argument:p.body,statement:x.returnStatement(x.isExpression(p.body)?p.body:null)}]:x.isBlockStatement(p.body)&&(h=Dn(p.body.body));else{let z=p.body;x.isBlockStatement(z)&&(h=Dn(z.body))}if(h.length===0){d.skip();return}let E=new Map;di(Xp(r.program.body),li(t,m,i,s,l,[E]),E);let v=new Map;for(let z of p.params)for(let te of dt(z))mi(v,te);let C=x.isBlockStatement(p.body)?p.body.body:[],R=h[0]?.statement??null;for(let z of C){if(R&&z===R)break;x.isVariableDeclaration(z)&&di([z],li(t,m,i,s,l,[E,v]),v)}let w=li(t,m,i,s,l,[E,v]);for(let z of h){let te=bt(z.argument,w,n);for(let le of te)a.includes(le)||a.push(le);if(z.condition){let le={kind:"conditional-branch",conditionExpression:St(z.condition,n),conditionSource:Re(z.condition,n,w)};Mr(w,"conditional-region","",z.statement,te,[le])}}d.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 hi(e,t,n,r){return[...e.map(o=>({...o})),{fromFile:t,specifier:n,targetPath:r}]}function jr(e,t,n){return{...e,details:{...e.details??{},entryFile:t,importStack:n.map(r=>({...r}))}}}async function hc(e,t,n,r,o={}){let i=o.maxDepth??10,s=o.version??1,a=o.parseModule??ii,c=new Map,l=new Map,u=new Map,d=[],m=new Set,p=C=>{let R=`${C.path}\0${C.code}\0${C.message}\0${JSON.stringify(C.details??{})}`;m.has(R)||(m.add(R),d.push(C))},h=[{file:e,source:t,depth:0,diagnosticEntryFile:e,importStack:[]},...(o.additionalEntries??[]).map(C=>({file:C.file,source:C.source,depth:0,diagnosticEntryFile:C.file,importStack:[]}))],E=new Set;for(;h.length>0;){let C=h.shift(),{file:R,source:w,depth:z,diagnosticEntryFile:te,importStack:le}=C;if(E.has(R))continue;E.add(R),c.set(R,w);let A=a(R,w);if(!A.ok){p(jr(A.diagnostic,te,le));continue}u.set(R,A.module);let{graph:M,localImports:O}=mc(A.module);for(let j of M.elements.values())if(j.importedFrom&&ut(j.importedFrom)){let ee=j.importedFrom,G=await Ar(R,ee,r);G.ok?(j.importedFrom=G.path,$t(G.path)&&(j.isPublicUiComponent=!0)):On(ee,R)||p(jr(G.diagnostic,te,hi(le,R,ee,G.diagnostic.path)))}if(l.set(R,M),!(z>=i))for(let j of O){if(sm(j))continue;let ee=await Ar(R,j,r);if(!ee.ok){On(j,R)||p(jr(ee.diagnostic,te,hi(le,R,j,ee.diagnostic.path)));continue}let G=ee.path;if(E.has(G)||$t(G))continue;let xe=hi(le,R,j,G);try{let W=await n(G);h.push({file:G,source:W,depth:z+1,diagnosticEntryFile:te,importStack:xe})}catch(W){p(jr({path:G,code:"import-read-failed",message:`Failed to read imported file: ${G}`,details:{fromFile:R,specifier:j,reason:W instanceof Error?W.message:String(W)}},te,xe))}}}let v=am(e,l,s,(o.additionalEntries??[]).map(C=>C.file));return v.diagnostics=d,{graph:v,allSources:c,diagnostics:d,parsedModules:u,entryModule:u.get(e)??null}}function sm(e){return/\.(?:css|scss|sass|less)(?:\?.*)?$/i.test(e)}function am(e,t,n,r=[]){let o=new Map,i=[],s=new Map,a=[];for(let[c,l]of t){for(let[u,d]of l.elements)o.set(u,d);for(let u of l.regions)i.push(u);for(let[u,d]of l.fileIndex){let m=s.get(u)??[];s.set(u,[...m,...d])}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}}function gc(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}),yc(i,r,o,t,e)}}return{nodes:t,rootKeys:[...e.rootKeys]}}function yc(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}),yc(s,t,n,r,o))}}import{isSiteEditRuntimeContainerTag as cm,isSiteEditRuntimeVoidElementTag as lm}from"@vcp-dev/contracts/site-edit-runtime-capability";function um(e,t,n){let r=t.nodes.get(e),o=n.elements.get(e);if(!r||!o)return{key:e,canUpdateText:!1,canInsertChild:!1,canMove:!1,canRemove:!1,constraints:[{kind:"opaque-region",message:"Node not found in graph"}]};let i=r.constraints.map(w=>({kind:w.kind,message:w.reason})),s=o.isOpaque,c=r.parentKey===null&&o.componentName==="Page",l=o.tag.toLowerCase(),u=o.tag!==l,d=!u&&lm(l),m=u||cm(l),p=u&&o.childKeys.length>0&&!o.isPublicUiComponent,h=o.textSegments.length>0&&o.textSegments.some(w=>w.editable);d&&!i.some(w=>w.kind==="void-element")&&i.push({kind:"void-element",message:`Element '${o.tag}' is void: children cannot be inserted`}),!d&&!m&&!i.some(w=>w.kind==="void-element")&&i.push({kind:"void-element",message:`Element '${o.tag}' cannot contain structured children`});let E=h&&!s,v=!o.isPublicUiComponent&&!d&&m&&(!s||p);return{key:e,canUpdateText:E,canInsertChild:v,canMove:!c,canRemove:!c,constraints:i}}function xc(e,t){let n=new Map;for(let r of e.nodes.keys())n.set(r,um(r,e,t));return n}import{createHash as Vi}from"node:crypto";import Oi from"@babel/traverse";function gi(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 Dh}from"node:crypto";import Zc from"node:path";import*as eo from"@babel/parser";import Ti from"@babel/generator";import Ni from"@babel/traverse";import*as Ct from"@babel/types";import yi from"@babel/traverse";var It=typeof yi=="function"?yi:yi.default,Br=new WeakMap,Ec=new WeakMap;function pt(e,t){let n=ni(e,t);if(!n.ok)return ti(e,n.diagnostic.code,n.diagnostic.message,t.kind);let r=re(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}}:ti(e,r.diagnostic.code,r.diagnostic.message,t.kind,r.diagnostic.details)}function re(e,t){return t.kind==="jsx-node"?kc(e,t):t.kind==="jsx-attribute"?gm(e,t):t.kind==="value"?ym(e,t):t.kind==="expression"?xm(e,t):t.kind==="directive"?Em(e,t):t.kind==="export"?Sm(e,t):{ok:!1,diagnostic:jt("unsupported-syntax",`Unsupported locator kind: ${t.kind}`)}}function kc(e,t){return t.strategy==="source-range"?dm(e,t):fm(e,t)}function dm(e,t){let n=null;if(It(e,{JSXElement(o){if(!dn(o.node,t.sourceRange))return;let i=Ee("jsx-node",o);if(i){if(!n){n=i;return}i.end-i.start<n.end-n.start&&(n=i)}},JSXFragment(o){if(!dn(o.node,t.sourceRange))return;let i=Ee("jsx-node",o);i&&(!n||i.end-i.start<n.end-n.start)&&(n=i)},JSXExpressionContainer(o){if(!dn(o.node,t.sourceRange))return;let i=Ee("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&&!Nm(r.path,t.expectedIdentity)?be("jsx-node","locator-miss","JSX node failed expected identity validation"):{ok:!0,match:r}}function fm(e,t){if(t.structuralPath===""){let r=mm(e,t.component);if(r){let o=hm(r);if(o)return o}}let n=null;return It(e,{JSXElement(r){if(jn(r)!==t.component||Ei(r)!==t.structuralPath)return;let i=Ee("jsx-node",r);i&&(n=i,r.stop())},JSXFragment(r){if(jn(r)!==t.component||Ei(r)!==t.structuralPath)return;let i=Ee("jsx-node",r);i&&(n=i,r.stop())}}),!n&&t.expectedRange&&(n=pm(e,t.component,t.expectedRange)),n?{ok:!0,match:n}:be("jsx-node","locator-miss","JSX node not found for structural-path locator")}function pm(e,t,n){let r=null;return It(e,{JSXElement(o){if(jn(o)!==t||!dn(o.node,n))return;let i=Ee("jsx-node",o);i&&(r=i,o.stop())},JSXFragment(o){if(jn(o)!==t||!dn(o.node,n))return;let i=Ee("jsx-node",o);i&&(r=i,o.stop())}}),r}function mm(e,t){let n=null;return It(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 hm(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 gm(e,t){let n=kc(e,t.element);if(!n.ok)return n;let s=n.match.path.get("openingElement").get("attributes").find(c=>Fm(c,t.name));if(!s||!s.isJSXAttribute())return be("jsx-attribute","locator-miss",`JSX attribute '${t.name}' not found`);let a=Ee("jsx-attribute",s);return a?{ok:!0,match:a}:be("jsx-attribute","locator-miss",`JSX attribute '${t.name}' has no source range`)}function ym(e,t){let n=bm(e,t);if(!n.ok)return n;let r=Im(n.match.path,t.path??[]);return r.ok?t.expectedRange&&!ft(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 xm(e,t){let n=null;return It(e,{Identifier(r){if(!Pm(r))return;let o=bc(r);if(!o||!Ic(o,t))return;let i=Ee("expression",r);i&&(t.expectedRange&&!ft(r.node.loc,t.expectedRange)||(n=i,r.stop()))},MemberExpression(r){let o=bc(r);if(!o||!Ic(o,t))return;let i=Ee("expression",r);i&&(t.expectedRange&&!ft(r.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:be("expression","locator-miss","Expression not found")}function Em(e,t){let n=null;return It(e,{Program(r){let i=r.get("directives").find(a=>a.node.value.value===t.value);if(!i||t.expectedRange&&!ft(i.node.loc,t.expectedRange))return;let s=Ee("directive",i);s&&(n=s,r.stop())}}),n?{ok:!0,match:n}:be("directive","locator-miss",`Directive '${t.value}' not found`)}function Sm(e,t){let n=null;return It(e,{ExportNamedDeclaration(r){if(t.exportKind==="generate-metadata"){let c=r.get("declaration");if(c.isFunctionDeclaration()&&c.node.id?.name==="generateMetadata"){let m=Ee("export",c);if(!m||t.expectedRange&&!ft(c.node.loc,t.expectedRange))return;n=m,r.stop();return}if(!c.isVariableDeclaration())return;let l=Si(c,"generateMetadata");if(!l||!l.isVariableDeclarator())return;let u=l.get("init");if(!u.node)return;let d=Ee("export",u);if(!d||t.expectedRange&&!ft(u.node.loc,t.expectedRange))return;n=d,r.stop();return}let o=r.get("declaration");if(!o.isVariableDeclaration())return;let i=Si(o,t.exportKind==="named"?t.name:"metadata");if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node||t.expectedRange&&!ft(s.node.loc,t.expectedRange))return;let a=Ee("export",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(t.exportKind!=="default")return;let o=r.get("declaration"),i=Ee("export",o);i&&(t.expectedRange&&!ft(o.node.loc,t.expectedRange)||(n=i,r.stop()))}}),n?{ok:!0,match:n}:be("export","export-not-found",`Export '${Tm(t)}' not found`)}function bm(e,t){let n=null;return It(e,{Expression(r){if(n||t.root.kind!=="expression"||!dn(r.node,t.root.sourceRange))return;let o=Ee("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 p=r.get("init");if(!p.node)return;let h=Ee("value",p);if(!h)return;n=h,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(p=>p?.type==="Identifier"&&p.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,d=r.get(`init.arguments.${u}`);if(!d||Array.isArray(d)||!d.node)return;let m=Ee("value",d);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=Si(o,t.root.name);if(!i||!i.isVariableDeclarator())return;let s=i.get("init");if(!s.node)return;let a=Ee("value",s);a&&(n=a,r.stop())},ExportDefaultDeclaration(r){if(n||t.root.kind!=="default-export")return;let o=r.get("declaration"),i=Ee("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 Im(e,t){let n=xi(e);for(let o of t){if(n=xi(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=>Mm(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=xi(n);let r=Ee("value",n);return r?{ok:!0,match:r}:be("value","locator-miss","Resolved value has no source range")}function xi(e){let t=e;for(;t.isTSAsExpression()||t.isTSSatisfiesExpression()||t.isTSNonNullExpression();)t=t.get("expression");return t}function Ee(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 dn(e,t){return ft(e.loc,t)}function ft(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 Ei(e){let t=[],n=e,r=e.node;for(;n;){if(n.isJSXElement()){if(!$r(n.node)){let o=Cc(n.node.openingElement);o&&(/^[A-Z]/.test(o)?t.unshift(`component:${o}#${Sc(n,o)}`):t.unshift(`${o}#${Sc(n,o)}`))}}else n.isJSXFragment()&&n.node===r&&t.unshift("fragment");if(!n.parentPath||Rm(n.parentPath))break;n=n.parentPath}return t.join("/")}function $r(e){let t=e.openingElement.name;return t.type==="JSXIdentifier"?t.name==="Fragment":t.type==="JSXMemberExpression"&&t.property.name==="Fragment"}function Sc(e,t){let n=km(e);if(!n)return 0;let r=Br.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=0,i=Br.get(n.node)?.get(t);if(!i){let s=Br.get(n.node);s||(s=new Map,Br.set(n.node,s)),i=new WeakMap,s.set(t,i)}for(let s of Ln(n))if(Cc(s.node.openingElement)===t){if(i.set(s.node,o),s.node===e.node)return o;o++}return i.get(e.node)??0}function km(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if($r(t.node)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function Ln(e){let t=Ec.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($r(o.node)){n.push(...Ln(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...Ln(o));continue}o.isJSXExpressionContainer()&&n.push(...un(o.get("expression")))}return Ec.set(e.node,n),n}function un(e){return e.isJSXElement()?$r(e.node)?Ln(e):[e]:e.isJSXFragment()?Ln(e):e.isParenthesizedExpression()?un(e.get("expression")):e.isLogicalExpression()&&Cm(e.node.operator)?un(e.get("right")):e.isConditionalExpression()?[...un(e.get("consequent")),...un(e.get("alternate"))]:e.isArrayExpression()?e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:un(t)):[]}function Cm(e){return e==="&&"||e==="||"||e==="??"}function Cc(e){return e.name.type==="JSXIdentifier"?e.name.name:e.name.type==="JSXMemberExpression"?vm(e.name):null}function vm(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 jn(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 Rm(e){return!!(e.isFunctionDeclaration()||e.isFunctionExpression()||e.isArrowFunctionExpression())}function Pm(e){return!(!e.isExpression()||e.parentPath?.isMemberExpression({property:e.node}))}function bc(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 Ic(e,t){return e.base===t.base&&wm(e.path,t.path??[])}function wm(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 Am(e){return e.key.type==="Identifier"?e.key.name:e.key.type==="StringLiteral"?e.key.value:null}function Tm(e){return e.exportKind==="named"?e.name:e.exportKind}function be(e,t,n,r){return{ok:!1,diagnostic:jt(t,n,e,r)}}function Nm(e,t){return jn(e)!==t.component?!1:Ei(e)===t.structuralPath}function Fm(e,t){return!e.isJSXAttribute()||e.node.name.type!=="JSXIdentifier"?!1:e.node.name.name===t}function Si(e,t){return e.get("declarations").find(n=>!n.isVariableDeclarator()||n.node.id.type!=="Identifier"?!1:n.node.id.name===t)}function Mm(e,t){return e.isObjectProperty()?Am(e.node)===t:!1}import bi from"@babel/generator";var _m=typeof bi=="function"?bi:bi.default;function Om(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 Dm(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 Lm(e,t){return e.split(`
|
|
3
|
+
`).map(r=>Dm(r,t)).join(`
|
|
4
|
+
`)}function Vr(e){let{ast:t,source:n}=e;try{let r=Om(n),i=_m(t,{comments:!0,jsescOption:{minimal:!0,quotes:"single"}},n).code;return r!=="2"&&(i=Lm(i,r)),{ok:!0,source:i}}catch(r){return $(n,"printer-failed",`AST print failed: ${r instanceof Error?r.message:String(r)}`)}}import*as Rc from"@babel/parser";import{arrayExpression as jm,booleanLiteral as Bm,identifier as $m,jsxAttribute as Vm,jsxExpressionContainer as Um,jsxIdentifier as Km,nullLiteral as Jm,numericLiteral as Xm,objectExpression as zm,objectProperty as Hm,stringLiteral as Pc}from"@babel/types";function vc(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 Bn(e,t,n){return{ok:!0,source:t,operation:{type:n.kind,nodeId:n.target,kind:n.kind,target:n.target,beforeSourceHash:vc(e),afterSourceHash:vc(t),inverse:n.inverse}}}function de(e,t,n){let r=Vr({ast:e,source:t});return r.ok?Bn(t,r.source,n):r}function Ie(e,t){let n=ri(e,t);return n.ok?{ok:!0,ast:n.ast}:{ok:!1,result:{ok:!1,source:e,diagnostic:n.diagnostic}}}function Ur(e,t){return Vr({ast:e,source:t})}function Wm(e,t,n){let r=re(e,t);return r.ok?{ok:!0,match:r.match}:{ok:!1,result:{ok:!1,source:n,diagnostic:r.diagnostic}}}function wc(e,t,n){let r=Wm(e,t,n);return r.ok?r.match.path.isJSXElement()?r:{ok:!1,result:$(n,"unsupported-syntax","JSX locator must resolve to JSXElement","jsx-node")}:r}function Ac(e,t){let n=re(e,t);return n.ok?{ok:!0,match:n.match}:n.diagnostic.code==="locator-miss"?{ok:!0,match:null}:{ok:!1,diagnostic:n.diagnostic}}function fn(e){return typeof e=="string"?Pc(e):typeof e=="number"?Xm(e):typeof e=="boolean"?Bm(e):e===null?Jm():Array.isArray(e)?jm(e.map(t=>fn(t))):zm(Object.entries(e).map(([t,n])=>Hm($m(t),fn(n))))}function Ym(e){return typeof e=="string"?Pc(e):Um(fn(e))}function Kr(e,t){return Vm(Km(e),Ym(t))}function Tc(e,t){try{let r=Rc.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:$(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:$(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function Jr(e){let{source:t,locator:n,segmentIndex:r,newText:o}=e,i=Ie(t,"jsx-node");if(!i.ok)return i.result;let s=re(i.ast,n);if(!s.ok)return{ok:!1,source:t,diagnostic:s.diagnostic};let c=Gm(s.match.path)[r];if(!c)return $(t,"locator-miss",`Text segment ${r} not found`,"jsx-node");switch(c.kind){case"jsx-text":c.path.node.value=Zm(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 de(i.ast,t,{kind:"update-text",target:"jsx-node",inverse:"restore-text"})}function Gm(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=Qm(r.get("expression"));o.length>0&&t.push(...o)}}return t}function Zm(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"";return`${n}${t.trim()}${r}`}function Qm(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 Ii}from"@babel/types";function pn(e){let{source:t,locator:n}=e,r=Ie(t,"jsx-node");if(!r.ok)return r.result;let o=re(r.ast,n);return o.ok?(qm(o.match.path),de(r.ast,t,{kind:"remove-node",target:"jsx-node",inverse:"insert-child"})):{ok:!1,source:t,diagnostic:o.diagnostic}}function qm(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Ii());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Ii());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Ii());return}e.remove()}import{cloneNode as uh}from"@babel/types";import ki from"@babel/traverse";import*as V from"@babel/types";var eh=typeof ki=="function"?ki:ki.default;function Ve(e,t,n,r){if(!e.ok)return e;let o=$e(n);if(!o)return e;let i=th(t,o,r);return i?{...e,selectionRef:i}:e}function th(e,t,n){let r=nh(e,t);if(!r)return;let o=n.sourceLocator?Nc(n.sourceLocator):void 0,i=n.targetParentLocator?Nc(n.targetParentLocator):void 0,s=n.file??i?.file??o?.file,a=n.component??oh(r)??i?.component??o?.component;if(!(!s||!a))return{key:_n(s,a,ih(r))}}function Nc(e){return e.strategy==="structural-path"?{file:e.file,component:e.component,structuralPath:e.structuralPath}:e.expectedIdentity}function nh(e,t){let n=null;return eh(e,{JSXElement(r){r.node===t&&(n=r,r.stop())}}),n}function $e(e){if(!e)return null;if(V.isJSXElement(e))return mn(e)?Fc(e.children):e;if(V.isJSXFragment(e))return Fc(e.children);if(V.isJSXExpressionContainer(e)||V.isParenthesizedExpression(e)||V.isTSAsExpression(e)||V.isTSSatisfiesExpression(e)||V.isTSTypeAssertion(e)||V.isTSNonNullExpression(e))return $e(e.expression);if(V.isLogicalExpression(e))return $e(e.right);if(V.isConditionalExpression(e))return $e(e.consequent)??$e(e.alternate);if(V.isCallExpression(e)||V.isOptionalCallExpression(e))return Lc(e)?rh(e.arguments[0]):null;if(V.isArrayExpression(e))for(let t of e.elements){if(!t)continue;let n=$e(t);if(n)return n}return null}function Fc(e){for(let t of e){let n=$e(t);if(n)return n}return null}function rh(e){return!e||!V.isArrowFunctionExpression(e)&&!V.isFunctionExpression(e)?null:V.isBlockStatement(e.body)?$n(e.body.body):$e(e.body)}function $n(e){for(let t of e){if(V.isReturnStatement(t)){let n=$e(t.argument);if(n)return n;continue}if(V.isBlockStatement(t)){let n=$n(t.body);if(n)return n;continue}if(V.isIfStatement(t)){let n=Mc(t.consequent);if(n)return n;let r=t.alternate?Mc(t.alternate):null;if(r)return r;continue}if(V.isSwitchStatement(t))for(let n of t.cases){let r=$n(n.consequent);if(r)return r}}return null}function Mc(e){return V.isBlockStatement(e)?$n(e.body):$n([e])}function oh(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(V.isFunctionDeclaration(n))return n.id?.name??"default"}if(t.isVariableDeclarator()&&V.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 _c=new WeakMap,Oc=new WeakMap,Ci=new WeakMap;function ih(e){let t=_c.get(e.node);if(t!==void 0)return t;let n=[],r=e;for(;r;){if(r.isJSXElement()){let i=sh(r);i&&n.unshift(i)}r=r.parentPath}let o=n.join("/");return _c.set(e.node,o),o}function sh(e){let t=vi(e.node.openingElement.name);return!t||mn(e.node)?null:/^[A-Z]/.test(t)?`component:${t}#${Dc(e,t)}`:`${t}#${Dc(e,t)}`}function Dc(e,t){let n=ah(e);if(!n)return 0;let r=Ci.get(n.node)?.get(t)?.get(e.node);if(r!==void 0)return r;let o=Ci.get(n.node);o||(o=new Map,Ci.set(n.node,o));let i=o.get(t);i||(i=new WeakMap,o.set(t,i));let s=0;for(let a of Kt(n))if(vi(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 ah(e){let t=e.parentPath,n=null;for(;t;){if(t.isJSXFragment()){n=t,t=t.parentPath;continue}if(t.isJSXElement()){if(mn(t.node)){t=t.parentPath;continue}return t}t=t.parentPath}return n}function Kt(e){let t=Oc.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(mn(o.node)){n.push(...Kt(o));continue}n.push(o);continue}if(o.isJSXFragment()){n.push(...Kt(o));continue}o.isJSXExpressionContainer()&&n.push(...mt(o.get("expression")))}return Oc.set(e.node,n),n}function mt(e){if(e.isJSXElement())return mn(e.node)?Kt(e):[e];if(e.isJSXFragment())return Kt(e);if(e.isParenthesizedExpression())return mt(e.get("expression"));if(e.isLogicalExpression())return mt(e.get("right"));if(e.isConditionalExpression())return[...mt(e.get("consequent")),...mt(e.get("alternate"))];if(e.isArrayExpression())return e.get("elements").flatMap(t=>Array.isArray(t)||!t.node||!t.isExpression()?[]:mt(t));if((e.isCallExpression()||e.isOptionalCallExpression())&&Lc(e.node)){let t=e.get("arguments"),n=Array.isArray(t)?t[0]:void 0;return n?ch(n):[]}return[]}function ch(e){if(!e.isArrowFunctionExpression()&&!e.isFunctionExpression())return[];let t=e.get("body");if(t.isJSXElement())return mn(t.node)?Kt(t):[t];if(t.isJSXFragment())return Kt(t);if(t.isParenthesizedExpression())return mt(t.get("expression"));if(t.isLogicalExpression()||t.isConditionalExpression())return mt(t);if(!t.isBlockStatement())return[];for(let n of t.get("body")){if(!n.isReturnStatement())continue;let r=n.get("argument");return r.node?mt(r):[]}return[]}function Lc(e){let t=e.callee;return(V.isMemberExpression(t)||V.isOptionalMemberExpression(t))&&V.isIdentifier(t.property)&&t.property.name==="map"&&!t.computed}function mn(e){let t=vi(e.openingElement.name);return t==="Fragment"||t==="React.Fragment"}function vi(e){return V.isJSXIdentifier(e)?e.name:V.isJSXMemberExpression(e)?jc(e):V.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:null}function jc(e){return`${V.isJSXIdentifier(e.object)?e.object.name:jc(e.object)}.${e.property.name}`}function kt(e,t){if(t.parentPath===e&&t.listKey==="children"&&Bc(e))return e;if(!t.parentPath||t.listKey!=="children")return null;let n=t.parentPath;if(!Bc(n))return null;let r=n;for(;r&&r!==e;){if(!lh(r)||r.listKey!=="children")return null;r=r.parentPath}return r===e?n:null}function Bc(e){return e.isJSXElement()||e.isJSXFragment()}function lh(e){if(e.isJSXFragment())return!0;if(!e.isJSXElement())return!1;let t=e.node.openingElement.name;return t.type==="JSXIdentifier"?t.name==="Fragment":t.type==="JSXMemberExpression"&&t.property.name==="Fragment"}function hn(e){let{source:t,locator:n,node:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Ie(t,"jsx-node");if(!a.ok)return a.result;let c=re(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};if(!c.match.path.isJSXElement()&&!c.match.path.isJSXFragment())return $(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 w=c.match.path.node;if(!w.closingElement||w.openingElement.selfClosing)return $(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=Tc(t,r.jsx);if(!u.ok)return u.result;let d=uh(u.node,!0),m=l.node.children,p={...s,targetParentLocator:n},h=w=>s?Ve(w,a.ast,d,p):w;if(o==="append")return m.push(d),h(de(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return m.unshift(d),h(de(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"}));if(!i)return $(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let E=re(a.ast,i);if(!E.ok)return{ok:!1,source:t,diagnostic:E.diagnostic};let v=kt(c.match.path,E.match.path);if(!v)return $(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");l=v;let C=l.node.children,R=C.findIndex(w=>w===E.match.path.node);return R===-1?$(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(C.splice(o==="before"?R:R+1,0,d),h(de(a.ast,t,{kind:"insert-child",target:"jsx-node",inverse:"remove-child"})))}import*as $c from"@babel/parser";import{cloneNode as dh}from"@babel/types";function Xr(e){let{source:t,locator:n,expression:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Ie(t,"jsx-node");if(!a.ok)return a.result;let c=fh(t,r);if(!c.ok)return c.result;let l=re(a.ast,n);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return $(t,"unsupported-syntax","insert-jsx-expression-child target must be a JSXElement or JSXFragment","jsx-node");if(l.match.path.isJSXElement()){let C=l.match.path.node;if(!C.closingElement||C.openingElement.selfClosing)return $(t,"self-closing-element","Cannot insert child into self-closing element","jsx-node")}let u=l.match.path,d=null;if(i){let C=re(a.ast,i);if(!C.ok)return{ok:!1,source:t,diagnostic:C.diagnostic};let R=kt(l.match.path,C.match.path);if(!R)return $(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=R,d=C.match.path.node}else if(o==="before"||o==="after")return $(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=dh(c.node,!0),p=u.node.children,h={...s,targetParentLocator:n},E=C=>s?Ve(C,a.ast,m,h):C;if(o==="append")return p.push(m),E(de(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));if(o==="prepend")return p.unshift(m),E(de(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"}));let v=p.findIndex(C=>C===d);return v===-1?$(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(p.splice(o==="before"?v:v+1,0,m),E(de(a.ast,t,{kind:"insert-jsx-expression-child",target:"jsx-node",inverse:"remove-child"})))}function fh(e,t){try{let r=$c.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:$(e,"unsupported-syntax","Expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:$(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}import{cloneNode as ph,nullLiteral as Ri}from"@babel/types";import*as gn from"@babel/types";function yn(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,selectionContext:s}=e,a=Ie(t,"jsx-node");if(!a.ok)return a.result;let c=re(a.ast,n);if(!c.ok)return{ok:!1,source:t,diagnostic:c.diagnostic};let l=re(a.ast,r);if(!l.ok)return{ok:!1,source:t,diagnostic:l.diagnostic};if(!l.match.path.isJSXElement()&&!l.match.path.isJSXFragment())return $(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 R=l.match.path.node;if(!R.closingElement||R.openingElement.selfClosing)return $(t,"self-closing-element","Cannot move child into self-closing element","jsx-node")}let d=null;if(i){let R=re(a.ast,i);if(!R.ok)return{ok:!1,source:t,diagnostic:R.diagnostic};let w=kt(l.match.path,R.match.path);if(!w)return $(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");u=w,d=R.match.path}else if(o==="before"||o==="after")return $(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");let m=d&&typeof d.key=="number"?d.key:-1;if(d&&m===-1)return $(t,"locator-miss","Anchor node does not exist in target parent","jsx-node");let p=ph(c.match.path.node,!0);if(!gn.isJSXElement(p)&&!gn.isJSXExpressionContainer(p)&&!gn.isJSXFragment(p))return $(t,"unsupported-syntax","move-node source must resolve to a JSX child","jsx-node");let h=c.match.path.parentPath?.node===u.node&&typeof c.match.path.key=="number"?c.match.path.key:-1;if(d&&c.match.path.parentPath?.node===d.parentPath?.node&&c.match.path.key===d.key)return $(t,"invalid-parent-child-relation","Cannot move a node relative to itself","jsx-node");mh(c.match.path);let E=u.node.children,v={...s,sourceLocator:n,targetParentLocator:r};if(o==="append")return E.push(p),Ve(Ur(a.ast,t),a.ast,p,v);if(o==="prepend")return E.unshift(p),Ve(Ur(a.ast,t),a.ast,p,v);let C=m-(h!==-1&&h<m?1:0);return E.splice(o==="before"?C:C+1,0,p),Ve(Ur(a.ast,t),a.ast,p,v)}function mh(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Ri());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Ri());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Ri());return}e.remove()}import*as Vc from"@babel/parser";import{cloneNode as hh,nullLiteral as Pi}from"@babel/types";function zr(e){let{source:t,locator:n,targetParentLocator:r,placement:o,anchorLocator:i,repeatExpression:s,selectionContext:a}=e,c=Ie(t,"jsx-node");if(!c.ok)return c.result;let l=gh(t,s);if(!l.ok)return l.result;let u=re(c.ast,n);if(!u.ok)return{ok:!1,source:t,diagnostic:u.diagnostic};let d=re(c.ast,r);if(!d.ok)return{ok:!1,source:t,diagnostic:d.diagnostic};if(!d.match.path.isJSXElement()&&!d.match.path.isJSXFragment())return $(t,"unsupported-syntax","move-repeat-template-child target parent must be a JSXElement or JSXFragment","jsx-node");if(d.match.path.isJSXElement()){let w=d.match.path.node;if(!w.closingElement||w.openingElement.selfClosing)return $(t,"self-closing-element","Cannot move repeat child into self-closing element","jsx-node")}let m=d.match.path,p=null;if(i){let w=re(c.ast,i);if(!w.ok)return{ok:!1,source:t,diagnostic:w.diagnostic};let z=kt(d.match.path,w.match.path);if(!z)return $(t,"invalid-parent-child-relation","Anchor node is not a direct child of the target parent","jsx-node");m=z,p=w.match.path.node}else if(o==="before"||o==="after")return $(t,"locator-miss",`Placement '${o}' requires anchorLocator`,"jsx-node");if(!u.match.path.isJSXElement())return $(t,"unsupported-syntax","move-repeat-template-child source must be a JSXElement","jsx-node");let h=m.node,E=hh(l.node,!0);yh(u.match.path);let v={...a,sourceLocator:n,targetParentLocator:r},C=h.children;if(o==="append")return C.push(E),Ve(de(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,E,v);if(o==="prepend")return C.unshift(E),Ve(de(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,E,v);let R=C.findIndex(w=>w===p);return R===-1?$(t,"locator-miss","Anchor node no longer exists in target parent","jsx-node"):(C.splice(o==="before"?R:R+1,0,E),Ve(de(c.ast,t,{kind:"move-repeat-template-child",target:"jsx-node",inverse:"move-repeat-template-child"}),c.ast,E,v))}function gh(e,t){try{let r=Vc.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:$(e,"unsupported-syntax","Repeat expression must parse as a JSX expression container","jsx-node")}:{ok:!0,node:i}}catch(n){return{ok:!1,result:$(e,"parse-failed",`AST parse failed: ${n instanceof Error?n.message:String(n)}`,"jsx-node")}}}function yh(e){if(e.parentPath?.isConditionalExpression()&&(e.key==="consequent"||e.key==="alternate")){e.replaceWith(Pi());return}if(e.parentPath?.isArrowFunctionExpression()&&e.key==="body"){e.replaceWith(Pi());return}if(e.parentPath?.isReturnStatement()&&e.key==="argument"){e.replaceWith(Pi());return}e.remove()}function Hr(e){let{source:t,locator:n,props:r}=e,o=Ie(t,"jsx-node");if(!o.ok)return o.result;let i=wc(o.ast,n,t);if(!i.ok)return i.result;let s=i.match.path.node.openingElement;for(let[a,c]of Object.entries(r)){if(c===void 0)continue;let l={kind:"jsx-attribute",element:n,name:a},u=Ac(o.ast,l);if(u.ok&&u.match!==null){let d=u.match.path.node;d.value=c===""?Kr(a,"").value:Kr(a,c).value}else s.attributes.push(Kr(a,c))}return de(o.ast,t,{kind:"set-props",target:"jsx-node",inverse:"set-props"})}import{getBindingIdentifiers as xh,identifier as Vn,importDeclaration as Eh,importDefaultSpecifier as Sh,importNamespaceSpecifier as bh,importSpecifier as Ih,isImportDefaultSpecifier as Uc,isImportNamespaceSpecifier as Kc,isImportSpecifier as Jc,stringLiteral as kh}from"@babel/types";function xn(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(v=>!Fh(v));if(o!==-1){let v=r[o],C=v&&typeof v=="object"&&"kind"in v?v.kind:void 0;return $(t,"unsupported-syntax",`Unsupported import spec kind: ${String(C)}`)}let i=Ah(r);if(!i.ok)return $(t,"unsupported-syntax",i.message);let s=Ie(t);if(!s.ok)return s.result;let{ast:a}=s,c=a.program,l=c.body.filter(v=>v.type==="ImportDeclaration"&&v.source.value===n),u=new Set(l.flatMap(v=>v.specifiers.flatMap(C=>{let R=Mh(v,C);return R?[R]:[]}))),d=i.imports.filter(v=>!u.has(Gc(v)));if(d.length===0)return Bn(t,t,{kind:"add-import",target:"import",inverse:"remove-import"});let m=Th(c.body),p=d.find(v=>m.has(wi(v)));if(p)return $(t,"unsupported-syntax",`Import local binding already exists: ${wi(p)}`);let h=wh(d);if(h.reduce((v,C)=>v+C.length,0)!==d.length)return $(t,"unsupported-syntax","Unsupported import specifier grouping");for(let v of h){if(!Wc(zc(v)))return $(t,"unsupported-syntax","Unsupported import specifier combination");let C=l.find(R=>Ch(R,v));if(C)vh(C,v);else{let R=Eh(Xc(v),kh(n));Nh(c.body,R),l.push(R)}}return de(a,t,{kind:"add-import",target:"import",inverse:"remove-import"})}function Ch(e,t){return e.importKind==="type"?!1:Wc(Ph(Rh(e),zc(t)))}function vh(e,t){let n=!1,r=new Set(e.specifiers.map(o=>Ai(o)));for(let o of Xc(t)){let i=Ai(o);r.has(i)||(e.specifiers.push(o),r.add(i),n=!0)}return Yc(e.specifiers),{changed:n}}function Xc(e){let t=e.map(n=>{switch(n.kind){case"named":return Ih(n.local?Vn(n.local):Vn(n.imported),Vn(n.imported));case"default":return Sh(Vn(n.local));case"namespace":return bh(Vn(n.local));default:return n}});return Yc(t),t}function zc(e){let t=Hc();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 Rh(e){let t=Hc();for(let n of e.specifiers)Uc(n)?t.defaultLocals.add(n.local.name):Kc(n)?t.namespaceLocals.add(n.local.name):t.hasNamed=!0;return t}function Hc(){return{defaultLocals:new Set,hasNamed:!1,namespaceLocals:new Set}}function Ph(e,t){return{defaultLocals:new Set([...e.defaultLocals,...t.defaultLocals]),hasNamed:e.hasNamed||t.hasNamed,namespaceLocals:new Set([...e.namespaceLocals,...t.namespaceLocals])}}function Wc(e){return e.defaultLocals.size>1||e.namespaceLocals.size>1?!1:!(e.hasNamed&&e.namespaceLocals.size>0)}function Yc(e){let t=[...e.filter(n=>Uc(n)),...e.filter(n=>Kc(n)),...e.filter(n=>Jc(n))];e.splice(0,e.length,...t)}function wh(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 Ah(e){let t=new Map,n=new Map;for(let r of e){let o=Gc(r);if(t.has(o))continue;let i=wi(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 Th(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(xh(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 Nh(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 Fh(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 Gc(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 wi(e){return e.kind==="named"?e.local??e.imported:e.local}function Mh(e,t){return e.importKind==="type"||Jc(t)&&t.importKind==="type"?null:Ai(t)}function Ai(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 En(e){let{source:t,moduleSpecifier:n,imports:r}=e,o=r.findIndex(u=>!Oh(u));if(o!==-1){let u=r[o],d=u&&typeof u=="object"&&"kind"in u?u.kind:void 0;return $(t,"unsupported-syntax",`Unsupported remove import spec kind: ${String(d)}`)}let i=Ie(t);if(!i.ok)return i.result;let{ast:s}=i,a=s.program,c=a.body.findIndex(u=>u.type==="ImportDeclaration"&&u.source.value===n);if(c===-1)return Bn(t,t,{kind:"remove-import",target:"import",inverse:"add-import"});let l=a.body[c];return r.length===0?(a.body.splice(c,1),de(s,t,{kind:"remove-import",target:"import",inverse:"add-import"})):(l.specifiers=l.specifiers.filter(u=>!r.some(d=>_h(u,d))),l.specifiers.length===0&&a.body.splice(c,1),de(s,t,{kind:"remove-import",target:"import",inverse:"add-import"}))}function _h(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 Oh(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 Un(e){let{source:t,locator:n,next:r}=e,o=Zr(t,n);return o.ok?(o.path.replaceWith(fn(r)),de(o.ast,t,{kind:"update-value",target:"value",inverse:"restore-value"})):o.result}function Wr(e){let{source:t,locator:n,index:r,value:o}=e,i=Zr(t,n);return i.ok?i.path.isArrayExpression()?i.path.node.elements.some(s=>s?.type==="SpreadElement")?$(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>i.path.node.elements.length?$(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(i.path.node.elements.splice(r,0,fn(o)),de(i.ast,t,{kind:"insert-array-element",target:"value",inverse:"remove-array-element"})):$(t,"unsupported-syntax","Array operations require array expression target","value"):i.result}function Yr(e){let{source:t,locator:n,index:r}=e,o=Zr(t,n);return o.ok?o.path.isArrayExpression()?o.path.node.elements.some(i=>i?.type==="SpreadElement")?$(t,"unsupported-syntax","Spread array elements are not supported","value"):r<0||r>=o.path.node.elements.length?$(t,"array-index-out-of-range",`Array index ${r} is out of range`,"value"):(o.path.node.elements.splice(r,1),de(o.ast,t,{kind:"remove-array-element",target:"value",inverse:"insert-array-element"})):$(t,"unsupported-syntax","Array operations require array expression target","value"):o.result}function Gr(e){let{source:t,locator:n,fromIndex:r,toIndex:o}=e,i=Zr(t,n);if(!i.ok)return i.result;if(!i.path.isArrayExpression())return $(t,"unsupported-syntax","Array operations require array expression target","value");if(i.path.node.elements.some(c=>c?.type==="SpreadElement"))return $(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 $(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),de(i.ast,t,{kind:"move-array-element",target:"value",inverse:"move-array-element-back"})}function Zr(e,t){let n=Ie(e,"value");if(!n.ok)return{ok:!1,result:n.result};let r=re(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}}}var Lh=typeof Ti=="function"?Ti:Ti.default;function Mi(e){let t=rl(e);if(t)return{ok:!1,error:t};let n=e.projection,r=_i(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.containerSourceRange??n.container.sourceRange,i=r.placement;if((n.container.kind==="virtual-route-root"||n.container.kind==="starter-placeholder")&&(n.container.sourceRange===null||n.container.sourceKind==="jsx-element"||n.container.sourceKind==="atomic-expression"||n.container.kind==="starter-placeholder"))return n.container.sourceKind==="atomic-expression"?{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"An indirect page expression does not expose a safe return boundary.",diagnostics:[]}}:{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:i.placementUnitKey,importStep:Qc(e),returnStep:{kind:"insert-return",node:{jsx:`<${e.component.localName} />`},placement:i.relation,replaceOriginal:n.container.kind==="starter-placeholder"}}};if(!o)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition does not expose a safe placement boundary.",diagnostics:[]}};let a={kind:"jsx-node",strategy:"source-range",sourceRange:o},c=pt(e.source,a);if(!c.ok||!c.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:c.ok===!1?c.diagnostic.message:"Route page composition anchor could not be resolved.",diagnostics:c.ok?[]:[Qr(c.diagnostic)]}};let l=qr(e.source,c.match.node.start??null,c.match.node.end??null);if($h(o,n.container.sourceRange)&&n.container.sourceHash&&l!==n.container.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition container hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition container hash no longer matches the current source."}]}};let u=Qc(e);return{ok:!0,plan:{kind:"route-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:e.placementKey,placementUnitKey:r.placement.placementUnitKey,parentLocator:a,importStep:u,insertStep:{kind:"insert-child",parentLocator:a,node:{jsx:`<${e.component.localName} />`},placement:r.placement.relation,...r.placement.anchorSourceRange?{anchorLocator:{kind:"jsx-node",strategy:"source-range",sourceRange:r.placement.anchorSourceRange}}:{}}}}}function Qc(e){let t=Bh(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 tl(e){let t;try{t=eo.parse(e.source,{sourceType:"module",plugins:["jsx","typescript"]})}catch(i){return{ok:!1,source:e.source,diagnostic:{message:i instanceof Error?i.message:String(i)}}}let n=eo.parseExpression(e.jsx,{plugins:["jsx","typescript"]}),r=!1;return(typeof Ni=="function"?Ni:Ni.default)(t,{ExportDefaultDeclaration(i){let s=i.get("declaration"),a=jh(i,s);if(a){if(a.isArrowFunctionExpression()&&!a.get("body").isBlockStatement()){let c=a.get("body");c.replaceWith(qc(c.node,n,e.placement,e.replaceOriginal===!0)),r=!0,i.stop();return}a.traverse({Function(c){c.node!==a.node&&c.skip()},ReturnStatement(c){if(r)return;let l=c.get("argument");l.node&&(l.replaceWith(qc(l.node,n,e.placement,e.replaceOriginal===!0)),r=!0,c.stop())}}),r&&i.stop()}}}),r?{ok:!0,source:Lh(t,{}).code}:{ok:!1,source:e.source,diagnostic:{message:"Route default return boundary could not be resolved."}}}function jh(e,t){if(t.isFunctionDeclaration()||t.isFunctionExpression()||t.isArrowFunctionExpression())return t;if(!t.isIdentifier())return null;let n=e.scope.getBinding(t.node.name);if(!n)return null;let r=n.path;if(r.isFunctionDeclaration()||r.isFunctionExpression())return r;if(r.isVariableDeclarator()){let o=r.get("init");if(o.isArrowFunctionExpression()||o.isFunctionExpression())return o}return null}function qc(e,t,n,r){if(Ct.isNullLiteral(e)||r)return t;let s=n==="before"||n==="prepend"?[t,e]:[e,t];return Ct.jsxFragment(Ct.jsxOpeningFragment(),Ct.jsxClosingFragment(),s)}function nl(e){let t=rl(e);if(t)return{ok:!1,error:t};let n=e.projection;if(n.container.sourceRange===null)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition does not expose a safe placement boundary.",diagnostics:[]}};let r=ol(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:[]}};let i=Fi(o.sourceRange),s=pt(e.source,i);if(!s.ok||!s.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:s.ok===!1?s.diagnostic.message:"Route page composition source anchor could not be resolved.",diagnostics:s.ok?[]:[Qr(s.diagnostic)]}};if(qr(e.source,s.match.node.start??null,s.match.node.end??null)!==o.sourceHash)return{ok:!1,error:{code:"VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source.",diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:"Route page composition source placement hash no longer matches the current source."}]}};if(e.operation==="remove-node")return{ok:!0,plan:{kind:"page-unit-composition-rewrite",routeId:e.routeId,entryFile:e.entryFile,documentVersion:e.expectedDocumentVersion,placementKey:o.placementKey,placementUnitKey:o.placementUnitKey,sourceHash:o.sourceHash,rewriteStep:{kind:"remove-node",locator:i}}};if(!e.targetPlacement)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Page-unit move requires a target placement.",diagnostics:[]}};if(e.targetPlacement.routeId!==e.routeId)return{ok:!1,error:{code:"CROSS_PAGE_MOVE_UNSUPPORTED",message:"Page-unit move across routes 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 c=_i(n,e.targetPlacement.placementKey,e.expectedDocumentVersion);if(!c.ok)return{ok:!1,error:{code:c.diagnostic.code==="DOCUMENT_VERSION_STALE"?"VERSION_STALE":"NO_SAFE_PAGE_PLACEMENT",message:c.diagnostic.message,diagnostics:[c.diagnostic]}};let l=c.placement;if(l.placementUnitKey!==e.targetPlacement.placementUnitKey||l.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 u=l.containerSourceRange;if(!u||!l.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 d=Fi(u),m=pt(e.source,d);if(!m.ok||!m.match.node)return{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:m.ok===!1?m.diagnostic.message:"Route page composition target container could not be resolved.",diagnostics:m.ok?[]:[Qr(m.diagnostic)]}};if(qr(e.source,m.match.node.start??null,m.match.node.end??null)!==l.containerSourceHash)return el("Route page composition target container hash no longer matches the current source.");if(l.relation==="before"||l.relation==="after"){let h=l.anchorSourceRange,E=l.anchorSourceHash;if(!h||!E)return{ok:!1,error:{code:"NO_SAFE_PAGE_PLACEMENT",message:"Route page composition target placement does not expose a verifiable anchor boundary.",diagnostics:[]}};let v=Fi(h),C=pt(e.source,v);return!C.ok||!C.match.node?{ok:!1,error:{code:"UNRESOLVED_ROUTE_ANCHOR",message:C.ok===!1?C.diagnostic.message:"Route page composition target anchor could not be resolved.",diagnostics:C.ok?[]:[Qr(C.diagnostic)]}}:qr(e.source,C.match.node.start??null,C.match.node.end??null)!==E?el("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:i,targetParentLocator:d,anchorLocator:v,placement:l.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:i,targetParentLocator:d,placement:l.relation}}}}function el(e){return{ok:!1,error:{code:"VERSION_STALE",message:e,diagnostics:[{code:"DOCUMENT_VERSION_STALE",message:e}]}}}function Qr(e){return{code:"UNSUPPORTED_PAGE_SHAPE",message:e.message,details:{astCode:e.code}}}function rl(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.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 Bh(e,t){let n=Zc.posix.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=Zc.posix.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Fi(e){return{kind:"jsx-node",strategy:"source-range",sourceRange:e}}function qr(e,t,n){return t==null||n==null?null:`sha256:${Dh("sha256").update(e.slice(t,n)).digest("hex")}`}function $h(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 Vh=typeof Oi=="function"?Oi:Oi.default;function sl(e){if(!e.ast)return st(e,[Ne("UNSUPPORTED_PAGE_SHAPE","SourceGraph entry AST is required",{reason:"parsed-ast-required"})]);let t=Yh(e.ast);if(!t)return st(e,[Ne("UNSUPPORTED_PAGE_SHAPE","Route default export must resolve to a local function component",{reason:"default-export-unresolved"})]);let n=Zh(t);if(n.length===0)return st(e,[Ne("ROUTE_RETURN_NOT_FOUND","Route default export does not contain a proven return boundary")]);if(n.length>1)return st(e,[Ne("MULTIPLE_PAGE_RETURNS","Route default export contains multiple page-level return statements",{returnCount:n.length})]);let r=Qh(n[0].argument);if(!r)return st(e,[Ne("ROUTE_RETURN_NOT_FOUND","Route default export returns without a boundary expression",{reason:"bare-return"})]);if(r.isNullLiteral())return il(e,t,"virtual-route-root");if(qh(r,t))return st(e,[Ne("INDIRECT_RETURN_ONLY","Route default export only returns through an indirect function boundary")]);if(eg(r,t)||tg(r)&&!e.source.includes("DESIGN_PLAN_REPLACE_ME"))return st(e,[Ne("UNSUPPORTED_PAGE_SHAPE","Route default export shape does not provide a single safe placement boundary",{reason:"ambiguous-placement"})]);if(r.isJSXFragment()){let i=Rt(r);if(i.unsupported)return st(e,[Ne("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);let s=Di({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-fragment",source:e.source,containerPath:r,members:i.members});return to(e,t,s,{kind:"virtual-route-root",sourceKind:"jsx-fragment"})}if(r.isJSXElement()&&!Sn(r)){let i=Bi(r),s=Di({input:e,containerKind:"virtual-route-root",sourceKind:"jsx-element",source:e.source,containerPath:r,members:[i]});return to(e,t,s,{kind:"virtual-route-root",sourceKind:"jsx-element"})}if(r.isJSXElement()){let i=Rt(r);if(i.unsupported)return st(e,[Ne("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);let s=i.members;if(rg(e.source,r,s))return il(e,t,"starter-placeholder");let a=Di({input:e,containerKind:"jsx-container",sourceKind:"jsx-element",source:e.source,containerPath:r,members:s});return to(e,t,a,{kind:"jsx-container",sourceKind:"jsx-element"})}if(ng(r))return st(e,[Ne("UNSUPPORTED_PAGE_SHAPE","Route default export contains an unsupported JSX shape")]);let o=ig({input:e,source:e.source,expression:r});return to(e,t,o,{kind:"virtual-route-root",sourceKind:"atomic-expression"})}function _i(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ne("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:Ne("PLACEMENT_KEY_NOT_FOUND","Placement key was not found in the projected page composition",{placementKey:t})}}function ol(e,t,n){if(e.documentVersion!==n)return{ok:!1,diagnostic:Ne("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:Ne("PLACEMENT_KEY_NOT_FOUND","Placement unit key was not found in the projected page composition",{placementUnitKey:t})}}function al(e){return e.ok?Uh(e.projection):Kh(e.projection)}function Uh(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 d=u.members.flatMap((E,v)=>cl(e,u,E,v,e.container.placementKey)),m=d.filter(({member:E})=>E.isBusinessMember).map(({sourceMember:E})=>Xh(l,E,u.independent)),p=d.length>0?d:[{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,p.map(({sourceMember:E})=>E)),o.set(l,m);let h=p[0]?.sourceMember.key??l;n.push({key:l,containerKey:h,businessMemberKeys:m.map(E=>E.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,routeId:e.route,placementUnitKey:l.placementUnitKey,relation:l.relation}));return{status:"supported",version:e.version,routeId:e.route,container:Jh(e,a),sourceMembers:i,businessMembers:s,placementUnits:n,placements:c}}function Kh(e){let t=e.diagnostics.map(zh);return{status:"unsupported",version:e.version,routeId:e.route,reason:Hh(e.diagnostics),diagnostics:t}}function Jh(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 cl(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)=>cl(e,t,a,c,i))]}function Xh(e,t,n){return{key:`business:${e}:${t.key}`,sourceMemberKey:t.key,containerKey:e,label:t.label,isIndependent:n}}function zh(e){return{code:Wh(e),message:e.message}}function Hh(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 Wh(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 Yh(e){let t=null;return Vh(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=Gh(o.path);i&&(t=i,n.stop())}}),t}function Gh(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 Zh(e){if(e.isArrowFunctionExpression()){let r=e.get("body");if(!r.isBlockStatement())return[{argument:r}]}let t=e.get("body");if(!t.isBlockStatement())return[];let n=[];return t.traverse({Function(r){r.node!==e.node&&r.skip()},ReturnStatement(r){n.push({argument:r.get("argument")})}}),n}function Qh(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 qh(e,t){if(e.isIdentifier())return no(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return no(n.node.name,t)}return!1}function eg(e,t){return e.isConditionalExpression()?vt(e.get("consequent"),t)||vt(e.get("alternate"),t):e.isLogicalExpression()?vt(e.get("left"),t)||vt(e.get("right"),t):!1}function tg(e){if(!e.isJSXElement()||!Sn(e))return!1;let t=Rt(e).members;if(t.length!==1)return!1;let n=t[0];return n.kind==="jsx-element"&&!n.isBusinessMember&&n.businessMemberCount>0}function vt(e,t){if(e.isIdentifier())return no(e.node.name,t);if(e.isCallExpression()){let n=e.get("callee");if(n.isIdentifier())return no(n.node.name,t)}return e.isConditionalExpression()?vt(e.get("consequent"),t)||vt(e.get("alternate"),t):e.isLogicalExpression()?vt(e.get("left"),t)||vt(e.get("right"),t):!1}function no(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 ng(e){return e.isJSXSpreadChild()}function rg(e,t,n){return e.includes("DESIGN_PLAN_REPLACE_ME")&&t.isJSXElement()&&n.length>0&&ji(t)}function ji(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(!ji(t))return!1;continue}if(t.isJSXElement()&&!ji(t))return!1}return!0}function Rt(e){let t=[],n=!1;for(let r of e.get("children")){if(r.isJSXText()){if(!r.node.value.trim())continue;t.push({memberKey:$i(r.node.type,r.node.start,r.node.end),kind:"text",nodeType:r.node.type,sourceRange:Ye(r.node.loc),businessMemberCount:0,parentSourceRange:Ye(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=Rt(o);n||=i.unsupported,t.push(...i.members);continue}if(o.isJSXElement()){let i=Sn(o)?Rt(o):null;n||=i?.unsupported??!1,t.push({...Bi(o,i?.members),sourceRange:Ye(r.node.loc),parentSourceRange:Ye(e.node.loc)});continue}if(o.isJSXSpreadChild()){n=!0;continue}t.push({memberKey:$i(o.node.type,o.node.start,o.node.end),kind:"atomic-expression",nodeType:o.node.type,sourceRange:Ye(r.node.loc),businessMemberCount:1,parentSourceRange:Ye(e.node.loc),children:[],isBusinessMember:!0,label:"atomic-expression"});continue}if(r.isJSXFragment()||r.isJSXElement()&&ll(r)){let o=Rt(r);n||=o.unsupported,t.push(...o.members);continue}if(r.isJSXElement()){let o=Sn(r)?Rt(r):null;n||=o?.unsupported??!1,t.push({...Bi(r,o?.members),parentSourceRange:Ye(e.node.loc)})}}return{members:t,unsupported:n}}function Bi(e,t){let n=e.isJSXElement()&&Sn(e)?t??Rt(e).members:[],r=e.isJSXElement()&&!Sn(e)&&!ll(e);return{memberKey:$i(e.node.type,e.node.start,e.node.end),kind:"jsx-element",nodeType:e.node.type,sourceRange:Ye(e.node.loc),businessMemberCount:r?1:ul(n),parentSourceRange:Ye(e.parentPath?.node.loc),children:n,isBusinessMember:r,label:og(e)}}function ll(e){if(e.isJSXFragment())return!0;let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name==="Fragment"||t.type==="JSXMemberExpression"&&t.object.type==="JSXIdentifier"&&t.object.name==="React"&&t.property.name==="Fragment"}function Sn(e){let t=e.node.openingElement.name;return t.type==="JSXIdentifier"&&t.name!=="Fragment"&&t.name[0]===t.name[0]?.toLowerCase()}function og(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 ul(e){return e.reduce((t,n)=>t+n.businessMemberCount,0)}function ro(e){return e.length===0?0:Math.max(1,ul(e))}function Di(e){let t=Ye(e.containerPath.node.loc),n=fl(e.source,e.containerPath.node.start,e.containerPath.node.end),r=Ue(e.input,e.containerKind,e.sourceKind,t),o=Ue(e.input,e.containerKind,"placement-unit",t);return{placementKey:r,placementUnitKey:o,version:e.input.version,containerKey:r,independent:ro(e.members)<=1,memberCount:ro(e.members),sourceRange:t,sourceHash:n,relation:"append",containerSourceRange:t,containerSourceHash:n,anchorSourceRange:null,anchorSourceHash:null,members:e.members}}function ig(e){let t=Ye(e.expression.node.loc),n=fl(e.source,e.expression.node.start,e.expression.node.end),r=Ue(e.input,"virtual-route-root","atomic-expression",t),o=Ue(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:Ue(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 to(e,t,n,r){let o=n.containerSourceRange??n.sourceRange,i=sg(e,n,o),s=gi(i),a={status:"supported",route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:pl(t),container:{kind:r.kind,placementKey:n.placementKey,placementUnitKey:n.placementUnitKey,version:e.version,isEmptyPage:n.memberCount===0,sourceKind:r.sourceKind,sourceRange:o,sourceHash:n.sourceHash},placements:i,diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map};return Object.defineProperties(a,{placementByKey:{value:s.placementByKey,enumerable:!1},unitByKey:{value:s.unitByKey,enumerable:!1},placementsByUnitKey:{value:s.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:s.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:a}}function sg(e,t,n){if(t.members.length===0)return[t];let r=[],o=(l,u,d,m,p,h,E=n)=>({...t,placementKey:u,placementUnitKey:d,containerKey:t.placementKey,independent:ro(h)<=1,memberCount:ro(h),sourceRange:m,sourceHash:m?Li(e.source,m):null,relation:l,containerSourceRange:E,containerSourceHash:E?Li(e.source,E):null,anchorSourceRange:p,anchorSourceHash:p?Li(e.source,p):null,members:h}),i=t.placementKey,s=t.members.map(l=>Ue(e,i,"placement-unit",l.sourceRange)),a=s[0]??t.placementUnitKey,c=s.at(-1)??t.placementUnitKey;r.push(o("prepend",Ue(e,i,"prepend",n),a,n,null,[]));for(let l of t.members){let u=l.parentSourceRange??n,d=Ue(e,i,"placement-unit",l.sourceRange);r.push(o("before",Ue(e,d,"before",l.sourceRange),d,l.sourceRange,l.sourceRange,[l],u)),r.push(o("after",Ue(e,d,"after",l.sourceRange),d,l.sourceRange,l.sourceRange,[l],u))}return r.push(o("append",i,c,n,null,[])),r}function il(e,t,n){let r=Ue(e,n,"empty-container",void 0),o=Ue(e,n,"empty-unit",void 0),i={placementKey:r,placementUnitKey:o,version:e.version,containerKey:r,independent:!0,memberCount:0,sourceRange:null,sourceHash:null,relation:"append",containerSourceRange:null,containerSourceHash:null,anchorSourceRange:null,anchorSourceHash:null,members:[]},s=gi([i]),a={status:"supported",route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,defaultExportName:pl(t),container:{kind:n,placementKey:r,placementUnitKey:o,version:e.version,isEmptyPage:!0,sourceKind:n==="starter-placeholder"?"starter-placeholder":"jsx-fragment",sourceRange:null,sourceHash:null},placements:[i],diagnostics:[],placementByKey:new Map,unitByKey:new Map,placementsByUnitKey:new Map,placementUnitByKey:new Map};return Object.defineProperties(a,{placementByKey:{value:s.placementByKey,enumerable:!1},unitByKey:{value:s.unitByKey,enumerable:!1},placementsByUnitKey:{value:s.placementsByUnitKey,enumerable:!1},placementUnitByKey:{value:s.sourcePlacementByUnitKey,enumerable:!1}}),{ok:!0,projection:a}}function st(e,t){return{ok:!1,projection:{status:"unsupported",route:e.route,entryFile:e.entryFile,version:e.version,documentVersion:e.version,diagnostics:t}}}function Ne(e,t,n){return n===void 0?{code:e,message:t}:{code:e,message:t,details:n}}function Ue(e,t,n,r){return dl([e.route,e.entryFile,String(e.version),t,n,r?`${r.startLine}:${r.startColumn}-${r.endLine}:${r.endColumn}`:"no-range"])}function $i(e,t,n){return dl(["member",e,String(t??-1),String(n??-1)])}function dl(e){return`pc_${Vi("sha256").update(e.join("\0")).digest("hex").slice(0,24)}`}function fl(e,t,n){return t==null||n==null?null:`sha256:${Vi("sha256").update(e.slice(t,n)).digest("hex")}`}function Li(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:${Vi("sha256").update(e.slice(r+t.startColumn,o+t.endColumn)).digest("hex")}`}function Ye(e){return e?{startLine:e.start.line,startColumn:e.start.column,endLine:e.end.line,endColumn:e.end.column}:null}function pl(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}function cg(e){return e==="api-field"||e==="cms-field"||e==="i18n-message"||e==="config-entry"}var lg=160;function ml(e,t,n,r={}){let o=[];for(let[i,s]of e.elements){let a=n.get(i),c={canUpdateText:r.canUpdateTextByKey?.get(i)??a?.canUpdateText??!1,canInsertChild:a?.canInsertChild??!1,canMove:a?.canMove??!1,canRemove:a?.canRemove??!1};o.push({key:i,tag:s.tag,label:s.tag===s.componentName?s.tag:`${s.tag} (${s.componentName})`,parentKey:s.parentKey,childKeys:[...s.childKeys],operationSummary:c,...r.dynamicDataSummaryByKey?.get(i)?{dynamicDataSummary:r.dynamicDataSummaryByKey.get(i)}:{}})}return{routeId:e.routeId,version:e.version,rootKeys:[...e.rootKeys],entries:o}}function hl(e,t,n,r,o,i,s,a,c,l,u,d,m){let p=t.elements.get(e),h=n.nodes.get(e),E=r.get(e);if(!p||!h||!E)throw new Error(`Node not found: ${e}`);let v=Sl(p.textSegments,s),C=bl(e,t,p,E,v),R=v?fg(v):void 0,w=pg(i,v),z=p.textSegments.map(M=>({index:M.index,value:M.value,editable:Il(M,E,s?.get(M.index)??null),source:o.get(M.index)??null})),te=xl(p,t),le=p.childKeys.map(M=>{let O=t.elements.get(M);return O?{key:M,tag:O.tag,label:O.tag}:null}).filter(M=>M!==null),A=[];if(p.parentKey){let M=t.elements.get(p.parentKey);if(M)for(let O of M.childKeys){if(O===e)continue;let j=t.elements.get(O);j&&A.push({key:O,tag:j.tag,label:j.tag})}}return{key:e,tag:p.tag,componentName:p.componentName,sourceFile:p.sourceFile,sourceLocator:yl(p),label:p.tag,capabilities:C,writeTarget:i,effectiveWriteTarget:w,provenanceChain:R,componentSemantic:c,contentModel:l,mediaModel:u,styleSource:d,conditional:a,...m?{dynamicData:m}:{},textSegments:z,boundaryKind:p.boundaryKind,isOpaque:p.isOpaque,ancestors:te,children:le,siblings:A}}function gl(e,t,n,r,o,i,s){let a=t.elements.get(e),c=n.nodes.get(e),l=r.get(e);if(!a||!c||!l)throw new Error(`Node not found: ${e}`);let u=Sl(a.textSegments,i);return{key:e,tag:a.tag,componentName:a.componentName,sourceFile:a.sourceFile,sourceLocator:yl(a),label:a.tag,capabilities:bl(e,t,a,l,u),provenanceChain:u?{editMode:u.editMode,diagnostics:u.diagnostics.map(d=>({code:d.code,message:d.message}))}:void 0,...s?{dynamicData:s}:{},textSegments:a.textSegments.map(d=>{let m=o.get(d.index);return{index:d.index,editable:Il(d,l,i?.get(d.index)??null),source:m?{kind:m.kind}:null}}),boundaryKind:a.boundaryKind,isOpaque:a.isOpaque,ancestors:xl(a,t)}}function yl(e){return{sourceFile:e.sourceFile,componentName:e.componentName,openingElementRange:ug(e.sourceRange),structuralPath:e.identity.structuralPath,...dg(e.textSegments)}}function xl(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 ug(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}function dg(e){let t=e.map(n=>n.value.trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim();return t?{textPreview:t.slice(0,lg)}:{}}function El(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 Sl(e,t){if(!t)return null;for(let n of e){let r=t.get(n.index);if(r)return r}return null}function bl(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&&kl(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 Il(e,t,n){return!e.editable||!t.canUpdateText?!1:n?kl(n.editMode):!0}function kl(e){return e==="direct"||e==="proxy"||e==="upstream"}function fg(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 pg(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}:cg(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}}function Cl(e){let{key:t,element:n,graph:r,provenances:o}=e,i=hg(t,n,r),s=i?.tag??(Jt(n.tag)?n.tag:n.componentName),a=i?.identity.key??vl(n,r)??t,c=xg(i),l=Eg(t,n,r,o,i),u=mg(t,n,r,o,a);return{componentName:s,instanceKey:a,templateOwner:yg(i??n,s),...c.length>0?{variantKeys:c}:{},...l.length>0?{slotKeys:l}:{},editableStrategy:u,impactScope:Sg(u),alternativeStrategies:bg(u)}}function mg(e,t,n,r,o){for(let i of r.values())if(i?.editMode==="upstream")return"upstream";return Ui(e,n)?"instance":!Jt(t.tag)&&t.sourceFile!==n.routeId&&o!==e?"template":"instance"}function vl(e,t){if(Jt(e.tag))return e.identity.key;let n=[...t.elements.values()].filter(r=>r.importedFrom===e.sourceFile&&gg(r,e.componentName));return n.length!==1?null:n[0].identity.key}function hg(e,t,n){if(Jt(t.tag))return t;let r=Ui(e,n);if(r)return r;let o=vl(t,n);return o?n.elements.get(o)??null:null}function gg(e,t){return e.exportName===t||e.tag===t||e.exportName==="default"}function yg(e,t){return Jt(e.tag)&&e.importedFrom?`${e.importedFrom}#${t}`:`${e.sourceFile}#${t}`}function xg(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 Eg(e,t,n,r,o){let i=new Set,s=Ui(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&&Jt(t.tag)&&t.childKeys.length>0&&i.add("children"),[...i]}function Ui(e,t){let n=t.elements.get(e)?.parentKey??null;for(;n;){let r=t.elements.get(n);if(!r)break;if(Jt(r.tag))return r;n=r.parentKey}return null}function Jt(e){return/^[A-Z]/.test(e)}function Sg(e){switch(e){case"template":return"component-template";case"upstream":return"upstream-source";default:return"current-instance"}}function bg(e){switch(e){case"template":return["instance"];case"upstream":return["template"];default:return["template"]}}var Ig=new Set(["markdown","body","content","value","document"]),Rl=[];function wl(e){if(!(!vg(e.tag)||!e.attributes))for(let t of e.attributes){if(!Ig.has(t.name))continue;if(Cg(t))return{kind:"markdown",field:t.name,schema:"markdown",valuePath:t.source?.expression,operationBoundary:Rl};let n=kg(t.resolvedValue);if(n==="prosemirror-doc"||n==="node-array")return{kind:"rich-text-json",field:t.name,valuePath:t.source?.expression,schema:n,operationBoundary:Rl};if(n==="unsupported-json-tree")return{kind:"rich-text-json",field:t.name,valuePath:t.source?.expression,schema:"unsupported-json-tree",operationBoundary:[],diagnostics:[{code:"unsupported-schema",field:t.name,message:'Only top-level node arrays and { type: "doc", content: [] } rich-text JSON are editable in stage D'}]}}}function kg(e){if(e){if(Array.isArray(e)&&e.every(t=>Pl(t)))return"node-array";if(Pl(e)){if(e.type==="doc"&&Array.isArray(e.content))return"prosemirror-doc";if(Array.isArray(e.content)||Array.isArray(e.children))return"unsupported-json-tree"}}}function Pl(e){return!Array.isArray(e)&&typeof e=="object"&&e!==null}function Cg(e){return e.name==="markdown"}function vg(e){return/^[A-Z]/.test(e)}var Rg=["src","alt","poster","caption","width","height"];function Al(e){let t=e.attributes?.filter(i=>Rg.includes(i.name))??[];if(t.length===0)return;let n=t.map(i=>i.name),r=Object.fromEntries(t.filter(i=>i.source?.expression).map(i=>[i.name,i.source.expression])),o=wg(t.map(i=>i.value));return{kind:Pg(e.tag,n),sourceType:o,fields:n,editableFields:[],operationBoundary:[],...Object.keys(r).length>0?{valuePaths:r}:{}}}function Pg(e,t){return e==="img"?"image":e==="video"||t.includes("poster")?"video":"media"}function wg(e){return e.some(t=>t.startsWith("cms:"))?"cms-media-field":e.some(t=>/^(\.?\/|\/)/.test(t))?"local-file-reference":"asset-id"}var Ki=["set-class-name-source","apply-style-draft"];function Tl(e){let t=e.attributes?.find(n=>n.name==="className");if(!t)return{kind:"class-name-source",className:"",sourceKind:"missing",editable:!0,operationBoundary:Ki,diagnostics:[{code:"missing-class-name",message:"No className attribute is present on this element"}]};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:Ki,sourcePath:n}}return{kind:"class-name-source",className:t.value,sourceKind:t.resolvedValue===void 0?"static-attribute":"static-expression",editable:!0,operationBoundary:Ki}}import{createHash as Ag}from"node:crypto";var Kn=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 ce(e){return`sha256:${Ag("sha256").update(e).digest("hex")}`}function Ml(e){let t=e.route.graph.elements.get(e.key);if(!t)return{key:e.key,routeId:e.route.routeId,filePath:"",componentName:"",sourceKind:"missing",attrRaw:null,valueRaw:null,attrRange:null,openingElementRange:{start:0,end:0},version:{documentVersion:e.route.graph.version,contentHash:ce(e.route.source)},diagnostics:[{code:"source-locator-warning",message:`Key not found: ${e.key}`}]};let n=Tg(e.route.source,t);if(!n)return{key:e.key,routeId:e.route.routeId,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:ce(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,routeId:e.route.routeId,filePath:t.sourceFile,componentName:t.componentName,openingElementRange:Fl(r),version:{documentVersion:e.route.graph.version,contentHash:ce(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:Nl(e.route.source,o),valueRaw:s?Nl(e.route.source,s):null,attrRange:Fl(o),diagnostics:[]}}function _l(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 Tg(e,t){let n=it({source:e,profile:Bt({filePath:t.sourceFile,source:e})});if(!n.ok)return null;let r=re(n.ast,{kind:"jsx-node",strategy:"structural-path",file:t.identity.file,component:t.identity.component,structuralPath:t.identity.structuralPath,expectedRange:Ng(t.sourceRange)});return!r.ok||r.match.node.type!=="JSXElement"?null:r.match.node}function Ol(e){let t=it({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 Nl(e,t){return t.start==null||t.end==null?"":e.slice(t.start,t.end)}function Fl(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 Ng(e){return{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}import*as ss from"@babel/parser";import Wi from"@babel/traverse";import*as S from"@babel/types";import*as gt from"node:path";import*as $l from"@babel/parser";import zi from"@babel/traverse";import*as bn from"@babel/types";import*as H from"@babel/types";function so(e,t=[]){if(e.isIdentifier()){let n=e.scope.getBinding(e.node.name);return n?oo(n,t):null}if(e.isMemberExpression()){let n=Lg(e.node),r=Fg(e.node);if(!n||r===null)return null;let o=e.scope.getBinding(n);return o?oo(o,[...r,...t]):null}return e.isAwaitExpression()||Xi(e.node)?Pt(Bg(e.node),t,"awaited or fetched expression"):null}function Fg(e){let t=[],n=e;for(;H.isMemberExpression(n);){if(n.computed)if(H.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(H.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(H.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return H.isIdentifier(n)?t:null}function oo(e,t=[]){let n=Mg(e,t);if(n)return n;let r=_g(e,t);if(r)return r;let o=Og(e,t);return o||null}function Xn(e){return e?.kind==="api-source"}function Mg(e,t){if(e.path.isVariableDeclarator()&&H.isIdentifier(e.path.node.id)){let s=e.path.get("init");if(s?.isCallExpression()&&Ji(s.node)&&t[0]?.kind==="property"&&t[0].name==="data")return Pt(e.identifier.name,t,"query hook result.data binding")}if(e.path.isVariableDeclarator()&&H.isObjectPattern(e.path.node.id)){let s=e.path.node.id.properties.find(c=>H.isObjectProperty(c)&&jl(c)==="data"&&Jn(c.value,e.identifier.name)),a=e.path.get("init");if(s&&a?.isCallExpression()&&Ji(a.node))return Pt(e.identifier.name,t,"query hook data binding")}let n=Dg(e);if(!n||jl(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()||!Ji(i.node)?null:Pt(e.identifier.name,t,"query hook data binding")}function _g(e,t){if(e.path.isVariableDeclarator()&&H.isArrayPattern(e.path.node.id)){let a=e.path.get("init");if(!a?.isCallExpression()||!Ll(a.node))return null;let[c,l]=e.path.node.id.elements;return!H.isIdentifier(c)||c.name!==e.identifier.name||!H.isIdentifier(l)?null:Dl(e,l.name)?Pt(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()||!Ll(o.node)||n.node.elements.findIndex(a=>a===e.path.node)!==0)return null;let s=n.node.elements[1];return H.isIdentifier(s)&&Dl(e,s.name)?Pt(e.identifier.name,t,"state setter is updated by API data"):null}function Og(e,t){let n=e.path.isVariableDeclarator()?e.path:e.path.findParent(o=>o.isVariableDeclarator());if(!n?.isVariableDeclarator())return null;let r=n.get("init");return r?.isExpression()?r.isAwaitExpression()?Pt(e.identifier.name,t,"awaited binding result"):Xi(r.node)?Pt(e.identifier.name,t,"fetch-backed binding result"):null:null}function Dg(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 Jn(e,t){return H.isIdentifier(e)?e.name===t:H.isAssignmentPattern(e)?Jn(e.left,t):H.isObjectPattern(e)?e.properties.some(n=>H.isObjectProperty(n)?Jn(n.value,t):Jn(n.argument,t)):H.isArrayPattern(e)?e.elements.some(n=>!!n&&Jn(H.isRestElement(n)?n.argument:n,t)):!1}function Dl(e,t){let n=!1,r=!1;return e.scope.path.traverse({CallExpression(i){Xi(i.node)&&(n=!0),(jg(i.node.callee,t)||i.node.arguments.some(s=>H.isIdentifier(s)&&s.name===t))&&(r=!0)}}),n&&r}function Ji(e){let t=ao(e.callee);return t==="useQuery"||t==="useSWR"||t==="useSuspenseQuery"}function Ll(e){return ao(e.callee)==="useState"}function Xi(e){return io(e,t=>H.isCallExpression(t)&&ao(t.callee)==="fetch")}function Lg(e){let t=e;for(;H.isMemberExpression(t);)t=t.object;return H.isIdentifier(t)?t.name:null}function jl(e){return e.computed?null:H.isIdentifier(e.key)?e.key.name:H.isStringLiteral(e.key)?e.key.value:null}function ao(e){return H.isIdentifier(e)?e.name:H.isMemberExpression(e)&&H.isIdentifier(e.property)?e.property.name:null}function jg(e,t){return io(e,n=>H.isIdentifier(n)&&n.name===t)}function io(e,t){if(t(e))return!0;let n=H.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(H.isNode(i)&&io(i,t))return!0;continue}if(H.isNode(o)&&io(o,t))return!0}return!1}function Bg(e){return H.isIdentifier(e)?e.name:H.isCallExpression(e)?ao(e.callee)??"api":H.isAwaitExpression(e)?"awaited-api":"api"}function Pt(e,t,n){return{kind:"api-source",readonly:!0,sourceId:e,displayPath:$g(e,t),reason:n}}function $g(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}var Vl=typeof zi=="function"?zi:zi.default;function Ul(e,t){let n=Jl(e);if(!n)return{allowed:!0};let r=!1;return Vl(n,{CallExpression(o){if(!Xl(o.node,t.sourceRange)||!Vg(o.node))return;let i=o.get("callee");if(!i.isMemberExpression())return;let s=i.get("object");Array.isArray(s)||!s.isExpression()||Xn(so(s))&&(r=!0,o.stop())}}),r?{allowed:!1,reason:"Cannot add data-backed items to a dynamic API list"}:{allowed:!0}}function Kl(e,t){let n=Jl(e);if(!n)return{allowed:!0};let r=!1;return Vl(n,{JSXExpressionContainer(o){Xl(o.node,t.sourceRange)&&(bn.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 Jl(e){try{return $l.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Vg(e){let t=e.callee;return bn.isMemberExpression(t)&&bn.isIdentifier(t.property)&&t.property.name==="map"}function Xl(e,t){let n=e.loc;return n?Bl({line:n.start.line,column:n.start.column},{line:t.startLine,column:t.startColumn})>=0&&Bl({line:n.end.line,column:n.end.column},{line:t.endLine,column:t.endColumn})<=0:!1}function Bl(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 ie from"@babel/types";function zl(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 at(e){if(e.path.isObjectPattern()||e.path.isArrayPattern())return Xt(e.path.node,e.identifier.name);if(e.path.isVariableDeclarator()){let n=e.path.node.id;if(ie.isObjectPattern(n)||ie.isArrayPattern(n))return Xt(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(Kg(e.path,n))return!0}if(t.isFunction()||t.isVariableDeclarator())return!1;t=t.parentPath}return!1}function Xt(e,t,n=!1){return ie.isIdentifier(e)?e.name===t&&n:ie.isObjectPattern(e)?e.properties.some(r=>ie.isObjectProperty(r)?Xt(r.value,t,n):Xt(r.argument,t,n)):ie.isArrayPattern(e)?e.elements.some(r=>{if(!r)return!1;let o=ie.isRestElement(r)?r.argument:r;return Xt(o,t,n)}):ie.isAssignmentPattern(e)?Xt(e.left,t,!0):ie.isRestElement(e)?Xt(e.argument,t,n):!1}function In(e,t){if(e.path.isObjectPattern()){if(t){let r=Ge(e.path.node,t.base),[o,...i]=r??[];if(o?.kind==="property")return{propName:o.name,remainingPath:[...i,...t.path],hasDefault:at(e)}}return t?{propName:t.base,remainingPath:t.path,hasDefault:at(e)}:null}if(e.path.isVariableDeclarator()){let r=e.path.get("init");if(r?.isExpression()){let o=Hl(r),i=!1,s=o?o.initBinding&&Hi(o.initBinding)?(i=at(o.initBinding),[...o.initPathPrefix]):o.initBinding?(()=>{let c=In(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=Ge(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||at(e)}}}}let n=zg(e);if(n){let r=Ug(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||at(e)}}if(n.findParent(s=>s.isVariableDeclarator()))return null;let o=Jg(e);if(o){let[s,...a]=o;return!s||s.kind!=="property"?null:{propName:s.name,remainingPath:[...a,...t?.path??[]],hasDefault:at(e)}}let i=zn(n.node);return i?{propName:i,remainingPath:t?.path??[],hasDefault:at(e)}:null}if(Hi(e)){let[r,...o]=t?.path??[];return!r||r.kind!=="property"?null:{propName:r.name,remainingPath:o,hasDefault:at(e)}}return null}function Ug(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=Hl(r);if(!o)return null;let{initBinding:i,initPathPrefix:s}=o;if(!i)return null;let a=!1,c=Hi(i)?(a=at(i),[...s]):(()=>{let u=In(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=Ge(n.node.id,t.identifier.name);return l?{path:[...c,...l],hasDefault:a||at(t)}:null}function Hl(e){if(e.isIdentifier())return{initBinding:e.scope.getBinding(e.node.name),initPathPrefix:[]};if(!e.isMemberExpression())return null;let t=Hg(e.node);return t?{initBinding:e.scope.getBinding(t.base),initPathPrefix:t.path}:null}function Hi(e){return e.path.isIdentifier()&&e.path.key===0&&Array.isArray(e.path.container)&&e.path.parentPath?.isFunction()===!0}function Kg(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function Jg(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=Ge(i.node,t);if(a)return a}return null}function Wl(e,t,n){if(e.path.isVariableDeclarator()){let a=e.path.get("id");if(!Array.isArray(a)&&(a.isObjectPattern()||a.isArrayPattern())){let c=co(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=zn(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=Xg(e);if(!r)return null;let o=r.parentPath;if(!o?.isObjectProperty())return null;let i=zn(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 co(e,t){if(e.isObjectPattern()){for(let n of e.get("properties"))if(n.isObjectProperty()){let r=zn(n.node),o=n.get("value");if(o.isAssignmentPattern()){let i=o.get("left"),s=o.get("right");if(r&&!Array.isArray(i)&&Ge(i.node,t)&&!Array.isArray(s)&&s.isExpression())return{propName:r,expressionPath:s}}if(!Array.isArray(o)&&(o.isObjectPattern()||o.isArrayPattern())){let i=co(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=co(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=co(r,t);if(o)return o}}return null}function Ge(e,t,n=[]){if(ie.isIdentifier(e))return e.name===t?n:null;if(ie.isObjectPattern(e)){for(let r of e.properties)if(ie.isObjectProperty(r)){let o=zn(r);if(!o)continue;let i=Ge(r.value,t,[...n,{kind:"property",name:o}]);if(i)return i}else if(ie.isRestElement(r)){let o=Ge(r.argument,t,n);if(o)return o}}if(ie.isArrayPattern(e))for(let r=0;r<e.elements.length;r+=1){let o=e.elements[r];if(!o)continue;let i=ie.isRestElement(o)?o.argument:o,s=Ge(i,t,[...n,{kind:"index",index:r}]);if(s)return s}return ie.isAssignmentPattern(e)?Ge(e.left,t,n):null}function Xg(e){if(!e.path.isIdentifier())return null;let t=e.path.parentPath;return t?.isAssignmentPattern()&&t.node.left===e.path.node?t:null}function zg(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 zn(e){return e.computed?null:ie.isIdentifier(e.key)?e.key.name:ie.isStringLiteral(e.key)?e.key.value:null}function Hg(e){let t=[],n=e;for(;ie.isMemberExpression(n);){if(n.computed)if(ie.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(ie.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else if(ie.isIdentifier(n.property))t.unshift({kind:"property",name:n.property.name});else return null;n=n.object}return ie.isIdentifier(n)?{base:n.name,path:t}:null}var Ft=typeof Wi=="function"?Wi:Wi.default;function fe(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 kn(e){return{file:e.file,component:e.component}}function Wg(e){return e.target.kind==="node"?e.target.key:null}function Yg(e){return"kind"in e}function lo(e){return!Yg(e)}function es(e,t){let n=gt.dirname(e),r=t.replace(/\.(tsx|ts|jsx|js)$/,""),o=gt.relative(n,r);return o=o.replace(/\\/g,"/"),o.startsWith(".")||(o=`./${o}`),o}function Yi(e,t){let n=e.getFileContent(t.file);if(!n)return;let r=pt(n,fe(t));if(r.ok)return n.slice(r.match.start,r.match.end)}function as(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 Ke(e){try{return ss.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function Gg(e){if(e.isNumericLiteral())return!0;if(!e.isUnaryExpression({operator:"-"}))return!1;let t=e.get("argument");return!Array.isArray(t)&&t.isNumericLiteral()}function Zg(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 ae(e){return typeof e.start=="number"&&typeof e.end=="number"?{start:e.start,end:e.end}:null}function Wt(e,t){let n=ae(e);return!!(n&&Ze(t,n))}function Ze(e,t){return t.start>=e.start&&t.end<=e.end}function uu(e){if(S.isJSXIdentifier(e))return/^[A-Z]/.test(e.name)?e.name:null;if(S.isJSXMemberExpression(e)){let t=e;for(;S.isJSXMemberExpression(t);)t=t.object;return t.name}return null}function Qg(e,t){let n=ae(e.node);if(!n)return[];let r=new Set,o=(i,s)=>{let a=s.scope.getBinding(i);if(!a||Wt(a.path.node,n))return;t.scope.getBinding(i)!==a&&r.add(i)};return e.traverse({ReferencedIdentifier(i){o(i.node.name,i)},JSXOpeningElement(i){let s=uu(i.node.name);s&&o(s,i)}}),[...r].sort()}function Yl(e,t,n){let r=Ke(e);if(!r)return{ok:!0};let o=re(r,fe(t));if(!o.ok||!o.match.path.isJSXElement())return{ok:!0};let i=re(r,fe(n));if(!i.ok||!i.match.path.isJSXElement())return{ok:!0};if(vu(o.match.path,i.match.path))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let s=Qg(o.match.path,i.match.path);return s.length>0?{ok:!1,bindingNames:s}:{ok:!0}}function Gl(e,t,n){let r=wt(t,n);return r?ht(e,r):null}function wt(e,t){let n=re(e,fe(t));return n.ok&&n.match.path.isJSXElement()?n.match.path:is(e,t)}function ht(e,t){let n=t.findParent(E=>E.isArrowFunctionExpression()||E.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(E=>E===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(!S.isIdentifier(l)||l.name!=="map"||c.computed)return null;let u=a.get("object"),d=mo(e,u.node),m=r.node.params.map(E=>mo(e,E)),p=ae(i.node),h=ae(r.node);return!d||m.some(E=>E.length===0)||!p||!h?null:{callStart:p.start,callEnd:p.end,callbackStart:h.start,callbackEnd:h.end,collectionExpression:d,callbackParams:m,mapOperator:S.isOptionalMemberExpression(c)&&c.optional?"?.map":".map",collectionNeedsParens:ds(u.node),callbackPath:r,collectionPath:u}}function mo(e,t){let n=ae(t);return n?e.slice(n.start,n.end):""}function uo(e,t){return!!(e&&t&&e.callStart===t.callStart&&e.callEnd===t.callEnd&&e.callbackStart===t.callbackStart&&e.callbackEnd===t.callbackEnd)}function qg(e,t){let n=ae(e.node);return n?ey(t).some(r=>{let o=ae(r);return r===e.node||!!(o&&o.start===n.start&&o.end===n.end)}):!1}function ey(e){let t=e.callbackPath.node.body;return S.isBlockStatement(t)?At(t.body):Nt(t)}function At(e){let t=[];for(let n of e){if(S.isReturnStatement(n)){n.argument&&t.push(...Nt(n.argument));continue}if(S.isBlockStatement(n)){t.push(...At(n.body));continue}if(S.isIfStatement(n)){let r=S.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent];if(t.push(...At(r)),n.alternate){let o=S.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];t.push(...At(o))}continue}if(S.isSwitchStatement(n)){for(let r of n.cases)t.push(...At(r.consequent));continue}S.isTryStatement(n)&&(t.push(...At(n.block.body)),n.handler&&t.push(...At(n.handler.body.body)),n.finalizer&&t.push(...At(n.finalizer.body)))}return t}function Nt(e){return S.isJSXElement(e)?ty(e)?Zl(e.children):[e]:S.isJSXFragment(e)?Zl(e.children):S.isParenthesizedExpression(e)||S.isTSAsExpression(e)||S.isTSSatisfiesExpression(e)||S.isTSNonNullExpression(e)||S.isTSTypeAssertion(e)?Nt(e.expression):S.isConditionalExpression(e)?[...Nt(e.consequent),...Nt(e.alternate)]:S.isLogicalExpression(e)&&Pu(e.operator)?Nt(e.right):[]}function Zl(e){return e.flatMap(t=>S.isJSXElement(t)||S.isJSXFragment(t)?Nt(t):S.isJSXExpressionContainer(t)&&(S.isJSXElement(t.expression)||S.isJSXFragment(t.expression)||S.isConditionalExpression(t.expression)||S.isLogicalExpression(t.expression))?Nt(t.expression):[])}function ty(e){let t=e.openingElement.name;return S.isJSXIdentifier(t)?t.name==="Fragment":S.isJSXMemberExpression(t)&&t.property.name==="Fragment"}function ny(e,t){return!!(e&&t&&e.callbackStart<t.callbackStart&&e.callbackEnd>t.callbackEnd)}function Gi(e){return e==="Cannot edit repeat-backed child node structure with a generic node operation"}function Ql(e,t,n,r={}){if(!r.preserveConditionalBoundary&&vu(e,t))return{ok:!1,bindingNames:[],reason:"Cannot move node out of its conditional branch"};let o=ae(e.node);if(!o)return{ok:!0};let i=new Set(n.callbackPath.node.params.flatMap(c=>us(c)).map(c=>n.callbackPath.scope.getBinding(c)?.path.node).filter(Boolean)),s=new Set,a=(c,l)=>{let u=l.scope.getBinding(c);if(!u||Wt(u.path.node,o)||i.has(u.path.node))return;t.scope.getBinding(c)!==u&&s.add(c)};return e.traverse({ReferencedIdentifier(c){a(c.node.name,c)},JSXOpeningElement(c){let l=uu(c.node.name);l&&a(l,c)}}),s.size>0?{ok:!1,bindingNames:[...s].sort()}:{ok:!0}}function ql(e,t,n){let r=ae(e.node);if(!r)return{ok:!0};let o=new Set(n.callbackPath.node.params.flatMap(s=>us(s)).map(s=>n.callbackPath.scope.getBinding(s)?.path.node).filter(Boolean)),i=new Set;return cs(e,s=>{let a=s.scope.getBinding(s.node.name);if(!a||Wt(a.path.node,r)||o.has(a.path.node))return;t.scope.getBinding(s.node.name)!==a&&i.add(s.node.name)}),i.size>0?{ok:!1,bindingNames:[...i].sort()}:{ok:!0}}function ry(e,t){let n=new Set(e.callbackPath.node.params.flatMap(a=>us(a)).map(a=>e.callbackPath.scope.getBinding(a)?.path.node).filter(Boolean)),r=new Set,o=(a,c)=>{let l=c.scope.getBinding(a);if(!l||n.has(l.path.node))return;t.scope.getBinding(a)!==l&&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(S.isIdentifier(l))o(l.name,c);else{let u=oy(l);u&&o(u,c)}}});return r.size>0?{ok:!1,bindingNames:[...r].sort()}:{ok:!0}}function oy(e){let t=e;for(;S.isTSQualifiedName(t);)t=t.left;return S.isIdentifier(t)?t.name:null}function du(e,t){let n=ae(e.node),r=new Set;return cs(e,o=>{let i=o.scope.getBinding(o.node.name);if(!i||n&&Wt(i.path.node,n))return;t.scope.getBinding(o.node.name)!==i&&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 cs(e,t){e.isIdentifier()&&e.isReferencedIdentifier()&&t(e),e.traverse({ReferencedIdentifier(n){n.isIdentifier()&&t(n)}})}function iy(e){let t=sy(e.ast,e.sourceNode.component,e.targetParent.component);if(!t.ok)return{ok:!1,reason:t.reason};let n=wu(t.path,e.targetParentPath);if(!n.ok)return{ok:!1,reason:n.reason};let r=Ey({source:e.source,sourceContext:e.sourceContext,callSitePath:t.path,targetParentPath:e.targetParentPath});if(!r.ok)return r;let o=Cu(r.collectionExpression);return{ok:!0,context:{...e.sourceContext,collectionExpression:r.collectionExpression,collectionNeedsParens:o?ds(o):!0}}}function sy(e,t,n){let r=mu(e,t);if(hu(e,r),gu(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 Ft(e,{JSXElement(s){Iu(s,r)&&o.push(s)}}),o.length!==1?{ok:!1,reason:"Cannot move prop-backed repeat child without a single unambiguous component call site"}:ls(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 ay(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=>Wn(a.file)));if(!t.has(Wn(e.sourceFile))||!t.has(Wn(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(Wn(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=dy(e.sourceAst,e.sourceComponent);if(!n)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component without an exported source component identity"};let r=[];for(let a of e.knownSourceFiles){let c=Ke(a.content);if(!c)return{ok:!1,reason:"Cannot move repeat-backed child out of a cross-file component because a loaded source file cannot be parsed"};r.push({file:a.file,ast:c})}let o=cy(r,{file:e.sourceFile,exportName:n.exportName}),i=[];for(let a of r){let c=fu({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!Qe(s.file,e.targetFile)||ls(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}}function cy(e,t){let n=new Map,r=i=>{let s=Cn(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 ly(i,n))o=r(s)||o}return[...n.values()]}function ly(e,t){let n=[],r=uy(e,t);for(let o of e.ast.program.body){if(S.isExportDefaultDeclaration(o)&&S.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=Gn(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(S.isExportNamedDeclaration(o)&&o.source&&typeof o.source.value=="string"){let i=Zn(e.file,o.source.value);for(let s of o.specifiers){if(S.isExportNamespaceSpecifier(s)){let l=Tt(s.exported);for(let u of t.values())Qe(u.file,i)&&n.push({file:e.file,namespace:ts(l,u.namespace),exportName:u.exportName});continue}if(!S.isExportSpecifier(s))continue;let a=Tt(s.local),c=[...t.values()].filter(l=>Qe(l.file,i)&&zt(l.namespace,a));if(c.length>0){let l=Tt(s.exported);for(let u of c){let d=Gn(u.namespace,a,l);d&&n.push({file:e.file,namespace:d,exportName:u.exportName})}continue}t.has(Cn({file:i,exportName:a}))&&n.push({file:e.file,exportName:Tt(s.exported)})}continue}if(S.isExportNamedDeclaration(o)&&!o.source){for(let i of o.specifiers){if(!S.isExportSpecifier(i))continue;let s=Tt(i.local),a=r.get(s)??[];if(a.length>0){let c=Tt(i.exported);n.push({file:e.file,exportName:c});for(let l of a){let u=Gn(l.namespace,s,c);u&&n.push({file:e.file,namespace:u,exportName:l.exportName})}}}continue}if(S.isExportAllDeclaration(o)&&typeof o.source.value=="string"){let i=Zn(e.file,o.source.value),s=o.exported;if(s){let a=Tt(s);for(let c of t.values())Qe(c.file,i)&&n.push({file:e.file,namespace:ts(a,c.namespace),exportName:c.exportName});continue}for(let a of t.values())Qe(a.file,i)&&(a.namespace||a.exportName!=="default")&&n.push({file:e.file,namespace:a.namespace,exportName:a.exportName})}}return n}function ts(e,t){return t?`${e}.${t}`:e}function zt(e,t){return e===t||e?.startsWith(`${t}.`)===!0}function Gn(e,t,n){return!zt(e,t)||!e?null:e===t?n:`${n}${e.slice(t.length)}`}function uy(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(!S.isImportDeclaration(i)||typeof i.source.value!="string")continue;let s=Zn(e.file,i.source.value);for(let a of i.specifiers){if(S.isImportDefaultSpecifier(a)){let c=t.get(Cn({file:s,exportName:"default"}));c&&r(a.local.name,c);let l=[...t.values()].filter(u=>Qe(u.file,s)&&zt(u.namespace,"default"));for(let u of l){let d=Gn(u.namespace,"default",a.local.name);d&&r(a.local.name,{...u,namespace:d})}continue}if(S.isImportSpecifier(a)){let c=Tt(a.imported),l=[...t.values()].filter(d=>Qe(d.file,s)&&zt(d.namespace,c));for(let d of l)r(a.local.name,d);let u=t.get(Cn({file:s,exportName:c}));u&&r(a.local.name,u);continue}if(S.isImportNamespaceSpecifier(a))for(let c of t.values())Qe(c.file,s)&&r(a.local.name,{...c,namespace:ts(a.local.name,c.namespace)})}}let o=!0;for(;o;){o=!1;for(let i of e.ast.program.body)if(S.isVariableDeclaration(i))for(let s of i.declarations){if(!S.isIdentifier(s.id)||!s.init)continue;let a=vn(s.init);if(!a||!S.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(Cn));for(let d of c){let m=Gn(d.namespace,a.name,s.id.name),p=m?{...d,namespace:m}:d,h=Cn(p);u.has(h)||(r(s.id.name,p),u.add(h),o=!0)}}}return n}function Cn(e){let t=e.namespace?`${e.namespace}.${e.exportName}`:e.exportName;return`${rs(e.file)}#${t}`}function Tt(e){return S.isIdentifier(e)?e.name:e.value}function dy(e,t){for(let n of e.program.body){if(S.isExportDefaultDeclaration(n)){let o=n.declaration;if((S.isFunctionDeclaration(o)||S.isClassDeclaration(o))&&o.id?.name===t)return{exportName:"default"};if(S.isIdentifier(o)&&o.name===t)return{exportName:"default"}}if(!S.isExportNamedDeclaration(n))continue;let r=n.declaration;if((S.isFunctionDeclaration(r)||S.isClassDeclaration(r))&&r.id?.name===t)return{exportName:t};if(S.isVariableDeclaration(r)){for(let o of r.declarations)if(S.isIdentifier(o.id,{name:t}))return{exportName:t}}for(let o of n.specifiers){if(!S.isExportSpecifier(o)||o.local.name!==t)continue;return{exportName:S.isIdentifier(o.exported)?o.exported.name:o.exported.value}}}return null}function fu(e){let t=fy(e),n=[],r=gu(e.ast,t);return Ft(e.ast,{JSXElement(o){Qe(e.file,e.sourceFile)&&ls(o)===e.sourceComponent||Iu(o,t)&&n.push({file:e.file,path:o})}}),{callSites:n,hasUnsafeReference:r}}function pu(){return{localBindings:new Set,namespaceMembers:new Map,hasUnsupportedAlias:!1}}function mu(e,t){let n=pu();return Ft(e,{Program(r){let o=r.scope.getBinding(t);o&&n.localBindings.add(o),r.stop()}}),n}function fy(e){let t=pu();return Qe(e.file,e.sourceFile)&&py(t,mu(e.ast,e.sourceComponent)),Ft(e.ast,{ImportDeclaration(n){let r=n.node,o=r.source.value;if(typeof o!="string")return;let i=Zn(e.file,o),s=e.componentIdentities.filter(a=>Qe(a.file,i));if(s.length!==0)for(let a of r.specifiers){let c=n.scope.getBinding(a.local.name);if(c){if(S.isImportDefaultSpecifier(a)&&s.some(l=>l.exportName==="default")&&t.localBindings.add(c),S.isImportDefaultSpecifier(a)){let l=s.filter(u=>zt(u.namespace,"default"));if(l.length>0){let u=t.namespaceMembers.get(c)??new Set;for(let d of l){let m=tu(d,"default");m&&u.add(m)}t.namespaceMembers.set(c,u)}continue}if(S.isImportSpecifier(a)){let l=S.isIdentifier(a.imported)?a.imported.name:a.imported.value,u=s.filter(d=>zt(d.namespace,l));if(u.length>0){let d=t.namespaceMembers.get(c)??new Set;for(let m of u){let p=tu(m,l);p&&d.add(p)}t.namespaceMembers.set(c,d);continue}s.some(d=>!d.namespace&&d.exportName===l)&&t.localBindings.add(c);continue}if(S.isImportNamespaceSpecifier(a))for(let l of s){let u=l.namespace?`${l.namespace}.${l.exportName}`:l.exportName,d=t.namespaceMembers.get(c)??new Set;d.add(u),t.namespaceMembers.set(c,d)}}}}}),hu(e.ast,t),t}function py(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 hu(e,t){Ft(e,{VariableDeclarator(n){if(!n.node.init)return;let r=vn(n.node.init);if(r){if(S.isIdentifier(n.node.id)){let o=Ht(r,t,n),i=n.scope.getBinding(n.node.id.name);o&&i&&ns(t,i,o);return}if(S.isObjectPattern(n.node.id)){let o=Ht(r,t,n);o?.unsupported||o?.local?t.hasUnsupportedAlias=!0:o&&o.namespaceMembers.size>0&&Eu(n.node.id,o.namespaceMembers,t,n)}}}})}function gu(e,t){if(t.hasUnsupportedAlias)return!0;let n=!1;return Ft(e,{ReferencedIdentifier(r){if(n){r.stop();return}my(r)||!r.isIdentifier()||!yu(r,t)||hy(r,t)||gy(r)||(n=!0,r.stop())}}),n}function my(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 yu(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)&&Ht(r.node,t,r)?r:null}function hy(e,t){let n=e.findParent(c=>c.isVariableDeclarator());if(!n?.isVariableDeclarator())return!1;let r=n.get("init");if(!r?.isExpression()||!eu(e,r))return!1;let o=yu(e,t);if(!o)return!1;if(vn(r.node)===o.node)return!!Ht(r.node,t,r);let s=e.findParent(c=>c.isObjectProperty());if(!s?.isObjectProperty())return!1;let a=s.get("value");return a.isExpression()&&eu(e,a)&&!!Ht(a.node,t,a)}function gy(e){let t=e.parentPath;return t?.isExportDefaultDeclaration()&&t.node.declaration===e.node?!0:!!(t?.isExportSpecifier()&&t.node.local===e.node)}function eu(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentPath}return!1}function Ht(e,t,n){let r=vn(e);if(!r)return null;if(S.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(S.isObjectExpression(r))return yy(r,t,n);let o=bu(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?xu(s,o.slice(1).join(".")):null}function yy(e,t,n){let r=new Set,o=!1;for(let i of e.properties){if(!S.isObjectProperty(i))continue;let s=Su(i);if(!s||!S.isExpression(i.value)){S.isExpression(i.value)&&(o||=Ht(i.value,t,n)!==null);continue}let a=Ht(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 xu(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 ns(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 Eu(e,t,n,r){for(let o of e.properties){if(S.isRestElement(o)){if(S.isIdentifier(o.argument)){let c=r.scope.getBinding(o.argument.name);c&&ns(n,c,{local:!1,namespaceMembers:new Set(t),unsupported:!1})}else n.hasUnsupportedAlias=!0;continue}if(!S.isObjectProperty(o))continue;let i=Su(o);if(!i){n.hasUnsupportedAlias=!0;continue}let s=xu(t,i);if(!s)continue;n.hasUnsupportedAlias||=s.unsupported;let a=S.isAssignmentPattern(o.value)?o.value.left:o.value;if(S.isIdentifier(a)){let c=r.scope.getBinding(a.name);c&&ns(n,c,s);continue}if(S.isObjectPattern(a)&&s.namespaceMembers.size>0){Eu(a,s.namespaceMembers,n,r);continue}n.hasUnsupportedAlias=!0}}function Su(e){return e.computed?S.isStringLiteral(e.key)||S.isNumericLiteral(e.key)?String(e.key.value):null:xy(e.key)}function xy(e){return S.isIdentifier(e)?e.name:S.isStringLiteral(e)||S.isNumericLiteral(e)?String(e.value):null}function vn(e){return S.isParenthesizedExpression(e)||S.isTSAsExpression(e)||S.isTSSatisfiesExpression(e)||S.isTSNonNullExpression(e)||S.isTSTypeAssertion(e)?vn(e.expression):S.isExpression(e)?e:null}function bu(e){if(S.isIdentifier(e))return[e.name];if((S.isMemberExpression(e)||S.isOptionalMemberExpression(e))&&!e.computed&&S.isIdentifier(e.property)){let t=vn(e.object),n=t?bu(t):null;return n?[...n,e.property.name]:null}return null}function tu(e,t){if(!zt(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 Iu(e,t){let n=e.node.openingElement.name;if(S.isJSXIdentifier(n)){let o=e.scope.getBinding(n.name);return!!(o&&t.localBindings.has(o))}let r=ku(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 ku(e){if(S.isJSXIdentifier(e))return[e.name];if(S.isJSXMemberExpression(e)){let t=ku(e.object);return t?[...t,e.property.name]:null}return null}function ls(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()&&S.isIdentifier(n.node.id))return n.node.id.name}return null}function Ey(e){let t=ae(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||Wt(a.path.node,t))return;let c=Iy(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 u=Cy(e.callSitePath,c.propName,e.source);if(!u.ok){o=u.reason;return}let d=Sy(u.expression,c.remainingPath);if(!d){o="Cannot move prop-backed repeat child because the mapped prop path is not a portable expression";return}let m=du(u.expressionPath,e.targetParentPath);if(!m.ok){o=m.reason??`Cannot move prop-backed repeat child because the mapped prop source is not visible at the target: ${m.bindingNames.join(", ")}`;return}n.set(`${c.range.start}:${c.range.end}`,{...c.range,text:d});return}e.targetParentPath.scope.getBinding(s.node.name)!==a&&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:vy(e.source,t,[...n.values()])}}function Sy(e,t){if(t.length===0)return e;let n=Cu(e);if(!n)return null;let r=ds(n)?`(${e})`:e;for(let o of t){if(o.kind==="property"){r=by(o.name)?`${r}.${o.name}`:`${r}[${JSON.stringify(o.name)}]`;continue}r=`${r}[${o.index}]`}return r}function by(e){return/^[$A-Z_a-z][$\w]*$/.test(e)}function Iy(e,t,n){let r=ky(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=In(t,o);if(!i)return null;let s=r?.range??ae(e.node);return s?{propName:i.propName,remainingPath:i.remainingPath,hasDefault:i.hasDefault,range:s}:null}function ky(e,t){let n=e.parentPath;if(!n||!n.isMemberExpression()&&!n.isOptionalMemberExpression()||n.node.object!==e.node||!Wt(n.node,t)||n.node.computed||!S.isIdentifier(n.node.property))return null;let r=ae(n.node);return r?{propertyName:n.node.property.name,range:r}:null}function Cy(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()&&S.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=mo(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 vy(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 Cu(e){try{let n=ss.parse(`const __VD_EXPR__ = (${e});`,{sourceType:"module",plugins:["jsx","typescript"]}).program.body[0],r=S.isVariableDeclaration(n)?n.declarations[0]?.init:null;return r&&S.isExpression(r)?r:null}catch{return null}}function Ry(e){let t=ae(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||Wt(s.path.node,t))return;let a=nu(s,e.sourceFile,e.targetFile);if(a){let c=e.targetParentPath.scope.getBinding(a.localName);if(c){let u=nu(c,e.targetFile,e.targetFile);(!u||u.moduleFile!==a.moduleFile||!Py(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 cs(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 Py(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 nu(e,t,n){let r=wy(e),o=r?.parentPath;if(!r||!o?.isImportDeclaration())return null;let i=o.node.source.value;if(typeof i!="string")return null;let s=Zn(t,i),a=i.startsWith(".")?es(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=S.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 wy(e){let t=e.path;for(;t&&!t.isImportDeclaration();){if(t.isImportSpecifier()||t.isImportDefaultSpecifier()||t.isImportNamespaceSpecifier())return t;t=t.parentPath}return null}function Zn(e,t){return t.startsWith("@/")?t.slice(2).replace(/\\/g,"/"):t.startsWith(".")?gt.normalize(gt.join(gt.dirname(e),t)).replace(/\\/g,"/"):t}function Qe(e,t){return rs(e)===rs(t)}function rs(e){let t=Wn(e);return t.endsWith("/index")?t.slice(0,-6):t}function Wn(e){return e.replace(/\.(tsx|ts|jsx|js)$/,"")}function us(e){let t=[],n=r=>{if(r){if(S.isIdentifier(r)){t.push(r.name);return}if(S.isObjectPattern(r)){for(let o of r.properties){if(S.isRestElement(o)){n(o.argument);continue}S.isObjectProperty(o)&&n(o.value)}return}if(S.isArrayPattern(r)){for(let o of r.elements)n(o);return}if(S.isAssignmentPattern(r)){n(r.left);return}if(S.isRestElement(r)){n(r.argument);return}S.isTSParameterProperty(r)&&n(r.parameter)}};return n(e),t}function Ay(e){let t=[];for(let n of e.callbackPath.node.params){if(S.isIdentifier(n)){t.push(n.name);continue}if(S.isRestElement(n)&&S.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 Ty(e,t){return{...e,callbackParams:t}}function ru(e,t){return`${e.collectionNeedsParens?`(${e.collectionExpression})`:e.collectionExpression}${e.mapOperator}((${e.callbackParams.join(", ")}) => ${t})`}function ds(e){return!(S.isIdentifier(e)||S.isThisExpression(e)||S.isMemberExpression(e)||S.isOptionalMemberExpression(e)||S.isCallExpression(e)||S.isOptionalCallExpression(e))}function vu(e,t){return Ru(e,t).length>0}function Zi(e,t){let n=ae(e.node),r=ae(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()&&!Ny(o,n,r)))return!0;o=o.parentPath}return!1}function Ny(e,t,n){let r=ae(e.node.consequent);if(r&&Ze(r,t)&&!Ze(r,n))return!1;let o=e.node.alternate?ae(e.node.alternate):null;return!(o&&Ze(o,t)&&!Ze(o,n))}function Ru(e,t){let n=ae(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=ae(o.node.consequent),a=ae(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()&&Pu(o.node.operator)){let s=ae(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 ou(e,t,n,r){let o=Ru(t,n);if(o.length===0)return{sourceJsx:r,conditionPaths:[]};let i=r,s=[];for(let a of o){let c=mo(e,a.conditionPath.node);if(!c)return{sourceJsx:r,conditionPaths:[]};let l=Fy(a.conditionPath,c);if(s.push(a.conditionPath),a.kind==="logical"){i=`${l} ${a.operator} ${_y(i)}`;continue}i=a.branch==="consequent"?`${l} ? ${i} : null`:`${l} ? null : ${i}`}return{sourceJsx:i,conditionPaths:s}}function Fy(e,t){return My(e.node)?t:`(${t})`}function My(e){return S.isIdentifier(e)||S.isThisExpression(e)||S.isSuper(e)||S.isMemberExpression(e)||S.isOptionalMemberExpression(e)||S.isCallExpression(e)||S.isOptionalCallExpression(e)||S.isBooleanLiteral(e)||S.isNumericLiteral(e)||S.isStringLiteral(e)||S.isNullLiteral(e)||S.isUnaryExpression(e)}function Pu(e){return e==="&&"||e==="||"||e==="??"}function _y(e){return e.trim().startsWith("<")?e:`(${e})`}function wu(e,t){let n=ae(e.node),r=ae(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=iu(e),i=iu(t);if(!o||!i||!Oy(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=Dy(s.node,n);if(a&&!Ze(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=ae(s.node.right);if(a&&Ze(a,n)&&!Ze(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())&&Ly(s)){let a=ae(s.node.body)??ae(s.node);if(a&&!Ze(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 iu(e){let t=e;for(;t;){if(t.isReturnStatement())return t.node.argument?ae(t.node.argument):null;if(t.isArrowFunctionExpression()&&(S.isJSXElement(t.node.body)||S.isJSXFragment(t.node.body)||S.isConditionalExpression(t.node.body)||S.isLogicalExpression(t.node.body)))return ae(t.node.body);t=t.parentPath}return null}function Oy(e,t){return e.start===t.start&&e.end===t.end}function Dy(e,t){let n=ae(e.consequent);if(n&&Ze(n,t))return n;let r=ae(e.alternate);return r&&Ze(r,t)?r:null}function Ly(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(S.isMemberExpression(n)||S.isOptionalMemberExpression(n))&&S.isIdentifier(n.property)&&n.property.name==="map"&&!n.computed}var jy={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 fo(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=jy[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 By(e,t){for(let n of e.program.body){if(!S.isImportDeclaration(n)||n.source.value!==t)continue;let r=n.specifiers.find(o=>S.isImportDefaultSpecifier(o));if(r&&S.isImportDefaultSpecifier(r))return r.local.name}return null}function $y(e,t,n){for(let r of e.program.body){if(!S.isImportDeclaration(r)||r.source.value!==t)continue;let o=r.specifiers.find(i=>S.isImportSpecifier(i)&&(S.isIdentifier(i.imported)?i.imported.name:i.imported.value)===n);if(o&&S.isImportSpecifier(o))return o.local.name}return null}function su(e){let t=new Set;return Ft(e,{Program(n){for(let r of Object.keys(n.scope.bindings))t.add(r);n.stop()}}),t}function au(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}${n}`);)n+=1;return`${e}${n}`}function Vy(e,t){if(!e.component)return{localName:"Component"};let n=e.component,r=as(e),o=Ke(t);if(n.exportName!=="default"){let a=o?$y(o,n.source,n.exportName):null;if(a)return{localName:a};let c=o?au(r,su(o)):r;return{localName:c,importStep:Qi(e,c)}}if(!o)return{localName:r,importStep:Qi(e,r)};let i=By(o,n.source);if(i)return{localName:i};let s=au(r,su(o));return{localName:s,importStep:Qi(e,s)}}function Uy(e,t){if(e.kind==="native-tag")return e.text?`<${e.tag}>${e.text}</${e.tag}>`:`<${e.tag} />`;let n=t??as(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 Ky(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?Jy(e.props):void 0;return{kind:e.kind,component:{source:e.component.source,exportName:e.component.exportName},...t?{props:t}:{}}}function Jy(e){return Object.fromEntries(Object.entries(e).filter(t=>os(t[1])))}function os(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?!0:Array.isArray(e)?e.every(os):typeof e=="object"?Object.values(e).every(os):!1}function Xy(e,t){let n=Ke(e);if(!n||!t.tag||!t.importedFrom||!t.exportName)return Number.POSITIVE_INFINITY;let r=fu({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 Qi(e,t=as(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 cu(e,t){if("kind"in e)return{parentNode:null,anchorNode:null,placement:e.relation};if("parentKey"in e)return{parentNode:t.getNode(e.parentKey),anchorNode:null,placement:e.relation};let n=t.getNode(e.anchorKey);return{parentNode:n?.parentKey?t.getNode(n.parentKey)??n:n,anchorNode:n,placement:e.relation}}function zy(e,t,n){let r=e;for(;r;){if(r===t)return!0;r=n.getNode(r)?.parentKey}return!1}function Hn(e,t){return`Operation kind '${e}' does not match params.kind '${t}'`}function fs(e,t=e.path){return{kind:"value",root:e.root,path:t&&t.length>0?t:void 0,expectedRange:e.expectedRange}}function Yn(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:fs(e,t.slice(0,n)),index:r.index}}return null}function qi(e,t){return e.locator?e.collectionPathMap?.[t]?fs(e.locator,e.collectionPathMap[t]):Yn(e.locator)?Wy(e.locator,Yy(t,e.collectionIndexMap)):null:null}function Hy(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:Au(o,t)}function Au(e,t){let[n,...r]=e;if(!n)return t;if(n.kind!=="property")return;let o=Au(r,t);return o===void 0?void 0:{[n.name]:o}}function po(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 Wy(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},fs(e,i)}return null}function Yy(e,t){return t?.[e]??e}function lu(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 Gy(e,t){return Zy(e.root,t.root)&&qy(e.path??[],t.path??[])}function Zy(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&&Qy(e.sourceRange,t.sourceRange)}}function Qy(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function is(e,t){let n=null;return Ft(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 qy(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 ho=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:Hn(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:Hn(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:Hn(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:Hn(t.kind,t.params.kind)};let r=t;if(!lo(r.params.position))return{ok:!1,errorCode:"unsupported-operation",reason:"Page composition insert-child requires the page composition transaction planner"};let o=cu(r.params.position,this.graph);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:Hn(t.kind,t.params.kind)};let r=t,o=this.resolveNodeRequest(t);if(!o.ok)return o.result;let i=o.node,s=this.graph.getFileVersion(i.file);return t.documentVersion!==s?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${s})`}:this.planMoveNode(n,r,i,this.graph.getCapability(i.key))}case"set-class-name-source":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:this.planNodeAttributeOperation(n,t,r.node)}case"set-props":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planSetProps(n,t,r.node)}case"apply-style-draft":{let r=this.resolveNodeRequest(t);if(!r.ok)return r.result;let o=this.graph.getFileVersion(r.node.file);return t.documentVersion!==o?{ok:!1,errorCode:"stale-version",reason:`Document version ${t.documentVersion} is stale or otherwise does not match current version (current: ${o})`}:await this.planApplyStyleDraft(n,t,r.node)}default:return{ok:!1,errorCode:"unknown",reason:`Unknown operation kind: ${t.kind}`}}}resolveNodeRequest(t){let n=Wg(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.routeId&&n.routeId&&n.params.routeId!==n.routeId?{ok:!1,errorCode:"stale-version",reason:"The className source route changed before save."}: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.buildSetPropsSteps({initialOrder:0,node:r,props:n.params.props,request:n});return i.ok?this.buildPlan(t,n,i.steps,o):i}async planApplyStyleDraft(t,n,r){let o=r.file,i=this.graph.getCapability(r.key),s=[];if(n.params.className){if(n.params.className.filePath!==o)return{ok:!1,errorCode:"stale-version",reason:"The className source file changed before save."};s.push({order:s.length,file:o,type:"set-class-name-source",request:{kind:"set-class-name-source",...n.params.className,key:r.key}})}if(n.params.props){let a=await this.buildSetPropsSteps({initialOrder:s.length,node:r,props:n.params.props,request:n});if(!a.ok)return a;s.push(...a.steps)}return this.buildPlan(t,n,s,i)}async buildSetPropsSteps(t){let{initialOrder:n,node:r,props:o,request:i}=t,s=r.file,a=[],c={};for(let[l,u]of Object.entries(o)){if(u===void 0)continue;let d=await this.graph.getElementPropertyWriteTarget?.(r.key,l),m=r.attributes?.find(p=>p.name===l);if(!(typeof m?.resolvedValue=="string"&&m.resolvedValue===u||m?.source===null&&m.value===u)){if(d?.kind==="external-entry")return{ok:!1,errorCode:"capability-denied",reason:`set-props cannot overwrite readonly external property '${l}'`};if(d?.kind==="value-binding"&&d.locator){let p=d.locator;if(d.sourceKind==="repeat-template"&&typeof i.selectionRef?.instanceIndex=="number"){let h=qi(d,i.selectionRef.instanceIndex);if(!h)return{ok:!1,errorCode:"invalid-params",reason:"set-props could not resolve the selected repeat item"};p=h}a.push({order:n+a.length,file:d.file,type:"update-value",locator:p,value:u});continue}c[l]=u}}return Object.keys(c).length>0&&a.push({order:n+a.length,file:s,type:"set-props",locator:fe(r),props:c}),{ok:!0,steps:a}}buildTextRewriteSteps(t,n,r,o,i){if(o?.kind==="value-binding"&&o.locator){if(o.sourceKind==="repeat-template"&&typeof i?.instanceIndex=="number"){let a=qi(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:fe(t),segmentIndex:n,newText:r}]}}coerceTextValueForValueTarget(t,n,r,o="update-text"){let i=this.graph.getFileContent(t),s=Ke(i);if(!s)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not inspect the value source`};let a=re(s,n);if(!a.ok)return{ok:!1,errorCode:"invalid-params",reason:`${o} could not resolve the value source`};if(!Gg(a.match.path))return{ok:!0,value:r};let c=Zg(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=qi(o,i);if(!c)return{ok:!1,errorCode:"invalid-params",reason:"update-array-item could not resolve the selected repeat item"};let l=this.coerceTextValueForValueTarget(o.file,c,s,"update-array-item");return l.ok?this.isValueTargetUnchanged(o.file,c,l.value)?{ok:!1,errorCode:"invalid-params",reason:"update-array-item value is unchanged"}:this.buildPlan(t,n,[{order:0,file:o.file,type:"update-array-item",locator:c,value:l.value}],r):l}isValueTargetUnchanged(t,n,r){let o=Ke(this.graph.getFileContent(t));if(!o)return!1;let i=re(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){if(!o.canUpdateText)return{ok:!1,errorCode:"capability-denied",reason:"Cannot update text on this node"};let s=this.buildTextRewriteSteps(r,n.params.segmentIndex,n.params.value,i,n.selectionRef);return s.ok?this.buildPlan(t,n,s.steps,o):s}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 d=i;if(d?.kind==="value-binding"&&d.locator){let m=Yn(d.locator);if(m)return this.buildPlan(t,n,[{order:0,file:d.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=po(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:fe(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||Xy(n,t)>1)return null;let r=es(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(!lo(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=po(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 d=await this.planRepeatBackedInsertChild(t,n,r,o);if(d)return d;let m=this.getRepeatBackedTemplateStructureReason(r);if(m)return{ok:!1,errorCode:"unsupported-operation",reason:m};let p=Ul(this.graph.getFileContent(r.file),r);if(!p.allowed)return{ok:!1,errorCode:"unsupported-operation",reason:p.reason??"Cannot insert child into this node"};let h=fo(r,n.params.node);if(h)return{ok:!1,errorCode:"unsupported-operation",reason:h};let E=[],v=0,C=n.params.node.kind==="component-call"?Vy(n.params.node,this.graph.getFileContent(r.file)):void 0,R=C?.importStep;return R&&E.push({order:v++,file:r.file,type:"add-import",moduleSpecifier:R.moduleSpecifier,imports:R.imports}),E.push({order:v++,file:r.file,type:"insert-child",parentLocator:fe(r),node:{jsx:Uy(n.params.node,C?.localName)},placement:n.params.position.relation,anchorLocator:i?fe(i):void 0}),this.buildPlan(t,n,E,o)}async planExternalBackedInsertChild(t,n,r,o,i,s){if(!lo(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:Ky(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(!lo(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(d=>d.isRepeatItemRoot&&d.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=Yn(a.locator);if(!c)return{ok:!1,errorCode:"unsupported-operation",reason:"Repeat-backed insert-child requires an array-backed target"};let l=Hy(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"?lu(0,a.collectionIndexMap):lu(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=po(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 this.isRepeatTemplateRootNode(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:")||this.isInsideMapCallback(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}isRepeatTemplateRootNode(t){let n=Ke(this.graph.getFileContent(t.file));if(!n)return t.isRepeatItemRoot===!0;let r=re(n,fe(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:is(n,t);if(!o)return t.isRepeatItemRoot===!0;let i=ht(this.graph.getFileContent(t.file),o);return i?qg(o,i):t.isRepeatItemRoot===!0}isInsideMapCallback(t){let n=Ke(this.graph.getFileContent(t.file));if(!n)return!1;let r=re(n,fe(t)),o=r.ok&&r.match.path.isJSXElement()?r.match.path:is(n,t);return o?!!o.findParent(i=>{if(!i.isCallExpression()&&!i.isOptionalCallExpression())return!1;let s=i.node.callee;return(S.isMemberExpression(s)||S.isOptionalMemberExpression(s))&&S.isIdentifier(s.property)&&s.property.name==="map"}):!1}planRepeatTemplateInternalMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ke(c);if(!l)return null;let u=wt(l,r),d=wt(l,o);if(!u||!d)return null;let m=ht(c,u),p=ht(c,d);if(!uo(m,p))return null;if(a&&(s==="before"||s==="after")){let E=wt(l,a),v=E?ht(c,E):null;if(!uo(m,v))return null}if(Zi(u,d))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child across statement-level conditional branches"};let h=Yl(c,r,o);return h.ok?this.buildPlan(t,n,[{order:0,file:r.file,type:"move-node",locator:fe(r),targetParentLocator:fe(o),placement:s,anchorLocator:a?fe(a):void 0,selectionContext:kn(o)}],i):{ok:!1,errorCode:"unsupported-operation",reason:h.reason??`Cannot move node because it depends on bindings outside the target scope: ${h.bindingNames.join(", ")}`}}planRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r)||r.file!==o.file)return null;let c=this.graph.getFileContent(r.file),l=Ke(c);if(!l)return null;let u=wt(l,r),d=wt(l,o);if(!u||!d)return null;let m=ht(c,u);if(!m)return null;let p=ht(c,d);if(uo(m,p))return null;if(p&&!ny(p,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 w=Gl(c,l,a);if(p&&!uo(p,w)||!p&&w)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 w=fo(o,{kind:"native-tag",tag:r.tag});if(w)return{ok:!1,errorCode:"unsupported-operation",reason:w}}let h=Yi(this.graph,r);if(!h)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Zi(u,d))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let E=ou(c,u,d,h);for(let w of E.conditionPaths){let z=ql(w,d,m);if(!z.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${z.bindingNames.join(", ")}`}}let v=Ql(u,d,m,{preserveConditionalBoundary:E.conditionPaths.length>0});if(!v.ok)return{ok:!1,errorCode:"unsupported-operation",reason:v.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${v.bindingNames.join(", ")}`};let C=ry(m,d);if(!C.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its callback parameters depend on bindings outside the target scope: ${C.bindingNames.join(", ")}`};let R=m;if(r.component!==o.component){let w=iy({source:c,ast:l,sourceContext:m,sourceNode:r,targetParent:o,targetParentPath:d});if(!w.ok)return{ok:!1,errorCode:"unsupported-operation",reason:w.reason};R=w.context}else{let w=du(m.collectionPath,d);if(!w.ok)return{ok:!1,errorCode:"unsupported-operation",reason:w.reason??`Cannot move repeat-backed child because the repeat collection is not visible at the target: ${w.bindingNames.join(", ")}`}}return this.buildPlan(t,n,[{order:0,file:r.file,type:"move-repeat-template-child",locator:fe(r),targetParentLocator:fe(o),placement:s,anchorLocator:a?fe(a):void 0,repeatExpression:ru(R,E.sourceJsx),selectionContext:kn(o)}],i)}planCrossFileRepeatTemplateHoistMove(t,n,r,o,i,s,a){if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r)||r.file===o.file)return null;let c=this.graph.getFileContent(r.file),l=this.graph.getFileContent(o.file),u=Ke(c),d=Ke(l);if(!u||!d)return null;let m=ay({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 p=wt(u,r),h=wt(d,o);if(!p||!h)return null;let E=wu(m.callSitePath,h);if(!E.ok)return{ok:!1,errorCode:"unsupported-operation",reason:E.reason};let v=ht(c,p);if(!v)return null;if(ht(l,h))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child into a different repeat template"};if(a&&(s==="before"||s==="after")&&Gl(l,d,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 O=fo(o,{kind:"native-tag",tag:r.tag});if(O)return{ok:!1,errorCode:"unsupported-operation",reason:O}}let R=Yi(this.graph,r);if(!R)return{ok:!1,errorCode:"locator-miss",reason:"Cannot move repeat-backed child outside its repeat template without preserving the repeat expression"};if(Zi(p,h))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed child out of a statement-level conditional branch"};let w=ou(c,p,h,R);for(let O of w.conditionPaths){let j=ql(O,h,v);if(!j.ok)return{ok:!1,errorCode:"unsupported-operation",reason:`Cannot move repeat-backed child because its condition depends on bindings outside the target scope: ${j.bindingNames.join(", ")}`}}let z=Ql(p,h,v,{preserveConditionalBoundary:w.conditionPaths.length>0});if(!z.ok)return{ok:!1,errorCode:"unsupported-operation",reason:z.reason??`Cannot move repeat-backed child because it depends on callback-local bindings: ${z.bindingNames.join(", ")}`};let te=Ry({sourceFile:r.file,targetFile:o.file,sourceContext:v,targetParentPath:h});if(!te.ok)return{ok:!1,errorCode:"unsupported-operation",reason:te.reason};let le=Ay(v);if(!le.ok)return{ok:!1,errorCode:"unsupported-operation",reason:le.reason};let A=Ty(v,le.callbackParams),M=[{order:0,file:r.file,type:"remove-node",locator:fe(r),removeWhitespace:!0}];for(let O of te.imports)M.push({order:M.length,file:o.file,type:"add-import",moduleSpecifier:O.moduleSpecifier,imports:O.imports});return M.push({order:M.length,file:o.file,type:"insert-jsx-expression-child",parentLocator:fe(o),expression:ru(A,w.sourceJsx),placement:s,anchorLocator:a?fe(a):void 0,selectionContext:kn(o)}),this.buildPlan(t,n,M,i)}async planMoveNode(t,n,r,o){if(!o.canMove)return{ok:!1,errorCode:"capability-denied",reason:"Cannot move this node"};let i=cu(n.params.target,this.graph),s=i.parentNode;if(!s)return{ok:!1,errorCode:"locator-miss",reason:`Target parent for request '${n.id}' not found in graph`};if(zy(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 a=await this.graph.getTextWriteTarget(r.key,0);if(a?.kind==="external-entry"){let C=n.params.target.relation,R=i.anchorNode&&(C==="before"||C==="after")?await this.graph.getTextWriteTarget(i.anchorNode.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:"move-node",value:{operation:"move-node",relation:C,anchorSourceId:R?.kind==="external-entry"?R.sourceId:null,parentKey:"parentKey"in n.params.target?n.params.target.parentKey:null}}],o)}let c=r.file!==s.file,l=n.params.target.relation,u=i.anchorNode,d=po(r,a,this.graph.getTextProvenance?.(r.key,0)??null);if(d&&!Gi(d))return{ok:!1,errorCode:"unsupported-operation",reason:d};if(r.isRepeatItemRoot&&u?.isRepeatItemRoot&&r.repeatOwnerKey&&r.repeatOwnerKey===u.repeatOwnerKey&&(l==="before"||l==="after")){let C=a,R=await this.graph.getTextWriteTarget(u.key,0);if(C?.kind==="value-binding"&&R?.kind==="value-binding"&&C.locator&&R.locator){let w=Yn(C.locator),z=Yn(R.locator);if(w&&z&&C.file===R.file&&Gy(w.locator,z.locator)){let te=w.index,le=z.index,A=l==="before"?le-(te<le?1:0):le+(te<le?0:1);return this.buildPlan(t,n,[{order:0,file:C.file,type:"move-array-item",locator:w.locator,fromIndex:te,toIndex:A}],o)}}}if(r.isRepeatItemRoot&&this.isRepeatTemplateRootNode(r))return{ok:!1,errorCode:"unsupported-operation",reason:"Cannot move repeat-backed item outside its collection"};let m=this.getRepeatBackedTemplateStructureReason(r),p=Gi(d)?d:m;if(p&&Gi(p)){let C=this.planRepeatTemplateInternalMove(t,n,r,s,o,l,u);if(C)return C;let R=this.planRepeatTemplateHoistMove(t,n,r,s,o,l,u);if(R)return R;let w=this.planCrossFileRepeatTemplateHoistMove(t,n,r,s,o,l,u);return w||{ok:!1,errorCode:"unsupported-operation",reason:p}}if(m)return{ok:!1,errorCode:"unsupported-operation",reason:m};let h=await this.getUpstreamBackedDescendantReason(r);if(h)return{ok:!1,errorCode:"unsupported-operation",reason:h};if(r.tag&&r.tag.toLowerCase()===r.tag){let C=fo(s,{kind:"native-tag",tag:r.tag});if(C)return{ok:!1,errorCode:"unsupported-operation",reason:C}}if(c)return this.planCrossFileMove(t,n,r,s,o,l,u);let E=Yl(this.graph.getFileContent(r.file),r,s);if(!E.ok)return{ok:!1,errorCode:"unsupported-operation",reason:E.reason??`Cannot move node because it depends on bindings outside the target scope: ${E.bindingNames.join(", ")}`};let v=[{order:0,file:r.file,type:"move-node",locator:fe(r),targetParentLocator:fe(s),placement:l,anchorLocator:u?fe(u):void 0,selectionContext:kn(s)}];return this.buildPlan(t,n,v,o)}planCrossFileMove(t,n,r,o,i,s,a){let c=[],l=0,u=this.graph.getFileContent(r.file),d=Yi(this.graph,r)??`<${r.component} />`,m=Kl(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:fe(r),removeWhitespace:!0}),r.importedFrom&&r.exportName){let h=r.tag??r.component,v={moduleSpecifier:es(o.file,r.importedFrom),imports:r.exportName==="default"?[{kind:"default",local:h}]:[{kind:"named",imported:r.exportName,local:h===r.exportName?void 0:h}]};c.push({order:l++,file:o.file,type:"add-import",moduleSpecifier:v.moduleSpecifier,imports:v.imports}),c.push({order:l++,file:o.file,type:"insert-child",parentLocator:fe(o),node:{jsx:d},placement:s,anchorLocator:a?fe(a):void 0,selectionContext:kn(o)})}else c.push({order:l++,file:o.file,type:"insert-child",parentLocator:fe(o),node:{jsx:d},placement:s,anchorLocator:a?fe(a):void 0,selectionContext:kn(o)});let p=this.buildRemoveComponentImportStep(r,u);return p&&c.push({...p,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:ce(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}}}};import Qn from"node:path";import*as $u from"@babel/parser";import ps from"@babel/traverse";import*as b from"@babel/types";var Vu=typeof ps=="function"?ps:ps.default;function Uu(e){return new Map([...e].map(t=>[t.file,{source:t.source,ast:t.ast}]))}var Tu=new WeakMap;function Nu(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 Ku(e){let{file:t,source:n,segment:r,readFile:o,exists:i}=e,s=e.fileCache??new Map,a=vs(s,t,n);if(!a)return null;let c=Rs(a,r.sourceRange);if(!c)return null;let l=r.source??await tt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:o,exists:i,fileCache:s,visited:new Set});if(!l){let p=await Ms({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});if(!p)return null;if(p.kind==="external")return{kind:"external-entry",file:p.file,sourceType:p.sourceType,sourceId:p.sourceId,adapterId:p.adapterId,displayExpression:p.displayPath};let h={kind:"value",root:p.root,path:p.path.length>0?p.path:[]};return{kind:"value-binding",file:p.file,locator:h,root:p.root,path:p.path,displayExpression:p.displayExpression??tr(c.node,n),sourceKind:p.sourceKind,...p.collectionIndexMap?{collectionIndexMap:p.collectionIndexMap}:{},...p.collectionPathMap?{collectionPathMap:p.collectionPathMap}:{}}}let u=new Set,d=await Px({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});if(!d)return null;if(d.kind==="external")return{kind:"external-entry",file:d.file,sourceType:d.sourceType,sourceId:d.sourceId,adapterId:d.adapterId,displayExpression:d.displayPath};let m={kind:"value",root:d.root,path:d.path.length>0?d.path:[]};return{kind:"value-binding",file:d.file,locator:m,root:d.root,path:d.path,displayExpression:d.displayExpression??l.expression,sourceKind:d.sourceKind,...d.collectionIndexMap?{collectionIndexMap:d.collectionIndexMap}:{},...d.collectionPathMap?{collectionPathMap:d.collectionPathMap}:{}}}async function Ju(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=vs(i,t,n);if(!s)return null;let a=e.expression!==void 0?(e.sourceRange?Wu(s,n,e.expression,e.sourceRange):null)??As(s,n,e.expression):e.sourceRange?Rs(s,e.sourceRange):null;if(!a)return null;let c=rx(a),l=new Set,u=e.sourceInfo??await tt({expression:c.node,scope:c.scope,source:n,currentFile:t,readFile:r,exists:o,fileCache:i,visited:l}),d=u?await De({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 Vx({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 nx(d,e.expression??tr(c.node,n))}async function Cs(e){let{file:t,source:n,readFile:r,exists:o}=e,i=e.fileCache??new Map,s=vs(i,t,n);if(!s)return Oe("unsupported-expression","Unable to parse source for provenance resolution");let a=new Set;return e.target.kind==="text-segment"?ox({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}):ix({file:t,source:n,ast:s,candidate:e.target.candidate,readFile:r,exists:o,graph:e.graph,fileCache:i,visited:a})}function Xu(e){try{return $u.parse(e,{sourceType:"module",plugins:["jsx","typescript"]})}catch{return null}}function vs(e,t,n){let r=e.get(t);if(r?.source===n)return r.ast;let o=Xu(n);return e.set(t,{source:n,ast:o}),o}function Rs(e,t){let n=null,r=-1;for(let o of er(e).expressions){let i=o.node.loc;if(!i||!Ps(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s>=r&&(n=o,r=s)}return n}function ex(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of er(e).expressions){if(!tx(o.node.loc,t))continue;let i=(o.node.end??0)-(o.node.start??0);i<=r&&(n=o,r=i)}return n}function zu(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let o of er(e).jsxElements){let i=o.node.loc;if(!i||!Ps(i,t))continue;let s=(o.node.end??0)-(o.node.start??0);s<=r&&(n=o,r=s)}return n}function er(e){let t=Tu.get(e);if(t)return t;let n={expressions:[],jsxElements:[]};return Vu(e,{Expression(r){n.expressions.push(r)},JSXElement(r){n.jsxElements.push(r)}}),Tu.set(e,n),n}function tx(e,t){return e?e.start.line===t.startLine&&e.start.column===t.startColumn&&e.end.line===t.endLine&&e.end.column===t.endColumn:!1}function Ps(e,t){let n=Fu({line:e.start.line,column:e.start.column},{line:t.startLine,column:t.startColumn}),r=Fu({line:e.end.line,column:e.end.column},{line:t.endLine,column:t.endColumn});return n>=0&&r<=0}function Hu(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 Fu(e,t){return e.line!==t.line?e.line<t.line?-1:1:e.column!==t.column?e.column<t.column?-1:1:0}async function tt(e){if(b.isIdentifier(e.expression))return{kind:"identifier",expression:e.expression.name,base:e.expression.name,path:[]};if(!b.isMemberExpression(e.expression))return null;let t=await id(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:tr(e.expression,e.source),base:t.base,path:t.path}:null}function nx(e,t){if(!e)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}:{}}}function rx(e){if(e.isLogicalExpression()&&(e.node.operator==="||"||e.node.operator==="??")){let t=e.get("left");if(!Array.isArray(t)&&t.isExpression())return t}return e}function tr(e,t){if(t)return ws(e,t);let n=Gx(e);return n?n.path.reduce((r,o)=>o.kind==="property"?`${r}.${o.name}`:`${r}[${o.index}]`,n.base):""}function ws(e,t){return e.start==null||e.end==null?"":t.slice(e.start,e.end)}function As(e,t,n){let r=null,o=Number.POSITIVE_INFINITY;for(let i of er(e).expressions){if(ws(i.node,t)!==n)continue;let s=(i.node.end??0)-(i.node.start??0);s<=o&&(r=i,o=s)}return r}function Wu(e,t,n,r){let o=null,i=Number.POSITIVE_INFINITY;for(let s of er(e).expressions){if(ws(s.node,t)!==n)continue;let a=s.node.loc;if(!a||!Ps(a,r))continue;let c=(s.node.end??0)-(s.node.start??0);c<=i&&(o=s,i=c)}return o}async function ox(e){let{file:t,source:n,ast:r,segment:o,readFile:i,exists:s,fileCache:a,visited:c}=e,l=Rs(r,o.sourceRange),u=o.source??(l?await tt({expression:l.node,scope:l.scope,source:n,currentFile:t,readFile:i,exists:s,fileCache:a,visited:c}):null);if(!u){if(!l)return sx(t,o.value);let m=await Ms({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"?Lu(t,m):Es(t,tr(l.node,n),m):ax({expression:l.node,scope:l.scope,currentFile:t,source:n,readFile:i,exists:s,fileCache:a,visited:c,functionCallContracts:e.functionCallContracts})}if(!l)return Oe("unsupported-expression","Unable to locate text expression for provenance resolution");let d=await De({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(!d){let m=xs(l.node);if(m)return Oe(m.code,m.message);let p=l.scope.getBinding(u.base);if(p?.path.isVariableDeclarator()){let h=xs(p.path.node.init);if(h)return Oe(h.code,h.message)}return p?.path.isVariableDeclarator()&&b.isCallExpression(p.path.node.init)?cx("unsupported-expression",qu(p.path.node.init,e.functionCallContracts)):Oe("unsupported-expression",`Unable to resolve provenance for expression "${u.expression}"`)}return d.kind==="external"?Lu(t,d):Es(t,u.expression,d)}async function ix(e){let{file:t,source:n,ast:r,candidate:o,readFile:i,exists:s,fileCache:a,visited:c}=e;if(!o.conditionSource)return Oe("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let l=As(r,n,o.conditionExpression);if(!l)return Oe("conditional-branch-unresolved",`Unable to locate conditional expression "${o.conditionExpression}"`);let u=await De({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 Oe("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);if(u.kind==="external")return Oe("conditional-branch-unresolved",`Unable to resolve conditional branch source for "${o.conditionExpression}"`);let d=Es(t,o.conditionExpression,u);return d.finalSource?{...d,finalSource:{...d.finalSource,kind:"conditional-branch",displayPath:o.conditionExpression},chain:[...d.chain,{kind:"conditional-branch",file:u.file,displayName:o.conditionExpression,canEditHere:!0}]}:d}function sx(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 ax(e){let t=await Gu(e);if(t.length===0)return Oe("unsupported-expression",`Unsupported expression type: ${e.expression.type}`);if(lx(e.expression))return Yu(t);if(Qu(e.expression))return Oe("unsupported-expression","i18n helpers require a static message id string");if(b.isMemberExpression(e.expression)&&e.expression.computed&&!b.isNumericLiteral(e.expression.property)&&!b.isStringLiteral(e.expression.property))return Oe("dynamic-key","Computed member expressions are not supported for provenance resolution");let[n]=t;return Oe(n.code,n.message)}function Oe(e,t){return{finalSource:null,chain:[],confidence:"unknown",editMode:"unsupported",diagnostics:[{code:e,message:t}]}}function cx(e,t){return Yu([{code:e,message:t}])}function Yu(e){return{finalSource:null,chain:[],confidence:"partial",editMode:"readonly",diagnostics:e}}function lx(e){return b.isCallExpression(e)||b.isConditionalExpression(e)||b.isLogicalExpression(e)||b.isBinaryExpression(e)}function qn(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 Gu(e){let{expression:t,scope:n,currentFile:r,readFile:o,exists:i,fileCache:s,visited:a,functionCallContracts:c}=e,l=xs(t);if(l)return[l];if(b.isCallExpression(t))return[{code:"unsupported-expression",message:qu(t,c)}];if(b.isMemberExpression(t)&&t.computed){let u=t.property;if(!b.isNumericLiteral(u)&&!b.isStringLiteral(u)){if(!b.isExpression(u))return[{code:"dynamic-key",message:"Computed member expressions are not supported for provenance resolution"}];let m=await nt(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 b.isBinaryExpression(t)?qn([...await ms(t.left,t.right,e),{code:"unsupported-expression",message:"Mixed expressions are recognized but remain readonly until a safer composition editing strategy is available"}]):b.isLogicalExpression(t)?qn([...await ms(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"}]):b.isConditionalExpression(t)?qn([...await ms(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 xs(e){return Qu(e)?Mu("i18n helpers require a static message id string"):mx(e)?Mu("CMS helpers require static entry id and field path string arguments"):null}async function ms(...e){let t=e[e.length-1],n=e.slice(0,-1),r=[];for(let o of n)r.push(...await Gu({...t,expression:o}));return r}function ux(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:[dx(e.sourceType)]}}async function Ts(e){for(let n of xx){if(!_u(e.expressionPath,n.helperNames))continue;let r=await n.resolve(e);if(r)return Du(Ou(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(!_u(e.expressionPath,n.helperNames))continue;let r=await n.resolve(t);if(r)return Du(Ou(r),e.externalAdapters)}return null}function dx(e){return{code:"missing-adapter",message:`No external adapter is registered for ${e}`}}function fx(e){return{code:"external-source-readonly",message:e}}function Mu(e){return{code:"unsupported-expression",message:e}}function Ns(e){return!e||!b.isCallExpression(e)?null:b.isIdentifier(e.callee)?e.callee.name:b.isMemberExpression(e.callee)&&!e.callee.computed&&b.isIdentifier(e.callee.object)&&b.isIdentifier(e.callee.property)?`${e.callee.object.name}.${e.callee.property.name}`:null}function _u(e,t){if(!t||t.length===0)return!0;let n=Ns(e.node);return n?t.includes(n):!1}function Ou(e){return"match"in e?{match:e.match,editMode:e.editMode,diagnostics:qn(e.diagnostics??[])}:{match:e,diagnostics:[]}}function Du(e,t){let n=ux(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:qn([...e.diagnostics,...e.editMode==="readonly"||n.editMode==="readonly"?n.diagnostics:[]])}}function px(e){if(!e.isCallExpression())return null;let t=e.node.callee;if(!b.isIdentifier(t)||t.name!=="getCmsField")return null;let[n,r]=e.node.arguments;if(!n||!r||!b.isStringLiteral(n)||!b.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 mx(e){return!!e&&b.isCallExpression(e)&&b.isIdentifier(e.callee)&&e.callee.name==="getCmsField"&&(e.arguments.length<2||!b.isStringLiteral(e.arguments[0])||!b.isStringLiteral(e.arguments[1]))}function Zu(e){if(!(!e||!b.isCallExpression(e))){if(b.isIdentifier(e.callee)&&e.callee.name==="t"){let[t]=e.arguments;return t&&b.isStringLiteral(t)?t.value:null}if(b.isMemberExpression(e.callee)&&!e.callee.computed&&b.isIdentifier(e.callee.object)&&e.callee.object.name==="intl"&&b.isIdentifier(e.callee.property)&&e.callee.property.name==="formatMessage"){let[t]=e.arguments;if(!t||!b.isObjectExpression(t))return null;for(let n of t.properties)if(b.isObjectProperty(n)&&!n.computed&&(b.isIdentifier(n.key)&&n.key.name==="id"||b.isStringLiteral(n.key)&&n.key.value==="id")&&b.isStringLiteral(n.value))return n.value.value;return null}}}function Qu(e){return Zu(e)===null}async function hx(e,t,n){let r=new Set,o=Qn.posix.dirname(e);for(;r.add(o),!(o==="."||o==="/");){let i=Qn.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"]:[Qn.posix.join(i,"locales"),Qn.posix.join(i,"messages")];for(let a of s){let c=Qn.posix.join(a,`${t}.json`);if(await n(c))return c}}return null}async function gx(e){let t=Zu(e.expressionPath.node);if(typeof t!="string"||t.length===0)return null;let n="en",r=await hx(e.currentFile,n,e.exists);return r?{sourceType:"i18n-message",sourceId:`${n}:${t}`,file:r,displayPath:t}:null}async function yx(e){if(!e.expressionPath.isCallExpression())return null;let t=e.expressionPath.node.callee;if(!b.isIdentifier(t)||t.name!=="apiField")return null;let[n,r]=e.expressionPath.node.arguments;if(!n||!b.isExpression(n))return null;let o=await nt(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:[fx("API mapping transforms must stay readonly until a reversible mapping strategy is registered")]}:i}var xx=[{helperNames:["getCmsField"],resolve:({expressionPath:e})=>px(e)},{helperNames:["apiField"],resolve:e=>yx(e)},{helperNames:["t","intl.formatMessage"],resolve:({currentFile:e,expressionPath:t,exists:n})=>gx({currentFile:e,expressionPath:t,exists:n})}];function Lu(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 Es(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=Rx(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:!0}):n.sourceKind==="imported-binding"?c.push({kind:"imported-binding",file:n.file,displayName:n.root.kind==="named-export"?n.root.name:"default",canEditHere:!0}):n.sourceKind==="repeat-template"&&c.push({kind:"repeat-template",file:n.file,displayName:t,canEditHere:!0}),n.path.length>0&&n.sourceKind!=="repeat-template"&&c.push({kind:o?"array-item":"object-field",file:n.file,displayName:a,canEditHere:!0}),i&&c.push({kind:"config-entry",file:n.file,displayName:i.displayPath,canEditHere:!0}),{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:c,confidence:n.sourceKind==="repeat-template"?"safe-derived":"exact",editMode:n.editMode??(n.file===e?"direct":"proxy"),diagnostics:n.diagnostics??[]}}var Ex=[{helperName:"formatPrice",purity:"pure",sourceArgIndex:0},{helperName:"formatDate",purity:"pure",sourceArgIndex:0},{helperName:"pickLabel",purity:"pure",sourceArgIndex:0}];function Fs(e,t){let n=[...Ex,...t??[]];for(let r=n.length-1;r>=0;r-=1){let o=n[r];if(o?.helperName===e)return o}return null}function qu(e,t){let n=e.callee;return b.isIdentifier(n)&&Fs(n.name,t)?.purity==="side-effect"?`Helper "${n.name}" is registered as side-effectful and remains readonly`:"Function calls are recognized but remain readonly until a pure-call strategy is registered"}async function Ms(e){let t=await Ts(e);if(t)return t;let n=await ed({...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 tt({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 De({...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 Cx(e)}async function ed(e){let t=await qe({...e,allowComposed:!1});return t?.kind==="source"?t.provenance:null}async function qe(e){let t=Sx(e.expressionPath),n=kx(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 tt({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 De({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 tt({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 De({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 qe({...e,expressionPath:r,allowComposed:!0}),a=await qe({...e,expressionPath:o,allowComposed:!1}),c=await qe({...e,expressionPath:i,allowComposed:!1});return hs(s,a,c)}if(t.isCallExpression())return bx({...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 qe({...e,expressionPath:r,allowComposed:!0}),s=await qe({...e,expressionPath:o,allowComposed:!0});return hs(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 qe({...e,expressionPath:r,allowComposed:!0}),s=await qe({...e,expressionPath:o,allowComposed:!0});return hs(i,s)}if(t.isUnaryExpression()){let r=t.get("argument");return Array.isArray(r)||!r.isExpression()?null:qe({...e,expressionPath:r,allowComposed:!0})}return null}finally{n&&e.visited.delete(n)}}function Sx(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 bx(e){let t=Ns(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:qe({...e,expressionPath:r,allowComposed:!1})}let n=e.expressionPath.get("callee");if(n.isMemberExpression()&&!n.node.computed){let r=n.node.property;if(b.isIdentifier(r)&&(r.name==="toFixed"||r.name==="toString")){let o=n.get("object");return Array.isArray(o)||!o.isExpression()?null:qe({...e,expressionPath:o,allowComposed:!1})}}return null}function hs(...e){let t=null;for(let n of e){if(!n)return null;if(n.kind!=="none"){if(!t){t=n.provenance;continue}if(!Ix(t,n.provenance))return null}}return t?{kind:"source",provenance:t}:{kind:"none"}}function Ix(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 kx(e,t){return t.start==null||t.end==null?null:`safe-derived:${e}:${t.start}:${t.end}`}async function Cx(e){if(!e.expressionPath.isCallExpression())return null;let t=Ns(e.expressionPath.node);if(!t)return null;let n=Fs(t,e.functionCallContracts);if(!n||n.purity!=="pure")return null;let r=n.sourceArgIndex??0,o=e.expressionPath.get(`arguments.${r}`);return!o||Array.isArray(o)||!o.isExpression()?null:await td({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})}async function td(e){let t=await Ts({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 tt({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 De({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 Ms({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 vx(e){if(!e.binding.path.isVariableDeclarator())return null;let t=e.binding.path.node.init;if(!t||!b.isCallExpression(t))return null;let n=t.callee;if(!b.isIdentifier(n))return null;let r=Fs(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}`);return!s||Array.isArray(s)||!s.isExpression()?null:await td({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})}function Rx(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=yo(t,e.path);return{sourceId:o,displayPath:o}}async function Px(e){let t=e.segment.source;return t?De({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 De(e){let t=e.sourceInfo,n=nd(e.expressionPath,t.base);if(n){let l=await rd({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 E=Ax(n.callPath,[...n.basePath,...t.path]);return Xn(E)?Nu(e.currentFile,E.sourceId,E.displayPath):null}let u=Zx(l,[...n.basePath,...t.path]),d=l.collectionIndexMap?.[0]??0,m=[...l.pathPrefix??[],{kind:"index",index:d},...n.basePath,...t.path],p=[{kind:"index",index:0},...n.basePath,...t.path];return et(l.value,p)===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 d=await an(e.currentFile,u.node.source.value,e.exists);if(!d)return null;let m=await go({file:d,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 p=t.path.slice(1);return et(m.value,p)===void 0?null:{kind:"value",file:m.file,root:m.root,path:p,sourceKind:"imported-binding",collectionIndexMap:m.collectionIndexMap}}let o=zl(r);if(o){let l=o.expressionPath,u=await tt({expression:l.node,scope:l.scope,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(u){let d=await De({...e,expressionPath:l,sourceInfo:{...u,expression:yo(u.expression,t.path),path:[...u.path,...t.path]}});if(d)return d}if(t.path.length===0){let d=await ed({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(d)return d}}if(r.kind==="param")return zx({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 vx({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=oo(r,t.path);if(Xn(s))return Nu(e.currentFile,s.sourceId,s.displayPath);let a=await Gt({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:et(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}function nd(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=Ge(o,t);if(!i)return null;let s=r.parentPath;return!s||!s.isCallExpression()||!wx(s,r)?null:{callPath:s,basePath:i}}function wx(e,t){let n=e.node.callee;return!b.isMemberExpression(n)||!b.isIdentifier(n.property)||n.property.name!=="map"?!1:e.node.arguments.some(r=>r===t.node)}async function rd(e){let{currentFile:t,callPath:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=n.node.callee;if(!b.isMemberExpression(a)||!b.isIdentifier(a.property)||a.property.name!=="map")return null;let c=n.get("callee");if(!c.isMemberExpression())return null;let l=c.get("object");if(Array.isArray(l)||!l.isExpression())return null;let u=await nr({currentFile:t,expressionPath:l,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return!u||!Array.isArray(u.value)||u.value.length===0?null:u}function Ax(e,t){let n=e.get("callee");if(!n.isMemberExpression())return null;let r=n.get("object");return Array.isArray(r)||!r.isExpression()?null:so(r,t)}async function nr(e){let{currentFile:t,expressionPath:n,readFile:r,exists:o,fileCache:i,visited:s}=e;if(n.isIdentifier()){let a=n.scope.getBinding(n.node.name);if(!a)return null;let c=await Gt({currentFile:t,binding:a,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return c?.kind==="static"?c:null}if(n.isCallExpression())return od({currentFile:t,callPath:n,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(n.isTSAsExpression()||n.isTSSatisfiesExpression()||n.isTSNonNullExpression()){let a=n.get("expression");if(!Array.isArray(a)&&a.isExpression())return nr({...e,expressionPath:a})}if(n.isArrayExpression()){let a=Hu(n.node);if(!a)return null;let c=await nt(n.node,n.scope,t,r,o,i,s);return Array.isArray(c)?{kind:"static",file:t,root:{kind:"expression",sourceRange:a},value:c,sourceKind:"binding"}:null}if(n.isMemberExpression()){let a=await tt({expression:n.node,scope:n.scope,currentFile:t,readFile:r,exists:o,fileCache:i,visited:s});if(!a)return null;let c=await De({currentFile:t,expressionPath:n,sourceInfo:a,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(!c||c.kind==="external")return null;let l=await Tx({currentFile:t,expressionPath:n,provenance:c,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(!l||l.kind!=="static")return null;if(c.collectionPathMap?.length){let d=Qx(l.value,c.collectionPathMap);if(d)return{kind:"static",file:c.file,root:c.root,value:d.value,sourceKind:c.sourceKind,collectionPathMap:d.collectionPathMap}}let u=et(l.value,c.path);return Array.isArray(u)?{kind:"static",file:c.file,root:c.root,value:u,sourceKind:c.sourceKind,pathPrefix:c.path,collectionIndexMap:c.collectionIndexMap,collectionPathMap:c.collectionPathMap}:null}return null}async function Tx(e){let{provenance:t}=e;if(t.root.kind==="binding"){let i=e.expressionPath.scope.getBinding(t.root.name);if(!i&&t.file!==e.currentFile){let s=await Mt(t.file,e.readFile,e.fileCache);i=s.ast?Is(s.ast).getBinding(t.root.name):void 0}return i?await Gt({currentFile:t.file,binding:i,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}if(t.root.kind!=="expression")return null;let n=await Mt(t.file,e.readFile,e.fileCache);if(!n.ast)return null;let r=ex(n.ast,t.root.sourceRange);if(!r)return null;let o=await nt(r.node,r.scope,t.file,e.readFile,e.exists,e.fileCache,e.visited);return o===void 0?null:{kind:"static",file:t.file,root:t.root,value:o,sourceKind:t.sourceKind}}async function od(e){return await Nx(e)??await Fx(e)??await Mx(e)}async function Nx(e){let{callPath:t}=e,n=t.node.callee;if(!b.isMemberExpression(n)||!b.isIdentifier(n.property)||n.property.name!=="filter")return null;let r=t.get("callee");if(!r.isMemberExpression())return null;let o=r.get("object");if(Array.isArray(o)||!o.isExpression())return null;let i=await nr({currentFile:e.currentFile,expressionPath: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});if(!i||!Array.isArray(i.value))return null;let[s]=t.node.arguments;if(!b.isArrowFunctionExpression(s)&&!b.isFunctionExpression(s))return null;let a=s.params[0];if(!b.isIdentifier(a))return null;let c=_x(s);if(!c)return null;let l=[],u=[],d=[];for(let[m,p]of i.value.entries()){let h=Ox(c,a.name,p);if(typeof h!="boolean")return null;if(h){l.push(p),u.push(i.collectionIndexMap?.[m]??m);let E=i.collectionPathMap?.[m];E&&d.push(E)}}return{...i,value:l,pathPrefix:i.pathPrefix,collectionIndexMap:u,...d.length>0?{collectionPathMap:d}:{}}}async function Fx(e){let{callPath:t}=e,n=t.node.callee;if(!b.isMemberExpression(n)||!b.isIdentifier(n.property)||n.property.name!=="slice")return null;let r=t.get("callee");if(!r.isMemberExpression())return null;let o=r.get("object");if(Array.isArray(o)||!o.isExpression())return null;let i=await nr({currentFile:e.currentFile,expressionPath: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});if(!i||!Array.isArray(i.value))return null;let[s,a]=t.node.arguments,c=ju(s,0),l=ju(a,i.value.length);if(c===null||l===null)return null;let u=Math.max(0,c<0?i.value.length+c:c),d=Math.max(0,l<0?i.value.length+l:l),m=i.value.map((h,E)=>i.collectionIndexMap?.[E]??E).slice(u,d),p=i.collectionPathMap?.slice(u,d);return{...i,value:i.value.slice(u,d),pathPrefix:i.pathPrefix,collectionIndexMap:m,...p?{collectionPathMap:p}:{}}}function ju(e,t){return e?b.isNumericLiteral(e)&&Number.isInteger(e.value)?e.value:null:t}async function Mx(e){let{callPath:t}=e,n=t.node.callee;if(!b.isMemberExpression(n)||!b.isIdentifier(n.property)||n.property.name!=="sort"&&n.property.name!=="toSorted")return null;let r=t.get("callee");if(!r.isMemberExpression())return null;let o=r.get("object");if(Array.isArray(o)||!o.isExpression())return null;let i=await nr({currentFile:e.currentFile,expressionPath: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});if(!i||!Array.isArray(i.value))return null;let[s]=t.node.arguments;if(!b.isArrowFunctionExpression(s)&&!b.isFunctionExpression(s))return null;let[a,c]=s.params;if(!b.isIdentifier(a)||!b.isIdentifier(c))return null;let l=i.value.map((d,m)=>({value:d,sourceIndex:i.collectionIndexMap?.[m]??m,originalIndex:m})),u=[...l];for(let d of l)for(let m of l)if(Bu(s,a.name,c.name,d.value,m.value)===void 0)return null;return u.sort((d,m)=>{let p=Bu(s,a.name,c.name,d.value,m.value)??0;return p===0?d.originalIndex-m.originalIndex:p}),{...i,value:u.map(d=>d.value),pathPrefix:i.pathPrefix,collectionIndexMap:u.map(d=>d.sourceIndex),...i.collectionPathMap?{collectionPathMap:u.map(d=>i.collectionPathMap?.[d.originalIndex]).filter(d=>!!d)}:{}}}function Bu(e,t,n,r,o){let i=b.isExpression(e.body)?e.body:e.body.body.find(a=>b.isReturnStatement(a))?.argument;if(!i||!b.isExpression(i))return;let s=Ss(i,t,n,r,o);return typeof s=="number"?s:void 0}function Ss(e,t,n,r,o){if(b.isNumericLiteral(e)||b.isStringLiteral(e)||b.isBooleanLiteral(e))return e.value;if(b.isIdentifier(e))return e.name===t?r:e.name===n?o:void 0;if(b.isMemberExpression(e)){let i=bs(e,t);if(i)return et(r,i);let s=bs(e,n);return s?et(o,s):void 0}if(b.isBinaryExpression(e)&&e.operator==="-"){let i=b.isExpression(e.left)?Ss(e.left,t,n,r,o):void 0,s=b.isExpression(e.right)?Ss(e.right,t,n,r,o):void 0;return typeof i=="number"&&typeof s=="number"?i-s:void 0}}function _x(e){if(b.isExpression(e.body))return e.body;for(let t of e.body.body)if(b.isReturnStatement(t)&&t.argument&&b.isExpression(t.argument))return t.argument;return null}function Ox(e,t,n){let r=Yt(e,t,n);return typeof r=="boolean"?r:void 0}function Yt(e,t,n){if(b.isStringLiteral(e)||b.isNumericLiteral(e)||b.isBooleanLiteral(e))return e.value;if(b.isNullLiteral(e))return null;if(b.isIdentifier(e))return e.name===t?n:void 0;if(b.isMemberExpression(e)){let r=bs(e,t);return r?et(n,r):void 0}if(b.isUnaryExpression(e)&&e.operator==="!"){let r=Yt(e.argument,t,n);return r===void 0?void 0:!r}if(b.isLogicalExpression(e)){let r=Yt(e.left,t,n);if(r===void 0)return;if(e.operator==="&&")return r&&Yt(e.right,t,n);if(e.operator==="||")return r||Yt(e.right,t,n)}if(b.isBinaryExpression(e)){let r=b.isExpression(e.left)?Yt(e.left,t,n):void 0,o=b.isExpression(e.right)?Yt(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 bs(e,t){let n=[],r=e;for(;b.isMemberExpression(r);){if(r.computed)if(b.isNumericLiteral(r.property))n.unshift({kind:"index",index:r.property.value});else if(b.isStringLiteral(r.property))n.unshift({kind:"property",name:r.property.value});else return null;else{if(!b.isIdentifier(r.property))return null;n.unshift({kind:"property",name:r.property.name})}r=r.object}return!b.isIdentifier(r)||r.name!==t?null:n}async function Gt(e){let{currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=`${t}::${n.kind}::${n.identifier.name}`;if(s.has(a))return null;s.add(a);try{let c=await Dx({currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s});if(c)return c;if(n.path.isImportSpecifier()||n.path.isImportDefaultSpecifier())return await Yx({currentFile:t,binding:n,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,fileCache:i,visited:s});if(n.kind==="param")return null;if(n.path.isVariableDeclarator()){let l=n.path.node.init;if(!l||!b.isExpression(l))return null;let u=n.path.get("init");if(u&&!Array.isArray(u)&&u.isExpression()){let m=await Ts({currentFile:t,expressionPath:u,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(m)return m;if(u.isCallExpression()){let p=await od({currentFile:t,callPath:u,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});if(p)return p}}let d=await nt(l,n.path.scope,t,r,o,i,s);return d===void 0?null:{kind:"static",file:t,root:{kind:"binding",name:n.identifier.name},value:d,sourceKind:"binding"}}if(n.path.isIdentifier()&&n.path.parentPath?.isExportDefaultDeclaration()){let l=n.path.parentPath.node.declaration;if(!b.isExpression(l))return null;let u=await nt(l,n.path.scope,t,r,o,i,s);return u===void 0?null:{kind:"static",file:t,root:{kind:"binding",name:n.identifier.name},value:u,sourceKind:"binding"}}return null}finally{s.delete(a)}}async function Dx(e){let{currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s}=e;if(!n.path.isVariableDeclarator()||!n.path.get("id").isArrayPattern())return null;let a=n.path,c=a.node.init;if(!c||!b.isCallExpression(c))return null;let l=Lx(c);if(!l||!b.isArrayPattern(a.node.id)||a.node.id.elements.findIndex(h=>b.isIdentifier(h)&&h.name===n.identifier.name)!==0)return null;let d=l==="useReducer"?1:0,m=c.arguments[d];if(!m||!b.isExpression(m))return null;let p=await nt(m,a.scope,t,r,o,i,s);return p===void 0?null:{kind:"static",file:t,root:{kind:"hook-state",name:n.identifier.name,hook:l},value:p,sourceKind:"binding"}}function Lx(e){return b.isIdentifier(e.callee)&&(e.callee.name==="useState"||e.callee.name==="useReducer")?e.callee.name:b.isMemberExpression(e.callee)&&b.isIdentifier(e.callee.property)&&(e.callee.property.name==="useState"||e.callee.property.name==="useReducer")?e.callee.property.name:null}function jx(e){let t=e.getFunctionParent();if(!t)return null;if(t.isFunctionDeclaration()){let s=t.node.id?.name;if(!s)return null;let a=t.parentPath?.isExportDefaultDeclaration()?"default":(t.parentPath?.isExportNamedDeclaration(),s);return{componentName:s,exportName:a}}if(!t.isArrowFunctionExpression()&&!t.isFunctionExpression())return null;let n=t.parentPath;if(!n?.isVariableDeclarator()||!b.isIdentifier(n.node.id))return null;let r=n.node.id.name,o=n.parentPath,i=o?.parentPath?.isExportDefaultDeclaration()?"default":(o?.parentPath?.isExportNamedDeclaration(),r);return{componentName:r,exportName:i}}function Bx(e,t){let n=jx(e.path);if(!n)return null;let r=In(e,t);return r?{...n,...r}:null}function yo(e,t){return t.reduce((n,r)=>r.kind==="property"?`${n}.${r.name}`:`${n}[${r.index}]`,e)}function $x(e,t,n,r){return e.importedFrom===t?r?e.exportName===r:!0:e.sourceFile===t&&e.tag===n}async function Vx(e){let t=Kx(e.expressionPath.node);if(!t||!Jx(t.segments))return null;let n=await De({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 Ux({...e,rootPath:n.path,segments:t.segments});return r?{...n,path:r.collectionPathMap[0]??n.path,sourceKind:"repeat-template",displayExpression:tr(e.expressionPath.node,e.fileCache.get(e.currentFile)?.source),...r.collectionIndexMap?{collectionIndexMap:r.collectionIndexMap}:{},collectionPathMap:r.collectionPathMap}:null}async function Ux(e){let t=null,n,r=[];for(let i of e.segments){if(i.kind!=="dynamic")continue;let s=await tt({expression:i.expression,scope:e.expressionPath.scope,source:e.fileCache.get(e.currentFile)?.source,currentFile:e.currentFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!s)return null;let a=nd(e.expressionPath,s.base);if(!a)return null;let c=await rd({currentFile:e.currentFile,callPath:a.callPath,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(!c||!Array.isArray(c.value))return null;let l=c.value.map((u,d)=>{let m=et(c.value,[{kind:"index",index:d},...a.basePath,...s.path]);return Xx(m)});if(l.some(u=>u===null)||t!==null&&t!==l.length)return null;t=l.length,n??=c.collectionIndexMap,r.push(l)}if(t===null||t===0)return null;let o=[];for(let i=0;i<t;i+=1){let s=[...e.rootPath],a=0;for(let c of e.segments){if(c.kind==="dynamic"){let l=r[a]?.[i];if(!l)return null;s.push(l),a+=1;continue}s.push({...c})}o.push(s)}return{...n?{collectionIndexMap:n}:{},collectionPathMap:o}}function Kx(e){let t=[],n=e;for(;b.isMemberExpression(n)||b.isOptionalMemberExpression(n);){let r=n.property;if(n.computed)if(b.isNumericLiteral(r))t.unshift({kind:"index",index:r.value});else if(b.isStringLiteral(r))t.unshift({kind:"property",name:r.value});else if(b.isExpression(r))t.unshift({kind:"dynamic",expression:r});else return null;else if(b.isIdentifier(r))t.unshift({kind:"property",name:r.name});else return null;n=n.object}return b.isIdentifier(n)?{base:n.name,segments:t}:null}function Jx(e){return e.some(t=>t.kind==="dynamic")}function Xx(e){return typeof e=="string"?{kind:"property",name:e}:Number.isInteger(e)?{kind:"index",index:e}:null}async function zx(e){let t=Bx(e.binding,e.sourceInfo);if(!t||!e.graph)return null;let n=[...e.graph.elements.values()].filter(l=>$x(l,e.currentFile,t.componentName,t.exportName));if(n.length!==1)return null;let r=n[0],o=r.attributes?.find(l=>l.name===t.propName);if(o&&!o.source){let l=await Hx({caller:r,propName:t.propName,remainingPath:t.remainingPath,readFile:e.readFile,fileCache:e.fileCache});if(l)return gs(l,{componentName:t.componentName,propName:t.propName,file:r.sourceFile})}if(!o?.source){let l=await Wx({caller:r,propName:t.propName,remainingPath:t.remainingPath,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(l)return gs(l,{componentName:t.componentName,propName:t.propName,file:r.sourceFile});let u=Wl(e.binding,t.componentName,t.propName);if(!u||u.propName!==t.propName)return null;let d=await nt(u.expressionPath.node,u.expressionPath.scope,e.currentFile,e.readFile,e.exists,e.fileCache,e.visited);if(d===void 0)return null;let m=t.remainingPath;return m.length>0&&et(d,m)===void 0?null:{kind:"value",file:e.currentFile,root:{kind:"binding",name:t.propName},path:m,sourceKind:"binding",semanticKind:"component-prop",displayExpression:u.displayPath,chainPrefix:[{kind:"component-prop",file:e.currentFile,displayName:u.displayPath,canEditHere:!0}],editMode:"upstream",diagnostics:[]}}let i=await Mt(r.sourceFile,e.readFile,e.fileCache);if(!i.ast)return null;let s=Wu(i.ast,i.source,o.source.expression,o.sourceRange)??As(i.ast,i.source,o.source.expression);if(!s)return null;let a={...o.source,expression:yo(o.source.expression,t.remainingPath),path:[...o.source.path,...t.remainingPath]},c=await De({currentFile:r.sourceFile,expressionPath:s,sourceInfo:a,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 c?gs(c.kind==="external"?c:{...c,displayExpression:a.expression},{componentName:t.componentName,propName:t.propName,file:r.sourceFile}):null}async function Hx(e){let t=await Mt(e.caller.sourceFile,e.readFile,e.fileCache);if(!t.ast)return null;let n=zu(t.ast,e.caller.sourceRange);if(!n)return null;let r=n.get("openingElement").get("attributes").find(a=>a.isJSXAttribute()&&a.node.name.type==="JSXIdentifier"&&a.node.name.name===e.propName);if(!r?.isJSXAttribute())return null;let o=r.get("value"),i=o.isStringLiteral()?o:o.isJSXExpressionContainer()?o.get("expression"):null;if(!i?.isExpression())return null;let s=Hu(i.node);return s?{kind:"value",file:e.caller.sourceFile,root:{kind:"expression",sourceRange:s},path:e.remainingPath,sourceKind:"binding",semanticKind:"component-prop",displayExpression:e.propName,editMode:"upstream",diagnostics:[]}:null}async function Wx(e){let t=await Mt(e.caller.sourceFile,e.readFile,e.fileCache);if(!t.ast)return null;let n=zu(t.ast,e.caller.sourceRange);if(!n)return null;let r=n.get("openingElement");for(let o of r.get("attributes")){if(!o.isJSXSpreadAttribute())continue;let i=o.get("argument");if(!i.isExpression())continue;let s=await tt({expression:i.node,scope:i.scope,source:t.source,currentFile:e.caller.sourceFile,readFile:e.readFile,exists:e.exists,fileCache:e.fileCache,visited:e.visited});if(!s)continue;let a=[{kind:"property",name:e.propName},...e.remainingPath],c={...s,expression:yo(s.expression,a),path:[...s.path,...a]},l=await De({currentFile:e.caller.sourceFile,expressionPath:i,sourceInfo:c,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(l)return l.kind==="external"?l:{...l,displayExpression:c.expression}}return null}function gs(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"}}async function Yx(e){let{currentFile:t,binding:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=n.path.parentPath;if(!a||!a.isImportDeclaration())return null;let c=a.node.source.value;if(typeof c!="string")return null;let l=await an(t,c,o);if(!l)return null;if(n.path.isImportDefaultSpecifier()){let E=await Mt(l,r,i),v=E.ast?ks(E.ast,"default"):null,C=await go({file:l,exportName:"default",readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return!C||C.kind!=="static"?null:{kind:"static",file:v?.kind==="default-expression"?C.file:l,root:v?.kind==="default-expression"?C.root:{kind:"default-export"},value:C.value,sourceKind:"imported-binding"}}if(!n.path.isImportSpecifier())return null;let u=n.path.node.imported,d=b.isIdentifier(u)?u.name:u.value,m=await Mt(l,r,i),p=m.ast?ks(m.ast,d):null,h=await go({file:l,exportName:d,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s});return h?h.kind==="external"?h:{kind:"static",file:p?.kind==="re-export"?h.file:l,root:p?.kind==="re-export"?h.root:{kind:"named-export",name:d},value:h.value,sourceKind:"imported-binding"}:null}async function go(e){let{file:t,exportName:n,readFile:r,exists:o,fileCache:i,visited:s}=e,a=`export::${t}::${n}`;if(!s.has(a)){s.add(a);try{let c=await Mt(t,r,i);if(!c.ast)return;let l=ks(c.ast,n);if(!l)return;if(l.kind==="default-expression"){let p=l.expression;if(!p||!b.isIdentifier(p))return;let h=Is(c.ast).getBinding(p.name);return h?await Gt({currentFile:t,binding:h,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s})??void 0:void 0}if(l.kind==="re-export"){if(!l.source||!l.name)return;let p=await an(t,l.source,o);return p?go({...e,file:p,exportName:l.name}):void 0}let u=l.name;if(!u)return;let d=Is(c.ast).getBinding(u);return d?await Gt({currentFile:t,binding:d,readFile:r,exists:o,graph:e.graph,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters,functionCallContracts:e.functionCallContracts,fileCache:i,visited:s})??void 0:void 0}finally{s.delete(a)}}}function Is(e){let t=null;if(Vu(e,{Program(n){t=n.scope,n.stop()}}),!t)throw new Error("Unable to determine program scope");return t}function ks(e,t){for(let n of e.program.body){if(t==="default"&&b.isExportDefaultDeclaration(n))return b.isExpression(n.declaration)?{kind:"default-expression",expression:n.declaration}:(b.isFunctionDeclaration(n.declaration)||b.isClassDeclaration(n.declaration))&&n.declaration.id?{kind:"default-binding",name:n.declaration.id.name}:null;if(b.isExportNamedDeclaration(n)){if(n.declaration){if(b.isVariableDeclaration(n.declaration)){for(let r of n.declaration.declarations)if(b.isIdentifier(r.id)&&r.id.name===t)return{kind:"local-binding",name:r.id.name}}if((b.isFunctionDeclaration(n.declaration)||b.isClassDeclaration(n.declaration))&&n.declaration.id&&n.declaration.id.name===t)return{kind:"local-binding",name:t}}for(let r of n.specifiers)if((b.isIdentifier(r.exported)?r.exported.name:r.exported.value)===t&&b.isExportSpecifier(r))return n.source?{kind:"re-export",name:r.local.name,source:n.source.value}:{kind:"local-binding",name:r.local.name}}}return null}async function nt(e,t,n,r,o,i,s){if(b.isStringLiteral(e)||b.isNumericLiteral(e)||b.isBooleanLiteral(e))return e.value;if(b.isNullLiteral(e))return null;if(b.isTemplateLiteral(e))return e.expressions.length===0&&e.quasis.length===1?e.quasis[0].value.cooked??e.quasis[0].value.raw:void 0;if(b.isTSAsExpression(e)||b.isTSSatisfiesExpression(e)||b.isTSNonNullExpression(e))return await nt(e.expression,t,n,r,o,i,s);if(b.isIdentifier(e)){let a=t.getBinding(e.name);if(!a)return;let c=await Gt({currentFile:n,binding:a,readFile:r,exists:o,fileCache:i,visited:s});return c?.kind==="static"?c.value:void 0}if(b.isArrayExpression(e)){let a=[];for(let c of e.elements){if(!c||b.isSpreadElement(c))return;let l=await ys(c,t,n,r,o,i,s);if(l===void 0)return;a.push(l)}return a}if(b.isObjectExpression(e)){let a={};for(let c of e.properties){if(!b.isObjectProperty(c)||c.computed)return;let l=null;if(b.isIdentifier(c.key)?l=c.key.name:b.isStringLiteral(c.key)&&(l=c.key.value),!l)return;if(c.shorthand){if(!b.isIdentifier(c.value))return;let d=await ys(c.value,t,n,r,o,i,s);if(d===void 0)return;a[l]=d;continue}if(!b.isExpression(c.value))return;let u=await ys(c.value,t,n,r,o,i,s);u!==void 0&&(a[l]=u)}return a}if(b.isMemberExpression(e)){let a=await id(e,t,n,r,o,i,s);if(!a)return;let c=t.getBinding(a.base);if(!c)return;let l=await Gt({currentFile:n,binding:c,readFile:r,exists:o,fileCache:i,visited:s});return!l||l.kind!=="static"?void 0:et(l.value,a.path)}}async function ys(e,t,n,r,o,i,s){if(!b.isSpreadElement(e))return await nt(e,t,n,r,o,i,s)}async function id(e,t,n,r,o,i,s){if(b.isIdentifier(e))return{base:e.name,path:[]};if(!b.isMemberExpression(e))return null;let a=[],c=e;for(;b.isMemberExpression(c);){if(c.computed){let l=c.property;if(b.isNumericLiteral(l))a.unshift({kind:"index",index:l.value});else if(b.isStringLiteral(l))a.unshift({kind:"property",name:l.value});else{let u=b.isExpression(l)?await nt(l,t,n,r,o,i,s):void 0;if(typeof u=="string")a.unshift({kind:"property",name:u});else if(Number.isInteger(u))a.unshift({kind:"index",index:u});else return null}}else{if(!b.isIdentifier(c.property))return null;a.unshift({kind:"property",name:c.property.name})}c=c.object}return b.isIdentifier(c)?{base:c.name,path:a}:null}function Gx(e){if(b.isIdentifier(e))return{base:e.name,path:[]};if(!b.isMemberExpression(e))return null;let t=[],n=e;for(;b.isMemberExpression(n);){if(n.computed)if(b.isNumericLiteral(n.property))t.unshift({kind:"index",index:n.property.value});else if(b.isStringLiteral(n.property))t.unshift({kind:"property",name:n.property.value});else return null;else{if(!b.isIdentifier(n.property))return null;t.unshift({kind:"property",name:n.property.name})}n=n.object}return b.isIdentifier(n)?{base:n.name,path:t}:null}function et(e,t){let n=e;for(let r of t){if(r.kind==="property"){if(n===null||Array.isArray(n)||typeof n!="object"||!(r.name in n))return;n=n[r.name];continue}if(!Array.isArray(n)||r.index<0||r.index>=n.length)return;n=n[r.index]}return n}function Zx(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 Qx(e,t){let n=[],r=[];for(let o of t){let i=et(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}}async function Mt(e,t,n){let r=n.get(e);if(r)return r;let o=await t(e),i=Xu(o),s={source:o,ast:i};return n.set(e,s),s}import js from"@babel/generator";import{parse as uE}from"@babel/parser";import Bs from"@babel/traverse";import*as k from"@babel/types";import*as ld from"@babel/types";import _s from"@babel/generator";import*as se from"@babel/types";var qx=typeof _s=="function"?_s:_s.default,eE=/(?:token|secret|key|password|authorization|cookie|signature|credential)/i,tE=/^((?:https?:)?\/\/)[^/@\s]+@/i,nE=/(\/(?:token|secret|api[-_]?key|password|credential|signature)\/)[^/?#]+/gi;function ad(e,t){let n=ct(e.callee);if(!n)return null;if(n==="fetch")return Os(e.arguments[0],"GET",t,["fetch call"]);if(n.startsWith("axios.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(sd(r))return Os(e.arguments[0],r,t,["axios client contract"])}if(n.startsWith("ky.")){let r=n.split(".").at(-1)?.toUpperCase()??"GET";if(sd(r))return Os(e.arguments[0],r,t,["ky client contract"])}return null}function Os(e,t,n,r){if(!e||se.isSpreadElement(e)||se.isJSXNamespacedName(e))return sE(t,n,r,"missing url argument");let o=rr(e);return{sourceKind:iE(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 rr(e){if(se.isStringLiteral(e))return xo(e.value);if(se.isTemplateLiteral(e))return xo(rE(e));if(se.isBinaryExpression(e)&&e.operator==="+"){let t=rr(e.left),n=rr(e.right);return!t&&!n?void 0:xo(`${t??Ds(e.left)}${n??Ds(e.right)}`)}if(se.isMemberExpression(e)){let t=cd(e);if(t)return`env:${t}`}if(!(se.isCallExpression(e)&&ct(e.callee)==="new URL")){if(se.isNewExpression(e)&&se.isIdentifier(e.callee,{name:"URL"})){let[t,n]=e.arguments,r=t&&!se.isSpreadElement(t)?rr(t):void 0,o=n&&!se.isSpreadElement(n)?rr(n):void 0;return o&&r?xo(`${o} + ${r}`):r??o}if(se.isIdentifier(e))return`:${e.name}`}}function rE(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+=Ds(r))}return t}function Ds(e){if(se.isIdentifier(e))return`:${e.name}`;if(se.isMemberExpression(e)){let t=cd(e);if(t)return`env:${t}`}return`:${oE(e)}`}function oE(e){return qx(e,{comments:!1}).code.replace(/[^a-zA-Z0-9_$]+/g,"_").replace(/^_+|_+$/g,"")||"param"}function xo(e){let[t]=e.split("#"),[n,r]=t.split("?"),o=n.replace(tE,"$1<redacted>@").replace(nE,"$1<redacted>");if(!r)return o;let i=r.split("&").map(s=>{let[a]=s.split("=");return a?eE.test(a)?`${a}=<redacted>`:`${a}=:${a}`:""}).filter(Boolean).join("&");return i?`${o}?${i}`:o}function iE(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 sE(e,t,n,r){return{sourceKind:"unknown-api",method:e,confidence:"partial",evidence:[{file:t.file,reason:[...n,r].join("; ")}]}}function sd(e){return["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"].includes(e)}function cd(e){return!se.isMemberExpression(e.object)||!se.isIdentifier(e.object.object,{name:"process"})||!aE(e.object.property,"env")?null:se.isIdentifier(e.property)?e.property.name:se.isStringLiteral(e.property)?e.property.value:null}function aE(e,t){return se.isIdentifier(e)&&e.name===t}function ct(e){if(se.isIdentifier(e))return e.name;if(se.isMemberExpression(e)){let t=ct(e.object),n=se.isIdentifier(e.property)?e.property.name:se.isStringLiteral(e.property)?e.property.value:null;if(t&&n)return`${t}.${n}`}return null}var cE=new Set(["list","listStrict","get","getStrict","getByUrl","getByUrlStrict","schema","categories"]),lE=new Set(["getConfig","submit"]);function ud(e,t){let n=ct(e.callee);if(!n)return null;let r="cms.collections.";if(n.startsWith(r)){let i=n.slice(r.length);if(!cE.has(i))return null;let s=Ls(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(!lE.has(i))return null;let s=Ls(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=Ls(e,0)??"/cms/:path";return{sourceKind:"vcp-cms-collection",sourceType:"cms-field",operation:n,endpointPattern:i,confidence:i==="/cms/:path"?"partial":"safe-derived",evidence:[{file:t.file,symbol:n,reason:"VCP CMS fetch helper"}]}}return null}function dd(e,t){let n=ct(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 fd(e){let t=ct(e.callee);return typeof t=="string"&&t.startsWith("cms.field.")}function Ls(e,t){let n=e.arguments[t];return ld.isStringLiteral(n)?n.value:null}var Us=typeof Bs=="function"?Bs:Bs.default,CR=typeof js=="function"?js:js.default,dE={maxFunctionDepth:8,maxImportDepth:6},fE=new Set(["src","href","alt","poster","content","title","aria-label"]);async function xd(e){let t=e.fileCache??new Map,n=zs(e.file,e.source,t),r={file:e.file,analysis:n,readFile:e.readFile,exists:e.exists,fileCache:t,options:{...dE,...e.options},variableCache:new Map,functionDepth:0,importDepth:0,paramSources:new Map,resolvingVariables:new Set,resolvingComponentProps:new Set,scopeVariables:Fd(n,e.element.componentName)};await Ed(e.element.componentName,e.graph,r);let o=[];o.push(...await yE(e.element,e.graph,r));for(let s of e.element.textSegments){let a=await xE(s,e.element,e.graph,r);a&&o.push(Vs(a,"text","children"))}for(let s of e.element.attributes??[]){let a=gE(s);if(!a)continue;let c=await Id(s.source,e.element,e.graph,r);c&&o.push(Vs(c,a,s.name))}let i=ME(o).sort(Td);return{hasDynamicData:i.length>0,bindings:i}}async function Ed(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 Sd(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 d=await bd(l.sourceFile,n);if(!d)continue;let m=bo(d,n,{importDepth:n.importDepth+1});m.paramSources.clear(),m.scopeVariables=Fd(d,l.componentName),await Ed(l.componentName,t,m);let p=await pE(l,m);for(let[h,E]of p){if(!E)continue;let v=a.get(h)??[];v.push(E),a.set(h,v)}}finally{n.resolvingComponentProps.delete(u)}}}let c=new Map;for(let[l,u]of a){let d=wd(u);d.length===1&&c.set(l,d[0])}hE(o,c,n)}async function Sd(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 bd(e,r))?.imports.get(t);if(!s||!ut(s.source))return!1;let a=await Od(e,s.source,r.exists);return a?a===n?!0:Sd(a,s.importedName,n,r,o):!1}async function pE(e,t){let n=new Map;Us(t.analysis.ast,{JSXElement(o){if(mE(o.node,e.sourceRange)){for(let i of o.node.openingElement.attributes)!k.isJSXAttribute(i)||!k.isJSXIdentifier(i.name)||!k.isJSXExpressionContainer(i.value)||!k.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 ke(i,t);s&&r.set(o,s)}return r}function mE(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 bd(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 zs(e,r,t.fileCache)}function hE(e,t,n){if(k.isIdentifier(e)){t.size>0&&n.paramSources.set(e.name,Xs(Object.fromEntries(t),n.file));return}if(k.isObjectPattern(e))for(let r of e.properties){if(!k.isObjectProperty(r)||r.computed||!k.isIdentifier(r.key))continue;let o=t.get(r.key.name);if(!o)continue;let i=k.isAssignmentPattern(r.value)?r.value.left:r.value;k.isIdentifier(i)&&n.paramSources.set(i.name,ve(o))}}function gE(e){return e.name==="dangerouslySetInnerHTML"?"richtext":fE.has(e.name)?"attribute":null}async function yE(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 Ks(i.collectionSource,n);s&&r.push(Vs(Rn(s),"repeat-region",i.collectionExpression))}return r}async function xE(e,t,n,r){return Id(e.source,t,n,r)}async function Id(e,t,n,r){let o=await EE(e,t,n,r);return o||Ks(e,r)}async function EE(e,t,n,r){if(!e)return null;let o=SE(e.base,t,n);if(!o)return null;let i=await Ks(o.collectionSource,r);return i?ar(i,e.path,!0):null}function SE(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 Ks(e,t){if(!e)return null;let n=await kd(e.base,t);return n?ar(n,e.path,!1):null}async function kd(e,t){let n=t.paramSources.get(e);if(n)return ve(n);if(t.variableCache.has(e))return _E(t.variableCache.get(e)??null);if(t.resolvingVariables.has(e))return null;t.resolvingVariables.add(e);let r=await bE(e,t);if(r)return t.variableCache.set(e,ve(r)),t.resolvingVariables.delete(e),r;let o=t.scopeVariables?.get(e)??t.analysis.variables.get(e);if(o){let s=await ke(o,t);return t.variableCache.set(e,s?ve(s):null),t.resolvingVariables.delete(e),s}let i=t.analysis.imports.get(e);if(i&&t.importDepth<t.options.maxImportDepth){let s=await Md(i,t);if(s){let a=bo(s,t,{importDepth:t.importDepth+1}),c=_d(i,s);if(c){let d=(await Zt(c,[],a)).returnSource;return t.variableCache.set(e,d?ve(d):null),t.resolvingVariables.delete(e),d}let l=s.variables.get(i.importedName);if(l){let u=await ke(l,a);return t.variableCache.set(e,u?ve(u):null),t.resolvingVariables.delete(e),u}}}return t.variableCache.set(e,null),t.resolvingVariables.delete(e),null}async function bE(e,t){let n=t.analysis.stateSetters.get(e);if(!n)return null;let r=[];Us(t.analysis.ast,{CallExpression(o){if(k.isIdentifier(o.node.callee,{name:n})){let i=o.node.arguments[0];k.isExpression(i)&&r.push(i);return}o.node.arguments.some(i=>k.isIdentifier(i)&&i.name===n)&&r.push(o.node)}});for(let o of r){let i=await ke(o,t);if(i)return i}return null}async function ke(e,t){if(k.isIdentifier(e))return kd(e.name,t);if(k.isMemberExpression(e)||k.isOptionalMemberExpression(e)){let n=k.isMemberExpression(e)?dd(e,{file:t.file}):null;if(n)return Pd(n);let r=await IE(e,t);if(!r)return null;let o=NE(e);return ar(r,o,!1)}if(k.isAwaitExpression(e))return k.isExpression(e.argument)?ke(e.argument,t):null;if(k.isCallExpression(e))return Cd(e,t);if(k.isObjectExpression(e)){let n=await vd(e,t);return Object.keys(n).length>0?Xs(n,t.file):null}if(k.isConditionalExpression(e)){let n=await ke(e.consequent,t),r=await ke(e.alternate,t);return sr(md(n,r))}if(k.isLogicalExpression(e)){let n=await ke(e.left,t),r=await ke(e.right,t);return sr(md(n,r))}return k.isTSAsExpression(e)||k.isTSSatisfiesExpression(e)||k.isTSNonNullExpression(e)||k.isTypeCastExpression(e)||k.isParenthesizedExpression(e)?ke(e.expression,t):null}async function IE(e,t){let n=e;for(;k.isMemberExpression(n)||k.isOptionalMemberExpression(n);)n=n.object;return k.isExpression(n)?ke(n,t):null}async function Cd(e,t){let n=ud(e,{file:t.file});if(n)return Pd(n);if(fd(e)){let d=e.arguments[0];if(d&&k.isExpression(d))return sr(await ke(d,t))}let r=await kE(e,t);if(r)return r;let o=ad(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 RE(e,t);if(i)return i;let s=await PE(e,t);if(s)return s;let a=await wE(e,t);if(a)return a;let c=await AE(e,t);if(c)return c;let l=[];for(let d of e.arguments)if(k.isExpression(d)){let m=await ke(d,t);m&&l.push(m)}let u=wd(l);return u.length===1?sr(u[0]):null}async function kE(e,t){let n=ct(e.callee);if(n!=="useQuery"&&n!=="useSuspenseQuery"&&n!=="useInfiniteQuery"&&n!=="useSWR")return null;if(n==="useSWR"){let i=vE(e.arguments[0],t.file,"SWR key"),s=e.arguments[1];if(k.isIdentifier(s)){let a=await ir(s.name,t);if(a)return(await Zt(a.node,i?[i]:[],a.context)).returnSource??i}return i}let r=e.arguments[0];if(!k.isObjectExpression(r))return Eo(t.file,`${n} without static options`);let o=CE(r,"queryFn");if(!o)return Eo(t.file,`${n} without queryFn`);if(k.isIdentifier(o)){let i=await ir(o.name,t);return i?(await Zt(i.node,[],i.context)).returnSource:Eo(t.file,`${n} queryFn unresolved`)}return k.isArrowFunctionExpression(o)||k.isFunctionExpression(o)?(await Zt(o,[],t)).returnSource:k.isCallExpression(o)?Cd(o,t):null}function CE(e,t){for(let n of e.properties){if(!k.isObjectProperty(n)||!k.isExpression(n.value))continue;if(Rd(n)===t)return n.value}return null}function vE(e,t,n){return k.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 RE(e,t){if(!k.isMemberExpression(e.callee)||!k.isIdentifier(e.callee.property))return null;let n=e.callee.property.name;if(!["map","filter","slice","sort","toSorted"].includes(n))return null;let r=k.isExpression(e.callee.object)?await ke(e.callee.object,t):null;if(!r)return null;if(n!=="map")return Rn(r);let o=e.arguments[0];if(k.isIdentifier(o)){let i=await ir(o.name,t);if(!i)return Rn(r);let s=await Zt(i.node,[r],i.context);return{...Rn(r),...s.objectReturnMap??s.returnSource?.fieldMap?{fieldMap:s.objectReturnMap??s.returnSource.fieldMap}:{}}}if(k.isArrowFunctionExpression(o)||k.isFunctionExpression(o)){let i=await Zt(o,[r],t);return{...Rn(r),...i.objectReturnMap??i.returnSource?.fieldMap?{fieldMap:i.objectReturnMap??i.returnSource.fieldMap}:{}}}return Rn(r)}async function PE(e,t){return!k.isMemberExpression(e.callee)||!k.isIdentifier(e.callee.property,{name:"json"})||!k.isExpression(e.callee.object)?null:ke(e.callee.object,t)}async function wE(e,t){return!k.isMemberExpression(e.callee)||!k.isIdentifier(e.callee.property,{name:"then"})||!k.isExpression(e.callee.object)?null:sr(await ke(e.callee.object,t))}async function AE(e,t){if(!k.isIdentifier(e.callee))return null;let n=await ir(e.callee.name,t);if(!n)return null;let r=[];for(let i of e.arguments){if(!k.isExpression(i)){r.push(Eo(t.file,`unsupported argument for ${e.callee.name}`));continue}let s=await ke(i,t);r.push(s)}return(await Zt(n.node,r,n.context)).returnSource}async function ir(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 Md(r,t);if(!o)return null;let i=bo(o,t,{importDepth:t.importDepth+1}),s=_d(r,o);return s?{node:s,context:i}:ir(r.importedName,i)}async function Zt(e,t,n){if(n.functionDepth>=n.options.maxFunctionDepth)return{returnSource:null};let r=bo(n.analysis,n,{functionDepth:n.functionDepth+1});r.scopeVariables=n.analysis.functionVariables.get(e),e.params.forEach((c,l)=>{let u=t[l];u&&$s(c,FE(u),r)});let o=TE(e),i=null,s,a=!1;for(let c of o){if(k.isObjectExpression(c)){s={...s??{},...await vd(c,r)},i=i??Xs(s,n.file);continue}let l=await ke(c,r);if(l){if(!i){i=l;continue}let u=Js(i,l);if(!u){a=!0,i=null;continue}i=u}}return{returnSource:a?null:i,...s?{objectReturnMap:s}:{}}}function $s(e,t,n){if(k.isIdentifier(e)){n.paramSources.set(e.name,ve(t));return}if(k.isAssignmentPattern(e)){$s(e.left,t,n);return}if(k.isObjectPattern(e))for(let r of e.properties){if(!k.isObjectProperty(r)||r.computed||!k.isIdentifier(r.key))continue;let o=ar(t,[{kind:"property",name:r.key.name}],!0),i=k.isAssignmentPattern(r.value)?r.value.left:r.value;$s(i,o,n)}}function TE(e){if(k.isArrowFunctionExpression(e)&&k.isExpression(e.body))return[e.body];let t=[],n=e.body;if(!k.isBlockStatement(n))return t;let r=o=>{if(k.isFunction(o)&&o!==e)return;if(k.isReturnStatement(o)){o.argument&&k.isExpression(o.argument)&&t.push(o.argument);return}let i=k.VISITOR_KEYS[o.type];for(let s of i??[]){let a=o[s];if(Array.isArray(a))for(let c of a)k.isNode(c)&&r(c);else k.isNode(a)&&r(a)}};return r(n),t}async function vd(e,t){let n={};for(let r of e.properties){if(!k.isObjectProperty(r))continue;let o=Rd(r);if(!o||!k.isExpression(r.value))continue;let i=await ke(r.value,t);i&&(n[o]=i)}return n}function Rd(e){return k.isIdentifier(e.key)&&!e.computed?e.key.name:k.isStringLiteral(e.key)?e.key.value:null}function NE(e){let t=[],n=e;for(;k.isMemberExpression(n)||k.isOptionalMemberExpression(n);){let r=n.property;n.computed?k.isStringLiteral(r)?t.unshift({kind:"property",name:r.value}):k.isNumericLiteral(r)&&t.unshift({kind:"index",index:r.value}):k.isIdentifier(r)&&t.unshift({kind:"property",name:r.name}),n=n.object}return k.isIdentifier(n),t}function ar(e,t,n){if(t.length===0)return ve(e);let r=t[0];if(r?.kind==="property"&&e.fieldMap?.[r.name])return ar(e.fieldMap[r.name],t.slice(1),n);let o=ve(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=or(o.valuePath,"data.items[]"),o.cmsFieldRoot=!1,o):i[0]==="fields"?(o.fieldPath=or(o.fieldPath,i.slice(1).join(".")),o.cmsFieldRoot=!0,o):o.cmsFieldRoot||n||o.fieldMap?(o.fieldPath=or(o.fieldPath,i.join(".")),o):(o.valuePath=or(o.valuePath,pd(t)),o)}return o.valuePath=or(o.valuePath,pd(t)),o}function pd(e){return e.map(t=>t.kind==="property"?t.name:`[${t.index}]`).join(".").replace(/\.\[/g,"[")}function or(e,t){return t?e?t.startsWith("[")?`${e}${t}`:`${e}.${t}`:t:e}function Pd(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 Rn(e){let t=ve(e);return t.sourceType==="cms-field"&&!t.valuePath&&(t.valuePath="items[]"),t}function FE(e){let t=ve(e);return t.valuePath=void 0,t.sourceType==="cms-field"&&(t.cmsFieldRoot=!1),t}function sr(e){return e?{...ve(e),confidence:e.confidence==="unknown"?"unknown":"safe-derived",evidence:[...e.evidence,{file:e.evidence[0]?.file??"unknown",reason:"safe derived expression"}]}:null}function md(e,t){return e?t?Js(e,t):ve(e):t?ve(t):null}function Js(e,t){if(So(e)!==So(t))return null;let n=Nd(e.confidence,t.confidence)<=0?e.confidence:t.confidence;return{...e,confidence:n,evidence:[...e.evidence,...t.evidence]}}function wd(e){let t=new Map;for(let n of e){let r=So(n),o=t.get(r);t.set(r,o?Js(o,n):ve(n))}return[...t.values()]}function So(e){let t=e.fieldMap?Object.fromEntries(Object.entries(e.fieldMap).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,So(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 Xs(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 Eo(e,t){return{sourceKind:"unknown-api",sourceType:"api-field",confidence:"unknown",readonly:!0,evidence:[{file:e,reason:t}]}}function Vs(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 Ad(e){let t=[...e].sort(Td),n=t[0];return{hasDynamicData:t.length>0,sourceKinds:[...new Set(t.map(r=>r.sourceKind))],...n?.endpointPattern?{primaryEndpoint:n.endpointPattern}:{},...n?.collection?{primaryCollection:n.collection}:{},...n?.fieldPath?{primaryFieldPath:n.fieldPath}:{}}}function ME(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 Td(e,t){return hd(e.targetKind)-hd(t.targetKind)||Nd(e.confidence,t.confidence)||gd(e.sourceKind)-gd(t.sourceKind)||e.targetName.localeCompare(t.targetName)}function hd(e){return{"repeat-region":0,text:1,richtext:2,attribute:3,"component-prop":4}[e]}function gd(e){return e.startsWith("vcp-cms-")?0:e==="site-api-route"?1:e==="external-api"?2:3}function Nd(e,t){let n={exact:0,"safe-derived":1,partial:2,unknown:3};return n[e]-n[t]}function zs(e,t,n){let r=n.get(e);if(r?.source===t)return r;let o=uE(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 Us(o,{ImportDeclaration(s){let a=s.node.source.value;for(let c of s.node.specifiers)k.isImportSpecifier(c)&&k.isIdentifier(c.local)?i.imports.set(c.local.name,{source:a,importedName:k.isIdentifier(c.imported)?c.imported.name:c.imported.value,localName:c.local.name,isDefault:!1}):k.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&&(k.isFunctionDeclaration(a.node)||k.isFunctionExpression(a.node)||k.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 Pn(s.node.id))l.set(u,k.isExpression(s.node.init)?s.node.init:null);if(k.isArrayPattern(s.node.id)&&k.isCallExpression(s.node.init)&&ct(s.node.init.callee)==="useState"){let[u,d]=s.node.id.elements;k.isIdentifier(u)&&k.isIdentifier(d)&&i.stateSetters.set(u.name,d.name)}k.isIdentifier(s.node.id)&&yd(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(!k.isExportSpecifier(l))continue;let u=k.isIdentifier(l.exported)?l.exported.name:l.exported.value,d=l.local.name;i.imports.set(u,{source:c,importedName:d,localName:u,isDefault:d==="default"})}if(k.isFunctionDeclaration(a)&&a.id?.name&&i.functions.set(a.id.name,a),k.isVariableDeclaration(a))for(let l of a.declarations)k.isIdentifier(l.id)&&yd(l.init)&&i.functions.set(l.id.name,l.init)},ExportDefaultDeclaration(s){let a=s.node.declaration;if((k.isFunctionDeclaration(a)||k.isFunctionExpression(a)||k.isArrowFunctionExpression(a))&&i.functions.set("default",a),k.isIdentifier(a)){let c=i.functions.get(a.name);c&&i.functions.set("default",c)}}}),n.set(e,i),i}function Pn(e){return!e||k.isVoidPattern(e)?[]:k.isIdentifier(e)?[e.name]:k.isObjectPattern(e)?e.properties.flatMap(t=>k.isObjectProperty(t)?Pn(t.value):Pn(t.argument)):k.isArrayPattern(e)?e.elements.flatMap(t=>t?Pn(k.isRestElement(t)?t.argument:t):[]):k.isAssignmentPattern(e)?Pn(e.left):k.isRestElement(e)?Pn(e.argument):[]}function yd(e){return k.isFunctionExpression(e)||k.isArrowFunctionExpression(e)}function Fd(e,t){let n=e.functions.get(t)??e.functions.get("default");return n?e.functionVariables.get(n):void 0}async function Md(e,t){let n=await Od(t.file,e.source,t.exists);if(!n)return null;let r=await t.readFile(n);return zs(n,r,t.fileCache)}function _d(e,t){return e.isDefault?t.functions.get("default")??t.functions.get(e.localName)??null:t.functions.get(e.importedName)??null}async function Od(e,t,n){return ut(t)?an(e,t,n):null}function bo(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 _E(e){return e?ve(e):null}function ve(e){return{...e,evidence:e.evidence.map(t=>({...t})),...e.fieldMap?{fieldMap:Object.fromEntries(Object.entries(e.fieldMap).map(([t,n])=>[t,ve(n)]))}:{}}}var OE=50,DE=8*1024*1024;function Bd(e,t={}){let n=[],r=[],o=t.externalAdapters??[],i=Math.max(0,t.maxUndoEntries??OE),s=Math.max(0,t.maxUndoBytes??DE);return{prepareRewritePlan:a,execute:c,executeFilePlan:l,undo:u,redo:d};async function a(A){let M=[...A.steps].sort((W,Q)=>W.order-Q.order),O=M.filter(W=>W.type!=="invoke-external-adapter");if(O.length!==M.length)return{ok:!1,errorCode:"unsupported-operation",reason:"External adapter writes require a transactional prepare/commit/rollback contract."};let j=new Set(O.map(W=>W.file)),ee=await R(j),G=new Map(ee.map(W=>[W.file,W.exists===!1?"":W.content])),xe;for(let W of O){let Q=jd(W,G.get(W.file)??"");if(!Q.ok)return{ok:!1,errorCode:Q.errorCode,reason:Q.reason};G.set(W.file,Q.source),xe=Q.selectionRef??xe}return{ok:!0,filePlan:{operationId:A.operationId,kind:"source-edit",target:A.target,documentVersion:A.documentVersion,conflictPolicy:"compare-and-swap",edits:[...G].map(([W,Q])=>({operation:"upsert",file:W,content:Q,baseContentHash:ee.find(ge=>ge.file===W)?.sha256??null}))},...xe?{selectionRef:xe}:{}}}async function c(A){let M=[...A.steps].sort((ge,xt)=>ge.order-xt.order),O=M.filter(ge=>ge.type!=="invoke-external-adapter"),j=M.filter(ge=>ge.type==="invoke-external-adapter"),ee=new Set(O.map(ge=>ge.file));if(O.length>0&&j.length>0)return{ok:!1,operationId:A.operationId,errorCode:"unsupported-operation",reason:"Mixed local file rewrites and external adapter writes require an explicit compensation contract.",rolledBack:!1};if(O.length===0)return v(A,j);let G=await R(ee),xe=new Map;for(let ge of G)xe.set(ge.file,ge.exists===!1?"":ge.content);let W;for(let ge of O){let xt=xe.get(ge.file)??"",lt=jd(ge,xt);if(!lt.ok)return{ok:!1,operationId:A.operationId,errorCode:lt.errorCode,reason:lt.reason,rolledBack:!1};xe.set(ge.file,lt.source),lt.selectionRef&&(W=lt.selectionRef)}let Q=await z([...xe].map(([ge,xt])=>({file:ge,content:xt,exists:!0,version:0,sha256:ce(xt)})),G);return Q.ok===!1?{ok:!1,operationId:A.operationId,errorCode:Q.rolledBack?"writeback-failed":"rollback-failed",reason:Q.reason,rolledBack:Q.rolledBack}:(n.push({operationId:A.operationId,preSnapshots:G,postSnapshots:Q.snapshots,plan:A}),m(),r.length=0,{ok:!0,operationId:A.operationId,kind:A.kind,target:A.target,resultVersion:Math.max(...Q.snapshots.map(ge=>ge.version)),affectedFiles:[...ee],...W?{selectionRef:W}:{}})}async function l(A){let M=new Set(A.edits.map(Q=>Q.file)),O=await R(M),j=C(A,O);if(j)return{ok:!1,operationId:A.operationId,errorCode:"stale-version",reason:j.reason,affectedFiles:[j.file],rolledBack:!1};let ee=new Map(O.map(Q=>[Q.file,Q])),G=A.edits.find(Q=>Q.operation==="create-only"&&ee.get(Q.file)?.exists!==!1);if(G)return{ok:!1,operationId:A.operationId,errorCode:"stale-version",reason:`MATERIALIZATION_INSTANCE_CONFLICT: create-only target already exists: ${G.file}`,affectedFiles:[G.file],rolledBack:!1};let xe=A.edits.map(Q=>Q.operation==="delete"?{file:Q.file,content:"",exists:!1,version:0}:{file:Q.file,content:Q.content,exists:!0,version:0,sha256:ce(Q.content)}),W=await z(xe,O,new Set(A.edits.filter(Q=>Q.operation==="create-only").map(Q=>Q.file)));return W.ok===!1?{ok:!1,operationId:A.operationId,errorCode:W.rolledBack?"writeback-failed":"rollback-failed",reason:W.reason,rolledBack:W.rolledBack}:(n.push({operationId:A.operationId,preSnapshots:O,postSnapshots:W.snapshots,plan:{operationId:A.operationId,kind:A.kind,target:A.target,documentVersion:A.documentVersion,steps:[],preSnapshots:O}}),m(),r.length=0,{ok:!0,operationId:A.operationId,kind:A.kind,target:A.target,resultVersion:Math.max(...W.snapshots.map(Q=>Q.version)),affectedFiles:[...M]})}async function u(){let A=n.at(-1);if(!A)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to undo"};let M=await z(A.preSnapshots,A.postSnapshots);return M.ok===!1?{ok:!1,operationId:A.operationId,errorCode:M.rolledBack?"writeback-failed":"rollback-failed",reason:M.reason,rolledBack:M.rolledBack}:(n.pop(),r.push(A),{ok:!0,operationId:A.operationId,kind:A.plan.kind,target:A.plan.target,resultVersion:Math.max(...M.snapshots.map(O=>O.version)),affectedFiles:A.preSnapshots.map(O=>O.file)})}async function d(){let A=r.at(-1);if(!A)return{ok:!1,operationId:"",errorCode:"unknown",reason:"Nothing to redo"};let M=await z(A.postSnapshots,A.preSnapshots);return M.ok===!1?{ok:!1,operationId:A.operationId,errorCode:M.rolledBack?"writeback-failed":"rollback-failed",reason:M.reason,rolledBack:M.rolledBack}:(r.pop(),n.push(A),m(),{ok:!0,operationId:A.operationId,kind:A.plan.kind,target:A.plan.target,resultVersion:Math.max(...M.snapshots.map(O=>O.version)),affectedFiles:A.postSnapshots.map(O=>O.file)})}function m(){for(;n.length>i;)n.shift();for(;n.length>0&&p()>s;)n.shift()}function p(){return n.reduce((A,M)=>A+h(M),0)}function h(A){return E(A.preSnapshots)+E(A.postSnapshots)}function E(A){return A.reduce((M,O)=>M+O.file.length+O.content.length,0)}async function v(A,M){let O=[];for(let j of M){let ee=j.capability??"write-text",G=o.find(W=>W.sourceType===j.sourceType&&(j.adapterId===void 0||W.adapterId===j.adapterId)&&(W.capabilities===void 0||W.capabilities.includes(ee)));if(!G)return{ok:!1,operationId:A.operationId,errorCode:"unsupported-operation",reason:`No external adapter registered for ${j.sourceType}`,rolledBack:!1};let xe=await G.execute(j);if(!xe.ok)return{ok:!1,operationId:A.operationId,errorCode:"writeback-failed",reason:xe.reason??`External adapter failed for ${j.sourceType}`,rolledBack:!1};O.push(j.file)}return{ok:!0,operationId:A.operationId,kind:A.kind,target:A.target,resultVersion:0,affectedFiles:O}}function C(A,M){if(A.conflictPolicy!=="compare-and-swap")return null;let O=new Map(M.map(j=>[j.file,j]));for(let j of A.edits){if(j.operation==="create-only")continue;if(j.baseContentHash===void 0)return{file:j.file,reason:`Source file ${j.file} is missing baseContentHash. Reopen the file before saving.`};let ee=O.get(j.file),G=j.baseContentHash;if(G===null){if(ee?.exists!==!1)return{file:j.file,reason:`Source file ${j.file} was created or changed before save.`};continue}if(!G)return{file:j.file,reason:`Source file ${j.file} is missing baseContentHash. Reopen the file before saving.`};if(ee?.exists===!1||ee?.sha256!==G)return{file:j.file,reason:`Source file ${j.file} changed before save. Reload or explicitly overwrite the newer version.`}}return null}async function R(A){let M=[];for(let O of A)M.push(await w(O));return M}async function w(A){if(!await e.exists(A))return{file:A,content:"",version:0,exists:!1};let O=Math.max(1,e.getVersion(A)),j=await e.readFile(A);return{file:A,content:j,version:O,exists:!0,sha256:ce(j)}}async function z(A,M,O=new Set){let j=[];try{for(let ee of A){if(O.has(ee.file)){if(!e.createExclusive)throw new Error("Create-only write requires atomic exclusive-create support.");await e.createExclusive(ee.file,ee.content)}else await te(ee);let G=e.bumpVersion(ee.file);j.push(ee.file),ee.version=G}}catch(ee){let G=await le(M.filter(W=>j.includes(W.file)));if(G.ok===!1)return{ok:!1,reason:`Writeback failed, then rollback failed for ${G.failedFiles.join(", ")}: ${Ld(ee)}`,rolledBack:!1,instanceConflict:Dd(ee)};let xe=Dd(ee);return{ok:!1,reason:`${xe?"MATERIALIZATION_INSTANCE_CONFLICT: ":""}Writeback failed and committed files were restored: ${Ld(ee)}`,rolledBack:!0,instanceConflict:xe}}return{ok:!0,snapshots:A.map(LE)}}async function te(A){if(A.exists===!1){await e.deleteFile(A.file);return}await e.writeFile(A.file,A.content)}async function le(A){let M=[];for(let O of A)try{await te(O),e.bumpVersion(O.file)}catch{M.push(O.file)}return M.length===0?{ok:!0}:{ok:!1,failedFiles:M}}}function Dd(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}function LE(e){let t=e.exists!==!1;return{file:e.file,content:t?e.content:"",version:e.version,exists:t,...t?{sha256:ce(e.content)}:{}}}function Ld(e){return e instanceof Error?e.message:String(e)}function jd(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 Fe(xn({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-import":return Fe(En({source:t,moduleSpecifier:e.moduleSpecifier,imports:e.imports}));case"remove-node":return Fe(pn({source:t,locator:e.locator,removeWhitespace:e.removeWhitespace}));case"insert-child":return Fe(hn({source:t,locator:e.parentLocator,node:e.node,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"update-text":return Fe(Jr({source:t,locator:e.locator,segmentIndex:e.segmentIndex,newText:e.newText}));case"update-value":return Fe(Un({source:t,locator:e.locator,next:e.value}));case"update-array-item":return Fe(Un({source:t,locator:e.locator,next:e.value}));case"insert-bound-array-item":return Fe(Wr({source:t,locator:e.locator,index:e.index,value:e.value}));case"insert-jsx-expression-child":return Fe(Xr({source:t,locator:e.parentLocator,expression:e.expression,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"remove-bound-array-item":return Fe(Yr({source:t,locator:e.locator,index:e.index}));case"move-array-item":return Fe(Gr({source:t,locator:e.locator,fromIndex:e.fromIndex,toIndex:e.toIndex}));case"move-node":return Fe(yn({source:t,locator:e.locator,targetParentLocator:e.targetParentLocator,placement:e.placement,anchorLocator:e.anchorLocator,selectionContext:e.selectionContext}));case"move-repeat-template-child":return Fe(zr({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 jE(e,t);case"set-props":{let n=e;return Fe(Hr({source:t,locator:n.locator,props:n.props}))}default:return{ok:!1,reason:`Unknown step type: ${e.type}`,errorCode:"unknown"}}}function jE(e,t){let{request:n}=e;if(n.newAttrRaw!==null&&!Ol(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!==ce(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:_l({source:t,oldAttrRange:n.oldAttrRange,openingElementRange:n.openingElementRange,newAttrRaw:n.newAttrRaw})}}function Fe(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"}}}function $d(){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 BE}from"node:crypto";import Io from"node:fs/promises";import Hs from"node:path";import{setTimeout as $E}from"node:timers/promises";var VE={async mkdir(e,t){await Io.mkdir(e,t)},async writeFile(e,t,n){await Io.writeFile(e,t,n)},async rename(e,t){await Io.rename(e,t)},async rm(e,t){await Io.rm(e,t)}},UE=new Set(["EACCES","EBUSY","EPERM"]),KE=[10,20,40,80,160];async function JE(e,t,n){for(let r of KE)try{await e.rename(t,n);return}catch(o){if(!XE(o))throw o;await $E(r)}await e.rename(t,n)}function XE(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&UE.has(e.code)}async function ko(e,t,n=VE){let r=Hs.dirname(e),o=Hs.basename(e),i=Hs.join(r,`.${o}.${process.pid}.${BE()}.tmp`),s=!1;try{await n.mkdir(r,{recursive:!0}),await n.writeFile(i,t,"utf8"),await JE(n,i,e),s=!0}finally{if(!s)try{await n.rm(i,{force:!0})}catch{}}}import{randomBytes as iS}from"node:crypto";import yt from"node:path";import{parse as sS}from"@babel/parser";import aS from"@babel/traverse";import{COMPONENT_I18N_FILE_SUFFIX as vo,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as Ud,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as cS,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as lS,SiteEditMaterializationSchema as uS,parseComponentI18nResourcesJson as dS}from"@vcp-dev/contracts";var Vd=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\(/i,zE=/\b(?:bg-black|bg-white|text-white|text-black)(?:\b|\/)/g,HE=/\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,YE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*rgba?\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,GE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,ZE=/\b(?:color|backgroundColor|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*rgba?\([^)]+\)[^'"]*['"]/gi,QE=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*(?:oklch|lab|lch|hsla?)\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,qE=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*(?:oklch|lab|lch|hsla?)\([^)]+\)[^'"]*['"]/gi,eS=/\b(?:bg|text|border|ring|outline|decoration|divide|from|via|to|fill|stroke|shadow)-\[[^\]]*color-mix\([^\]]+\)[^\]]*\](?:\/\d+)?/gi,tS=/\b(?:color|backgroundColor|backgroundImage|background|borderColor|boxShadow|textShadow)\s*:\s*['"][^'"]*color-mix\([^'"]*['"]/gi,nS=/\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,rS=/var\(\s*--(?:_|private-|vcp-)[^)]+\)/gi,oS=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?|hwb|oklch|oklab|lab|lch|color)\s*\([^)]*\)/gi;function cr(e,t){let n=Co([...Je(e,HE),...Je(e,WE),...Je(e,YE),...Je(e,t.includeRgbBackgroundImage?GE:ZE),...t.includeExtendedColorFunctions?[...Je(e,QE),...Je(e,qE)]:[]]),r=Co([...Je(e,eS),...Je(e,tS)]).filter(o=>t.colorMixPolicy==="always"||Vd.test(o));return n.push(...r.filter(o=>!n.includes(o))),t.rejectTailwindPalette&&n.push(...Je(e,nS).filter(o=>!n.includes(o))),t.rejectAnyRawColorLiteral&&n.push(...Je(e,oS).filter(o=>!n.includes(o))),{hardCodedSurfaceHits:Co(Je(e,zE)),rawColorHits:n,privateTokenHits:t.rejectPrivateTokens?Co(Je(e,rS)):[]}}function Je(e,t){return e.match(new RegExp(t.source,t.flags))??[]}function Co(e){return[...new Set(e)]}var Gs="components/site/generated",Kd="{{$INSTANCE}}",Ro=5,fS=/^[a-z][a-z0-9-]{0,48}$/,pS=/^[a-f0-9]{8}$/,Jd=/\.tsx?$/,mS=/\.json$/,hS=/\.(?:tsx?|json)$/,gS=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,yS=["react","react/","next","next/","lucide-react","react-i18next","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],Ws=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),Ys=aS,xS=typeof Ys=="function"?Ys:Ys.default;function ES(e){let t=Array.isArray(e.manifest.files)?e.manifest.files:[];if(t.length>Ud)return{ok:!1,error:{code:"MATERIALIZATION_LIMIT_EXCEEDED",message:"Static prefab file count exceeds the reusable limit."}};let n=TS(t);if(n)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Static prefab resolves duplicate target path: ${n}`,path:n}};let r=uS.safeParse(e.manifest);if(!r.success)return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab manifest failed schema validation."}};let o=PS(e.generatedRoot);if(!o)return{ok:!1,error:{code:"MATERIALIZATION_PATH_INVALID",message:`Generated root must be ${Gs}.`,path:e.generatedRoot}};if(!Gd(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=Hd(r.data.files),s=Hd(e.controlledFiles);if(!NS(i,s))return{ok:!1,error:{code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Controlled file list must exactly match the manifest file templates."}};if(i.size>Ud)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>cS)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>lS?{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 SS(e){let t=ES(e);if(!t.ok)return t;let n=t.data.generatedRoot,r=Gd(e.manifest.instanceBaseName),o=Math.max(1,Math.min(Ro,e.maxAttempts??Ro));for(let i=0;i<o;i+=1){let s=wS(e.instanceNameGenerator?.()??iS(4).toString("hex"));if(!s)return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_INVALID",message:"Static prefab instance suffix must be 8 lowercase hex chars."}};let a=`${r}-${s}`,c=Qd(n,a),l=bS({manifest:e.manifest,generatedRoot:n,instanceName:a,instanceRoot:c,allowedExternalImports:e.allowedExternalImports??yS});if(!l.ok)return l;if(!await IS(e.exists,c,l.data.files))return{ok:!0,data:l.data}}return{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:"Unable to allocate a create-only static prefab instance after repeated conflicts."}}}async function Yd(e){let t=Math.max(1,Math.min(Ro,e.maxAttempts??Ro));for(let n=0;n<t;n+=1){let r=await SS({...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 bS(e){let t=[],n=new Set;for(let i of e.manifest.files){let s=Xd({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=Xd({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=kS(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 IS(e,t,n){if(await e(t))return!0;for(let r of n)if(await e(r.path))return!0;return!1}function Xd(e){if(e.pathTemplate.split(Kd).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(Kd,e.instanceName),n=AS(t);return n?Qd(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||!hS.test(n)||gS.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 kS(e,t,n,r,o){let i=new Set(e.map(d=>d.path)),s=new Map,a=new Map(e.map(d=>[d.path,new Set])),c=new Map;for(let d of e){if(mS.test(d.path)){if(d.path.endsWith(vo)){let h=dS(d.content);if(!h.success)return Qt("MATERIALIZATION_DATA_UNSUPPORTED",h.error.message,d.path);c.set(d.path,new Set)}else try{JSON.parse(d.content)}catch{return Qt("MATERIALIZATION_DATA_UNSUPPORTED","Static prefab JSON file must contain valid JSON.",d.path)}continue}let m;try{m=sS(d.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:d.path}}}let p=cr(d.content,{colorMixPolicy:"always",includeExtendedColorFunctions:!0,includeRgbBackgroundImage:!0,rejectAnyRawColorLiteral:!0,rejectPrivateTokens:!0,rejectTailwindPalette:!0});if(p.hardCodedSurfaceHits.length>0||p.rawColorHits.length>0||p.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:d.path}};s.set(d.path,m)}for(let d of e){if(!Jd.test(d.path))continue;let m=s.get(d.path),p=null;if(xS(m,{ImportDeclaration(h){let E=zd({importer:d.path,source:h.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});if(!E.allowed)p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab imports must resolve within the controlled instance or match the starter allowlist.",file:d.path},h.stop();else if(E.internalPath&&(a.get(d.path).add(E.internalPath),E.internalPath.endsWith(vo))){let v=CS({importer:d.path,imported:E.internalPath,source:h.node.source.value,ast:m});v.ok?c.get(E.internalPath).add(d.path):(p??=v.error,h.stop())}},ExportAllDeclaration(h){p??={code:"MATERIALIZATION_ENTRY_INVALID",message:"Static prefab files cannot use export-star declarations.",file:d.path},h.stop()},ExportNamedDeclaration(h){if(h.node.source){let E=zd({importer:d.path,source:h.node.source.value,instanceRoot:t,filePaths:i,allowedExternalImports:o});!E.allowed||!E.internalPath?(p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab re-exports must resolve within the controlled instance.",file:d.path},h.stop()):a.get(d.path).add(E.internalPath)}},CallExpression(h){if(h.node.callee.type==="Import"){p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use dynamic import().",file:d.path},h.stop();return}h.node.callee.type==="Identifier"&&h.node.callee.name==="require"&&(p??={code:"MATERIALIZATION_IMPORT_FORBIDDEN",message:"Static prefab files cannot use require().",file:d.path},h.stop())},NewExpression(h){h.node.callee.type==="Identifier"&&h.node.callee.name==="Function"&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot construct functions dynamically.",file:d.path},h.stop())},MetaProperty(h){h.node.meta.type==="Identifier"&&h.node.meta.name==="import"&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:"Static prefab files cannot use import.meta.",file:d.path},h.stop())},MemberExpression(h){let E=Wd(h.node);E&&Ws.has(E)&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${E}.`,file:d.path},h.stop())},OptionalMemberExpression(h){let E=Wd(h.node);E&&Ws.has(E)&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${E}.`,file:d.path},h.stop())},Identifier(h){h.isReferencedIdentifier()&&Ws.has(h.node.name)&&(p??={code:"MATERIALIZATION_DATA_UNSUPPORTED",message:`Static prefab files cannot depend on ${h.node.name}.`,file:d.path},h.stop())},JSXAttribute(h){h.node.name.type==="JSXIdentifier"&&h.node.name.name==="style"&&(p??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot use inline style attributes.",file:d.path},h.stop())},JSXOpeningElement(h){h.node.name.type==="JSXIdentifier"&&h.node.name.name.toLowerCase()==="style"&&(p??={code:"MATERIALIZATION_STYLE_FORBIDDEN",message:"Static prefab source cannot declare style elements.",file:d.path},h.stop())}}),p)return{ok:!1,error:p}}if(!Jd.test(n))return Qt("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must be a .ts/.tsx source module.",n);let l=s.get(n);if(!l)return Qt("MATERIALIZATION_ENTRY_INVALID","Static prefab entry must resolve to a controlled source file.",n);if(!vS(l,r))return Qt("MATERIALIZATION_EXPORT_MISSING","Static prefab entry does not declare the manifest export.",n);for(let[d,m]of c)if(m.size!==1)return Qt("MATERIALIZATION_IMPORT_FORBIDDEN","Each component .i18n.json file must have exactly one same-name Client Component static importer.",d);return RS(n,a).size!==e.length?Qt("MATERIALIZATION_ENTRY_INVALID","Every controlled source file must be reachable from the entry module.",n):{ok:!0,data:{kind:"static-prefab-materialization",instanceName:"",generatedRoot:Gs,instanceRoot:"",entry:{path:"",export:{kind:"default"}},files:[]}}}function zd(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=yt.posix.normalize(yt.posix.join(yt.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 CS(e){let t=yt.posix.dirname(e.importer),n=yt.posix.dirname(e.imported),r=yt.posix.basename(e.importer).replace(/\.tsx?$/,""),o=yt.posix.basename(e.imported).slice(0,-vo.length),i=`./${r}${vo}`;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 vS(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 RS(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 Qt(e,t,n){return{ok:!1,error:{code:e,message:t,...n?{file:n}:{}}}}function PS(e){let t=Zd(e);return t===Gs?t:null}function wS(e){let t=e.trim().toLowerCase();return pS.test(t)?t:null}function Gd(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 fS.test(t)?t:null}function Zd(e){if(!e||e.startsWith("/")||e.includes("\\"))return null;let t=yt.posix.normalize(e);return t==="."||t.startsWith("../")||t.includes("/../")||t.includes("//")?null:t}function AS(e){let t=Zd(e);return!t||t!==e?null:t}function Qd(...e){return yt.posix.join(...e)}function Hd(e){return new Set(e.map(t=>t.pathTemplate))}function TS(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 NS(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Wd(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{randomBytes as FS}from"node:crypto";import Po from"node:path";import{parse as sf}from"@babel/parser";import MS from"@babel/traverse";import*as af from"@babel/types";import{COMPONENT_I18N_FILE_SUFFIX as Qs,PageResourceArtifactSchema as _S,SITE_EDIT_MATERIALIZATION_MAX_FILE_COUNT as OS,SITE_EDIT_MATERIALIZATION_MAX_FILE_CONTENT_BYTES as DS,SITE_EDIT_MATERIALIZATION_MAX_TOTAL_CONTENT_BYTES as LS,parseComponentI18nResourcesJson as jS}from"@vcp-dev/contracts";var qs="{{$INSTANCE}}",BS=/\{\{\$PAGE_ROUTE:([a-zA-Z0-9][a-zA-Z0-9_-]*)\}\}/g,ea="components/site/generated",$S=/\.(?:tsx?|json)$/,VS=/(?:^|\/)(?:layout|provider|globals?|[^/]+\.config)\.tsx?$/i,US=["react","react/","next","next/","lucide-react","@/components/ui/","@/components/site/","@/lib/","@/hooks/"],KS=new Set(["document","eval","fetch","Function","globalThis","localStorage","location","module","navigator","process","require","sessionStorage","window","__dirname","__filename","exports"]),Zs=MS,JS=typeof Zs=="function"?Zs:Zs.default;async function ta(e){let t=_S.safeParse(e.artifact);if(!t.success)return me("Page resource artifact failed contract validation.");let n=t.data,r=e.randomHex??(()=>FS(4).toString("hex")),o=Math.max(1,Math.min(e.maxAttempts??5,5)),i=qS(r());if(!i)return me("Random instance suffix must be 8 lowercase hex chars.");let s=`${eb(n.resource_id)}-${i}`,a=new Map,c=[];for(let R of n.pages){let w=R.final_route.slice(1);a.set(R.template_page_id,R.final_route),c.push({template_page_id:R.template_page_id,title:R.title,final_route:R.final_route,route_file_path:`app/${w}/page.tsx`})}let l=[],u=new Set,d=new Set,m=new Map,p=new Map,h=[],E=new Set(n.pages.flatMap(R=>R.components.map(w=>w.component_id)));for(let R of n.components){if(!E.has(R.component_id))continue;let w=qd({materialization:R.materialization,packageInstanceId:s,routeByPage:a});if(!w.ok)return w;for(let z of w.files){let te=tf(z,u,l);if(te)return te}d.add(w.entry),p.set(w.entry,w.entryExport),m.set(R.component_id,w.entry)}for(let[R,w]of n.pages.entries()){let z=c[R],te=qd({materialization:w.materialization,packageInstanceId:s,routeByPage:a,pageEntryTarget:z.route_file_path});if(!te.ok)return te;for(let M of te.files){let O=tf(M,u,l);if(O)return O}d.add(te.entry),p.set(te.entry,te.entryExport),h.push({entry:te.entry,declaredComponentIds:new Set(w.components.map(M=>M.component_id))});let le=l.find(M=>M.file===z.route_file_path);if(!le)return me("Page materialization entry did not resolve to its final route file.",z.route_file_path);if(YS(le.content,z.route_file_path)!==z.final_route)return me(`Page ${w.template_page_id} requires a static PAGE_SEO.path equal to ${z.final_route}.`,z.route_file_path)}let v=zS(l,d,s,m,h,p);if(!v.ok)return v;for(let R of l)if(await e.exists(R.file))return!R.file.startsWith("app/")&&o>1?ta({...e,randomHex:r,maxAttempts:o-1}):{ok:!1,code:"MATERIALIZATION_CONFLICT",message:`Page resource create-only target already exists: ${R.file}`,path:R.file};let C=HS(l);return C||(l.sort((R,w)=>R.file.localeCompare(w.file)),{ok:!0,packageInstanceId:s,pages:c,files:l})}function qd(e){let t=e.materialization.entry.pathTemplate,n=[];for(let o of e.materialization.files){let s=o.pathTemplate===t&&e.pageEntryTarget?e.pageEntryTarget:ef(o.pathTemplate,e.packageInstanceId);if(!s)return me("Materialization path cannot be mapped into the package namespace.",o.pathTemplate);let a=XS(o.content,e.packageInstanceId,e.routeByPage);if(!a.ok)return a;n.push({operation:"create-only",file:s,content:a.data})}let r=e.pageEntryTarget??ef(t,e.packageInstanceId);return!r||!n.some(o=>o.file===r)?me("Materialization entry must match one controlled source file.",t):{ok:!0,files:n,entry:r,entryExport:e.materialization.entry.export}}function XS(e,t,n){let r,o=e.replace(BS,(s,a)=>{let c=n.get(a);return c||(r=a,s)});if(r)return me(`Page route placeholder references unknown template page: ${r}`);let i=o.replaceAll(qs,t);return i.includes("{{$PAGE_ROUTE:")||i.includes("{{$INSTANCE}}")?me("Materialization contains an unresolved placeholder."):{ok:!0,data:i}}function ef(e,t){let n=`${ea}/${t}`;if(e.split(qs).length>2)return null;let o=e.replace(qs,t),i=`${ea}/${t}/`,s=o.startsWith(i)?o:`${n}/${o}`,a=Po.posix.normalize(s);return a!==s||!a.startsWith(`${n}/`)||!$S.test(a)||VS.test(a)?null:a}function tf(e,t,n){return t.has(e.file)?me(`Page resource materializations resolve duplicate target: ${e.file}`,e.file):(t.add(e.file),n.push(e),null)}function zS(e,t,n,r,o,i){let s=new Set(e.map(p=>p.file)),a=`${ea}/${n}`,c=new Map(e.map(p=>[p.file,new Set])),l=new Map;for(let p of e){if(p.file.endsWith(".json")){try{JSON.parse(p.content)}catch{return me("Materialization JSON file must contain valid JSON.",p.file)}if(p.file.endsWith(Qs)&&!jS(p.content).success)return me("Materialization component i18n resources are invalid.",p.file);continue}try{let E=sf(p.content,{sourceType:"module",plugins:["jsx","typescript"]});l.set(p.file,E);for(let C of E.program.body)if((C.type==="ImportDeclaration"||C.type==="ExportAllDeclaration"||C.type==="ExportNamedDeclaration"&&C.source)&&C.source){let R=C.source.value,w=ZS(p.file,R,s,a);if(!w.allowed)return me(`Materialization import is outside the controlled package: ${R}`,p.file);w.internalPath&&c.get(p.file).add(w.internalPath)}let v;if(JS(E,{Identifier(C){C.isReferencedIdentifier()&&KS.has(C.node.name)&&(v??=C.node.name,C.stop())},JSXAttribute(C){C.node.name.type==="JSXIdentifier"&&C.node.name.name==="style"&&(v??="inline style",C.stop())},JSXOpeningElement(C){C.node.name.type==="JSXIdentifier"&&C.node.name.name.toLowerCase()==="style"&&(v??="style element",C.stop())}}),v)return me(`Materialization source uses forbidden capability: ${v}`,p.file)}catch{return me("Materialization source must parse as TS/TSX.",p.file)}let h=cr(p.content,{colorMixPolicy:"always",includeExtendedColorFunctions:!0,includeRgbBackgroundImage:!0,rejectAnyRawColorLiteral:!0,rejectPrivateTokens:!0,rejectTailwindPalette:!0});if(h.hardCodedSurfaceHits.length>0||h.rawColorHits.length>0||h.privateTokenHits.length>0)return me("Materialization source violates the public theme token policy.",p.file)}if([...t].some(p=>!s.has(p)))return me("Materialization entry is outside the controlled package.");for(let p of t)if(p.endsWith(".json"))return me("Materialization JSON files cannot be package entries.");for(let[p,h]of i){let E=l.get(p);if(!E||!WS(E,h))return me("Materialization entry does not declare its contracted export.",p)}let u=new Map([...r].map(([p,h])=>[h,p]));for(let p of o){let h=of(p.entry,c);for(let E of p.declaredComponentIds){let v=r.get(E);if(!v||!h.has(v))return me(`Page entry does not reach declared component: ${E}`,p.entry)}for(let E of h){let v=u.get(E);if(v&&!p.declaredComponentIds.has(v))return me(`Page entry imports undeclared component: ${v}`,p.entry)}}let d=new Set;for(let p of t)for(let h of of(p,c))d.add(h);if(d.size!==e.length)return me("Every materialization file must be reachable from a package entry.");let m=QS(e,l,c);return m||{ok:!0}}function HS(e){if(e.length>OS)return me("Page resource exceeds the aggregate source file limit.");let t=0;for(let n of e){let r=Buffer.byteLength(n.content,"utf8");if(r>DS)return me("Page resource file exceeds the content byte limit.",n.file);t+=r}return t>LS?me("Page resource exceeds the aggregate content byte limit."):null}function WS(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 YS(e,t){let n;try{n=sf(e,{sourceType:"module",sourceFilename:t,plugins:["jsx","typescript"]})}catch{return null}for(let r of n.program.body){let o=r.type==="VariableDeclaration"?r:r.type==="ExportNamedDeclaration"&&r.declaration?.type==="VariableDeclaration"?r.declaration:null;if(o)for(let i of o.declarations){if(i.id.type!=="Identifier"||i.id.name!=="PAGE_SEO")continue;let s=nf(i.init);if(s?.type!=="ObjectExpression")return null;for(let a of s.properties){if(a.type!=="ObjectProperty"||a.computed||!GS(a.key))continue;let c=nf(a.value);return c?.type==="StringLiteral"?c.value:c?.type==="TemplateLiteral"&&c.expressions.length===0?c.quasis[0]?.value.cooked??null:null}return null}}return null}function nf(e){let t=e;for(;t?.type==="TSAsExpression"||t?.type==="TSSatisfiesExpression"||t?.type==="TSNonNullExpression";)t=t.expression;return t&&af.isExpression(t)?t:null}function GS(e){return e.type==="Identifier"&&e.name==="path"||e.type==="StringLiteral"&&e.value==="path"}function ZS(e,t,n,r){if(t.startsWith(`@/${r}/`)){let s=t.slice(2),a=rf(s,n);return a?{allowed:!0,internalPath:a}:{allowed:!1}}if(!t.startsWith("."))return{allowed:US.some(s=>s.endsWith("/")?t.startsWith(s):t===s)};if(t.includes("\\")||t.includes("\0"))return{allowed:!1};let o=Po.posix.normalize(Po.posix.join(Po.posix.dirname(e),t)),i=rf(o,n);return i&&(i.startsWith(`${r}/`)||i.startsWith("app/"))?{allowed:!0,internalPath:i}:{allowed:!1}}function rf(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 QS(e,t,n){let r=new Set(e.map(o=>o.file));for(let o of e){if(!o.file.endsWith(Qs))continue;let i=o.file.slice(0,-Qs.length),s=[`${i}.tsx`,`${i}.ts`].find(u=>r.has(u));if(!s)return me("Component i18n resources require a same-name TS/TSX companion.",o.file);let c=t.get(s)?.program.directives.some(u=>u.value.value==="use client"),l=[...n].filter(([,u])=>u.has(o.file));if(!c||l.length!==1||l[0]?.[0]!==s)return me("Component i18n resources must have exactly one same-name Client Component static importer.",s)}return null}function of(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 qS(e){return/^[a-f0-9]{8}$/.test(e)?e:null}function eb(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"page-resource"}function me(e,t){return{ok:!1,code:"MATERIALIZATION_REJECTED",message:e,...t?{path:t}:{}}}import{COMPONENT_I18N_FILE_SUFFIX as tb,parseComponentI18nResourcesJson as nb,resolveSiteTextDirection as rb,SiteLocaleSchema as ob}from"@vcp-dev/contracts";var ib=["i18next","react-i18next"],sb="components/ui/site-locale-provider.tsx",ab="components/ui/component-i18n-provider.tsx",cf="app/layout.tsx";async function ra(e){let t=e.files.filter(m=>m.path.endsWith(tb));if(t.length===0)return{ok:!0};for(let m of["package.json",cf,sb,ab])if(!await e.exists(m))return qt(`Target snapshot is missing required i18n host file: ${m}`);let n;try{n=JSON.parse(await e.readFile("package.json"))}catch{return qt("Target snapshot package.json is invalid.")}let r=lf(n)&&lf(n.dependencies)?n.dependencies:{},o=ib.filter(m=>typeof r[m]!="string"||r[m].trim().length===0);if(o.length>0)return qt(`Target snapshot must already declare: ${o.join(", ")}.`);let i=await e.readFile(cf),s=na(i,"html","lang"),a=na(i,"html","dir"),c=na(i,"SiteLocaleProvider","locale"),l=ob.safeParse(s);if(!l.success||!a||!c||s!==c||a!==rb(l.data))return qt("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 qt("Target snapshot root layout is not wired to SiteLocaleProvider.");let u=l.data,d=u.split("-")[0];for(let m of t){let p=nb(m.content);if(!p.success)return qt(`Component i18n resource is invalid: ${m.path}.`);if(!Object.hasOwn(p.data,u)&&!Object.hasOwn(p.data,d))return qt(`Component i18n resource ${m.path} has no locale for ${u} or ${d}.`)}return{ok:!0}}function na(e,t,n){let r=e.match(new RegExp(`<${t}\\b[^>]*>`))?.[0];if(!r)return null;let o=[...r.matchAll(new RegExp(`\\b${n}=(?:"([^"]+)"|\\{"([^"]+)"\\})`,"g"))];return o.length!==1?null:o[0]?.[1]??o[0]?.[2]??null}function lf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function qt(e){return{ok:!1,message:e}}function mf(e){let t=null,n=new WeakMap;async function r(){return t??=cb(e),t}return{async prepareAppend(o){let i=await e.readIndex(),s=await e.stageAppend(pf(o),{durableManifest:!1}),a;try{a=await e.previewStagedAppend(s.entryId,i.digest)}catch(l){throw await e.discardStage(s.stageId),l}let c={kind:"append",entry:o,historyTransition:a};return n.set(c,{expectedDigest:i.digest,stageId:s.stageId,entryId:s.entryId}),c},async prepareUndo(){let i=(await r()).undo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("undo entry is missing from index");let c=a-1,l=await e.previewCursor(c,s.digest),u={kind:"undo",entry:i,historyTransition:l};return n.set(u,{expectedDigest:s.digest,cursor:c}),u},async prepareRedo(){let i=(await r()).redo.at(-1);if(!i?.historyId)return null;let s=await e.readIndex(),a=s.entryIds.indexOf(i.historyId);if(a<0)throw new Error("redo entry is missing from index");let c=a,l=await e.previewCursor(c,s.digest),u={kind:"redo",entry:i,historyTransition:l};return n.set(u,{expectedDigest:s.digest,cursor:c}),u},async publishPrepared(o){let i=n.get(o);if(!i)throw new Error("history mutation was not prepared");let s=await r();if(o.kind==="append"){if(!i.entryId)throw new Error("staged entry id is missing");let a=await e.publishStagedAppend(i.entryId,i.expectedDigest,i.stageId);uf(a,o.historyTransition),o.entry.historyId=i.entryId,s.entryIds=[...a.entryIds],s.cursor=a.cursor,s.undo.push(o.entry),s.redo.length=0}else{if(i.cursor===void 0)throw new Error("prepared cursor is missing");let a=await e.setCursor(i.cursor,i.expectedDigest);if(uf(a,o.historyTransition),o.kind==="undo"){if(s.undo.at(-1)!==o.entry)throw new Error("undo state changed before publish");s.undo.pop(),s.redo.push(o.entry)}else{if(s.redo.at(-1)!==o.entry)throw new Error("redo state changed before publish");s.redo.pop(),s.undo.push(o.entry)}s.cursor=i.cursor}n.delete(o)},async discardPrepared(o){let i=n.get(o);if(!i)return;let s=o.historyTransition;if(s){let a=await e.readIndex();if(a.digest===s.publishedIndexDigest&&a.cursor===s.publishedCursor&&a.currentId===s.publishedCurrentId)throw new Error("cannot discard a history mutation whose index was published")}i.stageId&&await e.discardStage(i.stageId),n.delete(o)},async peekUndo(){return(await r()).undo.at(-1)??null},async pushUndo(o){let i=await r(),s=o;if(s.historyId){let l=i.entryIds.indexOf(s.historyId);if(l>=0)try{await e.setCursor(l),i.undo.push(o),i.cursor=l;return}catch(u){throw i.redo.push(o),u}}let a=await e.append(pf(o)),c=a.currentId;if(!c)throw new Error("history store did not publish an entry");o.historyId=c,i.entryIds=[...a.entryIds],i.cursor=a.cursor,i.undo.push(o),i.redo.length=0},async popUndo(){return(await r()).undo.pop()??null},async peekRedo(){return(await r()).redo.at(-1)??null},async pushRedo(o){let i=await r(),s=o;if(!s.historyId)throw i.undo.push(o),new Error("cannot move an unpersisted history entry to redo");let a=i.entryIds.indexOf(s.historyId);if(a<0)throw i.undo.push(o),new Error("history entry is missing from the durable index");try{await e.setCursor(a-1),i.cursor=a-1,i.redo.push(o)}catch(c){throw i.undo.push(o),c}},async popRedo(){return(await r()).redo.pop()??null},async clearRedo(){(await r()).redo.length=0},async getStatus(){let o=await e.readStatus();return{canUndo:o.canUndo,canRedo:o.canRedo,undoDepth:o.undoDepth,redoDepth:o.redoDepth,recoveryRequired:o.recoveryRequired}},async markRecoveryRequired(o){await e.markRecoveryRequired(o)}}}function uf(e,t){if(!t)throw new Error("durable history transition is missing");if(e.digest!==t.publishedIndexDigest||e.cursor!==t.publishedCursor||e.currentId!==t.publishedCurrentId)throw new Error("durable history published an unexpected index state")}async function cb(e){let t=await e.readIndex(),n=await Promise.all(t.undoIds.map(async o=>df(e,o))),r=await Promise.all(t.redoIds.map(async o=>df(e,o)));return{undo:n.reverse(),redo:r.reverse(),entryIds:[...t.entryIds],cursor:t.cursor}}async function df(e,t){let n=await e.readEntry(t),r=lb(n);return{historyId:t,operationId:r.operationId,kind:r.kind,target:r.target,...r.selectionRef?{selectionRef:r.selectionRef}:{},...r.output?{output:r.output}:{},preSnapshots:await ff(e,n,r.preSnapshots),postSnapshots:await ff(e,n,r.postSnapshots)}}async function ff(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(ub(r,o.blobName))).toString("utf8"):"";return{file:o.file,content:i,version:o.version,exists:o.exists,...o.sha256?{sha256:o.sha256}:{}}}))}function pf(e){let t=[],n=(o,i)=>o.map((s,a)=>{let c={file:s.file,exists:s.exists!==!1,version:s.version,...s.sha256?{sha256:s.sha256}:{}};if(c.exists){let l=`${i}-${a}`;c.blobName=l,t.push({name:l,data:s.content})}return c}),r={operationId:e.operationId,kind:e.kind,target:e.target,...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(r)),blobs:t}}function lb(e){if(!db(e.manifest))throw new Error("durable history manifest is not an object");return e.manifest}function ub(e,t){let n=e.get(t);if(!n)throw new Error(`durable history blob is missing: ${t}`);return n}function db(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import hf from"node:path";function ia(){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 yf(e,t,n){let r=[],o=new Set;for(let i of e.intents){let s=hb(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 wo(e){let t=()=>fb(e);return e.mutex?e.mutex.runExclusive(t):t()}async function fb(e){let t=await yf(e.plan,e.overlay,e.exists);if(!t.ok)return{ok:!1,stage:"precheck",reason:t.reason,error:t,recoveryRequired:!1};let n=pb(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 oa({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 oa({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 oa({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 gf("swap",l,"Live state swap failed after durable publish.")}try{await e.finalizeCandidate?.(c)}catch(l){return gf("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 pb(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 oa(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:mb(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 gf(e,t,n){return{ok:!1,stage:e,reason:n,error:t,recoveryRequired:!0}}function mb(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 hb(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)||hf.isAbsolute(e))return{ok:!1,code:"unsafe-path",path:e,reason:`Unsafe file path: ${e}`};let t=hf.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}}function sa(e,t){let n=new Map(e);for(let r of t)n.delete(r);return n}function wn(e,t){e.clear();for(let[n,r]of t)e.set(n,r)}function xf(e,t){for(let n of t){if(n.exists===!1){e.delete(n.file);continue}e.set(n.file,n.content)}}function aa(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 Ef(e){return{path:e.path,code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}}function gb(e){return e.map(t=>`${t.code} (${t.path}): ${t.message}`).join("; ")}var lr=class extends Error{constructor(t){let n=t.map(Ef);super(gb(n)),this.name="RouteBuildDiagnosticsError",this.diagnostics=n}};function Sf(e,t){let n=t instanceof Error&&t.message?t.message:String(t);return t instanceof lr?{routeId:e,message:n,diagnostics:t.diagnostics.map(Ef)}:{routeId:e,message:n}}function ca(e){return e.map(({routeId:t,message:n})=>`${t}: ${n}`).join("; ")}function bf(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 kb=/^(?:src\/)?app\/.*\/?page\.[cm]?[jt]sx?$/,Cb=["layout.tsx","layout.ts","layout.jsx","layout.js","layout.mjs","layout.cjs"],If=32,kf=256,Cf={maxEntries:50,maxBytes:8*1024*1024};function vb(){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 ko(t,n)},async deleteFile(t){await(await import("node:fs/promises")).rm(t,{force:!0})},async exists(t){let n=await import("node:fs/promises");try{return await n.access(t),!0}catch{return!1}},getVersion(t){return e.get(t)??1},bumpVersion(t){let n=(e.get(t)??1)+1;return e.set(t,n),n}}}function Rb(){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>Cf.maxEntries||Pb(e)>Cf.maxBytes;)e.shift()}}function Pb(e){return e.reduce((t,n)=>t+wb(n),0)}function wb(e){return vf(e.preSnapshots)+vf(e.postSnapshots)}function vf(e){return e.reduce((t,n)=>t+n.file.length+n.content.length,0)}function Rf(e,t){return{routeId:e,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}}function Ab(e){let t=new Map,n=new Map,r=new Map;for(let o of e.entries){t.set(o.key,o);let i=Xe(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}}var No=class extends Error{constructor(t){super(t.reason),this.result=t}},en=class extends Error{constructor(t){super(ca(t)),this.failedRoutes=t}};function Pf(e,t){if(!e)return;let n=[...t];if(n.some(o=>o?.entries.some(i=>i.key===e.key)))return e;let r=Xe(e.key)??e.key;for(let o of n){let i=o?.entries.find(s=>(Xe(s.key)??s.key)===r);if(i)return{...e,key:i.key}}return e}var Tb=/\.(?:[cm]?[jt]sx?)$/i,Nb=/\.json$/i,Fb=/\.(?:css|scss|sass)$/i,Mb=/\.mdx$/i,_b=/\.ya?ml$/i;function Ob(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 Db(e){return{kind:e.isProxy?"component-proxy":"jsx-node",file:e.file,componentName:e.componentName,isProxy:e.isProxy}}function Lb(e,t){let n=new Map;for(let r of t)n.set(r.path,r.operation==="delete"?{exists:!1}:{exists:!0,content:r.content});return{async readFile(r){let o=n.get(r);if(o){if(!o.exists)throw new Error(`Source file not found: ${r}`);return o.content}return e.readFile(r)},async writeFile(){throw new Error("Source edit preflight overlay is read-only.")},async deleteFile(){throw new Error("Source edit preflight overlay is read-only.")},async exists(r){let o=n.get(r);return o?o.exists:e.exists(r)},async getFileInfo(r){let o=n.get(r);return o?o.exists?{path:r,sizeBytes:Buffer.byteLength(o.content,"utf8")}:null:e.getFileInfo?.(r)??null},async listFiles(r={}){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let o=Bb(await e.listFiles(r)),i=new Map(o.files.map(a=>[a.path,a]));for(let[a,c]of n)if(jb(a,r.roots??[])){if(!c.exists){i.delete(a);continue}i.set(a,{path:a,sizeBytes:Buffer.byteLength(c.content,"utf8")})}let s=[...i.values()].sort((a,c)=>a.path.localeCompare(c.path));return o.truncated?{files:s,truncated:o.truncated}:s},getVersion(r){return e.getVersion(r)},bumpVersion(r){return e.getVersion(r)}}}function jb(e,t){return t.length===0?!0:t.some(n=>e===n||e.startsWith(`${n}/`))}function Bb(e){return Array.isArray(e)?{files:e}:e}function $b(e){if(!Eb(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!==bb||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=xb(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(Tb.test(e.path)){let t=it({source:e.content,profile:Bt({filePath:e.path,source:e.content})});if(!t.ok)return{ok:!1,errorCode:"ast-error",message:t.diagnostic.message,details:{path:e.path}}}if(Nb.test(e.path))try{JSON.parse(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`JSON parse failed: ${Me(t)}`,details:{path:e.path}}}if(Fb.test(e.path)){let t=wf({content:e.content,path:e.path,profile:"css"});if(!t.ok)return t}if(Mb.test(e.path)){let t=wf({content:e.content,path:e.path,profile:"mdx"});if(!t.ok)return t}if(_b.test(e.path))try{Ib(e.content)}catch(t){return{ok:!1,errorCode:"ast-error",message:`YAML parse failed: ${Me(t)}`,details:{path:e.path}}}return{ok:!0}}function wf({content:e,path:t,profile:n}){let r=[],o=null,i=!1,s=!1,a=!1,c=!1,l=!0;for(let d=0;d<e.length;d+=1){let m=e[d]??"",p=e[d+1]??"";if(n==="mdx"&&l&&e.startsWith("```",d)){c=!c;let h=e.indexOf(`
|
|
5
|
+
`,d);if(h===-1){l=!0;break}d=h,l=!0;continue}if(c){l=m===`
|
|
6
|
+
`||m==="\r";continue}if(s){m==="*"&&p==="/"&&(s=!1,d+=1),l=m===`
|
|
7
|
+
`||m==="\r";continue}if(a){m===`
|
|
8
|
+
`||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===`
|
|
9
|
+
`||m==="\r"))return An(t,`Unterminated string literal in ${t}.`);l=m===`
|
|
10
|
+
`||m==="\r";continue}if(m==="/"&&p==="*"){s=!0,d+=1,l=!1;continue}if(n==="mdx"&&m==="/"&&p==="/"){a=!0,d+=1,l=!1;continue}if(m==="'"||m==='"'||n==="mdx"&&m==="`"){o=m,l=!1;continue}if(m==="{"||m==="("||m==="["){r.push({char:m,offset:d}),l=!1;continue}if(m==="}"||m===")"||m==="]"){let h=m==="}"?"{":m===")"?"(":"[",E=r.pop();if(!E||E.char!==h)return An(t,`Unexpected closing token "${m}" in ${t}.`);l=!1;continue}l=m===`
|
|
11
|
+
`||m==="\r"}if(s)return An(t,`Unterminated block comment in ${t}.`);if(o)return An(t,`Unterminated string literal in ${t}.`);if(c)return An(t,`Unterminated MDX code fence in ${t}.`);let u=r.at(-1);return u?An(t,`Unclosed token "${u.char}" in ${t}.`):{ok:!0}}function An(e,t){return{ok:!1,errorCode:"ast-error",message:t,details:{path:e}}}function dr(e){let t="idle",n=e.fileSystem??vb(),r=$d(),o=new Map,i=new Map,s=null,a=new Set,c=null,l=e.history??(e.historyStore?mf(e.historyStore):Rb()),u=Bd(n,{externalAdapters:e.externalAdapters}),d=new Map,m=new Set,p=Math.max(0,e.initialDocumentVersion??0),h=0,E=e.historyStore?.recoveryRequired??!1,v=ia(),C=te();function R(f){return(Ao.isAbsolute(f)?Ao.relative(e.projectRoot,f):f).replace(/\\/g,"/").replace(/^\.\//,"")}function w(f,y){let g=Ao.posix.dirname(f),I=y.replace(/\.(?:tsx?|jsx?)$/i,""),P=Ao.posix.relative(g,I);return P.startsWith(".")?P:`./${P}`}function z(f,y){return f.startLine===y.startLine&&f.startColumn===y.startColumn&&f.endLine===y.endLine&&f.endColumn===y.endColumn}async function te(){let f=e.historyStore;if(f)try{let y=await f.readTransactionJournal();if(!y)return;let g=await f.readIndex(),I=await Promise.all(y.files.map(async F=>await n.exists(F.path)?ce(await n.readFile(F.path)):null));if(bf({journal:y,index:g,observedFileDigests:I})!=="ambiguous"){await f.clearTransactionJournal(y.transactionId);let F=await f.readStatus();F.recoveryRequired||(await f.cleanupTmp(),F=await f.readStatus()),E=F.recoveryRequired;return}await f.markRecoveryRequired(`Ambiguous transaction journal ${y.transactionId} at phase ${y.phase}`),E=!0}catch(y){E=!0,await f.markRecoveryRequired(`Transaction journal recovery failed: ${Me(y)}`).catch(()=>{})}}function le(){return t==="disposed"}if(e.onEvent&&r.subscribe(e.onEvent),e.routes)for(let f of e.routes){let y=Rf(f.routeId,f.entryFile);o.set(f.routeId,y),A(y,y.dependencyFiles)}function A(f,y){let g=new Set(y);M(f),f.dependencyFiles=g;for(let I of f.dependencyFiles){let P=i.get(I);P||(P=new Set,i.set(I,P)),P.add(f.routeId)}}function M(f){for(let y of f.dependencyFiles){let g=i.get(y);g&&(g.delete(f.routeId),g.size===0&&i.delete(y))}f.dependencyFiles.clear()}function O(f){let y=new Set;for(let g of f)for(let I of i.get(g)??[])y.add(I);return y}function j(f){for(let y of f)if(!i.has(y))return!1;return!0}async function ee(f,y,g,I,P){let F=new Map,B=Uu(P.values()),D=new Map,N=typeof n.exists=="function"?K=>n.exists(K):async()=>!1;for(let[K,J]of f.elements){let oe=y.nodes.get(K);if(!oe)continue;let Z=g.get(J.sourceFile)??I.get(J.sourceFile),ue=new Map,T=new Map,_=new Map,Y=[];for(let pe of J.textSegments){if(!Z){ue.set(pe.index,null);continue}let Mn=await Ku({file:J.sourceFile,source:Z,segment:pe,readFile:We=>n.readFile(We),exists:N,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:We,adapterId:qo,capabilities:ei})=>({sourceType:We,adapterId:qo,capabilities:ei})),functionCallContracts:e.functionCallContracts,fileCache:B}),Ce=await Cs({file:J.sourceFile,source:Z,target:{kind:"text-segment",segment:pe},readFile:We=>n.readFile(We),exists:N,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:We,adapterId:qo,capabilities:ei})=>({sourceType:We,adapterId:qo,capabilities:ei})),functionCallContracts:e.functionCallContracts,fileCache:B}),on=Ob(Mn);ue.set(pe.index,on),T.set(pe.index,Mn),_.set(pe.index,Ce),Y.push({editable:pe.editable,source:on})}let q=new Map;if(Z)for(let pe of J.attributes??[]){let Mn=await Ju({file:J.sourceFile,source:Z,sourceRange:pe.sourceRange,expression:pe.source?.expression??pe.value,sourceInfo:pe.source,readFile:Ce=>n.readFile(Ce),exists:N,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:Ce,adapterId:on,capabilities:We})=>({sourceType:Ce,adapterId:on,capabilities:We})),functionCallContracts:e.functionCallContracts,fileCache:B});q.set(pe.name,Mn)}let He=El(Db(oe.writeTarget),Y),Se=Cl({key:K,element:J,graph:f,provenances:_}),Te=wl(J),kr=Al(J),Cr=Tl(J),rn=Z?await xd({element:J,graph:f,file:J.sourceFile,source:Z,readFile:pe=>n.readFile(pe),exists:N,fileCache:D}):void 0,Dt=f.regions.find(pe=>pe.kind==="conditional-region"&&pe.childKeys.includes(K)),Pe,Fn=Dt?.sourceCandidates?.[0];if(Z&&Dt&&Fn?.kind==="conditional-branch"){let pe=await Cs({file:J.sourceFile,source:Z,target:{kind:"conditional-branch",candidate:Fn},readFile:Ce=>n.readFile(Ce),exists:N,graph:f,externalSourceResolvers:e.externalSourceResolvers,externalAdapters:e.externalAdapters?.map(({sourceType:Ce,adapterId:on,capabilities:We})=>({sourceType:Ce,adapterId:on,capabilities:We})),functionCallContracts:e.functionCallContracts,fileCache:B});Pe={currentBranch:Dt.childKeys.indexOf(K)<=0?"then":"else",availableBranches:Dt.childKeys.length>1?["then","else"]:["then"],conditionExpression:Fn.conditionExpression,provenance:{finalSource:pe.finalSource?{kind:pe.finalSource.kind,file:pe.finalSource.file,displayPath:pe.finalSource.displayPath}:null,chain:pe.chain.map(Ce=>({kind:Ce.kind,file:Ce.file,displayName:Ce.displayName,canEditHere:Ce.canEditHere})),confidence:pe.confidence,editMode:pe.editMode,diagnostics:pe.diagnostics.map(Ce=>({code:Ce.code,message:Ce.message}))}}}F.set(K,{textSources:ue,textTargets:T,elementPropertyTargets:q,provenances:_,writeTarget:He,componentSemantic:Se,contentModel:Te,mediaModel:kr,styleSource:Cr,conditional:Pe,dynamicData:rn})}return F}function G(f){return typeof n.getVersion=="function"?n.getVersion(f):0}function xe(f,y){let g=1;for(let I of y.values())g=Math.max(g,I);return Math.max(g,f.graph?.version??0)}async function W(f,y,g={}){let I=o.get(f);if(!I)return null;let P=g.sourceCache??sa(d,[]),F=await Q(I.entryFile),{graph:B,allSources:D,diagnostics:N,parsedModules:K,entryModule:J}=await hc(I.entryFile,y,Pe=>n.readFile(Pe),typeof n.exists=="function"?Pe=>n.exists(Pe):async()=>!1,{additionalEntries:F,version:I.graph?.version??1});if(N.length>0)throw new lr(N);let oe=new Map;for(let Pe of D.keys())oe.set(Pe,G(Pe));let Z=Math.max(xe(I,oe),g.minimumVersion??0,p);g.changed&&Z<=(I.graph?.version??0)&&(Z=(I.graph?.version??0)+1),B.version=Z;for(let[Pe,Fn]of D)aa(P,Pe,Fn,kf);let ue=await ge(I.entryFile,D,P);B.routeId=f;let T=gc(B),_=xc(T,B),Y=await ee(B,T,D,P,K),q=fp(B,_,Y),He=dp(Y),Se=Qb(ml(B,T,_,{canUpdateTextByKey:q,dynamicDataSummaryByKey:He}),B,Y),Te=sl({route:f,entryFile:I.entryFile,version:Z,source:y,ast:J?.ast}),kr=al(Te);Te.ok&&Ub(Se,B,Te.projection);let Cr={...Se,...ue?{styleContext:ue}:{},pageComposition:kr},rn=new Set([I.entryFile,...D.keys()]);if(ue){rn.add(ue.entryCss.path);for(let Pe of ue.stylesheets)rn.add(Pe.path)}let Dt={...I,dependencyFiles:rn,graph:B,topology:T,capabilities:_,document:Cr,pageComposition:kr,pageCompositionProjection:Te.projection,pagePlacementByKey:Te.ok?Te.projection.placementByKey:null,pagePlacementUnitByKey:Te.ok?Te.projection.placementUnitByKey:null,pageUnitByKey:Te.ok?Te.projection.unitByKey:null,pagePlacementsByUnitKey:Te.ok?Te.projection.placementsByUnitKey:null,documentIndex:Ab(Cr),detailProjections:Y,fileVersions:oe,styleContext:ue};if(g.publish===!1)return Dt;wn(d,P);for(let Pe of P.keys())m.delete(Pe);return p=Math.max(p,Z),A(I,rn),Object.assign(I,Dt),I}async function Q(f){let y=[];for(let g of zb(f))typeof n.exists=="function"&&await n.exists(g)&&y.push({file:g,source:await n.readFile(g)});return y}async function ge(f,y,g){let I=[];for(let[N,K]of y){if(ua(N)){I.push(N);continue}for(let J of Wb(K)){let oe=Nf(N,J);oe&&I.push(oe)}}if(!I.length){for(let N of Hb(f))if(await lt(N)){I.push(N);break}}let P=new Map,F=Of(I).slice(0,If);for(;F.length>0&&P.size<If;){let N=F.shift();if(P.has(N)||!ua(N))continue;let K=await xt(N,g);if(K!==null){P.set(N,{path:N,content:K});for(let J of Yb(K)){let oe=Nf(N,J);oe&&!P.has(oe)&&!F.includes(oe)&&F.push(oe)}}}let B=[...P.values()].map(N=>({...N,hash:ce(N.content)})),D=B[0];return D?{revision:ce(JSON.stringify(B.map(({path:N,hash:K})=>({path:N,hash:K})))),entryCss:D,stylesheets:B.slice(1)}:null}async function xt(f,y){let g=y.get(f);if(g!==void 0)return g;if(!await lt(f))return null;let I=await n.readFile(f);return aa(y,f,I,kf),I}async function lt(f){return typeof n.exists=="function"?n.exists(f):!1}function dp(f){let y=new Map;for(let[g,I]of f)I.dynamicData?.bindings.length&&y.set(g,Ad(I.dynamicData.bindings));return y}function fp(f,y,g){let I=new Map;for(let[P,F]of f.elements){if(!y.get(P)?.canUpdateText){I.set(P,!1);continue}let D=g.get(P),N=F.textSegments.some(K=>{if(!K.editable)return!1;let J=D?.provenances.get(K.index)??null;return!J||pp(J)});I.set(P,N)}return I}function pp(f){return f.editMode==="direct"||f.editMode==="proxy"||f.editMode==="upstream"}async function Sr(f,y={}){let g=[...new Set(f)],I=O(g);if(I.size===0||!j(g))for(let D of o.values())Va(D,g)&&I.add(D.routeId);let P=I.size===0&&g.some(Tf),F=y.publish===!1?sa(d,g):void 0,B={rebuiltRoutes:[],failedRoutes:[],...y.publish===!1?{candidateRouteStates:[],candidateSourceCache:F}:{}};for(let D of o.values())if(I.has(D.routeId)||P)try{let K=!!D.graph,J=await n.readFile(D.entryFile),oe=await W(D.routeId,J,{...y,...F?{sourceCache:F}:{}});oe?.graph&&(B.rebuiltRoutes.push({documentChanged:K,routeId:D.routeId,version:oe.graph.version}),B.candidateRouteStates?.push({routeId:D.routeId,state:oe}))}catch(K){B.failedRoutes.push(Sf(D.routeId,K))}return B}function $a(f){let y=[...new Set(f)],g=O(y);if(g.size>0&&j(y))return[...g];for(let I of o.values())Va(I,y)&&g.add(I.routeId);return[...g]}function Ho(f,y){r.emit({type:"operation-completed",result:f});for(let{routeId:g,version:I}of y.rebuiltRoutes)r.emit({type:"document-changed",routeId:g,version:I});for(let{routeId:g,message:I}of y.failedRoutes)r.emit({type:"graph-error",routeId:g,message:I})}function Va(f,y){return y.some(g=>f.dependencyFiles.has(g)||f.entryFile===g||f.graph?.fileIndex.has(g))}function Ua(f){for(let y of f)a.add(y);c||le()||(c=(async()=>{t="building";let y=!1;try{for(;a.size>0;){if(le())return;await mp();let g=[...a];a.clear();let I=await Ka(g);if(I.length===0)continue;let P=$a(I);for(let D of P)r.emit({type:"graph-invalidated",routeId:D});let{rebuiltRoutes:F,failedRoutes:B}=await Sr(I,{changed:!0});for(let{documentChanged:D,routeId:N,version:K}of F)r.emit({type:"graph-ready",routeId:N,version:K}),D&&r.emit({type:"document-changed",routeId:N,version:K});for(let{routeId:D,message:N}of B)y=!0,r.emit({type:"graph-error",routeId:D,message:N})}}finally{if(c=null,t!=="disposed"){let g=s?o.get(s):null;t=!y&&g?.graph?"ready":"idle"}a.size>0&&Ua([])}})())}async function mp(){for(;h>0;)await new Promise(f=>setTimeout(f,0))}async function Ka(f){let y=[];for(let g of new Set(f)){let I=d.get(g);if(I===void 0){if(m.has(g)&&!await n.exists(g))continue;m.delete(g),y.push(g);continue}try{await n.readFile(g)!==I&&(m.delete(g),y.push(g))}catch(P){if(!Vb(P))try{if(await n.exists(g))continue}catch{continue}m.add(g),y.push(g)}}return y}function Ja(f){xf(d,f);for(let y of f)y.exists===!1?m.add(y.file):m.delete(y.file)}function Xa(f){m.clear();for(let y of f)m.add(y)}async function za(f){let y=await Ka(f);if(y.length===0)return;let g=$a(y);for(let F of g)r.emit({type:"graph-invalidated",routeId:F});let{rebuiltRoutes:I,failedRoutes:P}=await Sr(y,{changed:!0});for(let{documentChanged:F,routeId:B,version:D}of I)r.emit({type:"graph-ready",routeId:B,version:D}),F&&r.emit({type:"document-changed",routeId:B,version:D});for(let{routeId:F,message:B}of P)r.emit({type:"graph-error",routeId:F,message:B})}async function hp(f,y){let g=Nn(f,y);if(!g?.graph)return;let I=Xe(f)??f,P=g.graph.elements.get(I);P&&await za([P.sourceFile])}async function Ha(f){let y=new Set;if(f.target.kind==="node"){let g=Nn(f.target.key,f.routeId),I=Xe(f.target.key)??f.target.key,P=g?.graph?.elements.get(I);P&&y.add(P.sourceFile)}else if(f.target.kind==="route"){let g=o.get(f.target.routeId);g&&y.add(g.entryFile)}else if(f.target.kind==="page-unit"){let g=o.get(f.target.routeId);g&&y.add(g.entryFile)}else if(f.target.kind==="source-file")y.add(f.target.path);else if(f.target.kind==="source-batch")for(let g of f.target.paths)y.add(g);await za(y)}async function gp(f){if(f.params.kind!=="source-edit")return Wo(f,"invalid-params","source-edit requires source-edit params");for(let y of f.params.edits){let g=$b(y);if(!g.ok)return Wo(f,g.errorCode,g.message,g.details)}h+=1;try{let y=await bp(f.params.edits);if(!y.ok)return Wo(f,y.errorCode,y.message,y.details);await Ha(f);let g={operationId:f.id,kind:"source-edit",target:f.target,documentVersion:f.documentVersion,conflictPolicy:f.params.conflictPolicy,edits:f.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 Tn({request:f,filePlan:g})}catch(y){return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:L.INTERNAL_ERROR,message:Me(y)}}}finally{h-=1}}async function yp(f){if(f.target.kind!=="project"||f.params.kind!=="insert-page-resource")return ne(f,L.INVALID_PARAMS,"insert-page-resource requires project target and matching params.");h+=1;try{let y=await ra({files:[...f.params.artifact.components.flatMap(I=>I.materialization.files.map(P=>({path:P.pathTemplate,content:P.content}))),...f.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(!y.ok)return ne(f,L.MATERIALIZATION_REJECTED,y.message);let g=await ta({artifact:f.params.artifact,exists:I=>n.exists(I)});return g.ok?await Tn({request:f,filePlan:{operationId:f.id,kind:"source-edit",target:f.target,documentVersion:f.documentVersion,conflictPolicy:"overwrite",edits:g.files},output:{kind:"insert-page-resource",package_instance_id:g.packageInstanceId,pages:g.pages}}):ne(f,g.code==="MATERIALIZATION_CONFLICT"?L.MATERIALIZATION_CONFLICT:L.MATERIALIZATION_REJECTED,g.message,g.path?{path:g.path}:void 0)}catch(y){return ne(f,L.INTERNAL_ERROR,Me(y))}finally{h-=1}}async function xp(f,y){if(f.kind!=="insert-child"||f.params.kind!=="insert-child")return ne(f,L.UNSUPPORTED_OPERATION,"Only page-unit insert-child is currently supported by the page composition transaction.");if(!("kind"in f.params.position)||f.params.position.kind!=="page-composition")return ne(f,L.INVALID_PARAMS,"Page-unit insert-child requires a page-composition placement.");if(f.params.position.documentVersion!==f.documentVersion)return ne(f,L.VERSION_STALE,"Page-unit insert-child placement belongs to a different document version.");let g=y.document,I=y.pageCompositionProjection;if(!g||g.pageComposition?.status!=="supported"||!I||I.status!=="supported")return ne(f,L.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(f.documentVersion!==g.version||I.documentVersion!==g.version)return ne(f,L.VERSION_STALE,`Document version ${f.documentVersion} is stale (current: ${g.version}).`);let P=f.params.node.kind==="component-call"?f.params.node.materialization:void 0;if(!P)return ne(f,L.UNSUPPORTED_OPERATION,"Page-unit insertion currently requires a static materialization manifest.");let F=f.params.position,B=await ra({files:P.files.map(N=>({path:N.pathTemplate,content:N.content})),exists:N=>n.exists(N),readFile:N=>n.readFile(N)});if(!B.ok)return ne(f,L.MATERIALIZATION_REJECTED,B.message);let D=await Yd({manifest:P,generatedRoot:"components/site/generated",controlledFiles:P.files.map(N=>({pathTemplate:N.pathTemplate})),exists:N=>n.exists(N),commit:async N=>{let K=await n.readFile(y.entryFile),J=y.document,oe=y.pageCompositionProjection;if(!J||J.pageComposition?.status!=="supported"||J.version!==f.documentVersion||!oe||oe.status!=="supported"||oe.documentVersion!==J.version)return{ok:!0,data:ne(f,L.VERSION_STALE,"The route changed before the page-unit insertion could commit.")};let Z=N.entry.path,ue=wp(N.instanceName),T=Mi({routeId:y.routeId,entryFile:y.entryFile,currentDocumentVersion:J.version,expectedDocumentVersion:f.documentVersion,source:K,projection:oe,placementKey:F.placementKey,component:{source:Z,exportName:N.entry.export.kind==="default"?"default":N.entry.export.name,localName:ue}});if(!T.ok)return{ok:!0,data:ne(f,tc(T.error.code),T.error.message,{diagnostics:T.error.diagnostics})};let _=T.plan.returnStep?tl({source:K,jsx:T.plan.returnStep.node.jsx,placement:T.plan.returnStep.placement,...T.plan.returnStep.replaceOriginal?{replaceOriginal:!0}:{}}):T.plan.insertStep?.parentLocator?hn({source:K,locator:T.plan.insertStep.parentLocator,node:T.plan.insertStep.node,placement:T.plan.insertStep.placement,...T.plan.insertStep.anchorLocator?{anchorLocator:T.plan.insertStep.anchorLocator}:{}}):{ok:!1,source:K,diagnostic:{code:"unsupported-syntax",message:"Route composition rewrite has no insertion step."}};if(!_.ok)return{ok:!0,data:ne(f,L.AST_PARSE_ERROR,_.diagnostic.message)};let Y=xn({source:_.source,moduleSpecifier:T.plan.importStep.moduleSpecifier,imports:T.plan.importStep.imports});if(!Y.ok)return{ok:!0,data:ne(f,L.AST_PARSE_ERROR,Y.diagnostic.message)};let q=N.files.map(Se=>({operation:"create-only",file:Se.path,content:Se.content})),He=[{operation:"upsert",file:y.entryFile,content:Y.source,baseContentHash:ce(K)},...q];h+=1;try{let Se=await Tn({request:f,filePlan:{operationId:f.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:f.documentVersion,conflictPolicy:"compare-and-swap",edits:He}});return!Se.ok&&Se.error?.message.includes("MATERIALIZATION_INSTANCE_CONFLICT")?{ok:!1,error:{code:"MATERIALIZATION_INSTANCE_CONFLICT",message:Se.error?.message??"Static prefab instance conflicted during commit."}}:{ok:!0,data:Se}}finally{h-=1}}});return D.ok?D.data:ne(f,L.VERSION_STALE,D.error.message,{materializationCode:D.error.code})}async function Ep(f,y){if(f.kind!=="move-node"&&f.kind!=="remove-node")return ne(f,L.UNSUPPORTED_OPERATION,"Only page-unit move-node and remove-node are currently supported by the page composition transaction.");let g=y.document,I=y.pageCompositionProjection;if(!g||g.pageComposition?.status!=="supported"||!I||I.status!=="supported")return ne(f,L.UNSUPPORTED_OPERATION,"The current route has no supported page composition.");if(f.documentVersion!==g.version||I.documentVersion!==g.version)return ne(f,L.VERSION_STALE,`Document version ${f.documentVersion} is stale (current: ${g.version}).`);let P=await n.readFile(y.entryFile),F=nl({routeId:y.routeId,entryFile:y.entryFile,currentDocumentVersion:g.version,expectedDocumentVersion:f.documentVersion,source:P,projection:I,placementUnitKey:f.target.placementUnitKey,operation:f.kind,targetPlacement:f.kind==="move-node"&&f.params.kind==="move-node"&&"kind"in f.params.target&&f.params.target.kind==="page-composition"?f.params.target:void 0});if(!F.ok)return ne(f,tc(F.error.code),F.error.message,{diagnostics:F.error.diagnostics});let B=F.plan.rewriteStep.kind==="move-node"?yn({source:P,locator:F.plan.rewriteStep.locator,targetParentLocator:F.plan.rewriteStep.targetParentLocator,placement:F.plan.rewriteStep.placement,...F.plan.rewriteStep.anchorLocator?{anchorLocator:F.plan.rewriteStep.anchorLocator}:{}}):pn({source:P,locator:F.plan.rewriteStep.locator});if(!B.ok)return ne(f,L.AST_PARSE_ERROR,B.diagnostic.message);let D=B.source,N=[];if(f.kind==="remove-node"){let J=await Sp({routeState:y,placementUnitKey:f.target.placementUnitKey,source:P,mutatedSource:D});D=J.source,N=await Promise.all(J.files.map(async oe=>({operation:"delete",file:oe,baseContentHash:ce(await n.readFile(oe))})))}let K=[{operation:"upsert",file:y.entryFile,content:D,baseContentHash:ce(P)},...N];h+=1;try{return await Tn({request:f,filePlan:{operationId:f.id,kind:"source-edit",target:{kind:"source-file",path:y.entryFile},documentVersion:f.documentVersion,conflictPolicy:"compare-and-swap",edits:K}})}finally{h-=1}}async function Sp(f){let y={source:f.mutatedSource,files:[]},g=f.routeState.graph,I=f.routeState.pageCompositionProjection;if(!g||!I||I.status!=="supported"||!n.listFiles)return y;let F=I.placementUnitByKey.get(f.placementUnitKey)?.sourceRange;if(!F)return y;let B=[...g.elements.values()].find(q=>q.sourceFile===f.routeState.entryFile&&q.importedFrom&&z(q.sourceRange,F));if(!B?.importedFrom||!B.exportName)return y;let D=R(B.importedFrom),N="components/site/generated/";if(!D.startsWith(N))return y;let K=D.slice(N.length).split("/")[0];if(!K||!/-[0-9a-f]{8}$/i.test(K))return y;let J=`${N}${K}`;if([...g.elements.values()].filter(q=>q.sourceFile===f.routeState.entryFile&&R(q.importedFrom??"")===D).length!==1)return y;let Z=await n.listFiles({maxFiles:5e3,maxDepth:32}),ue=Array.isArray(Z)?Z:Z.files;if(!Array.isArray(Z)&&Z.truncated)return y;let T=ue.map(({path:q})=>q).filter(q=>q===J||q.startsWith(`${J}/`));if(T.length===0||!T.includes(D))return y;for(let{path:q}of ue)if(!(q===f.routeState.entryFile||q===J||q.startsWith(`${J}/`)))try{if((await n.readFile(q)).includes(K))return y}catch{return y}let _=w(f.routeState.entryFile,D),Y=En({source:f.mutatedSource,moduleSpecifier:_,imports:B.exportName==="default"?[{kind:"default"}]:[{kind:"named",imported:B.exportName}]});return Y.ok?{source:Y.source,files:T.sort((q,He)=>q.localeCompare(He))}:y}async function bp(f){if(n.getFileInfo){for(let P of f)if(await n.exists(P.path)&&await n.getFileInfo(P.path)===null)return{ok:!1,errorCode:"invalid-params",message:`Source edit path must resolve to a regular non-symbolic-link file: ${P.path}`,details:{path:P.path}}}let y=Ip(f);if(y.length===0)return{ok:!0};let g=Lb(n,f),I=dr({projectRoot:e.projectRoot,fileSystem:g,routes:[...o.values()].map(P=>({routeId:P.routeId,entryFile:P.entryFile})),externalAdapters:e.externalAdapters,externalSourceResolvers:e.externalSourceResolvers,functionCallContracts:e.functionCallContracts,dev:e.dev});try{for(let P of y)await I.setActiveRoute(P)}catch(P){return{ok:!1,errorCode:"ast-error",message:`Source edit preflight failed: ${Me(P)}`,details:{routeIds:y}}}finally{I.dispose()}return{ok:!0}}function Ip(f){return f.map(g=>g.path).some(Tf)?[...o.keys()]:[]}function Wo(f,y,g,I){let P=ur(y);return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:P,message:g,...I?{details:I}:{}}}}async function Yo(f){let y=[];for(let g of new Set(f))y.push(await kp(g));return y}async function kp(f){if(!(typeof n.exists=="function"?await n.exists(f):!0))return{file:f,content:"",version:Math.max(0,G(f)),exists:!1};let g=await n.readFile(f);return{file:f,content:g,version:Math.max(1,G(f)),exists:!0,sha256:ce(g)}}async function Wa(f,y,g,I){if(!e.historyStore)return null;let P=I.historyTransition;if(!P)throw new Error("Durable history did not provide an exact index transition.");let F=new Map(y.map(N=>[N.file,N])),B=new Map(g.map(N=>[N.file,N])),D=[...new Set([...F.keys(),...B.keys()])].sort().map(N=>{let K=F.get(N),J=B.get(N);return{path:N,preDigest:K?.exists===!1||!K?null:ce(K.content),postDigest:J?.exists===!1||!J?null:ce(J.content)}});return{schemaVersion:2,transactionId:`${f}:${P.expectedIndexDigest}`,operationId:f,phase:"prepared",historyTransition:P,files:D}}async function Ya(f){return!f||!e.historyStore||await e.historyStore.writeTransactionJournal(f),f}async function nn(f){f&&e.historyStore&&await e.historyStore.clearTransactionJournal(f.transactionId)}async function Go(f,y){let g=[];try{for(let I of f)await Ga(I),typeof n.bumpVersion=="function"&&n.bumpVersion(I.file),g.push(I.file)}catch(I){let P=await Cp(y.filter(F=>g.includes(F.file)));return P.ok?{ok:!1,reason:`Writeback failed and committed files were restored: ${Me(I)}`,rolledBack:!0}:{ok:!1,reason:`Writeback failed, then rollback failed for ${P.failedFiles.join(", ")}: ${Me(I)}`,rolledBack:!1}}return{ok:!0,snapshots:f.map(vp)}}async function Ga(f){if(f.exists===!1){await n.deleteFile(f.file);return}await n.writeFile(f.file,f.content)}async function Cp(f){let y=[];for(let g of f)try{await Ga(g),typeof n.bumpVersion=="function"&&n.bumpVersion(g.file)}catch{y.push(g.file)}return y.length===0?{ok:!0}:{ok:!1,failedFiles:y}}function vp(f){let y=f.exists!==!1;return{file:f.file,content:y?f.content:"",version:f.version,exists:y,...y?{sha256:ce(f.content)}:{}}}async function Tn(f){return v.runExclusive(()=>Rp(f))}async function Rp(f){let y=f.filePlan.edits.map(T=>T.file),g=await Yo(y),I=new Map(g.filter(T=>T.exists!==!1).map(T=>[T.file,T.content])),P=p,F=Qa(),B=new Map(d),D=new Set(m),N=f.filePlan.edits.map(T=>T.operation==="delete"?{file:T.file,content:"",version:0,exists:!1}:{file:T.file,content:T.content,version:0,exists:!0,sha256:ce(T.content)}),K={operationId:f.filePlan.operationId,intents:f.filePlan.edits.map(T=>T.operation==="delete"?{kind:"delete",path:T.file}:{kind:T.operation==="create-only"?"create-only":"upsert",path:T.file,content:T.content})},J=null,oe=!1,Z=await wo({overlay:I,exists:T=>n.exists(T),plan:K,buildCandidate:async({plan:T})=>({plan:T}),prepareHistory:async()=>{let T=await l.prepareAppend({operationId:f.request.id,kind:f.request.kind,target:f.request.target,preSnapshots:g,postSnapshots:N,...f.selectionRef?{selectionRef:f.selectionRef}:{},...f.output?{output:f.output}:{}});return J=await Wa(f.request.id,g,N,T),J=await Ya(J),T},reverify:async()=>{},writeCandidate:async()=>{let T=await u.executeFilePlan(f.filePlan);if(!T.ok)throw new No(T);return{postSnapshots:await Yo(T.affectedFiles),affectedFiles:T.affectedFiles,internalResultVersion:T.resultVersion}},validateCandidate:async({candidate:T,receipt:_})=>{let Y=await Sr(_.affectedFiles,{changed:!0,minimumVersion:_.internalResultVersion,publish:!1});if(Y.failedRoutes.length>0)throw new en(Y.failedRoutes);let q=qa(F,Y.candidateRouteStates??[]),He=Math.max(_.internalResultVersion,...Y.rebuiltRoutes.map(Se=>Se.version));return{...T,rebuild:Y,routeSnapshots:q,resultVersion:He,...Pf(f.selectionRef,q.map(Se=>Se.state.document))?{selectionRef:Pf(f.selectionRef,q.map(Se=>Se.state.document))}:{}}},publishCandidate:async({candidate:T,history:_,receipt:Y})=>{if(!_)throw new Error("history intent is missing");await l.publishPrepared(_),oe=!0;let q=T.resultVersion??Y.internalResultVersion;return{requestId:f.request.id,kind:f.request.kind,target:f.request.target,ok:!0,resultVersion:q,affectedFiles:Y.affectedFiles,...f.output?{output:f.output}:{},...T.selectionRef?{selectionRef:T.selectionRef}:{}}},swapCandidate:({candidate:T,receipt:_})=>{T.routeSnapshots&&br(T.routeSnapshots),T.rebuild?.candidateSourceCache&&wn(d,T.rebuild.candidateSourceCache),Ja(_.postSnapshots),p=Math.max(p,T.resultVersion??P)},finalizeCandidate:async()=>{await nn(J)},emitCommitted:({candidate:T,published:_})=>{Ho(_,T.rebuild??{rebuiltRoutes:[],failedRoutes:[]})},rollbackCandidate:async({history:T,receipt:_})=>{if(oe)throw new Error("history was published before transaction finalization failed");if(_){let Y=await Go(g,_.postSnapshots);if(!Y.ok)throw new Error(Y.reason)}br(F),wn(d,B),Xa(D),p=P,T&&await l.discardPrepared?.(T),await nn(J)}});if(Z.ok)return Z.published;if(Z.stage==="precheck"||Z.stage==="build")try{await nn(J)}catch(T){let _=await Ir(Me(T));return ne(f.request,_,"Unable to clear an uncommitted transaction journal.")}if(Z.recoveryRequired){let T=await Ir(Z.reason);return ne(f.request,T===L.RECOVERY_PERSIST_FAILED?T:L.ROLLBACK_FAILED,Z.reason)}let ue=Z.error;return ue instanceof No?{...ne(f.request,ur(ue.result.errorCode),ue.result.reason),...ue.result.affectedFiles?{affectedFiles:ue.result.affectedFiles}:{}}:ue instanceof en?ne(f.request,L.ROUTE_REBUILD_FAILED,`Route rebuild failed and source was rolled back: ${ca(ue.failedRoutes)}`,{failedRoutes:ue.failedRoutes}):ne(f.request,ec(Z.stage),Me(ue))}async function Za(f){return v.runExclusive(async()=>{let y=f==="undo"?await l.prepareUndo():await l.prepareRedo();return y?Pp(f,y):{requestId:f,kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:p,error:{code:L.INTERNAL_ERROR,message:f==="undo"?"Nothing to undo":"Nothing to redo"}}})}async function Pp(f,y){let g=y.entry,I=f==="undo"?g.preSnapshots:g.postSnapshots,P=f==="undo"?g.postSnapshots:g.preSnapshots,F=I.map(_=>_.file),B=await Yo(F),D=new Map(B.filter(_=>_.exists!==!1).map(_=>[_.file,_.content])),N=p,K=Qa(),J=new Map(d),oe=new Set(m),Z=null,ue=!1,T=await wo({overlay:D,plan:{operationId:`${f}:${g.operationId}`,intents:I.map(_=>_.exists===!1?{kind:"delete",path:_.file}:{kind:"upsert",path:_.file,content:_.content})},buildCandidate:async()=>({}),prepareHistory:async()=>(Z=await Wa(`${f}:${g.operationId}`,B,I,y),Z=await Ya(Z),y),reverify:async()=>{},writeCandidate:async()=>{let _=await Go(I,P);if(!_.ok)throw new Error(_.reason);return{snapshots:_.snapshots}},validateCandidate:async({candidate:_})=>{let Y=await Sr(F,{changed:!0,minimumVersion:p+1,publish:!1});if(Y.failedRoutes.length>0)throw new en(Y.failedRoutes);let q=qa(K,Y.candidateRouteStates??[]),He=Math.max(p+1,...Y.rebuiltRoutes.map(Se=>Se.version));return{..._,rebuild:Y,routeSnapshots:q,resultVersion:He}},publishCandidate:async({candidate:_,history:Y})=>{if(!Y)throw new Error("history cursor intent is missing");await l.publishPrepared(Y),ue=!0;let q=_.resultVersion??p+1;return{requestId:f,kind:g.kind,target:g.target,ok:!0,resultVersion:q,affectedFiles:F,...g.output?{output:g.output}:{}}},swapCandidate:({candidate:_,receipt:Y})=>{_.routeSnapshots&&br(_.routeSnapshots),_.rebuild?.candidateSourceCache&&wn(d,_.rebuild.candidateSourceCache),Ja(Y.snapshots),p=Math.max(p,_.resultVersion??N)},finalizeCandidate:async()=>{await nn(Z)},emitCommitted:({candidate:_,published:Y})=>Ho(Y,_.rebuild??{rebuiltRoutes:[],failedRoutes:[]}),rollbackCandidate:async({history:_,receipt:Y})=>{if(ue)throw new Error("history cursor was published before transaction finalization failed");if(Y){let q=await Go(P,Y.snapshots);if(!q.ok)throw new Error(q.reason)}br(K),wn(d,J),Xa(oe),p=N,_&&await l.discardPrepared?.(_),await nn(Z)}});if(T.ok)return T.published;if(T.stage==="precheck"||T.stage==="build")try{await nn(Z)}catch(_){let Y=await Ir(Me(_));return{requestId:f,kind:g.kind,target:g.target,ok:!1,resultVersion:p,error:{code:Y,message:"Unable to clear an uncommitted transaction journal."}}}if(T.recoveryRequired){let _=await Ir(T.reason);return{requestId:f,kind:g.kind,target:g.target,ok:!1,resultVersion:p,affectedFiles:F,error:{code:_===L.RECOVERY_PERSIST_FAILED?_:L.ROLLBACK_FAILED,message:T.reason}}}return{requestId:f,kind:g.kind,target:g.target,ok:!1,resultVersion:p,affectedFiles:F,error:{code:T.error instanceof en?L.ROUTE_REBUILD_FAILED:ec(T.stage),message:Me(T.error),...T.error instanceof en?{details:{failedRoutes:T.error.failedRoutes}}:{}}}}function Qa(){return[...o.values()].map(f=>({routeId:f.routeId,state:{...f,dependencyFiles:new Set(f.dependencyFiles),fileVersions:new Map(f.fileVersions)}}))}function qa(f,y){let g=new Map(f.map(I=>[I.routeId,I]));for(let I of y)g.set(I.routeId,I);return[...g.values()]}function br(f){for(let y of o.values())M(y);for(let y of f){let g={...y.state,dependencyFiles:new Set(y.state.dependencyFiles),fileVersions:new Map(y.state.fileVersions)};o.set(y.routeId,g),A(g,g.dependencyFiles)}}async function Zo(f){let y=o.get(f);if(!y)throw new Error(`Route not found: ${f}`);if(y.graph)return;let g=await n.readFile(y.entryFile);await W(f,g)}function Nn(f,y){if(y){let g=o.get(y)??null;return!g||!Qo(g,f)?null:g}for(let g of o.values())if(Qo(g,f))return g;return null}function Qo(f,y){if(f.documentIndex?.entriesByKey.has(y)||f.graph?.elements.has(y))return!0;let g=Xe(y);return g&&g!==y?f.graph?.elements.has(g)===!0:!1}function ne(f,y,g,I){return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:y,message:g,...I?{details:I}:{}}}}function ec(f){return f==="validate"?L.ROUTE_REBUILD_FAILED:f==="publish"?L.HISTORY_COMMIT_FAILED:L.WRITE_IO_ERROR}async function Ir(f){if(E=!0,!l.markRecoveryRequired)return L.RECOVERY_REQUIRED;try{return await l.markRecoveryRequired(f),L.RECOVERY_REQUIRED}catch{return L.RECOVERY_PERSIST_FAILED}}function wp(f){let g=f.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(I=>I.charAt(0).toUpperCase()+I.slice(1)).join("").replace(/^[^a-zA-Z_$]+/,"");return g?`Prefab${g}`:"GeneratedPrefab"}function tc(f){return f==="VERSION_STALE"?L.VERSION_STALE:f==="CROSS_PAGE_MOVE_UNSUPPORTED"?L.CROSS_PAGE_MOVE_UNSUPPORTED:L.UNSUPPORTED_OPERATION}async function nc(f){if(f.target.kind==="route"){let g=o.get(f.target.routeId)??null;return g?(g.graph||await Zo(g.routeId),g):ne(f,L.ROUTE_NOT_FOUND,`Route not found: ${f.target.routeId}`)}if(f.target.kind==="page-unit"){let g=o.get(f.target.routeId)??null;return g?(g.graph||await Zo(g.routeId),g):ne(f,L.ROUTE_NOT_FOUND,`Route not found: ${f.target.routeId}`)}if(f.target.kind!=="node")return ne(f,L.UNSUPPORTED_OPERATION,`${f.kind} source target execution is not implemented yet.`);if(!f.routeId)return ne(f,L.INVALID_TARGET,"routeId is required when executing a node target");let y=o.get(f.routeId)??null;return y?(y.graph||await Zo(y.routeId),Qo(y,f.target.key)?y:ne(f,L.NODE_NOT_FOUND,`Target key not found: ${f.target.key}`)):ne(f,L.ROUTE_NOT_FOUND,`Route not found: ${f.routeId}`)}return{get status(){return t},dispose(){t="disposed",a.clear(),o.clear(),i.clear(),d.clear(),m.clear(),s=null},registerRoute(f,y){let g=o.get(f);if(g?.entryFile===y)return;g&&M(g);let I=Rf(f,y);o.set(f,I),A(I,I.dependencyFiles),r.emit({type:"graph-invalidated",routeId:f})},unregisterRoute(f){let y=o.get(f);y&&(M(y),o.delete(f),s===f&&(s=null,t="idle"),r.emit({type:"graph-invalidated",routeId:f}))},getRouteEntryFiles(){return[...o.values()].map(f=>f.entryFile)},async setActiveRoute(f){let y=o.get(f);if(!y)throw new Error(`Route not found: ${f}`);let g=s===f;if(s=f,!y.graph){t="building";try{let I=await n.readFile(y.entryFile);await W(f,I);let P=o.get(f)?.graph?.version??1;t="ready",r.emit({type:"graph-ready",routeId:f,version:P})}catch(I){throw t="idle",r.emit({type:"graph-error",routeId:f,message:Me(I)}),I}return}t="ready",g||r.emit({type:"graph-ready",routeId:f,version:y.graph.version})},getDocument(f){let y=o.get(f);if(!y)throw new Error(`Route not found: ${f}`);if(!y.document)throw new Error(`Route not built: ${f}`);return y.document},async getHistoryStatus(){await C;let f=await l.getStatus?.();return f?{...f,recoveryRequired:E}:{canUndo:!1,canRedo:!1,undoDepth:0,redoDepth:0,recoveryRequired:E}},getObjectEditContext(f,y){let g=Nn(f,y),I=Xe(f)??f;if(g?.graph&&g.topology&&g.capabilities&&g.detailProjections){let P=g.detailProjections.get(I);if(P){let F=gl(I,g.graph,g.topology,g.capabilities,P.textSources,P.provenances,P.dynamicData);return f===I?F:oI(F,f,g.document??null,g.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${f}`)},getRenderDetail(f,y){let g=Nn(f,y),I=Xe(f)??f;if(g?.graph&&g.topology&&g.capabilities&&g.detailProjections){let P=g.detailProjections.get(I);if(P){let F=hl(I,g.graph,g.topology,g.capabilities,P.textSources,P.writeTarget,P.provenances,P.conditional,P.componentSemantic,P.contentModel,P.mediaModel,P.styleSource,P.dynamicData);return f===I?F:rI(F,f,g.document??null,g.documentIndex?.entriesByKey)}}throw new Error(`Key not found: ${f}`)},getClassNameSource(f,y){let g=Nn(f,y),I=Xe(f)??f;if(!g?.graph)throw new Error(`Key not found: ${f}`);let P=g.graph.elements.get(I);if(!P)throw new Error(`Key not found: ${f}`);let F=d.get(P.sourceFile);if(F===void 0)throw new Error(`Source not loaded: ${P.sourceFile}`);return Ml({key:I,route:{routeId:g.routeId,graph:g.graph,source:F}})},refreshSourceForKey:hp,async execute(f){if(await C,E)return ne(f,L.RECOVERY_REQUIRED,"The edit engine requires explicit recovery before accepting mutations.");if(f.kind==="source-edit")return gp(f);if(f.kind==="insert-page-resource")return yp(f);let y=await nc(f);if("ok"in y)return y;await Ha(f);let g=await nc(f);if("ok"in g)return g;let I=g;if(f.target.kind==="page-unit"){let D=f;return f.kind==="insert-child"?xp(D,I):f.kind==="move-node"||f.kind==="remove-node"?Ep(D,I):ne(f,L.UNSUPPORTED_OPERATION,"Only page-unit insert-child, move-node, and remove-node are currently supported by the page composition transaction.")}if(!I.graph||!I.topology||!I.capabilities)return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:f.target.kind==="route"?L.ROUTE_NOT_FOUND:L.NODE_NOT_FOUND,message:f.target.kind==="route"?`Route not ready: ${f.target.routeId}`:f.target.kind==="node"?`Target key not found: ${f.target.key}`:`${f.kind} source target execution is not implemented yet.`}};let P=Jb(I,I.graph,I.capabilities,d,o),F=await new ho(P).plan(f);if(!F.ok)return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:ur(F.errorCode),message:F.reason}};let B=F.plan;if(B.steps.length===0)return f.kind==="set-props"?{requestId:f.id,kind:f.kind,target:f.target,ok:!0,resultVersion:p,affectedFiles:[]}:{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:L.PLAN_FAILED,message:"Planner could not generate a valid execution plan"}};h+=1;try{if(B.steps.some(N=>N.type==="invoke-external-adapter")){let N=await u.execute(B);if(!N.ok)return ne(f,ur(N.errorCode),N.reason);let K={requestId:f.id,kind:f.kind,target:f.target,ok:!0,resultVersion:Math.max(p,N.resultVersion),affectedFiles:N.affectedFiles,...N.selectionRef?{selectionRef:N.selectionRef}:{}};return Ho(K,{rebuiltRoutes:[],failedRoutes:[]}),K}let D=await u.prepareRewritePlan(B);return D.ok?await Tn({request:f,filePlan:D.filePlan,...D.selectionRef?{selectionRef:D.selectionRef}:{}}):ne(f,ur(D.errorCode),D.reason)}catch(D){return{requestId:f.id,kind:f.kind,target:f.target,ok:!1,resultVersion:p,error:{code:L.INTERNAL_ERROR,message:Me(D)}}}finally{h-=1}},async undo(f){if(await C,E)return{requestId:"undo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:p,error:{code:L.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting undo."}};h+=1;try{return await Za("undo")}finally{h-=1}},async redo(f){if(await C,E)return{requestId:"redo",kind:"update-text",target:{kind:"node",key:""},ok:!1,resultVersion:p,error:{code:L.RECOVERY_REQUIRED,message:"The edit engine requires explicit recovery before accepting redo."}};h+=1;try{return await Za("redo")}finally{h-=1}},notifyFileChanged(f){Ua([f])},subscribe(f){return r.subscribe(f)}}}function Vb(e){return e instanceof Error&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function Ub(e,t,n){let r=new Map;for(let i of t.elements.values()){if(i.sourceFile!==n.entryFile||!i.importedFrom||!/^[A-Z]/.test(i.tag))continue;let s=n.placements.find(c=>c.members.some(l=>l.sourceRange!==null&&la(i.sourceRange,l.sourceRange)));if(!s)continue;let a=s.placementUnitKey;r.set(`${i.importedFrom}#${i.tag}`,a),i.exportName&&i.exportName!==i.tag&&r.set(`${i.importedFrom}#${i.exportName}`,a)}let o=n.placements.find(i=>i.placementKey===n.container.placementKey&&i.relation==="append");for(let i of e.entries){let s=t.elements.get(i.key);if(!s)continue;if(s.sourceFile===n.entryFile){if(n.container.sourceRange&&la(s.sourceRange,n.container.sourceRange)&&o){i.pageCompositionUnitKey=o.placementUnitKey;continue}let c=n.placements.find(l=>l.members.some(u=>u.sourceRange!==null&&(la(s.sourceRange,u.sourceRange)||Kb(u.sourceRange,s.sourceRange))));if(c){i.pageCompositionUnitKey=c.placementUnitKey;continue}}let a=r.get(`${s.sourceFile}#${s.componentName}`);a&&(i.pageCompositionUnitKey=a)}}function la(e,t){return e.startLine===t.startLine&&e.startColumn===t.startColumn&&e.endLine===t.endLine&&e.endColumn===t.endColumn}function Kb(e,t){return Af(e.startLine,e.startColumn,t.startLine,t.startColumn)<=0&&Af(e.endLine,e.endColumn,t.endLine,t.endColumn)>=0}function Af(e,t,n,r){return e!==n?e-n:t-r}function Jb(e,t,n,r,o){let i=new Map,s=new Map,a=(u,d)=>{if(s.has(u))return;s.set(u,d);let m=t.elements.get(u);for(let p of m?.childKeys??[])a(p,d)};for(let u of t.regions)if(u.kind==="repeat-region")for(let d of u.childKeys)i.set(d,u.ownerKey),a(d,u.ownerKey);return{getNode(u){let d=c(u),m=t.elements.get(d.baseKey);return m?l(u,m):null},getChildNodes(u){let d=c(u),p=e.documentIndex?.entriesByKey.get(u)?.childKeys;if(p)return p.map(E=>{let v=Xe(E)??E,C=t.elements.get(v);return C?l(E,C):null}).filter(E=>E!==null);let h=t.elements.get(d.baseKey);return h?h.childKeys.map(E=>{let v=t.elements.get(E);return v?l(E,v):null}).filter(E=>E!==null):[]},getKnownSourceFiles(){return[...r.entries()].map(([u,d])=>({file:u,content:d}))},getRouteEntryFiles(){return[...o.values()].map(u=>u.entryFile)},getCapability(u){let d=c(u),m=n.get(d.baseKey);return m?{...m,key:u,constraints:m.constraints.map(p=>({...p})),...m.editModes?{editModes:{...m.editModes}}:{}}:{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 d=c(u);return e.detailProjections?.get(d.baseKey)?.componentSemantic??null},getEditableTextSegmentIndex(u){let d=c(u),p=e.detailProjections?.get(d.baseKey)?.textTargets.keys()?.next();return p&&!p.done?p.value:null},async getTextWriteTarget(u,d){let m=c(u);return Ff(e.detailProjections?.get(m.baseKey)?.textTargets.get(d)??null,m.repeatIndex)},async getElementPropertyWriteTarget(u,d){let m=c(u);return Ff(e.detailProjections?.get(m.baseKey)?.elementPropertyTargets.get(d)??null,m.repeatIndex)},getTextProvenance(u,d){let m=c(u);return e.detailProjections?.get(m.baseKey)?.provenances.get(d)??null}};function c(u){let d=Sb(u);return d?{baseKey:d.baseKey,repeatIndex:eI(e.document??null,u,d.baseKey,e.documentIndex)??qb(d)}:{baseKey:u,repeatIndex:null}}function l(u,d){let m=Xe(u)??u,p=e.documentIndex?.entriesByKey.get(u),h=e.detailProjections?.get(m);return{key:u,file:d.sourceFile,component:d.componentName,tag:d.tag,structuralPath:d.identity.structuralPath,sourceRange:d.sourceRange,parentKey:p?.parentKey??d.parentKey??void 0,isRepeatRegion:d.boundaryKind==="repeat-region"||s.has(m),isBoundary:!1,importedFrom:d.importedFrom,exportName:d.exportName,isRepeatItemRoot:i.has(m),repeatOwnerKey:i.get(m)??s.get(m),contentModel:h?.contentModel,attributes:d.attributes?.map(E=>({name:E.name,value:E.value,source:E.source?{expression:E.source.expression,base:E.source.base,path:E.source.path.map(v=>({...v}))}:null,resolvedValue:E.resolvedValue}))}}}var Xb={"stale-version":L.VERSION_STALE,"capability-denied":L.CAPABILITY_REJECTED,"invalid-params":L.INVALID_PARAMS,"locator-miss":L.LOCATOR_FAILED,"route-not-found":L.ROUTE_NOT_FOUND,"unsupported-operation":L.UNSUPPORTED_OPERATION,"invalid-target":L.INVALID_TARGET,"ast-error":L.AST_PARSE_ERROR,"writeback-failed":L.WRITE_IO_ERROR,"rollback-failed":L.RECOVERY_REQUIRED,unknown:L.INTERNAL_ERROR};function ur(e){return Xb[e]}function Me(e){return e instanceof Error&&e.message?e.message:String(e)}function Tf(e){return/\.(?:[cm]?[jt]sx?|css|scss|sass|mdx|json)$/i.test(e)}function zb(e){let t=tn(e);if(!kb.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=>Cb.map(a=>`${s}/${a}`))}function Hb(e){let n=tn(e).startsWith("src/app/")?"src/app":"app";return[`${n}/globals.css`,`${n}/global.css`]}function Wb(e){return Mf(e,/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+\.css(?:\?[^"']*)?)["']/g)}function Yb(e){return Mf(e,/@import\s+(?:url\(\s*)?["']([^"']+)["']/g)}function Mf(e,t){let n=[];for(let r of e.matchAll(t)){let o=_f(r[1]??"");o&&n.push(o)}return n}function Nf(e,t){let n=_f(t);return!n||n.startsWith("tailwindcss")||n.startsWith("http:")||n.startsWith("https:")?null:n.startsWith("@/")?tn(`src/${n.slice(2)}`):n.startsWith("./")||n.startsWith("../")?tn(`${Gb(e)}/${n}`):n.startsWith("/")?tn(n.slice(1)):ua(n)?tn(n):null}function _f(e){return e.split(/[?#]/,1)[0]?.trim()??""}function ua(e){return/\.css$/i.test(e)}function Gb(e){let t=tn(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n):""}function Of(e){return Array.from(new Set(e))}function tn(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 Zb(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 To(e){return e?.map(t=>({...t}))}function Ff(e,t){if(t===null||e?.kind!=="value-binding"||e.sourceKind!=="repeat-template")return e;let n=e.collectionIndexMap?.[t]??t,r=To(e.collectionPathMap?.[t])??To(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:To(e.path),locator:e.locator?{...e.locator,path:r}:e.locator,collectionIndexMap:e.collectionIndexMap?[...e.collectionIndexMap]:void 0,collectionPathMap:e.collectionPathMap?.map(o=>To(o)??[])}}function Qb(e,t,n){let r=new Set;for(let p of t.regions)if(p.kind==="repeat-region")for(let h of p.childKeys)r.add(h);if(r.size===0)return e;let o=new Map(e.entries.map(p=>[p.key,p])),i=[],s=new Map,a=(p,h)=>yb(p,h),c=(p,h,E)=>{let v=o.get(p);if(!v)return a(p,E);let C=a(p,E),R={...v,key:C,parentKey:h,childKeys:[]};return i.push(R),R.childKeys=v.childKeys.flatMap(w=>l(w,E,C)),C},l=(p,h,E)=>{if(!r.has(p))return[c(p,E,h)];let v=d(p,h),C=[];for(let R=0;R<v;R+=1)C.push(c(p,E,[...h,R]));return C},u=Of([...e.rootKeys,...e.entries.filter(p=>p.parentKey===null).map(p=>p.key)]);for(let p of u){if(!r.has(p)){c(p,null,[]);continue}let h=d(p,[]);for(let E=0;E<h;E+=1)c(p,null,[E])}return{...e,rootKeys:[...e.rootKeys],entries:i};function d(p,h){let E=new Set;for(let v of m(p)){let C=n.get(v);if(C){for(let R of[...C.textTargets.values(),...C.elementPropertyTargets.values()])if(!(R?.kind!=="value-binding"||R.sourceKind!=="repeat-template"))for(let w of tI(R))w.length<=h.length||nI(w,h)&&E.add(w[h.length])}}return E.size>0?E.size:Zb(n.get(p))}function m(p){let h=s.get(p);if(h)return h;let E=[p],v=o.get(p);for(let C of v?.childKeys??[])E.push(...m(C));return s.set(p,E),E}}function qb(e){let t=e.parts.at(-1);return typeof t?.repeatIndex=="number"?t.repeatIndex:null}function eI(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((Xe(s.key)??s.key)===n){if(s.key===t)return i;i+=1}return null}function tI(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 nI(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 rI(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 oI(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}}import ha from"node:path";import{TextDecoder as iI}from"node:util";import{SITE_EDIT_SOURCE_ALLOWED_APP_FILES as Lf,SITE_EDIT_SOURCE_ALLOWED_DIRS as jf,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as Bf,SiteEditSourceFileResponseSchema as da,SiteEditSourceLocationSchema as sI,SiteEditSourcePathSchema as Fo,SiteEditSourceTreeResponseSchema as aI,isSiteEditTextSourcePath as cI}from"@vcp-dev/contracts";var lI=[...Bf,...Lf,...jf],fa=2e3,pa=12,ma=24*1024*1024,Df=512*1024,uI=new Set(["image/avif","image/gif","image/jpeg","image/png","image/webp","image/x-icon"]),dI={".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"},fI={".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"},pI=new iI("utf-8",{fatal:!0});async function Mo(e,t={}){let{files:n,truncated:r}=await bI(e,t),o=CI(n.map(i=>i.metadata));return aI.parse({nodes:o,defaultPath:vI(n.map(i=>i.metadata)),totalFiles:n.length,...r?{truncated:r}:{}})}async function _o(e,t,n={}){let r=Fo.parse(t.path),o=await gI(e,r,n);if(!o)throw new Error(`Source file not found: ${r}`);if(ga(r)){let s=Uf(r),a=await xI(e,{path:r,sizeBytes:o.sizeBytes,mimeType:s});return da.parse({path:r,kind:"binary",language:null,sizeBytes:o.sizeBytes,mimeType:s,readonly:!0,...a})}let i=await mI(e,r);return i.ok?da.parse({path:r,kind:"text",language:Kf(r),sizeBytes:i.sizeBytes,contentHash:ce(i.content),readonly:!1,content:i.content}):da.parse({path:r,kind:"binary",language:null,sizeBytes:i.sizeBytes,mimeType:"application/octet-stream",readonly:!0,previewUnavailableReason:"unsupported-mime"})}async function mI(e,t){if(e.readFileBytes){let o=await e.readFileBytes(t),i=hI(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 hI(e){if(e.includes(0))return null;try{return pI.decode(e)}catch{return null}}async function gI(e,t,n){if(!EI(t,n))return null;let r=await yI(e,t);return r?{path:t,sizeBytes:r.sizeBytes}:null}async function yI(e,t){if(e.getFileInfo)return e.getFileInfo(t);if(e.listFiles){let o=$f(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(ga(t))return{path:t,sizeBytes:0};let n=await e.readFile(t);return{path:t,sizeBytes:Buffer.byteLength(n,"utf8")}}async function xI(e,t){if(!uI.has(t.mimeType))return{previewUnavailableReason:"unsupported-mime"};if(t.sizeBytes>Df)return{previewUnavailableReason:"too-large"};if(!e.readFileBytes)return{previewUnavailableReason:"bytes-unavailable"};let n=await e.readFileBytes(t.path);return n.byteLength>Df?{previewUnavailableReason:"too-large"}:{contentBase64:Buffer.from(n).toString("base64")}}function EI(e,t){return Bf.some(n=>n===e)||Lf.some(n=>n===e)||jf.some(n=>e===n||e.startsWith(`${n}/`))?!0:!e.startsWith("app/")&&!e.startsWith("src/app/")?!1:(t.routeEntryFiles??[]).some(n=>{let r=Fo.safeParse(n);return r.success&&r.data===e})}function Oo(e,t){if(!t.sourceLocator)throw new Error(`Source location not available for key: ${e.key}`);return sI.parse({key:e.key,routeId:e.routeId,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 $f(e){return Array.isArray(e)?{files:e}:e}function SI(e){return["max-files","max-depth","max-total-bytes"].filter(n=>e.includes(n))}async function bI(e,t){if(!e.listFiles)throw new Error("Source file listing is unavailable.");let n=$f(await e.listFiles({roots:II(t),maxFiles:fa+1,maxDepth:pa,maxTotalBytes:ma+1})),r=new Map,o=new Set(n.truncated?.reasons),i=0;for(let a of[...n.files].sort((c,l)=>c.path.localeCompare(l.path))){let c=Fo.safeParse(a.path);if(!c.success)continue;let l=c.data;if(l.split("/").length>pa){o.add("max-depth");continue}if(r.size>=fa){o.add("max-files");break}if(i+a.sizeBytes>ma){o.add("max-total-bytes");break}r.set(l,{path:l,sizeBytes:a.sizeBytes,metadata:kI(l,a.sizeBytes)}),i+=a.sizeBytes}return{files:[...r.values()].sort((a,c)=>a.path.localeCompare(c.path)),...o.size>0?{truncated:{reasons:SI([...o]),maxFiles:fa,maxDepth:pa,maxTotalBytes:ma}}:{}}}function II(e){let t=new Set(lI);for(let n of e.routeEntryFiles??[]){let r=Fo.safeParse(n);r.success&&(r.data.startsWith("app/")||r.data.startsWith("src/app/"))&&t.add(r.data)}return[...t]}function kI(e,t){return ga(e)?{path:e,kind:"binary",language:null,sizeBytes:t,mimeType:Uf(e),readonly:!0}:{path:e,kind:"text",language:Kf(e),sizeBytes:t,readonly:!1}}function CI(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 Vf(t)}function Vf(e){return e.map(t=>t.kind==="directory"?{...t,children:Vf(t.children)}:t).sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}function vI(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 ga(e){return!cI(e)}function Uf(e){let t=ha.posix.extname(e).toLowerCase();return!t&&ha.posix.basename(e).toLowerCase()==="favicon"?"image/x-icon":dI[t]??"application/octet-stream"}function Kf(e){let t=ha.posix.extname(e).toLowerCase();return fI[t]??"plaintext"}var Do=class{constructor(t){this.options=t,this.fileSystem=new Kn(t.files),this.engine=this.createEngine(this.fileSystem)}get status(){return this.engine.status}async setActiveRoute(t){await this.engine.setActiveRoute(t)}getDocument(t){return Rr(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){return Pr(this.engine.getObjectEditContext(t,n))}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(){return Mo(this.fileSystem,{routeEntryFiles:this.options.routes.map(t=>t.entryFile)})}getSourceFile(t){return _o(this.fileSystem,t,{routeEntryFiles:this.options.routes.map(n=>n.entryFile)})}resolveSourceLocation(t){return Oo(t,this.engine.getRenderDetail(t.key,t.routeId))}async planOperation(t){let n=PI.safeParse(t);if(!n.success)return{result:vr(t,n.error.issues.map(i=>i.message))};let r=new Kn(this.options.files),o=this.createEngine(r,{emitEvents:!1});try{for(let u of this.getPlanningRouteIds(n.data))await o.setActiveRoute(u);let i=this.withInferredNodeRouteId(n.data,o),s=await o.execute(i);if(!s.ok)return{result:{ok:!1,error:{code:s.error?.code??"INTERNAL_ERROR",message:s.error?.message??"Operation failed"},data:{requestId:s.requestId,kind:s.kind,target:s.target,resultVersion:s.resultVersion}}};let a={ok:!0,data:Lt(s)},c=r.getChangedFiles();if(c.length===0)return{result:a};let l=wI.parse({siteId:t.siteId,baseSnapshotId:t.baseSnapshotId,operationId:t.id,reason:`site-edit:${t.kind}`,patches:c.map(u=>AI(u,t.kind==="source-edit")),changedRouteIds:this.getChangedRouteIds(c.map(u=>u.path)),diagnostics:[]});return this.options.onEvent?.({type:"site-edit.operation.planned",siteId:t.siteId,operationId:t.id,baseSnapshotId:t.baseSnapshotId,changedFiles:l.patches.map(u=>u.path),at:new Date().toISOString()}),{result:a,patchPlan:l}}finally{o.dispose()}}dispose(){this.engine.dispose()}getPlanningRouteIds(t){let n=this.getExplicitPlanningRouteId(t);if(n){let r=this.options.routes.find(o=>o.routeId===n);return r?[r.routeId]:this.options.routes.map(o=>o.routeId)}if(t.target.kind==="node"){let r=this.getBuiltRouteIdsForKey(t.target.key);if(r.length>0)return r}return this.options.routes.map(r=>r.routeId)}getExplicitPlanningRouteId(t){if(t.routeId)return t.routeId;if(t.target.kind==="route")return t.target.routeId;if(t.params.kind==="set-class-name-source")return t.params.routeId;if(t.params.kind==="apply-style-draft")return t.params.className?.routeId}getBuiltRouteIdsForKey(t){let n=[];for(let r of this.options.routes)try{this.engine.getRenderDetail(t,r.routeId),n.push(r.routeId)}catch{}return n}withInferredNodeRouteId(t,n){if(t.target.kind!=="node"||t.routeId)return t;let r=this.findRouteIdForNodeTarget(n,t.target.key);return r?{...t,routeId:r}:t}findRouteIdForNodeTarget(t,n){for(let r of this.options.routes)try{if(t.getDocument(r.routeId).entries.some(i=>i.key===n))return r.routeId}catch{}return this.options.routes.length===1?this.options.routes[0]?.routeId:void 0}createEngine(t,n={}){let r=n.emitEvents??!0;return dr({projectRoot:"/snapshot",fileSystem:t,routes:this.options.routes.map(o=>({routeId:o.routeId,entryFile:o.entryFile})),onEvent:r&&this.options.onEvent?o=>{let i=wr(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})}getChangedRouteIds(t){let n=new Set(t),r=new Set(this.options.routes.map(s=>s.entryFile));if(t.some(s=>!r.has(s)))return this.options.routes.map(s=>s.routeId);let i=this.options.routes.filter(s=>n.has(s.entryFile)).map(s=>s.routeId);return i.length>0?i:this.options.routes.map(s=>s.routeId)}};function AI(e,t){return e.after===void 0?{path:e.path,operation:"delete",...t||e.before===void 0?{}:{expectedHash:ce(e.before)}}:{path:e.path,operation:e.before===void 0?"create":"update",...t||e.before===void 0?{}:{expectedHash:ce(e.before)},fullContent:e.after}}function TI(e){return new Do(e)}import{SiteEditOperationRequestSchema as MI}from"@vcp-dev/contracts";import rt from"node:fs/promises";import Ae from"node:path";import{SITE_EDIT_SOURCE_ALLOWED_DIRS as NI,SITE_EDIT_SOURCE_ALLOWED_ROOT_FILES as FI}from"@vcp-dev/contracts";var Lo=class{constructor(t){this.options=t,this.fileSystem=this.createFileSystem(),this.engine=dr({...t,fileSystem:this.fileSystem})}get status(){return this.engine.status}registerRoute(t,n){this.engine.registerRoute(t,n)}unregisterRoute(t){this.engine.unregisterRoute(t)}async setActiveRoute(t){await this.engine.setActiveRoute(t)}getDocument(t){return this.engine.getDocument(t)}getHistoryStatus(){return this.engine.getHistoryStatus()}getObjectEditContext(t,n){return this.engine.getObjectEditContext(t,n)}getRenderDetail(t,n){return this.engine.getRenderDetail(t,n)}getClassNameSource(t,n){return this.engine.getClassNameSource(t,n)}getSourceTree(){return Mo(this.fileSystem,{routeEntryFiles:this.engine.getRouteEntryFiles()})}getSourceFile(t){return _o(this.fileSystem,t,{routeEntryFiles:this.engine.getRouteEntryFiles()})}resolveSourceLocation(t){return Oo(t,this.engine.getRenderDetail(t.key,t.routeId))}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 rt.readFile(Ae.join(n,r),"utf8")},async readFileBytes(r){return rt.readFile(Ae.join(n,r))},async getFileInfo(r){let o=Ae.join(n,...r.split("/"));try{let i=await rt.lstat(o);return!i.isFile()||i.isSymbolicLink()?null:{path:r,sizeBytes:i.size}}catch{return null}},async writeFile(r,o){await ko(Ae.join(n,r),o)},async createExclusive(r,o){let i=Ae.join(n,r);await rt.mkdir(Ae.dirname(i),{recursive:!0});let s=await rt.open(i,"wx");try{await s.writeFile(o,"utf8")}catch(a){throw await s.close(),await rt.rm(i,{force:!0}),a}await s.close()},async deleteFile(r){await rt.rm(Ae.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=Ae.join(n,i),a=Ae.dirname(Ae.join(n,o));for(;a!==s&&a.startsWith(`${s}${Ae.sep}`);){try{await rt.rmdir(a)}catch(c){if(c instanceof Error&&"code"in c&&c.code==="ENOENT"){a=Ae.dirname(a);continue}break}a=Ae.dirname(a)}},async exists(r){try{return await rt.access(Ae.join(n,r)),!0}catch{return!1}},async listFiles(r={}){let o=r.roots??[...FI,...NI],i=[],s=new Set,a=new Set,c=0;for(let d of o)await u(d,i,1);let l=i.sort((d,m)=>d.path.localeCompare(m.path));return a.size>0?{files:l,truncated:{reasons:[...a]}}:{files:l};async function u(d,m,p){if(r.maxDepth!==void 0&&p>r.maxDepth){a.add("max-depth");return}let h=Ae.join(n,...d.split("/")),E;try{E=await rt.lstat(h)}catch{return}if(E.isSymbolicLink())return;if(E.isFile()){let C=E.ino>0?`${String(E.dev)}:${String(E.ino)}`:null;if(C&&s.has(C))return;if(r.maxFiles!==void 0&&m.length>=r.maxFiles){a.add("max-files");return}if(r.maxTotalBytes!==void 0&&c+E.size>r.maxTotalBytes){a.add("max-total-bytes");return}C&&s.add(C),m.push({path:d,sizeBytes:E.size}),c+=E.size;return}if(!E.isDirectory())return;if(r.maxFiles!==void 0&&m.length>=r.maxFiles){a.add("max-files");return}let v=await rt.readdir(h,{withFileTypes:!0});for(let C of v)C.isSymbolicLink()||await u(`${d}/${C.name}`,m,p+1)}},getVersion(r){return t.get(r)??1},bumpVersion(r){let o=(t.get(r)??1)+1;return t.set(r,o),o}}}};function ya(e){return new Lo(e)}var jo=class{constructor(t){this.options=t,this.listeners=new Set,this.engine=ya({projectRoot:t.projectRoot,fileSystem:t.fileSystem,routes:t.routes.map(n=>({routeId:n.routeId,entryFile:n.entryFile})),onEvent:n=>{let r=wr(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.initialDocumentVersion!==void 0?{initialDocumentVersion:t.initialDocumentVersion}:{},siteId:t.siteId,snapshotId:t.snapshotId})}get status(){return this.engine.status}registerRoute(t,n){this.engine.registerRoute(t,n)}unregisterRoute(t){this.engine.unregisterRoute(t)}async setActiveRoute(t){await this.engine.setActiveRoute(t)}getDocument(t){return{ok:!0,data:Rr(this.engine.getDocument(t),{siteId:this.options.siteId,snapshotId:this.options.snapshotId})}}getInternalDocument(t){return this.engine.getDocument(t)}getStyleContext(t){return{ok:!0,data:this.engine.getDocument(t).styleContext??null}}async getHistoryStatus(){return{ok:!0,data:await this.engine.getHistoryStatus()}}getObjectEditContext(t,n){return{ok:!0,data:Pr(this.engine.getObjectEditContext(t,n))}}getClassNameSource(t,n){return{ok:!0,data:this.engine.getClassNameSource(t,n)}}async getSourceTree(){return{ok:!0,data:await this.engine.getSourceTree()}}async getSourceFile(t){return{ok:!0,data:await this.engine.getSourceFile(t)}}resolveSourceLocation(t){return{ok:!0,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=MI.safeParse(r);if(!o.success)return vr(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,error:{code:s.code,message:s.message},data:{requestId:i.requestId,kind:i.kind,target:i.target,resultVersion:i.resultVersion,...i.affectedFiles?.length?{affectedFiles:i.affectedFiles}:{}}}}return{ok:!0,data:Lt(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,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,data:Lt(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,error:{code:r.code,message:r.message},data:{requestId:n.requestId,kind:n.kind,target:n.target,resultVersion:n.resultVersion}}}return{ok:!0,data:Lt(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 _I(e){return new jo(e)}import{createHash as OI,randomUUID as Aa}from"node:crypto";import he from"node:fs/promises";import ye from"node:path";var ze=1,Ea=1,DI=2,LI="index.json",jI="recovery.json",BI="transaction-journal.json",$I="document-version.json",$o={maxEntries:100,maxSessionBytes:512*1024*1024,maxEntryBytes:128*1024*1024},U={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"},X=class extends Error{constructor(t,n,r){super(n),this.name="FileHistoryStoreError",this.code=t,r?.cause!==void 0&&(this.cause=r.cause)}};async function qf(e,t={}){let n=ek(e),r=rk(t.limits),o=xa(n),i=tk(n),s=await _e(i),a=await _e(o)||s;a||(await zI(n),await HI(n)),a||await ok(n);let c=await Le(n),l=new Set(a?(await Xo(n)).map(d=>d.stageId):[]);a||await fr(n,c.entryIds);let u=async()=>{if(await _e(o)||s)throw new X(U.RECOVERY_PENDING,"history store requires explicit recovery before accepting writes")};return{rootDir:n,recoveryRequired:a,async readDocumentVersion(){return Zf(n)},async writeDocumentVersion(d){if(await u(),!Number.isInteger(d)||d<0)throw new X(U.INVALID_SCHEMA,"document version must be a non-negative integer");let m=await Zf(n);await pr(sp(n),{schemaVersion:1,version:Math.max(m,d)})},async stageAppend(d,m={}){await u();let p=await Xf(d,r),h={schemaVersion:Ea,stageId:Aa(),entryId:p.entryId,blobIds:p.blobs.map(E=>E.digest)};try{await zf(n,p),await KI(n,h,m.durableManifest!==!1)}catch(E){try{await Wf(n,h)}catch(v){throw new X(U.INDEX_CORRUPT,"staged history cleanup failed after preparation error",{cause:v})}throw E}return{stageId:h.stageId,entryId:h.entryId,blobIds:h.blobIds}},async discardStage(d){await u(),ka(d);let m=await ba(n,d);m&&await Wf(n,m)},async previewStagedAppend(d,m){return await u(),(await Jf(n,r,d,m)).transition},async previewCursor(d,m){await u();let p=await Le(n);return Ca(p,m),Sa(d,p.entryIds.length),ep(p,p.entryIds,d)},async publishStagedAppend(d,m,p){if(await u(),Vo(d,"entryId"),p){ka(p);let E=await ba(n,p);if(!E||E.entryId!==d)throw new X(U.INVALID_SCHEMA,"history stage does not match the published entry")}let h=await Jf(n,r,d,m);return Gf({rootDir:n,previousDigest:h.current.digest,entryIds:h.entryIds,cursor:h.cursor,afterWrite:async()=>{p?await Uo(n,p):await XI(n,d),await fr(n,h.entryIds)}})},async append(d){await u();let m=await Le(n),p=await Xf(d,r),h=[...m.entryIds];m.cursor<h.length-1&&h.splice(m.cursor+1),h.push(p.entryId);try{await zf(n,p);let E=await tp(n,h,r);return await Na(n,E.entryIds,E.cursor),await fr(n,E.entryIds),Le(n)}catch(E){throw await fr(n,m.entryIds),E}},async readEntry(d){return Vo(d,"entryId"),hr(n,d)},async readBlob(d){Vo(d,"blobId");let m=await Ba(n,d),p=await _t(m,U.NOT_FOUND,"blob");return Fa(p,d,m),p},async readIndex(){return Le(n)},async readStatus(){let d=await Le(n);return{canUndo:d.undoIds.length>0,canRedo:d.redoIds.length>0,undoDepth:d.undoIds.length,redoDepth:d.redoIds.length,cursor:d.cursor,recoveryRequired:await _e(o)||await _e(i)}},async readUndoRedoIds(){let d=await Le(n);return{undoIds:d.undoIds,redoIds:d.redoIds,currentId:d.currentId}},async setCursor(d,m){await u();let p=await Le(n);return Ca(p,m),Sa(d,p.entryIds.length),Gf({rootDir:n,previousDigest:p.digest,entryIds:p.entryIds,cursor:d})},async markRecoveryRequired(d){await _e(o)||await pr(xa(n),{schemaVersion:ze,reason:nk(d),createdAt:new Date().toISOString()})},async clearRecoveryRequired(){await he.rm(xa(n),{force:!0})},async readTransactionJournal(){return await _e(i)?Bo(i):null},async writeTransactionJournal(d){await u(),ap(d);try{await pr(i,d)}catch(p){let h=await Bo(i).catch(()=>null);if(h&&Buffer.from(je(h)).equals(Buffer.from(je(d))))return;throw h?new X(U.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous",{cause:p}):p}let m=await Bo(i);if(!Buffer.from(je(m)).equals(Buffer.from(je(d))))throw new X(U.INDEX_CORRUPT,"transaction journal publish outcome is ambiguous")},async clearTransactionJournal(d){let m=await _e(i)?await Bo(i):null;if(m&&m.transactionId!==d)throw new X(U.INVALID_SCHEMA,"transaction journal changed concurrently");try{await he.rm(i,{force:!0})}catch(p){if(!await _e(i))return;throw p}if(await _e(i))throw new X(U.INDEX_CORRUPT,"transaction journal clear outcome is ambiguous");s=!1},async cleanupTmp(){await u();for(let m of l)await Uo(n,m),l.delete(m);await WI(n);let d=await Le(n);await fr(n,d.entryIds)}}}async function Jf(e,t,n,r){Vo(n,"entryId");let o=await Le(e);Ca(o,r);let i=await hr(e,n),s=[...o.entryIds];o.cursor<s.length-1&&s.splice(o.cursor+1),s.push(i.id);let a=await tp(e,s,t);return{current:o,entryIds:a.entryIds,cursor:a.cursor,transition:ep(o,a.entryIds,a.cursor)}}function ep(e,t,n){return Sa(n,t.length),{expectedIndexDigest:e.digest,publishedIndexDigest:VI(t,n),publishedCursor:n,publishedCurrentId:t[n]??null}}function VI(e,t){return Ot(je({schemaVersion:ze,entryIds:e,cursor:t}))}function Sa(e,t){if(!Number.isInteger(e)||e<-1||e>=t)throw new X(U.INVALID_SCHEMA,`history cursor is out of bounds: ${e}`)}function UI(e){if(!ot(e))return!1;let t=e.publishedCursor,n=e.publishedCurrentId;return!Be(e.expectedIndexDigest)||!Be(e.publishedIndexDigest)||!Number.isInteger(t)||t<-1||n!==null&&!Be(n)?!1:t===-1?n===null:Be(n)}async function Xf(e,t){if(!e.kind.trim())throw new X(U.INVALID_JSON,"history entry kind must not be empty");let n=[],r=[];for(let c of e.blobs??[]){if(!c.name.trim())throw new X(U.INVALID_JSON,"history blob name must not be empty");let l=qI(c.data),u=Ot(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:ze,kind:e.kind,manifest:e.manifest,blobs:r},i=je({...o}),s=Ot(i),a=i.byteLength+n.reduce((c,l)=>c+l.sizeBytes,0);if(a>t.maxEntryBytes)throw new X(U.CAPACITY_EXCEEDED,`history entry exceeds maxEntryBytes (${a} > ${t.maxEntryBytes})`);return{entryBody:o,entryId:s,blobs:n}}async function zf(e,t){let n=Oa(e,t.entryId),r={id:t.entryId,...t.entryBody},o=[...t.blobs.map(a=>Hf(Da(e,a.digest),a.bytes,{kind:"blob",digest:a.digest},ja(e,a.digest))),Hf(n,je(r),{kind:"entry",digest:t.entryId},La(e,t.entryId))],s=(await Promise.allSettled(o)).find(a=>a.status==="rejected");if(s)throw s.reason}async function Hf(e,t,n,r){let o=await Pa(e)??(r?await Pa(r):null);if(o!==null){if(Buffer.compare(o,t)!==0)throw new X(n.kind==="blob"?U.BLOB_CORRUPT:U.ENTRY_CORRUPT,`${n.kind} content mismatch for ${n.digest}`);return}await op(e,t)}async function tp(e,t,n){let r=[...t],o=r.length-1;for(;;){if((await rp(e,r)).totalBytes<=n.maxSessionBytes&&r.length<=n.maxEntries)return{entryIds:r,cursor:o};if(o<=0||r.length===0)throw new X(U.CAPACITY_EXCEEDED,"history store exceeds capacity limits and the current entry cannot be trimmed");r.shift(),o-=1}}async function KI(e,t,n){Ta(t);let r=_a(e,t.stageId);if(n){await pr(r,t);return}await QI(r,t)}async function ba(e,t){let n=await Pa(_a(e,t));if(n===null)return null;let r=gr(Buffer.from(n).toString("utf8"),`history stage ${t}`),o=Ta(r);if(o.stageId!==t)throw new X(U.INVALID_SCHEMA,`history stage id mismatch: ${t}`);return o}async function Xo(e){let t=[];for(let n of await Jo(Ma(e))){if(!n.endsWith(".json"))continue;let r=n.slice(0,-5);ka(r);let o=await ba(e,r);o&&t.push(o)}return t}async function Wf(e,t){Ta(t);let n=await Le(e),r=(await Xo(e)).filter(s=>s.stageId!==t.stageId),o=new Set(n.entryIds),i=new Set;for(let s of n.entryIds){let a=await hr(e,s);for(let c of a.blobs)i.add(c.digest)}for(let s of r){o.add(s.entryId);for(let a of s.blobIds)i.add(a)}o.has(t.entryId)||await Yf(Oa(e,t.entryId),La(e,t.entryId));for(let s of t.blobIds)i.has(s)||await Yf(Da(e,s),ja(e,s));await Uo(e,t.stageId),await wa(yr(e)),await wa(xr(e))}async function Uo(e,t){await Ia(_a(e,t)),await JI(e)}async function JI(e){try{await he.rmdir(Ma(e))}catch(t){if(Er(t)||ot(t)&&t.code==="ENOTEMPTY")return;throw t}}async function XI(e,t){for(let n of await Xo(e))n.entryId===t&&await Uo(e,n.stageId)}async function Ia(e){if(await he.rm(e,{force:!0}),await _e(e))throw new X(U.INDEX_CORRUPT,`unable to remove staged history object: ${e}`)}async function Yf(e,t){await Ia(e),await Ia(t)}function Ta(e){if(!ot(e)||e.schemaVersion!==Ea||typeof e.stageId!="string"||!np(e.stageId)||!Be(e.entryId))throw new X(U.INVALID_SCHEMA,"history stage schema is invalid");let t=ip(e.blobIds,"history stage blobIds");return{schemaVersion:Ea,stageId:e.stageId,entryId:e.entryId,blobIds:t}}function ka(e){if(!np(e))throw new X(U.INVALID_PATH,"history stageId must be a UUID")}function np(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 fr(e,t){let n=new Set(t),r=new Set;for(let c of t){let l=await hr(e,c);for(let u of l.blobs)r.add(u.digest)}for(let c of await Xo(e)){n.add(c.entryId);for(let l of c.blobIds)r.add(l)}let o=yr(e),i=await Jo(o);for(let c of i){if(!c.endsWith(".json"))continue;let l=Qf(c.slice(0,-5));l&&!n.has(l)&&await Ko(ye.join(o,c))}let s=xr(e),a=await Jo(s);for(let c of a){let l=Qf(c);l&&!r.has(l)&&await Ko(ye.join(s,c))}}async function Le(e){let t=zo(e),n=await _t(t,U.NOT_FOUND,"index"),r=gr(Buffer.from(n).toString("utf8"),"index"),o=YI(r),i=[...o.entryIds],{totalBytes:s}=await rp(e,i),a=i.slice(0,o.cursor+1).reverse(),c=i.slice(o.cursor+1);return{schemaVersion:ze,digest:o.digest,entryIds:i,cursor:o.cursor,currentId:i[o.cursor]??null,undoIds:a,redoIds:c,totalBytes:s}}async function rp(e,t){let n=0,r=new Set,o=zo(e),i=await _t(o,U.NOT_FOUND,"index");n+=i.byteLength;for(let s of t){let a=await hr(e,s),c=await cp(e,s),l=await _t(c,U.NOT_FOUND,"entry");n+=l.byteLength;for(let u of a.blobs){if(r.has(u.digest))continue;r.add(u.digest);let d=await Ba(e,u.digest),m=await _t(d,U.NOT_FOUND,"blob");Fa(m,u.digest,d),n+=m.byteLength}}return{totalBytes:n}}async function hr(e,t){let n=await cp(e,t),r=await _t(n,U.NOT_FOUND,"entry"),o=gr(Buffer.from(r).toString("utf8"),`entry ${t}`),i=GI(o);if(i.id!==t)throw new X(U.ENTRY_CORRUPT,`entry id mismatch for ${t}`);if(Ot(je({schemaVersion:i.schemaVersion,kind:i.kind,manifest:i.manifest,blobs:i.blobs}))!==t)throw new X(U.ENTRY_CORRUPT,`entry hash mismatch for ${t}`);for(let a of i.blobs){let c=await Ba(e,a.digest),l=await _t(c,U.NOT_FOUND,"blob");Fa(l,a.digest,c)}return i}async function Na(e,t,n){let r={schemaVersion:ze,digest:Ot(je({schemaVersion:ze,entryIds:t,cursor:n})),entryIds:t,cursor:n};await pr(zo(e),r)}function Ca(e,t){if(t!==void 0&&e.digest!==t)throw new X(U.INVALID_SCHEMA,`history index changed concurrently (expected ${t}, current ${e.digest})`)}async function Gf(e){let t=Ot(je({schemaVersion:ze,entryIds:e.entryIds,cursor:e.cursor}));try{return await Na(e.rootDir,e.entryIds,e.cursor),await e.afterWrite?.(),await Le(e.rootDir)}catch(n){let r=await Le(e.rootDir).catch(()=>null);if(r?.digest===t)return r;throw r?.digest===e.previousDigest?n:new X(U.INDEX_CORRUPT,"history index publish outcome is ambiguous",{cause:n})}}async function zI(e){await he.mkdir(e,{recursive:!0}),await he.mkdir(yr(e),{recursive:!0}),await he.mkdir(xr(e),{recursive:!0}),await he.mkdir(mr(e),{recursive:!0})}async function HI(e){await he.rm(mr(e),{recursive:!0,force:!0}),await he.mkdir(mr(e),{recursive:!0})}async function WI(e){let t=mr(e);await he.mkdir(t,{recursive:!0});for(let n of await Jo(t))n!=="stages"&&await he.rm(ye.join(t,n),{recursive:!0,force:!0})}function YI(e){if(!ot(e))throw new X(U.INDEX_CORRUPT,"index.json must be an object");if(e.schemaVersion!==ze)throw new X(U.INVALID_SCHEMA,`unsupported index schemaVersion: ${String(e.schemaVersion)}`);let t=ip(e.entryIds,"index.entryIds"),n=e.cursor;if(!Number.isInteger(n)||n<-1||n>=t.length)throw new X(U.INDEX_CORRUPT,"index cursor is out of bounds");let r=n,o=e.digest;if(!Be(o))throw new X(U.INDEX_CORRUPT,"index digest is invalid");let i=Ot(je({schemaVersion:ze,entryIds:t,cursor:r}));if(o!==i)throw new X(U.INDEX_CORRUPT,"index digest mismatch");return{schemaVersion:ze,digest:o,entryIds:t,cursor:r}}function GI(e){if(!ot(e))throw new X(U.ENTRY_CORRUPT,"entry must be an object");if(e.schemaVersion!==ze)throw new X(U.INVALID_SCHEMA,`unsupported entry schemaVersion: ${String(e.schemaVersion)}`);let t=e.id;if(!Be(t))throw new X(U.ENTRY_CORRUPT,"entry id is invalid");let n=e.kind;if(typeof n!="string"||n.trim().length===0)throw new X(U.ENTRY_CORRUPT,"entry kind is invalid");let r=Ra(e.manifest,"entry.manifest"),o=ZI(e.blobs);return{id:t,schemaVersion:ze,kind:n,manifest:r,blobs:o}}function ZI(e){if(!Array.isArray(e))throw new X(U.ENTRY_CORRUPT,"entry blobs must be an array");return e.map((t,n)=>{if(!ot(t))throw new X(U.ENTRY_CORRUPT,`entry blob ref ${n} must be an object`);let r=t.name;if(typeof r!="string"||r.trim().length===0)throw new X(U.ENTRY_CORRUPT,`entry blob ref ${n} name is invalid`);let o=t.digest;if(!Be(o))throw new X(U.ENTRY_CORRUPT,`entry blob ref ${n} digest is invalid`);let i=t.sizeBytes;if(!Number.isInteger(i)||i<0)throw new X(U.ENTRY_CORRUPT,`entry blob ref ${n} sizeBytes is invalid`);return{name:r,digest:o,sizeBytes:i}})}async function pr(e,t){await op(e,je(t))}async function QI(e,t){let n=ye.dirname(e),r=ye.basename(e),o=ye.join(n,`.${r}.${process.pid}.${Aa()}.tmp`);await he.mkdir(n,{recursive:!0});try{await he.writeFile(o,je(t),{flag:"wx"}),await he.rename(o,e)}finally{await Ko(o)}}async function op(e,t){let n=ye.dirname(e),r=ye.basename(e),o=ye.join(n,`.${r}.${process.pid}.${Aa()}.tmp`);await he.mkdir(n,{recursive:!0});try{let i=await he.open(o,"wx");try{await i.writeFile(t),await i.sync()}finally{await i.close()}await he.rename(o,e),await wa(n)}finally{await Ko(o)}}function je(e){return Buffer.from(JSON.stringify(va(e)),"utf8")}function va(e){if(Array.isArray(e))return e.map(t=>va(t));if(ot(e)){let t={};for(let n of Object.keys(e).sort())t[n]=va(e[n]);return t}return e}function gr(e,t){try{return JSON.parse(e)}catch(n){throw new X(U.INVALID_JSON,`${t} is not valid JSON`,{cause:n})}}function Ra(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=>Ra(n,t));if(ot(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=Ra(o,t);return n}break}throw new X(U.INVALID_JSON,`${t} must be JSON-serializable`)}function ip(e,t){if(!Array.isArray(e))throw new X(U.INDEX_CORRUPT,`${t} must be an array`);return e.map((n,r)=>{if(!Be(n))throw new X(U.INDEX_CORRUPT,`${t}[${r}] is invalid`);return n})}function Vo(e,t){if(!Be(e))throw new X(U.INVALID_PATH,`${t} must be a sha256 digest`)}function Be(e){return typeof e=="string"&&/^sha256:[a-f0-9]{64}$/u.test(e)}function Ot(e){return`sha256:${OI("sha256").update(e).digest("hex")}`}function qI(e){return typeof e=="string"?Buffer.from(e,"utf8"):Buffer.from(e)}async function _t(e,t,n){try{return await he.readFile(e)}catch(r){throw new X(t,`${n} not found: ${e}`,{cause:r})}}async function Pa(e){try{return await he.readFile(e)}catch(t){if(Er(t))return null;throw t}}function Fa(e,t,n){if(Ot(e)!==t)throw new X(U.BLOB_CORRUPT,`blob hash mismatch for ${n}`)}async function _e(e){try{return await he.access(e),!0}catch(t){if(Er(t))return!1;throw t}}async function Ko(e){try{await he.rm(e,{force:!0,recursive:!0})}catch{}}async function wa(e){try{let t=await he.open(e,"r");try{await t.sync()}finally{await t.close()}}catch{}}async function Jo(e){try{return await he.readdir(e)}catch(t){if(Er(t))return[];throw t}}function ek(e){if(typeof e!="string"||e.trim().length===0)throw new X(U.INVALID_ROOT,"history store rootDir must be a non-empty string");return ye.resolve(e)}function zo(e){return ye.join(e,LI)}function xa(e){return ye.join(e,jI)}function tk(e){return ye.join(e,BI)}function sp(e){return ye.join(e,$I)}async function Zf(e){try{let t=await he.readFile(sp(e),"utf8"),n=gr(t,"document version");if(!ot(n)||n.schemaVersion!==1||!Number.isInteger(n.version)||n.version<0)throw new X(U.INVALID_SCHEMA,"document version schema is invalid");return n.version}catch(t){if(Er(t))return 0;throw t}}async function Bo(e){let t=await _t(e,U.RECOVERY_PENDING,"transaction journal"),n=gr(Buffer.from(t).toString("utf8"),"transaction journal");return ap(n),n}function ap(e){if(!ot(e)||e.schemaVersion!==DI||typeof e.transactionId!="string"||e.transactionId.length===0||typeof e.operationId!="string"||e.operationId.length===0||!["prepared","files-written","history-published"].includes(e.phase)||!UI(e.historyTransition)||!Array.isArray(e.files))throw new X(U.INVALID_SCHEMA,"transaction journal schema is invalid");for(let t of e.files)if(!ot(t)||typeof t.path!="string"||t.path.length===0||t.preDigest!==null&&!Be(t.preDigest)||t.postDigest!==null&&!Be(t.postDigest))throw new X(U.INVALID_SCHEMA,"transaction journal file digest is invalid")}function nk(e){return e.replace(/[\r\n]+/g," ").slice(0,512)}function yr(e){return ye.join(e,"entries")}function xr(e){return ye.join(e,"blobs")}function mr(e){return ye.join(e,"tmp")}function Ma(e){return ye.join(mr(e),"stages")}function _a(e,t){return ye.join(Ma(e),`${t}.json`)}function Oa(e,t){return ye.join(yr(e),`${up(t)}.json`)}function Da(e,t){return ye.join(xr(e),up(t))}function La(e,t){return ye.join(yr(e),`${t}.json`)}function ja(e,t){return ye.join(xr(e),t)}async function cp(e,t){return lp(Oa(e,t),La(e,t))}async function Ba(e,t){return lp(Da(e,t),ja(e,t))}async function lp(e,t){return await _e(e)?e:await _e(t)?t:e}function up(e){return e.slice(7)}function Qf(e){let t=e.startsWith("sha256:")?e:`sha256:${e}`;return Be(t)?t:null}function ot(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Er(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function rk(e){return{maxEntries:e?.maxEntries??$o.maxEntries,maxSessionBytes:e?.maxSessionBytes??$o.maxSessionBytes,maxEntryBytes:e?.maxEntryBytes??$o.maxEntryBytes}}async function ok(e){let t=zo(e);await _e(t)||await Na(e,[],-1)}export{X as FileHistoryStoreError,jo as PreviewFileSystemSiteEditEngineRuntime,Vd as SITE_EDIT_RAW_COLOR_LITERAL_RE,Do as SnapshotSiteEditEngineRuntime,_I as createPreviewSiteEditEngineRuntime,TI as createSiteEditEngineRuntime,qf as openFileHistoryStore,cr as scanSiteEditThemeStyleViolations};
|