@uniformdev/uniform-mcp 20.39.3-alpha.1 → 20.40.0

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.
Files changed (2) hide show
  1. package/dist/index.mjs +1 -1
  2. package/package.json +8 -8
package/dist/index.mjs CHANGED
@@ -5647,7 +5647,7 @@ ${g}`:""}`:g??"").split(`
5647
5647
  `);return React.createElement(iM,{title:React.createElement(tq,{gap:"sm"},S.map((C,w)=>React.createElement("div",{key:w},C)))},React.createElement("span",null,y))}return y}function oat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--error)"}},t)}function iat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--primary-action-default)"}},t)}function aat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--alert)"}},t)}import{createVariableReference as fHt}from"@uniformdev/canvas";await _n();var gT=q(re()),sat=q(xc());var bHt=zn("uniform:open-insert-variable"),_we=zn("uniform:edit-variable"),xHt=zn("uniform:disconnect-variable"),CHt=zn("uniform:insert-variable"),lat="\\$\\$",uat=20,SHt=new RegExp(`(^.*)(${lat}(.{0,${uat}}))$`);var LC=class t extends gD{constructor(n,r,o){super(o);this.reference=n;this.__state=r}__state;static getType(){return"variable"}static clone(n){return new t(n.reference,{...n.__state},n.__key)}static importJSON(n){return Dwe(n.reference,{displayName:Cq(n.reference),referenceIsValid:!0,isFresh:!1,hasClickEvent:void 0,tooltip:void 0,isLoading:!1})}getState(){return this.getLatest().__state}setState(n){this.getWritable().__state=n}exportJSON(){return{reference:this.reference,type:t.getType(),version:1}}getTextContent(){return cat(this.reference)}createDOM(){return document.createElement("span")}updateDOM(){return!1}static importDOM(){return{binding:()=>({conversion:dat,priority:0})}}decorate(){return React.createElement(pat,{state:this.__state,reference:this.reference,nodeKey:this.__key})}};function dat(t){let n=t.textContent.replace(Swe,"").replace(wwe,"");return{node:Dwe(n,{displayName:Cq(n),hasClickEvent:!0,referenceIsValid:!0,tooltip:void 0,isFresh:!0,isLoading:!1})}}function Dwe(t,e){return new LC(t,e)}function fat(t){return t instanceof LC}function pat({state:t,reference:e,nodeKey:n}){let[r]=Db(),[o,i,a]=wfe(n),l=!r.isEditable(),c=(0,hM.useCallback)(d=>{if(o&&ar(te())){d.preventDefault();let f=or(n);fat(f)&&f.remove()}return!1},[o,n]);return(0,hM.useEffect)(()=>fi(r.registerCommand(hd,c,kn),r.registerCommand(md,c,kn),r.registerCommand(fd,d=>{let f=te();if(ar(f)){let m=f.getNodes();if(m.length>0)return d.preventDefault(),m[0].selectPrevious(),!0}if(!ne(f))return!1;if(Uf(f,!0)){let m=d.shiftKey;return d.preventDefault(),jf(f,m,!0),!0}return!1},Ze),r.registerCommand(pd,d=>{let f=te();if(ar(f)&&!mat(d.target)){let h=f.getNodes();if(h.length>0)return d.preventDefault(),h[0].selectNext(0,0),!0}if(!ne(f))return!1;let m=d.shiftKey;return Uf(f,!1)?(d.preventDefault(),jf(f,m,!1),!0):!1},Ze)),[a,r,o,n,c,i]),React.createElement(Twe,{...t,reference:e,displayName:t.isLoading?React.createElement(J4e,{size:"sm"}):t.displayName,selected:o,disabled:l,clickToEdit:t.hasClickEvent,onClick:t.hasClickEvent?()=>{i(!o),r.dispatchCommand(_we,{reference:e,sourceKey:n})}:()=>i(!o)})}function mat(t){let e=Ar(t);return Pr(e)}await _n();await _n();var vT=class t extends gD{__asset;__assetQuery;__upload;__error;getAsset(){return this.getLatest().__asset}setAsset(e){let n=this.getWritable();n.__asset=e}getAssetQuery(){return this.getLatest().__assetQuery}setAssetQuery(e){let n=this.getWritable();n.__assetQuery=e}getUpload(){return this.getLatest().__upload}setUpload(e){let n=this.getWritable();n.__upload=e}getError(){return this.getLatest().__error}setError(e){let n=this.getWritable();n.__error=e}static getType(){return"asset"}constructor(e,n,r,o,i){super(i),this.__asset=e,this.__upload=n,this.__error=o,this.__assetQuery=r}static clone(e){return new t(e.__asset,e.__upload,e.__assetQuery,e.__error,e.__key)}exportJSON(){let e={type:"asset",version:1};if(this.__asset&&(e.__asset=this.__asset),this.__assetQuery&&(e.__assetQuery=this.__assetQuery),this.__upload&&"fileUrl"in this.__upload){let{fileUrl:n,suggestedAltText:r,suggestedCaption:o}=this.__upload;e.__upload={fileUrl:n,suggestedAltText:r,suggestedCaption:o}}return this.__error&&(e.__error=this.__error),e}static importJSON(e){return Sq({asset:e.__asset,assetQuery:e.__assetQuery,upload:e.__upload,error:e.__error})}static importDOM(){return{img:()=>({conversion:e=>hat(e,Sq),priority:0}),figure:()=>({conversion:e=>gat(e,Sq),priority:0})}}createDOM(e){let n=document.createElement("span"),o=e.theme.image;return o!==void 0&&(n.className=o),n}updateDOM(){return!1}isInline(){return!1}};function Sq({asset:t,upload:e,assetQuery:n,error:r}){return bn(new vT(t,e,n,r))}function $we(t){return t.parentElement!=null&&t.parentElement.tagName==="LI"&&t.previousSibling===null&&t.getAttribute("aria-roledescription")==="checkbox"}function hat(t,e){let n=t;if(n.src.startsWith("file:///")||$we(n))return null;let{alt:r,src:o}=n;return{node:Nwe({altText:r,src:o,createAssetNode:e})}}function gat(t,e){let n=t,r=n.querySelector("img"),o=n.querySelector("figcaption");if(!r||r.src.startsWith("file:///")||$we(r))return null;let{alt:i,src:a}=r;return a.startsWith("uniform://")?{node:e({assetQuery:{id:r.src.split("uniform://")[1],suggestedAltText:i,suggestedCaption:o?.textContent??void 0}})}:{node:Nwe({altText:i,src:a,caption:o?.textContent??void 0,createAssetNode:e})}}function Nwe({altText:t,src:e,caption:n,createAssetNode:r}){return r({asset:void 0,upload:{fileUrl:e,suggestedAltText:t,suggestedCaption:n},assetQuery:void 0})}var vat=t=>new DOMParser().parseFromString(t,"text/html");function Lwe(t,e=vat){let n=Vue({nodes:[Td,Ed,vq,yb,bb,zse,Zde,Yde,qde,Hf,vT,LC]}),r=e(t);return n.update(()=>{cB("skip-dom-selection");let o=ib(n,r);ir().select(),ac(o)},{discrete:!0}),n.getEditorState().toJSON()}function Mwe({twee:t,nodeId:e,propertyId:n,propertyType:r,locale:o,propertyEdit:i,conditionIndex:a=-1,definitionIndex:l,domParser:c}){let d=t.getNodeById(e);if(!d)throw new Error(`Node with ID ${e} not found`);if(i.action==="clearValue")t.updateNodeProperty({nodeId:e,property:n,value:null,source:"ai",locale:o,conditionIndex:-1});else if(i.action==="resetOverride")t.resetPatternPropertyOverride(e,n,o);else if(i.action==="setValue"){if(r==="contentReference"){_at({twee:t,nodeId:e,targetNode:d,propertyId:n,propertyType:r,propertyEdit:i,locale:o,conditionIndex:a,definitionIndex:l});return}let f=Tat({twee:t,targetNode:d,propertyId:n,propertyType:r,propertyEdit:i,domParser:c}),m=t.getNodeProperty(e,n);if(!o&&m?.locales)throw new Error(`The ${n} property is localized in ${Object.keys(m.locales).join(", ")}, but no locale was provided when setting its value. Please provide an explicit locale.`);if(n===xat){let h=t.getParentInfo(e);if(h?.parentId){let g=t.getNodeProperty(h.parentId,bat);if(g?.value!==Xne)throw new Error(`Cannot edit personalization criteria when the parent personalization component is not using the Strongest Variation Match selection method. Current selection method: ${g?.value||"Top-down criteria matching"}.`)}}t.updateNodeProperty({nodeId:e,property:n,value:()=>f,source:"ai",locale:o,conditionIndex:a,type:r})}}var Tat=({twee:t,targetNode:e,propertyId:n,propertyType:r,propertyEdit:o,domParser:i})=>{if(r==="richText")return Lwe(o.newValue??"",i);if(r==="number")return Number(o.newValue);if(n===yat){if(Eat(e.value.type))throw new Error("Enrichment tags are not allowed in system components.");if(t.getParentInfo(e.nodeId)?.parentId===Cat)throw new Error("Enrichment tags are not allowed in personalization variants.")}return o.treatNewValueAsJson?JSON.parse(o.newValue):o.newValue};function _at({twee:t,nodeId:e,targetNode:n,propertyId:r,propertyType:o,propertyEdit:i,locale:a,conditionIndex:l,definitionIndex:c}){let d=C6(n.nodeId,r,a,l),f;try{f=i.treatNewValueAsJson?JSON.parse(i.newValue):i.newValue}catch(w){throw new Error(`Invalid reference field data: ${w instanceof Error?w.message:"Unknown error"}`)}if(!f||typeof f!="object"||f.type!==Ug)throw new Error("Invalid reference field definition received from AI");let m=f.variables?.entryIds;if(!m||typeof m!="string"||m.length===0){t.updateNode({nodeId:n.nodeId,updateDataResources:[{type:"remove",name:d}]}),t.updateNodeProperty({nodeId:e,property:r,value:null,source:"ai",locale:a,conditionIndex:l,type:o});return}let y=c[n.value.type]?.parameters?.find(({id:w})=>w===r)?.typeConfig?.isMulti??!1,b=Gne(m,{targetLocale:a,enabledLocales:t.getNodeById(t.rootNodeId)?.value._locales??[]});t.updateNode({nodeId:n.nodeId,updateDataResources:[{type:"set",name:d,value:b}]});let S=`/${d}/entries${y?"":"/0"}`,C=wat(Sat({syntax:"jptr",pointer:S}));t.updateNodeProperty({nodeId:e,property:r,value:()=>C,source:"ai",locale:a,conditionIndex:l,type:o})}async function gM({twee:t,slotUpdates:e,propertyUpdates:n,dataResourceUpdates:r,localeUpdates:o,nameUpdate:i,slugUpdate:a,descriptionUpdate:l,currentEditorLocale:c,referenceData:d,dataSourceVariant:f,onStatusUpdate:m,isEditingPattern:h,domParser:g}){let y=[],b=(i?1:0)+(a?1:0)+(l?1:0)+(e.createComponentInstances?.length??0)+(e.moveComponentInstances?.length??0)+(e.duplicateComponentInstances?.length??0)+(e.deleteComponentInstances?.length??0)+(o?.enableLocales?.length??0)+(o?.disableLocales?.length??0)+n.length,S=0,C=D=>{y.push(D),S++,m?.({completed:S,total:b})};i&&(t.updateRootNode({update:{_name:i}}),C({summary:"Updated name",success:!0})),a&&(t.updateRootNode({update:{_slug:a}}),C({summary:"Updated slug",success:!0})),l&&(t.updateRootMetadata({description:l}),C({summary:"Updated description",success:!0}));let w=await d.fetchDefinitions();await Lat({slotUpdates:e,twee:t,definitions:w,referenceData:d,addResult:C,isEditingPattern:h});let E=y.some(D=>!D.success);if(E?e.moveComponentInstances?.forEach(D=>{y.push({summary:`Skipped moving component ${D.componentId} because previous actions failed`,success:!1})}):await Mat({slotUpdates:e,twee:t,definitions:w,addResult:C,isEditingPattern:h}),E=y.some(D=>!D.success),e.duplicateComponentInstances)for(let D of e.duplicateComponentInstances)if(E)C({summary:`Skipped duplicating component ${D} because previous actions failed`,success:!1});else{let $=await t.duplicateNode(D,d.resolvePatternData);C({summary:`Duplicated component ${D}. The new duplicate has ID ${$} and is placed immediately after the original component in the same slot.`,success:!0})}return E=y.some(D=>!D.success),e.deleteComponentInstances?.forEach(D=>{E?C({summary:`Skipped deleting component ${D} because previous actions failed`,success:!1}):(t.deleteNode(D,!1),C({summary:`Deleted component ${D}`,success:!0}))}),E=y.some(D=>!D.success),o?.enableLocales?.forEach(D=>{E?C({summary:`Skipped enabling locale ${D} because previous actions failed`,success:!1}):(t.enableLocale(D),C({summary:`Enabled locale ${D}`,success:!0}))}),E=y.some(D=>!D.success),o?.disableLocales?.forEach(D=>{E?C({summary:`Skipped disabling locale ${D} because previous actions failed`,success:!1}):(t.disableLocale(D),C({summary:`Disabled locale ${D}`,success:!0}))}),E=y.some(D=>!D.success),E?n.length>0&&C({summary:`Skipped ${n.length} property updates because previous actions failed`,success:!1}):(await Rat({propertyUpdates:n,twee:t,currentEditorLocale:c,referenceData:d,definitions:w,addResult:C})).forEach($=>{if(!$.result.success)return;let R="componentId"in $.update?$.update.componentId:t.rootNodeId,M=wP({twee:t,nodeId:R,currentEditorLocale:$.currentLocale,definition:$.propertyDefinition}),k=(t.getNodeById(t.rootNodeId)?.value)._locales??[];if(M&&!k.includes(M)){C({summary:`The ${M} locale is not enabled on this entity. Please enable it before setting values in this locale.`,success:!1});return}if($.result.action!=="nothing")try{Mwe({twee:t,nodeId:R,propertyId:$.propertyDefinition.id,propertyType:$.propertyDefinition.type,locale:M,propertyEdit:$.result,definitionIndex:w,domParser:g}),C({summary:`Updated value of ${$.propertyDefinition.id} on ${R}${M?` in ${M}`:""}`,success:!0})}catch(A){C({summary:`Failed to update value of ${$.propertyDefinition.id} on ${R}${M?` in ${M}`:""}: ${A instanceof Error?A.message:"Unknown error"}`,success:!1})}if("overridable"in $.update&&$.update.overridable!==void 0)if($.propertyDefinition.type===Dat)C({summary:`Cannot set overridability for block property '${$.propertyDefinition.id}' - blocks do not support overrides`,success:!1});else{let A=$.update.overridable;t.updateNode({nodeId:R,updateComponent:I=>{I._overridability??={},I._overridability.parameters??={},I._overridability.parameters[$.propertyDefinition.id]=A}}),C({summary:`Updated overridability for ${R}`,success:!0})}}),E=y.some(D=>!D.success),E?r.length>0&&y.push({summary:`Skipped ${r.length} data resource updates because previous actions failed`,success:!1}):(await Oat({dataResourceUpdates:r,twee:t,referenceData:d,results:y,dataSourceVariant:f})).forEach($=>{if(!$.result.success)return;let R=$.update.componentId;if($.result.action==="resetOverride")t.updateNode({nodeId:R,updateDataResources:[{type:"reset",name:$.update.dataResourceName}]}),y.push({summary:`Reset data resource to pattern default for ${$.update.dataResourceName} on ${R}`,success:!0});else if($.result.action==="setValue")try{Yne({twee:t,nodeId:R,dataResourceName:$.update.dataResourceName,dataType:$.dataType,dataResourceEdit:$.result}),y.push({summary:`Updated data resource ${$.update.dataResourceName} on ${R}`,success:!0})}catch(M){y.push({summary:`Failed to update data resource ${$.update.dataResourceName} on ${R}: ${M instanceof Error?M.message:"Unknown error"}`,success:!1})}}),{success:y.every(D=>D.success),actionsTaken:y}}async function Lat({slotUpdates:t,twee:e,definitions:n,referenceData:r,addResult:o,isEditingPattern:i}){(await Promise.allSettled(t.createComponentInstances?.map(async l=>{let c=e.getNodeById(l.parentComponentId);if(!c)throw new Error(`Parent component with ID ${l.parentComponentId} not found`);let d=n[c.value.type];if(!d)throw new Error(`Definition for parent component type ${c.value.type} not found`);let f=d.slots?.find(g=>g.id===l.slotName);if(!f)throw new Error(`Slot ${l.slotName} not found on component type ${c.value.type}`);let m=x6({twee:e,parentSlotDefinition:f,nodeId:l.parentComponentId,componentDefinitionsIndex:n});if(!m)throw new Error(`Can't find allowed components inherited slot for ${l.slotName}`);let h=SP(m);if(l.instanceType==="component"){if(!l.componentType)throw new Error("componentType is required when inserting a component instance");if(!b6({type:l.componentType},h,i))throw new Error(`Component type ${l.componentType} is not allowed in slot ${l.slotName}`);e.insertNode({node:{type:l.componentType},overrideNodeId:l.newComponentInstanceUuid,parentNodeId:l.parentComponentId,parentSlot:l.slotName,targetIndexInSlot:l.slotIndex}),o({summary:`Inserted component ${l.componentType} in slot ${l.slotName} ${l.slotIndex!==void 0?`at index ${l.slotIndex}`:""}`,success:!0})}else{if(!l.componentPatternId)throw new Error("componentPatternId is required when inserting a component pattern instance");let g=await r.resolvePatternData(l.componentPatternId);if(!g)throw new Error(`Pattern definition with ID ${l.componentPatternId} not found`);if(!b6({type:g.type,_pattern:l.componentPatternId},h,!1))throw new Error(`Pattern ${l.componentPatternId} is not allowed in slot ${l.slotName}`);e.insertPattern({pattern:g,patternInstanceId:l.newComponentInstanceUuid,parentNodeId:l.parentComponentId,parentSlot:l.slotName,targetIndexInSlot:l.slotIndex}),o({summary:`Inserted pattern ${g._name} in slot ${l.slotName} ${l.slotIndex!==void 0?`at index ${l.slotIndex}`:""}`,success:!0})}})??[])).forEach((l,c)=>{if(l.status==="rejected"){let d=t.createComponentInstances?.[c];console.error("Error inserting component",l.reason),o({summary:`Failed to insert component ${d?.newComponentInstanceUuid}: ${"message"in l.reason?l.reason.message:"Unknown error"}`,success:!1})}})}async function Mat({slotUpdates:t,twee:e,definitions:n,addResult:r,isEditingPattern:o}){(await Promise.allSettled(t.moveComponentInstances?.map(async a=>{let l=e.getNodeById(a.componentId);if(!l)throw new Error(`Component to move with ID ${a.componentId} not found`);let c=e.getNodeById(a.newParentComponentId);if(!c)throw new Error(`Destination component with ID ${a.newParentComponentId} not found`);let d=n[c.value.type];if(!d)throw new Error(`Definition for destination component type ${c.value.type} not found`);let f=d.slots?.find(g=>g.id===a.newSlotName);if(!f)throw new Error(`Slot ${a.newSlotName} not found on component type ${c.value.type}`);let m=x6({twee:e,parentSlotDefinition:f,nodeId:a.newParentComponentId,componentDefinitionsIndex:n});if(!m)throw new Error(`Can't find allowed components inherited slot for ${a.newSlotName}`);let h=SP(m);if(!b6({type:l.value.type,_pattern:l.value._pattern},h,o))throw new Error(l.value._pattern?`Pattern ${l.value._pattern} is not allowed in slot ${a.newSlotName}`:`Component ${l.value.type} is not allowed in slot ${a.newSlotName}`);e.moveNode({movedNodeId:a.componentId,parentNodeId:a.newParentComponentId,parentSlot:a.newSlotName,targetIndexInSlot:a.newSlotIndex}),r({summary:`Moved component ${a.componentId} to ${a.newParentComponentId} in slot ${a.newSlotName} at index ${a.newSlotIndex}`,success:!0})})??[])).forEach((a,l)=>{if(a.status==="rejected"){let c=t.moveComponentInstances?.[l];console.error("Error moving component",a.reason),r({summary:`Failed to move component ${c?.componentId}: ${"message"in a.reason?a.reason.message:"Unknown error"}`,success:!1})}})}async function Rat({propertyUpdates:t,twee:e,currentEditorLocale:n,referenceData:r,definitions:o,addResult:i}){if(t.length===0)return[];let[a,l]=await Promise.all([r.fetchProjectGuidance(),r.getToolClient()]),c=await Promise.allSettled(t.map(async d=>(async()=>{let f="componentId"in d?d.componentId:e.rootNodeId,m=e.getNodeById(f);if(!m)throw new Error(`Component instance with ID ${f} not found`);let h=o[m.value.type];if(!h)throw new Error(`Definition with ID ${m.value.type} not found`);let g="fieldId"in d?d.fieldId:d.parameterId,y=h.parameters?.find($=>$.id===g),b=d.fromLocale??d.locale??n,S=d.locale??n,C=y??{id:g,type:"unknown"};if(d.editInstructions===void 0)return{result:{success:!0,newValue:"",treatNewValueAsJson:!1,action:"nothing"},update:d,propertyDefinition:C};if(d.editInstructions==="")return{result:{success:!0,newValue:"",treatNewValueAsJson:!1,action:"clearValue"},update:d,propertyDefinition:C};if(!y)throw new Error(`Property with ID ${g} not found`);if(y.type==="contentReference"){let $=wP({definition:y,twee:e,nodeId:f,currentEditorLocale:n}),R=C6(f,g,$,-1),M=m.value._dataResources?.[R],k=await l.invoke("createDataResourceEdit",{edit:d.editInstructions,dataType:Ug,currentValue:M?.variables||{}});if(!k.success)throw new Error(k.summary??"Failed to edit reference field data resource");return{result:{success:!0,newValue:JSON.stringify({type:Ug,variables:k.newValue}),treatNewValueAsJson:!0,action:"setValue"},update:d,propertyDefinition:y,currentLocale:$}}let w=$at({property:e.getNodeProperty(f,g),locale:b,conditionIndex:-1}),E,_=e.getNodeProperty(f,Nat);_?.value?.dim&&(E=await r.getDimensionGuidance(_.value.dim));let D=await l.invoke("createPropertyEdit",{edit:d.editInstructions,propertyDefinition:{id:g,name:y.name,type:y.type,guidance:y.guidance,typeConfig:y.typeConfig},outputLocale:S,documentContext:void 0,currentValue:w,projectGuidance:a,componentGuidance:h.description,audienceGuidance:E});if(!D.success)throw new Error(D.summary??"Failed to edit property");return{result:D,update:d,propertyDefinition:y,currentLocale:S}})()));return c.forEach((d,f)=>{if(d.status==="rejected"){let m=t[f],h="fieldId"in m?m.fieldId:m.parameterId;i({summary:`Failed to edit property ${h}: ${"message"in d.reason?d.reason.message:"Unknown error"}`,success:!1})}}),c.filter(d=>d.status==="fulfilled").map(d=>d.value)}async function Oat({dataResourceUpdates:t,twee:e,referenceData:n,results:r,dataSourceVariant:o}){if(t.length===0)return[];let i=await n.getToolClient(),a=await Promise.allSettled(t.map(async l=>(async()=>{let c=l.componentId,d=e.getNodeById(c);if(!d)throw new Error(`Component instance with ID ${c} not found`);if(l.editInstructions===void 0)return{result:{success:!0,newValue:{},action:"nothing"},update:l,dataType:"unknown"};if(l.editInstructions==="")return{result:{success:!0,newValue:{},action:"setValue"},update:l,dataType:"unknown"};let f=d.value._dataResources?.[l.dataResourceName],m=d.value._patternDataResources?.[l.dataResourceName];if(!m)throw new Error(`Pattern data resource ${l.dataResourceName} does not exist on the ${d.value._pattern} pattern`);let h=f?.variables??m.variables,g=m.type,y=await i.invoke("createDataResourceEdit",{edit:l.editInstructions,dataType:g,currentValue:h,dataSourceVariant:o});if(!y.success)throw new Error(y.summary??"Failed to edit data resource");return{result:y,update:l,dataType:g}})()));return a.forEach((l,c)=>{if(l.status==="rejected"){let d=t[c];r.push({summary:`Failed to edit data resource ${d.dataResourceName}: ${"message"in l.reason?l.reason.message:"Unknown error"}`,success:!1})}}),a.filter(l=>l.status==="fulfilled").map(l=>l.value)}import{CANVAS_BLOCK_PARAM_TYPE as Dc,CANVAS_ENRICHMENT_TAG_PARAM as f3e,CANVAS_LOCALE_TAG_PARAM as CT,CANVAS_LOCALIZATION_SLOT as kq,CANVAS_LOCALIZATION_TYPE as xst,CANVAS_PERSONALIZATION_PARAM as ST,CANVAS_PERSONALIZE_SLOT as p3e,CANVAS_SLOT_SECTION_SLOT as Cst,CANVAS_SLOT_SECTION_TYPE as wM,CANVAS_TEST_SLOT as m3e,CANVAS_TEST_VARIANT_PARAM as h3e,CANVAS_VIZ_CONTROL_PARAM as N0,convertToBindExpression as Sst,createVariableReference as wst,getEffectivePropertyValue as g3e,walkNodeTree as L0}from"@uniformdev/canvas";var R0=q(wq(),1),y3e=q(IS(),1);import{produce as No}from"immer";import{v4 as M0}from"uuid";import{v4 as Bat}from"uuid";async function Bwe({projectMapClient:t,compositionId:e,compositionName:n,nodePathSegment:r,parentNodeId:o,localePathSegments:i,allowedQueryStrings:a}){let c=(await t.getProjectMapDefinition({}))?.projectMaps[0]?.id;if(!c)throw new Error("No project map found for this project");let d=r||i?.[0]?.pathSegment,f,m=0;if(o){let S=(await t.getNodes({id:o})).nodes?.[0];if(!S)throw new Error("Parent node not found");let C=S.path;m=((await t.getNodes({path:C,depth:1,expanded:!1})).nodes?.filter(D=>D.path!==C)??[]).reduce((D,$)=>Math.max(D,$.order??0),-1)+100,f=`${C==="/"?"":C}/${d}`}else f=`/${d}`;let h=i?.reduce((b,{locale:S,pathSegment:C})=>(b[S]={pathSegment:C,name:C},b),{}),g=a?.map(({name:b,defaultValue:S})=>({name:b,...S!==void 0&&{value:S}})),y=Bat();return await t.upsertProjectMapNodes({projectMapId:c,nodes:[{node:{id:y,name:n,path:f,type:"composition",compositionId:e,order:m,...h&&{locales:h},...g&&{data:{queryStrings:g}}}}]}),{path:f,nodeId:y}}import{bindVariablesToObject as zat}from"@uniformdev/canvas";var yT="Untitled",zwe=60;function Vwe({value:t,isNew:e,contentType:n}){let{result:r}=zat({value:t,handleBinding:()=>"{token}",variables:{}}),o=n.entryName??"",i=(n.fields??[]).find(a=>a.id===o);if(typeof r=="string"){if(i?.type==="image")return r.length>0?`Image: ${jat(r)}`:`${yT} image`;if(r.length>0)return i?.type==="date"?Hat(r)?Wat(r):"Invalid date":$0(r)}else{if(typeof r=="number"||typeof r=="boolean")return r.toString();if(typeof r<"u"&&r!==null){if(i?.type==="link")return Vat(r);if(One(r))return $0(xP(r.root));if(i?.type==="datetime"&&r){let a=r;return a.datetime&&jwe(a.datetime)?Kat(a.datetime):"Invalid datetime"}else return $0(Gat(r).description)}}return e?`New entry: ${n.name}`:yT}function Vat(t){return t?t.type==="projectMapNode"?t.path.length>0?`Link to ${$0(t.path)}`:`Link to project map node (${t.nodeId})`:t.path.length>0?`Link to ${$0(t.path)}`:`${yT} link`:`${yT} link`}function jat(t){try{let{pathname:e,hostname:n}=new URL(t),r=e.split("/").filter(o=>o);return r.length>2?`/${r[0]}/.../${r[r.length-1]} (${$0(n)})`:`${e} (${$0(n)})`}catch{return t}}function $0(t){let e=t.split(" ").filter(i=>i).reverse();if(e.length<1)return yT;let n="",r=e.pop(),o=()=>n.length+(r?.length??0)+(n.length>0?1:0);for(;r&&o()<zwe;)n+=n.length>0?` ${r}`:r,r=e.pop();return n.length<1?`${t.slice(0,zwe)}...`:e.length>0?`${n}...`:n}var Uat=/^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9]$/;function Hat(t){return Uat.test(t)?jwe(t):!1}function jwe(t){let e=new Date(t);return e instanceof Date&&!isNaN(Number(e))}function Wat(t){return new Date(t).toLocaleDateString()}function Kat(t){return new Date(t).toLocaleString()}function Gat(t){let e=_q(t);return e?{description:e,named:!0}:{description:Yat(t).valuePreview,named:!1}}function Yat(t){if(typeof t>"u")return{valueIcon:"close-o",valuePreview:"undefined"};if(t===null)return{valueIcon:"close-o",valuePreview:"null"};if(Array.isArray(t))return{valuePreview:`array with ${t.length} item${t.length!==1?"s":""}`,valueIcon:"list"};if(typeof t=="boolean")return{valuePreview:t.toString(),valueIcon:t?"check-r":"close-r"};if(typeof t=="number"||typeof t=="bigint")return{valuePreview:t.toString(10),valueIcon:"number-input"};if(typeof t=="object"){let e=Object.keys(t);return{valuePreview:`object with ${e.length} ${e.length!==1?"properties":"property"}`,valueIcon:"shape-hexagon"}}return{valuePreview:t,valueIcon:"text-input"}}var Zat=["displayName","name","_name","title","heading","label","parameters","fields","properties","entry","slug","_slug","alt","alt_description","description","results","items","entries","hits","value","id","objectID","identifier"];function _q(t){if(typeof t=="string")return t;if(typeof t=="number")return t.toString(10);if(typeof t=="boolean")return t.toString();if(typeof t!="object"||t===null)return;if(Array.isArray(t)){if(t.length===0)return;let r=_q(t[0]);return r?t.length===1?r:`${r} and ${t.length-1} other${t.length>2?"s":""}`:void 0}let n=t;for(let r of Zat)if(r in n){let o=_q(n[r]);if(o)return o}}import{CANVAS_SLOT_SECTION_SLOT as qat,walkNodeTree as Jat}from"@uniformdev/canvas";import{v4 as Uwe}from"uuid";var bT="|";function vM(t,e){if(!t)return e??Uwe();let n=t.split(bT),r=(e??Uwe()).split(bT);return n.at(-1)===r[0]&&n.pop(),n.concat(r).join(bT)}function Wwe(t){let e=t.indexOf(bT);if(e<0)throw new Error(`Cannot remove pattern instance ID from ${t}`);return t.substring(e+1)}function yM(t,e,n=!1){Jat(t,({node:r,actions:{setDescendantsContext:o},context:i})=>{let a=!n&&!i?.currentParentPatternInstanceId,l="_pattern"in r&&!!r._pattern;if(i?.currentParentPatternInstanceId){let d=vM(i.currentParentPatternInstanceId,r._id);r._id=d}let c=i?.currentParentPatternInstanceId;l&&(c=r._id),"_overrides"in r&&r._overrides&&Hwe(r._overrides,c,a),"_patternOverrides"in r&&r._patternOverrides&&Hwe(r._patternOverrides,c,a),l&&o({currentParentPatternInstanceId:r._id})},{initialContext:{currentParentPatternInstanceId:e}})}var Hwe=(t,e,n)=>{Object.entries(t).forEach(([r,o])=>{let i=n?r:vM(e,r);Object.entries(o.slots??{}).forEach(([a,l])=>{l.forEach(c=>{let{partOfNestedPattern:d}=bM(r??"");yM(c,a===qat&&!d?void 0:e,!0)})}),i&&(delete t[r],t[i]=o)})};function bM(t){let e=t.split(bT);return e.length===1?{partOfPattern:void 0,partOfNestedPattern:void 0}:e.length===2?{partOfPattern:e[0],partOfNestedPattern:void 0}:{partOfPattern:e[0],partOfNestedPattern:e[e.length-2]}}import{CANVAS_SLOT_SECTION_SLOT as Jwe}from"@uniformdev/canvas";import{CANVAS_VIZ_CONTROL_PARAM as tst}from"@uniformdev/canvas";import{CANVAS_ENRICHMENT_TAG_PARAM as Kwe,CANVAS_INTENT_TAG_PARAM as Xat,CANVAS_LOCALE_TAG_PARAM as Qat,CANVAS_PERSONALIZATION_PARAM as Gwe,CANVAS_TEST_VARIANT_PARAM as est,CANVAS_VIZ_CONTROL_PARAM as Ywe}from"@uniformdev/canvas";var Zwe=[{id:Xat,name:"Intent Tag",type:"intentTag"},{id:Qat,name:"Locale Visibility",type:"localeSelect"},{id:Gwe,name:"Personalization Criteria",type:Gwe},{id:Kwe,name:"Enrichment Tags",type:Kwe,helpText:"Seeing this component will increase a visitor's score in these enrichments."},{id:est,name:"A/B Test",type:"testVariant"},{id:Ywe,name:"Visibility Control",type:Ywe}];var nst=Zwe.reduce((t,e)=>(e.id===tst||t.add(e.id),t),new Set);function MC(t,e){return nst.has(e)?"yes":t?.parameters?.[e]??"no"}function Dq(t,e){e&&Object.entries(e).forEach(([n,r])=>{let o=t[n];if(r.parameters||o?.parameters){t[n]??={};let i={...r?.parameters};Object.entries(o?.parameters??{}).forEach(([a,l])=>{let c=i[a];if(!c)i[a]=l;else if(l.locales||l.localesConditions||c.locales||c.localesConditions){let d={...c,...l};(l.locales||c.locales)&&(d.locales={...c.locales,...l.locales}),(l.localesConditions||c.localesConditions)&&(d.localesConditions={...c.localesConditions,...l.localesConditions}),i[a]=d}else i[a]={...c,...l}}),t[n].parameters=i}if((r.dataResources||o?.dataResources)&&(t[n]??={},t[n].dataResources={...r?.dataResources,...o?.dataResources}),r.slots||o?.slots){t[n]??={};let i=Object.entries(o?.slots??{}).reduce((a,[l,c])=>(a[l]&&Array.isArray(a[l])?a[l]=[...c,...a[l]]:a[l]=c,a),r.slots??{});t[n].slots=i}(r.variant!==void 0||o?.variant!==void 0)&&(t[n]=t[n]??{},t[n].variant=o?.variant??r?.variant)})}function qwe({applyOverrideToNode:t}){let e=new Set,n={};return{visitNode(r){e.add(r._id),Dq(n,r._overrides),Dq(n,r._patternOverrides);let o=n[r._id];o&&(o.parameters&&Object.keys(o.parameters).forEach(i=>{MC(r._overridability,i)==="no"&&(console.log(`[Override] Cleaned override from ${r._id} parameter ${i} because it is not overridable`),delete n[r._id].parameters?.[i])}),o.dataResources&&Object.keys(o.dataResources).forEach(i=>{r._patternDataResources?.[i]?.isPatternParameter||(console.log(`[Override] Cleaned override from ${r._id} data resource ${i} because it is not overridable`),delete n[r._id].dataResources?.[i])}),o.variant!==void 0&&(r._overridability?.variants||delete o.variant),t({node:r,overrides:o}))},overrides:n}}function $q(t){let{beforeApplyParameterOverride:e,beforeApplyDataResourceOverride:n}=t??{};return qwe({applyOverrideToNode({node:r,overrides:o}){if(Object.entries(o.parameters??{}).map(([i,a])=>{r.parameters=r.parameters??{},e?.(r,i,a,r.parameters[i]);let l=r.parameters[i]??={type:a.type};a.locales||a.localesConditions?(l.locales??={},delete l.value,delete l.conditions,new Set([...Object.keys(a.locales??{}),...Object.keys(a.localesConditions??{})]).forEach(f=>{delete l.locales?.[f],delete l.localesConditions?.[f];let m=a.locales?.[f],h=a.localesConditions?.[f];m!=null&&(l.locales??={},l.locales[f]=m),h!=null&&(l.localesConditions??={},l.localesConditions[f]=h)}),l.locales&&Object.keys(l.locales).length===0&&delete l.locales,l.localesConditions&&Object.keys(l.localesConditions).length===0&&delete l.localesConditions):(delete l.locales,delete l.localesConditions,delete l.conditions,delete l.value,a.value!==null&&a.value!==void 0&&(l.value=a.value,l.connectedData=a.connectedData),a.conditions!==null&&a.conditions!==void 0&&(l.conditions=a.conditions)),!l.locales&&!l.localesConditions&&!l.conditions&&l.value===void 0&&delete r.parameters[i]}),Object.entries(o.dataResources??{}).forEach(([i,a])=>{n?.(r,i,a,r._dataResources?.[i]),r._dataResources??={},r._dataResources[i]=a}),o.variant!==void 0&&(r.variant=o.variant),o.slots){r.slots??={};let i=Object.keys(o.slots)[0];r.slots[Jwe]??=[],r.slots[Jwe]=[...o.slots[i]??[]]}}})}import{CANVAS_SLOT_SECTION_SLOT as rst,CANVAS_SLOT_SECTION_TYPE as ost}from"@uniformdev/canvas";var Xwe=({preserveOwnSlotSections:t=!1,preserveChildrenSlotSections:e=!1}={})=>n=>{if(n.node.type!==ost)return;let{partOfPattern:r,partOfNestedPattern:o}=bM(n.node._id??"");!r&&!o&&t||r&&!o&&e||ist(n)},ist=({node:t,type:e,actions:n})=>{e!=="entry"&&(n.insertAfter(t.slots?.[rst]??[]),n.remove())};import{walkNodeTree as ust}from"@uniformdev/canvas";import{produce as cst}from"immer";import{v4 as dst}from"uuid";import{CANVAS_SLOT_SECTION_SLOT as Qwe,walkNodeTree as ast}from"@uniformdev/canvas";import{produce as sst}from"immer";import{v4 as lst}from"uuid";function xM(t,e,n,r=lst()){if(!t._pattern)throw new Error("Not a pattern");let o={};return ast(t,({node:i,ancestorsAndSelf:a,actions:l})=>{let c=i._id,d=e[c];if(a.length===1)i._id=r;else{let m=a[0];m.type!=="slot"||m.parentSlot!==Qwe?(i._id=Wwe(c),i._id=vM(r,i._id)):(l.replace({...o[c],_id:o[c]._id}),l.stopProcessingDescendants())}if(d){let m=sst(d,h=>{h.slots&&Object.entries(h.slots).forEach(([g,y])=>{if(g!==Qwe)throw new Error("Only slot section items are supported for duplication");y.forEach((b,S)=>{if(!b._id)return;let C=CM(b,e,n);o[b._id]=C,y[S]=C})})});n?.(i._id,m,c)}}),r}function CM(t,e,n){return cst(t,r=>{ust(r,({type:o,node:i,actions:{stopProcessingDescendants:a}})=>{o==="component"&&i._pattern?(xM(i,e,n),a()):i._id=dst()})})}import{produce as fst}from"immer";import{v4 as pst}from"uuid";function e3e(t,e=pst()){return fst(t,n=>(n._pattern?xM(n,n._overrides??{},(r,o,i)=>{delete n._overrides[i],n._overrides[r]=o},e):n._id=e,n))}function SM({locale:t,conditionIndex:e,property:n}){if(t===void 0)if(e<0){if(delete n.value,!n.conditions?.length)return!1}else n.conditions?.splice(e,1);else e<0?delete n.locales?.[t]:n.localesConditions?.[t]?.splice(e,1);if(n.localesConditions){for(let[r,o]of Object.entries(n.localesConditions))if(o.length===0){delete n.localesConditions[r];break}Object.keys(n.localesConditions).length===0&&delete n.localesConditions}return n.locales&&Object.keys(n.locales).length===0&&delete n.locales,n.conditions&&n.conditions.length===0&&delete n.conditions,!!(n.value!==void 0||n.locales||n.conditions||n.localesConditions)}function Nq({locale:t,conditionIndex:e,conditionDefinition:n,property:r,newPropertyValue:o}){t===void 0?e<0?r.value=o:(r.conditions??=[],t3e(r.conditions,e,n,o)):e<0?(r.locales??={},r.locales[t]=o):(r.localesConditions??={},r.localesConditions[t]??=[],t3e(r.localesConditions[t],e,n,o))}function t3e(t,e,n,r){if(e<0)throw new Error("Condition index must be greater than or equal to 0");let o=t[e];t[e]={when:n??o?.when??{clauses:[]},value:r===void 0?null:r,id:o?.id??mst(t)}}function mst(t){let e=new Set(t.map(r=>r.id)),n=0;for(;e.has(n);)n++;return n}function n3e(t){let e=!1,n={};return"_pattern"in t&&t._patternDataResources&&Object.entries(t._patternDataResources).forEach(([r,o])=>{e=!0,n[r]={...o,source:"patternDataResource"}}),t._dataResources&&Object.entries(t._dataResources).forEach(([r,o])=>{n[r]?n[r].isPatternParameter&&(e=!0,n[r]={...o,source:"dataResource"}):(e=!0,n[r]={...o,source:"dataResource"})}),e?n:void 0}import{CANVAS_DRAFT_STATE as hst,convertEntryToPutEntry as YKt,getPropertiesValue as JKt}from"@uniformdev/canvas";function r3e(t){let{fields:e,entryName:n,type:r="contentType",thumbnailField:o,...i}=t;return{...i,titleParameter:n,thumbnailParameter:o,parameters:e,canBeComposition:r==="block",permissions:t.permissions,useTeamPermissions:t.useTeamPermissions??!0,workflowId:t.workflowId}}function o3e(t){return{id:t.id,name:t.name,entryName:t.titleParameter,thumbnailField:t.thumbnailParameter,fields:t.parameters,icon:t.icon,description:t.description,slugSettings:t.slugSettings,type:t.canBeComposition?"block":"contentType",created:t.created,updated:t.updated,permissions:t.permissions,useTeamPermissions:t.useTeamPermissions,workflowId:t.workflowId||void 0}}function xT(t){let{entry:{fields:e,...n},...r}=t;return{created:"",modified:"",composition:{_id:"",...n,_name:t.entry._name??"Untitled",parameters:e,_overridability:t.entry._overridability,_overrides:t.entry._overrides,_pattern:t.entry._pattern,_patternError:t.entry._patternError},pattern:!!t.pattern,previewImageUrl:t.entry._thumbnail,...r}}function i3e(t,e,n,r,o,i,a){let l=a??e.projectId;if(!l)throw new Error("projectId is required in currentEntry or explicitly");return{created:e.created??"",modified:e.modified??"",projectId:l,state:r??e.state??hst,releaseId:o??e.releaseId,workflowId:n?.workflowId??e.workflowId,workflowStageId:n?.workflowStageId??e.workflowStageId,editionId:i,editionName:n?.editionName??e.editionName,editionPriority:n?.editionPriority??e.editionPriority,pattern:e.pattern,entry:{type:t.type,_id:t._id,_name:t._name,_slug:t._slug??"",fields:t.parameters,_thumbnail:n?.previewImageUrl??void 0,_dataResources:t._dataResources,_pattern:t._pattern,_patternError:t._patternError,_overridability:t._overridability,_overrides:t._overrides,_locales:t._locales,_author:t._author,_authorSubject:t._authorSubject,_creator:t._creator,_creatorSubject:t._creatorSubject,_patternDataResources:t._patternDataResources}}}function Lq(t,e){let{parameters:n,...r}=t;return{...r,_id:e??r._id??"unknown",fields:n}}function Mq(t){let{fields:e,...n}=t;return{...n,parameters:e}}import{CANVAS_VIZ_LOCALE_RULE as gst}from"@uniformdev/canvas";import{produce as vst}from"immer";function a3e(t,e,n){let r=vst(t.criteria,o=>s3e(o,e,n));return r&&{...t,criteria:r}}function s3e(t,e,n){if(!t)return t;let r=!1;for(let o of t.clauses)if("clauses"in o){let i=s3e(o,e,n);if(i===null){if(t.op!=="|")return null;t.clauses.splice(t.clauses.indexOf(o),1),r=!0}else i!==void 0&&(t.clauses[t.clauses.indexOf(o)]=i,r=!0)}else if(o.rule===gst){let i=Array.isArray(o.value)?o.value:[o.value],a=i.includes(e),l=i.includes(n);if(!a&&!l||a&&l)continue;if(i.length===1&&l&&!a)return null;a&&!l&&(o.value=i.concat(n),r=!0)}return r?t:void 0}var l3e=q(wq(),1);function Rq(t,e){try{return(0,l3e.get)(t,e)}catch{return}}function Oq(t,e,n=0){let r=t.slice(n*4,n*4+4);if(!r)throw new Error("Failed to generate a default variation name");return`${e.startsWith("$")?e.slice(1):e}-${r}`}import{CANVAS_VIZ_LOCALE_RULE as yst}from"@uniformdev/canvas";import{produce as bst}from"immer";function u3e(t,e){let n=bst(t.criteria,r=>c3e(r,e));return n&&{...t,criteria:n}}function c3e(t,e){if(!t)return t;for(let n=t.clauses.length-1;n>=0;n--){let r=t.clauses[n];if("clauses"in r){let o=c3e(r,e);if(o)t.clauses[n]=o;else if(t.clauses.splice(n,1),o===null&&t.op!=="|")return null}else if(r.rule===yst){let o=Array.isArray(r.value)?r.value:[r.value],i=o.indexOf(e);if(i!==-1)if(Array.isArray(r.value)&&r.value.length>1)o.splice(i,1);else if(r.op.startsWith("!"))t.clauses.splice(n,1);else return null}}if(t.clauses.length!==0)return t}function d3e(t,e){let n=PS();if(process.env.NODE_ENV==="development"&&!e){let r=new Error().stack?.split(`
