@uniformdev/uniform-mcp 20.37.1-alpha.6 → 20.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +2 -2
  2. package/package.json +8 -8
package/dist/index.mjs CHANGED
@@ -5484,7 +5484,7 @@ to {
5484
5484
  align-items: center;
5485
5485
  color: var(--typography-base);
5486
5486
  display: inline-flex;
5487
- line-height: 1.25;
5487
+ line-height: ${t==="sm"?"1.25":"1.5"};
5488
5488
 
5489
5489
  &:before {
5490
5490
  border-radius: var(--rounded-full);
@@ -5647,7 +5647,7 @@ ${g}`:""}`:g??"").split(`
5647
5647
  `);return React.createElement(oM,{title:React.createElement(eq,{gap:"sm"},C.map((w,S)=>React.createElement("div",{key:S},w)))},React.createElement("span",null,y))}return y}function nat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--error)"}},t)}function rat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--primary-action-default)"}},t)}function oat({children:t}){return React.createElement("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",textDecorationColor:"var(--alert)"}},t)}import{createVariableReference as Xjt}from"@uniformdev/canvas";await _n();var hT=q(re()),iat=q(Cc());var oHt=zn("uniform:open-insert-variable"),Dwe=zn("uniform:edit-variable"),iHt=zn("uniform:disconnect-variable"),aHt=zn("uniform:insert-variable"),aat="\\$\\$",sat=20,sHt=new RegExp(`(^.*)(${aat}(.{0,${sat}}))$`);var NC=class t extends hD{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 $we(n.reference,{displayName:xq(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 lat(this.reference)}createDOM(){return document.createElement("span")}updateDOM(){return!1}static importDOM(){return{binding:()=>({conversion:uat,priority:0})}}decorate(){return React.createElement(dat,{state:this.__state,reference:this.reference,nodeKey:this.__key})}};function uat(t){let n=t.textContent.replace(wwe,"").replace(Ewe,"");return{node:$we(n,{displayName:xq(n),hasClickEvent:!0,referenceIsValid:!0,tooltip:void 0,isFresh:!0,isLoading:!1})}}function $we(t,e){return new NC(t,e)}function cat(t){return t instanceof NC}function dat({state:t,reference:e,nodeKey:n}){let[r]=_b(),[o,i,a]=Efe(n),l=!r.isEditable(),c=(0,mM.useCallback)(d=>{if(o&&ar(te())){d.preventDefault();let f=or(n);cat(f)&&f.remove()}return!1},[o,n]);return(0,mM.useEffect)(()=>fi(r.registerCommand(gd,c,kn),r.registerCommand(hd,c,kn),r.registerCommand(pd,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(Hf(f,!0)){let m=d.shiftKey;return d.preventDefault(),jf(f,m,!0),!0}return!1},Ze),r.registerCommand(md,d=>{let f=te();if(ar(f)&&!fat(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 Hf(f,!1)?(d.preventDefault(),jf(f,m,!1),!0):!1},Ze)),[a,r,o,n,c,i]),React.createElement(_we,{...t,reference:e,displayName:t.isLoading?React.createElement(J4e,{size:"sm"}):t.displayName,selected:o,disabled:l,clickToEdit:t.hasClickEvent,onClick:t.hasClickEvent?()=>{i(!o),r.dispatchCommand(Dwe,{reference:e,sourceKey:n})}:()=>i(!o)})}function fat(t){let e=Ar(t);return Pr(e)}await _n();await _n();var gT=class t extends hD{__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 Cq({asset:e.__asset,assetQuery:e.__assetQuery,upload:e.__upload,error:e.__error})}static importDOM(){return{img:()=>({conversion:e=>pat(e,Cq),priority:0}),figure:()=>({conversion:e=>mat(e,Cq),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 Cq({asset:t,upload:e,assetQuery:n,error:r}){return bn(new gT(t,e,n,r))}function Nwe(t){return t.parentElement!=null&&t.parentElement.tagName==="LI"&&t.previousSibling===null&&t.getAttribute("aria-roledescription")==="checkbox"}function pat(t,e){let n=t;if(n.src.startsWith("file:///")||Nwe(n))return null;let{alt:r,src:o}=n;return{node:Lwe({altText:r,src:o,createAssetNode:e})}}function mat(t,e){let n=t,r=n.querySelector("img"),o=n.querySelector("figcaption");if(!r||r.src.startsWith("file:///")||Nwe(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:Lwe({altText:i,src:a,caption:o?.textContent??void 0,createAssetNode:e})}}function Lwe({altText:t,src:e,caption:n,createAssetNode:r}){return r({asset:void 0,upload:{fileUrl:e,suggestedAltText:t,suggestedCaption:n},assetQuery:void 0})}function Mwe(t){let e=Uue({nodes:[_d,Td,gq,vb,yb,Vse,qde,Zde,Xde,Wf,gT,NC]}),r=new DOMParser().parseFromString(t,"text/html");return e.update(()=>{uB("skip-dom-selection");let o=ob(e,r);ir().select(),sc(o)},{discrete:!0}),e.getEditorState().toJSON()}function Owe({twee:t,nodeId:e,propertyId:n,propertyType:r,locale:o,propertyEdit:i,conditionIndex:a=-1}){let l=t.getNodeById(e);if(!l)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"){let c=xat({twee:t,targetNode:l,propertyId:n,propertyType:r,propertyEdit:i}),d=t.getNodeProperty(e,n);if(!o&&d?.locales)throw new Error(`The ${n} property is localized in ${Object.keys(d.locales).join(", ")}, but no locale was provided when setting its value. Please provide an explicit locale.`);if(n===vat){let f=t.getParentInfo(e);if(f?.parentId){let m=t.getNodeProperty(f.parentId,gat);if(m?.value!==Qne)throw new Error(`Cannot edit personalization criteria when the parent personalization component is not using the Strongest Variation Match selection method. Current selection method: ${m?.value||"Top-down criteria matching"}.`)}}t.updateNodeProperty({nodeId:e,property:n,value:()=>c,source:"ai",locale:o,conditionIndex:a,type:r})}}var xat=({twee:t,targetNode:e,propertyId:n,propertyType:r,propertyEdit:o})=>{if(r==="richText")return Mwe(o.newValue??"");if(r==="number")return Number(o.newValue);if(n===hat){if(bat(e.value.type))throw new Error("Enrichment tags are not allowed in system components.");if(t.getParentInfo(e.nodeId)?.parentId===yat)throw new Error("Enrichment tags are not allowed in personalization variants.")}return o.treatNewValueAsJson?JSON.parse(o.newValue):o.newValue};async function hM({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}){let g=[],y=(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,b=0,C=_=>{g.push(_),b++,m?.({completed:b,total:y})};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 Eat({slotUpdates:e,twee:t,definitions:w,referenceData:d,addResult:C,isEditingPattern:h});let S=g.some(_=>!_.success);if(S?e.moveComponentInstances?.forEach(_=>{g.push({summary:`Skipped moving component ${_.componentId} because previous actions failed`,success:!1})}):await Tat({slotUpdates:e,twee:t,definitions:w,addResult:C,isEditingPattern:h}),S=g.some(_=>!_.success),e.duplicateComponentInstances)for(let _ of e.duplicateComponentInstances)if(S)C({summary:`Skipped duplicating component ${_} because previous actions failed`,success:!1});else{let D=await t.duplicateNode(_,d.resolvePatternData);C({summary:`Duplicated component ${_}. The new duplicate has ID ${D} and is placed immediately after the original component in the same slot.`,success:!0})}return S=g.some(_=>!_.success),e.deleteComponentInstances?.forEach(_=>{S?C({summary:`Skipped deleting component ${_} because previous actions failed`,success:!1}):(t.deleteNode(_,!1),C({summary:`Deleted component ${_}`,success:!0}))}),S=g.some(_=>!_.success),o?.enableLocales?.forEach(_=>{S?C({summary:`Skipped enabling locale ${_} because previous actions failed`,success:!1}):(t.enableLocale(_),C({summary:`Enabled locale ${_}`,success:!0}))}),S=g.some(_=>!_.success),o?.disableLocales?.forEach(_=>{S?C({summary:`Skipped disabling locale ${_} because previous actions failed`,success:!1}):(t.disableLocale(_),C({summary:`Disabled locale ${_}`,success:!0}))}),S=g.some(_=>!_.success),S?n.length>0&&C({summary:`Skipped ${n.length} property updates because previous actions failed`,success:!1}):(await _at({propertyUpdates:n,twee:t,currentEditorLocale:c,referenceData:d,definitions:w,addResult:C})).forEach(D=>{if(!D.result.success)return;let N="componentId"in D.update?D.update.componentId:t.rootNodeId,M=Yne({twee:t,nodeId:N,currentEditorLocale:D.currentLocale,definition:D.propertyDefinition}),O=(t.getNodeById(t.rootNodeId)?.value)._locales??[];if(M&&!O.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(D.result.action!=="nothing")try{Owe({twee:t,nodeId:N,propertyId:D.propertyDefinition.id,propertyType:D.propertyDefinition.type,locale:M,propertyEdit:D.result}),C({summary:`Updated value of ${D.propertyDefinition.id} on ${N}${M?` in ${M}`:""}`,success:!0})}catch(k){C({summary:`Failed to update value of ${D.propertyDefinition.id} on ${N}${M?` in ${M}`:""}: ${k instanceof Error?k.message:"Unknown error"}`,success:!1})}if("overridable"in D.update&&D.update.overridable!==void 0)if(D.propertyDefinition.type===Cat)C({summary:`Cannot set overridability for block property '${D.propertyDefinition.id}' - blocks do not support overrides`,success:!1});else{let k=D.update.overridable;t.updateNode({nodeId:N,updateComponent:A=>{A._overridability??={},A._overridability.parameters??={},A._overridability.parameters[D.propertyDefinition.id]=k}}),C({summary:`Updated overridability for ${N}`,success:!0})}}),S=g.some(_=>!_.success),S?r.length>0&&g.push({summary:`Skipped ${r.length} data resource updates because previous actions failed`,success:!1}):(await Dat({dataResourceUpdates:r,twee:t,referenceData:d,results:g,dataSourceVariant:f})).forEach(D=>{if(!D.result.success)return;let N=D.update.componentId;if(D.result.action==="resetOverride")t.updateNode({nodeId:N,updateDataResources:[{type:"reset",name:D.update.dataResourceName}]}),g.push({summary:`Reset data resource to pattern default for ${D.update.dataResourceName} on ${N}`,success:!0});else if(D.result.action==="setValue")try{Zne({twee:t,nodeId:N,dataResourceName:D.update.dataResourceName,dataType:D.dataType,dataResourceEdit:D.result}),g.push({summary:`Updated data resource ${D.update.dataResourceName} on ${N}`,success:!0})}catch(M){g.push({summary:`Failed to update data resource ${D.update.dataResourceName} on ${N}: ${M instanceof Error?M.message:"Unknown error"}`,success:!1})}}),{success:g.every(_=>_.success),actionsTaken:g}}async function Eat({slotUpdates:t,twee:e,definitions:n,referenceData:r,addResult:o,isEditingPattern:i}){(await Promise.allSettled(t.createComponentInstances?.map(async l=>{let c=e.getNodeById(l.parentComponentId);if(!c)throw new Error(`Parent component with ID ${l.parentComponentId} not found`);let d=n[c.value.type];if(!d)throw new Error(`Definition for parent component type ${c.value.type} not found`);let f=d.slots?.find(g=>g.id===l.slotName);if(!f)throw new Error(`Slot ${l.slotName} not found on component type ${c.value.type}`);let m=x6({twee:e,parentSlotDefinition:f,nodeId:l.parentComponentId,componentDefinitionsIndex:n});if(!m)throw new Error(`Can't find allowed components inherited slot for ${l.slotName}`);let h=SP(m);if(l.instanceType==="component"){if(!l.componentType)throw new Error("componentType is required when inserting a component instance");if(!b6({type:l.componentType},h,i))throw new Error(`Component type ${l.componentType} is not allowed in slot ${l.slotName}`);e.insertNode({node:{type:l.componentType},overrideNodeId:l.newComponentInstanceUuid,parentNodeId:l.parentComponentId,parentSlot:l.slotName,targetIndexInSlot:l.slotIndex}),o({summary:`Inserted component ${l.componentType} in slot ${l.slotName} ${l.slotIndex!==void 0?`at index ${l.slotIndex}`:""}`,success:!0})}else{if(!l.componentPatternId)throw new Error("componentPatternId is required when inserting a component pattern instance");let g=await r.resolvePatternData(l.componentPatternId);if(!g)throw new Error(`Pattern definition with ID ${l.componentPatternId} not found`);if(!b6({type:g.type,_pattern:l.componentPatternId},h,!1))throw new Error(`Pattern ${l.componentPatternId} is not allowed in slot ${l.slotName}`);e.insertPattern({pattern:g,patternInstanceId:l.newComponentInstanceUuid,parentNodeId:l.parentComponentId,parentSlot:l.slotName,targetIndexInSlot:l.slotIndex}),o({summary:`Inserted pattern ${g._name} in slot ${l.slotName} ${l.slotIndex!==void 0?`at index ${l.slotIndex}`:""}`,success:!0})}})??[])).forEach((l,c)=>{if(l.status==="rejected"){let d=t.createComponentInstances?.[c];console.error("Error inserting component",l.reason),o({summary:`Failed to insert component ${d?.newComponentInstanceUuid}: ${"message"in l.reason?l.reason.message:"Unknown error"}`,success:!1})}})}async function Tat({slotUpdates:t,twee:e,definitions:n,addResult:r,isEditingPattern:o}){(await Promise.allSettled(t.moveComponentInstances?.map(async a=>{let l=e.getNodeById(a.componentId);if(!l)throw new Error(`Component to move with ID ${a.componentId} not found`);let c=e.getNodeById(a.newParentComponentId);if(!c)throw new Error(`Destination component with ID ${a.newParentComponentId} not found`);let d=n[c.value.type];if(!d)throw new Error(`Definition for destination component type ${c.value.type} not found`);let f=d.slots?.find(g=>g.id===a.newSlotName);if(!f)throw new Error(`Slot ${a.newSlotName} not found on component type ${c.value.type}`);let m=x6({twee:e,parentSlotDefinition:f,nodeId:a.newParentComponentId,componentDefinitionsIndex:n});if(!m)throw new Error(`Can't find allowed components inherited slot for ${a.newSlotName}`);let h=SP(m);if(!b6({type:l.value.type,_pattern:l.value._pattern},h,o))throw new Error(l.value._pattern?`Pattern ${l.value._pattern} is not allowed in slot ${a.newSlotName}`:`Component ${l.value.type} is not allowed in slot ${a.newSlotName}`);e.moveNode({movedNodeId:a.componentId,parentNodeId:a.newParentComponentId,parentSlot:a.newSlotName,targetIndexInSlot:a.newSlotIndex}),r({summary:`Moved component ${a.componentId} to ${a.newParentComponentId} in slot ${a.newSlotName} at index ${a.newSlotIndex}`,success:!0})})??[])).forEach((a,l)=>{if(a.status==="rejected"){let c=t.moveComponentInstances?.[l];console.error("Error moving component",a.reason),r({summary:`Failed to move component ${c?.componentId}: ${"message"in a.reason?a.reason.message:"Unknown error"}`,success:!1})}})}async function _at({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(D=>D.id===g),b=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`);let w=Sat({property:e.getNodeProperty(f,g),locale:b,conditionIndex:-1}),S,E=e.getNodeProperty(f,wat);E?.value?.dim&&(S=await r.getDimensionGuidance(E.value.dim));let _=await l.invoke("createPropertyEdit",{edit:d.editInstructions,propertyDefinition:{id:g,name:y.name,type:y.type,guidance:y.guidance,typeConfig:y.typeConfig},outputLocale:b,documentContext:void 0,currentValue:w,projectGuidance:a,componentGuidance:h.description,audienceGuidance:S});if(!_.success)throw new Error(_.summary??"Failed to edit property");return{result:_,update:d,propertyDefinition:y,currentLocale:b}})()));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 Dat({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 $c,CANVAS_ENRICHMENT_TAG_PARAM as f3e,CANVAS_LOCALE_TAG_PARAM as xT,CANVAS_LOCALIZATION_SLOT as Aq,CANVAS_LOCALIZATION_TYPE as pst,CANVAS_PERSONALIZATION_PARAM as CT,CANVAS_PERSONALIZE_SLOT as p3e,CANVAS_SLOT_SECTION_SLOT as mst,CANVAS_SLOT_SECTION_TYPE as EM,CANVAS_TEST_SLOT as m3e,CANVAS_TEST_VARIANT_PARAM as h3e,CANVAS_VIZ_CONTROL_PARAM as N0,convertToBindExpression as hst,createVariableReference as gst,getEffectivePropertyValue as g3e,walkNodeTree as L0}from"@uniformdev/canvas";var M0=q(Sq(),1),y3e=q(PS(),1);import{produce as No}from"immer";import Mat from"crypto";var vM=new Uint8Array(256),gM=vM.length;function wq(){return gM>vM.length-16&&(Mat.randomFillSync(vM),gM=0),vM.slice(gM,gM+=16)}var ma=[];for(let t=0;t<256;++t)ma.push((t+256).toString(16).slice(1));function Pwe(t,e=0){return ma[t[e+0]]+ma[t[e+1]]+ma[t[e+2]]+ma[t[e+3]]+"-"+ma[t[e+4]]+ma[t[e+5]]+"-"+ma[t[e+6]]+ma[t[e+7]]+"-"+ma[t[e+8]]+ma[t[e+9]]+"-"+ma[t[e+10]]+ma[t[e+11]]+ma[t[e+12]]+ma[t[e+13]]+ma[t[e+14]]+ma[t[e+15]]}import Oat from"crypto";var Eq={randomUUID:Oat.randomUUID};function Rat(t,e,n){if(Eq.randomUUID&&!e&&!t)return Eq.randomUUID();t=t||{};let r=t.random||(t.rng||wq)();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 Pwe(r)}var Ki=Rat;import{bindVariablesToObject as Pat}from"@uniformdev/canvas";var vT="Untitled",Vwe=60;function Uwe({value:t,isNew:e,contentType:n}){let{result:r}=Pat({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: ${Fat(r)}`:`${vT} image`;if(r.length>0)return i?.type==="date"?zat(r)?Vat(r):"Invalid date":$0(r)}else{if(typeof r=="number"||typeof r=="boolean")return r.toString();if(typeof r<"u"&&r!==null){if(i?.type==="link")return Iat(r);if(kne(r))return $0(xP(r.root));if(i?.type==="datetime"&&r){let a=r;return a.datetime&&jwe(a.datetime)?Uat(a.datetime):"Invalid datetime"}else return $0(jat(r).description)}}return e?`New entry: ${n.name}`:vT}function Iat(t){return t?t.type==="projectMapNode"?t.path.length>0?`Link to ${$0(t.path)}`:`Link to project map node (${t.nodeId})`:t.path.length>0?`Link to ${$0(t.path)}`:`${vT} link`:`${vT} link`}function Fat(t){try{let{pathname:e,hostname:n}=new URL(t),r=e.split("/").filter(o=>o);return r.length>2?`/${r[0]}/.../${r[r.length-1]} (${$0(n)})`:`${e} (${$0(n)})`}catch{return t}}function $0(t){let e=t.split(" ").filter(i=>i).reverse();if(e.length<1)return vT;let n="",r=e.pop(),o=()=>n.length+(r?.length??0)+(n.length>0?1:0);for(;r&&o()<Vwe;)n+=n.length>0?` ${r}`:r,r=e.pop();return n.length<1?`${t.slice(0,Vwe)}...`:e.length>0?`${n}...`:n}var Bat=/^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9]$/;function zat(t){return Bat.test(t)?jwe(t):!1}function jwe(t){let e=new Date(t);return e instanceof Date&&!isNaN(Number(e))}function Vat(t){return new Date(t).toLocaleDateString()}function Uat(t){return new Date(t).toLocaleString()}function jat(t){let e=Dq(t);return e?{description:e,named:!0}:{description:Hat(t).valuePreview,named:!1}}function Hat(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 Wat=["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 Dq(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=Dq(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 Wat)if(r in n){let o=Dq(n[r]);if(o)return o}}import{CANVAS_SLOT_SECTION_SLOT as Kat,walkNodeTree as Gat}from"@uniformdev/canvas";var yT="|";function yM(t,e){if(!t)return e??Ki();let n=t.split(yT),r=(e??Ki()).split(yT);return n.at(-1)===r[0]&&n.pop(),n.concat(r).join(yT)}function Wwe(t){let e=t.indexOf(yT);if(e<0)throw new Error(`Cannot remove pattern instance ID from ${t}`);return t.substring(e+1)}function bM(t,e,n=!1){Gat(t,({node:r,actions:{setDescendantsContext:o},context:i})=>{let a=!n&&!i?.currentParentPatternInstanceId,l="_pattern"in r&&!!r._pattern;if(i?.currentParentPatternInstanceId){let d=yM(i.currentParentPatternInstanceId,r._id);r._id=d}let c=i?.currentParentPatternInstanceId;l&&(c=r._id),"_overrides"in r&&r._overrides&&Hwe(r._overrides,c,a),"_patternOverrides"in r&&r._patternOverrides&&Hwe(r._patternOverrides,c,a),l&&o({currentParentPatternInstanceId:r._id})},{initialContext:{currentParentPatternInstanceId:e}})}var Hwe=(t,e,n)=>{Object.entries(t).forEach(([r,o])=>{let i=n?r:yM(e,r);Object.entries(o.slots??{}).forEach(([a,l])=>{l.forEach(c=>{let{partOfNestedPattern:d}=xM(r??"");bM(c,a===Kat&&!d?void 0:e,!0)})}),i&&(delete t[r],t[i]=o)})};function xM(t){let e=t.split(yT);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 Xwe}from"@uniformdev/canvas";import{CANVAS_VIZ_CONTROL_PARAM as Xat}from"@uniformdev/canvas";import{CANVAS_ENRICHMENT_TAG_PARAM as Kwe,CANVAS_INTENT_TAG_PARAM as Yat,CANVAS_LOCALE_TAG_PARAM as Zat,CANVAS_PERSONALIZATION_PARAM as Gwe,CANVAS_TEST_VARIANT_PARAM as qat,CANVAS_VIZ_CONTROL_PARAM as Ywe}from"@uniformdev/canvas";var Zwe=[{id:Yat,name:"Intent Tag",type:"intentTag"},{id:Zat,name:"Locale Visibility",type:"localeSelect"},{id:Gwe,name:"Personalization Criteria",type:Gwe},{id:Kwe,name:"Enrichment Tags",type:Kwe,helpText:"Seeing this component will increase a visitor's score in these enrichments."},{id:qat,name:"A/B Test",type:"testVariant"},{id:Ywe,name:"Visibility Control",type:Ywe}];var Jat=Zwe.reduce((t,e)=>(e.id===Xat||t.add(e.id),t),new Set);function LC(t,e){return Jat.has(e)?"yes":t?.parameters?.[e]??"no"}function $q(t,e){e&&Object.entries(e).forEach(([n,r])=>{let o=t[n];if(r.parameters||o?.parameters){t[n]??={};let i={...r?.parameters};Object.entries(o?.parameters??{}).forEach(([a,l])=>{let c=i[a];if(!c)i[a]=l;else if(l.locales||l.localesConditions||c.locales||c.localesConditions){let d={...c,...l};(l.locales||c.locales)&&(d.locales={...c.locales,...l.locales}),(l.localesConditions||c.localesConditions)&&(d.localesConditions={...c.localesConditions,...l.localesConditions}),i[a]=d}else i[a]={...c,...l}}),t[n].parameters=i}if((r.dataResources||o?.dataResources)&&(t[n]??={},t[n].dataResources={...r?.dataResources,...o?.dataResources}),r.slots||o?.slots){t[n]??={};let i=Object.entries(o?.slots??{}).reduce((a,[l,c])=>(a[l]&&Array.isArray(a[l])?a[l]=[...c,...a[l]]:a[l]=c,a),r.slots??{});t[n].slots=i}(r.variant!==void 0||o?.variant!==void 0)&&(t[n]=t[n]??{},t[n].variant=o?.variant??r?.variant)})}function qwe({applyOverrideToNode:t}){let e=new Set,n={};return{visitNode(r){e.add(r._id),$q(n,r._overrides),$q(n,r._patternOverrides);let o=n[r._id];o&&(o.parameters&&Object.keys(o.parameters).forEach(i=>{LC(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 Nq(t){let{beforeApplyParameterOverride:e,beforeApplyDataResourceOverride:n}=t??{};return qwe({applyOverrideToNode({node:r,overrides:o}){if(Object.entries(o.parameters??{}).map(([i,a])=>{r.parameters=r.parameters??{},e?.(r,i,a,r.parameters[i]);let l=r.parameters[i]??={type:a.type};a.locales||a.localesConditions?(l.locales??={},delete l.value,delete l.conditions,new Set([...Object.keys(a.locales??{}),...Object.keys(a.localesConditions??{})]).forEach(f=>{delete l.locales?.[f],delete l.localesConditions?.[f];let m=a.locales?.[f],h=a.localesConditions?.[f];m!=null&&(l.locales??={},l.locales[f]=m),h!=null&&(l.localesConditions??={},l.localesConditions[f]=h)}),l.locales&&Object.keys(l.locales).length===0&&delete l.locales,l.localesConditions&&Object.keys(l.localesConditions).length===0&&delete l.localesConditions):(delete l.locales,delete l.localesConditions,delete l.conditions,delete l.value,a.value!==null&&a.value!==void 0&&(l.value=a.value,l.connectedData=a.connectedData),a.conditions!==null&&a.conditions!==void 0&&(l.conditions=a.conditions)),!l.locales&&!l.localesConditions&&!l.conditions&&l.value===void 0&&delete r.parameters[i]}),Object.entries(o.dataResources??{}).forEach(([i,a])=>{n?.(r,i,a,r._dataResources?.[i]),r._dataResources??={},r._dataResources[i]=a}),o.variant!==void 0&&(r.variant=o.variant),o.slots){r.slots??={};let i=Object.keys(o.slots)[0];r.slots[Xwe]??=[],r.slots[Xwe]=[...o.slots[i]??[]]}}})}import{CANVAS_SLOT_SECTION_SLOT as Qat,CANVAS_SLOT_SECTION_TYPE as est}from"@uniformdev/canvas";var Jwe=({preserveOwnSlotSections:t=!1,preserveChildrenSlotSections:e=!1}={})=>n=>{if(n.node.type!==est)return;let{partOfPattern:r,partOfNestedPattern:o}=xM(n.node._id??"");!r&&!o&&t||r&&!o&&e||tst(n)},tst=({node:t,type:e,actions:n})=>{e!=="entry"&&(n.insertAfter(t.slots?.[Qat]??[]),n.remove())};import{walkNodeTree as ost}from"@uniformdev/canvas";import{produce as ist}from"immer";import{CANVAS_SLOT_SECTION_SLOT as Qwe,walkNodeTree as nst}from"@uniformdev/canvas";import{produce as rst}from"immer";function CM(t,e,n,r=Ki()){if(!t._pattern)throw new Error("Not a pattern");let o={};return nst(t,({node:i,ancestorsAndSelf:a,actions:l})=>{let c=i._id,d=e[c];if(a.length===1)i._id=r;else{let m=a[0];m.type!=="slot"||m.parentSlot!==Qwe?(i._id=Wwe(c),i._id=yM(r,i._id)):(l.replace({...o[c],_id:o[c]._id}),l.stopProcessingDescendants())}if(d){let m=rst(d,h=>{h.slots&&Object.entries(h.slots).forEach(([g,y])=>{if(g!==Qwe)throw new Error("Only slot section items are supported for duplication");y.forEach((b,C)=>{if(!b._id)return;let w=SM(b,e,n);o[b._id]=w,y[C]=w})})});n?.(i._id,m,c)}}),r}function SM(t,e,n){return ist(t,r=>{ost(r,({type:o,node:i,actions:{stopProcessingDescendants:a}})=>{o==="component"&&i._pattern?(CM(i,e,n),a()):i._id=Ki()})})}import{produce as ast}from"immer";function e3e(t,e=Ki()){return ast(t,n=>(n._pattern?CM(n,n._overrides??{},(r,o,i)=>{delete n._overrides[i],n._overrides[r]=o},e):n._id=e,n))}function wM({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 Lq({locale:t,conditionIndex:e,conditionDefinition:n,property:r,newPropertyValue:o}){t===void 0?e<0?r.value=o:(r.conditions??=[],t3e(r.conditions,e,n,o)):e<0?(r.locales??={},r.locales[t]=o):(r.localesConditions??={},r.localesConditions[t]??=[],t3e(r.localesConditions[t],e,n,o))}function t3e(t,e,n,r){if(e<0)throw new Error("Condition index must be greater than or equal to 0");let o=t[e];t[e]={when:n??o?.when??{clauses:[]},value:r===void 0?null:r,id:o?.id??sst(t)}}function sst(t){let e=new Set(t.map(r=>r.id)),n=0;for(;e.has(n);)n++;return n}function n3e(t){let e=!1,n={};return"_pattern"in t&&t._patternDataResources&&Object.entries(t._patternDataResources).forEach(([r,o])=>{e=!0,n[r]={...o,source:"patternDataResource"}}),t._dataResources&&Object.entries(t._dataResources).forEach(([r,o])=>{n[r]?n[r].isPatternParameter&&(e=!0,n[r]={...o,source:"dataResource"}):(e=!0,n[r]={...o,source:"dataResource"})}),e?n:void 0}import{CANVAS_DRAFT_STATE as lst,convertEntryToPutEntry as PKt,getPropertiesValue as BKt}from"@uniformdev/canvas";function r3e(t){let{fields:e,entryName:n,type:r="contentType",thumbnailField:o,...i}=t;return{...i,titleParameter:n,thumbnailParameter:o,parameters:e,canBeComposition:r==="block",permissions:t.permissions,useTeamPermissions:t.useTeamPermissions??!0,workflowId:t.workflowId}}function o3e(t){return{id:t.id,name:t.name,entryName:t.titleParameter,thumbnailField:t.thumbnailParameter,fields:t.parameters,icon:t.icon,description:t.description,slugSettings:t.slugSettings,type:t.canBeComposition?"block":"contentType",created:t.created,updated:t.updated,permissions:t.permissions,useTeamPermissions:t.useTeamPermissions,workflowId:t.workflowId||void 0}}function bT(t){let{entry:{fields:e,...n},...r}=t;return{created:"",modified:"",composition:{_id:"",...n,_name:t.entry._name??"Untitled",parameters:e,_overridability:t.entry._overridability,_overrides:t.entry._overrides,_pattern:t.entry._pattern,_patternError:t.entry._patternError},pattern:!!t.pattern,previewImageUrl:t.entry._thumbnail,...r}}function i3e(t,e,n,r,o,i,a){let l=a??e.projectId;if(!l)throw new Error("projectId is required in currentEntry or explicitly");return{created:e.created??"",modified:e.modified??"",projectId:l,state:r??e.state??lst,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 Mq(t,e){let{parameters:n,...r}=t;return{...r,_id:e??r._id??"unknown",fields:n}}function Oq(t){let{fields:e,...n}=t;return{...n,parameters:e}}import{CANVAS_VIZ_LOCALE_RULE as ust}from"@uniformdev/canvas";import{produce as cst}from"immer";function a3e(t,e,n){let r=cst(t.criteria,o=>s3e(o,e,n));return r&&{...t,criteria:r}}function s3e(t,e,n){if(!t)return t;let r=!1;for(let o of t.clauses)if("clauses"in o){let i=s3e(o,e,n);if(i===null){if(t.op!=="|")return null;t.clauses.splice(t.clauses.indexOf(o),1),r=!0}else i!==void 0&&(t.clauses[t.clauses.indexOf(o)]=i,r=!0)}else if(o.rule===ust){let i=Array.isArray(o.value)?o.value:[o.value],a=i.includes(e),l=i.includes(n);if(!a&&!l||a&&l)continue;if(i.length===1&&l&&!a)return null;a&&!l&&(o.value=i.concat(n),r=!0)}return r?t:void 0}var l3e=q(Sq(),1);function Rq(t,e){try{return(0,l3e.get)(t,e)}catch{return}}function kq(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 dst}from"@uniformdev/canvas";import{produce as fst}from"immer";function u3e(t,e){let n=fst(t.criteria,r=>c3e(r,e));return n&&{...t,criteria:n}}function c3e(t,e){if(!t)return t;for(let n=t.clauses.length-1;n>=0;n--){let r=t.clauses[n];if("clauses"in r){let o=c3e(r,e);if(o)t.clauses[n]=o;else if(t.clauses.splice(n,1),o===null&&t.op!=="|")return null}else if(r.rule===dst){let o=Array.isArray(r.value)?r.value:[r.value],i=o.indexOf(e);if(i!==-1)if(Array.isArray(r.value)&&r.value.length>1)o.splice(i,1);else if(r.op.startsWith("!"))t.clauses.splice(n,1);else return null}}if(t.clauses.length!==0)return t}function d3e(t,e){let n=AS();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 Du=(0,y3e.default)(),vst=!0,yst="Twee",Xd=class t{#e={};rootNodeId;#r={};#o={};#n;#i={};#t=d3e(yst,vst);#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 Mq(this.exportSubtree(e),e)}getNodeChildren(e){let n=this.#r[e];if(n)return n}getNodeProperty(e,n){return Rq(this.#o,[e,n])}getNodeProperties(e){return this.#o[e]??{}}insertNode({node:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o,overrideNodeId:i}){let a=i??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=n3e(n.value),i=l=>{l.partOfNestedPattern||(this.updateNode({nodeId:l.nodeId,updateComponent:c=>{delete c._pattern,delete c._patternError,delete c._overrides},updateMetadata:c=>{delete c.partOfPattern,delete c.partOfNestedPattern},doNotSetDirty:!0,ignoreOverrides:!0}),this.#n[l.nodeId]&&(this.#n=No(this.#n,c=>{delete c[l.nodeId]})))};this.visitNodeAndDescendants(e,i);let a=l=>{l.partOfNestedPattern&&this.updateNode({nodeId:l.nodeId,updateMetadata:c=>{c.partOfPattern=c.partOfNestedPattern,delete c.partOfNestedPattern},doNotSetDirty:!0,ignoreOverrides:!0})};this.visitNodeAndDescendants(e,a),r&&(this.updateNode({nodeId:this.rootNodeId,updateDataResources:l=>Object.entries(o??{}).filter(([c])=>!(c in(l??{}))).map(([c,d])=>{let{source:f,...m}=d;return{type:"set",name:c,value:m}})}),this.updateNode({nodeId:n.nodeId,updateComponent:l=>{delete l._patternDataResources},updateDataResources:"removeAll",doNotSetDirty:!0,ignoreOverrides:!0})),this.pristine=!1}convertToPattern({existingNodeId:e,pattern:n}){let r=this.#e[e],o=r?.parentId;if(!r)throw new Error(`Node ${e} does not exist`);let i=this.#b(n,e,!0);this.#e[i]=No(this.#e[i],l=>{l.parentId=o}),this.pristine=!1;let a=this.#e[i];this.#t.emit("nodeChanged",{changedNode:a,oldValue:r,type:"new"}),Object.entries(this.#r[i]??{}).forEach(([l,c])=>{this.#t.emit("childrenChanged",{newChildIds:c,parentId:i,slotOrBlockName:l,type:"slot"})})}copyNodeToClipboard(e){let n=this.exportSubtree(e,{keepPatternData:!1}),r=this.exportSubtree(e,{keepPatternData:!0}),o=[];L0(r,({node:l})=>{l._id&&o.push(l._id)}),L0(n,({node:l})=>{l._id&&(l._overrides&&delete l._overrides,"_name"in l&&delete l._name,"_slug"in l&&delete l._slug)});let i=this.#g(),a=Object.entries(i??{}).reduce((l,[c,d])=>(o.some(f=>c.includes(f))&&(l[c]=d),l),{});return{format:"uniform/copied-component-subtree-1.0",componentData:n,overrides:Object.keys(a).length?a:void 0,pasteAs:this.getNodeById(e)?.isBlock?"block":void 0}}async pasteNodeFromClipboard({parentNodeId:e,parentSlot:n,targetIndexInParent:r,clipboard:o,resolvePattern:i}){let a=Du(o),l=async d=>{d._pattern&&c.push((async()=>{let f=await i(d._pattern);if(!f){console.debug(`Pasted pattern ${d._pattern} not found, skipping`);return}let m=this.#x(f,d._id);Object.assign(d,m)})())},c=[];return L0(a.componentData,({node:d})=>{l(d)}),a.overrides&&Object.values(a.overrides).forEach(d=>{d.slots&&Object.values(d.slots).forEach(f=>{f.forEach(m=>{L0(m,({node:h})=>{l(h)})})})}),await Promise.all(c),this.#_(a.componentData,{parentId:e,parentName:n,parentType:o.pasteAs==="block"?"block":"slot",targetIndexInParent:r},a.overrides)}enableLocale(e){this.updateNode({nodeId:this.rootNodeId,updateComponent:n=>{let r=n;r._locales??=[];let o=[...new Set([...r._locales,...Array.isArray(e)?e:[e]])];r._locales=o}})}disableLocale(e){this.updateNode({nodeId:this.rootNodeId,updateComponent:o=>{let i=o;i._locales=i._locales?.filter(a=>a!==e)}});let n=[],r=o=>{this.getNodeProperty(o.nodeId,xT)?.value===e&&!o.partOfPattern&&n.push(o.nodeId);let a=this.getNodeProperties(o.nodeId);Object.entries(a).forEach(([c,d])=>{let f=d;c!==N0&&(o.partOfPattern?this.isPatternPropertyOverridden(o.nodeId,c,e)&&this.resetPatternPropertyOverride(o.nodeId,c,e):(f?.localesConditions?.[e]?.forEach((m,h)=>{this.updateNodeProperty({nodeId:o.nodeId,property:c,value:void 0,source:"other",locale:e,conditionIndex:h,conditionDefinition:null})}),f?.locales?.[e]!==void 0&&this.updateNodeProperty({nodeId:o.nodeId,property:c,value:void 0,source:"other",locale:e,conditionIndex:-1})))});let l=this.getNodeProperty(o.nodeId,N0);if(l?.value){let c=u3e(l.value,e);c===null?n.push(o.nodeId):this.updateNodeProperty({nodeId:o.nodeId,property:N0,value:c?()=>c:void 0,source:"other",locale:void 0,conditionIndex:-1})}};this.visitNodeAndDescendants(this.rootNodeId,r),n.forEach(o=>{this.deleteNode(o)})}copyValuesToLocalePlan({sourceLocale:e,destinationLocale:n,doNotCopyDescendants:r=!1,startingNodeId:o=this.rootNodeId,specificPropertyId:i}){let a=new Map,l=d=>{if(d.value.type===pst&&!d.partOfPattern){let m=this.getNodeChildren(d.nodeId)?.[Aq]??[],h=m.map(b=>this.getNodeProperty(b,xT)),g=h.findIndex(b=>b?.value===n);if(g>=0){let b=m[g];eg(a,b).actions.push({type:"deleteLocalizedNode"})}let y=h.findIndex(b=>b?.value===e);if(y>=0){let b=m[y];eg(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=LC(d.value._overridability,m)==="yes";if(!(g||y))return;if(m===N0){let N=a3e(h.value,e,n);N===null?eg(a,d.nodeId).actions.push({type:"deleteLocalizedNode"}):N&&eg(a,d.nodeId).actions.push({type:"updateVisibilityCriteria",targetValue:N})}let C=h.locales?.[e],w=h.locales?.[n];(!C||!w||!aa(C,w))&&(C!==void 0?eg(a,d.nodeId).actions.push({type:"copyPropertyValue",propertyId:m,sourceValue:C,targetValue:w,conditionIndex:-1}):w!==void 0&&eg(a,d.nodeId).actions.push({type:"deletePropertyValue",propertyId:m,sourceValue:C,targetValue:w,conditionIndex:-1}));let S=h.localesConditions?.[e],E=h.localesConditions?.[n];S?.forEach((N,M)=>{let O=h.localesConditions?.[n]?.[M];(!N||!O||!aa(N,O))&&eg(a,d.nodeId).actions.push({type:"copyPropertyValue",propertyId:m,sourceValue:N.value,targetValue:O,conditionIndex:M,conditionDefinition:N.when})});let _=S?.length??0,D=E?.length??0;if(_<D){let N=eg(a,d.nodeId);for(let M=_;M<D;M++)N.actions.push({type:"deletePropertyValue",propertyId:m,sourceValue:S?.[M],targetValue:E?.[M],conditionIndex:M})}})},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:xT,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:Aq,targetIndexInSlot:c.targetIndexInSlot});break}case"updateVisibilityCriteria":{this.updateNodeProperty({nodeId:a,property:N0,source:"other",locale:void 0,conditionIndex:-1,value:()=>c.targetValue});break}default:throw new Error(`Unhandled action type ${c.type}`)}console.timeEnd(i)}updateNode({nodeId:e,updateComponent:n,updateDataResources:r,updateMetadata:o,doNotSetDirty:i,ignoreOverrides:a}){let l=this.#e[e];if(!l)throw new Error(`Update target node ID ${e} did not exist!`);let c=No(l,h=>{if(o&&(o(h),h.nodeId=e,h.value=l.value,h.parentId=l.parentId),n){if(n(h.value),"slots"in h.value)throw new Error("Do not set `slots` on a Twee node, insert child nodes instead.");if("parameters"in h.value)throw new Error("Do not set `parameters` on a Twee node, use updateProperties option instead.")}if(r){let g=typeof r=="function"?r(h.value._dataResources):r;if(g==="removeAll")delete h.value._dataResources;else for(let y of g){let b=a?!1:h.nodeId!==this.rootNodeId&&h.value._pattern;switch(y.type){case"set":b&&(this.#n=No(this.#n,C=>{C[e]??={},C[e].dataResources??={},C[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,C=>{delete C[e]?.dataResources?.[y.name]})),delete h.value._dataResources?.[y.name];break;case"reset":{let C=this.#i[e]?.dataResources?.[y.name];h.value._dataResources&&(C&&Object.keys(C).length>0?h.value._dataResources[y.name]=C:delete h.value._dataResources[y.name]),this.#n=No(this.#n,w=>{delete w[e]?.dataResources?.[y.name]})}break;default:throw new Error(`Unhandled data resource action ${y?.type}`)}}}}),d=!!(l.partOfPattern&&!l.value._patternError),f=l.value.variant!==c.value.variant,m=l.value._overridability?.variants??!1;!a&&d&&f&&m&&(this.#n=No(this.#n,h=>{h[e]??={},h[e].variant=c.value.variant})),this.#e[e]=c,i||(this.pristine=!1),this.#t.emit("nodeChanged",{changedNode:c,type:"update",oldValue:l})}updateNodeProperty({nodeId:e,property:n,value:r,source:o,locale:i,type:a,doNotSetDirty:l=!1,ignoreOverrides:c=!1,conditionIndex:d,conditionDefinition:f}){let m=this.#e[e];if(!m)throw new Error(`Update target node ID ${e} did not exist!`);if(d<0&&f)throw new Error("Condition definition provided for non-conditional value");let h=!!(m.partOfPattern&&!m.value._patternError),g=[e,n],y=Rq(this.#o,g);if(!y&&r==null)return;let b=g3e({locale:i,property:y,conditionIndex:d}),C=i?y?.localesConditions?.[i]?.[d]:y?.conditions?.[d],w=typeof r=="function"?No(b,N=>r(N)):r,S=a??y?.type;if(!S)throw new Error(`Cannot add parameter ${n} to node ${e} without specifying a type`);let E={...y,type:S},_=!1;E=No(E,N=>{w===void 0&&d<0?_=!wM({locale:i,property:N,conditionIndex:d}):f===null&&d>=0?_=!wM({locale:i,property:N,conditionIndex:d}):Lq({locale:i,property:N,newPropertyValue:w,conditionIndex:d,conditionDefinition:f??C?.when??{clauses:[]}})}),_&&(E=void 0);let D=h&&LC(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,M=>{M[e]??={parameters:{},dataResources:{}},M[e].parameters[n]=y??null}))),!c&&D){let N=this.#n[e]?.parameters?.[n];this.#n=No(this.#n,M=>{let k=w==null||E===void 0?null:w,A=N??{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},F=No(A,H=>{f===null&&d>=0?wM({locale:i,property:H,conditionIndex:d}):Lq({locale:i,property:H,newPropertyValue:k,conditionIndex:d,conditionDefinition:f??C?.when??{clauses:[]}})});(0,M0.set)(M,`/${e}/parameters/${n}`,F)}),N||this.#t.emit("propertyOverrideCreated",{nodeId:e,property:n})}w===null?(0,M0.remove)(this.#o,g):(this.#o[e]??={},(0,M0.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||LC(i.value._overridability,n)==="no")return!1;let a=this.#n[e]?.parameters?.[n];return a?r?(o===void 0||o===!0)&&a.localesConditions?.[r]!==void 0||(o===void 0||o===!1)&&a.locales?.[r]!==void 0:(o===void 0||o===!0)&&a.conditions!==void 0||(o===void 0||o===!1)&&a.value!==void 0:!1}getPatternPropertyOverrideDefaultValue(e,n,r){let o=this.#i[e]?.parameters?.[n];if(!o)return{exists:!1};if(r&&o.locales?.[r])return{exists:!0,value:o,sourceLocale:r};if(o.value)return{exists:!0,value:o,sourceLocale:void 0};let i=Object.keys(o.locales??{})[0];return i?{exists:!0,value:o,sourceLocale:i}:{exists:!1}}resetPatternPropertyOverride(e,n,r){let o=[-1];this.#n=No(this.#n,a=>{let l=a[e]?.parameters?.[n];if(l)if(r){delete l.locales?.[r];let c=l.localesConditions?.[r];c&&(c.forEach((d,f)=>{o.push(f)}),delete l.localesConditions?.[r]),l.locales&&Object.keys(l.locales).length===0&&delete l.locales,l.localesConditions&&Object.keys(l.localesConditions).length===0&&delete l.localesConditions,Object.keys(l.locales??{}).length===0&&Object.keys(l.localesConditions??{}).length===0&&delete a[e]?.parameters?.[n]}else{let c=l.conditions;c&&c.forEach((d,f)=>{o.push(f)}),delete a[e].parameters?.[n]}});let i=this.getPatternPropertyOverrideDefaultValue(e,n,r);!i.exists||i.value===null?this.updateNodeProperty({nodeId:e,property:n,value:void 0,source:"reset",locale:r,ignoreOverrides:!0,doNotSetDirty:!1,conditionIndex:-1}):o.forEach(a=>{let l=g3e({locale:i.sourceLocale,property:i.value,conditionIndex:a,strict:!0});this.updateNodeProperty({nodeId:e,property:n,value:l===void 0?void 0:()=>l,source:"reset",locale:r,type:i.value?.type,ignoreOverrides:!0,doNotSetDirty:!1,conditionIndex:a,conditionDefinition:(r?i.value?.localesConditions?.[r]?.[a]?.when:i.value?.conditions?.[a]?.when)??null})}),this.#t.emit("propertyOverrideReset",{nodeId:e,property:n,usedPatternDefault:i!==void 0})}async duplicateNode(e,n){let r=this.getParentInfo(e);if(!r)throw new Error("Cannot duplicate root node or parentless block");let o=this.copyNodeToClipboard(e);return await this.pasteNodeFromClipboard({parentNodeId:r.parentId,parentSlot:r.parentName,resolvePattern:n,targetIndexInParent:r.targetIndexInParent+1,clipboard:o})}moveNode({movedNodeId:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o}){if(!this.#e[e])throw new Error(`Cannot move node ${e} - it does not exist`);let a=this.getParentInfo(e);if(!a)throw new Error("Cannot move root node");this.#r[a.parentId][a.parentName].splice(a.targetIndexInParent,1),this.#y(a.parentId,e),this.#f({nodeId:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o}),this.#m({nodeId:e,destinationParentId:n,destinationSlotName:r,sourceSlotName:a.parentName}),this.pristine=!1,this.#t.emit("childrenChanged",{parentId:n,slotOrBlockName:r,newChildIds:this.#r[n][r],type:"slot"}),this.#t.emit("childrenChanged",{parentId:a.parentId,slotOrBlockName:a.parentName,newChildIds:this.#r[a.parentId][a.parentName],type:"slot"})}deleteNode(e,n){let r=this.getParentInfo(e);if(!r&&!n)throw new Error("Cannot delete root node");r&&!n&&(this.#r[r.parentId][r.parentName].splice(r.targetIndexInParent,1),this.#r[r.parentId][r.parentName].length===0&&delete this.#r[r.parentId][r.parentName],this.selectedNodeId===e&&(this.selectedNodeId=r.parentId),this.#y(r.parentId,e),this.#t.emit("childrenChanged",{parentId:r.parentId,slotOrBlockName:r.parentName,newChildIds:this.#r[r.parentId][r.parentName]??[],type:"slot"})),delete this.#e[e],this.#t.emit("nodeDeleted",{deletedNodeId:e}),this.pristine=!1}#y(e,n){this.#n=No(this.#n,r=>{let o=r[e]?.slots;o&&Object.keys(o).forEach(i=>{o[i]=o[i].filter(({_id:a})=>a!==n),o[i].length===0&&delete o[i]})})}#g(){if(Object.keys(this.#n).length>0){let e=Du(this.#n);return Object.entries(e).forEach(([r,o])=>{let i=!0;if(!this.#e[r]){delete e[r];return}if(o.parameters){let a=Object.entries(o.parameters);a.forEach(([l,c])=>{let d=v3e(c);d?(o.parameters[l]=d,i=!1):delete o.parameters[l]}),a.length===0&&delete o.parameters}o.slots&&Object.entries(o.slots).forEach(([l,c])=>{if(c.length){let d=c.filter(f=>f._id).map(f=>this.exportSubtree(f._id));d?(o.slots[l]=d,i=!1):delete o.slots[l]}else delete o.slots[l]}),o.variant!==void 0&&(i=!1),o.dataResources&&Object.keys(o.dataResources).length>0&&(i=!1),i&&delete e[r]}),Object.keys(e).length===0&&(e=void 0),e}}exportSubtree(e,n){let{keepPatternData:r=!1}=n??{},o=this.#e[e];if(!o)throw new Error(`Node ${e} to export is not found`);let i=Du(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===$c&&Array.isArray(y.value)){let b=y.value,C=[];b.forEach(w=>{let S=this.exportSubtree(w,n);C.push(Mq(S,w))}),m[g]={value:C,type:$c},h=!0}else{let b=v3e(y);b&&(m[g]=b,h=!0)}}),h&&(c.value.parameters=m)}let f=this.#r[c.nodeId];!f||c.partOfPattern&&!r||Object.entries(f).forEach(([m,h])=>{h.forEach((g,y)=>{let b=this.#e[g];if(!b)throw new Error("Insanity detected.");let C=Du(b),w=c.value;w.slots=w.slots||{},(0,M0.set)(c,["value","slots",m,y.toString(10)],C.value),a.push(C)})})}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===EM&&(this.#n=No(this.#n,c=>{c[n]=c[n]??{},c[n].slots={[mst]: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!==$c)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=Du(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===$c&&Array.isArray(h.value)){let g=h.value,y=[];g.forEach(b=>{this.#l({nodeId:l.nodeId,componentTree:Oq(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:$c,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:$c,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 C={nodeId:b,value:h,partOfPattern:g,partOfNestedPattern:y,isBlock:a,propertyValueLocalizability:Object.entries(d??{}).reduce((w,[S,E])=>(w[S]=S6({definition:void 0,currentValue:E,lastUserChoice:void 0}),w),{})};return g&&(C.partOfPattern=g),this.#e[C.nodeId]=C,d&&Object.entries(d).forEach(([w,S])=>{let{connectedData:E,..._}=S,D=E?gst(hst(E)):S.value;if(S?.type===$c&&Array.isArray(D)){let N=D,M=[];N?.forEach(O=>{let k={...O,_id:i?Ki():O._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 M.push(k._id),this.#e[k._id]={nodeId:k._id,value:{type:$c},propertyValueLocalizability:{}},this.#l({componentTree:Oq(k),nodeId:k._id,allowReplacement:!0}),this.#e[k._id].isBlock=!0,this.#e[k._id].parentId=C.nodeId,this.#e[k._id]}),D=M}this.#o[C.nodeId]=this.#o[C.nodeId]??{},(0,M0.set)(this.#o,[C.nodeId,w],{..._,value:D})}),c&&Object.entries(c).forEach(([w,S])=>{let E=S.map(_=>{if(this.#e[_._id??""]?.isBlock)return;let D=this.#l({componentTree:_,partOfPattern:h.type===EM?void 0:g,partOfNestedPattern:h.type===EM?void 0:y,resetUids:i});return this.#e[D].parentId=C.nodeId,D});this.#r[C.nodeId]=this.#r[C.nodeId]??{},this.#r[C.nodeId][w]=E.filter(_=>_)}),C.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=Du(e);return this.#v({composition:r}),bM(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=Du(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!==$c)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===EM||!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=SM(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=Du(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:$c,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=Nq({beforeApplyParameterOverride(d,f,m){i[d._id]??={parameters:{},dataResources:{}},i[d._id].parameters[f]=Du(m)},beforeApplyDataResourceOverride(d,f,m){d._dataResources?.[f]?.ignorePatternParameterDefault||(i[d._id]??={parameters:{},dataResources:{}},i[d._id].dataResources[f]=Du(m))}}),l=Nq({beforeApplyParameterOverride(d,f,m,h){i[d._id]?.parameters[f]||(i[d._id]??={parameters:{},dataResources:{}},i[d._id].parameters[f]=Du(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]=Du(h))}});if(n){let{_overrides:d,...f}=e;L0(f,({node:m})=>{a.visitNode(m)})}let c=n?l:a;L0(e,({node:d})=>{c.visitNode(d)})});let o=Jwe({preserveOwnSlotSections:!0,preserveChildrenSlotSections:r});L0(e,i=>{o(i)})}visitNodeAndDescendants(e,n){let r=this.getNodeById(e);if(!r)throw new Error("Insanity detected.");n(r),this.visitDescendants(e,n)}visitDescendants(e,n){let r=this.#p(e,new Set);for(let o of r)n(...o)}async visitDescendantsAsync(e,n){let r=this.#p(e,new Set);for(let o of r)await n(...o)}*#p(e,n){let r=this.#e[e],o=this.#r[e]??{},i=Object.entries(this.#o[e]??{}).filter(([,a])=>a?.type===$c)??[];if(!r)throw new Error("Insanity detected.");n.add(e);for(let[a,l]of i){let c=l.value??[];for(let d=0;d<c.length;d++){let f=c[d],m=this.#e[f];if(m){if(n.has(f)){console.error(`Detected parent/child cycle in composition, ID ${f} exists more than once. The traversal of descendants will be aborted for the cycle subtree.`);continue}yield[m,r,a,d];for(let h of this.#p(f,n))yield h}}}for(let[a,l]of Object.entries(o))for(let c=0;c<l.length;c++){let d=l[c],f=this.#e[d];if(f){if(n.has(d)){console.error(`Detected parent/child cycle in composition, ID ${d} exists more than once. The traversal of descendants will be aborted for the cycle subtree.`);continue}yield[f,r,a,c];for(let m of this.#p(d,n))yield m}}}#m({nodeId:e,destinationParentId:n,destinationSlotName:r,sourceSlotName:o}){let i=r,a=o===p3e,l=i===p3e,c=o===m3e,d=i===m3e,f=i===Aq,m=this.getNodeProperty(e,f3e);l&&m&&this.updateNodeProperty({nodeId:e,property:f3e,value:void 0,source:"other",locale:void 0,conditionIndex:-1});let h=this.getNodeProperty(e,CT);!l&&h&&this.updateNodeProperty({nodeId:e,property:CT,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,CT)?.value?.name,setName:b=>this.updateNodeProperty({nodeId:e,property:CT,value:C=>C&&typeof C=="object"&&C!==null?{...C,name:b}:{name:b,crit:[]},source:"other",locale:void 0,conditionIndex:-1,type:CT})}),d&&!c&&this.#C({nodeId:e,siblingIds:this.getNodeChildren(n)?.[r]??[],selectExistingName:b=>this.getNodeProperty(b,h3e)?.value?.id,setName:b=>this.updateNodeProperty({nodeId:e,property:h3e,value:C=>C&&typeof C=="object"&&C!==null?{...C,id:b}:{id:b},source:"other",locale:void 0,conditionIndex:-1,type:"testVariant"})});let g=this.getNodeProperty(e,xT);!f&&g&&this.updateNodeProperty({nodeId:e,property:xT,value:void 0,source:"other",locale:void 0,conditionIndex:-1});let y=this.getNodeProperty(e,N0);(l||f||d)&&y&&this.updateNodeProperty({nodeId:e,property:N0,value:void 0,source:"other",locale:void 0,conditionIndex:-1})}#C({nodeId:e,siblingIds:n,selectExistingName:r,setName:o}){let i=r(e),a=m=>n.some(h=>h===e?!1:r(h)===m),l=i&&a(i);if(i&&!l)return;let c=this.getNodeById(e)?.value.type;if(!c)throw new Error("Insanity detected.");let d=0,f=kq(e,c,d);do f=kq(e,c,d),d++;while(a(f));o(f)}};function v3e(t){return t?.value===void 0&&!t?.conditions&&!t?.locales&&!t?.localesConditions?null:t}function eg(t,e){return bst(t,e,()=>({nodeId:e,actions:[]}))}function bst(t,e,n){return t.has(e)||t.set(e,n()),t.get(e)}import{CANVAS_DRAFT_STATE as NM,CanvasClient as wst}from"@uniformdev/canvas";import{produce as Est}from"immer";function b3e(t){return t.reduce((e,n)=>(e[n._id]={id:n._id,type:n.type,name:n._name},e),{})}import{CANVAS_DRAFT_STATE as w3e,CanvasClient as Pq,ContentClient as E3e,ProjectClient as T3e}from"@uniformdev/canvas";var x3e=q(zwe());var C3e=(0,x3e.default)(6),TM=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??C3e,bypassCache:e.bypassCache??!1}}async apiClient(e,n){return(await this.apiClientWithResponse(e,n)).body}async apiClientWithResponse(e,n){return this.options.limitPolicy(async()=>{let r=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`};this.options.bypassCache&&(r["x-bypass-cache"]="true");let{fetch:o,signal:i}=this.options,l=await xst(()=>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 TM(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 xst(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 DM=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 S3e={name:"@uniformdev/uniform-mcp",version:"20.37.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/mesh-sdk-react":"workspace:*","fast-json-patch":"^3.1.1",immer:"10.1.1",zod:"3.23.8"},files:["/dist"],publishConfig:{access:"public"},devDependencies:{"@uniformdev/design-system":"workspace:*","@uniformdev/files":"workspace:*","@uniformdev/mesh-edgehancer-sdk":"workspace:*","@uniformdev/richtext":"workspace:*",vitest:"3.2.4"}};function ST(){return new DM({...pt,apiHost:pt.aiApiHost,telemetryContext:{userAgent:`uniform-mcp/${S3e.version}`,uniformClient:"mcp"}})}function _3e(){let t,e,n;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(pt).get({projectId:pt.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let o=await new Pq(pt).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 Pq(pt).getCompositionList({limit:1e3,pattern:!0,patternType:"component",resolveData:!1,skipPatternResolution:!0,skipOverridesResolution:!0,state:w3e});return n=b3e(o.compositions.map(i=>i.composition)),n},resolvePatternData:async r=>(await new Pq(pt).getCompositionById({compositionId:r,state:w3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>ST(),getDimensionGuidance:async()=>{}}}function D3e(){let t,e;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(pt).get({projectId:pt.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let r=await new E3e(pt).getContentTypes({limit:1e3});return e=Object.fromEntries(r.contentTypes.map(o=>[o.id,r3e(o)])),e},fetchPatterns:async()=>({}),resolvePatternData:async n=>{let o=(await new E3e(pt).getEntries({entryIDs:[n],skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.entries[0];return bT(o).composition},getToolClient:async()=>ST(),getDimensionGuidance:async()=>{}}}import{LocaleClient as Sst}from"@uniformdev/canvas";async function $M(t){if(!t||t.length===0)return;let r=(await new Sst(pt).get()).results.map(i=>i.locale),o=t.filter(i=>!r.includes(i));if(o.length>0)throw new Error(`The following locales are not registered in your project: ${o.join(", ")}`)}async function LM({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new wst(pt),l,c,d=t==="update"?e:void 0,f={success:!0,actionsTaken:[]};if(t==="duplicate"){if(c=await a.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!c)throw new Error("Composition not found");let m=crypto.randomUUID(),h=e3e(c.composition,m),g=Est(h,y=>{y._name=`${y._name} (copy)`,y._slug&&(y._slug=`${y._slug}-copy${y._slug?.endsWith("/")?"/":""}`)});l=new Xd(g),e=m}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)l=new Xd({_id:e,_name:n.name,type:n.type,_overridability:{hideLockedParameters:!0}});else{let m={composition:{_id:e,_name:n.name,type:n.type,_pattern:o},projectId:pt.projectId,state:NM,pattern:!1};await a.updateComposition(m),d=e}}if(d){if(c=await a.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!c)throw new Error("Composition not found");l=new Xd(c.composition)}if(t==="delete"&&await a.removeComposition({compositionId:e}),l){await $M(n?.localeUpdates?.enableLocales),f=await hM({twee:l,descriptionUpdate:void 0,slugUpdate:void 0,nameUpdate:n?.name,propertyUpdates:n?.parameterUpdates??[],dataResourceUpdates:n?.dataResourceUpdates??[],localeUpdates:n?.localeUpdates,slotUpdates:n??{},currentEditorLocale:void 0,referenceData:_3e(),isEditingPattern:r});let m=l.exportTree(),h=l.exportMetadata(),g={composition:m,projectId:pt.projectId,state:NM,pattern:r,releaseId:c?.releaseId,editionId:c?.editionId,...h};await a.updateComposition(g)}return{content:[{type:"text",text:JSON.stringify({...f,editUrl:i(e)},null,2)}]}}function MM(t){return`${pt.baseWebUrl}/dashboards/canvas/edit/${t}`}async function OM(t,e){return await ST().invoke("createFilterExpression",{...t,entityType:e})}var Tst={action:wT.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:wT.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:wT.string().uuid().describe("Composition pattern ID to create the composition from. Omit when not creating, or when creating a composition without a composition pattern.").optional(),instructions:jne.describe("Modification instructions for the composition. Omit for delete and duplicate.").optional()};function $3e(t){t.tool("compositionAction","Creates, updates, or deletes a Uniform Composition",Tst,async e=>await LM({...e,isPattern:!1,getEditUrl:MM,patternId:e.patternId}))}import*as Jr from"zod";var _st=Jr.object({field:Jr.string(),operator:Jr.string(),value:Jr.string().or(Jr.array(Jr.string()))}),Dst=Jr.object({filter:Jr.array(_st),error:Jr.string().describe("An error message if the filter expression could not be created, otherwise an empty string"),sort:Jr.array(Jr.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:Jr.number().min(1).max(100),offset:Jr.number().min(0),keyword:Jr.string(),locale:Jr.string().optional()}),Mp=Jr.object({searchExpressionPrompt:Jr.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??C3e,bypassCache:e.bypassCache??!1}}async apiClient(e,n){return(await this.apiClientWithResponse(e,n)).body}async apiClientWithResponse(e,n){return this.options.limitPolicy(async()=>{let r=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`};this.options.bypassCache&&(r["x-bypass-cache"]="true");let{fetch:o,signal:i}=this.options,l=await xst(()=>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 TM(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 xst(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 DM=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 S3e={name:"@uniformdev/uniform-mcp",version:"20.38.1",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/mesh-sdk-react":"workspace:*","fast-json-patch":"^3.1.1",immer:"10.1.1",zod:"3.23.8"},files:["/dist"],publishConfig:{access:"public"},devDependencies:{"@uniformdev/design-system":"workspace:*","@uniformdev/files":"workspace:*","@uniformdev/mesh-edgehancer-sdk":"workspace:*","@uniformdev/richtext":"workspace:*",vitest:"3.2.4"}};function ST(){return new DM({...pt,apiHost:pt.aiApiHost,telemetryContext:{userAgent:`uniform-mcp/${S3e.version}`,uniformClient:"mcp"}})}function _3e(){let t,e,n;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(pt).get({projectId:pt.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let o=await new Pq(pt).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 Pq(pt).getCompositionList({limit:1e3,pattern:!0,patternType:"component",resolveData:!1,skipPatternResolution:!0,skipOverridesResolution:!0,state:w3e});return n=b3e(o.compositions.map(i=>i.composition)),n},resolvePatternData:async r=>(await new Pq(pt).getCompositionById({compositionId:r,state:w3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>ST(),getDimensionGuidance:async()=>{}}}function D3e(){let t,e;return{fetchProjectGuidance:async()=>(t!==void 0||(t=(await new T3e(pt).get({projectId:pt.projectId}))?.guidance),t),fetchDefinitions:async()=>{if(e!==void 0)return e;let r=await new E3e(pt).getContentTypes({limit:1e3});return e=Object.fromEntries(r.contentTypes.map(o=>[o.id,r3e(o)])),e},fetchPatterns:async()=>({}),resolvePatternData:async n=>{let o=(await new E3e(pt).getEntries({entryIDs:[n],skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.entries[0];return bT(o).composition},getToolClient:async()=>ST(),getDimensionGuidance:async()=>{}}}import{LocaleClient as Sst}from"@uniformdev/canvas";async function $M(t){if(!t||t.length===0)return;let r=(await new Sst(pt).get()).results.map(i=>i.locale),o=t.filter(i=>!r.includes(i));if(o.length>0)throw new Error(`The following locales are not registered in your project: ${o.join(", ")}`)}async function LM({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new wst(pt),l,c,d=t==="update"?e:void 0,f={success:!0,actionsTaken:[]};if(t==="duplicate"){if(c=await a.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!c)throw new Error("Composition not found");let m=crypto.randomUUID(),h=e3e(c.composition,m),g=Est(h,y=>{y._name=`${y._name} (copy)`,y._slug&&(y._slug=`${y._slug}-copy${y._slug?.endsWith("/")?"/":""}`)});l=new Xd(g),e=m}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)l=new Xd({_id:e,_name:n.name,type:n.type,_overridability:{hideLockedParameters:!0}});else{let m={composition:{_id:e,_name:n.name,type:n.type,_pattern:o},projectId:pt.projectId,state:NM,pattern:!1};await a.updateComposition(m),d=e}}if(d){if(c=await a.getCompositionById({compositionId:e,state:NM,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!c)throw new Error("Composition not found");l=new Xd(c.composition)}if(t==="delete"&&await a.removeComposition({compositionId:e}),l){await $M(n?.localeUpdates?.enableLocales),f=await hM({twee:l,descriptionUpdate:void 0,slugUpdate:void 0,nameUpdate:n?.name,propertyUpdates:n?.parameterUpdates??[],dataResourceUpdates:n?.dataResourceUpdates??[],localeUpdates:n?.localeUpdates,slotUpdates:n??{},currentEditorLocale:void 0,referenceData:_3e(),isEditingPattern:r});let m=l.exportTree(),h=l.exportMetadata(),g={composition:m,projectId:pt.projectId,state:NM,pattern:r,releaseId:c?.releaseId,editionId:c?.editionId,...h};await a.updateComposition(g)}return{content:[{type:"text",text:JSON.stringify({...f,editUrl:i(e)},null,2)}]}}function MM(t){return`${pt.baseWebUrl}/dashboards/canvas/edit/${t}`}async function OM(t,e){return await ST().invoke("createFilterExpression",{...t,entityType:e})}var Tst={action:wT.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:wT.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:wT.string().uuid().describe("Composition pattern ID to create the composition from. Omit when not creating, or when creating a composition without a composition pattern.").optional(),instructions:jne.describe("Modification instructions for the composition. Omit for delete and duplicate.").optional()};function $3e(t){t.tool("compositionAction","Creates, updates, or deletes a Uniform Composition",Tst,async e=>await LM({...e,isPattern:!1,getEditUrl:MM,patternId:e.patternId}))}import*as Jr from"zod";var _st=Jr.object({field:Jr.string(),operator:Jr.string(),value:Jr.string().or(Jr.array(Jr.string()))}),Dst=Jr.object({filter:Jr.array(_st),error:Jr.string().describe("An error message if the filter expression could not be created, otherwise an empty string"),sort:Jr.array(Jr.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:Jr.number().min(1).max(100),offset:Jr.number().min(0),keyword:Jr.string(),locale:Jr.string().optional()}),Mp=Jr.object({searchExpressionPrompt:Jr.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:Jr.string().describe("The username of the current user. If you do not know the username, use an empty string"),locale:Jr.string().describe("The current locale. If there is no current locale, use an empty string")}),hYt={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:Mp.extend({entityType:Jr.enum(["composition","entry","componentPattern","compositionPattern","entryPattern"]).describe("The entity type we are creating a filter for")}),outputSchema:Dst,runsAt:"server",timeout:10,callable:!0};import*as zEe from"zod";var Op=class extends Error{},RM=class extends Op{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},kM=class extends Op{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},AM=class extends Op{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Nc=class extends Op{},MC=class extends Op{constructor(e){super(`Invalid unit ${e}`)}},Yo=class extends Op{},Lc=class extends Op{constructor(){super("Zone is an abstract class")}};var Ue="numeric",Mc="short",zl="long",tg={year:Ue,month:Ue,day:Ue},ET={year:Ue,month:Mc,day:Ue},Iq={year:Ue,month:Mc,day:Ue,weekday:Mc},TT={year:Ue,month:zl,day:Ue},_T={year:Ue,month:zl,day:Ue,weekday:zl},DT={hour:Ue,minute:Ue},$T={hour:Ue,minute:Ue,second:Ue},NT={hour:Ue,minute:Ue,second:Ue,timeZoneName:Mc},LT={hour:Ue,minute:Ue,second:Ue,timeZoneName:zl},MT={hour:Ue,minute:Ue,hourCycle:"h23"},OT={hour:Ue,minute:Ue,second:Ue,hourCycle:"h23"},RT={hour:Ue,minute:Ue,second:Ue,hourCycle:"h23",timeZoneName:Mc},kT={hour:Ue,minute:Ue,second:Ue,hourCycle:"h23",timeZoneName:zl},AT={year:Ue,month:Ue,day:Ue,hour:Ue,minute:Ue},PT={year:Ue,month:Ue,day:Ue,hour:Ue,minute:Ue,second:Ue},IT={year:Ue,month:Mc,day:Ue,hour:Ue,minute:Ue},FT={year:Ue,month:Mc,day:Ue,hour:Ue,minute:Ue,second:Ue},Fq={year:Ue,month:Mc,day:Ue,weekday:Mc,hour:Ue,minute:Ue},BT={year:Ue,month:zl,day:Ue,hour:Ue,minute:Ue,timeZoneName:Mc},zT={year:Ue,month:zl,day:Ue,hour:Ue,minute:Ue,second:Ue,timeZoneName:Mc},VT={year:Ue,month:zl,day:Ue,weekday:zl,hour:Ue,minute:Ue,timeZoneName:zl},UT={year:Ue,month:zl,day:Ue,weekday:zl,hour:Ue,minute:Ue,second:Ue,timeZoneName:zl};var al=class{get type(){throw new Lc}get name(){throw new Lc}get ianaName(){return this.name}get isUniversal(){throw new Lc}offsetName(e,n){throw new Lc}formatOffset(e,n){throw new Lc}offset(e){throw new Lc}equals(e){throw new Lc}get isValid(){throw new Lc}};var Bq=null,ng=class t extends al{static get instance(){return Bq===null&&(Bq=new t),Bq}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return IM(e,n,r)}formatOffset(e,n){return rg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var BM={};function $st(t){return BM[t]||(BM[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),BM[t]}var Nst={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Lst(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 Mst(t,e){let n=t.formatToParts(e),r=[];for(let o=0;o<n.length;o++){let{type:i,value:a}=n[o],l=Nst[i];i==="era"?r[l]=a:Ot(l)||(r[l]=parseInt(a,10))}return r}var FM={},ja=class t extends al{static create(e){return FM[e]||(FM[e]=new t(e)),FM[e]}static resetCache(){FM={},BM={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return IM(e,n,r,this.name)}formatOffset(e,n){return rg(this.offset(e),n)}offset(e){let n=new Date(e);if(isNaN(n))return NaN;let r=$st(this.name),[o,i,a,l,c,d,f]=r.formatToParts?Mst(r,n):Lst(r,n);l==="BC"&&(o=-Math.abs(o)+1);let h=OC({year:o,month:i,day:a,hour:c===24?0:c,minute:d,second:f,millisecond:0}),g=+n,y=g%1e3;return g-=y>=0?y:1e3+y,(h-g)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}};var N3e={};function Ost(t,e={}){let n=JSON.stringify([t,e]),r=N3e[n];return r||(r=new Intl.ListFormat(t,e),N3e[n]=r),r}var zq={};function Vq(t,e={}){let n=JSON.stringify([t,e]),r=zq[n];return r||(r=new Intl.DateTimeFormat(t,e),zq[n]=r),r}var Uq={};function Rst(t,e={}){let n=JSON.stringify([t,e]),r=Uq[n];return r||(r=new Intl.NumberFormat(t,e),Uq[n]=r),r}var jq={};function kst(t,e={}){let{base:n,...r}=e,o=JSON.stringify([t,r]),i=jq[o];return i||(i=new Intl.RelativeTimeFormat(t,e),jq[o]=i),i}var jT=null;function Ast(){return jT||(jT=new Intl.DateTimeFormat().resolvedOptions().locale,jT)}var L3e={};function Pst(t){let e=L3e[t];if(!e){let n=new Intl.Locale(t);e="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,L3e[t]=e}return e}function Ist(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=Vq(t).resolvedOptions(),o=t}catch{let c=t.substring(0,n);r=Vq(c).resolvedOptions(),o=c}let{numberingSystem:i,calendar:a}=r;return[o,i,a]}}function Fst(t,e,n){return(n||e)&&(t.includes("-u-")||(t+="-u"),n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Bst(t){let e=[];for(let n=1;n<=12;n++){let r=gn.utc(2009,n,1);e.push(t(r))}return e}function zst(t){let e=[];for(let n=1;n<=7;n++){let r=gn.utc(2016,11,13+n);e.push(t(r))}return e}function zM(t,e,n,r){let o=t.listingMode();return o==="error"?null:o==="en"?n(e):r(e)}function Vst(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 Hq=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=Rst(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):RC(e,3);return bo(n,this.padTo)}}},Wq=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&&ja.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=Vq(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()}},Kq=class{constructor(e,n,r){this.opts={style:"long",...r},!n&&VM()&&(this.rtf=kst(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):M3e(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}},Ust={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":Ast()),c=n||Wn.defaultNumberingSystem,d=r||Wn.defaultOutputCalendar,f=HT(o)||Wn.defaultWeekSettings;return new t(l,c,d,f,a)}static resetCache(){jT=null,zq={},Uq={},jq={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r,weekSettings:o}={}){return t.create(e,n,r,o)}constructor(e,n,r,o,i){let[a,l,c]=Ist(e);this.locale=a,this.numberingSystem=n||l||null,this.outputCalendar=r||c||null,this.weekSettings=o,this.intl=Fst(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=Vst(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,HT(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1){return zM(this,e,Gq,()=>{let r=n?{month:e,day:"numeric"}:{month:e},o=n?"format":"standalone";return this.monthsCache[o][e]||(this.monthsCache[o][e]=Bst(i=>this.extract(i,r,"month"))),this.monthsCache[o][e]})}weekdays(e,n=!1){return zM(this,e,Yq,()=>{let r=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},o=n?"format":"standalone";return this.weekdaysCache[o][e]||(this.weekdaysCache[o][e]=zst(i=>this.extract(i,r,"weekday"))),this.weekdaysCache[o][e]})}meridiems(){return zM(this,void 0,()=>Zq,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gn.utc(2016,11,13,9),gn.utc(2016,11,13,19)].map(n=>this.extract(n,e,"dayperiod"))}return this.meridiemCache})}eras(e){return zM(this,e,qq,()=>{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 Hq(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Wq(e,this.intl,n)}relFormatter(e={}){return new Kq(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Ost(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:UM()?Pst(this.locale):Ust}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}};var Jq=null,Gi=class t extends al{static get utcInstance(){return Jq===null&&(Jq=new t(0)),Jq}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new t(O0(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${rg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${rg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return rg(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 kC=class extends al{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Oc(t,e){let n;if(Ot(t)||t===null)return e;if(t instanceof al)return t;if(O3e(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?ng.instance:r==="utc"||r==="gmt"?Gi.utcInstance:Gi.parseSpecifier(r)||ja.create(t)}else return Jd(t)?Gi.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new kC(t)}var R3e=()=>Date.now(),k3e="system",A3e=null,P3e=null,I3e=null,F3e=60,B3e,z3e=null,Wn=class{static get now(){return R3e}static set now(e){R3e=e}static set defaultZone(e){k3e=e}static get defaultZone(){return Oc(k3e,ng.instance)}static get defaultLocale(){return A3e}static set defaultLocale(e){A3e=e}static get defaultNumberingSystem(){return P3e}static set defaultNumberingSystem(e){P3e=e}static get defaultOutputCalendar(){return I3e}static set defaultOutputCalendar(e){I3e=e}static get defaultWeekSettings(){return z3e}static set defaultWeekSettings(e){z3e=HT(e)}static get twoDigitCutoffYear(){return F3e}static set twoDigitCutoffYear(e){F3e=e%100}static get throwOnInvalid(){return B3e}static set throwOnInvalid(e){B3e=e}static resetCaches(){tr.resetCache(),ja.resetCache()}};var Yi=class{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var V3e=[0,31,59,90,120,151,181,212,243,273,304,334],U3e=[0,31,60,91,121,152,182,213,244,274,305,335];function $u(t,e){return new Yi("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function jM(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 j3e(t,e,n){return n+(k0(t)?U3e:V3e)[e-1]}function H3e(t,e){let n=k0(t)?U3e:V3e,r=n.findIndex(i=>i<e),o=e-n[r];return{month:r+1,day:o}}function HM(t,e){return(t-e+7)%7+1}function WT(t,e=4,n=1){let{year:r,month:o,day:i}=t,a=j3e(r,o,i),l=HM(jM(r,o,i),n),c=Math.floor((a-l+14-e)/7),d;return c<1?(d=r-1,c=R0(d,e,n)):c>R0(r,e,n)?(d=r+1,c=1):d=r,{weekYear:d,weekNumber:c,weekday:l,...GT(t)}}function Qq(t,e=4,n=1){let{weekYear:r,weekNumber:o,weekday:i}=t,a=HM(jM(r,1,e),n),l=og(r),c=o*7+i-a-7+e,d;c<1?(d=r-1,c+=og(d)):c>l?(d=r+1,c-=og(r)):d=r;let{month:f,day:m}=H3e(d,c);return{year:d,month:f,day:m,...GT(t)}}function WM(t){let{year:e,month:n,day:r}=t,o=j3e(e,n,r);return{year:e,ordinal:o,...GT(t)}}function eX(t){let{year:e,ordinal:n}=t,{month:r,day:o}=H3e(e,n);return{year:e,month:r,day:o,...GT(t)}}function tX(t,e){if(!Ot(t.localWeekday)||!Ot(t.localWeekNumber)||!Ot(t.localWeekYear)){if(!Ot(t.weekday)||!Ot(t.weekNumber)||!Ot(t.weekYear))throw new Nc("Cannot mix locale-based week fields with ISO-based week fields");return Ot(t.localWeekday)||(t.weekday=t.localWeekday),Ot(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),Ot(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function W3e(t,e=4,n=1){let r=KT(t.weekYear),o=Vl(t.weekNumber,1,R0(t.weekYear,e,n)),i=Vl(t.weekday,1,7);return r?o?i?!1:$u("weekday",t.weekday):$u("week",t.weekNumber):$u("weekYear",t.weekYear)}function K3e(t){let e=KT(t.year),n=Vl(t.ordinal,1,og(t.year));return e?n?!1:$u("ordinal",t.ordinal):$u("year",t.year)}function nX(t){let e=KT(t.year),n=Vl(t.month,1,12),r=Vl(t.day,1,AC(t.year,t.month));return e?n?r?!1:$u("day",t.day):$u("month",t.month):$u("year",t.year)}function rX(t){let{hour:e,minute:n,second:r,millisecond:o}=t,i=Vl(e,0,23)||e===24&&n===0&&r===0&&o===0,a=Vl(n,0,59),l=Vl(r,0,59),c=Vl(o,0,999);return i?a?l?c?!1:$u("millisecond",o):$u("second",r):$u("minute",n):$u("hour",e)}function Ot(t){return typeof t>"u"}function Jd(t){return typeof t=="number"}function KT(t){return typeof t=="number"&&t%1===0}function O3e(t){return typeof t=="string"}function Y3e(t){return Object.prototype.toString.call(t)==="[object Date]"}function VM(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function UM(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Z3e(t){return Array.isArray(t)?t:[t]}function oX(t,e,n){if(t.length!==0)return t.reduce((r,o)=>{let i=[e(o),o];return r&&n(r[0],i[0])===r[0]?r:i},null)[1]}function q3e(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function ig(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function HT(t){if(t==null)return null;if(typeof t!="object")throw new Yo("Week settings must be an object");if(!Vl(t.firstDay,1,7)||!Vl(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!Vl(e,1,7)))throw new Yo("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function Vl(t,e,n){return KT(t)&&t>=e&&t<=n}function jst(t,e){return t-e*Math.floor(t/e)}function bo(t,e=2){let n=t<0,r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Rp(t){if(!(Ot(t)||t===null||t===""))return parseInt(t,10)}function ag(t){if(!(Ot(t)||t===null||t===""))return parseFloat(t)}function YT(t){if(!(Ot(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function RC(t,e,n=!1){let r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function k0(t){return t%4===0&&(t%100!==0||t%400===0)}function og(t){return k0(t)?366:365}function AC(t,e){let n=jst(e-1,12)+1,r=t+(e-n)/12;return n===2?k0(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function OC(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}function G3e(t,e,n){return-HM(jM(t,1,e),n)+e-1}function R0(t,e=4,n=1){let r=G3e(t,e,n),o=G3e(t+1,e,n);return(og(t)-r+o)/7}function ZT(t){return t>99?t:t>Wn.twoDigitCutoffYear?1900+t:2e3+t}function IM(t,e,n,r=null){let o=new Date(t),i={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(i.timeZone=r);let a={timeZoneName:e,...i},l=new Intl.DateTimeFormat(n,a).formatToParts(o).find(c=>c.type.toLowerCase()==="timezonename");return l?l.value:null}function O0(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);let r=parseInt(e,10)||0,o=n<0||Object.is(n,-0)?-r:r;return n*60+o}function iX(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Yo(`Invalid unit value ${t}`);return e}function PC(t,e){let n={};for(let r in t)if(ig(t,r)){let o=t[r];if(o==null)continue;n[e(r)]=iX(o)}return n}function rg(t,e){let n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),o=t>=0?"+":"-";switch(e){case"short":return`${o}${bo(n,2)}:${bo(r,2)}`;case"narrow":return`${o}${n}${r>0?`:${r}`:""}`;case"techie":return`${o}${bo(n,2)}${bo(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function GT(t){return q3e(t,["hour","minute","second","millisecond"])}var Hst=["January","February","March","April","May","June","July","August","September","October","November","December"],aX=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Wst=["J","F","M","A","M","J","J","A","S","O","N","D"];function Gq(t){switch(t){case"narrow":return[...Wst];case"short":return[...aX];case"long":return[...Hst];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 sX=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],lX=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Kst=["M","T","W","T","F","S","S"];function Yq(t){switch(t){case"narrow":return[...Kst];case"short":return[...lX];case"long":return[...sX];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Zq=["AM","PM"],Gst=["Before Christ","Anno Domini"],Yst=["BC","AD"],Zst=["B","A"];function qq(t){switch(t){case"narrow":return[...Zst];case"short":return[...Yst];case"long":return[...Gst];default:return null}}function X3e(t){return Zq[t.hour<12?0:1]}function J3e(t,e){return Yq(e)[t.weekday-1]}function Q3e(t,e){return Gq(e)[t.month-1]}function eEe(t,e){return qq(e)[t.year<0?0:1]}function M3e(t,e,n="always",r=!1){let o={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},i=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&i){let m=t==="days";switch(e){case 1:return m?"tomorrow":`next ${o[t][0]}`;case-1:return m?"yesterday":`last ${o[t][0]}`;case 0:return m?"today":`this ${o[t][0]}`;default:}}let a=Object.is(e,-0)||e<0,l=Math.abs(e),c=l===1,d=o[t],f=r?c?d[1]:d[2]||d[1]:c?o[t][0]:t;return a?`${l} ${f} ago`:`in ${l} ${f}`}function tEe(t,e){let n="";for(let r of t)r.literal?n+=r.val:n+=e(r.val);return n}var qst={D:tg,DD:ET,DDD:TT,DDDD:_T,t:DT,tt:$T,ttt:NT,tttt:LT,T:MT,TT:OT,TTT:RT,TTTT:kT,f:AT,ff:IT,fff:BT,ffff:VT,F:PT,FF:FT,FFF:zT,FFFF:UT},Zi=class t{static create(e,n={}){return new t(e,n)}static parseFormat(e){let n=null,r="",o=!1,i=[];for(let a=0;a<e.length;a++){let l=e.charAt(a);l==="'"?(r.length>0&&i.push({literal:o||/^\s+$/.test(r),val:r}),n=null,r="",o=!o):o||l===n?r+=l:(r.length>0&&i.push({literal:/^\s+$/.test(r),val:r}),r=l,n=l)}return r.length>0&&i.push({literal:o||/^\s+$/.test(r),val:r}),i}static macroTokenToFormatOpts(e){return qst[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?X3e(e):i({hour:"numeric",hourCycle:"h12"},"dayperiod"),c=(g,y)=>r?Q3e(e,g):i(y?{month:g}:{month:g,day:"numeric"},"month"),d=(g,y)=>r?J3e(e,g):i(y?{weekday:g}:{weekday:g,month:"long",day:"numeric"},"weekday"),f=g=>{let y=t.macroTokenToFormatOpts(g);return y?this.formatWithSystemDefault(e,y):g},m=g=>r?eEe(e,g):i({era:g},"era"),h=g=>{switch(g){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return l();case"d":return o?i({day:"numeric"},"day"):this.num(e.day);case"dd":return o?i({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return d("short",!0);case"cccc":return d("long",!0);case"ccccc":return d("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return d("short",!1);case"EEEE":return d("long",!1);case"EEEEE":return d("narrow",!1);case"L":return o?i({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return o?i({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return o?i({month:"numeric"},"month"):this.num(e.month);case"MM":return o?i({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return o?i({year:"numeric"},"year"):this.num(e.year);case"yy":return o?i({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return o?i({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return o?i({year:"numeric"},"year"):this.num(e.year,6);case"G":return m("short");case"GG":return m("long");case"GGGGG":return m("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return f(g)}};return tEe(t.parseFormat(n),h)}formatDurationFromString(e,n){let r=c=>{switch(c[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},o=c=>d=>{let f=r(d);return f?this.num(c.get(f),d.length):d},i=t.parseFormat(n),a=i.reduce((c,{literal:d,val:f})=>d?c:c.concat(f),[]),l=e.shiftTo(...a.map(r).filter(c=>c));return tEe(i,o(l))}};var rEe=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function FC(...t){let e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function BC(...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 zC(t,...e){if(t==null)return[null,null];for(let[n,r]of e){let o=n.exec(t);if(o)return r(o)}return[null,null]}function oEe(...t){return(e,n)=>{let r={},o;for(o=0;o<t.length;o++)r[t[o]]=Rp(e[n+o]);return[r,null,n+o]}}var iEe=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Xst=`(?:${iEe.source}?(?:\\[(${rEe.source})\\])?)?`,uX=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,aEe=RegExp(`${uX.source}${Xst}`),cX=RegExp(`(?:T${aEe.source})?`),Jst=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Qst=/(\d{4})-?W(\d\d)(?:-?(\d))?/,elt=/(\d{4})-?(\d{3})/,tlt=oEe("weekYear","weekNumber","weekDay"),nlt=oEe("year","ordinal"),rlt=/(\d{4})-(\d\d)-(\d\d)/,sEe=RegExp(`${uX.source} ?(?:${iEe.source}|(${rEe.source}))?`),olt=RegExp(`(?: ${sEe.source})?`);function IC(t,e,n){let r=t[e];return Ot(r)?n:Rp(r)}function ilt(t,e){return[{year:IC(t,e),month:IC(t,e+1,1),day:IC(t,e+2,1)},null,e+3]}function VC(t,e){return[{hours:IC(t,e,0),minutes:IC(t,e+1,0),seconds:IC(t,e+2,0),milliseconds:YT(t[e+3])},null,e+4]}function qT(t,e){let n=!t[e]&&!t[e+1],r=O0(t[e+1],t[e+2]),o=n?null:Gi.instance(r);return[{},o,e+3]}function XT(t,e){let n=t[e]?ja.create(t[e]):null;return[{},n,e+1]}var alt=RegExp(`^T?${uX.source}$`),slt=/^-?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 llt(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(ag(n)),months:h(ag(r)),weeks:h(ag(o)),days:h(ag(i)),hours:h(ag(a)),minutes:h(ag(l)),seconds:h(ag(c),c==="-0"),milliseconds:h(YT(d),m)}]}var ult={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 dX(t,e,n,r,o,i,a){let l={year:e.length===2?ZT(Rp(e)):Rp(e),month:aX.indexOf(n)+1,day:Rp(r),hour:Rp(o),minute:Rp(i)};return a&&(l.second=Rp(a)),t&&(l.weekday=t.length>3?sX.indexOf(t)+1:lX.indexOf(t)+1),l}var clt=/^(?:(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 dlt(t){let[,e,n,r,o,i,a,l,c,d,f,m]=t,h=dX(e,o,r,n,i,a,l),g;return c?g=ult[c]:d?g=0:g=O0(f,m),[h,new Gi(g)]}function flt(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var plt=/^(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$/,mlt=/^(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$/,hlt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function nEe(t){let[,e,n,r,o,i,a,l]=t;return[dX(e,o,r,n,i,a,l),Gi.utcInstance]}function glt(t){let[,e,n,r,o,i,a,l]=t;return[dX(e,l,n,r,o,i,a),Gi.utcInstance]}var vlt=FC(Jst,cX),ylt=FC(Qst,cX),blt=FC(elt,cX),xlt=FC(aEe),lEe=BC(ilt,VC,qT,XT),Clt=BC(tlt,VC,qT,XT),Slt=BC(nlt,VC,qT,XT),wlt=BC(VC,qT,XT);function uEe(t){return zC(t,[vlt,lEe],[ylt,Clt],[blt,Slt],[xlt,wlt])}function cEe(t){return zC(flt(t),[clt,dlt])}function dEe(t){return zC(t,[plt,nEe],[mlt,nEe],[hlt,glt])}function fEe(t){return zC(t,[slt,llt])}var Elt=BC(VC);function pEe(t){return zC(t,[alt,Elt])}var Tlt=FC(rlt,olt),_lt=FC(sEe),Dlt=BC(VC,qT,XT);function mEe(t){return zC(t,[Tlt,lEe],[_lt,Dlt])}var hEe="Invalid Duration",vEe={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},$lt={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...vEe},Nu=146097/400,UC=146097/4800,Nlt={years:{quarters:4,months:12,weeks:Nu/7,days:Nu,hours:Nu*24,minutes:Nu*24*60,seconds:Nu*24*60*60,milliseconds:Nu*24*60*60*1e3},quarters:{months:3,weeks:Nu/28,days:Nu/4,hours:Nu*24/4,minutes:Nu*24*60/4,seconds:Nu*24*60*60/4,milliseconds:Nu*24*60*60*1e3/4},months:{weeks:UC/7,days:UC,hours:UC*24,minutes:UC*24*60,seconds:UC*24*60*60,milliseconds:UC*24*60*60*1e3},...vEe},A0=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Llt=A0.slice(0).reverse();function sg(t,e,n=!1){let r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new xo(r)}function yEe(t,e){let n=e.milliseconds??0;for(let r of Llt.slice(1))e[r]&&(n+=e[r]*t[r].milliseconds);return n}function gEe(t,e){let n=yEe(t,e)<0?-1:1;A0.reduceRight((r,o)=>{if(Ot(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),A0.reduce((r,o)=>{if(Ot(e[o]))return r;if(r){let i=e[r]%1;e[r]-=i,e[o]+=i*t[r][o]}return o},null)}function Mlt(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?Nlt:$lt;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:PC(e,t.normalizeUnit),loc:tr.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(e){if(Jd(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new Yo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){let[r]=fEe(e);return r?t.fromObject(r,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){let[r]=pEe(e);return r?t.fromObject(r,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Yo("need to specify a reason the Duration is invalid");let r=e instanceof Yi?e:new Yi(e,n);if(Wn.throwOnInvalid)throw new AM(r);return new t({invalid:r})}static normalizeUnit(e){let n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new MC(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){let r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Zi.create(this.loc,r).formatDurationFromString(this,e):hEe}toHuman(e={}){if(!this.isValid)return hEe;let n=A0.map(r=>{let o=this.values[r];return Ot(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+=RC(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let n=this.toMillis();return n<0||n>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},gn.fromMillis(n,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?yEe(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let n=t.fromDurationLike(e),r={};for(let o of A0)(ig(n.values,o)||ig(this.values,o))&&(r[o]=n.get(o)+this.get(o));return sg(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]=iX(e(this.values[r],r));return sg(this,{values:n},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let n={...this.values,...PC(e,t.normalizeUnit)};return sg(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 sg(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return gEe(this.matrix,e),sg(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Mlt(this.normalize().shiftToAll().toObject());return sg(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 A0)if(e.indexOf(a)>=0){i=a;let l=0;for(let d in r)l+=this.matrix[d][a]*r[d],r[d]=0;Jd(o[a])&&(l+=o[a]);let c=Math.trunc(l);n[a]=c,r[a]=(l*1e3-c*1e3)/1e3}else Jd(o[a])&&(r[a]=o[a]);for(let a in r)r[a]!==0&&(n[i]+=a===i?r[a]:r[a]/this.matrix[i][a]);return gEe(this.matrix,n),sg(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 sg(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 A0)if(!n(this.values[r],e.values[r]))return!1;return!0}};var jC="Invalid Interval";function Olt(t,e){return!t||!t.isValid?kp.invalid("missing or invalid start"):!e||!e.isValid?kp.invalid("missing or invalid end"):e<t?kp.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 kp=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Yo("need to specify a reason the Interval is invalid");let r=e instanceof Yi?e:new Yi(e,n);if(Wn.throwOnInvalid)throw new kM(r);return new t({invalid:r})}static fromDateTimes(e,n){let r=HC(e),o=HC(n),i=Olt(r,o);return i??new t({start:r,end:o})}static after(e,n){let r=xo.fromDurationLike(n),o=HC(e);return t.fromDateTimes(o,o.plus(r))}static before(e,n){let r=xo.fromDurationLike(n),o=HC(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(HC).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()})`:jC}[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=tg,n={}){return this.isValid?Zi.create(this.s.loc.clone(n),e).formatInterval(this):jC}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:jC}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:jC}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:jC}toFormat(e,{separator:n=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:jC}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 Ap=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 ja.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:VM(),localeWeek:UM()}}};function bEe(t,e){let n=o=>o.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(xo.fromMillis(r).as("days"))}function Rlt(t,e,n){let r=[["years",(c,d)=>d.year-c.year],["quarters",(c,d)=>d.quarter-c.quarter+(d.year-c.year)*4],["months",(c,d)=>d.month-c.month+(d.year-c.year)*12],["weeks",(c,d)=>{let f=bEe(c,d);return(f-f%7)/7}],["days",bEe]],o={},i=t,a,l;for(let[c,d]of r)n.indexOf(c)>=0&&(a=c,o[c]=d(t,e),l=i.plus(o),l>e?(o[c]--,t=i.plus(o),t>e&&(l=t,o[c]--,t=i.plus(o))):t=l);return[t,o,l,a]}function xEe(t,e,n,r){let[o,i,a,l]=Rlt(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 fX={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},CEe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},klt=fX.hanidec.replace(/[\[|\]]/g,"").split("");function SEe(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(t[n].search(fX.hanidec)!==-1)e+=klt.indexOf(t[n]);else for(let o in CEe){let[i,a]=CEe[o];r>=i&&r<=a&&(e+=r-i)}}return parseInt(e,10)}else return e}function Lu({numberingSystem:t},e=""){return new RegExp(`${fX[t||"latn"]}${e}`)}var Alt="missing Intl.DateTimeFormat.formatToParts support";function Kn(t,e=n=>n){return{regex:t,deser:([n])=>e(SEe(n))}}var Plt="\xA0",TEe=`[ ${Plt}]`,_Ee=new RegExp(TEe,"g");function Ilt(t){return t.replace(/\./g,"\\.?").replace(_Ee,TEe)}function wEe(t){return t.replace(/\./g,"").replace(_Ee," ").toLowerCase()}function Rc(t,e){return t===null?null:{regex:RegExp(t.map(Ilt).join("|")),deser:([n])=>t.findIndex(r=>wEe(n)===wEe(r))+e}}function EEe(t,e){return{regex:t,deser:([,n,r])=>O0(n,r),groups:e}}function KM(t){return{regex:t,deser:([e])=>e}}function Flt(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Blt(t,e){let n=Lu(e),r=Lu(e,"{2}"),o=Lu(e,"{3}"),i=Lu(e,"{4}"),a=Lu(e,"{6}"),l=Lu(e,"{1,2}"),c=Lu(e,"{1,3}"),d=Lu(e,"{1,6}"),f=Lu(e,"{1,9}"),m=Lu(e,"{2,4}"),h=Lu(e,"{4,6}"),g=C=>({regex:RegExp(Flt(C.val)),deser:([w])=>w,literal:!0}),b=(C=>{if(t.literal)return g(C);switch(C.val){case"G":return Rc(e.eras("short"),0);case"GG":return Rc(e.eras("long"),0);case"y":return Kn(d);case"yy":return Kn(m,ZT);case"yyyy":return Kn(i);case"yyyyy":return Kn(h);case"yyyyyy":return Kn(a);case"M":return Kn(l);case"MM":return Kn(r);case"MMM":return Rc(e.months("short",!0),1);case"MMMM":return Rc(e.months("long",!0),1);case"L":return Kn(l);case"LL":return Kn(r);case"LLL":return Rc(e.months("short",!1),1);case"LLLL":return Rc(e.months("long",!1),1);case"d":return Kn(l);case"dd":return Kn(r);case"o":return Kn(c);case"ooo":return Kn(o);case"HH":return Kn(r);case"H":return Kn(l);case"hh":return Kn(r);case"h":return Kn(l);case"mm":return Kn(r);case"m":return Kn(l);case"q":return Kn(l);case"qq":return Kn(r);case"s":return Kn(l);case"ss":return Kn(r);case"S":return Kn(c);case"SSS":return Kn(o);case"u":return KM(f);case"uu":return KM(l);case"uuu":return Kn(n);case"a":return Rc(e.meridiems(),0);case"kkkk":return Kn(i);case"kk":return Kn(m,ZT);case"W":return Kn(l);case"WW":return Kn(r);case"E":case"c":return Kn(n);case"EEE":return Rc(e.weekdays("short",!1),1);case"EEEE":return Rc(e.weekdays("long",!1),1);case"ccc":return Rc(e.weekdays("short",!0),1);case"cccc":return Rc(e.weekdays("long",!0),1);case"Z":case"ZZ":return EEe(new RegExp(`([+-]${l.source})(?::(${r.source}))?`),2);case"ZZZ":return EEe(new RegExp(`([+-]${l.source})(${r.source})?`),2);case"z":return KM(/[a-z_+-/]{1,256}?/i);case" ":return KM(/[^\S\n\r]/);default:return g(C)}})(t)||{invalidReason:Alt};return b.token=t,b}var zlt={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function Vlt(t,e,n){let{type:r,value:o}=t;if(r==="literal"){let c=/^\s+$/.test(o);return{literal:!c,val:c?" ":o}}let i=e[r],a=r;r==="hour"&&(e.hour12!=null?a=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?a="hour12":a="hour24":a=n.hour12?"hour12":"hour24");let l=zlt[a];if(typeof l=="object"&&(l=l[i]),l)return{literal:!1,val:l}}function Ult(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function jlt(t,e,n){let r=t.match(e);if(r){let o={},i=1;for(let a in n)if(ig(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 Hlt(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 Ot(t.z)||(n=ja.create(t.z)),Ot(t.Z)||(n||(n=new Gi(t.Z)),r=t.Z),Ot(t.q)||(t.M=(t.q-1)*3+1),Ot(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),Ot(t.u)||(t.S=YT(t.u)),[Object.keys(t).reduce((i,a)=>{let l=e(a);return l&&(i[l]=t[a]),i},{}),n,r]}var pX=null;function Wlt(){return pX||(pX=gn.fromMillis(1555555555555)),pX}function Klt(t,e){if(t.literal)return t;let n=Zi.macroTokenToFormatOpts(t.val),r=gX(n,e);return r==null||r.includes(void 0)?t:r}function mX(t,e){return Array.prototype.concat(...t.map(n=>Klt(n,e)))}function hX(t,e,n){let r=mX(Zi.parseFormat(n),t),o=r.map(a=>Blt(a,t)),i=o.find(a=>a.invalidReason);if(i)return{input:e,tokens:r,invalidReason:i.invalidReason};{let[a,l]=Ult(o),c=RegExp(a,"i"),[d,f]=jlt(e,c,l),[m,h,g]=f?Hlt(f):[null,null,void 0];if(ig(f,"a")&&ig(f,"H"))throw new Nc("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:c,rawMatches:d,matches:f,result:m,zone:h,specificOffset:g}}}function DEe(t,e,n){let{result:r,zone:o,specificOffset:i,invalidReason:a}=hX(t,e,n);return[r,o,i,a]}function gX(t,e){if(!t)return null;let r=Zi.create(e,t).dtFormatter(Wlt()),o=r.formatToParts(),i=r.resolvedOptions();return o.map(a=>Vlt(a,t,i))}var vX="Invalid DateTime",$Ee=864e13;function GM(t){return new Yi("unsupported zone",`the zone "${t.name}" is not supported`)}function yX(t){return t.weekData===null&&(t.weekData=WT(t.c)),t.weekData}function bX(t){return t.localWeekData===null&&(t.localWeekData=WT(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function P0(t,e){let n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new gn({...n,...e,old:n})}function AEe(t,e,n){let r=t-e*60*1e3,o=n.offset(r);if(e===o)return[r,e];r-=(o-e)*60*1e3;let i=n.offset(r);return o===i?[r,o]:[t-Math.min(o,i)*60*1e3,Math.max(o,i)]}function YM(t,e){t+=e*60*1e3;let n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function qM(t,e,n){return AEe(OC(t),e,n)}function NEe(t,e){let n=t.o,r=t.c.year+Math.trunc(e.years),o=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,i={...t.c,year:r,month:o,day:Math.min(t.c.day,AC(r,o))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},a=xo.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),l=OC(i),[c,d]=AEe(l,n,t.zone);return a!==0&&(c+=a,d=t.zone.offset(c)),{ts:c,o:d}}function JT(t,e,n,r,o,i){let{setZone:a,zone:l}=n;if(t&&Object.keys(t).length!==0||e){let c=e||l,d=gn.fromObject(t,{...n,zone:c,specificOffset:i});return a?d:d.setZone(l)}else return gn.invalid(new Yi("unparsable",`the input "${o}" can't be parsed as ${r}`))}function ZM(t,e,n=!0){return t.isValid?Zi.create(tr.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function xX(t,e){let n=t.c.year>9999||t.c.year<0,r="";return n&&t.c.year>=0&&(r+="+"),r+=bo(t.c.year,n?6:4),e?(r+="-",r+=bo(t.c.month),r+="-",r+=bo(t.c.day)):(r+=bo(t.c.month),r+=bo(t.c.day)),r}function LEe(t,e,n,r,o,i){let a=bo(t.c.hour);return e?(a+=":",a+=bo(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(a+=":")):a+=bo(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(a+=bo(t.c.second),(t.c.millisecond!==0||!r)&&(a+=".",a+=bo(t.c.millisecond,3))),o&&(t.isOffsetFixed&&t.offset===0&&!i?a+="Z":t.o<0?(a+="-",a+=bo(Math.trunc(-t.o/60)),a+=":",a+=bo(Math.trunc(-t.o%60))):(a+="+",a+=bo(Math.trunc(t.o/60)),a+=":",a+=bo(Math.trunc(t.o%60)))),i&&(a+="["+t.zone.ianaName+"]"),a}var PEe={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Glt={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Ylt={ordinal:1,hour:0,minute:0,second:0,millisecond:0},IEe=["year","month","day","hour","minute","second","millisecond"],Zlt=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],qlt=["year","ordinal","hour","minute","second","millisecond"];function Xlt(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 MC(t);return e}function MEe(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Xlt(t)}}function OEe(t,e){let n=Oc(e.zone,Wn.defaultZone),r=tr.fromObject(e),o=Wn.now(),i,a;if(Ot(t.year))i=o;else{for(let d of IEe)Ot(t[d])&&(t[d]=PEe[d]);let l=nX(t)||rX(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 REe(t,e,n){let r=Ot(n.round)?!0:n.round,o=(a,l)=>(a=RC(a,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(a,l)),i=a=>n.calendary?e.hasSame(t,a)?0:e.startOf(a).diff(t.startOf(a),a).get(a):e.diff(t,a).get(a);if(n.unit)return o(i(n.unit),n.unit);for(let a of n.units){let l=i(a);if(Math.abs(l)>=1)return o(l,a)}return o(t>e?-0:0,n.units[n.units.length-1])}function kEe(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}var gn=class t{constructor(e){let n=e.zone||Wn.defaultZone,r=e.invalid||(Number.isNaN(e.ts)?new Yi("invalid input"):null)||(n.isValid?null:GM(n));this.ts=Ot(e.ts)?Wn.now():e.ts;let o=null,i=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[o,i]=[e.old.c,e.old.o];else{let l=n.offset(this.ts);o=YM(this.ts,l),r=Number.isNaN(o.year)?new Yi("invalid input"):null,o=r?null:o,i=r?null:l}this._zone=n,this.loc=e.loc||tr.create(),this.invalid=r,this.weekData=null,this.localWeekData=null,this.c=o,this.o=i,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,n]=kEe(arguments),[r,o,i,a,l,c,d]=n;return OEe({year:r,month:o,day:i,hour:a,minute:l,second:c,millisecond:d},e)}static utc(){let[e,n]=kEe(arguments),[r,o,i,a,l,c,d]=n;return e.zone=Gi.utcInstance,OEe({year:r,month:o,day:i,hour:a,minute:l,second:c,millisecond:d},e)}static fromJSDate(e,n={}){let r=Y3e(e)?e.valueOf():NaN;if(Number.isNaN(r))return t.invalid("invalid input");let o=Oc(n.zone,Wn.defaultZone);return o.isValid?new t({ts:r,zone:o,loc:tr.fromObject(n)}):t.invalid(GM(o))}static fromMillis(e,n={}){if(Jd(e))return e<-$Ee||e>$Ee?t.invalid("Timestamp out of range"):new t({ts:e,zone: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(Jd(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(GM(r));let o=tr.fromObject(n),i=PC(e,MEe),{minDaysInFirstWeek:a,startOfWeek:l}=tX(i,o),c=Wn.now(),d=Ot(n.specificOffset)?r.offset(c):n.specificOffset,f=!Ot(i.ordinal),m=!Ot(i.year),h=!Ot(i.month)||!Ot(i.day),g=m||h,y=i.weekYear||i.weekNumber;if((g||f)&&y)throw new Nc("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&f)throw new Nc("Can't mix ordinal dates with month/day");let b=y||i.weekday&&!g,C,w,S=YM(c,d);b?(C=Zlt,w=Glt,S=WT(S,a,l)):f?(C=qlt,w=Ylt,S=WM(S)):(C=IEe,w=PEe);let E=!1;for(let A of C){let F=i[A];Ot(F)?E?i[A]=w[A]:i[A]=S[A]:E=!0}let _=b?W3e(i,a,l):f?K3e(i):nX(i),D=_||rX(i);if(D)return t.invalid(D);let N=b?Qq(i,a,l):f?eX(i):i,[M,O]=qM(N,d,r),k=new t({ts:M,zone:r,o:O,loc:o});return i.weekday&&g&&e.weekday!==k.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${i.weekday} and a date of ${k.toISO()}`):k}static fromISO(e,n={}){let[r,o]=uEe(e);return JT(r,o,n,"ISO 8601",e)}static fromRFC2822(e,n={}){let[r,o]=cEe(e);return JT(r,o,n,"RFC 2822",e)}static fromHTTP(e,n={}){let[r,o]=dEe(e);return JT(r,o,n,"HTTP",n)}static fromFormat(e,n,r={}){if(Ot(e)||Ot(n))throw new Yo("fromFormat requires an input string and a format");let{locale:o=null,numberingSystem:i=null}=r,a=tr.fromOpts({locale:o,numberingSystem:i,defaultToEN:!0}),[l,c,d,f]=DEe(a,e,n);return f?t.invalid(f):JT(l,c,r,`format ${n}`,e,d)}static fromString(e,n,r={}){return t.fromFormat(e,n,r)}static fromSQL(e,n={}){let[r,o]=mEe(e);return JT(r,o,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Yo("need to specify a reason the DateTime is invalid");let r=e instanceof Yi?e:new Yi(e,n);if(Wn.throwOnInvalid)throw new RM(r);return new t({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,n={}){let r=gX(e,tr.fromObject(n));return r?r.map(o=>o?o.val:null).join(""):null}static expandFormat(e,n={}){return mX(Zi.parseFormat(e),tr.fromObject(n)).map(o=>o.val).join("")}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?yX(this).weekYear:NaN}get weekNumber(){return this.isValid?yX(this).weekNumber:NaN}get weekday(){return this.isValid?yX(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?bX(this).weekday:NaN}get localWeekNumber(){return this.isValid?bX(this).weekNumber:NaN}get localWeekYear(){return this.isValid?bX(this).weekYear:NaN}get ordinal(){return this.isValid?WM(this.c).ordinal:NaN}get monthShort(){return this.isValid?Ap.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Ap.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Ap.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Ap.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,n=6e4,r=OC(this.c),o=this.zone.offset(r-e),i=this.zone.offset(r+e),a=this.zone.offset(r-o*n),l=this.zone.offset(r-i*n);if(a===l)return[this];let c=r-a*n,d=r-l*n,f=YM(c,a),m=YM(d,l);return f.hour===m.hour&&f.minute===m.minute&&f.second===m.second&&f.millisecond===m.millisecond?[P0(this,{ts:c}),P0(this,{ts:d})]:[this]}get isInLeapYear(){return k0(this.year)}get daysInMonth(){return AC(this.year,this.month)}get daysInYear(){return this.isValid?og(this.year):NaN}get weeksInWeekYear(){return this.isValid?R0(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?R0(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:n,numberingSystem:r,calendar:o}=Zi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:o}}toUTC(e=0,n={}){return this.setZone(Gi.instance(e),n)}toLocal(){return this.setZone(Wn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=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 P0(this,{ts:o,zone:e})}else return t.invalid(GM(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){let o=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return P0(this,{loc:o})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let n=PC(e,MEe),{minDaysInFirstWeek:r,startOfWeek:o}=tX(n,this.loc),i=!Ot(n.weekYear)||!Ot(n.weekNumber)||!Ot(n.weekday),a=!Ot(n.ordinal),l=!Ot(n.year),c=!Ot(n.month)||!Ot(n.day),d=l||c,f=n.weekYear||n.weekNumber;if((d||a)&&f)throw new Nc("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new Nc("Can't mix ordinal dates with month/day");let m;i?m=Qq({...WT(this.c,r,o),...n},r,o):Ot(n.ordinal)?(m={...this.toObject(),...n},Ot(n.day)&&(m.day=Math.min(AC(m.year,m.month),m.day))):m=eX({...WM(this.c),...n});let[h,g]=qM(m,this.o,this.zone);return P0(this,{ts:h,o:g})}plus(e){if(!this.isValid)return this;let n=xo.fromDurationLike(e);return P0(this,NEe(this,n))}minus(e){if(!this.isValid)return this;let n=xo.fromDurationLike(e).negate();return P0(this,NEe(this,n))}startOf(e,{useLocaleWeeks:n=!1}={}){if(!this.isValid)return this;let r={},o=xo.normalizeUnit(e);switch(o){case"years":r.month=1;case"quarters":case"months":r.day=1;case"weeks":case"days":r.hour=0;case"hours":r.minute=0;case"minutes":r.second=0;case"seconds":r.millisecond=0;break;case"milliseconds":break}if(o==="weeks")if(n){let i=this.loc.getStartOfWeek(),{weekday:a}=this;a<i&&(r.weekNumber=this.weekNumber-1),r.weekday=i}else r.weekday=1;if(o==="quarters"){let i=Math.ceil(this.month/3);r.month=(i-1)*3+1}return this.set(r)}endOf(e,n){return this.isValid?this.plus({[e]:1}).startOf(e,n).minus(1):this}toFormat(e,n={}){return this.isValid?Zi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):vX}toLocaleString(e=tg,n={}){return this.isValid?Zi.create(this.loc.clone(n),e).formatDateTime(this):vX}toLocaleParts(e={}){return this.isValid?Zi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:o=!0,extendedZone:i=!1}={}){if(!this.isValid)return null;let a=e==="extended",l=xX(this,a);return l+="T",l+=LEe(this,a,n,r,o,i),l}toISODate({format:e="extended"}={}){return this.isValid?xX(this,e==="extended"):null}toISOWeekDate(){return ZM(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:o=!1,extendedZone:i=!1,format:a="extended"}={}){return this.isValid?(o?"T":"")+LEe(this,a==="extended",n,e,r,i):null}toRFC2822(){return ZM(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return ZM(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?xX(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let o="HH:mm:ss.SSS";return(n||e)&&(r&&(o+=" "),n?o+="z":e&&(o+="ZZ")),ZM(this,o,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():vX}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return xo.invalid("created by diffing an invalid DateTime");let o={locale:this.locale,numberingSystem:this.numberingSystem,...r},i=Z3e(n).map(xo.normalizeUnit),a=e.valueOf()>this.valueOf(),l=a?this:e,c=a?e:this,d=xEe(l,c,i,o);return a?d.negate():d}diffNow(e="milliseconds",n={}){return this.diff(t.now(),e,n)}until(e){return this.isValid?kp.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),REe(n,this.plus(r),{...e,numeric:"always",units:o,unit:i})}toRelativeCalendar(e={}){return this.isValid?REe(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 oX(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Yo("max requires all arguments be DateTimes");return oX(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 hX(a,e,n)}static fromStringExplain(e,n,r={}){return t.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return tg}static get DATE_MED(){return ET}static get DATE_MED_WITH_WEEKDAY(){return Iq}static get DATE_FULL(){return TT}static get DATE_HUGE(){return _T}static get TIME_SIMPLE(){return DT}static get TIME_WITH_SECONDS(){return $T}static get TIME_WITH_SHORT_OFFSET(){return NT}static get TIME_WITH_LONG_OFFSET(){return LT}static get TIME_24_SIMPLE(){return MT}static get TIME_24_WITH_SECONDS(){return OT}static get TIME_24_WITH_SHORT_OFFSET(){return RT}static get TIME_24_WITH_LONG_OFFSET(){return kT}static get DATETIME_SHORT(){return AT}static get DATETIME_SHORT_WITH_SECONDS(){return PT}static get DATETIME_MED(){return IT}static get DATETIME_MED_WITH_SECONDS(){return FT}static get DATETIME_MED_WITH_WEEKDAY(){return Fq}static get DATETIME_FULL(){return BT}static get DATETIME_FULL_WITH_SECONDS(){return zT}static get DATETIME_HUGE(){return VT}static get DATETIME_HUGE_WITH_SECONDS(){return UT}};function HC(t){if(gn.isDateTime(t))return t;if(t&&t.valueOf&&Jd(t.valueOf()))return gn.fromJSDate(t);if(t&&typeof t=="object")return gn.fromObject(t);throw new Yo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}function XM(t){return t.reduce((e,{field:n,operator:r,value:o})=>{if(!n||!r)return e;if(n==="updated_at"&&(n="modified"),n==="created_at"&&(n="created"),r==="def")return{...e,[`${n}[def]`]:"true"};if(r==="ndef")return{...e,[`${n}[def]`]:"false"};if(r==="checked")return{...e,[`${n}[eq]`]:"true"};if(r==="nchecked")return{...e,[`${n}[eq]`]:"false"};if(typeof o>"u"||o===null||o===""||Array.isArray(o)&&o.length<1)return e;if(r==="between"||r==="sys-date-between")if(Array.isArray(o)&&o.length===2){if(r==="between")return{...e,[`${n}[gte]`]:o[0],[`${n}[lte]`]:o[1]};{let i=gn.fromISO(o[0],{zone:"system"}).setZone("utc").toISO(),a=gn.fromISO(o[1],{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i&&a?{...e,[`${n}[gte]`]:i,[`${n}[lt]`]:a}:e}}else return e;if(r==="sys-date-eq")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).setZone("utc").toISO(),a=gn.fromISO(o,{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i&&a?{...e,[`${n}[gte]`]:i,[`${n}[lt]`]:a}:e}else return e;if(r==="sys-date-gt")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i?{...e,[`${n}[gte]`]:i}:e}else return e;if(r==="sys-date-gte")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).setZone("utc").toISO();return i?{...e,[`${n}[gte]`]:i}:e}else return e;if(r==="sys-date-lt")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).setZone("utc").toISO();return i?{...e,[`${n}[lt]`]:i}:e}else return e;if(r==="sys-date-lte")if(typeof o=="string"){let i=gn.fromISO(o,{zone:"system"}).plus({day:1}).setZone("utc").toISO();return i?{...e,[`${n}[lt]`]:i}:e}else return e;if(r==="starts"&&typeof o=="string")return{...e,[`${n}[starts]`]:o.replaceAll(/[^a-zA-Z0-9_.\s-]/g,"").toLowerCase()};if(n==="workflowStageId"){let i=t.some(a=>a.field==="workflowId");if(r==="eq"||r==="neq"){let a=[];return Array.isArray(o)?a=o.map(c=>c.split("_")[1]):a=o.split("_"),{...e,...i?{}:{"workflowId[eq]":a[0]},[`${n}[${r}]`]:a[1]}}if(Array.isArray(o)){let a=o.map(d=>{let f=d.split("_")[0],m=d.split("_")[1];return{workflowId:f,workflowStage:m}}),l=a.map(d=>d.workflowId).join(","),c=a.map(d=>d.workflowStage).join(",");return{...e,...i?{}:{[`workflowId[${r}]`]:l},[`${n}[${r}]`]:c}}}return{...e,[`${n}[${r}]`]:Array.isArray(o)?o.join(","):o}},{})}import{CANVAS_DRAFT_STATE as FEe,CanvasClient as BEe}from"@uniformdev/canvas";async function JM({instanceType:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new BEe(pt),a=await OM({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?XM(m):void 0,orderBy:Array.isArray(f)?f:f?[f]:void 0,locale:r,skipPatternResolution:!0,state:FEe})).compositions.map(y=>({id:y.composition._id,name:y.composition._name,componentType:y.composition.type,editUrl:o(y.composition._id)}));return{content:[{type:"text",text:JSON.stringify({results:g,criteria:a},null,2)}]}}async function QM({id:t}){let n=await new BEe(pt).getCompositionById({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,compositionId:t,state:FEe});return{content:[{type:"text",text:JSON.stringify(n,null,2)}]}}var Jlt={id:zEe.string()};function VEe(t){t.tool("compositionList","Lists available Uniform compositions",Mp.shape,async e=>await JM({...e,instanceType:"composition",getEditUrl:MM})),t.tool("compositionGet","Gets the full contents of a Uniform composition",Jlt,async e=>await QM(e))}import{autoFixParameterGroups as HEe,ContentClient as Qlt}from"@uniformdev/canvas";import*as tO from"zod";import*as lg from"zod";var UEe=lg.object({name:lg.string().describe('Title-cased display name of the component. Ex: "Hero"'),id:lg.string().describe("Public ID of the content type, the camelCase version of name, using only alphanumeric characters"),description:lg.string().describe("Describe the purpose of the content type in 1-2 sentences."),fields:lg.array(m6).describe("The fields of the content type. The key is the publicId of the field.").optional()});function jEe(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 eO(t){return`${pt.baseWebUrl}/dashboards/canvas/content-types/${t}`}var eut={action:tO.enum(["create","update","delete"]).describe("The action to perform"),publicId:tO.string().describe("Public ID of the component, the camelCase version of name, using only alphanumeric characters"),contentType:UEe.describe("Full content type definition to create. Omit for update or delete.").optional(),patches:f6.describe("JSON patch to apply to the existing component definition. Omit for create or delete.").optional()};function WEe(t){t.tool("contentTypeAction","Creates, updates, or deletes a Uniform Content Type definition",eut,async({publicId:e,action:n,contentType:r,patches:o})=>{let i=new Qlt(pt),a=!1;if(n==="create"){if(!r)throw new Error("Content type definition is required for create");let l=jEe(r);l.fields&&(a=HEe(l.fields),Uy(l.fields)),await i.upsertContentType({contentType:l})}if(n==="update"){if(!o)throw new Error("Patches are required for update");let c=(await i.getContentTypes()).contentTypes.find(m=>m.id===e);if(!c)throw new Error(`Content Type with public ID ${e} does not exist, try creating it instead`);let d=c.fields?.filter(m=>m.type==="richText").map(m=>m.id),f=d6(c,o);if(f.fields){a=HEe(f.fields);let m=f.fields?.filter(h=>h.type==="richText").map(h=>h.id).filter(h=>!d?.includes(h));Uy(f.fields,m)}await i.upsertContentType({contentType:f})}return n==="delete"&&await i.deleteContentType({contentTypeId:e}),{content:[{type:"text",text:JSON.stringify({success:!0,editUrl:eO(e),warning:a?"Issues with field group order were fixed. Ensure definition data is re-fetched before any future updates.":void 0},null,2)}]}})}import{ContentClient as KEe}from"@uniformdev/canvas";import*as GEe from"zod";var tut={id:GEe.string()};function YEe(t){t.tool("contentTypeList","Lists all Uniform Content Type definitions",async()=>{let r=(await new KEe(pt).getContentTypes()).contentTypes.map(o=>({id:o.id,name:o.name,description:o.description,editUrl:eO(o.id)}));return{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}),t.tool("contentTypeGet","Gets a Uniform Content Type definition details (fields, etc.)",tut,async({id:e})=>{let o=(await new KEe(pt).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 ZEe(t){t.tool("createUuid","Creates a new random UUID",async()=>({content:[{type:"text",text:crypto.randomUUID()}]}))}import*as QT from"zod";import{CANVAS_DRAFT_STATE as nO,ContentClient as nut,convertEntryToPutEntry as rut,getEffectivePropertyValue as out}from"@uniformdev/canvas";async function iut(t,e,n){let o=(await e.fetchDefinitions())[t.entry.type];if(!o)throw new Error("insanity");let i=o3e(o),a;i.entryName&&(a=t.entry._overrides?.[t.entry._id].parameters?.[i.entryName]??t.entry.fields?.[i.entryName]);let l=out({conditionIndex:-1,locale:void 0,greedyLocaleMatching:!0,property:a}),c=Uwe({value:l,isNew:n,contentType:i});t.entry._name=c}async function rO({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new nut(pt),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:nO,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=bT({...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:nO,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:nO,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0})).entries[0],!c)throw new Error("Entry not found");let h=bT(c);l=new Xd(h.composition)}t==="delete"&&await a.deleteEntry({entryId:e});let m=D3e();if(l){t!=="duplicate"&&(await $M(n?.localeUpdates?.enableLocales),f=await hM({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}));let h=l.exportTree(),g=l.exportMetadata(),y=rut(i3e(h,c??{projectId:pt.projectId,pattern:r},g,nO,c?.releaseId,c?.editionId));r||await iut(y,m,t==="create"),await a.upsertEntry(y)}return{content:[{type:"text",text:JSON.stringify({...f,editUrl:i(e)},null,2)}]}}function oO(t){return`${pt.baseWebUrl}/dashboards/canvas/entries/${t}`}var aut={action:QT.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:QT.string().uuid().describe("UUID of the entry to create, update, delete, or duplicate"),patternId:QT.string().uuid().describe("Entry pattern ID to create the entry from. Omit when not creating, or when creating an entry without an entry pattern.").optional(),instructions:Hne.describe("Modification instructions for the entry. Omit for delete and duplicate.").optional()};function qEe(t){t.tool("entryAction","Creates, updates, or deletes a Uniform Entry",aut,async e=>await rO({...e,isPattern:!1,getEditUrl:oO,patternId:e.patternId}))}import*as QEe from"zod";import{CANVAS_DRAFT_STATE as XEe,ContentClient as JEe}from"@uniformdev/canvas";async function iO({isPattern:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new JEe(pt),a=await OM({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:XEe,search:d,filters:m?XM(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 aO({id:t,isPattern:e}){let r=await new JEe(pt).getEntries({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,pattern:e,entryIDs:[t],state:XEe});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 sut={id:QEe.string()};function eTe(t){t.tool("entryList","Lists available Uniform entries",Mp.shape,async e=>await iO({...e,isPattern:!1,getEditUrl:oO})),t.tool("entryGet","Gets the full contents of a Uniform entry",sut,async e=>await aO({...e,isPattern:!1}))}import*as lO from"zod";function sO(t){return`${pt.baseWebUrl}/dashboards/canvas/entry-patterns/${t}`}var lut={action:lO.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:lO.string().uuid().describe("UUID of the entry pattern to create, update, delete, or duplicate"),instructions:Wne.describe("Modification instructions for the entry pattern. Omit for delete and duplicate.").optional()};function tTe(t){t.tool("entryPatternAction","Creates, updates, or deletes a Uniform Entry Pattern",lut,async e=>await rO({...e,isPattern:!0,getEditUrl:sO,patternId:void 0}))}import*as nTe from"zod";var uut={id:nTe.string()};function rTe(t){t.tool("entryPatternList","Lists available Uniform entry patterns",Mp.shape,async e=>await iO({...e,isPattern:!0,getEditUrl:sO})),t.tool("entryPatternGet","Gets the full contents of a Uniform entry pattern",uut,async e=>await aO({...e,isPattern:!0}))}import{ProjectClient as cut}from"@uniformdev/canvas";async function dut(){let t=await fetch(`${pt.apiHost}/api/v1/member-profile`,{headers:{"x-api-key":pt.apiKey,"Content-Type":"application/json"}});if(!t.ok)throw new Error(`Failed to fetch user profile: ${t.status} ${t.statusText}`);return(await t.json()).name}function oTe(t){t.tool("getUniformEnvironment","Get the connected Uniform Project name, edit URL, and current user",{},async()=>{try{let e=new cut(pt),[n,r]=await Promise.all([e.get({projectId:pt.projectId}),dut()]),o={projectName:n.name,teamName:n.teamName,projectUrl:pt.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 fut}from"@uniformdev/canvas";function iTe(t){t.tool("localeList","Lists all registered Uniform locales",async()=>{let n=await new fut(pt).get();return{content:[{type:"text",text:JSON.stringify({locales:n.results,editUrl:`${pt.baseWebUrl}/settings/localization`},null,2)}]}})}import*as cO from"zod";function uO(t){return`${pt.baseWebUrl}/dashboards/canvas/edit/${t}`}var put={action:cO.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:cO.string().uuid().describe("UUID of the pattern instance to create, update, delete, or duplicate"),instructions:Une.describe("Modification instructions for the pattern. Omit for delete and duplicate.").optional()};function aTe(t){t.tool("patternAction","Creates, updates, or deletes a Uniform Component Pattern or Composition Pattern",put,async e=>await LM({...e,isPattern:!0,getEditUrl:uO,patternId:void 0}))}import*as dO from"zod";var mut={instanceType:dO.enum(["componentPattern","compositionPattern"]),...Mp.shape},hut={id:dO.string()};function sTe(t){t.tool("patternList","Lists available Uniform component patterns or composition patterns",mut,async e=>await JM({...e,getEditUrl:uO})),t.tool("patternGet","Gets the full contents of a Uniform component pattern or composition pattern",hut,async e=>await QM(e))}var Ha=new gut({name:"Uniform MCP",version:"1.0.0"});Fne(Ha);Vne(Ha);WEe(Ha);YEe(Ha);qEe(Ha);eTe(Ha);rTe(Ha);tTe(Ha);sTe(Ha);aTe(Ha);$3e(Ha);VEe(Ha);ZEe(Ha);oTe(Ha);iTe(Ha);var yut=new vut;await Ha.connect(yut);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.37.1-alpha.6+0bdc7878de",
3
+ "version": "20.38.1",
4
4
  "description": "Uniform MCP Server",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "bin": {
@@ -21,8 +21,8 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@modelcontextprotocol/sdk": "^1.12.0",
24
- "@uniformdev/canvas": "20.37.1-alpha.6+0bdc7878de",
25
- "@uniformdev/mesh-sdk-react": "20.37.1-alpha.6+0bdc7878de",
24
+ "@uniformdev/canvas": "20.38.1",
25
+ "@uniformdev/mesh-sdk-react": "20.38.1",
26
26
  "fast-json-patch": "^3.1.1",
27
27
  "immer": "10.1.1",
28
28
  "zod": "3.23.8"
@@ -34,11 +34,11 @@
34
34
  "access": "public"
35
35
  },
36
36
  "devDependencies": {
37
- "@uniformdev/design-system": "20.37.1-alpha.6+0bdc7878de",
38
- "@uniformdev/files": "20.37.1-alpha.6+0bdc7878de",
39
- "@uniformdev/mesh-edgehancer-sdk": "20.37.1-alpha.6+0bdc7878de",
40
- "@uniformdev/richtext": "20.37.1-alpha.6+0bdc7878de",
37
+ "@uniformdev/design-system": "20.38.1",
38
+ "@uniformdev/files": "20.38.1",
39
+ "@uniformdev/mesh-edgehancer-sdk": "20.38.1",
40
+ "@uniformdev/richtext": "20.38.1",
41
41
  "vitest": "3.2.4"
42
42
  },
43
- "gitHead": "0bdc7878de6fcd5f152feb2a0f8fa56563c61e7c"
43
+ "gitHead": "18e2c4913922cdf2cad8c691495c1a03423cc043"
44
44
  }