@uniformdev/uniform-mcp 20.35.1-alpha.87 → 20.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +1 -1
  2. package/package.json +7 -7
package/dist/index.mjs CHANGED
@@ -5281,7 +5281,7 @@ to {
5281
5281
  `;await tr();function O4e(t){let e=mue({nodes:[bd,yd,WZ,sb,lb,pse,ope,rpe,ipe,If]});return e.update(()=>{fse("skip-dom-selection"),cfe(t,vfe)},{discrete:!0}),e.getEditorState().toJSON()}function M4e({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=Sot({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===bot){let f=t.getParentInfo(e);if(f?.parentId){let m=t.getNodeProperty(f.parentId,yot);if(m?.value!==Ene)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 Sot=({twee:t,targetNode:e,propertyId:n,propertyType:r,propertyEdit:o})=>{if(r==="richText")return O4e(o.newValue??"");if(r==="number")return Number(o.newValue);if(n===vot){if(Cot(e.value.type))throw new Error("Enrichment tags are not allowed in system components.");if(t.getParentInfo(e.nodeId)?.parentId===xot)throw new Error("Enrichment tags are not allowed in personalization variants.")}return o.treatNewValueAsJson?JSON.parse(o.newValue):o.newValue};async function GL({twee:t,slotUpdates:e,propertyUpdates:n,localeUpdates:r,nameUpdate:o,slugUpdate:i,descriptionUpdate:a,currentEditorLocale:l,referenceData:c,isEditingPattern:d}){let f=[];o&&(t.updateRootNode({update:{_name:o}}),f.push({summary:"Updated name",success:!0})),i&&(t.updateRootNode({update:{_slug:i}}),f.push({summary:"Updated slug",success:!0})),a&&(t.updateRootMetadata({description:a}),f.push({summary:"Updated description",success:!0}));let m=await c.fetchDefinitions();await _ot({slotUpdates:e,twee:t,definitions:m,referenceData:c,results:f,isEditingPattern:d});let h=f.some(y=>!y.success);if(h?e.moveComponentInstances?.forEach(y=>{f.push({summary:`Skipped moving component ${y.componentId} because previous actions failed`,success:!1})}):await Dot({slotUpdates:e,twee:t,definitions:m,results:f,isEditingPattern:d}),h=f.some(y=>!y.success),e.duplicateComponentInstances)for(let y of e.duplicateComponentInstances)if(h)f.push({summary:`Skipped duplicating component ${y} because previous actions failed`,success:!1});else{let b=await t.duplicateNode(y,c.resolvePatternData);f.push({summary:`Duplicated component ${y}. The new duplicate has ID ${b} and is placed immediately after the original component in the same slot.`,success:!0})}return h=f.some(y=>!y.success),e.deleteComponentInstances?.forEach(y=>{h?f.push({summary:`Skipped deleting component ${y} because previous actions failed`,success:!1}):(t.deleteNode(y,!1),f.push({summary:`Deleted component ${y}`,success:!0}))}),h=f.some(y=>!y.success),r?.enableLocales?.forEach(y=>{h?f.push({summary:`Skipped enabling locale ${y} because previous actions failed`,success:!1}):(t.enableLocale(y),f.push({summary:`Enabled locale ${y}`,success:!0}))}),h=f.some(y=>!y.success),r?.disableLocales?.forEach(y=>{h?f.push({summary:`Skipped disabling locale ${y} because previous actions failed`,success:!1}):(t.disableLocale(y),f.push({summary:`Disabled locale ${y}`,success:!0}))}),h=f.some(y=>!y.success),h?n.length>0&&f.push({summary:`Skipped ${n.length} property updates because previous actions failed`,success:!1}):(await $ot({propertyUpdates:n,twee:t,currentEditorLocale:l,referenceData:c,definitions:m,results:f})).forEach(b=>{if(!b.result.success)return;let S="componentId"in b.update?b.update.componentId:t.rootNodeId,C=xne({twee:t,nodeId:S,currentEditorLocale:b.currentLocale,definition:b.propertyDefinition}),w=(t.getNodeById(t.rootNodeId)?.value)._locales??[];if(C&&!w.includes(C)){f.push({summary:`The ${C} locale is not enabled on this entity. Please enable it before setting values in this locale.`,success:!1});return}if(b.result.action!=="nothing")try{M4e({twee:t,nodeId:S,propertyId:b.propertyDefinition.id,propertyType:b.propertyDefinition.type,locale:C,propertyEdit:b.result}),f.push({summary:`Updated value of ${b.propertyDefinition.id} on ${S}${C?` in ${C}`:""}`,success:!0})}catch(E){f.push({summary:`Failed to update value of ${b.propertyDefinition.id} on ${S}${C?` in ${C}`:""}: ${E instanceof Error?E.message:"Unknown error"}`,success:!1})}if("overridable"in b.update&&b.update.overridable!==void 0)if(b.propertyDefinition.type===wot)f.push({summary:`Cannot set overridability for block property '${b.propertyDefinition.id}' - blocks do not support overrides`,success:!1});else{let E=b.update.overridable;t.updateNode({nodeId:S,updateComponent:_=>{_._overridability??={},_._overridability.parameters??={},_._overridability.parameters[b.propertyDefinition.id]=E}}),f.push({summary:`Updated overridability for ${S}`,success:!0})}}),{success:f.every(y=>y.success),actionsTaken:f}}async function _ot({slotUpdates:t,twee:e,definitions:n,referenceData:r,results: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=s6({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=eP(m);if(l.instanceType==="component"){if(!l.componentType)throw new Error("componentType is required when inserting a component instance");if(!a6({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.push({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(!a6({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.push({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.push({summary:`Failed to insert component ${d?.newComponentInstanceUuid}: ${"message"in l.reason?l.reason.message:"Unknown error"}`,success:!1})}})}async function Dot({slotUpdates:t,twee:e,definitions:n,results: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=s6({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=eP(m);if(!a6({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.push({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.push({summary:`Failed to move component ${c?.componentId}: ${"message"in a.reason?a.reason.message:"Unknown error"}`,success:!1})}})}async function $ot({propertyUpdates:t,twee:e,currentEditorLocale:n,referenceData:r,definitions:o,results: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(N=>N.id===g),b=d.locale??n,S=y??{id:g,type:"unknown"};if(d.editInstructions===void 0)return{result:{success:!0,newValue:"",treatNewValueAsJson:!1,action:"nothing"},update:d,propertyDefinition:S};if(d.editInstructions==="")return{result:{success:!0,newValue:"",treatNewValueAsJson:!1,action:"clearValue"},update:d,propertyDefinition:S};if(!y)throw new Error(`Property with ID ${g} not found`);let C=Eot({property:e.getNodeProperty(f,g),locale:b,conditionIndex:-1}),w,E=e.getNodeProperty(f,Tot);E?.value?.dim&&(w=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:C,projectGuidance:a,componentGuidance:h.description,audienceGuidance:w});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.push({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)}import{CANVAS_BLOCK_PARAM_TYPE as _c,CANVAS_ENRICHMENT_TAG_PARAM as f3e,CANVAS_LOCALE_TAG_PARAM as sT,CANVAS_LOCALIZATION_SLOT as lq,CANVAS_LOCALIZATION_TYPE as mit,CANVAS_PERSONALIZATION_PARAM as lT,CANVAS_PERSONALIZE_SLOT as p3e,CANVAS_SLOT_SECTION_SLOT as hit,CANVAS_SLOT_SECTION_TYPE as nO,CANVAS_TEST_SLOT as m3e,CANVAS_TEST_VARIANT_PARAM as h3e,CANVAS_VIZ_CONTROL_PARAM as y0,convertToBindExpression as git,createVariableReference as vit,getEffectivePropertyValue as g3e,walkNodeTree as b0}from"@uniformdev/canvas";var x0=X(ZZ(),1),y3e=X(_S(),1);import{produce as Do}from"immer";import Mot from"crypto";var ZL=new Uint8Array(256),YL=ZL.length;function qZ(){return YL>ZL.length-16&&(Mot.randomFillSync(ZL),YL=0),ZL.slice(YL,YL+=16)}var fa=[];for(let t=0;t<256;++t)fa.push((t+256).toString(16).slice(1));function P4e(t,e=0){return fa[t[e+0]]+fa[t[e+1]]+fa[t[e+2]]+fa[t[e+3]]+"-"+fa[t[e+4]]+fa[t[e+5]]+"-"+fa[t[e+6]]+fa[t[e+7]]+"-"+fa[t[e+8]]+fa[t[e+9]]+"-"+fa[t[e+10]]+fa[t[e+11]]+fa[t[e+12]]+fa[t[e+13]]+fa[t[e+14]]+fa[t[e+15]]}import Rot from"crypto";var XZ={randomUUID:Rot.randomUUID};function Aot(t,e,n){if(XZ.randomUUID&&!e&&!t)return XZ.randomUUID();t=t||{};let r=t.random||(t.rng||qZ)();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 P4e(r)}var Hi=Aot;import{bindVariablesToObject as Iot}from"@uniformdev/canvas";var oT="Untitled",V4e=60;function U4e({value:t,isNew:e,contentType:n}){let{result:r}=Iot({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: ${Bot(r)}`:`${oT} image`;if(r.length>0)return i?.type==="date"?Vot(r)?Uot(r):"Invalid date":v0(r)}else{if(typeof r=="number"||typeof r=="boolean")return r.toString();if(typeof r<"u"&&r!==null){if(i?.type==="link")return Fot(r);if(sne(r))return v0(Jk(r.root));if(i?.type==="datetime"&&r){let a=r;return a.datetime&&j4e(a.datetime)?jot(a.datetime):"Invalid datetime"}else return v0(Hot(r).description)}}return e?`New entry: ${n.name}`:oT}function Fot(t){return t?t.type==="projectMapNode"?t.path.length>0?`Link to ${v0(t.path)}`:`Link to project map node (${t.nodeId})`:t.path.length>0?`Link to ${v0(t.path)}`:`${oT} link`:`${oT} link`}function Bot(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]} (${v0(n)})`:`${e} (${v0(n)})`}catch{return t}}function v0(t){let e=t.split(" ").filter(i=>i).reverse();if(e.length<1)return oT;let n="",r=e.pop(),o=()=>n.length+(r?.length??0)+(n.length>0?1:0);for(;r&&o()<V4e;)n+=n.length>0?` ${r}`:r,r=e.pop();return n.length<1?`${t.slice(0,V4e)}...`:e.length>0?`${n}...`:n}var zot=/^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9]$/;function Vot(t){return zot.test(t)?j4e(t):!1}function j4e(t){let e=new Date(t);return e instanceof Date&&!isNaN(Number(e))}function Uot(t){return new Date(t).toLocaleDateString()}function jot(t){return new Date(t).toLocaleString()}function Hot(t){let e=eq(t);return e?{description:e,named:!0}:{description:Wot(t).valuePreview,named:!1}}function Wot(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 Kot=["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 eq(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=eq(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 Kot)if(r in n){let o=eq(n[r]);if(o)return o}}import{CANVAS_SLOT_SECTION_SLOT as Got,walkNodeTree as Yot}from"@uniformdev/canvas";var iT="|";function qL(t,e){if(!t)return e??Hi();let n=t.split(iT),r=(e??Hi()).split(iT);return n.at(-1)===r[0]&&n.pop(),n.concat(r).join(iT)}function W4e(t){let e=t.indexOf(iT);if(e<0)throw new Error(`Cannot remove pattern instance ID from ${t}`);return t.substring(e+1)}function XL(t,e,n=!1){Yot(t,({node:r,actions:{setDescendantsContext:o},context:i})=>{let a=!n&&!i?.currentParentPatternInstanceId,l="_pattern"in r&&!!r._pattern;if(i?.currentParentPatternInstanceId){let d=qL(i.currentParentPatternInstanceId,r._id);r._id=d}let c=i?.currentParentPatternInstanceId;l&&(c=r._id),"_overrides"in r&&r._overrides&&H4e(r._overrides,c,a),"_patternOverrides"in r&&r._patternOverrides&&H4e(r._patternOverrides,c,a),l&&o({currentParentPatternInstanceId:r._id})},{initialContext:{currentParentPatternInstanceId:e}})}var H4e=(t,e,n)=>{Object.entries(t).forEach(([r,o])=>{let i=n?r:qL(e,r);Object.entries(o.slots??{}).forEach(([a,l])=>{l.forEach(c=>{let{partOfNestedPattern:d}=JL(r??"");XL(c,a===Got&&!d?void 0:e,!0)})}),i&&(delete t[r],t[i]=o)})};function JL(t){let e=t.split(iT);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 X4e}from"@uniformdev/canvas";import{CANVAS_VIZ_CONTROL_PARAM as Jot}from"@uniformdev/canvas";import{CANVAS_ENRICHMENT_TAG_PARAM as K4e,CANVAS_INTENT_TAG_PARAM as Zot,CANVAS_LOCALE_TAG_PARAM as qot,CANVAS_PERSONALIZATION_PARAM as G4e,CANVAS_TEST_VARIANT_PARAM as Xot,CANVAS_VIZ_CONTROL_PARAM as Y4e}from"@uniformdev/canvas";var Z4e=[{id:Zot,name:"Intent Tag",type:"intentTag"},{id:qot,name:"Locale Visibility",type:"localeSelect"},{id:G4e,name:"Personalization Criteria",type:G4e},{id:K4e,name:"Enrichment Tags",type:K4e,helpText:"Seeing this component will increase a visitor's score in these enrichments."},{id:Xot,name:"A/B Test",type:"testVariant"},{id:Y4e,name:"Visibility Control",type:Y4e}];var Qot=Z4e.reduce((t,e)=>(e.id===Jot||t.add(e.id),t),new Set);function xC(t,e){return Qot.has(e)?"yes":t?.parameters?.[e]??"no"}function tq(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 q4e({applyOverrideToNode:t}){let e=new Set,n={};return{visitNode(r){e.add(r._id),tq(n,r._overrides),tq(n,r._patternOverrides);let o=n[r._id];o&&(o.parameters&&Object.keys(o.parameters).forEach(i=>{xC(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 q4e({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[X4e]??=[],r.slots[X4e]=[...o.slots[i]??[]]}}})}import{CANVAS_SLOT_SECTION_SLOT as eit,CANVAS_SLOT_SECTION_TYPE as tit}from"@uniformdev/canvas";var J4e=({preserveOwnSlotSections:t=!1,preserveChildrenSlotSections:e=!1}={})=>n=>{if(n.node.type!==tit)return;let{partOfPattern:r,partOfNestedPattern:o}=JL(n.node._id??"");!r&&!o&&t||r&&!o&&e||nit(n)},nit=({node:t,type:e,actions:n})=>{e!=="entry"&&(n.insertAfter(t.slots?.[eit]??[]),n.remove())};import{walkNodeTree as iit}from"@uniformdev/canvas";import{produce as ait}from"immer";import{CANVAS_SLOT_SECTION_SLOT as Q4e,walkNodeTree as rit}from"@uniformdev/canvas";import{produce as oit}from"immer";function QL(t,e,n,r=Hi()){if(!t._pattern)throw new Error("Not a pattern");let o={};return rit(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!==Q4e?(i._id=W4e(c),i._id=qL(r,i._id)):(l.replace({...o[c],_id:o[c]._id}),l.stopProcessingDescendants())}if(d){let m=oit(d,h=>{h.slots&&Object.entries(h.slots).forEach(([g,y])=>{if(g!==Q4e)throw new Error("Only slot section items are supported for duplication");y.forEach((b,S)=>{if(!b._id)return;let C=eO(b,e,n);o[b._id]=C,y[S]=C})})});n?.(i._id,m,c)}}),r}function eO(t,e,n){return ait(t,r=>{iit(r,({type:o,node:i,actions:{stopProcessingDescendants:a}})=>{o==="component"&&i._pattern?(QL(i,e,n),a()):i._id=Hi()})})}import{produce as sit}from"immer";function e3e(t,e=Hi()){return sit(t,n=>(n._pattern?QL(n,n._overrides??{},(r,o,i)=>{delete n._overrides[i],n._overrides[r]=o},e):n._id=e,n))}function tO({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 rq({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??lit(t)}}function lit(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 uit,convertEntryToPutEntry as Tjt,getPropertiesValue as $jt}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 aT(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??uit,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 oq(t,e){let{parameters:n,...r}=t;return{...r,_id:e??r._id??"unknown",fields:n}}function iq(t){let{fields:e,...n}=t;return{...n,parameters:e}}import{CANVAS_VIZ_LOCALE_RULE as cit}from"@uniformdev/canvas";import{produce as dit}from"immer";function a3e(t,e,n){let r=dit(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===cit){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=X(ZZ(),1);function aq(t,e){try{return(0,l3e.get)(t,e)}catch{return}}function sq(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 fit}from"@uniformdev/canvas";import{produce as pit}from"immer";function u3e(t,e){let n=pit(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===fit){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=TS();if(process.env.NODE_ENV==="development"&&!e){let r=new Error().stack?.split(`