5648
5648
  `).slice(2).join(`
5649
5649
  `).trimStart();n.on("*",(o,i)=>{console.debug(`\u26A1\uFE0F ${t}:${String(o)}`,{args:i,stack:r,subs:n.all.get(String(o))?.length??0})})}return n}var _u=(0,y3e.default)(),Est=!0,Tst="Twee",qd=class t{#e={};rootNodeId;#r={};#o={};#n;#i={};#t=d3e(Tst,Est);#u;#c;#h;#d;#s;#a;constructor(e,n){let{metadata:r,startDirty:o}=n||{};this.#s=r??{},this.#a={_name:e?._name??"",_slug:e?._slug??null},this.#d=!o;let i=No(e,a=>{this.#v({composition:a,ignoreRootOverrides:!0,preserveChildrenSlotSections:!0}),delete a._author,delete a._authorSubject,delete a._creator,delete a._creatorSubject});this.rootNodeId=i._id??M0(),this.#u=this.rootNodeId,this.#l({componentTree:i,nodeId:this.rootNodeId}),this.#n=i._overrides??{}}events=this.#t;exportTree(e){return this.exportSubtree(this.rootNodeId,e)}exportMetadata(){return this.#s}exportRootNodeMetadata(){return this.#a}get pristine(){return this.#d}set pristine(e){this.#d!==e&&(this.#d=e,this.#t.emit("pristineChanged",{pristine:e}))}get selectedBlockIdStack(){return this.#c}set selectedBlockIdStack(e){this.#c=e,this.#t.emit("selectedBlockChanged",{selectedBlockIds:this.#c})}get selectedNodeId(){return this.#u}set selectedNodeId(e){this.#u!==e&&(this.#u=e,this.selectedParameterId=void 0,this.#t.emit("selectedNodeChanged",{selectedNodeId:e}))}get selectedParameterId(){return this.#h}set selectedParameterId(e){this.#h!==e&&(this.#h=e,this.#t.emit("selectedParameterChanged",{selectedParameterId:e}))}pushSelectedBlockId(e){this.selectedBlockIdStack=this.selectedBlockIdStack??[],this.selectedBlockIdStack?.push(e),this.#t.emit("selectedBlockChanged",{selectedBlockIds:this.selectedBlockIdStack})}popSelectedBlockId(){this.#c?.pop(),this.#t.emit("selectedBlockChanged",{selectedBlockIds:this.selectedBlockIdStack})}getNodeById(e){return this.#e[e]}getNodesIndex(){return this.#e}getBlockNodeValueById(e){return Lq(this.exportSubtree(e),e)}getNodeChildren(e){let n=this.#r[e];if(n)return n}getNodeProperty(e,n){return Rq(this.#o,[e,n])}getNodeProperties(e){return this.#o[e]??{}}insertNode({node:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o,overrideNodeId:i}){let a=i??M0();if(!this.#T(n))throw new Error("Cannot insert component into a read-only pattern slot unless it is within a slot section");let c={nodeId:a,parentId:n,value:t.#E(e),isExpandedInUI:!0,propertyValueLocalizability:{}};return this.#S({node:c,parentNodeId:n,parentSlot:r,targetIndexInSlot:o}),this.#m({nodeId:a,destinationParentId:n,destinationSlotName:r}),this.pristine=!1,this.#t.emit("nodeChanged",{changedNode:c,oldValue:void 0,type:"new"}),this.#t.emit("childrenChanged",{parentId:n,slotOrBlockName:r,newChildIds:this.#r[n][r],type:"slot"}),a}upsertBlockNode({nodeId:e,property:n,index:r,entry:o}){let i=this.#w({nodeId:e,property:n,index:r,entry:o});return this.pristine=!1,this.#t.emit("childrenChanged",{parentId:e,slotOrBlockName:n,newChildIds:this.#o[e]?.[n]?.value,type:"block"}),i}updateRootMetadata(e){let n={...this.#s};this.#s={...this.#s,...e},this.pristine=!1,this.#t.emit("metadataChanged",{metadata:this.#s,oldValue:n})}updateRootNode({update:e,doNotSetDirty:n}){let r={...this.#a};this.#a={...this.#a,...e},n||(this.pristine=!1),this.#t.emit("rootNodeMetadataChanged",{metadata:this.#a,oldValue:r})}insertPattern({parentNodeId:e,parentSlot:n,pattern:r,targetIndexInSlot:o,patternInstanceId:i}){let a=i??M0();if(this.#e[a])throw new Error(`Node with ID '${a}' already exists. Pattern nodes must have unique IDs. Did you mean to move or duplicate this pattern instead?`);let l=this.#b(r,a,!1);return this.#f({nodeId:l,parentNodeId:e,parentSlot:n,targetIndexInSlot:o}),this.#m({nodeId:l,destinationParentId:e,destinationSlotName:n}),this.pristine=!1,this.visitNodeAndDescendants(l,c=>{this.#t.emit("nodeChanged",{changedNode:c,oldValue:void 0,type:"new"})}),this.#t.emit("childrenChanged",{parentId:e,slotOrBlockName:n,newChildIds:this.#r[e][n],type:"slot"}),l}unlinkPattern(e){let n=this.#e[e];if(!n)throw new Error(`Node ${e} does not exist`);if(!n.value._pattern)throw new Error(`Node ${e} is not a pattern`);let r=n.value._patternDataResources||n.value._dataResources,o=n3e(n.value),i=l=>{l.partOfNestedPattern||(this.updateNode({nodeId:l.nodeId,updateComponent:c=>{delete c._pattern,delete c._patternError,delete c._overrides},updateMetadata:c=>{delete c.partOfPattern,delete c.partOfNestedPattern},doNotSetDirty:!0,ignoreOverrides:!0}),this.#n[l.nodeId]&&(this.#n=No(this.#n,c=>{delete c[l.nodeId]})))};this.visitNodeAndDescendants(e,i);let a=l=>{l.partOfNestedPattern&&this.updateNode({nodeId:l.nodeId,updateMetadata:c=>{c.partOfPattern=c.partOfNestedPattern,delete c.partOfNestedPattern},doNotSetDirty:!0,ignoreOverrides:!0})};this.visitNodeAndDescendants(e,a),r&&(this.updateNode({nodeId:this.rootNodeId,updateDataResources:l=>Object.entries(o??{}).filter(([c])=>!(c in(l??{}))).map(([c,d])=>{let{source:f,...m}=d;return{type:"set",name:c,value:m}})}),this.updateNode({nodeId:n.nodeId,updateComponent:l=>{delete l._patternDataResources},updateDataResources:"removeAll",doNotSetDirty:!0,ignoreOverrides:!0})),this.pristine=!1}convertToPattern({existingNodeId:e,pattern:n}){let r=this.#e[e],o=r?.parentId;if(!r)throw new Error(`Node ${e} does not exist`);let i=this.#b(n,e,!0);this.#e[i]=No(this.#e[i],l=>{l.parentId=o}),this.pristine=!1;let a=this.#e[i];this.#t.emit("nodeChanged",{changedNode:a,oldValue:r,type:"new"}),Object.entries(this.#r[i]??{}).forEach(([l,c])=>{this.#t.emit("childrenChanged",{newChildIds:c,parentId:i,slotOrBlockName:l,type:"slot"})})}copyNodeToClipboard(e){let n=this.exportSubtree(e,{keepPatternData:!1}),r=this.exportSubtree(e,{keepPatternData:!0}),o=[];L0(r,({node:l})=>{l._id&&o.push(l._id)}),L0(n,({node:l})=>{l._id&&(l._overrides&&delete l._overrides,"_name"in l&&delete l._name,"_slug"in l&&delete l._slug)});let i=this.#g(),a=Object.entries(i??{}).reduce((l,[c,d])=>(o.some(f=>c.includes(f))&&(l[c]=d),l),{});return{format:"uniform/copied-component-subtree-1.0",componentData:n,overrides:Object.keys(a).length?a:void 0,pasteAs:this.getNodeById(e)?.isBlock?"block":void 0}}async pasteNodeFromClipboard({parentNodeId:e,parentSlot:n,targetIndexInParent:r,clipboard:o,resolvePattern:i}){let a=_u(o),l=async d=>{d._pattern&&c.push((async()=>{let f=await i(d._pattern);if(!f){console.debug(`Pasted pattern ${d._pattern} not found, skipping`);return}let m=this.#x(f,d._id);Object.assign(d,m)})())},c=[];return L0(a.componentData,({node:d})=>{l(d)}),a.overrides&&Object.values(a.overrides).forEach(d=>{d.slots&&Object.values(d.slots).forEach(f=>{f.forEach(m=>{L0(m,({node:h})=>{l(h)})})})}),await Promise.all(c),this.#_(a.componentData,{parentId:e,parentName:n,parentType:o.pasteAs==="block"?"block":"slot",targetIndexInParent:r},a.overrides)}enableLocale(e){this.updateNode({nodeId:this.rootNodeId,updateComponent:n=>{let r=n;r._locales??=[];let o=[...new Set([...r._locales,...Array.isArray(e)?e:[e]])];r._locales=o}})}disableLocale(e){this.updateNode({nodeId:this.rootNodeId,updateComponent:o=>{let i=o;i._locales=i._locales?.filter(a=>a!==e)}});let n=[],r=o=>{this.getNodeProperty(o.nodeId,CT)?.value===e&&!o.partOfPattern&&n.push(o.nodeId);let a=this.getNodeProperties(o.nodeId);Object.entries(a).forEach(([c,d])=>{let f=d;c!==N0&&(o.partOfPattern?this.isPatternPropertyOverridden(o.nodeId,c,e)&&this.resetPatternPropertyOverride(o.nodeId,c,e):(f?.localesConditions?.[e]?.forEach((m,h)=>{this.updateNodeProperty({nodeId:o.nodeId,property:c,value:void 0,source:"other",locale:e,conditionIndex:h,conditionDefinition:null})}),f?.locales?.[e]!==void 0&&this.updateNodeProperty({nodeId:o.nodeId,property:c,value:void 0,source:"other",locale:e,conditionIndex:-1})))});let l=this.getNodeProperty(o.nodeId,N0);if(l?.value){let c=u3e(l.value,e);c===null?n.push(o.nodeId):this.updateNodeProperty({nodeId:o.nodeId,property:N0,value:c?()=>c:void 0,source:"other",locale:void 0,conditionIndex:-1})}};this.visitNodeAndDescendants(this.rootNodeId,r),n.forEach(o=>{this.deleteNode(o)})}copyValuesToLocalePlan({sourceLocale:e,destinationLocale:n,doNotCopyDescendants:r=!1,startingNodeId:o=this.rootNodeId,specificPropertyId:i}){let a=new Map,l=d=>{if(d.value.type===xst&&!d.partOfPattern){let m=this.getNodeChildren(d.nodeId)?.[kq]??[],h=m.map(b=>this.getNodeProperty(b,CT)),g=h.findIndex(b=>b?.value===n);if(g>=0){let b=m[g];Qh(a,b).actions.push({type:"deleteLocalizedNode"})}let y=h.findIndex(b=>b?.value===e);if(y>=0){let b=m[y];Qh(a,b).actions.push({type:"duplicateLocalizedNode",targetIndexInSlot:g})}}if(a.get(d.nodeId)?.actions.some(m=>m.type==="deleteLocalizedNode"))return;let f=i?{[i]:this.getNodeProperty(d.nodeId,i)}:this.getNodeProperties(d.nodeId);Object.entries(f).forEach(([m,h])=>{if(h===void 0)return;let g=!d.partOfPattern,y=MC(d.value._overridability,m)==="yes";if(!(g||y))return;if(m===N0){let $=a3e(h.value,e,n);$===null?Qh(a,d.nodeId).actions.push({type:"deleteLocalizedNode"}):$&&Qh(a,d.nodeId).actions.push({type:"updateVisibilityCriteria",targetValue:$})}let S=h.locales?.[e],C=h.locales?.[n];(!S||!C||!aa(S,C))&&(S!==void 0?Qh(a,d.nodeId).actions.push({type:"copyPropertyValue",propertyId:m,sourceValue:S,targetValue:C,conditionIndex:-1}):C!==void 0&&Qh(a,d.nodeId).actions.push({type:"deletePropertyValue",propertyId:m,sourceValue:S,targetValue:C,conditionIndex:-1}));let w=h.localesConditions?.[e],E=h.localesConditions?.[n];w?.forEach(($,R)=>{let M=h.localesConditions?.[n]?.[R];(!$||!M||!aa($,M))&&Qh(a,d.nodeId).actions.push({type:"copyPropertyValue",propertyId:m,sourceValue:$.value,targetValue:M,conditionIndex:R,conditionDefinition:$.when})});let _=w?.length??0,D=E?.length??0;if(_<D){let $=Qh(a,d.nodeId);for(let R=_;R<D;R++)$.actions.push({type:"deletePropertyValue",propertyId:m,sourceValue:w?.[R],targetValue:E?.[R],conditionIndex:R})}})},c=this.#e[o];if(!c)throw new Error(`Node ${o} does not exist`);return l(c),!i&&!r&&this.visitDescendants(c.nodeId,l),{nodePlans:Array.from(a.values()),sourceLocale:e,destinationLocale:n}}async copyValuesToLocaleExecute({resolvePattern:e,plan:{sourceLocale:n,destinationLocale:r,nodePlans:o}}){let i=`copyLocaleExecute: ${r}`;console.time(i);for(let{nodeId:a,actions:l}of o)for(let c of l)switch(c.type){case"copyPropertyValue":{this.updateNodeProperty({nodeId:a,property:c.propertyId,source:"other",locale:r,value:()=>c.sourceValue,type:this.getNodeProperty(a,c.propertyId)?.type,conditionIndex:c.conditionIndex,conditionDefinition:c.conditionDefinition});break}case"deletePropertyValue":{this.updateNodeProperty({nodeId:a,property:c.propertyId,source:"other",locale:r,value:void 0,conditionIndex:c.conditionIndex,conditionDefinition:null});break}case"deleteLocalizedNode":{this.deleteNode(a);break}case"duplicateLocalizedNode":{let d=await this.duplicateNode(a,e);this.updateNodeProperty({nodeId:d,locale:void 0,conditionIndex:-1,type:"localeSelect",property:CT,source:"other",value:()=>r});let f=this.copyValuesToLocalePlan({sourceLocale:n,destinationLocale:r,startingNodeId:d});this.copyValuesToLocaleExecute({plan:f,resolvePattern:e}),c.targetIndexInSlot!==void 0&&this.moveNode({movedNodeId:d,parentNodeId:this.#e[a].parentId,parentSlot:kq,targetIndexInSlot:c.targetIndexInSlot});break}case"updateVisibilityCriteria":{this.updateNodeProperty({nodeId:a,property:N0,source:"other",locale:void 0,conditionIndex:-1,value:()=>c.targetValue});break}default:throw new Error(`Unhandled action type ${c.type}`)}console.timeEnd(i)}updateNode({nodeId:e,updateComponent:n,updateDataResources:r,updateMetadata:o,doNotSetDirty:i,ignoreOverrides:a}){let l=this.#e[e];if(!l)throw new Error(`Update target node ID ${e} did not exist!`);let c=No(l,h=>{if(o&&(o(h),h.nodeId=e,h.value=l.value,h.parentId=l.parentId),n){if(n(h.value),"slots"in h.value)throw new Error("Do not set `slots` on a Twee node, insert child nodes instead.");if("parameters"in h.value)throw new Error("Do not set `parameters` on a Twee node, use updateProperties option instead.")}if(r){let g=typeof r=="function"?r(h.value._dataResources):r;if(g==="removeAll")delete h.value._dataResources;else for(let y of g){let b=a?!1:h.nodeId!==this.rootNodeId&&h.value._pattern;switch(y.type){case"set":b&&(this.#n=No(this.#n,S=>{S[e]??={},S[e].dataResources??={},S[e].dataResources[y.name]=y.value})),h.value._dataResources??={},h.value._dataResources[y.name]=y.value;break;case"remove":b&&(this.#n=No(this.#n,S=>{delete S[e]?.dataResources?.[y.name]})),delete h.value._dataResources?.[y.name];break;case"reset":{let S=this.#i[e]?.dataResources?.[y.name];h.value._dataResources&&(S&&Object.keys(S).length>0?h.value._dataResources[y.name]=S:delete h.value._dataResources[y.name]),this.#n=No(this.#n,C=>{delete C[e]?.dataResources?.[y.name]})}break;default:throw new Error(`Unhandled data resource action ${y?.type}`)}}}}),d=!!(l.partOfPattern&&!l.value._patternError),f=l.value.variant!==c.value.variant,m=l.value._overridability?.variants??!1;!a&&d&&f&&m&&(this.#n=No(this.#n,h=>{h[e]??={},h[e].variant=c.value.variant})),this.#e[e]=c,i||(this.pristine=!1),this.#t.emit("nodeChanged",{changedNode:c,type:"update",oldValue:l})}updateNodeProperty({nodeId:e,property:n,value:r,source:o,locale:i,type:a,doNotSetDirty:l=!1,ignoreOverrides:c=!1,conditionIndex:d,conditionDefinition:f}){let m=this.#e[e];if(!m)throw new Error(`Update target node ID ${e} did not exist!`);if(d<0&&f)throw new Error("Condition definition provided for non-conditional value");let h=!!(m.partOfPattern&&!m.value._patternError),g=[e,n],y=Rq(this.#o,g);if(!y&&r==null)return;let b=g3e({locale:i,property:y,conditionIndex:d}),S=i?y?.localesConditions?.[i]?.[d]:y?.conditions?.[d],C=typeof r=="function"?No(b,$=>r($)):r,w=a??y?.type;if(!w)throw new Error(`Cannot add parameter ${n} to node ${e} without specifying a type`);let E={...y,type:w},_=!1;E=No(E,$=>{C===void 0&&d<0?_=!SM({locale:i,property:$,conditionIndex:d}):f===null&&d>=0?_=!SM({locale:i,property:$,conditionIndex:d}):Nq({locale:i,property:$,newPropertyValue:C,conditionIndex:d,conditionDefinition:f??S?.when??{clauses:[]}})}),_&&(E=void 0);let D=h&&MC(m.value._overridability,n)==="yes";if(h&&!D&&!c)throw new Error(`Cannot override parameter ${n} on node ${e} because it is not marked as overridable on the pattern (${m.partOfPattern})`);if(D&&(this.#i[e]?.parameters?.[n]||(this.#i=No(this.#i,R=>{R[e]??={parameters:{},dataResources:{}},R[e].parameters[n]=y??null}))),!c&&D){let $=this.#n[e]?.parameters?.[n];this.#n=No(this.#n,R=>{let k=C==null||E===void 0?null:C,A=$??{type:E?.type??y?.type??"unknown",value:y?.value,conditions:y?.conditions,locales:i&&y?.locales?.[i]?{[i]:y.locales[i]}:void 0,localesConditions:i&&y?.localesConditions?.[i]?{[i]:y.localesConditions[i]}:void 0},I=No(A,H=>{f===null&&d>=0?SM({locale:i,property:H,conditionIndex:d}):Nq({locale:i,property:H,newPropertyValue:k,conditionIndex:d,conditionDefinition:f??S?.when??{clauses:[]}})});(0,R0.set)(R,`/${e}/parameters/${n}`,I)}),$||this.#t.emit("propertyOverrideCreated",{nodeId:e,property:n})}C===null?(0,R0.remove)(this.#o,g):(this.#o[e]??={},(0,R0.set)(this.#o,g,E)),l||(this.pristine=!1),this.#t.emit("nodeParameterChanged",{nodeId:e,parameter:n,locale:i,conditionIndex:d,value:E,previousValue:y,type:r?y?"update":"new":"delete",conditionDefinition:f,source:o})}isPatternPropertyOverridden(e,n,r,o){let i=this.getNodeById(e);if(!i||MC(i.value._overridability,n)==="no")return!1;let a=this.#n[e]?.parameters?.[n];return a?r?(o===void 0||o===!0)&&a.localesConditions?.[r]!==void 0||(o===void 0||o===!1)&&a.locales?.[r]!==void 0:(o===void 0||o===!0)&&a.conditions!==void 0||(o===void 0||o===!1)&&a.value!==void 0:!1}getPatternPropertyOverrideDefaultValue(e,n,r){let o=this.#i[e]?.parameters?.[n];if(!o)return{exists:!1};if(r&&o.locales?.[r])return{exists:!0,value:o,sourceLocale:r};if(o.value)return{exists:!0,value:o,sourceLocale:void 0};let i=Object.keys(o.locales??{})[0];return i?{exists:!0,value:o,sourceLocale:i}:{exists:!1}}resetPatternPropertyOverride(e,n,r){let o=[-1];this.#n=No(this.#n,a=>{let l=a[e]?.parameters?.[n];if(l)if(r){delete l.locales?.[r];let c=l.localesConditions?.[r];c&&(c.forEach((d,f)=>{o.push(f)}),delete l.localesConditions?.[r]),l.locales&&Object.keys(l.locales).length===0&&delete l.locales,l.localesConditions&&Object.keys(l.localesConditions).length===0&&delete l.localesConditions,Object.keys(l.locales??{}).length===0&&Object.keys(l.localesConditions??{}).length===0&&delete a[e]?.parameters?.[n]}else{let c=l.conditions;c&&c.forEach((d,f)=>{o.push(f)}),delete a[e].parameters?.[n]}});let i=this.getPatternPropertyOverrideDefaultValue(e,n,r);!i.exists||i.value===null?this.updateNodeProperty({nodeId:e,property:n,value:void 0,source:"reset",locale:r,ignoreOverrides:!0,doNotSetDirty:!1,conditionIndex:-1}):o.forEach(a=>{let l=g3e({locale:i.sourceLocale,property:i.value,conditionIndex:a,strict:!0});this.updateNodeProperty({nodeId:e,property:n,value:l===void 0?void 0:()=>l,source:"reset",locale:r,type:i.value?.type,ignoreOverrides:!0,doNotSetDirty:!1,conditionIndex:a,conditionDefinition:(r?i.value?.localesConditions?.[r]?.[a]?.when:i.value?.conditions?.[a]?.when)??null})}),this.#t.emit("propertyOverrideReset",{nodeId:e,property:n,usedPatternDefault:i!==void 0})}async duplicateNode(e,n){let r=this.getParentInfo(e);if(!r)throw new Error("Cannot duplicate root node or parentless block");let o=this.copyNodeToClipboard(e);return await this.pasteNodeFromClipboard({parentNodeId:r.parentId,parentSlot:r.parentName,resolvePattern:n,targetIndexInParent:r.targetIndexInParent+1,clipboard:o})}moveNode({movedNodeId:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o}){if(!this.#e[e])throw new Error(`Cannot move node ${e} - it does not exist`);let a=this.getParentInfo(e);if(!a)throw new Error("Cannot move root node");this.#r[a.parentId][a.parentName].splice(a.targetIndexInParent,1),this.#y(a.parentId,e),this.#f({nodeId:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o}),this.#m({nodeId:e,destinationParentId:n,destinationSlotName:r,sourceSlotName:a.parentName}),this.pristine=!1,this.#t.emit("childrenChanged",{parentId:n,slotOrBlockName:r,newChildIds:this.#r[n][r],type:"slot"}),this.#t.emit("childrenChanged",{parentId:a.parentId,slotOrBlockName:a.parentName,newChildIds:this.#r[a.parentId][a.parentName],type:"slot"})}deleteNode(e,n){let r=this.getParentInfo(e);if(!r&&!n)throw new Error("Cannot delete root node");r&&!n&&(this.#r[r.parentId][r.parentName].splice(r.targetIndexInParent,1),this.#r[r.parentId][r.parentName].length===0&&delete this.#r[r.parentId][r.parentName],this.selectedNodeId===e&&(this.selectedNodeId=r.parentId),this.#y(r.parentId,e),this.#t.emit("childrenChanged",{parentId:r.parentId,slotOrBlockName:r.parentName,newChildIds:this.#r[r.parentId][r.parentName]??[],type:"slot"})),delete this.#e[e],this.#t.emit("nodeDeleted",{deletedNodeId:e}),this.pristine=!1}#y(e,n){this.#n=No(this.#n,r=>{let o=r[e]?.slots;o&&Object.keys(o).forEach(i=>{o[i]=o[i].filter(({_id:a})=>a!==n),o[i].length===0&&delete o[i]})})}#g(){if(Object.keys(this.#n).length>0){let e=_u(this.#n);return Object.entries(e).forEach(([r,o])=>{let i=!0;if(!this.#e[r]){delete e[r];return}if(o.parameters){let a=Object.entries(o.parameters);a.forEach(([l,c])=>{let d=v3e(c);d?(o.parameters[l]=d,i=!1):delete o.parameters[l]}),a.length===0&&delete o.parameters}o.slots&&Object.entries(o.slots).forEach(([l,c])=>{if(c.length){let d=c.filter(f=>f._id).map(f=>this.exportSubtree(f._id));d?(o.slots[l]=d,i=!1):delete o.slots[l]}else delete o.slots[l]}),o.variant!==void 0&&(i=!1),o.dataResources&&Object.keys(o.dataResources).length>0&&(i=!1),i&&delete e[r]}),Object.keys(e).length===0&&(e=void 0),e}}exportSubtree(e,n){let{keepPatternData:r=!1}=n??{},o=this.#e[e];if(!o)throw new Error(`Node ${e} to export is not found`);let i=_u(o);if(e===this.rootNodeId){let c=this.#g();c?i.value._overrides=c:delete i.value._overrides;let d=i.value;d._name=this.#a._name,this.#a._slug&&(d._slug=this.#a._slug)}let a=[i],l=new Set;for(;a.length>0;){let c=a.pop();if(l.has(c.nodeId))throw new Error("Circular reference detected in the composition tree with node ID "+c.nodeId);if(l.add(c.nodeId),c.value._id=c.nodeId,!r&&(delete c.value._patternDataResources,delete c.value._patternOverrides,c.value._pattern&&c.value._dataResources)){let m=!1;Object.keys(c.value._dataResources).forEach(h=>{i.value._overrides?.[c.nodeId]?.dataResources?.[h]?delete c.value._dataResources[h]:m=!0}),m||delete c.value._dataResources}let d=this.#o[c.nodeId];if(d&&(r||!c.partOfPattern)){let m={},h=!1;Object.entries(d).forEach(([g,y])=>{if(y?.type===Dc&&Array.isArray(y.value)){let b=y.value,S=[];b.forEach(C=>{let w=this.exportSubtree(C,n);S.push(Lq(w,C))}),m[g]={value:S,type:Dc},h=!0}else{let b=v3e(y);b&&(m[g]=b,h=!0)}}),h&&(c.value.parameters=m)}let f=this.#r[c.nodeId];!f||c.partOfPattern&&!r||Object.entries(f).forEach(([m,h])=>{h.forEach((g,y)=>{let b=this.#e[g];if(!b)throw new Error("Insanity detected.");let S=_u(b),C=c.value;C.slots=C.slots||{},(0,R0.set)(c,["value","slots",m,y.toString(10)],S.value),a.push(S)})})}return i.value}#S({parentNodeId:e,parentSlot:n,targetIndexInSlot:r,node:o}){if(!this.#e[e])throw new Error("Parent ID to insert under did not exist!");if(this.#e[o.nodeId])throw new Error(`Node with ID '${o.nodeId}' already exists. Nodes must have unique IDs. Did you mean to move or duplicate this node instead?`);this.#e[o.nodeId]=o,this.#f({nodeId:o.nodeId,parentNodeId:e,parentSlot:n,targetIndexInSlot:r})}#f({nodeId:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o}){let i=this.#e[n],a=this.#r[n]??={},l=a[r]??=[];typeof o<"u"?l.splice(o,0,e):l.push(e),i?.value.type===wM&&(this.#n=No(this.#n,c=>{c[n]=c[n]??{},c[n].slots={[Cst]:l.map(d=>({_id:d,type:this.#e[d].value.type}))}})),this.#e[e]=No(this.#e[e],c=>{c.parentId=n})}#w({nodeId:e,property:n,index:r,entry:o}){let i=this.getNodeById(e);if(!i)throw new Error("Node doesn't exist");let l={nodeId:o._id??M0(),value:{type:o.type,_dataResources:o._dataResources},isBlock:!0,parentId:e,propertyValueLocalizability:{}},c=this.getNodeProperty(i.nodeId,n);if(c&&c.type!==Dc)throw new Error("Parameter already exists and isn't a block parameter");let d=this.#e[l.nodeId];this.#e[l.nodeId]=l;let f=_u(this.getNodeProperty(i.nodeId,n)?.value?.filter(m=>this.getNodeById(m))??[]);if(typeof r<"u"){if(r<0)throw new Error("parameter index cannot be less than 0");let m=-1;if(f.forEach((h,g)=>{h===l.nodeId&&(m=g)}),r>f.length+(m===-1?1:0))throw new Error(`Parameter index ${r} outside current index bounds.`);m>-1&&m!==r&&(f=f.filter(h=>h!==l.nodeId),f.splice(r,0,l.nodeId))}else f.push(l.nodeId);return Object.entries(o?.fields??{}).forEach(([m,h])=>{if(h.type===Dc&&Array.isArray(h.value)){let g=h.value,y=[];g.forEach(b=>{this.#l({nodeId:l.nodeId,componentTree:Mq(b)}),y.push(b._id)}),this.updateNodeProperty({nodeId:l.nodeId,property:m,type:h.type,value:()=>y,source:"other",locale:void 0,conditionIndex:-1})}else this.updateNodeProperty({nodeId:l.nodeId,property:m,type:h.type,value:()=>h.value,source:"other",locale:void 0,conditionIndex:-1})}),this.updateNodeProperty({nodeId:i.nodeId,property:n,type:Dc,value:()=>f,source:"other",locale:void 0,conditionIndex:-1}),this.#t.emit("nodeChanged",{changedNode:i,oldValue:void 0,type:d?"update":"new"}),this.#t.emit("nodeParameterChanged",{nodeId:i.nodeId,parameter:n,previousValue:c,source:"other",type:d?"update":"new",locale:void 0,conditionIndex:-1,conditionDefinition:void 0,value:{type:Dc,value:f}}),{blockIds:f}}#l({componentTree:e,nodeId:n,partOfPattern:r,partOfNestedPattern:o,resetUids:i,isBlock:a,allowReplacement:l}){let{slots:c,parameters:d,_id:f,_overrides:m,...h}=e,g=r??h._pattern,y=h._pattern&&h._pattern!==g?h._pattern:o,b=n??(i?void 0:f)??M0();if(this.#e[b]&&!l)throw new Error(`Node with ID '${b}' already exists. Nodes must have unique IDs.`);let S={nodeId:b,value:h,partOfPattern:g,partOfNestedPattern:y,isBlock:a,propertyValueLocalizability:Object.entries(d??{}).reduce((C,[w,E])=>(C[w]=w6({definition:void 0,currentValue:E,lastUserChoice:void 0}),C),{})};return g&&(S.partOfPattern=g),this.#e[S.nodeId]=S,d&&Object.entries(d).forEach(([C,w])=>{let{connectedData:E,..._}=w,D=E?wst(Sst(E)):w.value;if(w?.type===Dc&&Array.isArray(D)){let $=D,R=[];$?.forEach(M=>{let k={...M,_id:i?M0():M._id??M0()};if(this.#e[k._id])throw new Error(`Block node with ID '${k._id}' already exists. Block nodes must have unique IDs.`);return R.push(k._id),this.#e[k._id]={nodeId:k._id,value:{type:Dc},propertyValueLocalizability:{}},this.#l({componentTree:Mq(k),nodeId:k._id,allowReplacement:!0}),this.#e[k._id].isBlock=!0,this.#e[k._id].parentId=S.nodeId,this.#e[k._id]}),D=R}this.#o[S.nodeId]=this.#o[S.nodeId]??{},(0,R0.set)(this.#o,[S.nodeId,C],{..._,value:D})}),c&&Object.entries(c).forEach(([C,w])=>{let E=w.map(_=>{if(this.#e[_._id??""]?.isBlock)return;let D=this.#l({componentTree:_,partOfPattern:h.type===wM?void 0:g,partOfNestedPattern:h.type===wM?void 0:y,resetUids:i});return this.#e[D].parentId=S.nodeId,D});this.#r[S.nodeId]=this.#r[S.nodeId]??{},this.#r[S.nodeId][C]=E.filter(_=>_)}),S.nodeId}#b(e,n,r){let o=this.#x(e,n);return this.#l({componentTree:o,nodeId:n,allowReplacement:r})}#x(e,n){let r=_u(e);return this.#v({composition:r}),yM(r,n),r._pattern=e._id,delete r._id,delete r._name,delete r._slug,delete r._overrides,delete r._locales,delete r._author,delete r._authorSubject,delete r._creator,delete r._creatorSubject,r._dataResources&&(r._patternDataResources=_u(r._dataResources),delete r._dataResources),r}getParentInfo(e){let{parentId:n,isBlock:r}=this.#e[e]??{};if(!n)return;let o=this.#e[n];if(o)if(r)for(let[i,a]of Object.entries(this.#o[n]??{})){if(a?.type!==Dc)continue;let l=Array.isArray(a.value)?a.value:[],c=l.indexOf(e);if(c>=0)return{value:o.value,parentId:n,parentName:i,targetIndexInParent:c,parentChildIds:l,parentType:"block"}}else{let i=this.#r[n];if(!i&&!r)throw new Error("Sanity failed; parent had no children!");for(let[a,l]of Object.entries(i??{})){let c=l.indexOf(e);if(c>=0)return{value:o.value,parentId:n,parentName:a,targetIndexInParent:c,parentChildIds:l,parentType:"slot"}}return}}static#E(e){return No(e,r=>{delete r.slots,delete r.parameters})}#T(e){let n=e;for(;n;){let r=this.getNodeById(n);if(!r)break;if(r.value._pattern)return!1;if(r.value.type===wM||!r.partOfPattern)return!0;n=r.parentId}return!0}#_(e,n,r){let i={...this.#g(),...r},a;if(this.#n=No(this.#n,c=>{this.#i=No(this.#i,d=>{a=CM(e,i,(f,m,h)=>{c[f]=m,d[f]=this.#i[h]})})}),!a)throw new Error("Failed to duplicate component");a=No(a,c=>{c._overrides=_u(this.#n),this.#v({composition:c,preserveChildrenSlotSections:!0})});let l=this.#l({componentTree:a,isBlock:n.parentType==="block"});if(n.parentType==="block"){let c=this.getNodeProperty(n.parentId,n.parentName)?.value??[],d=[...c.slice(0,n.targetIndexInParent),l,...c.slice(n.targetIndexInParent)];this.updateNodeProperty({nodeId:n.parentId,property:n.parentName,type:Dc,value:()=>d,locale:void 0,conditionIndex:-1,source:"other"}),this.#e[l].parentId=n.parentId,this.#t.emit("nodeChanged",{changedNode:this.getNodeById(l),type:"new",oldValue:void 0}),this.#t.emit("childrenChanged",{parentId:n.parentId,slotOrBlockName:n.parentName,newChildIds:d,type:"block"})}else{this.#f({nodeId:l,parentNodeId:n.parentId,parentSlot:n.parentName,targetIndexInSlot:n.targetIndexInParent}),this.#m({nodeId:l,destinationParentId:n.parentId,destinationSlotName:n.parentName}),this.#t.emit("childrenChanged",{parentId:n.parentId,slotOrBlockName:n.parentName,newChildIds:this.#r[n.parentId][n.parentName],type:"slot"});let c=d=>{this.#t.emit("nodeChanged",{changedNode:d,type:"new",oldValue:void 0})};this.visitNodeAndDescendants(l,c)}return this.pristine=!1,l}#v({composition:e,ignoreRootOverrides:n,preserveChildrenSlotSections:r}){this.#i=No(this.#i,i=>{let a=$q({beforeApplyParameterOverride(d,f,m){i[d._id]??={parameters:{},dataResources:{}},i[d._id].parameters[f]=_u(m)},beforeApplyDataResourceOverride(d,f,m){d._dataResources?.[f]?.ignorePatternParameterDefault||(i[d._id]??={parameters:{},dataResources:{}},i[d._id].dataResources[f]=_u(m))}}),l=$q({beforeApplyParameterOverride(d,f,m,h){i[d._id]?.parameters[f]||(i[d._id]??={parameters:{},dataResources:{}},i[d._id].parameters[f]=_u(h??null))},beforeApplyDataResourceOverride(d,f,m,h){d._dataResources?.[f]?.ignorePatternParameterDefault||i[d._id]?.dataResources[f]||(i[d._id]??={parameters:{},dataResources:{}},i[d._id].dataResources[f]=_u(h))}});if(n){let{_overrides:d,...f}=e;L0(f,({node:m})=>{a.visitNode(m)})}let c=n?l:a;L0(e,({node:d})=>{c.visitNode(d)})});let o=Xwe({preserveOwnSlotSections:!0,preserveChildrenSlotSections:r});L0(e,i=>{o(i)})}visitNodeAndDescendants(e,n){let r=this.getNodeById(e);if(!r)throw new Error("Insanity detected.");n(r),this.visitDescendants(e,n)}visitDescendants(e,n){let r=this.#p(e,new Set);for(let o of r)n(...o)}async visitDescendantsAsync(e,n){let r=this.#p(e,new Set);for(let o of r)await n(...o)}*#p(e,n){let r=this.#e[e],o=this.#r[e]??{},i=Object.entries(this.#o[e]??{}).filter(([,a])=>a?.type===Dc)??[];if(!r)throw new Error("Insanity detected.");n.add(e);for(let[a,l]of i){let c=l.value??[];for(let d=0;d<c.length;d++){let f=c[d],m=this.#e[f];if(m){if(n.has(f)){console.error(`Detected parent/child cycle in composition, ID ${f} exists more than once. The traversal of descendants will be aborted for the cycle subtree.`);continue}yield[m,r,a,d];for(let h of this.#p(f,n))yield h}}}for(let[a,l]of Object.entries(o))for(let c=0;c<l.length;c++){let d=l[c],f=this.#e[d];if(f){if(n.has(d)){console.error(`Detected parent/child cycle in composition, ID ${d} exists more than once. The traversal of descendants will be aborted for the cycle subtree.`);continue}yield[f,r,a,c];for(let m of this.#p(d,n))yield m}}}#m({nodeId:e,destinationParentId:n,destinationSlotName:r,sourceSlotName:o}){let i=r,a=o===p3e,l=i===p3e,c=o===m3e,d=i===m3e,f=i===kq,m=this.getNodeProperty(e,f3e);l&&m&&this.updateNodeProperty({nodeId:e,property:f3e,value:void 0,source:"other",locale:void 0,conditionIndex:-1});let h=this.getNodeProperty(e,ST);!l&&h&&this.updateNodeProperty({nodeId:e,property:ST,value:void 0,source:"other",locale:void 0,conditionIndex:-1}),l&&!a&&this.#C({nodeId:e,siblingIds:this.getNodeChildren(n)?.[r]??[],selectExistingName:b=>this.getNodeProperty(b,ST)?.value?.name,setName:b=>this.updateNodeProperty({nodeId:e,property:ST,value:S=>S&&typeof S=="object"&&S!==null?{...S,name:b}:{name:b,crit:[]},source:"other",locale:void 0,conditionIndex:-1,type:ST})}),d&&!c&&this.#C({nodeId:e,siblingIds:this.getNodeChildren(n)?.[r]??[],selectExistingName:b=>this.getNodeProperty(b,h3e)?.value?.id,setName:b=>this.updateNodeProperty({nodeId:e,property:h3e,value:S=>S&&typeof S=="object"&&S!==null?{...S,id:b}:{id:b},source:"other",locale:void 0,conditionIndex:-1,type:"testVariant"})});let g=this.getNodeProperty(e,CT);!f&&g&&this.updateNodeProperty({nodeId:e,property:CT,value:void 0,source:"other",locale:void 0,conditionIndex:-1});let y=this.getNodeProperty(e,N0);(l||f||d)&&y&&this.updateNodeProperty({nodeId:e,property:N0,value:void 0,source:"other",locale:void 0,conditionIndex:-1})}#C({nodeId:e,siblingIds:n,selectExistingName:r,setName:o}){let i=r(e),a=m=>n.some(h=>h===e?!1:r(h)===m),l=i&&a(i);if(i&&!l)return;let c=this.getNodeById(e)?.value.type;if(!c)throw new Error("Insanity detected.");let d=0,f=Oq(e,c,d);do f=Oq(e,c,d),d++;while(a(f));o(f)}};function v3e(t){return t?.value===void 0&&!t?.conditions&&!t?.locales&&!t?.localesConditions?null:t}function Qh(t,e){return _st(t,e,()=>({nodeId:e,actions:[]}))}function _st(t,e,n){return t.has(e)||t.set(e,n()),t.get(e)}import{CANVAS_DRAFT_STATE as NM,CanvasClient as Mst}from"@uniformdev/canvas";import{ProjectMapClient as Rst}from"@uniformdev/project-map";import{produce as Ost}from"immer";function b3e(t){return t.reduce((e,n)=>(e[n._id]={id:n._id,type:n.type,name:n._name},e),{})}import{CANVAS_DRAFT_STATE as w3e,CanvasClient as Aq,ContentClient as E3e,ProjectClient as T3e}from"@uniformdev/canvas";var x3e=q(Fwe());var C3e=(0,x3e.default)(6),EM=class t extends Error{constructor(n,r,o,i,a,l){super(`${n}
