@uniformdev/uniform-mcp 20.39.1-alpha.1 → 20.39.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +1 -1
- package/package.json +9 -9
package/dist/index.mjs
CHANGED
|
@@ -5647,7 +5647,7 @@ ${g}`:""}`:g??"").split(`
|
|
|
5647
5647
|
`);return React.createElement(aM,{title:React.createElement(oq,{gap:"sm"},S.map((C,w)=>React.createElement("div",{key:w},C)))},React.createElement("span",null,y))}return y}function uat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--error)"}},t)}function cat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--primary-action-default)"}},t)}function dat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--alert)"}},t)}import{createVariableReference as hHt}from"@uniformdev/canvas";await _n();var vT=q(re()),fat=q(Sc());var SHt=zn("uniform:open-insert-variable"),Mwe=zn("uniform:edit-variable"),wHt=zn("uniform:disconnect-variable"),EHt=zn("uniform:insert-variable"),pat="\\$\\$",mat=20,THt=new RegExp(`(^.*)(${pat}(.{0,${mat}}))$`);var MC=class t extends vD{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 Rwe(n.reference,{displayName:Eq(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 hat(this.reference)}createDOM(){return document.createElement("span")}updateDOM(){return!1}static importDOM(){return{binding:()=>({conversion:gat,priority:0})}}decorate(){return React.createElement(yat,{state:this.__state,reference:this.reference,nodeKey:this.__key})}};function gat(t){let n=t.textContent.replace(Dwe,"").replace($we,"");return{node:Rwe(n,{displayName:Eq(n),hasClickEvent:!0,referenceIsValid:!0,tooltip:void 0,isFresh:!0,isLoading:!1})}}function Rwe(t,e){return new MC(t,e)}function vat(t){return t instanceof MC}function yat({state:t,reference:e,nodeKey:n}){let[r]=$b(),[o,i,a]=$fe(n),l=!r.isEditable(),c=(0,gM.useCallback)(d=>{if(o&&ar(te())){d.preventDefault();let f=or(n);vat(f)&&f.remove()}return!1},[o,n]);return(0,gM.useEffect)(()=>fi(r.registerCommand(vd,c,kn),r.registerCommand(gd,c,kn),r.registerCommand(md,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(Wf(f,!0)){let m=d.shiftKey;return d.preventDefault(),Hf(f,m,!0),!0}return!1},Ze),r.registerCommand(hd,d=>{let f=te();if(ar(f)&&!bat(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 Wf(f,!1)?(d.preventDefault(),Hf(f,m,!1),!0):!1},Ze)),[a,r,o,n,c,i]),React.createElement(Lwe,{...t,reference:e,displayName:t.isLoading?React.createElement(nwe,{size:"sm"}):t.displayName,selected:o,disabled:l,clickToEdit:t.hasClickEvent,onClick:t.hasClickEvent?()=>{i(!o),r.dispatchCommand(Mwe,{reference:e,sourceKey:n})}:()=>i(!o)})}function bat(t){let e=Ar(t);return Pr(e)}await _n();await _n();var yT=class t extends vD{__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 Tq({asset:e.__asset,assetQuery:e.__assetQuery,upload:e.__upload,error:e.__error})}static importDOM(){return{img:()=>({conversion:e=>xat(e,Tq),priority:0}),figure:()=>({conversion:e=>Cat(e,Tq),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 Tq({asset:t,upload:e,assetQuery:n,error:r}){return bn(new yT(t,e,n,r))}function Owe(t){return t.parentElement!=null&&t.parentElement.tagName==="LI"&&t.previousSibling===null&&t.getAttribute("aria-roledescription")==="checkbox"}function xat(t,e){let n=t;if(n.src.startsWith("file:///")||Owe(n))return null;let{alt:r,src:o}=n;return{node:kwe({altText:r,src:o,createAssetNode:e})}}function Cat(t,e){let n=t,r=n.querySelector("img"),o=n.querySelector("figcaption");if(!r||r.src.startsWith("file:///")||Owe(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:kwe({altText:i,src:a,caption:o?.textContent??void 0,createAssetNode:e})}}function kwe({altText:t,src:e,caption:n,createAssetNode:r}){return r({asset:void 0,upload:{fileUrl:e,suggestedAltText:t,suggestedCaption:n},assetQuery:void 0})}var Sat=t=>new DOMParser().parseFromString(t,"text/html");function Awe(t,e=Sat){let n=Kue({nodes:[Dd,_d,xq,bb,xb,Wse,efe,Qde,tfe,Kf,yT,MC]}),r=e(t);return n.update(()=>{pB("skip-dom-selection");let o=ab(n,r);ir().select(),lc(o)},{discrete:!0}),n.getEditorState().toJSON()}function Pwe({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"){Mat({twee:t,nodeId:e,targetNode:d,propertyId:n,propertyType:r,propertyEdit:i,locale:o,conditionIndex:a,definitionIndex:l});return}let f=Lat({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===Tat){let h=t.getParentInfo(e);if(h?.parentId){let g=t.getNodeProperty(h.parentId,Eat);if(g?.value!==rre)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 Lat=({twee:t,targetNode:e,propertyId:n,propertyType:r,propertyEdit:o,domParser:i})=>{if(r==="richText")return Awe(o.newValue??"",i);if(r==="number")return Number(o.newValue);if(n===wat){if(Nat(e.value.type))throw new Error("Enrichment tags are not allowed in system components.");if(t.getParentInfo(e.nodeId)?.parentId===_at)throw new Error("Enrichment tags are not allowed in personalization variants.")}return o.treatNewValueAsJson?JSON.parse(o.newValue):o.newValue};function Mat({twee:t,nodeId:e,targetNode:n,propertyId:r,propertyType:o,propertyEdit:i,locale:a,conditionIndex:l,definitionIndex:c}){let d=S6(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!==Wg)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=Xne(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=$at(Dat({syntax:"jptr",pointer:S}));t.updateNodeProperty({nodeId:e,property:r,value:()=>C,source:"ai",locale:a,conditionIndex:l,type:o})}async function vM({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 Aat({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 Pat({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 Iat({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=_P({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{Pwe({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===Rat)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 Fat({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{Qne({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 Aat({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=C6({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=TP(m);if(l.instanceType==="component"){if(!l.componentType)throw new Error("componentType is required when inserting a component instance");if(!x6({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(!x6({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 Pat({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=C6({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=TP(m);if(!x6({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 Iat({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 $=_P({definition:y,twee:e,nodeId:f,currentEditorLocale:n}),R=S6(f,g,$,-1),M=m.value._dataResources?.[R],k=await l.invoke("createDataResourceEdit",{edit:d.editInstructions,dataType:Wg,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:Wg,variables:k.newValue}),treatNewValueAsJson:!0,action:"setValue"},update:d,propertyDefinition:y,currentLocale:$}}let w=Oat({property:e.getNodeProperty(f,g),locale:b,conditionIndex:-1}),E,_=e.getNodeProperty(f,kat);_?.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 Fat({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 Nc,CANVAS_ENRICHMENT_TAG_PARAM as v3e,CANVAS_LOCALE_TAG_PARAM as ST,CANVAS_LOCALIZATION_SLOT as Bq,CANVAS_LOCALIZATION_TYPE as Est,CANVAS_PERSONALIZATION_PARAM as wT,CANVAS_PERSONALIZE_SLOT as y3e,CANVAS_SLOT_SECTION_SLOT as Tst,CANVAS_SLOT_SECTION_TYPE as _M,CANVAS_TEST_SLOT as b3e,CANVAS_TEST_VARIANT_PARAM as x3e,CANVAS_VIZ_CONTROL_PARAM as M0,convertToBindExpression as _st,createVariableReference as Dst,getEffectivePropertyValue as C3e,walkNodeTree as R0}from"@uniformdev/canvas";var O0=q(_q(),1),w3e=q(FS(),1);import{produce as No}from"immer";import Uat from"crypto";var bM=new Uint8Array(256),yM=bM.length;function Dq(){return yM>bM.length-16&&(Uat.randomFillSync(bM),yM=0),bM.slice(yM,yM+=16)}var ha=[];for(let t=0;t<256;++t)ha.push((t+256).toString(16).slice(1));function zwe(t,e=0){return ha[t[e+0]]+ha[t[e+1]]+ha[t[e+2]]+ha[t[e+3]]+"-"+ha[t[e+4]]+ha[t[e+5]]+"-"+ha[t[e+6]]+ha[t[e+7]]+"-"+ha[t[e+8]]+ha[t[e+9]]+"-"+ha[t[e+10]]+ha[t[e+11]]+ha[t[e+12]]+ha[t[e+13]]+ha[t[e+14]]+ha[t[e+15]]}import jat from"crypto";var $q={randomUUID:jat.randomUUID};function Hat(t,e,n){if($q.randomUUID&&!e&&!t)return $q.randomUUID();t=t||{};let r=t.random||(t.rng||Dq)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){n=n||0;for(let o=0;o<16;++o)e[n+o]=r[o];return e}return zwe(r)}var Ki=Hat;async function Wwe({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=crypto.randomUUID();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 Gat}from"@uniformdev/canvas";var bT="Untitled",Kwe=60;function Gwe({value:t,isNew:e,contentType:n}){let{result:r}=Gat({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: ${Zat(r)}`:`${bT} image`;if(r.length>0)return i?.type==="date"?Jat(r)?Xat(r):"Invalid date":L0(r)}else{if(typeof r=="number"||typeof r=="boolean")return r.toString();if(typeof r<"u"&&r!==null){if(i?.type==="link")return Yat(r);if(Fne(r))return L0(wP(r.root));if(i?.type==="datetime"&&r){let a=r;return a.datetime&&Ywe(a.datetime)?Qat(a.datetime):"Invalid datetime"}else return L0(est(r).description)}}return e?`New entry: ${n.name}`:bT}function Yat(t){return t?t.type==="projectMapNode"?t.path.length>0?`Link to ${L0(t.path)}`:`Link to project map node (${t.nodeId})`:t.path.length>0?`Link to ${L0(t.path)}`:`${bT} link`:`${bT} link`}function Zat(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]} (${L0(n)})`:`${e} (${L0(n)})`}catch{return t}}function L0(t){let e=t.split(" ").filter(i=>i).reverse();if(e.length<1)return bT;let n="",r=e.pop(),o=()=>n.length+(r?.length??0)+(n.length>0?1:0);for(;r&&o()<Kwe;)n+=n.length>0?` ${r}`:r,r=e.pop();return n.length<1?`${t.slice(0,Kwe)}...`:e.length>0?`${n}...`:n}var qat=/^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9]$/;function Jat(t){return qat.test(t)?Ywe(t):!1}function Ywe(t){let e=new Date(t);return e instanceof Date&&!isNaN(Number(e))}function Xat(t){return new Date(t).toLocaleDateString()}function Qat(t){return new Date(t).toLocaleString()}function est(t){let e=Mq(t);return e?{description:e,named:!0}:{description:tst(t).valuePreview,named:!1}}function tst(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 nst=["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 Mq(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=Mq(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 nst)if(r in n){let o=Mq(n[r]);if(o)return o}}import{CANVAS_SLOT_SECTION_SLOT as rst,walkNodeTree as ost}from"@uniformdev/canvas";var xT="|";function xM(t,e){if(!t)return e??Ki();let n=t.split(xT),r=(e??Ki()).split(xT);return n.at(-1)===r[0]&&n.pop(),n.concat(r).join(xT)}function qwe(t){let e=t.indexOf(xT);if(e<0)throw new Error(`Cannot remove pattern instance ID from ${t}`);return t.substring(e+1)}function CM(t,e,n=!1){ost(t,({node:r,actions:{setDescendantsContext:o},context:i})=>{let a=!n&&!i?.currentParentPatternInstanceId,l="_pattern"in r&&!!r._pattern;if(i?.currentParentPatternInstanceId){let d=xM(i.currentParentPatternInstanceId,r._id);r._id=d}let c=i?.currentParentPatternInstanceId;l&&(c=r._id),"_overrides"in r&&r._overrides&&Zwe(r._overrides,c,a),"_patternOverrides"in r&&r._patternOverrides&&Zwe(r._patternOverrides,c,a),l&&o({currentParentPatternInstanceId:r._id})},{initialContext:{currentParentPatternInstanceId:e}})}var Zwe=(t,e,n)=>{Object.entries(t).forEach(([r,o])=>{let i=n?r:xM(e,r);Object.entries(o.slots??{}).forEach(([a,l])=>{l.forEach(c=>{let{partOfNestedPattern:d}=SM(r??"");CM(c,a===rst&&!d?void 0:e,!0)})}),i&&(delete t[r],t[i]=o)})};function SM(t){let e=t.split(xT);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 n3e}from"@uniformdev/canvas";import{CANVAS_VIZ_CONTROL_PARAM as lst}from"@uniformdev/canvas";import{CANVAS_ENRICHMENT_TAG_PARAM as Jwe,CANVAS_INTENT_TAG_PARAM as ist,CANVAS_LOCALE_TAG_PARAM as ast,CANVAS_PERSONALIZATION_PARAM as Xwe,CANVAS_TEST_VARIANT_PARAM as sst,CANVAS_VIZ_CONTROL_PARAM as Qwe}from"@uniformdev/canvas";var e3e=[{id:ist,name:"Intent Tag",type:"intentTag"},{id:ast,name:"Locale Visibility",type:"localeSelect"},{id:Xwe,name:"Personalization Criteria",type:Xwe},{id:Jwe,name:"Enrichment Tags",type:Jwe,helpText:"Seeing this component will increase a visitor's score in these enrichments."},{id:sst,name:"A/B Test",type:"testVariant"},{id:Qwe,name:"Visibility Control",type:Qwe}];var ust=e3e.reduce((t,e)=>(e.id===lst||t.add(e.id),t),new Set);function RC(t,e){return ust.has(e)?"yes":t?.parameters?.[e]??"no"}function Rq(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 t3e({applyOverrideToNode:t}){let e=new Set,n={};return{visitNode(r){e.add(r._id),Rq(n,r._overrides),Rq(n,r._patternOverrides);let o=n[r._id];o&&(o.parameters&&Object.keys(o.parameters).forEach(i=>{RC(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 Oq(t){let{beforeApplyParameterOverride:e,beforeApplyDataResourceOverride:n}=t??{};return t3e({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[n3e]??=[],r.slots[n3e]=[...o.slots[i]??[]]}}})}import{CANVAS_SLOT_SECTION_SLOT as cst,CANVAS_SLOT_SECTION_TYPE as dst}from"@uniformdev/canvas";var r3e=({preserveOwnSlotSections:t=!1,preserveChildrenSlotSections:e=!1}={})=>n=>{if(n.node.type!==dst)return;let{partOfPattern:r,partOfNestedPattern:o}=SM(n.node._id??"");!r&&!o&&t||r&&!o&&e||fst(n)},fst=({node:t,type:e,actions:n})=>{e!=="entry"&&(n.insertAfter(t.slots?.[cst]??[]),n.remove())};import{walkNodeTree as hst}from"@uniformdev/canvas";import{produce as gst}from"immer";import{CANVAS_SLOT_SECTION_SLOT as o3e,walkNodeTree as pst}from"@uniformdev/canvas";import{produce as mst}from"immer";function wM(t,e,n,r=Ki()){if(!t._pattern)throw new Error("Not a pattern");let o={};return pst(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!==o3e?(i._id=qwe(c),i._id=xM(r,i._id)):(l.replace({...o[c],_id:o[c]._id}),l.stopProcessingDescendants())}if(d){let m=mst(d,h=>{h.slots&&Object.entries(h.slots).forEach(([g,y])=>{if(g!==o3e)throw new Error("Only slot section items are supported for duplication");y.forEach((b,S)=>{if(!b._id)return;let C=EM(b,e,n);o[b._id]=C,y[S]=C})})});n?.(i._id,m,c)}}),r}function EM(t,e,n){return gst(t,r=>{hst(r,({type:o,node:i,actions:{stopProcessingDescendants:a}})=>{o==="component"&&i._pattern?(wM(i,e,n),a()):i._id=Ki()})})}import{produce as vst}from"immer";function i3e(t,e=Ki()){return vst(t,n=>(n._pattern?wM(n,n._overrides??{},(r,o,i)=>{delete n._overrides[i],n._overrides[r]=o},e):n._id=e,n))}function TM({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 kq({locale:t,conditionIndex:e,conditionDefinition:n,property:r,newPropertyValue:o}){t===void 0?e<0?r.value=o:(r.conditions??=[],a3e(r.conditions,e,n,o)):e<0?(r.locales??={},r.locales[t]=o):(r.localesConditions??={},r.localesConditions[t]??=[],a3e(r.localesConditions[t],e,n,o))}function a3e(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??yst(t)}}function yst(t){let e=new Set(t.map(r=>r.id)),n=0;for(;e.has(n);)n++;return n}function s3e(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 bst,convertEntryToPutEntry as sGt,getPropertiesValue as cGt}from"@uniformdev/canvas";function l3e(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 u3e(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 CT(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 c3e(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??bst,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 Aq(t,e){let{parameters:n,...r}=t;return{...r,_id:e??r._id??"unknown",fields:n}}function Pq(t){let{fields:e,...n}=t;return{...n,parameters:e}}import{CANVAS_VIZ_LOCALE_RULE as xst}from"@uniformdev/canvas";import{produce as Cst}from"immer";function d3e(t,e,n){let r=Cst(t.criteria,o=>f3e(o,e,n));return r&&{...t,criteria:r}}function f3e(t,e,n){if(!t)return t;let r=!1;for(let o of t.clauses)if("clauses"in o){let i=f3e(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===xst){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 p3e=q(_q(),1);function Iq(t,e){try{return(0,p3e.get)(t,e)}catch{return}}function Fq(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 Sst}from"@uniformdev/canvas";import{produce as wst}from"immer";function m3e(t,e){let n=wst(t.criteria,r=>h3e(r,e));return n&&{...t,criteria:n}}function h3e(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=h3e(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===Sst){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 g3e(t,e){let n=IS();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,w3e.default)(),$st=!0,Nst="Twee",Xd=class t{#e={};rootNodeId;#r={};#o={};#n;#i={};#t=g3e(Nst,$st);#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??Ki(),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 Aq(this.exportSubtree(e),e)}getNodeChildren(e){let n=this.#r[e];if(n)return n}getNodeProperty(e,n){return Iq(this.#o,[e,n])}getNodeProperties(e){return this.#o[e]??{}}insertNode({node:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o,overrideNodeId:i}){let a=i??Ki();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??Ki();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=s3e(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=[];R0(r,({node:l})=>{l._id&&o.push(l._id)}),R0(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 R0(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=>{R0(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,ST)?.value===e&&!o.partOfPattern&&n.push(o.nodeId);let a=this.getNodeProperties(o.nodeId);Object.entries(a).forEach(([c,d])=>{let f=d;c!==M0&&(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,M0);if(l?.value){let c=m3e(l.value,e);c===null?n.push(o.nodeId):this.updateNodeProperty({nodeId:o.nodeId,property:M0,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===Est&&!d.partOfPattern){let m=this.getNodeChildren(d.nodeId)?.[Bq]??[],h=m.map(b=>this.getNodeProperty(b,ST)),g=h.findIndex(b=>b?.value===n);if(g>=0){let b=m[g];tg(a,b).actions.push({type:"deleteLocalizedNode"})}let y=h.findIndex(b=>b?.value===e);if(y>=0){let b=m[y];tg(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=RC(d.value._overridability,m)==="yes";if(!(g||y))return;if(m===M0){let $=d3e(h.value,e,n);$===null?tg(a,d.nodeId).actions.push({type:"deleteLocalizedNode"}):$&&tg(a,d.nodeId).actions.push({type:"updateVisibilityCriteria",targetValue:$})}let S=h.locales?.[e],C=h.locales?.[n];(!S||!C||!sa(S,C))&&(S!==void 0?tg(a,d.nodeId).actions.push({type:"copyPropertyValue",propertyId:m,sourceValue:S,targetValue:C,conditionIndex:-1}):C!==void 0&&tg(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||!sa($,M))&&tg(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 $=tg(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:ST,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:Bq,targetIndexInSlot:c.targetIndexInSlot});break}case"updateVisibilityCriteria":{this.updateNodeProperty({nodeId:a,property:M0,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=Iq(this.#o,g);if(!y&&r==null)return;let b=C3e({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?_=!TM({locale:i,property:$,conditionIndex:d}):f===null&&d>=0?_=!TM({locale:i,property:$,conditionIndex:d}):kq({locale:i,property:$,newPropertyValue:C,conditionIndex:d,conditionDefinition:f??S?.when??{clauses:[]}})}),_&&(E=void 0);let D=h&&RC(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?TM({locale:i,property:H,conditionIndex:d}):kq({locale:i,property:H,newPropertyValue:k,conditionIndex:d,conditionDefinition:f??S?.when??{clauses:[]}})});(0,O0.set)(R,`/${e}/parameters/${n}`,I)}),$||this.#t.emit("propertyOverrideCreated",{nodeId:e,property:n})}C===null?(0,O0.remove)(this.#o,g):(this.#o[e]??={},(0,O0.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||RC(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=C3e({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=S3e(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===Nc&&Array.isArray(y.value)){let b=y.value,S=[];b.forEach(C=>{let w=this.exportSubtree(C,n);S.push(Aq(w,C))}),m[g]={value:S,type:Nc},h=!0}else{let b=S3e(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,O0.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===_M&&(this.#n=No(this.#n,c=>{c[n]=c[n]??{},c[n].slots={[Tst]: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??Ki(),value:{type:o.type,_dataResources:o._dataResources},isBlock:!0,parentId:e,propertyValueLocalizability:{}},c=this.getNodeProperty(i.nodeId,n);if(c&&c.type!==Nc)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===Nc&&Array.isArray(h.value)){let g=h.value,y=[];g.forEach(b=>{this.#l({nodeId:l.nodeId,componentTree:Pq(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:Nc,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:Nc,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)??Ki();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]=E6({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?Dst(_st(E)):w.value;if(w?.type===Nc&&Array.isArray(D)){let $=D,R=[];$?.forEach(M=>{let k={...M,_id:i?Ki():M._id??Ki()};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:Nc},propertyValueLocalizability:{}},this.#l({componentTree:Pq(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,O0.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===_M?void 0:g,partOfNestedPattern:h.type===_M?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}),CM(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!==Nc)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===_M||!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=EM(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:Nc,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=Oq({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=Oq({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;R0(f,({node:m})=>{a.visitNode(m)})}let c=n?l:a;R0(e,({node:d})=>{c.visitNode(d)})});let o=r3e({preserveOwnSlotSections:!0,preserveChildrenSlotSections:r});R0(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===Nc)??[];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===y3e,l=i===y3e,c=o===b3e,d=i===b3e,f=i===Bq,m=this.getNodeProperty(e,v3e);l&&m&&this.updateNodeProperty({nodeId:e,property:v3e,value:void 0,source:"other",locale:void 0,conditionIndex:-1});let h=this.getNodeProperty(e,wT);!l&&h&&this.updateNodeProperty({nodeId:e,property:wT,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,wT)?.value?.name,setName:b=>this.updateNodeProperty({nodeId:e,property:wT,value:S=>S&&typeof S=="object"&&S!==null?{...S,name:b}:{name:b,crit:[]},source:"other",locale:void 0,conditionIndex:-1,type:wT})}),d&&!c&&this.#C({nodeId:e,siblingIds:this.getNodeChildren(n)?.[r]??[],selectExistingName:b=>this.getNodeProperty(b,x3e)?.value?.id,setName:b=>this.updateNodeProperty({nodeId:e,property:x3e,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,ST);!f&&g&&this.updateNodeProperty({nodeId:e,property:ST,value:void 0,source:"other",locale:void 0,conditionIndex:-1});let y=this.getNodeProperty(e,M0);(l||f||d)&&y&&this.updateNodeProperty({nodeId:e,property:M0,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=Fq(e,c,d);do f=Fq(e,c,d),d++;while(a(f));o(f)}};function S3e(t){return t?.value===void 0&&!t?.conditions&&!t?.locales&&!t?.localesConditions?null:t}function tg(t,e){return Lst(t,e,()=>({nodeId:e,actions:[]}))}function Lst(t,e,n){return t.has(e)||t.set(e,n()),t.get(e)}import{CANVAS_DRAFT_STATE as RM,CanvasClient as Ast}from"@uniformdev/canvas";import{ProjectMapClient as Pst}from"@uniformdev/project-map";import{produce as Ist}from"immer";function E3e(t){return t.reduce((e,n)=>(e[n._id]={id:n._id,type:n.type,name:n._name},e),{})}import{CANVAS_DRAFT_STATE as $3e,CanvasClient as zq,ContentClient as N3e,ProjectClient as L3e}from"@uniformdev/canvas";var T3e=q(Hwe());var _3e=(0,T3e.default)(6),DM=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 $M=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??_3e,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 Mst(()=>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 DM(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 Mst(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 NM=class extends $M{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 D3e={name:"@uniformdev/uniform-mcp",version:"20.39.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","@uniformdev/canvas":"workspace:*","@uniformdev/project-map":"workspace:*","fast-json-patch":"^3.1.1",immer:"10.1.1",jsdom:"^27.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 ET(){return new NM({...et,apiHost:et.aiApiHost,telemetryContext:{userAgent:`uniform-mcp/${D3e.version}`,uniformClient:"mcp"}})}function M3e(){let t,e,n;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new L3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let o=await new zq(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 zq(et).getCompositionList({limit:1e3,pattern:!0,patternType:"component",resolveData:!1,skipPatternResolution:!0,skipOverridesResolution:!0,state:$3e});return n=E3e(o.compositions.map(i=>i.composition)),n},resolvePatternData:async r=>(await new zq(et).getCompositionById({compositionId:r,state:$3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>ET(),getDimensionGuidance:async()=>{}}}function R3e(){let t,e;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new L3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let r=await new N3e(et).getContentTypes({limit:1e3});return e=Object.fromEntries(r.contentTypes.map(o=>[o.id,l3e(o)])),e},fetchPatterns:async()=>({}),resolvePatternData:async n=>{let o=(await new N3e(et).getEntries({entryIDs:[n],skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.entries[0];return CT(o).composition},getToolClient:async()=>ET(),getDimensionGuidance:async()=>{}}}import{JSDOM as Ost}from"jsdom";function LM(t){return new Ost(t).window.document}import{LocaleClient as kst}from"@uniformdev/canvas";async function MM(t){if(!t||t.length===0)return;let r=(await new kst(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 OM({action:t,id:e,instructions:n,isPattern:r,patternId:o,projectMapNode:i,getEditUrl:a}){let l=new Ast(et),c,d,f=t==="update"?e:void 0,m={success:!0,actionsTaken:[]};if(t==="duplicate"){if(d=await l.getCompositionById({compositionId:e,state:RM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");let h=crypto.randomUUID(),g=i3e(d.composition,h),y=Ist(g,b=>{b._name=`${b._name} (copy)`,b._slug&&(b._slug=`${b._slug}-copy${b._slug?.endsWith("/")?"/":""}`)});c=new Xd(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 Xd({_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:RM,pattern:!1};await l.updateComposition(h),f=e}}if(f){if(d=await l.getCompositionById({compositionId:e,state:RM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");c=new Xd(d.composition)}if(t==="delete"&&await l.removeComposition({compositionId:e}),c){await MM(n?.localeUpdates?.enableLocales),m=await vM({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:M3e(),isEditingPattern:r,domParser:LM});let h=c.exportTree(),g=c.exportMetadata(),y={composition:h,projectId:et.projectId,state:RM,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 Pst({apiKey:et.apiKey,apiHost:et.apiHost,projectId:et.projectId}),{path:g,nodeId:y}=await Wwe({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 kM(t){return`${et.baseWebUrl}/dashboards/canvas/edit/${t}`}async function AM(t,e){return await ET().invoke("createFilterExpression",{...t,entityType:e})}var Fst={action:Gi.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:Gi.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:Gi.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:Gne.describe("Modification instructions for the composition. Omit for delete and duplicate.").optional(),projectMapNode:Gi.object({parentNodeId:Gi.string().uuid().describe("UUID of the parent node from searchProjectMapNodes. If omitted, the node will be a child of the root node.").optional(),nodePathSegment:Gi.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:Gi.array(Gi.object({locale:Gi.string().describe('Locale code (e.g., "en-US", "fr-FR")'),pathSegment:Gi.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:Gi.array(Gi.object({name:Gi.string().describe("Query parameter name"),defaultValue:Gi.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 O3e(t){t.tool("compositionAction","Creates, updates, or deletes a Uniform Composition",Fst,async e=>await OM({...e,isPattern:!1,getEditUrl:kM,patternId:e.patternId,projectMapNode:e.projectMapNode}))}import*as Xr from"zod";var Bst=Xr.object({field:Xr.string(),operator:Xr.string(),value:Xr.string().or(Xr.array(Xr.string()))}),zst=Xr.object({filter:Xr.array(Bst),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()}),Rp=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 $M=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??_3e,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 Mst(()=>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 DM(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 Mst(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 NM=class extends $M{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 D3e={name:"@uniformdev/uniform-mcp",version:"20.39.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","@uniformdev/canvas":"workspace:*","@uniformdev/project-map":"workspace:*","fast-json-patch":"^3.1.1",immer:"10.1.1",jsdom:"20.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 ET(){return new NM({...et,apiHost:et.aiApiHost,telemetryContext:{userAgent:`uniform-mcp/${D3e.version}`,uniformClient:"mcp"}})}function M3e(){let t,e,n;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new L3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let o=await new zq(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 zq(et).getCompositionList({limit:1e3,pattern:!0,patternType:"component",resolveData:!1,skipPatternResolution:!0,skipOverridesResolution:!0,state:$3e});return n=E3e(o.compositions.map(i=>i.composition)),n},resolvePatternData:async r=>(await new zq(et).getCompositionById({compositionId:r,state:$3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>ET(),getDimensionGuidance:async()=>{}}}function R3e(){let t,e;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new L3e(et).get({projectId:et.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let r=await new N3e(et).getContentTypes({limit:1e3});return e=Object.fromEntries(r.contentTypes.map(o=>[o.id,l3e(o)])),e},fetchPatterns:async()=>({}),resolvePatternData:async n=>{let o=(await new N3e(et).getEntries({entryIDs:[n],skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.entries[0];return CT(o).composition},getToolClient:async()=>ET(),getDimensionGuidance:async()=>{}}}import{JSDOM as Ost}from"jsdom";function LM(t){return new Ost(t).window.document}import{LocaleClient as kst}from"@uniformdev/canvas";async function MM(t){if(!t||t.length===0)return;let r=(await new kst(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 OM({action:t,id:e,instructions:n,isPattern:r,patternId:o,projectMapNode:i,getEditUrl:a}){let l=new Ast(et),c,d,f=t==="update"?e:void 0,m={success:!0,actionsTaken:[]};if(t==="duplicate"){if(d=await l.getCompositionById({compositionId:e,state:RM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");let h=crypto.randomUUID(),g=i3e(d.composition,h),y=Ist(g,b=>{b._name=`${b._name} (copy)`,b._slug&&(b._slug=`${b._slug}-copy${b._slug?.endsWith("/")?"/":""}`)});c=new Xd(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 Xd({_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:RM,pattern:!1};await l.updateComposition(h),f=e}}if(f){if(d=await l.getCompositionById({compositionId:e,state:RM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!d)throw new Error("Composition not found");c=new Xd(d.composition)}if(t==="delete"&&await l.removeComposition({compositionId:e}),c){await MM(n?.localeUpdates?.enableLocales),m=await vM({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:M3e(),isEditingPattern:r,domParser:LM});let h=c.exportTree(),g=c.exportMetadata(),y={composition:h,projectId:et.projectId,state:RM,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 Pst({apiKey:et.apiKey,apiHost:et.apiHost,projectId:et.projectId}),{path:g,nodeId:y}=await Wwe({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 kM(t){return`${et.baseWebUrl}/dashboards/canvas/edit/${t}`}async function AM(t,e){return await ET().invoke("createFilterExpression",{...t,entityType:e})}var Fst={action:Gi.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:Gi.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:Gi.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:Gne.describe("Modification instructions for the composition. Omit for delete and duplicate.").optional(),projectMapNode:Gi.object({parentNodeId:Gi.string().uuid().describe("UUID of the parent node from searchProjectMapNodes. If omitted, the node will be a child of the root node.").optional(),nodePathSegment:Gi.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:Gi.array(Gi.object({locale:Gi.string().describe('Locale code (e.g., "en-US", "fr-FR")'),pathSegment:Gi.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:Gi.array(Gi.object({name:Gi.string().describe("Query parameter name"),defaultValue:Gi.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 O3e(t){t.tool("compositionAction","Creates, updates, or deletes a Uniform Composition",Fst,async e=>await OM({...e,isPattern:!1,getEditUrl:kM,patternId:e.patternId,projectMapNode:e.projectMapNode}))}import*as Xr from"zod";var Bst=Xr.object({field:Xr.string(),operator:Xr.string(),value:Xr.string().or(Xr.array(Xr.string()))}),zst=Xr.object({filter:Xr.array(Bst),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()}),Rp=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")}),WYt={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:Rp.extend({entityType:Xr.enum(["composition","entry","componentPattern","compositionPattern","entryPattern"]).describe("The entity type we are creating a filter for")}),outputSchema:zst,runsAt:"server",timeout:10,callable:!0};import*as WEe from"zod";var Op=class extends Error{},PM=class extends Op{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},IM=class extends Op{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},FM=class extends Op{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Lc=class extends Op{},OC=class extends Op{constructor(e){super(`Invalid unit ${e}`)}},Yo=class extends Op{},Mc=class extends Op{constructor(){super("Zone is an abstract class")}};var Ue="numeric",Rc="short",Vl="long",ng={year:Ue,month:Ue,day:Ue},TT={year:Ue,month:Rc,day:Ue},Vq={year:Ue,month:Rc,day:Ue,weekday:Rc},_T={year:Ue,month:Vl,day:Ue},DT={year:Ue,month:Vl,day:Ue,weekday:Vl},$T={hour:Ue,minute:Ue},NT={hour:Ue,minute:Ue,second:Ue},LT={hour:Ue,minute:Ue,second:Ue,timeZoneName:Rc},MT={hour:Ue,minute:Ue,second:Ue,timeZoneName:Vl},RT={hour:Ue,minute:Ue,hourCycle:"h23"},OT={hour:Ue,minute:Ue,second:Ue,hourCycle:"h23"},kT={hour:Ue,minute:Ue,second:Ue,hourCycle:"h23",timeZoneName:Rc},AT={hour:Ue,minute:Ue,second:Ue,hourCycle:"h23",timeZoneName:Vl},PT={year:Ue,month:Ue,day:Ue,hour:Ue,minute:Ue},IT={year:Ue,month:Ue,day:Ue,hour:Ue,minute:Ue,second:Ue},FT={year:Ue,month:Rc,day:Ue,hour:Ue,minute:Ue},BT={year:Ue,month:Rc,day:Ue,hour:Ue,minute:Ue,second:Ue},Uq={year:Ue,month:Rc,day:Ue,weekday:Rc,hour:Ue,minute:Ue},zT={year:Ue,month:Vl,day:Ue,hour:Ue,minute:Ue,timeZoneName:Rc},VT={year:Ue,month:Vl,day:Ue,hour:Ue,minute:Ue,second:Ue,timeZoneName:Rc},UT={year:Ue,month:Vl,day:Ue,weekday:Vl,hour:Ue,minute:Ue,timeZoneName:Vl},jT={year:Ue,month:Vl,day:Ue,weekday:Vl,hour:Ue,minute:Ue,second:Ue,timeZoneName:Vl};var ll=class{get type(){throw new Mc}get name(){throw new Mc}get ianaName(){return this.name}get isUniversal(){throw new Mc}offsetName(e,n){throw new Mc}formatOffset(e,n){throw new Mc}offset(e){throw new Mc}equals(e){throw new Mc}get isValid(){throw new Mc}};var jq=null,rg=class t extends ll{static get instance(){return jq===null&&(jq=new t),jq}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return zM(e,n,r)}formatOffset(e,n){return og(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var UM={};function Vst(t){return UM[t]||(UM[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"})),UM[t]}var Ust={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function jst(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 Hst(t,e){let n=t.formatToParts(e),r=[];for(let o=0;o<n.length;o++){let{type:i,value:a}=n[o],l=Ust[i];i==="era"?r[l]=a:Rt(l)||(r[l]=parseInt(a,10))}return r}var VM={},Wa=class t extends ll{static create(e){return VM[e]||(VM[e]=new t(e)),VM[e]}static resetCache(){VM={},UM={}}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 zM(e,n,r,this.name)}formatOffset(e,n){return og(this.offset(e),n)}offset(e){let n=new Date(e);if(isNaN(n))return NaN;let r=Vst(this.name),[o,i,a,l,c,d,f]=r.formatToParts?Hst(r,n):jst(r,n);l==="BC"&&(o=-Math.abs(o)+1);let h=kC({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 k3e={};function Wst(t,e={}){let n=JSON.stringify([t,e]),r=k3e[n];return r||(r=new Intl.ListFormat(t,e),k3e[n]=r),r}var Hq={};function Wq(t,e={}){let n=JSON.stringify([t,e]),r=Hq[n];return r||(r=new Intl.DateTimeFormat(t,e),Hq[n]=r),r}var Kq={};function Kst(t,e={}){let n=JSON.stringify([t,e]),r=Kq[n];return r||(r=new Intl.NumberFormat(t,e),Kq[n]=r),r}var Gq={};function Gst(t,e={}){let{base:n,...r}=e,o=JSON.stringify([t,r]),i=Gq[o];return i||(i=new Intl.RelativeTimeFormat(t,e),Gq[o]=i),i}var HT=null;function Yst(){return HT||(HT=new Intl.DateTimeFormat().resolvedOptions().locale,HT)}var A3e={};function Zst(t){let e=A3e[t];if(!e){let n=new Intl.Locale(t);e="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,A3e[t]=e}return e}function qst(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=Wq(t).resolvedOptions(),o=t}catch{let c=t.substring(0,n);r=Wq(c).resolvedOptions(),o=c}let{numberingSystem:i,calendar:a}=r;return[o,i,a]}}function Jst(t,e,n){return(n||e)&&(t.includes("-u-")||(t+="-u"),n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Xst(t){let e=[];for(let n=1;n<=12;n++){let r=gn.utc(2009,n,1);e.push(t(r))}return e}function Qst(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 jM(t,e,n,r){let o=t.listingMode();return o==="error"?null:o==="en"?n(e):r(e)}function elt(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 Yq=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=Kst(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):AC(e,3);return bo(n,this.padTo)}}},Zq=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&&Wa.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=Wq(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()}},qq=class{constructor(e,n,r){this.opts={style:"long",...r},!n&&HM()&&(this.rtf=Gst(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):P3e(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}},tlt={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":Yst()),c=n||Wn.defaultNumberingSystem,d=r||Wn.defaultOutputCalendar,f=WT(o)||Wn.defaultWeekSettings;return new t(l,c,d,f,a)}static resetCache(){HT=null,Hq={},Kq={},Gq={}}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]=qst(e);this.locale=a,this.numberingSystem=n||l||null,this.outputCalendar=r||c||null,this.weekSettings=o,this.intl=Jst(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=elt(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,WT(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 jM(this,e,Jq,()=>{let r=n?{month:e,day:"numeric"}:{month:e},o=n?"format":"standalone";return this.monthsCache[o][e]||(this.monthsCache[o][e]=Xst(i=>this.extract(i,r,"month"))),this.monthsCache[o][e]})}weekdays(e,n=!1){return jM(this,e,Xq,()=>{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]=Qst(i=>this.extract(i,r,"weekday"))),this.weekdaysCache[o][e]})}meridiems(){return jM(this,void 0,()=>Qq,()=>{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 jM(this,e,eJ,()=>{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 Yq(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Zq(e,this.intl,n)}relFormatter(e={}){return new qq(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Wst(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:WM()?Zst(this.locale):tlt}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 nJ=null,Yi=class t extends ll{static get utcInstance(){return nJ===null&&(nJ=new t(0)),nJ}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(k0(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${og(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${og(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return og(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 PC=class extends ll{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 Oc(t,e){let n;if(Rt(t)||t===null)return e;if(t instanceof ll)return t;if(I3e(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?rg.instance:r==="utc"||r==="gmt"?Yi.utcInstance:Yi.parseSpecifier(r)||Wa.create(t)}else return Qd(t)?Yi.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new PC(t)}var F3e=()=>Date.now(),B3e="system",z3e=null,V3e=null,U3e=null,j3e=60,H3e,W3e=null,Wn=class{static get now(){return F3e}static set now(e){F3e=e}static set defaultZone(e){B3e=e}static get defaultZone(){return Oc(B3e,rg.instance)}static get defaultLocale(){return z3e}static set defaultLocale(e){z3e=e}static get defaultNumberingSystem(){return V3e}static set defaultNumberingSystem(e){V3e=e}static get defaultOutputCalendar(){return U3e}static set defaultOutputCalendar(e){U3e=e}static get defaultWeekSettings(){return W3e}static set defaultWeekSettings(e){W3e=WT(e)}static get twoDigitCutoffYear(){return j3e}static set twoDigitCutoffYear(e){j3e=e%100}static get throwOnInvalid(){return H3e}static set throwOnInvalid(e){H3e=e}static resetCaches(){tr.resetCache(),Wa.resetCache()}};var Zi=class{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var K3e=[0,31,59,90,120,151,181,212,243,273,304,334],G3e=[0,31,60,91,121,152,182,213,244,274,305,335];function Nu(t,e){return new Zi("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function KM(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 Y3e(t,e,n){return n+(P0(t)?G3e:K3e)[e-1]}function Z3e(t,e){let n=P0(t)?G3e:K3e,r=n.findIndex(i=>i<e),o=e-n[r];return{month:r+1,day:o}}function GM(t,e){return(t-e+7)%7+1}function KT(t,e=4,n=1){let{year:r,month:o,day:i}=t,a=Y3e(r,o,i),l=GM(KM(r,o,i),n),c=Math.floor((a-l+14-e)/7),d;return c<1?(d=r-1,c=A0(d,e,n)):c>A0(r,e,n)?(d=r+1,c=1):d=r,{weekYear:d,weekNumber:c,weekday:l,...YT(t)}}function rJ(t,e=4,n=1){let{weekYear:r,weekNumber:o,weekday:i}=t,a=GM(KM(r,1,e),n),l=ig(r),c=o*7+i-a-7+e,d;c<1?(d=r-1,c+=ig(d)):c>l?(d=r+1,c-=ig(r)):d=r;let{month:f,day:m}=Z3e(d,c);return{year:d,month:f,day:m,...YT(t)}}function YM(t){let{year:e,month:n,day:r}=t,o=Y3e(e,n,r);return{year:e,ordinal:o,...YT(t)}}function oJ(t){let{year:e,ordinal:n}=t,{month:r,day:o}=Z3e(e,n);return{year:e,month:r,day:o,...YT(t)}}function iJ(t,e){if(!Rt(t.localWeekday)||!Rt(t.localWeekNumber)||!Rt(t.localWeekYear)){if(!Rt(t.weekday)||!Rt(t.weekNumber)||!Rt(t.weekYear))throw new Lc("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 q3e(t,e=4,n=1){let r=GT(t.weekYear),o=Ul(t.weekNumber,1,A0(t.weekYear,e,n)),i=Ul(t.weekday,1,7);return r?o?i?!1:Nu("weekday",t.weekday):Nu("week",t.weekNumber):Nu("weekYear",t.weekYear)}function J3e(t){let e=GT(t.year),n=Ul(t.ordinal,1,ig(t.year));return e?n?!1:Nu("ordinal",t.ordinal):Nu("year",t.year)}function aJ(t){let e=GT(t.year),n=Ul(t.month,1,12),r=Ul(t.day,1,IC(t.year,t.month));return e?n?r?!1:Nu("day",t.day):Nu("month",t.month):Nu("year",t.year)}function sJ(t){let{hour:e,minute:n,second:r,millisecond:o}=t,i=Ul(e,0,23)||e===24&&n===0&&r===0&&o===0,a=Ul(n,0,59),l=Ul(r,0,59),c=Ul(o,0,999);return i?a?l?c?!1:Nu("millisecond",o):Nu("second",r):Nu("minute",n):Nu("hour",e)}function Rt(t){return typeof t>"u"}function Qd(t){return typeof t=="number"}function GT(t){return typeof t=="number"&&t%1===0}function I3e(t){return typeof t=="string"}function Q3e(t){return Object.prototype.toString.call(t)==="[object Date]"}function HM(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function WM(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function eEe(t){return Array.isArray(t)?t:[t]}function lJ(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 tEe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function ag(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function WT(t){if(t==null)return null;if(typeof t!="object")throw new Yo("Week settings must be an object");if(!Ul(t.firstDay,1,7)||!Ul(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!Ul(e,1,7)))throw new Yo("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function Ul(t,e,n){return GT(t)&&t>=e&&t<=n}function nlt(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 kp(t){if(!(Rt(t)||t===null||t===""))return parseInt(t,10)}function sg(t){if(!(Rt(t)||t===null||t===""))return parseFloat(t)}function ZT(t){if(!(Rt(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function AC(t,e,n=!1){let r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function P0(t){return t%4===0&&(t%100!==0||t%400===0)}function ig(t){return P0(t)?366:365}function IC(t,e){let n=nlt(e-1,12)+1,r=t+(e-n)/12;return n===2?P0(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function kC(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 X3e(t,e,n){return-GM(KM(t,1,e),n)+e-1}function A0(t,e=4,n=1){let r=X3e(t,e,n),o=X3e(t+1,e,n);return(ig(t)-r+o)/7}function qT(t){return t>99?t:t>Wn.twoDigitCutoffYear?1900+t:2e3+t}function zM(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 k0(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 uJ(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Yo(`Invalid unit value ${t}`);return e}function FC(t,e){let n={};for(let r in t)if(ag(t,r)){let o=t[r];if(o==null)continue;n[e(r)]=uJ(o)}return n}function og(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 YT(t){return tEe(t,["hour","minute","second","millisecond"])}var rlt=["January","February","March","April","May","June","July","August","September","October","November","December"],cJ=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],olt=["J","F","M","A","M","J","J","A","S","O","N","D"];function Jq(t){switch(t){case"narrow":return[...olt];case"short":return[...cJ];case"long":return[...rlt];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 dJ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],fJ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ilt=["M","T","W","T","F","S","S"];function Xq(t){switch(t){case"narrow":return[...ilt];case"short":return[...fJ];case"long":return[...dJ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Qq=["AM","PM"],alt=["Before Christ","Anno Domini"],slt=["BC","AD"],llt=["B","A"];function eJ(t){switch(t){case"narrow":return[...llt];case"short":return[...slt];case"long":return[...alt];default:return null}}function nEe(t){return Qq[t.hour<12?0:1]}function rEe(t,e){return Xq(e)[t.weekday-1]}function oEe(t,e){return Jq(e)[t.month-1]}function iEe(t,e){return eJ(e)[t.year<0?0:1]}function P3e(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 aEe(t,e){let n="";for(let r of t)r.literal?n+=r.val:n+=e(r.val);return n}var ult={D:ng,DD:TT,DDD:_T,DDDD:DT,t:$T,tt:NT,ttt:LT,tttt:MT,T:RT,TT:OT,TTT:kT,TTTT:AT,f:PT,ff:FT,fff:zT,ffff:UT,F:IT,FF:BT,FFF:VT,FFFF:jT},qi=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 ult[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?nEe(e):i({hour:"numeric",hourCycle:"h12"},"dayperiod"),c=(g,y)=>r?oEe(e,g):i(y?{month:g}:{month:g,day:"numeric"},"month"),d=(g,y)=>r?rEe(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?iEe(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 aEe(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 aEe(i,o(l))}};var lEe=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function zC(...t){let e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function VC(...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 UC(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 uEe(...t){return(e,n)=>{let r={},o;for(o=0;o<t.length;o++)r[t[o]]=kp(e[n+o]);return[r,null,n+o]}}var cEe=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,clt=`(?:${cEe.source}?(?:\\[(${lEe.source})\\])?)?`,pJ=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,dEe=RegExp(`${pJ.source}${clt}`),mJ=RegExp(`(?:T${dEe.source})?`),dlt=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,flt=/(\d{4})-?W(\d\d)(?:-?(\d))?/,plt=/(\d{4})-?(\d{3})/,mlt=uEe("weekYear","weekNumber","weekDay"),hlt=uEe("year","ordinal"),glt=/(\d{4})-(\d\d)-(\d\d)/,fEe=RegExp(`${pJ.source} ?(?:${cEe.source}|(${lEe.source}))?`),vlt=RegExp(`(?: ${fEe.source})?`);function BC(t,e,n){let r=t[e];return Rt(r)?n:kp(r)}function ylt(t,e){return[{year:BC(t,e),month:BC(t,e+1,1),day:BC(t,e+2,1)},null,e+3]}function jC(t,e){return[{hours:BC(t,e,0),minutes:BC(t,e+1,0),seconds:BC(t,e+2,0),milliseconds:ZT(t[e+3])},null,e+4]}function JT(t,e){let n=!t[e]&&!t[e+1],r=k0(t[e+1],t[e+2]),o=n?null:Yi.instance(r);return[{},o,e+3]}function XT(t,e){let n=t[e]?Wa.create(t[e]):null;return[{},n,e+1]}var blt=RegExp(`^T?${pJ.source}$`),xlt=/^-?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 Clt(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(sg(n)),months:h(sg(r)),weeks:h(sg(o)),days:h(sg(i)),hours:h(sg(a)),minutes:h(sg(l)),seconds:h(sg(c),c==="-0"),milliseconds:h(ZT(d),m)}]}var Slt={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 hJ(t,e,n,r,o,i,a){let l={year:e.length===2?qT(kp(e)):kp(e),month:cJ.indexOf(n)+1,day:kp(r),hour:kp(o),minute:kp(i)};return a&&(l.second=kp(a)),t&&(l.weekday=t.length>3?dJ.indexOf(t)+1:fJ.indexOf(t)+1),l}var wlt=/^(?:(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 Elt(t){let[,e,n,r,o,i,a,l,c,d,f,m]=t,h=hJ(e,o,r,n,i,a,l),g;return c?g=Slt[c]:d?g=0:g=k0(f,m),[h,new Yi(g)]}function Tlt(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var _lt=/^(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$/,Dlt=/^(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$/,$lt=/^(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 sEe(t){let[,e,n,r,o,i,a,l]=t;return[hJ(e,o,r,n,i,a,l),Yi.utcInstance]}function Nlt(t){let[,e,n,r,o,i,a,l]=t;return[hJ(e,l,n,r,o,i,a),Yi.utcInstance]}var Llt=zC(dlt,mJ),Mlt=zC(flt,mJ),Rlt=zC(plt,mJ),Olt=zC(dEe),pEe=VC(ylt,jC,JT,XT),klt=VC(mlt,jC,JT,XT),Alt=VC(hlt,jC,JT,XT),Plt=VC(jC,JT,XT);function mEe(t){return UC(t,[Llt,pEe],[Mlt,klt],[Rlt,Alt],[Olt,Plt])}function hEe(t){return UC(Tlt(t),[wlt,Elt])}function gEe(t){return UC(t,[_lt,sEe],[Dlt,sEe],[$lt,Nlt])}function vEe(t){return UC(t,[xlt,Clt])}var Ilt=VC(jC);function yEe(t){return UC(t,[blt,Ilt])}var Flt=zC(glt,vlt),Blt=zC(fEe),zlt=VC(jC,JT,XT);function bEe(t){return UC(t,[Flt,pEe],[Blt,zlt])}var xEe="Invalid Duration",SEe={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}},Vlt={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},...SEe},Lu=146097/400,HC=146097/4800,Ult={years:{quarters:4,months:12,weeks:Lu/7,days:Lu,hours:Lu*24,minutes:Lu*24*60,seconds:Lu*24*60*60,milliseconds:Lu*24*60*60*1e3},quarters:{months:3,weeks:Lu/28,days:Lu/4,hours:Lu*24/4,minutes:Lu*24*60/4,seconds:Lu*24*60*60/4,milliseconds:Lu*24*60*60*1e3/4},months:{weeks:HC/7,days:HC,hours:HC*24,minutes:HC*24*60,seconds:HC*24*60*60,milliseconds:HC*24*60*60*1e3},...SEe},I0=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],jlt=I0.slice(0).reverse();function lg(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 wEe(t,e){let n=e.milliseconds??0;for(let r of jlt.slice(1))e[r]&&(n+=e[r]*t[r].milliseconds);return n}function CEe(t,e){let n=wEe(t,e)<0?-1:1;I0.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),I0.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 Hlt(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?Ult:Vlt;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:FC(e,t.normalizeUnit),loc:tr.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(e){if(Qd(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]=vEe(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]=yEe(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 Zi?e:new Zi(e,n);if(Wn.throwOnInvalid)throw new FM(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 OC(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?qi.create(this.loc,r).formatDurationFromString(this,e):xEe}toHuman(e={}){if(!this.isValid)return xEe;let n=I0.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+=AC(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?wEe(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 I0)(ag(n.values,o)||ag(this.values,o))&&(r[o]=n.get(o)+this.get(o));return lg(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]=uJ(e(this.values[r],r));return lg(this,{values:n},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let n={...this.values,...FC(e,t.normalizeUnit)};return lg(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 lg(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return CEe(this.matrix,e),lg(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Hlt(this.normalize().shiftToAll().toObject());return lg(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 I0)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;Qd(o[a])&&(l+=o[a]);let c=Math.trunc(l);n[a]=c,r[a]=(l*1e3-c*1e3)/1e3}else Qd(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 CEe(this.matrix,n),lg(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 lg(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 I0)if(!n(this.values[r],e.values[r]))return!1;return!0}};var WC="Invalid Interval";function Wlt(t,e){return!t||!t.isValid?Ap.invalid("missing or invalid start"):!e||!e.isValid?Ap.invalid("missing or invalid end"):e<t?Ap.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 Ap=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 Zi?e:new Zi(e,n);if(Wn.throwOnInvalid)throw new IM(r);return new t({invalid:r})}static fromDateTimes(e,n){let r=KC(e),o=KC(n),i=Wlt(r,o);return i??new t({start:r,end:o})}static after(e,n){let r=xo.fromDurationLike(n),o=KC(e);return t.fromDateTimes(o,o.plus(r))}static before(e,n){let r=xo.fromDurationLike(n),o=KC(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(KC).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()})`:WC}[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=ng,n={}){return this.isValid?qi.create(this.s.loc.clone(n),e).formatInterval(this):WC}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:WC}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:WC}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:WC}toFormat(e,{separator:n=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:WC}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 Pp=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 Wa.isValidZone(e)}static normalizeZone(e){return Oc(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:HM(),localeWeek:WM()}}};function EEe(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 Klt(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=EEe(c,d);return(f-f%7)/7}],["days",EEe]],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 TEe(t,e,n,r){let[o,i,a,l]=Klt(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 gJ={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"},_Ee={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]},Glt=gJ.hanidec.replace(/[\[|\]]/g,"").split("");function DEe(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(gJ.hanidec)!==-1)e+=Glt.indexOf(t[n]);else for(let o in _Ee){let[i,a]=_Ee[o];r>=i&&r<=a&&(e+=r-i)}}return parseInt(e,10)}else return e}function Mu({numberingSystem:t},e=""){return new RegExp(`${gJ[t||"latn"]}${e}`)}var Ylt="missing Intl.DateTimeFormat.formatToParts support";function Kn(t,e=n=>n){return{regex:t,deser:([n])=>e(DEe(n))}}var Zlt="\xA0",LEe=`[ ${Zlt}]`,MEe=new RegExp(LEe,"g");function qlt(t){return t.replace(/\./g,"\\.?").replace(MEe,LEe)}function $Ee(t){return t.replace(/\./g,"").replace(MEe," ").toLowerCase()}function kc(t,e){return t===null?null:{regex:RegExp(t.map(qlt).join("|")),deser:([n])=>t.findIndex(r=>$Ee(n)===$Ee(r))+e}}function NEe(t,e){return{regex:t,deser:([,n,r])=>k0(n,r),groups:e}}function ZM(t){return{regex:t,deser:([e])=>e}}function Jlt(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Xlt(t,e){let n=Mu(e),r=Mu(e,"{2}"),o=Mu(e,"{3}"),i=Mu(e,"{4}"),a=Mu(e,"{6}"),l=Mu(e,"{1,2}"),c=Mu(e,"{1,3}"),d=Mu(e,"{1,6}"),f=Mu(e,"{1,9}"),m=Mu(e,"{2,4}"),h=Mu(e,"{4,6}"),g=S=>({regex:RegExp(Jlt(S.val)),deser:([C])=>C,literal:!0}),b=(S=>{if(t.literal)return g(S);switch(S.val){case"G":return kc(e.eras("short"),0);case"GG":return kc(e.eras("long"),0);case"y":return Kn(d);case"yy":return Kn(m,qT);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 kc(e.months("short",!0),1);case"MMMM":return kc(e.months("long",!0),1);case"L":return Kn(l);case"LL":return Kn(r);case"LLL":return kc(e.months("short",!1),1);case"LLLL":return kc(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 ZM(f);case"uu":return ZM(l);case"uuu":return Kn(n);case"a":return kc(e.meridiems(),0);case"kkkk":return Kn(i);case"kk":return Kn(m,qT);case"W":return Kn(l);case"WW":return Kn(r);case"E":case"c":return Kn(n);case"EEE":return kc(e.weekdays("short",!1),1);case"EEEE":return kc(e.weekdays("long",!1),1);case"ccc":return kc(e.weekdays("short",!0),1);case"cccc":return kc(e.weekdays("long",!0),1);case"Z":case"ZZ":return NEe(new RegExp(`([+-]${l.source})(?::(${r.source}))?`),2);case"ZZZ":return NEe(new RegExp(`([+-]${l.source})(${r.source})?`),2);case"z":return ZM(/[a-z_+-/]{1,256}?/i);case" ":return ZM(/[^\S\n\r]/);default:return g(S)}})(t)||{invalidReason:Ylt};return b.token=t,b}var Qlt={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 eut(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=Qlt[a];if(typeof l=="object"&&(l=l[i]),l)return{literal:!1,val:l}}function tut(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function nut(t,e,n){let r=t.match(e);if(r){let o={},i=1;for(let a in n)if(ag(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 rut(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=Wa.create(t.z)),Rt(t.Z)||(n||(n=new Yi(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=ZT(t.u)),[Object.keys(t).reduce((i,a)=>{let l=e(a);return l&&(i[l]=t[a]),i},{}),n,r]}var vJ=null;function out(){return vJ||(vJ=gn.fromMillis(1555555555555)),vJ}function iut(t,e){if(t.literal)return t;let n=qi.macroTokenToFormatOpts(t.val),r=xJ(n,e);return r==null||r.includes(void 0)?t:r}function yJ(t,e){return Array.prototype.concat(...t.map(n=>iut(n,e)))}function bJ(t,e,n){let r=yJ(qi.parseFormat(n),t),o=r.map(a=>Xlt(a,t)),i=o.find(a=>a.invalidReason);if(i)return{input:e,tokens:r,invalidReason:i.invalidReason};{let[a,l]=tut(o),c=RegExp(a,"i"),[d,f]=nut(e,c,l),[m,h,g]=f?rut(f):[null,null,void 0];if(ag(f,"a")&&ag(f,"H"))throw new Lc("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 REe(t,e,n){let{result:r,zone:o,specificOffset:i,invalidReason:a}=bJ(t,e,n);return[r,o,i,a]}function xJ(t,e){if(!t)return null;let r=qi.create(e,t).dtFormatter(out()),o=r.formatToParts(),i=r.resolvedOptions();return o.map(a=>eut(a,t,i))}var CJ="Invalid DateTime",OEe=864e13;function qM(t){return new Zi("unsupported zone",`the zone "${t.name}" is not supported`)}function SJ(t){return t.weekData===null&&(t.weekData=KT(t.c)),t.weekData}function wJ(t){return t.localWeekData===null&&(t.localWeekData=KT(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function F0(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 zEe(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 JM(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 zEe(kC(t),e,n)}function kEe(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,IC(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=kC(i),[c,d]=zEe(l,n,t.zone);return a!==0&&(c+=a,d=t.zone.offset(c)),{ts:c,o:d}}function QT(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 Zi("unparsable",`the input "${o}" can't be parsed as ${r}`))}function XM(t,e,n=!0){return t.isValid?qi.create(tr.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function EJ(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 AEe(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 VEe={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},aut={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},sut={ordinal:1,hour:0,minute:0,second:0,millisecond:0},UEe=["year","month","day","hour","minute","second","millisecond"],lut=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],uut=["year","ordinal","hour","minute","second","millisecond"];function cut(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 OC(t);return e}function PEe(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return cut(t)}}function IEe(t,e){let n=Oc(e.zone,Wn.defaultZone),r=tr.fromObject(e),o=Wn.now(),i,a;if(Rt(t.year))i=o;else{for(let d of UEe)Rt(t[d])&&(t[d]=VEe[d]);let l=aJ(t)||sJ(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 FEe(t,e,n){let r=Rt(n.round)?!0:n.round,o=(a,l)=>(a=AC(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 BEe(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 Zi("invalid input"):null)||(n.isValid?null:qM(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=JM(this.ts,l),r=Number.isNaN(o.year)?new Zi("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]=BEe(arguments),[r,o,i,a,l,c,d]=n;return IEe({year:r,month:o,day:i,hour:a,minute:l,second:c,millisecond:d},e)}static utc(){let[e,n]=BEe(arguments),[r,o,i,a,l,c,d]=n;return e.zone=Yi.utcInstance,IEe({year:r,month:o,day:i,hour:a,minute:l,second:c,millisecond:d},e)}static fromJSDate(e,n={}){let r=Q3e(e)?e.valueOf():NaN;if(Number.isNaN(r))return t.invalid("invalid input");let o=Oc(n.zone,Wn.defaultZone);return o.isValid?new t({ts:r,zone:o,loc:tr.fromObject(n)}):t.invalid(qM(o))}static fromMillis(e,n={}){if(Qd(e))return e<-OEe||e>OEe?t.invalid("Timestamp out of range"):new t({ts:e,zone:Oc(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(Qd(e))return new t({ts:e*1e3,zone:Oc(n.zone,Wn.defaultZone),loc:tr.fromObject(n)});throw new Yo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};let r=Oc(n.zone,Wn.defaultZone);if(!r.isValid)return t.invalid(qM(r));let o=tr.fromObject(n),i=FC(e,PEe),{minDaysInFirstWeek:a,startOfWeek:l}=iJ(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 Lc("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&f)throw new Lc("Can't mix ordinal dates with month/day");let b=y||i.weekday&&!g,S,C,w=JM(c,d);b?(S=lut,C=aut,w=KT(w,a,l)):f?(S=uut,C=sut,w=YM(w)):(S=UEe,C=VEe);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?q3e(i,a,l):f?J3e(i):aJ(i),D=_||sJ(i);if(D)return t.invalid(D);let $=b?rJ(i,a,l):f?oJ(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]=mEe(e);return QT(r,o,n,"ISO 8601",e)}static fromRFC2822(e,n={}){let[r,o]=hEe(e);return QT(r,o,n,"RFC 2822",e)}static fromHTTP(e,n={}){let[r,o]=gEe(e);return QT(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]=REe(a,e,n);return f?t.invalid(f):QT(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]=bEe(e);return QT(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 Zi?e:new Zi(e,n);if(Wn.throwOnInvalid)throw new PM(r);return new t({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,n={}){let r=xJ(e,tr.fromObject(n));return r?r.map(o=>o?o.val:null).join(""):null}static expandFormat(e,n={}){return yJ(qi.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?SJ(this).weekYear:NaN}get weekNumber(){return this.isValid?SJ(this).weekNumber:NaN}get weekday(){return this.isValid?SJ(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?wJ(this).weekday:NaN}get localWeekNumber(){return this.isValid?wJ(this).weekNumber:NaN}get localWeekYear(){return this.isValid?wJ(this).weekYear:NaN}get ordinal(){return this.isValid?YM(this.c).ordinal:NaN}get monthShort(){return this.isValid?Pp.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Pp.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Pp.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Pp.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=kC(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=JM(c,a),m=JM(d,l);return f.hour===m.hour&&f.minute===m.minute&&f.second===m.second&&f.millisecond===m.millisecond?[F0(this,{ts:c}),F0(this,{ts:d})]:[this]}get isInLeapYear(){return P0(this.year)}get daysInMonth(){return IC(this.year,this.month)}get daysInYear(){return this.isValid?ig(this.year):NaN}get weeksInWeekYear(){return this.isValid?A0(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?A0(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:n,numberingSystem:r,calendar:o}=qi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:o}}toUTC(e=0,n={}){return this.setZone(Yi.instance(e),n)}toLocal(){return this.setZone(Wn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Oc(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 F0(this,{ts:o,zone:e})}else return t.invalid(qM(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){let o=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return F0(this,{loc:o})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let n=FC(e,PEe),{minDaysInFirstWeek:r,startOfWeek:o}=iJ(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 Lc("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new Lc("Can't mix ordinal dates with month/day");let m;i?m=rJ({...KT(this.c,r,o),...n},r,o):Rt(n.ordinal)?(m={...this.toObject(),...n},Rt(n.day)&&(m.day=Math.min(IC(m.year,m.month),m.day))):m=oJ({...YM(this.c),...n});let[h,g]=QM(m,this.o,this.zone);return F0(this,{ts:h,o:g})}plus(e){if(!this.isValid)return this;let n=xo.fromDurationLike(e);return F0(this,kEe(this,n))}minus(e){if(!this.isValid)return this;let n=xo.fromDurationLike(e).negate();return F0(this,kEe(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?qi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):CJ}toLocaleString(e=ng,n={}){return this.isValid?qi.create(this.loc.clone(n),e).formatDateTime(this):CJ}toLocaleParts(e={}){return this.isValid?qi.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=EJ(this,a);return l+="T",l+=AEe(this,a,n,r,o,i),l}toISODate({format:e="extended"}={}){return this.isValid?EJ(this,e==="extended"):null}toISOWeekDate(){return XM(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":"")+AEe(this,a==="extended",n,e,r,i):null}toRFC2822(){return XM(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return XM(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?EJ(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")),XM(this,o,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():CJ}[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=eEe(n).map(xo.normalizeUnit),a=e.valueOf()>this.valueOf(),l=a?this:e,c=a?e:this,d=TEe(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?Ap.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),FEe(n,this.plus(r),{...e,numeric:"always",units:o,unit:i})}toRelativeCalendar(e={}){return this.isValid?FEe(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 lJ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Yo("max requires all arguments be DateTimes");return lJ(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 bJ(a,e,n)}static fromStringExplain(e,n,r={}){return t.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return ng}static get DATE_MED(){return TT}static get DATE_MED_WITH_WEEKDAY(){return Vq}static get DATE_FULL(){return _T}static get DATE_HUGE(){return DT}static get TIME_SIMPLE(){return $T}static get TIME_WITH_SECONDS(){return NT}static get TIME_WITH_SHORT_OFFSET(){return LT}static get TIME_WITH_LONG_OFFSET(){return MT}static get TIME_24_SIMPLE(){return RT}static get TIME_24_WITH_SECONDS(){return OT}static get TIME_24_WITH_SHORT_OFFSET(){return kT}static get TIME_24_WITH_LONG_OFFSET(){return AT}static get DATETIME_SHORT(){return PT}static get DATETIME_SHORT_WITH_SECONDS(){return IT}static get DATETIME_MED(){return FT}static get DATETIME_MED_WITH_SECONDS(){return BT}static get DATETIME_MED_WITH_WEEKDAY(){return Uq}static get DATETIME_FULL(){return zT}static get DATETIME_FULL_WITH_SECONDS(){return VT}static get DATETIME_HUGE(){return UT}static get DATETIME_HUGE_WITH_SECONDS(){return jT}};function KC(t){if(gn.isDateTime(t))return t;if(t&&t.valueOf&&Qd(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 eR(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 jEe,CanvasClient as HEe}from"@uniformdev/canvas";async function tR({instanceType:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new HEe(et),a=await AM({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?eR(m):void 0,orderBy:Array.isArray(f)?f:f?[f]:void 0,locale:r,skipPatternResolution:!0,state:jEe})).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 nR({id:t}){let n=await new HEe(et).getCompositionById({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,compositionId:t,state:jEe});return{content:[{type:"text",text:JSON.stringify(n,null,2)}]}}var dut={id:WEe.string()};function KEe(t){t.tool("compositionList","Lists available Uniform compositions",Rp.shape,async e=>await tR({...e,instanceType:"composition",getEditUrl:kM})),t.tool("compositionGet","Gets the full contents of a Uniform composition",dut,async e=>await nR(e))}import{autoFixParameterGroups as ZEe,ContentClient as fut}from"@uniformdev/canvas";import*as oR from"zod";import*as ug from"zod";var GEe=ug.object({name:ug.string().describe('Title-cased display name of the component. Ex: "Hero"'),id:ug.string().describe("Public ID of the content type, the camelCase version of name, using only alphanumeric characters"),description:ug.string().describe("Describe the purpose of the content type in 1-2 sentences."),fields:ug.array(h6).describe("The fields of the content type. The key is the publicId of the field.").optional()});function YEe(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 rR(t){return`${et.baseWebUrl}/dashboards/canvas/content-types/${t}`}var put={action:oR.enum(["create","update","delete"]).describe("The action to perform"),publicId:oR.string().describe("Public ID of the component, the camelCase version of name, using only alphanumeric characters"),contentType:GEe.describe("Full content type definition to create. Omit for update or delete.").optional(),patches:p6.describe("JSON patch to apply to the existing component definition. Omit for create or delete.").optional()};function qEe(t){t.tool("contentTypeAction","Creates, updates, or deletes a Uniform Content Type definition",put,async({publicId:e,action:n,contentType:r,patches:o})=>{let i=new fut(et),a=!1;if(n==="create"){if(!r)throw new Error("Content type definition is required for create");let l=YEe(r);l.fields&&(a=ZEe(l.fields),Hy(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=f6(c,o);if(f.fields){a=ZEe(f.fields);let m=f.fields?.filter(h=>h.type==="richText").map(h=>h.id).filter(h=>!d?.includes(h));Hy(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:rR(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 JEe}from"@uniformdev/canvas";import*as XEe from"zod";var mut={id:XEe.string()};function QEe(t){t.tool("contentTypeList","Lists all Uniform Content Type definitions",async()=>{let r=(await new JEe(et).getContentTypes()).contentTypes.map(o=>({id:o.id,name:o.name,description:o.description,editUrl:rR(o.id)}));return{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}),t.tool("contentTypeGet","Gets a Uniform Content Type definition details (fields, etc.)",mut,async({id:e})=>{let o=(await new JEe(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)}]}})}function eTe(t){t.tool("createUuid","Creates a new random UUID",async()=>({content:[{type:"text",text:crypto.randomUUID()}]}))}import*as e5 from"zod";import{CANVAS_DRAFT_STATE as iR,ContentClient as hut,convertEntryToPutEntry as gut,getEffectivePropertyValue as vut}from"@uniformdev/canvas";async function yut(t,e,n){let o=(await e.fetchDefinitions())[t.entry.type];if(!o)throw new Error("insanity");let i=u3e(o),a;i.entryName&&(a=t.entry._overrides?.[t.entry._id].parameters?.[i.entryName]??t.entry.fields?.[i.entryName]);let l=vut({conditionIndex:-1,locale:void 0,greedyLocaleMatching:!0,property:a}),c=Gwe({value:l,isNew:n,contentType:i});t.entry._name=c}async function aR({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new hut(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:iR,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=CT({...h,entry:y});l=new Xd(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:iR,entry:{type:n.type,_id:e,fields:{},_pattern:o}}),d=e):l=new Xd({_id:e,_name:"New Entry",type:n.type,_overridability:{hideLockedParameters:!0}})}if(d){if(c=(await a.getEntries({entryIDs:[e],pattern:r,state:iR,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0})).entries[0],!c)throw new Error("Entry not found");let h=CT(c);l=new Xd(h.composition)}t==="delete"&&await a.deleteEntry({entryId:e});let m=R3e();if(l){t!=="duplicate"&&(await MM(n?.localeUpdates?.enableLocales),f=await vM({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:LM}));let h=l.exportTree(),g=l.exportMetadata(),y=gut(c3e(h,c??{projectId:et.projectId,pattern:r},g,iR,c?.releaseId,c?.editionId));r||await yut(y,m,t==="create"),await a.upsertEntry(y)}return{content:[{type:"text",text:JSON.stringify({...f,editUrl:i(e)},null,2)}]}}function sR(t){return`${et.baseWebUrl}/dashboards/canvas/entries/${t}`}var but={action:e5.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:e5.string().uuid().describe("UUID of the entry to create, update, delete, or duplicate"),patternId:e5.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:Yne.describe("Modification instructions for the entry. Omit for delete and duplicate.").optional()};function tTe(t){t.tool("entryAction","Creates, updates, or deletes a Uniform Entry",but,async e=>await aR({...e,isPattern:!1,getEditUrl:sR,patternId:e.patternId}))}import*as oTe from"zod";import{CANVAS_DRAFT_STATE as nTe,ContentClient as rTe}from"@uniformdev/canvas";async function lR({isPattern:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new rTe(et),a=await AM({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:nTe,search:d,filters:m?eR(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 uR({id:t,isPattern:e}){let r=await new rTe(et).getEntries({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,pattern:e,entryIDs:[t],state:nTe});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 xut={id:oTe.string()};function iTe(t){t.tool("entryList","Lists available Uniform entries",Rp.shape,async e=>await lR({...e,isPattern:!1,getEditUrl:sR})),t.tool("entryGet","Gets the full contents of a Uniform entry",xut,async e=>await uR({...e,isPattern:!1}))}import*as dR from"zod";function cR(t){return`${et.baseWebUrl}/dashboards/canvas/entry-patterns/${t}`}var Cut={action:dR.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:dR.string().uuid().describe("UUID of the entry pattern to create, update, delete, or duplicate"),instructions:Zne.describe("Modification instructions for the entry pattern. Omit for delete and duplicate.").optional()};function aTe(t){t.tool("entryPatternAction","Creates, updates, or deletes a Uniform Entry Pattern",Cut,async e=>await aR({...e,isPattern:!0,getEditUrl:cR,patternId:void 0}))}import*as sTe from"zod";var Sut={id:sTe.string()};function lTe(t){t.tool("entryPatternList","Lists available Uniform entry patterns",Rp.shape,async e=>await lR({...e,isPattern:!0,getEditUrl:cR})),t.tool("entryPatternGet","Gets the full contents of a Uniform entry pattern",Sut,async e=>await uR({...e,isPattern:!0}))}import{ProjectClient as wut}from"@uniformdev/canvas";async function Eut(){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 uTe(t){t.tool("getUniformEnvironment","Get the connected Uniform Project name, edit URL, and current user",{},async()=>{try{let e=new wut(et),[n,r]=await Promise.all([e.get({projectId:et.projectId}),Eut()]),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 Tut}from"@uniformdev/canvas";function cTe(t){t.tool("localeList","Lists all registered Uniform locales",async()=>{let n=await new Tut(et).get();return{content:[{type:"text",text:JSON.stringify({locales:n.results,editUrl:`${et.baseWebUrl}/settings/localization`},null,2)}]}})}import*as pR from"zod";function fR(t){return`${et.baseWebUrl}/dashboards/canvas/edit/${t}`}var _ut={action:pR.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:pR.string().uuid().describe("UUID of the pattern instance to create, update, delete, or duplicate"),instructions:Kne.describe("Modification instructions for the pattern. Omit for delete and duplicate.").optional()};function dTe(t){t.tool("patternAction","Creates, updates, or deletes a Uniform Component Pattern or Composition Pattern",_ut,async e=>await OM({...e,isPattern:!0,getEditUrl:fR,patternId:void 0}))}import*as mR from"zod";var Dut={instanceType:mR.enum(["componentPattern","compositionPattern"]),...Rp.shape},$ut={id:mR.string()};function fTe(t){t.tool("patternList","Lists available Uniform component patterns or composition patterns",Dut,async e=>await tR({...e,getEditUrl:fR})),t.tool("patternGet","Gets the full contents of a Uniform component pattern or composition pattern",$ut,async e=>await nR(e))}import{ProjectMapClient as Nut}from"@uniformdev/project-map";import*as pTe from"zod";var Lut={query:pTe.string().describe("Keyword to search for in node names and paths.")};function mTe(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.",Lut,async({query:e})=>{let n=new Nut({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 ga=new Mut({name:"Uniform MCP",version:"1.0.0"});Une(ga);Wne(ga);qEe(ga);QEe(ga);tTe(ga);iTe(ga);lTe(ga);aTe(ga);fTe(ga);dTe(ga);O3e(ga);KEe(ga);eTe(ga);uTe(ga);cTe(ga);mTe(ga);var Out=new Rut;await ga.connect(Out);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.1-alpha.
|
|
3
|
+
"version": "20.39.1-alpha.2+4572116989",
|
|
4
4
|
"description": "Uniform MCP Server",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"bin": {
|
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
24
|
-
"@uniformdev/canvas": "20.39.1-alpha.
|
|
25
|
-
"@uniformdev/project-map": "20.39.1-alpha.
|
|
24
|
+
"@uniformdev/canvas": "20.39.1-alpha.2+4572116989",
|
|
25
|
+
"@uniformdev/project-map": "20.39.1-alpha.2+4572116989",
|
|
26
26
|
"fast-json-patch": "^3.1.1",
|
|
27
27
|
"immer": "10.1.1",
|
|
28
|
-
"jsdom": "
|
|
28
|
+
"jsdom": "20.0.1",
|
|
29
29
|
"zod": "3.23.8"
|
|
30
30
|
},
|
|
31
31
|
"files": [
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/jsdom": "^27.0.0",
|
|
39
|
-
"@uniformdev/design-system": "20.39.1-alpha.
|
|
40
|
-
"@uniformdev/files": "20.39.1-alpha.
|
|
41
|
-
"@uniformdev/mesh-edgehancer-sdk": "20.39.1-alpha.
|
|
42
|
-
"@uniformdev/richtext": "20.39.1-alpha.
|
|
39
|
+
"@uniformdev/design-system": "20.39.1-alpha.2+4572116989",
|
|
40
|
+
"@uniformdev/files": "20.39.1-alpha.2+4572116989",
|
|
41
|
+
"@uniformdev/mesh-edgehancer-sdk": "20.39.1-alpha.2+4572116989",
|
|
42
|
+
"@uniformdev/richtext": "20.39.1-alpha.2+4572116989",
|
|
43
43
|
"vitest": "3.2.4"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "4572116989761a9afbbad99a70216bbd7250016c"
|
|
46
46
|
}
|