5282
5282
  `).slice(2).join(`
5283
5283
  `).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)(),yit=!0,bit="Twee",Wd=class t{#e={};rootNodeId;#r={};#o={};#n;#i={};#t=d3e(bit,yit);#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=Do(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??Hi(),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 oq(this.exportSubtree(e),e)}getNodeChildren(e){let n=this.#r[e];if(n)return n}getNodeProperty(e,n){return aq(this.#o,[e,n])}getNodeProperties(e){return this.#o[e]??{}}insertNode({node:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o,overrideNodeId:i}){let a=i??Hi();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??Hi();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=Do(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]=Do(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=[];b0(r,({node:l})=>{l._id&&o.push(l._id)}),b0(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 b0(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=>{b0(m,({node:h})=>{l(h)})})})}),await Promise.all(c),this.#_(a.componentData,{parentId:e,parentName:n,parentType:o.pasteAs==="block"?"block":"slot",targetIndexInParent:r},a.overrides)}enableLocale(e){this.updateNode({nodeId:this.rootNodeId,updateComponent:n=>{let r=n;r._locales??=[];let o=[...new Set([...r._locales,...Array.isArray(e)?e:[e]])];r._locales=o}})}disableLocale(e){this.updateNode({nodeId:this.rootNodeId,updateComponent:o=>{let i=o;i._locales=i._locales?.filter(a=>a!==e)}});let n=[],r=o=>{this.getNodeProperty(o.nodeId,sT)?.value===e&&!o.partOfPattern&&n.push(o.nodeId);let a=this.getNodeProperties(o.nodeId);Object.entries(a).forEach(([c,d])=>{let f=d;c!==y0&&(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,y0);if(l?.value){let c=u3e(l.value,e);c===null?n.push(o.nodeId):this.updateNodeProperty({nodeId:o.nodeId,property:y0,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===mit&&!d.partOfPattern){let m=this.getNodeChildren(d.nodeId)?.[lq]??[],h=m.map(b=>this.getNodeProperty(b,sT)),g=h.findIndex(b=>b?.value===n);if(g>=0){let b=m[g];Gh(a,b).actions.push({type:"deleteLocalizedNode"})}let y=h.findIndex(b=>b?.value===e);if(y>=0){let b=m[y];Gh(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=xC(d.value._overridability,m)==="yes";if(!(g||y))return;if(m===y0){let $=a3e(h.value,e,n);$===null?Gh(a,d.nodeId).actions.push({type:"deleteLocalizedNode"}):$&&Gh(a,d.nodeId).actions.push({type:"updateVisibilityCriteria",targetValue:$})}let S=h.locales?.[e],C=h.locales?.[n];(!S||!C||!xa(S,C))&&(S!==void 0?Gh(a,d.nodeId).actions.push({type:"copyPropertyValue",propertyId:m,sourceValue:S,targetValue:C,conditionIndex:-1}):C!==void 0&&Gh(a,d.nodeId).actions.push({type:"deletePropertyValue",propertyId:m,sourceValue:S,targetValue:C,conditionIndex:-1}));let w=h.localesConditions?.[e],E=h.localesConditions?.[n];w?.forEach(($,M)=>{let O=h.localesConditions?.[n]?.[M];(!$||!O||!xa($,O))&&Gh(a,d.nodeId).actions.push({type:"copyPropertyValue",propertyId:m,sourceValue:$.value,targetValue:O,conditionIndex:M,conditionDefinition:$.when})});let _=w?.length??0,N=E?.length??0;if(_<N){let $=Gh(a,d.nodeId);for(let M=_;M<N;M++)$.actions.push({type:"deletePropertyValue",propertyId:m,sourceValue:w?.[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:sT,source:"other",value:()=>r});let f=this.copyValuesToLocalePlan({sourceLocale:n,destinationLocale:r,startingNodeId:d});this.copyValuesToLocaleExecute({plan:f,resolvePattern:e}),c.targetIndexInSlot!==void 0&&this.moveNode({movedNodeId:d,parentNodeId:this.#e[a].parentId,parentSlot:lq,targetIndexInSlot:c.targetIndexInSlot});break}case"updateVisibilityCriteria":{this.updateNodeProperty({nodeId:a,property:y0,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=Do(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=Do(this.#n,S=>{S[e]??={},S[e].dataResources??={},S[e].dataResources[y.name]=y.value})),h.value._dataResources??={},h.value._dataResources[y.name]=y.value;break;case"remove":b&&(this.#n=Do(this.#n,S=>{delete S[e]?.dataResources?.[y.name]})),delete h.value._dataResources?.[y.name];break;case"reset":{let S=this.#i[e]?.dataResources?.[y.name];h.value._dataResources&&(S&&Object.keys(S).length>0?h.value._dataResources[y.name]=S:delete h.value._dataResources[y.name]),this.#n=Do(this.#n,C=>{delete C[e]?.dataResources?.[y.name]})}break;default:throw new Error(`Unhandled data resource action ${y?.type}`)}}}}),d=!!(l.partOfPattern&&!l.value._patternError),f=l.value.variant!==c.value.variant,m=l.value._overridability?.variants??!1;!a&&d&&f&&m&&(this.#n=Do(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=aq(this.#o,g);if(!y&&r==null)return;let b=g3e({locale:i,property:y,conditionIndex:d}),S=i?y?.localesConditions?.[i]?.[d]:y?.conditions?.[d],C=typeof r=="function"?Do(b,$=>r($)):r,w=a??y?.type;if(!w)throw new Error(`Cannot add parameter ${n} to node ${e} without specifying a type`);let E={...y,type:w},_=!1;E=Do(E,$=>{C===void 0&&d<0?_=!tO({locale:i,property:$,conditionIndex:d}):f===null&&d>=0?_=!tO({locale:i,property:$,conditionIndex:d}):rq({locale:i,property:$,newPropertyValue:C,conditionIndex:d,conditionDefinition:f??S?.when??{clauses:[]}})}),_&&(E=void 0);let N=h&&xC(m.value._overridability,n)==="yes";if(h&&!N&&!c)throw new Error(`Cannot override parameter ${n} on node ${e} because it is not marked as overridable on the pattern (${m.partOfPattern})`);if(N&&(this.#i[e]?.parameters?.[n]||(this.#i=Do(this.#i,M=>{M[e]??={parameters:{},dataResources:{}},M[e].parameters[n]=y??null}))),!c&&N){let $=this.#n[e]?.parameters?.[n];this.#n=Do(this.#n,M=>{let A=C==null||E===void 0?null:C,k=$??{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=Do(k,H=>{f===null&&d>=0?tO({locale:i,property:H,conditionIndex:d}):rq({locale:i,property:H,newPropertyValue:A,conditionIndex:d,conditionDefinition:f??S?.when??{clauses:[]}})});(0,x0.set)(M,`/${e}/parameters/${n}`,F)}),$||this.#t.emit("propertyOverrideCreated",{nodeId:e,property:n})}C===null?(0,x0.remove)(this.#o,g):(this.#o[e]??={},(0,x0.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||xC(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=Do(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=Do(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,S=[];b.forEach(C=>{let w=this.exportSubtree(C,n);S.push(oq(w,C))}),m[g]={value:S,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 S=Du(b),C=c.value;C.slots=C.slots||{},(0,x0.set)(c,["value","slots",m,y.toString(10)],S.value),a.push(S)})})}return i.value}#S({parentNodeId:e,parentSlot:n,targetIndexInSlot:r,node:o}){if(!this.#e[e])throw new Error("Parent ID to insert under did not exist!");if(this.#e[o.nodeId])throw new Error(`Node with ID '${o.nodeId}' already exists. Nodes must have unique IDs. Did you mean to move or duplicate this node instead?`);this.#e[o.nodeId]=o,this.#f({nodeId:o.nodeId,parentNodeId:e,parentSlot:n,targetIndexInSlot:r})}#f({nodeId:e,parentNodeId:n,parentSlot:r,targetIndexInSlot:o}){let i=this.#e[n],a=this.#r[n]??={},l=a[r]??=[];typeof o<"u"?l.splice(o,0,e):l.push(e),i?.value.type===nO&&(this.#n=Do(this.#n,c=>{c[n]=c[n]??{},c[n].slots={[hit]:l.map(d=>({_id:d,type:this.#e[d].value.type}))}})),this.#e[e]=Do(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??Hi(),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:iq(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)??Hi();if(this.#e[b]&&!l)throw new Error(`Node with ID '${b}' already exists. Nodes must have unique IDs.`);let S={nodeId:b,value:h,partOfPattern:g,partOfNestedPattern:y,isBlock:a,propertyValueLocalizability:Object.entries(d??{}).reduce((C,[w,E])=>(C[w]=u6({definition:void 0,currentValue:E,lastUserChoice:void 0}),C),{})};return g&&(S.partOfPattern=g),this.#e[S.nodeId]=S,d&&Object.entries(d).forEach(([C,w])=>{let{connectedData:E,..._}=w,N=E?vit(git(E)):w.value;if(w?.type===_c&&Array.isArray(N)){let $=N,M=[];$?.forEach(O=>{let A={...O,_id:i?Hi():O._id??Hi()};if(this.#e[A._id])throw new Error(`Block node with ID '${A._id}' already exists. Block nodes must have unique IDs.`);return M.push(A._id),this.#e[A._id]={nodeId:A._id,value:{type:_c},propertyValueLocalizability:{}},this.#l({componentTree:iq(A),nodeId:A._id,allowReplacement:!0}),this.#e[A._id].isBlock=!0,this.#e[A._id].parentId=S.nodeId,this.#e[A._id]}),N=M}this.#o[S.nodeId]=this.#o[S.nodeId]??{},(0,x0.set)(this.#o,[S.nodeId,C],{..._,value:N})}),c&&Object.entries(c).forEach(([C,w])=>{let E=w.map(_=>{if(this.#e[_._id??""]?.isBlock)return;let N=this.#l({componentTree:_,partOfPattern:h.type===nO?void 0:g,partOfNestedPattern:h.type===nO?void 0:y,resetUids:i});return this.#e[N].parentId=S.nodeId,N});this.#r[S.nodeId]=this.#r[S.nodeId]??{},this.#r[S.nodeId][C]=E.filter(_=>_)}),S.nodeId}#b(e,n,r){let o=this.#x(e,n);return this.#l({componentTree:o,nodeId:n,allowReplacement:r})}#x(e,n){let r=Du(e);return this.#v({composition:r}),XL(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 Do(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===nO||!r.partOfPattern)return!0;n=r.parentId}return!0}#_(e,n,r){let i={...this.#g(),...r},a;if(this.#n=Do(this.#n,c=>{this.#i=Do(this.#i,d=>{a=eO(e,i,(f,m,h)=>{c[f]=m,d[f]=this.#i[h]})})}),!a)throw new Error("Failed to duplicate component");a=Do(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=Do(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;b0(f,({node:m})=>{a.visitNode(m)})}let c=n?l:a;b0(e,({node:d})=>{c.visitNode(d)})});let o=J4e({preserveOwnSlotSections:!0,preserveChildrenSlotSections:r});b0(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===lq,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,lT);!l&&h&&this.updateNodeProperty({nodeId:e,property:lT,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,lT)?.value?.name,setName:b=>this.updateNodeProperty({nodeId:e,property:lT,value:S=>S&&typeof S=="object"&&S!==null?{...S,name:b}:{name:b,crit:[]},source:"other",locale:void 0,conditionIndex:-1,type:lT})}),d&&!c&&this.#C({nodeId:e,siblingIds:this.getNodeChildren(n)?.[r]??[],selectExistingName:b=>this.getNodeProperty(b,h3e)?.value?.id,setName:b=>this.updateNodeProperty({nodeId:e,property:h3e,value:S=>S&&typeof S=="object"&&S!==null?{...S,id:b}:{id:b},source:"other",locale:void 0,conditionIndex:-1,type:"testVariant"})});let g=this.getNodeProperty(e,sT);!f&&g&&this.updateNodeProperty({nodeId:e,property:sT,value:void 0,source:"other",locale:void 0,conditionIndex:-1});let y=this.getNodeProperty(e,y0);(l||f||d)&&y&&this.updateNodeProperty({nodeId:e,property:y0,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=sq(e,c,d);do f=sq(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 Gh(t,e){return xit(t,e,()=>({nodeId:e,actions:[]}))}function xit(t,e,n){return t.has(e)||t.set(e,n()),t.get(e)}import{CANVAS_DRAFT_STATE as sO,CanvasClient as Eit}from"@uniformdev/canvas";import{produce as Tit}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 uq,ContentClient as E3e,ProjectClient as T3e}from"@uniformdev/canvas";var x3e=X(z4e());var C3e=(0,x3e.default)(6),rO=class t extends Error{constructor(n,r,o,i,a,l){super(`${n}