5650
- ${i}${a?" "+a:""} (${r} ${o}${l?` Request ID: ${l}`:""})`);this.errorMessage=n;this.fetchMethod=r;this.fetchUri=o;this.statusCode=i;this.statusText=a;this.requestId=l;Object.setPrototypeOf(this,t.prototype)}};var TM=class t{options;constructor(e){if(!e.apiKey&&!e.bearerToken)throw new Error("You must provide an API key or a bearer token");let n=e.fetch;if(!n)if(typeof window<"u")n=window.fetch.bind(window);else if(typeof fetch<"u")n=fetch;else throw new Error("You must provide or polyfill a fetch implementation when not in a browser");this.options={...e,fetch:n,apiHost:this.ensureApiHost(e.apiHost),apiKey:e.apiKey??null,projectId:e.projectId??null,bearerToken:e.bearerToken??null,limitPolicy:e.limitPolicy??C3e,bypassCache:e.bypassCache??!1}}async apiClient(e,n){return(await this.apiClientWithResponse(e,n)).body}async apiClientWithResponse(e,n){return this.options.limitPolicy(async()=>{let r=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`};this.options.bypassCache&&(r["x-bypass-cache"]="true");let{fetch:o,signal:i}=this.options,l=await Dst(()=>o(e.toString(),{...n,signal:i,headers:{...n?.headers,...r}}));if(!l.ok){let c="";try{let d=await l.text();try{let f=JSON.parse(d);f.errorMessage?c=Array.isArray(f.errorMessage)?f.errorMessage.join(", "):f.errorMessage:c=d}catch{c=d}}catch{c="General error"}throw new EM(c,n?.method??"GET",e.toString(),l.status,l.statusText,t.getRequestId(l))}return n?.expectNoContent?{response:l,body:null}:{response:l,body:await l.json()}})}createUrl(e,n,r){let o=new URL(`${r??this.options.apiHost}${e}`);return Object.entries(n??{}).forEach(([i,a])=>{typeof a<"u"&&a!==null&&o.searchParams.append(i,Array.isArray(a)?a.join(","):a?.toString()??"")}),o}ensureApiHost(e){if(!e)return"https://uniform.app";if(!e?.startsWith("http"))throw new Error('Your apiHost must start with "http"');if(e.indexOf("/",8)>-1)throw new Error("Your apiHost must not contain a path element after the domain");if(e.indexOf("?")>-1)throw new Error("Your apiHost must not contain a query string");return e?.endsWith("/")&&(e=e.substring(0,e.length-1)),e}static getRequestId(e){let n=e.headers.get("apigw-requestid");if(n)return n}};async function Dst(t){let n=5,r;for(;n>0&&(r=await t(),r.status===429);){let o=0;try{let l=r.clone(),c=l.headers.get("date"),d=c?new Date(c).getTime():void 0,m=(await l.json())?.info?.reset;typeof d=="number"&&typeof m=="number"&&(o=Math.max(0,Math.min(Math.round(1.1*(m-d)),1e4)))}catch{}let i=Math.pow(2,5-n)*333,a=i+Math.round(Math.random()*(i/2))*(Math.random()>.5?1:-1);await new Promise(l=>setTimeout(l,o+a)),n-=1}return r}var _M=class extends TM{telemetryContext;constructor(e){e.apiHost||(e.apiHost="https://ai.uniform.global"),super(e),this.telemetryContext=e.telemetryContext}async invoke(e,n){let r={};if(this.telemetryContext){let{threadId:i,uniformClient:a,userAgent:l}=this.telemetryContext;i&&(r["x-thread-id"]=i),a&&(r["x-uniform-client"]=a),l&&(r["user-agent"]=l)}return(await this.apiClientWithResponse(new URL(`/projects/${this.options.projectId}/tools/${e}`,this.options.apiHost),{method:"POST",body:n?JSON.stringify(n):void 0,headers:Object.keys(r).length>0?r:void 0})).body}};var S3e={name:"@uniformdev/uniform-mcp",version:"20.39.2",description:"Uniform MCP Server",license:"SEE LICENSE IN LICENSE.txt",bin:{"uniform-mcp":"./dist/index.mjs"},exports:{types:"./dist/index.d.mts",import:"./dist/index.mjs"},sideEffects:!1,scripts:{build:"tsup",dev:"tsup --watch",clean:"rimraf dist",lint:'eslint "src/**/*.{js,ts,tsx}"',format:'prettier --write "src/**/*.{js,ts,tsx}"',mcp:"node dist/index.mjs"},dependencies:{"@modelcontextprotocol/sdk":"^1.12.0","@types/uuid":"9.0.4","@uniformdev/canvas":"workspace:*","@uniformdev/project-map":"workspace:*","fast-json-patch":"^3.1.1",immer:"10.1.1",jsdom:"24.1.3",uuid:"9.0.1",zod:"3.23.8"},files:["/dist"],publishConfig:{access:"public"},devDependencies:{"@types/jsdom":"^27.0.0","@uniformdev/design-system":"workspace:*","@uniformdev/files":"workspace:*","@uniformdev/mesh-edgehancer-sdk":"workspace:*","@uniformdev/richtext":"workspace:*",vitest:"3.2.4"}};function wT(){return new _M({...et,apiHost:et.aiApiHost,telemetryContext:{userAgent:`uniform-mcp/${S3e.version}`,uniformClient:"mcp"}})}function _3e(){let t,e,n;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let o=await new Aq(et).getComponentDefinitions({limit:1e3,includeSystem:!0});return e=Object.fromEntries(o.componentDefinitions.map(i=>[i.id,i])),e},fetchPatterns:async()=>{if(n!==void 0)return n;let o=await new Aq(et).getCompositionList({limit:1e3,pattern:!0,patternType:"component",resolveData:!1,skipPatternResolution:!0,skipOverridesResolution:!0,state:w3e});return n=b3e(o.compositions.map(i=>i.composition)),n},resolvePatternData:async r=>(await new Aq(et).getCompositionById({compositionId:r,state:w3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>wT(),getDimensionGuidance:async()=>{}}}function D3e(){let t,e;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let r=await new E3e(et).getContentTypes({limit:1e3});return e=Object.fromEntries(r.contentTypes.map(o=>[o.id,r3e(o)])),e},fetchPatterns:async()=>({}),resolvePatternData:async n=>{let o=(await new E3e(et).getEntries({entryIDs:[n],skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.entries[0];return xT(o).composition},getToolClient:async()=>wT(),getDimensionGuidance:async()=>{}}}import{JSDOM as Nst}from"jsdom";function DM(t){return new Nst(t).window.document}import{LocaleClient as Lst}from"@uniformdev/canvas";async function $M(t){if(!t||t.length===0)return;let r=(await new Lst(et).get()).results.map(i=>i.locale),o=t.filter(i=>!r.includes(i));if(o.length>0)throw new Error(`The following locales are not registered in your project: ${o.join(", ")}`)}async function LM({action:t,id:e,instructions:n,isPattern:r,patternId:o,projectMapNode:i,getEditUrl:a}){let l=new Mst(et),c,d,f=t==="update"?e:void 0,m={success:!0,actionsTaken:[]};if(t==="duplicate"){if(d=await l.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");let h=crypto.randomUUID(),g=e3e(d.composition,h),y=Ost(g,b=>{b._name=`${b._name} (copy)`,b._slug&&(b._slug=`${b._slug}-copy${b._slug?.endsWith("/")?"/":""}`)});c=new qd(y),e=h}else if(t==="create"){if(!n)throw new Error("Instructions are required for create");if(!n.name)throw new Error("Name is required for create");if(!n.type)throw new Error("Type is required for create");if(!o)c=new qd({_id:e,_name:n.name,type:n.type,_overridability:{hideLockedParameters:!0}});else{let h={composition:{_id:e,_name:n.name,type:n.type,_pattern:o},projectId:et.projectId,state:NM,pattern:!1};await l.updateComposition(h),f=e}}if(f){if(d=await l.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");c=new qd(d.composition)}if(t==="delete"&&await l.removeComposition({compositionId:e}),c){await $M(n?.localeUpdates?.enableLocales),m=await gM({twee:c,descriptionUpdate:void 0,slugUpdate:void 0,nameUpdate:n?.name,propertyUpdates:n?.parameterUpdates??[],dataResourceUpdates:n?.dataResourceUpdates??[],localeUpdates:n?.localeUpdates,slotUpdates:n??{},currentEditorLocale:void 0,referenceData:_3e(),isEditingPattern:r,domParser:DM});let h=c.exportTree(),g=c.exportMetadata(),y={composition:h,projectId:et.projectId,state:NM,pattern:r,releaseId:d?.releaseId,editionId:d?.editionId,...g};await l.updateComposition(y)}if(t==="create"&&!r&&(i?.nodePathSegment||i?.localePathSegments)&&n?.name){let h=new Rst({apiKey:et.apiKey,apiHost:et.apiHost,projectId:et.projectId}),{path:g,nodeId:y}=await Bwe({projectMapClient:h,compositionId:e,compositionName:n.name,nodePathSegment:i.nodePathSegment||"",parentNodeId:i.parentNodeId,localePathSegments:i.localePathSegments,allowedQueryStrings:i.allowedQueryStrings});return m.actionsTaken.push({success:!0,summary:`Created project map node at path: ${g}`}),{content:[{type:"text",text:JSON.stringify({...m,editUrl:a(e),projectMapNode:{path:g,nodeId:y}},null,2)}]}}return{content:[{type:"text",text:JSON.stringify({...m,editUrl:a(e)},null,2)}]}}function MM(t){return`${et.baseWebUrl}/dashboards/canvas/edit/${t}`}async function RM(t,e){return await wT().invoke("createFilterExpression",{...t,entityType:e})}var kst={action:Ki.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:Ki.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:Ki.string().uuid().describe("Composition pattern ID to create the composition from. Omit when not creating, or when creating a composition without a composition pattern.").optional(),instructions:jne.describe("Modification instructions for the composition. Omit for delete and duplicate.").optional(),projectMapNode:Ki.object({parentNodeId:Ki.string().uuid().describe("UUID of the parent node from searchProjectMapNodes. If omitted, the node will be a child of the root node.").optional(),nodePathSegment:Ki.string().describe('URL path segment for the node (e.g., "about-us", "products", ":productId" for dynamic matching). Use a slugified version of the name unless otherwise requested by the user. Omit if not creating a project map node.').optional(),localePathSegments:Ki.array(Ki.object({locale:Ki.string().describe('Locale code (e.g., "en-US", "fr-FR")'),pathSegment:Ki.string().describe("URL path segment for this locale")})).describe("Optional array of locale-specific path segments. Unspecified locales use the nodePathSegment. Do not use these for dynamic path segments.").optional(),allowedQueryStrings:Ki.array(Ki.object({name:Ki.string().describe("Query parameter name"),defaultValue:Ki.string().describe("Default value if not provided in the URL").optional()})).describe("Optional array of allowed query string parameters for this node").optional()}).describe("Attaches the new composition to a new node in the project map hierarchy. Omit to avoid creating a project map node, or if action is not create.").optional()};function $3e(t){t.tool("compositionAction","Creates, updates, or deletes a Uniform Composition",kst,async e=>await LM({...e,isPattern:!1,getEditUrl:MM,patternId:e.patternId,projectMapNode:e.projectMapNode}))}import*as Xr from"zod";var Ast=Xr.object({field:Xr.string(),operator:Xr.string(),value:Xr.string().or(Xr.array(Xr.string()))}),Pst=Xr.object({filter:Xr.array(Ast),error:Xr.string().describe("An error message if the filter expression could not be created, otherwise an empty string"),sort:Xr.array(Xr.enum(["created_at_ASC","created_at_DESC","updated_at_ASC","updated_at_DESC","author_ASC","author_DESC","creator_ASC","creator_DESC","name_ASC","name_DESC","slug_ASC","slug_DESC"])),limit:Xr.number().min(1).max(100),offset:Xr.number().min(0),keyword:Xr.string(),locale:Xr.string().optional()}),Lp=Xr.object({searchExpressionPrompt:Xr.string().describe(`Describe what you are looking for, for example "created by me in the last week" or "type is article and headline contains breaking news" or "keyword search for breaking news".
5650
+ ${i}${a?" "+a:""} (${r} ${o}${l?` Request ID: ${l}`:""})`);this.errorMessage=n;this.fetchMethod=r;this.fetchUri=o;this.statusCode=i;this.statusText=a;this.requestId=l;Object.setPrototypeOf(this,t.prototype)}};var TM=class t{options;constructor(e){if(!e.apiKey&&!e.bearerToken)throw new Error("You must provide an API key or a bearer token");let n=e.fetch;if(!n)if(typeof window<"u")n=window.fetch.bind(window);else if(typeof fetch<"u")n=fetch;else throw new Error("You must provide or polyfill a fetch implementation when not in a browser");this.options={...e,fetch:n,apiHost:this.ensureApiHost(e.apiHost),apiKey:e.apiKey??null,projectId:e.projectId??null,bearerToken:e.bearerToken??null,limitPolicy:e.limitPolicy??C3e,bypassCache:e.bypassCache??!1}}async apiClient(e,n){return(await this.apiClientWithResponse(e,n)).body}async apiClientWithResponse(e,n){return this.options.limitPolicy(async()=>{let r=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`};this.options.bypassCache&&(r["x-bypass-cache"]="true");let{fetch:o,signal:i}=this.options,l=await Dst(()=>o(e.toString(),{...n,signal:i,headers:{...n?.headers,...r}}));if(!l.ok){let c="";try{let d=await l.text();try{let f=JSON.parse(d);f.errorMessage?c=Array.isArray(f.errorMessage)?f.errorMessage.join(", "):f.errorMessage:c=d}catch{c=d}}catch{c="General error"}throw new EM(c,n?.method??"GET",e.toString(),l.status,l.statusText,t.getRequestId(l))}return n?.expectNoContent?{response:l,body:null}:{response:l,body:await l.json()}})}createUrl(e,n,r){let o=new URL(`${r??this.options.apiHost}${e}`);return Object.entries(n??{}).forEach(([i,a])=>{typeof a<"u"&&a!==null&&o.searchParams.append(i,Array.isArray(a)?a.join(","):a?.toString()??"")}),o}ensureApiHost(e){if(!e)return"https://uniform.app";if(!e?.startsWith("http"))throw new Error('Your apiHost must start with "http"');if(e.indexOf("/",8)>-1)throw new Error("Your apiHost must not contain a path element after the domain");if(e.indexOf("?")>-1)throw new Error("Your apiHost must not contain a query string");return e?.endsWith("/")&&(e=e.substring(0,e.length-1)),e}static getRequestId(e){let n=e.headers.get("apigw-requestid");if(n)return n}};async function Dst(t){let n=5,r;for(;n>0&&(r=await t(),r.status===429);){let o=0;try{let l=r.clone(),c=l.headers.get("date"),d=c?new Date(c).getTime():void 0,m=(await l.json())?.info?.reset;typeof d=="number"&&typeof m=="number"&&(o=Math.max(0,Math.min(Math.round(1.1*(m-d)),1e4)))}catch{}let i=Math.pow(2,5-n)*333,a=i+Math.round(Math.random()*(i/2))*(Math.random()>.5?1:-1);await new Promise(l=>setTimeout(l,o+a)),n-=1}return r}var _M=class extends TM{telemetryContext;constructor(e){e.apiHost||(e.apiHost="https://ai.uniform.global"),super(e),this.telemetryContext=e.telemetryContext}async invoke(e,n){let r={};if(this.telemetryContext){let{threadId:i,uniformClient:a,userAgent:l}=this.telemetryContext;i&&(r["x-thread-id"]=i),a&&(r["x-uniform-client"]=a),l&&(r["user-agent"]=l)}return(await this.apiClientWithResponse(new URL(`/projects/${this.options.projectId}/tools/${e}`,this.options.apiHost),{method:"POST",body:n?JSON.stringify(n):void 0,headers:Object.keys(r).length>0?r:void 0})).body}};var S3e={name:"@uniformdev/uniform-mcp",version:"20.40.0",description:"Uniform MCP Server",license:"SEE LICENSE IN LICENSE.txt",bin:{"uniform-mcp":"./dist/index.mjs"},exports:{types:"./dist/index.d.mts",import:"./dist/index.mjs"},sideEffects:!1,scripts:{build:"tsup",dev:"tsup --watch",clean:"rimraf dist",lint:'eslint "src/**/*.{js,ts,tsx}"',format:'prettier --write "src/**/*.{js,ts,tsx}"',mcp:"node dist/index.mjs"},dependencies:{"@modelcontextprotocol/sdk":"^1.12.0","@types/uuid":"9.0.4","@uniformdev/canvas":"workspace:*","@uniformdev/project-map":"workspace:*","fast-json-patch":"^3.1.1",immer:"10.1.1",jsdom:"24.1.3",uuid:"9.0.1",zod:"3.23.8"},files:["/dist"],publishConfig:{access:"public"},devDependencies:{"@types/jsdom":"^27.0.0","@uniformdev/design-system":"workspace:*","@uniformdev/files":"workspace:*","@uniformdev/mesh-edgehancer-sdk":"workspace:*","@uniformdev/richtext":"workspace:*",vitest:"3.2.4"}};function wT(){return new _M({...et,apiHost:et.aiApiHost,telemetryContext:{userAgent:`uniform-mcp/${S3e.version}`,uniformClient:"mcp"}})}function _3e(){let t,e,n;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let o=await new Aq(et).getComponentDefinitions({limit:1e3,includeSystem:!0});return e=Object.fromEntries(o.componentDefinitions.map(i=>[i.id,i])),e},fetchPatterns:async()=>{if(n!==void 0)return n;let o=await new Aq(et).getCompositionList({limit:1e3,pattern:!0,patternType:"component",resolveData:!1,skipPatternResolution:!0,skipOverridesResolution:!0,state:w3e});return n=b3e(o.compositions.map(i=>i.composition)),n},resolvePatternData:async r=>(await new Aq(et).getCompositionById({compositionId:r,state:w3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>wT(),getDimensionGuidance:async()=>{}}}function D3e(){let t,e;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let r=await new E3e(et).getContentTypes({limit:1e3});return e=Object.fromEntries(r.contentTypes.map(o=>[o.id,r3e(o)])),e},fetchPatterns:async()=>({}),resolvePatternData:async n=>{let o=(await new E3e(et).getEntries({entryIDs:[n],skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.entries[0];return xT(o).composition},getToolClient:async()=>wT(),getDimensionGuidance:async()=>{}}}import{JSDOM as Nst}from"jsdom";function DM(t){return new Nst(t).window.document}import{LocaleClient as Lst}from"@uniformdev/canvas";async function $M(t){if(!t||t.length===0)return;let r=(await new Lst(et).get()).results.map(i=>i.locale),o=t.filter(i=>!r.includes(i));if(o.length>0)throw new Error(`The following locales are not registered in your project: ${o.join(", ")}`)}async function LM({action:t,id:e,instructions:n,isPattern:r,patternId:o,projectMapNode:i,getEditUrl:a}){let l=new Mst(et),c,d,f=t==="update"?e:void 0,m={success:!0,actionsTaken:[]};if(t==="duplicate"){if(d=await l.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");let h=crypto.randomUUID(),g=e3e(d.composition,h),y=Ost(g,b=>{b._name=`${b._name} (copy)`,b._slug&&(b._slug=`${b._slug}-copy${b._slug?.endsWith("/")?"/":""}`)});c=new qd(y),e=h}else if(t==="create"){if(!n)throw new Error("Instructions are required for create");if(!n.name)throw new Error("Name is required for create");if(!n.type)throw new Error("Type is required for create");if(!o)c=new qd({_id:e,_name:n.name,type:n.type,_overridability:{hideLockedParameters:!0}});else{let h={composition:{_id:e,_name:n.name,type:n.type,_pattern:o},projectId:et.projectId,state:NM,pattern:!1};await l.updateComposition(h),f=e}}if(f){if(d=await l.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");c=new qd(d.composition)}if(t==="delete"&&await l.removeComposition({compositionId:e}),c){await $M(n?.localeUpdates?.enableLocales),m=await gM({twee:c,descriptionUpdate:void 0,slugUpdate:void 0,nameUpdate:n?.name,propertyUpdates:n?.parameterUpdates??[],dataResourceUpdates:n?.dataResourceUpdates??[],localeUpdates:n?.localeUpdates,slotUpdates:n??{},currentEditorLocale:void 0,referenceData:_3e(),isEditingPattern:r,domParser:DM});let h=c.exportTree(),g=c.exportMetadata(),y={composition:h,projectId:et.projectId,state:NM,pattern:r,releaseId:d?.releaseId,editionId:d?.editionId,...g};await l.updateComposition(y)}if(t==="create"&&!r&&(i?.nodePathSegment||i?.localePathSegments)&&n?.name){let h=new Rst({apiKey:et.apiKey,apiHost:et.apiHost,projectId:et.projectId}),{path:g,nodeId:y}=await Bwe({projectMapClient:h,compositionId:e,compositionName:n.name,nodePathSegment:i.nodePathSegment||"",parentNodeId:i.parentNodeId,localePathSegments:i.localePathSegments,allowedQueryStrings:i.allowedQueryStrings});return m.actionsTaken.push({success:!0,summary:`Created project map node at path: ${g}`}),{content:[{type:"text",text:JSON.stringify({...m,editUrl:a(e),projectMapNode:{path:g,nodeId:y}},null,2)}]}}return{content:[{type:"text",text:JSON.stringify({...m,editUrl:a(e)},null,2)}]}}function MM(t){return`${et.baseWebUrl}/dashboards/canvas/edit/${t}`}async function RM(t,e){return await wT().invoke("createFilterExpression",{...t,entityType:e})}var kst={action:Ki.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:Ki.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:Ki.string().uuid().describe("Composition pattern ID to create the composition from. Omit when not creating, or when creating a composition without a composition pattern.").optional(),instructions:jne.describe("Modification instructions for the composition. Omit for delete and duplicate.").optional(),projectMapNode:Ki.object({parentNodeId:Ki.string().uuid().describe("UUID of the parent node from searchProjectMapNodes. If omitted, the node will be a child of the root node.").optional(),nodePathSegment:Ki.string().describe('URL path segment for the node (e.g., "about-us", "products", ":productId" for dynamic matching). Use a slugified version of the name unless otherwise requested by the user. Omit if not creating a project map node.').optional(),localePathSegments:Ki.array(Ki.object({locale:Ki.string().describe('Locale code (e.g., "en-US", "fr-FR")'),pathSegment:Ki.string().describe("URL path segment for this locale")})).describe("Optional array of locale-specific path segments. Unspecified locales use the nodePathSegment. Do not use these for dynamic path segments.").optional(),allowedQueryStrings:Ki.array(Ki.object({name:Ki.string().describe("Query parameter name"),defaultValue:Ki.string().describe("Default value if not provided in the URL").optional()})).describe("Optional array of allowed query string parameters for this node").optional()}).describe("Attaches the new composition to a new node in the project map hierarchy. Omit to avoid creating a project map node, or if action is not create.").optional()};function $3e(t){t.tool("compositionAction","Creates, updates, or deletes a Uniform Composition",kst,async e=>await LM({...e,isPattern:!1,getEditUrl:MM,patternId:e.patternId,projectMapNode:e.projectMapNode}))}import*as Xr from"zod";var Ast=Xr.object({field:Xr.string(),operator:Xr.string(),value:Xr.string().or(Xr.array(Xr.string()))}),Pst=Xr.object({filter:Xr.array(Ast),error:Xr.string().describe("An error message if the filter expression could not be created, otherwise an empty string"),sort:Xr.array(Xr.enum(["created_at_ASC","created_at_DESC","updated_at_ASC","updated_at_DESC","author_ASC","author_DESC","creator_ASC","creator_DESC","name_ASC","name_DESC","slug_ASC","slug_DESC"])),limit:Xr.number().min(1).max(100),offset:Xr.number().min(0),keyword:Xr.string(),locale:Xr.string().optional()}),Lp=Xr.object({searchExpressionPrompt:Xr.string().describe(`Describe what you are looking for, for example "created by me in the last week" or "type is article and headline contains breaking news" or "keyword search for breaking news".
5651
5651
  You can specify multiple criteria (AND only).
5652
5652
  You can filter by date, number, or string properties on the definition, as well as name, created, modified, author, slug, enabled locales, type, and publish status.`),username:Xr.string().describe("The username of the current user. If you do not know the username, use an empty string"),locale:Xr.string().describe("The current locale. If there is no current locale, use an empty string")}),RYt={displayName:"Create filter expression",description:"Creates a Uniform search filter expression for searching entries, patterns, or compositions from a user prompt. Meant to be a callable tool only.",inputSchema:Lp.extend({entityType:Xr.enum(["composition","entry","componentPattern","compositionPattern","entryPattern"]).describe("The entity type we are creating a filter for")}),outputSchema:Pst,runsAt:"server",timeout:10,callable:!0};import*as zEe from"zod";var Mp=class extends Error{},OM=class extends Mp{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},kM=class extends Mp{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},AM=class extends Mp{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},$c=class extends Mp{},RC=class extends Mp{constructor(e){super(`Invalid unit ${e}`)}},Yo=class extends Mp{},Nc=class extends Mp{constructor(){super("Zone is an abstract class")}};var je="numeric",Lc="short",Bl="long",eg={year:je,month:je,day:je},ET={year:je,month:Lc,day:je},Pq={year:je,month:Lc,day:je,weekday:Lc},TT={year:je,month:Bl,day:je},_T={year:je,month:Bl,day:je,weekday:Bl},DT={hour:je,minute:je},$T={hour:je,minute:je,second:je},NT={hour:je,minute:je,second:je,timeZoneName:Lc},LT={hour:je,minute:je,second:je,timeZoneName:Bl},MT={hour:je,minute:je,hourCycle:"h23"},RT={hour:je,minute:je,second:je,hourCycle:"h23"},OT={hour:je,minute:je,second:je,hourCycle:"h23",timeZoneName:Lc},kT={hour:je,minute:je,second:je,hourCycle:"h23",timeZoneName:Bl},AT={year:je,month:je,day:je,hour:je,minute:je},PT={year:je,month:je,day:je,hour:je,minute:je,second:je},IT={year:je,month:Lc,day:je,hour:je,minute:je},FT={year:je,month:Lc,day:je,hour:je,minute:je,second:je},Iq={year:je,month:Lc,day:je,weekday:Lc,hour:je,minute:je},BT={year:je,month:Bl,day:je,hour:je,minute:je,timeZoneName:Lc},zT={year:je,month:Bl,day:je,hour:je,minute:je,second:je,timeZoneName:Lc},VT={year:je,month:Bl,day:je,weekday:Bl,hour:je,minute:je,timeZoneName:Bl},jT={year:je,month:Bl,day:je,weekday:Bl,hour:je,minute:je,second:je,timeZoneName:Bl};var al=class{get type(){throw new Nc}get name(){throw new Nc}get ianaName(){return this.name}get isUniversal(){throw new Nc}offsetName(e,n){throw new Nc}formatOffset(e,n){throw new Nc}offset(e){throw new Nc}equals(e){throw new Nc}get isValid(){throw new Nc}};var Fq=null,tg=class t extends al{static get instance(){return Fq===null&&(Fq=new t),Fq}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return IM(e,n,r)}formatOffset(e,n){return ng(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var BM={};function Ist(t){return BM[t]||(BM[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),BM[t]}var Fst={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Bst(t,e){let n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,o,i,a,l,c,d,f]=r;return[a,o,i,l,c,d,f]}function zst(t,e){let n=t.formatToParts(e),r=[];for(let o=0;o<n.length;o++){let{type:i,value:a}=n[o],l=Fst[i];i==="era"?r[l]=a:Rt(l)||(r[l]=parseInt(a,10))}return r}var FM={},Ua=class t extends al{static create(e){return FM[e]||(FM[e]=new t(e)),FM[e]}static resetCache(){FM={},BM={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return IM(e,n,r,this.name)}formatOffset(e,n){return ng(this.offset(e),n)}offset(e){let n=new Date(e);if(isNaN(n))return NaN;let r=Ist(this.name),[o,i,a,l,c,d,f]=r.formatToParts?zst(r,n):Bst(r,n);l==="BC"&&(o=-Math.abs(o)+1);let h=OC({year:o,month:i,day:a,hour:c===24?0:c,minute:d,second:f,millisecond:0}),g=+n,y=g%1e3;return g-=y>=0?y:1e3+y,(h-g)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}};var N3e={};function Vst(t,e={}){let n=JSON.stringify([t,e]),r=N3e[n];return r||(r=new Intl.ListFormat(t,e),N3e[n]=r),r}var Bq={};function zq(t,e={}){let n=JSON.stringify([t,e]),r=Bq[n];return r||(r=new Intl.DateTimeFormat(t,e),Bq[n]=r),r}var Vq={};function jst(t,e={}){let n=JSON.stringify([t,e]),r=Vq[n];return r||(r=new Intl.NumberFormat(t,e),Vq[n]=r),r}var jq={};function Ust(t,e={}){let{base:n,...r}=e,o=JSON.stringify([t,r]),i=jq[o];return i||(i=new Intl.RelativeTimeFormat(t,e),jq[o]=i),i}var UT=null;function Hst(){return UT||(UT=new Intl.DateTimeFormat().resolvedOptions().locale,UT)}var L3e={};function Wst(t){let e=L3e[t];if(!e){let n=new Intl.Locale(t);e="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,L3e[t]=e}return e}function Kst(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let n=t.indexOf("-u-");if(n===-1)return[t];{let r,o;try{r=zq(t).resolvedOptions(),o=t}catch{let c=t.substring(0,n);r=zq(c).resolvedOptions(),o=c}let{numberingSystem:i,calendar:a}=r;return[o,i,a]}}function Gst(t,e,n){return(n||e)&&(t.includes("-u-")||(t+="-u"),n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Yst(t){let e=[];for(let n=1;n<=12;n++){let r=gn.utc(2009,n,1);e.push(t(r))}return e}function Zst(t){let e=[];for(let n=1;n<=7;n++){let r=gn.utc(2016,11,13+n);e.push(t(r))}return e}function zM(t,e,n,r){let o=t.listingMode();return o==="error"?null:o==="en"?n(e):r(e)}function qst(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}var Uq=class{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;let{padTo:o,floor:i,...a}=r;if(!n||Object.keys(a).length>0){let l={useGrouping:!1,...r};r.padTo>0&&(l.minimumIntegerDigits=r.padTo),this.inf=jst(e,l)}}format(e){if(this.inf){let n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{let n=this.floor?Math.floor(e):kC(e,3);return bo(n,this.padTo)}}},Hq=class{constructor(e,n,r){this.opts=r,this.originalZone=void 0;let o;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let a=-1*(e.offset/60),l=a>=0?`Etc/GMT+${a}`:`Etc/GMT${a}`;e.offset!==0&&Ua.create(l).valid?(o=l,this.dt=e):(o="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,o=e.zone.name):(o="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let i={...this.opts};i.timeZone=i.timeZone||o,this.dtf=zq(n,i)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(n=>{if(n.type==="timeZoneName"){let r=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...n,value:r}}else return n}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Wq=class{constructor(e,n,r){this.opts={style:"long",...r},!n&&VM()&&(this.rtf=Ust(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):M3e(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}},Jst={firstDay:1,minimalDays:4,weekend:[6,7]},tr=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,n,r,o,i=!1){let a=e||Wn.defaultLocale,l=a||(i?"en-US":Hst()),c=n||Wn.defaultNumberingSystem,d=r||Wn.defaultOutputCalendar,f=HT(o)||Wn.defaultWeekSettings;return new t(l,c,d,f,a)}static resetCache(){UT=null,Bq={},Vq={},jq={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r,weekSettings:o}={}){return t.create(e,n,r,o)}constructor(e,n,r,o,i){let[a,l,c]=Kst(e);this.locale=a,this.numberingSystem=n||l||null,this.outputCalendar=r||c||null,this.weekSettings=o,this.intl=Gst(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=qst(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,HT(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1){return zM(this,e,Kq,()=>{let r=n?{month:e,day:"numeric"}:{month:e},o=n?"format":"standalone";return this.monthsCache[o][e]||(this.monthsCache[o][e]=Yst(i=>this.extract(i,r,"month"))),this.monthsCache[o][e]})}weekdays(e,n=!1){return zM(this,e,Gq,()=>{let r=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},o=n?"format":"standalone";return this.weekdaysCache[o][e]||(this.weekdaysCache[o][e]=Zst(i=>this.extract(i,r,"weekday"))),this.weekdaysCache[o][e]})}meridiems(){return zM(this,void 0,()=>Yq,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gn.utc(2016,11,13,9),gn.utc(2016,11,13,19)].map(n=>this.extract(n,e,"dayperiod"))}return this.meridiemCache})}eras(e){return zM(this,e,Zq,()=>{let n={era:e};return this.eraCache[e]||(this.eraCache[e]=[gn.utc(-40,1,1),gn.utc(2017,1,1)].map(r=>this.extract(r,n,"era"))),this.eraCache[e]})}extract(e,n,r){let o=this.dtFormatter(e,n),i=o.formatToParts(),a=i.find(l=>l.type.toLowerCase()===r);return a?a.value:null}numberFormatter(e={}){return new Uq(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Hq(e,this.intl,n)}relFormatter(e={}){return new Wq(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Vst(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:jM()?Wst(this.locale):Jst}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}};var Jq=null,Gi=class t extends al{static get utcInstance(){return Jq===null&&(Jq=new t(0)),Jq}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new t(O0(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ng(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ng(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return ng(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}};var AC=class extends al{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Mc(t,e){let n;if(Rt(t)||t===null)return e;if(t instanceof al)return t;if(R3e(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?tg.instance:r==="utc"||r==="gmt"?Gi.utcInstance:Gi.parseSpecifier(r)||Ua.create(t)}else return Jd(t)?Gi.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new AC(t)}var O3e=()=>Date.now(),k3e="system",A3e=null,P3e=null,I3e=null,F3e=60,B3e,z3e=null,Wn=class{static get now(){return O3e}static set now(e){O3e=e}static set defaultZone(e){k3e=e}static get defaultZone(){return Mc(k3e,tg.instance)}static get defaultLocale(){return A3e}static set defaultLocale(e){A3e=e}static get defaultNumberingSystem(){return P3e}static set defaultNumberingSystem(e){P3e=e}static get defaultOutputCalendar(){return I3e}static set defaultOutputCalendar(e){I3e=e}static get defaultWeekSettings(){return z3e}static set defaultWeekSettings(e){z3e=HT(e)}static get twoDigitCutoffYear(){return F3e}static set twoDigitCutoffYear(e){F3e=e%100}static get throwOnInvalid(){return B3e}static set throwOnInvalid(e){B3e=e}static resetCaches(){tr.resetCache(),Ua.resetCache()}};var Yi=class{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var V3e=[0,31,59,90,120,151,181,212,243,273,304,334],j3e=[0,31,60,91,121,152,182,213,244,274,305,335];function Du(t,e){return new Yi("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function UM(t,e,n){let r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let o=r.getUTCDay();return o===0?7:o}function U3e(t,e,n){return n+(A0(t)?j3e:V3e)[e-1]}function H3e(t,e){let n=A0(t)?j3e:V3e,r=n.findIndex(i=>i<e),o=e-n[r];return{month:r+1,day:o}}function HM(t,e){return(t-e+7)%7+1}function WT(t,e=4,n=1){let{year:r,month:o,day:i}=t,a=U3e(r,o,i),l=HM(UM(r,o,i),n),c=Math.floor((a-l+14-e)/7),d;return c<1?(d=r-1,c=k0(d,e,n)):c>k0(r,e,n)?(d=r+1,c=1):d=r,{weekYear:d,weekNumber:c,weekday:l,...GT(t)}}function Xq(t,e=4,n=1){let{weekYear:r,weekNumber:o,weekday:i}=t,a=HM(UM(r,1,e),n),l=rg(r),c=o*7+i-a-7+e,d;c<1?(d=r-1,c+=rg(d)):c>l?(d=r+1,c-=rg(r)):d=r;let{month:f,day:m}=H3e(d,c);return{year:d,month:f,day:m,...GT(t)}}function WM(t){let{year:e,month:n,day:r}=t,o=U3e(e,n,r);return{year:e,ordinal:o,...GT(t)}}function Qq(t){let{year:e,ordinal:n}=t,{month:r,day:o}=H3e(e,n);return{year:e,month:r,day:o,...GT(t)}}function eJ(t,e){if(!Rt(t.localWeekday)||!Rt(t.localWeekNumber)||!Rt(t.localWeekYear)){if(!Rt(t.weekday)||!Rt(t.weekNumber)||!Rt(t.weekYear))throw new $c("Cannot mix locale-based week fields with ISO-based week fields");return Rt(t.localWeekday)||(t.weekday=t.localWeekday),Rt(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),Rt(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function W3e(t,e=4,n=1){let r=KT(t.weekYear),o=zl(t.weekNumber,1,k0(t.weekYear,e,n)),i=zl(t.weekday,1,7);return r?o?i?!1:Du("weekday",t.weekday):Du("week",t.weekNumber):Du("weekYear",t.weekYear)}function K3e(t){let e=KT(t.year),n=zl(t.ordinal,1,rg(t.year));return e?n?!1:Du("ordinal",t.ordinal):Du("year",t.year)}function tJ(t){let e=KT(t.year),n=zl(t.month,1,12),r=zl(t.day,1,PC(t.year,t.month));return e?n?r?!1:Du("day",t.day):Du("month",t.month):Du("year",t.year)}function nJ(t){let{hour:e,minute:n,second:r,millisecond:o}=t,i=zl(e,0,23)||e===24&&n===0&&r===0&&o===0,a=zl(n,0,59),l=zl(r,0,59),c=zl(o,0,999);return i?a?l?c?!1:Du("millisecond",o):Du("second",r):Du("minute",n):Du("hour",e)}function Rt(t){return typeof t>"u"}function Jd(t){return typeof t=="number"}function KT(t){return typeof t=="number"&&t%1===0}function R3e(t){return typeof t=="string"}function Y3e(t){return Object.prototype.toString.call(t)==="[object Date]"}function VM(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function jM(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Z3e(t){return Array.isArray(t)?t:[t]}function rJ(t,e,n){if(t.length!==0)return t.reduce((r,o)=>{let i=[e(o),o];return r&&n(r[0],i[0])===r[0]?r:i},null)[1]}function q3e(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function og(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function HT(t){if(t==null)return null;if(typeof t!="object")throw new Yo("Week settings must be an object");if(!zl(t.firstDay,1,7)||!zl(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!zl(e,1,7)))throw new Yo("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function zl(t,e,n){return KT(t)&&t>=e&&t<=n}function Xst(t,e){return t-e*Math.floor(t/e)}function bo(t,e=2){let n=t<0,r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Rp(t){if(!(Rt(t)||t===null||t===""))return parseInt(t,10)}function ig(t){if(!(Rt(t)||t===null||t===""))return parseFloat(t)}function YT(t){if(!(Rt(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function kC(t,e,n=!1){let r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function A0(t){return t%4===0&&(t%100!==0||t%400===0)}function rg(t){return A0(t)?366:365}function PC(t,e){let n=Xst(e-1,12)+1,r=t+(e-n)/12;return n===2?A0(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function OC(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}function G3e(t,e,n){return-HM(UM(t,1,e),n)+e-1}function k0(t,e=4,n=1){let r=G3e(t,e,n),o=G3e(t+1,e,n);return(rg(t)-r+o)/7}function ZT(t){return t>99?t:t>Wn.twoDigitCutoffYear?1900+t:2e3+t}function IM(t,e,n,r=null){let o=new Date(t),i={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(i.timeZone=r);let a={timeZoneName:e,...i},l=new Intl.DateTimeFormat(n,a).formatToParts(o).find(c=>c.type.toLowerCase()==="timezonename");return l?l.value:null}function O0(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);let r=parseInt(e,10)||0,o=n<0||Object.is(n,-0)?-r:r;return n*60+o}function oJ(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Yo(`Invalid unit value ${t}`);return e}function IC(t,e){let n={};for(let r in t)if(og(t,r)){let o=t[r];if(o==null)continue;n[e(r)]=oJ(o)}return n}function ng(t,e){let n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),o=t>=0?"+":"-";switch(e){case"short":return`${o}${bo(n,2)}:${bo(r,2)}`;case"narrow":return`${o}${n}${r>0?`:${r}`:""}`;case"techie":return`${o}${bo(n,2)}${bo(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function GT(t){return q3e(t,["hour","minute","second","millisecond"])}var Qst=["January","February","March","April","May","June","July","August","September","October","November","December"],iJ=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],elt=["J","F","M","A","M","J","J","A","S","O","N","D"];function Kq(t){switch(t){case"narrow":return[...elt];case"short":return[...iJ];case"long":return[...Qst];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var aJ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],sJ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],tlt=["M","T","W","T","F","S","S"];function Gq(t){switch(t){case"narrow":return[...tlt];case"short":return[...sJ];case"long":return[...aJ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Yq=["AM","PM"],nlt=["Before Christ","Anno Domini"],rlt=["BC","AD"],olt=["B","A"];function Zq(t){switch(t){case"narrow":return[...olt];case"short":return[...rlt];case"long":return[...nlt];default:return null}}function J3e(t){return Yq[t.hour<12?0:1]}function X3e(t,e){return Gq(e)[t.weekday-1]}function Q3e(t,e){return Kq(e)[t.month-1]}function eEe(t,e){return Zq(e)[t.year<0?0:1]}function M3e(t,e,n="always",r=!1){let o={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},i=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&i){let m=t==="days";switch(e){case 1:return m?"tomorrow":`next ${o[t][0]}`;case-1:return m?"yesterday":`last ${o[t][0]}`;case 0:return m?"today":`this ${o[t][0]}`;default:}}let a=Object.is(e,-0)||e<0,l=Math.abs(e),c=l===1,d=o[t],f=r?c?d[1]:d[2]||d[1]:c?o[t][0]:t;return a?`${l} ${f} ago`:`in ${l} ${f}`}function tEe(t,e){let n="";for(let r of t)r.literal?n+=r.val:n+=e(r.val);return n}var ilt={D:eg,DD:ET,DDD:TT,DDDD:_T,t:DT,tt:$T,ttt:NT,tttt:LT,T:MT,TT:RT,TTT:OT,TTTT:kT,f:AT,ff:IT,fff:BT,ffff:VT,F:PT,FF:FT,FFF:zT,FFFF:jT},Zi=class t{static create(e,n={}){return new t(e,n)}static parseFormat(e){let n=null,r="",o=!1,i=[];for(let a=0;a<e.length;a++){let l=e.charAt(a);l==="'"?(r.length>0&&i.push({literal:o||/^\s+$/.test(r),val:r}),n=null,r="",o=!o):o||l===n?r+=l:(r.length>0&&i.push({literal:/^\s+$/.test(r),val:r}),r=l,n=l)}return r.length>0&&i.push({literal:o||/^\s+$/.test(r),val:r}),i}static macroTokenToFormatOpts(e){return ilt[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}dtFormatter(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n})}formatDateTime(e,n){return this.dtFormatter(e,n).format()}formatDateTimeParts(e,n){return this.dtFormatter(e,n).formatToParts()}formatInterval(e,n){return this.dtFormatter(e.start,n).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,n){return this.dtFormatter(e,n).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return bo(e,n);let r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){let r=this.loc.listingMode()==="en",o=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",i=(g,y)=>this.loc.extract(e,g,y),a=g=>e.isOffsetFixed&&e.offset===0&&g.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,g.format):"",l=()=>r?J3e(e):i({hour:"numeric",hourCycle:"h12"},"dayperiod"),c=(g,y)=>r?Q3e(e,g):i(y?{month:g}:{month:g,day:"numeric"},"month"),d=(g,y)=>r?X3e(e,g):i(y?{weekday:g}:{weekday:g,month:"long",day:"numeric"},"weekday"),f=g=>{let y=t.macroTokenToFormatOpts(g);return y?this.formatWithSystemDefault(e,y):g},m=g=>r?eEe(e,g):i({era:g},"era"),h=g=>{switch(g){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return l();case"d":return o?i({day:"numeric"},"day"):this.num(e.day);case"dd":return o?i({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return d("short",!0);case"cccc":return d("long",!0);case"ccccc":return d("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return d("short",!1);case"EEEE":return d("long",!1);case"EEEEE":return d("narrow",!1);case"L":return o?i({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return o?i({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return o?i({month:"numeric"},"month"):this.num(e.month);case"MM":return o?i({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return o?i({year:"numeric"},"year"):this.num(e.year);case"yy":return o?i({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return o?i({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return o?i({year:"numeric"},"year"):this.num(e.year,6);case"G":return m("short");case"GG":return m("long");case"GGGGG":return m("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return f(g)}};return tEe(t.parseFormat(n),h)}formatDurationFromString(e,n){let r=c=>{switch(c[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},o=c=>d=>{let f=r(d);return f?this.num(c.get(f),d.length):d},i=t.parseFormat(n),a=i.reduce((c,{literal:d,val:f})=>d?c:c.concat(f),[]),l=e.shiftTo(...a.map(r).filter(c=>c));return tEe(i,o(l))}};var rEe=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function BC(...t){let e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function zC(...t){return e=>t.reduce(([n,r,o],i)=>{let[a,l,c]=i(e,o);return[{...n,...a},l||r,c]},[{},null,1]).slice(0,2)}function VC(t,...e){if(t==null)return[null,null];for(let[n,r]of e){let o=n.exec(t);if(o)return r(o)}return[null,null]}function oEe(...t){return(e,n)=>{let r={},o;for(o=0;o<t.length;o++)r[t[o]]=Rp(e[n+o]);return[r,null,n+o]}}var iEe=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,alt=`(?:${iEe.source}?(?:\\[(${rEe.source})\\])?)?`,lJ=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,aEe=RegExp(`${lJ.source}${alt}`),uJ=RegExp(`(?:T${aEe.source})?`),slt=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,llt=/(\d{4})-?W(\d\d)(?:-?(\d))?/,ult=/(\d{4})-?(\d{3})/,clt=oEe("weekYear","weekNumber","weekDay"),dlt=oEe("year","ordinal"),flt=/(\d{4})-(\d\d)-(\d\d)/,sEe=RegExp(`${lJ.source} ?(?:${iEe.source}|(${rEe.source}))?`),plt=RegExp(`(?: ${sEe.source})?`);function FC(t,e,n){let r=t[e];return Rt(r)?n:Rp(r)}function mlt(t,e){return[{year:FC(t,e),month:FC(t,e+1,1),day:FC(t,e+2,1)},null,e+3]}function jC(t,e){return[{hours:FC(t,e,0),minutes:FC(t,e+1,0),seconds:FC(t,e+2,0),milliseconds:YT(t[e+3])},null,e+4]}function qT(t,e){let n=!t[e]&&!t[e+1],r=O0(t[e+1],t[e+2]),o=n?null:Gi.instance(r);return[{},o,e+3]}function JT(t,e){let n=t[e]?Ua.create(t[e]):null;return[{},n,e+1]}var hlt=RegExp(`^T?${lJ.source}$`),glt=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function vlt(t){let[e,n,r,o,i,a,l,c,d]=t,f=e[0]==="-",m=c&&c[0]==="-",h=(g,y=!1)=>g!==void 0&&(y||g&&f)?-g:g;return[{years:h(ig(n)),months:h(ig(r)),weeks:h(ig(o)),days:h(ig(i)),hours:h(ig(a)),minutes:h(ig(l)),seconds:h(ig(c),c==="-0"),milliseconds:h(YT(d),m)}]}var ylt={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function cJ(t,e,n,r,o,i,a){let l={year:e.length===2?ZT(Rp(e)):Rp(e),month:iJ.indexOf(n)+1,day:Rp(r),hour:Rp(o),minute:Rp(i)};return a&&(l.second=Rp(a)),t&&(l.weekday=t.length>3?aJ.indexOf(t)+1:sJ.indexOf(t)+1),l}var blt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function xlt(t){let[,e,n,r,o,i,a,l,c,d,f,m]=t,h=cJ(e,o,r,n,i,a,l),g;return c?g=ylt[c]:d?g=0:g=O0(f,m),[h,new Gi(g)]}function Clt(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var Slt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,wlt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Elt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function nEe(t){let[,e,n,r,o,i,a,l]=t;return[cJ(e,o,r,n,i,a,l),Gi.utcInstance]}function Tlt(t){let[,e,n,r,o,i,a,l]=t;return[cJ(e,l,n,r,o,i,a),Gi.utcInstance]}var _lt=BC(slt,uJ),Dlt=BC(llt,uJ),$lt=BC(ult,uJ),Nlt=BC(aEe),lEe=zC(mlt,jC,qT,JT),Llt=zC(clt,jC,qT,JT),Mlt=zC(dlt,jC,qT,JT),Rlt=zC(jC,qT,JT);function uEe(t){return VC(t,[_lt,lEe],[Dlt,Llt],[$lt,Mlt],[Nlt,Rlt])}function cEe(t){return VC(Clt(t),[blt,xlt])}function dEe(t){return VC(t,[Slt,nEe],[wlt,nEe],[Elt,Tlt])}function fEe(t){return VC(t,[glt,vlt])}var Olt=zC(jC);function pEe(t){return VC(t,[hlt,Olt])}var klt=BC(flt,plt),Alt=BC(sEe),Plt=zC(jC,qT,JT);function mEe(t){return VC(t,[klt,lEe],[Alt,Plt])}var hEe="Invalid Duration",vEe={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Ilt={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...vEe},$u=146097/400,UC=146097/4800,Flt={years:{quarters:4,months:12,weeks:$u/7,days:$u,hours:$u*24,minutes:$u*24*60,seconds:$u*24*60*60,milliseconds:$u*24*60*60*1e3},quarters:{months:3,weeks:$u/28,days:$u/4,hours:$u*24/4,minutes:$u*24*60/4,seconds:$u*24*60*60/4,milliseconds:$u*24*60*60*1e3/4},months:{weeks:UC/7,days:UC,hours:UC*24,minutes:UC*24*60,seconds:UC*24*60*60,milliseconds:UC*24*60*60*1e3},...vEe},P0=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Blt=P0.slice(0).reverse();function ag(t,e,n=!1){let r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new xo(r)}function yEe(t,e){let n=e.milliseconds??0;for(let r of Blt.slice(1))e[r]&&(n+=e[r]*t[r].milliseconds);return n}function gEe(t,e){let n=yEe(t,e)<0?-1:1;P0.reduceRight((r,o)=>{if(Rt(e[o]))return r;if(r){let i=e[r]*n,a=t[o][r],l=Math.floor(i/a);e[o]+=l*n,e[r]-=l*a*n}return o},null),P0.reduce((r,o)=>{if(Rt(e[o]))return r;if(r){let i=e[r]%1;e[r]-=i,e[o]+=i*t[r][o]}return o},null)}function zlt(t){let e={};for(let[n,r]of Object.entries(t))r!==0&&(e[n]=r);return e}var xo=class t{constructor(e){let n=e.conversionAccuracy==="longterm"||!1,r=n?Flt:Ilt;e.matrix&&(r=e.matrix),this.values=e.values,this.loc=e.loc||tr.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=r,this.isLuxonDuration=!0}static fromMillis(e,n){return t.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Yo(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:IC(e,t.normalizeUnit),loc:tr.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(e){if(Jd(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new Yo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){let[r]=fEe(e);return r?t.fromObject(r,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){let[r]=pEe(e);return r?t.fromObject(r,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Yo("need to specify a reason the Duration is invalid");let r=e instanceof Yi?e:new Yi(e,n);if(Wn.throwOnInvalid)throw new AM(r);return new t({invalid:r})}static normalizeUnit(e){let n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new RC(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){let r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Zi.create(this.loc,r).formatDurationFromString(this,e):hEe}toHuman(e={}){if(!this.isValid)return hEe;let n=P0.map(r=>{let o=this.values[r];return Rt(o)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(o)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=kC(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let n=this.toMillis();return n<0||n>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},gn.fromMillis(n,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?yEe(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let n=t.fromDurationLike(e),r={};for(let o of P0)(og(n.values,o)||og(this.values,o))&&(r[o]=n.get(o)+this.get(o));return ag(this,{values:r},!0)}minus(e){if(!this.isValid)return this;let n=t.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let n={};for(let r of Object.keys(this.values))n[r]=oJ(e(this.values[r],r));return ag(this,{values:n},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let n={...this.values,...IC(e,t.normalizeUnit)};return ag(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r,matrix:o}={}){let a={loc:this.loc.clone({locale:e,numberingSystem:n}),matrix:o,conversionAccuracy:r};return ag(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return gEe(this.matrix,e),ag(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=zlt(this.normalize().shiftToAll().toObject());return ag(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(a=>t.normalizeUnit(a));let n={},r={},o=this.toObject(),i;for(let a of P0)if(e.indexOf(a)>=0){i=a;let l=0;for(let d in r)l+=this.matrix[d][a]*r[d],r[d]=0;Jd(o[a])&&(l+=o[a]);let c=Math.trunc(l);n[a]=c,r[a]=(l*1e3-c*1e3)/1e3}else Jd(o[a])&&(r[a]=o[a]);for(let a in r)r[a]!==0&&(n[i]+=a===i?r[a]:r[a]/this.matrix[i][a]);return gEe(this.matrix,n),ag(this,{values:n},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return ag(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,o){return r===void 0||r===0?o===void 0||o===0:r===o}for(let r of P0)if(!n(this.values[r],e.values[r]))return!1;return!0}};var HC="Invalid Interval";function Vlt(t,e){return!t||!t.isValid?Op.invalid("missing or invalid start"):!e||!e.isValid?Op.invalid("missing or invalid end"):e<t?Op.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}var Op=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Yo("need to specify a reason the Interval is invalid");let r=e instanceof Yi?e:new Yi(e,n);if(Wn.throwOnInvalid)throw new kM(r);return new t({invalid:r})}static fromDateTimes(e,n){let r=WC(e),o=WC(n),i=Vlt(r,o);return i??new t({start:r,end:o})}static after(e,n){let r=xo.fromDurationLike(n),o=WC(e);return t.fromDateTimes(o,o.plus(r))}static before(e,n){let r=xo.fromDurationLike(n),o=WC(e);return t.fromDateTimes(o.minus(r),o)}static fromISO(e,n){let[r,o]=(e||"").split("/",2);if(r&&o){let i,a;try{i=gn.fromISO(r,n),a=i.isValid}catch{a=!1}let l,c;try{l=gn.fromISO(o,n),c=l.isValid}catch{c=!1}if(a&&c)return t.fromDateTimes(i,l);if(a){let d=xo.fromISO(o,n);if(d.isValid)return t.after(i,d)}else if(c){let d=xo.fromISO(r,n);if(d.isValid)return t.before(l,d)}}return t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",n){if(!this.isValid)return NaN;let r=this.start.startOf(e,n),o;return n?.useLocaleWeeks?o=this.end.reconfigure({locale:r.locale}):o=this.end,o=o.startOf(e,n),Math.floor(o.diff(r,e).get(e))+(o.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?t.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];let n=e.map(WC).filter(a=>this.contains(a)).sort((a,l)=>a.toMillis()-l.toMillis()),r=[],{s:o}=this,i=0;for(;o<this.e;){let a=n[i]||this.e,l=+a>+this.e?this.e:a;r.push(t.fromDateTimes(o,l)),o=l,i+=1}return r}splitBy(e){let n=xo.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,o=1,i,a=[];for(;r<this.e;){let l=this.start.plus(n.mapUnits(c=>c*o));i=+l>+this.e?this.e:l,a.push(t.fromDateTimes(r,i)),r=i,o+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:t.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;let n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return t.fromDateTimes(n,r)}static merge(e){let[n,r]=e.sort((o,i)=>o.s-i.s).reduce(([o,i],a)=>i?i.overlaps(a)||i.abutsStart(a)?[o,i.union(a)]:[o.concat([i]),a]:[o,a],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0,o=[],i=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),a=Array.prototype.concat(...i),l=a.sort((c,d)=>c.time-d.time);for(let c of l)r+=c.type==="s"?1:-1,r===1?n=c.time:(n&&+n!=+c.time&&o.push(t.fromDateTimes(n,c.time)),n=null);return t.merge(o)}difference(...e){return t.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:HC}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=eg,n={}){return this.isValid?Zi.create(this.s.loc.clone(n),e).formatInterval(this):HC}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:HC}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:HC}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:HC}toFormat(e,{separator:n=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:HC}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):xo.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}};var kp=class{static hasDST(e=Wn.defaultZone){let n=gn.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ua.isValidZone(e)}static normalizeZone(e){return Mc(e,Wn.defaultZone)}static getStartOfWeek({locale:e=null,locObj:n=null}={}){return(n||tr.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:n=null}={}){return(n||tr.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:n=null}={}){return(n||tr.create(e)).getWeekendDays().slice()}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null,outputCalendar:i="gregory"}={}){return(o||tr.create(n,r,i)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null,outputCalendar:i="gregory"}={}){return(o||tr.create(n,r,i)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null}={}){return(o||tr.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null}={}){return(o||tr.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return tr.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return tr.create(n,null,"gregory").eras(e)}static features(){return{relative:VM(),localeWeek:jM()}}};function bEe(t,e){let n=o=>o.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(xo.fromMillis(r).as("days"))}function jlt(t,e,n){let r=[["years",(c,d)=>d.year-c.year],["quarters",(c,d)=>d.quarter-c.quarter+(d.year-c.year)*4],["months",(c,d)=>d.month-c.month+(d.year-c.year)*12],["weeks",(c,d)=>{let f=bEe(c,d);return(f-f%7)/7}],["days",bEe]],o={},i=t,a,l;for(let[c,d]of r)n.indexOf(c)>=0&&(a=c,o[c]=d(t,e),l=i.plus(o),l>e?(o[c]--,t=i.plus(o),t>e&&(l=t,o[c]--,t=i.plus(o))):t=l);return[t,o,l,a]}function xEe(t,e,n,r){let[o,i,a,l]=jlt(t,e,n),c=e-o,d=n.filter(m=>["hours","minutes","seconds","milliseconds"].indexOf(m)>=0);d.length===0&&(a<e&&(a=o.plus({[l]:1})),a!==o&&(i[l]=(i[l]||0)+c/(a-o)));let f=xo.fromObject(i,r);return d.length>0?xo.fromMillis(c,r).shiftTo(...d).plus(f):f}var dJ={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},CEe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Ult=dJ.hanidec.replace(/[\[|\]]/g,"").split("");function SEe(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(t[n].search(dJ.hanidec)!==-1)e+=Ult.indexOf(t[n]);else for(let o in CEe){let[i,a]=CEe[o];r>=i&&r<=a&&(e+=r-i)}}return parseInt(e,10)}else return e}function Nu({numberingSystem:t},e=""){return new RegExp(`${dJ[t||"latn"]}${e}`)}var Hlt="missing Intl.DateTimeFormat.formatToParts support";function Kn(t,e=n=>n){return{regex:t,deser:([n])=>e(SEe(n))}}var Wlt="\xA0",TEe=`[ ${Wlt}]`,_Ee=new RegExp(TEe,"g");function Klt(t){return t.replace(/\./g,"\\.?").replace(_Ee,TEe)}function wEe(t){return t.replace(/\./g,"").replace(_Ee," ").toLowerCase()}function Rc(t,e){return t===null?null:{regex:RegExp(t.map(Klt).join("|")),deser:([n])=>t.findIndex(r=>wEe(n)===wEe(r))+e}}function EEe(t,e){return{regex:t,deser:([,n,r])=>O0(n,r),groups:e}}function KM(t){return{regex:t,deser:([e])=>e}}function Glt(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Ylt(t,e){let n=Nu(e),r=Nu(e,"{2}"),o=Nu(e,"{3}"),i=Nu(e,"{4}"),a=Nu(e,"{6}"),l=Nu(e,"{1,2}"),c=Nu(e,"{1,3}"),d=Nu(e,"{1,6}"),f=Nu(e,"{1,9}"),m=Nu(e,"{2,4}"),h=Nu(e,"{4,6}"),g=S=>({regex:RegExp(Glt(S.val)),deser:([C])=>C,literal:!0}),b=(S=>{if(t.literal)return g(S);switch(S.val){case"G":return Rc(e.eras("short"),0);case"GG":return Rc(e.eras("long"),0);case"y":return Kn(d);case"yy":return Kn(m,ZT);case"yyyy":return Kn(i);case"yyyyy":return Kn(h);case"yyyyyy":return Kn(a);case"M":return Kn(l);case"MM":return Kn(r);case"MMM":return Rc(e.months("short",!0),1);case"MMMM":return Rc(e.months("long",!0),1);case"L":return Kn(l);case"LL":return Kn(r);case"LLL":return Rc(e.months("short",!1),1);case"LLLL":return Rc(e.months("long",!1),1);case"d":return Kn(l);case"dd":return Kn(r);case"o":return Kn(c);case"ooo":return Kn(o);case"HH":return Kn(r);case"H":return Kn(l);case"hh":return Kn(r);case"h":return Kn(l);case"mm":return Kn(r);case"m":return Kn(l);case"q":return Kn(l);case"qq":return Kn(r);case"s":return Kn(l);case"ss":return Kn(r);case"S":return Kn(c);case"SSS":return Kn(o);case"u":return KM(f);case"uu":return KM(l);case"uuu":return Kn(n);case"a":return Rc(e.meridiems(),0);case"kkkk":return Kn(i);case"kk":return Kn(m,ZT);case"W":return Kn(l);case"WW":return Kn(r);case"E":case"c":return Kn(n);case"EEE":return Rc(e.weekdays("short",!1),1);case"EEEE":return Rc(e.weekdays("long",!1),1);case"ccc":return Rc(e.weekdays("short",!0),1);case"cccc":return Rc(e.weekdays("long",!0),1);case"Z":case"ZZ":return EEe(new RegExp(`([+-]${l.source})(?::(${r.source}))?`),2);case"ZZZ":return EEe(new RegExp(`([+-]${l.source})(${r.source})?`),2);case"z":return KM(/[a-z_+-/]{1,256}?/i);case" ":return KM(/[^\S\n\r]/);default:return g(S)}})(t)||{invalidReason:Hlt};return b.token=t,b}var Zlt={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function qlt(t,e,n){let{type:r,value:o}=t;if(r==="literal"){let c=/^\s+$/.test(o);return{literal:!c,val:c?" ":o}}let i=e[r],a=r;r==="hour"&&(e.hour12!=null?a=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?a="hour12":a="hour24":a=n.hour12?"hour12":"hour24");let l=Zlt[a];if(typeof l=="object"&&(l=l[i]),l)return{literal:!1,val:l}}function Jlt(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Xlt(t,e,n){let r=t.match(e);if(r){let o={},i=1;for(let a in n)if(og(n,a)){let l=n[a],c=l.groups?l.groups+1:1;!l.literal&&l.token&&(o[l.token.val[0]]=l.deser(r.slice(i,i+c))),i+=c}return[r,o]}else return[r,{}]}function Qlt(t){let e=i=>{switch(i){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},n=null,r;return Rt(t.z)||(n=Ua.create(t.z)),Rt(t.Z)||(n||(n=new Gi(t.Z)),r=t.Z),Rt(t.q)||(t.M=(t.q-1)*3+1),Rt(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),Rt(t.u)||(t.S=YT(t.u)),[Object.keys(t).reduce((i,a)=>{let l=e(a);return l&&(i[l]=t[a]),i},{}),n,r]}var fJ=null;function eut(){return fJ||(fJ=gn.fromMillis(1555555555555)),fJ}function tut(t,e){if(t.literal)return t;let n=Zi.macroTokenToFormatOpts(t.val),r=hJ(n,e);return r==null||r.includes(void 0)?t:r}function pJ(t,e){return Array.prototype.concat(...t.map(n=>tut(n,e)))}function mJ(t,e,n){let r=pJ(Zi.parseFormat(n),t),o=r.map(a=>Ylt(a,t)),i=o.find(a=>a.invalidReason);if(i)return{input:e,tokens:r,invalidReason:i.invalidReason};{let[a,l]=Jlt(o),c=RegExp(a,"i"),[d,f]=Xlt(e,c,l),[m,h,g]=f?Qlt(f):[null,null,void 0];if(og(f,"a")&&og(f,"H"))throw new $c("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:c,rawMatches:d,matches:f,result:m,zone:h,specificOffset:g}}}function DEe(t,e,n){let{result:r,zone:o,specificOffset:i,invalidReason:a}=mJ(t,e,n);return[r,o,i,a]}function hJ(t,e){if(!t)return null;let r=Zi.create(e,t).dtFormatter(eut()),o=r.formatToParts(),i=r.resolvedOptions();return o.map(a=>qlt(a,t,i))}var gJ="Invalid DateTime",$Ee=864e13;function GM(t){return new Yi("unsupported zone",`the zone "${t.name}" is not supported`)}function vJ(t){return t.weekData===null&&(t.weekData=WT(t.c)),t.weekData}function yJ(t){return t.localWeekData===null&&(t.localWeekData=WT(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function I0(t,e){let n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new gn({...n,...e,old:n})}function AEe(t,e,n){let r=t-e*60*1e3,o=n.offset(r);if(e===o)return[r,e];r-=(o-e)*60*1e3;let i=n.offset(r);return o===i?[r,o]:[t-Math.min(o,i)*60*1e3,Math.max(o,i)]}function YM(t,e){t+=e*60*1e3;let n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function qM(t,e,n){return AEe(OC(t),e,n)}function NEe(t,e){let n=t.o,r=t.c.year+Math.trunc(e.years),o=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,i={...t.c,year:r,month:o,day:Math.min(t.c.day,PC(r,o))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},a=xo.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),l=OC(i),[c,d]=AEe(l,n,t.zone);return a!==0&&(c+=a,d=t.zone.offset(c)),{ts:c,o:d}}function XT(t,e,n,r,o,i){let{setZone:a,zone:l}=n;if(t&&Object.keys(t).length!==0||e){let c=e||l,d=gn.fromObject(t,{...n,zone:c,specificOffset:i});return a?d:d.setZone(l)}else return gn.invalid(new Yi("unparsable",`the input "${o}" can't be parsed as ${r}`))}function ZM(t,e,n=!0){return t.isValid?Zi.create(tr.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function bJ(t,e){let n=t.c.year>9999||t.c.year<0,r="";return n&&t.c.year>=0&&(r+="+"),r+=bo(t.c.year,n?6:4),e?(r+="-",r+=bo(t.c.month),r+="-",r+=bo(t.c.day)):(r+=bo(t.c.month),r+=bo(t.c.day)),r}function LEe(t,e,n,r,o,i){let a=bo(t.c.hour);return e?(a+=":",a+=bo(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(a+=":")):a+=bo(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(a+=bo(t.c.second),(t.c.millisecond!==0||!r)&&(a+=".",a+=bo(t.c.millisecond,3))),o&&(t.isOffsetFixed&&t.offset===0&&!i?a+="Z":t.o<0?(a+="-",a+=bo(Math.trunc(-t.o/60)),a+=":",a+=bo(Math.trunc(-t.o%60))):(a+="+",a+=bo(Math.trunc(t.o/60)),a+=":",a+=bo(Math.trunc(t.o%60)))),i&&(a+="["+t.zone.ianaName+"]"),a}var PEe={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},nut={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},rut={ordinal:1,hour:0,minute:0,second:0,millisecond:0},IEe=["year","month","day","hour","minute","second","millisecond"],out=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],iut=["year","ordinal","hour","minute","second","millisecond"];function aut(t){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new RC(t);return e}function MEe(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return aut(t)}}function REe(t,e){let n=Mc(e.zone,Wn.defaultZone),r=tr.fromObject(e),o=Wn.now(),i,a;if(Rt(t.year))i=o;else{for(let d of IEe)Rt(t[d])&&(t[d]=PEe[d]);let l=tJ(t)||nJ(t);if(l)return gn.invalid(l);let c=n.offset(o);[i,a]=qM(t,c,n)}return new gn({ts:i,zone:n,loc:r,o:a})}function OEe(t,e,n){let r=Rt(n.round)?!0:n.round,o=(a,l)=>(a=kC(a,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(a,l)),i=a=>n.calendary?e.hasSame(t,a)?0:e.startOf(a).diff(t.startOf(a),a).get(a):e.diff(t,a).get(a);if(n.unit)return o(i(n.unit),n.unit);for(let a of n.units){let l=i(a);if(Math.abs(l)>=1)return o(l,a)}return o(t>e?-0:0,n.units[n.units.length-1])}function kEe(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}var gn=class t{constructor(e){let n=e.zone||Wn.defaultZone,r=e.invalid||(Number.isNaN(e.ts)?new Yi("invalid input"):null)||(n.isValid?null:GM(n));this.ts=Rt(e.ts)?Wn.now():e.ts;let o=null,i=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[o,i]=[e.old.c,e.old.o];else{let l=n.offset(this.ts);o=YM(this.ts,l),r=Number.isNaN(o.year)?new Yi("invalid input"):null,o=r?null:o,i=r?null:l}this._zone=n,this.loc=e.loc||tr.create(),this.invalid=r,this.weekData=null,this.localWeekData=null,this.c=o,this.o=i,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,n]=kEe(arguments),[r,o,i,a,l,c,d]=n;return REe({year:r,month:o,day:i,hour:a,minute:l,second:c,millisecond:d},e)}static utc(){let[e,n]=kEe(arguments),[r,o,i,a,l,c,d]=n;return e.zone=Gi.utcInstance,REe({year:r,month:o,day:i,hour:a,minute:l,second:c,millisecond:d},e)}static fromJSDate(e,n={}){let r=Y3e(e)?e.valueOf():NaN;if(Number.isNaN(r))return t.invalid("invalid input");let o=Mc(n.zone,Wn.defaultZone);return o.isValid?new t({ts:r,zone:o,loc:tr.fromObject(n)}):t.invalid(GM(o))}static fromMillis(e,n={}){if(Jd(e))return e<-$Ee||e>$Ee?t.invalid("Timestamp out of range"):new t({ts:e,zone:Mc(n.zone,Wn.defaultZone),loc:tr.fromObject(n)});throw new Yo(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Jd(e))return new t({ts:e*1e3,zone:Mc(n.zone,Wn.defaultZone),loc:tr.fromObject(n)});throw new Yo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};let r=Mc(n.zone,Wn.defaultZone);if(!r.isValid)return t.invalid(GM(r));let o=tr.fromObject(n),i=IC(e,MEe),{minDaysInFirstWeek:a,startOfWeek:l}=eJ(i,o),c=Wn.now(),d=Rt(n.specificOffset)?r.offset(c):n.specificOffset,f=!Rt(i.ordinal),m=!Rt(i.year),h=!Rt(i.month)||!Rt(i.day),g=m||h,y=i.weekYear||i.weekNumber;if((g||f)&&y)throw new $c("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&f)throw new $c("Can't mix ordinal dates with month/day");let b=y||i.weekday&&!g,S,C,w=YM(c,d);b?(S=out,C=nut,w=WT(w,a,l)):f?(S=iut,C=rut,w=WM(w)):(S=IEe,C=PEe);let E=!1;for(let A of S){let I=i[A];Rt(I)?E?i[A]=C[A]:i[A]=w[A]:E=!0}let _=b?W3e(i,a,l):f?K3e(i):tJ(i),D=_||nJ(i);if(D)return t.invalid(D);let $=b?Xq(i,a,l):f?Qq(i):i,[R,M]=qM($,d,r),k=new t({ts:R,zone:r,o:M,loc:o});return i.weekday&&g&&e.weekday!==k.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${i.weekday} and a date of ${k.toISO()}`):k}static fromISO(e,n={}){let[r,o]=uEe(e);return XT(r,o,n,"ISO 8601",e)}static fromRFC2822(e,n={}){let[r,o]=cEe(e);return XT(r,o,n,"RFC 2822",e)}static fromHTTP(e,n={}){let[r,o]=dEe(e);return XT(r,o,n,"HTTP",n)}static fromFormat(e,n,r={}){if(Rt(e)||Rt(n))throw new Yo("fromFormat requires an input string and a format");let{locale:o=null,numberingSystem:i=null}=r,a=tr.fromOpts({locale:o,numberingSystem:i,defaultToEN:!0}),[l,c,d,f]=DEe(a,e,n);return f?t.invalid(f):XT(l,c,r,`format ${n}`,e,d)}static fromString(e,n,r={}){return t.fromFormat(e,n,r)}static fromSQL(e,n={}){let[r,o]=mEe(e);return XT(r,o,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Yo("need to specify a reason the DateTime is invalid");let r=e instanceof Yi?e:new Yi(e,n);if(Wn.throwOnInvalid)throw new OM(r);return new t({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,n={}){let r=hJ(e,tr.fromObject(n));return r?r.map(o=>o?o.val:null).join(""):null}static expandFormat(e,n={}){return pJ(Zi.parseFormat(e),tr.fromObject(n)).map(o=>o.val).join("")}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?vJ(this).weekYear:NaN}get weekNumber(){return this.isValid?vJ(this).weekNumber:NaN}get weekday(){return this.isValid?vJ(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?yJ(this).weekday:NaN}get localWeekNumber(){return this.isValid?yJ(this).weekNumber:NaN}get localWeekYear(){return this.isValid?yJ(this).weekYear:NaN}get ordinal(){return this.isValid?WM(this.c).ordinal:NaN}get monthShort(){return this.isValid?kp.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?kp.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?kp.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?kp.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,n=6e4,r=OC(this.c),o=this.zone.offset(r-e),i=this.zone.offset(r+e),a=this.zone.offset(r-o*n),l=this.zone.offset(r-i*n);if(a===l)return[this];let c=r-a*n,d=r-l*n,f=YM(c,a),m=YM(d,l);return f.hour===m.hour&&f.minute===m.minute&&f.second===m.second&&f.millisecond===m.millisecond?[I0(this,{ts:c}),I0(this,{ts:d})]:[this]}get isInLeapYear(){return A0(this.year)}get daysInMonth(){return PC(this.year,this.month)}get daysInYear(){return this.isValid?rg(this.year):NaN}get weeksInWeekYear(){return this.isValid?k0(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?k0(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:n,numberingSystem:r,calendar:o}=Zi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:o}}toUTC(e=0,n={}){return this.setZone(Gi.instance(e),n)}toLocal(){return this.setZone(Wn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Mc(e,Wn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let o=this.ts;if(n||r){let i=e.offset(this.ts),a=this.toObject();[o]=qM(a,i,e)}return I0(this,{ts:o,zone:e})}else return t.invalid(GM(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){let o=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return I0(this,{loc:o})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let n=IC(e,MEe),{minDaysInFirstWeek:r,startOfWeek:o}=eJ(n,this.loc),i=!Rt(n.weekYear)||!Rt(n.weekNumber)||!Rt(n.weekday),a=!Rt(n.ordinal),l=!Rt(n.year),c=!Rt(n.month)||!Rt(n.day),d=l||c,f=n.weekYear||n.weekNumber;if((d||a)&&f)throw new $c("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new $c("Can't mix ordinal dates with month/day");let m;i?m=Xq({...WT(this.c,r,o),...n},r,o):Rt(n.ordinal)?(m={...this.toObject(),...n},Rt(n.day)&&(m.day=Math.min(PC(m.year,m.month),m.day))):m=Qq({...WM(this.c),...n});let[h,g]=qM(m,this.o,this.zone);return I0(this,{ts:h,o:g})}plus(e){if(!this.isValid)return this;let n=xo.fromDurationLike(e);return I0(this,NEe(this,n))}minus(e){if(!this.isValid)return this;let n=xo.fromDurationLike(e).negate();return I0(this,NEe(this,n))}startOf(e,{useLocaleWeeks:n=!1}={}){if(!this.isValid)return this;let r={},o=xo.normalizeUnit(e);switch(o){case"years":r.month=1;case"quarters":case"months":r.day=1;case"weeks":case"days":r.hour=0;case"hours":r.minute=0;case"minutes":r.second=0;case"seconds":r.millisecond=0;break;case"milliseconds":break}if(o==="weeks")if(n){let i=this.loc.getStartOfWeek(),{weekday:a}=this;a<i&&(r.weekNumber=this.weekNumber-1),r.weekday=i}else r.weekday=1;if(o==="quarters"){let i=Math.ceil(this.month/3);r.month=(i-1)*3+1}return this.set(r)}endOf(e,n){return this.isValid?this.plus({[e]:1}).startOf(e,n).minus(1):this}toFormat(e,n={}){return this.isValid?Zi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):gJ}toLocaleString(e=eg,n={}){return this.isValid?Zi.create(this.loc.clone(n),e).formatDateTime(this):gJ}toLocaleParts(e={}){return this.isValid?Zi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:o=!0,extendedZone:i=!1}={}){if(!this.isValid)return null;let a=e==="extended",l=bJ(this,a);return l+="T",l+=LEe(this,a,n,r,o,i),l}toISODate({format:e="extended"}={}){return this.isValid?bJ(this,e==="extended"):null}toISOWeekDate(){return ZM(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:o=!1,extendedZone:i=!1,format:a="extended"}={}){return this.isValid?(o?"T":"")+LEe(this,a==="extended",n,e,r,i):null}toRFC2822(){return ZM(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return ZM(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?bJ(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let o="HH:mm:ss.SSS";return(n||e)&&(r&&(o+=" "),n?o+="z":e&&(o+="ZZ")),ZM(this,o,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():gJ}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return xo.invalid("created by diffing an invalid DateTime");let o={locale:this.locale,numberingSystem:this.numberingSystem,...r},i=Z3e(n).map(xo.normalizeUnit),a=e.valueOf()>this.valueOf(),l=a?this:e,c=a?e:this,d=xEe(l,c,i,o);return a?d.negate():d}diffNow(e="milliseconds",n={}){return this.diff(t.now(),e,n)}until(e){return this.isValid?Op.fromDateTimes(this,e):this}hasSame(e,n,r){if(!this.isValid)return!1;let o=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n,r)<=o&&o<=i.endOf(n,r)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let n=e.base||t.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0,o=["years","months","days","hours","minutes","seconds"],i=e.unit;return Array.isArray(e.unit)&&(o=e.unit,i=void 0),OEe(n,this.plus(r),{...e,numeric:"always",units:o,unit:i})}toRelativeCalendar(e={}){return this.isValid?OEe(e.base||t.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(t.isDateTime))throw new Yo("min requires all arguments be DateTimes");return rJ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Yo("max requires all arguments be DateTimes");return rJ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){let{locale:o=null,numberingSystem:i=null}=r,a=tr.fromOpts({locale:o,numberingSystem:i,defaultToEN:!0});return mJ(a,e,n)}static fromStringExplain(e,n,r={}){return t.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return eg}static get DATE_MED(){return ET}static get DATE_MED_WITH_WEEKDAY(){return Pq}static get DATE_FULL(){return TT}static get DATE_HUGE(){return _T}static get TIME_SIMPLE(){return DT}static get TIME_WITH_SECONDS(){return $T}static get TIME_WITH_SHORT_OFFSET(){return NT}static get TIME_WITH_LONG_OFFSET(){return LT}static get TIME_24_SIMPLE(){return MT}static get TIME_24_WITH_SECONDS(){return RT}static get TIME_24_WITH_SHORT_OFFSET(){return OT}static get TIME_24_WITH_LONG_OFFSET(){return kT}static get DATETIME_SHORT(){return AT}static get DATETIME_SHORT_WITH_SECONDS(){return PT}static get DATETIME_MED(){return IT}static get DATETIME_MED_WITH_SECONDS(){return FT}static get DATETIME_MED_WITH_WEEKDAY(){return Iq}static get DATETIME_FULL(){return BT}static get DATETIME_FULL_WITH_SECONDS(){return zT}static get DATETIME_HUGE(){return VT}static get DATETIME_HUGE_WITH_SECONDS(){return jT}};function WC(t){if(gn.isDateTime(t))return t;if(t&&t.valueOf&&Jd(t.valueOf()))return gn.fromJSDate(t);if(t&&typeof t=="object")return gn.fromObject(t);throw new Yo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}function JM(t){return t.reduce((e,{field:n,operator:r,value:o})=>{if(!n||!r)return e;if(n==="updated_at"&&(n="modified"),n==="created_at"&&(n="created"),r==="def")return{...e,[`${n}[def]`]:"true"};if(r==="ndef")return{...e,[`${n}[def]`]:"false"};if(r==="checked")return{...e,[`${n}[eq]`]:"true"};if(r==="nchecked")return{...e,[`${n}[eq]`]:"false"};if(typeof o>"u"||o===null||o===""||Array.isArray(o)&&o.length<1)return e;if(r==="between"||r==="sys-date-between")if(Array.isArray(o)&&o.length===2){if(r==="between")return{...e,[`${n}[gte]`]:o[0],[`${n}[lte]`]:o[1]};{let i=gn.fromISO(o[0],{zone:"system"}).setZone("utc").toISO(),a=gn.fromISO(o[1],{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i&&a?{...e,[`${n}[gte]`]:i,[`${n}[lt]`]:a}:e}}else return e;if(r==="sys-date-eq")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).setZone("utc").toISO(),a=gn.fromISO(o,{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i&&a?{...e,[`${n}[gte]`]:i,[`${n}[lt]`]:a}:e}else return e;if(r==="sys-date-gt")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i?{...e,[`${n}[gte]`]:i}:e}else return e;if(r==="sys-date-gte")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).setZone("utc").toISO();return i?{...e,[`${n}[gte]`]:i}:e}else return e;if(r==="sys-date-lt")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).setZone("utc").toISO();return i?{...e,[`${n}[lt]`]:i}:e}else return e;if(r==="sys-date-lte")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i?{...e,[`${n}[lt]`]:i}:e}else return e;if(r==="starts"&&typeof o=="string")return{...e,[`${n}[starts]`]:o.replaceAll(/[^a-zA-Z0-9_.\s-]/g,"").toLowerCase()};if(n==="workflowStageId"){let i=t.some(a=>a.field==="workflowId");if(r==="eq"||r==="neq"){let a=[];return Array.isArray(o)?a=o.map(c=>c.split("_")[1]):a=o.split("_"),{...e,...i?{}:{"workflowId[eq]":a[0]},[`${n}[${r}]`]:a[1]}}if(Array.isArray(o)){let a=o.map(d=>{let f=d.split("_")[0],m=d.split("_")[1];return{workflowId:f,workflowStage:m}}),l=a.map(d=>d.workflowId).join(","),c=a.map(d=>d.workflowStage).join(",");return{...e,...i?{}:{[`workflowId[${r}]`]:l},[`${n}[${r}]`]:c}}}return{...e,[`${n}[${r}]`]:Array.isArray(o)?o.join(","):o}},{})}import{CANVAS_DRAFT_STATE as FEe,CanvasClient as BEe}from"@uniformdev/canvas";async function XM({instanceType:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new BEe(et),a=await RM({searchExpressionPrompt:e,username:n,locale:r},t),{limit:l,offset:c,keyword:d,sort:f,filter:m}=a,g=(await i.getCompositionList({patternType:t==="composition"?void 0:t==="componentPattern"?"component":"composition",pattern:t!=="composition",resolveData:!1,withComponentIDs:!0,skipOverridesResolution:!0,limit:l,offset:c,search:d,filters:m?JM(m):void 0,orderBy:Array.isArray(f)?f:f?[f]:void 0,locale:r,skipPatternResolution:!0,state:FEe})).compositions.map(y=>({id:y.composition._id,name:y.composition._name,componentType:y.composition.type,editUrl:o(y.composition._id)}));return{content:[{type:"text",text:JSON.stringify({results:g,criteria:a},null,2)}]}}async function QM({id:t}){let n=await new BEe(et).getCompositionById({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,compositionId:t,state:FEe});return{content:[{type:"text",text:JSON.stringify(n,null,2)}]}}var sut={id:zEe.string()};function VEe(t){t.tool("compositionList","Lists available Uniform compositions",Lp.shape,async e=>await XM({...e,instanceType:"composition",getEditUrl:MM})),t.tool("compositionGet","Gets the full contents of a Uniform composition",sut,async e=>await QM(e))}import{autoFixParameterGroups as HEe,ContentClient as lut}from"@uniformdev/canvas";import*as tR from"zod";import*as sg from"zod";var jEe=sg.object({name:sg.string().describe('Title-cased display name of the component. Ex: "Hero"'),id:sg.string().describe("Public ID of the content type, the camelCase version of name, using only alphanumeric characters"),description:sg.string().describe("Describe the purpose of the content type in 1-2 sentences."),fields:sg.array(m6).describe("The fields of the content type. The key is the publicId of the field.").optional()});function UEe(t){let e=t.fields?.find(r=>r.type==="asset"&&typeof r.typeConfig=="object"&&r.typeConfig!==null&&"allowedTypes"in r.typeConfig&&Array.isArray(r.typeConfig.allowedTypes)&&r.typeConfig.allowedTypes?.includes("image"))?.id,n=t.fields?.find(r=>r.type==="text")?.id;return{...t,thumbnailField:e,entryName:n}}function eR(t){return`${et.baseWebUrl}/dashboards/canvas/content-types/${t}`}var uut={action:tR.enum(["create","update","delete"]).describe("The action to perform"),publicId:tR.string().describe("Public ID of the component, the camelCase version of name, using only alphanumeric characters"),contentType:jEe.describe("Full content type definition to create. Omit for update or delete.").optional(),patches:f6.describe("JSON patch to apply to the existing component definition. Omit for create or delete.").optional()};function WEe(t){t.tool("contentTypeAction","Creates, updates, or deletes a Uniform Content Type definition",uut,async({publicId:e,action:n,contentType:r,patches:o})=>{let i=new lut(et),a=!1;if(n==="create"){if(!r)throw new Error("Content type definition is required for create");let l=UEe(r);l.fields&&(a=HEe(l.fields),Uy(l.fields)),await i.upsertContentType({contentType:l})}if(n==="update"){if(!o)throw new Error("Patches are required for update");let c=(await i.getContentTypes()).contentTypes.find(m=>m.id===e);if(!c)throw new Error(`Content Type with public ID ${e} does not exist, try creating it instead`);let d=c.fields?.filter(m=>m.type==="richText").map(m=>m.id),f=d6(c,o);if(f.fields){a=HEe(f.fields);let m=f.fields?.filter(h=>h.type==="richText").map(h=>h.id).filter(h=>!d?.includes(h));Uy(f.fields,m)}await i.upsertContentType({contentType:f})}return n==="delete"&&await i.deleteContentType({contentTypeId:e}),{content:[{type:"text",text:JSON.stringify({success:!0,editUrl:eR(e),warning:a?"Issues with field group order were fixed. Ensure definition data is re-fetched before any future updates.":void 0},null,2)}]}})}import{ContentClient as KEe}from"@uniformdev/canvas";import*as GEe from"zod";var cut={id:GEe.string()};function YEe(t){t.tool("contentTypeList","Lists all Uniform Content Type definitions",async()=>{let r=(await new KEe(et).getContentTypes()).contentTypes.map(o=>({id:o.id,name:o.name,description:o.description,editUrl:eR(o.id)}));return{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}),t.tool("contentTypeGet","Gets a Uniform Content Type definition details (fields, etc.)",cut,async({id:e})=>{let o=(await new KEe(et).getContentTypes()).contentTypes.find(i=>i.id===e);if(!o)throw new Error(`Content Type with ID ${e} not found`);return{content:[{type:"text",text:JSON.stringify(o,null,2)}]}})}import{v4 as dut}from"uuid";function ZEe(t){t.tool("createUuid","Creates a new random UUID",async()=>({content:[{type:"text",text:dut()}]}))}import*as QT from"zod";import{CANVAS_DRAFT_STATE as nR,ContentClient as fut,convertEntryToPutEntry as put,getEffectivePropertyValue as mut}from"@uniformdev/canvas";async function hut(t,e,n){let o=(await e.fetchDefinitions())[t.entry.type];if(!o)throw new Error("insanity");let i=o3e(o),a;i.entryName&&(a=t.entry._overrides?.[t.entry._id].parameters?.[i.entryName]??t.entry.fields?.[i.entryName]);let l=mut({conditionIndex:-1,locale:void 0,greedyLocaleMatching:!0,property:a}),c=Vwe({value:l,isNew:n,contentType:i});t.entry._name=c}async function rR({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new fut(et),l,c,d=t==="update"?e:void 0,f={success:!0,actionsTaken:[]};if(t==="duplicate"){let h=(await a.getEntries({entryIDs:[e],pattern:r,state:nR,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0})).entries[0];if(!h)throw new Error("Entry not found");let g=crypto.randomUUID(),y={...h.entry,_id:g,_name:`${h.entry._name} (copy)`};y._slug&&(y._slug=`${y._slug}-copy${y._slug?.endsWith("/")?"/":""}`),delete y._thumbnail;let b=xT({...h,entry:y});l=new qd(b.composition),e=g}else if(t==="create"){if(!n)throw new Error("Instructions are required for create");if(!n.type)throw new Error("Type is required for create");o?(await a.upsertEntry({state:nR,entry:{type:n.type,_id:e,fields:{},_pattern:o}}),d=e):l=new qd({_id:e,_name:"New Entry",type:n.type,_overridability:{hideLockedParameters:!0}})}if(d){if(c=(await a.getEntries({entryIDs:[e],pattern:r,state:nR,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0})).entries[0],!c)throw new Error("Entry not found");let h=xT(c);l=new qd(h.composition)}t==="delete"&&await a.deleteEntry({entryId:e});let m=D3e();if(l){t!=="duplicate"&&(await $M(n?.localeUpdates?.enableLocales),f=await gM({twee:l,descriptionUpdate:void 0,slugUpdate:n&&"slug"in n?n.slug:void 0,nameUpdate:n&&"name"in n?n.name:void 0,propertyUpdates:n?.fieldUpdates??[],dataResourceUpdates:(n&&"dataResourceUpdates"in n?n.dataResourceUpdates:[])??[],slotUpdates:{},localeUpdates:n?.localeUpdates,currentEditorLocale:void 0,referenceData:m,isEditingPattern:r,domParser:DM}));let h=l.exportTree(),g=l.exportMetadata(),y=put(i3e(h,c??{projectId:et.projectId,pattern:r},g,nR,c?.releaseId,c?.editionId));r||await hut(y,m,t==="create"),await a.upsertEntry(y)}return{content:[{type:"text",text:JSON.stringify({...f,editUrl:i(e)},null,2)}]}}function oR(t){return`${et.baseWebUrl}/dashboards/canvas/entries/${t}`}var gut={action:QT.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:QT.string().uuid().describe("UUID of the entry to create, update, delete, or duplicate"),patternId:QT.string().uuid().describe("Entry pattern ID to create the entry from. Omit when not creating, or when creating an entry without an entry pattern.").optional(),instructions:Une.describe("Modification instructions for the entry. Omit for delete and duplicate.").optional()};function qEe(t){t.tool("entryAction","Creates, updates, or deletes a Uniform Entry",gut,async e=>await rR({...e,isPattern:!1,getEditUrl:oR,patternId:e.patternId}))}import*as QEe from"zod";import{CANVAS_DRAFT_STATE as JEe,ContentClient as XEe}from"@uniformdev/canvas";async function iR({isPattern:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new XEe(et),a=await RM({searchExpressionPrompt:e,username:n,locale:r},t?"entryPattern":"entry"),{limit:l,offset:c,keyword:d,sort:f,filter:m}=a,g=(await i.getEntries({limit:l,offset:c,pattern:t,skipDataResolution:!0,withTotalCount:!0,skipPatternResolution:!0,skipOverridesResolution:!0,state:JEe,search:d,filters:m?JM(m):void 0,orderBy:Array.isArray(f)?f:f?[f]:void 0,locale:r})).entries.map(y=>({id:y.entry._id,name:y.entry._name??"",contentType:y.entry.type,editUrl:o(y.entry._id)}));return{content:[{type:"text",text:JSON.stringify({results:g,criteria:a},null,2)}]}}async function aR({id:t,isPattern:e}){let r=await new XEe(et).getEntries({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,pattern:e,entryIDs:[t],state:JEe});if(r.entries.length===0)throw new Error(`Entry with ID ${t} not found`);return{content:[{type:"text",text:JSON.stringify(r.entries[0],null,2)}]}}var vut={id:QEe.string()};function eTe(t){t.tool("entryList","Lists available Uniform entries",Lp.shape,async e=>await iR({...e,isPattern:!1,getEditUrl:oR})),t.tool("entryGet","Gets the full contents of a Uniform entry",vut,async e=>await aR({...e,isPattern:!1}))}import*as lR from"zod";function sR(t){return`${et.baseWebUrl}/dashboards/canvas/entry-patterns/${t}`}var yut={action:lR.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:lR.string().uuid().describe("UUID of the entry pattern to create, update, delete, or duplicate"),instructions:Hne.describe("Modification instructions for the entry pattern. Omit for delete and duplicate.").optional()};function tTe(t){t.tool("entryPatternAction","Creates, updates, or deletes a Uniform Entry Pattern",yut,async e=>await rR({...e,isPattern:!0,getEditUrl:sR,patternId:void 0}))}import*as nTe from"zod";var but={id:nTe.string()};function rTe(t){t.tool("entryPatternList","Lists available Uniform entry patterns",Lp.shape,async e=>await iR({...e,isPattern:!0,getEditUrl:sR})),t.tool("entryPatternGet","Gets the full contents of a Uniform entry pattern",but,async e=>await aR({...e,isPattern:!0}))}import{ProjectClient as xut}from"@uniformdev/canvas";async function Cut(){let t=await fetch(`${et.apiHost}/api/v1/member-profile`,{headers:{"x-api-key":et.apiKey,"Content-Type":"application/json"}});if(!t.ok)throw new Error(`Failed to fetch user profile: ${t.status} ${t.statusText}`);return(await t.json()).name}function oTe(t){t.tool("getUniformEnvironment","Get the connected Uniform Project name, edit URL, and current user",{},async()=>{try{let e=new xut(et),[n,r]=await Promise.all([e.get({projectId:et.projectId}),Cut()]),o={projectName:n.name,teamName:n.teamName,projectUrl:et.baseWebUrl,currentIdentity:r};return{content:[{type:"text",text:JSON.stringify(o,null,2)}]}}catch(e){return{content:[{type:"text",text:JSON.stringify({error:"Failed to fetch project information",details:e instanceof Error?e.message:"Unknown error"},null,2)}]}}})}import{LocaleClient as Sut}from"@uniformdev/canvas";function iTe(t){t.tool("localeList","Lists all registered Uniform locales",async()=>{let n=await new Sut(et).get();return{content:[{type:"text",text:JSON.stringify({locales:n.results,editUrl:`${et.baseWebUrl}/settings/localization`},null,2)}]}})}import*as cR from"zod";function uR(t){return`${et.baseWebUrl}/dashboards/canvas/edit/${t}`}var wut={action:cR.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:cR.string().uuid().describe("UUID of the pattern instance to create, update, delete, or duplicate"),instructions:Vne.describe("Modification instructions for the pattern. Omit for delete and duplicate.").optional()};function aTe(t){t.tool("patternAction","Creates, updates, or deletes a Uniform Component Pattern or Composition Pattern",wut,async e=>await LM({...e,isPattern:!0,getEditUrl:uR,patternId:void 0}))}import*as dR from"zod";var Eut={instanceType:dR.enum(["componentPattern","compositionPattern"]),...Lp.shape},Tut={id:dR.string()};function sTe(t){t.tool("patternList","Lists available Uniform component patterns or composition patterns",Eut,async e=>await XM({...e,getEditUrl:uR})),t.tool("patternGet","Gets the full contents of a Uniform component pattern or composition pattern",Tut,async e=>await QM(e))}import{ProjectMapClient as _ut}from"@uniformdev/project-map";import*as lTe from"zod";var Dut={query:lTe.string().describe("Keyword to search for in node names and paths.")};function uTe(t){t.tool("projectMapNodeSearch","Search for project map nodes by keyword. Use this to find the appropriate parent node when you need to create a composition attached to a specific location in the project map hierarchy.",Dut,async({query:e})=>{let n=new _ut({apiKey:et.apiKey,apiHost:et.apiHost,projectId:et.projectId}),o=(await n.getProjectMapDefinition({}))?.projectMaps[0]?.id;if(!o)throw new Error("No project map found for this project");let a=(await n.getNodes({search:e,includeAncestors:!1,expanded:!0,depth:1,projectMapId:o})).nodes?.map(l=>({id:l.id,name:l.name,path:l.path}))??[];return{content:[{type:"text",text:JSON.stringify({matches:a},null,2)}]}})}var ma=new $ut({name:"Uniform MCP",version:"1.0.0"});Ine(ma);zne(ma);WEe(ma);YEe(ma);qEe(ma);eTe(ma);rTe(ma);tTe(ma);sTe(ma);aTe(ma);$3e(ma);VEe(ma);ZEe(ma);oTe(ma);iTe(ma);uTe(ma);var Lut=new Nut;await ma.connect(Lut);process.stderr.write(`Uniform MCP server started
5653
5653
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/uniform-mcp",
3
- "version": "20.39.3-alpha.1+5c5ebdb625",
3
+ "version": "20.40.0",
4
4
  "description": "Uniform MCP Server",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "bin": {
@@ -22,8 +22,8 @@
22
22
  "dependencies": {
23
23
  "@modelcontextprotocol/sdk": "^1.12.0",
24
24
  "@types/uuid": "9.0.4",
25
- "@uniformdev/canvas": "20.39.3-alpha.1+5c5ebdb625",
26
- "@uniformdev/project-map": "20.39.3-alpha.1+5c5ebdb625",
25
+ "@uniformdev/canvas": "20.40.0",
26
+ "@uniformdev/project-map": "20.40.0",
27
27
  "fast-json-patch": "^3.1.1",
28
28
  "immer": "10.1.1",
29
29
  "jsdom": "24.1.3",
@@ -38,11 +38,11 @@
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/jsdom": "^27.0.0",
41
- "@uniformdev/design-system": "20.39.3-alpha.1+5c5ebdb625",
42
- "@uniformdev/files": "20.39.3-alpha.1+5c5ebdb625",
43
- "@uniformdev/mesh-edgehancer-sdk": "20.39.3-alpha.1+5c5ebdb625",
44
- "@uniformdev/richtext": "20.39.3-alpha.1+5c5ebdb625",
41
+ "@uniformdev/design-system": "20.40.0",
42
+ "@uniformdev/files": "20.40.0",
43
+ "@uniformdev/mesh-edgehancer-sdk": "20.40.0",
44
+ "@uniformdev/richtext": "20.40.0",
45
45
  "vitest": "3.2.4"
46
46
  },
47
- "gitHead": "5c5ebdb6256f19b67d7941890176e63f3d60b8f4"
47
+ "gitHead": "5a63373f91355d8865feac0d3fc11be59a5e38bd"
48
48
  }