5284
- ${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 oO=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 Cit(()=>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 rO(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 Cit(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 iO=class extends oO{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.35.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",test:"vitest run",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:*","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 uT(){return new iO({...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 uq(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 uq(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 uq(pt).getCompositionById({compositionId:r,state:w3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>uT(),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 aT(o).composition},getToolClient:async()=>uT(),getDimensionGuidance:async()=>{}}}import{LocaleClient as wit}from"@uniformdev/canvas";async function aO(t){if(!t||t.length===0)return;let r=(await new wit(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 lO({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new Eit(pt),l,c,d=t==="update"?e:void 0,f={success:!0,actionsTaken:[]};if(t==="duplicate"){if(c=await a.getCompositionById({compositionId:e,state:sO,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=Tit(h,y=>{y._name=`${y._name} (copy)`,y._slug&&(y._slug=`${y._slug}-copy${y._slug?.endsWith("/")?"/":""}`)});l=new Wd(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 Wd({_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:sO,pattern:!1};await a.updateComposition(m),d=e}}if(d){if(c=await a.getCompositionById({compositionId:e,state:sO,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!c)throw new Error("Composition not found");l=new Wd(c.composition)}if(t==="delete"&&await a.removeComposition({compositionId:e}),l){await aO(n?.localeUpdates?.enableLocales),f=await GL({twee:l,descriptionUpdate:void 0,slugUpdate:void 0,nameUpdate:n?.name,propertyUpdates:n?.parameterUpdates??[],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:sO,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 uO(t){return`${pt.baseWebUrl}/dashboards/canvas/edit/${t}`}async function cO(t,e){return await uT().invoke("createFilterExpression",{...t,entityType:e})}var _it={action:cT.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:cT.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:cT.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:hne.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",_it,async e=>await lO({...e,isPattern:!1,getEditUrl:uO,patternId:e.patternId}))}import*as Yr from"zod";var Dit=Yr.object({field:Yr.string(),operator:Yr.string(),value:Yr.string().or(Yr.array(Yr.string()))}),$it=Yr.object({filter:Yr.array(Dit),error:Yr.string().describe("An error message if the filter expression could not be created, otherwise an empty string"),sort:Yr.array(Yr.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:Yr.number().min(1).max(100),offset:Yr.number().min(0),keyword:Yr.string(),locale:Yr.string().optional()}),wp=Yr.object({searchExpressionPrompt:Yr.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".
5284
+ ${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 oO=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 Cit(()=>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 rO(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 Cit(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 iO=class extends oO{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.36.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",test:"vitest run",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:*","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 uT(){return new iO({...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 uq(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 uq(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 uq(pt).getCompositionById({compositionId:r,state:w3e,skipPatternResolution:!1,skipOverridesResolution:!0,withComponentIDs:!0,skipDataResolution:!0,withWorkflowDefinition:!0,releaseId:void 0}))?.composition,getToolClient:async()=>uT(),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 aT(o).composition},getToolClient:async()=>uT(),getDimensionGuidance:async()=>{}}}import{LocaleClient as wit}from"@uniformdev/canvas";async function aO(t){if(!t||t.length===0)return;let r=(await new wit(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 lO({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new Eit(pt),l,c,d=t==="update"?e:void 0,f={success:!0,actionsTaken:[]};if(t==="duplicate"){if(c=await a.getCompositionById({compositionId:e,state:sO,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=Tit(h,y=>{y._name=`${y._name} (copy)`,y._slug&&(y._slug=`${y._slug}-copy${y._slug?.endsWith("/")?"/":""}`)});l=new Wd(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 Wd({_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:sO,pattern:!1};await a.updateComposition(m),d=e}}if(d){if(c=await a.getCompositionById({compositionId:e,state:sO,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0}),!c)throw new Error("Composition not found");l=new Wd(c.composition)}if(t==="delete"&&await a.removeComposition({compositionId:e}),l){await aO(n?.localeUpdates?.enableLocales),f=await GL({twee:l,descriptionUpdate:void 0,slugUpdate:void 0,nameUpdate:n?.name,propertyUpdates:n?.parameterUpdates??[],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:sO,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 uO(t){return`${pt.baseWebUrl}/dashboards/canvas/edit/${t}`}async function cO(t,e){return await uT().invoke("createFilterExpression",{...t,entityType:e})}var _it={action:cT.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:cT.string().uuid().describe("UUID of the composition instance to create, update, delete, or duplicate"),patternId:cT.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:hne.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",_it,async e=>await lO({...e,isPattern:!1,getEditUrl:uO,patternId:e.patternId}))}import*as Yr from"zod";var Dit=Yr.object({field:Yr.string(),operator:Yr.string(),value:Yr.string().or(Yr.array(Yr.string()))}),$it=Yr.object({filter:Yr.array(Dit),error:Yr.string().describe("An error message if the filter expression could not be created, otherwise an empty string"),sort:Yr.array(Yr.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:Yr.number().min(1).max(100),offset:Yr.number().min(0),keyword:Yr.string(),locale:Yr.string().optional()}),wp=Yr.object({searchExpressionPrompt:Yr.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".
5285
5285
  You can specify multiple criteria (AND only).
5286
5286
  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:Yr.string().describe("The username of the current user. If you do not know the username, use an empty string"),locale:Yr.string().describe("The current locale. If there is no current locale, use an empty string")}),oWt={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:wp.extend({entityType:Yr.enum(["composition","entry","componentPattern","compositionPattern","entryPattern"]).describe("The entity type we are creating a filter for")}),outputSchema:$it,runsAt:"server",timeout:10,callable:!0};import*as zwe from"zod";var Ep=class extends Error{},dO=class extends Ep{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},fO=class extends Ep{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},pO=class extends Ep{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Dc=class extends Ep{},CC=class extends Ep{constructor(e){super(`Invalid unit ${e}`)}},Go=class extends Ep{},$c=class extends Ep{constructor(){super("Zone is an abstract class")}};var ze="numeric",Nc="short",Bl="long",Yh={year:ze,month:ze,day:ze},dT={year:ze,month:Nc,day:ze},cq={year:ze,month:Nc,day:ze,weekday:Nc},fT={year:ze,month:Bl,day:ze},pT={year:ze,month:Bl,day:ze,weekday:Bl},mT={hour:ze,minute:ze},hT={hour:ze,minute:ze,second:ze},gT={hour:ze,minute:ze,second:ze,timeZoneName:Nc},vT={hour:ze,minute:ze,second:ze,timeZoneName:Bl},yT={hour:ze,minute:ze,hourCycle:"h23"},bT={hour:ze,minute:ze,second:ze,hourCycle:"h23"},xT={hour:ze,minute:ze,second:ze,hourCycle:"h23",timeZoneName:Nc},CT={hour:ze,minute:ze,second:ze,hourCycle:"h23",timeZoneName:Bl},ST={year:ze,month:ze,day:ze,hour:ze,minute:ze},wT={year:ze,month:ze,day:ze,hour:ze,minute:ze,second:ze},ET={year:ze,month:Nc,day:ze,hour:ze,minute:ze},TT={year:ze,month:Nc,day:ze,hour:ze,minute:ze,second:ze},dq={year:ze,month:Nc,day:ze,weekday:Nc,hour:ze,minute:ze},_T={year:ze,month:Bl,day:ze,hour:ze,minute:ze,timeZoneName:Nc},DT={year:ze,month:Bl,day:ze,hour:ze,minute:ze,second:ze,timeZoneName:Nc},$T={year:ze,month:Bl,day:ze,weekday:Bl,hour:ze,minute:ze,timeZoneName:Bl},NT={year:ze,month:Bl,day:ze,weekday:Bl,hour:ze,minute:ze,second:ze,timeZoneName:Bl};var al=class{get type(){throw new $c}get name(){throw new $c}get ianaName(){return this.name}get isUniversal(){throw new $c}offsetName(e,n){throw new $c}formatOffset(e,n){throw new $c}offset(e){throw new $c}equals(e){throw new $c}get isValid(){throw new $c}};var fq=null,Zh=class t extends al{static get instance(){return fq===null&&(fq=new t),fq}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return hO(e,n,r)}formatOffset(e,n){return qh(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var vO={};function Nit(t){return vO[t]||(vO[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"})),vO[t]}var Lit={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Oit(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 Mit(t,e){let n=t.formatToParts(e),r=[];for(let o=0;o<n.length;o++){let{type:i,value:a}=n[o],l=Lit[i];i==="era"?r[l]=a:Mt(l)||(r[l]=parseInt(a,10))}return r}var gO={},ja=class t extends al{static create(e){return gO[e]||(gO[e]=new t(e)),gO[e]}static resetCache(){gO={},vO={}}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 hO(e,n,r,this.name)}formatOffset(e,n){return qh(this.offset(e),n)}offset(e){let n=new Date(e);if(isNaN(n))return NaN;let r=Nit(this.name),[o,i,a,l,c,d,f]=r.formatToParts?Mit(r,n):Oit(r,n);l==="BC"&&(o=-Math.abs(o)+1);let h=SC({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 Rit(t,e={}){let n=JSON.stringify([t,e]),r=N3e[n];return r||(r=new Intl.ListFormat(t,e),N3e[n]=r),r}var pq={};function mq(t,e={}){let n=JSON.stringify([t,e]),r=pq[n];return r||(r=new Intl.DateTimeFormat(t,e),pq[n]=r),r}var hq={};function Ait(t,e={}){let n=JSON.stringify([t,e]),r=hq[n];return r||(r=new Intl.NumberFormat(t,e),hq[n]=r),r}var gq={};function kit(t,e={}){let{base:n,...r}=e,o=JSON.stringify([t,r]),i=gq[o];return i||(i=new Intl.RelativeTimeFormat(t,e),gq[o]=i),i}var LT=null;function Pit(){return LT||(LT=new Intl.DateTimeFormat().resolvedOptions().locale,LT)}var L3e={};function Iit(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 Fit(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=mq(t).resolvedOptions(),o=t}catch{let c=t.substring(0,n);r=mq(c).resolvedOptions(),o=c}let{numberingSystem:i,calendar:a}=r;return[o,i,a]}}function Bit(t,e,n){return(n||e)&&(t.includes("-u-")||(t+="-u"),n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function zit(t){let e=[];for(let n=1;n<=12;n++){let r=gn.utc(2009,n,1);e.push(t(r))}return e}function Vit(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 yO(t,e,n,r){let o=t.listingMode();return o==="error"?null:o==="en"?n(e):r(e)}function Uit(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 vq=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=Ait(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):wC(e,3);return vo(n,this.padTo)}}},yq=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=mq(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()}},bq=class{constructor(e,n,r){this.opts={style:"long",...r},!n&&bO()&&(this.rtf=kit(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):O3e(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}},jit={firstDay:1,minimalDays:4,weekend:[6,7]},Jn=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||Vn.defaultLocale,l=a||(i?"en-US":Pit()),c=n||Vn.defaultNumberingSystem,d=r||Vn.defaultOutputCalendar,f=OT(o)||Vn.defaultWeekSettings;return new t(l,c,d,f,a)}static resetCache(){LT=null,pq={},hq={},gq={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r,weekSettings:o}={}){return t.create(e,n,r,o)}constructor(e,n,r,o,i){let[a,l,c]=Fit(e);this.locale=a,this.numberingSystem=n||l||null,this.outputCalendar=r||c||null,this.weekSettings=o,this.intl=Bit(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=Uit(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,OT(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 yO(this,e,xq,()=>{let r=n?{month:e,day:"numeric"}:{month:e},o=n?"format":"standalone";return this.monthsCache[o][e]||(this.monthsCache[o][e]=zit(i=>this.extract(i,r,"month"))),this.monthsCache[o][e]})}weekdays(e,n=!1){return yO(this,e,Cq,()=>{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]=Vit(i=>this.extract(i,r,"weekday"))),this.weekdaysCache[o][e]})}meridiems(){return yO(this,void 0,()=>Sq,()=>{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 yO(this,e,wq,()=>{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 vq(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new yq(e,this.intl,n)}relFormatter(e={}){return new bq(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Rit(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:xO()?Iit(this.locale):jit}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 Tq=null,Wi=class t extends al{static get utcInstance(){return Tq===null&&(Tq=new t(0)),Tq}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(C0(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${qh(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${qh(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return qh(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 EC=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 Lc(t,e){let n;if(Mt(t)||t===null)return e;if(t instanceof al)return t;if(M3e(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?Zh.instance:r==="utc"||r==="gmt"?Wi.utcInstance:Wi.parseSpecifier(r)||ja.create(t)}else return Kd(t)?Wi.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new EC(t)}var R3e=()=>Date.now(),A3e="system",k3e=null,P3e=null,I3e=null,F3e=60,B3e,z3e=null,Vn=class{static get now(){return R3e}static set now(e){R3e=e}static set defaultZone(e){A3e=e}static get defaultZone(){return Lc(A3e,Zh.instance)}static get defaultLocale(){return k3e}static set defaultLocale(e){k3e=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=OT(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(){Jn.resetCache(),ja.resetCache()}};var Ki=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 Ki("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function CO(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+(w0(t)?U3e:V3e)[e-1]}function H3e(t,e){let n=w0(t)?U3e:V3e,r=n.findIndex(i=>i<e),o=e-n[r];return{month:r+1,day:o}}function SO(t,e){return(t-e+7)%7+1}function MT(t,e=4,n=1){let{year:r,month:o,day:i}=t,a=j3e(r,o,i),l=SO(CO(r,o,i),n),c=Math.floor((a-l+14-e)/7),d;return c<1?(d=r-1,c=S0(d,e,n)):c>S0(r,e,n)?(d=r+1,c=1):d=r,{weekYear:d,weekNumber:c,weekday:l,...AT(t)}}function _q(t,e=4,n=1){let{weekYear:r,weekNumber:o,weekday:i}=t,a=SO(CO(r,1,e),n),l=Xh(r),c=o*7+i-a-7+e,d;c<1?(d=r-1,c+=Xh(d)):c>l?(d=r+1,c-=Xh(r)):d=r;let{month:f,day:m}=H3e(d,c);return{year:d,month:f,day:m,...AT(t)}}function wO(t){let{year:e,month:n,day:r}=t,o=j3e(e,n,r);return{year:e,ordinal:o,...AT(t)}}function Dq(t){let{year:e,ordinal:n}=t,{month:r,day:o}=H3e(e,n);return{year:e,month:r,day:o,...AT(t)}}function $q(t,e){if(!Mt(t.localWeekday)||!Mt(t.localWeekNumber)||!Mt(t.localWeekYear)){if(!Mt(t.weekday)||!Mt(t.weekNumber)||!Mt(t.weekYear))throw new Dc("Cannot mix locale-based week fields with ISO-based week fields");return Mt(t.localWeekday)||(t.weekday=t.localWeekday),Mt(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),Mt(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=RT(t.weekYear),o=zl(t.weekNumber,1,S0(t.weekYear,e,n)),i=zl(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=RT(t.year),n=zl(t.ordinal,1,Xh(t.year));return e?n?!1:$u("ordinal",t.ordinal):$u("year",t.year)}function Nq(t){let e=RT(t.year),n=zl(t.month,1,12),r=zl(t.day,1,TC(t.year,t.month));return e?n?r?!1:$u("day",t.day):$u("month",t.month):$u("year",t.year)}function Lq(t){let{hour:e,minute:n,second:r,millisecond:o}=t,i=zl(e,0,23)||e===24&&n===0&&r===0&&o===0,a=zl(n,0,59),l=zl(r,0,59),c=zl(o,0,999);return i?a?l?c?!1:$u("millisecond",o):$u("second",r):$u("minute",n):$u("hour",e)}function Mt(t){return typeof t>"u"}function Kd(t){return typeof t=="number"}function RT(t){return typeof t=="number"&&t%1===0}function M3e(t){return typeof t=="string"}function Y3e(t){return Object.prototype.toString.call(t)==="[object Date]"}function bO(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function xO(){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 Oq(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 Jh(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function OT(t){if(t==null)return null;if(typeof t!="object")throw new Go("Week settings must be an object");if(!zl(t.firstDay,1,7)||!zl(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!zl(e,1,7)))throw new Go("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function zl(t,e,n){return RT(t)&&t>=e&&t<=n}function Hit(t,e){return t-e*Math.floor(t/e)}function vo(t,e=2){let n=t<0,r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Tp(t){if(!(Mt(t)||t===null||t===""))return parseInt(t,10)}function Qh(t){if(!(Mt(t)||t===null||t===""))return parseFloat(t)}function kT(t){if(!(Mt(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function wC(t,e,n=!1){let r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function w0(t){return t%4===0&&(t%100!==0||t%400===0)}function Xh(t){return w0(t)?366:365}function TC(t,e){let n=Hit(e-1,12)+1,r=t+(e-n)/12;return n===2?w0(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function SC(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-SO(CO(t,1,e),n)+e-1}function S0(t,e=4,n=1){let r=G3e(t,e,n),o=G3e(t+1,e,n);return(Xh(t)-r+o)/7}function PT(t){return t>99?t:t>Vn.twoDigitCutoffYear?1900+t:2e3+t}function hO(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 C0(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 Mq(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Go(`Invalid unit value ${t}`);return e}function _C(t,e){let n={};for(let r in t)if(Jh(t,r)){let o=t[r];if(o==null)continue;n[e(r)]=Mq(o)}return n}function qh(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}${vo(n,2)}:${vo(r,2)}`;case"narrow":return`${o}${n}${r>0?`:${r}`:""}`;case"techie":return`${o}${vo(n,2)}${vo(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function AT(t){return q3e(t,["hour","minute","second","millisecond"])}var Wit=["January","February","March","April","May","June","July","August","September","October","November","December"],Rq=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Kit=["J","F","M","A","M","J","J","A","S","O","N","D"];function xq(t){switch(t){case"narrow":return[...Kit];case"short":return[...Rq];case"long":return[...Wit];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 Aq=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],kq=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Git=["M","T","W","T","F","S","S"];function Cq(t){switch(t){case"narrow":return[...Git];case"short":return[...kq];case"long":return[...Aq];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Sq=["AM","PM"],Yit=["Before Christ","Anno Domini"],Zit=["BC","AD"],qit=["B","A"];function wq(t){switch(t){case"narrow":return[...qit];case"short":return[...Zit];case"long":return[...Yit];default:return null}}function X3e(t){return Sq[t.hour<12?0:1]}function J3e(t,e){return Cq(e)[t.weekday-1]}function Q3e(t,e){return xq(e)[t.month-1]}function ewe(t,e){return wq(e)[t.year<0?0:1]}function O3e(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 twe(t,e){let n="";for(let r of t)r.literal?n+=r.val:n+=e(r.val);return n}var Xit={D:Yh,DD:dT,DDD:fT,DDDD:pT,t:mT,tt:hT,ttt:gT,tttt:vT,T:yT,TT:bT,TTT:xT,TTTT:CT,f:ST,ff:ET,fff:_T,ffff:$T,F:wT,FF:TT,FFF:DT,FFFF:NT},Gi=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 Xit[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 vo(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?ewe(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 twe(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 twe(i,o(l))}};var rwe=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function $C(...t){let e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function NC(...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 LC(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 owe(...t){return(e,n)=>{let r={},o;for(o=0;o<t.length;o++)r[t[o]]=Tp(e[n+o]);return[r,null,n+o]}}var iwe=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Jit=`(?:${iwe.source}?(?:\\[(${rwe.source})\\])?)?`,Pq=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,awe=RegExp(`${Pq.source}${Jit}`),Iq=RegExp(`(?:T${awe.source})?`),Qit=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,eat=/(\d{4})-?W(\d\d)(?:-?(\d))?/,tat=/(\d{4})-?(\d{3})/,nat=owe("weekYear","weekNumber","weekDay"),rat=owe("year","ordinal"),oat=/(\d{4})-(\d\d)-(\d\d)/,swe=RegExp(`${Pq.source} ?(?:${iwe.source}|(${rwe.source}))?`),iat=RegExp(`(?: ${swe.source})?`);function DC(t,e,n){let r=t[e];return Mt(r)?n:Tp(r)}function aat(t,e){return[{year:DC(t,e),month:DC(t,e+1,1),day:DC(t,e+2,1)},null,e+3]}function OC(t,e){return[{hours:DC(t,e,0),minutes:DC(t,e+1,0),seconds:DC(t,e+2,0),milliseconds:kT(t[e+3])},null,e+4]}function IT(t,e){let n=!t[e]&&!t[e+1],r=C0(t[e+1],t[e+2]),o=n?null:Wi.instance(r);return[{},o,e+3]}function FT(t,e){let n=t[e]?ja.create(t[e]):null;return[{},n,e+1]}var sat=RegExp(`^T?${Pq.source}$`),lat=/^-?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 uat(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(Qh(n)),months:h(Qh(r)),weeks:h(Qh(o)),days:h(Qh(i)),hours:h(Qh(a)),minutes:h(Qh(l)),seconds:h(Qh(c),c==="-0"),milliseconds:h(kT(d),m)}]}var cat={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 Fq(t,e,n,r,o,i,a){let l={year:e.length===2?PT(Tp(e)):Tp(e),month:Rq.indexOf(n)+1,day:Tp(r),hour:Tp(o),minute:Tp(i)};return a&&(l.second=Tp(a)),t&&(l.weekday=t.length>3?Aq.indexOf(t)+1:kq.indexOf(t)+1),l}var dat=/^(?:(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 fat(t){let[,e,n,r,o,i,a,l,c,d,f,m]=t,h=Fq(e,o,r,n,i,a,l),g;return c?g=cat[c]:d?g=0:g=C0(f,m),[h,new Wi(g)]}function pat(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var mat=/^(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$/,hat=/^(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$/,gat=/^(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 nwe(t){let[,e,n,r,o,i,a,l]=t;return[Fq(e,o,r,n,i,a,l),Wi.utcInstance]}function vat(t){let[,e,n,r,o,i,a,l]=t;return[Fq(e,l,n,r,o,i,a),Wi.utcInstance]}var yat=$C(Qit,Iq),bat=$C(eat,Iq),xat=$C(tat,Iq),Cat=$C(awe),lwe=NC(aat,OC,IT,FT),Sat=NC(nat,OC,IT,FT),wat=NC(rat,OC,IT,FT),Eat=NC(OC,IT,FT);function uwe(t){return LC(t,[yat,lwe],[bat,Sat],[xat,wat],[Cat,Eat])}function cwe(t){return LC(pat(t),[dat,fat])}function dwe(t){return LC(t,[mat,nwe],[hat,nwe],[gat,vat])}function fwe(t){return LC(t,[lat,uat])}var Tat=NC(OC);function pwe(t){return LC(t,[sat,Tat])}var _at=$C(oat,iat),Dat=$C(swe),$at=NC(OC,IT,FT);function mwe(t){return LC(t,[_at,lwe],[Dat,$at])}var hwe="Invalid Duration",vwe={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}},Nat={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},...vwe},Nu=146097/400,MC=146097/4800,Lat={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:MC/7,days:MC,hours:MC*24,minutes:MC*24*60,seconds:MC*24*60*60,milliseconds:MC*24*60*60*1e3},...vwe},E0=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Oat=E0.slice(0).reverse();function eg(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 yo(r)}function ywe(t,e){let n=e.milliseconds??0;for(let r of Oat.slice(1))e[r]&&(n+=e[r]*t[r].milliseconds);return n}function gwe(t,e){let n=ywe(t,e)<0?-1:1;E0.reduceRight((r,o)=>{if(Mt(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),E0.reduce((r,o)=>{if(Mt(e[o]))return r;if(r){let i=e[r]%1;e[r]-=i,e[o]+=i*t[r][o]}return o},null)}function Mat(t){let e={};for(let[n,r]of Object.entries(t))r!==0&&(e[n]=r);return e}var yo=class t{constructor(e){let n=e.conversionAccuracy==="longterm"||!1,r=n?Lat:Nat;e.matrix&&(r=e.matrix),this.values=e.values,this.loc=e.loc||Jn.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 Go(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:_C(e,t.normalizeUnit),loc:Jn.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(e){if(Kd(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new Go(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){let[r]=fwe(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]=pwe(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 Go("need to specify a reason the Duration is invalid");let r=e instanceof Ki?e:new Ki(e,n);if(Vn.throwOnInvalid)throw new pO(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 CC(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?Gi.create(this.loc,r).formatDurationFromString(this,e):hwe}toHuman(e={}){if(!this.isValid)return hwe;let n=E0.map(r=>{let o=this.values[r];return Mt(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+=wC(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?ywe(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 E0)(Jh(n.values,o)||Jh(this.values,o))&&(r[o]=n.get(o)+this.get(o));return eg(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]=Mq(e(this.values[r],r));return eg(this,{values:n},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let n={...this.values,..._C(e,t.normalizeUnit)};return eg(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 eg(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return gwe(this.matrix,e),eg(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Mat(this.normalize().shiftToAll().toObject());return eg(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 E0)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;Kd(o[a])&&(l+=o[a]);let c=Math.trunc(l);n[a]=c,r[a]=(l*1e3-c*1e3)/1e3}else Kd(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 gwe(this.matrix,n),eg(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 eg(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 E0)if(!n(this.values[r],e.values[r]))return!1;return!0}};var RC="Invalid Interval";function Rat(t,e){return!t||!t.isValid?_p.invalid("missing or invalid start"):!e||!e.isValid?_p.invalid("missing or invalid end"):e<t?_p.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 _p=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 Go("need to specify a reason the Interval is invalid");let r=e instanceof Ki?e:new Ki(e,n);if(Vn.throwOnInvalid)throw new fO(r);return new t({invalid:r})}static fromDateTimes(e,n){let r=AC(e),o=AC(n),i=Rat(r,o);return i??new t({start:r,end:o})}static after(e,n){let r=yo.fromDurationLike(n),o=AC(e);return t.fromDateTimes(o,o.plus(r))}static before(e,n){let r=yo.fromDurationLike(n),o=AC(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=yo.fromISO(o,n);if(d.isValid)return t.after(i,d)}else if(c){let d=yo.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(AC).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=yo.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()})`:RC}[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=Yh,n={}){return this.isValid?Gi.create(this.s.loc.clone(n),e).formatInterval(this):RC}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:RC}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:RC}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:RC}toFormat(e,{separator:n=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:RC}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):yo.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}};var Dp=class{static hasDST(e=Vn.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 Lc(e,Vn.defaultZone)}static getStartOfWeek({locale:e=null,locObj:n=null}={}){return(n||Jn.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:n=null}={}){return(n||Jn.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:n=null}={}){return(n||Jn.create(e)).getWeekendDays().slice()}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null,outputCalendar:i="gregory"}={}){return(o||Jn.create(n,r,i)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null,outputCalendar:i="gregory"}={}){return(o||Jn.create(n,r,i)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null}={}){return(o||Jn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:o=null}={}){return(o||Jn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return Jn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return Jn.create(n,null,"gregory").eras(e)}static features(){return{relative:bO(),localeWeek:xO()}}};function bwe(t,e){let n=o=>o.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(yo.fromMillis(r).as("days"))}function Aat(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=bwe(c,d);return(f-f%7)/7}],["days",bwe]],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 xwe(t,e,n,r){let[o,i,a,l]=Aat(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=yo.fromObject(i,r);return d.length>0?yo.fromMillis(c,r).shiftTo(...d).plus(f):f}var Bq={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"},Cwe={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]},kat=Bq.hanidec.replace(/[\[|\]]/g,"").split("");function Swe(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(Bq.hanidec)!==-1)e+=kat.indexOf(t[n]);else for(let o in Cwe){let[i,a]=Cwe[o];r>=i&&r<=a&&(e+=r-i)}}return parseInt(e,10)}else return e}function Lu({numberingSystem:t},e=""){return new RegExp(`${Bq[t||"latn"]}${e}`)}var Pat="missing Intl.DateTimeFormat.formatToParts support";function Un(t,e=n=>n){return{regex:t,deser:([n])=>e(Swe(n))}}var Iat="\xA0",Twe=`[ ${Iat}]`,_we=new RegExp(Twe,"g");function Fat(t){return t.replace(/\./g,"\\.?").replace(_we,Twe)}function wwe(t){return t.replace(/\./g,"").replace(_we," ").toLowerCase()}function Oc(t,e){return t===null?null:{regex:RegExp(t.map(Fat).join("|")),deser:([n])=>t.findIndex(r=>wwe(n)===wwe(r))+e}}function Ewe(t,e){return{regex:t,deser:([,n,r])=>C0(n,r),groups:e}}function EO(t){return{regex:t,deser:([e])=>e}}function Bat(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function zat(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=S=>({regex:RegExp(Bat(S.val)),deser:([C])=>C,literal:!0}),b=(S=>{if(t.literal)return g(S);switch(S.val){case"G":return Oc(e.eras("short"),0);case"GG":return Oc(e.eras("long"),0);case"y":return Un(d);case"yy":return Un(m,PT);case"yyyy":return Un(i);case"yyyyy":return Un(h);case"yyyyyy":return Un(a);case"M":return Un(l);case"MM":return Un(r);case"MMM":return Oc(e.months("short",!0),1);case"MMMM":return Oc(e.months("long",!0),1);case"L":return Un(l);case"LL":return Un(r);case"LLL":return Oc(e.months("short",!1),1);case"LLLL":return Oc(e.months("long",!1),1);case"d":return Un(l);case"dd":return Un(r);case"o":return Un(c);case"ooo":return Un(o);case"HH":return Un(r);case"H":return Un(l);case"hh":return Un(r);case"h":return Un(l);case"mm":return Un(r);case"m":return Un(l);case"q":return Un(l);case"qq":return Un(r);case"s":return Un(l);case"ss":return Un(r);case"S":return Un(c);case"SSS":return Un(o);case"u":return EO(f);case"uu":return EO(l);case"uuu":return Un(n);case"a":return Oc(e.meridiems(),0);case"kkkk":return Un(i);case"kk":return Un(m,PT);case"W":return Un(l);case"WW":return Un(r);case"E":case"c":return Un(n);case"EEE":return Oc(e.weekdays("short",!1),1);case"EEEE":return Oc(e.weekdays("long",!1),1);case"ccc":return Oc(e.weekdays("short",!0),1);case"cccc":return Oc(e.weekdays("long",!0),1);case"Z":case"ZZ":return Ewe(new RegExp(`([+-]${l.source})(?::(${r.source}))?`),2);case"ZZZ":return Ewe(new RegExp(`([+-]${l.source})(${r.source})?`),2);case"z":return EO(/[a-z_+-/]{1,256}?/i);case" ":return EO(/[^\S\n\r]/);default:return g(S)}})(t)||{invalidReason:Pat};return b.token=t,b}var Vat={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 Uat(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=Vat[a];if(typeof l=="object"&&(l=l[i]),l)return{literal:!1,val:l}}function jat(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Hat(t,e,n){let r=t.match(e);if(r){let o={},i=1;for(let a in n)if(Jh(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 Wat(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 Mt(t.z)||(n=ja.create(t.z)),Mt(t.Z)||(n||(n=new Wi(t.Z)),r=t.Z),Mt(t.q)||(t.M=(t.q-1)*3+1),Mt(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),Mt(t.u)||(t.S=kT(t.u)),[Object.keys(t).reduce((i,a)=>{let l=e(a);return l&&(i[l]=t[a]),i},{}),n,r]}var zq=null;function Kat(){return zq||(zq=gn.fromMillis(1555555555555)),zq}function Gat(t,e){if(t.literal)return t;let n=Gi.macroTokenToFormatOpts(t.val),r=jq(n,e);return r==null||r.includes(void 0)?t:r}function Vq(t,e){return Array.prototype.concat(...t.map(n=>Gat(n,e)))}function Uq(t,e,n){let r=Vq(Gi.parseFormat(n),t),o=r.map(a=>zat(a,t)),i=o.find(a=>a.invalidReason);if(i)return{input:e,tokens:r,invalidReason:i.invalidReason};{let[a,l]=jat(o),c=RegExp(a,"i"),[d,f]=Hat(e,c,l),[m,h,g]=f?Wat(f):[null,null,void 0];if(Jh(f,"a")&&Jh(f,"H"))throw new Dc("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 Dwe(t,e,n){let{result:r,zone:o,specificOffset:i,invalidReason:a}=Uq(t,e,n);return[r,o,i,a]}function jq(t,e){if(!t)return null;let r=Gi.create(e,t).dtFormatter(Kat()),o=r.formatToParts(),i=r.resolvedOptions();return o.map(a=>Uat(a,t,i))}var Hq="Invalid DateTime",$we=864e13;function TO(t){return new Ki("unsupported zone",`the zone "${t.name}" is not supported`)}function Wq(t){return t.weekData===null&&(t.weekData=MT(t.c)),t.weekData}function Kq(t){return t.localWeekData===null&&(t.localWeekData=MT(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function T0(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 kwe(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 _O(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 $O(t,e,n){return kwe(SC(t),e,n)}function Nwe(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,TC(r,o))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},a=yo.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=SC(i),[c,d]=kwe(l,n,t.zone);return a!==0&&(c+=a,d=t.zone.offset(c)),{ts:c,o:d}}function BT(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 Ki("unparsable",`the input "${o}" can't be parsed as ${r}`))}function DO(t,e,n=!0){return t.isValid?Gi.create(Jn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function Gq(t,e){let n=t.c.year>9999||t.c.year<0,r="";return n&&t.c.year>=0&&(r+="+"),r+=vo(t.c.year,n?6:4),e?(r+="-",r+=vo(t.c.month),r+="-",r+=vo(t.c.day)):(r+=vo(t.c.month),r+=vo(t.c.day)),r}function Lwe(t,e,n,r,o,i){let a=vo(t.c.hour);return e?(a+=":",a+=vo(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(a+=":")):a+=vo(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(a+=vo(t.c.second),(t.c.millisecond!==0||!r)&&(a+=".",a+=vo(t.c.millisecond,3))),o&&(t.isOffsetFixed&&t.offset===0&&!i?a+="Z":t.o<0?(a+="-",a+=vo(Math.trunc(-t.o/60)),a+=":",a+=vo(Math.trunc(-t.o%60))):(a+="+",a+=vo(Math.trunc(t.o/60)),a+=":",a+=vo(Math.trunc(t.o%60)))),i&&(a+="["+t.zone.ianaName+"]"),a}var Pwe={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Yat={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Zat={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Iwe=["year","month","day","hour","minute","second","millisecond"],qat=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Xat=["year","ordinal","hour","minute","second","millisecond"];function Jat(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 CC(t);return e}function Owe(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Jat(t)}}function Mwe(t,e){let n=Lc(e.zone,Vn.defaultZone),r=Jn.fromObject(e),o=Vn.now(),i,a;if(Mt(t.year))i=o;else{for(let d of Iwe)Mt(t[d])&&(t[d]=Pwe[d]);let l=Nq(t)||Lq(t);if(l)return gn.invalid(l);let c=n.offset(o);[i,a]=$O(t,c,n)}return new gn({ts:i,zone:n,loc:r,o:a})}function Rwe(t,e,n){let r=Mt(n.round)?!0:n.round,o=(a,l)=>(a=wC(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 Awe(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||Vn.defaultZone,r=e.invalid||(Number.isNaN(e.ts)?new Ki("invalid input"):null)||(n.isValid?null:TO(n));this.ts=Mt(e.ts)?Vn.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=_O(this.ts,l),r=Number.isNaN(o.year)?new Ki("invalid input"):null,o=r?null:o,i=r?null:l}this._zone=n,this.loc=e.loc||Jn.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]=Awe(arguments),[r,o,i,a,l,c,d]=n;return Mwe({year:r,month:o,day:i,hour:a,minute:l,second:c,millisecond:d},e)}static utc(){let[e,n]=Awe(arguments),[r,o,i,a,l,c,d]=n;return e.zone=Wi.utcInstance,Mwe({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=Lc(n.zone,Vn.defaultZone);return o.isValid?new t({ts:r,zone:o,loc:Jn.fromObject(n)}):t.invalid(TO(o))}static fromMillis(e,n={}){if(Kd(e))return e<-$we||e>$we?t.invalid("Timestamp out of range"):new t({ts:e,zone:Lc(n.zone,Vn.defaultZone),loc:Jn.fromObject(n)});throw new Go(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Kd(e))return new t({ts:e*1e3,zone:Lc(n.zone,Vn.defaultZone),loc:Jn.fromObject(n)});throw new Go("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};let r=Lc(n.zone,Vn.defaultZone);if(!r.isValid)return t.invalid(TO(r));let o=Jn.fromObject(n),i=_C(e,Owe),{minDaysInFirstWeek:a,startOfWeek:l}=$q(i,o),c=Vn.now(),d=Mt(n.specificOffset)?r.offset(c):n.specificOffset,f=!Mt(i.ordinal),m=!Mt(i.year),h=!Mt(i.month)||!Mt(i.day),g=m||h,y=i.weekYear||i.weekNumber;if((g||f)&&y)throw new Dc("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&f)throw new Dc("Can't mix ordinal dates with month/day");let b=y||i.weekday&&!g,S,C,w=_O(c,d);b?(S=qat,C=Yat,w=MT(w,a,l)):f?(S=Xat,C=Zat,w=wO(w)):(S=Iwe,C=Pwe);let E=!1;for(let k of S){let F=i[k];Mt(F)?E?i[k]=C[k]:i[k]=w[k]:E=!0}let _=b?W3e(i,a,l):f?K3e(i):Nq(i),N=_||Lq(i);if(N)return t.invalid(N);let $=b?_q(i,a,l):f?Dq(i):i,[M,O]=$O($,d,r),A=new t({ts:M,zone:r,o:O,loc:o});return i.weekday&&g&&e.weekday!==A.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${i.weekday} and a date of ${A.toISO()}`):A}static fromISO(e,n={}){let[r,o]=uwe(e);return BT(r,o,n,"ISO 8601",e)}static fromRFC2822(e,n={}){let[r,o]=cwe(e);return BT(r,o,n,"RFC 2822",e)}static fromHTTP(e,n={}){let[r,o]=dwe(e);return BT(r,o,n,"HTTP",n)}static fromFormat(e,n,r={}){if(Mt(e)||Mt(n))throw new Go("fromFormat requires an input string and a format");let{locale:o=null,numberingSystem:i=null}=r,a=Jn.fromOpts({locale:o,numberingSystem:i,defaultToEN:!0}),[l,c,d,f]=Dwe(a,e,n);return f?t.invalid(f):BT(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]=mwe(e);return BT(r,o,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Go("need to specify a reason the DateTime is invalid");let r=e instanceof Ki?e:new Ki(e,n);if(Vn.throwOnInvalid)throw new dO(r);return new t({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,n={}){let r=jq(e,Jn.fromObject(n));return r?r.map(o=>o?o.val:null).join(""):null}static expandFormat(e,n={}){return Vq(Gi.parseFormat(e),Jn.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?Wq(this).weekYear:NaN}get weekNumber(){return this.isValid?Wq(this).weekNumber:NaN}get weekday(){return this.isValid?Wq(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Kq(this).weekday:NaN}get localWeekNumber(){return this.isValid?Kq(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Kq(this).weekYear:NaN}get ordinal(){return this.isValid?wO(this.c).ordinal:NaN}get monthShort(){return this.isValid?Dp.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Dp.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Dp.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Dp.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=SC(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=_O(c,a),m=_O(d,l);return f.hour===m.hour&&f.minute===m.minute&&f.second===m.second&&f.millisecond===m.millisecond?[T0(this,{ts:c}),T0(this,{ts:d})]:[this]}get isInLeapYear(){return w0(this.year)}get daysInMonth(){return TC(this.year,this.month)}get daysInYear(){return this.isValid?Xh(this.year):NaN}get weeksInWeekYear(){return this.isValid?S0(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?S0(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:n,numberingSystem:r,calendar:o}=Gi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:o}}toUTC(e=0,n={}){return this.setZone(Wi.instance(e),n)}toLocal(){return this.setZone(Vn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Lc(e,Vn.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]=$O(a,i,e)}return T0(this,{ts:o,zone:e})}else return t.invalid(TO(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){let o=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return T0(this,{loc:o})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let n=_C(e,Owe),{minDaysInFirstWeek:r,startOfWeek:o}=$q(n,this.loc),i=!Mt(n.weekYear)||!Mt(n.weekNumber)||!Mt(n.weekday),a=!Mt(n.ordinal),l=!Mt(n.year),c=!Mt(n.month)||!Mt(n.day),d=l||c,f=n.weekYear||n.weekNumber;if((d||a)&&f)throw new Dc("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new Dc("Can't mix ordinal dates with month/day");let m;i?m=_q({...MT(this.c,r,o),...n},r,o):Mt(n.ordinal)?(m={...this.toObject(),...n},Mt(n.day)&&(m.day=Math.min(TC(m.year,m.month),m.day))):m=Dq({...wO(this.c),...n});let[h,g]=$O(m,this.o,this.zone);return T0(this,{ts:h,o:g})}plus(e){if(!this.isValid)return this;let n=yo.fromDurationLike(e);return T0(this,Nwe(this,n))}minus(e){if(!this.isValid)return this;let n=yo.fromDurationLike(e).negate();return T0(this,Nwe(this,n))}startOf(e,{useLocaleWeeks:n=!1}={}){if(!this.isValid)return this;let r={},o=yo.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?Gi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):Hq}toLocaleString(e=Yh,n={}){return this.isValid?Gi.create(this.loc.clone(n),e).formatDateTime(this):Hq}toLocaleParts(e={}){return this.isValid?Gi.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=Gq(this,a);return l+="T",l+=Lwe(this,a,n,r,o,i),l}toISODate({format:e="extended"}={}){return this.isValid?Gq(this,e==="extended"):null}toISOWeekDate(){return DO(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":"")+Lwe(this,a==="extended",n,e,r,i):null}toRFC2822(){return DO(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return DO(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Gq(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")),DO(this,o,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Hq}[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 yo.invalid("created by diffing an invalid DateTime");let o={locale:this.locale,numberingSystem:this.numberingSystem,...r},i=Z3e(n).map(yo.normalizeUnit),a=e.valueOf()>this.valueOf(),l=a?this:e,c=a?e:this,d=xwe(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?_p.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),Rwe(n,this.plus(r),{...e,numeric:"always",units:o,unit:i})}toRelativeCalendar(e={}){return this.isValid?Rwe(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 Go("min requires all arguments be DateTimes");return Oq(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Go("max requires all arguments be DateTimes");return Oq(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){let{locale:o=null,numberingSystem:i=null}=r,a=Jn.fromOpts({locale:o,numberingSystem:i,defaultToEN:!0});return Uq(a,e,n)}static fromStringExplain(e,n,r={}){return t.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return Yh}static get DATE_MED(){return dT}static get DATE_MED_WITH_WEEKDAY(){return cq}static get DATE_FULL(){return fT}static get DATE_HUGE(){return pT}static get TIME_SIMPLE(){return mT}static get TIME_WITH_SECONDS(){return hT}static get TIME_WITH_SHORT_OFFSET(){return gT}static get TIME_WITH_LONG_OFFSET(){return vT}static get TIME_24_SIMPLE(){return yT}static get TIME_24_WITH_SECONDS(){return bT}static get TIME_24_WITH_SHORT_OFFSET(){return xT}static get TIME_24_WITH_LONG_OFFSET(){return CT}static get DATETIME_SHORT(){return ST}static get DATETIME_SHORT_WITH_SECONDS(){return wT}static get DATETIME_MED(){return ET}static get DATETIME_MED_WITH_SECONDS(){return TT}static get DATETIME_MED_WITH_WEEKDAY(){return dq}static get DATETIME_FULL(){return _T}static get DATETIME_FULL_WITH_SECONDS(){return DT}static get DATETIME_HUGE(){return $T}static get DATETIME_HUGE_WITH_SECONDS(){return NT}};function AC(t){if(gn.isDateTime(t))return t;if(t&&t.valueOf&&Kd(t.valueOf()))return gn.fromJSDate(t);if(t&&typeof t=="object")return gn.fromObject(t);throw new Go(`Unknown datetime argument: ${t}, of type ${typeof t}`)}function NO(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 Fwe,CanvasClient as Bwe}from"@uniformdev/canvas";async function LO({instanceType:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new Bwe(pt),a=await cO({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?NO(m):void 0,orderBy:Array.isArray(f)?f:f?[f]:void 0,locale:r,skipPatternResolution:!0,state:Fwe})).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 OO({id:t}){let n=await new Bwe(pt).getCompositionById({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,compositionId:t,state:Fwe});return{content:[{type:"text",text:JSON.stringify(n,null,2)}]}}var Qat={id:zwe.string()};function Vwe(t){t.tool("compositionList","Lists available Uniform compositions",wp.shape,async e=>await LO({...e,instanceType:"composition",getEditUrl:uO})),t.tool("compositionGet","Gets the full contents of a Uniform composition",Qat,async e=>await OO(e))}import{ContentClient as est}from"@uniformdev/canvas";import*as RO from"zod";import*as tg from"zod";var Uwe=tg.object({name:tg.string().describe('Title-cased display name of the component. Ex: "Hero"'),id:tg.string().describe("Public ID of the content type, the camelCase version of name, using only alphanumeric characters"),description:tg.string().describe("Describe the purpose of the content type in 1-2 sentences."),fields:tg.array(t6).describe("The fields of the content type. The key is the publicId of the field.").optional()});function jwe(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 MO(t){return`${pt.baseWebUrl}/dashboards/canvas/content-types/${t}`}var tst={action:RO.enum(["create","update","delete"]).describe("The action to perform"),publicId:RO.string().describe("Public ID of the component, the camelCase version of name, using only alphanumeric characters"),contentType:Uwe.describe("Full content type definition to create. Omit for update or delete.").optional(),patches:Q_.describe("JSON patch to apply to the existing component definition. Omit for create or delete.").optional()};function Hwe(t){t.tool("contentTypeAction","Creates, updates, or deletes a Uniform Content Type definition",tst,async({publicId:e,action:n,contentType:r,patches:o})=>{let i=new est(pt),a=!1;if(n==="create"){if(!r)throw new Error("Content type definition is required for create");let l=jwe(r);l.fields&&(a=Oy(l.fields),My(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=J_(c,o);if(f.fields){a=Oy(f.fields);let m=f.fields?.filter(h=>h.type==="richText").map(h=>h.id).filter(h=>!d?.includes(h));My(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:MO(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 Wwe}from"@uniformdev/canvas";import*as Kwe from"zod";var nst={id:Kwe.string()};function Gwe(t){t.tool("contentTypeList","Lists all Uniform Content Type definitions",async()=>{let r=(await new Wwe(pt).getContentTypes()).contentTypes.map(o=>({id:o.id,name:o.name,description:o.description,editUrl:MO(o.id)}));return{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}),t.tool("contentTypeGet","Gets a Uniform Content Type definition details (fields, etc.)",nst,async({id:e})=>{let o=(await new Wwe(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 Ywe(t){t.tool("createUuid","Creates a new random UUID",async()=>({content:[{type:"text",text:crypto.randomUUID()}]}))}import*as zT from"zod";import{CANVAS_DRAFT_STATE as AO,ContentClient as rst,convertEntryToPutEntry as ost,getEffectivePropertyValue as ist}from"@uniformdev/canvas";async function ast(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=ist({conditionIndex:-1,locale:void 0,greedyLocaleMatching:!0,property:a}),c=U4e({value:l,isNew:n,contentType:i});t.entry._name=c}async function kO({action:t,id:e,instructions:n,isPattern:r,patternId:o,getEditUrl:i}){let a=new rst(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:AO,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=aT({...h,entry:y});l=new Wd(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:AO,entry:{type:n.type,_id:e,fields:{},_pattern:o}}),d=e):l=new Wd({_id:e,_name:"New Entry",type:n.type,_overridability:{hideLockedParameters:!0}})}if(d){if(c=(await a.getEntries({entryIDs:[e],pattern:r,state:AO,skipDataResolution:!0,skipPatternResolution:!1,withComponentIDs:!0,skipOverridesResolution:!0})).entries[0],!c)throw new Error("Entry not found");let h=aT(c);l=new Wd(h.composition)}t==="delete"&&await a.deleteEntry({entryId:e});let m=D3e();if(l){t!=="duplicate"&&(await aO(n?.localeUpdates?.enableLocales),f=await GL({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??[],slotUpdates:{},localeUpdates:n?.localeUpdates,currentEditorLocale:void 0,referenceData:m,isEditingPattern:r}));let h=l.exportTree(),g=l.exportMetadata(),y=ost(i3e(h,c??{projectId:pt.projectId,pattern:r},g,AO,c?.releaseId,c?.editionId));r||await ast(y,m,t==="create"),await a.upsertEntry(y)}return{content:[{type:"text",text:JSON.stringify({...f,editUrl:i(e)},null,2)}]}}function PO(t){return`${pt.baseWebUrl}/dashboards/canvas/entries/${t}`}var sst={action:zT.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:zT.string().uuid().describe("UUID of the entry to create, update, delete, or duplicate"),patternId:zT.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:gne.describe("Modification instructions for the entry. Omit for delete and duplicate.").optional()};function Zwe(t){t.tool("entryAction","Creates, updates, or deletes a Uniform Entry",sst,async e=>await kO({...e,isPattern:!1,getEditUrl:PO,patternId:e.patternId}))}import*as Jwe from"zod";import{CANVAS_DRAFT_STATE as qwe,ContentClient as Xwe}from"@uniformdev/canvas";async function IO({isPattern:t,searchExpressionPrompt:e,username:n,locale:r,getEditUrl:o}){let i=new Xwe(pt),a=await cO({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:qwe,search:d,filters:m?NO(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 FO({id:t,isPattern:e}){let r=await new Xwe(pt).getEntries({skipDataResolution:!0,withComponentIDs:!0,skipOverridesResolution:!0,skipPatternResolution:!1,pattern:e,entryIDs:[t],state:qwe});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 lst={id:Jwe.string()};function Qwe(t){t.tool("entryList","Lists available Uniform entries",wp.shape,async e=>await IO({...e,isPattern:!1,getEditUrl:PO})),t.tool("entryGet","Gets the full contents of a Uniform entry",lst,async e=>await FO({...e,isPattern:!1}))}import*as zO from"zod";function BO(t){return`${pt.baseWebUrl}/dashboards/canvas/entry-patterns/${t}`}var ust={action:zO.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:zO.string().uuid().describe("UUID of the entry pattern to create, update, delete, or duplicate"),instructions:vne.describe("Modification instructions for the entry pattern. Omit for delete and duplicate.").optional()};function eEe(t){t.tool("entryPatternAction","Creates, updates, or deletes a Uniform Entry Pattern",ust,async e=>await kO({...e,isPattern:!0,getEditUrl:BO,patternId:void 0}))}import*as tEe from"zod";var cst={id:tEe.string()};function nEe(t){t.tool("entryPatternList","Lists available Uniform entry patterns",wp.shape,async e=>await IO({...e,isPattern:!0,getEditUrl:BO})),t.tool("entryPatternGet","Gets the full contents of a Uniform entry pattern",cst,async e=>await FO({...e,isPattern:!0}))}import{ProjectClient as dst}from"@uniformdev/canvas";async function fst(){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 rEe(t){t.tool("getUniformEnvironment","Get the connected Uniform Project name, edit URL, and current user",{},async()=>{try{let e=new dst(pt),[n,r]=await Promise.all([e.get({projectId:pt.projectId}),fst()]),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 pst}from"@uniformdev/canvas";function oEe(t){t.tool("localeList","Lists all registered Uniform locales",async()=>{let n=await new pst(pt).get();return{content:[{type:"text",text:JSON.stringify({locales:n.results,editUrl:`${pt.baseWebUrl}/settings/localization`},null,2)}]}})}import*as UO from"zod";function VO(t){return`${pt.baseWebUrl}/dashboards/canvas/edit/${t}`}var mst={action:UO.enum(["create","update","delete","duplicate"]).describe("The action to perform"),id:UO.string().uuid().describe("UUID of the pattern instance to create, update, delete, or duplicate"),instructions:mne.describe("Modification instructions for the pattern. Omit for delete and duplicate.").optional()};function iEe(t){t.tool("patternAction","Creates, updates, or deletes a Uniform Component Pattern or Composition Pattern",mst,async e=>await lO({...e,isPattern:!0,getEditUrl:VO,patternId:void 0}))}import*as jO from"zod";var hst={instanceType:jO.enum(["componentPattern","compositionPattern"]),...wp.shape},gst={id:jO.string()};function aEe(t){t.tool("patternList","Lists available Uniform component patterns or composition patterns",hst,async e=>await LO({...e,getEditUrl:VO})),t.tool("patternGet","Gets the full contents of a Uniform component pattern or composition pattern",gst,async e=>await OO(e))}var Ha=new vst({name:"Uniform MCP",version:"1.0.0"});cne(Ha);pne(Ha);Hwe(Ha);Gwe(Ha);Zwe(Ha);Qwe(Ha);nEe(Ha);eEe(Ha);aEe(Ha);iEe(Ha);$3e(Ha);Vwe(Ha);Ywe(Ha);rEe(Ha);oEe(Ha);var bst=new yst;await Ha.connect(bst);process.stderr.write(`Uniform MCP server started
5287
5287
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/uniform-mcp",
3
- "version": "20.35.1-alpha.87+2cf616f622",
3
+ "version": "20.36.0",
4
4
  "description": "Uniform MCP Server",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "bin": {
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@modelcontextprotocol/sdk": "^1.12.0",
25
- "@uniformdev/canvas": "20.35.1-alpha.87+2cf616f622",
25
+ "@uniformdev/canvas": "20.36.0",
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.35.1-alpha.87+2cf616f622",
38
- "@uniformdev/files": "20.35.1-alpha.87+2cf616f622",
39
- "@uniformdev/mesh-edgehancer-sdk": "20.35.1-alpha.87+2cf616f622",
40
- "@uniformdev/richtext": "20.35.1-alpha.87+2cf616f622",
37
+ "@uniformdev/design-system": "20.36.0",
38
+ "@uniformdev/files": "20.36.0",
39
+ "@uniformdev/mesh-edgehancer-sdk": "20.36.0",
40
+ "@uniformdev/richtext": "20.36.0",
41
41
  "vitest": "3.2.4"
42
42
  },
43
- "gitHead": "2cf616f622322e5322575c106742078b5e3d7992"
43
+ "gitHead": "3e8e0c88d24d2576b74b64a48f7d32851979bf40"
44
44
  }