claude-mem 13.34.2 → 13.35.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.
@@ -62,9 +62,9 @@ ${s.stack}`:` ${s.message}`:this.getLevel()===0&&typeof s=="object"?u=`
62
62
  `,"utf8")}catch(f){let m=f instanceof Error?f:new Error(String(f));go(`[LOGGER] Failed to write to log file: ${m.message}
63
63
  ${m.stack??""}
64
64
  `)}else go(p+`
65
- `)}debug(e,r,n,i){this.log(0,e,r,n,i)}info(e,r,n,i){this.log(1,e,r,n,i)}warn(e,r,n,i){this.log(2,e,r,n,i)}setErrorSink(e){hS=e}error(e,r,n,i){this.log(3,e,r,n,i),this.routeErrorToSink(r,n,i)}routeErrorToSink(e,r,n){try{if(!hS||!(n instanceof Error))return;hS(n)}catch{}}dataIn(e,r,n,i){this.info(e,`\u2192 ${r}`,n,i)}dataOut(e,r,n,i){this.info(e,`\u2190 ${r}`,n,i)}success(e,r,n,i){this.info(e,`\u2713 ${r}`,n,i)}failure(e,r,n,i){this.error(e,`\u2717 ${r}`,n,i)}},S=new gS});function Kf(t){return/^Bearer\s+(.+)$/i.exec(t.trim())?.[1]?.trim()||null}function Lf(t){let e=t.ip||t.socket.remoteAddress||"";return e==="127.0.0.1"||e==="::1"||e==="::ffff:127.0.0.1"||e==="localhost"}function YK(t){let e=Nf(t.header("host")??"");return e==="127.0.0.1"||e==="localhost"||e==="::1"}function Nf(t){let e=t.trim().toLowerCase();if(e.startsWith("[")){let n=e.indexOf("]");return n===-1?e:e.slice(1,n)}let r=e.lastIndexOf(":");return r>-1&&/^\d+$/.test(e.slice(r+1))?e.slice(0,r):e}function qf(t){return!!(t.header("forwarded")||t.header("x-forwarded-for")||t.header("x-forwarded-host")||t.header("x-real-ip"))}var bS=R(()=>{"use strict"});function ooe(t=process.platform){return t==="win32"?8e3:5e3}function QK(t=process.platform){return Uf.SESSION_INIT_HOOK_CAP-ooe(t)}function XK(t){return process.platform==="win32"?Math.round(t*Uf.WINDOWS_MULTIPLIER):t}var Uf,ZK=R(()=>{"use strict";Uf={HEALTH_CHECK:3e3,API_REQUEST:3e4,SESSION_INIT_HOOK_CAP:15e3,SESSION_INIT_REQUEST:1e4,SESSION_INIT_REQUEST_MAX:14e3,HOOK_READINESS_WAIT:1e4,POST_SPAWN_WAIT:15e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5}});function loe(t){try{return coe.has(new URL(t).protocol)}catch{return!1}}function uoe(t){tL!==t&&(tL=t,S.warn("SDK","CLAUDE_MEM_OPENROUTER_BASE_URL is not an http(s) URL; requests to it will fail until it is fixed",{baseUrl:t}))}function $f(t){let e=(t??"").trim();if(!e)return aoe;if(!loe(e)){uoe(e);let i=e.replace(eL,"");return i.toLowerCase().endsWith(Ff)?i:`${i}${Ff}`}let r=new URL(e),n=r.pathname.replace(eL,"");return r.pathname=n.toLowerCase().endsWith(Ff)?n:`${n}${Ff}`,r.href}function rL(t){try{return new URL(t).hostname.toLowerCase()==="openrouter.ai"}catch{return!1}}var aoe,Ff,coe,eL,tL,Jf=R(()=>{"use strict";oe();aoe="https://openrouter.ai/api/v1/chat/completions",Ff="/chat/completions",coe=new Set(["http:","https:"]),eL=/\/+$/;tL=null});function yoe(t){let e=t.CLAUDE_MEM_OPENROUTER_MODEL;if(typeof e!="string"||!hoe.has(e.trim()))return!1;let r=typeof t.CLAUDE_MEM_OPENROUTER_BASE_URL=="string"?t.CLAUDE_MEM_OPENROUTER_BASE_URL.trim():"";return r===""||rL(r)}function oL(t,e){return(0,ds.join)((0,ds.dirname)(t),`.${(0,ds.basename)(t)}.${e.markerTag}`)}function vS(t,e){try{(0,wo.writeFileSync)(oL(t,e),new Date().toISOString(),{encoding:"utf-8",mode:384})}catch{}}function goe(t){if(typeof t!="string")return null;let e=t.trim();if(e.length===0)return null;try{let r=new URL(e).hostname;if(r===poe||r===foe)return moe}catch{return null}return null}var wo,ds,cu,doe,poe,foe,moe,hoe,nL,iL,sL,xn,Za=R(()=>{"use strict";wo=require("fs"),ds=require("path"),cu=require("os");ZK();bo();Jf();Xa();doe="security_alert",poe="sync-hub.black-pond-afbb.workers.dev",foe="ziczmqtpmaxbornfghye.supabase.co",moe="https://sync.cmem.ai",hoe=new Set(["xiaomi/mimo-v2-flash:free"]);nL=18e4,iL=[{key:"CLAUDE_MEM_LLM_TIMEOUT_MS",legacy:"30000",markerTag:"llm-timeout-migrated-v1"},{key:"CLAUDE_MEM_FIELD_OPTIMIZE_TIMEOUT_MS",legacy:"30000",markerTag:"field-optimize-timeout-migrated-v1"}];sL=new Set;xn=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_SESSION_START_INCLUDE_ALL_SOURCES:"false",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_ALLOWED_ORIGINS:"",CLAUDE_MEM_PUBLIC_URL:"",CLAUDE_MEM_API_TIMEOUT_MS:String(XK(Uf.API_REQUEST)),CLAUDE_MEM_SESSION_INIT_TIMEOUT_MS:String(QK()),CLAUDE_MEM_IDLE_EXIT_SEC:"0",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_SKIP_BASH_PATTERNS:"",CLAUDE_MEM_SKIP_SUBAGENT_OBSERVATIONS:"false",CLAUDE_MEM_SKIP_AGENT_TYPES:"",CLAUDE_MEM_CAPTURE_ADVISOR_CALLS:"false",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CODEX_MODEL:"",CLAUDE_MEM_CODEX_PATH:"codex",CLAUDE_MEM_CODEX_REASONING_EFFORT:"low",CLAUDE_MEM_CODEX_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_CODEX_OBSERVATION_BATCH_SIZE:"8",CLAUDE_MEM_CODEX_OBSERVATION_BATCH_MAX_CHARS:"32000",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_API_KEYS:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-flash-latest",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_API_KEYS:"",CLAUDE_MEM_OPENROUTER_MODEL:"cohere/north-mini-code:free",CLAUDE_MEM_OPENROUTER_BASE_URL:"",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_EXTRA_BODY:"",CLAUDE_MEM_OPENROUTER_REASONING_EFFORT:"",CLAUDE_MEM_OPENAI_COMPAT_PRESET:"",CLAUDE_MEM_OPENAI_COMPAT_API_KEY:"",CLAUDE_MEM_OPENAI_COMPAT_API_KEYS:"",CLAUDE_MEM_OPENAI_COMPAT_BASE_URL:"",CLAUDE_MEM_OPENAI_COMPAT_MODEL:"",CLAUDE_MEM_QUOTA_FALLBACK_PROVIDER:"",CLAUDE_MEM_QUOTA_FALLBACK_MODEL:"",CLAUDE_MEM_QUOTA_THRESHOLD_FIVE_HOUR:"0.95",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY:"0.93",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY_OPUS:"0.93",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY_SONNET:"0.92",CLAUDE_MEM_QUOTA_THRESHOLD_OVERAGE:"0.95",CLAUDE_MEM_DATA_DIR:(0,ds.join)((0,cu.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CLAUDE_CONFIG_DIR:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:"",CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:"",CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_MAIN_AGENT_ONLY:"true",CLAUDE_MEM_REINFORCE_ALPHA:"0",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"true",CLAUDE_MEM_FILE_READ_GATE_ENABLED:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:(0,ds.join)((0,cu.homedir)(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_CODEX_SUBAGENT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_OBSERVER_MAX_CONVERSATION_CHARS:"400000",CLAUDE_MEM_OBSERVER_CONTEXT_WINDOW:"",CLAUDE_MEM_OBSERVER_MAX_OUTPUT_TOKENS:"4096",CLAUDE_MEM_OBSERVE_BARE_PROMPTS:"false",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_REDACT_ENABLED:"false",CLAUDE_MEM_REDACT_DISABLED_BUILTINS:"",CLAUDE_MEM_REDACT_CUSTOM_PATTERNS:"[]",CLAUDE_MEM_REDACT_LOG_MATCHES:"false",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_PROJECT_ENVIRONMENTS:"[]",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_FOLDER_MD_SKELETON_DENYLIST:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",CLAUDE_MEM_TIER_FAST_MODEL:"haiku",CLAUDE_MEM_TIER_SMART_MODEL:"sonnet",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database",CLAUDE_MEM_CHROMA_PREWARM_TIMEOUT_MS:"120000",CLAUDE_MEM_CHROMA_MUTATION_TIMEOUT_MS:"600000",CLAUDE_MEM_CHROMA_MAX_PENDING_MUTATIONS:"5000",CLAUDE_MEM_CHROMA_EMBEDDING_FUNCTION:"default",CLAUDE_MEM_CLOUD_SYNC_TOKEN:"",CLAUDE_MEM_CLOUD_SYNC_USER_ID:"",CLAUDE_MEM_CLOUD_SYNC_HUB_URL:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_ID:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_NAME:(0,cu.hostname)(),CLAUDE_MEM_CLOUD_SYNC_WS:"true",CLAUDE_MEM_CLOUD_SYNC_CONTENT_BATCH_SIZE:"40",CLAUDE_MEM_CLOUD_SYNC_REQUEST_TIMEOUT_MS:"90000",CLAUDE_MEM_LLM_TIMEOUT_MS:String(nL),CLAUDE_MEM_FIELD_OPTIMIZE_TIMEOUT_MS:String(nL),CLAUDE_MEM_TV_TOKEN:"",CLAUDE_MEM_PRO_TRIAL_EMAIL:"",CLAUDE_MEM_PRO_TRIAL_AT:"",CLAUDE_MEM_PRO_TRIAL_STATE:"",CLAUDE_MEM_PRO_TRIAL_ENDS_AT:"",CLAUDE_MEM_PRO_PLAN:"",CLAUDE_MEM_PRO_FALLBACK_AT:"",CLAUDE_MEM_PRO_FALLBACK_MESSAGE:"",CLAUDE_MEM_PRO_FALLBACK_ACTION:"",CLAUDE_MEM_PRO_FALLBACK_URL:"",CLAUDE_MEM_PRO_MEMORY_KEY:"",CLAUDE_MEM_PRO_MEMORY_BASE_URL:"",CLAUDE_MEM_PRO_MEMORY_MODEL:"",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_WRAPUPS_ENABLED:"true",CLAUDE_MEM_TELEGRAM_OBSERVATION_ALERTS_ENABLED:"false",CLAUDE_MEM_TELEGRAM_WRAPUP_ROUTES:"{}",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert,sensitive",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_GROK_BOT_AWARENESS_ENABLED:"true",CLAUDE_MEM_GROK_BOT_AWARENESS_AGENT_IDS:"521e962d-2ec3-4488-bfbc-54d5209ce118,95601360-61f7-4fd9-bb3a-2c976b2b85c0",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_CONCEPTS:"",CLAUDE_MEM_GROK_BOT_WEBHOOK_URL:"",CLAUDE_MEM_GROK_BOT_WEBHOOK_SECRET:"",CLAUDE_MEM_GROK_BOT_INJECT_ENABLED:"true",CLAUDE_MEM_GROK_BOT_INJECT_AGENT_IDS:"*",CLAUDE_MEM_GROK_BOT_INJECT_TIER:"episode",CLAUDE_MEM_GROK_BOT_INJECT_WINDOW:"80",CLAUDE_MEM_GROK_BOT_INJECT_FALLBACK:"house",CLAUDE_MEM_GROK_BOT_INJECT_PLATFORM_SOURCE:"",CLAUDE_MEM_GROK_BOT_INJECT_PROJECTS_BY_AGENT:"",CLAUDE_MEM_GROK_BOT_INJECT_MAX_LINE_CHARS:"160",CLAUDE_MEM_GROK_BOT_INJECT_DEBOUNCE_MS:"1500",CLAUDE_MEM_GROK_BOT_INJECT_STANDING_LINE:"",CLAUDE_MEM_CCS_ALIGN_ENABLED:"true",CLAUDE_MEM_CCS_ALIGN_VIEWER_IDS:"ccs-align",CLAUDE_MEM_CCS_ALIGN_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS:"false",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_API_KEY:"",CLAUDE_MEM_SERVER_PROJECT_ID:"",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:"",CLAUDE_MEM_DEDUP_ENABLED:"false",CLAUDE_MEM_DEDUP_COSINE_THRESHOLD:"0.80",CLAUDE_MEM_DEDUP_IDF_VETO_DF:"10",CLAUDE_MEM_DEDUP_MIN_SHARED_TOKENS:"2",CLAUDE_MEM_DEDUP_MIN_PROJECT_DOCS:"10",CLAUDE_MEM_DEDUP_MAX_SCAN:"2000",CLAUDE_MEM_DEDUP_MAX_BACKFILL_ROWS:"50000",CLAUDE_MEM_WORKER_AUTOSTART:"true",CLAUDE_MEM_PROJECT_NAME_SOURCE:"path"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){let r=process.env[e]??this.DEFAULTS[e];return e==="CLAUDE_MEM_WORKER_HOST"?this.normalizeWorkerHost(r):r}static normalizeWorkerHost(e){return e==="localhost"?"127.0.0.1":e}static finalizeSettings(e,r){let n=r?this.applyEnvOverrides(e):e;return n.CLAUDE_MEM_WORKER_HOST=this.normalizeWorkerHost(n.CLAUDE_MEM_WORKER_HOST),n}static getInt(e){let r=this.get(e);return parseInt(r,10)}static applyEnvOverrides(e){let r={...e};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(r[n]=process.env[n]);return r}static loadFromFile(e,r=!0){try{if(!(0,wo.existsSync)(e)){let d=this.getAllDefaults();try{_n(e,d,{mode:384});for(let p of iL)vS(e,p);console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(p){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,p instanceof Error?p.message:String(p))}return this.finalizeSettings(d,r)}let n=(0,wo.readFileSync)(e,"utf-8"),i=cS(n),s=Eo(i),o=s!==i,a=uS(i),c=o&&Object.keys(a).some(d=>d!=="env");if(o&&!c)try{_n(e,s,{mode:384}),console.warn("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(d){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,d instanceof Error?d.message:String(d))}if(s.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES===doe){s={...s,CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:this.DEFAULTS.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES};try{_n(e,c?{...a,env:s}:s,{mode:384}),console.warn("[SETTINGS] Migrated Telegram trigger types off the legacy default:",e)}catch(d){console.warn("[SETTINGS] Failed to migrate Telegram trigger types:",e,d instanceof Error?d.message:String(d))}}if(yoe(s)){let d=String(s.CLAUDE_MEM_OPENROUTER_MODEL).trim();s={...s,CLAUDE_MEM_OPENROUTER_MODEL:this.DEFAULTS.CLAUDE_MEM_OPENROUTER_MODEL};try{_n(e,c?{...a,env:s}:s,{mode:384}),console.warn(`[SETTINGS] Migrated OpenRouter model off the retired default ${d} to ${this.DEFAULTS.CLAUDE_MEM_OPENROUTER_MODEL}:`,e)}catch(p){console.warn("[SETTINGS] Failed to migrate the retired OpenRouter model:",e,p instanceof Error?p.message:String(p))}}let l=goe(s.CLAUDE_MEM_CLOUD_SYNC_HUB_URL);if(l!==null){s={...s,CLAUDE_MEM_CLOUD_SYNC_HUB_URL:l};try{_n(e,c?{...a,env:s}:s,{mode:384}),console.warn("[SETTINGS] Migrated cloud sync hub URL to",l,"from a retired hub host:",e)}catch(d){console.warn("[SETTINGS] Failed to migrate cloud sync hub URL:",e,d instanceof Error?d.message:String(d))}}for(let d of iL)if(!(0,wo.existsSync)(oL(e,d))){if(s[d.key]!==d.legacy){vS(e,d);continue}s={...s,[d.key]:this.DEFAULTS[d.key]};try{_n(e,c?{...a,env:s}:s,{mode:384}),vS(e,d),console.warn(`[SETTINGS] Migrated ${d.key} off the old ${d.legacy}ms default to ${this.DEFAULTS[d.key]}ms:`,e)}catch(p){let f=`${d.key}\0${e}`;sL.has(f)||(sL.add(f),console.warn(`[SETTINGS] Failed to migrate ${d.key}; using the new default in memory (reported once per process):`,e,p instanceof Error?p.message:String(p)))}}let u={...this.DEFAULTS};for(let d of Object.keys(this.DEFAULTS))s[d]!==void 0&&(u[d]=s[d]);return this.finalizeSettings(u,r)}catch(n){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,n instanceof Error?n.message:String(n));let i=this.getAllDefaults();return this.finalizeSettings(i,r)}}}});function Bf(t,e){if(!e.enabled||t.length===0)return{redacted:t,counts:{},oversize:!1};if(t.length>voe)return S.warn("REDACT","field exceeds the 1M-char redaction cap; replaced by an oversize marker",void 0,{inputLength:t.length}),{redacted:Eoe,counts:{oversize:1},oversize:!0};let r=new Set(e.disabledBuiltinPatterns??[]),n={},i=t,s=[];for(let a of e.customPatterns??[]){if(!a.name||a.name.length===0){S.warn("REDACT","custom pattern skipped: missing name",void 0,{pattern:a});continue}try{s.push({name:a.name,regex:new RegExp(a.regex,"g")})}catch(c){S.warn("REDACT","custom pattern skipped: invalid regex",{name:a.name},c instanceof Error?c:new Error(String(c)))}}let o=[...s,...boe];for(let a of o)r.has(a.name)||(a.regex.lastIndex=0,i=i.replace(a.regex,()=>(n[a.name]=(n[a.name]??0)+1,`<redacted type='${a.name}'/>`)));return e.logMatches&&Object.keys(n).length>0&&S.debug("REDACT","patterns matched",void 0,{counts:n}),{redacted:i,counts:n,oversize:!1}}function uL(t){return t.includes("<redacted type='")||t.includes("&lt;redacted type=")}function Soe(t){if(!t||t.trim()==="")return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(r=>r&&typeof r.name=="string"&&typeof r.regex=="string"):(S.warn("REDACT","CLAUDE_MEM_REDACT_CUSTOM_PATTERNS is not a JSON array, ignoring"),[])}catch(e){return S.warn("REDACT","failed to parse CLAUDE_MEM_REDACT_CUSTOM_PATTERNS as JSON",void 0,e instanceof Error?e:new Error(String(e))),[]}}function _oe(t){return{enabled:t.CLAUDE_MEM_REDACT_ENABLED==="true",disabledBuiltinPatterns:(t.CLAUDE_MEM_REDACT_DISABLED_BUILTINS??"").split(",").map(e=>e.trim()).filter(Boolean),customPatterns:Soe(t.CLAUDE_MEM_REDACT_CUSTOM_PATTERNS??"[]"),logMatches:t.CLAUDE_MEM_REDACT_LOG_MATCHES==="true"}}function Toe(t){if(!(0,Gf.existsSync)(t))return null;try{return(0,Gf.readFileSync)(t,"utf-8")}catch{return""}}function Aoe(t){if(t===null)return!1;try{let e=JSON.parse(aS(t));return e===null||typeof e!="object"||Array.isArray(e)}catch{return!0}}function koe(t,e,r){return process.env.CLAUDE_MEM_REDACT_ENABLED==="false"||!(uu?.enabled===!0||Ioe.test(e))?r:(cL||(cL=!0,S.warn("REDACT","settings.json could not be read; secret redaction stays on until it is repaired",{settingsPath:t,using:uu?.enabled?"the last configuration that loaded":"the built-in patterns"})),uu?.enabled?uu:woe)}function zf(t=So){let e=Date.now();if(lu&&e-aL<xoe)return lu;let r=xn.loadFromFile(t),n=_oe(r),i=n.enabled?null:Toe(t);return Aoe(i)?lu=koe(t,i,n):(lu=n,uu=n),aL=e,lu}function dL(t){return Bf(t,zf()).redacted}function pL(t,e=zf()){if(!e.enabled)return t;let r=n=>typeof n=="string"?Bf(n,e).redacted:Array.isArray(n)?n.map(r):n!==null&&typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,s])=>[i,r(s)])):n;return r(t)}var Gf,boe,voe,Eoe,lL,lu,aL,xoe,uu,cL,woe,Ioe,du=R(()=>{"use strict";Gf=require("fs");oe();Za();Rr();bo();boe=[{name:"aws_access_key",regex:/AKIA[0-9A-Z]{16}/g},{name:"aws_secret_key",regex:/(?<=AWS_SECRET_ACCESS_KEY\s*[=:]\s*['"]?)[A-Za-z0-9/+=]{40}/g},{name:"github_pat",regex:/\bgh[oprs]_[A-Za-z0-9]{36}\b|\bgithub_pat_[A-Za-z0-9_]{82}\b/g},{name:"openai_key",regex:/\bsk-(?!ant-)[A-Za-z0-9_-]{20,}\b/g},{name:"anthropic_key",regex:/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g},{name:"slack_token",regex:/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g},{name:"jwt",regex:/\beyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g},{name:"private_key_pem",regex:/-----BEGIN (?:RSA |DSA |EC |OPENSSH |PGP )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |DSA |EC |OPENSSH |PGP )?PRIVATE KEY-----/g},{name:"stripe_key",regex:/\b(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{24,}\b/g},{name:"google_api_key",regex:/\bAIza[0-9A-Za-z_-]{35}\b/g},{name:"claude_mem_key",regex:/\bcmem_[A-Za-z0-9_-]{32,}|\bcm_pro_[A-Za-z0-9_-]{8,}/g}],voe=1024*1024,Eoe="<redacted type='oversize'/>";lL=`If you see a "<redacted type='...'/>" marker, that field was a recognized secret pattern and was removed before storage. Treat it as a placeholder; do not infer the literal value or copy the marker itself into generated memory content.`;lu=null,aL=0,xoe=5e3,uu=null,cL=!1,woe={enabled:!0,disabledBuiltinPatterns:[],customPatterns:[],logMatches:!1},Ioe=/"CLAUDE_MEM_REDACT_ENABLED"\s*:\s*"true"/});function bL(){let t=[];t.push(ES.default.json({limit:"5mb"})),t.push((n,i,s)=>{let a=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(f=>n.path.endsWith(f)),c=n.path==="/api/logs";if(n.path.startsWith("/health")||n.path==="/"||a||c)return s();let l=Date.now(),u=`${n.method}-${Date.now()}`,d=Foe(n.method,n.path,n.body);S.debug("HTTP",`\u2192 ${n.method} ${n.path}`,{requestId:u},d);let p=i.send.bind(i);i.send=function(f){let m=Date.now()-l;return S.debug("HTTP",`\u2190 ${i.statusCode} ${n.path}`,{requestId:u,duration:`${m}ms`}),p(f)},s()});let e=_o(),r=yL.default.join(e,"plugin","ui");return t.push(ES.default.static(r)),t}function Roe(t){return t.startsWith("http://localhost:")||t.startsWith("http://127.0.0.1:")}function vL(t,e){if(!e)return!1;try{return new URL(t).host===e.trim().toLowerCase()}catch{return!1}}function Ooe(t,e,r){let n;try{n=new URL(t)}catch{return!1}if(n.protocol!=="http:"&&n.protocol!=="https:")return!1;if(r.allowedOrigins.includes(n.origin))return!0;if(!e)return!1;if(vL(t,e))return!0;let i;try{i=new URL(`${n.protocol}//${e.trim().toLowerCase()}`)}catch{return!1}return fL.has(n.hostname)&&fL.has(i.hostname)&&n.port===i.port}function EL(t){return(e,r,n)=>{let i=e.headers.origin;if(e.method!=="DELETE"||i===void 0||Ooe(i,e.headers.host,t)){n();return}S.warn("SECURITY","Refused a DELETE from a page other than the viewer",{origin:i,method:e.method,path:e.path}),r.status(403).json({error:"Forbidden",message:"Deletes are accepted only from the claude-mem viewer itself (or an origin in CLAUDE_MEM_ALLOWED_ORIGINS), not from other pages."})}}function Poe(t){let e=new Set(Coe),r=t.workerHost.trim().toLowerCase();r&&e.add(r);for(let n of t.allowedOrigins)try{e.add(new URL(n).hostname.toLowerCase())}catch{}return e}function Moe(t,e){if(!t)return!0;let r=Nf(t);return(0,gL.isIP)(r)!==0||r.endsWith(".localhost")?!0:e.has(r)}function SL(t){let e=Poe(t);return(r,n,i)=>{let s=r.headers.host;if(Moe(s,e)){i();return}let o=Nf(s??"");S.warn("SECURITY","Refused a request whose Host is not a trusted name (DNS rebinding check)",{host:o,method:r.method,path:r.path}),n.status(403).json({error:"Forbidden",message:`Host "${o}" is not trusted. To reach the worker by this name, add its origin (for example http://${s}) to CLAUDE_MEM_ALLOWED_ORIGINS and restart the worker.`})}}function _L(t){let e=new Set(t?.allowedOrigins??[]);return(r,n,i)=>{let s=r.headers.origin;if(s){if(!(Roe(s)||e.has(s.toLowerCase())||t!==void 0&&vL(s,r.headers.host))){n.status(403).json({error:"Forbidden",message:"CORS not allowed"});return}n.setHeader("Access-Control-Allow-Origin",s),n.setHeader("Vary","Origin")}if(r.method==="OPTIONS"){n.setHeader("Access-Control-Allow-Methods","GET,HEAD,POST,PUT,PATCH,DELETE"),n.setHeader("Access-Control-Allow-Headers","Content-Type,Authorization,X-Requested-With"),n.status(204).end();return}i()}}function Hf(t,e,r){let n=t.ip||t.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){S.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:t.path,clientIp:n,method:t.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}r()}function Koe(t,e){let r=(0,ec.createHash)("sha256").update(t,"utf8").digest(),n=(0,ec.createHash)("sha256").update(e,"utf8").digest();if(r.length!==n.length)return!1;try{return(0,ec.timingSafeEqual)(r,n)}catch(i){let s=i instanceof Error?i:new Error(String(i));return S.warn("SECURITY","timing-safe secret comparison failed",{},s),!1}}function Loe(t){return joe.has(t.method.toUpperCase())?Doe.has(t.path)?!t.expectedToken||!t.presentedToken?{allow:!1,status:401,reason:"token"}:Koe(t.presentedToken,t.expectedToken)?{allow:!0}:{allow:!1,status:401,reason:"token"}:{allow:!1,status:404,reason:"path"}:{allow:!1,status:403,reason:"method"}}function qoe(t){let e=Date.now(),r=Io.get(t.clientIp);if(r&&e-r.windowStart>hL&&(r.count=0,r.windowStart=e),!r){if(Io.size>=mL){let n=null,i=1/0;for(let[s,o]of Io)e-o.windowStart>hL?Io.delete(s):o.windowStart<i&&(i=o.windowStart,n=s);n!==null&&Io.size>=mL&&Io.delete(n)}r={count:0,windowStart:e},Io.set(t.clientIp,r)}r.count+=1,r.count<=Noe?S.warn("SECURITY","Remote request denied",t):S.debug("SECURITY","Remote request denied",t)}function Uoe(t){let e=t.query?.token;if(Array.isArray(e)||typeof e!="string")return null;let r=e.trim();return r.length>0?r:null}function xL(t){return(e,r,n)=>{if(Lf(e)&&!qf(e)){n();return}let i=e.ip||e.socket.remoteAddress||"",s=Kf(e.header("authorization")??"")||e.header("x-api-key")?.trim()||Uoe(e)||null,o=Loe({method:e.method,path:e.path,presentedToken:s,expectedToken:t.getToken()});if(!o.allow){qoe({path:e.path,method:e.method,clientIp:i,reason:o.reason}),o.status===404?r.status(404).json({error:"Not found"}):o.status===403?r.status(403).json({error:"Forbidden",message:"Observation TV remote access is read-only"}):r.status(401).json({error:"Unauthorized",message:"Missing or invalid Observation TV token"});return}r.setHeader("Cache-Control","no-store"),n()}}function Foe(t,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=r.tool_name||"?",i=r.tool_input;return`tool=${dL(S.formatTool(n,i))}`}return e.includes("/summarize")?"requesting summary":""}var ES,yL,gL,ec,fL,Coe,Doe,joe,Noe,mL,hL,Io,wL=R(()=>{"use strict";ES=Xe(Mf(),1),yL=Xe(require("path"),1),gL=require("net"),ec=require("crypto");Rr();bS();oe();du();fL=new Set(["localhost","127.0.0.1","[::1]"]);Coe=["localhost","host.docker.internal"];Doe=new Set(["/tv","/tv.html","/stream","/api/observations"]),joe=new Set(["GET","HEAD"]);Noe=10,mL=512,hL=6e4,Io=new Map});function IL(t,e,r,n){let i={error:t,message:e};return r&&(i.code=r),n&&(i.details=n),i}function AL(t,e){e.status(404).json(IL("NotFound",`Cannot ${t.method} ${t.path}`))}var tc,TL,kL=R(()=>{"use strict";oe();tc=class extends Error{constructor(r,n=500,i,s){super(r);this.statusCode=n;this.code=i;this.details=s;this.name="AppError"}statusCode;code;details};TL=(t,e,r,n)=>{let i=t instanceof tc?t.statusCode:500;S.error("HTTP",`Error handling ${e.method} ${e.path}`,{statusCode:i,error:t.message,code:t instanceof tc?t.code:void 0},t);let s=IL(t.name||"Error",t.message,t instanceof tc?t.code:void 0,t instanceof tc?t.details:void 0);r.status(i).json(s)}});var $oe,Joe,tKe,RL=R(()=>{"use strict";$oe=new Set([".cmd",".bat"]),Joe=new Set([".exe",".com"]),tKe=new Set([...Joe,...$oe])});function rc(t=process.env){let e={};for(let[r,n]of Object.entries(t))if(n!==void 0){if(Boe.has(r)){e[r]=n;continue}_S.has(r)||SS.some(i=>r.startsWith(i))||(e[r]=n)}return e}var SS,_S,Goe,Boe,pu=R(()=>{"use strict";SS=["CLAUDECODE_","CLAUDE_CODE_"],_S=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),Goe=new Set(["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy","npm_config_noproxy"]),Boe=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_TMPDIR","CLAUDE_CODE_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","CLAUDE_CODE_USE_FOUNDRY","CLAUDE_CODE_SKIP_BEDROCK_AUTH","CLAUDE_CODE_SKIP_VERTEX_AUTH","CLAUDE_CODE_SKIP_FOUNDRY_AUTH","ANTHROPIC_BEDROCK_BASE_URL","AWS_REGION","AWS_PROFILE","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","ANTHROPIC_VERTEX_PROJECT_ID","CLOUD_ML_REGION","GOOGLE_APPLICATION_CREDENTIALS",...Goe])});function PL(t,e,r){if(r.status!==0)return null;if(typeof r.stdout!="string")return S.warn("SYSTEM","captureProcessStartToken: start-token probe returned no stdout",{pid:e,source:t,status:r.status}),null;let n=r.stdout.trim();return n.length>0?n:null}function Hoe(t){xS+=1;let e=(0,wS.spawnSync)("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${t}").CreationDate.ToString('yyyyMMddHHmmss.ffffff')`],{encoding:"utf-8",timeout:5e3,windowsHide:!0,env:{...rc(process.env),LC_ALL:"C",LANG:"C"}});return PL("powershell-cim",t,e)}function Voe(t,e=!1){if(!e){let n=OL.get(t);if(n&&(t===process.pid||Date.now()-n.capturedAtMs<zoe))return n.token}let r=null;try{r=Hoe(t)}catch(n){S.debug("SYSTEM","captureProcessStartToken: powershell CIM lookup failed",{pid:t,error:n instanceof Error?n.message:String(n)}),r=null}return(r!==null||t!==process.pid)&&OL.set(t,{token:r,capturedAtMs:Date.now()}),r}function ML(t,e){if(!Number.isInteger(t)||t<=0)return null;if(process.platform==="linux"){xS+=1;try{let r=(0,CL.readFileSync)(`/proc/${t}/stat`,"utf-8"),n=r.lastIndexOf(") ");if(n<0)return null;let s=r.slice(n+2).split(" ")[19];return s&&/^\d+$/.test(s)?s:null}catch(r){return S.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}if(process.platform==="win32")return Voe(t,e);xS+=1;try{let r=(0,wS.spawnSync)("ps",["-p",String(t),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...rc(process.env),LC_ALL:"C",LANG:"C"}});return PL("ps-lstart",t,r)}catch(r){return S.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}function Ai(t){return ML(t,!1)}function ki(t,e){if(e===null)return!0;let r=ML(t,!0);return r===null?!0:r===e}var wS,CL,zoe,OL,xS,IS=R(()=>{"use strict";wS=require("child_process"),CL=require("fs");oe();pu();zoe=5e3,OL=new Map,xS=0});async function Yn(t,e={}){let r=e.signalMode==="immediate",n=e.expectedStartToken!==void 0?e.expectedStartToken:Ai(t),i=()=>ki(t,n);if(!i()){S.warn("PROCESS","Skipping tree-kill: root PID was reused since it was captured",{pid:t});return}if(S.debug("PROCESS",`Killing process tree rooted at PID ${t}`,{immediate:r}),process.platform==="win32"){try{await TS("taskkill",["/PID",String(t),"/T","/F"],{timeout:5e3,windowsHide:!0})}catch(s){let o=s.code,a=String(s.stderr??""),c=s instanceof Error?s.message:String(s);if(o===Woe||Yoe.test(`${a} ${c}`)){S.debug("PROCESS","taskkill reported the process was already gone",{pid:t});return}throw new Vf(t,`taskkill failed for PID ${t} (exit ${String(o)}): ${a.trim()||c}`,{cause:s})}return}try{let s=r?"SIGKILL":"SIGTERM",o=await Wf(t);for(let l of o){if(!ki(l.pid,l.startToken)){S.debug("PROCESS",`Skipping ${s}: descendant PID was reused since enumeration`,{pid:l.pid,rootPid:t});continue}try{process.kill(l.pid,s)}catch{}}if(i())try{process.kill(t,s)}catch(l){let u=l instanceof Error?l:new Error(String(l)),d=u.code;d!=="ESRCH"&&S.debug("PROCESS",`Failed to ${s} PID ${t}`,{code:d},u)}else S.warn("PROCESS","Skipping root signal: PID was reused during descendant enumeration",{pid:t,signal:s});r||await new Promise(l=>setTimeout(l,500));let a=i()?await Wf(t):[],c=new Map;for(let l of o)c.set(l.pid,l.startToken);for(let l of a)c.set(l.pid,l.startToken);for(let[l,u]of c){if(!ki(l,u)){S.debug("PROCESS","Skipping SIGKILL: descendant PID was reused since the scan",{pid:l,rootPid:t});continue}try{process.kill(l,"SIGKILL")}catch{}}if(!r&&i())try{process.kill(t,"SIGKILL")}catch{}}catch(s){throw new Vf(t,`tree-kill failed for PID ${t}: ${s instanceof Error?s.message:String(s)}`,{cause:s})}}async function Qoe(){return process.platform==="win32"?eae():process.platform==="linux"?Xoe():Zoe()}function Xoe(){let t=[],e;try{e=(0,Yf.readdirSync)("/proc")}catch(r){return S.warn("PROCESS","Cannot read /proc \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),t}for(let r of e){if(!/^\d+$/.test(r))continue;let n;try{n=(0,Yf.readFileSync)(`/proc/${r}/stat`,"utf-8")}catch{continue}let i=n.lastIndexOf(") ");if(i<0)continue;let s=n.slice(i+2).split(" "),o=Number.parseInt(s[1]??"",10),a=s[19];Number.isFinite(o)&&t.push({pid:Number.parseInt(r,10),ppid:o,startToken:a&&/^\d+$/.test(a)?a:null})}return t}async function Zoe(){let t;try{t=(await TS("ps",["-eo","pid=,ppid=,lstart="],{timeout:1e4,maxBuffer:33554432,env:{...process.env,LC_ALL:"C",LANG:"C"}})).stdout}catch(r){return S.warn("PROCESS","Cannot enumerate the process table \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),[]}let e=[];for(let r of t.split(`
65
+ `)}debug(e,r,n,i){this.log(0,e,r,n,i)}info(e,r,n,i){this.log(1,e,r,n,i)}warn(e,r,n,i){this.log(2,e,r,n,i)}setErrorSink(e){hS=e}error(e,r,n,i){this.log(3,e,r,n,i),this.routeErrorToSink(r,n,i)}routeErrorToSink(e,r,n){try{if(!hS||!(n instanceof Error))return;hS(n)}catch{}}dataIn(e,r,n,i){this.info(e,`\u2192 ${r}`,n,i)}dataOut(e,r,n,i){this.info(e,`\u2190 ${r}`,n,i)}success(e,r,n,i){this.info(e,`\u2713 ${r}`,n,i)}failure(e,r,n,i){this.error(e,`\u2717 ${r}`,n,i)}},S=new gS});function Kf(t){return/^Bearer\s+(.+)$/i.exec(t.trim())?.[1]?.trim()||null}function Lf(t){let e=t.ip||t.socket.remoteAddress||"";return e==="127.0.0.1"||e==="::1"||e==="::ffff:127.0.0.1"||e==="localhost"}function YK(t){let e=Nf(t.header("host")??"");return e==="127.0.0.1"||e==="localhost"||e==="::1"}function Nf(t){let e=t.trim().toLowerCase();if(e.startsWith("[")){let n=e.indexOf("]");return n===-1?e:e.slice(1,n)}let r=e.lastIndexOf(":");return r>-1&&/^\d+$/.test(e.slice(r+1))?e.slice(0,r):e}function qf(t){return!!(t.header("forwarded")||t.header("x-forwarded-for")||t.header("x-forwarded-host")||t.header("x-real-ip"))}var bS=R(()=>{"use strict"});function ooe(t=process.platform){return t==="win32"?8e3:5e3}function QK(t=process.platform){return Uf.SESSION_INIT_HOOK_CAP-ooe(t)}function XK(t){return process.platform==="win32"?Math.round(t*Uf.WINDOWS_MULTIPLIER):t}var Uf,ZK=R(()=>{"use strict";Uf={HEALTH_CHECK:3e3,API_REQUEST:3e4,SESSION_INIT_HOOK_CAP:15e3,SESSION_INIT_REQUEST:1e4,SESSION_INIT_REQUEST_MAX:14e3,HOOK_READINESS_WAIT:1e4,POST_SPAWN_WAIT:15e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5}});function loe(t){try{return coe.has(new URL(t).protocol)}catch{return!1}}function uoe(t){tL!==t&&(tL=t,S.warn("SDK","CLAUDE_MEM_OPENROUTER_BASE_URL is not an http(s) URL; requests to it will fail until it is fixed",{baseUrl:t}))}function $f(t){let e=(t??"").trim();if(!e)return aoe;if(!loe(e)){uoe(e);let i=e.replace(eL,"");return i.toLowerCase().endsWith(Ff)?i:`${i}${Ff}`}let r=new URL(e),n=r.pathname.replace(eL,"");return r.pathname=n.toLowerCase().endsWith(Ff)?n:`${n}${Ff}`,r.href}function rL(t){try{return new URL(t).hostname.toLowerCase()==="openrouter.ai"}catch{return!1}}var aoe,Ff,coe,eL,tL,Jf=R(()=>{"use strict";oe();aoe="https://openrouter.ai/api/v1/chat/completions",Ff="/chat/completions",coe=new Set(["http:","https:"]),eL=/\/+$/;tL=null});function yoe(t){let e=t.CLAUDE_MEM_OPENROUTER_MODEL;if(typeof e!="string"||!hoe.has(e.trim()))return!1;let r=typeof t.CLAUDE_MEM_OPENROUTER_BASE_URL=="string"?t.CLAUDE_MEM_OPENROUTER_BASE_URL.trim():"";return r===""||rL(r)}function oL(t,e){return(0,ds.join)((0,ds.dirname)(t),`.${(0,ds.basename)(t)}.${e.markerTag}`)}function vS(t,e){try{(0,wo.writeFileSync)(oL(t,e),new Date().toISOString(),{encoding:"utf-8",mode:384})}catch{}}function goe(t){if(typeof t!="string")return null;let e=t.trim();if(e.length===0)return null;try{let r=new URL(e).hostname;if(r===poe||r===foe)return moe}catch{return null}return null}var wo,ds,cu,doe,poe,foe,moe,hoe,nL,iL,sL,xn,Za=R(()=>{"use strict";wo=require("fs"),ds=require("path"),cu=require("os");ZK();bo();Jf();Xa();doe="security_alert",poe="sync-hub.black-pond-afbb.workers.dev",foe="ziczmqtpmaxbornfghye.supabase.co",moe="https://sync.cmem.ai",hoe=new Set(["xiaomi/mimo-v2-flash:free"]);nL=18e4,iL=[{key:"CLAUDE_MEM_LLM_TIMEOUT_MS",legacy:"30000",markerTag:"llm-timeout-migrated-v1"},{key:"CLAUDE_MEM_FIELD_OPTIMIZE_TIMEOUT_MS",legacy:"30000",markerTag:"field-optimize-timeout-migrated-v1"}];sL=new Set;xn=class{static DEFAULTS={CLAUDE_MEM_MEMORY_SEARCH_HOOK_ENABLED:"true",CLAUDE_MEM_MEMORY_INSTRUCTIONS_ENABLED:"true",CLAUDE_MEM_MEMORY_WATCH_ROOTS:"",CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_SESSION_START_INCLUDE_ALL_SOURCES:"false",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_ALLOWED_ORIGINS:"",CLAUDE_MEM_PUBLIC_URL:"",CLAUDE_MEM_API_TIMEOUT_MS:String(XK(Uf.API_REQUEST)),CLAUDE_MEM_SESSION_INIT_TIMEOUT_MS:String(QK()),CLAUDE_MEM_IDLE_EXIT_SEC:"0",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_SKIP_BASH_PATTERNS:"",CLAUDE_MEM_SKIP_SUBAGENT_OBSERVATIONS:"false",CLAUDE_MEM_SKIP_AGENT_TYPES:"",CLAUDE_MEM_CAPTURE_ADVISOR_CALLS:"false",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CODEX_MODEL:"",CLAUDE_MEM_CODEX_PATH:"codex",CLAUDE_MEM_CODEX_REASONING_EFFORT:"low",CLAUDE_MEM_CODEX_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_CODEX_OBSERVATION_BATCH_SIZE:"8",CLAUDE_MEM_CODEX_OBSERVATION_BATCH_MAX_CHARS:"32000",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_API_KEYS:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-flash-latest",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_API_KEYS:"",CLAUDE_MEM_OPENROUTER_MODEL:"cohere/north-mini-code:free",CLAUDE_MEM_OPENROUTER_BASE_URL:"",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_EXTRA_BODY:"",CLAUDE_MEM_OPENROUTER_REASONING_EFFORT:"",CLAUDE_MEM_OPENAI_COMPAT_PRESET:"",CLAUDE_MEM_OPENAI_COMPAT_API_KEY:"",CLAUDE_MEM_OPENAI_COMPAT_API_KEYS:"",CLAUDE_MEM_OPENAI_COMPAT_BASE_URL:"",CLAUDE_MEM_OPENAI_COMPAT_MODEL:"",CLAUDE_MEM_QUOTA_FALLBACK_PROVIDER:"",CLAUDE_MEM_QUOTA_FALLBACK_MODEL:"",CLAUDE_MEM_QUOTA_THRESHOLD_FIVE_HOUR:"0.95",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY:"0.93",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY_OPUS:"0.93",CLAUDE_MEM_QUOTA_THRESHOLD_SEVEN_DAY_SONNET:"0.92",CLAUDE_MEM_QUOTA_THRESHOLD_OVERAGE:"0.95",CLAUDE_MEM_DATA_DIR:(0,ds.join)((0,cu.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CLAUDE_CONFIG_DIR:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:"",CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:"",CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_MAIN_AGENT_ONLY:"true",CLAUDE_MEM_REINFORCE_ALPHA:"0",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"true",CLAUDE_MEM_FILE_READ_GATE_ENABLED:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:(0,ds.join)((0,cu.homedir)(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_CODEX_SUBAGENT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_OBSERVER_MAX_CONVERSATION_CHARS:"400000",CLAUDE_MEM_OBSERVER_CONTEXT_WINDOW:"",CLAUDE_MEM_OBSERVER_MAX_OUTPUT_TOKENS:"4096",CLAUDE_MEM_OBSERVE_BARE_PROMPTS:"false",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_REDACT_ENABLED:"false",CLAUDE_MEM_REDACT_DISABLED_BUILTINS:"",CLAUDE_MEM_REDACT_CUSTOM_PATTERNS:"[]",CLAUDE_MEM_REDACT_LOG_MATCHES:"false",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_PROJECT_ENVIRONMENTS:"[]",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_FOLDER_MD_SKELETON_DENYLIST:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",CLAUDE_MEM_TIER_FAST_MODEL:"haiku",CLAUDE_MEM_TIER_SMART_MODEL:"sonnet",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database",CLAUDE_MEM_CHROMA_PREWARM_TIMEOUT_MS:"120000",CLAUDE_MEM_CHROMA_MUTATION_TIMEOUT_MS:"600000",CLAUDE_MEM_CHROMA_MAX_PENDING_MUTATIONS:"5000",CLAUDE_MEM_CHROMA_EMBEDDING_FUNCTION:"default",CLAUDE_MEM_CLOUD_SYNC_TOKEN:"",CLAUDE_MEM_CLOUD_SYNC_USER_ID:"",CLAUDE_MEM_CLOUD_SYNC_HUB_URL:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_ID:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_NAME:(0,cu.hostname)(),CLAUDE_MEM_CLOUD_SYNC_WS:"true",CLAUDE_MEM_CLOUD_SYNC_CONTENT_BATCH_SIZE:"40",CLAUDE_MEM_CLOUD_SYNC_REQUEST_TIMEOUT_MS:"90000",CLAUDE_MEM_LLM_TIMEOUT_MS:String(nL),CLAUDE_MEM_FIELD_OPTIMIZE_TIMEOUT_MS:String(nL),CLAUDE_MEM_TV_TOKEN:"",CLAUDE_MEM_PRO_TRIAL_EMAIL:"",CLAUDE_MEM_PRO_TRIAL_AT:"",CLAUDE_MEM_PRO_TRIAL_STATE:"",CLAUDE_MEM_PRO_TRIAL_ENDS_AT:"",CLAUDE_MEM_PRO_PLAN:"",CLAUDE_MEM_PRO_FALLBACK_AT:"",CLAUDE_MEM_PRO_FALLBACK_MESSAGE:"",CLAUDE_MEM_PRO_FALLBACK_ACTION:"",CLAUDE_MEM_PRO_FALLBACK_URL:"",CLAUDE_MEM_PRO_MEMORY_KEY:"",CLAUDE_MEM_PRO_MEMORY_BASE_URL:"",CLAUDE_MEM_PRO_MEMORY_MODEL:"",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_WRAPUPS_ENABLED:"true",CLAUDE_MEM_TELEGRAM_OBSERVATION_ALERTS_ENABLED:"false",CLAUDE_MEM_TELEGRAM_WRAPUP_ROUTES:"{}",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert,sensitive",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_GROK_BOT_AWARENESS_ENABLED:"true",CLAUDE_MEM_GROK_BOT_AWARENESS_AGENT_IDS:"521e962d-2ec3-4488-bfbc-54d5209ce118,95601360-61f7-4fd9-bb3a-2c976b2b85c0",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_CONCEPTS:"",CLAUDE_MEM_GROK_BOT_WEBHOOK_URL:"",CLAUDE_MEM_GROK_BOT_WEBHOOK_SECRET:"",CLAUDE_MEM_GROK_BOT_INJECT_ENABLED:"true",CLAUDE_MEM_GROK_BOT_INJECT_AGENT_IDS:"*",CLAUDE_MEM_GROK_BOT_INJECT_TIER:"episode",CLAUDE_MEM_GROK_BOT_INJECT_WINDOW:"80",CLAUDE_MEM_GROK_BOT_INJECT_FALLBACK:"house",CLAUDE_MEM_GROK_BOT_INJECT_PLATFORM_SOURCE:"",CLAUDE_MEM_GROK_BOT_INJECT_PROJECTS_BY_AGENT:"",CLAUDE_MEM_GROK_BOT_INJECT_MAX_LINE_CHARS:"160",CLAUDE_MEM_GROK_BOT_INJECT_DEBOUNCE_MS:"1500",CLAUDE_MEM_GROK_BOT_INJECT_STANDING_LINE:"",CLAUDE_MEM_CCS_ALIGN_ENABLED:"true",CLAUDE_MEM_CCS_ALIGN_VIEWER_IDS:"ccs-align",CLAUDE_MEM_CCS_ALIGN_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS:"false",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_API_KEY:"",CLAUDE_MEM_SERVER_PROJECT_ID:"",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:"",CLAUDE_MEM_DEDUP_ENABLED:"false",CLAUDE_MEM_DEDUP_COSINE_THRESHOLD:"0.80",CLAUDE_MEM_DEDUP_IDF_VETO_DF:"10",CLAUDE_MEM_DEDUP_MIN_SHARED_TOKENS:"2",CLAUDE_MEM_DEDUP_MIN_PROJECT_DOCS:"10",CLAUDE_MEM_DEDUP_MAX_SCAN:"2000",CLAUDE_MEM_DEDUP_MAX_BACKFILL_ROWS:"50000",CLAUDE_MEM_WORKER_AUTOSTART:"true",CLAUDE_MEM_PROJECT_NAME_SOURCE:"path"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){let r=process.env[e]??this.DEFAULTS[e];return e==="CLAUDE_MEM_WORKER_HOST"?this.normalizeWorkerHost(r):r}static normalizeWorkerHost(e){return e==="localhost"?"127.0.0.1":e}static finalizeSettings(e,r){let n=r?this.applyEnvOverrides(e):e;return n.CLAUDE_MEM_WORKER_HOST=this.normalizeWorkerHost(n.CLAUDE_MEM_WORKER_HOST),n}static getInt(e){let r=this.get(e);return parseInt(r,10)}static applyEnvOverrides(e){let r={...e};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(r[n]=process.env[n]);return r}static loadFromFile(e,r=!0){try{if(!(0,wo.existsSync)(e)){let d=this.getAllDefaults();try{_n(e,d,{mode:384});for(let p of iL)vS(e,p);console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(p){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,p instanceof Error?p.message:String(p))}return this.finalizeSettings(d,r)}let n=(0,wo.readFileSync)(e,"utf-8"),i=cS(n),s=Eo(i),o=s!==i,a=uS(i),c=o&&Object.keys(a).some(d=>d!=="env");if(o&&!c)try{_n(e,s,{mode:384}),console.warn("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(d){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,d instanceof Error?d.message:String(d))}if(s.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES===doe){s={...s,CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:this.DEFAULTS.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES};try{_n(e,c?{...a,env:s}:s,{mode:384}),console.warn("[SETTINGS] Migrated Telegram trigger types off the legacy default:",e)}catch(d){console.warn("[SETTINGS] Failed to migrate Telegram trigger types:",e,d instanceof Error?d.message:String(d))}}if(yoe(s)){let d=String(s.CLAUDE_MEM_OPENROUTER_MODEL).trim();s={...s,CLAUDE_MEM_OPENROUTER_MODEL:this.DEFAULTS.CLAUDE_MEM_OPENROUTER_MODEL};try{_n(e,c?{...a,env:s}:s,{mode:384}),console.warn(`[SETTINGS] Migrated OpenRouter model off the retired default ${d} to ${this.DEFAULTS.CLAUDE_MEM_OPENROUTER_MODEL}:`,e)}catch(p){console.warn("[SETTINGS] Failed to migrate the retired OpenRouter model:",e,p instanceof Error?p.message:String(p))}}let l=goe(s.CLAUDE_MEM_CLOUD_SYNC_HUB_URL);if(l!==null){s={...s,CLAUDE_MEM_CLOUD_SYNC_HUB_URL:l};try{_n(e,c?{...a,env:s}:s,{mode:384}),console.warn("[SETTINGS] Migrated cloud sync hub URL to",l,"from a retired hub host:",e)}catch(d){console.warn("[SETTINGS] Failed to migrate cloud sync hub URL:",e,d instanceof Error?d.message:String(d))}}for(let d of iL)if(!(0,wo.existsSync)(oL(e,d))){if(s[d.key]!==d.legacy){vS(e,d);continue}s={...s,[d.key]:this.DEFAULTS[d.key]};try{_n(e,c?{...a,env:s}:s,{mode:384}),vS(e,d),console.warn(`[SETTINGS] Migrated ${d.key} off the old ${d.legacy}ms default to ${this.DEFAULTS[d.key]}ms:`,e)}catch(p){let f=`${d.key}\0${e}`;sL.has(f)||(sL.add(f),console.warn(`[SETTINGS] Failed to migrate ${d.key}; using the new default in memory (reported once per process):`,e,p instanceof Error?p.message:String(p)))}}let u={...this.DEFAULTS};for(let d of Object.keys(this.DEFAULTS))s[d]!==void 0&&(u[d]=s[d]);return this.finalizeSettings(u,r)}catch(n){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,n instanceof Error?n.message:String(n));let i=this.getAllDefaults();return this.finalizeSettings(i,r)}}}});function Bf(t,e){if(!e.enabled||t.length===0)return{redacted:t,counts:{},oversize:!1};if(t.length>voe)return S.warn("REDACT","field exceeds the 1M-char redaction cap; replaced by an oversize marker",void 0,{inputLength:t.length}),{redacted:Eoe,counts:{oversize:1},oversize:!0};let r=new Set(e.disabledBuiltinPatterns??[]),n={},i=t,s=[];for(let a of e.customPatterns??[]){if(!a.name||a.name.length===0){S.warn("REDACT","custom pattern skipped: missing name",void 0,{pattern:a});continue}try{s.push({name:a.name,regex:new RegExp(a.regex,"g")})}catch(c){S.warn("REDACT","custom pattern skipped: invalid regex",{name:a.name},c instanceof Error?c:new Error(String(c)))}}let o=[...s,...boe];for(let a of o)r.has(a.name)||(a.regex.lastIndex=0,i=i.replace(a.regex,()=>(n[a.name]=(n[a.name]??0)+1,`<redacted type='${a.name}'/>`)));return e.logMatches&&Object.keys(n).length>0&&S.debug("REDACT","patterns matched",void 0,{counts:n}),{redacted:i,counts:n,oversize:!1}}function uL(t){return t.includes("<redacted type='")||t.includes("&lt;redacted type=")}function Soe(t){if(!t||t.trim()==="")return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(r=>r&&typeof r.name=="string"&&typeof r.regex=="string"):(S.warn("REDACT","CLAUDE_MEM_REDACT_CUSTOM_PATTERNS is not a JSON array, ignoring"),[])}catch(e){return S.warn("REDACT","failed to parse CLAUDE_MEM_REDACT_CUSTOM_PATTERNS as JSON",void 0,e instanceof Error?e:new Error(String(e))),[]}}function _oe(t){return{enabled:t.CLAUDE_MEM_REDACT_ENABLED==="true",disabledBuiltinPatterns:(t.CLAUDE_MEM_REDACT_DISABLED_BUILTINS??"").split(",").map(e=>e.trim()).filter(Boolean),customPatterns:Soe(t.CLAUDE_MEM_REDACT_CUSTOM_PATTERNS??"[]"),logMatches:t.CLAUDE_MEM_REDACT_LOG_MATCHES==="true"}}function Toe(t){if(!(0,Gf.existsSync)(t))return null;try{return(0,Gf.readFileSync)(t,"utf-8")}catch{return""}}function Aoe(t){if(t===null)return!1;try{let e=JSON.parse(aS(t));return e===null||typeof e!="object"||Array.isArray(e)}catch{return!0}}function koe(t,e,r){return process.env.CLAUDE_MEM_REDACT_ENABLED==="false"||!(uu?.enabled===!0||Ioe.test(e))?r:(cL||(cL=!0,S.warn("REDACT","settings.json could not be read; secret redaction stays on until it is repaired",{settingsPath:t,using:uu?.enabled?"the last configuration that loaded":"the built-in patterns"})),uu?.enabled?uu:woe)}function zf(t=So){let e=Date.now();if(lu&&e-aL<xoe)return lu;let r=xn.loadFromFile(t),n=_oe(r),i=n.enabled?null:Toe(t);return Aoe(i)?lu=koe(t,i,n):(lu=n,uu=n),aL=e,lu}function dL(t){return Bf(t,zf()).redacted}function pL(t,e=zf()){if(!e.enabled)return t;let r=n=>typeof n=="string"?Bf(n,e).redacted:Array.isArray(n)?n.map(r):n!==null&&typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,s])=>[i,r(s)])):n;return r(t)}var Gf,boe,voe,Eoe,lL,lu,aL,xoe,uu,cL,woe,Ioe,du=R(()=>{"use strict";Gf=require("fs");oe();Za();Rr();bo();boe=[{name:"aws_access_key",regex:/AKIA[0-9A-Z]{16}/g},{name:"aws_secret_key",regex:/(?<=AWS_SECRET_ACCESS_KEY\s*[=:]\s*['"]?)[A-Za-z0-9/+=]{40}/g},{name:"github_pat",regex:/\bgh[oprs]_[A-Za-z0-9]{36}\b|\bgithub_pat_[A-Za-z0-9_]{82}\b/g},{name:"openai_key",regex:/\bsk-(?!ant-)[A-Za-z0-9_-]{20,}\b/g},{name:"anthropic_key",regex:/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g},{name:"slack_token",regex:/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g},{name:"jwt",regex:/\beyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g},{name:"private_key_pem",regex:/-----BEGIN (?:RSA |DSA |EC |OPENSSH |PGP )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |DSA |EC |OPENSSH |PGP )?PRIVATE KEY-----/g},{name:"stripe_key",regex:/\b(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{24,}\b/g},{name:"google_api_key",regex:/\bAIza[0-9A-Za-z_-]{35}\b/g},{name:"claude_mem_key",regex:/\bcmem_[A-Za-z0-9_-]{32,}|\bcm_pro_[A-Za-z0-9_-]{8,}/g}],voe=1024*1024,Eoe="<redacted type='oversize'/>";lL=`If you see a "<redacted type='...'/>" marker, that field was a recognized secret pattern and was removed before storage. Treat it as a placeholder; do not infer the literal value or copy the marker itself into generated memory content.`;lu=null,aL=0,xoe=5e3,uu=null,cL=!1,woe={enabled:!0,disabledBuiltinPatterns:[],customPatterns:[],logMatches:!1},Ioe=/"CLAUDE_MEM_REDACT_ENABLED"\s*:\s*"true"/});function bL(){let t=[];t.push(ES.default.json({limit:"5mb"})),t.push((n,i,s)=>{let a=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(f=>n.path.endsWith(f)),c=n.path==="/api/logs";if(n.path.startsWith("/health")||n.path==="/"||a||c)return s();let l=Date.now(),u=`${n.method}-${Date.now()}`,d=Foe(n.method,n.path,n.body);S.debug("HTTP",`\u2192 ${n.method} ${n.path}`,{requestId:u},d);let p=i.send.bind(i);i.send=function(f){let m=Date.now()-l;return S.debug("HTTP",`\u2190 ${i.statusCode} ${n.path}`,{requestId:u,duration:`${m}ms`}),p(f)},s()});let e=_o(),r=yL.default.join(e,"plugin","ui");return t.push(ES.default.static(r)),t}function Roe(t){return t.startsWith("http://localhost:")||t.startsWith("http://127.0.0.1:")}function vL(t,e){if(!e)return!1;try{return new URL(t).host===e.trim().toLowerCase()}catch{return!1}}function Ooe(t,e,r){let n;try{n=new URL(t)}catch{return!1}if(n.protocol!=="http:"&&n.protocol!=="https:")return!1;if(r.allowedOrigins.includes(n.origin))return!0;if(!e)return!1;if(vL(t,e))return!0;let i;try{i=new URL(`${n.protocol}//${e.trim().toLowerCase()}`)}catch{return!1}return fL.has(n.hostname)&&fL.has(i.hostname)&&n.port===i.port}function EL(t){return(e,r,n)=>{let i=e.headers.origin;if(e.method!=="DELETE"||i===void 0||Ooe(i,e.headers.host,t)){n();return}S.warn("SECURITY","Refused a DELETE from a page other than the viewer",{origin:i,method:e.method,path:e.path}),r.status(403).json({error:"Forbidden",message:"Deletes are accepted only from the claude-mem viewer itself (or an origin in CLAUDE_MEM_ALLOWED_ORIGINS), not from other pages."})}}function Poe(t){let e=new Set(Coe),r=t.workerHost.trim().toLowerCase();r&&e.add(r);for(let n of t.allowedOrigins)try{e.add(new URL(n).hostname.toLowerCase())}catch{}return e}function Moe(t,e){if(!t)return!0;let r=Nf(t);return(0,gL.isIP)(r)!==0||r.endsWith(".localhost")?!0:e.has(r)}function SL(t){let e=Poe(t);return(r,n,i)=>{let s=r.headers.host;if(Moe(s,e)){i();return}let o=Nf(s??"");S.warn("SECURITY","Refused a request whose Host is not a trusted name (DNS rebinding check)",{host:o,method:r.method,path:r.path}),n.status(403).json({error:"Forbidden",message:`Host "${o}" is not trusted. To reach the worker by this name, add its origin (for example http://${s}) to CLAUDE_MEM_ALLOWED_ORIGINS and restart the worker.`})}}function _L(t){let e=new Set(t?.allowedOrigins??[]);return(r,n,i)=>{let s=r.headers.origin;if(s){if(!(Roe(s)||e.has(s.toLowerCase())||t!==void 0&&vL(s,r.headers.host))){n.status(403).json({error:"Forbidden",message:"CORS not allowed"});return}n.setHeader("Access-Control-Allow-Origin",s),n.setHeader("Vary","Origin")}if(r.method==="OPTIONS"){n.setHeader("Access-Control-Allow-Methods","GET,HEAD,POST,PUT,PATCH,DELETE"),n.setHeader("Access-Control-Allow-Headers","Content-Type,Authorization,X-Requested-With"),n.status(204).end();return}i()}}function Hf(t,e,r){let n=t.ip||t.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){S.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:t.path,clientIp:n,method:t.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}r()}function Koe(t,e){let r=(0,ec.createHash)("sha256").update(t,"utf8").digest(),n=(0,ec.createHash)("sha256").update(e,"utf8").digest();if(r.length!==n.length)return!1;try{return(0,ec.timingSafeEqual)(r,n)}catch(i){let s=i instanceof Error?i:new Error(String(i));return S.warn("SECURITY","timing-safe secret comparison failed",{},s),!1}}function Loe(t){return joe.has(t.method.toUpperCase())?Doe.has(t.path)?!t.expectedToken||!t.presentedToken?{allow:!1,status:401,reason:"token"}:Koe(t.presentedToken,t.expectedToken)?{allow:!0}:{allow:!1,status:401,reason:"token"}:{allow:!1,status:404,reason:"path"}:{allow:!1,status:403,reason:"method"}}function qoe(t){let e=Date.now(),r=Io.get(t.clientIp);if(r&&e-r.windowStart>hL&&(r.count=0,r.windowStart=e),!r){if(Io.size>=mL){let n=null,i=1/0;for(let[s,o]of Io)e-o.windowStart>hL?Io.delete(s):o.windowStart<i&&(i=o.windowStart,n=s);n!==null&&Io.size>=mL&&Io.delete(n)}r={count:0,windowStart:e},Io.set(t.clientIp,r)}r.count+=1,r.count<=Noe?S.warn("SECURITY","Remote request denied",t):S.debug("SECURITY","Remote request denied",t)}function Uoe(t){let e=t.query?.token;if(Array.isArray(e)||typeof e!="string")return null;let r=e.trim();return r.length>0?r:null}function xL(t){return(e,r,n)=>{if(Lf(e)&&!qf(e)){n();return}let i=e.ip||e.socket.remoteAddress||"",s=Kf(e.header("authorization")??"")||e.header("x-api-key")?.trim()||Uoe(e)||null,o=Loe({method:e.method,path:e.path,presentedToken:s,expectedToken:t.getToken()});if(!o.allow){qoe({path:e.path,method:e.method,clientIp:i,reason:o.reason}),o.status===404?r.status(404).json({error:"Not found"}):o.status===403?r.status(403).json({error:"Forbidden",message:"Observation TV remote access is read-only"}):r.status(401).json({error:"Unauthorized",message:"Missing or invalid Observation TV token"});return}r.setHeader("Cache-Control","no-store"),n()}}function Foe(t,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=r.tool_name||"?",i=r.tool_input;return`tool=${dL(S.formatTool(n,i))}`}return e.includes("/summarize")?"requesting summary":""}var ES,yL,gL,ec,fL,Coe,Doe,joe,Noe,mL,hL,Io,wL=R(()=>{"use strict";ES=Xe(Mf(),1),yL=Xe(require("path"),1),gL=require("net"),ec=require("crypto");Rr();bS();oe();du();fL=new Set(["localhost","127.0.0.1","[::1]"]);Coe=["localhost","host.docker.internal"];Doe=new Set(["/tv","/tv.html","/stream","/api/observations"]),joe=new Set(["GET","HEAD"]);Noe=10,mL=512,hL=6e4,Io=new Map});function IL(t,e,r,n){let i={error:t,message:e};return r&&(i.code=r),n&&(i.details=n),i}function AL(t,e){e.status(404).json(IL("NotFound",`Cannot ${t.method} ${t.path}`))}var tc,TL,kL=R(()=>{"use strict";oe();tc=class extends Error{constructor(r,n=500,i,s){super(r);this.statusCode=n;this.code=i;this.details=s;this.name="AppError"}statusCode;code;details};TL=(t,e,r,n)=>{let i=t instanceof tc?t.statusCode:500;S.error("HTTP",`Error handling ${e.method} ${e.path}`,{statusCode:i,error:t.message,code:t instanceof tc?t.code:void 0},t);let s=IL(t.name||"Error",t.message,t instanceof tc?t.code:void 0,t instanceof tc?t.details:void 0);r.status(i).json(s)}});var $oe,Joe,tKe,RL=R(()=>{"use strict";$oe=new Set([".cmd",".bat"]),Joe=new Set([".exe",".com"]),tKe=new Set([...Joe,...$oe])});function rc(t=process.env){let e={};for(let[r,n]of Object.entries(t))if(n!==void 0){if(Boe.has(r)){e[r]=n;continue}_S.has(r)||SS.some(i=>r.startsWith(i))||(e[r]=n)}return e}var SS,_S,Goe,Boe,pu=R(()=>{"use strict";SS=["CLAUDECODE_","CLAUDE_CODE_"],_S=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),Goe=new Set(["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy","npm_config_noproxy"]),Boe=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_TMPDIR","CLAUDE_CODE_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","CLAUDE_CODE_USE_FOUNDRY","CLAUDE_CODE_SKIP_BEDROCK_AUTH","CLAUDE_CODE_SKIP_VERTEX_AUTH","CLAUDE_CODE_SKIP_FOUNDRY_AUTH","ANTHROPIC_BEDROCK_BASE_URL","AWS_REGION","AWS_PROFILE","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","ANTHROPIC_VERTEX_PROJECT_ID","CLOUD_ML_REGION","GOOGLE_APPLICATION_CREDENTIALS",...Goe])});function PL(t,e,r){if(r.status!==0)return null;if(typeof r.stdout!="string")return S.warn("SYSTEM","captureProcessStartToken: start-token probe returned no stdout",{pid:e,source:t,status:r.status}),null;let n=r.stdout.trim();return n.length>0?n:null}function Hoe(t){xS+=1;let e=(0,wS.spawnSync)("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${t}").CreationDate.ToString('yyyyMMddHHmmss.ffffff')`],{encoding:"utf-8",timeout:5e3,windowsHide:!0,env:{...rc(process.env),LC_ALL:"C",LANG:"C"}});return PL("powershell-cim",t,e)}function Voe(t,e=!1){if(!e){let n=OL.get(t);if(n&&(t===process.pid||Date.now()-n.capturedAtMs<zoe))return n.token}let r=null;try{r=Hoe(t)}catch(n){S.debug("SYSTEM","captureProcessStartToken: powershell CIM lookup failed",{pid:t,error:n instanceof Error?n.message:String(n)}),r=null}return(r!==null||t!==process.pid)&&OL.set(t,{token:r,capturedAtMs:Date.now()}),r}function ML(t,e){if(!Number.isInteger(t)||t<=0)return null;if(process.platform==="linux"){xS+=1;try{let r=(0,CL.readFileSync)(`/proc/${t}/stat`,"utf-8"),n=r.lastIndexOf(") ");if(n<0)return null;let s=r.slice(n+2).split(" ")[19];return s&&/^\d+$/.test(s)?s:null}catch(r){return S.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}if(process.platform==="win32")return Voe(t,e);xS+=1;try{let r=(0,wS.spawnSync)("ps",["-p",String(t),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...rc(process.env),LC_ALL:"C",LANG:"C"}});return PL("ps-lstart",t,r)}catch(r){return S.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}function Ai(t){return ML(t,!1)}function ki(t,e){if(e===null)return!0;let r=ML(t,!0);return r===null?!0:r===e}var wS,CL,zoe,OL,xS,IS=R(()=>{"use strict";wS=require("child_process"),CL=require("fs");oe();pu();zoe=5e3,OL=new Map,xS=0});async function Yn(t,e={}){let r=e.signalMode==="immediate",n=e.expectedStartToken!==void 0?e.expectedStartToken:Ai(t),i=()=>ki(t,n);if(!i()){S.warn("PROCESS","Skipping tree-kill: root PID was reused since it was captured",{pid:t});return}if(S.debug("PROCESS",`Killing process tree rooted at PID ${t}`,{immediate:r}),process.platform==="win32"){try{await TS("taskkill",["/PID",String(t),"/T","/F"],{timeout:5e3,windowsHide:!0})}catch(s){let o=s.code,a=String(s.stderr??""),c=s instanceof Error?s.message:String(s);if(o===Woe||Yoe.test(`${a} ${c}`)){S.debug("PROCESS","taskkill reported the process was already gone",{pid:t});return}throw new Vf(t,`taskkill failed for PID ${t} (exit ${String(o)}): ${a.trim()||c}`,{cause:s})}return}try{let s=r?"SIGKILL":"SIGTERM",o=await Wf(t);for(let l of o){if(!ki(l.pid,l.startToken)){S.debug("PROCESS",`Skipping ${s}: descendant PID was reused since enumeration`,{pid:l.pid,rootPid:t});continue}try{process.kill(l.pid,s)}catch{}}if(i())try{process.kill(t,s)}catch(l){let u=l instanceof Error?l:new Error(String(l)),d=u.code;d!=="ESRCH"&&S.debug("PROCESS",`Failed to ${s} PID ${t}`,{code:d},u)}else S.warn("PROCESS","Skipping root signal: PID was reused during descendant enumeration",{pid:t,signal:s});r||await new Promise(l=>setTimeout(l,500));let a=i()?await Wf(t):[],c=new Map;for(let l of o)c.set(l.pid,l.startToken);for(let l of a)c.set(l.pid,l.startToken);for(let[l,u]of c){if(!ki(l,u)){S.debug("PROCESS","Skipping SIGKILL: descendant PID was reused since the scan",{pid:l,rootPid:t});continue}try{process.kill(l,"SIGKILL")}catch{}}if(!r&&i())try{process.kill(t,"SIGKILL")}catch{}}catch(s){throw new Vf(t,`tree-kill failed for PID ${t}: ${s instanceof Error?s.message:String(s)}`,{cause:s})}}async function Qoe(){return process.platform==="win32"?eae():process.platform==="linux"?Xoe():Zoe()}function Xoe(){let t=[],e;try{e=(0,Yf.readdirSync)("/proc")}catch(r){return S.warn("PROCESS","Cannot read /proc \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),t}for(let r of e){if(!/^\d+$/.test(r))continue;let n;try{n=(0,Yf.readFileSync)(`/proc/${r}/stat`,"utf-8")}catch{continue}let i=n.lastIndexOf(") ");if(i<0)continue;let s=n.slice(i+2).split(" "),o=Number.parseInt(s[1]??"",10),a=s[19];Number.isFinite(o)&&t.push({pid:Number.parseInt(r,10),ppid:o,startToken:a&&/^\d+$/.test(a)?a:null})}return t}async function Zoe(){let t;try{t=(await TS("ps",["-eo","pid=,ppid=,lstart="],{timeout:1e4,maxBuffer:33554432,env:{...process.env,LC_ALL:"C",LANG:"C"}})).stdout}catch(r){return S.warn("PROCESS","Cannot enumerate the process table \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),[]}let e=[];for(let r of t.split(`
66
66
  `)){let n=r.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);if(!n)continue;let i=n[3].trim();e.push({pid:Number.parseInt(n[1],10),ppid:Number.parseInt(n[2],10),startToken:i.length>0?i:null})}return e}async function eae(){let t;try{t=(await TS("powershell.exe",["-NoProfile","-NonInteractive","-Command","Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,@{Name='StartToken';Expression={$_.CreationDate.ToString('yyyyMMddHHmmss.ffffff')}} | ConvertTo-Csv -NoTypeInformation"],{timeout:3e4,windowsHide:!0,maxBuffer:33554432})).stdout}catch(r){return S.warn("PROCESS","Cannot enumerate the Windows process table \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),[]}let e=[];for(let r of t.split(/\r?\n/).slice(1)){let n=r.match(/^"(\d+)","(\d+)","(.*)"$/);if(!n)continue;let i=n[3].trim();e.push({pid:Number.parseInt(n[1],10),ppid:Number.parseInt(n[2],10),startToken:i.length>0?i:null})}return e}async function Wf(t){let e=await Qoe(),r=new Map;for(let o of e){let a=r.get(o.ppid);a?a.push(o):r.set(o.ppid,[o])}let n=new Set([t]),i=[],s=o=>{for(let a of r.get(o)??[])n.has(a.pid)||(n.add(a.pid),s(a.pid),i.push({pid:a.pid,startToken:a.startToken}))};return s(t),i}var DL,Yf,jL,TS,Woe,Yoe,Vf,fu=R(()=>{"use strict";DL=require("child_process"),Yf=require("fs"),jL=require("util");oe();IS();TS=(0,jL.promisify)(DL.execFile),Woe=128,Yoe=/not found|no running instance|no tasks/i,Vf=class extends Error{pid;constructor(e,r,n){super(r,n),this.name="ProcessTreeKillError",this.pid=e}}});function Et(t){if(!Number.isInteger(t)||t<0||t===0)return!1;try{return process.kill(t,0),!0}catch(e){if(e instanceof Error){let r=e.code;return r==="EPERM"?!0:(S.debug("SYSTEM","PID check failed",{pid:t,code:r}),!1)}return S.warn("SYSTEM","PID check threw non-Error",{pid:t,error:String(e)}),!1}}async function Qf(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(t.every(n=>!Et(n.pid)))return;await new Promise(n=>setTimeout(n,100))}}function To(t){if(!t||!Et(t.pid))return!1;if(!t.startToken)return!0;let e=Ai(t.pid);if(e===null)return!0;let r=e===t.startToken;return r||S.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:t.pid,stored:t.startToken,current:e}),r}function LL(t,e=sae){if(!To(t))return!1;if(t.startToken||e.platform!=="linux")return!0;let r;try{r=e.readCommandLine(t.pid)}catch(i){return S.debug("SYSTEM","Could not read the command line of a token-less worker PID; trusting the live PID",{pid:t.pid,error:i instanceof Error?i.message:String(i)}),!0}let n=r.split("\0").some(i=>KL.default.basename(i)==="worker-service.cjs");return n||S.debug("SYSTEM","Token-less worker PID now belongs to another program (PID reused)",{pid:t.pid}),n}function Xf(){return AS||(AS=new RS),AS}function kS(){let t=oae.shift();t&&t.notify()}var mu,KL,tae,rae,nae,iae,sae,RS,AS,_Ke,oae,ps=R(()=>{"use strict";RL();mu=require("fs"),KL=Xe(require("path"),1);oe();bo();pu();Rr();IS();fu();tae=5e3,rae=1e3,nae=je.supervisorRegistry(),iae=null;sae={platform:process.platform,readCommandLine:t=>(0,mu.readFileSync)(`/proc/${t}/cmdline`,"utf-8")};RS=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;persistDegraded=!1;constructor(e=nae){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,!(0,mu.existsSync)(this.registryPath)){this.persist();return}try{let n=JSON.parse((0,mu.readFileSync)(this.registryPath,"utf-8")).processes??{};for(let[i,s]of Object.entries(n))this.entries.set(i,s)}catch(r){r instanceof Error?S.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):S.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&S.info("SYSTEM","Removed dead processes from supervisor registry",{removed:e}),this.persist()}retainSupersededEntry(e,r){let n=this.entries.get(e);if(!n||n.pid===r||!Et(n.pid))return;let i=`${e}#superseded:${n.pid}`;this.entries.set(i,n);let s=this.runtimeProcesses.get(e);s&&(this.runtimeProcesses.set(i,s),this.runtimeProcesses.delete(e)),S.warn("SYSTEM","Registry id reused while the previous process was still alive; kept it for reaping",{id:e,supersededId:i,supersededPid:n.pid,incomingPid:r})}register(e,r,n){this.initialize(),this.retainSupersededEntry(e,r.pid),this.entries.set(e,r),n&&this.runtimeProcesses.set(e,n),this.persist()}unregister(e,r){this.initialize();let n=e,i=this.entries.get(n);r!==void 0&&i?.pid!==r&&(n=`${e}#superseded:${r}`,i=this.entries.get(n),i?.pid!==r)||i&&(this.entries.delete(n),this.runtimeProcesses.delete(n),this.persist(),i?.type==="sdk"&&kS())}clear(){this.entries.clear(),this.runtimeProcesses.clear(),this.persist()}getAll(){return this.initialize(),Array.from(this.entries.entries()).map(([e,r])=>({id:e,...r})).sort((e,r)=>{let n=Date.parse(e.startedAt),i=Date.parse(r.startedAt);return(Number.isNaN(n)?0:n)-(Number.isNaN(i)?0:i)})}getBySession(e){let r=String(e);return this.getAll().filter(n=>n.sessionId!==void 0&&String(n.sessionId)===r)}getRuntimeProcess(e){return this.runtimeProcesses.get(e)}pruneDeadEntries(){this.initialize();let e=0,r=0;for(let[n,i]of this.entries)Et(i.pid)||(this.entries.delete(n),this.runtimeProcesses.delete(n),e+=1,i.type==="sdk"&&(r+=1));e>0&&this.persist();for(let n=0;n<r;n+=1)kS();return e}async reapSession(e){this.initialize();let r=this.getBySession(e);if(r.length===0)return 0;let n=typeof e=="number"?e:Number(e)||void 0;S.info("SYSTEM",`Reaping ${r.length} process(es) for session ${e}`,{sessionId:n,pids:r.map(a=>a.pid)});let i=r.filter(a=>Et(a.pid)),s=new Map(i.map(a=>[a.pid,Ai(a.pid)]));for(let a of i)try{process.platform==="win32"?await Yn(a.pid,{expectedStartToken:s.get(a.pid)??null}):typeof a.pgid=="number"?process.kill(-a.pgid,"SIGTERM"):process.kill(a.pid,"SIGTERM")}catch(c){c instanceof Error?c.code!=="ESRCH"&&S.debug("SYSTEM",`Failed to SIGTERM session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},c):S.warn("SYSTEM",`Failed to SIGTERM session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(c)})}await Qf(i,tae);let o=i.filter(a=>Et(a.pid));for(let a of o){S.warn("SYSTEM",`Session process PID ${a.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:a.pid,pgid:a.pgid,sessionId:n});let c=s.get(a.pid)??null;if(!ki(a.pid,c)){S.warn("SYSTEM","Skipping SIGKILL: session process PID was reused during the grace window",{pid:a.pid,sessionId:n});continue}try{process.platform==="win32"?await Yn(a.pid,{expectedStartToken:c}):typeof a.pgid=="number"?process.kill(-a.pgid,"SIGKILL"):process.kill(a.pid,"SIGKILL")}catch(l){l instanceof Error?l.code!=="ESRCH"&&S.debug("SYSTEM",`Failed to SIGKILL session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},l):S.warn("SYSTEM",`Failed to SIGKILL session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(l)})}}if(o.length>0){let a=Date.now()+rae;for(;Date.now()<a&&o.filter(l=>Et(l.pid)).length!==0;)await new Promise(l=>setTimeout(l,100))}for(let a of r)this.entries.delete(a.id),this.runtimeProcesses.delete(a.id);this.persist();for(let a of r)a.type==="sdk"&&kS();return S.info("SYSTEM",`Reaped ${r.length} process(es) for session ${e}`,{sessionId:n,reaped:r.length}),r.length}persist(){let e={processes:Object.fromEntries(this.entries.entries())};try{_n(this.registryPath,e),this.persistDegraded=!1}catch(r){this.reportPersistFailure(r)}}reportPersistFailure(e){if(this.persistDegraded)return;this.persistDegraded=!0;let r=e instanceof Error?e:new Error(String(e));S.warn("SYSTEM","Failed to persist supervisor registry; keeping it in memory",{path:this.registryPath},r);try{iae?.({errorCategory:r.code??"unknown"})}catch{}}},AS=null;_Ke=180*1e3,oae=[]});async function qL(t){let e=t.currentPid??process.pid,r=t.pidFilePath??aae,n=t.registry.getAll(),i=[...n].filter(c=>c.pid!==e).sort((c,l)=>Date.parse(l.startedAt)-Date.parse(c.startedAt)),s=new Map,o=new Map;for(let c of i){if(!Et(c.pid)){t.registry.unregister(c.id);continue}o.set(c.id,Ai(c.pid)),s.set(c.id,await Wf(c.pid));try{await NL(c,"SIGTERM")}catch(l){l instanceof Error?S.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:c.pid,pgid:c.pgid,type:c.type},l):S.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:c.pid,pgid:c.pgid,type:c.type,error:String(l)})}}await Qf(i,5e3);let a=i.filter(c=>Et(c.pid)||(s.get(c.id)??[]).some(l=>Et(l.pid)));for(let c of a){let l=ki(c.pid,o.get(c.id)??null);l||S.warn("SYSTEM","Skipping tree-kill: root PID was reused during the grace window",{pid:c.pid,type:c.type});try{l&&await NL(c,"SIGKILL")}catch(u){u instanceof Error?S.debug("SYSTEM","Failed to force kill child process",{pid:c.pid,pgid:c.pgid,type:c.type},u):S.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:c.pid,pgid:c.pgid,type:c.type,error:String(u)})}finally{lae(s.get(c.id)??[],c.pid)}}await Qf(a,1e3);for(let c of i)t.registry.unregister(c.id);for(let c of n.filter(l=>l.pid===e))t.registry.unregister(c.id);cae(r,e),t.registry.pruneDeadEntries()}function cae(t,e,r=!1){if(!(0,nc.existsSync)(t))return;let n=null;try{let o=JSON.parse((0,nc.readFileSync)(t,"utf-8"));n=typeof o.pid=="number"?o.pid:null}catch(o){S.debug("SYSTEM","PID file unreadable \u2014 leaving it (cannot prove ownership)",{pidFilePath:t,error:o instanceof Error?o.message:String(o)});return}let i=e!==null&&n===e,s=n===null||!Et(n);if(!i&&!(r&&s)){S.debug("SYSTEM","PID file not owned by this process \u2014 leaving it for its owner (restart successor?)",{pidFilePath:t,recordedPid:n,currentPid:e});return}try{(0,nc.rmSync)(t,{force:!0})}catch(o){o instanceof Error?S.debug("SYSTEM","Failed to remove PID file",{pidFilePath:t},o):S.warn("SYSTEM","Failed to remove PID file (non-Error)",{pidFilePath:t,error:String(o)})}}function lae(t,e){for(let{pid:r,startToken:n}of t)if(!(r===e||!Et(r))){if(!ki(r,n)){S.debug("SYSTEM","Skipping reap: PID was recycled during the grace window",{pid:r,rootPid:e});continue}try{process.kill(r,"SIGKILL"),S.debug("SYSTEM","Reaped orphaned descendant during shutdown cascade",{pid:r,rootPid:e})}catch(i){let s=i instanceof Error?i.code:void 0;s!=="ESRCH"&&S.warn("SYSTEM","Failed to reap orphaned descendant during shutdown cascade",{pid:r,rootPid:e,errno:s})}}}async function NL(t,e){let{pid:r,pgid:n}=t;if(process.platform!=="win32"){if(typeof n=="number")try{process.kill(-n,e);return}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}if(e==="SIGKILL"){await Yn(r,{signalMode:"immediate"});return}try{process.kill(r,e)}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}return}await Yn(r)}var nc,aae,UL=R(()=>{"use strict";nc=require("fs");oe();ps();Rr();fu();aae=je.workerPid()});function uae(){let e=Xf().pruneDeadEntries();e>0&&S.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function $L(){ic===null&&(ic=setInterval(uae,FL),ic.unref(),S.debug("SYSTEM","Health checker started",{intervalMs:FL}))}function JL(){ic!==null&&(clearInterval(ic),ic=null,S.debug("SYSTEM","Health checker stopped"))}var FL,ic,GL=R(()=>{"use strict";oe();ps();FL=3e4,ic=null});function fae(t){let e=[];for(let r of t.split(`
67
- `)){let n=r.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);n&&e.push({pid:Number.parseInt(n[1],10),ppid:Number.parseInt(n[2],10),command:n[3].trim()})}return e}async function mae(){let t=await dae("ps",["-eo","pid=,ppid=,command="],{timeout:1e4,maxBuffer:33554432});return fae(t.stdout)}function hae(t,e){let r=t.filter(o=>pae.test(o.command)&&o.pid!==e.selfPid),n=new Set(r.map(o=>o.pid)),i=r.filter(o=>!n.has(o.ppid)),s=i.filter(o=>o.ppid===e.selfPid?!1:o.ppid===1?!0:!e.isAlive(o.ppid));return{matched:r,roots:i,orphans:s}}async function HL(t={}){let e=t.platform??process.platform,r={matched:0,trees:0,orphans:0,killed:0,failed:0,unregistered:0,skipped:null};if(e==="win32")return r.skipped="windows",r;let n=t.readTable??mae,i=t.isAlive??Et,s=t.killTree??(f=>Yn(f,{signalMode:"graceful"})),o=t.selfPid??process.pid,a;try{a=await n()}catch(f){return S.warn("PROCESS","Orphaned chroma-mcp sweep skipped: cannot read the process table",{error:f instanceof Error?f.message:String(f)}),r.skipped="unreadable",r}let{matched:c,roots:l,orphans:u}=hae(a,{isAlive:i,selfPid:o});if(r.matched=c.length,r.trees=l.length,r.orphans=u.length,u.length===0)return S.debug("PROCESS","No orphaned chroma-mcp trees found",{matched:r.matched,trees:r.trees}),r;S.warn("PROCESS","Reaping orphaned chroma-mcp trees left by dead workers",{orphans:u.length,roots:u.map(f=>f.pid)});let d=new Set,p=8;for(let f=0;f<u.length;f+=p){let m=u.slice(f,f+p);(await Promise.allSettled(m.map(b=>s(b.pid)))).forEach((b,v)=>{let E=m[v];b.status==="fulfilled"?(r.killed+=1,d.add(E.pid)):(r.failed+=1,S.warn("PROCESS","Failed to reap an orphaned chroma-mcp tree",{pid:E.pid,ppid:E.ppid,error:b.reason instanceof Error?b.reason.message:String(b.reason)}))})}if(t.registry)for(let f of t.registry.getAll())f.type==="chroma"&&d.has(f.pid)&&(t.registry.unregister(f.id),r.unregistered+=1);return S.info("PROCESS","Orphaned chroma-mcp sweep finished",{orphans:r.orphans,killed:r.killed,failed:r.failed,unregistered:r.unregistered}),r}var BL,zL,dae,pae,VL=R(()=>{"use strict";BL=require("child_process"),zL=require("util");oe();fu();ps();dae=(0,zL.promisify)(BL.execFile),pae=/(?:^|\/)(?:uvx|uv|python[\d.]*)(?:\s|$).*chroma-mcp/});function WL(){return gae}function bae(t={}){let e=t.pidFilePath??yae;if(!(0,Ao.existsSync)(e))return"missing";let r=null;try{r=JSON.parse((0,Ao.readFileSync)(e,"utf-8"))}catch(i){return i instanceof Error?S.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},i):S.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(i)}),(0,Ao.rmSync)(e,{force:!0}),"invalid"}return LL(r)&&r?((t.logAlive??!0)&&S.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(t.removeStale===!1||(S.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),(0,Ao.rmSync)(e,{force:!0})),"stale")}var Ao,yae,OS,gae,YL=R(()=>{"use strict";Ao=require("fs");oe();ps();UL();GL();VL();Rr();ps();yae=je.workerPid(),OS=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(e){this.registry=e}async start(){if(this.started)return;if(this.registry.initialize(),bae({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,HL({registry:this.registry}).catch(r=>{S.warn("PROCESS","Orphaned chroma-mcp sweep failed",{error:r instanceof Error?r.message:String(r)})}),$L()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){S.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,S.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(i){i instanceof Error?S.error("SYSTEM","Error during shutdown",{},i):S.error("SYSTEM","Error during shutdown (non-Error)",{error:String(i)});try{await this.stop()}catch(s){s instanceof Error?S.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):S.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{S.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}JL(),this.stopPromise=qL({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(e){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${e}`)}registerProcess(e,r,n){this.registry.register(e,r,n)}unregisterProcess(e,r){this.registry.unregister(e,r)}getRegistry(){return this.registry}},gae=new OS(Xf())});function CS(t,e,r){t.on("finish",async()=>{try{await r()}finally{process.exit(0)}}),t.json(e)}var QL=R(()=>{"use strict"});function PS(t,e=Date.now){return Math.max(0,Math.floor((e()-t)/1e3))}var XL=R(()=>{"use strict"});var ZL=R(()=>{"use strict"});function MS(){let t=Array.from(vae.values()).map(e=>({...e})).sort((e,r)=>e.dependency.localeCompare(r.dependency));return{degraded:t.length>0,statuses:t}}var YKe,vae,eN=R(()=>{"use strict";ZL();YKe=5*6e4,vae=new Map});function DS(t,e){return ko(t)===ko(e)}function tN(t,e){let r=ko(t);return r!==void 0&&r>e}function Sae(t){let e=new Map;if(!t||typeof t!="object")return e;for(let r of Eae){let n=t[r];if(!n||typeof n!="object")continue;let{utilization:i,resetsAt:s}=n,o={};typeof i=="number"&&Number.isFinite(i)&&(o.utilization=i),typeof s=="number"&&Number.isFinite(s)&&(o.resetsAt=ko(s)),(o.utilization!==void 0||o.resetsAt!==void 0)&&e.set(r,o)}return e}function _ae(t,e){return e.status!=="rejected"?!1:!t||t.status!=="rejected"?!0:t.resetsAt!==e.resetsAt}function ko(t){if(!(typeof t!="number"||!Number.isFinite(t)))return t<1e12?t*1e3:t}function xae(t,e){return e!==void 0&&t.profile!==void 0&&t.profile!==e}var Eae,jS,rN,tLe,nN=R(()=>{"use strict";Za();Rr();oe();Eae=["five_hour","seven_day"],jS=class{entries=new Map;rejections=new Map;set(e){if(!e||typeof e!="object")return!1;let{unifiedWindows:r,...n}=e,i=e.rateLimitType??"default",s=this.rejections.get(i),o=Date.now(),a=Sae(r);for(let[d,p]of a){if(d===i)continue;let f=this.entries.get(d),m=f&&!xae(f,e.profile)?f:void 0,h=tN(m?.resetsAt,o)?m?.resetsAt:void 0,b=p.resetsAt??h,v=p.utilization===void 0&&m?.status==="rejected"&&DS(b,m.resetsAt)&&tN(b,o);this.entries.set(d,{rateLimitType:d,...p,resetsAt:b,...v?{status:"rejected"}:{},...e.profile!==void 0?{profile:e.profile}:{},observedAt:o});let E=this.rejections.get(d);E&&p.resetsAt!==void 0&&!DS(p.resetsAt,E.resetsAt)&&this.rejections.delete(d)}let c=e.rateLimitType?a.get(e.rateLimitType):void 0,l={...n,utilization:e.utilization??c?.utilization,resetsAt:ko(e.resetsAt)??c?.resetsAt,overageResetsAt:ko(e.overageResetsAt),observedAt:o};this.entries.set(i,l);let u=_ae(s,l);return l.status==="rejected"?this.rejections.set(i,l):(e.status!==void 0||s&&l.resetsAt!==void 0&&!DS(l.resetsAt,s.resetsAt))&&this.rejections.delete(i),u}get(e){return e?this.entries.get(e):this.entries.get("default")}getMostRecentByWindow(e=Date.now()){let r=n=>{let i=this.entries.get(n);if(!i)return;let s=ko(i.resetsAt);return s!==void 0&&s<=e?{...i,expired:!0}:i};return{five_hour:r("five_hour"),seven_day:r("seven_day"),seven_day_opus:r("seven_day_opus"),seven_day_sonnet:r("seven_day_sonnet"),seven_day_overage_included:r("seven_day_overage_included"),overage:r("overage")}}get size(){return this.entries.size}};rN=new jS;tLe=900*1e3});function Tae(){try{let{dlopen:t,FFIType:e,ptr:r,suffix:n}=require("bun:ffi"),i=t(`kernel32.${n}`,{SetHandleInformation:{args:[e.ptr,e.u32,e.u32],returns:e.i32}}),s=t(`ws2_32.${n}`,{getsockname:{args:[e.u64,e.ptr,e.ptr],returns:e.i32},ntohs:{args:[e.u16],returns:e.u16}});return{setHandleInformation:i.symbols.SetHandleInformation,getsockname:s.symbols.getsockname,ntohs:s.symbols.ntohs,ptr:r}}catch{return null}}function Aae(t){let e=t.address();return!e||typeof e=="string"?null:e.port}function kae(t,e,r){let i=t._handle?.fd;if(typeof i=="number"&&i>0)return i;let s=new Uint8Array(28),o=new Int32Array([16]);for(let a=4;a<Iae;a+=4){if(o[0]=16,s.fill(0),r.getsockname(a,r.ptr(s),r.ptr(o))!==0)continue;if(r.ntohs(s[2]|s[3]<<8)===e)return a}return null}function iN(t){if(process.platform!=="win32")return!1;let e=Aae(t);if(e===null||e<=0)return S.debug("SYSTEM","Windows listen socket inherit clear skipped: no bound port"),!1;let r=Tae();if(!r)return S.warn("SYSTEM","Windows listen socket inherit clear skipped: bun:ffi unavailable"),!1;let n=kae(t,e,r);if(n===null)return S.warn("SYSTEM","Windows listen socket inherit clear skipped: listen handle not found",{port:e}),!1;try{return r.setHandleInformation(n,wae,0)?(S.debug("SYSTEM","Cleared HANDLE_FLAG_INHERIT on Windows listen socket",{port:e,socketHandle:n}),!0):(S.warn("SYSTEM","SetHandleInformation failed to clear HANDLE_FLAG_INHERIT on listen socket",{port:e,socketHandle:n}),!1)}catch(i){let s=i instanceof Error?i:new Error(String(i));return S.warn("SYSTEM","Failed to clear Windows listen socket inherit flag",{port:e,socketHandle:n},s),!1}}var wae,Iae,sN=R(()=>{"use strict";oe();wae=1,Iae=16384});var oN,aN=R(()=>{"use strict";oN=["ready","failed"]});function Cae(){if(LS)return LS.text;let t;try{t=US.readFileSync(KS,"utf-8"),S.debug("SYSTEM","Cached SKILL.md on first request",{path:KS,bytes:Buffer.byteLength(t,"utf-8")})}catch(e){S.debug("SYSTEM","SKILL.md not present, /api/instructions will 404 for topic queries",{path:KS,message:e instanceof Error?e.message:String(e)}),t=null}return LS={text:t},t}function Pae(){if(NS)return NS;let t=new Map;for(let e of oS){let r=hu.default.join(Oae,`${e}.md`);try{t.set(e,US.readFileSync(r,"utf-8"))}catch(n){S.debug("SYSTEM","Operation instruction file not present",{path:r,message:n instanceof Error?n.message:String(n)})}}return t.size>0&&S.debug("SYSTEM","Cached operation instruction files on first request",{count:t.size,operations:Array.from(t.keys())}),NS=t,t}function Mae(t){t.setHeader("X-Content-Type-Options","nosniff"),t.setHeader("X-Frame-Options","DENY"),t.setHeader("X-DNS-Prefetch-Control","off"),t.setHeader("Referrer-Policy","no-referrer"),t.setHeader("Cross-Origin-Opener-Policy","same-origin"),t.setHeader("Cross-Origin-Resource-Policy","same-origin"),t.setHeader("Origin-Agent-Cluster","?1"),t.removeHeader("X-Powered-By")}var cN,lN,US,hu,Rae,uN,Oae,KS,LS,NS,qS,Zf,dN=R(()=>{"use strict";cN=Xe(Mf(),1),lN=Xe(require("http"),1),US=Xe(require("fs"),1),hu=Xe(require("path"),1);FK();oe();wL();kL();YL();ps();pu();QL();XL();eN();nN();sN();aN();Rae=2e3,uN=hu.default.resolve(__CM_DIRNAME__,"../skills/mem-search"),Oae=hu.default.join(uN,"operations"),KS=hu.default.join(uN,"SKILL.md");qS="13.34.2";Zf=class{app;server=null;lastRequestAt=null;inFlightRequests=0;options;startTime=Date.now();constructor(e){this.options=e,this.app=(0,cN.default)(),this.app.disable("x-powered-by"),this.setupRemoteReadOnlyGuard(),this.setupSecurityHeaders(),this.setupCors(),this.setupPreBodyParserRoutes(),this.setupMiddleware(),this.setupCoreRoutes()}getHttpServer(){return this.server}getLastRequestAt(){return this.lastRequestAt}getInFlightRequestCount(){return this.inFlightRequests}trackRequestActivity(e){this.lastRequestAt=Date.now(),this.inFlightRequests++;let r=e.socket,n=!1,i=()=>{n||(n=!0,e.off("finish",i),e.off("close",i),r?.off("close",i),this.inFlightRequests--,this.lastRequestAt=Date.now())};e.on("finish",i),e.on("close",i),r?.on("close",i)}async listen(e,r){return new Promise((n,i)=>{let s=lN.default.createServer(this.app),o=c=>{s.off("listening",a),i(c)},a=()=>{s.off("error",o),this.server=s,iN(s),S.info("SYSTEM","HTTP server started",{host:r,port:e,pid:process.pid}),n()};s.once("error",o),s.once("listening",a),s.listen(e,r)})}async close(){this.server&&(this.server.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,r)=>{this.server.close(n=>n?r(n):e())}),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),this.server=null,S.info("SYSTEM","HTTP server closed"))}registerRoutes(e){e.setupRoutes(this.app)}finalizeRoutes(){this.app.use(AL),this.app.use(TL)}setupMiddleware(){this.app.use((r,n,i)=>{this.trackRequestActivity(n),i()}),bL().forEach(r=>this.app.use(r))}setupRemoteReadOnlyGuard(){this.options.remoteReadOnly&&this.app.use(xL(this.options.remoteReadOnly))}setupSecurityHeaders(){this.options.securityHeaders&&this.app.use((e,r,n)=>{Mae(r),n()})}setupCors(){this.options.originPolicy&&(this.app.use(SL(this.options.originPolicy)),this.app.use(EL(this.options.originPolicy))),this.app.use(_L(this.options.originPolicy))}setupPreBodyParserRoutes(){this.options.preBodyParserRoutes?.forEach(e=>e.setupRoutes(this.app))}handleReadyStream(e,r){r.setHeader("Content-Type","text/event-stream"),r.setHeader("Cache-Control","no-cache"),r.setHeader("Connection","keep-alive"),r.flushHeaders();let n=this.options.initPhaseSource,i=()=>n?n.getInitPhase():{phase:this.options.getInitializationComplete()?"ready":"starting"},s=!1,o=null,a=null,c=null,l=e.socket,u=()=>{s=!0,c!==null&&(clearInterval(c),c=null),a!==null&&(a(),a=null),r.off("close",u),l.off("close",u)},d=p=>{if(s||p.phase===o)return;o=p.phase;let f={phase:p.phase,...p.message!==void 0?{message:p.message}:{},version:qS,pid:process.pid};r.write(`event: phase
67
+ `)){let n=r.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);n&&e.push({pid:Number.parseInt(n[1],10),ppid:Number.parseInt(n[2],10),command:n[3].trim()})}return e}async function mae(){let t=await dae("ps",["-eo","pid=,ppid=,command="],{timeout:1e4,maxBuffer:33554432});return fae(t.stdout)}function hae(t,e){let r=t.filter(o=>pae.test(o.command)&&o.pid!==e.selfPid),n=new Set(r.map(o=>o.pid)),i=r.filter(o=>!n.has(o.ppid)),s=i.filter(o=>o.ppid===e.selfPid?!1:o.ppid===1?!0:!e.isAlive(o.ppid));return{matched:r,roots:i,orphans:s}}async function HL(t={}){let e=t.platform??process.platform,r={matched:0,trees:0,orphans:0,killed:0,failed:0,unregistered:0,skipped:null};if(e==="win32")return r.skipped="windows",r;let n=t.readTable??mae,i=t.isAlive??Et,s=t.killTree??(f=>Yn(f,{signalMode:"graceful"})),o=t.selfPid??process.pid,a;try{a=await n()}catch(f){return S.warn("PROCESS","Orphaned chroma-mcp sweep skipped: cannot read the process table",{error:f instanceof Error?f.message:String(f)}),r.skipped="unreadable",r}let{matched:c,roots:l,orphans:u}=hae(a,{isAlive:i,selfPid:o});if(r.matched=c.length,r.trees=l.length,r.orphans=u.length,u.length===0)return S.debug("PROCESS","No orphaned chroma-mcp trees found",{matched:r.matched,trees:r.trees}),r;S.warn("PROCESS","Reaping orphaned chroma-mcp trees left by dead workers",{orphans:u.length,roots:u.map(f=>f.pid)});let d=new Set,p=8;for(let f=0;f<u.length;f+=p){let m=u.slice(f,f+p);(await Promise.allSettled(m.map(b=>s(b.pid)))).forEach((b,v)=>{let E=m[v];b.status==="fulfilled"?(r.killed+=1,d.add(E.pid)):(r.failed+=1,S.warn("PROCESS","Failed to reap an orphaned chroma-mcp tree",{pid:E.pid,ppid:E.ppid,error:b.reason instanceof Error?b.reason.message:String(b.reason)}))})}if(t.registry)for(let f of t.registry.getAll())f.type==="chroma"&&d.has(f.pid)&&(t.registry.unregister(f.id),r.unregistered+=1);return S.info("PROCESS","Orphaned chroma-mcp sweep finished",{orphans:r.orphans,killed:r.killed,failed:r.failed,unregistered:r.unregistered}),r}var BL,zL,dae,pae,VL=R(()=>{"use strict";BL=require("child_process"),zL=require("util");oe();fu();ps();dae=(0,zL.promisify)(BL.execFile),pae=/(?:^|\/)(?:uvx|uv|python[\d.]*)(?:\s|$).*chroma-mcp/});function WL(){return gae}function bae(t={}){let e=t.pidFilePath??yae;if(!(0,Ao.existsSync)(e))return"missing";let r=null;try{r=JSON.parse((0,Ao.readFileSync)(e,"utf-8"))}catch(i){return i instanceof Error?S.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},i):S.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(i)}),(0,Ao.rmSync)(e,{force:!0}),"invalid"}return LL(r)&&r?((t.logAlive??!0)&&S.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(t.removeStale===!1||(S.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),(0,Ao.rmSync)(e,{force:!0})),"stale")}var Ao,yae,OS,gae,YL=R(()=>{"use strict";Ao=require("fs");oe();ps();UL();GL();VL();Rr();ps();yae=je.workerPid(),OS=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(e){this.registry=e}async start(){if(this.started)return;if(this.registry.initialize(),bae({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,HL({registry:this.registry}).catch(r=>{S.warn("PROCESS","Orphaned chroma-mcp sweep failed",{error:r instanceof Error?r.message:String(r)})}),$L()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){S.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,S.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(i){i instanceof Error?S.error("SYSTEM","Error during shutdown",{},i):S.error("SYSTEM","Error during shutdown (non-Error)",{error:String(i)});try{await this.stop()}catch(s){s instanceof Error?S.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):S.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{S.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}JL(),this.stopPromise=qL({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(e){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${e}`)}registerProcess(e,r,n){this.registry.register(e,r,n)}unregisterProcess(e,r){this.registry.unregister(e,r)}getRegistry(){return this.registry}},gae=new OS(Xf())});function CS(t,e,r){t.on("finish",async()=>{try{await r()}finally{process.exit(0)}}),t.json(e)}var QL=R(()=>{"use strict"});function PS(t,e=Date.now){return Math.max(0,Math.floor((e()-t)/1e3))}var XL=R(()=>{"use strict"});var ZL=R(()=>{"use strict"});function MS(){let t=Array.from(vae.values()).map(e=>({...e})).sort((e,r)=>e.dependency.localeCompare(r.dependency));return{degraded:t.length>0,statuses:t}}var YKe,vae,eN=R(()=>{"use strict";ZL();YKe=5*6e4,vae=new Map});function DS(t,e){return ko(t)===ko(e)}function tN(t,e){let r=ko(t);return r!==void 0&&r>e}function Sae(t){let e=new Map;if(!t||typeof t!="object")return e;for(let r of Eae){let n=t[r];if(!n||typeof n!="object")continue;let{utilization:i,resetsAt:s}=n,o={};typeof i=="number"&&Number.isFinite(i)&&(o.utilization=i),typeof s=="number"&&Number.isFinite(s)&&(o.resetsAt=ko(s)),(o.utilization!==void 0||o.resetsAt!==void 0)&&e.set(r,o)}return e}function _ae(t,e){return e.status!=="rejected"?!1:!t||t.status!=="rejected"?!0:t.resetsAt!==e.resetsAt}function ko(t){if(!(typeof t!="number"||!Number.isFinite(t)))return t<1e12?t*1e3:t}function xae(t,e){return e!==void 0&&t.profile!==void 0&&t.profile!==e}var Eae,jS,rN,tLe,nN=R(()=>{"use strict";Za();Rr();oe();Eae=["five_hour","seven_day"],jS=class{entries=new Map;rejections=new Map;set(e){if(!e||typeof e!="object")return!1;let{unifiedWindows:r,...n}=e,i=e.rateLimitType??"default",s=this.rejections.get(i),o=Date.now(),a=Sae(r);for(let[d,p]of a){if(d===i)continue;let f=this.entries.get(d),m=f&&!xae(f,e.profile)?f:void 0,h=tN(m?.resetsAt,o)?m?.resetsAt:void 0,b=p.resetsAt??h,v=p.utilization===void 0&&m?.status==="rejected"&&DS(b,m.resetsAt)&&tN(b,o);this.entries.set(d,{rateLimitType:d,...p,resetsAt:b,...v?{status:"rejected"}:{},...e.profile!==void 0?{profile:e.profile}:{},observedAt:o});let E=this.rejections.get(d);E&&p.resetsAt!==void 0&&!DS(p.resetsAt,E.resetsAt)&&this.rejections.delete(d)}let c=e.rateLimitType?a.get(e.rateLimitType):void 0,l={...n,utilization:e.utilization??c?.utilization,resetsAt:ko(e.resetsAt)??c?.resetsAt,overageResetsAt:ko(e.overageResetsAt),observedAt:o};this.entries.set(i,l);let u=_ae(s,l);return l.status==="rejected"?this.rejections.set(i,l):(e.status!==void 0||s&&l.resetsAt!==void 0&&!DS(l.resetsAt,s.resetsAt))&&this.rejections.delete(i),u}get(e){return e?this.entries.get(e):this.entries.get("default")}getMostRecentByWindow(e=Date.now()){let r=n=>{let i=this.entries.get(n);if(!i)return;let s=ko(i.resetsAt);return s!==void 0&&s<=e?{...i,expired:!0}:i};return{five_hour:r("five_hour"),seven_day:r("seven_day"),seven_day_opus:r("seven_day_opus"),seven_day_sonnet:r("seven_day_sonnet"),seven_day_overage_included:r("seven_day_overage_included"),overage:r("overage")}}get size(){return this.entries.size}};rN=new jS;tLe=900*1e3});function Tae(){try{let{dlopen:t,FFIType:e,ptr:r,suffix:n}=require("bun:ffi"),i=t(`kernel32.${n}`,{SetHandleInformation:{args:[e.ptr,e.u32,e.u32],returns:e.i32}}),s=t(`ws2_32.${n}`,{getsockname:{args:[e.u64,e.ptr,e.ptr],returns:e.i32},ntohs:{args:[e.u16],returns:e.u16}});return{setHandleInformation:i.symbols.SetHandleInformation,getsockname:s.symbols.getsockname,ntohs:s.symbols.ntohs,ptr:r}}catch{return null}}function Aae(t){let e=t.address();return!e||typeof e=="string"?null:e.port}function kae(t,e,r){let i=t._handle?.fd;if(typeof i=="number"&&i>0)return i;let s=new Uint8Array(28),o=new Int32Array([16]);for(let a=4;a<Iae;a+=4){if(o[0]=16,s.fill(0),r.getsockname(a,r.ptr(s),r.ptr(o))!==0)continue;if(r.ntohs(s[2]|s[3]<<8)===e)return a}return null}function iN(t){if(process.platform!=="win32")return!1;let e=Aae(t);if(e===null||e<=0)return S.debug("SYSTEM","Windows listen socket inherit clear skipped: no bound port"),!1;let r=Tae();if(!r)return S.warn("SYSTEM","Windows listen socket inherit clear skipped: bun:ffi unavailable"),!1;let n=kae(t,e,r);if(n===null)return S.warn("SYSTEM","Windows listen socket inherit clear skipped: listen handle not found",{port:e}),!1;try{return r.setHandleInformation(n,wae,0)?(S.debug("SYSTEM","Cleared HANDLE_FLAG_INHERIT on Windows listen socket",{port:e,socketHandle:n}),!0):(S.warn("SYSTEM","SetHandleInformation failed to clear HANDLE_FLAG_INHERIT on listen socket",{port:e,socketHandle:n}),!1)}catch(i){let s=i instanceof Error?i:new Error(String(i));return S.warn("SYSTEM","Failed to clear Windows listen socket inherit flag",{port:e,socketHandle:n},s),!1}}var wae,Iae,sN=R(()=>{"use strict";oe();wae=1,Iae=16384});var oN,aN=R(()=>{"use strict";oN=["ready","failed"]});function Cae(){if(LS)return LS.text;let t;try{t=US.readFileSync(KS,"utf-8"),S.debug("SYSTEM","Cached SKILL.md on first request",{path:KS,bytes:Buffer.byteLength(t,"utf-8")})}catch(e){S.debug("SYSTEM","SKILL.md not present, /api/instructions will 404 for topic queries",{path:KS,message:e instanceof Error?e.message:String(e)}),t=null}return LS={text:t},t}function Pae(){if(NS)return NS;let t=new Map;for(let e of oS){let r=hu.default.join(Oae,`${e}.md`);try{t.set(e,US.readFileSync(r,"utf-8"))}catch(n){S.debug("SYSTEM","Operation instruction file not present",{path:r,message:n instanceof Error?n.message:String(n)})}}return t.size>0&&S.debug("SYSTEM","Cached operation instruction files on first request",{count:t.size,operations:Array.from(t.keys())}),NS=t,t}function Mae(t){t.setHeader("X-Content-Type-Options","nosniff"),t.setHeader("X-Frame-Options","DENY"),t.setHeader("X-DNS-Prefetch-Control","off"),t.setHeader("Referrer-Policy","no-referrer"),t.setHeader("Cross-Origin-Opener-Policy","same-origin"),t.setHeader("Cross-Origin-Resource-Policy","same-origin"),t.setHeader("Origin-Agent-Cluster","?1"),t.removeHeader("X-Powered-By")}var cN,lN,US,hu,Rae,uN,Oae,KS,LS,NS,qS,Zf,dN=R(()=>{"use strict";cN=Xe(Mf(),1),lN=Xe(require("http"),1),US=Xe(require("fs"),1),hu=Xe(require("path"),1);FK();oe();wL();kL();YL();ps();pu();QL();XL();eN();nN();sN();aN();Rae=2e3,uN=hu.default.resolve(__CM_DIRNAME__,"../skills/mem-search"),Oae=hu.default.join(uN,"operations"),KS=hu.default.join(uN,"SKILL.md");qS="13.35.0";Zf=class{app;server=null;lastRequestAt=null;inFlightRequests=0;options;startTime=Date.now();constructor(e){this.options=e,this.app=(0,cN.default)(),this.app.disable("x-powered-by"),this.setupRemoteReadOnlyGuard(),this.setupSecurityHeaders(),this.setupCors(),this.setupPreBodyParserRoutes(),this.setupMiddleware(),this.setupCoreRoutes()}getHttpServer(){return this.server}getLastRequestAt(){return this.lastRequestAt}getInFlightRequestCount(){return this.inFlightRequests}trackRequestActivity(e){this.lastRequestAt=Date.now(),this.inFlightRequests++;let r=e.socket,n=!1,i=()=>{n||(n=!0,e.off("finish",i),e.off("close",i),r?.off("close",i),this.inFlightRequests--,this.lastRequestAt=Date.now())};e.on("finish",i),e.on("close",i),r?.on("close",i)}async listen(e,r){return new Promise((n,i)=>{let s=lN.default.createServer(this.app),o=c=>{s.off("listening",a),i(c)},a=()=>{s.off("error",o),this.server=s,iN(s),S.info("SYSTEM","HTTP server started",{host:r,port:e,pid:process.pid}),n()};s.once("error",o),s.once("listening",a),s.listen(e,r)})}async close(){this.server&&(this.server.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,r)=>{this.server.close(n=>n?r(n):e())}),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),this.server=null,S.info("SYSTEM","HTTP server closed"))}registerRoutes(e){e.setupRoutes(this.app)}finalizeRoutes(){this.app.use(AL),this.app.use(TL)}setupMiddleware(){this.app.use((r,n,i)=>{this.trackRequestActivity(n),i()}),bL().forEach(r=>this.app.use(r))}setupRemoteReadOnlyGuard(){this.options.remoteReadOnly&&this.app.use(xL(this.options.remoteReadOnly))}setupSecurityHeaders(){this.options.securityHeaders&&this.app.use((e,r,n)=>{Mae(r),n()})}setupCors(){this.options.originPolicy&&(this.app.use(SL(this.options.originPolicy)),this.app.use(EL(this.options.originPolicy))),this.app.use(_L(this.options.originPolicy))}setupPreBodyParserRoutes(){this.options.preBodyParserRoutes?.forEach(e=>e.setupRoutes(this.app))}handleReadyStream(e,r){r.setHeader("Content-Type","text/event-stream"),r.setHeader("Cache-Control","no-cache"),r.setHeader("Connection","keep-alive"),r.flushHeaders();let n=this.options.initPhaseSource,i=()=>n?n.getInitPhase():{phase:this.options.getInitializationComplete()?"ready":"starting"},s=!1,o=null,a=null,c=null,l=e.socket,u=()=>{s=!0,c!==null&&(clearInterval(c),c=null),a!==null&&(a(),a=null),r.off("close",u),l.off("close",u)},d=p=>{if(s||p.phase===o)return;o=p.phase;let f={phase:p.phase,...p.message!==void 0?{message:p.message}:{},version:qS,pid:process.pid};r.write(`event: phase
68
68
  data: ${JSON.stringify(f)}
69
69
 
70
70
  `),oN.includes(p.phase)&&(u(),r.end())};r.on("close",u),l.on("close",u),n&&(a=n.subscribeInitPhase(d)),d(i()),!s&&(c=setInterval(()=>{s||(r.write(`: ping
@@ -390,7 +390,7 @@ data:
390
390
  LIMIT $4)
391
391
  )
392
392
  ORDER BY e.occurred_at ASC, e.id ASC
393
- `,[e.serverSessionId,e.projectId,e.teamId,r])).rows.map(S0e)}}});function U$(t){let e=w0e.safeParse(t);if(!e.success)throw new _d(e.error.issues);return e.data}var tr,Gc,N$,q$,_0e,x0e,w0e,_d,zh=R(()=>{"use strict";tr=require("zod"),Gc={event:"server_beta_generate_event",summary:"server_beta_generate_summary"},N$={event:"evt",summary:"sum"},q$=tr.z.object({team_id:tr.z.string().min(1,"team_id is required"),project_id:tr.z.string().min(1,"project_id is required"),source_type:tr.z.enum(["agent_event","session_summary","observation_reindex"]),source_id:tr.z.string().min(1,"source_id is required"),generation_job_id:tr.z.string().min(1,"generation_job_id is required"),api_key_id:tr.z.string().min(1).nullable(),actor_id:tr.z.string().min(1).nullable(),source_adapter:tr.z.string().min(1,"source_adapter is required"),request_id:tr.z.string().min(1).nullable().optional()}),_0e=q$.extend({kind:tr.z.literal("event"),agent_event_id:tr.z.string().min(1)}),x0e=q$.extend({kind:tr.z.literal("summary"),server_session_id:tr.z.string().min(1)}),w0e=tr.z.discriminatedUnion("kind",[_0e,x0e]),_d=class extends Error{issues;constructor(e){super(`invalid server generation job payload: ${e.map(r=>r.message).join("; ")}`),this.issues=e}}});function Bc(t){let e=N$[t.kind],r=JSON.stringify({kind:t.kind,team_id:t.team_id,project_id:t.project_id,source_type:t.source_type,source_id:t.source_id}),n=(0,F$.createHash)("sha256").update(r).digest("hex");return`${e}_${n}`}var F$,a1=R(()=>{"use strict";F$=require("crypto");zh()});function $$(t){return{kind:"event",team_id:t.event.teamId,project_id:t.event.projectId,source_type:"agent_event",source_id:t.event.id,generation_job_id:t.outboxId,agent_event_id:t.event.id,api_key_id:t.apiKeyId,actor_id:t.actorId,source_adapter:t.sourceAdapter??t.event.sourceAdapter??"api",request_id:t.requestId}}var J$,Hh,G$=R(()=>{"use strict";oc();ms();Ko();oe();a1();Tn();J$="observation_generate_for_event",Hh=class{constructor(e){this.options=e}options;async ingestOne(e,r={}){let n=r.generate??!0,i=r.source??"http_post_v1_events",s=await kn(this.options.pool,async a=>{let l=await new Zr(a).create(e);if(!n)return{event:l,outbox:null};let u=new dt(a),d=new Wt(a),p=et(),f=$$({outboxId:p,event:l,apiKeyId:r.apiKeyId??null,actorId:r.actorId??null,sourceAdapter:r.sourceAdapter??null,requestId:r.requestId??null}),m=await u.create({id:p,projectId:l.projectId,teamId:l.teamId,sourceType:"agent_event",sourceId:l.id,agentEventId:l.id,serverSessionId:l.serverSessionId,jobType:J$,bullmqJobId:Bc({kind:"event",team_id:l.teamId,project_id:l.projectId,source_type:"agent_event",source_id:l.id}),payload:f});return await d.append({generationJobId:m.id,projectId:m.projectId,teamId:m.teamId,eventType:"queued",statusAfter:m.status,attempt:m.attempts,details:{source:i}}),{event:l,outbox:m}}),o="skipped";return s.outbox&&(o=await this.publishEventJob(s.event,s.outbox)),{event:s.event,outbox:s.outbox,enqueueState:o}}async ingestBatch(e,r={}){let n=r.generate??!0,i=r.source??"http_post_v1_events_batch",s=await kn(this.options.pool,async o=>{let a=new Zr(o),c=new dt(o),l=new Wt(o),u=[];for(let d of e){let p=await a.create(d);if(!n){u.push({event:p,outbox:null});continue}let f=et(),m=$$({outboxId:f,event:p,apiKeyId:r.apiKeyId??null,actorId:r.actorId??null,sourceAdapter:r.sourceAdapter??null,requestId:r.requestId??null}),h=await c.create({id:f,projectId:p.projectId,teamId:p.teamId,sourceType:"agent_event",sourceId:p.id,agentEventId:p.id,serverSessionId:p.serverSessionId,jobType:J$,bullmqJobId:Bc({kind:"event",team_id:p.teamId,project_id:p.projectId,source_type:"agent_event",source_id:p.id}),payload:m});await l.append({generationJobId:h.id,projectId:h.projectId,teamId:h.teamId,eventType:"queued",statusAfter:h.status,attempt:h.attempts,details:{source:i}}),u.push({event:p,outbox:h})}return u});return Promise.all(s.map(async({event:o,outbox:a})=>{let c=a?await this.publishEventJob(o,a):"skipped";return{event:o,outbox:a,enqueueState:c}}))}async publishEventJob(e,r){let n=this.options.resolveEventQueue();if(!n)return"queued_only";let i=r.bullmqJobId??Bc({kind:"event",team_id:e.teamId,project_id:e.projectId,source_type:"agent_event",source_id:e.id});try{return await n.add(i,r.payload),"enqueued"}catch(s){return S.warn("SYSTEM","failed to publish event generation job to BullMQ",{outboxId:r.id,error:s instanceof Error?s.message:String(s)}),"queued_only"}}}});function c1(t){return Bc({kind:"summary",team_id:t.teamId,project_id:t.projectId,source_type:"session_summary",source_id:t.serverSessionId})}function l1(t){return{kind:"summary",team_id:t.teamId,project_id:t.projectId,source_type:"session_summary",source_id:t.serverSessionId,generation_job_id:t.generationJobId,server_session_id:t.serverSessionId,api_key_id:t.apiKeyId??null,actor_id:t.actorId??null,source_adapter:t.sourceAdapter??"api",request_id:t.requestId??null}}var B$=R(()=>{"use strict";a1()});var I0e,Vh,z$=R(()=>{"use strict";ms();Ko();Ps();oe();B$();Tn();I0e="observation_generate_session_summary",Vh=class{constructor(e){this.options=e}options;async end(e){let r=e.source??"http_post_v1_sessions_end",n=await kn(this.options.pool,async s=>{let a=await new Gt(s).endSession({id:e.sessionId,projectId:e.projectId,teamId:e.teamId});if(!a)return{session:null,outbox:null};let c=new dt(s),l=new Wt(s),u=et(),d=l1({serverSessionId:a.id,teamId:a.teamId,projectId:a.projectId,generationJobId:u,apiKeyId:e.apiKeyId??null,actorId:e.actorId??null,sourceAdapter:e.sourceAdapter??null}),p=await c.create({id:u,projectId:a.projectId,teamId:a.teamId,sourceType:"session_summary",sourceId:a.id,serverSessionId:a.id,jobType:I0e,bullmqJobId:c1({serverSessionId:a.id,teamId:a.teamId,projectId:a.projectId}),payload:d});return await l.append({generationJobId:p.id,projectId:p.projectId,teamId:p.teamId,eventType:"queued",statusAfter:p.status,attempt:p.attempts,details:{source:r}}),{session:a,outbox:p}});if(!n.session||!n.outbox)return{session:n.session,outbox:null,enqueueState:"skipped"};let i=await this.publishSummaryJob(n.session.id,n.outbox,e);return{session:n.session,outbox:n.outbox,enqueueState:i}}async publishSummaryJob(e,r,n){let i=this.options.resolveSummaryQueue();if(!i)return"queued_only";let s=r.bullmqJobId??c1({serverSessionId:e,teamId:r.teamId,projectId:r.projectId}),o=l1({serverSessionId:e,teamId:r.teamId,projectId:r.projectId,generationJobId:r.id,apiKeyId:n.apiKeyId??null,actorId:n.actorId??null,sourceAdapter:n.sourceAdapter??null});try{return await i.add(s,o),"enqueued"}catch(a){return S.warn("SYSTEM","failed to publish summary generation job to BullMQ",{outboxId:r.id,error:a instanceof Error?a.message:String(a)}),"queued_only"}}}});var H$=R(()=>{"use strict"});function V$(t){return`${(process.env.CLAUDE_MEM_PUBLIC_URL??`${t.protocol}://${t.get("host")??"localhost"}`).replace(/\/+$/,"")}/v1/mcp`}function W$(t,e){return`claude mcp add --transport http claude-mem ${t} --header "Authorization: Bearer ${e}"`}async function X$(t,e,r=r3,n=C0e){if(Q$.includes(e.status))return{job:e,timedOut:!1};let i=Date.now()+r,s=e;for(;Date.now()<i;){await new Promise(a=>setTimeout(a,n));let o=await t.getByIdForScope({id:e.id,projectId:e.projectId,teamId:e.teamId});if(!o)return{job:s,timedOut:!1};if(s=o,Q$.includes(o.status))return{job:o,timedOut:!1}}return{job:s,timedOut:!0}}function M0e(t){let e=typeof t.query.status=="string"?t.query.status.trim():"",r=e&&n3.has(e)?e:null,n=typeof t.query.source_type=="string"?t.query.source_type.trim():"",i=n&&P0e.has(n)?n:null,s=Yh(t.query.limit,i3,1,s3),o=Yh(t.query.offset,0,0,Number.MAX_SAFE_INTEGER),a=typeof t.query.since=="string"?t.query.since.trim():"",c=null;if(a){let l=new Date(a);Number.isNaN(l.getTime())||(c=l)}return{status:r,sourceType:i,limit:s,offset:o,since:c}}function Z$(t){if(!t||typeof t!="object")return 0;let e=t.retried_count;return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.floor(e):0}function e3(t){let e=typeof t.query.status=="string"?t.query.status.trim():"",r=e&&n3.has(e)?e:null,n=Yh(t.query.limit,i3,1,s3),i=Yh(t.query.offset,0,0,Number.MAX_SAFE_INTEGER);return{status:r,limit:n,offset:i}}function Yh(t,e,r,n){if(typeof t!="string")return e;let i=Number.parseInt(t,10);return Number.isFinite(i)?Math.max(r,Math.min(n,i)):e}function u1(t,e={}){let r={id:t.id,projectId:t.project_id,teamId:t.team_id,sourceType:t.source_type,sourceId:t.source_id,status:t.status,attempts:t.attempts,maxAttempts:t.max_attempts,createdAtEpoch:new Date(t.created_at).getTime(),completedAtEpoch:t.completed_at?new Date(t.completed_at).getTime():null,failedAtEpoch:t.failed_at?new Date(t.failed_at).getTime():null,lastError:t.last_error&&typeof t.last_error=="object"?t.last_error:null};return e.includePayload&&t.payload&&typeof t.payload=="object"&&(r.payload=t.payload),r}function D0e(t){let e={"event.received":"agent_event","event.batch_received":"agent_event","event.write":"agent_event","event.batch_write":"agent_event","session.write":"server_session","session.end":"server_session","memory.write":"observation","observation.read":"observation","observation.search":"observation","observation.context":"observation","observation.generated":"observation","session_summary.generated":"observation","generation_job.queued":"observation_generation_job","generation_job.enqueued":"observation_generation_job","generation_job.processing":"observation_generation_job","generation_job.completed":"observation_generation_job","generation_job.failed":"observation_generation_job","generation_job.scope_violation":"observation_generation_job","generation_job.revoked_key":"observation_generation_job","generation_job.retried_by_operator":"observation_generation_job","generation_job.cancelled_by_operator":"observation_generation_job","generation_job.stalled":"observation_generation_job"};return e[t]?e[t]:t.split(".")[0]??"unknown"}function j0e(t,e){let r=t.authContext?.projectId??null;if(!(t.authContext?.teamId??null))return{status:403,body:{error:"Forbidden",message:"API key is not bound to a team"}};if(!r)return null;for(let i of e)if(i.projectId!==r)return{status:403,body:{error:"Forbidden",message:"API key is scoped to a different project"}};return null}function xd(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,externalSessionId:t.externalSessionId,contentSessionId:t.contentSessionId,agentId:t.agentId,agentType:t.agentType,platformSource:t.platformSource,generationStatus:t.generationStatus,metadata:t.metadata,startedAtEpoch:t.startedAtEpoch,endedAtEpoch:t.endedAtEpoch,lastGeneratedAtEpoch:t.lastGeneratedAtEpoch,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function wd(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,serverSessionId:t.serverSessionId,sourceAdapter:t.sourceAdapter,sourceEventId:t.sourceEventId,eventType:t.eventType,platformSource:t.platformSource,payload:t.payload,metadata:t.metadata,occurredAtEpoch:t.occurredAtEpoch,receivedAtEpoch:t.receivedAtEpoch,createdAtEpoch:t.createdAtEpoch}}function zc(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,serverSessionId:t.serverSessionId,...t.contentSessionId!==void 0?{contentSessionId:t.contentSessionId}:{},kind:t.kind,content:t.content,metadata:t.metadata,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function K0e(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,serverSessionId:t.server_session_id,kind:t.kind,content:t.content,metadata:t.metadata&&typeof t.metadata=="object"?t.metadata:{},generationKey:t.generation_key,createdByJobId:t.created_by_job_id,createdAtEpoch:new Date(t.created_at).getTime(),updatedAtEpoch:new Date(t.updated_at).getTime(),source:{id:t.source_id_pk,sourceType:t.source_type,sourceId:t.source_id,generationJobId:t.generation_job_id,createdAtEpoch:new Date(t.source_created_at).getTime()}}}function d1(t,e){return{id:t.id,status:t.status,bullmqJobId:t.bullmqJobId,sourceType:t.sourceType,sourceId:t.sourceId,transport:e,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function t3(t,e){return{id:t.id,status:t.status,transport:e,bullmqJobId:t.bullmqJobId,sourceType:t.sourceType,sourceId:t.sourceId,attempts:t.attempts,maxAttempts:t.maxAttempts,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function p1(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,sourceType:t.sourceType,sourceId:t.sourceId,agentEventId:t.agentEventId,serverSessionId:t.serverSessionId,jobType:t.jobType,status:t.status,bullmqJobId:t.bullmqJobId,attempts:t.attempts,maxAttempts:t.maxAttempts,nextAttemptAtEpoch:t.nextAttemptAtEpoch,completedAtEpoch:t.completedAtEpoch,failedAtEpoch:t.failedAtEpoch,cancelledAtEpoch:t.cancelledAtEpoch,lastError:t.lastError,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}var ne,Qh,R0e,O0e,Y$,r3,C0e,Q$,Wh,P0e,n3,i3,s3,o3=R(()=>{"use strict";ne=require("zod");pN();oc();ms();Oi();bu();ac();oe();rm();W_();g2();mU();P$();D$();K$();Qo();Qh=require("node:crypto");Ps();G$();z$();Ro();H$();R0e="api",O0e="13.34.2";Y$=ne.z.object({generate:ne.z.union([ne.z.literal("true"),ne.z.literal("false")]).optional(),wait:ne.z.union([ne.z.literal("true"),ne.z.literal("false")]).optional()}),r3=3e4,C0e=100,Q$=["completed","failed","cancelled"];Wh=class{constructor(e){this.options=e;this.ingestEvents=new Hh({pool:e.pool,resolveEventQueue:()=>this.resolveQueue("event")}),this.endSession=new Vh({pool:e.pool,resolveSummaryQueue:()=>this.resolveQueue("summary")})}options;ingestEvents;endSession;getIngestEventsService(){return this.ingestEvents}getEndSessionService(){return this.endSession}setupRoutes(e){e.use("/v1",y2());let r=Co(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]}),n=Co(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:read"]}),i=[],s=Number(process.env.CLAUDE_MEM_RATE_LIMIT_PER_MIN??"0");s>0&&i.push(M$(this.options.pool,{windowSec:60,max:s}));let o=Number(process.env.CLAUDE_MEM_MONTHLY_REQUEST_CAP??"0");o>0&&i.push(o1(this.options.pool,{kind:"request",cap:o})),process.env.CLAUDE_MEM_USAGE_METERING==="1"&&i.push(j$(this.options.pool));let a=[...i],c=Number(process.env.CLAUDE_MEM_MONTHLY_TOKEN_CAP??"0");c>0&&a.push(o1(this.options.pool,{kind:"tokens",cap:c}));let l=[r,...a],u=[n,...i];e.get("/v1/usage",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let h=new Date(Date.UTC(new Date().getUTCFullYear(),new Date().getUTCMonth(),1)),b=await new jr(this.options.pool).summarize({teamId:m,since:h});f.status(200).json({since:h.toISOString(),usage:b})})),e.post("/v1/keys",l,this.handleCreate(ne.z.object({label:ne.z.string().max(120).optional(),expiresInDays:ne.z.number().int().positive().max(365).optional()}),async(p,f,m)=>{let h=this.requireTeamId(p,f);if(!h)return;let b=`cm_${(0,Qh.randomBytes)(24).toString("hex")}`,v=(0,Qh.createHash)("sha256").update(b).digest("hex"),E=m.expiresInDays?new Date(Date.now()+m.expiresInDays*864e5):null,_=await new Lt(this.options.pool).createApiKey({keyHash:v,teamId:h,projectId:p.authContext?.projectId??null,actorId:p.authContext?.apiKeyId??"api",scopes:["memories:read"],expiresAt:E});m.label;let I=V$(p);f.status(201).json({id:_.id,apiKey:b,scopes:["memories:read"],expiresAt:E?.toISOString()??null,mcpUrl:I,connectCommand:W$(I,b)})})),e.get("/v1/connect",u,this.asyncHandler(async(p,f)=>{if(!this.requireTeamId(p,f))return;let h=V$(p);f.status(200).json({mcpUrl:h,connectCommand:W$(h,"<YOUR_API_KEY>"),hint:"POST /v1/keys (write scope) to mint a read-only key for this link."})})),e.post("/v1/events",l,this.asyncHandler(async(p,f)=>{let m=Y$.safeParse(p.query);if(!m.success){f.status(400).json({error:"ValidationError",issues:m.error.issues});return}let h=m.data.generate!=="false",b=m.data.wait==="true",v=FS.safeParse(p.body);if(!v.success){f.status(400).json({error:"ValidationError",issues:v.error.issues});return}let E=v.data,_=this.requireTeamId(p,f);if(!_||!this.ensureProjectAllowed(p,f,E.projectId))return;let I=this.toAgentEventInput(E,_);await this.applyContentSessionLinks([I],[p.body],_);let w,O=null,K="skipped",Q={generate:h,source:"http_post_v1_events",apiKeyId:p.authContext?.apiKeyId??null,actorId:await this.resolveActorId(p),sourceAdapter:I.sourceAdapter,requestId:p.requestId??null};try{let N=await this.ingestEvents.ingestOne(I,Q);w=N.event,O=N.outbox,K=N.enqueueState}catch(N){let $=N instanceof Error?N:new Error(String(N));S.warn("SYSTEM","event.write ingest failed",{requestId:p.requestId??null},$),this.handleDbError($,f,"event.write");return}if(await this.auditWrite(p,"event.received",w.id,w.projectId,{sourceAdapter:w.sourceAdapter,sourceEventId:w.sourceEventId,eventType:w.eventType,serverSessionId:w.serverSessionId,generationJobId:O?.id??null}),b){let N=O,$=!1;if(O){let te=new dt(this.options.pool),ze=await X$(te,O);N=ze.job,$=ze.timedOut}f.status(201).json({event:wd(w),generationJob:N?t3(N,K):null,...$?{waitTimedOut:!0}:{}});return}f.status(201).json({event:wd(w),...O?{generationJob:d1(O,K)}:{}})})),e.post("/v1/events/batch",l,this.asyncHandler(async(p,f)=>{let m=Y$.safeParse(p.query);if(!m.success){f.status(400).json({error:"ValidationError",issues:m.error.issues});return}let h=m.data.generate!=="false",b=m.data.wait==="true",E=ne.z.array(FS).min(1).max(500).safeParse(p.body);if(!E.success){f.status(400).json({error:"ValidationError",issues:E.error.issues});return}let _=this.requireTeamId(p,f);if(!_)return;let I=j0e(p,E.data);if(I){f.status(I.status).json(I.body);return}let w=E.data.map(N=>this.toAgentEventInput(N,_));await this.applyContentSessionLinks(w,Array.isArray(p.body)?p.body:E.data,_);let O=[],K=[],Q={generate:h,source:"http_post_v1_events_batch",apiKeyId:p.authContext?.apiKeyId??null,actorId:await this.resolveActorId(p),sourceAdapter:null,requestId:p.requestId??null};try{let N=await this.ingestEvents.ingestBatch(w,Q);O=N.map(({event:$,outbox:te})=>({event:$,outbox:te})),K=N.map(({enqueueState:$})=>$)}catch(N){let $=N instanceof Error?N:new Error(String(N));S.warn("SYSTEM","event.batch_write ingest failed",{requestId:p.requestId??null},$),this.handleDbError($,f,"event.batch_write");return}if(await this.auditWrite(p,"event.batch_received",null,null,{eventCount:O.length,generationJobIds:O.map(({outbox:N})=>N?.id??null).filter(Boolean)}),b){let N=new dt(this.options.pool),$=Date.now()+r3,te=[];for(let A of O){if(!A.outbox){te.push({event:A.event,outbox:null,timedOut:!1});continue}let D=Math.max(0,$-Date.now()),M=await X$(N,A.outbox,D);te.push({event:A.event,outbox:M.job,timedOut:M.timedOut})}let ze=te.some(A=>A.timedOut);f.status(201).json({events:te.map(({event:A,outbox:D,timedOut:M},C)=>({event:wd(A),generationJob:D?t3(D,K[C]):null,...M?{waitTimedOut:!0}:{}})),...ze?{waitTimedOut:!0}:{}});return}f.status(201).json({events:O.map(({event:N,outbox:$},te)=>({event:wd(N),...$?{generationJob:d1($,K[te])}:{}}))})})),e.get("/v1/events/:id",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let h=this.routeParam(p.params.id),b=new Zr(this.options.pool),v=await this.loadScopedById(p,f,{id:h,teamId:m,table:"agent_events",notFound:"Event not found",load:E=>b.getByIdForScope({id:h,projectId:E,teamId:m})});v&&f.json({event:wd(v)})})),e.get("/v1/events/:id/observations",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let h=this.routeParam(p.params.id),v=(await this.options.pool.query("SELECT id, project_id FROM agent_events WHERE id = $1 AND team_id = $2",[h,m])).rows[0];if(!v){f.status(404).json({error:"NotFound",message:"Event not found"});return}if(!this.ensureProjectAllowed(p,f,v.project_id))return;let E=await this.options.pool.query(`
393
+ `,[e.serverSessionId,e.projectId,e.teamId,r])).rows.map(S0e)}}});function U$(t){let e=w0e.safeParse(t);if(!e.success)throw new _d(e.error.issues);return e.data}var tr,Gc,N$,q$,_0e,x0e,w0e,_d,zh=R(()=>{"use strict";tr=require("zod"),Gc={event:"server_beta_generate_event",summary:"server_beta_generate_summary"},N$={event:"evt",summary:"sum"},q$=tr.z.object({team_id:tr.z.string().min(1,"team_id is required"),project_id:tr.z.string().min(1,"project_id is required"),source_type:tr.z.enum(["agent_event","session_summary","observation_reindex"]),source_id:tr.z.string().min(1,"source_id is required"),generation_job_id:tr.z.string().min(1,"generation_job_id is required"),api_key_id:tr.z.string().min(1).nullable(),actor_id:tr.z.string().min(1).nullable(),source_adapter:tr.z.string().min(1,"source_adapter is required"),request_id:tr.z.string().min(1).nullable().optional()}),_0e=q$.extend({kind:tr.z.literal("event"),agent_event_id:tr.z.string().min(1)}),x0e=q$.extend({kind:tr.z.literal("summary"),server_session_id:tr.z.string().min(1)}),w0e=tr.z.discriminatedUnion("kind",[_0e,x0e]),_d=class extends Error{issues;constructor(e){super(`invalid server generation job payload: ${e.map(r=>r.message).join("; ")}`),this.issues=e}}});function Bc(t){let e=N$[t.kind],r=JSON.stringify({kind:t.kind,team_id:t.team_id,project_id:t.project_id,source_type:t.source_type,source_id:t.source_id}),n=(0,F$.createHash)("sha256").update(r).digest("hex");return`${e}_${n}`}var F$,a1=R(()=>{"use strict";F$=require("crypto");zh()});function $$(t){return{kind:"event",team_id:t.event.teamId,project_id:t.event.projectId,source_type:"agent_event",source_id:t.event.id,generation_job_id:t.outboxId,agent_event_id:t.event.id,api_key_id:t.apiKeyId,actor_id:t.actorId,source_adapter:t.sourceAdapter??t.event.sourceAdapter??"api",request_id:t.requestId}}var J$,Hh,G$=R(()=>{"use strict";oc();ms();Ko();oe();a1();Tn();J$="observation_generate_for_event",Hh=class{constructor(e){this.options=e}options;async ingestOne(e,r={}){let n=r.generate??!0,i=r.source??"http_post_v1_events",s=await kn(this.options.pool,async a=>{let l=await new Zr(a).create(e);if(!n)return{event:l,outbox:null};let u=new dt(a),d=new Wt(a),p=et(),f=$$({outboxId:p,event:l,apiKeyId:r.apiKeyId??null,actorId:r.actorId??null,sourceAdapter:r.sourceAdapter??null,requestId:r.requestId??null}),m=await u.create({id:p,projectId:l.projectId,teamId:l.teamId,sourceType:"agent_event",sourceId:l.id,agentEventId:l.id,serverSessionId:l.serverSessionId,jobType:J$,bullmqJobId:Bc({kind:"event",team_id:l.teamId,project_id:l.projectId,source_type:"agent_event",source_id:l.id}),payload:f});return await d.append({generationJobId:m.id,projectId:m.projectId,teamId:m.teamId,eventType:"queued",statusAfter:m.status,attempt:m.attempts,details:{source:i}}),{event:l,outbox:m}}),o="skipped";return s.outbox&&(o=await this.publishEventJob(s.event,s.outbox)),{event:s.event,outbox:s.outbox,enqueueState:o}}async ingestBatch(e,r={}){let n=r.generate??!0,i=r.source??"http_post_v1_events_batch",s=await kn(this.options.pool,async o=>{let a=new Zr(o),c=new dt(o),l=new Wt(o),u=[];for(let d of e){let p=await a.create(d);if(!n){u.push({event:p,outbox:null});continue}let f=et(),m=$$({outboxId:f,event:p,apiKeyId:r.apiKeyId??null,actorId:r.actorId??null,sourceAdapter:r.sourceAdapter??null,requestId:r.requestId??null}),h=await c.create({id:f,projectId:p.projectId,teamId:p.teamId,sourceType:"agent_event",sourceId:p.id,agentEventId:p.id,serverSessionId:p.serverSessionId,jobType:J$,bullmqJobId:Bc({kind:"event",team_id:p.teamId,project_id:p.projectId,source_type:"agent_event",source_id:p.id}),payload:m});await l.append({generationJobId:h.id,projectId:h.projectId,teamId:h.teamId,eventType:"queued",statusAfter:h.status,attempt:h.attempts,details:{source:i}}),u.push({event:p,outbox:h})}return u});return Promise.all(s.map(async({event:o,outbox:a})=>{let c=a?await this.publishEventJob(o,a):"skipped";return{event:o,outbox:a,enqueueState:c}}))}async publishEventJob(e,r){let n=this.options.resolveEventQueue();if(!n)return"queued_only";let i=r.bullmqJobId??Bc({kind:"event",team_id:e.teamId,project_id:e.projectId,source_type:"agent_event",source_id:e.id});try{return await n.add(i,r.payload),"enqueued"}catch(s){return S.warn("SYSTEM","failed to publish event generation job to BullMQ",{outboxId:r.id,error:s instanceof Error?s.message:String(s)}),"queued_only"}}}});function c1(t){return Bc({kind:"summary",team_id:t.teamId,project_id:t.projectId,source_type:"session_summary",source_id:t.serverSessionId})}function l1(t){return{kind:"summary",team_id:t.teamId,project_id:t.projectId,source_type:"session_summary",source_id:t.serverSessionId,generation_job_id:t.generationJobId,server_session_id:t.serverSessionId,api_key_id:t.apiKeyId??null,actor_id:t.actorId??null,source_adapter:t.sourceAdapter??"api",request_id:t.requestId??null}}var B$=R(()=>{"use strict";a1()});var I0e,Vh,z$=R(()=>{"use strict";ms();Ko();Ps();oe();B$();Tn();I0e="observation_generate_session_summary",Vh=class{constructor(e){this.options=e}options;async end(e){let r=e.source??"http_post_v1_sessions_end",n=await kn(this.options.pool,async s=>{let a=await new Gt(s).endSession({id:e.sessionId,projectId:e.projectId,teamId:e.teamId});if(!a)return{session:null,outbox:null};let c=new dt(s),l=new Wt(s),u=et(),d=l1({serverSessionId:a.id,teamId:a.teamId,projectId:a.projectId,generationJobId:u,apiKeyId:e.apiKeyId??null,actorId:e.actorId??null,sourceAdapter:e.sourceAdapter??null}),p=await c.create({id:u,projectId:a.projectId,teamId:a.teamId,sourceType:"session_summary",sourceId:a.id,serverSessionId:a.id,jobType:I0e,bullmqJobId:c1({serverSessionId:a.id,teamId:a.teamId,projectId:a.projectId}),payload:d});return await l.append({generationJobId:p.id,projectId:p.projectId,teamId:p.teamId,eventType:"queued",statusAfter:p.status,attempt:p.attempts,details:{source:r}}),{session:a,outbox:p}});if(!n.session||!n.outbox)return{session:n.session,outbox:null,enqueueState:"skipped"};let i=await this.publishSummaryJob(n.session.id,n.outbox,e);return{session:n.session,outbox:n.outbox,enqueueState:i}}async publishSummaryJob(e,r,n){let i=this.options.resolveSummaryQueue();if(!i)return"queued_only";let s=r.bullmqJobId??c1({serverSessionId:e,teamId:r.teamId,projectId:r.projectId}),o=l1({serverSessionId:e,teamId:r.teamId,projectId:r.projectId,generationJobId:r.id,apiKeyId:n.apiKeyId??null,actorId:n.actorId??null,sourceAdapter:n.sourceAdapter??null});try{return await i.add(s,o),"enqueued"}catch(a){return S.warn("SYSTEM","failed to publish summary generation job to BullMQ",{outboxId:r.id,error:a instanceof Error?a.message:String(a)}),"queued_only"}}}});var H$=R(()=>{"use strict"});function V$(t){return`${(process.env.CLAUDE_MEM_PUBLIC_URL??`${t.protocol}://${t.get("host")??"localhost"}`).replace(/\/+$/,"")}/v1/mcp`}function W$(t,e){return`claude mcp add --transport http claude-mem ${t} --header "Authorization: Bearer ${e}"`}async function X$(t,e,r=r3,n=C0e){if(Q$.includes(e.status))return{job:e,timedOut:!1};let i=Date.now()+r,s=e;for(;Date.now()<i;){await new Promise(a=>setTimeout(a,n));let o=await t.getByIdForScope({id:e.id,projectId:e.projectId,teamId:e.teamId});if(!o)return{job:s,timedOut:!1};if(s=o,Q$.includes(o.status))return{job:o,timedOut:!1}}return{job:s,timedOut:!0}}function M0e(t){let e=typeof t.query.status=="string"?t.query.status.trim():"",r=e&&n3.has(e)?e:null,n=typeof t.query.source_type=="string"?t.query.source_type.trim():"",i=n&&P0e.has(n)?n:null,s=Yh(t.query.limit,i3,1,s3),o=Yh(t.query.offset,0,0,Number.MAX_SAFE_INTEGER),a=typeof t.query.since=="string"?t.query.since.trim():"",c=null;if(a){let l=new Date(a);Number.isNaN(l.getTime())||(c=l)}return{status:r,sourceType:i,limit:s,offset:o,since:c}}function Z$(t){if(!t||typeof t!="object")return 0;let e=t.retried_count;return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.floor(e):0}function e3(t){let e=typeof t.query.status=="string"?t.query.status.trim():"",r=e&&n3.has(e)?e:null,n=Yh(t.query.limit,i3,1,s3),i=Yh(t.query.offset,0,0,Number.MAX_SAFE_INTEGER);return{status:r,limit:n,offset:i}}function Yh(t,e,r,n){if(typeof t!="string")return e;let i=Number.parseInt(t,10);return Number.isFinite(i)?Math.max(r,Math.min(n,i)):e}function u1(t,e={}){let r={id:t.id,projectId:t.project_id,teamId:t.team_id,sourceType:t.source_type,sourceId:t.source_id,status:t.status,attempts:t.attempts,maxAttempts:t.max_attempts,createdAtEpoch:new Date(t.created_at).getTime(),completedAtEpoch:t.completed_at?new Date(t.completed_at).getTime():null,failedAtEpoch:t.failed_at?new Date(t.failed_at).getTime():null,lastError:t.last_error&&typeof t.last_error=="object"?t.last_error:null};return e.includePayload&&t.payload&&typeof t.payload=="object"&&(r.payload=t.payload),r}function D0e(t){let e={"event.received":"agent_event","event.batch_received":"agent_event","event.write":"agent_event","event.batch_write":"agent_event","session.write":"server_session","session.end":"server_session","memory.write":"observation","observation.read":"observation","observation.search":"observation","observation.context":"observation","observation.generated":"observation","session_summary.generated":"observation","generation_job.queued":"observation_generation_job","generation_job.enqueued":"observation_generation_job","generation_job.processing":"observation_generation_job","generation_job.completed":"observation_generation_job","generation_job.failed":"observation_generation_job","generation_job.scope_violation":"observation_generation_job","generation_job.revoked_key":"observation_generation_job","generation_job.retried_by_operator":"observation_generation_job","generation_job.cancelled_by_operator":"observation_generation_job","generation_job.stalled":"observation_generation_job"};return e[t]?e[t]:t.split(".")[0]??"unknown"}function j0e(t,e){let r=t.authContext?.projectId??null;if(!(t.authContext?.teamId??null))return{status:403,body:{error:"Forbidden",message:"API key is not bound to a team"}};if(!r)return null;for(let i of e)if(i.projectId!==r)return{status:403,body:{error:"Forbidden",message:"API key is scoped to a different project"}};return null}function xd(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,externalSessionId:t.externalSessionId,contentSessionId:t.contentSessionId,agentId:t.agentId,agentType:t.agentType,platformSource:t.platformSource,generationStatus:t.generationStatus,metadata:t.metadata,startedAtEpoch:t.startedAtEpoch,endedAtEpoch:t.endedAtEpoch,lastGeneratedAtEpoch:t.lastGeneratedAtEpoch,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function wd(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,serverSessionId:t.serverSessionId,sourceAdapter:t.sourceAdapter,sourceEventId:t.sourceEventId,eventType:t.eventType,platformSource:t.platformSource,payload:t.payload,metadata:t.metadata,occurredAtEpoch:t.occurredAtEpoch,receivedAtEpoch:t.receivedAtEpoch,createdAtEpoch:t.createdAtEpoch}}function zc(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,serverSessionId:t.serverSessionId,...t.contentSessionId!==void 0?{contentSessionId:t.contentSessionId}:{},kind:t.kind,content:t.content,metadata:t.metadata,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function K0e(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,serverSessionId:t.server_session_id,kind:t.kind,content:t.content,metadata:t.metadata&&typeof t.metadata=="object"?t.metadata:{},generationKey:t.generation_key,createdByJobId:t.created_by_job_id,createdAtEpoch:new Date(t.created_at).getTime(),updatedAtEpoch:new Date(t.updated_at).getTime(),source:{id:t.source_id_pk,sourceType:t.source_type,sourceId:t.source_id,generationJobId:t.generation_job_id,createdAtEpoch:new Date(t.source_created_at).getTime()}}}function d1(t,e){return{id:t.id,status:t.status,bullmqJobId:t.bullmqJobId,sourceType:t.sourceType,sourceId:t.sourceId,transport:e,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function t3(t,e){return{id:t.id,status:t.status,transport:e,bullmqJobId:t.bullmqJobId,sourceType:t.sourceType,sourceId:t.sourceId,attempts:t.attempts,maxAttempts:t.maxAttempts,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function p1(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,sourceType:t.sourceType,sourceId:t.sourceId,agentEventId:t.agentEventId,serverSessionId:t.serverSessionId,jobType:t.jobType,status:t.status,bullmqJobId:t.bullmqJobId,attempts:t.attempts,maxAttempts:t.maxAttempts,nextAttemptAtEpoch:t.nextAttemptAtEpoch,completedAtEpoch:t.completedAtEpoch,failedAtEpoch:t.failedAtEpoch,cancelledAtEpoch:t.cancelledAtEpoch,lastError:t.lastError,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}var ne,Qh,R0e,O0e,Y$,r3,C0e,Q$,Wh,P0e,n3,i3,s3,o3=R(()=>{"use strict";ne=require("zod");pN();oc();ms();Oi();bu();ac();oe();rm();W_();g2();mU();P$();D$();K$();Qo();Qh=require("node:crypto");Ps();G$();z$();Ro();H$();R0e="api",O0e="13.35.0";Y$=ne.z.object({generate:ne.z.union([ne.z.literal("true"),ne.z.literal("false")]).optional(),wait:ne.z.union([ne.z.literal("true"),ne.z.literal("false")]).optional()}),r3=3e4,C0e=100,Q$=["completed","failed","cancelled"];Wh=class{constructor(e){this.options=e;this.ingestEvents=new Hh({pool:e.pool,resolveEventQueue:()=>this.resolveQueue("event")}),this.endSession=new Vh({pool:e.pool,resolveSummaryQueue:()=>this.resolveQueue("summary")})}options;ingestEvents;endSession;getIngestEventsService(){return this.ingestEvents}getEndSessionService(){return this.endSession}setupRoutes(e){e.use("/v1",y2());let r=Co(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]}),n=Co(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:read"]}),i=[],s=Number(process.env.CLAUDE_MEM_RATE_LIMIT_PER_MIN??"0");s>0&&i.push(M$(this.options.pool,{windowSec:60,max:s}));let o=Number(process.env.CLAUDE_MEM_MONTHLY_REQUEST_CAP??"0");o>0&&i.push(o1(this.options.pool,{kind:"request",cap:o})),process.env.CLAUDE_MEM_USAGE_METERING==="1"&&i.push(j$(this.options.pool));let a=[...i],c=Number(process.env.CLAUDE_MEM_MONTHLY_TOKEN_CAP??"0");c>0&&a.push(o1(this.options.pool,{kind:"tokens",cap:c}));let l=[r,...a],u=[n,...i];e.get("/v1/usage",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let h=new Date(Date.UTC(new Date().getUTCFullYear(),new Date().getUTCMonth(),1)),b=await new jr(this.options.pool).summarize({teamId:m,since:h});f.status(200).json({since:h.toISOString(),usage:b})})),e.post("/v1/keys",l,this.handleCreate(ne.z.object({label:ne.z.string().max(120).optional(),expiresInDays:ne.z.number().int().positive().max(365).optional()}),async(p,f,m)=>{let h=this.requireTeamId(p,f);if(!h)return;let b=`cm_${(0,Qh.randomBytes)(24).toString("hex")}`,v=(0,Qh.createHash)("sha256").update(b).digest("hex"),E=m.expiresInDays?new Date(Date.now()+m.expiresInDays*864e5):null,_=await new Lt(this.options.pool).createApiKey({keyHash:v,teamId:h,projectId:p.authContext?.projectId??null,actorId:p.authContext?.apiKeyId??"api",scopes:["memories:read"],expiresAt:E});m.label;let I=V$(p);f.status(201).json({id:_.id,apiKey:b,scopes:["memories:read"],expiresAt:E?.toISOString()??null,mcpUrl:I,connectCommand:W$(I,b)})})),e.get("/v1/connect",u,this.asyncHandler(async(p,f)=>{if(!this.requireTeamId(p,f))return;let h=V$(p);f.status(200).json({mcpUrl:h,connectCommand:W$(h,"<YOUR_API_KEY>"),hint:"POST /v1/keys (write scope) to mint a read-only key for this link."})})),e.post("/v1/events",l,this.asyncHandler(async(p,f)=>{let m=Y$.safeParse(p.query);if(!m.success){f.status(400).json({error:"ValidationError",issues:m.error.issues});return}let h=m.data.generate!=="false",b=m.data.wait==="true",v=FS.safeParse(p.body);if(!v.success){f.status(400).json({error:"ValidationError",issues:v.error.issues});return}let E=v.data,_=this.requireTeamId(p,f);if(!_||!this.ensureProjectAllowed(p,f,E.projectId))return;let I=this.toAgentEventInput(E,_);await this.applyContentSessionLinks([I],[p.body],_);let w,O=null,K="skipped",Q={generate:h,source:"http_post_v1_events",apiKeyId:p.authContext?.apiKeyId??null,actorId:await this.resolveActorId(p),sourceAdapter:I.sourceAdapter,requestId:p.requestId??null};try{let N=await this.ingestEvents.ingestOne(I,Q);w=N.event,O=N.outbox,K=N.enqueueState}catch(N){let $=N instanceof Error?N:new Error(String(N));S.warn("SYSTEM","event.write ingest failed",{requestId:p.requestId??null},$),this.handleDbError($,f,"event.write");return}if(await this.auditWrite(p,"event.received",w.id,w.projectId,{sourceAdapter:w.sourceAdapter,sourceEventId:w.sourceEventId,eventType:w.eventType,serverSessionId:w.serverSessionId,generationJobId:O?.id??null}),b){let N=O,$=!1;if(O){let te=new dt(this.options.pool),ze=await X$(te,O);N=ze.job,$=ze.timedOut}f.status(201).json({event:wd(w),generationJob:N?t3(N,K):null,...$?{waitTimedOut:!0}:{}});return}f.status(201).json({event:wd(w),...O?{generationJob:d1(O,K)}:{}})})),e.post("/v1/events/batch",l,this.asyncHandler(async(p,f)=>{let m=Y$.safeParse(p.query);if(!m.success){f.status(400).json({error:"ValidationError",issues:m.error.issues});return}let h=m.data.generate!=="false",b=m.data.wait==="true",E=ne.z.array(FS).min(1).max(500).safeParse(p.body);if(!E.success){f.status(400).json({error:"ValidationError",issues:E.error.issues});return}let _=this.requireTeamId(p,f);if(!_)return;let I=j0e(p,E.data);if(I){f.status(I.status).json(I.body);return}let w=E.data.map(N=>this.toAgentEventInput(N,_));await this.applyContentSessionLinks(w,Array.isArray(p.body)?p.body:E.data,_);let O=[],K=[],Q={generate:h,source:"http_post_v1_events_batch",apiKeyId:p.authContext?.apiKeyId??null,actorId:await this.resolveActorId(p),sourceAdapter:null,requestId:p.requestId??null};try{let N=await this.ingestEvents.ingestBatch(w,Q);O=N.map(({event:$,outbox:te})=>({event:$,outbox:te})),K=N.map(({enqueueState:$})=>$)}catch(N){let $=N instanceof Error?N:new Error(String(N));S.warn("SYSTEM","event.batch_write ingest failed",{requestId:p.requestId??null},$),this.handleDbError($,f,"event.batch_write");return}if(await this.auditWrite(p,"event.batch_received",null,null,{eventCount:O.length,generationJobIds:O.map(({outbox:N})=>N?.id??null).filter(Boolean)}),b){let N=new dt(this.options.pool),$=Date.now()+r3,te=[];for(let A of O){if(!A.outbox){te.push({event:A.event,outbox:null,timedOut:!1});continue}let D=Math.max(0,$-Date.now()),M=await X$(N,A.outbox,D);te.push({event:A.event,outbox:M.job,timedOut:M.timedOut})}let ze=te.some(A=>A.timedOut);f.status(201).json({events:te.map(({event:A,outbox:D,timedOut:M},C)=>({event:wd(A),generationJob:D?t3(D,K[C]):null,...M?{waitTimedOut:!0}:{}})),...ze?{waitTimedOut:!0}:{}});return}f.status(201).json({events:O.map(({event:N,outbox:$},te)=>({event:wd(N),...$?{generationJob:d1($,K[te])}:{}}))})})),e.get("/v1/events/:id",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let h=this.routeParam(p.params.id),b=new Zr(this.options.pool),v=await this.loadScopedById(p,f,{id:h,teamId:m,table:"agent_events",notFound:"Event not found",load:E=>b.getByIdForScope({id:h,projectId:E,teamId:m})});v&&f.json({event:wd(v)})})),e.get("/v1/events/:id/observations",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let h=this.routeParam(p.params.id),v=(await this.options.pool.query("SELECT id, project_id FROM agent_events WHERE id = $1 AND team_id = $2",[h,m])).rows[0];if(!v){f.status(404).json({error:"NotFound",message:"Event not found"});return}if(!this.ensureProjectAllowed(p,f,v.project_id))return;let E=await this.options.pool.query(`
394
394
  SELECT o.id, o.project_id, o.team_id, o.server_session_id, o.kind, o.content,
395
395
  o.metadata, o.generation_key, o.created_by_job_id, o.created_at, o.updated_at,
396
396
  os.id AS source_id_pk, os.source_type, os.source_id, os.generation_job_id, os.created_at AS source_created_at
@@ -9541,9 +9541,9 @@ elseif rcall("ZSCORE", repeatKey, legacyCustomKey) ~= false then
9541
9541
  end
9542
9542
  return ''
9543
9543
  `;vb.updateRepeatableJobMillis={name:"updateRepeatableJobMillis",content:WAe,keys:1}});var c5=y(G=>{"use strict";Object.defineProperty(G,"__esModule",{value:!0});var z=(nr(),Mt(rr));z.__exportStar(uz(),G);z.__exportStar(dz(),G);z.__exportStar(pz(),G);z.__exportStar(fz(),G);z.__exportStar(mz(),G);z.__exportStar(hz(),G);z.__exportStar(yz(),G);z.__exportStar(gz(),G);z.__exportStar(bz(),G);z.__exportStar(vz(),G);z.__exportStar(Ez(),G);z.__exportStar(Sz(),G);z.__exportStar(_z(),G);z.__exportStar(xz(),G);z.__exportStar(wz(),G);z.__exportStar(Iz(),G);z.__exportStar(Tz(),G);z.__exportStar(Az(),G);z.__exportStar(kz(),G);z.__exportStar(Rz(),G);z.__exportStar(Oz(),G);z.__exportStar(Cz(),G);z.__exportStar(Pz(),G);z.__exportStar(Mz(),G);z.__exportStar(Dz(),G);z.__exportStar(jz(),G);z.__exportStar(Kz(),G);z.__exportStar(Lz(),G);z.__exportStar(Nz(),G);z.__exportStar(qz(),G);z.__exportStar(Uz(),G);z.__exportStar(Fz(),G);z.__exportStar($z(),G);z.__exportStar(Jz(),G);z.__exportStar(Gz(),G);z.__exportStar(Bz(),G);z.__exportStar(zz(),G);z.__exportStar(Hz(),G);z.__exportStar(Vz(),G);z.__exportStar(Wz(),G);z.__exportStar(Yz(),G);z.__exportStar(Qz(),G);z.__exportStar(Xz(),G);z.__exportStar(Zz(),G);z.__exportStar(e5(),G);z.__exportStar(t5(),G);z.__exportStar(r5(),G);z.__exportStar(n5(),G);z.__exportStar(i5(),G);z.__exportStar(s5(),G);z.__exportStar(o5(),G);z.__exportStar(a5(),G)});var Hd=y(Eb=>{"use strict";Object.defineProperty(Eb,"__esModule",{value:!0});Eb.createIORedisClient=YA;Eb.isIRedisClient=YAe;var l5=new WeakMap;function YA(t){if(t.__bullmq_iredis===!0)return t;let e=l5.get(t);if(e)return e;let r=t.isCluster===!0,n=new Map,i=Object.create(null);i.__bullmq_iredis=!0,i.isCluster=r,i.runCommand=(o,a)=>t[o](a),i.pipeline=(...o)=>u5(t.pipeline(...o)),i.multi=(...o)=>u5(t.multi(...o)),typeof t.duplicate=="function"&&(i.duplicate=o=>{var a;if(r){let c=((a=t.options)===null||a===void 0?void 0:a.redisOptions)||{},l=o?Object.assign(Object.assign({},c),o):c;return YA(t.duplicate(void 0,{redisOptions:l}))}return YA(t.duplicate(o))}),i.hset=(o,a,...c)=>{if(typeof a=="string")return t.hset(o,a,...c);let l=[o];for(let[u,d]of Object.entries(a))l.push(u,d);return t.hset(...l)},i.set=(o,a,c,...l)=>{if(typeof c=="string"||c==null)return t.set(o,a,...c!=null?[c,...l]:[]);let u=[o,a];return c.PX!=null?u.push("PX",c.PX):c.EX!=null&&u.push("EX",c.EX),t.set(...u)},i.zrange=(o,a,c,l,...u)=>typeof l=="string"?t.zrange(o,a,c,l,...u):l?.WITHSCORES?t.zrange(o,a,c,"WITHSCORES"):t.zrange(o,a,c),i.zrevrange=(o,a,c,l,...u)=>typeof l=="string"?t.zrevrange(o,a,c,l,...u):l?.WITHSCORES?t.zrevrange(o,a,c,"WITHSCORES"):t.zrevrange(o,a,c),i.xadd=(o,a,c,...l)=>{if(typeof c=="string")return t.xadd(o,a,c,...l);let u=l[0],d=[o];u?.MAXLEN!=null&&(d.push("MAXLEN"),u.approximate!==!1&&d.push("~"),d.push(u.MAXLEN)),d.push(a);for(let[p,f]of Object.entries(c))d.push(p,f);return t.xadd(...d)},i.xread=(o,...a)=>{if(typeof o=="string")return t.xread(o,...a);let c=a[0],l=[];c?.BLOCK!=null&&l.push("BLOCK",c.BLOCK),c?.COUNT!=null&&l.push("COUNT",c.COUNT),l.push("STREAMS");for(let u of o)l.push(u.key);for(let u of o)l.push(u.id);return t.xread(...l)},i.xtrim=(o,a,c,...l)=>{if(typeof c=="string"||l.length===0)return t.xtrim(o,a,c,...l);let u=l[0],d=[o,a];return u?.approximate!==!1&&d.push("~"),d.push(c),t.xtrim(...d)},i.clientSetName=o=>t.client("SETNAME",o),i.clientList=()=>t.client("LIST"),i.scan=(o,...a)=>{if(a.length===0||typeof a[0]=="string"||typeof a[0]=="function")return t.scan(o,...a);let c=a[0],l=[o];return c?.MATCH!=null&&l.push("MATCH",c.MATCH),c?.COUNT!=null&&l.push("COUNT",c.COUNT),t.scan(...l)};let s=new Proxy(t,{get(o,a){if(a in i)return i[a];let c=Reflect.get(o,a,o);if(typeof c!="function")return c;if(Object.prototype.hasOwnProperty.call(o,a))return c.bind(o);let l=n.get(a);if(l!==void 0)return l;let u=c.bind(o);return n.set(a,u),u},set(o,a,c){return a in i?(i[a]=c,!0):(n.delete(a),Reflect.set(o,a,c))},deleteProperty(o,a){return a in i?!1:(n.delete(a),Reflect.deleteProperty(o,a))},has(o,a){return a in i||Reflect.has(o,a)}});return l5.set(t,s),s}function u5(t){let e=t;e.runCommand=function(s,o){return e[s](o),e};let r=e.hset.bind(e);e.hset=function(s,o){let a=[s];for(let[c,l]of Object.entries(o))a.push(c,l);return r(...a),e};let n=e.hscan.bind(e);e.hscan=function(s,o,a){return a?.COUNT!=null?n(s,o,"COUNT",a.COUNT):n(s,o),e};let i=e.sscan.bind(e);return e.sscan=function(s,o,a){return a?.COUNT!=null?i(s,o,"COUNT",a.COUNT):i(s,o),e},e}function YAe(t){return!t||typeof t!="object"?!1:t.__bullmq_iredis===!0?!0:typeof t.runCommand=="function"&&typeof t.defineCommand=="function"&&typeof t.pipeline=="function"&&typeof t.multi=="function"&&typeof t.duplicate=="function"&&typeof t.scanStream=="function"&&typeof t.connect=="function"&&typeof t.disconnect=="function"&&typeof t.on=="function"&&typeof t.status=="string"&&typeof t.isCluster=="boolean"}});var Wd=y(wb=>{"use strict";Object.defineProperty(wb,"__esModule",{value:!0});wb.RedisConnection=void 0;var QAe=(nr(),Mt(rr)),XAe=require("events"),d5=lz(),QA=gt(),yr=Kr(),ZAe=Qy(),eke=c5(),XA=Hd(),Sb=Zo(),tke=["BullMQ: WARNING! Your redis options maxRetriesPerRequest must be null","and will be overridden by BullMQ."].join(" "),rke="BullMQ: Your redis options maxRetriesPerRequest must be null.",_b=Symbol("bullmqClusterReconnectPromise"),ZA=Symbol("bullmqClusterPatchedForBlocking"),xb=Symbol("bullmqClusterOriginalBzpopmin"),ek=Symbol("bullmqClusterWrappedBzpopmin"),yl=Symbol("bullmqClusterPatchRefCount"),fa=Symbol("bullmqClusterClosingRefCount"),p5=3e4,Vd=class t extends XAe.EventEmitter{constructor(e,r){if(super(),this.extraOptions=r,this.capabilities={canDoubleTimeout:!1,canBlockFor1Ms:!0},this.status="initializing",this.dbType="redis",this.packageVersion=ZAe.version,this.disabledBlockingClusterReconnect=!1,this.extraOptions=Object.assign({shared:!1,blocking:!0,skipVersionCheck:!1,skipWaitingForReady:!1,clusterReconnectTimeoutMs:p5},r),!(0,yr.isRedisInstance)(e))this.checkBlockingOptions(tke,e),this.opts=Object.assign({port:6379,host:"127.0.0.1",retryStrategy:function(n){return Math.max(Math.min(Math.exp(n),2e4),1e3)}},e),this.extraOptions.blocking&&(this.opts.maxRetriesPerRequest=null);else{if(this._client=(0,XA.isIRedisClient)(e)?e:(0,XA.createIORedisClient)(e),this._client.options.keyPrefix)throw new Error("BullMQ: ioredis does not support ioredis prefixes, use the prefix option instead.");this._client.isCluster?this.opts=this._client.options.redisOptions:this.opts=this._client.options,this.checkBlockingOptions(rke,this.opts,!0)}this.skipVersionCheck=r?.skipVersionCheck||!!(this.opts&&this.opts.skipVersionCheck),this.handleClientError=n=>{this.emit("error",n)},this.handleClientClose=()=>{this.emit("close")},this.handleClientReady=()=>{this.emit("ready")},this.initializing=this.init(),this.initializing.catch(n=>this.emit("error",n))}checkBlockingOptions(e,r,n=!1){if(this.extraOptions.blocking&&r&&r.maxRetriesPerRequest){if(n)throw new Error(e);console.error(e)}}static async waitUntilReady(e){if(e.status==="ready"||e.status==="connect"&&(0,yr.isRedisCluster)(e))return;if(e.status==="wait")return e.connect();if(e.status==="end")throw new Sb.ConnectionClosedError(QA.CONNECTION_CLOSED_ERROR_MSG);let r,n,i;try{await new Promise((s,o)=>{let a;i=c=>{a=c},r=()=>{s()},n=()=>{e.status!=="end"?o(a||new Sb.ConnectionClosedError(QA.CONNECTION_CLOSED_ERROR_MSG)):a?o(a):s()},(0,yr.increaseMaxListeners)(e,3),e.once("ready",r),e.on("end",n),e.once("error",i)})}finally{e.removeListener("end",n),e.removeListener("error",i),e.removeListener("ready",r),(0,yr.decreaseMaxListeners)(e,3)}}get client(){return this.initializing}loadCommands(e,r){let n=r||eke;for(let i in n){let s=`${n[i].name}:${e}`;this._client[s]||this._client.defineCommand(s,{numberOfKeys:n[i].keys,lua:n[i].content})}}async init(){if(!this._client)if(t.clientFactory)this._client=t.clientFactory(this.opts);else{let e=this.opts,{url:r}=e,n=QAe.__rest(e,["url"]),i=r?new d5.default(r,n):new d5.default(n);this._client=(0,XA.createIORedisClient)(i)}if((0,yr.increaseMaxListeners)(this._client,3),this._client.on("error",this.handleClientError),this._client.on("close",this.handleClientClose),this._client.on("ready",this.handleClientReady),this.patchBlockingClusterClient(),this.extraOptions.skipWaitingForReady||await t.waitUntilReady(this._client),this.loadCommands(this.packageVersion),this._client.status!=="end"){let e=await this.getRedisVersionAndType();if(this.version=e.version,this.dbType=e.databaseType,this.skipVersionCheck!==!0&&!this.closing){if((0,yr.isRedisVersionLowerThan)(this.version,t.minimumVersion,this.dbType))throw new Error(`Redis version needs to be greater or equal than ${t.minimumVersion} Current: ${this.version}`);(0,yr.isRedisVersionLowerThan)(this.version,t.recommendedMinimumVersion,this.dbType)&&console.warn(`It is highly recommended to use a minimum Redis version of ${t.recommendedMinimumVersion}
9544
- Current: ${this.version}`)}this.capabilities={canDoubleTimeout:!(0,yr.isRedisVersionLowerThan)(this.version,"6.0.0",this.dbType),canBlockFor1Ms:!(0,yr.isRedisVersionLowerThan)(this.version,"7.0.8",this.dbType)},this.status="ready"}return this._client}patchBlockingClusterClient(){var e;let r=this._client,n=r;if(!this.extraOptions.blocking||!(0,yr.isRedisCluster)(r)||typeof n.bzpopmin!="function")return;let i=(e=this.extraOptions.clusterReconnectTimeoutMs)!==null&&e!==void 0?e:p5;if(n[yl]=(n[yl]||0)+1,this.patchedBlockingClusterClient=n,n[ZA])return;let s=n.bzpopmin,o=async(...a)=>{await t.reconnectClusterIfNeeded(n,i);try{return await s.apply(n,a)}catch(c){let l=c;if(t.shouldReconnectClusterAfterError(n,l))try{await t.reconnectCluster(n,i)}catch{}throw l}};n[xb]=s,n[ek]=o,n[ZA]=!0,n.bzpopmin=o}disableBlockingClusterReconnect(){let e=this.patchedBlockingClusterClient;!e||this.disabledBlockingClusterReconnect||(e[fa]=(e[fa]||0)+1,this.disabledBlockingClusterReconnect=!0)}releaseBlockingClusterClientPatch(){let e=this.patchedBlockingClusterClient;if(!e)return;if(this.disabledBlockingClusterReconnect){let n=(e[fa]||1)-1;n>0?e[fa]=n:delete e[fa],this.disabledBlockingClusterReconnect=!1}let r=(e[yl]||1)-1;if(r>0){e[yl]=r,this.patchedBlockingClusterClient=void 0;return}e[xb]&&e.bzpopmin===e[ek]&&(e.bzpopmin=e[xb]),delete e[yl],delete e[fa],delete e[xb],delete e[ek],delete e[ZA],this.patchedBlockingClusterClient=void 0}static isClusterWithEmptyNodes(e){return typeof e.nodes=="function"&&e.nodes().length===0}static isReconnectingDisabled(e){let r=e[yl]||0,n=e[fa]||0;return r===0||n>=r||e.status==="end"||e.status==="closing"}static async reconnectClusterIfNeeded(e,r){!t.isReconnectingDisabled(e)&&t.isClusterWithEmptyNodes(e)&&await t.reconnectCluster(e,r)}static shouldReconnectClusterAfterError(e,r){var n,i;if(t.isReconnectingDisabled(e))return!1;let s=[r.message,(n=r.cause)===null||n===void 0?void 0:n.message,(i=r.lastNodeError)===null||i===void 0?void 0:i.message].join(" ");return t.isClusterWithEmptyNodes(e)||/Command timed out|Failed to refresh slots cache/i.test(s)}static async reconnectCluster(e,r){t.isReconnectingDisabled(e)||(e[_b]||(e[_b]=t.connectClusterWithTimeout(e,r).finally(()=>{e[_b]=null})),await e[_b])}static async connectClusterWithTimeout(e,r){e.disconnect(!1);let n;try{await Promise.race([e.connect(),new Promise((i,s)=>{var o;n=setTimeout(()=>{s(new Sb.ConnectionClosedError(`BullMQ: cluster reconnect timed out after ${r}ms`))},r),(o=n.unref)===null||o===void 0||o.call(n)})])}finally{n&&clearTimeout(n)}}async disconnect(e=!0){let r=await this.client;if(r.status!=="end"){let n,i;if(!e)return r.disconnect();let s=new Promise((o,a)=>{(0,yr.increaseMaxListeners)(r,2),r.once("end",o),r.once("error",a),n=o,i=a});r.disconnect();try{await s}finally{(0,yr.decreaseMaxListeners)(r,2),r.removeListener("end",n),r.removeListener("error",i)}}}async reconnect(){let e=await this.client;for(;;){if(this.closing)throw new Sb.ConnectionClosedError(QA.CONNECTION_CLOSED_ERROR_MSG);if(e.status==="ready"||e.status==="connect"&&(0,yr.isRedisCluster)(e))return;if(e.status==="wait"||e.status==="end")return e.connect();try{await t.waitUntilReady(e)}catch(r){if(!["end","connecting","connect","reconnecting"].includes(e.status))throw r}}}async close(e=!1){var r;if(!this.closing){let n=this.status;this.status="closing",this.closing=!0,this.disableBlockingClusterReconnect();try{n==="ready"&&await this.initializing,this.extraOptions.shared||(n=="initializing"||e?(this._client.disconnect(),(r=this.initializing)===null||r===void 0||r.catch(()=>{})):await this._client.quit(),this._client.status="end")}catch(i){if((0,yr.isNotConnectionError)(i))throw i}finally{this.releaseBlockingClusterClientPatch(),this._client.off("error",this.handleClientError),this._client.off("close",this.handleClientClose),this._client.off("ready",this.handleClientReady),(0,yr.decreaseMaxListeners)(this._client,3),this.removeAllListeners(),this.status="closed"}}}async getRedisVersionAndType(){if(this.skipVersionCheck)return{version:t.minimumVersion,databaseType:"redis"};let e=await this._client.info(),r="redis_version:",n="maxmemory_policy:",i=e.split(/\r?\n/),s,o="redis";for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("dragonfly_version:")||c.includes("server:Dragonfly")?(o="dragonfly",c.indexOf("dragonfly_version:")===0&&(s=c.substr(18))):c.includes("valkey_version:")||c.includes("server:Valkey")?(o="valkey",c.indexOf("valkey_version:")===0&&(s=c.substr(15))):c.indexOf(r)===0&&(s=c.substr(r.length),o==="redis"&&(o="redis")),c.indexOf(n)===0){let l=c.substr(n.length);l!=="noeviction"&&console.warn(`IMPORTANT! Eviction policy is ${l}. It should be "noeviction"`)}}if(!s){for(let a of i)if(a.includes("version:")){let c=a.split(":");if(c.length>=2){s=c[1];break}}}return{version:s||t.minimumVersion,databaseType:o}}get redisVersion(){return this.version}get databaseType(){return this.dbType}};wb.RedisConnection=Vd;Vd.minimumVersion="5.0.0";Vd.recommendedMinimumVersion="6.2.0"});var f5=y(Tb=>{"use strict";Object.defineProperty(Tb,"__esModule",{value:!0});Tb.FlowProducer=void 0;var nke=require("events"),hi=Kr(),ike=Nd(),ske=sl(),Ib=tg(),oke=Wd(),yi=wr(),tk=class extends nke.EventEmitter{constructor(e={connection:{}},r=oke.RedisConnection){super(),this.opts=e,this.queues=new Map,this.opts=Object.assign({prefix:"bull"},e),this.connection=new r(e.connection,{shared:(0,hi.isRedisInstance)(e.connection),blocking:!1,skipVersionCheck:e.skipVersionCheck,skipWaitingForReady:e.skipWaitingForReady}),(0,hi.forwardConnectionError)(this,this.connection),this.connection.on("close",()=>{this.queues.clear(),this.closing||this.emit("ioredis:close")}),this.queueKeys=new Ib.QueueKeys(e.prefix),e?.telemetry&&(this.telemetry=e.telemetry)}createScripts(e){var r;return(r=e.scripts)!==null&&r!==void 0?r:(0,ike.createScripts)(e)}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}get client(){return this.connection.client}get Job(){return ske.Job}waitUntilReady(){return this.client}async add(e,r){var n;if(this.closing)return;let s=(await this.connection.client).multi(),o=(n=e?.opts)===null||n===void 0?void 0:n.parent,a=(0,hi.getParentKey)(o),c=a?`${a}:dependencies`:void 0;return(0,hi.trace)(this.telemetry,yi.SpanKind.PRODUCER,e.queueName,"addFlow",e.queueName,async l=>{l?.setAttributes({[yi.TelemetryAttributes.FlowName]:e.name});let u=await this.addNode({multi:s,node:e,queuesOpts:r?.queuesOptions,parent:{parentOpts:o,parentDependenciesKey:c}}),d=await s.exec(),[p]=d||[];if(p){let[f,m]=p;if(f)throw f;if(typeof m=="number"&&m<0)throw this.toFlowError(m,a);typeof m=="string"?u.job.id=m:typeof m=="number"&&(u.job.id=m.toString())}return u})}async getFlow(e){if(this.closing)return;let r=await this.connection.client,n=Object.assign({depth:10,maxChildren:20,prefix:this.opts.prefix},e);return this.getNode(r,n)}async addBulk(e){if(this.closing)return;let n=(await this.connection.client).multi();return(0,hi.trace)(this.telemetry,yi.SpanKind.PRODUCER,"","addBulkFlows","",async i=>{var s,o;i?.setAttributes({[yi.TelemetryAttributes.BulkCount]:e.length,[yi.TelemetryAttributes.BulkNames]:e.map(l=>l.name).join(",")});let a=await this.addNodes(n,e),c=await n.exec();for(let l=0;l<a.length;++l){let u=c?.[l];if(!u)continue;let[d,p]=u;if(d)throw d;if(typeof p=="number"&&p<0)throw this.toFlowError(p,(0,hi.getParentKey)((o=(s=e[l])===null||s===void 0?void 0:s.opts)===null||o===void 0?void 0:o.parent));typeof p=="string"?a[l].job.id=p:typeof p=="number"&&(a[l].job.id=p.toString())}return a})}async addNode({multi:e,node:r,parent:n,queuesOpts:i}){var s,o;let a=r.prefix||this.opts.prefix,c=this.queueFromNode(r,new Ib.QueueKeys(a),a),l=i&&i[r.queueName],u=(s=l?.defaultJobOptions)!==null&&s!==void 0?s:{},d=((o=r.opts)===null||o===void 0?void 0:o.jobId)||(0,hi.randomUUID)();return(0,hi.trace)(this.telemetry,yi.SpanKind.PRODUCER,r.queueName,"addNode",r.queueName,async(p,f)=>{var m,h;p?.setAttributes({[yi.TelemetryAttributes.JobName]:r.name,[yi.TelemetryAttributes.JobId]:d});let b=r.opts,v=b?.telemetry;if(f&&b){let I=(m=b.telemetry)===null||m===void 0?void 0:m.omitContext,w=((h=b.telemetry)===null||h===void 0?void 0:h.metadata)||!I&&f;(w||I)&&(v={metadata:w,omitContext:I})}let E=new this.Job(c,r.name,r.data,Object.assign(Object.assign(Object.assign({},u),b),{parent:n?.parentOpts,telemetry:v}),d),_=(0,hi.getParentKey)(n?.parentOpts);if(r.children&&r.children.length>0){let I=d,w=new Ib.QueueKeys(r.prefix||this.opts.prefix);await E.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,addToWaitingChildren:!0,parentKey:_});let O=`${w.toKey(r.queueName,I)}:dependencies`,K=await this.addChildren({multi:e,nodes:r.children,parent:{parentOpts:{id:I,queue:w.getQueueQualifiedName(r.queueName)},parentDependenciesKey:O},queuesOpts:i});return{job:E,children:K}}else return await E.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,parentKey:_}),{job:E}})}addNodes(e,r){return Promise.all(r.map(n=>{var i;let s=(i=n?.opts)===null||i===void 0?void 0:i.parent,o=(0,hi.getParentKey)(s),a=o?`${o}:dependencies`:void 0;return this.addNode({multi:e,node:n,parent:{parentOpts:s,parentDependenciesKey:a}})}))}async getNode(e,r){let n=this.queueFromNode(r,new Ib.QueueKeys(r.prefix),r.prefix),i=await this.Job.fromId(n,r.id);if(i){let{processed:s={},unprocessed:o=[],failed:a=[],ignored:c={}}=await i.getDependencies({failed:{count:r.maxChildren},processed:{count:r.maxChildren},unprocessed:{count:r.maxChildren},ignored:{count:r.maxChildren}}),l=Object.keys(s),u=Object.keys(c),d=l.length+o.length+u.length+a.length,p=r.depth-1;if(d>0&&p){let f=await this.getChildren(e,[...l,...o,...a,...u],p,r.maxChildren);return{job:i,children:f}}else return{job:i}}}addChildren({multi:e,nodes:r,parent:n,queuesOpts:i}){return Promise.all(r.map(s=>this.addNode({multi:e,node:s,parent:n,queuesOpts:i})))}getChildren(e,r,n,i){let s=o=>{let[a,c,l]=o.split(":");return this.getNode(e,{id:l,queueName:c,prefix:a,depth:n,maxChildren:i})};return Promise.all([...r.map(s)])}queueFromNode(e,r,n){let i=`${n}:${e.queueName}`,s=this.queues.get(i);if(s)return s;let o=this,a={client:this.connection.client,name:e.queueName,keys:r.getKeys(e.queueName),toKey:c=>r.toKey(e.queueName,c),opts:{prefix:n,connection:{}},qualifiedName:r.getQueueQualifiedName(e.queueName),get closing(){return o.closing},waitUntilReady:async()=>this.connection.client,removeListener:this.removeListener.bind(this),emit:this.emit.bind(this),on:this.on.bind(this),get redisVersion(){return o.connection.redisVersion},get databaseType(){return o.connection.databaseType},trace:async()=>{}};return a.scripts=this.createScripts(a),this.queues.set(i,a),a}toFlowError(e,r){let n;switch(e){case yi.ErrorCode.ParentJobNotExist:n=new Error(`Missing key for parent job ${r}. addJob`);break;case yi.ErrorCode.ParentJobCannotBeReplaced:n=new Error(`The parent job ${r} cannot be replaced. addJob`);break;default:n=new Error(`Unknown code ${e} error for addJob`)}return n.code=e,n}async close(){this.closing||(this.queues.clear(),this.closing=this.connection.close()),await this.closing}disconnect(){return this.connection.disconnect()}};Tb.FlowProducer=tk});var h5=y(ik=>{"use strict";Object.defineProperty(ik,"__esModule",{value:!0});ik.createNodeRedisClient=dke;var ake=(nr(),Mt(rr)),cke=require("crypto"),lke=require("events"),uke=require("stream"),Ab=Zo();function m5(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function gi(t){return t?.message==="Disconnects client"||t?.message==="The client is closed"||t?.message==="Connection is closed."}function dke(t){return new rk(t)}var rk=class t extends lke.EventEmitter{get status(){return this.statusOverride?this.statusOverride:this.raw.isReady?"ready":this.raw.isOpen?"connect":this.hasConnected?"end":"wait"}set status(e){if(e==="end"&&(this.destroying=!0,this.raw.isOpen))try{this.raw.quit().catch(()=>{})}catch{}this.statusOverride=e}get options(){var e;return(e=this.raw.options)!==null&&e!==void 0?e:{}}set options(e){}constructor(e){super(),this.raw=e,this.scripts=new Map,this.hasConnected=!1,this.destroying=!1,this.isCluster=!1,e.on("ready",()=>{this.hasConnected=!0,this.connectionName?this.raw.clientSetName(this.connectionName).then(()=>this.emit("ready"),()=>this.emit("ready")):this.emit("ready")}),e.on("error",r=>{this.destroying&&gi(r)||this.emit("error",r)}),e.on("end",()=>this.emit("close")),e.on("reconnecting",()=>this.emit("reconnecting")),e.isOpen||(this.connectPromise=e.connect().then(()=>{this.connectPromise=void 0},r=>{this.connectPromise=void 0}))}async connect(){if(this.connectPromise)return this.connectPromise;if(!this.raw.isOpen)return this.connectPromise=this.raw.connect().then(()=>{this.connectPromise=void 0},e=>{throw this.connectPromise=void 0,e}),this.connectPromise;this.raw.isReady||await new Promise((e,r)=>{let n=()=>{o(),e()},i=a=>{o(),r(a)},s=()=>{o(),r(new Error("Connection ended before ready event"))},o=()=>{this.off("ready",n),this.off("error",i),this.off("end",s)};this.once("ready",n),this.once("error",i),this.once("end",s)})}disconnect(e=!1){this.destroying=!0,e||(this.statusOverride="end");try{this.raw.isOpen&&this.raw.destroy()}catch{}this.emit("close"),e?(this.statusOverride=void 0,this.emit("reconnecting"),this.connect().catch(r=>{gi(r)||this.emit("error",r)}).finally(()=>{this.destroying=!1})):this.emit("end")}async quit(){if(this.destroying||this.statusOverride==="end")return setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK";this.destroying=!0;try{if(this.raw.isOpen)try{await this.raw.quit()}catch{}}catch{}return this.statusOverride="end",setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"}duplicate(...e){let r=this.raw.duplicate(),n=new t(r);for(let[s,o]of this.scripts)n.scripts.set(s,o),n[s]=(...a)=>n.runCommand(s,a);let i=e[0];return i&&typeof i=="object"&&i.connectionName&&(n.connectionName=i.connectionName),n}defineCommand(e,r){let n=(0,cke.createHash)("sha1").update(r.lua).digest("hex");this.scripts.set(e,{sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys}),this[e]=(...i)=>this.runCommand(e,i),this.raw.scriptLoad(r.lua).catch(()=>{})}async runCommand(e,r){var n,i;let s=this.scripts.get(e);if(!s)throw new Error(`BullMQ: unknown command "${e}"`);let o=m5(r),{sha:a,lua:c,numberOfKeys:l}=s,u=o.slice(0,l).map(String),d=o.slice(l).map(p=>Buffer.isBuffer(p)?p:p==null?"":String(p));try{return await this.raw.evalSha(a,{keys:u,arguments:d})}catch(p){if(this.destroying&&gi(p))return null;if(gi(p))throw new Ab.ConnectionClosedError(p.message,p);if(!((i=(n=p?.message)===null||n===void 0?void 0:n.includes)===null||i===void 0)&&i.call(n,"NOSCRIPT"))try{return await this.raw.eval(c,{keys:u,arguments:d})}catch(f){if(this.destroying&&gi(f))return null;throw gi(f)?new Ab.ConnectionClosedError(f.message,f):f}throw p}}multi(){return new nk(this.raw.multi(),this.scripts)}pipeline(){return this.multi()}async hgetall(e){let r=await this.raw.hGetAll(e);return r??{}}async hget(e,r){var n;return(n=await this.raw.hGet(e,r))!==null&&n!==void 0?n:null}async hmget(e,...r){return(await this.raw.hmGet(e,r)).map(i=>i??null)}async hset(e,r,...n){if(typeof r=="object")return await this.raw.hSet(e,r);let i={};i[r]=String(n[0]);for(let s=1;s<n.length;s+=2)i[String(n[s])]=String(n[s+1]);return await this.raw.hSet(e,i)}async hdel(e,...r){return await this.raw.hDel(e,r)}async hexists(e,r){return await this.raw.hExists(e,r)?1:0}async get(e){var r;return(r=await this.raw.get(e))!==null&&r!==void 0?r:null}async set(e,r,n){let i={};return n?.PX!=null?i.PX=n.PX:n?.EX!=null&&(i.EX=n.EX),await this.raw.set(e,String(r),i)}async del(...e){return e.length===0?0:await this.raw.del(e)}async zrange(e,r,n,i){if(i?.WITHSCORES){let s=await this.raw.zRangeWithScores(e,r,n),o=[];for(let a of s)o.push(a.value,String(a.score));return o}return await this.raw.zRange(e,r,n)}async zrevrange(e,r,n,i){if(i?.WITHSCORES){let s=await this.raw.zRangeWithScores(e,r,n,{REV:!0}),o=[];for(let a of s)o.push(a.value,String(a.score));return o}return await this.raw.zRange(e,r,n,{REV:!0})}async zcard(e){return await this.raw.zCard(e)}async zscore(e,r){let n=await this.raw.zScore(e,r);return n!=null?String(n):null}async lrange(e,r,n){return await this.raw.lRange(e,r,n)}async llen(e){return await this.raw.lLen(e)}async ltrim(e,r,n){return await this.raw.lTrim(e,r,n),"OK"}async lpos(e,r){var n;return(n=await this.raw.lPos(e,r))!==null&&n!==void 0?n:null}async smembers(e){return await this.raw.sMembers(e)}async xadd(e,r,n,i){let s={};i?.MAXLEN!=null&&(s.TRIM={strategy:"MAXLEN",threshold:i.MAXLEN,strategyModifier:i.approximate===!1?void 0:"~"});let o={};for(let[a,c]of Object.entries(n))o[a]=String(c);return await this.raw.xAdd(e,r,o,s)}async xread(e,r){let n={};r?.BLOCK!=null&&(n.BLOCK=r.BLOCK),r?.COUNT!=null&&(n.COUNT=r.COUNT);let i=e.map(o=>({key:o.key,id:o.id})),s;try{s=await this.raw.xRead(i,n)}catch(o){if(this.destroying&&gi(o))return null;throw gi(o)?new Ab.ConnectionClosedError(o.message,o):o}return s?s.map(o=>[o.name,o.messages.map(a=>[a.id,Object.entries(a.message).flat()])]):null}async xtrim(e,r,n,i){let s=i?.approximate===!1?void 0:"~";return await this.raw.xTrim(e,r,n,{strategyModifier:s})}async bzpopmin(e,r){let n;try{n=await this.raw.bzPopMin(e,r)}catch(i){if(this.destroying&&gi(i))return null;throw gi(i)?new Ab.ConnectionClosedError(i.message,i):i}return n?[n.key,n.value,String(n.score)]:null}async info(){return await this.raw.info()}async clientSetName(e){return await this.raw.clientSetName(e)}async clientList(){return await this.raw.sendCommand(["CLIENT","LIST"])}async scan(e,r){let n={};r?.MATCH&&(n.MATCH=r.MATCH),r?.COUNT&&(n.COUNT=r.COUNT);let i=await this.raw.scan(String(e),n);return[String(i.cursor),i.keys]}scanStream(e){let r=this.raw,n=this.connectPromise,i={};e.match&&(i.MATCH=e.match),e.count&&(i.COUNT=e.count);let s=new uke.Readable({objectMode:!0,async read(){var o,a,c,l;try{n&&await n;try{for(var u=!0,d=ake.__asyncValues(r.scanIterator(i)),p;p=await d.next(),o=p.done,!o;u=!0){l=p.value,u=!1;let f=l;if(!s.push(Array.isArray(f)?f:[f]))return}}catch(f){a={error:f}}finally{try{!u&&!o&&(c=d.return)&&await c.call(d)}finally{if(a)throw a.error}}s.push(null)}catch(f){s.destroy(f)}}});return s}async keys(e){return await this.raw.keys(e)}async exists(...e){return e.length===0?0:await this.raw.exists(e)}async zadd(e,...r){let n=[];for(let i=0;i<r.length;i+=2)n.push({score:Number(r[i]),value:String(r[i+1])});return await this.raw.zAdd(e,n)}async zrem(e,...r){return await this.raw.zRem(e,r)}async xlen(e){return await this.raw.xLen(e)}async xrevrange(e,r,n,...i){let s={};return i[0]==="COUNT"&&(s.COUNT=Number(i[1])),(await this.raw.xRevRange(e,r,n,s)).map(a=>[a.id,Object.entries(a.message).flat()])}async sadd(e,...r){return await this.raw.sAdd(e,r.map(String))}async scard(e){return await this.raw.sCard(e)}async lpush(e,...r){return await this.raw.lPush(e,r)}async rpop(e){return await this.raw.rPop(e)}async incr(e){return await this.raw.incr(e)}async incrby(e,r){return await this.raw.incrBy(e,r)}async flushall(){return await this.raw.flushAll()}},nk=class{constructor(e,r){this.raw=e,this.scripts=r,this.transformers=[]}addIdentityTransformer(){this.transformers.push(e=>e)}hgetall(e){return this.raw.hGetAll(e),this.addIdentityTransformer(),this}hset(e,r){return this.raw.hSet(e,r),this.addIdentityTransformer(),this}hscan(e,r,n){let i={};return n?.COUNT!=null&&(i.COUNT=n.COUNT),this.raw.hScan(e,String(r),i),this.transformers.push(s=>{if(!s)return["0",[]];let o=[];for(let a of s.entries||[])o.push(a.field,a.value);return[String(s.cursor),o]}),this}smembers(e){return this.raw.sMembers(e),this.addIdentityTransformer(),this}sscan(e,r,n){let i={};return n?.COUNT!=null&&(i.COUNT=n.COUNT),this.raw.sScan(e,String(r),i),this.transformers.push(s=>s?[String(s.cursor),s.members||[]]:["0",[]]),this}zrange(e,r,n){return this.raw.zRange(e,r,n),this.addIdentityTransformer(),this}lrange(e,r,n){return this.raw.lRange(e,r,n),this.addIdentityTransformer(),this}llen(e){return this.raw.lLen(e),this.addIdentityTransformer(),this}del(...e){return e.length>0&&(this.raw.del(e),this.addIdentityTransformer()),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}" in transaction`);let i=m5(r),{sha:s,lua:o,numberOfKeys:a}=n,c=i.slice(0,a).map(String),l=i.slice(a).map(u=>Buffer.isBuffer(u)?u:u==null?"":String(u));return this.raw.evalSha(s,{keys:c,arguments:l}),this.addIdentityTransformer(),this}async exec(){let e=await this.raw.exec();return e?e.map((r,n)=>{if(r instanceof Error)return[r,null];let i=this.transformers[n];return[null,i?i(r):r]}):null}}});var b5=y(ok=>{"use strict";Object.defineProperty(ok,"__esModule",{value:!0});ok.createBunRedisClient=yke;var pke=require("crypto"),fke=require("events"),mke=require("stream"),y5=Zo();function g5(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function hke(t){var e;let r=(e=t?.message)!==null&&e!==void 0?e:"";return r==="Socket closed unexpectedly"||r.startsWith("Connection closed")||r==="Connection is closed."||r==="Connection has failed"}function kb(t){return t==null?[]:Array.isArray(t)?t.map(String):t instanceof Set?Array.from(t,e=>String(e)):[]}function yke(t,e){return new sk(t,e)}var sk=class t extends fke.EventEmitter{get status(){return this.statusOverride?this.statusOverride:this.closed?"end":this.raw.connected?"ready":this.hasConnected?"end":"wait"}set status(e){e==="end"&&(this.closing=!0,this.closed=!0),this.statusOverride=e}get options(){return{}}set options(e){}constructor(e,r){super(),this.raw=e,this.scripts=new Map,this.loadedScriptShas=new Set,this.hasConnected=!1,this.closed=!1,this.closing=!1,this.reconnecting=!1,this.reconnectTimer=null,this.reconnectAttempts=0,this.maxReconnectDelay=2e4,this.isCluster=!1,this._setupCallbacks(),r?.lazyConnect||this.connect().catch(()=>{})}_setupCallbacks(){this.raw.onconnect=()=>{this.hasConnected=!0,this.closed=!1,this.closing=!1,this.reconnecting=!1,this.reconnectAttempts=0,this.statusOverride=void 0,this.loadedScriptShas.clear(),this.connectionName?this.clientSetName(this.connectionName).then(()=>this.emit("ready"),()=>this.emit("ready")):this.emit("ready")},this.raw.onclose=e=>{if(this.closing){this.closed=!0,this.emit("close"),this.emit("end");return}this.closed=!0,this.emit("close"),e&&this.emit("error",e),this._scheduleReconnect()}}_scheduleReconnect(){if(this.closing||this.reconnecting)return;this.reconnecting=!0,this.reconnectAttempts++;let e=Math.max(Math.min(Math.exp(this.reconnectAttempts)*100,this.maxReconnectDelay),1e3);this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,this.closing){this.reconnecting=!1;return}try{let r=this.raw.constructor,n=new r(this.raw.url);this.raw=n,this.closed=!1,this.connecting=void 0,this._setupCallbacks(),await n.connect()}catch{this.reconnecting=!1,this.closing||this._scheduleReconnect()}},e)}async connect(){let e=this.hasConnected&&(this.closed||!this.raw.connected);if(this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnecting=!1,this.raw.connected&&!e){this.hasConnected=!0,this.closed=!1,this.closing=!1,this.statusOverride=void 0;return}if(!this.connecting){if(this.closed=!1,this.closing=!1,this.statusOverride=void 0,e){let r=this.raw.constructor;this.raw=new r(this.raw.url),this._setupCallbacks()}this.connecting=this.raw.connect().then(()=>{this.hasConnected=!0,this.closed=!1,this.closing=!1,this.statusOverride=void 0}).finally(()=>{this.connecting=void 0})}await this.connecting}_closeRaw(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnecting=!1;let e=this.raw;e.onconnect=()=>{},e.onclose=()=>{},e.onerror=()=>{},e.connected&&setImmediate(()=>{try{e.connected&&e.close()}catch{}})}disconnect(e){if(!(this.closed&&!e))if(e){this.closed=!0,this.statusOverride=void 0;let r=this.raw;r.onclose=()=>{},r.connected&&setImmediate(()=>{try{r.connected&&r.close()}catch{}}),this.emit("close"),this._scheduleReconnect()}else this.closing=!0,this.closed=!0,this.statusOverride="end",this._closeRaw(),this.emit("close"),this.emit("end")}async quit(){return this.closed?(setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"):(this.closing=!0,this.closed=!0,this.statusOverride="end",this._closeRaw(),setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK")}duplicate(...e){let r=this.raw.constructor,n=new r(this.raw.url),i=new t(n);for(let[o,a]of this.scripts)i.scripts.set(o,a),i[o]=(...c)=>i.runCommand(o,c);let s=e[0];return s&&typeof s=="object"&&s.connectionName&&(i.connectionName=s.connectionName),i}defineCommand(e,r){let n=(0,pke.createHash)("sha1").update(r.lua).digest("hex");this.scripts.set(e,{sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys}),this[e]=(...i)=>this.runCommand(e,i)}async runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}"`);let i=g5(r),{sha:s,lua:o,numberOfKeys:a}=n,c=i.slice(0,a).map(String),l=i.slice(a).map(p=>Buffer.isBuffer(p)?p:p==null?"":String(p)),u=[s,String(c.length),...c,...l];return(async()=>{var p,f;try{let m=await this.sendCommand("EVALSHA",u);return this.loadedScriptShas.add(s),m}catch(m){if(!((f=(p=m?.message)===null||p===void 0?void 0:p.includes)===null||f===void 0)&&f.call(p,"NOSCRIPT")){let h=[o,String(c.length),...c,...l],b=await this.sendCommand("EVAL",h);return this.loadedScriptShas.add(s),b}throw m}})()}async ensureScriptsLoaded(e){let r=[],n=new Set;for(let i of e)this.loadedScriptShas.has(i.sha)||n.has(i.sha)||(n.add(i.sha),r.push(i));r.length!==0&&await Promise.all(r.map(async i=>{await this.sendCommand("SCRIPT",["LOAD",i.lua]),this.loadedScriptShas.add(i.sha)}))}sendCommand(e,r){return this.closing||this.closed?Promise.reject(new y5.ConnectionClosedError("Connection is closed")):this.raw.send(e,r).catch(n=>{if(hke(n))return this.closing||this.closed?null:Promise.reject(new y5.ConnectionClosedError(n.message,n));throw n})}multi(){return new Rb(this.raw,this.scripts,!0,this)}pipeline(){return new Rb(this.raw,this.scripts,!1,this)}async hgetall(e){let r=await this.sendCommand("HGETALL",[e]);if(!r||Array.isArray(r)&&r.length===0)return{};if(Array.isArray(r)){let n={};for(let i=0;i<r.length;i+=2)n[String(r[i])]=String(r[i+1]);return n}return r}async hget(e,r){let n=await this.sendCommand("HGET",[e,r]);return n??null}async hmget(e,...r){return(await this.sendCommand("HMGET",[e,...r])||[]).map(i=>i??null)}async hset(e,r,...n){let i;if(typeof r=="object"){i=[e];for(let[s,o]of Object.entries(r))i.push(s,String(o))}else{i=[e,r,String(n[0])];for(let s=1;s<n.length;s+=2)i.push(String(n[s]),String(n[s+1]))}return await this.sendCommand("HSET",i)}async hdel(e,...r){return await this.sendCommand("HDEL",[e,...r])}async hexists(e,r){let n=await this.sendCommand("HEXISTS",[e,r]);return n===!0||n===1?1:0}async get(e){let r=await this.sendCommand("GET",[e]);return r??null}async set(e,r,n){let i=[e,String(r)];return n?.PX!=null?i.push("PX",String(n.PX)):n?.EX!=null&&i.push("EX",String(n.EX)),await this.sendCommand("SET",i)}async del(...e){return e.length===0?0:await this.sendCommand("DEL",e)}async zrange(e,r,n,i){let s=[e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.sendCommand("ZRANGE",s);return o?i?.WITHSCORES&&o.length>0&&Array.isArray(o[0])?o.flatMap(a=>[String(a[0]),String(a[1])]):o.map(String):[]}async zrevrange(e,r,n,i){let s=[e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES"),s.push("REV");let o=await this.sendCommand("ZRANGE",s);return o?i?.WITHSCORES&&o.length>0&&Array.isArray(o[0])?o.flatMap(a=>[String(a[0]),String(a[1])]):o.map(String):[]}async zcard(e){return await this.sendCommand("ZCARD",[e])}async zscore(e,r){let n=await this.sendCommand("ZSCORE",[e,r]);return n!=null?String(n):null}async lrange(e,r,n){return(await this.sendCommand("LRANGE",[e,String(r),String(n)])||[]).map(String)}async llen(e){return await this.sendCommand("LLEN",[e])}async ltrim(e,r,n){return await this.sendCommand("LTRIM",[e,String(r),String(n)]),"OK"}async lpos(e,r){let n=await this.sendCommand("LPOS",[e,r]);return n??null}async smembers(e){let r=await this.sendCommand("SMEMBERS",[e]);return kb(r)}async xadd(e,r,n,i){let s=[e];i?.MAXLEN!=null&&(s.push("MAXLEN"),i.approximate!==!1&&s.push("~"),s.push(String(i.MAXLEN))),s.push(r);for(let[o,a]of Object.entries(n))s.push(o,String(a));return await this.raw.send("XADD",s)}async xread(e,r){let n=[];r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),r?.BLOCK!=null&&n.push("BLOCK",String(r.BLOCK)),n.push("STREAMS");for(let s of e)n.push(s.key);for(let s of e)n.push(s.id);let i;try{i=await this.sendCommand("XREAD",n)}catch(s){if(this.closing)return null;throw s}return i?Array.isArray(i)?i.map(s=>{let o=String(s[0]),a=(s[1]||[]).map(c=>{let l=String(c[0]),u=(c[1]||[]).map(String);return[l,u]});return[o,a]}):Object.entries(i).map(([s,o])=>{let a=(o||[]).map(c=>{let l=String(c[0]),u=(c[1]||[]).map(String);return[l,u]});return[s,a]}):null}async xtrim(e,r,n,i){let s=[e,r];return i?.approximate!==!1&&s.push("~"),s.push(String(n)),await this.sendCommand("XTRIM",s)}async bzpopmin(e,r){let n;try{n=await this.sendCommand("BZPOPMIN",[e,String(r)])}catch(i){if(this.closing)return null;throw i}return!n||n.length===0?null:[String(n[0]),String(n[1]),String(n[2])]}async info(){return await this.sendCommand("INFO",[])}async clientSetName(e){return await this.sendCommand("CLIENT",["SETNAME",e])}async clientList(){return await this.sendCommand("CLIENT",["LIST"])}async scan(e,r){let n=[String(e)];r?.MATCH&&n.push("MATCH",r.MATCH),r?.COUNT&&n.push("COUNT",String(r.COUNT));let i=await this.sendCommand("SCAN",n),s=i[1];return[String(i[0]),Array.isArray(s)?s.map(String):[]]}scanStream(e){let r=this,n="0",i=!1,s=new mke.Readable({objectMode:!0,async read(){if(i&&n==="0"){s.push(null);return}i=!0;try{for(;;){let[o,a]=await r.scan(n,{MATCH:e.match,COUNT:e.count});if(n=o,a.length>0){s.push(a),n==="0"&&s.push(null);return}if(n==="0"){s.push(null);return}}}catch(o){s.destroy(o)}}});return s}async keys(e){return(await this.sendCommand("KEYS",[e])||[]).map(String)}async exists(...e){if(e.length===0)return 0;let r=await this.sendCommand("EXISTS",e);return typeof r=="boolean"?r?1:0:r}async zadd(e,...r){let n=[e];for(let i=0;i<r.length;i+=2)n.push(String(r[i]),String(r[i+1]));return await this.sendCommand("ZADD",n)}async zrem(e,...r){return await this.sendCommand("ZREM",[e,...r])}async xlen(e){return await this.sendCommand("XLEN",[e])}async xrevrange(e,r,n,...i){let s=[e,r,n];i[0]==="COUNT"&&s.push("COUNT",String(i[1]));let o=await this.sendCommand("XREVRANGE",s);return o?o.map(a=>[String(a[0]),(a[1]||[]).map(String)]):[]}async sadd(e,...r){return await this.sendCommand("SADD",[e,...r.map(String)])}async scard(e){return await this.sendCommand("SCARD",[e])}async lpush(e,...r){return await this.sendCommand("LPUSH",[e,...r])}async rpop(e){let r=await this.sendCommand("RPOP",[e]);return r??null}async incr(e){return await this.sendCommand("INCR",[e])}async incrby(e,r){return await this.sendCommand("INCRBY",[e,String(r)])}async flushall(){return await this.sendCommand("FLUSHALL",[])}},Rb=class{constructor(e,r,n,i){this.raw=e,this.scripts=r,this.transactional=n,this.adapter=i,this.commands=[],this.transformers=[],this.scriptsToLoad=[]}addCommand(e,r,n){this.commands.push({cmd:e,args:r}),this.transformers.push(n||(i=>i))}hgetall(e){return this.addCommand("HGETALL",[e],r=>{if(!r||Array.isArray(r)&&r.length===0)return{};if(Array.isArray(r)){let n={};for(let i=0;i<r.length;i+=2)n[String(r[i])]=String(r[i+1]);return n}return r}),this}hset(e,r){let n=[e];for(let[i,s]of Object.entries(r))n.push(i,String(s));return this.addCommand("HSET",n),this}hscan(e,r,n){let i=[e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.addCommand("HSCAN",i,s=>s?Array.isArray(s)?[String(s[0]),kb(s[1])]:["0",[]]:["0",[]]),this}smembers(e){return this.addCommand("SMEMBERS",[e],r=>kb(r)),this}sscan(e,r,n){let i=[e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.addCommand("SSCAN",i,s=>s?Array.isArray(s)?[String(s[0]),kb(s[1])]:["0",[]]:["0",[]]),this}zrange(e,r,n){return this.addCommand("ZRANGE",[e,String(r),String(n)],i=>Array.isArray(i)?i.map(String):[]),this}lrange(e,r,n){return this.addCommand("LRANGE",[e,String(r),String(n)],i=>Array.isArray(i)?i.map(String):[]),this}llen(e){return this.addCommand("LLEN",[e]),this}del(...e){return e.length>0&&this.addCommand("DEL",e),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}" in transaction`);let i=g5(r),{sha:s,numberOfKeys:o}=n,a=i.slice(0,o).map(String),c=i.slice(o).map(l=>Buffer.isBuffer(l)?l:l==null?"":String(l));return this.scriptsToLoad.push(n),this.addCommand("EVALSHA",[s,String(a.length),...a,...c]),this}async exec(){if(this.commands.length===0)return[];if(this.scriptsToLoad.length>0&&await this.adapter.ensureScriptsLoaded(this.scriptsToLoad),!this.transactional)return(await Promise.allSettled(this.commands.map(({cmd:n,args:i})=>this.adapter.sendCommand(n,i)))).map((n,i)=>{if(n.status==="rejected")return[n.reason,null];let s=this.transformers[i];return[null,s?s(n.value):n.value]});let e=r=>{};try{this.raw.send("MULTI",[]).catch(e);for(let{cmd:n,args:i}of this.commands)this.raw.send(n,i).catch(e);let r=await this.raw.send("EXEC",[]);return r?r.map((n,i)=>{if(n instanceof Error)return[n,null];let s=this.transformers[i];return[null,s?s(n):n]}):null}catch(r){try{await this.raw.send("DISCARD",[])}catch{}throw r}}}});var x5=y(uk=>{"use strict";Object.defineProperty(uk,"__esModule",{value:!0});uk.createValkeyGlideClient=Tke;var gke=require("crypto"),bke=require("events"),vke=require("stream"),Ob=Zo(),Yd=1;function Eke(){return{commands:[],customCommand(t){this.commands.push(t)}}}function Ske(t){try{let{Batch:e}=require("@valkey/valkey-glide");return typeof e=="function"?new e(t):null}catch{return null}}function E5(t){return Buffer.isBuffer(t)}function yn(t){return E5(t)?t:t==null?"":String(t)}function H(t){return E5(t)?t.toString():String(t)}function gl(t){return Array.isArray(t)&&t.every(e=>e&&typeof e=="object"&&"key"in e&&"value"in e)}function S5(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function _5(t){if(!t)return{};if(gl(t))return t.reduce((e,r)=>(e[H(r.key)]=H(r.value),e),{});if(t instanceof Map){let e={};for(let[r,n]of t.entries())e[H(r)]=H(n);return e}if(Array.isArray(t)){let e={};for(let r=0;r<t.length;r+=2)e[H(t[r])]=H(t[r+1]);return e}if(typeof t=="object"){let e={};for(let[r,n]of Object.entries(t))e[r]=H(n);return e}return{}}function lk(t){return t?Array.isArray(t)?gl(t)?t.flatMap(e=>[H(e.key),H(e.value)]):t.every(e=>Array.isArray(e)&&e.length===2)?t.flatMap(e=>{let[r,n]=e;return[H(r),H(n)]}):t.map(e=>H(e)):typeof t=="object"?Object.entries(t).flatMap(([e,r])=>[e,H(r)]):[]:[]}function _ke(t){return t?Array.isArray(t)&&t.every(e=>Array.isArray(e)&&e.length===2&&typeof e[0]<"u"&&Array.isArray(e[1]))||!gl(t)?t:t.map(e=>{let r=H(e.key),n=gl(e.value)?e.value.map(i=>[H(i.key),lk(i.value)]):[];return[r,n]}):null}function xke(t){if(Array.isArray(t)&&t.length>=2){let[e,r]=t,n=Array.isArray(r)?r.map(i=>H(i)):[];return[H(e),n]}if(t&&typeof t=="object"){let e=t;if(e.cursor!==void 0&&Array.isArray(e.keys))return[H(e.cursor),e.keys.map(r=>H(r))]}return["0",[]]}function wke(t){return t?Array.isArray(t)&&t.every(e=>Array.isArray(e)&&e.length===2&&typeof e[0]<"u"&&Array.isArray(e[1]))?t.map(([e,r])=>[H(e),r.map(n=>H(n))]):gl(t)?t.map(e=>[H(e.key),lk(e.value)]):[]:[]}function v5(t,e=!1){return Array.isArray(t)?e?gl(t)?t.flatMap(r=>[H(r.key),H(r.value)]):t.every(r=>Array.isArray(r)&&r.length>=2&&r[0]!==void 0)?t.flatMap(r=>[H(r[0]),H(r[1])]):t.map(r=>H(r)):t.map(r=>H(r)):[]}function Ike(t){let[e,...r]=t,n=H(e).toUpperCase();if(n==="BZPOPMIN")return!0;if(n!=="XREAD")return!1;for(let i=0;i<r.length;i+=2)if(H(r[i]).toUpperCase()==="BLOCK")return!0;return!1}function Tke(t){return new ak(t)}var ak=class t extends bke.EventEmitter{constructor(e,r){super(),this.connectionName=r,this.scripts=new Map,this.scriptsBySha=new Map,this.scriptLoadPromises=new Map,this.readyEmitted=!1,this.closed=!1,this.operationChain=Promise.resolve(),this.activeBlockingCommands=0,e instanceof Promise?(this.rawPromise=e,this.connect().catch(n=>this.emit("error",n))):this.raw=e}get status(){return this.statusOverride?this.statusOverride:this.closed?"end":this.readyEmitted?"ready":"wait"}set status(e){e==="end"&&this.disconnect(),this.statusOverride=e}get isCluster(){var e,r,n;return((n=(r=(e=this.raw)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.name)!==null&&n!==void 0?n:"").includes("Cluster")}get options(){var e,r,n,i;return(i=(r=(e=this.raw)===null||e===void 0?void 0:e.config)!==null&&r!==void 0?r:(n=this.raw)===null||n===void 0?void 0:n.options)!==null&&i!==void 0?i:{}}set options(e){}ensureOpen(){if(this.closed)throw new Ob.ConnectionClosedError}normalizeError(e){throw e instanceof Ob.ConnectionClosedError||e instanceof Error&&e.name==="ClosingError"?new Ob.ConnectionClosedError(e.message,e):e}async ensureRaw(){if(this.raw)return this.raw;if(!this.rawPromise)throw new Error("BullMQ: Valkey Glide client not initialized - missing raw client and client promise. Please report this as a bug.");return this.raw=await this.rawPromise,this.raw}async runSerialized(e){this.ensureOpen();let r=this.operationChain,n;this.operationChain=new Promise(i=>{n=i}),await r,this.ensureOpen();try{let i=await this.ensureRaw();return this.ensureOpen(),await e(i)}catch(i){this.normalizeError(i)}finally{n()}}async runRawCommand(e,r){let n=Ike(e);return this.runSerialized(async i=>{n&&this.activeBlockingCommands++;try{return await i.customCommand(e,r)}finally{n&&this.activeBlockingCommands--}})}ensureScriptLoaded(e){let r=this.scriptLoadPromises.get(e.sha);return r||(r=this.runRawCommand(["SCRIPT","LOAD",e.lua]).then(()=>{}).catch(()=>{}),this.scriptLoadPromises.set(e.sha,r)),r}async applyConnectionNameIfNeeded(){this.connectionName&&await this.runRawCommand(["CLIENT","SETNAME",this.connectionName],{decoder:Yd})}async clearConnectionNameIfNeeded(e){if(this.connectionName)try{await e.customCommand(["CLIENT","SETNAME",""],{decoder:Yd})}catch{}}async recreateRaw(){var e,r;let n=await this.ensureRaw(),i=n.constructor,s=(e=i?.createClient)===null||e===void 0?void 0:e.bind(i),o=(r=n.config)!==null&&r!==void 0?r:n.options;if(!s||!o)throw new Error("BullMQ: Cannot recreate Valkey Glide client: missing createClient() method or config object. Ensure the client was created via GlideClient.createClient() or GlideClusterClient.createClient().");this.raw=await s(o),this.scriptLoadPromises.clear()}async connect(){return this.connecting?this.connecting:(this.connecting=(async()=>{this.closed&&this.raw&&await this.recreateRaw(),this.closed=!1,this.statusOverride=void 0,await this.ensureRaw();try{await this.applyConnectionNameIfNeeded()}catch(e){if(this.closed&&e instanceof Ob.ConnectionClosedError)return;throw e}this.closed||(this.readyEmitted=!0,this.emit("ready"))})().finally(()=>{this.connecting=void 0}),this.connecting)}closeRaw(){if(!this.closingPromise){let e=()=>{if(this.raw)try{this.raw.close()}catch{}};this.closingPromise=(this.activeBlockingCommands>0?Promise.resolve().then(e):this.operationChain.catch(()=>{}).then(async()=>{this.closed&&(this.raw&&await this.clearConnectionNameIfNeeded(this.raw),e())})).finally(()=>{this.closingPromise=void 0})}return this.closingPromise}disconnect(e=!1){if(!(this.closed&&!e)){if(this.closed=!0,this.readyEmitted=!1,this.statusOverride=e?void 0:"end",this.emit("close"),e){this.closeRaw().then(()=>(this.emit("reconnecting"),this.connect())).catch(r=>this.emit("error",r));return}this.closeRaw(),this.emit("end")}}async quit(){return this.closed?(setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"):(this.closed=!0,this.readyEmitted=!1,this.statusOverride="end",this.closeRaw(),setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK")}duplicate(...e){var r;let n=(r=e[0])!==null&&r!==void 0?r:{},i=(async()=>{var s,o;let a=await this.ensureRaw(),c=a.constructor,l=(s=c?.createClient)===null||s===void 0?void 0:s.bind(c),u=(o=a.config)!==null&&o!==void 0?o:a.options;if(!l||!u)throw new Error("BullMQ: Cannot duplicate Valkey Glide client: missing createClient() or config. Ensure the client was created via GlideClient.createClient()/GlideClusterClient.createClient().");return l(u)})();return new t(i,n.connectionName)}defineCommand(e,r){let n=(0,gke.createHash)("sha1").update(r.lua).digest("hex"),i={sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys};this.scripts.set(e,i),this.scriptsBySha.set(n,i),this[e]=(...s)=>this.runCommand(e,s),this.ensureScriptLoaded(i)}async runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: command "${e}" is not defined. Use defineCommand() before runCommand().`);let i=S5(r),s=i.slice(0,n.numberOfKeys).map(yn),o=i.slice(n.numberOfKeys).map(yn),a=["EVALSHA",n.sha,String(n.numberOfKeys),...s,...o];try{return await this.runRawCommand(a)}catch(c){if(typeof c?.message=="string"&&c.message.toLowerCase().includes("noscript"))return this.runRawCommand(["EVAL",n.lua,String(n.numberOfKeys),...s,...o]);throw c}}multi(){return new ck(this,this.scripts)}pipeline(){return this.multi()}async hgetall(e){return _5(await this.runRawCommand(["HGETALL",e]))}async hget(e,r){let n=await this.runRawCommand(["HGET",e,r]);return n==null?null:H(n)}async hmget(e,...r){let n=await this.runRawCommand(["HMGET",e,...r]);return Array.isArray(n)?n.map(i=>i==null?null:H(i)):[]}async hset(e,r){let n=["HSET",e];for(let[i,s]of Object.entries(r))n.push(i,yn(s));return Number(await this.runRawCommand(n))}async hdel(e,...r){return Number(await this.runRawCommand(["HDEL",e,...r]))}async hexists(e,r){let n=await this.runRawCommand(["HEXISTS",e,r]);return typeof n=="boolean"?n?1:0:Number(n)}async get(e){let r=await this.runRawCommand(["GET",e]);return r==null?null:H(r)}async set(e,r,n){let i=["SET",e,yn(r)];n?.PX!=null?i.push("PX",String(n.PX)):n?.EX!=null&&i.push("EX",String(n.EX));let s=await this.runRawCommand(i);return s==null?null:H(s)}async del(...e){return e.length===0?0:Number(await this.runRawCommand(["DEL",...e]))}async zrange(e,r,n,i){let s=["ZRANGE",e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.runRawCommand(s);return v5(o,i?.WITHSCORES)}async zrevrange(e,r,n,i){let s=["ZREVRANGE",e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.runRawCommand(s);return v5(o,i?.WITHSCORES)}async zcard(e){return Number(await this.runRawCommand(["ZCARD",e]))}async zscore(e,r){let n=await this.runRawCommand(["ZSCORE",e,r]);return n==null?null:H(n)}async lrange(e,r,n){let i=await this.runRawCommand(["LRANGE",e,String(r),String(n)]);return Array.isArray(i)?i.map(H):[]}async llen(e){return Number(await this.runRawCommand(["LLEN",e]))}async ltrim(e,r,n){let i=await this.runRawCommand(["LTRIM",e,String(r),String(n)]);return i==null?"OK":H(i)}async lpos(e,r){let n=await this.runRawCommand(["LPOS",e,r]);return n==null?null:Number(n)}async smembers(e){let r=await this.runRawCommand(["SMEMBERS",e]);return Array.isArray(r)?r.map(H):[]}async xadd(e,r,n,i){let s=["XADD",e];i?.MAXLEN!=null&&(s.push("MAXLEN"),i.approximate!==!1&&s.push("~"),s.push(String(i.MAXLEN))),s.push(r);for(let[o,a]of Object.entries(n))s.push(o,yn(a));return H(await this.runRawCommand(s))}async xread(e,r){let n=["XREAD"];r?.BLOCK!=null&&n.push("BLOCK",String(r.BLOCK)),r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),n.push("STREAMS");for(let i of e)n.push(i.key);for(let i of e)n.push(i.id);return _ke(await this.runRawCommand(n))}async xtrim(e,r,n,i){let s=["XTRIM",e,r];return i?.approximate!==!1&&s.push("~"),s.push(String(n)),Number(await this.runRawCommand(s))}async bzpopmin(e,r){let n=await this.runRawCommand(["BZPOPMIN",e,String(r)]);return n&&Array.isArray(n)&&n.length>=3?[H(n[0]),H(n[1]),H(n[2])]:null}async info(){return H(await this.runRawCommand(["INFO"]))}async clientSetName(e){return this.runRawCommand(["CLIENT","SETNAME",e],{decoder:Yd})}async clientList(){return H(await this.runRawCommand(["CLIENT","LIST"],{decoder:Yd}))}async scan(e,r){let n=["SCAN",String(e)];return r?.MATCH&&n.push("MATCH",r.MATCH),r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),xke(await this.runRawCommand(n))}scanStream(e){let r="0",n=!1,i=new vke.Readable({objectMode:!0,read:()=>{n||(n=!0,(async()=>{do{let[s,o]=await this.scan(r,{MATCH:e.match,COUNT:e.count});if(r=s,o.length>0&&!i.push(o))return}while(r!=="0");i.push(null)})().catch(s=>i.destroy(s)).finally(()=>{n=!1}))}});return i}async keys(e){let r=await this.runRawCommand(["KEYS",e]);return Array.isArray(r)?r.map(H):[]}async exists(...e){if(e.length===0)return 0;let r=await this.runRawCommand(["EXISTS",...e]);return typeof r=="boolean"?r?1:0:Number(r)}async zadd(e,...r){let n=["ZADD",e];for(let i=0;i<r.length;i+=2)n.push(yn(r[i]),yn(r[i+1]));return Number(await this.runRawCommand(n))}async zrem(e,...r){return Number(await this.runRawCommand(["ZREM",e,...r]))}async xlen(e){return Number(await this.runRawCommand(["XLEN",e]))}async xrevrange(e,r,n,...i){let s=["XREVRANGE",e,r,n];return i[0]==="COUNT"&&s.push("COUNT",yn(i[1])),wke(await this.runRawCommand(s))}async sadd(e,...r){return Number(await this.runRawCommand(["SADD",e,...r.map(n=>yn(n))]))}async scard(e){return Number(await this.runRawCommand(["SCARD",e]))}async lpush(e,...r){return Number(await this.runRawCommand(["LPUSH",e,...r]))}async rpop(e){let r=await this.runRawCommand(["RPOP",e]);return r==null?null:H(r)}async incr(e){return Number(await this.runRawCommand(["INCR",e]))}async incrby(e,r){return Number(await this.runRawCommand(["INCRBY",e,String(r)]))}async flushall(){let e=await this.runRawCommand(["FLUSHALL"]);return e==null?"OK":H(e)}async execQueuedCommands(e){let r=e.map(n=>String(n.args[0]).toUpperCase()==="EVALSHA"?this.scriptsBySha.get(H(n.args[1])):void 0).filter(n=>!!n);return r.length>0&&await Promise.all(r.map(n=>this.ensureScriptLoaded(n))),this.runSerialized(async n=>{if(typeof n.exec=="function"){let i=Ske(!0),s=i??Eke();if(s){for(let a of e)s.customCommand(a.args);let o;try{o=await n.exec(s,!1)}catch(a){if(i)throw a;o=null}if(o)return o.map((a,c)=>{var l;if(a instanceof Error)return[a,null];let u=(l=e[c])===null||l===void 0?void 0:l.transform;return[null,u?u(a):a]});if(i)return null}}await n.customCommand(["MULTI"]);try{for(let o of e)await n.customCommand(o.args,{decoder:Yd});let i=await n.customCommand(["EXEC"]);return i?(Array.isArray(i)?i:[i]).map((o,a)=>{var c;if(o instanceof Error)return[o,null];let l=(c=e[a])===null||c===void 0?void 0:c.transform;return[null,l?l(o):o]}):null}catch(i){try{await n.customCommand(["DISCARD"])}catch{}throw i}})}},ck=class{constructor(e,r){this.adapter=e,this.scripts=r,this.commands=[]}queueCommand(e,r){return this.commands.push({args:e,transform:r}),this}hgetall(e){return this.queueCommand(["HGETALL",e],_5)}hset(e,r){let n=["HSET",e];for(let[i,s]of Object.entries(r))n.push(i,yn(s));return this.queueCommand(n)}hscan(e,r,n){let i=["HSCAN",e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.queueCommand(i,s=>Array.isArray(s)&&s.length>=2?[H(s[0]),lk(s[1])]:["0",[]])}smembers(e){return this.queueCommand(["SMEMBERS",e],r=>Array.isArray(r)?r.map(n=>H(n)):[])}sscan(e,r,n){let i=["SSCAN",e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.queueCommand(i,s=>{if(Array.isArray(s)&&s.length>=2){let o=Array.isArray(s[1])?s[1].map(a=>H(a)):[];return[H(s[0]),o]}return["0",[]]})}zrange(e,r,n){return this.queueCommand(["ZRANGE",e,String(r),String(n)])}lrange(e,r,n){return this.queueCommand(["LRANGE",e,String(r),String(n)])}llen(e){return this.queueCommand(["LLEN",e])}del(...e){return e.length>0&&this.queueCommand(["DEL",...e]),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: command "${e}" is not defined. Use defineCommand() before adding it to transactions.`);let i=S5(r),s=i.slice(0,n.numberOfKeys).map(yn),o=i.slice(n.numberOfKeys).map(yn);return this.queueCommand(["EVALSHA",n.sha,String(n.numberOfKeys),...s,...o])}exec(){return this.adapter.execQueuedCommands(this.commands)}}});var Z9=y(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});var Xi=class extends Error{},Ek=class extends Xi{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Sk=class extends Xi{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},_k=class extends Xi{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Xs=class extends Xi{},Nb=class extends Xi{constructor(e){super(`Invalid unit ${e}`)}},Pt=class extends Xi{},bi=class extends Xi{constructor(){super("Zone is an abstract class")}},L="numeric",Un="short",$r="long",qb={year:L,month:L,day:L},e9={year:L,month:Un,day:L},Ake={year:L,month:Un,day:L,weekday:Un},t9={year:L,month:$r,day:L},r9={year:L,month:$r,day:L,weekday:$r},n9={hour:L,minute:L},i9={hour:L,minute:L,second:L},s9={hour:L,minute:L,second:L,timeZoneName:Un},o9={hour:L,minute:L,second:L,timeZoneName:$r},a9={hour:L,minute:L,hourCycle:"h23"},c9={hour:L,minute:L,second:L,hourCycle:"h23"},l9={hour:L,minute:L,second:L,hourCycle:"h23",timeZoneName:Un},u9={hour:L,minute:L,second:L,hourCycle:"h23",timeZoneName:$r},d9={year:L,month:L,day:L,hour:L,minute:L},p9={year:L,month:L,day:L,hour:L,minute:L,second:L},f9={year:L,month:Un,day:L,hour:L,minute:L},m9={year:L,month:Un,day:L,hour:L,minute:L,second:L},kke={year:L,month:Un,day:L,weekday:Un,hour:L,minute:L},h9={year:L,month:$r,day:L,hour:L,minute:L,timeZoneName:Un},y9={year:L,month:$r,day:L,hour:L,minute:L,second:L,timeZoneName:Un},g9={year:L,month:$r,day:L,weekday:$r,hour:L,minute:L,timeZoneName:$r},b9={year:L,month:$r,day:L,weekday:$r,hour:L,minute:L,second:L,timeZoneName:$r},eo=class{get type(){throw new bi}get name(){throw new bi}get ianaName(){return this.name}get isUniversal(){throw new bi}offsetName(e,r){throw new bi}formatOffset(e,r){throw new bi}offset(e){throw new bi}equals(e){throw new bi}get isValid(){throw new bi}},dk=null,rp=class t extends eo{static get instance(){return dk===null&&(dk=new t),dk}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return R9(e,r,n)}formatOffset(e,r){return tp(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},xk=new Map;function Rke(t){let e=xk.get(t);return e===void 0&&(e=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"}),xk.set(t,e)),e}var Oke={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Cke(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,s,o,a,c,l,u]=n;return[o,i,s,a,c,l,u]}function Pke(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:s,value:o}=r[i],a=Oke[s];s==="era"?n[a]=o:X(a)||(n[a]=parseInt(o,10))}return n}var pk=new Map,Zi=class t extends eo{static create(e){let r=pk.get(e);return r===void 0&&pk.set(e,r=new t(e)),r}static resetCache(){pk.clear(),xk.clear()}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:r,locale:n}){return R9(e,r,n,this.name)}formatOffset(e,r){return tp(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=Rke(this.name),[i,s,o,a,c,l,u]=n.formatToParts?Pke(n,r):Cke(n,r);a==="BC"&&(i=-Math.abs(i)+1);let p=zb({year:i,month:s,day:o,hour:c===24?0:c,minute:l,second:u,millisecond:0}),f=+r,m=f%1e3;return f-=m>=0?m:1e3+m,(p-f)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},w5={};function Mke(t,e={}){let r=JSON.stringify([t,e]),n=w5[r];return n||(n=new Intl.ListFormat(t,e),w5[r]=n),n}var wk=new Map;function Ik(t,e={}){let r=JSON.stringify([t,e]),n=wk.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),wk.set(r,n)),n}var Tk=new Map;function Dke(t,e={}){let r=JSON.stringify([t,e]),n=Tk.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),Tk.set(r,n)),n}var Ak=new Map;function jke(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),s=Ak.get(i);return s===void 0&&(s=new Intl.RelativeTimeFormat(t,e),Ak.set(i,s)),s}var Xd=null;function Kke(){return Xd||(Xd=new Intl.DateTimeFormat().resolvedOptions().locale,Xd)}var kk=new Map;function v9(t){let e=kk.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),kk.set(t,e)),e}var Rk=new Map;function Lke(t){let e=Rk.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...E9,...e}),Rk.set(t,e)}return e}function Nke(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let r=t.indexOf("-u-");if(r===-1)return[t];{let n,i;try{n=Ik(t).resolvedOptions(),i=t}catch{let c=t.substring(0,r);n=Ik(c).resolvedOptions(),i=c}let{numberingSystem:s,calendar:o}=n;return[i,s,o]}}function qke(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}function Uke(t){let e=[];for(let r=1;r<=12;r++){let n=tt.utc(2009,r,1);e.push(t(n))}return e}function Fke(t){let e=[];for(let r=1;r<=7;r++){let n=tt.utc(2016,11,13+r);e.push(t(n))}return e}function Cb(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}function $ke(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||v9(t.locale).numberingSystem==="latn"}var Ok=class{constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:s,...o}=n;if(!r||Object.keys(o).length>0){let a={useGrouping:!1,...n};n.padTo>0&&(a.minimumIntegerDigits=n.padTo),this.inf=Dke(e,a)}}format(e){if(this.inf){let r=this.floor?Math.floor(e):e;return this.inf.format(r)}else{let r=this.floor?Math.floor(e):Fk(e,3);return bt(r,this.padTo)}}},Ck=class{constructor(e,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let o=-1*(e.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Zi.create(a).valid?(i=a,this.dt=e):(i="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,i=e.zone.name):(i="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let s={...this.opts};s.timeZone=s.timeZone||i,this.dtf=Ik(r,s)}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(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Pk=class{constructor(e,r,n){this.opts={style:"long",...n},!r&&A9()&&(this.rtf=jke(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):lRe(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},E9={firstDay:1,minimalDays:4,weekend:[6,7]},$e=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,s=!1){let o=e||Ye.defaultLocale,a=o||(s?"en-US":Kke()),c=r||Ye.defaultNumberingSystem,l=n||Ye.defaultOutputCalendar,u=Dk(i)||Ye.defaultWeekSettings;return new t(a,c,l,u,o)}static resetCache(){Xd=null,wk.clear(),Tk.clear(),Ak.clear(),kk.clear(),Rk.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,s){let[o,a,c]=Nke(e);this.locale=o,this.numberingSystem=r||a||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=qke(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=$ke(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&r?"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,Dk(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,r=!1){return Cb(this,e,P9,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},s=r?"format":"standalone";if(!this.monthsCache[s][e]){let o=n?a=>this.dtFormatter(a,i).format():a=>this.extract(a,i,"month");this.monthsCache[s][e]=Uke(o)}return this.monthsCache[s][e]})}weekdays(e,r=!1){return Cb(this,e,j9,()=>{let n=r?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=r?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=Fke(s=>this.extract(s,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return Cb(this,void 0,()=>K9,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[tt.utc(2016,11,13,9),tt.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return Cb(this,e,L9,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[tt.utc(-40,1,1),tt.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),s=i.formatToParts(),o=s.find(a=>a.type.toLowerCase()===n);return o?o.value:null}numberFormatter(e={}){return new Ok(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new Ck(e,this.intl,r)}relFormatter(e={}){return new Pk(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Mke(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||v9(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:k9()?Lke(this.locale):E9}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}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},fk=null,Jr=class t extends eo{static get utcInstance(){return fk===null&&(fk=new t(0)),fk}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let r=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new t(Hb(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${tp(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${tp(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return tp(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}},Ub=class extends eo{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 Qs(t,e){if(X(t)||t===null)return e;if(t instanceof eo)return t;if(Vke(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?rp.instance:r==="utc"||r==="gmt"?Jr.utcInstance:Jr.parseSpecifier(r)||Zi.create(t)}else return Zs(t)?Jr.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new Ub(t)}var Lk={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"},I5={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]},Jke=Lk.hanidec.replace(/[\[|\]]/g,"").split("");function Gke(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(t[r].search(Lk.hanidec)!==-1)e+=Jke.indexOf(t[r]);else for(let i in I5){let[s,o]=I5[i];n>=s&&n<=o&&(e+=n-s)}}return parseInt(e,10)}else return e}var Mk=new Map;function Bke(){Mk.clear()}function Nn({numberingSystem:t},e=""){let r=t||"latn",n=Mk.get(r);n===void 0&&(n=new Map,Mk.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${Lk[r]}${e}`),n.set(e,i)),i}var T5=()=>Date.now(),A5="system",k5=null,R5=null,O5=null,C5=60,P5,M5=null,Ye=class{static get now(){return T5}static set now(e){T5=e}static set defaultZone(e){A5=e}static get defaultZone(){return Qs(A5,rp.instance)}static get defaultLocale(){return k5}static set defaultLocale(e){k5=e}static get defaultNumberingSystem(){return R5}static set defaultNumberingSystem(e){R5=e}static get defaultOutputCalendar(){return O5}static set defaultOutputCalendar(e){O5=e}static get defaultWeekSettings(){return M5}static set defaultWeekSettings(e){M5=Dk(e)}static get twoDigitCutoffYear(){return C5}static set twoDigitCutoffYear(e){C5=e%100}static get throwOnInvalid(){return P5}static set throwOnInvalid(e){P5=e}static resetCaches(){$e.resetCache(),Zi.resetCache(),tt.resetCache(),Bke()}},Fr=class{constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},S9=[0,31,59,90,120,151,181,212,243,273,304,334],_9=[0,31,60,91,121,152,182,213,244,274,305,335];function bn(t,e){return new Fr("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function Nk(t,e,r){let n=new Date(Date.UTC(t,e-1,r));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}function x9(t,e,r){return r+(ip(t)?_9:S9)[e-1]}function w9(t,e){let r=ip(t)?_9:S9,n=r.findIndex(s=>s<e),i=e-r[n];return{month:n+1,day:i}}function qk(t,e){return(t-e+7)%7+1}function Fb(t,e=4,r=1){let{year:n,month:i,day:s}=t,o=x9(n,i,s),a=qk(Nk(n,i,s),r),c=Math.floor((o-a+14-e)/7),l;return c<1?(l=n-1,c=np(l,e,r)):c>np(n,e,r)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:a,...Vb(t)}}function D5(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:s}=t,o=qk(Nk(n,1,e),r),a=Sl(n),c=i*7+s-o-7+e,l;c<1?(l=n-1,c+=Sl(l)):c>a?(l=n+1,c-=Sl(n)):l=n;let{month:u,day:d}=w9(l,c);return{year:l,month:u,day:d,...Vb(t)}}function mk(t){let{year:e,month:r,day:n}=t,i=x9(e,r,n);return{year:e,ordinal:i,...Vb(t)}}function j5(t){let{year:e,ordinal:r}=t,{month:n,day:i}=w9(e,r);return{year:e,month:n,day:i,...Vb(t)}}function K5(t,e){if(!X(t.localWeekday)||!X(t.localWeekNumber)||!X(t.localWeekYear)){if(!X(t.weekday)||!X(t.weekNumber)||!X(t.weekYear))throw new Xs("Cannot mix locale-based week fields with ISO-based week fields");return X(t.localWeekday)||(t.weekday=t.localWeekday),X(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),X(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 zke(t,e=4,r=1){let n=Bb(t.weekYear),i=vn(t.weekNumber,1,np(t.weekYear,e,r)),s=vn(t.weekday,1,7);return n?i?s?!1:bn("weekday",t.weekday):bn("week",t.weekNumber):bn("weekYear",t.weekYear)}function Hke(t){let e=Bb(t.year),r=vn(t.ordinal,1,Sl(t.year));return e?r?!1:bn("ordinal",t.ordinal):bn("year",t.year)}function I9(t){let e=Bb(t.year),r=vn(t.month,1,12),n=vn(t.day,1,$b(t.year,t.month));return e?r?n?!1:bn("day",t.day):bn("month",t.month):bn("year",t.year)}function T9(t){let{hour:e,minute:r,second:n,millisecond:i}=t,s=vn(e,0,23)||e===24&&r===0&&n===0&&i===0,o=vn(r,0,59),a=vn(n,0,59),c=vn(i,0,999);return s?o?a?c?!1:bn("millisecond",i):bn("second",n):bn("minute",r):bn("hour",e)}function X(t){return typeof t>"u"}function Zs(t){return typeof t=="number"}function Bb(t){return typeof t=="number"&&t%1===0}function Vke(t){return typeof t=="string"}function Wke(t){return Object.prototype.toString.call(t)==="[object Date]"}function A9(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function k9(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Yke(t){return Array.isArray(t)?t:[t]}function L5(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let s=[e(i),i];return n&&r(n[0],s[0])===n[0]?n:s},null)[1]}function Qke(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}function xl(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Dk(t){if(t==null)return null;if(typeof t!="object")throw new Pt("Week settings must be an object");if(!vn(t.firstDay,1,7)||!vn(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!vn(e,1,7)))throw new Pt("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function vn(t,e,r){return Bb(t)&&t>=e&&t<=r}function Xke(t,e){return t-e*Math.floor(t/e)}function bt(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}function Ys(t){if(!(X(t)||t===null||t===""))return parseInt(t,10)}function ma(t){if(!(X(t)||t===null||t===""))return parseFloat(t)}function Uk(t){if(!(X(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function Fk(t,e,r="round"){let n=10**e;switch(r){case"expand":return t>0?Math.ceil(t*n)/n:Math.floor(t*n)/n;case"trunc":return Math.trunc(t*n)/n;case"round":return Math.round(t*n)/n;case"floor":return Math.floor(t*n)/n;case"ceil":return Math.ceil(t*n)/n;default:throw new RangeError(`Value rounding ${r} is out of range`)}}function ip(t){return t%4===0&&(t%100!==0||t%400===0)}function Sl(t){return ip(t)?366:365}function $b(t,e){let r=Xke(e-1,12)+1,n=t+(e-r)/12;return r===2?ip(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function zb(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 N5(t,e,r){return-qk(Nk(t,1,e),r)+e-1}function np(t,e=4,r=1){let n=N5(t,e,r),i=N5(t+1,e,r);return(Sl(t)-n+i)/7}function jk(t){return t>99?t:t>Ye.twoDigitCutoffYear?1900+t:2e3+t}function R9(t,e,r,n=null){let i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(s.timeZone=n);let o={timeZoneName:e,...s},a=new Intl.DateTimeFormat(r,o).formatToParts(i).find(c=>c.type.toLowerCase()==="timezonename");return a?a.value:null}function Hb(t,e){let r=parseInt(t,10);Number.isNaN(r)&&(r=0);let n=parseInt(e,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}function O9(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new Pt(`Invalid unit value ${t}`);return e}function Jb(t,e){let r={};for(let n in t)if(xl(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=O9(i)}return r}function tp(t,e){let r=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${bt(r,2)}:${bt(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${bt(r,2)}${bt(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function Vb(t){return Qke(t,["hour","minute","second","millisecond"])}var Zke=["January","February","March","April","May","June","July","August","September","October","November","December"],C9=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],eRe=["J","F","M","A","M","J","J","A","S","O","N","D"];function P9(t){switch(t){case"narrow":return[...eRe];case"short":return[...C9];case"long":return[...Zke];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 M9=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],D9=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],tRe=["M","T","W","T","F","S","S"];function j9(t){switch(t){case"narrow":return[...tRe];case"short":return[...D9];case"long":return[...M9];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var K9=["AM","PM"],rRe=["Before Christ","Anno Domini"],nRe=["BC","AD"],iRe=["B","A"];function L9(t){switch(t){case"narrow":return[...iRe];case"short":return[...nRe];case"long":return[...rRe];default:return null}}function sRe(t){return K9[t.hour<12?0:1]}function oRe(t,e){return j9(e)[t.weekday-1]}function aRe(t,e){return P9(e)[t.month-1]}function cRe(t,e){return L9(e)[t.year<0?0:1]}function lRe(t,e,r="always",n=!1){let i={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."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&s){let d=t==="days";switch(e){case 1:return d?"tomorrow":`next ${i[t][0]}`;case-1:return d?"yesterday":`last ${i[t][0]}`;case 0:return d?"today":`this ${i[t][0]}`}}let o=Object.is(e,-0)||e<0,a=Math.abs(e),c=a===1,l=i[t],u=n?c?l[1]:l[2]||l[1]:c?i[t][0]:t;return o?`${a} ${u} ago`:`in ${a} ${u}`}function q5(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}var uRe={D:qb,DD:e9,DDD:t9,DDDD:r9,t:n9,tt:i9,ttt:s9,tttt:o9,T:a9,TT:c9,TTT:l9,TTTT:u9,f:d9,ff:f9,fff:h9,ffff:g9,F:p9,FF:m9,FFF:y9,FFFF:b9},Ur=class t{static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,s=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);a==="'"?((n.length>0||i)&&s.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||a===r?n+=a:(n.length>0&&s.push({literal:/^\s+$/.test(n),val:n}),n=a,r=a)}return n.length>0&&s.push({literal:i||/^\s+$/.test(n),val:n}),s}static macroTokenToFormatOpts(e){return uRe[e]}constructor(e,r){this.opts=r,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...r}).format()}dtFormatter(e,r={}){return this.loc.dtFormatter(e,{...this.opts,...r})}formatDateTime(e,r){return this.dtFormatter(e,r).format()}formatDateTimeParts(e,r){return this.dtFormatter(e,r).formatToParts()}formatInterval(e,r){return this.dtFormatter(e.start,r).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,r){return this.dtFormatter(e,r).resolvedOptions()}num(e,r=0,n=void 0){if(this.opts.forceSimple)return bt(e,r);let i={...this.opts};return r>0&&(i.padTo=r),n&&(i.signDisplay=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(f,m)=>this.loc.extract(e,f,m),o=f=>e.isOffsetFixed&&e.offset===0&&f.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,f.format):"",a=()=>n?sRe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),c=(f,m)=>n?aRe(e,f):s(m?{month:f}:{month:f,day:"numeric"},"month"),l=(f,m)=>n?oRe(e,f):s(m?{weekday:f}:{weekday:f,month:"long",day:"numeric"},"weekday"),u=f=>{let m=t.macroTokenToFormatOpts(f);return m?this.formatWithSystemDefault(e,m):f},d=f=>n?cRe(e,f):s({era:f},"era"),p=f=>{switch(f){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 o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({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 a();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({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 i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({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 i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("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 u(f)}};return q5(t.parseFormat(r),p)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=u=>{switch(u[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},s=(u,d)=>p=>{let f=i(p);if(f){let m=d.isNegativeDuration&&f!==d.largestUnit?n:1,h;return this.opts.signMode==="negativeLargestOnly"&&f!==d.largestUnit?h="never":this.opts.signMode==="all"?h="always":h="auto",this.num(u.get(f)*m,p.length,h)}else return p},o=t.parseFormat(r),a=o.reduce((u,{literal:d,val:p})=>d?u:u.concat(p),[]),c=e.shiftTo(...a.map(i).filter(u=>u)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return q5(o,s(c,l))}},N9=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function wl(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}function Il(...t){return e=>t.reduce(([r,n,i],s)=>{let[o,a,c]=s(e,i);return[{...r,...o},a||n,c]},[{},null,1]).slice(0,2)}function Tl(t,...e){if(t==null)return[null,null];for(let[r,n]of e){let i=r.exec(t);if(i)return n(i)}return[null,null]}function q9(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=Ys(e[r+i]);return[n,null,r+i]}}var U9=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,dRe=`(?:${U9.source}?(?:\\[(${N9.source})\\])?)?`,$k=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,F9=RegExp(`${$k.source}${dRe}`),Jk=RegExp(`(?:[Tt]${F9.source})?`),pRe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,fRe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,mRe=/(\d{4})-?(\d{3})/,hRe=q9("weekYear","weekNumber","weekDay"),yRe=q9("year","ordinal"),gRe=/(\d{4})-(\d\d)-(\d\d)/,$9=RegExp(`${$k.source} ?(?:${U9.source}|(${N9.source}))?`),bRe=RegExp(`(?: ${$9.source})?`);function _l(t,e,r){let n=t[e];return X(n)?r:Ys(n)}function vRe(t,e){return[{year:_l(t,e),month:_l(t,e+1,1),day:_l(t,e+2,1)},null,e+3]}function Al(t,e){return[{hours:_l(t,e,0),minutes:_l(t,e+1,0),seconds:_l(t,e+2,0),milliseconds:Uk(t[e+3])},null,e+4]}function sp(t,e){let r=!t[e]&&!t[e+1],n=Hb(t[e+1],t[e+2]),i=r?null:Jr.instance(n);return[{},i,e+3]}function op(t,e){let r=t[e]?Zi.create(t[e]):null;return[{},r,e+1]}var ERe=RegExp(`^T?${$k.source}$`),SRe=/^-?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 _Re(t){let[e,r,n,i,s,o,a,c,l]=t,u=e[0]==="-",d=c&&c[0]==="-",p=(f,m=!1)=>f!==void 0&&(m||f&&u)?-f:f;return[{years:p(ma(r)),months:p(ma(n)),weeks:p(ma(i)),days:p(ma(s)),hours:p(ma(o)),minutes:p(ma(a)),seconds:p(ma(c),c==="-0"),milliseconds:p(Uk(l),d)}]}var xRe={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Gk(t,e,r,n,i,s,o){let a={year:e.length===2?jk(Ys(e)):Ys(e),month:C9.indexOf(r)+1,day:Ys(n),hour:Ys(i),minute:Ys(s)};return o&&(a.second=Ys(o)),t&&(a.weekday=t.length>3?M9.indexOf(t)+1:D9.indexOf(t)+1),a}var wRe=/^(?:(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 IRe(t){let[,e,r,n,i,s,o,a,c,l,u,d]=t,p=Gk(e,i,n,r,s,o,a),f;return c?f=xRe[c]:l?f=0:f=Hb(u,d),[p,new Jr(f)]}function TRe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var ARe=/^(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$/,kRe=/^(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$/,RRe=/^(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 U5(t){let[,e,r,n,i,s,o,a]=t;return[Gk(e,i,n,r,s,o,a),Jr.utcInstance]}function ORe(t){let[,e,r,n,i,s,o,a]=t;return[Gk(e,a,r,n,i,s,o),Jr.utcInstance]}var CRe=wl(pRe,Jk),PRe=wl(fRe,Jk),MRe=wl(mRe,Jk),DRe=wl(F9),J9=Il(vRe,Al,sp,op),jRe=Il(hRe,Al,sp,op),KRe=Il(yRe,Al,sp,op),LRe=Il(Al,sp,op);function NRe(t){return Tl(t,[CRe,J9],[PRe,jRe],[MRe,KRe],[DRe,LRe])}function qRe(t){return Tl(TRe(t),[wRe,IRe])}function URe(t){return Tl(t,[ARe,U5],[kRe,U5],[RRe,ORe])}function FRe(t){return Tl(t,[SRe,_Re])}var $Re=Il(Al);function JRe(t){return Tl(t,[ERe,$Re])}var GRe=wl(gRe,bRe),BRe=wl($9),zRe=Il(Al,sp,op);function HRe(t){return Tl(t,[GRe,J9],[BRe,zRe])}var F5="Invalid Duration",G9={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},VRe={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:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...G9},gn=146097/400,bl=146097/4800,WRe={years:{quarters:4,months:12,weeks:gn/7,days:gn,hours:gn*24,minutes:gn*24*60,seconds:gn*24*60*60,milliseconds:gn*24*60*60*1e3},quarters:{months:3,weeks:gn/28,days:gn/4,hours:gn*24/4,minutes:gn*24*60/4,seconds:gn*24*60*60/4,milliseconds:gn*24*60*60*1e3/4},months:{weeks:bl/7,days:bl,hours:bl*24,minutes:bl*24*60,seconds:bl*24*60*60,milliseconds:bl*24*60*60*1e3},...G9},ya=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],YRe=ya.slice(0).reverse();function Qi(t,e,r=!1){let n={values:r?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new It(n)}function B9(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of YRe.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}function $5(t,e){let r=B9(t,e)<0?-1:1;ya.reduceRight((n,i)=>{if(X(e[i]))return n;if(n){let s=e[n]*r,o=t[i][n],a=Math.floor(s/o);e[i]+=a*r,e[n]-=a*o*r}return i},null),ya.reduce((n,i)=>{if(X(e[i]))return n;if(n){let s=e[n]%1;e[n]-=s,e[i]+=s*t[n][i]}return i},null)}function J5(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}var It=class t{constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?WRe:VRe;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||$e.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,r){return t.fromObject({milliseconds:e},r)}static fromObject(e,r={}){if(e==null||typeof e!="object")throw new Pt(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:Jb(e,t.normalizeUnit),loc:$e.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(Zs(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new Pt(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=FRe(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,r){let[n]=JRe(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,r=null){if(!e)throw new Pt("need to specify a reason the Duration is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new _k(n);return new t({invalid:n})}static normalizeUnit(e){let r={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(!r)throw new Nb(e);return r}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,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?Ur.create(this.loc,n).formatDurationFromString(this,e):F5}toHuman(e={}){if(!this.isValid)return F5;let r=e.showZeros!==!1,n=ya.map(i=>{let s=this.values[i];return X(s)||s===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(s)}).filter(i=>i);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+=Fk(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},tt.fromMillis(r,{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?B9(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e),n={};for(let i of ya)(xl(r.values,i)||xl(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Qi(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e);return this.plus(r.negate())}mapUnits(e){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=O9(e(this.values[n],n));return Qi(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...Jb(e,t.normalizeUnit)};return Qi(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let o={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Qi(this,o)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return $5(this.matrix,e),Qi(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=J5(this.normalize().shiftToAll().toObject());return Qi(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>t.normalizeUnit(o));let r={},n={},i=this.toObject(),s;for(let o of ya)if(e.indexOf(o)>=0){s=o;let a=0;for(let l in n)a+=this.matrix[l][o]*n[l],n[l]=0;Zs(i[o])&&(a+=i[o]);let c=Math.trunc(a);r[o]=c,n[o]=(a*1e3-c*1e3)/1e3}else Zs(i[o])&&(n[o]=i[o]);for(let o in n)n[o]!==0&&(r[s]+=o===s?n[o]:n[o]/this.matrix[s][o]);return $5(this.matrix,r),Qi(this,{values:r},!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 r of Object.keys(this.values))e[r]=this.values[r]===0?0:-this.values[r];return Qi(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=J5(this.values);return Qi(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 r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}for(let n of ya)if(!r(this.values[n],e.values[n]))return!1;return!0}},vl="Invalid Interval";function QRe(t,e){return!t||!t.isValid?ba.invalid("missing or invalid start"):!e||!e.isValid?ba.invalid("missing or invalid end"):e<t?ba.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 ba=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,r=null){if(!e)throw new Pt("need to specify a reason the Interval is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new Sk(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=Qd(e),i=Qd(r),s=QRe(n,i);return s??new t({start:n,end:i})}static after(e,r){let n=It.fromDurationLike(r),i=Qd(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=It.fromDurationLike(r),i=Qd(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let s,o;try{s=tt.fromISO(n,r),o=s.isValid}catch{o=!1}let a,c;try{a=tt.fromISO(i,r),c=a.isValid}catch{c=!1}if(o&&c)return t.fromDateTimes(s,a);if(o){let l=It.fromISO(i,r);if(l.isValid)return t.after(s,l)}else if(c){let l=It.fromISO(n,r);if(l.isValid)return t.before(a,l)}}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 lastDateTime(){return this.isValid&&this.e?this.e.minus(1):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",r){if(!this.isValid)return NaN;let n=this.start.startOf(e,r),i;return r!=null&&r.useLocaleWeeks?i=this.end.reconfigure({locale:n.locale}):i=this.end,i=i.startOf(e,r),Math.floor(i.diff(n,e).get(e))+(i.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:r}={}){return this.isValid?t.fromDateTimes(e||this.s,r||this.e):this}splitAt(...e){if(!this.isValid)return[];let r=e.map(Qd).filter(o=>this.contains(o)).sort((o,a)=>o.toMillis()-a.toMillis()),n=[],{s:i}=this,s=0;for(;i<this.e;){let o=r[s]||this.e,a=+o>+this.e?this.e:o;n.push(t.fromDateTimes(i,a)),i=a,s+=1}return n}splitBy(e){let r=It.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,s,o=[];for(;n<this.e;){let a=this.start.plus(r.mapUnits(c=>c*i));s=+a>+this.e?this.e:a,o.push(t.fromDateTimes(n,s)),n=s,i+=1}return o}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 r=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return r>=n?null:t.fromDateTimes(r,n)}union(e){if(!this.isValid)return this;let r=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(r,n)}static merge(e){let[r,n]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],s=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),o=Array.prototype.concat(...s),a=o.sort((c,l)=>c.time-l.time);for(let c of a)n+=c.type==="s"?1:-1,n===1?r=c.time:(r&&+r!=+c.time&&i.push(t.fromDateTimes(r,c.time)),r=null);return t.merge(i)}difference(...e){return t.xor([this].concat(e)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:vl}[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=qb,r={}){return this.isValid?Ur.create(this.s.loc.clone(r),e).formatInterval(this):vl}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:vl}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:vl}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:vl}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:vl}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):It.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},ga=class{static hasDST(e=Ye.defaultZone){let r=tt.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Zi.isValidZone(e)}static normalizeZone(e){return Qs(e,Ye.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||$e.create(r,n,s)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||$e.create(r,n,s)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||$e.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||$e.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return $e.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return $e.create(r,null,"gregory").eras(e)}static features(){return{relative:A9(),localeWeek:k9()}}};function G5(t,e){let r=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=r(e)-r(t);return Math.floor(It.fromMillis(n).as("days"))}function XRe(t,e,r){let n=[["years",(c,l)=>l.year-c.year],["quarters",(c,l)=>l.quarter-c.quarter+(l.year-c.year)*4],["months",(c,l)=>l.month-c.month+(l.year-c.year)*12],["weeks",(c,l)=>{let u=G5(c,l);return(u-u%7)/7}],["days",G5]],i={},s=t,o,a;for(let[c,l]of n)r.indexOf(c)>=0&&(o=c,i[c]=l(t,e),a=s.plus(i),a>e?(i[c]--,t=s.plus(i),t>e&&(a=t,i[c]--,t=s.plus(i))):t=a);return[t,i,a,o]}function ZRe(t,e,r,n){let[i,s,o,a]=XRe(t,e,r),c=e-i,l=r.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);l.length===0&&(o<e&&(o=i.plus({[a]:1})),o!==i&&(s[a]=(s[a]||0)+c/(o-i)));let u=It.fromObject(s,n);return l.length>0?It.fromMillis(c,n).shiftTo(...l).plus(u):u}var eOe="missing Intl.DateTimeFormat.formatToParts support";function Ce(t,e=r=>r){return{regex:t,deser:([r])=>e(Gke(r))}}var tOe="\xA0",z9=`[ ${tOe}]`,H9=new RegExp(z9,"g");function rOe(t){return t.replace(/\./g,"\\.?").replace(H9,z9)}function B5(t){return t.replace(/\./g,"").replace(H9," ").toLowerCase()}function qn(t,e){return t===null?null:{regex:RegExp(t.map(rOe).join("|")),deser:([r])=>t.findIndex(n=>B5(r)===B5(n))+e}}function z5(t,e){return{regex:t,deser:([,r,n])=>Hb(r,n),groups:e}}function Pb(t){return{regex:t,deser:([e])=>e}}function nOe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function iOe(t,e){let r=Nn(e),n=Nn(e,"{2}"),i=Nn(e,"{3}"),s=Nn(e,"{4}"),o=Nn(e,"{6}"),a=Nn(e,"{1,2}"),c=Nn(e,"{1,3}"),l=Nn(e,"{1,6}"),u=Nn(e,"{1,9}"),d=Nn(e,"{2,4}"),p=Nn(e,"{4,6}"),f=b=>({regex:RegExp(nOe(b.val)),deser:([v])=>v,literal:!0}),h=(b=>{if(t.literal)return f(b);switch(b.val){case"G":return qn(e.eras("short"),0);case"GG":return qn(e.eras("long"),0);case"y":return Ce(l);case"yy":return Ce(d,jk);case"yyyy":return Ce(s);case"yyyyy":return Ce(p);case"yyyyyy":return Ce(o);case"M":return Ce(a);case"MM":return Ce(n);case"MMM":return qn(e.months("short",!0),1);case"MMMM":return qn(e.months("long",!0),1);case"L":return Ce(a);case"LL":return Ce(n);case"LLL":return qn(e.months("short",!1),1);case"LLLL":return qn(e.months("long",!1),1);case"d":return Ce(a);case"dd":return Ce(n);case"o":return Ce(c);case"ooo":return Ce(i);case"HH":return Ce(n);case"H":return Ce(a);case"hh":return Ce(n);case"h":return Ce(a);case"mm":return Ce(n);case"m":return Ce(a);case"q":return Ce(a);case"qq":return Ce(n);case"s":return Ce(a);case"ss":return Ce(n);case"S":return Ce(c);case"SSS":return Ce(i);case"u":return Pb(u);case"uu":return Pb(a);case"uuu":return Ce(r);case"a":return qn(e.meridiems(),0);case"kkkk":return Ce(s);case"kk":return Ce(d,jk);case"W":return Ce(a);case"WW":return Ce(n);case"E":case"c":return Ce(r);case"EEE":return qn(e.weekdays("short",!1),1);case"EEEE":return qn(e.weekdays("long",!1),1);case"ccc":return qn(e.weekdays("short",!0),1);case"cccc":return qn(e.weekdays("long",!0),1);case"Z":case"ZZ":return z5(new RegExp(`([+-]${a.source})(?::(${n.source}))?`),2);case"ZZZ":return z5(new RegExp(`([+-]${a.source})(${n.source})?`),2);case"z":return Pb(/[a-z_+-/]{1,256}?/i);case" ":return Pb(/[^\S\n\r]/);default:return f(b)}})(t)||{invalidReason:eOe};return h.token=t,h}var sOe={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 oOe(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let c=/^\s+$/.test(i);return{literal:!c,val:c?" ":i}}let s=e[n],o=n;n==="hour"&&(e.hour12!=null?o=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?o="hour12":o="hour24":o=r.hour12?"hour12":"hour24");let a=sOe[o];if(typeof a=="object"&&(a=a[s]),a)return{literal:!1,val:a}}function aOe(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}function cOe(t,e,r){let n=t.match(e);if(n){let i={},s=1;for(let o in r)if(xl(r,o)){let a=r[o],c=a.groups?a.groups+1:1;!a.literal&&a.token&&(i[a.token.val[0]]=a.deser(n.slice(s,s+c))),s+=c}return[n,i]}else return[n,{}]}function lOe(t){let e=s=>{switch(s){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}},r=null,n;return X(t.z)||(r=Zi.create(t.z)),X(t.Z)||(r||(r=new Jr(t.Z)),n=t.Z),X(t.q)||(t.M=(t.q-1)*3+1),X(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),X(t.u)||(t.S=Uk(t.u)),[Object.keys(t).reduce((s,o)=>{let a=e(o);return a&&(s[a]=t[o]),s},{}),r,n]}var hk=null;function uOe(){return hk||(hk=tt.fromMillis(1555555555555)),hk}function dOe(t,e){if(t.literal)return t;let r=Ur.macroTokenToFormatOpts(t.val),n=Y9(r,e);return n==null||n.includes(void 0)?t:n}function V9(t,e){return Array.prototype.concat(...t.map(r=>dOe(r,e)))}var Gb=class{constructor(e,r){if(this.locale=e,this.format=r,this.tokens=V9(Ur.parseFormat(r),e),this.units=this.tokens.map(n=>iOe(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=aOe(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=cOe(e,this.regex,this.handlers),[i,s,o]=n?lOe(n):[null,null,void 0];if(xl(n,"a")&&xl(n,"H"))throw new Xs("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:s,specificOffset:o}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function W9(t,e,r){return new Gb(t,r).explainFromTokens(e)}function pOe(t,e,r){let{result:n,zone:i,specificOffset:s,invalidReason:o}=W9(t,e,r);return[n,i,s,o]}function Y9(t,e){if(!t)return null;let n=Ur.create(e,t).dtFormatter(uOe()),i=n.formatToParts(),s=n.resolvedOptions();return i.map(o=>oOe(o,t,s))}var yk="Invalid DateTime",H5=864e13;function Zd(t){return new Fr("unsupported zone",`the zone "${t.name}" is not supported`)}function gk(t){return t.weekData===null&&(t.weekData=Fb(t.c)),t.weekData}function bk(t){return t.localWeekData===null&&(t.localWeekData=Fb(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function ha(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new tt({...r,...e,old:r})}function Q9(t,e,r){let n=t-e*60*1e3,i=r.offset(n);if(e===i)return[n,e];n-=(i-e)*60*1e3;let s=r.offset(n);return i===s?[n,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function Mb(t,e){t+=e*60*1e3;let r=new Date(t);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}function jb(t,e,r){return Q9(zb(t),e,r)}function V5(t,e){let r=t.o,n=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:n,month:i,day:Math.min(t.c.day,$b(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=It.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"),a=zb(s),[c,l]=Q9(a,r,t.zone);return o!==0&&(c+=o,l=t.zone.offset(c)),{ts:c,o:l}}function El(t,e,r,n,i,s){let{setZone:o,zone:a}=r;if(t&&Object.keys(t).length!==0||e){let c=e||a,l=tt.fromObject(t,{...r,zone:c,specificOffset:s});return o?l:l.setZone(a)}else return tt.invalid(new Fr("unparsable",`the input "${i}" can't be parsed as ${n}`))}function Db(t,e,r=!0){return t.isValid?Ur.create($e.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}function vk(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=bt(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=bt(t.c.month),r==="month")return i;i+="-"}else if(i+=bt(t.c.month),r==="month")return i;return i+=bt(t.c.day),i}function W5(t,e,r,n,i,s,o){let a=!r||t.c.millisecond!==0||t.c.second!==0,c="";switch(o){case"day":case"month":case"year":break;default:if(c+=bt(t.c.hour),o==="hour")break;if(e){if(c+=":",c+=bt(t.c.minute),o==="minute")break;a&&(c+=":",c+=bt(t.c.second))}else{if(c+=bt(t.c.minute),o==="minute")break;a&&(c+=bt(t.c.second))}if(o==="second")break;a&&(!n||t.c.millisecond!==0)&&(c+=".",c+=bt(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!s?c+="Z":t.o<0?(c+="-",c+=bt(Math.trunc(-t.o/60)),c+=":",c+=bt(Math.trunc(-t.o%60))):(c+="+",c+=bt(Math.trunc(t.o/60)),c+=":",c+=bt(Math.trunc(t.o%60)))),s&&(c+="["+t.zone.ianaName+"]"),c}var X9={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},fOe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},mOe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Kb=["year","month","day","hour","minute","second","millisecond"],hOe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],yOe=["year","ordinal","hour","minute","second","millisecond"];function Lb(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 Nb(t);return e}function Y5(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Lb(t)}}function gOe(t){if(ep===void 0&&(ep=Ye.now()),t.type!=="iana")return t.offset(ep);let e=t.name,r=Kk.get(e);return r===void 0&&(r=t.offset(ep),Kk.set(e,r)),r}function Q5(t,e){let r=Qs(e.zone,Ye.defaultZone);if(!r.isValid)return tt.invalid(Zd(r));let n=$e.fromObject(e),i,s;if(X(t.year))i=Ye.now();else{for(let c of Kb)X(t[c])&&(t[c]=X9[c]);let o=I9(t)||T9(t);if(o)return tt.invalid(o);let a=gOe(r);[i,s]=jb(t,a,r)}return new tt({ts:i,zone:r,loc:n,o:s})}function X5(t,e,r){let n=X(r.round)?!0:r.round,i=X(r.rounding)?"trunc":r.rounding,s=(a,c)=>(a=Fk(a,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(a,c)),o=a=>r.calendary?e.hasSame(t,a)?0:e.startOf(a).diff(t.startOf(a),a).get(a):e.diff(t,a).get(a);if(r.unit)return s(o(r.unit),r.unit);for(let a of r.units){let c=o(a);if(Math.abs(c)>=1)return s(c,a)}return s(t>e?-0:0,r.units[r.units.length-1])}function Z5(t){let e={},r;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],r=Array.from(t).slice(0,t.length-1)):r=Array.from(t),[e,r]}var ep,Kk=new Map,tt=class t{constructor(e){let r=e.zone||Ye.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Fr("invalid input"):null)||(r.isValid?null:Zd(r));this.ts=X(e.ts)?Ye.now():e.ts;let i=null,s=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,s]=[e.old.c,e.old.o];else{let a=Zs(e.o)&&!e.old?e.o:r.offset(this.ts);i=Mb(this.ts,a),n=Number.isNaN(i.year)?new Fr("invalid input"):null,i=n?null:i,s=n?null:a}this._zone=r,this.loc=e.loc||$e.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=Z5(arguments),[n,i,s,o,a,c,l]=r;return Q5({year:n,month:i,day:s,hour:o,minute:a,second:c,millisecond:l},e)}static utc(){let[e,r]=Z5(arguments),[n,i,s,o,a,c,l]=r;return e.zone=Jr.utcInstance,Q5({year:n,month:i,day:s,hour:o,minute:a,second:c,millisecond:l},e)}static fromJSDate(e,r={}){let n=Wke(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=Qs(r.zone,Ye.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:$e.fromObject(r)}):t.invalid(Zd(i))}static fromMillis(e,r={}){if(Zs(e))return e<-H5||e>H5?t.invalid("Timestamp out of range"):new t({ts:e,zone:Qs(r.zone,Ye.defaultZone),loc:$e.fromObject(r)});throw new Pt(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(Zs(e))return new t({ts:e*1e3,zone:Qs(r.zone,Ye.defaultZone),loc:$e.fromObject(r)});throw new Pt("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=Qs(r.zone,Ye.defaultZone);if(!n.isValid)return t.invalid(Zd(n));let i=$e.fromObject(r),s=Jb(e,Y5),{minDaysInFirstWeek:o,startOfWeek:a}=K5(s,i),c=Ye.now(),l=X(r.specificOffset)?n.offset(c):r.specificOffset,u=!X(s.ordinal),d=!X(s.year),p=!X(s.month)||!X(s.day),f=d||p,m=s.weekYear||s.weekNumber;if((f||u)&&m)throw new Xs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(p&&u)throw new Xs("Can't mix ordinal dates with month/day");let h=m||s.weekday&&!f,b,v,E=Mb(c,l);h?(b=hOe,v=fOe,E=Fb(E,o,a)):u?(b=yOe,v=mOe,E=mk(E)):(b=Kb,v=X9);let _=!1;for(let $ of b){let te=s[$];X(te)?_?s[$]=v[$]:s[$]=E[$]:_=!0}let I=h?zke(s,o,a):u?Hke(s):I9(s),w=I||T9(s);if(w)return t.invalid(w);let O=h?D5(s,o,a):u?j5(s):s,[K,Q]=jb(O,l,n),N=new t({ts:K,zone:n,o:Q,loc:i});return s.weekday&&f&&e.weekday!==N.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${s.weekday} and a date of ${N.toISO()}`):N.isValid?N:t.invalid(N.invalid)}static fromISO(e,r={}){let[n,i]=NRe(e);return El(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=qRe(e);return El(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=URe(e);return El(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(X(e)||X(r))throw new Pt("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[a,c,l,u]=pOe(o,e,r);return u?t.invalid(u):El(a,c,n,`format ${r}`,e,l)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=HRe(e);return El(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new Pt("need to specify a reason the DateTime is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new Ek(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=Y9(e,$e.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return V9(Ur.parseFormat(e),$e.fromObject(r)).map(i=>i.val).join("")}static resetCache(){ep=void 0,Kk.clear()}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?gk(this).weekYear:NaN}get weekNumber(){return this.isValid?gk(this).weekNumber:NaN}get weekday(){return this.isValid?gk(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?bk(this).weekday:NaN}get localWeekNumber(){return this.isValid?bk(this).weekNumber:NaN}get localWeekYear(){return this.isValid?bk(this).weekYear:NaN}get ordinal(){return this.isValid?mk(this.c).ordinal:NaN}get monthShort(){return this.isValid?ga.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?ga.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?ga.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?ga.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,r=6e4,n=zb(this.c),i=this.zone.offset(n-e),s=this.zone.offset(n+e),o=this.zone.offset(n-i*r),a=this.zone.offset(n-s*r);if(o===a)return[this];let c=n-o*r,l=n-a*r,u=Mb(c,o),d=Mb(l,a);return u.hour===d.hour&&u.minute===d.minute&&u.second===d.second&&u.millisecond===d.millisecond?[ha(this,{ts:c}),ha(this,{ts:l})]:[this]}get isInLeapYear(){return ip(this.year)}get daysInMonth(){return $b(this.year,this.month)}get daysInYear(){return this.isValid?Sl(this.year):NaN}get weeksInWeekYear(){return this.isValid?np(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?np(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=Ur.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone(Jr.instance(e),r)}toLocal(){return this.setZone(Ye.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=Qs(e,Ye.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let s=e.offset(this.ts),o=this.toObject();[i]=jb(o,s,e)}return ha(this,{ts:i,zone:e})}else return t.invalid(Zd(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return ha(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=Jb(e,Y5),{minDaysInFirstWeek:n,startOfWeek:i}=K5(r,this.loc),s=!X(r.weekYear)||!X(r.weekNumber)||!X(r.weekday),o=!X(r.ordinal),a=!X(r.year),c=!X(r.month)||!X(r.day),l=a||c,u=r.weekYear||r.weekNumber;if((l||o)&&u)throw new Xs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&o)throw new Xs("Can't mix ordinal dates with month/day");let d;s?d=D5({...Fb(this.c,n,i),...r},n,i):X(r.ordinal)?(d={...this.toObject(),...r},X(r.day)&&(d.day=Math.min($b(d.year,d.month),d.day))):d=j5({...mk(this.c),...r});let[p,f]=jb(d,this.o,this.zone);return ha(this,{ts:p,o:f})}plus(e){if(!this.isValid)return this;let r=It.fromDurationLike(e);return ha(this,V5(this,r))}minus(e){if(!this.isValid)return this;let r=It.fromDurationLike(e).negate();return ha(this,V5(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=It.normalizeUnit(e);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(i==="weeks")if(r){let s=this.loc.getStartOfWeek(),{weekday:o}=this;o<s&&(n.weekNumber=this.weekNumber-1),n.weekday=s}else n.weekday=1;if(i==="quarters"){let s=Math.ceil(this.month/3);n.month=(s-1)*3+1}return this.set(n)}endOf(e,r){return this.isValid?this.plus({[e]:1}).startOf(e,r).minus(1):this}toFormat(e,r={}){return this.isValid?Ur.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):yk}toLocaleString(e=qb,r={}){return this.isValid?Ur.create(this.loc.clone(r),e).formatDateTime(this):yk}toLocaleParts(e={}){return this.isValid?Ur.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:s=!1,precision:o="milliseconds"}={}){if(!this.isValid)return null;o=Lb(o);let a=e==="extended",c=vk(this,a,o);return Kb.indexOf(o)>=3&&(c+="T"),c+=W5(this,a,r,n,i,s,o),c}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?vk(this,e==="extended",Lb(r)):null}toISOWeekDate(){return Db(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended",precision:a="milliseconds"}={}){return this.isValid?(a=Lb(a),(i&&Kb.indexOf(a)>=3?"T":"")+W5(this,o==="extended",r,e,n,s,a)):null}toRFC2822(){return Db(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Db(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?vk(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:r=!1,includeOffsetSpace:n=!0}={}){let i="HH:mm:ss.SSS";return(r||e)&&(n&&(i+=" "),r?i+="z":e&&(i+="ZZ")),Db(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():yk}[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 r={...this.c};return e.includeConfig&&(r.outputCalendar=this.outputCalendar,r.numberingSystem=this.loc.numberingSystem,r.locale=this.loc.locale),r}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,r="milliseconds",n={}){if(!this.isValid||!e.isValid)return It.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},s=Yke(r).map(It.normalizeUnit),o=e.valueOf()>this.valueOf(),a=o?this:e,c=o?e:this,l=ZRe(a,c,s,i);return o?l.negate():l}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?ba.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(r,n)<=i&&i<=s.endOf(r,n)}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 r=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<r?-e.padding:e.padding:0,i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),X5(r,this.plus(n),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?X5(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 Pt("min requires all arguments be DateTimes");return L5(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Pt("max requires all arguments be DateTimes");return L5(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return W9(o,e,r)}static fromStringExplain(e,r,n={}){return t.fromFormatExplain(e,r,n)}static buildFormatParser(e,r={}){let{locale:n=null,numberingSystem:i=null}=r,s=$e.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new Gb(s,e)}static fromFormatParser(e,r,n={}){if(X(e)||X(r))throw new Pt("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});if(!o.equals(r.locale))throw new Pt(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${r.locale}`);let{result:a,zone:c,specificOffset:l,invalidReason:u}=r.explainFromTokens(e);return u?t.invalid(u):El(a,c,n,`format ${r.format}`,e,l)}static get DATE_SHORT(){return qb}static get DATE_MED(){return e9}static get DATE_MED_WITH_WEEKDAY(){return Ake}static get DATE_FULL(){return t9}static get DATE_HUGE(){return r9}static get TIME_SIMPLE(){return n9}static get TIME_WITH_SECONDS(){return i9}static get TIME_WITH_SHORT_OFFSET(){return s9}static get TIME_WITH_LONG_OFFSET(){return o9}static get TIME_24_SIMPLE(){return a9}static get TIME_24_WITH_SECONDS(){return c9}static get TIME_24_WITH_SHORT_OFFSET(){return l9}static get TIME_24_WITH_LONG_OFFSET(){return u9}static get DATETIME_SHORT(){return d9}static get DATETIME_SHORT_WITH_SECONDS(){return p9}static get DATETIME_MED(){return f9}static get DATETIME_MED_WITH_SECONDS(){return m9}static get DATETIME_MED_WITH_WEEKDAY(){return kke}static get DATETIME_FULL(){return h9}static get DATETIME_FULL_WITH_SECONDS(){return y9}static get DATETIME_HUGE(){return g9}static get DATETIME_HUGE_WITH_SECONDS(){return b9}};function Qd(t){if(tt.isDateTime(t))return t;if(t&&t.valueOf&&Zs(t.valueOf()))return tt.fromJSDate(t);if(t&&typeof t=="object")return tt.fromObject(t);throw new Pt(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var bOe="3.7.2";Gr.DateTime=tt;Gr.Duration=It;Gr.FixedOffsetZone=Jr;Gr.IANAZone=Zi;Gr.Info=ga;Gr.Interval=ba;Gr.InvalidZone=Ub;Gr.Settings=Ye;Gr.SystemZone=rp;Gr.VERSION=bOe;Gr.Zone=eo});var tH=y((vGe,eH)=>{"use strict";var va=Z9();ie.prototype.addYear=function(){this._date=this._date.plus({years:1})};ie.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};ie.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};ie.prototype.addHour=function(){var t=this._date;this._date=this._date.plus({hours:1}).startOf("hour"),this._date<=t&&(this._date=this._date.plus({hours:1}))};ie.prototype.addMinute=function(){var t=this._date;this._date=this._date.plus({minutes:1}).startOf("minute"),this._date<t&&(this._date=this._date.plus({hours:1}))};ie.prototype.addSecond=function(){var t=this._date;this._date=this._date.plus({seconds:1}).startOf("second"),this._date<t&&(this._date=this._date.plus({hours:1}))};ie.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};ie.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};ie.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};ie.prototype.subtractHour=function(){var t=this._date;this._date=this._date.minus({hours:1}).endOf("hour").startOf("second"),this._date>=t&&(this._date=this._date.minus({hours:1}))};ie.prototype.subtractMinute=function(){var t=this._date;this._date=this._date.minus({minutes:1}).endOf("minute").startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};ie.prototype.subtractSecond=function(){var t=this._date;this._date=this._date.minus({seconds:1}).startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};ie.prototype.getDate=function(){return this._date.day};ie.prototype.getFullYear=function(){return this._date.year};ie.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};ie.prototype.getMonth=function(){return this._date.month-1};ie.prototype.getHours=function(){return this._date.hour};ie.prototype.getMinutes=function(){return this._date.minute};ie.prototype.getSeconds=function(){return this._date.second};ie.prototype.getMilliseconds=function(){return this._date.millisecond};ie.prototype.getTime=function(){return this._date.valueOf()};ie.prototype.getUTCDate=function(){return this._getUTC().day};ie.prototype.getUTCFullYear=function(){return this._getUTC().year};ie.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};ie.prototype.getUTCMonth=function(){return this._getUTC().month-1};ie.prototype.getUTCHours=function(){return this._getUTC().hour};ie.prototype.getUTCMinutes=function(){return this._getUTC().minute};ie.prototype.getUTCSeconds=function(){return this._getUTC().second};ie.prototype.toISOString=function(){return this._date.toUTC().toISO()};ie.prototype.toJSON=function(){return this._date.toJSON()};ie.prototype.setDate=function(t){this._date=this._date.set({day:t})};ie.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};ie.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};ie.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};ie.prototype.setHours=function(t){this._date=this._date.set({hour:t})};ie.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};ie.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};ie.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};ie.prototype._getUTC=function(){return this._date.toUTC()};ie.prototype.toString=function(){return this.toDate().toString()};ie.prototype.toDate=function(){return this._date.toJSDate()};ie.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};ie.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function ie(t,e){var r={zone:e};if(t?t instanceof ie?this._date=t._date:t instanceof Date?this._date=va.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=va.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=va.DateTime.fromISO(t,r),this._date.isValid||(this._date=va.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=va.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=va.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=va.DateTime.local(),!this._date||!this._date.isValid)throw new Error("CronDate: unhandled timestamp: "+JSON.stringify(t));e&&e!==this._date.zoneName&&(this._date=this._date.setZone(e))}eH.exports=ie});var iH=y((EGe,nH)=>{"use strict";function Ea(t){return{start:t,count:1}}function rH(t,e){t.end=e,t.step=e-t.start,t.count=2}function Bk(t,e,r){e&&(e.count===2?(t.push(Ea(e.start)),t.push(Ea(e.end))):t.push(e)),r&&t.push(r)}function vOe(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(Bk(e,r,Ea(i)),r=void 0):r?r.count===1?rH(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(Ea(r.start)),r=Ea(r.end),rH(r,i)):(Bk(e,r),r=Ea(i)):r=Ea(i)}return Bk(e,r),e}nH.exports=vOe});var oH=y((SGe,sH)=>{"use strict";var EOe=iH();function SOe(t,e,r){var n=EOe(t);if(n.length===1){var i=n[0],s=i.step;if(s===1&&i.start===e&&i.end===r)return"*";if(s!==1&&i.start===e&&i.end===r-s+1)return"*/"+s}for(var o=[],a=0,c=n.length;a<c;++a){var l=n[a];if(l.count===1){o.push(l.start);continue}var s=l.step;if(l.step===1){o.push(l.start+"-"+l.end);continue}var u=l.start==0?l.count-1:l.count;l.step*u>l.end?o=o.concat(Array.from({length:l.end-l.start+1}).map(function(p,f){var m=l.start+f;return(m-l.start)%l.step===0?m:null}).filter(function(p){return p!=null})):l.end===r-l.step+1?o.push(l.start+"/"+l.step):o.push(l.start+"-"+l.end+"/"+l.step)}return o.join(",")}sH.exports=SOe});var lH=y((_Ge,cH)=>{"use strict";var Sa=tH(),_Oe=oH(),aH=1e4;function q(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new Sa(e.currentDate,this._tz),this._startDate=e.startDate?new Sa(e.startDate,this._tz):null,this._endDate=e.endDate?new Sa(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=q._freezeFields(t)}q.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];q.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};q.constraints=[{min:0,max:59,chars:[]},{min:0,max:59,chars:[]},{min:0,max:23,chars:[]},{min:1,max:31,chars:["L"]},{min:1,max:12,chars:[]},{min:0,max:7,chars:["L"]}];q.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];q.aliases={month:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},dayOfWeek:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}};q.parseDefaults=["0","*","*","*","*","*"];q.standardValidCharacters=/^[,*\d/-]+$/;q.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;q.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;q.validCharacters={second:q.standardValidCharacters,minute:q.standardValidCharacters,hour:q.standardValidCharacters,dayOfMonth:q.dayOfMonthValidCharacters,month:q.standardValidCharacters,dayOfWeek:q.dayOfWeekValidCharacters};q._isValidConstraintChar=function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})};q._parseField=function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=q.aliases[e];r=r.replace(/[a-z]{3}/gi,function(c){if(c=c.toLowerCase(),typeof i[c]<"u")return i[c];throw new Error('Validation error, cannot resolve alias "'+c+'"')});break}if(!q.validCharacters[e].test(r))throw new Error("Invalid characters, got value: "+r);r.indexOf("*")!==-1?r=r.replace(/\*/g,n.min+"-"+n.max):r.indexOf("?")!==-1&&(r=r.replace(/\?/g,n.min+"-"+n.max));function s(c){var l=[];function u(m){if(m instanceof Array)for(var h=0,b=m.length;h<b;h++){var v=m[h];if(q._isValidConstraintChar(n,v)){l.push(v);continue}if(typeof v!="number"||Number.isNaN(v)||v<n.min||v>n.max)throw new Error("Constraint error, got value "+v+" expected range "+n.min+"-"+n.max);l.push(v)}else{if(q._isValidConstraintChar(n,m)){l.push(m);return}var E=+m;if(Number.isNaN(E)||E<n.min||E>n.max)throw new Error("Constraint error, got value "+m+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(E=E%7),l.push(E)}}var d=c.split(",");if(!d.every(function(m){return m.length>0}))throw new Error("Invalid list value format");if(d.length>1)for(var p=0,f=d.length;p<f;p++)u(o(d[p]));else u(o(c));return l.sort(q._sortCompareFn),l}function o(c){var l=1,u=c.split("/");if(u.length>2)throw new Error("Invalid repeat: "+c);return u.length>1?(u[0]==+u[0]&&(u=[u[0]+"-"+n.max,u[1]]),a(u[0],u[u.length-1])):a(c,l)}function a(c,l){var u=[],d=c.split("-");if(d.length>1){if(d.length<2)return+c;if(!d[0].length){if(!d[1].length)throw new Error("Invalid range: "+c);return+c}var p=+d[0],f=+d[1];if(Number.isNaN(p)||Number.isNaN(f)||p<n.min||f>n.max)throw new Error("Constraint error, got range "+p+"-"+f+" expected range "+n.min+"-"+n.max);if(p>f)throw new Error("Invalid range: "+c);var m=+l;if(Number.isNaN(m)||m<=0)throw new Error("Constraint error, cannot repeat at every "+m+" time.");e==="dayOfWeek"&&f%7===0&&u.push(0);for(var h=p,b=f;h<=b;h++){var v=u.indexOf(h)!==-1;!v&&m>0&&m%l===0?(m=1,u.push(h)):m++}return u}return Number.isNaN(+c)?c:+c}return s(r)};q._sortCompareFn=function(t,e){var r=typeof t=="number",n=typeof e=="number";return r&&n?t-e:!r&&n?1:r&&!n?-1:t.localeCompare(e)};q._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=q.daysInMonth[t.month[0]-1];if(t.dayOfMonth[0]>e)throw new Error("Invalid explicit day of month definition");return t.dayOfMonth.filter(function(r){return r==="L"?!0:r<=e}).sort(q._sortCompareFn)}};q._freezeFields=function(t){for(var e=0,r=q.map.length;e<r;++e){var n=q.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};q.prototype._applyTimezoneShift=function(t,e,r){if(r==="Month"||r==="Day"){var n=t.getTime();t[e+r]();var i=t.getTime();n===i&&(t.getMinutes()===0&&t.getSeconds()===0?t.addHour():t.getMinutes()===59&&t.getSeconds()===59&&t.subtractHour())}else{var s=t.getHours();t[e+r]();var o=t.getHours(),a=o-s;a===2?this.fields.hour.length!==24&&(this._dstStart=o):a===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=o)}};q.prototype._findSchedule=function(e){function r(v,E){for(var _=0,I=E.length;_<I;_++)if(E[_]>=v)return E[_]===v;return E[0]===v}function n(v,E){if(E<6){if(v.getDate()<8&&E===1)return!0;var _=v.getDate()%7?1:0,I=v.getDate()-v.getDate()%7,w=Math.floor(I/7)+_;return w===E}return!1}function i(v){return v.length>0&&v.some(function(E){return typeof E=="string"&&E.indexOf("L")>=0})}e=e||!1;var s=e?"subtract":"add",o=new Sa(this._currentDate,this._tz),a=this._startDate,c=this._endDate,l=o.getTime(),u=0;function d(v){return v.some(function(E){if(!i([E]))return!1;var _=Number.parseInt(E[0])%7;if(Number.isNaN(_))throw new Error("Invalid last weekday of the month expression: "+E);return o.getDay()===_&&o.isLastWeekdayOfMonth()})}for(;u<aH;){if(u++,e){if(a&&o.getTime()-a.getTime()<0)throw new Error("Out of the timespan range")}else if(c&&c.getTime()-o.getTime()<0)throw new Error("Out of the timespan range");var p=r(o.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(p=p||o.isLastDayOfMonth());var f=r(o.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(f=f||d(this.fields.dayOfWeek));var m=this.fields.dayOfMonth.length>=q.daysInMonth[o.getMonth()],h=this.fields.dayOfWeek.length===q.constraints[5].max-q.constraints[5].min+1,b=o.getHours();if(!p&&(!f||h)){this._applyTimezoneShift(o,s,"Day");continue}if(!m&&h&&!p){this._applyTimezoneShift(o,s,"Day");continue}if(m&&!h&&!f){this._applyTimezoneShift(o,s,"Day");continue}if(this._nthDayOfWeek>0&&!n(o,this._nthDayOfWeek)){this._applyTimezoneShift(o,s,"Day");continue}if(!r(o.getMonth()+1,this.fields.month)){this._applyTimezoneShift(o,s,"Month");continue}if(r(b,this.fields.hour)){if(this._dstEnd===b&&!e){this._dstEnd=null,this._applyTimezoneShift(o,"add","Hour");continue}}else if(this._dstStart!==b){this._dstStart=null,this._applyTimezoneShift(o,s,"Hour");continue}else if(!r(b-1,this.fields.hour)){o[s+"Hour"]();continue}if(!r(o.getMinutes(),this.fields.minute)){this._applyTimezoneShift(o,s,"Minute");continue}if(!r(o.getSeconds(),this.fields.second)){this._applyTimezoneShift(o,s,"Second");continue}if(l===o.getTime()){s==="add"||o.getMilliseconds()===0?this._applyTimezoneShift(o,s,"Second"):o.setMilliseconds(0);continue}break}if(u>=aH)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new Sa(o,this._tz),this._hasIterated=!0,o};q.prototype.next=function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e};q.prototype.prev=function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e};q.prototype.hasNext=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};q.prototype.hasPrev=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(!0),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};q.prototype.iterate=function(e,r){var n=[];if(e>=0)for(var i=0,s=e;i<s;i++)try{var o=this.next();n.push(o),r&&r(o,i)}catch{break}else for(var i=0,s=e;i>s;i--)try{var o=this.prev();n.push(o),r&&r(o,i)}catch{break}return n};q.prototype.reset=function(e){this._currentDate=new Sa(e||this._options.currentDate)};q.prototype.stringify=function(e){for(var r=[],n=e?0:1,i=q.map.length;n<i;++n){var s=q.map[n],o=this.fields[s],a=q.constraints[n];s==="dayOfMonth"&&this.fields.month.length===1?a={min:1,max:q.daysInMonth[this.fields.month[0]-1]}:s==="dayOfWeek"&&(a={min:0,max:6},o=o[o.length-1]===7?o.slice(0,-1):o),r.push(_Oe(o,a.min,a.max))}return r.join(" ")};q.parse=function(e,r){var n=this;typeof r=="function"&&(r={});function i(s,o){o||(o={}),typeof o.currentDate>"u"&&(o.currentDate=new Sa(void 0,n._tz)),q.predefined[s]&&(s=q.predefined[s]);var a=[],c=(s+"").trim().split(/\s+/);if(c.length>6)throw new Error("Invalid cron expression");for(var l=q.map.length-c.length,u=0,d=q.map.length;u<d;++u){var p=q.map[u],f=c[c.length>d?u:u-l];if(u<l||!f)a.push(q._parseField(p,q.parseDefaults[u],q.constraints[u]));else{var m=p==="dayOfWeek"?E(f):f;a.push(q._parseField(p,m,q.constraints[u]))}}for(var h={},u=0,d=q.map.length;u<d;u++){var b=q.map[u];h[b]=a[u]}var v=q._handleMaxDaysInMonth(h);return h.dayOfMonth=v||h.dayOfMonth,new q(h,o);function E(_){var I=_.split("#");if(I.length>1){var w=+I[I.length-1];if(/,/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(I.length>2||Number.isNaN(w)||w<1||w>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return o.nthDayOfWeek=w,I[0]}return _}}return i(e,r)};q.fieldsToExpression=function(e,r){function n(p,f,m){if(!f)throw new Error("Validation error, Field "+p+" is missing");if(f.length===0)throw new Error("Validation error, Field "+p+" contains no values");for(var h=0,b=f.length;h<b;h++){var v=f[h];if(!q._isValidConstraintChar(m,v)&&(typeof v!="number"||Number.isNaN(v)||v<m.min||v>m.max))throw new Error("Constraint error, got value "+v+" expected range "+m.min+"-"+m.max)}}for(var i={},s=0,o=q.map.length;s<o;++s){var a=q.map[s],c=e[a];n(a,c,q.constraints[s]);for(var l=[],u=-1;++u<c.length;)l[u]=c[u];if(c=l.sort(q._sortCompareFn).filter(function(p,f,m){return!f||p!==m[f-1]}),c.length!==l.length)throw new Error("Validation error, Field "+a+" contains duplicate values");i[a]=c}var d=q._handleMaxDaysInMonth(i);return i.dayOfMonth=d||i.dayOfMonth,new q(i,r||{})};cH.exports=q});var zk=y((xGe,uH)=>{"use strict";var Wb=lH();function to(){}to._parseEntry=function(e){var r=e.split(" ");if(r.length===6)return{interval:Wb.parse(e)};if(r.length>6)return{interval:Wb.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)};to.parseExpression=function(e,r){return Wb.parse(e,r)};to.fieldsToExpression=function(e,r){return Wb.fieldsToExpression(e,r)};to.parseString=function(e){for(var r=e.split(`
9545
- `),n={variables:{},expressions:[],errors:{}},i=0,s=r.length;i<s;i++){var o=r[i],a=null,c=o.trim();if(c.length>0){if(c.match(/^#/))continue;if(a=c.match(/^(.*)=(.*)$/))n.variables[a[1]]=a[2];else{var l=null;try{l=to._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(u){n.errors[c]=u}}}}return n};to.parseFile=function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,to.parseString(i.toString()))})};uH.exports=to});var ro=y(Yb=>{"use strict";Object.defineProperty(Yb,"__esModule",{value:!0});Yb.QueueBase=void 0;var xOe=require("events"),kl=Kr(),wOe=Nd(),IOe=Wd(),TOe=sl(),AOe=tg(),Hk=class extends xOe.EventEmitter{constructor(e,r={connection:{}},n=IOe.RedisConnection,i=!1){if(super(),this.name=e,this.opts=r,this.closed=!1,this.hasBlockingConnection=!1,this.hasBlockingConnection=i,this.opts=Object.assign({prefix:"bull"},r),!e)throw new Error("Queue name must be provided");if(e.includes(":"))throw new Error("Queue name cannot contain :");this.connection=new n(r.connection,{shared:(0,kl.isRedisInstance)(r.connection),blocking:i,skipVersionCheck:r.skipVersionCheck,skipWaitingForReady:r.skipWaitingForReady}),(0,kl.forwardConnectionError)(this,this.connection),this.connection.on("close",()=>{this.closing||this.emit("ioredis:close")});let s=new AOe.QueueKeys(r.prefix);this.qualifiedName=s.getQueueQualifiedName(e),this.keys=s.getKeys(e),this.toKey=o=>s.toKey(e,o),this.createScripts()}get client(){return this.connection.client}createScripts(){this.scripts=(0,wOe.createScripts)(this)}get redisVersion(){return this.connection.redisVersion}get databaseType(){return this.connection.databaseType}get Job(){return TOe.Job}emit(e,...r){try{return super.emit(e,...r)}catch(n){try{return super.emit("error",n)}catch(i){return console.error(i),!1}}}waitUntilReady(){return this.client}base64Name(){return Buffer.from(this.name).toString("base64")}clientName(e=""){let r=this.base64Name();return`${this.opts.prefix}:${r}${e}`}async close(){this.closing||(this.closing=this.connection.close()),await this.closing,this.closed=!0}disconnect(){return this.connection.disconnect()}async checkConnectionError(e,r=kl.DELAY_TIME_5){try{return await e()}catch(n){if((0,kl.isNotConnectionError)(n)&&this.emit("error",n),!this.closing&&r)await(0,kl.delay)(r);else return}}trace(e,r,n,i,s){return(0,kl.trace)(this.opts.telemetry,e,this.name,r,n,i,s)}};Yb.QueueBase=Hk});var Xb=y(_a=>{"use strict";Object.defineProperty(_a,"__esModule",{value:!0});_a.defaultRepeatStrategy=_a.JobScheduler=void 0;var kOe=(nr(),Mt(rr)),ROe=zk(),Qb=sl(),OOe=ro(),ap=wr(),COe=Kr(),Vk=class extends OOe.QueueBase{constructor(e,r,n){super(e,r,n),this.repeatStrategy=r.settings&&r.settings.repeatStrategy||_a.defaultRepeatStrategy}async upsertJobScheduler(e,r,n,i,s,{override:o,producerId:a}){let{every:c,limit:l,pattern:u,offset:d}=r;if(u&&c)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(!u&&!c)throw new Error("Either .pattern or .every options must be defined for this repeatable job");if(r.immediately&&r.startDate)throw new Error("Both .immediately and .startDate options are defined for this repeatable job");r.immediately&&r.every&&console.warn("Using option immediately with every does not affect the job's schedule. Job will run immediately anyway.");let p=r.count?r.count+1:1;if(typeof r.limit<"u"&&p>r.limit)return;let f=Date.now(),{endDate:m}=r;if(m&&f>new Date(m).getTime())return;let h=s.prevMillis||0;f=h<f?f:h;let{immediately:b}=r,v=kOe.__rest(r,["immediately"]),E,_=c&&d?d:null;if(u&&(E=await this.repeatStrategy(f,r,n),E<f&&(E=f)),E||c)return this.trace(ap.SpanKind.PRODUCER,"add",`${this.name}.${n}`,async(I,w)=>{var O,K;let Q=s.telemetry;if(w){let $=(O=s.telemetry)===null||O===void 0?void 0:O.omitContext,te=((K=s.telemetry)===null||K===void 0?void 0:K.metadata)||!$&&w;(te||$)&&(Q={metadata:te,omitContext:$})}let N=this.getNextJobOpts(E,e,Object.assign(Object.assign({},s),{repeat:v,telemetry:Q}),p,_);if(o){E<f&&(E=f);let[$,te]=await this.scripts.addJobScheduler(e,E,JSON.stringify(typeof i>"u"?{}:i),Qb.Job.optsAsJSON(s),{name:n,startDate:r.startDate?new Date(r.startDate).getTime():void 0,endDate:m?new Date(m).getTime():void 0,tz:r.tz,pattern:u,every:c,limit:l,offset:_},Qb.Job.optsAsJSON(N),a),ze=typeof te=="string"?parseInt(te,10):te,A=new this.Job(this,n,i,Object.assign(Object.assign({},N),{delay:ze}),$);return A.id=$,I?.setAttributes({[ap.TelemetryAttributes.JobSchedulerId]:e,[ap.TelemetryAttributes.JobId]:A.id}),A}else{let $=await this.scripts.updateJobSchedulerNextMillis(e,E,JSON.stringify(typeof i>"u"?{}:i),Qb.Job.optsAsJSON(N),a);if($){let te=new this.Job(this,n,i,N,$);return te.id=$,I?.setAttributes({[ap.TelemetryAttributes.JobSchedulerId]:e,[ap.TelemetryAttributes.JobId]:te.id}),te}}})}getNextJobOpts(e,r,n,i,s){var o,a;let c=this.getSchedulerNextJobId({jobSchedulerId:r,nextMillis:e}),l=Date.now(),u=e+s-l,d=Object.assign(Object.assign({},n),{jobId:c,delay:u<0?0:u,timestamp:l,prevMillis:e,repeatJobKey:r});return d.repeat=Object.assign(Object.assign({},n.repeat),{offset:s,count:i,startDate:!((o=n.repeat)===null||o===void 0)&&o.startDate?new Date(n.repeat.startDate).getTime():void 0,endDate:!((a=n.repeat)===null||a===void 0)&&a.endDate?new Date(n.repeat.endDate).getTime():void 0}),d}async removeJobScheduler(e){return this.scripts.removeJobScheduler(e)}async getSchedulerData(e,r,n){let i=await e.hgetall(this.toKey("repeat:"+r));return this.transformSchedulerData(r,i,n)}transformSchedulerData(e,r,n){if(r&&Object.keys(r).length>0){let i={key:e,name:r.name,next:n};return r.ic&&(i.iterationCount=parseInt(r.ic)),r.limit&&(i.limit=parseInt(r.limit)),r.startDate&&(i.startDate=parseInt(r.startDate)),r.endDate&&(i.endDate=parseInt(r.endDate)),r.tz&&(i.tz=r.tz),r.pattern&&(i.pattern=r.pattern),r.every&&(i.every=parseInt(r.every)),r.offset&&(i.offset=parseInt(r.offset)),(r.data||r.opts)&&(i.template=this.getTemplateFromJSON(r.data,r.opts)),i}if(e.includes(":"))return this.keyToData(e,n)}keyToData(e,r){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:r}}async isJobScheduler(e){return await(await this.client).hexists(`${this.keys.repeat}:${e}`,"ic")===1}async getScheduler(e){let[r,n]=await this.scripts.getJobScheduler(e);return this.transformSchedulerData(e,r?(0,COe.array2obj)(r):null,n?parseInt(n):null)}getTemplateFromJSON(e,r){let n={};return e&&(n.data=JSON.parse(e)),r&&(n.opts=Qb.Job.optsFromJSON(r)),n}async getJobSchedulers(e=0,r=-1,n=!1){let i=await this.client,s=this.keys.repeat,o=n?await i.zrange(s,e,r,{WITHSCORES:!0}):await i.zrevrange(s,e,r,{WITHSCORES:!0}),a=[];for(let c=0;c<o.length;c+=2)a.push(this.getSchedulerData(i,o[c],parseInt(o[c+1])));return Promise.all(a)}async getSchedulersCount(){let e=this.keys.repeat;return(await this.client).zcard(e)}getSchedulerNextJobId({nextMillis:e,jobSchedulerId:r}){return`repeat:${r}:${e}`}};_a.JobScheduler=Vk;var POe=(t,e)=>{let{pattern:r}=e,n=new Date(t),i=e.startDate&&new Date(e.startDate),s=i>n?i:n,o=(0,ROe.parseExpression)(r,Object.assign(Object.assign({},e),{currentDate:s}));try{return e.immediately?new Date().getTime():o.next().getTime()}catch{}};_a.defaultRepeatStrategy=POe});var Yk=y(ev=>{"use strict";Object.defineProperty(ev,"__esModule",{value:!0});ev.LockManager=void 0;var MOe=my(),Zb=wr(),Wk=class{constructor(e,r){this.worker=e,this.opts=r,this.trackedJobs=new Map,this.closed=!1}start(){this.closed||this.opts.lockRenewTime>0&&this.startLockExtenderTimer()}async extendLocks(e){await this.worker.trace(Zb.SpanKind.INTERNAL,"extendLocks",this.worker.name,async r=>{r?.setAttributes({[Zb.TelemetryAttributes.WorkerId]:this.opts.workerId,[Zb.TelemetryAttributes.WorkerName]:this.opts.workerName,[Zb.TelemetryAttributes.WorkerJobsToExtendLocks]:e});try{let n=e.map(o=>{var a;return((a=this.trackedJobs.get(o))===null||a===void 0?void 0:a.token)||""}),i=await this.worker.extendJobLocks(e,n,this.opts.lockDuration);if(i.length>0){this.worker.emit("lockRenewalFailed",i);for(let o of i)this.worker.emit("error",new Error(`could not renew lock for job ${o}`))}let s=e.filter(o=>!i.includes(o));s.length>0&&this.worker.emit("locksRenewed",{count:s.length,jobIds:s})}catch(n){this.worker.emit("error",n)}})}startLockExtenderTimer(){clearTimeout(this.lockRenewalTimer),this.closed||(this.lockRenewalTimer=setTimeout(async()=>{let e=Date.now(),r=[];for(let n of this.trackedJobs.keys()){let i=this.trackedJobs.get(n),{ts:s,token:o,abortController:a}=i;if(!s){this.trackedJobs.set(n,{token:o,ts:e,abortController:a});continue}s+this.opts.lockRenewTime/2<e&&(this.trackedJobs.set(n,{token:o,ts:e,abortController:a}),r.push(n))}r.length&&await this.extendLocks(r),this.startLockExtenderTimer()},this.opts.lockRenewTime/2))}async close(){this.closed||(this.closed=!0,this.lockRenewalTimer&&(clearTimeout(this.lockRenewalTimer),this.lockRenewalTimer=void 0),this.trackedJobs.clear())}trackJob(e,r,n,i=!1){let s=i?new MOe.AbortController:void 0;return!this.closed&&e&&this.trackedJobs.set(e,{token:r,ts:n,abortController:s}),s}untrackJob(e){this.trackedJobs.delete(e)}getActiveJobCount(){return this.trackedJobs.size}isRunning(){return!this.closed&&this.lockRenewalTimer!==void 0}cancelJob(e,r){let n=this.trackedJobs.get(e);return n?.abortController?(n.abortController.abort(r),!0):!1}cancelAllJobs(e){for(let r of this.trackedJobs.values())r.abortController&&r.abortController.abort(e)}getTrackedJobIds(){return Array.from(this.trackedJobs.keys())}};ev.LockManager=Wk});var fH=y(rv=>{"use strict";Object.defineProperty(rv,"__esModule",{value:!0});rv.QueueEvents=void 0;var dH=(nr(),Mt(rr)),tv=Kr(),DOe=ro(),pH=Hd(),Qk=class extends DOe.QueueBase{constructor(e,r={connection:{}},n){var{connection:i,autorun:s=!0}=r,o=dH.__rest(r,["connection","autorun"]);super(e,Object.assign(Object.assign({},o),{connection:(0,tv.isRedisInstance)(i)?((0,pH.isIRedisClient)(i)?i:(0,pH.createIORedisClient)(i)).duplicate():i}),n,!0),this.running=!1,this.blocking=!1,this.opts=Object.assign({blockingTimeout:1e4},this.opts),s&&this.run().catch(a=>this.emit("error",a))}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}async run(){if(this.running)throw new Error("Queue Events is already running.");try{this.running=!0;let e=await this.client;try{await e.clientSetName(this.clientName(tv.QUEUE_EVENT_SUFFIX))}catch(r){if(!tv.clientCommandMessageReg.test(r.message)&&!this.closing)throw r}await this.consumeEvents(e)}catch(e){throw this.running=!1,e}}async consumeEvents(e){let r=this.opts,n=this.keys.events,i=r.lastEventId||"$";for(;!this.closing;){this.blocking=!0;let s=await this.checkConnectionError(()=>e.xread([{key:n,id:i}],{BLOCK:r.blockingTimeout}));if(this.blocking=!1,s){let a=s[0][1];for(let c=0;c<a.length;c++){i=a[c][0];let l=(0,tv.array2obj)(a[c][1]);switch(l.event){case"progress":l.data=JSON.parse(l.data);break;case"completed":l.returnvalue=JSON.parse(l.returnvalue);break;case"delayed":l.delay=Number(l.delay);break}let{event:u}=l,d=dH.__rest(l,["event"]);u==="drained"?this.emit(u,i):(this.emit(u,d,i),d.jobId&&this.emit(`${u}:${d.jobId}`,d,i))}}}}async close(){return this.closing||(this.closing=(async()=>{try{(await this.client).disconnect(),await this.connection.close(this.blocking)}finally{this.closed=!0}})()),this.closing}};rv.QueueEvents=Qk});var mH=y(nv=>{"use strict";Object.defineProperty(nv,"__esModule",{value:!0});nv.QueueEventsProducer=void 0;var jOe=(nr(),Mt(rr)),KOe=ro(),Xk=class extends KOe.QueueBase{constructor(e,r={connection:{}},n){super(e,Object.assign({blockingConnection:!1},r),n),this.opts=r}async publishEvent(e,r=1e3){let n=await this.client,i=this.keys.events,{eventName:s}=e,o=jOe.__rest(e,["eventName"]),a=Object.assign({event:s},o);await n.xadd(i,"*",a,{MAXLEN:r,approximate:!0})}async close(){this.closing||(this.closing=this.connection.close()),await this.closing}};nv.QueueEventsProducer=Xk});var rR=y(iv=>{"use strict";Object.defineProperty(iv,"__esModule",{value:!0});iv.QueueGetters=void 0;var LOe=(nr(),Mt(rr)),NOe=ro(),Zk=Kr(),eR=wr();function hH(t){return String(t).replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}var tR=class extends NOe.QueueBase{getJob(e){return this.Job.fromId(this,e)}commandByType(e,r,n){return e.map(i=>{i=i==="waiting"?"wait":i;let s=this.toKey(i);switch(i){case"completed":case"failed":case"delayed":case"prioritized":case"repeat":case"waiting-children":return n(s,r?"zcard":"zrange");case"active":case"wait":case"paused":return n(s,r?"llen":"lrange")}})}sanitizeJobTypes(e){let r=typeof e=="string"?[e]:e;if(Array.isArray(r)&&r.length>0){let n=[...r];return n.indexOf("waiting")!==-1&&n.push("paused"),[...new Set(n)]}return["active","completed","delayed","failed","paused","prioritized","waiting","waiting-children"]}async count(){return await this.getJobCountByTypes("waiting","paused","delayed","prioritized","waiting-children")}async getRateLimitTtl(e){return this.scripts.getRateLimitTtl(e)}async getDebounceJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getDeduplicationJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getGlobalConcurrency(){let r=await(await this.client).hget(this.keys.meta,"concurrency");return r?Number(r):null}async getGlobalRateLimit(){let e=await this.client,[r,n]=await e.hmget(this.keys.meta,"max","duration");return r&&n?{max:Number(r),duration:Number(n)}:null}async getJobCountByTypes(...e){let r=await this.getJobCounts(...e);return Object.values(r).reduce((n,i)=>n+i,0)}async getJobCounts(...e){let r=this.sanitizeJobTypes(e),n=await this.scripts.getCounts(r),i={};return n.forEach((s,o)=>{i[r[o]]=s||0}),i}async recordJobCountsMetric(...e){var r;let n=await this.getJobCounts(...e),i=(r=this.opts.telemetry)===null||r===void 0?void 0:r.meter;if(i&&typeof i.createGauge=="function"){let s=i.createGauge(eR.MetricNames.QueueJobsCount,{description:"Number of jobs in the queue by state",unit:"{jobs}"});for(let[o,a]of Object.entries(n))s.record(a,{[eR.TelemetryAttributes.QueueName]:this.name,[eR.TelemetryAttributes.QueueJobsState]:o})}return n}getJobState(e){return this.scripts.getState(e)}async getMeta(){let r=await(await this.client).hgetall(this.keys.meta),{concurrency:n,max:i,duration:s,paused:o,"opts.maxLenEvents":a}=r,l=LOe.__rest(r,["concurrency","max","duration","paused","opts.maxLenEvents"]);return n&&(l.concurrency=Number(n)),a&&(l.maxLenEvents=Number(a)),i&&(l.max=Number(i)),s&&(l.duration=Number(s)),l.paused=o==="1",l}getCompletedCount(){return this.getJobCountByTypes("completed")}getFailedCount(){return this.getJobCountByTypes("failed")}getDelayedCount(){return this.getJobCountByTypes("delayed")}getActiveCount(){return this.getJobCountByTypes("active")}getPrioritizedCount(){return this.getJobCountByTypes("prioritized")}async getCountsPerPriority(e){let r=[...new Set(e)],n=await this.scripts.getCountsPerPriority(r),i={};return n.forEach((s,o)=>{i[`${r[o]}`]=s||0}),i}getWaitingCount(){return this.getJobCountByTypes("waiting")}getWaitingChildrenCount(){return this.getJobCountByTypes("waiting-children")}getWaiting(e=0,r=-1){return this.getJobs(["waiting"],e,r,!0)}getWaitingChildren(e=0,r=-1){return this.getJobs(["waiting-children"],e,r,!0)}getActive(e=0,r=-1){return this.getJobs(["active"],e,r,!0)}getDelayed(e=0,r=-1){return this.getJobs(["delayed"],e,r,!0)}getPrioritized(e=0,r=-1){return this.getJobs(["prioritized"],e,r,!0)}getCompleted(e=0,r=-1){return this.getJobs(["completed"],e,r,!1)}getFailed(e=0,r=-1){return this.getJobs(["failed"],e,r,!1)}async getDependencies(e,r,n,i){let s=this.toKey(r=="processed"?`${e}:processed`:`${e}:dependencies`),{items:o,total:a,jobs:c}=await this.scripts.paginate(s,{start:n,end:i,fetchJobs:!0});return{items:o,jobs:c,total:a}}async getRanges(e,r=0,n=1,i=!1){let s=[];this.commandByType(e,!1,(c,l)=>{switch(l){case"lrange":s.push("lrange");break;case"zrange":s.push("zrange");break}});let o=await this.scripts.getRanges(e,r,n,i),a=[];return o.forEach((c,l)=>{let u=c||[];i&&s[l]==="lrange"?a=a.concat(u.reverse()):a=a.concat(u)}),[...new Set(a)]}async getJobs(e,r=0,n=-1,i=!1){let s=this.sanitizeJobTypes(e);return(await this.scripts.getJobs(s,r,n,i)).reduce((a,c)=>{for(let[l,u]of c||[])a.push(this.Job.fromJSON(this,(0,Zk.array2obj)(u),l));return a},[])}async getJobLogs(e,r=0,n=-1,i=!0){let o=(await this.client).multi(),a=this.toKey(e+":logs");i?o.lrange(a,r,n):o.lrange(a,-(n+1),-(r+1)),o.llen(a);let c=await o.exec();return i||c[0][1].reverse(),{logs:c[0][1],count:c[1][1]}}async baseGetClients(e){let r=await this.client;try{if(r.isCluster&&typeof r.nodes=="function"){let n=r.nodes(),i=[];for(let o=0;o<n.length;o++){let a=n[o],c=typeof a.clientList=="function"?await a.clientList():await a.client("LIST"),l=this.parseClientList(c,e);i.push(l)}return i.reduce((o,a)=>o.length>a.length?o:a,[])}else{let n=await r.clientList();return this.parseClientList(n,e)}}catch(n){if(!Zk.clientCommandMessageReg.test(n.message))throw n;return[{name:"GCP does not support client list"}]}}getWorkers(){let e=`${this.clientName()}`,r=`${this.clientName()}:w:`,n=i=>i&&(i===e||i.startsWith(r));return this.baseGetClients(n)}async getWorkersCount(){return(await this.getWorkers()).length}async getQueueEvents(){let e=`${this.clientName()}${Zk.QUEUE_EVENT_SUFFIX}`;return this.baseGetClients(r=>r===e)}async getMetrics(e,r=0,n=-1){let[i,s,o]=await this.scripts.getMetrics(e,r,n);return{meta:{count:parseInt(i[0]||"0",10),prevTS:parseInt(i[1]||"0",10),prevCount:parseInt(i[2]||"0",10)},data:s.map(a=>+a||0),count:o}}parseClientList(e,r){let n=e.split(/\r?\n/),i=[];return n.forEach(s=>{let o={};s.split(" ").forEach(function(l){let u=l.indexOf("="),d=l.substring(0,u),p=l.substring(u+1);o[d]=p});let c=o.name;r(c)&&(o.name=this.name,o.rawname=c,i.push(o))}),i}async exportPrometheusMetrics(e){let r=await this.getJobCounts(),n=[];n.push("# HELP bullmq_job_count Number of jobs in the queue by state"),n.push("# TYPE bullmq_job_count gauge");let i=hH(this.name),s=e?Object.keys(e).reduce((c,l)=>`${c}, ${l}="${hH(e[l])}"`,""):"";for(let[c,l]of Object.entries(r))n.push(`bullmq_job_count{queue="${i}", state="${c}"${s}} ${l}`);let[o,a]=await Promise.all([this.getMetrics("completed"),this.getMetrics("failed")]);return n.push("# HELP bullmq_job_completed_total Total number of completed jobs"),n.push("# TYPE bullmq_job_completed_total counter"),n.push(`bullmq_job_completed_total{queue="${i}"${s}} ${o.meta.count}`),n.push("# HELP bullmq_job_failed_total Total number of failed jobs"),n.push("# TYPE bullmq_job_failed_total counter"),n.push(`bullmq_job_failed_total{queue="${i}"${s}} ${a.meta.count}`),n.join(`
9546
- `)}};iv.QueueGetters=tR});var sv=y(xa=>{"use strict";Object.defineProperty(xa,"__esModule",{value:!0});xa.getNextMillis=xa.Repeat=void 0;var qOe=(nr(),Mt(rr)),UOe=zk(),FOe=require("crypto"),$Oe=ro(),nR=class extends $Oe.QueueBase{constructor(e,r,n){super(e,r,n),this.repeatStrategy=r.settings&&r.settings.repeatStrategy||xa.getNextMillis,this.repeatKeyHashAlgorithm=r.settings&&r.settings.repeatKeyHashAlgorithm||"md5"}async updateRepeatableJob(e,r,n,{override:i}){var s,o;let a=Object.assign({},n.repeat);(s=a.pattern)!==null&&s!==void 0||(a.pattern=a.cron),delete a.cron;let c=a.count?a.count+1:1;if(typeof a.limit<"u"&&c>a.limit)return;let l=Date.now(),{endDate:u}=a;if(u&&l>new Date(u).getTime())return;let d=n.prevMillis||0;l=d<l?l:d;let p=await this.repeatStrategy(l,a,e),{every:f,pattern:m}=a,h=!!((f||m)&&a.immediately),b=h&&f?l-p:void 0;if(p){!d&&n.jobId&&(a.jobId=n.jobId);let v=yH(e,a),E=(o=n.repeat.key)!==null&&o!==void 0?o:this.hash(v),_;if(i)_=await this.scripts.addRepeatableJob(E,p,{name:e,endDate:u?new Date(u).getTime():void 0,tz:a.tz,pattern:m,every:f},v);else{let O=await this.client;_=await this.scripts.updateRepeatableJobMillis(O,E,p,v)}let{immediately:I}=a,w=qOe.__rest(a,["immediately"]);return this.createNextJob(e,p,_,Object.assign(Object.assign({},n),{repeat:Object.assign({offset:b},w)}),r,c,h)}}async createNextJob(e,r,n,i,s,o,a){let c=this.getRepeatJobKey(e,r,n,s),l=Date.now(),u=r+(i.repeat.offset?i.repeat.offset:0)-l,d=Object.assign(Object.assign({},i),{jobId:c,delay:u<0||a?0:u,timestamp:l,prevMillis:r,repeatJobKey:n});return d.repeat=Object.assign(Object.assign({},i.repeat),{count:o}),this.Job.create(this,e,s,d)}getRepeatJobKey(e,r,n,i){return n.split(":").length>2?this.getRepeatJobId({name:e,nextMillis:r,namespace:this.hash(n),jobId:i?.id}):this.getRepeatDelayedJobId({customKey:n,nextMillis:r})}async removeRepeatable(e,r,n){var i;let s=yH(e,Object.assign(Object.assign({},r),{jobId:n})),o=(i=r.key)!==null&&i!==void 0?i:this.hash(s),a=this.getRepeatJobId({name:e,nextMillis:"",namespace:this.hash(s),jobId:n??r.jobId,key:r.key});return this.scripts.removeRepeatable(a,s,o)}async removeRepeatableByKey(e){let r=this.keyToData(e),n=this.getRepeatJobId({name:r.name,nextMillis:"",namespace:this.hash(e),jobId:r.id});return this.scripts.removeRepeatable(n,"",e)}async getRepeatableData(e,r,n){let i=await e.hgetall(this.toKey("repeat:"+r));return i?{key:r,name:i.name,endDate:parseInt(i.endDate)||null,tz:i.tz||null,pattern:i.pattern||null,every:i.every||null,next:n}:this.keyToData(r,n)}keyToData(e,r){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:r}}async getRepeatableJobs(e=0,r=-1,n=!1){let i=await this.client,s=this.keys.repeat,o=n?await i.zrange(s,e,r,{WITHSCORES:!0}):await i.zrevrange(s,e,r,{WITHSCORES:!0}),a=[];for(let c=0;c<o.length;c+=2)a.push(this.getRepeatableData(i,o[c],parseInt(o[c+1])));return Promise.all(a)}async getRepeatableCount(){return(await this.client).zcard(this.toKey("repeat"))}hash(e){return(0,FOe.createHash)(this.repeatKeyHashAlgorithm).update(e).digest("hex")}getRepeatDelayedJobId({nextMillis:e,customKey:r}){return`repeat:${r}:${e}`}getRepeatJobId({name:e,nextMillis:r,namespace:n,jobId:i,key:s}){return`repeat:${s??this.hash(`${e}${i||""}${n}`)}:${r}`}};xa.Repeat=nR;function yH(t,e){let r=e.endDate?new Date(e.endDate).getTime():"",n=e.tz||"",i=e.pattern,s=i||String(e.every)||"",o=e.jobId?e.jobId:"";return`${t}:${o}:${r}:${n}:${s}`}var JOe=(t,e)=>{let r=e.pattern;if(r&&e.every)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(e.every)return Math.floor(t/e.every)*e.every+(e.immediately?0:e.every);let n=e.startDate&&new Date(e.startDate)>new Date(t)?new Date(e.startDate):new Date(t),i=(0,UOe.parseExpression)(r,Object.assign(Object.assign({},e),{currentDate:n}));try{return e.immediately?new Date().getTime():i.next().getTime()}catch{}};xa.getNextMillis=JOe});var gH=y(ov=>{"use strict";Object.defineProperty(ov,"__esModule",{value:!0});ov.Queue=void 0;var GOe=sl(),BOe=rR(),zOe=sv(),pe=wr(),HOe=Xb(),VOe=Qy(),WOe=Kr(),iR=class extends BOe.QueueGetters{constructor(e,r,n){var i;super(e,Object.assign({},r),n),this.token=(0,WOe.randomUUID)(),this.libName="bullmq",this.jobsOpts=(i=r?.defaultJobOptions)!==null&&i!==void 0?i:{},this.waitUntilReady().then(s=>{if(!this.closing&&!r?.skipMetasUpdate)return s.hset(this.keys.meta,this.metaValues)}).catch(s=>{})}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}get defaultJobOptions(){return Object.assign({},this.jobsOpts)}get metaValues(){var e,r,n,i;return{"opts.maxLenEvents":(i=(n=(r=(e=this.opts)===null||e===void 0?void 0:e.streams)===null||r===void 0?void 0:r.events)===null||n===void 0?void 0:n.maxLen)!==null&&i!==void 0?i:1e4,version:`${this.libName}:${VOe.version}`}}async getVersion(){return await(await this.client).hget(this.keys.meta,"version")}get repeat(){return new Promise(async e=>{this._repeat||(this._repeat=new zOe.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._repeat.on("error",this.emit.bind(this,"error"))),e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{this._jobScheduler||(this._jobScheduler=new HOe.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._jobScheduler.on("error",this.emit.bind(this,"error"))),e(this._jobScheduler)})}async setGlobalConcurrency(e){return(await this.client).hset(this.keys.meta,{concurrency:e})}async setGlobalRateLimit(e,r){return(await this.client).hset(this.keys.meta,{max:e,duration:r})}async removeGlobalConcurrency(){return(await this.client).hdel(this.keys.meta,"concurrency")}async removeGlobalRateLimit(){return(await this.client).hdel(this.keys.meta,"max","duration")}async add(e,r,n){return this.trace(pe.SpanKind.PRODUCER,"add",`${this.name}.${e}`,async(i,s)=>{var o;if(s&&!(!((o=n?.telemetry)===null||o===void 0)&&o.omitContext)){let c={metadata:s};n=Object.assign(Object.assign({},n),{telemetry:c})}let a=await this.addJob(e,r,n);return i?.setAttributes({[pe.TelemetryAttributes.JobName]:e,[pe.TelemetryAttributes.JobId]:a.id}),a})}async addJob(e,r,n){if(n&&n.repeat){if(n.repeat.endDate&&+new Date(n.repeat.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.repeat).updateRepeatableJob(e,r,Object.assign(Object.assign({},this.jobsOpts),n),{override:!0})}else{let i=n?.jobId;if(i=="0"||i?.startsWith("0:"))throw new Error("JobId cannot be '0' or start with 0:");let s=Object.assign(Object.assign(Object.assign({},this.jobsOpts),n),{jobId:i}),o=await this.Job.create(this,e,r,s);return this.emit("waiting",o),o}}async addBulk(e){return this.trace(pe.SpanKind.PRODUCER,"addBulk",this.name,async(r,n)=>(r&&r.setAttributes({[pe.TelemetryAttributes.BulkNames]:e.map(i=>i.name),[pe.TelemetryAttributes.BulkCount]:e.length}),await this.Job.createBulk(this,e.map(i=>{var s,o,a,c,l,u;let d=(s=i.opts)===null||s===void 0?void 0:s.telemetry;if(n){let f=(a=(o=i.opts)===null||o===void 0?void 0:o.telemetry)===null||a===void 0?void 0:a.omitContext,m=((l=(c=i.opts)===null||c===void 0?void 0:c.telemetry)===null||l===void 0?void 0:l.metadata)||!f&&n;(m||f)&&(d={metadata:m,omitContext:f})}let p=Object.assign(Object.assign(Object.assign({},this.jobsOpts),i.opts),{jobId:(u=i.opts)===null||u===void 0?void 0:u.jobId,telemetry:d});return{name:i.name,data:i.data,opts:p}}))))}async upsertJobScheduler(e,r,n){var i,s;if(r.endDate&&+new Date(r.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.jobScheduler).upsertJobScheduler(e,r,(i=n?.name)!==null&&i!==void 0?i:e,(s=n?.data)!==null&&s!==void 0?s:{},Object.assign(Object.assign({},this.jobsOpts),n?.opts),{override:!0})}async pause(){await this.trace(pe.SpanKind.INTERNAL,"pause",this.name,async()=>{await this.scripts.pause(!0),this.emit("paused")})}async close(){await this.trace(pe.SpanKind.INTERNAL,"close",this.name,async()=>{this.closing||this._repeat&&await this._repeat.close(),await super.close()})}async rateLimit(e){await this.trace(pe.SpanKind.INTERNAL,"rateLimit",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,{PX:e}))})}async resume(){await this.trace(pe.SpanKind.INTERNAL,"resume",this.name,async()=>{await this.scripts.pause(!1),this.emit("resumed")})}async isPaused(){return await(await this.client).hexists(this.keys.meta,"paused")===1}isMaxed(){return this.scripts.isMaxed()}async getRepeatableJobs(e,r,n){return(await this.repeat).getRepeatableJobs(e,r,n)}async getJobScheduler(e){return(await this.jobScheduler).getScheduler(e)}async getJobSchedulers(e,r,n){return(await this.jobScheduler).getJobSchedulers(e,r,n)}async getJobSchedulersCount(){return(await this.jobScheduler).getSchedulersCount()}async removeRepeatable(e,r,n){return this.trace(pe.SpanKind.INTERNAL,"removeRepeatable",`${this.name}.${e}`,async i=>(i?.setAttributes({[pe.TelemetryAttributes.JobName]:e,[pe.TelemetryAttributes.JobId]:n}),!await(await this.repeat).removeRepeatable(e,r,n)))}async removeJobScheduler(e){return!await(await this.jobScheduler).removeJobScheduler(e)}async removeDebounceKey(e){return this.trace(pe.SpanKind.INTERNAL,"removeDebounceKey",`${this.name}`,async r=>(r?.setAttributes({[pe.TelemetryAttributes.JobKey]:e}),await(await this.client).del(`${this.keys.de}:${e}`)))}async removeDeduplicationKey(e){return this.trace(pe.SpanKind.INTERNAL,"removeDeduplicationKey",`${this.name}`,async r=>(r?.setAttributes({[pe.TelemetryAttributes.DeduplicationKey]:e}),(await this.client).del(`${this.keys.de}:${e}`)))}async removeRateLimitKey(){return(await this.client).del(this.keys.limiter)}async removeRepeatableByKey(e){return this.trace(pe.SpanKind.INTERNAL,"removeRepeatableByKey",`${this.name}`,async r=>(r?.setAttributes({[pe.TelemetryAttributes.JobKey]:e}),!await(await this.repeat).removeRepeatableByKey(e)))}async remove(e,{removeChildren:r=!0}={}){return this.trace(pe.SpanKind.INTERNAL,"remove",this.name,async n=>{n?.setAttributes({[pe.TelemetryAttributes.JobId]:e,[pe.TelemetryAttributes.JobOptions]:JSON.stringify({removeChildren:r})});let i=await this.scripts.remove(e,r);return i===1&&this.emit("removed",e),i})}async updateJobProgress(e,r){await this.trace(pe.SpanKind.INTERNAL,"updateJobProgress",this.name,async n=>{n?.setAttributes({[pe.TelemetryAttributes.JobId]:e,[pe.TelemetryAttributes.JobProgress]:JSON.stringify(r)}),await this.scripts.updateProgress(e,r),this.emit("progress",e,r)})}async addJobLog(e,r,n){return GOe.Job.addJobLog(this,e,r,n)}async drain(e=!1){await this.trace(pe.SpanKind.INTERNAL,"drain",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueDrainDelay]:e}),await this.scripts.drain(e)})}async clean(e,r,n="completed"){return this.trace(pe.SpanKind.INTERNAL,"clean",this.name,async i=>{let s=r||1/0,o=Math.min(1e4,s),a=Date.now()-e,c=0,l=[],u=n==="waiting"?"wait":n;for(;c<s;){let d=await this.scripts.cleanJobsInSet(u,a,o);if(this.emit("cleaned",d,u),c+=d.length,l.push(...d),d.length<o)break}return i?.setAttributes({[pe.TelemetryAttributes.QueueGrace]:e,[pe.TelemetryAttributes.JobType]:n,[pe.TelemetryAttributes.QueueCleanLimit]:s,[pe.TelemetryAttributes.JobIds]:l}),l})}async obliterate(e){await this.trace(pe.SpanKind.INTERNAL,"obliterate",this.name,async()=>{await this.pause();let r=0;do r=await this.scripts.obliterate(Object.assign({force:!1,count:1e3},e));while(r)})}async retryJobs(e={}){await this.trace(pe.SpanKind.PRODUCER,"retryJobs",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.retryJobs(e.state,e.count,e.timestamp);while(n)})}async promoteJobs(e={}){await this.trace(pe.SpanKind.INTERNAL,"promoteJobs",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.promoteJobs(e.count);while(n)})}async trimEvents(e){return this.trace(pe.SpanKind.INTERNAL,"trimEvents",this.name,async r=>(r?.setAttributes({[pe.TelemetryAttributes.QueueEventMaxLength]:e}),await(await this.client).xtrim(this.keys.events,"MAXLEN",e,{approximate:!0})))}async removeDeprecatedPriorityKey(){return(await this.client).del(this.toKey("priority"))}async removeOrphanedJobs(e=1e3,r=0){let n=await this.client,i=new Set(Object.keys(this.keys)),s=Object.keys(this.keys).filter(d=>d!==""),o=["logs","dependencies","processed","failed","unsuccessful","lock"],a=this.qualifiedName+":",c=a+"*",l=0,u="0";do{let[d,p]=await n.scan(u,{MATCH:c,COUNT:e});u=d;let f=new Set;for(let h of p){let b=h.slice(a.length);if(i.has(b))continue;let v=b.indexOf(":");if(v!==-1){let _=b.slice(0,v);if(i.has(_))continue}let E=v===-1?b:b.slice(0,v);if(v!==-1){let _=b.slice(v+1);if(!o.includes(_))continue}f.add(E)}if(f.size===0)continue;let m=await this.scripts.removeOrphanedJobs([...f],s,o);if(l+=m||0,r>0&&l>=r)break}while(u!=="0");return l}};ov.Queue=iR});var oR=y(sR=>{"use strict";Object.defineProperty(sR,"__esModule",{value:!0});var vt=wr(),YOe=(t,e)=>async function(n,i,s){let o,a,c,l;try{let u=new Promise((d,p)=>{(async()=>{try{c=(m,h)=>{p(new Error("Unexpected exit code: "+m+" signal: "+h))},o=await e.retain(t),o.on("exit",c),a=async m=>{var h,b,v,E,_,I;try{switch(m.cmd){case vt.ParentCommand.Completed:d(m.value);break;case vt.ParentCommand.Failed:case vt.ParentCommand.Error:{let w=new Error;Object.assign(w,(h=m.value)!==null&&h!==void 0?h:m.err),p(w);break}case vt.ParentCommand.Progress:await n.updateProgress(m.value);break;case vt.ParentCommand.Log:await n.log(m.value);break;case vt.ParentCommand.MoveToDelayed:await n.moveToDelayed((b=m.value)===null||b===void 0?void 0:b.timestamp,(v=m.value)===null||v===void 0?void 0:v.token);break;case vt.ParentCommand.MoveToWait:await n.moveToWait((E=m.value)===null||E===void 0?void 0:E.token);break;case vt.ParentCommand.MoveToWaitingChildren:{let w=await n.moveToWaitingChildren((_=m.value)===null||_===void 0?void 0:_.token,(I=m.value)===null||I===void 0?void 0:I.opts);o.send({requestId:m.requestId,cmd:vt.ChildCommand.MoveToWaitingChildrenResponse,value:w})}break;case vt.ParentCommand.Update:await n.updateData(m.value);break;case vt.ParentCommand.GetChildrenValues:{let w=await n.getChildrenValues();o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetChildrenValuesResponse,value:w})}break;case vt.ParentCommand.GetIgnoredChildrenFailures:{let w=await n.getIgnoredChildrenFailures();o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetIgnoredChildrenFailuresResponse,value:w})}break;case vt.ParentCommand.GetDependenciesCount:{let w=await n.getDependenciesCount(m.value);o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetDependenciesCountResponse,value:w})}break;case vt.ParentCommand.GetDependencies:{let w=await n.getDependencies(m.value);o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetDependenciesResponse,value:w})}break}}catch(w){p(w)}},o.on("message",a),o.send({cmd:vt.ChildCommand.Start,job:n.asJSONSandbox(),token:i}),s&&(l=()=>{try{o.send({cmd:vt.ChildCommand.Cancel,value:s.reason})}catch{}},s.aborted?l():s.addEventListener("abort",l,{once:!0}))}catch(m){p(m)}})()});return await u,u}finally{s&&l&&s.removeEventListener("abort",l),o&&(o.off("message",a),o.off("exit",c),o.exitCode===null&&o.signalCode===null&&e.release(o))}};sR.default=YOe});var SH=y((cv,EH)=>{"use strict";Object.defineProperty(cv,"__esModule",{value:!0});cv.Worker=void 0;var av=require("fs"),QOe=require("url"),cp=require("path"),XOe=my(),es=Kr(),ZOe=ro(),eCe=sv(),tCe=A1(),rCe=Wd(),bH=Hd(),nCe=oR(),iCe=S1(),wa=Py(),fe=wr(),sCe=Xb(),oCe=Yk(),aCe=10;function vH(t){return t.status==="ready"||t.status==="connect"&&(0,es.isRedisCluster)(t)}var aR=class extends ZOe.QueueBase{static RateLimitError(){return new wa.RateLimitError}constructor(e,r,n,i){if(super(e,Object.assign(Object.assign({drainDelay:5,concurrency:1,lockDuration:3e4,maximumRateLimitDelay:3e4,maxStalledCount:1,stalledInterval:3e4,autorun:!0,runRetryDelay:15e3},n),{blockingConnection:!0}),i),this.abortDelayController=null,this.blockUntil=0,this.drained=!1,this.limitUntil=0,this.processorAcceptsSignal=!1,this.stalledCheckerRunning=!1,this.waiting=null,this.running=!1,this.mainLoopRunning=null,!n||!n.connection)throw new Error("Worker requires a connection");if(typeof this.opts.maxStalledCount!="number"||this.opts.maxStalledCount<0)throw new Error("maxStalledCount must be greater or equal than 0");if(typeof this.opts.maxStartedAttempts=="number"&&this.opts.maxStartedAttempts<0)throw new Error("maxStartedAttempts must be greater or equal than 0");if(typeof this.opts.stalledInterval!="number"||this.opts.stalledInterval<=0)throw new Error("stalledInterval must be greater than 0");if(typeof this.opts.drainDelay!="number"||this.opts.drainDelay<=0)throw new Error("drainDelay must be greater than 0");if(this.concurrency=this.opts.concurrency,this.opts.lockRenewTime=this.opts.lockRenewTime||this.opts.lockDuration/2,this.id=(0,es.randomUUID)(),this.createLockManager(),r){if(typeof r=="function")this.processFn=r,this.processorAcceptsSignal=r.length>=3;else{if(r instanceof QOe.URL){if(!av.existsSync(r))throw new Error(`URL ${r} does not exist in the local file system`);r=r.href}else{let d=r+([".js",".ts",".flow",".cjs",".mjs"].includes(cp.extname(r))?"":".js");if(!av.existsSync(d))throw new Error(`File ${d} does not exist`)}let o=cp.dirname(EH.filename||__CM_FILENAME__),a=cp.join(o,"main-worker.js"),c=cp.join(o,"main.js"),l=this.opts.useWorkerThreads?a:c;try{av.statSync(l)}catch{let d=this.opts.useWorkerThreads?"main-worker.js":"main.js";l=cp.join(process.cwd(),`dist/cjs/classes/${d}`),av.statSync(l)}this.childPool=new tCe.ChildPool({mainFile:l,useWorkerThreads:this.opts.useWorkerThreads,workerForkOptions:this.opts.workerForkOptions,workerThreadsOptions:this.opts.workerThreadsOptions}),this.createSandbox(r),this.processorAcceptsSignal=!0}this.opts.autorun&&this.run().catch(o=>this.emit("error",o))}let s=this.clientName()+(this.opts.name?`:w:${this.opts.name}`:"");this.blockingConnection=new rCe.RedisConnection((0,es.isRedisInstance)(n.connection)?((0,bH.isIRedisClient)(n.connection)?n.connection:(0,bH.createIORedisClient)(n.connection)).duplicate({connectionName:s}):Object.assign(Object.assign({},n.connection),{connectionName:s}),{shared:!1,blocking:!0,skipVersionCheck:n.skipVersionCheck}),(0,es.forwardConnectionError)(this,this.blockingConnection),this.blockingConnection.on("ready",()=>setTimeout(()=>this.emit("ready"),0))}createLockManager(){this.lockManager=new oCe.LockManager(this,{lockRenewTime:this.opts.lockRenewTime,lockDuration:this.opts.lockDuration,workerId:this.id,workerName:this.opts.name})}createSandbox(e){this.processFn=(0,nCe.default)(e,this.childPool).bind(this)}async extendJobLocks(e,r,n){return this.scripts.extendLocks(e,r,n)}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}callProcessJob(e,r,n){return this.processFn(e,r,n)}createJob(e,r){return this.Job.fromJSON(this,e,r)}async waitUntilReady(){return await super.waitUntilReady(),this.blockingConnection.client}cancelJob(e,r){return this.lockManager.cancelJob(e,r)}cancelAllJobs(e){this.lockManager.cancelAllJobs(e)}set concurrency(e){if(typeof e!="number"||e<1||!isFinite(e))throw new Error("concurrency must be a finite number greater than 0");this._concurrency=e}get concurrency(){return this._concurrency}get repeat(){return new Promise(async e=>{if(!this._repeat){let r=await this.client;this._repeat=new eCe.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:r})),this._repeat.on("error",this.emit.bind(this,"error"))}e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{if(!this._jobScheduler){let r=await this.client;this._jobScheduler=new sCe.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:r})),this._jobScheduler.on("error",this.emit.bind(this,"error"))}e(this._jobScheduler)})}async run(){if(!this.processFn)throw new Error("No process function is defined.");if(this.running)throw new Error("Worker is already running.");try{if(this.running=!0,this.closing||this.paused)return;await this.startStalledCheckTimer(),this.opts.skipLockRenewal||this.lockManager.start();let e=await this.client,r=await this.blockingConnection.client;this.mainLoopRunning=this.mainLoop(e,r),await this.mainLoopRunning}finally{this.running=!1}}async waitForRateLimit(){var e;let r=this.limitUntil;if(r>Date.now()){(e=this.abortDelayController)===null||e===void 0||e.abort(),this.abortDelayController=new XOe.AbortController;let n=this.getRateLimitDelay(r-Date.now());await this.delay(n,this.abortDelayController),this.drained=!1,this.limitUntil=0}}async mainLoop(e,r){let n=new iCe.AsyncFifoQueue,i=0;for(;!this.closing&&!this.paused||n.numTotal()>0;){for(;!this.closing&&!this.paused&&!this.waiting&&n.numTotal()<this._concurrency&&!this.isRateLimited();){let o=`${this.id}:${i++}`,a=this.retryIfFailed(()=>this._getNextJob(e,r,o,{block:!0}),{delayInMs:this.opts.runRetryDelay,onlyEmitError:!0});if(n.add(a),this.waiting&&n.numTotal()>1||!await a&&n.numTotal()>1||this.blockUntil)break}let s;do s=await n.fetch();while(!s&&n.numQueued()>0);if(s){let o=s.token;n.add(this.processJob(s,o,()=>n.numTotal()<=this._concurrency))}else n.numQueued()===0&&await this.waitForRateLimit()}}async getNextJob(e,{block:r=!0}={}){let n=await this.getTracedNextJob(e,{block:r});for(;n;){let i=this.getUnrecoverableErrorMessage(n);if(!i)break;await this.handleFailed(new wa.UnrecoverableError(i),n,e,()=>!1),n=await this.getTracedNextJob(e,{block:r})}return n}async getTracedNextJob(e,{block:r=!0}={}){var n,i;let s=await this._getNextJob(await this.client,await this.blockingConnection.client,e,{block:r});return this.trace(fe.SpanKind.INTERNAL,"getNextJob",this.name,async o=>(o?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.QueueName]:this.name,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerOptions]:JSON.stringify({block:r}),[fe.TelemetryAttributes.JobId]:s?.id}),s),(i=(n=s?.opts)===null||n===void 0?void 0:n.telemetry)===null||i===void 0?void 0:i.metadata)}async _getNextJob(e,r,n,{block:i=!0}={}){if(this.paused||this.closing)return;let s;if(this.drained&&i&&!this.limitUntil&&!this.waiting){this.waiting=this.waitForJob(r,this.blockUntil);try{this.blockUntil=await this.waiting,(this.blockUntil<=0||this.blockUntil-Date.now()<1)&&(s=await this.moveToActive(e,n,this.opts.name))}finally{this.waiting=null}}else this.isRateLimited()||(s=await this.moveToActive(e,n,this.opts.name));return s}async rateLimit(e){await this.trace(fe.SpanKind.INTERNAL,"rateLimit",this.name,async r=>{r?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,{PX:e}))})}get minimumBlockTimeout(){return this.blockingConnection.capabilities.canBlockFor1Ms?.001:.002}isRateLimited(){return this.limitUntil>Date.now()}async moveToActive(e,r,n){let[i,s,o,a]=await this.scripts.moveToActive(e,r,n);return this.updateDelays(o,a),this.nextJobFromJobData(i,s,r)}async waitForJob(e,r){if(this.paused)return 1/0;let n;try{if(!this.closing&&!this.isRateLimited()){let i=this.getBlockTimeout(r);if(i>0){i=this.blockingConnection.capabilities.canDoubleTimeout?i:Math.ceil(i);let s=!1,o=new Promise(c=>{n=setTimeout(()=>{s=!0,c(null)},i*1e3+1e3)});this.updateDelays();let a=await Promise.race([e.bzpopmin(this.keys.marker,i),o]);if(s&&!this.closing&&(vH(e)||await this.blockingConnection.reconnect(),vH(e)&&!this.closing&&(await this.blockingConnection.disconnect(!0),this.closing||await this.blockingConnection.reconnect())),a){let[,c,l]=a;if(c){let u=parseInt(l);return r&&u>r?r:u}}}return 0}}catch(i){if((0,es.isNotConnectionError)(i)&&this.emit("error",i),!this.closing&&e.status==="end")try{await e.connect()}catch(s){e.status==="end"&&(0,es.isNotConnectionError)(s)&&this.emit("error",s)}this.closing||await this.delay()}finally{clearTimeout(n)}return 1/0}getBlockTimeout(e){let r=this.opts;if(e){let n=e-Date.now();return n<=0?n:n<this.minimumBlockTimeout*1e3?this.minimumBlockTimeout:Math.min(n/1e3,aCe)}else return Math.max(r.drainDelay,this.minimumBlockTimeout)}getRateLimitDelay(e){return Math.min(e,this.opts.maximumRateLimitDelay)}async delay(e,r){await(0,es.delay)(e||es.DELAY_TIME_1,r)}updateDelays(e=0,r=0){let n=Math.max(e,0);n>0?this.limitUntil=Date.now()+n:this.limitUntil=0,this.blockUntil=Math.max(r,0)||0}async nextJobFromJobData(e,r,n){if(!e)this.drained||(this.emit("drained"),this.drained=!0);else{this.drained=!1;let i=this.createJob(e,r);i.token=n;try{await this.retryIfFailed(async()=>{let s=!!i.repeatJobKey,o=s&&i.repeatJobKey.split(":").length>=5,a=s&&!o;o&&(a=await(await this.jobScheduler).isJobScheduler(i.repeatJobKey)),a?await(await this.jobScheduler).upsertJobScheduler(i.repeatJobKey,i.opts.repeat,i.name,i.data,i.opts,{override:!1,producerId:i.id}):i.opts.repeat&&await(await this.repeat).updateRepeatableJob(i.name,i.data,i.opts,{override:!1})},{delayInMs:this.opts.runRetryDelay})}catch(s){let o=s instanceof Error?s.message:String(s),a=new Error(`Failed to add repeatable job for next iteration: ${o}`);this.emit("error",a);return}return this.emit("active",i,"waiting"),i}}async processJob(e,r,n=()=>!0){var i,s;let o=(s=(i=e.opts)===null||i===void 0?void 0:i.telemetry)===null||s===void 0?void 0:s.metadata;return this.trace(fe.SpanKind.CONSUMER,"process",this.name,async a=>{a?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.JobId]:e.id,[fe.TelemetryAttributes.JobName]:e.name});let c=this.lockManager.trackJob(e.id,r,e.processedOn,this.processorAcceptsSignal);try{let l=this.getUnrecoverableErrorMessage(e);if(l)return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(new wa.UnrecoverableError(l),e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a});let u=await this.callProcessJob(e,r,c?c.signal:void 0);return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleCompleted(u,e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a})}catch(l){return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(l,e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a,onlyEmitError:!0})}finally{this.lockManager.untrackJob(e.id);let l=Date.now();a?.setAttributes({[fe.TelemetryAttributes.JobFinishedTimestamp]:l,[fe.TelemetryAttributes.JobAttemptFinishedTimestamp]:e.finishedOn||l,[fe.TelemetryAttributes.JobProcessedTimestamp]:e.processedOn})}},o)}getUnrecoverableErrorMessage(e){if(e.deferredFailure)return e.deferredFailure;if(this.opts.maxStartedAttempts&&this.opts.maxStartedAttempts<e.attemptsStarted)return"job started more than allowable limit"}async handleCompleted(e,r,n,i=()=>!0,s){if(!this.connection.closing){let o=await r.moveToCompleted(e,n,i()&&!(this.closing||this.paused));if(this.emit("completed",r,e,"active"),s?.addEvent("job completed",{[fe.TelemetryAttributes.JobResult]:JSON.stringify(e)}),s?.setAttributes({[fe.TelemetryAttributes.JobAttemptsMade]:r.attemptsMade}),Array.isArray(o)){let[a,c,l,u]=o;return this.updateDelays(l,u),this.nextJobFromJobData(a,c,n)}}}async handleFailed(e,r,n,i=()=>!0,s){if(!this.connection.closing){if(e.message===wa.RATE_LIMIT_ERROR){let c=await this.moveLimitedBackToWait(r,n);this.limitUntil=c>0?Date.now()+c:0;return}let o=i()&&!(this.closing||this.paused);if(e instanceof wa.DelayedError||e.name=="DelayedError"||e instanceof wa.WaitingError||e.name=="WaitingError"||e instanceof wa.WaitingChildrenError||e.name=="WaitingChildrenError"){if(!o)return;let c=await this.client;return this.moveToActive(c,n,this.opts.name)}let a=await r.moveToFailed(e,n,o);if(this.emit("failed",r,e,"active"),s?.addEvent("job failed",{[fe.TelemetryAttributes.JobFailedReason]:e.message}),s?.setAttributes({[fe.TelemetryAttributes.JobAttemptsMade]:r.attemptsMade}),Array.isArray(a)){let[c,l,u,d]=a;return this.updateDelays(u,d),this.nextJobFromJobData(c,l,n)}}}async pause(e){await this.trace(fe.SpanKind.INTERNAL,"pause",this.name,async r=>{var n;r?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerDoNotWaitActive]:e}),this.paused||(this.paused=!0,e||await this.whenCurrentJobsFinished(),(n=this.stalledCheckStopper)===null||n===void 0||n.call(this),this.emit("paused"))})}resume(){(!this.running||this.paused)&&this.trace(fe.SpanKind.INTERNAL,"resume",this.name,e=>{e?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name}),this.paused=!1,this.running?this.startStalledCheckTimer().catch(r=>{this.emit("error",r)}):this.processFn&&this.run(),this.emit("resumed")}).catch(e=>{this.emit("error",e)})}isPaused(){return!!this.paused}isRunning(){return this.running}async close(e=!1){return this.closing?this.closing:(this.closing=(async()=>{await this.trace(fe.SpanKind.INTERNAL,"close",this.name,async r=>{var n,i;r?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerForceClose]:e}),this.emit("closing","closing queue"),(n=this.abortDelayController)===null||n===void 0||n.abort();let s=[()=>e||this.whenCurrentJobsFinished(!1),()=>this.lockManager.close(),()=>{var o;return(o=this.childPool)===null||o===void 0?void 0:o.clean()},()=>this.blockingConnection.close(e),()=>this.connection.close(e)];for(let o of s)try{await o()}catch(a){this.emit("error",a)}(i=this.stalledCheckStopper)===null||i===void 0||i.call(this),this.closed=!0,this.emit("closed")})})(),await this.closing)}async startStalledCheckTimer(){this.opts.skipStalledCheck||!this.closing&&!this.stalledCheckerRunning&&await this.trace(fe.SpanKind.INTERNAL,"startStalledCheckTimer",this.name,async e=>{e?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name}),this.stalledCheckerRunning=!0,this.stalledChecker().catch(r=>{this.emit("error",r)}).finally(()=>{this.stalledCheckerRunning=!1})})}async stalledChecker(){for(;!(this.closing||this.paused);)await this.checkConnectionError(()=>this.moveStalledJobsToWait()),await new Promise(e=>{let r=setTimeout(e,this.opts.stalledInterval);this.stalledCheckStopper=()=>{clearTimeout(r),e()}})}async whenCurrentJobsFinished(e=!0){this.mainLoopRunning?(await this.blockingConnection.disconnect(!0),await this.mainLoopRunning):e=!1,e&&await this.blockingConnection.reconnect()}async retryIfFailed(e,r){var n;let i=0,s=r.maxRetries||1/0;do try{return await e()}catch(o){if((n=r.span)===null||n===void 0||n.recordException(o.message),(0,es.isNotConnectionError)(o)){if(!this.paused&&!this.closing&&this.emit("error",o),r.onlyEmitError)return;throw o}else if(r.delayInMs&&!this.closing&&!this.closed&&await this.delay(r.delayInMs,this.abortDelayController),i+1>=s)throw o}while(++i<s)}async moveStalledJobsToWait(){await this.trace(fe.SpanKind.INTERNAL,"moveStalledJobsToWait",this.name,async e=>{let r=await this.scripts.moveStalledJobsToWait();e?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerStalledJobs]:r}),r.forEach(n=>{e?.addEvent("job stalled",{[fe.TelemetryAttributes.JobId]:n}),this.emit("stalled",n,"active")})})}moveLimitedBackToWait(e,r){return e.moveToWait(r)}};cv.Worker=aR});var _H=y(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});var Qe=(nr(),Mt(rr));Qe.__exportStar(S1(),Je);Qe.__exportStar(_1(),Je);Qe.__exportStar(w1(),Je);Qe.__exportStar(A1(),Je);Qe.__exportStar(i6(),Je);Qe.__exportStar(Py(),Je);Qe.__exportStar(f5(),Je);Qe.__exportStar(Hd(),Je);Qe.__exportStar(h5(),Je);Qe.__exportStar(b5(),Je);Qe.__exportStar(x5(),Je);Qe.__exportStar(sl(),Je);Qe.__exportStar(Xb(),Je);Qe.__exportStar(Yk(),Je);Qe.__exportStar(ro(),Je);Qe.__exportStar(fH(),Je);Qe.__exportStar(mH(),Je);Qe.__exportStar(rR(),Je);Qe.__exportStar(tg(),Je);Qe.__exportStar(gH(),Je);Qe.__exportStar(Wd(),Je);Qe.__exportStar(sv(),Je);Qe.__exportStar(oR(),Je);Qe.__exportStar(RT(),Je);Qe.__exportStar(SH(),Je)});var wH=y(xH=>{"use strict";Object.defineProperty(xH,"__esModule",{value:!0})});var TH=y(IH=>{"use strict";Object.defineProperty(IH,"__esModule",{value:!0})});var kH=y(AH=>{"use strict";Object.defineProperty(AH,"__esModule",{value:!0})});var OH=y(RH=>{"use strict";Object.defineProperty(RH,"__esModule",{value:!0})});var PH=y(CH=>{"use strict";Object.defineProperty(CH,"__esModule",{value:!0})});var DH=y(MH=>{"use strict";Object.defineProperty(MH,"__esModule",{value:!0})});var KH=y(jH=>{"use strict";Object.defineProperty(jH,"__esModule",{value:!0})});var NH=y(LH=>{"use strict";Object.defineProperty(LH,"__esModule",{value:!0})});var UH=y(qH=>{"use strict";Object.defineProperty(qH,"__esModule",{value:!0})});var $H=y(FH=>{"use strict";Object.defineProperty(FH,"__esModule",{value:!0})});var GH=y(JH=>{"use strict";Object.defineProperty(JH,"__esModule",{value:!0})});var zH=y(BH=>{"use strict";Object.defineProperty(BH,"__esModule",{value:!0})});var VH=y(HH=>{"use strict";Object.defineProperty(HH,"__esModule",{value:!0})});var YH=y(WH=>{"use strict";Object.defineProperty(WH,"__esModule",{value:!0})});var XH=y(QH=>{"use strict";Object.defineProperty(QH,"__esModule",{value:!0})});var eV=y(ZH=>{"use strict";Object.defineProperty(ZH,"__esModule",{value:!0})});var rV=y(tV=>{"use strict";Object.defineProperty(tV,"__esModule",{value:!0})});var iV=y(nV=>{"use strict";Object.defineProperty(nV,"__esModule",{value:!0})});var oV=y(lv=>{"use strict";Object.defineProperty(lv,"__esModule",{value:!0});lv.ClientType=void 0;var sV;(function(t){t.blocking="blocking",t.normal="normal"})(sV||(lv.ClientType=sV={}))});var cV=y(aV=>{"use strict";Object.defineProperty(aV,"__esModule",{value:!0})});var uV=y(lV=>{"use strict";Object.defineProperty(lV,"__esModule",{value:!0})});var pV=y(dV=>{"use strict";Object.defineProperty(dV,"__esModule",{value:!0})});var mV=y(fV=>{"use strict";Object.defineProperty(fV,"__esModule",{value:!0})});var yV=y(hV=>{"use strict";Object.defineProperty(hV,"__esModule",{value:!0})});var bV=y(gV=>{"use strict";Object.defineProperty(gV,"__esModule",{value:!0})});var EV=y(vV=>{"use strict";Object.defineProperty(vV,"__esModule",{value:!0})});var _V=y(SV=>{"use strict";Object.defineProperty(SV,"__esModule",{value:!0})});var wV=y(xV=>{"use strict";Object.defineProperty(xV,"__esModule",{value:!0})});var TV=y(IV=>{"use strict";Object.defineProperty(IV,"__esModule",{value:!0})});var kV=y(AV=>{"use strict";Object.defineProperty(AV,"__esModule",{value:!0})});var OV=y(RV=>{"use strict";Object.defineProperty(RV,"__esModule",{value:!0})});var PV=y(CV=>{"use strict";Object.defineProperty(CV,"__esModule",{value:!0})});var DV=y(MV=>{"use strict";Object.defineProperty(MV,"__esModule",{value:!0})});var KV=y(jV=>{"use strict";Object.defineProperty(jV,"__esModule",{value:!0})});var LV=y(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});var Te=(nr(),Mt(rr));Te.__exportStar(wH(),Se);Te.__exportStar(TH(),Se);Te.__exportStar(kH(),Se);Te.__exportStar(OH(),Se);Te.__exportStar(PH(),Se);Te.__exportStar(DH(),Se);Te.__exportStar(KH(),Se);Te.__exportStar(NH(),Se);Te.__exportStar(UH(),Se);Te.__exportStar($H(),Se);Te.__exportStar(GH(),Se);Te.__exportStar(zH(),Se);Te.__exportStar(VH(),Se);Te.__exportStar(YH(),Se);Te.__exportStar(XH(),Se);Te.__exportStar(eV(),Se);Te.__exportStar(rV(),Se);Te.__exportStar(iV(),Se);Te.__exportStar(oV(),Se);Te.__exportStar(cV(),Se);Te.__exportStar(uV(),Se);Te.__exportStar(pV(),Se);Te.__exportStar(mV(),Se);Te.__exportStar(yV(),Se);Te.__exportStar(bV(),Se);Te.__exportStar(EV(),Se);Te.__exportStar(_V(),Se);Te.__exportStar(wV(),Se);Te.__exportStar(TV(),Se);Te.__exportStar(kV(),Se);Te.__exportStar(OV(),Se);Te.__exportStar(PV(),Se);Te.__exportStar(DV(),Se);Te.__exportStar(KV(),Se)});var qV=y(NV=>{"use strict";Object.defineProperty(NV,"__esModule",{value:!0})});var FV=y(UV=>{"use strict";Object.defineProperty(UV,"__esModule",{value:!0})});var JV=y($V=>{"use strict";Object.defineProperty($V,"__esModule",{value:!0})});var BV=y(GV=>{"use strict";Object.defineProperty(GV,"__esModule",{value:!0})});var HV=y(zV=>{"use strict";Object.defineProperty(zV,"__esModule",{value:!0})});var WV=y(VV=>{"use strict";Object.defineProperty(VV,"__esModule",{value:!0})});var QV=y(YV=>{"use strict";Object.defineProperty(YV,"__esModule",{value:!0})});var ZV=y(XV=>{"use strict";Object.defineProperty(XV,"__esModule",{value:!0})});var tW=y(eW=>{"use strict";Object.defineProperty(eW,"__esModule",{value:!0})});var nW=y(rW=>{"use strict";Object.defineProperty(rW,"__esModule",{value:!0})});var sW=y(iW=>{"use strict";Object.defineProperty(iW,"__esModule",{value:!0})});var oW=y(Br=>{"use strict";Object.defineProperty(Br,"__esModule",{value:!0});var Fn=(nr(),Mt(rr));Fn.__exportStar(qV(),Br);Fn.__exportStar(FV(),Br);Fn.__exportStar(JV(),Br);Fn.__exportStar(BV(),Br);Fn.__exportStar(HV(),Br);Fn.__exportStar(WV(),Br);Fn.__exportStar(QV(),Br);Fn.__exportStar(ZV(),Br);Fn.__exportStar(tW(),Br);Fn.__exportStar(nW(),Br);Fn.__exportStar(sW(),Br)});var cW=y(aW=>{"use strict";Object.defineProperty(aW,"__esModule",{value:!0})});var cR=y(ts=>{"use strict";Object.defineProperty(ts,"__esModule",{value:!0});var Ia=(nr(),Mt(rr));Ia.__exportStar(_H(),ts);Ia.__exportStar(wr(),ts);Ia.__exportStar(LV(),ts);Ia.__exportStar(oW(),ts);Ia.__exportStar(Kr(),ts);Ia.__exportStar(cW(),ts);Ia.__exportStar(Nd(),ts)});var Rl,cCe,uv,lW=R(()=>{"use strict";Rl=Xe(cR(),1);oe();cCe=300*1e3,uv=class t{name;config;concurrency;lockDurationMs;defaultJobOptions;queueFactory;workerFactory;queue=null;worker=null;queueEvents=null;started=!1;counters={stalled:0,errored:0};listeners=[];jobStartTimes=new Map;recentlyStalled=new Map;static STALLED_DEDUPE_WINDOW_MS=3e4;constructor(e){this.name=e.name,this.config=e.config,this.concurrency=e.concurrency??1,this.lockDurationMs=e.lockDurationMs??cCe,this.defaultJobOptions=e.defaultJobOptions??{attempts:3,backoff:{type:"exponential",delay:5e3},removeOnComplete:{age:10080*60,count:1e3},removeOnFail:{age:720*60*60,count:1e3}},this.queueFactory=e.queueFactory,this.workerFactory=e.workerFactory}getQueue(){if(this.queue)return this.queue;let e={connection:this.config.connection,prefix:this.config.prefix,defaultJobOptions:this.defaultJobOptions};return this.queue=this.queueFactory?this.queueFactory(this.name,e):new Rl.Queue(this.name,e),this.queue}async addToQueue(e,r,n){await this.getQueue().add(this.name,r,{...this.defaultJobOptions,...n,jobId:e})}async add(e,r,n){if(e.includes(":"))throw new Error(`server job ID must not contain ':' (got ${e})`);try{await this.addToQueue(e,r,n)}catch(i){let s=i instanceof Error?i:new Error(String(i));throw this.toRedisUnavailableError(s)}}async getJob(e){try{return await this.getQueue().getJob(e)}catch(r){let n=r instanceof Error?r:new Error(String(r));throw this.toRedisUnavailableError(n)}}async remove(e){try{await this.getQueue().remove(e)}catch(r){let n=r instanceof Error?r:new Error(String(r));throw this.toRedisUnavailableError(n)}}async readCounts(){let e=await this.getQueue().getJobCounts("waiting","active","delayed","failed","completed");return{waiting:e.waiting??0,active:e.active??0,delayed:e.delayed??0,failed:e.failed??0,completed:e.completed??0}}async getCounts(){try{return await this.readCounts()}catch(e){let r=e instanceof Error?e:new Error(String(e));throw this.toRedisUnavailableError(r)}}notifyStalled(e,r){if(this.recentlyStalled.has(e)){S.debug?.("QUEUE",`[generation] job=${e} stalled (suppressed duplicate from ${r})`,{queue:this.name,jobId:e,source:r});return}let n=setTimeout(()=>{this.recentlyStalled.delete(e)},t.STALLED_DEDUPE_WINDOW_MS);typeof n.unref=="function"&&n.unref(),this.recentlyStalled.set(e,n),this.counters.stalled+=1,S.warn("QUEUE",`[generation] job=${e} stalled${r==="queue-events"?" (queue-events)":""}`,{queue:this.name,jobId:e,source:r});for(let i of this.listeners)try{i.onStalled?.(e)}catch{}}notifyQueueError(e,r){this.counters.errored+=1,S.warn("QUEUE",`${this.name} ${r} error`,{error:e instanceof Error?e.message:String(e)});for(let n of this.listeners)try{n.onError?.(e)}catch{}}start(e){if(this.started)throw new Error(`ServerJobQueue ${this.name} is already started`);let r={connection:this.config.connection,prefix:this.config.prefix,autorun:!1,concurrency:this.concurrency,lockDuration:this.lockDurationMs},n=this.workerFactory?this.workerFactory(this.name,e,r):new Rl.Worker(this.name,e,r);if(n.on("error",i=>this.notifyQueueError(i,"worker")),typeof n.on=="function"){let i=n;i.on("active",s=>{s.id&&this.jobStartTimes.set(s.id,Date.now())}),i.on("completed",(s,o)=>{let a=s.id?this.jobStartTimes.get(s.id):void 0,c=a?Date.now()-a:0;s.id&&this.jobStartTimes.delete(s.id);let l=s.data?.source_type??"?";S.info("QUEUE",`[generation] job=${s.id??"?"} source_type=${l} duration=${c}ms`,{queue:this.name,jobId:s.id??null,sourceType:l,durationMs:c});for(let u of this.listeners)try{u.onCompleted?.(s.id??"?",c,o)}catch{}}),i.on("failed",(s,o)=>{s?.id&&this.jobStartTimes.delete(s.id);let a=s?.data?.source_type??"?",c=s?.attemptsMade??0;S.warn("QUEUE",`[generation] job=${s?.id??"?"} source_type=${a} attempts=${c} reason=${o.message}`,{queue:this.name,jobId:s?.id??null,sourceType:a,attemptsMade:c,reason:o.message});for(let l of this.listeners)try{l.onFailed?.(s?.id,c,o.message)}catch{}}),i.on("progress",(s,o)=>{S.debug?.("QUEUE",`[generation] job=${s.id??"?"} progress`,{queue:this.name,jobId:s.id??null,progress:o})}),i.on("stalled",s=>this.notifyStalled(s,"worker"))}if(n.run(),this.worker=n,!this.workerFactory)try{let i=new Rl.QueueEvents(this.name,{connection:this.config.connection,prefix:this.config.prefix});i.on("stalled",({jobId:s})=>this.notifyStalled(s,"queue-events")),i.on("error",s=>this.notifyQueueError(s,"queue-events")),this.queueEvents=i}catch(i){S.warn("QUEUE",`${this.name} failed to start QueueEvents listener`,{error:i instanceof Error?i.message:String(i)})}this.started=!0}observe(e){this.listeners.push(e)}getLifecycleCounters(){return{...this.counters}}isStarted(){return this.started}async close(){let e=[];if(this.queueEvents){try{await this.queueEvents.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));S.warn("QUEUE",`${this.name} failed to close QueueEvents`,{queue:this.name},n),e.push(n)}this.queueEvents=null}if(this.worker){try{await this.worker.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));S.warn("QUEUE",`${this.name} failed to close worker`,{queue:this.name},n),e.push(n)}this.worker=null,this.started=!1}if(this.queue){try{await this.queue.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));S.warn("QUEUE",`${this.name} failed to close queue`,{queue:this.name},n),e.push(n)}this.queue=null}for(let r of this.recentlyStalled.values())clearTimeout(r);if(this.recentlyStalled.clear(),e.length>0)throw e[0]}toRedisUnavailableError(e){let r=e instanceof Error?e.message:String(e);return new Error(`ServerJobQueue ${this.name} requires Redis/Valkey when CLAUDE_MEM_QUEUE_ENGINE=bullmq: ${r}`)}}});function lCe(){let t=process.env.CLAUDE_MEM_SERVER_GENERATION_CONCURRENCY;if(!t)return;let e=Number(t);if(!Number.isSafeInteger(e)||e<=0){S.warn("SYSTEM","server: ignoring invalid CLAUDE_MEM_SERVER_GENERATION_CONCURRENCY",{value:t});return}return e>uR?(S.warn("SYSTEM","server: clamping CLAUDE_MEM_SERVER_GENERATION_CONCURRENCY to the per-lane cap",{value:t,cap:uR}),uR):e}var lR,uR,Ta,dR=R(()=>{"use strict";lW();zh();oe();lR=["event","summary"],uR=64;Ta=class{constructor(e,r){this.config=e;if(e.engine!=="bullmq")throw new Error(`ActiveServerQueueManager requires CLAUDE_MEM_QUEUE_ENGINE=bullmq (got ${e.engine}); do not instantiate when bullmq is not selected.`);this.queues=r??this.buildQueues(e)}config;kind="queue-manager";queues;closed=!1;getQueue(e){let r=this.queues.get(e);if(!r)throw new Error(`unknown server generation job kind: ${e}`);return r}start(e,r){this.getQueue(e).start(r)}getHealth(){if(this.closed)return{status:"errored",reason:"queue-manager closed"};let e=lR.map(r=>({kind:r,name:Gc[r]}));return{status:"active",reason:"BullMQ-backed queue manager wired",details:{engine:this.config.engine,mode:this.config.mode,host:this.config.host,port:this.config.port,prefix:this.config.prefix,lanes:e}}}async getLaneMetrics(){let e=[];for(let r of lR){let n=this.queues.get(r);if(!n)continue;let i=n.getLifecycleCounters();try{e.push(await this.readLaneMetric(r,n,i.stalled))}catch(s){let o=s instanceof Error?s:new Error(String(s));S.warn("QUEUE","failed to read lane counts; reporting lane as unavailable",{kind:r,name:Gc[r]},o),e.push({kind:r,name:Gc[r],waiting:0,active:0,completed:0,failed:0,delayed:0,stalled:i.stalled,unavailable:!0,unavailableReason:o.message})}}return e}async readLaneMetric(e,r,n){let i=await r.getCounts();return{kind:e,name:Gc[e],waiting:i.waiting,active:i.active,completed:i.completed,failed:i.failed,delayed:i.delayed,stalled:n,unavailable:!1}}async close(){if(this.closed)return;this.closed=!0;let e=[];for(let r of this.queues.values())try{await r.close()}catch(n){let i=n instanceof Error?n:new Error(String(n));S.warn("QUEUE","error closing server job queue",{},i),e.push(i)}if(e.length>0)throw S.warn("QUEUE","errors closing server queue manager",{count:e.length,first:e[0].message}),e[0]}buildQueues(e){let r=new Map,n=lCe();for(let i of lR)r.set(i,new uv({name:Gc[i],config:e,...n!==void 0?{concurrency:n}:{}}));return r}}});var pR,lp,mv,uW,pv,dv,fv,dW=R(()=>{"use strict";pR=Xe(Mf(),1),lp=Xe(require("path"),1),mv=require("fs");Rr();oe();uW=(()=>{let t=_o();return[lp.default.join(t,"ui","viewer.html"),lp.default.join(t,"plugin","ui","viewer.html")]})(),pv=uW.find(t=>(0,mv.existsSync)(t))??null,dv=pv?(0,mv.readFileSync)(pv):null;pv?S.info("SYSTEM","Cached viewer.html at boot (server runtime)",{path:pv,bytes:dv.byteLength}):S.warn("SYSTEM","viewer.html not found for server runtime",{candidates:uW});fv=class{setupRoutes(e){let r=_o();e.use(pR.default.static(lp.default.join(r,"ui"))),e.use(pR.default.static(lp.default.join(r,"plugin","ui"))),e.get("/",(n,i)=>{if(!dv){i.status(503).json({error:"ViewerUnavailable",message:"Viewer UI not found at any expected location"});return}i.setHeader("Content-Type","text/html; charset=utf-8"),i.send(dv)})}static hasViewerHtml(){return dv!==null}}});var hv,up,uCe,no,yv=R(()=>{"use strict";hv=require("fs"),up=require("path");oe();Rr();uCe=/^[a-z0-9]+(?:-[a-z0-9]+)*(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$/,no=class t{static instance=null;activeMode=null;activeModeId=null;modeDirs;constructor(){let e=_o(),r=[...process.env.CLAUDE_MEM_MODES_DIR?[process.env.CLAUDE_MEM_MODES_DIR]:[],(0,up.join)(je.dataDir(),"modes"),(0,up.join)(e,"modes"),(0,up.join)(e,"..","plugin","modes")];this.modeDirs=[...new Set(r)]}static getInstance(){return t.instance||(t.instance=new t),t.instance}parseInheritance(e){let r=e.split("--");if(r.length===1)return{hasParent:!1,parentId:"",overrideId:""};if(r.length>2)throw new Error(`Invalid mode inheritance: ${e}. Only one level of inheritance supported (parent--override)`);return{hasParent:!0,parentId:r[0],overrideId:e}}isPlainObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}deepMerge(e,r){let n={...e};for(let i in r){let s=r[i],o=e[i];this.isPlainObject(s)&&this.isPlainObject(o)?n[i]=this.deepMerge(o,s):n[i]=s}return n}loadModeFile(e){if(!uCe.test(e))throw new Error(`Invalid mode ID: ${e}`);let r=this.modeDirs.map(i=>(0,up.join)(i,`${e}.json`)).find(i=>(0,hv.existsSync)(i));if(!r)throw new Error(`Mode file not found: ${e}.json (searched: ${this.modeDirs.join(", ")})`);let n=(0,hv.readFileSync)(r,"utf-8");return JSON.parse(n)}loadMode(e){let r=this.parseInheritance(e);if(!r.hasParent)try{let c=this.loadModeFile(e);return this.activeMode=c,this.activeModeId=e,S.debug("SYSTEM",`Loaded mode: ${c.name} (${e})`,void 0,{types:c.observation_types.map(l=>l.id),concepts:c.observation_concepts.map(l=>l.id)}),c}catch(c){if(c instanceof Error?S.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{message:c.message}):S.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{error:String(c)}),e==="code")throw new Error("Critical: code.json mode file missing");return this.loadMode("code")}let{parentId:n,overrideId:i}=r,s;try{s=this.loadMode(n)}catch(c){c instanceof Error?S.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{message:c.message}):S.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{error:String(c)}),s=this.loadMode("code")}let o;try{o=this.loadModeFile(i),S.debug("SYSTEM",`Loaded override file: ${i} for parent ${n}`)}catch(c){return c instanceof Error?S.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{message:c.message}):S.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{error:String(c)}),this.activeMode=s,s}if(!o)return S.warn("SYSTEM",`Invalid override file: ${i}, using parent mode '${n}' only`),this.activeMode=s,s;let a=this.deepMerge(s,o);return this.activeMode=a,this.activeModeId=e,S.debug("SYSTEM",`Loaded mode with inheritance: ${a.name} (${e} = ${n} + ${i})`,void 0,{parent:n,override:i,types:a.observation_types.map(c=>c.id),concepts:a.observation_concepts.map(c=>c.id)}),a}getActiveMode(){if(!this.activeMode)throw new Error("No mode loaded. Call loadMode() first.");return this.activeMode}getActiveModeId(){if(!this.activeModeId)throw new Error("No mode loaded. Call loadMode() first.");return this.activeModeId}getObservationTypes(){return this.getActiveMode().observation_types}getTypeIcon(e){return this.getObservationTypes().find(n=>n.id===e)?.emoji||"\u{1F4DD}"}getWorkEmoji(e){return this.getObservationTypes().find(n=>n.id===e)?.work_emoji||"\u{1F4DD}"}}});function pW(t){return{id:t.id,name:t.name,metadata:ht(t.metadata),createdAtEpoch:Ke(t.created_at),updatedAtEpoch:Ke(t.updated_at)}}function dCe(t){return{teamId:t.team_id,userId:t.user_id,role:t.role,metadata:ht(t.metadata),createdAtEpoch:Ke(t.created_at),updatedAtEpoch:Ke(t.updated_at)}}var Aa,gv=R(()=>{"use strict";Tn();Aa=class{constructor(e){this.client=e}client;async create(e){let r=e.id??et(),n=await ce(this.client,`
9544
+ Current: ${this.version}`)}this.capabilities={canDoubleTimeout:!(0,yr.isRedisVersionLowerThan)(this.version,"6.0.0",this.dbType),canBlockFor1Ms:!(0,yr.isRedisVersionLowerThan)(this.version,"7.0.8",this.dbType)},this.status="ready"}return this._client}patchBlockingClusterClient(){var e;let r=this._client,n=r;if(!this.extraOptions.blocking||!(0,yr.isRedisCluster)(r)||typeof n.bzpopmin!="function")return;let i=(e=this.extraOptions.clusterReconnectTimeoutMs)!==null&&e!==void 0?e:p5;if(n[yl]=(n[yl]||0)+1,this.patchedBlockingClusterClient=n,n[ZA])return;let s=n.bzpopmin,o=async(...a)=>{await t.reconnectClusterIfNeeded(n,i);try{return await s.apply(n,a)}catch(c){let l=c;if(t.shouldReconnectClusterAfterError(n,l))try{await t.reconnectCluster(n,i)}catch{}throw l}};n[xb]=s,n[ek]=o,n[ZA]=!0,n.bzpopmin=o}disableBlockingClusterReconnect(){let e=this.patchedBlockingClusterClient;!e||this.disabledBlockingClusterReconnect||(e[fa]=(e[fa]||0)+1,this.disabledBlockingClusterReconnect=!0)}releaseBlockingClusterClientPatch(){let e=this.patchedBlockingClusterClient;if(!e)return;if(this.disabledBlockingClusterReconnect){let n=(e[fa]||1)-1;n>0?e[fa]=n:delete e[fa],this.disabledBlockingClusterReconnect=!1}let r=(e[yl]||1)-1;if(r>0){e[yl]=r,this.patchedBlockingClusterClient=void 0;return}e[xb]&&e.bzpopmin===e[ek]&&(e.bzpopmin=e[xb]),delete e[yl],delete e[fa],delete e[xb],delete e[ek],delete e[ZA],this.patchedBlockingClusterClient=void 0}static isClusterWithEmptyNodes(e){return typeof e.nodes=="function"&&e.nodes().length===0}static isReconnectingDisabled(e){let r=e[yl]||0,n=e[fa]||0;return r===0||n>=r||e.status==="end"||e.status==="closing"}static async reconnectClusterIfNeeded(e,r){!t.isReconnectingDisabled(e)&&t.isClusterWithEmptyNodes(e)&&await t.reconnectCluster(e,r)}static shouldReconnectClusterAfterError(e,r){var n,i;if(t.isReconnectingDisabled(e))return!1;let s=[r.message,(n=r.cause)===null||n===void 0?void 0:n.message,(i=r.lastNodeError)===null||i===void 0?void 0:i.message].join(" ");return t.isClusterWithEmptyNodes(e)||/Command timed out|Failed to refresh slots cache/i.test(s)}static async reconnectCluster(e,r){t.isReconnectingDisabled(e)||(e[_b]||(e[_b]=t.connectClusterWithTimeout(e,r).finally(()=>{e[_b]=null})),await e[_b])}static async connectClusterWithTimeout(e,r){e.disconnect(!1);let n;try{await Promise.race([e.connect(),new Promise((i,s)=>{var o;n=setTimeout(()=>{s(new Sb.ConnectionClosedError(`BullMQ: cluster reconnect timed out after ${r}ms`))},r),(o=n.unref)===null||o===void 0||o.call(n)})])}finally{n&&clearTimeout(n)}}async disconnect(e=!0){let r=await this.client;if(r.status!=="end"){let n,i;if(!e)return r.disconnect();let s=new Promise((o,a)=>{(0,yr.increaseMaxListeners)(r,2),r.once("end",o),r.once("error",a),n=o,i=a});r.disconnect();try{await s}finally{(0,yr.decreaseMaxListeners)(r,2),r.removeListener("end",n),r.removeListener("error",i)}}}async reconnect(){let e=await this.client;for(;;){if(this.closing)throw new Sb.ConnectionClosedError(QA.CONNECTION_CLOSED_ERROR_MSG);if(e.status==="ready"||e.status==="connect"&&(0,yr.isRedisCluster)(e))return;if(e.status==="wait"||e.status==="end")return e.connect();try{await t.waitUntilReady(e)}catch(r){if(!["end","connecting","connect","reconnecting"].includes(e.status))throw r}}}async close(e=!1){var r;if(!this.closing){let n=this.status;this.status="closing",this.closing=!0,this.disableBlockingClusterReconnect();try{n==="ready"&&await this.initializing,this.extraOptions.shared||(n=="initializing"||e?(this._client.disconnect(),(r=this.initializing)===null||r===void 0||r.catch(()=>{})):await this._client.quit(),this._client.status="end")}catch(i){if((0,yr.isNotConnectionError)(i))throw i}finally{this.releaseBlockingClusterClientPatch(),this._client.off("error",this.handleClientError),this._client.off("close",this.handleClientClose),this._client.off("ready",this.handleClientReady),(0,yr.decreaseMaxListeners)(this._client,3),this.removeAllListeners(),this.status="closed"}}}async getRedisVersionAndType(){if(this.skipVersionCheck)return{version:t.minimumVersion,databaseType:"redis"};let e=await this._client.info(),r="redis_version:",n="maxmemory_policy:",i=e.split(/\r?\n/),s,o="redis";for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("dragonfly_version:")||c.includes("server:Dragonfly")?(o="dragonfly",c.indexOf("dragonfly_version:")===0&&(s=c.substr(18))):c.includes("valkey_version:")||c.includes("server:Valkey")?(o="valkey",c.indexOf("valkey_version:")===0&&(s=c.substr(15))):c.indexOf(r)===0&&(s=c.substr(r.length),o==="redis"&&(o="redis")),c.indexOf(n)===0){let l=c.substr(n.length);l!=="noeviction"&&console.warn(`IMPORTANT! Eviction policy is ${l}. It should be "noeviction"`)}}if(!s){for(let a of i)if(a.includes("version:")){let c=a.split(":");if(c.length>=2){s=c[1];break}}}return{version:s||t.minimumVersion,databaseType:o}}get redisVersion(){return this.version}get databaseType(){return this.dbType}};wb.RedisConnection=Vd;Vd.minimumVersion="5.0.0";Vd.recommendedMinimumVersion="6.2.0"});var f5=y(Tb=>{"use strict";Object.defineProperty(Tb,"__esModule",{value:!0});Tb.FlowProducer=void 0;var nke=require("events"),hi=Kr(),ike=Nd(),ske=sl(),Ib=tg(),oke=Wd(),yi=wr(),tk=class extends nke.EventEmitter{constructor(e={connection:{}},r=oke.RedisConnection){super(),this.opts=e,this.queues=new Map,this.opts=Object.assign({prefix:"bull"},e),this.connection=new r(e.connection,{shared:(0,hi.isRedisInstance)(e.connection),blocking:!1,skipVersionCheck:e.skipVersionCheck,skipWaitingForReady:e.skipWaitingForReady}),(0,hi.forwardConnectionError)(this,this.connection),this.connection.on("close",()=>{this.queues.clear(),this.closing||this.emit("ioredis:close")}),this.queueKeys=new Ib.QueueKeys(e.prefix),e?.telemetry&&(this.telemetry=e.telemetry)}createScripts(e){var r;return(r=e.scripts)!==null&&r!==void 0?r:(0,ike.createScripts)(e)}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}get client(){return this.connection.client}get Job(){return ske.Job}waitUntilReady(){return this.client}async add(e,r){var n;if(this.closing)return;let s=(await this.connection.client).multi(),o=(n=e?.opts)===null||n===void 0?void 0:n.parent,a=(0,hi.getParentKey)(o),c=a?`${a}:dependencies`:void 0;return(0,hi.trace)(this.telemetry,yi.SpanKind.PRODUCER,e.queueName,"addFlow",e.queueName,async l=>{l?.setAttributes({[yi.TelemetryAttributes.FlowName]:e.name});let u=await this.addNode({multi:s,node:e,queuesOpts:r?.queuesOptions,parent:{parentOpts:o,parentDependenciesKey:c}}),d=await s.exec(),[p]=d||[];if(p){let[f,m]=p;if(f)throw f;if(typeof m=="number"&&m<0)throw this.toFlowError(m,a);typeof m=="string"?u.job.id=m:typeof m=="number"&&(u.job.id=m.toString())}return u})}async getFlow(e){if(this.closing)return;let r=await this.connection.client,n=Object.assign({depth:10,maxChildren:20,prefix:this.opts.prefix},e);return this.getNode(r,n)}async addBulk(e){if(this.closing)return;let n=(await this.connection.client).multi();return(0,hi.trace)(this.telemetry,yi.SpanKind.PRODUCER,"","addBulkFlows","",async i=>{var s,o;i?.setAttributes({[yi.TelemetryAttributes.BulkCount]:e.length,[yi.TelemetryAttributes.BulkNames]:e.map(l=>l.name).join(",")});let a=await this.addNodes(n,e),c=await n.exec();for(let l=0;l<a.length;++l){let u=c?.[l];if(!u)continue;let[d,p]=u;if(d)throw d;if(typeof p=="number"&&p<0)throw this.toFlowError(p,(0,hi.getParentKey)((o=(s=e[l])===null||s===void 0?void 0:s.opts)===null||o===void 0?void 0:o.parent));typeof p=="string"?a[l].job.id=p:typeof p=="number"&&(a[l].job.id=p.toString())}return a})}async addNode({multi:e,node:r,parent:n,queuesOpts:i}){var s,o;let a=r.prefix||this.opts.prefix,c=this.queueFromNode(r,new Ib.QueueKeys(a),a),l=i&&i[r.queueName],u=(s=l?.defaultJobOptions)!==null&&s!==void 0?s:{},d=((o=r.opts)===null||o===void 0?void 0:o.jobId)||(0,hi.randomUUID)();return(0,hi.trace)(this.telemetry,yi.SpanKind.PRODUCER,r.queueName,"addNode",r.queueName,async(p,f)=>{var m,h;p?.setAttributes({[yi.TelemetryAttributes.JobName]:r.name,[yi.TelemetryAttributes.JobId]:d});let b=r.opts,v=b?.telemetry;if(f&&b){let I=(m=b.telemetry)===null||m===void 0?void 0:m.omitContext,w=((h=b.telemetry)===null||h===void 0?void 0:h.metadata)||!I&&f;(w||I)&&(v={metadata:w,omitContext:I})}let E=new this.Job(c,r.name,r.data,Object.assign(Object.assign(Object.assign({},u),b),{parent:n?.parentOpts,telemetry:v}),d),_=(0,hi.getParentKey)(n?.parentOpts);if(r.children&&r.children.length>0){let I=d,w=new Ib.QueueKeys(r.prefix||this.opts.prefix);await E.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,addToWaitingChildren:!0,parentKey:_});let O=`${w.toKey(r.queueName,I)}:dependencies`,K=await this.addChildren({multi:e,nodes:r.children,parent:{parentOpts:{id:I,queue:w.getQueueQualifiedName(r.queueName)},parentDependenciesKey:O},queuesOpts:i});return{job:E,children:K}}else return await E.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,parentKey:_}),{job:E}})}addNodes(e,r){return Promise.all(r.map(n=>{var i;let s=(i=n?.opts)===null||i===void 0?void 0:i.parent,o=(0,hi.getParentKey)(s),a=o?`${o}:dependencies`:void 0;return this.addNode({multi:e,node:n,parent:{parentOpts:s,parentDependenciesKey:a}})}))}async getNode(e,r){let n=this.queueFromNode(r,new Ib.QueueKeys(r.prefix),r.prefix),i=await this.Job.fromId(n,r.id);if(i){let{processed:s={},unprocessed:o=[],failed:a=[],ignored:c={}}=await i.getDependencies({failed:{count:r.maxChildren},processed:{count:r.maxChildren},unprocessed:{count:r.maxChildren},ignored:{count:r.maxChildren}}),l=Object.keys(s),u=Object.keys(c),d=l.length+o.length+u.length+a.length,p=r.depth-1;if(d>0&&p){let f=await this.getChildren(e,[...l,...o,...a,...u],p,r.maxChildren);return{job:i,children:f}}else return{job:i}}}addChildren({multi:e,nodes:r,parent:n,queuesOpts:i}){return Promise.all(r.map(s=>this.addNode({multi:e,node:s,parent:n,queuesOpts:i})))}getChildren(e,r,n,i){let s=o=>{let[a,c,l]=o.split(":");return this.getNode(e,{id:l,queueName:c,prefix:a,depth:n,maxChildren:i})};return Promise.all([...r.map(s)])}queueFromNode(e,r,n){let i=`${n}:${e.queueName}`,s=this.queues.get(i);if(s)return s;let o=this,a={client:this.connection.client,name:e.queueName,keys:r.getKeys(e.queueName),toKey:c=>r.toKey(e.queueName,c),opts:{prefix:n,connection:{}},qualifiedName:r.getQueueQualifiedName(e.queueName),get closing(){return o.closing},waitUntilReady:async()=>this.connection.client,removeListener:this.removeListener.bind(this),emit:this.emit.bind(this),on:this.on.bind(this),get redisVersion(){return o.connection.redisVersion},get databaseType(){return o.connection.databaseType},trace:async()=>{}};return a.scripts=this.createScripts(a),this.queues.set(i,a),a}toFlowError(e,r){let n;switch(e){case yi.ErrorCode.ParentJobNotExist:n=new Error(`Missing key for parent job ${r}. addJob`);break;case yi.ErrorCode.ParentJobCannotBeReplaced:n=new Error(`The parent job ${r} cannot be replaced. addJob`);break;default:n=new Error(`Unknown code ${e} error for addJob`)}return n.code=e,n}async close(){this.closing||(this.queues.clear(),this.closing=this.connection.close()),await this.closing}disconnect(){return this.connection.disconnect()}};Tb.FlowProducer=tk});var h5=y(ik=>{"use strict";Object.defineProperty(ik,"__esModule",{value:!0});ik.createNodeRedisClient=dke;var ake=(nr(),Mt(rr)),cke=require("crypto"),lke=require("events"),uke=require("stream"),Ab=Zo();function m5(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function gi(t){return t?.message==="Disconnects client"||t?.message==="The client is closed"||t?.message==="Connection is closed."}function dke(t){return new rk(t)}var rk=class t extends lke.EventEmitter{get status(){return this.statusOverride?this.statusOverride:this.raw.isReady?"ready":this.raw.isOpen?"connect":this.hasConnected?"end":"wait"}set status(e){if(e==="end"&&(this.destroying=!0,this.raw.isOpen))try{this.raw.quit().catch(()=>{})}catch{}this.statusOverride=e}get options(){var e;return(e=this.raw.options)!==null&&e!==void 0?e:{}}set options(e){}constructor(e){super(),this.raw=e,this.scripts=new Map,this.hasConnected=!1,this.destroying=!1,this.isCluster=!1,e.on("ready",()=>{this.hasConnected=!0,this.connectionName?this.raw.clientSetName(this.connectionName).then(()=>this.emit("ready"),()=>this.emit("ready")):this.emit("ready")}),e.on("error",r=>{this.destroying&&gi(r)||this.emit("error",r)}),e.on("end",()=>this.emit("close")),e.on("reconnecting",()=>this.emit("reconnecting")),e.isOpen||(this.connectPromise=e.connect().then(()=>{this.connectPromise=void 0},r=>{this.connectPromise=void 0}))}async connect(){if(this.connectPromise)return this.connectPromise;if(!this.raw.isOpen)return this.connectPromise=this.raw.connect().then(()=>{this.connectPromise=void 0},e=>{throw this.connectPromise=void 0,e}),this.connectPromise;this.raw.isReady||await new Promise((e,r)=>{let n=()=>{o(),e()},i=a=>{o(),r(a)},s=()=>{o(),r(new Error("Connection ended before ready event"))},o=()=>{this.off("ready",n),this.off("error",i),this.off("end",s)};this.once("ready",n),this.once("error",i),this.once("end",s)})}disconnect(e=!1){this.destroying=!0,e||(this.statusOverride="end");try{this.raw.isOpen&&this.raw.destroy()}catch{}this.emit("close"),e?(this.statusOverride=void 0,this.emit("reconnecting"),this.connect().catch(r=>{gi(r)||this.emit("error",r)}).finally(()=>{this.destroying=!1})):this.emit("end")}async quit(){if(this.destroying||this.statusOverride==="end")return setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK";this.destroying=!0;try{if(this.raw.isOpen)try{await this.raw.quit()}catch{}}catch{}return this.statusOverride="end",setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"}duplicate(...e){let r=this.raw.duplicate(),n=new t(r);for(let[s,o]of this.scripts)n.scripts.set(s,o),n[s]=(...a)=>n.runCommand(s,a);let i=e[0];return i&&typeof i=="object"&&i.connectionName&&(n.connectionName=i.connectionName),n}defineCommand(e,r){let n=(0,cke.createHash)("sha1").update(r.lua).digest("hex");this.scripts.set(e,{sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys}),this[e]=(...i)=>this.runCommand(e,i),this.raw.scriptLoad(r.lua).catch(()=>{})}async runCommand(e,r){var n,i;let s=this.scripts.get(e);if(!s)throw new Error(`BullMQ: unknown command "${e}"`);let o=m5(r),{sha:a,lua:c,numberOfKeys:l}=s,u=o.slice(0,l).map(String),d=o.slice(l).map(p=>Buffer.isBuffer(p)?p:p==null?"":String(p));try{return await this.raw.evalSha(a,{keys:u,arguments:d})}catch(p){if(this.destroying&&gi(p))return null;if(gi(p))throw new Ab.ConnectionClosedError(p.message,p);if(!((i=(n=p?.message)===null||n===void 0?void 0:n.includes)===null||i===void 0)&&i.call(n,"NOSCRIPT"))try{return await this.raw.eval(c,{keys:u,arguments:d})}catch(f){if(this.destroying&&gi(f))return null;throw gi(f)?new Ab.ConnectionClosedError(f.message,f):f}throw p}}multi(){return new nk(this.raw.multi(),this.scripts)}pipeline(){return this.multi()}async hgetall(e){let r=await this.raw.hGetAll(e);return r??{}}async hget(e,r){var n;return(n=await this.raw.hGet(e,r))!==null&&n!==void 0?n:null}async hmget(e,...r){return(await this.raw.hmGet(e,r)).map(i=>i??null)}async hset(e,r,...n){if(typeof r=="object")return await this.raw.hSet(e,r);let i={};i[r]=String(n[0]);for(let s=1;s<n.length;s+=2)i[String(n[s])]=String(n[s+1]);return await this.raw.hSet(e,i)}async hdel(e,...r){return await this.raw.hDel(e,r)}async hexists(e,r){return await this.raw.hExists(e,r)?1:0}async get(e){var r;return(r=await this.raw.get(e))!==null&&r!==void 0?r:null}async set(e,r,n){let i={};return n?.PX!=null?i.PX=n.PX:n?.EX!=null&&(i.EX=n.EX),await this.raw.set(e,String(r),i)}async del(...e){return e.length===0?0:await this.raw.del(e)}async zrange(e,r,n,i){if(i?.WITHSCORES){let s=await this.raw.zRangeWithScores(e,r,n),o=[];for(let a of s)o.push(a.value,String(a.score));return o}return await this.raw.zRange(e,r,n)}async zrevrange(e,r,n,i){if(i?.WITHSCORES){let s=await this.raw.zRangeWithScores(e,r,n,{REV:!0}),o=[];for(let a of s)o.push(a.value,String(a.score));return o}return await this.raw.zRange(e,r,n,{REV:!0})}async zcard(e){return await this.raw.zCard(e)}async zscore(e,r){let n=await this.raw.zScore(e,r);return n!=null?String(n):null}async lrange(e,r,n){return await this.raw.lRange(e,r,n)}async llen(e){return await this.raw.lLen(e)}async ltrim(e,r,n){return await this.raw.lTrim(e,r,n),"OK"}async lpos(e,r){var n;return(n=await this.raw.lPos(e,r))!==null&&n!==void 0?n:null}async smembers(e){return await this.raw.sMembers(e)}async xadd(e,r,n,i){let s={};i?.MAXLEN!=null&&(s.TRIM={strategy:"MAXLEN",threshold:i.MAXLEN,strategyModifier:i.approximate===!1?void 0:"~"});let o={};for(let[a,c]of Object.entries(n))o[a]=String(c);return await this.raw.xAdd(e,r,o,s)}async xread(e,r){let n={};r?.BLOCK!=null&&(n.BLOCK=r.BLOCK),r?.COUNT!=null&&(n.COUNT=r.COUNT);let i=e.map(o=>({key:o.key,id:o.id})),s;try{s=await this.raw.xRead(i,n)}catch(o){if(this.destroying&&gi(o))return null;throw gi(o)?new Ab.ConnectionClosedError(o.message,o):o}return s?s.map(o=>[o.name,o.messages.map(a=>[a.id,Object.entries(a.message).flat()])]):null}async xtrim(e,r,n,i){let s=i?.approximate===!1?void 0:"~";return await this.raw.xTrim(e,r,n,{strategyModifier:s})}async bzpopmin(e,r){let n;try{n=await this.raw.bzPopMin(e,r)}catch(i){if(this.destroying&&gi(i))return null;throw gi(i)?new Ab.ConnectionClosedError(i.message,i):i}return n?[n.key,n.value,String(n.score)]:null}async info(){return await this.raw.info()}async clientSetName(e){return await this.raw.clientSetName(e)}async clientList(){return await this.raw.sendCommand(["CLIENT","LIST"])}async scan(e,r){let n={};r?.MATCH&&(n.MATCH=r.MATCH),r?.COUNT&&(n.COUNT=r.COUNT);let i=await this.raw.scan(String(e),n);return[String(i.cursor),i.keys]}scanStream(e){let r=this.raw,n=this.connectPromise,i={};e.match&&(i.MATCH=e.match),e.count&&(i.COUNT=e.count);let s=new uke.Readable({objectMode:!0,async read(){var o,a,c,l;try{n&&await n;try{for(var u=!0,d=ake.__asyncValues(r.scanIterator(i)),p;p=await d.next(),o=p.done,!o;u=!0){l=p.value,u=!1;let f=l;if(!s.push(Array.isArray(f)?f:[f]))return}}catch(f){a={error:f}}finally{try{!u&&!o&&(c=d.return)&&await c.call(d)}finally{if(a)throw a.error}}s.push(null)}catch(f){s.destroy(f)}}});return s}async keys(e){return await this.raw.keys(e)}async exists(...e){return e.length===0?0:await this.raw.exists(e)}async zadd(e,...r){let n=[];for(let i=0;i<r.length;i+=2)n.push({score:Number(r[i]),value:String(r[i+1])});return await this.raw.zAdd(e,n)}async zrem(e,...r){return await this.raw.zRem(e,r)}async xlen(e){return await this.raw.xLen(e)}async xrevrange(e,r,n,...i){let s={};return i[0]==="COUNT"&&(s.COUNT=Number(i[1])),(await this.raw.xRevRange(e,r,n,s)).map(a=>[a.id,Object.entries(a.message).flat()])}async sadd(e,...r){return await this.raw.sAdd(e,r.map(String))}async scard(e){return await this.raw.sCard(e)}async lpush(e,...r){return await this.raw.lPush(e,r)}async rpop(e){return await this.raw.rPop(e)}async incr(e){return await this.raw.incr(e)}async incrby(e,r){return await this.raw.incrBy(e,r)}async flushall(){return await this.raw.flushAll()}},nk=class{constructor(e,r){this.raw=e,this.scripts=r,this.transformers=[]}addIdentityTransformer(){this.transformers.push(e=>e)}hgetall(e){return this.raw.hGetAll(e),this.addIdentityTransformer(),this}hset(e,r){return this.raw.hSet(e,r),this.addIdentityTransformer(),this}hscan(e,r,n){let i={};return n?.COUNT!=null&&(i.COUNT=n.COUNT),this.raw.hScan(e,String(r),i),this.transformers.push(s=>{if(!s)return["0",[]];let o=[];for(let a of s.entries||[])o.push(a.field,a.value);return[String(s.cursor),o]}),this}smembers(e){return this.raw.sMembers(e),this.addIdentityTransformer(),this}sscan(e,r,n){let i={};return n?.COUNT!=null&&(i.COUNT=n.COUNT),this.raw.sScan(e,String(r),i),this.transformers.push(s=>s?[String(s.cursor),s.members||[]]:["0",[]]),this}zrange(e,r,n){return this.raw.zRange(e,r,n),this.addIdentityTransformer(),this}lrange(e,r,n){return this.raw.lRange(e,r,n),this.addIdentityTransformer(),this}llen(e){return this.raw.lLen(e),this.addIdentityTransformer(),this}del(...e){return e.length>0&&(this.raw.del(e),this.addIdentityTransformer()),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}" in transaction`);let i=m5(r),{sha:s,lua:o,numberOfKeys:a}=n,c=i.slice(0,a).map(String),l=i.slice(a).map(u=>Buffer.isBuffer(u)?u:u==null?"":String(u));return this.raw.evalSha(s,{keys:c,arguments:l}),this.addIdentityTransformer(),this}async exec(){let e=await this.raw.exec();return e?e.map((r,n)=>{if(r instanceof Error)return[r,null];let i=this.transformers[n];return[null,i?i(r):r]}):null}}});var b5=y(ok=>{"use strict";Object.defineProperty(ok,"__esModule",{value:!0});ok.createBunRedisClient=yke;var pke=require("crypto"),fke=require("events"),mke=require("stream"),y5=Zo();function g5(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function hke(t){var e;let r=(e=t?.message)!==null&&e!==void 0?e:"";return r==="Socket closed unexpectedly"||r.startsWith("Connection closed")||r==="Connection is closed."||r==="Connection has failed"}function kb(t){return t==null?[]:Array.isArray(t)?t.map(String):t instanceof Set?Array.from(t,e=>String(e)):[]}function yke(t,e){return new sk(t,e)}var sk=class t extends fke.EventEmitter{get status(){return this.statusOverride?this.statusOverride:this.closed?"end":this.raw.connected?"ready":this.hasConnected?"end":"wait"}set status(e){e==="end"&&(this.closing=!0,this.closed=!0),this.statusOverride=e}get options(){return{}}set options(e){}constructor(e,r){super(),this.raw=e,this.scripts=new Map,this.loadedScriptShas=new Set,this.hasConnected=!1,this.closed=!1,this.closing=!1,this.reconnecting=!1,this.reconnectTimer=null,this.reconnectAttempts=0,this.maxReconnectDelay=2e4,this.isCluster=!1,this._setupCallbacks(),r?.lazyConnect||this.connect().catch(()=>{})}_setupCallbacks(){this.raw.onconnect=()=>{this.hasConnected=!0,this.closed=!1,this.closing=!1,this.reconnecting=!1,this.reconnectAttempts=0,this.statusOverride=void 0,this.loadedScriptShas.clear(),this.connectionName?this.clientSetName(this.connectionName).then(()=>this.emit("ready"),()=>this.emit("ready")):this.emit("ready")},this.raw.onclose=e=>{if(this.closing){this.closed=!0,this.emit("close"),this.emit("end");return}this.closed=!0,this.emit("close"),e&&this.emit("error",e),this._scheduleReconnect()}}_scheduleReconnect(){if(this.closing||this.reconnecting)return;this.reconnecting=!0,this.reconnectAttempts++;let e=Math.max(Math.min(Math.exp(this.reconnectAttempts)*100,this.maxReconnectDelay),1e3);this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,this.closing){this.reconnecting=!1;return}try{let r=this.raw.constructor,n=new r(this.raw.url);this.raw=n,this.closed=!1,this.connecting=void 0,this._setupCallbacks(),await n.connect()}catch{this.reconnecting=!1,this.closing||this._scheduleReconnect()}},e)}async connect(){let e=this.hasConnected&&(this.closed||!this.raw.connected);if(this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnecting=!1,this.raw.connected&&!e){this.hasConnected=!0,this.closed=!1,this.closing=!1,this.statusOverride=void 0;return}if(!this.connecting){if(this.closed=!1,this.closing=!1,this.statusOverride=void 0,e){let r=this.raw.constructor;this.raw=new r(this.raw.url),this._setupCallbacks()}this.connecting=this.raw.connect().then(()=>{this.hasConnected=!0,this.closed=!1,this.closing=!1,this.statusOverride=void 0}).finally(()=>{this.connecting=void 0})}await this.connecting}_closeRaw(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnecting=!1;let e=this.raw;e.onconnect=()=>{},e.onclose=()=>{},e.onerror=()=>{},e.connected&&setImmediate(()=>{try{e.connected&&e.close()}catch{}})}disconnect(e){if(!(this.closed&&!e))if(e){this.closed=!0,this.statusOverride=void 0;let r=this.raw;r.onclose=()=>{},r.connected&&setImmediate(()=>{try{r.connected&&r.close()}catch{}}),this.emit("close"),this._scheduleReconnect()}else this.closing=!0,this.closed=!0,this.statusOverride="end",this._closeRaw(),this.emit("close"),this.emit("end")}async quit(){return this.closed?(setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"):(this.closing=!0,this.closed=!0,this.statusOverride="end",this._closeRaw(),setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK")}duplicate(...e){let r=this.raw.constructor,n=new r(this.raw.url),i=new t(n);for(let[o,a]of this.scripts)i.scripts.set(o,a),i[o]=(...c)=>i.runCommand(o,c);let s=e[0];return s&&typeof s=="object"&&s.connectionName&&(i.connectionName=s.connectionName),i}defineCommand(e,r){let n=(0,pke.createHash)("sha1").update(r.lua).digest("hex");this.scripts.set(e,{sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys}),this[e]=(...i)=>this.runCommand(e,i)}async runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}"`);let i=g5(r),{sha:s,lua:o,numberOfKeys:a}=n,c=i.slice(0,a).map(String),l=i.slice(a).map(p=>Buffer.isBuffer(p)?p:p==null?"":String(p)),u=[s,String(c.length),...c,...l];return(async()=>{var p,f;try{let m=await this.sendCommand("EVALSHA",u);return this.loadedScriptShas.add(s),m}catch(m){if(!((f=(p=m?.message)===null||p===void 0?void 0:p.includes)===null||f===void 0)&&f.call(p,"NOSCRIPT")){let h=[o,String(c.length),...c,...l],b=await this.sendCommand("EVAL",h);return this.loadedScriptShas.add(s),b}throw m}})()}async ensureScriptsLoaded(e){let r=[],n=new Set;for(let i of e)this.loadedScriptShas.has(i.sha)||n.has(i.sha)||(n.add(i.sha),r.push(i));r.length!==0&&await Promise.all(r.map(async i=>{await this.sendCommand("SCRIPT",["LOAD",i.lua]),this.loadedScriptShas.add(i.sha)}))}sendCommand(e,r){return this.closing||this.closed?Promise.reject(new y5.ConnectionClosedError("Connection is closed")):this.raw.send(e,r).catch(n=>{if(hke(n))return this.closing||this.closed?null:Promise.reject(new y5.ConnectionClosedError(n.message,n));throw n})}multi(){return new Rb(this.raw,this.scripts,!0,this)}pipeline(){return new Rb(this.raw,this.scripts,!1,this)}async hgetall(e){let r=await this.sendCommand("HGETALL",[e]);if(!r||Array.isArray(r)&&r.length===0)return{};if(Array.isArray(r)){let n={};for(let i=0;i<r.length;i+=2)n[String(r[i])]=String(r[i+1]);return n}return r}async hget(e,r){let n=await this.sendCommand("HGET",[e,r]);return n??null}async hmget(e,...r){return(await this.sendCommand("HMGET",[e,...r])||[]).map(i=>i??null)}async hset(e,r,...n){let i;if(typeof r=="object"){i=[e];for(let[s,o]of Object.entries(r))i.push(s,String(o))}else{i=[e,r,String(n[0])];for(let s=1;s<n.length;s+=2)i.push(String(n[s]),String(n[s+1]))}return await this.sendCommand("HSET",i)}async hdel(e,...r){return await this.sendCommand("HDEL",[e,...r])}async hexists(e,r){let n=await this.sendCommand("HEXISTS",[e,r]);return n===!0||n===1?1:0}async get(e){let r=await this.sendCommand("GET",[e]);return r??null}async set(e,r,n){let i=[e,String(r)];return n?.PX!=null?i.push("PX",String(n.PX)):n?.EX!=null&&i.push("EX",String(n.EX)),await this.sendCommand("SET",i)}async del(...e){return e.length===0?0:await this.sendCommand("DEL",e)}async zrange(e,r,n,i){let s=[e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.sendCommand("ZRANGE",s);return o?i?.WITHSCORES&&o.length>0&&Array.isArray(o[0])?o.flatMap(a=>[String(a[0]),String(a[1])]):o.map(String):[]}async zrevrange(e,r,n,i){let s=[e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES"),s.push("REV");let o=await this.sendCommand("ZRANGE",s);return o?i?.WITHSCORES&&o.length>0&&Array.isArray(o[0])?o.flatMap(a=>[String(a[0]),String(a[1])]):o.map(String):[]}async zcard(e){return await this.sendCommand("ZCARD",[e])}async zscore(e,r){let n=await this.sendCommand("ZSCORE",[e,r]);return n!=null?String(n):null}async lrange(e,r,n){return(await this.sendCommand("LRANGE",[e,String(r),String(n)])||[]).map(String)}async llen(e){return await this.sendCommand("LLEN",[e])}async ltrim(e,r,n){return await this.sendCommand("LTRIM",[e,String(r),String(n)]),"OK"}async lpos(e,r){let n=await this.sendCommand("LPOS",[e,r]);return n??null}async smembers(e){let r=await this.sendCommand("SMEMBERS",[e]);return kb(r)}async xadd(e,r,n,i){let s=[e];i?.MAXLEN!=null&&(s.push("MAXLEN"),i.approximate!==!1&&s.push("~"),s.push(String(i.MAXLEN))),s.push(r);for(let[o,a]of Object.entries(n))s.push(o,String(a));return await this.raw.send("XADD",s)}async xread(e,r){let n=[];r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),r?.BLOCK!=null&&n.push("BLOCK",String(r.BLOCK)),n.push("STREAMS");for(let s of e)n.push(s.key);for(let s of e)n.push(s.id);let i;try{i=await this.sendCommand("XREAD",n)}catch(s){if(this.closing)return null;throw s}return i?Array.isArray(i)?i.map(s=>{let o=String(s[0]),a=(s[1]||[]).map(c=>{let l=String(c[0]),u=(c[1]||[]).map(String);return[l,u]});return[o,a]}):Object.entries(i).map(([s,o])=>{let a=(o||[]).map(c=>{let l=String(c[0]),u=(c[1]||[]).map(String);return[l,u]});return[s,a]}):null}async xtrim(e,r,n,i){let s=[e,r];return i?.approximate!==!1&&s.push("~"),s.push(String(n)),await this.sendCommand("XTRIM",s)}async bzpopmin(e,r){let n;try{n=await this.sendCommand("BZPOPMIN",[e,String(r)])}catch(i){if(this.closing)return null;throw i}return!n||n.length===0?null:[String(n[0]),String(n[1]),String(n[2])]}async info(){return await this.sendCommand("INFO",[])}async clientSetName(e){return await this.sendCommand("CLIENT",["SETNAME",e])}async clientList(){return await this.sendCommand("CLIENT",["LIST"])}async scan(e,r){let n=[String(e)];r?.MATCH&&n.push("MATCH",r.MATCH),r?.COUNT&&n.push("COUNT",String(r.COUNT));let i=await this.sendCommand("SCAN",n),s=i[1];return[String(i[0]),Array.isArray(s)?s.map(String):[]]}scanStream(e){let r=this,n="0",i=!1,s=new mke.Readable({objectMode:!0,async read(){if(i&&n==="0"){s.push(null);return}i=!0;try{for(;;){let[o,a]=await r.scan(n,{MATCH:e.match,COUNT:e.count});if(n=o,a.length>0){s.push(a),n==="0"&&s.push(null);return}if(n==="0"){s.push(null);return}}}catch(o){s.destroy(o)}}});return s}async keys(e){return(await this.sendCommand("KEYS",[e])||[]).map(String)}async exists(...e){if(e.length===0)return 0;let r=await this.sendCommand("EXISTS",e);return typeof r=="boolean"?r?1:0:r}async zadd(e,...r){let n=[e];for(let i=0;i<r.length;i+=2)n.push(String(r[i]),String(r[i+1]));return await this.sendCommand("ZADD",n)}async zrem(e,...r){return await this.sendCommand("ZREM",[e,...r])}async xlen(e){return await this.sendCommand("XLEN",[e])}async xrevrange(e,r,n,...i){let s=[e,r,n];i[0]==="COUNT"&&s.push("COUNT",String(i[1]));let o=await this.sendCommand("XREVRANGE",s);return o?o.map(a=>[String(a[0]),(a[1]||[]).map(String)]):[]}async sadd(e,...r){return await this.sendCommand("SADD",[e,...r.map(String)])}async scard(e){return await this.sendCommand("SCARD",[e])}async lpush(e,...r){return await this.sendCommand("LPUSH",[e,...r])}async rpop(e){let r=await this.sendCommand("RPOP",[e]);return r??null}async incr(e){return await this.sendCommand("INCR",[e])}async incrby(e,r){return await this.sendCommand("INCRBY",[e,String(r)])}async flushall(){return await this.sendCommand("FLUSHALL",[])}},Rb=class{constructor(e,r,n,i){this.raw=e,this.scripts=r,this.transactional=n,this.adapter=i,this.commands=[],this.transformers=[],this.scriptsToLoad=[]}addCommand(e,r,n){this.commands.push({cmd:e,args:r}),this.transformers.push(n||(i=>i))}hgetall(e){return this.addCommand("HGETALL",[e],r=>{if(!r||Array.isArray(r)&&r.length===0)return{};if(Array.isArray(r)){let n={};for(let i=0;i<r.length;i+=2)n[String(r[i])]=String(r[i+1]);return n}return r}),this}hset(e,r){let n=[e];for(let[i,s]of Object.entries(r))n.push(i,String(s));return this.addCommand("HSET",n),this}hscan(e,r,n){let i=[e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.addCommand("HSCAN",i,s=>s?Array.isArray(s)?[String(s[0]),kb(s[1])]:["0",[]]:["0",[]]),this}smembers(e){return this.addCommand("SMEMBERS",[e],r=>kb(r)),this}sscan(e,r,n){let i=[e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.addCommand("SSCAN",i,s=>s?Array.isArray(s)?[String(s[0]),kb(s[1])]:["0",[]]:["0",[]]),this}zrange(e,r,n){return this.addCommand("ZRANGE",[e,String(r),String(n)],i=>Array.isArray(i)?i.map(String):[]),this}lrange(e,r,n){return this.addCommand("LRANGE",[e,String(r),String(n)],i=>Array.isArray(i)?i.map(String):[]),this}llen(e){return this.addCommand("LLEN",[e]),this}del(...e){return e.length>0&&this.addCommand("DEL",e),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}" in transaction`);let i=g5(r),{sha:s,numberOfKeys:o}=n,a=i.slice(0,o).map(String),c=i.slice(o).map(l=>Buffer.isBuffer(l)?l:l==null?"":String(l));return this.scriptsToLoad.push(n),this.addCommand("EVALSHA",[s,String(a.length),...a,...c]),this}async exec(){if(this.commands.length===0)return[];if(this.scriptsToLoad.length>0&&await this.adapter.ensureScriptsLoaded(this.scriptsToLoad),!this.transactional)return(await Promise.allSettled(this.commands.map(({cmd:n,args:i})=>this.adapter.sendCommand(n,i)))).map((n,i)=>{if(n.status==="rejected")return[n.reason,null];let s=this.transformers[i];return[null,s?s(n.value):n.value]});let e=r=>{};try{this.raw.send("MULTI",[]).catch(e);for(let{cmd:n,args:i}of this.commands)this.raw.send(n,i).catch(e);let r=await this.raw.send("EXEC",[]);return r?r.map((n,i)=>{if(n instanceof Error)return[n,null];let s=this.transformers[i];return[null,s?s(n):n]}):null}catch(r){try{await this.raw.send("DISCARD",[])}catch{}throw r}}}});var x5=y(uk=>{"use strict";Object.defineProperty(uk,"__esModule",{value:!0});uk.createValkeyGlideClient=Tke;var gke=require("crypto"),bke=require("events"),vke=require("stream"),Ob=Zo(),Yd=1;function Eke(){return{commands:[],customCommand(t){this.commands.push(t)}}}function Ske(t){try{let{Batch:e}=require("@valkey/valkey-glide");return typeof e=="function"?new e(t):null}catch{return null}}function E5(t){return Buffer.isBuffer(t)}function yn(t){return E5(t)?t:t==null?"":String(t)}function H(t){return E5(t)?t.toString():String(t)}function gl(t){return Array.isArray(t)&&t.every(e=>e&&typeof e=="object"&&"key"in e&&"value"in e)}function S5(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function _5(t){if(!t)return{};if(gl(t))return t.reduce((e,r)=>(e[H(r.key)]=H(r.value),e),{});if(t instanceof Map){let e={};for(let[r,n]of t.entries())e[H(r)]=H(n);return e}if(Array.isArray(t)){let e={};for(let r=0;r<t.length;r+=2)e[H(t[r])]=H(t[r+1]);return e}if(typeof t=="object"){let e={};for(let[r,n]of Object.entries(t))e[r]=H(n);return e}return{}}function lk(t){return t?Array.isArray(t)?gl(t)?t.flatMap(e=>[H(e.key),H(e.value)]):t.every(e=>Array.isArray(e)&&e.length===2)?t.flatMap(e=>{let[r,n]=e;return[H(r),H(n)]}):t.map(e=>H(e)):typeof t=="object"?Object.entries(t).flatMap(([e,r])=>[e,H(r)]):[]:[]}function _ke(t){return t?Array.isArray(t)&&t.every(e=>Array.isArray(e)&&e.length===2&&typeof e[0]<"u"&&Array.isArray(e[1]))||!gl(t)?t:t.map(e=>{let r=H(e.key),n=gl(e.value)?e.value.map(i=>[H(i.key),lk(i.value)]):[];return[r,n]}):null}function xke(t){if(Array.isArray(t)&&t.length>=2){let[e,r]=t,n=Array.isArray(r)?r.map(i=>H(i)):[];return[H(e),n]}if(t&&typeof t=="object"){let e=t;if(e.cursor!==void 0&&Array.isArray(e.keys))return[H(e.cursor),e.keys.map(r=>H(r))]}return["0",[]]}function wke(t){return t?Array.isArray(t)&&t.every(e=>Array.isArray(e)&&e.length===2&&typeof e[0]<"u"&&Array.isArray(e[1]))?t.map(([e,r])=>[H(e),r.map(n=>H(n))]):gl(t)?t.map(e=>[H(e.key),lk(e.value)]):[]:[]}function v5(t,e=!1){return Array.isArray(t)?e?gl(t)?t.flatMap(r=>[H(r.key),H(r.value)]):t.every(r=>Array.isArray(r)&&r.length>=2&&r[0]!==void 0)?t.flatMap(r=>[H(r[0]),H(r[1])]):t.map(r=>H(r)):t.map(r=>H(r)):[]}function Ike(t){let[e,...r]=t,n=H(e).toUpperCase();if(n==="BZPOPMIN")return!0;if(n!=="XREAD")return!1;for(let i=0;i<r.length;i+=2)if(H(r[i]).toUpperCase()==="BLOCK")return!0;return!1}function Tke(t){return new ak(t)}var ak=class t extends bke.EventEmitter{constructor(e,r){super(),this.connectionName=r,this.scripts=new Map,this.scriptsBySha=new Map,this.scriptLoadPromises=new Map,this.readyEmitted=!1,this.closed=!1,this.operationChain=Promise.resolve(),this.activeBlockingCommands=0,e instanceof Promise?(this.rawPromise=e,this.connect().catch(n=>this.emit("error",n))):this.raw=e}get status(){return this.statusOverride?this.statusOverride:this.closed?"end":this.readyEmitted?"ready":"wait"}set status(e){e==="end"&&this.disconnect(),this.statusOverride=e}get isCluster(){var e,r,n;return((n=(r=(e=this.raw)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.name)!==null&&n!==void 0?n:"").includes("Cluster")}get options(){var e,r,n,i;return(i=(r=(e=this.raw)===null||e===void 0?void 0:e.config)!==null&&r!==void 0?r:(n=this.raw)===null||n===void 0?void 0:n.options)!==null&&i!==void 0?i:{}}set options(e){}ensureOpen(){if(this.closed)throw new Ob.ConnectionClosedError}normalizeError(e){throw e instanceof Ob.ConnectionClosedError||e instanceof Error&&e.name==="ClosingError"?new Ob.ConnectionClosedError(e.message,e):e}async ensureRaw(){if(this.raw)return this.raw;if(!this.rawPromise)throw new Error("BullMQ: Valkey Glide client not initialized - missing raw client and client promise. Please report this as a bug.");return this.raw=await this.rawPromise,this.raw}async runSerialized(e){this.ensureOpen();let r=this.operationChain,n;this.operationChain=new Promise(i=>{n=i}),await r,this.ensureOpen();try{let i=await this.ensureRaw();return this.ensureOpen(),await e(i)}catch(i){this.normalizeError(i)}finally{n()}}async runRawCommand(e,r){let n=Ike(e);return this.runSerialized(async i=>{n&&this.activeBlockingCommands++;try{return await i.customCommand(e,r)}finally{n&&this.activeBlockingCommands--}})}ensureScriptLoaded(e){let r=this.scriptLoadPromises.get(e.sha);return r||(r=this.runRawCommand(["SCRIPT","LOAD",e.lua]).then(()=>{}).catch(()=>{}),this.scriptLoadPromises.set(e.sha,r)),r}async applyConnectionNameIfNeeded(){this.connectionName&&await this.runRawCommand(["CLIENT","SETNAME",this.connectionName],{decoder:Yd})}async clearConnectionNameIfNeeded(e){if(this.connectionName)try{await e.customCommand(["CLIENT","SETNAME",""],{decoder:Yd})}catch{}}async recreateRaw(){var e,r;let n=await this.ensureRaw(),i=n.constructor,s=(e=i?.createClient)===null||e===void 0?void 0:e.bind(i),o=(r=n.config)!==null&&r!==void 0?r:n.options;if(!s||!o)throw new Error("BullMQ: Cannot recreate Valkey Glide client: missing createClient() method or config object. Ensure the client was created via GlideClient.createClient() or GlideClusterClient.createClient().");this.raw=await s(o),this.scriptLoadPromises.clear()}async connect(){return this.connecting?this.connecting:(this.connecting=(async()=>{this.closed&&this.raw&&await this.recreateRaw(),this.closed=!1,this.statusOverride=void 0,await this.ensureRaw();try{await this.applyConnectionNameIfNeeded()}catch(e){if(this.closed&&e instanceof Ob.ConnectionClosedError)return;throw e}this.closed||(this.readyEmitted=!0,this.emit("ready"))})().finally(()=>{this.connecting=void 0}),this.connecting)}closeRaw(){if(!this.closingPromise){let e=()=>{if(this.raw)try{this.raw.close()}catch{}};this.closingPromise=(this.activeBlockingCommands>0?Promise.resolve().then(e):this.operationChain.catch(()=>{}).then(async()=>{this.closed&&(this.raw&&await this.clearConnectionNameIfNeeded(this.raw),e())})).finally(()=>{this.closingPromise=void 0})}return this.closingPromise}disconnect(e=!1){if(!(this.closed&&!e)){if(this.closed=!0,this.readyEmitted=!1,this.statusOverride=e?void 0:"end",this.emit("close"),e){this.closeRaw().then(()=>(this.emit("reconnecting"),this.connect())).catch(r=>this.emit("error",r));return}this.closeRaw(),this.emit("end")}}async quit(){return this.closed?(setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"):(this.closed=!0,this.readyEmitted=!1,this.statusOverride="end",this.closeRaw(),setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK")}duplicate(...e){var r;let n=(r=e[0])!==null&&r!==void 0?r:{},i=(async()=>{var s,o;let a=await this.ensureRaw(),c=a.constructor,l=(s=c?.createClient)===null||s===void 0?void 0:s.bind(c),u=(o=a.config)!==null&&o!==void 0?o:a.options;if(!l||!u)throw new Error("BullMQ: Cannot duplicate Valkey Glide client: missing createClient() or config. Ensure the client was created via GlideClient.createClient()/GlideClusterClient.createClient().");return l(u)})();return new t(i,n.connectionName)}defineCommand(e,r){let n=(0,gke.createHash)("sha1").update(r.lua).digest("hex"),i={sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys};this.scripts.set(e,i),this.scriptsBySha.set(n,i),this[e]=(...s)=>this.runCommand(e,s),this.ensureScriptLoaded(i)}async runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: command "${e}" is not defined. Use defineCommand() before runCommand().`);let i=S5(r),s=i.slice(0,n.numberOfKeys).map(yn),o=i.slice(n.numberOfKeys).map(yn),a=["EVALSHA",n.sha,String(n.numberOfKeys),...s,...o];try{return await this.runRawCommand(a)}catch(c){if(typeof c?.message=="string"&&c.message.toLowerCase().includes("noscript"))return this.runRawCommand(["EVAL",n.lua,String(n.numberOfKeys),...s,...o]);throw c}}multi(){return new ck(this,this.scripts)}pipeline(){return this.multi()}async hgetall(e){return _5(await this.runRawCommand(["HGETALL",e]))}async hget(e,r){let n=await this.runRawCommand(["HGET",e,r]);return n==null?null:H(n)}async hmget(e,...r){let n=await this.runRawCommand(["HMGET",e,...r]);return Array.isArray(n)?n.map(i=>i==null?null:H(i)):[]}async hset(e,r){let n=["HSET",e];for(let[i,s]of Object.entries(r))n.push(i,yn(s));return Number(await this.runRawCommand(n))}async hdel(e,...r){return Number(await this.runRawCommand(["HDEL",e,...r]))}async hexists(e,r){let n=await this.runRawCommand(["HEXISTS",e,r]);return typeof n=="boolean"?n?1:0:Number(n)}async get(e){let r=await this.runRawCommand(["GET",e]);return r==null?null:H(r)}async set(e,r,n){let i=["SET",e,yn(r)];n?.PX!=null?i.push("PX",String(n.PX)):n?.EX!=null&&i.push("EX",String(n.EX));let s=await this.runRawCommand(i);return s==null?null:H(s)}async del(...e){return e.length===0?0:Number(await this.runRawCommand(["DEL",...e]))}async zrange(e,r,n,i){let s=["ZRANGE",e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.runRawCommand(s);return v5(o,i?.WITHSCORES)}async zrevrange(e,r,n,i){let s=["ZREVRANGE",e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.runRawCommand(s);return v5(o,i?.WITHSCORES)}async zcard(e){return Number(await this.runRawCommand(["ZCARD",e]))}async zscore(e,r){let n=await this.runRawCommand(["ZSCORE",e,r]);return n==null?null:H(n)}async lrange(e,r,n){let i=await this.runRawCommand(["LRANGE",e,String(r),String(n)]);return Array.isArray(i)?i.map(H):[]}async llen(e){return Number(await this.runRawCommand(["LLEN",e]))}async ltrim(e,r,n){let i=await this.runRawCommand(["LTRIM",e,String(r),String(n)]);return i==null?"OK":H(i)}async lpos(e,r){let n=await this.runRawCommand(["LPOS",e,r]);return n==null?null:Number(n)}async smembers(e){let r=await this.runRawCommand(["SMEMBERS",e]);return Array.isArray(r)?r.map(H):[]}async xadd(e,r,n,i){let s=["XADD",e];i?.MAXLEN!=null&&(s.push("MAXLEN"),i.approximate!==!1&&s.push("~"),s.push(String(i.MAXLEN))),s.push(r);for(let[o,a]of Object.entries(n))s.push(o,yn(a));return H(await this.runRawCommand(s))}async xread(e,r){let n=["XREAD"];r?.BLOCK!=null&&n.push("BLOCK",String(r.BLOCK)),r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),n.push("STREAMS");for(let i of e)n.push(i.key);for(let i of e)n.push(i.id);return _ke(await this.runRawCommand(n))}async xtrim(e,r,n,i){let s=["XTRIM",e,r];return i?.approximate!==!1&&s.push("~"),s.push(String(n)),Number(await this.runRawCommand(s))}async bzpopmin(e,r){let n=await this.runRawCommand(["BZPOPMIN",e,String(r)]);return n&&Array.isArray(n)&&n.length>=3?[H(n[0]),H(n[1]),H(n[2])]:null}async info(){return H(await this.runRawCommand(["INFO"]))}async clientSetName(e){return this.runRawCommand(["CLIENT","SETNAME",e],{decoder:Yd})}async clientList(){return H(await this.runRawCommand(["CLIENT","LIST"],{decoder:Yd}))}async scan(e,r){let n=["SCAN",String(e)];return r?.MATCH&&n.push("MATCH",r.MATCH),r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),xke(await this.runRawCommand(n))}scanStream(e){let r="0",n=!1,i=new vke.Readable({objectMode:!0,read:()=>{n||(n=!0,(async()=>{do{let[s,o]=await this.scan(r,{MATCH:e.match,COUNT:e.count});if(r=s,o.length>0&&!i.push(o))return}while(r!=="0");i.push(null)})().catch(s=>i.destroy(s)).finally(()=>{n=!1}))}});return i}async keys(e){let r=await this.runRawCommand(["KEYS",e]);return Array.isArray(r)?r.map(H):[]}async exists(...e){if(e.length===0)return 0;let r=await this.runRawCommand(["EXISTS",...e]);return typeof r=="boolean"?r?1:0:Number(r)}async zadd(e,...r){let n=["ZADD",e];for(let i=0;i<r.length;i+=2)n.push(yn(r[i]),yn(r[i+1]));return Number(await this.runRawCommand(n))}async zrem(e,...r){return Number(await this.runRawCommand(["ZREM",e,...r]))}async xlen(e){return Number(await this.runRawCommand(["XLEN",e]))}async xrevrange(e,r,n,...i){let s=["XREVRANGE",e,r,n];return i[0]==="COUNT"&&s.push("COUNT",yn(i[1])),wke(await this.runRawCommand(s))}async sadd(e,...r){return Number(await this.runRawCommand(["SADD",e,...r.map(n=>yn(n))]))}async scard(e){return Number(await this.runRawCommand(["SCARD",e]))}async lpush(e,...r){return Number(await this.runRawCommand(["LPUSH",e,...r]))}async rpop(e){let r=await this.runRawCommand(["RPOP",e]);return r==null?null:H(r)}async incr(e){return Number(await this.runRawCommand(["INCR",e]))}async incrby(e,r){return Number(await this.runRawCommand(["INCRBY",e,String(r)]))}async flushall(){let e=await this.runRawCommand(["FLUSHALL"]);return e==null?"OK":H(e)}async execQueuedCommands(e){let r=e.map(n=>String(n.args[0]).toUpperCase()==="EVALSHA"?this.scriptsBySha.get(H(n.args[1])):void 0).filter(n=>!!n);return r.length>0&&await Promise.all(r.map(n=>this.ensureScriptLoaded(n))),this.runSerialized(async n=>{if(typeof n.exec=="function"){let i=Ske(!0),s=i??Eke();if(s){for(let a of e)s.customCommand(a.args);let o;try{o=await n.exec(s,!1)}catch(a){if(i)throw a;o=null}if(o)return o.map((a,c)=>{var l;if(a instanceof Error)return[a,null];let u=(l=e[c])===null||l===void 0?void 0:l.transform;return[null,u?u(a):a]});if(i)return null}}await n.customCommand(["MULTI"]);try{for(let o of e)await n.customCommand(o.args,{decoder:Yd});let i=await n.customCommand(["EXEC"]);return i?(Array.isArray(i)?i:[i]).map((o,a)=>{var c;if(o instanceof Error)return[o,null];let l=(c=e[a])===null||c===void 0?void 0:c.transform;return[null,l?l(o):o]}):null}catch(i){try{await n.customCommand(["DISCARD"])}catch{}throw i}})}},ck=class{constructor(e,r){this.adapter=e,this.scripts=r,this.commands=[]}queueCommand(e,r){return this.commands.push({args:e,transform:r}),this}hgetall(e){return this.queueCommand(["HGETALL",e],_5)}hset(e,r){let n=["HSET",e];for(let[i,s]of Object.entries(r))n.push(i,yn(s));return this.queueCommand(n)}hscan(e,r,n){let i=["HSCAN",e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.queueCommand(i,s=>Array.isArray(s)&&s.length>=2?[H(s[0]),lk(s[1])]:["0",[]])}smembers(e){return this.queueCommand(["SMEMBERS",e],r=>Array.isArray(r)?r.map(n=>H(n)):[])}sscan(e,r,n){let i=["SSCAN",e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.queueCommand(i,s=>{if(Array.isArray(s)&&s.length>=2){let o=Array.isArray(s[1])?s[1].map(a=>H(a)):[];return[H(s[0]),o]}return["0",[]]})}zrange(e,r,n){return this.queueCommand(["ZRANGE",e,String(r),String(n)])}lrange(e,r,n){return this.queueCommand(["LRANGE",e,String(r),String(n)])}llen(e){return this.queueCommand(["LLEN",e])}del(...e){return e.length>0&&this.queueCommand(["DEL",...e]),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: command "${e}" is not defined. Use defineCommand() before adding it to transactions.`);let i=S5(r),s=i.slice(0,n.numberOfKeys).map(yn),o=i.slice(n.numberOfKeys).map(yn);return this.queueCommand(["EVALSHA",n.sha,String(n.numberOfKeys),...s,...o])}exec(){return this.adapter.execQueuedCommands(this.commands)}}});var ZH=y(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});var Xi=class extends Error{},Ek=class extends Xi{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Sk=class extends Xi{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},_k=class extends Xi{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Xs=class extends Xi{},Nb=class extends Xi{constructor(e){super(`Invalid unit ${e}`)}},Pt=class extends Xi{},bi=class extends Xi{constructor(){super("Zone is an abstract class")}},L="numeric",Un="short",$r="long",qb={year:L,month:L,day:L},eH={year:L,month:Un,day:L},Ake={year:L,month:Un,day:L,weekday:Un},tH={year:L,month:$r,day:L},rH={year:L,month:$r,day:L,weekday:$r},nH={hour:L,minute:L},iH={hour:L,minute:L,second:L},sH={hour:L,minute:L,second:L,timeZoneName:Un},oH={hour:L,minute:L,second:L,timeZoneName:$r},aH={hour:L,minute:L,hourCycle:"h23"},cH={hour:L,minute:L,second:L,hourCycle:"h23"},lH={hour:L,minute:L,second:L,hourCycle:"h23",timeZoneName:Un},uH={hour:L,minute:L,second:L,hourCycle:"h23",timeZoneName:$r},dH={year:L,month:L,day:L,hour:L,minute:L},pH={year:L,month:L,day:L,hour:L,minute:L,second:L},fH={year:L,month:Un,day:L,hour:L,minute:L},mH={year:L,month:Un,day:L,hour:L,minute:L,second:L},kke={year:L,month:Un,day:L,weekday:Un,hour:L,minute:L},hH={year:L,month:$r,day:L,hour:L,minute:L,timeZoneName:Un},yH={year:L,month:$r,day:L,hour:L,minute:L,second:L,timeZoneName:Un},gH={year:L,month:$r,day:L,weekday:$r,hour:L,minute:L,timeZoneName:$r},bH={year:L,month:$r,day:L,weekday:$r,hour:L,minute:L,second:L,timeZoneName:$r},eo=class{get type(){throw new bi}get name(){throw new bi}get ianaName(){return this.name}get isUniversal(){throw new bi}offsetName(e,r){throw new bi}formatOffset(e,r){throw new bi}offset(e){throw new bi}equals(e){throw new bi}get isValid(){throw new bi}},dk=null,rp=class t extends eo{static get instance(){return dk===null&&(dk=new t),dk}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return RH(e,r,n)}formatOffset(e,r){return tp(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},xk=new Map;function Rke(t){let e=xk.get(t);return e===void 0&&(e=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"}),xk.set(t,e)),e}var Oke={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Cke(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,s,o,a,c,l,u]=n;return[o,i,s,a,c,l,u]}function Pke(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:s,value:o}=r[i],a=Oke[s];s==="era"?n[a]=o:X(a)||(n[a]=parseInt(o,10))}return n}var pk=new Map,Zi=class t extends eo{static create(e){let r=pk.get(e);return r===void 0&&pk.set(e,r=new t(e)),r}static resetCache(){pk.clear(),xk.clear()}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:r,locale:n}){return RH(e,r,n,this.name)}formatOffset(e,r){return tp(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=Rke(this.name),[i,s,o,a,c,l,u]=n.formatToParts?Pke(n,r):Cke(n,r);a==="BC"&&(i=-Math.abs(i)+1);let p=zb({year:i,month:s,day:o,hour:c===24?0:c,minute:l,second:u,millisecond:0}),f=+r,m=f%1e3;return f-=m>=0?m:1e3+m,(p-f)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},w5={};function Mke(t,e={}){let r=JSON.stringify([t,e]),n=w5[r];return n||(n=new Intl.ListFormat(t,e),w5[r]=n),n}var wk=new Map;function Ik(t,e={}){let r=JSON.stringify([t,e]),n=wk.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),wk.set(r,n)),n}var Tk=new Map;function Dke(t,e={}){let r=JSON.stringify([t,e]),n=Tk.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),Tk.set(r,n)),n}var Ak=new Map;function jke(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),s=Ak.get(i);return s===void 0&&(s=new Intl.RelativeTimeFormat(t,e),Ak.set(i,s)),s}var Xd=null;function Kke(){return Xd||(Xd=new Intl.DateTimeFormat().resolvedOptions().locale,Xd)}var kk=new Map;function vH(t){let e=kk.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),kk.set(t,e)),e}var Rk=new Map;function Lke(t){let e=Rk.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...EH,...e}),Rk.set(t,e)}return e}function Nke(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let r=t.indexOf("-u-");if(r===-1)return[t];{let n,i;try{n=Ik(t).resolvedOptions(),i=t}catch{let c=t.substring(0,r);n=Ik(c).resolvedOptions(),i=c}let{numberingSystem:s,calendar:o}=n;return[i,s,o]}}function qke(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}function Uke(t){let e=[];for(let r=1;r<=12;r++){let n=tt.utc(2009,r,1);e.push(t(n))}return e}function Fke(t){let e=[];for(let r=1;r<=7;r++){let n=tt.utc(2016,11,13+r);e.push(t(n))}return e}function Cb(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}function $ke(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||vH(t.locale).numberingSystem==="latn"}var Ok=class{constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:s,...o}=n;if(!r||Object.keys(o).length>0){let a={useGrouping:!1,...n};n.padTo>0&&(a.minimumIntegerDigits=n.padTo),this.inf=Dke(e,a)}}format(e){if(this.inf){let r=this.floor?Math.floor(e):e;return this.inf.format(r)}else{let r=this.floor?Math.floor(e):Fk(e,3);return bt(r,this.padTo)}}},Ck=class{constructor(e,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let o=-1*(e.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Zi.create(a).valid?(i=a,this.dt=e):(i="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,i=e.zone.name):(i="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let s={...this.opts};s.timeZone=s.timeZone||i,this.dtf=Ik(r,s)}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(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Pk=class{constructor(e,r,n){this.opts={style:"long",...n},!r&&AH()&&(this.rtf=jke(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):lRe(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},EH={firstDay:1,minimalDays:4,weekend:[6,7]},$e=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,s=!1){let o=e||Ye.defaultLocale,a=o||(s?"en-US":Kke()),c=r||Ye.defaultNumberingSystem,l=n||Ye.defaultOutputCalendar,u=Dk(i)||Ye.defaultWeekSettings;return new t(a,c,l,u,o)}static resetCache(){Xd=null,wk.clear(),Tk.clear(),Ak.clear(),kk.clear(),Rk.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,s){let[o,a,c]=Nke(e);this.locale=o,this.numberingSystem=r||a||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=qke(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=$ke(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&r?"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,Dk(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,r=!1){return Cb(this,e,PH,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},s=r?"format":"standalone";if(!this.monthsCache[s][e]){let o=n?a=>this.dtFormatter(a,i).format():a=>this.extract(a,i,"month");this.monthsCache[s][e]=Uke(o)}return this.monthsCache[s][e]})}weekdays(e,r=!1){return Cb(this,e,jH,()=>{let n=r?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=r?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=Fke(s=>this.extract(s,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return Cb(this,void 0,()=>KH,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[tt.utc(2016,11,13,9),tt.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return Cb(this,e,LH,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[tt.utc(-40,1,1),tt.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),s=i.formatToParts(),o=s.find(a=>a.type.toLowerCase()===n);return o?o.value:null}numberFormatter(e={}){return new Ok(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new Ck(e,this.intl,r)}relFormatter(e={}){return new Pk(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Mke(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||vH(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:kH()?Lke(this.locale):EH}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}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},fk=null,Jr=class t extends eo{static get utcInstance(){return fk===null&&(fk=new t(0)),fk}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let r=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new t(Hb(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${tp(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${tp(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return tp(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}},Ub=class extends eo{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 Qs(t,e){if(X(t)||t===null)return e;if(t instanceof eo)return t;if(Vke(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?rp.instance:r==="utc"||r==="gmt"?Jr.utcInstance:Jr.parseSpecifier(r)||Zi.create(t)}else return Zs(t)?Jr.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new Ub(t)}var Lk={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"},I5={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]},Jke=Lk.hanidec.replace(/[\[|\]]/g,"").split("");function Gke(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(t[r].search(Lk.hanidec)!==-1)e+=Jke.indexOf(t[r]);else for(let i in I5){let[s,o]=I5[i];n>=s&&n<=o&&(e+=n-s)}}return parseInt(e,10)}else return e}var Mk=new Map;function Bke(){Mk.clear()}function Nn({numberingSystem:t},e=""){let r=t||"latn",n=Mk.get(r);n===void 0&&(n=new Map,Mk.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${Lk[r]}${e}`),n.set(e,i)),i}var T5=()=>Date.now(),A5="system",k5=null,R5=null,O5=null,C5=60,P5,M5=null,Ye=class{static get now(){return T5}static set now(e){T5=e}static set defaultZone(e){A5=e}static get defaultZone(){return Qs(A5,rp.instance)}static get defaultLocale(){return k5}static set defaultLocale(e){k5=e}static get defaultNumberingSystem(){return R5}static set defaultNumberingSystem(e){R5=e}static get defaultOutputCalendar(){return O5}static set defaultOutputCalendar(e){O5=e}static get defaultWeekSettings(){return M5}static set defaultWeekSettings(e){M5=Dk(e)}static get twoDigitCutoffYear(){return C5}static set twoDigitCutoffYear(e){C5=e%100}static get throwOnInvalid(){return P5}static set throwOnInvalid(e){P5=e}static resetCaches(){$e.resetCache(),Zi.resetCache(),tt.resetCache(),Bke()}},Fr=class{constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},SH=[0,31,59,90,120,151,181,212,243,273,304,334],_H=[0,31,60,91,121,152,182,213,244,274,305,335];function bn(t,e){return new Fr("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function Nk(t,e,r){let n=new Date(Date.UTC(t,e-1,r));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}function xH(t,e,r){return r+(ip(t)?_H:SH)[e-1]}function wH(t,e){let r=ip(t)?_H:SH,n=r.findIndex(s=>s<e),i=e-r[n];return{month:n+1,day:i}}function qk(t,e){return(t-e+7)%7+1}function Fb(t,e=4,r=1){let{year:n,month:i,day:s}=t,o=xH(n,i,s),a=qk(Nk(n,i,s),r),c=Math.floor((o-a+14-e)/7),l;return c<1?(l=n-1,c=np(l,e,r)):c>np(n,e,r)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:a,...Vb(t)}}function D5(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:s}=t,o=qk(Nk(n,1,e),r),a=Sl(n),c=i*7+s-o-7+e,l;c<1?(l=n-1,c+=Sl(l)):c>a?(l=n+1,c-=Sl(n)):l=n;let{month:u,day:d}=wH(l,c);return{year:l,month:u,day:d,...Vb(t)}}function mk(t){let{year:e,month:r,day:n}=t,i=xH(e,r,n);return{year:e,ordinal:i,...Vb(t)}}function j5(t){let{year:e,ordinal:r}=t,{month:n,day:i}=wH(e,r);return{year:e,month:n,day:i,...Vb(t)}}function K5(t,e){if(!X(t.localWeekday)||!X(t.localWeekNumber)||!X(t.localWeekYear)){if(!X(t.weekday)||!X(t.weekNumber)||!X(t.weekYear))throw new Xs("Cannot mix locale-based week fields with ISO-based week fields");return X(t.localWeekday)||(t.weekday=t.localWeekday),X(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),X(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 zke(t,e=4,r=1){let n=Bb(t.weekYear),i=vn(t.weekNumber,1,np(t.weekYear,e,r)),s=vn(t.weekday,1,7);return n?i?s?!1:bn("weekday",t.weekday):bn("week",t.weekNumber):bn("weekYear",t.weekYear)}function Hke(t){let e=Bb(t.year),r=vn(t.ordinal,1,Sl(t.year));return e?r?!1:bn("ordinal",t.ordinal):bn("year",t.year)}function IH(t){let e=Bb(t.year),r=vn(t.month,1,12),n=vn(t.day,1,$b(t.year,t.month));return e?r?n?!1:bn("day",t.day):bn("month",t.month):bn("year",t.year)}function TH(t){let{hour:e,minute:r,second:n,millisecond:i}=t,s=vn(e,0,23)||e===24&&r===0&&n===0&&i===0,o=vn(r,0,59),a=vn(n,0,59),c=vn(i,0,999);return s?o?a?c?!1:bn("millisecond",i):bn("second",n):bn("minute",r):bn("hour",e)}function X(t){return typeof t>"u"}function Zs(t){return typeof t=="number"}function Bb(t){return typeof t=="number"&&t%1===0}function Vke(t){return typeof t=="string"}function Wke(t){return Object.prototype.toString.call(t)==="[object Date]"}function AH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function kH(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Yke(t){return Array.isArray(t)?t:[t]}function L5(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let s=[e(i),i];return n&&r(n[0],s[0])===n[0]?n:s},null)[1]}function Qke(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}function xl(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Dk(t){if(t==null)return null;if(typeof t!="object")throw new Pt("Week settings must be an object");if(!vn(t.firstDay,1,7)||!vn(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!vn(e,1,7)))throw new Pt("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function vn(t,e,r){return Bb(t)&&t>=e&&t<=r}function Xke(t,e){return t-e*Math.floor(t/e)}function bt(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}function Ys(t){if(!(X(t)||t===null||t===""))return parseInt(t,10)}function ma(t){if(!(X(t)||t===null||t===""))return parseFloat(t)}function Uk(t){if(!(X(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function Fk(t,e,r="round"){let n=10**e;switch(r){case"expand":return t>0?Math.ceil(t*n)/n:Math.floor(t*n)/n;case"trunc":return Math.trunc(t*n)/n;case"round":return Math.round(t*n)/n;case"floor":return Math.floor(t*n)/n;case"ceil":return Math.ceil(t*n)/n;default:throw new RangeError(`Value rounding ${r} is out of range`)}}function ip(t){return t%4===0&&(t%100!==0||t%400===0)}function Sl(t){return ip(t)?366:365}function $b(t,e){let r=Xke(e-1,12)+1,n=t+(e-r)/12;return r===2?ip(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function zb(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 N5(t,e,r){return-qk(Nk(t,1,e),r)+e-1}function np(t,e=4,r=1){let n=N5(t,e,r),i=N5(t+1,e,r);return(Sl(t)-n+i)/7}function jk(t){return t>99?t:t>Ye.twoDigitCutoffYear?1900+t:2e3+t}function RH(t,e,r,n=null){let i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(s.timeZone=n);let o={timeZoneName:e,...s},a=new Intl.DateTimeFormat(r,o).formatToParts(i).find(c=>c.type.toLowerCase()==="timezonename");return a?a.value:null}function Hb(t,e){let r=parseInt(t,10);Number.isNaN(r)&&(r=0);let n=parseInt(e,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}function OH(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new Pt(`Invalid unit value ${t}`);return e}function Jb(t,e){let r={};for(let n in t)if(xl(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=OH(i)}return r}function tp(t,e){let r=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${bt(r,2)}:${bt(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${bt(r,2)}${bt(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function Vb(t){return Qke(t,["hour","minute","second","millisecond"])}var Zke=["January","February","March","April","May","June","July","August","September","October","November","December"],CH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],eRe=["J","F","M","A","M","J","J","A","S","O","N","D"];function PH(t){switch(t){case"narrow":return[...eRe];case"short":return[...CH];case"long":return[...Zke];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 MH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],DH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],tRe=["M","T","W","T","F","S","S"];function jH(t){switch(t){case"narrow":return[...tRe];case"short":return[...DH];case"long":return[...MH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var KH=["AM","PM"],rRe=["Before Christ","Anno Domini"],nRe=["BC","AD"],iRe=["B","A"];function LH(t){switch(t){case"narrow":return[...iRe];case"short":return[...nRe];case"long":return[...rRe];default:return null}}function sRe(t){return KH[t.hour<12?0:1]}function oRe(t,e){return jH(e)[t.weekday-1]}function aRe(t,e){return PH(e)[t.month-1]}function cRe(t,e){return LH(e)[t.year<0?0:1]}function lRe(t,e,r="always",n=!1){let i={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."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&s){let d=t==="days";switch(e){case 1:return d?"tomorrow":`next ${i[t][0]}`;case-1:return d?"yesterday":`last ${i[t][0]}`;case 0:return d?"today":`this ${i[t][0]}`}}let o=Object.is(e,-0)||e<0,a=Math.abs(e),c=a===1,l=i[t],u=n?c?l[1]:l[2]||l[1]:c?i[t][0]:t;return o?`${a} ${u} ago`:`in ${a} ${u}`}function q5(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}var uRe={D:qb,DD:eH,DDD:tH,DDDD:rH,t:nH,tt:iH,ttt:sH,tttt:oH,T:aH,TT:cH,TTT:lH,TTTT:uH,f:dH,ff:fH,fff:hH,ffff:gH,F:pH,FF:mH,FFF:yH,FFFF:bH},Ur=class t{static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,s=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);a==="'"?((n.length>0||i)&&s.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||a===r?n+=a:(n.length>0&&s.push({literal:/^\s+$/.test(n),val:n}),n=a,r=a)}return n.length>0&&s.push({literal:i||/^\s+$/.test(n),val:n}),s}static macroTokenToFormatOpts(e){return uRe[e]}constructor(e,r){this.opts=r,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...r}).format()}dtFormatter(e,r={}){return this.loc.dtFormatter(e,{...this.opts,...r})}formatDateTime(e,r){return this.dtFormatter(e,r).format()}formatDateTimeParts(e,r){return this.dtFormatter(e,r).formatToParts()}formatInterval(e,r){return this.dtFormatter(e.start,r).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,r){return this.dtFormatter(e,r).resolvedOptions()}num(e,r=0,n=void 0){if(this.opts.forceSimple)return bt(e,r);let i={...this.opts};return r>0&&(i.padTo=r),n&&(i.signDisplay=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(f,m)=>this.loc.extract(e,f,m),o=f=>e.isOffsetFixed&&e.offset===0&&f.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,f.format):"",a=()=>n?sRe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),c=(f,m)=>n?aRe(e,f):s(m?{month:f}:{month:f,day:"numeric"},"month"),l=(f,m)=>n?oRe(e,f):s(m?{weekday:f}:{weekday:f,month:"long",day:"numeric"},"weekday"),u=f=>{let m=t.macroTokenToFormatOpts(f);return m?this.formatWithSystemDefault(e,m):f},d=f=>n?cRe(e,f):s({era:f},"era"),p=f=>{switch(f){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 o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({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 a();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({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 i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({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 i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("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 u(f)}};return q5(t.parseFormat(r),p)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=u=>{switch(u[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},s=(u,d)=>p=>{let f=i(p);if(f){let m=d.isNegativeDuration&&f!==d.largestUnit?n:1,h;return this.opts.signMode==="negativeLargestOnly"&&f!==d.largestUnit?h="never":this.opts.signMode==="all"?h="always":h="auto",this.num(u.get(f)*m,p.length,h)}else return p},o=t.parseFormat(r),a=o.reduce((u,{literal:d,val:p})=>d?u:u.concat(p),[]),c=e.shiftTo(...a.map(i).filter(u=>u)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return q5(o,s(c,l))}},NH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function wl(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}function Il(...t){return e=>t.reduce(([r,n,i],s)=>{let[o,a,c]=s(e,i);return[{...r,...o},a||n,c]},[{},null,1]).slice(0,2)}function Tl(t,...e){if(t==null)return[null,null];for(let[r,n]of e){let i=r.exec(t);if(i)return n(i)}return[null,null]}function qH(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=Ys(e[r+i]);return[n,null,r+i]}}var UH=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,dRe=`(?:${UH.source}?(?:\\[(${NH.source})\\])?)?`,$k=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,FH=RegExp(`${$k.source}${dRe}`),Jk=RegExp(`(?:[Tt]${FH.source})?`),pRe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,fRe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,mRe=/(\d{4})-?(\d{3})/,hRe=qH("weekYear","weekNumber","weekDay"),yRe=qH("year","ordinal"),gRe=/(\d{4})-(\d\d)-(\d\d)/,$H=RegExp(`${$k.source} ?(?:${UH.source}|(${NH.source}))?`),bRe=RegExp(`(?: ${$H.source})?`);function _l(t,e,r){let n=t[e];return X(n)?r:Ys(n)}function vRe(t,e){return[{year:_l(t,e),month:_l(t,e+1,1),day:_l(t,e+2,1)},null,e+3]}function Al(t,e){return[{hours:_l(t,e,0),minutes:_l(t,e+1,0),seconds:_l(t,e+2,0),milliseconds:Uk(t[e+3])},null,e+4]}function sp(t,e){let r=!t[e]&&!t[e+1],n=Hb(t[e+1],t[e+2]),i=r?null:Jr.instance(n);return[{},i,e+3]}function op(t,e){let r=t[e]?Zi.create(t[e]):null;return[{},r,e+1]}var ERe=RegExp(`^T?${$k.source}$`),SRe=/^-?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 _Re(t){let[e,r,n,i,s,o,a,c,l]=t,u=e[0]==="-",d=c&&c[0]==="-",p=(f,m=!1)=>f!==void 0&&(m||f&&u)?-f:f;return[{years:p(ma(r)),months:p(ma(n)),weeks:p(ma(i)),days:p(ma(s)),hours:p(ma(o)),minutes:p(ma(a)),seconds:p(ma(c),c==="-0"),milliseconds:p(Uk(l),d)}]}var xRe={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Gk(t,e,r,n,i,s,o){let a={year:e.length===2?jk(Ys(e)):Ys(e),month:CH.indexOf(r)+1,day:Ys(n),hour:Ys(i),minute:Ys(s)};return o&&(a.second=Ys(o)),t&&(a.weekday=t.length>3?MH.indexOf(t)+1:DH.indexOf(t)+1),a}var wRe=/^(?:(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 IRe(t){let[,e,r,n,i,s,o,a,c,l,u,d]=t,p=Gk(e,i,n,r,s,o,a),f;return c?f=xRe[c]:l?f=0:f=Hb(u,d),[p,new Jr(f)]}function TRe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var ARe=/^(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$/,kRe=/^(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$/,RRe=/^(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 U5(t){let[,e,r,n,i,s,o,a]=t;return[Gk(e,i,n,r,s,o,a),Jr.utcInstance]}function ORe(t){let[,e,r,n,i,s,o,a]=t;return[Gk(e,a,r,n,i,s,o),Jr.utcInstance]}var CRe=wl(pRe,Jk),PRe=wl(fRe,Jk),MRe=wl(mRe,Jk),DRe=wl(FH),JH=Il(vRe,Al,sp,op),jRe=Il(hRe,Al,sp,op),KRe=Il(yRe,Al,sp,op),LRe=Il(Al,sp,op);function NRe(t){return Tl(t,[CRe,JH],[PRe,jRe],[MRe,KRe],[DRe,LRe])}function qRe(t){return Tl(TRe(t),[wRe,IRe])}function URe(t){return Tl(t,[ARe,U5],[kRe,U5],[RRe,ORe])}function FRe(t){return Tl(t,[SRe,_Re])}var $Re=Il(Al);function JRe(t){return Tl(t,[ERe,$Re])}var GRe=wl(gRe,bRe),BRe=wl($H),zRe=Il(Al,sp,op);function HRe(t){return Tl(t,[GRe,JH],[BRe,zRe])}var F5="Invalid Duration",GH={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},VRe={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:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...GH},gn=146097/400,bl=146097/4800,WRe={years:{quarters:4,months:12,weeks:gn/7,days:gn,hours:gn*24,minutes:gn*24*60,seconds:gn*24*60*60,milliseconds:gn*24*60*60*1e3},quarters:{months:3,weeks:gn/28,days:gn/4,hours:gn*24/4,minutes:gn*24*60/4,seconds:gn*24*60*60/4,milliseconds:gn*24*60*60*1e3/4},months:{weeks:bl/7,days:bl,hours:bl*24,minutes:bl*24*60,seconds:bl*24*60*60,milliseconds:bl*24*60*60*1e3},...GH},ya=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],YRe=ya.slice(0).reverse();function Qi(t,e,r=!1){let n={values:r?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new It(n)}function BH(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of YRe.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}function $5(t,e){let r=BH(t,e)<0?-1:1;ya.reduceRight((n,i)=>{if(X(e[i]))return n;if(n){let s=e[n]*r,o=t[i][n],a=Math.floor(s/o);e[i]+=a*r,e[n]-=a*o*r}return i},null),ya.reduce((n,i)=>{if(X(e[i]))return n;if(n){let s=e[n]%1;e[n]-=s,e[i]+=s*t[n][i]}return i},null)}function J5(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}var It=class t{constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?WRe:VRe;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||$e.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,r){return t.fromObject({milliseconds:e},r)}static fromObject(e,r={}){if(e==null||typeof e!="object")throw new Pt(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:Jb(e,t.normalizeUnit),loc:$e.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(Zs(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new Pt(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=FRe(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,r){let[n]=JRe(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,r=null){if(!e)throw new Pt("need to specify a reason the Duration is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new _k(n);return new t({invalid:n})}static normalizeUnit(e){let r={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(!r)throw new Nb(e);return r}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,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?Ur.create(this.loc,n).formatDurationFromString(this,e):F5}toHuman(e={}){if(!this.isValid)return F5;let r=e.showZeros!==!1,n=ya.map(i=>{let s=this.values[i];return X(s)||s===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(s)}).filter(i=>i);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+=Fk(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},tt.fromMillis(r,{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?BH(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e),n={};for(let i of ya)(xl(r.values,i)||xl(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Qi(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e);return this.plus(r.negate())}mapUnits(e){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=OH(e(this.values[n],n));return Qi(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...Jb(e,t.normalizeUnit)};return Qi(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let o={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Qi(this,o)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return $5(this.matrix,e),Qi(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=J5(this.normalize().shiftToAll().toObject());return Qi(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>t.normalizeUnit(o));let r={},n={},i=this.toObject(),s;for(let o of ya)if(e.indexOf(o)>=0){s=o;let a=0;for(let l in n)a+=this.matrix[l][o]*n[l],n[l]=0;Zs(i[o])&&(a+=i[o]);let c=Math.trunc(a);r[o]=c,n[o]=(a*1e3-c*1e3)/1e3}else Zs(i[o])&&(n[o]=i[o]);for(let o in n)n[o]!==0&&(r[s]+=o===s?n[o]:n[o]/this.matrix[s][o]);return $5(this.matrix,r),Qi(this,{values:r},!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 r of Object.keys(this.values))e[r]=this.values[r]===0?0:-this.values[r];return Qi(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=J5(this.values);return Qi(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 r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}for(let n of ya)if(!r(this.values[n],e.values[n]))return!1;return!0}},vl="Invalid Interval";function QRe(t,e){return!t||!t.isValid?ba.invalid("missing or invalid start"):!e||!e.isValid?ba.invalid("missing or invalid end"):e<t?ba.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 ba=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,r=null){if(!e)throw new Pt("need to specify a reason the Interval is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new Sk(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=Qd(e),i=Qd(r),s=QRe(n,i);return s??new t({start:n,end:i})}static after(e,r){let n=It.fromDurationLike(r),i=Qd(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=It.fromDurationLike(r),i=Qd(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let s,o;try{s=tt.fromISO(n,r),o=s.isValid}catch{o=!1}let a,c;try{a=tt.fromISO(i,r),c=a.isValid}catch{c=!1}if(o&&c)return t.fromDateTimes(s,a);if(o){let l=It.fromISO(i,r);if(l.isValid)return t.after(s,l)}else if(c){let l=It.fromISO(n,r);if(l.isValid)return t.before(a,l)}}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 lastDateTime(){return this.isValid&&this.e?this.e.minus(1):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",r){if(!this.isValid)return NaN;let n=this.start.startOf(e,r),i;return r!=null&&r.useLocaleWeeks?i=this.end.reconfigure({locale:n.locale}):i=this.end,i=i.startOf(e,r),Math.floor(i.diff(n,e).get(e))+(i.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:r}={}){return this.isValid?t.fromDateTimes(e||this.s,r||this.e):this}splitAt(...e){if(!this.isValid)return[];let r=e.map(Qd).filter(o=>this.contains(o)).sort((o,a)=>o.toMillis()-a.toMillis()),n=[],{s:i}=this,s=0;for(;i<this.e;){let o=r[s]||this.e,a=+o>+this.e?this.e:o;n.push(t.fromDateTimes(i,a)),i=a,s+=1}return n}splitBy(e){let r=It.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,s,o=[];for(;n<this.e;){let a=this.start.plus(r.mapUnits(c=>c*i));s=+a>+this.e?this.e:a,o.push(t.fromDateTimes(n,s)),n=s,i+=1}return o}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 r=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return r>=n?null:t.fromDateTimes(r,n)}union(e){if(!this.isValid)return this;let r=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(r,n)}static merge(e){let[r,n]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],s=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),o=Array.prototype.concat(...s),a=o.sort((c,l)=>c.time-l.time);for(let c of a)n+=c.type==="s"?1:-1,n===1?r=c.time:(r&&+r!=+c.time&&i.push(t.fromDateTimes(r,c.time)),r=null);return t.merge(i)}difference(...e){return t.xor([this].concat(e)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:vl}[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=qb,r={}){return this.isValid?Ur.create(this.s.loc.clone(r),e).formatInterval(this):vl}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:vl}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:vl}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:vl}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:vl}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):It.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},ga=class{static hasDST(e=Ye.defaultZone){let r=tt.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Zi.isValidZone(e)}static normalizeZone(e){return Qs(e,Ye.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||$e.create(r,n,s)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||$e.create(r,n,s)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||$e.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||$e.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return $e.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return $e.create(r,null,"gregory").eras(e)}static features(){return{relative:AH(),localeWeek:kH()}}};function G5(t,e){let r=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=r(e)-r(t);return Math.floor(It.fromMillis(n).as("days"))}function XRe(t,e,r){let n=[["years",(c,l)=>l.year-c.year],["quarters",(c,l)=>l.quarter-c.quarter+(l.year-c.year)*4],["months",(c,l)=>l.month-c.month+(l.year-c.year)*12],["weeks",(c,l)=>{let u=G5(c,l);return(u-u%7)/7}],["days",G5]],i={},s=t,o,a;for(let[c,l]of n)r.indexOf(c)>=0&&(o=c,i[c]=l(t,e),a=s.plus(i),a>e?(i[c]--,t=s.plus(i),t>e&&(a=t,i[c]--,t=s.plus(i))):t=a);return[t,i,a,o]}function ZRe(t,e,r,n){let[i,s,o,a]=XRe(t,e,r),c=e-i,l=r.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);l.length===0&&(o<e&&(o=i.plus({[a]:1})),o!==i&&(s[a]=(s[a]||0)+c/(o-i)));let u=It.fromObject(s,n);return l.length>0?It.fromMillis(c,n).shiftTo(...l).plus(u):u}var eOe="missing Intl.DateTimeFormat.formatToParts support";function Ce(t,e=r=>r){return{regex:t,deser:([r])=>e(Gke(r))}}var tOe="\xA0",zH=`[ ${tOe}]`,HH=new RegExp(zH,"g");function rOe(t){return t.replace(/\./g,"\\.?").replace(HH,zH)}function B5(t){return t.replace(/\./g,"").replace(HH," ").toLowerCase()}function qn(t,e){return t===null?null:{regex:RegExp(t.map(rOe).join("|")),deser:([r])=>t.findIndex(n=>B5(r)===B5(n))+e}}function z5(t,e){return{regex:t,deser:([,r,n])=>Hb(r,n),groups:e}}function Pb(t){return{regex:t,deser:([e])=>e}}function nOe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function iOe(t,e){let r=Nn(e),n=Nn(e,"{2}"),i=Nn(e,"{3}"),s=Nn(e,"{4}"),o=Nn(e,"{6}"),a=Nn(e,"{1,2}"),c=Nn(e,"{1,3}"),l=Nn(e,"{1,6}"),u=Nn(e,"{1,9}"),d=Nn(e,"{2,4}"),p=Nn(e,"{4,6}"),f=b=>({regex:RegExp(nOe(b.val)),deser:([v])=>v,literal:!0}),h=(b=>{if(t.literal)return f(b);switch(b.val){case"G":return qn(e.eras("short"),0);case"GG":return qn(e.eras("long"),0);case"y":return Ce(l);case"yy":return Ce(d,jk);case"yyyy":return Ce(s);case"yyyyy":return Ce(p);case"yyyyyy":return Ce(o);case"M":return Ce(a);case"MM":return Ce(n);case"MMM":return qn(e.months("short",!0),1);case"MMMM":return qn(e.months("long",!0),1);case"L":return Ce(a);case"LL":return Ce(n);case"LLL":return qn(e.months("short",!1),1);case"LLLL":return qn(e.months("long",!1),1);case"d":return Ce(a);case"dd":return Ce(n);case"o":return Ce(c);case"ooo":return Ce(i);case"HH":return Ce(n);case"H":return Ce(a);case"hh":return Ce(n);case"h":return Ce(a);case"mm":return Ce(n);case"m":return Ce(a);case"q":return Ce(a);case"qq":return Ce(n);case"s":return Ce(a);case"ss":return Ce(n);case"S":return Ce(c);case"SSS":return Ce(i);case"u":return Pb(u);case"uu":return Pb(a);case"uuu":return Ce(r);case"a":return qn(e.meridiems(),0);case"kkkk":return Ce(s);case"kk":return Ce(d,jk);case"W":return Ce(a);case"WW":return Ce(n);case"E":case"c":return Ce(r);case"EEE":return qn(e.weekdays("short",!1),1);case"EEEE":return qn(e.weekdays("long",!1),1);case"ccc":return qn(e.weekdays("short",!0),1);case"cccc":return qn(e.weekdays("long",!0),1);case"Z":case"ZZ":return z5(new RegExp(`([+-]${a.source})(?::(${n.source}))?`),2);case"ZZZ":return z5(new RegExp(`([+-]${a.source})(${n.source})?`),2);case"z":return Pb(/[a-z_+-/]{1,256}?/i);case" ":return Pb(/[^\S\n\r]/);default:return f(b)}})(t)||{invalidReason:eOe};return h.token=t,h}var sOe={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 oOe(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let c=/^\s+$/.test(i);return{literal:!c,val:c?" ":i}}let s=e[n],o=n;n==="hour"&&(e.hour12!=null?o=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?o="hour12":o="hour24":o=r.hour12?"hour12":"hour24");let a=sOe[o];if(typeof a=="object"&&(a=a[s]),a)return{literal:!1,val:a}}function aOe(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}function cOe(t,e,r){let n=t.match(e);if(n){let i={},s=1;for(let o in r)if(xl(r,o)){let a=r[o],c=a.groups?a.groups+1:1;!a.literal&&a.token&&(i[a.token.val[0]]=a.deser(n.slice(s,s+c))),s+=c}return[n,i]}else return[n,{}]}function lOe(t){let e=s=>{switch(s){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}},r=null,n;return X(t.z)||(r=Zi.create(t.z)),X(t.Z)||(r||(r=new Jr(t.Z)),n=t.Z),X(t.q)||(t.M=(t.q-1)*3+1),X(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),X(t.u)||(t.S=Uk(t.u)),[Object.keys(t).reduce((s,o)=>{let a=e(o);return a&&(s[a]=t[o]),s},{}),r,n]}var hk=null;function uOe(){return hk||(hk=tt.fromMillis(1555555555555)),hk}function dOe(t,e){if(t.literal)return t;let r=Ur.macroTokenToFormatOpts(t.val),n=YH(r,e);return n==null||n.includes(void 0)?t:n}function VH(t,e){return Array.prototype.concat(...t.map(r=>dOe(r,e)))}var Gb=class{constructor(e,r){if(this.locale=e,this.format=r,this.tokens=VH(Ur.parseFormat(r),e),this.units=this.tokens.map(n=>iOe(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=aOe(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=cOe(e,this.regex,this.handlers),[i,s,o]=n?lOe(n):[null,null,void 0];if(xl(n,"a")&&xl(n,"H"))throw new Xs("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:s,specificOffset:o}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function WH(t,e,r){return new Gb(t,r).explainFromTokens(e)}function pOe(t,e,r){let{result:n,zone:i,specificOffset:s,invalidReason:o}=WH(t,e,r);return[n,i,s,o]}function YH(t,e){if(!t)return null;let n=Ur.create(e,t).dtFormatter(uOe()),i=n.formatToParts(),s=n.resolvedOptions();return i.map(o=>oOe(o,t,s))}var yk="Invalid DateTime",H5=864e13;function Zd(t){return new Fr("unsupported zone",`the zone "${t.name}" is not supported`)}function gk(t){return t.weekData===null&&(t.weekData=Fb(t.c)),t.weekData}function bk(t){return t.localWeekData===null&&(t.localWeekData=Fb(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function ha(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new tt({...r,...e,old:r})}function QH(t,e,r){let n=t-e*60*1e3,i=r.offset(n);if(e===i)return[n,e];n-=(i-e)*60*1e3;let s=r.offset(n);return i===s?[n,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function Mb(t,e){t+=e*60*1e3;let r=new Date(t);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}function jb(t,e,r){return QH(zb(t),e,r)}function V5(t,e){let r=t.o,n=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:n,month:i,day:Math.min(t.c.day,$b(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=It.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"),a=zb(s),[c,l]=QH(a,r,t.zone);return o!==0&&(c+=o,l=t.zone.offset(c)),{ts:c,o:l}}function El(t,e,r,n,i,s){let{setZone:o,zone:a}=r;if(t&&Object.keys(t).length!==0||e){let c=e||a,l=tt.fromObject(t,{...r,zone:c,specificOffset:s});return o?l:l.setZone(a)}else return tt.invalid(new Fr("unparsable",`the input "${i}" can't be parsed as ${n}`))}function Db(t,e,r=!0){return t.isValid?Ur.create($e.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}function vk(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=bt(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=bt(t.c.month),r==="month")return i;i+="-"}else if(i+=bt(t.c.month),r==="month")return i;return i+=bt(t.c.day),i}function W5(t,e,r,n,i,s,o){let a=!r||t.c.millisecond!==0||t.c.second!==0,c="";switch(o){case"day":case"month":case"year":break;default:if(c+=bt(t.c.hour),o==="hour")break;if(e){if(c+=":",c+=bt(t.c.minute),o==="minute")break;a&&(c+=":",c+=bt(t.c.second))}else{if(c+=bt(t.c.minute),o==="minute")break;a&&(c+=bt(t.c.second))}if(o==="second")break;a&&(!n||t.c.millisecond!==0)&&(c+=".",c+=bt(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!s?c+="Z":t.o<0?(c+="-",c+=bt(Math.trunc(-t.o/60)),c+=":",c+=bt(Math.trunc(-t.o%60))):(c+="+",c+=bt(Math.trunc(t.o/60)),c+=":",c+=bt(Math.trunc(t.o%60)))),s&&(c+="["+t.zone.ianaName+"]"),c}var XH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},fOe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},mOe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Kb=["year","month","day","hour","minute","second","millisecond"],hOe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],yOe=["year","ordinal","hour","minute","second","millisecond"];function Lb(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 Nb(t);return e}function Y5(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Lb(t)}}function gOe(t){if(ep===void 0&&(ep=Ye.now()),t.type!=="iana")return t.offset(ep);let e=t.name,r=Kk.get(e);return r===void 0&&(r=t.offset(ep),Kk.set(e,r)),r}function Q5(t,e){let r=Qs(e.zone,Ye.defaultZone);if(!r.isValid)return tt.invalid(Zd(r));let n=$e.fromObject(e),i,s;if(X(t.year))i=Ye.now();else{for(let c of Kb)X(t[c])&&(t[c]=XH[c]);let o=IH(t)||TH(t);if(o)return tt.invalid(o);let a=gOe(r);[i,s]=jb(t,a,r)}return new tt({ts:i,zone:r,loc:n,o:s})}function X5(t,e,r){let n=X(r.round)?!0:r.round,i=X(r.rounding)?"trunc":r.rounding,s=(a,c)=>(a=Fk(a,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(a,c)),o=a=>r.calendary?e.hasSame(t,a)?0:e.startOf(a).diff(t.startOf(a),a).get(a):e.diff(t,a).get(a);if(r.unit)return s(o(r.unit),r.unit);for(let a of r.units){let c=o(a);if(Math.abs(c)>=1)return s(c,a)}return s(t>e?-0:0,r.units[r.units.length-1])}function Z5(t){let e={},r;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],r=Array.from(t).slice(0,t.length-1)):r=Array.from(t),[e,r]}var ep,Kk=new Map,tt=class t{constructor(e){let r=e.zone||Ye.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Fr("invalid input"):null)||(r.isValid?null:Zd(r));this.ts=X(e.ts)?Ye.now():e.ts;let i=null,s=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,s]=[e.old.c,e.old.o];else{let a=Zs(e.o)&&!e.old?e.o:r.offset(this.ts);i=Mb(this.ts,a),n=Number.isNaN(i.year)?new Fr("invalid input"):null,i=n?null:i,s=n?null:a}this._zone=r,this.loc=e.loc||$e.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=Z5(arguments),[n,i,s,o,a,c,l]=r;return Q5({year:n,month:i,day:s,hour:o,minute:a,second:c,millisecond:l},e)}static utc(){let[e,r]=Z5(arguments),[n,i,s,o,a,c,l]=r;return e.zone=Jr.utcInstance,Q5({year:n,month:i,day:s,hour:o,minute:a,second:c,millisecond:l},e)}static fromJSDate(e,r={}){let n=Wke(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=Qs(r.zone,Ye.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:$e.fromObject(r)}):t.invalid(Zd(i))}static fromMillis(e,r={}){if(Zs(e))return e<-H5||e>H5?t.invalid("Timestamp out of range"):new t({ts:e,zone:Qs(r.zone,Ye.defaultZone),loc:$e.fromObject(r)});throw new Pt(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(Zs(e))return new t({ts:e*1e3,zone:Qs(r.zone,Ye.defaultZone),loc:$e.fromObject(r)});throw new Pt("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=Qs(r.zone,Ye.defaultZone);if(!n.isValid)return t.invalid(Zd(n));let i=$e.fromObject(r),s=Jb(e,Y5),{minDaysInFirstWeek:o,startOfWeek:a}=K5(s,i),c=Ye.now(),l=X(r.specificOffset)?n.offset(c):r.specificOffset,u=!X(s.ordinal),d=!X(s.year),p=!X(s.month)||!X(s.day),f=d||p,m=s.weekYear||s.weekNumber;if((f||u)&&m)throw new Xs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(p&&u)throw new Xs("Can't mix ordinal dates with month/day");let h=m||s.weekday&&!f,b,v,E=Mb(c,l);h?(b=hOe,v=fOe,E=Fb(E,o,a)):u?(b=yOe,v=mOe,E=mk(E)):(b=Kb,v=XH);let _=!1;for(let $ of b){let te=s[$];X(te)?_?s[$]=v[$]:s[$]=E[$]:_=!0}let I=h?zke(s,o,a):u?Hke(s):IH(s),w=I||TH(s);if(w)return t.invalid(w);let O=h?D5(s,o,a):u?j5(s):s,[K,Q]=jb(O,l,n),N=new t({ts:K,zone:n,o:Q,loc:i});return s.weekday&&f&&e.weekday!==N.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${s.weekday} and a date of ${N.toISO()}`):N.isValid?N:t.invalid(N.invalid)}static fromISO(e,r={}){let[n,i]=NRe(e);return El(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=qRe(e);return El(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=URe(e);return El(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(X(e)||X(r))throw new Pt("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[a,c,l,u]=pOe(o,e,r);return u?t.invalid(u):El(a,c,n,`format ${r}`,e,l)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=HRe(e);return El(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new Pt("need to specify a reason the DateTime is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new Ek(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=YH(e,$e.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return VH(Ur.parseFormat(e),$e.fromObject(r)).map(i=>i.val).join("")}static resetCache(){ep=void 0,Kk.clear()}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?gk(this).weekYear:NaN}get weekNumber(){return this.isValid?gk(this).weekNumber:NaN}get weekday(){return this.isValid?gk(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?bk(this).weekday:NaN}get localWeekNumber(){return this.isValid?bk(this).weekNumber:NaN}get localWeekYear(){return this.isValid?bk(this).weekYear:NaN}get ordinal(){return this.isValid?mk(this.c).ordinal:NaN}get monthShort(){return this.isValid?ga.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?ga.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?ga.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?ga.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,r=6e4,n=zb(this.c),i=this.zone.offset(n-e),s=this.zone.offset(n+e),o=this.zone.offset(n-i*r),a=this.zone.offset(n-s*r);if(o===a)return[this];let c=n-o*r,l=n-a*r,u=Mb(c,o),d=Mb(l,a);return u.hour===d.hour&&u.minute===d.minute&&u.second===d.second&&u.millisecond===d.millisecond?[ha(this,{ts:c}),ha(this,{ts:l})]:[this]}get isInLeapYear(){return ip(this.year)}get daysInMonth(){return $b(this.year,this.month)}get daysInYear(){return this.isValid?Sl(this.year):NaN}get weeksInWeekYear(){return this.isValid?np(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?np(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=Ur.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone(Jr.instance(e),r)}toLocal(){return this.setZone(Ye.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=Qs(e,Ye.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let s=e.offset(this.ts),o=this.toObject();[i]=jb(o,s,e)}return ha(this,{ts:i,zone:e})}else return t.invalid(Zd(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return ha(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=Jb(e,Y5),{minDaysInFirstWeek:n,startOfWeek:i}=K5(r,this.loc),s=!X(r.weekYear)||!X(r.weekNumber)||!X(r.weekday),o=!X(r.ordinal),a=!X(r.year),c=!X(r.month)||!X(r.day),l=a||c,u=r.weekYear||r.weekNumber;if((l||o)&&u)throw new Xs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&o)throw new Xs("Can't mix ordinal dates with month/day");let d;s?d=D5({...Fb(this.c,n,i),...r},n,i):X(r.ordinal)?(d={...this.toObject(),...r},X(r.day)&&(d.day=Math.min($b(d.year,d.month),d.day))):d=j5({...mk(this.c),...r});let[p,f]=jb(d,this.o,this.zone);return ha(this,{ts:p,o:f})}plus(e){if(!this.isValid)return this;let r=It.fromDurationLike(e);return ha(this,V5(this,r))}minus(e){if(!this.isValid)return this;let r=It.fromDurationLike(e).negate();return ha(this,V5(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=It.normalizeUnit(e);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(i==="weeks")if(r){let s=this.loc.getStartOfWeek(),{weekday:o}=this;o<s&&(n.weekNumber=this.weekNumber-1),n.weekday=s}else n.weekday=1;if(i==="quarters"){let s=Math.ceil(this.month/3);n.month=(s-1)*3+1}return this.set(n)}endOf(e,r){return this.isValid?this.plus({[e]:1}).startOf(e,r).minus(1):this}toFormat(e,r={}){return this.isValid?Ur.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):yk}toLocaleString(e=qb,r={}){return this.isValid?Ur.create(this.loc.clone(r),e).formatDateTime(this):yk}toLocaleParts(e={}){return this.isValid?Ur.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:s=!1,precision:o="milliseconds"}={}){if(!this.isValid)return null;o=Lb(o);let a=e==="extended",c=vk(this,a,o);return Kb.indexOf(o)>=3&&(c+="T"),c+=W5(this,a,r,n,i,s,o),c}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?vk(this,e==="extended",Lb(r)):null}toISOWeekDate(){return Db(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended",precision:a="milliseconds"}={}){return this.isValid?(a=Lb(a),(i&&Kb.indexOf(a)>=3?"T":"")+W5(this,o==="extended",r,e,n,s,a)):null}toRFC2822(){return Db(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Db(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?vk(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:r=!1,includeOffsetSpace:n=!0}={}){let i="HH:mm:ss.SSS";return(r||e)&&(n&&(i+=" "),r?i+="z":e&&(i+="ZZ")),Db(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():yk}[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 r={...this.c};return e.includeConfig&&(r.outputCalendar=this.outputCalendar,r.numberingSystem=this.loc.numberingSystem,r.locale=this.loc.locale),r}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,r="milliseconds",n={}){if(!this.isValid||!e.isValid)return It.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},s=Yke(r).map(It.normalizeUnit),o=e.valueOf()>this.valueOf(),a=o?this:e,c=o?e:this,l=ZRe(a,c,s,i);return o?l.negate():l}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?ba.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(r,n)<=i&&i<=s.endOf(r,n)}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 r=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<r?-e.padding:e.padding:0,i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),X5(r,this.plus(n),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?X5(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 Pt("min requires all arguments be DateTimes");return L5(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Pt("max requires all arguments be DateTimes");return L5(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return WH(o,e,r)}static fromStringExplain(e,r,n={}){return t.fromFormatExplain(e,r,n)}static buildFormatParser(e,r={}){let{locale:n=null,numberingSystem:i=null}=r,s=$e.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new Gb(s,e)}static fromFormatParser(e,r,n={}){if(X(e)||X(r))throw new Pt("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});if(!o.equals(r.locale))throw new Pt(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${r.locale}`);let{result:a,zone:c,specificOffset:l,invalidReason:u}=r.explainFromTokens(e);return u?t.invalid(u):El(a,c,n,`format ${r.format}`,e,l)}static get DATE_SHORT(){return qb}static get DATE_MED(){return eH}static get DATE_MED_WITH_WEEKDAY(){return Ake}static get DATE_FULL(){return tH}static get DATE_HUGE(){return rH}static get TIME_SIMPLE(){return nH}static get TIME_WITH_SECONDS(){return iH}static get TIME_WITH_SHORT_OFFSET(){return sH}static get TIME_WITH_LONG_OFFSET(){return oH}static get TIME_24_SIMPLE(){return aH}static get TIME_24_WITH_SECONDS(){return cH}static get TIME_24_WITH_SHORT_OFFSET(){return lH}static get TIME_24_WITH_LONG_OFFSET(){return uH}static get DATETIME_SHORT(){return dH}static get DATETIME_SHORT_WITH_SECONDS(){return pH}static get DATETIME_MED(){return fH}static get DATETIME_MED_WITH_SECONDS(){return mH}static get DATETIME_MED_WITH_WEEKDAY(){return kke}static get DATETIME_FULL(){return hH}static get DATETIME_FULL_WITH_SECONDS(){return yH}static get DATETIME_HUGE(){return gH}static get DATETIME_HUGE_WITH_SECONDS(){return bH}};function Qd(t){if(tt.isDateTime(t))return t;if(t&&t.valueOf&&Zs(t.valueOf()))return tt.fromJSDate(t);if(t&&typeof t=="object")return tt.fromObject(t);throw new Pt(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var bOe="3.7.2";Gr.DateTime=tt;Gr.Duration=It;Gr.FixedOffsetZone=Jr;Gr.IANAZone=Zi;Gr.Info=ga;Gr.Interval=ba;Gr.InvalidZone=Ub;Gr.Settings=Ye;Gr.SystemZone=rp;Gr.VERSION=bOe;Gr.Zone=eo});var t9=y((vGe,e9)=>{"use strict";var va=ZH();ie.prototype.addYear=function(){this._date=this._date.plus({years:1})};ie.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};ie.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};ie.prototype.addHour=function(){var t=this._date;this._date=this._date.plus({hours:1}).startOf("hour"),this._date<=t&&(this._date=this._date.plus({hours:1}))};ie.prototype.addMinute=function(){var t=this._date;this._date=this._date.plus({minutes:1}).startOf("minute"),this._date<t&&(this._date=this._date.plus({hours:1}))};ie.prototype.addSecond=function(){var t=this._date;this._date=this._date.plus({seconds:1}).startOf("second"),this._date<t&&(this._date=this._date.plus({hours:1}))};ie.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};ie.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};ie.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};ie.prototype.subtractHour=function(){var t=this._date;this._date=this._date.minus({hours:1}).endOf("hour").startOf("second"),this._date>=t&&(this._date=this._date.minus({hours:1}))};ie.prototype.subtractMinute=function(){var t=this._date;this._date=this._date.minus({minutes:1}).endOf("minute").startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};ie.prototype.subtractSecond=function(){var t=this._date;this._date=this._date.minus({seconds:1}).startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};ie.prototype.getDate=function(){return this._date.day};ie.prototype.getFullYear=function(){return this._date.year};ie.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};ie.prototype.getMonth=function(){return this._date.month-1};ie.prototype.getHours=function(){return this._date.hour};ie.prototype.getMinutes=function(){return this._date.minute};ie.prototype.getSeconds=function(){return this._date.second};ie.prototype.getMilliseconds=function(){return this._date.millisecond};ie.prototype.getTime=function(){return this._date.valueOf()};ie.prototype.getUTCDate=function(){return this._getUTC().day};ie.prototype.getUTCFullYear=function(){return this._getUTC().year};ie.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};ie.prototype.getUTCMonth=function(){return this._getUTC().month-1};ie.prototype.getUTCHours=function(){return this._getUTC().hour};ie.prototype.getUTCMinutes=function(){return this._getUTC().minute};ie.prototype.getUTCSeconds=function(){return this._getUTC().second};ie.prototype.toISOString=function(){return this._date.toUTC().toISO()};ie.prototype.toJSON=function(){return this._date.toJSON()};ie.prototype.setDate=function(t){this._date=this._date.set({day:t})};ie.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};ie.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};ie.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};ie.prototype.setHours=function(t){this._date=this._date.set({hour:t})};ie.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};ie.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};ie.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};ie.prototype._getUTC=function(){return this._date.toUTC()};ie.prototype.toString=function(){return this.toDate().toString()};ie.prototype.toDate=function(){return this._date.toJSDate()};ie.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};ie.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function ie(t,e){var r={zone:e};if(t?t instanceof ie?this._date=t._date:t instanceof Date?this._date=va.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=va.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=va.DateTime.fromISO(t,r),this._date.isValid||(this._date=va.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=va.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=va.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=va.DateTime.local(),!this._date||!this._date.isValid)throw new Error("CronDate: unhandled timestamp: "+JSON.stringify(t));e&&e!==this._date.zoneName&&(this._date=this._date.setZone(e))}e9.exports=ie});var i9=y((EGe,n9)=>{"use strict";function Ea(t){return{start:t,count:1}}function r9(t,e){t.end=e,t.step=e-t.start,t.count=2}function Bk(t,e,r){e&&(e.count===2?(t.push(Ea(e.start)),t.push(Ea(e.end))):t.push(e)),r&&t.push(r)}function vOe(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(Bk(e,r,Ea(i)),r=void 0):r?r.count===1?r9(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(Ea(r.start)),r=Ea(r.end),r9(r,i)):(Bk(e,r),r=Ea(i)):r=Ea(i)}return Bk(e,r),e}n9.exports=vOe});var o9=y((SGe,s9)=>{"use strict";var EOe=i9();function SOe(t,e,r){var n=EOe(t);if(n.length===1){var i=n[0],s=i.step;if(s===1&&i.start===e&&i.end===r)return"*";if(s!==1&&i.start===e&&i.end===r-s+1)return"*/"+s}for(var o=[],a=0,c=n.length;a<c;++a){var l=n[a];if(l.count===1){o.push(l.start);continue}var s=l.step;if(l.step===1){o.push(l.start+"-"+l.end);continue}var u=l.start==0?l.count-1:l.count;l.step*u>l.end?o=o.concat(Array.from({length:l.end-l.start+1}).map(function(p,f){var m=l.start+f;return(m-l.start)%l.step===0?m:null}).filter(function(p){return p!=null})):l.end===r-l.step+1?o.push(l.start+"/"+l.step):o.push(l.start+"-"+l.end+"/"+l.step)}return o.join(",")}s9.exports=SOe});var l9=y((_Ge,c9)=>{"use strict";var Sa=t9(),_Oe=o9(),a9=1e4;function q(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new Sa(e.currentDate,this._tz),this._startDate=e.startDate?new Sa(e.startDate,this._tz):null,this._endDate=e.endDate?new Sa(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=q._freezeFields(t)}q.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];q.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};q.constraints=[{min:0,max:59,chars:[]},{min:0,max:59,chars:[]},{min:0,max:23,chars:[]},{min:1,max:31,chars:["L"]},{min:1,max:12,chars:[]},{min:0,max:7,chars:["L"]}];q.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];q.aliases={month:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},dayOfWeek:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}};q.parseDefaults=["0","*","*","*","*","*"];q.standardValidCharacters=/^[,*\d/-]+$/;q.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;q.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;q.validCharacters={second:q.standardValidCharacters,minute:q.standardValidCharacters,hour:q.standardValidCharacters,dayOfMonth:q.dayOfMonthValidCharacters,month:q.standardValidCharacters,dayOfWeek:q.dayOfWeekValidCharacters};q._isValidConstraintChar=function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})};q._parseField=function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=q.aliases[e];r=r.replace(/[a-z]{3}/gi,function(c){if(c=c.toLowerCase(),typeof i[c]<"u")return i[c];throw new Error('Validation error, cannot resolve alias "'+c+'"')});break}if(!q.validCharacters[e].test(r))throw new Error("Invalid characters, got value: "+r);r.indexOf("*")!==-1?r=r.replace(/\*/g,n.min+"-"+n.max):r.indexOf("?")!==-1&&(r=r.replace(/\?/g,n.min+"-"+n.max));function s(c){var l=[];function u(m){if(m instanceof Array)for(var h=0,b=m.length;h<b;h++){var v=m[h];if(q._isValidConstraintChar(n,v)){l.push(v);continue}if(typeof v!="number"||Number.isNaN(v)||v<n.min||v>n.max)throw new Error("Constraint error, got value "+v+" expected range "+n.min+"-"+n.max);l.push(v)}else{if(q._isValidConstraintChar(n,m)){l.push(m);return}var E=+m;if(Number.isNaN(E)||E<n.min||E>n.max)throw new Error("Constraint error, got value "+m+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(E=E%7),l.push(E)}}var d=c.split(",");if(!d.every(function(m){return m.length>0}))throw new Error("Invalid list value format");if(d.length>1)for(var p=0,f=d.length;p<f;p++)u(o(d[p]));else u(o(c));return l.sort(q._sortCompareFn),l}function o(c){var l=1,u=c.split("/");if(u.length>2)throw new Error("Invalid repeat: "+c);return u.length>1?(u[0]==+u[0]&&(u=[u[0]+"-"+n.max,u[1]]),a(u[0],u[u.length-1])):a(c,l)}function a(c,l){var u=[],d=c.split("-");if(d.length>1){if(d.length<2)return+c;if(!d[0].length){if(!d[1].length)throw new Error("Invalid range: "+c);return+c}var p=+d[0],f=+d[1];if(Number.isNaN(p)||Number.isNaN(f)||p<n.min||f>n.max)throw new Error("Constraint error, got range "+p+"-"+f+" expected range "+n.min+"-"+n.max);if(p>f)throw new Error("Invalid range: "+c);var m=+l;if(Number.isNaN(m)||m<=0)throw new Error("Constraint error, cannot repeat at every "+m+" time.");e==="dayOfWeek"&&f%7===0&&u.push(0);for(var h=p,b=f;h<=b;h++){var v=u.indexOf(h)!==-1;!v&&m>0&&m%l===0?(m=1,u.push(h)):m++}return u}return Number.isNaN(+c)?c:+c}return s(r)};q._sortCompareFn=function(t,e){var r=typeof t=="number",n=typeof e=="number";return r&&n?t-e:!r&&n?1:r&&!n?-1:t.localeCompare(e)};q._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=q.daysInMonth[t.month[0]-1];if(t.dayOfMonth[0]>e)throw new Error("Invalid explicit day of month definition");return t.dayOfMonth.filter(function(r){return r==="L"?!0:r<=e}).sort(q._sortCompareFn)}};q._freezeFields=function(t){for(var e=0,r=q.map.length;e<r;++e){var n=q.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};q.prototype._applyTimezoneShift=function(t,e,r){if(r==="Month"||r==="Day"){var n=t.getTime();t[e+r]();var i=t.getTime();n===i&&(t.getMinutes()===0&&t.getSeconds()===0?t.addHour():t.getMinutes()===59&&t.getSeconds()===59&&t.subtractHour())}else{var s=t.getHours();t[e+r]();var o=t.getHours(),a=o-s;a===2?this.fields.hour.length!==24&&(this._dstStart=o):a===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=o)}};q.prototype._findSchedule=function(e){function r(v,E){for(var _=0,I=E.length;_<I;_++)if(E[_]>=v)return E[_]===v;return E[0]===v}function n(v,E){if(E<6){if(v.getDate()<8&&E===1)return!0;var _=v.getDate()%7?1:0,I=v.getDate()-v.getDate()%7,w=Math.floor(I/7)+_;return w===E}return!1}function i(v){return v.length>0&&v.some(function(E){return typeof E=="string"&&E.indexOf("L")>=0})}e=e||!1;var s=e?"subtract":"add",o=new Sa(this._currentDate,this._tz),a=this._startDate,c=this._endDate,l=o.getTime(),u=0;function d(v){return v.some(function(E){if(!i([E]))return!1;var _=Number.parseInt(E[0])%7;if(Number.isNaN(_))throw new Error("Invalid last weekday of the month expression: "+E);return o.getDay()===_&&o.isLastWeekdayOfMonth()})}for(;u<a9;){if(u++,e){if(a&&o.getTime()-a.getTime()<0)throw new Error("Out of the timespan range")}else if(c&&c.getTime()-o.getTime()<0)throw new Error("Out of the timespan range");var p=r(o.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(p=p||o.isLastDayOfMonth());var f=r(o.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(f=f||d(this.fields.dayOfWeek));var m=this.fields.dayOfMonth.length>=q.daysInMonth[o.getMonth()],h=this.fields.dayOfWeek.length===q.constraints[5].max-q.constraints[5].min+1,b=o.getHours();if(!p&&(!f||h)){this._applyTimezoneShift(o,s,"Day");continue}if(!m&&h&&!p){this._applyTimezoneShift(o,s,"Day");continue}if(m&&!h&&!f){this._applyTimezoneShift(o,s,"Day");continue}if(this._nthDayOfWeek>0&&!n(o,this._nthDayOfWeek)){this._applyTimezoneShift(o,s,"Day");continue}if(!r(o.getMonth()+1,this.fields.month)){this._applyTimezoneShift(o,s,"Month");continue}if(r(b,this.fields.hour)){if(this._dstEnd===b&&!e){this._dstEnd=null,this._applyTimezoneShift(o,"add","Hour");continue}}else if(this._dstStart!==b){this._dstStart=null,this._applyTimezoneShift(o,s,"Hour");continue}else if(!r(b-1,this.fields.hour)){o[s+"Hour"]();continue}if(!r(o.getMinutes(),this.fields.minute)){this._applyTimezoneShift(o,s,"Minute");continue}if(!r(o.getSeconds(),this.fields.second)){this._applyTimezoneShift(o,s,"Second");continue}if(l===o.getTime()){s==="add"||o.getMilliseconds()===0?this._applyTimezoneShift(o,s,"Second"):o.setMilliseconds(0);continue}break}if(u>=a9)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new Sa(o,this._tz),this._hasIterated=!0,o};q.prototype.next=function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e};q.prototype.prev=function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e};q.prototype.hasNext=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};q.prototype.hasPrev=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(!0),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};q.prototype.iterate=function(e,r){var n=[];if(e>=0)for(var i=0,s=e;i<s;i++)try{var o=this.next();n.push(o),r&&r(o,i)}catch{break}else for(var i=0,s=e;i>s;i--)try{var o=this.prev();n.push(o),r&&r(o,i)}catch{break}return n};q.prototype.reset=function(e){this._currentDate=new Sa(e||this._options.currentDate)};q.prototype.stringify=function(e){for(var r=[],n=e?0:1,i=q.map.length;n<i;++n){var s=q.map[n],o=this.fields[s],a=q.constraints[n];s==="dayOfMonth"&&this.fields.month.length===1?a={min:1,max:q.daysInMonth[this.fields.month[0]-1]}:s==="dayOfWeek"&&(a={min:0,max:6},o=o[o.length-1]===7?o.slice(0,-1):o),r.push(_Oe(o,a.min,a.max))}return r.join(" ")};q.parse=function(e,r){var n=this;typeof r=="function"&&(r={});function i(s,o){o||(o={}),typeof o.currentDate>"u"&&(o.currentDate=new Sa(void 0,n._tz)),q.predefined[s]&&(s=q.predefined[s]);var a=[],c=(s+"").trim().split(/\s+/);if(c.length>6)throw new Error("Invalid cron expression");for(var l=q.map.length-c.length,u=0,d=q.map.length;u<d;++u){var p=q.map[u],f=c[c.length>d?u:u-l];if(u<l||!f)a.push(q._parseField(p,q.parseDefaults[u],q.constraints[u]));else{var m=p==="dayOfWeek"?E(f):f;a.push(q._parseField(p,m,q.constraints[u]))}}for(var h={},u=0,d=q.map.length;u<d;u++){var b=q.map[u];h[b]=a[u]}var v=q._handleMaxDaysInMonth(h);return h.dayOfMonth=v||h.dayOfMonth,new q(h,o);function E(_){var I=_.split("#");if(I.length>1){var w=+I[I.length-1];if(/,/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(I.length>2||Number.isNaN(w)||w<1||w>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return o.nthDayOfWeek=w,I[0]}return _}}return i(e,r)};q.fieldsToExpression=function(e,r){function n(p,f,m){if(!f)throw new Error("Validation error, Field "+p+" is missing");if(f.length===0)throw new Error("Validation error, Field "+p+" contains no values");for(var h=0,b=f.length;h<b;h++){var v=f[h];if(!q._isValidConstraintChar(m,v)&&(typeof v!="number"||Number.isNaN(v)||v<m.min||v>m.max))throw new Error("Constraint error, got value "+v+" expected range "+m.min+"-"+m.max)}}for(var i={},s=0,o=q.map.length;s<o;++s){var a=q.map[s],c=e[a];n(a,c,q.constraints[s]);for(var l=[],u=-1;++u<c.length;)l[u]=c[u];if(c=l.sort(q._sortCompareFn).filter(function(p,f,m){return!f||p!==m[f-1]}),c.length!==l.length)throw new Error("Validation error, Field "+a+" contains duplicate values");i[a]=c}var d=q._handleMaxDaysInMonth(i);return i.dayOfMonth=d||i.dayOfMonth,new q(i,r||{})};c9.exports=q});var zk=y((xGe,u9)=>{"use strict";var Wb=l9();function to(){}to._parseEntry=function(e){var r=e.split(" ");if(r.length===6)return{interval:Wb.parse(e)};if(r.length>6)return{interval:Wb.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)};to.parseExpression=function(e,r){return Wb.parse(e,r)};to.fieldsToExpression=function(e,r){return Wb.fieldsToExpression(e,r)};to.parseString=function(e){for(var r=e.split(`
9545
+ `),n={variables:{},expressions:[],errors:{}},i=0,s=r.length;i<s;i++){var o=r[i],a=null,c=o.trim();if(c.length>0){if(c.match(/^#/))continue;if(a=c.match(/^(.*)=(.*)$/))n.variables[a[1]]=a[2];else{var l=null;try{l=to._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(u){n.errors[c]=u}}}}return n};to.parseFile=function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,to.parseString(i.toString()))})};u9.exports=to});var ro=y(Yb=>{"use strict";Object.defineProperty(Yb,"__esModule",{value:!0});Yb.QueueBase=void 0;var xOe=require("events"),kl=Kr(),wOe=Nd(),IOe=Wd(),TOe=sl(),AOe=tg(),Hk=class extends xOe.EventEmitter{constructor(e,r={connection:{}},n=IOe.RedisConnection,i=!1){if(super(),this.name=e,this.opts=r,this.closed=!1,this.hasBlockingConnection=!1,this.hasBlockingConnection=i,this.opts=Object.assign({prefix:"bull"},r),!e)throw new Error("Queue name must be provided");if(e.includes(":"))throw new Error("Queue name cannot contain :");this.connection=new n(r.connection,{shared:(0,kl.isRedisInstance)(r.connection),blocking:i,skipVersionCheck:r.skipVersionCheck,skipWaitingForReady:r.skipWaitingForReady}),(0,kl.forwardConnectionError)(this,this.connection),this.connection.on("close",()=>{this.closing||this.emit("ioredis:close")});let s=new AOe.QueueKeys(r.prefix);this.qualifiedName=s.getQueueQualifiedName(e),this.keys=s.getKeys(e),this.toKey=o=>s.toKey(e,o),this.createScripts()}get client(){return this.connection.client}createScripts(){this.scripts=(0,wOe.createScripts)(this)}get redisVersion(){return this.connection.redisVersion}get databaseType(){return this.connection.databaseType}get Job(){return TOe.Job}emit(e,...r){try{return super.emit(e,...r)}catch(n){try{return super.emit("error",n)}catch(i){return console.error(i),!1}}}waitUntilReady(){return this.client}base64Name(){return Buffer.from(this.name).toString("base64")}clientName(e=""){let r=this.base64Name();return`${this.opts.prefix}:${r}${e}`}async close(){this.closing||(this.closing=this.connection.close()),await this.closing,this.closed=!0}disconnect(){return this.connection.disconnect()}async checkConnectionError(e,r=kl.DELAY_TIME_5){try{return await e()}catch(n){if((0,kl.isNotConnectionError)(n)&&this.emit("error",n),!this.closing&&r)await(0,kl.delay)(r);else return}}trace(e,r,n,i,s){return(0,kl.trace)(this.opts.telemetry,e,this.name,r,n,i,s)}};Yb.QueueBase=Hk});var Xb=y(_a=>{"use strict";Object.defineProperty(_a,"__esModule",{value:!0});_a.defaultRepeatStrategy=_a.JobScheduler=void 0;var kOe=(nr(),Mt(rr)),ROe=zk(),Qb=sl(),OOe=ro(),ap=wr(),COe=Kr(),Vk=class extends OOe.QueueBase{constructor(e,r,n){super(e,r,n),this.repeatStrategy=r.settings&&r.settings.repeatStrategy||_a.defaultRepeatStrategy}async upsertJobScheduler(e,r,n,i,s,{override:o,producerId:a}){let{every:c,limit:l,pattern:u,offset:d}=r;if(u&&c)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(!u&&!c)throw new Error("Either .pattern or .every options must be defined for this repeatable job");if(r.immediately&&r.startDate)throw new Error("Both .immediately and .startDate options are defined for this repeatable job");r.immediately&&r.every&&console.warn("Using option immediately with every does not affect the job's schedule. Job will run immediately anyway.");let p=r.count?r.count+1:1;if(typeof r.limit<"u"&&p>r.limit)return;let f=Date.now(),{endDate:m}=r;if(m&&f>new Date(m).getTime())return;let h=s.prevMillis||0;f=h<f?f:h;let{immediately:b}=r,v=kOe.__rest(r,["immediately"]),E,_=c&&d?d:null;if(u&&(E=await this.repeatStrategy(f,r,n),E<f&&(E=f)),E||c)return this.trace(ap.SpanKind.PRODUCER,"add",`${this.name}.${n}`,async(I,w)=>{var O,K;let Q=s.telemetry;if(w){let $=(O=s.telemetry)===null||O===void 0?void 0:O.omitContext,te=((K=s.telemetry)===null||K===void 0?void 0:K.metadata)||!$&&w;(te||$)&&(Q={metadata:te,omitContext:$})}let N=this.getNextJobOpts(E,e,Object.assign(Object.assign({},s),{repeat:v,telemetry:Q}),p,_);if(o){E<f&&(E=f);let[$,te]=await this.scripts.addJobScheduler(e,E,JSON.stringify(typeof i>"u"?{}:i),Qb.Job.optsAsJSON(s),{name:n,startDate:r.startDate?new Date(r.startDate).getTime():void 0,endDate:m?new Date(m).getTime():void 0,tz:r.tz,pattern:u,every:c,limit:l,offset:_},Qb.Job.optsAsJSON(N),a),ze=typeof te=="string"?parseInt(te,10):te,A=new this.Job(this,n,i,Object.assign(Object.assign({},N),{delay:ze}),$);return A.id=$,I?.setAttributes({[ap.TelemetryAttributes.JobSchedulerId]:e,[ap.TelemetryAttributes.JobId]:A.id}),A}else{let $=await this.scripts.updateJobSchedulerNextMillis(e,E,JSON.stringify(typeof i>"u"?{}:i),Qb.Job.optsAsJSON(N),a);if($){let te=new this.Job(this,n,i,N,$);return te.id=$,I?.setAttributes({[ap.TelemetryAttributes.JobSchedulerId]:e,[ap.TelemetryAttributes.JobId]:te.id}),te}}})}getNextJobOpts(e,r,n,i,s){var o,a;let c=this.getSchedulerNextJobId({jobSchedulerId:r,nextMillis:e}),l=Date.now(),u=e+s-l,d=Object.assign(Object.assign({},n),{jobId:c,delay:u<0?0:u,timestamp:l,prevMillis:e,repeatJobKey:r});return d.repeat=Object.assign(Object.assign({},n.repeat),{offset:s,count:i,startDate:!((o=n.repeat)===null||o===void 0)&&o.startDate?new Date(n.repeat.startDate).getTime():void 0,endDate:!((a=n.repeat)===null||a===void 0)&&a.endDate?new Date(n.repeat.endDate).getTime():void 0}),d}async removeJobScheduler(e){return this.scripts.removeJobScheduler(e)}async getSchedulerData(e,r,n){let i=await e.hgetall(this.toKey("repeat:"+r));return this.transformSchedulerData(r,i,n)}transformSchedulerData(e,r,n){if(r&&Object.keys(r).length>0){let i={key:e,name:r.name,next:n};return r.ic&&(i.iterationCount=parseInt(r.ic)),r.limit&&(i.limit=parseInt(r.limit)),r.startDate&&(i.startDate=parseInt(r.startDate)),r.endDate&&(i.endDate=parseInt(r.endDate)),r.tz&&(i.tz=r.tz),r.pattern&&(i.pattern=r.pattern),r.every&&(i.every=parseInt(r.every)),r.offset&&(i.offset=parseInt(r.offset)),(r.data||r.opts)&&(i.template=this.getTemplateFromJSON(r.data,r.opts)),i}if(e.includes(":"))return this.keyToData(e,n)}keyToData(e,r){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:r}}async isJobScheduler(e){return await(await this.client).hexists(`${this.keys.repeat}:${e}`,"ic")===1}async getScheduler(e){let[r,n]=await this.scripts.getJobScheduler(e);return this.transformSchedulerData(e,r?(0,COe.array2obj)(r):null,n?parseInt(n):null)}getTemplateFromJSON(e,r){let n={};return e&&(n.data=JSON.parse(e)),r&&(n.opts=Qb.Job.optsFromJSON(r)),n}async getJobSchedulers(e=0,r=-1,n=!1){let i=await this.client,s=this.keys.repeat,o=n?await i.zrange(s,e,r,{WITHSCORES:!0}):await i.zrevrange(s,e,r,{WITHSCORES:!0}),a=[];for(let c=0;c<o.length;c+=2)a.push(this.getSchedulerData(i,o[c],parseInt(o[c+1])));return Promise.all(a)}async getSchedulersCount(){let e=this.keys.repeat;return(await this.client).zcard(e)}getSchedulerNextJobId({nextMillis:e,jobSchedulerId:r}){return`repeat:${r}:${e}`}};_a.JobScheduler=Vk;var POe=(t,e)=>{let{pattern:r}=e,n=new Date(t),i=e.startDate&&new Date(e.startDate),s=i>n?i:n,o=(0,ROe.parseExpression)(r,Object.assign(Object.assign({},e),{currentDate:s}));try{return e.immediately?new Date().getTime():o.next().getTime()}catch{}};_a.defaultRepeatStrategy=POe});var Yk=y(ev=>{"use strict";Object.defineProperty(ev,"__esModule",{value:!0});ev.LockManager=void 0;var MOe=my(),Zb=wr(),Wk=class{constructor(e,r){this.worker=e,this.opts=r,this.trackedJobs=new Map,this.closed=!1}start(){this.closed||this.opts.lockRenewTime>0&&this.startLockExtenderTimer()}async extendLocks(e){await this.worker.trace(Zb.SpanKind.INTERNAL,"extendLocks",this.worker.name,async r=>{r?.setAttributes({[Zb.TelemetryAttributes.WorkerId]:this.opts.workerId,[Zb.TelemetryAttributes.WorkerName]:this.opts.workerName,[Zb.TelemetryAttributes.WorkerJobsToExtendLocks]:e});try{let n=e.map(o=>{var a;return((a=this.trackedJobs.get(o))===null||a===void 0?void 0:a.token)||""}),i=await this.worker.extendJobLocks(e,n,this.opts.lockDuration);if(i.length>0){this.worker.emit("lockRenewalFailed",i);for(let o of i)this.worker.emit("error",new Error(`could not renew lock for job ${o}`))}let s=e.filter(o=>!i.includes(o));s.length>0&&this.worker.emit("locksRenewed",{count:s.length,jobIds:s})}catch(n){this.worker.emit("error",n)}})}startLockExtenderTimer(){clearTimeout(this.lockRenewalTimer),this.closed||(this.lockRenewalTimer=setTimeout(async()=>{let e=Date.now(),r=[];for(let n of this.trackedJobs.keys()){let i=this.trackedJobs.get(n),{ts:s,token:o,abortController:a}=i;if(!s){this.trackedJobs.set(n,{token:o,ts:e,abortController:a});continue}s+this.opts.lockRenewTime/2<e&&(this.trackedJobs.set(n,{token:o,ts:e,abortController:a}),r.push(n))}r.length&&await this.extendLocks(r),this.startLockExtenderTimer()},this.opts.lockRenewTime/2))}async close(){this.closed||(this.closed=!0,this.lockRenewalTimer&&(clearTimeout(this.lockRenewalTimer),this.lockRenewalTimer=void 0),this.trackedJobs.clear())}trackJob(e,r,n,i=!1){let s=i?new MOe.AbortController:void 0;return!this.closed&&e&&this.trackedJobs.set(e,{token:r,ts:n,abortController:s}),s}untrackJob(e){this.trackedJobs.delete(e)}getActiveJobCount(){return this.trackedJobs.size}isRunning(){return!this.closed&&this.lockRenewalTimer!==void 0}cancelJob(e,r){let n=this.trackedJobs.get(e);return n?.abortController?(n.abortController.abort(r),!0):!1}cancelAllJobs(e){for(let r of this.trackedJobs.values())r.abortController&&r.abortController.abort(e)}getTrackedJobIds(){return Array.from(this.trackedJobs.keys())}};ev.LockManager=Wk});var f9=y(rv=>{"use strict";Object.defineProperty(rv,"__esModule",{value:!0});rv.QueueEvents=void 0;var d9=(nr(),Mt(rr)),tv=Kr(),DOe=ro(),p9=Hd(),Qk=class extends DOe.QueueBase{constructor(e,r={connection:{}},n){var{connection:i,autorun:s=!0}=r,o=d9.__rest(r,["connection","autorun"]);super(e,Object.assign(Object.assign({},o),{connection:(0,tv.isRedisInstance)(i)?((0,p9.isIRedisClient)(i)?i:(0,p9.createIORedisClient)(i)).duplicate():i}),n,!0),this.running=!1,this.blocking=!1,this.opts=Object.assign({blockingTimeout:1e4},this.opts),s&&this.run().catch(a=>this.emit("error",a))}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}async run(){if(this.running)throw new Error("Queue Events is already running.");try{this.running=!0;let e=await this.client;try{await e.clientSetName(this.clientName(tv.QUEUE_EVENT_SUFFIX))}catch(r){if(!tv.clientCommandMessageReg.test(r.message)&&!this.closing)throw r}await this.consumeEvents(e)}catch(e){throw this.running=!1,e}}async consumeEvents(e){let r=this.opts,n=this.keys.events,i=r.lastEventId||"$";for(;!this.closing;){this.blocking=!0;let s=await this.checkConnectionError(()=>e.xread([{key:n,id:i}],{BLOCK:r.blockingTimeout}));if(this.blocking=!1,s){let a=s[0][1];for(let c=0;c<a.length;c++){i=a[c][0];let l=(0,tv.array2obj)(a[c][1]);switch(l.event){case"progress":l.data=JSON.parse(l.data);break;case"completed":l.returnvalue=JSON.parse(l.returnvalue);break;case"delayed":l.delay=Number(l.delay);break}let{event:u}=l,d=d9.__rest(l,["event"]);u==="drained"?this.emit(u,i):(this.emit(u,d,i),d.jobId&&this.emit(`${u}:${d.jobId}`,d,i))}}}}async close(){return this.closing||(this.closing=(async()=>{try{(await this.client).disconnect(),await this.connection.close(this.blocking)}finally{this.closed=!0}})()),this.closing}};rv.QueueEvents=Qk});var m9=y(nv=>{"use strict";Object.defineProperty(nv,"__esModule",{value:!0});nv.QueueEventsProducer=void 0;var jOe=(nr(),Mt(rr)),KOe=ro(),Xk=class extends KOe.QueueBase{constructor(e,r={connection:{}},n){super(e,Object.assign({blockingConnection:!1},r),n),this.opts=r}async publishEvent(e,r=1e3){let n=await this.client,i=this.keys.events,{eventName:s}=e,o=jOe.__rest(e,["eventName"]),a=Object.assign({event:s},o);await n.xadd(i,"*",a,{MAXLEN:r,approximate:!0})}async close(){this.closing||(this.closing=this.connection.close()),await this.closing}};nv.QueueEventsProducer=Xk});var rR=y(iv=>{"use strict";Object.defineProperty(iv,"__esModule",{value:!0});iv.QueueGetters=void 0;var LOe=(nr(),Mt(rr)),NOe=ro(),Zk=Kr(),eR=wr();function h9(t){return String(t).replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}var tR=class extends NOe.QueueBase{getJob(e){return this.Job.fromId(this,e)}commandByType(e,r,n){return e.map(i=>{i=i==="waiting"?"wait":i;let s=this.toKey(i);switch(i){case"completed":case"failed":case"delayed":case"prioritized":case"repeat":case"waiting-children":return n(s,r?"zcard":"zrange");case"active":case"wait":case"paused":return n(s,r?"llen":"lrange")}})}sanitizeJobTypes(e){let r=typeof e=="string"?[e]:e;if(Array.isArray(r)&&r.length>0){let n=[...r];return n.indexOf("waiting")!==-1&&n.push("paused"),[...new Set(n)]}return["active","completed","delayed","failed","paused","prioritized","waiting","waiting-children"]}async count(){return await this.getJobCountByTypes("waiting","paused","delayed","prioritized","waiting-children")}async getRateLimitTtl(e){return this.scripts.getRateLimitTtl(e)}async getDebounceJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getDeduplicationJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getGlobalConcurrency(){let r=await(await this.client).hget(this.keys.meta,"concurrency");return r?Number(r):null}async getGlobalRateLimit(){let e=await this.client,[r,n]=await e.hmget(this.keys.meta,"max","duration");return r&&n?{max:Number(r),duration:Number(n)}:null}async getJobCountByTypes(...e){let r=await this.getJobCounts(...e);return Object.values(r).reduce((n,i)=>n+i,0)}async getJobCounts(...e){let r=this.sanitizeJobTypes(e),n=await this.scripts.getCounts(r),i={};return n.forEach((s,o)=>{i[r[o]]=s||0}),i}async recordJobCountsMetric(...e){var r;let n=await this.getJobCounts(...e),i=(r=this.opts.telemetry)===null||r===void 0?void 0:r.meter;if(i&&typeof i.createGauge=="function"){let s=i.createGauge(eR.MetricNames.QueueJobsCount,{description:"Number of jobs in the queue by state",unit:"{jobs}"});for(let[o,a]of Object.entries(n))s.record(a,{[eR.TelemetryAttributes.QueueName]:this.name,[eR.TelemetryAttributes.QueueJobsState]:o})}return n}getJobState(e){return this.scripts.getState(e)}async getMeta(){let r=await(await this.client).hgetall(this.keys.meta),{concurrency:n,max:i,duration:s,paused:o,"opts.maxLenEvents":a}=r,l=LOe.__rest(r,["concurrency","max","duration","paused","opts.maxLenEvents"]);return n&&(l.concurrency=Number(n)),a&&(l.maxLenEvents=Number(a)),i&&(l.max=Number(i)),s&&(l.duration=Number(s)),l.paused=o==="1",l}getCompletedCount(){return this.getJobCountByTypes("completed")}getFailedCount(){return this.getJobCountByTypes("failed")}getDelayedCount(){return this.getJobCountByTypes("delayed")}getActiveCount(){return this.getJobCountByTypes("active")}getPrioritizedCount(){return this.getJobCountByTypes("prioritized")}async getCountsPerPriority(e){let r=[...new Set(e)],n=await this.scripts.getCountsPerPriority(r),i={};return n.forEach((s,o)=>{i[`${r[o]}`]=s||0}),i}getWaitingCount(){return this.getJobCountByTypes("waiting")}getWaitingChildrenCount(){return this.getJobCountByTypes("waiting-children")}getWaiting(e=0,r=-1){return this.getJobs(["waiting"],e,r,!0)}getWaitingChildren(e=0,r=-1){return this.getJobs(["waiting-children"],e,r,!0)}getActive(e=0,r=-1){return this.getJobs(["active"],e,r,!0)}getDelayed(e=0,r=-1){return this.getJobs(["delayed"],e,r,!0)}getPrioritized(e=0,r=-1){return this.getJobs(["prioritized"],e,r,!0)}getCompleted(e=0,r=-1){return this.getJobs(["completed"],e,r,!1)}getFailed(e=0,r=-1){return this.getJobs(["failed"],e,r,!1)}async getDependencies(e,r,n,i){let s=this.toKey(r=="processed"?`${e}:processed`:`${e}:dependencies`),{items:o,total:a,jobs:c}=await this.scripts.paginate(s,{start:n,end:i,fetchJobs:!0});return{items:o,jobs:c,total:a}}async getRanges(e,r=0,n=1,i=!1){let s=[];this.commandByType(e,!1,(c,l)=>{switch(l){case"lrange":s.push("lrange");break;case"zrange":s.push("zrange");break}});let o=await this.scripts.getRanges(e,r,n,i),a=[];return o.forEach((c,l)=>{let u=c||[];i&&s[l]==="lrange"?a=a.concat(u.reverse()):a=a.concat(u)}),[...new Set(a)]}async getJobs(e,r=0,n=-1,i=!1){let s=this.sanitizeJobTypes(e);return(await this.scripts.getJobs(s,r,n,i)).reduce((a,c)=>{for(let[l,u]of c||[])a.push(this.Job.fromJSON(this,(0,Zk.array2obj)(u),l));return a},[])}async getJobLogs(e,r=0,n=-1,i=!0){let o=(await this.client).multi(),a=this.toKey(e+":logs");i?o.lrange(a,r,n):o.lrange(a,-(n+1),-(r+1)),o.llen(a);let c=await o.exec();return i||c[0][1].reverse(),{logs:c[0][1],count:c[1][1]}}async baseGetClients(e){let r=await this.client;try{if(r.isCluster&&typeof r.nodes=="function"){let n=r.nodes(),i=[];for(let o=0;o<n.length;o++){let a=n[o],c=typeof a.clientList=="function"?await a.clientList():await a.client("LIST"),l=this.parseClientList(c,e);i.push(l)}return i.reduce((o,a)=>o.length>a.length?o:a,[])}else{let n=await r.clientList();return this.parseClientList(n,e)}}catch(n){if(!Zk.clientCommandMessageReg.test(n.message))throw n;return[{name:"GCP does not support client list"}]}}getWorkers(){let e=`${this.clientName()}`,r=`${this.clientName()}:w:`,n=i=>i&&(i===e||i.startsWith(r));return this.baseGetClients(n)}async getWorkersCount(){return(await this.getWorkers()).length}async getQueueEvents(){let e=`${this.clientName()}${Zk.QUEUE_EVENT_SUFFIX}`;return this.baseGetClients(r=>r===e)}async getMetrics(e,r=0,n=-1){let[i,s,o]=await this.scripts.getMetrics(e,r,n);return{meta:{count:parseInt(i[0]||"0",10),prevTS:parseInt(i[1]||"0",10),prevCount:parseInt(i[2]||"0",10)},data:s.map(a=>+a||0),count:o}}parseClientList(e,r){let n=e.split(/\r?\n/),i=[];return n.forEach(s=>{let o={};s.split(" ").forEach(function(l){let u=l.indexOf("="),d=l.substring(0,u),p=l.substring(u+1);o[d]=p});let c=o.name;r(c)&&(o.name=this.name,o.rawname=c,i.push(o))}),i}async exportPrometheusMetrics(e){let r=await this.getJobCounts(),n=[];n.push("# HELP bullmq_job_count Number of jobs in the queue by state"),n.push("# TYPE bullmq_job_count gauge");let i=h9(this.name),s=e?Object.keys(e).reduce((c,l)=>`${c}, ${l}="${h9(e[l])}"`,""):"";for(let[c,l]of Object.entries(r))n.push(`bullmq_job_count{queue="${i}", state="${c}"${s}} ${l}`);let[o,a]=await Promise.all([this.getMetrics("completed"),this.getMetrics("failed")]);return n.push("# HELP bullmq_job_completed_total Total number of completed jobs"),n.push("# TYPE bullmq_job_completed_total counter"),n.push(`bullmq_job_completed_total{queue="${i}"${s}} ${o.meta.count}`),n.push("# HELP bullmq_job_failed_total Total number of failed jobs"),n.push("# TYPE bullmq_job_failed_total counter"),n.push(`bullmq_job_failed_total{queue="${i}"${s}} ${a.meta.count}`),n.join(`
9546
+ `)}};iv.QueueGetters=tR});var sv=y(xa=>{"use strict";Object.defineProperty(xa,"__esModule",{value:!0});xa.getNextMillis=xa.Repeat=void 0;var qOe=(nr(),Mt(rr)),UOe=zk(),FOe=require("crypto"),$Oe=ro(),nR=class extends $Oe.QueueBase{constructor(e,r,n){super(e,r,n),this.repeatStrategy=r.settings&&r.settings.repeatStrategy||xa.getNextMillis,this.repeatKeyHashAlgorithm=r.settings&&r.settings.repeatKeyHashAlgorithm||"md5"}async updateRepeatableJob(e,r,n,{override:i}){var s,o;let a=Object.assign({},n.repeat);(s=a.pattern)!==null&&s!==void 0||(a.pattern=a.cron),delete a.cron;let c=a.count?a.count+1:1;if(typeof a.limit<"u"&&c>a.limit)return;let l=Date.now(),{endDate:u}=a;if(u&&l>new Date(u).getTime())return;let d=n.prevMillis||0;l=d<l?l:d;let p=await this.repeatStrategy(l,a,e),{every:f,pattern:m}=a,h=!!((f||m)&&a.immediately),b=h&&f?l-p:void 0;if(p){!d&&n.jobId&&(a.jobId=n.jobId);let v=y9(e,a),E=(o=n.repeat.key)!==null&&o!==void 0?o:this.hash(v),_;if(i)_=await this.scripts.addRepeatableJob(E,p,{name:e,endDate:u?new Date(u).getTime():void 0,tz:a.tz,pattern:m,every:f},v);else{let O=await this.client;_=await this.scripts.updateRepeatableJobMillis(O,E,p,v)}let{immediately:I}=a,w=qOe.__rest(a,["immediately"]);return this.createNextJob(e,p,_,Object.assign(Object.assign({},n),{repeat:Object.assign({offset:b},w)}),r,c,h)}}async createNextJob(e,r,n,i,s,o,a){let c=this.getRepeatJobKey(e,r,n,s),l=Date.now(),u=r+(i.repeat.offset?i.repeat.offset:0)-l,d=Object.assign(Object.assign({},i),{jobId:c,delay:u<0||a?0:u,timestamp:l,prevMillis:r,repeatJobKey:n});return d.repeat=Object.assign(Object.assign({},i.repeat),{count:o}),this.Job.create(this,e,s,d)}getRepeatJobKey(e,r,n,i){return n.split(":").length>2?this.getRepeatJobId({name:e,nextMillis:r,namespace:this.hash(n),jobId:i?.id}):this.getRepeatDelayedJobId({customKey:n,nextMillis:r})}async removeRepeatable(e,r,n){var i;let s=y9(e,Object.assign(Object.assign({},r),{jobId:n})),o=(i=r.key)!==null&&i!==void 0?i:this.hash(s),a=this.getRepeatJobId({name:e,nextMillis:"",namespace:this.hash(s),jobId:n??r.jobId,key:r.key});return this.scripts.removeRepeatable(a,s,o)}async removeRepeatableByKey(e){let r=this.keyToData(e),n=this.getRepeatJobId({name:r.name,nextMillis:"",namespace:this.hash(e),jobId:r.id});return this.scripts.removeRepeatable(n,"",e)}async getRepeatableData(e,r,n){let i=await e.hgetall(this.toKey("repeat:"+r));return i?{key:r,name:i.name,endDate:parseInt(i.endDate)||null,tz:i.tz||null,pattern:i.pattern||null,every:i.every||null,next:n}:this.keyToData(r,n)}keyToData(e,r){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:r}}async getRepeatableJobs(e=0,r=-1,n=!1){let i=await this.client,s=this.keys.repeat,o=n?await i.zrange(s,e,r,{WITHSCORES:!0}):await i.zrevrange(s,e,r,{WITHSCORES:!0}),a=[];for(let c=0;c<o.length;c+=2)a.push(this.getRepeatableData(i,o[c],parseInt(o[c+1])));return Promise.all(a)}async getRepeatableCount(){return(await this.client).zcard(this.toKey("repeat"))}hash(e){return(0,FOe.createHash)(this.repeatKeyHashAlgorithm).update(e).digest("hex")}getRepeatDelayedJobId({nextMillis:e,customKey:r}){return`repeat:${r}:${e}`}getRepeatJobId({name:e,nextMillis:r,namespace:n,jobId:i,key:s}){return`repeat:${s??this.hash(`${e}${i||""}${n}`)}:${r}`}};xa.Repeat=nR;function y9(t,e){let r=e.endDate?new Date(e.endDate).getTime():"",n=e.tz||"",i=e.pattern,s=i||String(e.every)||"",o=e.jobId?e.jobId:"";return`${t}:${o}:${r}:${n}:${s}`}var JOe=(t,e)=>{let r=e.pattern;if(r&&e.every)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(e.every)return Math.floor(t/e.every)*e.every+(e.immediately?0:e.every);let n=e.startDate&&new Date(e.startDate)>new Date(t)?new Date(e.startDate):new Date(t),i=(0,UOe.parseExpression)(r,Object.assign(Object.assign({},e),{currentDate:n}));try{return e.immediately?new Date().getTime():i.next().getTime()}catch{}};xa.getNextMillis=JOe});var g9=y(ov=>{"use strict";Object.defineProperty(ov,"__esModule",{value:!0});ov.Queue=void 0;var GOe=sl(),BOe=rR(),zOe=sv(),pe=wr(),HOe=Xb(),VOe=Qy(),WOe=Kr(),iR=class extends BOe.QueueGetters{constructor(e,r,n){var i;super(e,Object.assign({},r),n),this.token=(0,WOe.randomUUID)(),this.libName="bullmq",this.jobsOpts=(i=r?.defaultJobOptions)!==null&&i!==void 0?i:{},this.waitUntilReady().then(s=>{if(!this.closing&&!r?.skipMetasUpdate)return s.hset(this.keys.meta,this.metaValues)}).catch(s=>{})}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}get defaultJobOptions(){return Object.assign({},this.jobsOpts)}get metaValues(){var e,r,n,i;return{"opts.maxLenEvents":(i=(n=(r=(e=this.opts)===null||e===void 0?void 0:e.streams)===null||r===void 0?void 0:r.events)===null||n===void 0?void 0:n.maxLen)!==null&&i!==void 0?i:1e4,version:`${this.libName}:${VOe.version}`}}async getVersion(){return await(await this.client).hget(this.keys.meta,"version")}get repeat(){return new Promise(async e=>{this._repeat||(this._repeat=new zOe.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._repeat.on("error",this.emit.bind(this,"error"))),e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{this._jobScheduler||(this._jobScheduler=new HOe.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._jobScheduler.on("error",this.emit.bind(this,"error"))),e(this._jobScheduler)})}async setGlobalConcurrency(e){return(await this.client).hset(this.keys.meta,{concurrency:e})}async setGlobalRateLimit(e,r){return(await this.client).hset(this.keys.meta,{max:e,duration:r})}async removeGlobalConcurrency(){return(await this.client).hdel(this.keys.meta,"concurrency")}async removeGlobalRateLimit(){return(await this.client).hdel(this.keys.meta,"max","duration")}async add(e,r,n){return this.trace(pe.SpanKind.PRODUCER,"add",`${this.name}.${e}`,async(i,s)=>{var o;if(s&&!(!((o=n?.telemetry)===null||o===void 0)&&o.omitContext)){let c={metadata:s};n=Object.assign(Object.assign({},n),{telemetry:c})}let a=await this.addJob(e,r,n);return i?.setAttributes({[pe.TelemetryAttributes.JobName]:e,[pe.TelemetryAttributes.JobId]:a.id}),a})}async addJob(e,r,n){if(n&&n.repeat){if(n.repeat.endDate&&+new Date(n.repeat.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.repeat).updateRepeatableJob(e,r,Object.assign(Object.assign({},this.jobsOpts),n),{override:!0})}else{let i=n?.jobId;if(i=="0"||i?.startsWith("0:"))throw new Error("JobId cannot be '0' or start with 0:");let s=Object.assign(Object.assign(Object.assign({},this.jobsOpts),n),{jobId:i}),o=await this.Job.create(this,e,r,s);return this.emit("waiting",o),o}}async addBulk(e){return this.trace(pe.SpanKind.PRODUCER,"addBulk",this.name,async(r,n)=>(r&&r.setAttributes({[pe.TelemetryAttributes.BulkNames]:e.map(i=>i.name),[pe.TelemetryAttributes.BulkCount]:e.length}),await this.Job.createBulk(this,e.map(i=>{var s,o,a,c,l,u;let d=(s=i.opts)===null||s===void 0?void 0:s.telemetry;if(n){let f=(a=(o=i.opts)===null||o===void 0?void 0:o.telemetry)===null||a===void 0?void 0:a.omitContext,m=((l=(c=i.opts)===null||c===void 0?void 0:c.telemetry)===null||l===void 0?void 0:l.metadata)||!f&&n;(m||f)&&(d={metadata:m,omitContext:f})}let p=Object.assign(Object.assign(Object.assign({},this.jobsOpts),i.opts),{jobId:(u=i.opts)===null||u===void 0?void 0:u.jobId,telemetry:d});return{name:i.name,data:i.data,opts:p}}))))}async upsertJobScheduler(e,r,n){var i,s;if(r.endDate&&+new Date(r.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.jobScheduler).upsertJobScheduler(e,r,(i=n?.name)!==null&&i!==void 0?i:e,(s=n?.data)!==null&&s!==void 0?s:{},Object.assign(Object.assign({},this.jobsOpts),n?.opts),{override:!0})}async pause(){await this.trace(pe.SpanKind.INTERNAL,"pause",this.name,async()=>{await this.scripts.pause(!0),this.emit("paused")})}async close(){await this.trace(pe.SpanKind.INTERNAL,"close",this.name,async()=>{this.closing||this._repeat&&await this._repeat.close(),await super.close()})}async rateLimit(e){await this.trace(pe.SpanKind.INTERNAL,"rateLimit",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,{PX:e}))})}async resume(){await this.trace(pe.SpanKind.INTERNAL,"resume",this.name,async()=>{await this.scripts.pause(!1),this.emit("resumed")})}async isPaused(){return await(await this.client).hexists(this.keys.meta,"paused")===1}isMaxed(){return this.scripts.isMaxed()}async getRepeatableJobs(e,r,n){return(await this.repeat).getRepeatableJobs(e,r,n)}async getJobScheduler(e){return(await this.jobScheduler).getScheduler(e)}async getJobSchedulers(e,r,n){return(await this.jobScheduler).getJobSchedulers(e,r,n)}async getJobSchedulersCount(){return(await this.jobScheduler).getSchedulersCount()}async removeRepeatable(e,r,n){return this.trace(pe.SpanKind.INTERNAL,"removeRepeatable",`${this.name}.${e}`,async i=>(i?.setAttributes({[pe.TelemetryAttributes.JobName]:e,[pe.TelemetryAttributes.JobId]:n}),!await(await this.repeat).removeRepeatable(e,r,n)))}async removeJobScheduler(e){return!await(await this.jobScheduler).removeJobScheduler(e)}async removeDebounceKey(e){return this.trace(pe.SpanKind.INTERNAL,"removeDebounceKey",`${this.name}`,async r=>(r?.setAttributes({[pe.TelemetryAttributes.JobKey]:e}),await(await this.client).del(`${this.keys.de}:${e}`)))}async removeDeduplicationKey(e){return this.trace(pe.SpanKind.INTERNAL,"removeDeduplicationKey",`${this.name}`,async r=>(r?.setAttributes({[pe.TelemetryAttributes.DeduplicationKey]:e}),(await this.client).del(`${this.keys.de}:${e}`)))}async removeRateLimitKey(){return(await this.client).del(this.keys.limiter)}async removeRepeatableByKey(e){return this.trace(pe.SpanKind.INTERNAL,"removeRepeatableByKey",`${this.name}`,async r=>(r?.setAttributes({[pe.TelemetryAttributes.JobKey]:e}),!await(await this.repeat).removeRepeatableByKey(e)))}async remove(e,{removeChildren:r=!0}={}){return this.trace(pe.SpanKind.INTERNAL,"remove",this.name,async n=>{n?.setAttributes({[pe.TelemetryAttributes.JobId]:e,[pe.TelemetryAttributes.JobOptions]:JSON.stringify({removeChildren:r})});let i=await this.scripts.remove(e,r);return i===1&&this.emit("removed",e),i})}async updateJobProgress(e,r){await this.trace(pe.SpanKind.INTERNAL,"updateJobProgress",this.name,async n=>{n?.setAttributes({[pe.TelemetryAttributes.JobId]:e,[pe.TelemetryAttributes.JobProgress]:JSON.stringify(r)}),await this.scripts.updateProgress(e,r),this.emit("progress",e,r)})}async addJobLog(e,r,n){return GOe.Job.addJobLog(this,e,r,n)}async drain(e=!1){await this.trace(pe.SpanKind.INTERNAL,"drain",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueDrainDelay]:e}),await this.scripts.drain(e)})}async clean(e,r,n="completed"){return this.trace(pe.SpanKind.INTERNAL,"clean",this.name,async i=>{let s=r||1/0,o=Math.min(1e4,s),a=Date.now()-e,c=0,l=[],u=n==="waiting"?"wait":n;for(;c<s;){let d=await this.scripts.cleanJobsInSet(u,a,o);if(this.emit("cleaned",d,u),c+=d.length,l.push(...d),d.length<o)break}return i?.setAttributes({[pe.TelemetryAttributes.QueueGrace]:e,[pe.TelemetryAttributes.JobType]:n,[pe.TelemetryAttributes.QueueCleanLimit]:s,[pe.TelemetryAttributes.JobIds]:l}),l})}async obliterate(e){await this.trace(pe.SpanKind.INTERNAL,"obliterate",this.name,async()=>{await this.pause();let r=0;do r=await this.scripts.obliterate(Object.assign({force:!1,count:1e3},e));while(r)})}async retryJobs(e={}){await this.trace(pe.SpanKind.PRODUCER,"retryJobs",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.retryJobs(e.state,e.count,e.timestamp);while(n)})}async promoteJobs(e={}){await this.trace(pe.SpanKind.INTERNAL,"promoteJobs",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.promoteJobs(e.count);while(n)})}async trimEvents(e){return this.trace(pe.SpanKind.INTERNAL,"trimEvents",this.name,async r=>(r?.setAttributes({[pe.TelemetryAttributes.QueueEventMaxLength]:e}),await(await this.client).xtrim(this.keys.events,"MAXLEN",e,{approximate:!0})))}async removeDeprecatedPriorityKey(){return(await this.client).del(this.toKey("priority"))}async removeOrphanedJobs(e=1e3,r=0){let n=await this.client,i=new Set(Object.keys(this.keys)),s=Object.keys(this.keys).filter(d=>d!==""),o=["logs","dependencies","processed","failed","unsuccessful","lock"],a=this.qualifiedName+":",c=a+"*",l=0,u="0";do{let[d,p]=await n.scan(u,{MATCH:c,COUNT:e});u=d;let f=new Set;for(let h of p){let b=h.slice(a.length);if(i.has(b))continue;let v=b.indexOf(":");if(v!==-1){let _=b.slice(0,v);if(i.has(_))continue}let E=v===-1?b:b.slice(0,v);if(v!==-1){let _=b.slice(v+1);if(!o.includes(_))continue}f.add(E)}if(f.size===0)continue;let m=await this.scripts.removeOrphanedJobs([...f],s,o);if(l+=m||0,r>0&&l>=r)break}while(u!=="0");return l}};ov.Queue=iR});var oR=y(sR=>{"use strict";Object.defineProperty(sR,"__esModule",{value:!0});var vt=wr(),YOe=(t,e)=>async function(n,i,s){let o,a,c,l;try{let u=new Promise((d,p)=>{(async()=>{try{c=(m,h)=>{p(new Error("Unexpected exit code: "+m+" signal: "+h))},o=await e.retain(t),o.on("exit",c),a=async m=>{var h,b,v,E,_,I;try{switch(m.cmd){case vt.ParentCommand.Completed:d(m.value);break;case vt.ParentCommand.Failed:case vt.ParentCommand.Error:{let w=new Error;Object.assign(w,(h=m.value)!==null&&h!==void 0?h:m.err),p(w);break}case vt.ParentCommand.Progress:await n.updateProgress(m.value);break;case vt.ParentCommand.Log:await n.log(m.value);break;case vt.ParentCommand.MoveToDelayed:await n.moveToDelayed((b=m.value)===null||b===void 0?void 0:b.timestamp,(v=m.value)===null||v===void 0?void 0:v.token);break;case vt.ParentCommand.MoveToWait:await n.moveToWait((E=m.value)===null||E===void 0?void 0:E.token);break;case vt.ParentCommand.MoveToWaitingChildren:{let w=await n.moveToWaitingChildren((_=m.value)===null||_===void 0?void 0:_.token,(I=m.value)===null||I===void 0?void 0:I.opts);o.send({requestId:m.requestId,cmd:vt.ChildCommand.MoveToWaitingChildrenResponse,value:w})}break;case vt.ParentCommand.Update:await n.updateData(m.value);break;case vt.ParentCommand.GetChildrenValues:{let w=await n.getChildrenValues();o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetChildrenValuesResponse,value:w})}break;case vt.ParentCommand.GetIgnoredChildrenFailures:{let w=await n.getIgnoredChildrenFailures();o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetIgnoredChildrenFailuresResponse,value:w})}break;case vt.ParentCommand.GetDependenciesCount:{let w=await n.getDependenciesCount(m.value);o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetDependenciesCountResponse,value:w})}break;case vt.ParentCommand.GetDependencies:{let w=await n.getDependencies(m.value);o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetDependenciesResponse,value:w})}break}}catch(w){p(w)}},o.on("message",a),o.send({cmd:vt.ChildCommand.Start,job:n.asJSONSandbox(),token:i}),s&&(l=()=>{try{o.send({cmd:vt.ChildCommand.Cancel,value:s.reason})}catch{}},s.aborted?l():s.addEventListener("abort",l,{once:!0}))}catch(m){p(m)}})()});return await u,u}finally{s&&l&&s.removeEventListener("abort",l),o&&(o.off("message",a),o.off("exit",c),o.exitCode===null&&o.signalCode===null&&e.release(o))}};sR.default=YOe});var S9=y((cv,E9)=>{"use strict";Object.defineProperty(cv,"__esModule",{value:!0});cv.Worker=void 0;var av=require("fs"),QOe=require("url"),cp=require("path"),XOe=my(),es=Kr(),ZOe=ro(),eCe=sv(),tCe=A1(),rCe=Wd(),b9=Hd(),nCe=oR(),iCe=S1(),wa=Py(),fe=wr(),sCe=Xb(),oCe=Yk(),aCe=10;function v9(t){return t.status==="ready"||t.status==="connect"&&(0,es.isRedisCluster)(t)}var aR=class extends ZOe.QueueBase{static RateLimitError(){return new wa.RateLimitError}constructor(e,r,n,i){if(super(e,Object.assign(Object.assign({drainDelay:5,concurrency:1,lockDuration:3e4,maximumRateLimitDelay:3e4,maxStalledCount:1,stalledInterval:3e4,autorun:!0,runRetryDelay:15e3},n),{blockingConnection:!0}),i),this.abortDelayController=null,this.blockUntil=0,this.drained=!1,this.limitUntil=0,this.processorAcceptsSignal=!1,this.stalledCheckerRunning=!1,this.waiting=null,this.running=!1,this.mainLoopRunning=null,!n||!n.connection)throw new Error("Worker requires a connection");if(typeof this.opts.maxStalledCount!="number"||this.opts.maxStalledCount<0)throw new Error("maxStalledCount must be greater or equal than 0");if(typeof this.opts.maxStartedAttempts=="number"&&this.opts.maxStartedAttempts<0)throw new Error("maxStartedAttempts must be greater or equal than 0");if(typeof this.opts.stalledInterval!="number"||this.opts.stalledInterval<=0)throw new Error("stalledInterval must be greater than 0");if(typeof this.opts.drainDelay!="number"||this.opts.drainDelay<=0)throw new Error("drainDelay must be greater than 0");if(this.concurrency=this.opts.concurrency,this.opts.lockRenewTime=this.opts.lockRenewTime||this.opts.lockDuration/2,this.id=(0,es.randomUUID)(),this.createLockManager(),r){if(typeof r=="function")this.processFn=r,this.processorAcceptsSignal=r.length>=3;else{if(r instanceof QOe.URL){if(!av.existsSync(r))throw new Error(`URL ${r} does not exist in the local file system`);r=r.href}else{let d=r+([".js",".ts",".flow",".cjs",".mjs"].includes(cp.extname(r))?"":".js");if(!av.existsSync(d))throw new Error(`File ${d} does not exist`)}let o=cp.dirname(E9.filename||__CM_FILENAME__),a=cp.join(o,"main-worker.js"),c=cp.join(o,"main.js"),l=this.opts.useWorkerThreads?a:c;try{av.statSync(l)}catch{let d=this.opts.useWorkerThreads?"main-worker.js":"main.js";l=cp.join(process.cwd(),`dist/cjs/classes/${d}`),av.statSync(l)}this.childPool=new tCe.ChildPool({mainFile:l,useWorkerThreads:this.opts.useWorkerThreads,workerForkOptions:this.opts.workerForkOptions,workerThreadsOptions:this.opts.workerThreadsOptions}),this.createSandbox(r),this.processorAcceptsSignal=!0}this.opts.autorun&&this.run().catch(o=>this.emit("error",o))}let s=this.clientName()+(this.opts.name?`:w:${this.opts.name}`:"");this.blockingConnection=new rCe.RedisConnection((0,es.isRedisInstance)(n.connection)?((0,b9.isIRedisClient)(n.connection)?n.connection:(0,b9.createIORedisClient)(n.connection)).duplicate({connectionName:s}):Object.assign(Object.assign({},n.connection),{connectionName:s}),{shared:!1,blocking:!0,skipVersionCheck:n.skipVersionCheck}),(0,es.forwardConnectionError)(this,this.blockingConnection),this.blockingConnection.on("ready",()=>setTimeout(()=>this.emit("ready"),0))}createLockManager(){this.lockManager=new oCe.LockManager(this,{lockRenewTime:this.opts.lockRenewTime,lockDuration:this.opts.lockDuration,workerId:this.id,workerName:this.opts.name})}createSandbox(e){this.processFn=(0,nCe.default)(e,this.childPool).bind(this)}async extendJobLocks(e,r,n){return this.scripts.extendLocks(e,r,n)}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}callProcessJob(e,r,n){return this.processFn(e,r,n)}createJob(e,r){return this.Job.fromJSON(this,e,r)}async waitUntilReady(){return await super.waitUntilReady(),this.blockingConnection.client}cancelJob(e,r){return this.lockManager.cancelJob(e,r)}cancelAllJobs(e){this.lockManager.cancelAllJobs(e)}set concurrency(e){if(typeof e!="number"||e<1||!isFinite(e))throw new Error("concurrency must be a finite number greater than 0");this._concurrency=e}get concurrency(){return this._concurrency}get repeat(){return new Promise(async e=>{if(!this._repeat){let r=await this.client;this._repeat=new eCe.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:r})),this._repeat.on("error",this.emit.bind(this,"error"))}e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{if(!this._jobScheduler){let r=await this.client;this._jobScheduler=new sCe.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:r})),this._jobScheduler.on("error",this.emit.bind(this,"error"))}e(this._jobScheduler)})}async run(){if(!this.processFn)throw new Error("No process function is defined.");if(this.running)throw new Error("Worker is already running.");try{if(this.running=!0,this.closing||this.paused)return;await this.startStalledCheckTimer(),this.opts.skipLockRenewal||this.lockManager.start();let e=await this.client,r=await this.blockingConnection.client;this.mainLoopRunning=this.mainLoop(e,r),await this.mainLoopRunning}finally{this.running=!1}}async waitForRateLimit(){var e;let r=this.limitUntil;if(r>Date.now()){(e=this.abortDelayController)===null||e===void 0||e.abort(),this.abortDelayController=new XOe.AbortController;let n=this.getRateLimitDelay(r-Date.now());await this.delay(n,this.abortDelayController),this.drained=!1,this.limitUntil=0}}async mainLoop(e,r){let n=new iCe.AsyncFifoQueue,i=0;for(;!this.closing&&!this.paused||n.numTotal()>0;){for(;!this.closing&&!this.paused&&!this.waiting&&n.numTotal()<this._concurrency&&!this.isRateLimited();){let o=`${this.id}:${i++}`,a=this.retryIfFailed(()=>this._getNextJob(e,r,o,{block:!0}),{delayInMs:this.opts.runRetryDelay,onlyEmitError:!0});if(n.add(a),this.waiting&&n.numTotal()>1||!await a&&n.numTotal()>1||this.blockUntil)break}let s;do s=await n.fetch();while(!s&&n.numQueued()>0);if(s){let o=s.token;n.add(this.processJob(s,o,()=>n.numTotal()<=this._concurrency))}else n.numQueued()===0&&await this.waitForRateLimit()}}async getNextJob(e,{block:r=!0}={}){let n=await this.getTracedNextJob(e,{block:r});for(;n;){let i=this.getUnrecoverableErrorMessage(n);if(!i)break;await this.handleFailed(new wa.UnrecoverableError(i),n,e,()=>!1),n=await this.getTracedNextJob(e,{block:r})}return n}async getTracedNextJob(e,{block:r=!0}={}){var n,i;let s=await this._getNextJob(await this.client,await this.blockingConnection.client,e,{block:r});return this.trace(fe.SpanKind.INTERNAL,"getNextJob",this.name,async o=>(o?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.QueueName]:this.name,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerOptions]:JSON.stringify({block:r}),[fe.TelemetryAttributes.JobId]:s?.id}),s),(i=(n=s?.opts)===null||n===void 0?void 0:n.telemetry)===null||i===void 0?void 0:i.metadata)}async _getNextJob(e,r,n,{block:i=!0}={}){if(this.paused||this.closing)return;let s;if(this.drained&&i&&!this.limitUntil&&!this.waiting){this.waiting=this.waitForJob(r,this.blockUntil);try{this.blockUntil=await this.waiting,(this.blockUntil<=0||this.blockUntil-Date.now()<1)&&(s=await this.moveToActive(e,n,this.opts.name))}finally{this.waiting=null}}else this.isRateLimited()||(s=await this.moveToActive(e,n,this.opts.name));return s}async rateLimit(e){await this.trace(fe.SpanKind.INTERNAL,"rateLimit",this.name,async r=>{r?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,{PX:e}))})}get minimumBlockTimeout(){return this.blockingConnection.capabilities.canBlockFor1Ms?.001:.002}isRateLimited(){return this.limitUntil>Date.now()}async moveToActive(e,r,n){let[i,s,o,a]=await this.scripts.moveToActive(e,r,n);return this.updateDelays(o,a),this.nextJobFromJobData(i,s,r)}async waitForJob(e,r){if(this.paused)return 1/0;let n;try{if(!this.closing&&!this.isRateLimited()){let i=this.getBlockTimeout(r);if(i>0){i=this.blockingConnection.capabilities.canDoubleTimeout?i:Math.ceil(i);let s=!1,o=new Promise(c=>{n=setTimeout(()=>{s=!0,c(null)},i*1e3+1e3)});this.updateDelays();let a=await Promise.race([e.bzpopmin(this.keys.marker,i),o]);if(s&&!this.closing&&(v9(e)||await this.blockingConnection.reconnect(),v9(e)&&!this.closing&&(await this.blockingConnection.disconnect(!0),this.closing||await this.blockingConnection.reconnect())),a){let[,c,l]=a;if(c){let u=parseInt(l);return r&&u>r?r:u}}}return 0}}catch(i){if((0,es.isNotConnectionError)(i)&&this.emit("error",i),!this.closing&&e.status==="end")try{await e.connect()}catch(s){e.status==="end"&&(0,es.isNotConnectionError)(s)&&this.emit("error",s)}this.closing||await this.delay()}finally{clearTimeout(n)}return 1/0}getBlockTimeout(e){let r=this.opts;if(e){let n=e-Date.now();return n<=0?n:n<this.minimumBlockTimeout*1e3?this.minimumBlockTimeout:Math.min(n/1e3,aCe)}else return Math.max(r.drainDelay,this.minimumBlockTimeout)}getRateLimitDelay(e){return Math.min(e,this.opts.maximumRateLimitDelay)}async delay(e,r){await(0,es.delay)(e||es.DELAY_TIME_1,r)}updateDelays(e=0,r=0){let n=Math.max(e,0);n>0?this.limitUntil=Date.now()+n:this.limitUntil=0,this.blockUntil=Math.max(r,0)||0}async nextJobFromJobData(e,r,n){if(!e)this.drained||(this.emit("drained"),this.drained=!0);else{this.drained=!1;let i=this.createJob(e,r);i.token=n;try{await this.retryIfFailed(async()=>{let s=!!i.repeatJobKey,o=s&&i.repeatJobKey.split(":").length>=5,a=s&&!o;o&&(a=await(await this.jobScheduler).isJobScheduler(i.repeatJobKey)),a?await(await this.jobScheduler).upsertJobScheduler(i.repeatJobKey,i.opts.repeat,i.name,i.data,i.opts,{override:!1,producerId:i.id}):i.opts.repeat&&await(await this.repeat).updateRepeatableJob(i.name,i.data,i.opts,{override:!1})},{delayInMs:this.opts.runRetryDelay})}catch(s){let o=s instanceof Error?s.message:String(s),a=new Error(`Failed to add repeatable job for next iteration: ${o}`);this.emit("error",a);return}return this.emit("active",i,"waiting"),i}}async processJob(e,r,n=()=>!0){var i,s;let o=(s=(i=e.opts)===null||i===void 0?void 0:i.telemetry)===null||s===void 0?void 0:s.metadata;return this.trace(fe.SpanKind.CONSUMER,"process",this.name,async a=>{a?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.JobId]:e.id,[fe.TelemetryAttributes.JobName]:e.name});let c=this.lockManager.trackJob(e.id,r,e.processedOn,this.processorAcceptsSignal);try{let l=this.getUnrecoverableErrorMessage(e);if(l)return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(new wa.UnrecoverableError(l),e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a});let u=await this.callProcessJob(e,r,c?c.signal:void 0);return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleCompleted(u,e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a})}catch(l){return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(l,e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a,onlyEmitError:!0})}finally{this.lockManager.untrackJob(e.id);let l=Date.now();a?.setAttributes({[fe.TelemetryAttributes.JobFinishedTimestamp]:l,[fe.TelemetryAttributes.JobAttemptFinishedTimestamp]:e.finishedOn||l,[fe.TelemetryAttributes.JobProcessedTimestamp]:e.processedOn})}},o)}getUnrecoverableErrorMessage(e){if(e.deferredFailure)return e.deferredFailure;if(this.opts.maxStartedAttempts&&this.opts.maxStartedAttempts<e.attemptsStarted)return"job started more than allowable limit"}async handleCompleted(e,r,n,i=()=>!0,s){if(!this.connection.closing){let o=await r.moveToCompleted(e,n,i()&&!(this.closing||this.paused));if(this.emit("completed",r,e,"active"),s?.addEvent("job completed",{[fe.TelemetryAttributes.JobResult]:JSON.stringify(e)}),s?.setAttributes({[fe.TelemetryAttributes.JobAttemptsMade]:r.attemptsMade}),Array.isArray(o)){let[a,c,l,u]=o;return this.updateDelays(l,u),this.nextJobFromJobData(a,c,n)}}}async handleFailed(e,r,n,i=()=>!0,s){if(!this.connection.closing){if(e.message===wa.RATE_LIMIT_ERROR){let c=await this.moveLimitedBackToWait(r,n);this.limitUntil=c>0?Date.now()+c:0;return}let o=i()&&!(this.closing||this.paused);if(e instanceof wa.DelayedError||e.name=="DelayedError"||e instanceof wa.WaitingError||e.name=="WaitingError"||e instanceof wa.WaitingChildrenError||e.name=="WaitingChildrenError"){if(!o)return;let c=await this.client;return this.moveToActive(c,n,this.opts.name)}let a=await r.moveToFailed(e,n,o);if(this.emit("failed",r,e,"active"),s?.addEvent("job failed",{[fe.TelemetryAttributes.JobFailedReason]:e.message}),s?.setAttributes({[fe.TelemetryAttributes.JobAttemptsMade]:r.attemptsMade}),Array.isArray(a)){let[c,l,u,d]=a;return this.updateDelays(u,d),this.nextJobFromJobData(c,l,n)}}}async pause(e){await this.trace(fe.SpanKind.INTERNAL,"pause",this.name,async r=>{var n;r?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerDoNotWaitActive]:e}),this.paused||(this.paused=!0,e||await this.whenCurrentJobsFinished(),(n=this.stalledCheckStopper)===null||n===void 0||n.call(this),this.emit("paused"))})}resume(){(!this.running||this.paused)&&this.trace(fe.SpanKind.INTERNAL,"resume",this.name,e=>{e?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name}),this.paused=!1,this.running?this.startStalledCheckTimer().catch(r=>{this.emit("error",r)}):this.processFn&&this.run(),this.emit("resumed")}).catch(e=>{this.emit("error",e)})}isPaused(){return!!this.paused}isRunning(){return this.running}async close(e=!1){return this.closing?this.closing:(this.closing=(async()=>{await this.trace(fe.SpanKind.INTERNAL,"close",this.name,async r=>{var n,i;r?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerForceClose]:e}),this.emit("closing","closing queue"),(n=this.abortDelayController)===null||n===void 0||n.abort();let s=[()=>e||this.whenCurrentJobsFinished(!1),()=>this.lockManager.close(),()=>{var o;return(o=this.childPool)===null||o===void 0?void 0:o.clean()},()=>this.blockingConnection.close(e),()=>this.connection.close(e)];for(let o of s)try{await o()}catch(a){this.emit("error",a)}(i=this.stalledCheckStopper)===null||i===void 0||i.call(this),this.closed=!0,this.emit("closed")})})(),await this.closing)}async startStalledCheckTimer(){this.opts.skipStalledCheck||!this.closing&&!this.stalledCheckerRunning&&await this.trace(fe.SpanKind.INTERNAL,"startStalledCheckTimer",this.name,async e=>{e?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name}),this.stalledCheckerRunning=!0,this.stalledChecker().catch(r=>{this.emit("error",r)}).finally(()=>{this.stalledCheckerRunning=!1})})}async stalledChecker(){for(;!(this.closing||this.paused);)await this.checkConnectionError(()=>this.moveStalledJobsToWait()),await new Promise(e=>{let r=setTimeout(e,this.opts.stalledInterval);this.stalledCheckStopper=()=>{clearTimeout(r),e()}})}async whenCurrentJobsFinished(e=!0){this.mainLoopRunning?(await this.blockingConnection.disconnect(!0),await this.mainLoopRunning):e=!1,e&&await this.blockingConnection.reconnect()}async retryIfFailed(e,r){var n;let i=0,s=r.maxRetries||1/0;do try{return await e()}catch(o){if((n=r.span)===null||n===void 0||n.recordException(o.message),(0,es.isNotConnectionError)(o)){if(!this.paused&&!this.closing&&this.emit("error",o),r.onlyEmitError)return;throw o}else if(r.delayInMs&&!this.closing&&!this.closed&&await this.delay(r.delayInMs,this.abortDelayController),i+1>=s)throw o}while(++i<s)}async moveStalledJobsToWait(){await this.trace(fe.SpanKind.INTERNAL,"moveStalledJobsToWait",this.name,async e=>{let r=await this.scripts.moveStalledJobsToWait();e?.setAttributes({[fe.TelemetryAttributes.WorkerId]:this.id,[fe.TelemetryAttributes.WorkerName]:this.opts.name,[fe.TelemetryAttributes.WorkerStalledJobs]:r}),r.forEach(n=>{e?.addEvent("job stalled",{[fe.TelemetryAttributes.JobId]:n}),this.emit("stalled",n,"active")})})}moveLimitedBackToWait(e,r){return e.moveToWait(r)}};cv.Worker=aR});var _9=y(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});var Qe=(nr(),Mt(rr));Qe.__exportStar(S1(),Je);Qe.__exportStar(_1(),Je);Qe.__exportStar(w1(),Je);Qe.__exportStar(A1(),Je);Qe.__exportStar(i6(),Je);Qe.__exportStar(Py(),Je);Qe.__exportStar(f5(),Je);Qe.__exportStar(Hd(),Je);Qe.__exportStar(h5(),Je);Qe.__exportStar(b5(),Je);Qe.__exportStar(x5(),Je);Qe.__exportStar(sl(),Je);Qe.__exportStar(Xb(),Je);Qe.__exportStar(Yk(),Je);Qe.__exportStar(ro(),Je);Qe.__exportStar(f9(),Je);Qe.__exportStar(m9(),Je);Qe.__exportStar(rR(),Je);Qe.__exportStar(tg(),Je);Qe.__exportStar(g9(),Je);Qe.__exportStar(Wd(),Je);Qe.__exportStar(sv(),Je);Qe.__exportStar(oR(),Je);Qe.__exportStar(RT(),Je);Qe.__exportStar(S9(),Je)});var w9=y(x9=>{"use strict";Object.defineProperty(x9,"__esModule",{value:!0})});var T9=y(I9=>{"use strict";Object.defineProperty(I9,"__esModule",{value:!0})});var k9=y(A9=>{"use strict";Object.defineProperty(A9,"__esModule",{value:!0})});var O9=y(R9=>{"use strict";Object.defineProperty(R9,"__esModule",{value:!0})});var P9=y(C9=>{"use strict";Object.defineProperty(C9,"__esModule",{value:!0})});var D9=y(M9=>{"use strict";Object.defineProperty(M9,"__esModule",{value:!0})});var K9=y(j9=>{"use strict";Object.defineProperty(j9,"__esModule",{value:!0})});var N9=y(L9=>{"use strict";Object.defineProperty(L9,"__esModule",{value:!0})});var U9=y(q9=>{"use strict";Object.defineProperty(q9,"__esModule",{value:!0})});var $9=y(F9=>{"use strict";Object.defineProperty(F9,"__esModule",{value:!0})});var G9=y(J9=>{"use strict";Object.defineProperty(J9,"__esModule",{value:!0})});var z9=y(B9=>{"use strict";Object.defineProperty(B9,"__esModule",{value:!0})});var V9=y(H9=>{"use strict";Object.defineProperty(H9,"__esModule",{value:!0})});var Y9=y(W9=>{"use strict";Object.defineProperty(W9,"__esModule",{value:!0})});var X9=y(Q9=>{"use strict";Object.defineProperty(Q9,"__esModule",{value:!0})});var eV=y(Z9=>{"use strict";Object.defineProperty(Z9,"__esModule",{value:!0})});var rV=y(tV=>{"use strict";Object.defineProperty(tV,"__esModule",{value:!0})});var iV=y(nV=>{"use strict";Object.defineProperty(nV,"__esModule",{value:!0})});var oV=y(lv=>{"use strict";Object.defineProperty(lv,"__esModule",{value:!0});lv.ClientType=void 0;var sV;(function(t){t.blocking="blocking",t.normal="normal"})(sV||(lv.ClientType=sV={}))});var cV=y(aV=>{"use strict";Object.defineProperty(aV,"__esModule",{value:!0})});var uV=y(lV=>{"use strict";Object.defineProperty(lV,"__esModule",{value:!0})});var pV=y(dV=>{"use strict";Object.defineProperty(dV,"__esModule",{value:!0})});var mV=y(fV=>{"use strict";Object.defineProperty(fV,"__esModule",{value:!0})});var yV=y(hV=>{"use strict";Object.defineProperty(hV,"__esModule",{value:!0})});var bV=y(gV=>{"use strict";Object.defineProperty(gV,"__esModule",{value:!0})});var EV=y(vV=>{"use strict";Object.defineProperty(vV,"__esModule",{value:!0})});var _V=y(SV=>{"use strict";Object.defineProperty(SV,"__esModule",{value:!0})});var wV=y(xV=>{"use strict";Object.defineProperty(xV,"__esModule",{value:!0})});var TV=y(IV=>{"use strict";Object.defineProperty(IV,"__esModule",{value:!0})});var kV=y(AV=>{"use strict";Object.defineProperty(AV,"__esModule",{value:!0})});var OV=y(RV=>{"use strict";Object.defineProperty(RV,"__esModule",{value:!0})});var PV=y(CV=>{"use strict";Object.defineProperty(CV,"__esModule",{value:!0})});var DV=y(MV=>{"use strict";Object.defineProperty(MV,"__esModule",{value:!0})});var KV=y(jV=>{"use strict";Object.defineProperty(jV,"__esModule",{value:!0})});var LV=y(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});var Te=(nr(),Mt(rr));Te.__exportStar(w9(),Se);Te.__exportStar(T9(),Se);Te.__exportStar(k9(),Se);Te.__exportStar(O9(),Se);Te.__exportStar(P9(),Se);Te.__exportStar(D9(),Se);Te.__exportStar(K9(),Se);Te.__exportStar(N9(),Se);Te.__exportStar(U9(),Se);Te.__exportStar($9(),Se);Te.__exportStar(G9(),Se);Te.__exportStar(z9(),Se);Te.__exportStar(V9(),Se);Te.__exportStar(Y9(),Se);Te.__exportStar(X9(),Se);Te.__exportStar(eV(),Se);Te.__exportStar(rV(),Se);Te.__exportStar(iV(),Se);Te.__exportStar(oV(),Se);Te.__exportStar(cV(),Se);Te.__exportStar(uV(),Se);Te.__exportStar(pV(),Se);Te.__exportStar(mV(),Se);Te.__exportStar(yV(),Se);Te.__exportStar(bV(),Se);Te.__exportStar(EV(),Se);Te.__exportStar(_V(),Se);Te.__exportStar(wV(),Se);Te.__exportStar(TV(),Se);Te.__exportStar(kV(),Se);Te.__exportStar(OV(),Se);Te.__exportStar(PV(),Se);Te.__exportStar(DV(),Se);Te.__exportStar(KV(),Se)});var qV=y(NV=>{"use strict";Object.defineProperty(NV,"__esModule",{value:!0})});var FV=y(UV=>{"use strict";Object.defineProperty(UV,"__esModule",{value:!0})});var JV=y($V=>{"use strict";Object.defineProperty($V,"__esModule",{value:!0})});var BV=y(GV=>{"use strict";Object.defineProperty(GV,"__esModule",{value:!0})});var HV=y(zV=>{"use strict";Object.defineProperty(zV,"__esModule",{value:!0})});var WV=y(VV=>{"use strict";Object.defineProperty(VV,"__esModule",{value:!0})});var QV=y(YV=>{"use strict";Object.defineProperty(YV,"__esModule",{value:!0})});var ZV=y(XV=>{"use strict";Object.defineProperty(XV,"__esModule",{value:!0})});var tW=y(eW=>{"use strict";Object.defineProperty(eW,"__esModule",{value:!0})});var nW=y(rW=>{"use strict";Object.defineProperty(rW,"__esModule",{value:!0})});var sW=y(iW=>{"use strict";Object.defineProperty(iW,"__esModule",{value:!0})});var oW=y(Br=>{"use strict";Object.defineProperty(Br,"__esModule",{value:!0});var Fn=(nr(),Mt(rr));Fn.__exportStar(qV(),Br);Fn.__exportStar(FV(),Br);Fn.__exportStar(JV(),Br);Fn.__exportStar(BV(),Br);Fn.__exportStar(HV(),Br);Fn.__exportStar(WV(),Br);Fn.__exportStar(QV(),Br);Fn.__exportStar(ZV(),Br);Fn.__exportStar(tW(),Br);Fn.__exportStar(nW(),Br);Fn.__exportStar(sW(),Br)});var cW=y(aW=>{"use strict";Object.defineProperty(aW,"__esModule",{value:!0})});var cR=y(ts=>{"use strict";Object.defineProperty(ts,"__esModule",{value:!0});var Ia=(nr(),Mt(rr));Ia.__exportStar(_9(),ts);Ia.__exportStar(wr(),ts);Ia.__exportStar(LV(),ts);Ia.__exportStar(oW(),ts);Ia.__exportStar(Kr(),ts);Ia.__exportStar(cW(),ts);Ia.__exportStar(Nd(),ts)});var Rl,cCe,uv,lW=R(()=>{"use strict";Rl=Xe(cR(),1);oe();cCe=300*1e3,uv=class t{name;config;concurrency;lockDurationMs;defaultJobOptions;queueFactory;workerFactory;queue=null;worker=null;queueEvents=null;started=!1;counters={stalled:0,errored:0};listeners=[];jobStartTimes=new Map;recentlyStalled=new Map;static STALLED_DEDUPE_WINDOW_MS=3e4;constructor(e){this.name=e.name,this.config=e.config,this.concurrency=e.concurrency??1,this.lockDurationMs=e.lockDurationMs??cCe,this.defaultJobOptions=e.defaultJobOptions??{attempts:3,backoff:{type:"exponential",delay:5e3},removeOnComplete:{age:10080*60,count:1e3},removeOnFail:{age:720*60*60,count:1e3}},this.queueFactory=e.queueFactory,this.workerFactory=e.workerFactory}getQueue(){if(this.queue)return this.queue;let e={connection:this.config.connection,prefix:this.config.prefix,defaultJobOptions:this.defaultJobOptions};return this.queue=this.queueFactory?this.queueFactory(this.name,e):new Rl.Queue(this.name,e),this.queue}async addToQueue(e,r,n){await this.getQueue().add(this.name,r,{...this.defaultJobOptions,...n,jobId:e})}async add(e,r,n){if(e.includes(":"))throw new Error(`server job ID must not contain ':' (got ${e})`);try{await this.addToQueue(e,r,n)}catch(i){let s=i instanceof Error?i:new Error(String(i));throw this.toRedisUnavailableError(s)}}async getJob(e){try{return await this.getQueue().getJob(e)}catch(r){let n=r instanceof Error?r:new Error(String(r));throw this.toRedisUnavailableError(n)}}async remove(e){try{await this.getQueue().remove(e)}catch(r){let n=r instanceof Error?r:new Error(String(r));throw this.toRedisUnavailableError(n)}}async readCounts(){let e=await this.getQueue().getJobCounts("waiting","active","delayed","failed","completed");return{waiting:e.waiting??0,active:e.active??0,delayed:e.delayed??0,failed:e.failed??0,completed:e.completed??0}}async getCounts(){try{return await this.readCounts()}catch(e){let r=e instanceof Error?e:new Error(String(e));throw this.toRedisUnavailableError(r)}}notifyStalled(e,r){if(this.recentlyStalled.has(e)){S.debug?.("QUEUE",`[generation] job=${e} stalled (suppressed duplicate from ${r})`,{queue:this.name,jobId:e,source:r});return}let n=setTimeout(()=>{this.recentlyStalled.delete(e)},t.STALLED_DEDUPE_WINDOW_MS);typeof n.unref=="function"&&n.unref(),this.recentlyStalled.set(e,n),this.counters.stalled+=1,S.warn("QUEUE",`[generation] job=${e} stalled${r==="queue-events"?" (queue-events)":""}`,{queue:this.name,jobId:e,source:r});for(let i of this.listeners)try{i.onStalled?.(e)}catch{}}notifyQueueError(e,r){this.counters.errored+=1,S.warn("QUEUE",`${this.name} ${r} error`,{error:e instanceof Error?e.message:String(e)});for(let n of this.listeners)try{n.onError?.(e)}catch{}}start(e){if(this.started)throw new Error(`ServerJobQueue ${this.name} is already started`);let r={connection:this.config.connection,prefix:this.config.prefix,autorun:!1,concurrency:this.concurrency,lockDuration:this.lockDurationMs},n=this.workerFactory?this.workerFactory(this.name,e,r):new Rl.Worker(this.name,e,r);if(n.on("error",i=>this.notifyQueueError(i,"worker")),typeof n.on=="function"){let i=n;i.on("active",s=>{s.id&&this.jobStartTimes.set(s.id,Date.now())}),i.on("completed",(s,o)=>{let a=s.id?this.jobStartTimes.get(s.id):void 0,c=a?Date.now()-a:0;s.id&&this.jobStartTimes.delete(s.id);let l=s.data?.source_type??"?";S.info("QUEUE",`[generation] job=${s.id??"?"} source_type=${l} duration=${c}ms`,{queue:this.name,jobId:s.id??null,sourceType:l,durationMs:c});for(let u of this.listeners)try{u.onCompleted?.(s.id??"?",c,o)}catch{}}),i.on("failed",(s,o)=>{s?.id&&this.jobStartTimes.delete(s.id);let a=s?.data?.source_type??"?",c=s?.attemptsMade??0;S.warn("QUEUE",`[generation] job=${s?.id??"?"} source_type=${a} attempts=${c} reason=${o.message}`,{queue:this.name,jobId:s?.id??null,sourceType:a,attemptsMade:c,reason:o.message});for(let l of this.listeners)try{l.onFailed?.(s?.id,c,o.message)}catch{}}),i.on("progress",(s,o)=>{S.debug?.("QUEUE",`[generation] job=${s.id??"?"} progress`,{queue:this.name,jobId:s.id??null,progress:o})}),i.on("stalled",s=>this.notifyStalled(s,"worker"))}if(n.run(),this.worker=n,!this.workerFactory)try{let i=new Rl.QueueEvents(this.name,{connection:this.config.connection,prefix:this.config.prefix});i.on("stalled",({jobId:s})=>this.notifyStalled(s,"queue-events")),i.on("error",s=>this.notifyQueueError(s,"queue-events")),this.queueEvents=i}catch(i){S.warn("QUEUE",`${this.name} failed to start QueueEvents listener`,{error:i instanceof Error?i.message:String(i)})}this.started=!0}observe(e){this.listeners.push(e)}getLifecycleCounters(){return{...this.counters}}isStarted(){return this.started}async close(){let e=[];if(this.queueEvents){try{await this.queueEvents.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));S.warn("QUEUE",`${this.name} failed to close QueueEvents`,{queue:this.name},n),e.push(n)}this.queueEvents=null}if(this.worker){try{await this.worker.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));S.warn("QUEUE",`${this.name} failed to close worker`,{queue:this.name},n),e.push(n)}this.worker=null,this.started=!1}if(this.queue){try{await this.queue.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));S.warn("QUEUE",`${this.name} failed to close queue`,{queue:this.name},n),e.push(n)}this.queue=null}for(let r of this.recentlyStalled.values())clearTimeout(r);if(this.recentlyStalled.clear(),e.length>0)throw e[0]}toRedisUnavailableError(e){let r=e instanceof Error?e.message:String(e);return new Error(`ServerJobQueue ${this.name} requires Redis/Valkey when CLAUDE_MEM_QUEUE_ENGINE=bullmq: ${r}`)}}});function lCe(){let t=process.env.CLAUDE_MEM_SERVER_GENERATION_CONCURRENCY;if(!t)return;let e=Number(t);if(!Number.isSafeInteger(e)||e<=0){S.warn("SYSTEM","server: ignoring invalid CLAUDE_MEM_SERVER_GENERATION_CONCURRENCY",{value:t});return}return e>uR?(S.warn("SYSTEM","server: clamping CLAUDE_MEM_SERVER_GENERATION_CONCURRENCY to the per-lane cap",{value:t,cap:uR}),uR):e}var lR,uR,Ta,dR=R(()=>{"use strict";lW();zh();oe();lR=["event","summary"],uR=64;Ta=class{constructor(e,r){this.config=e;if(e.engine!=="bullmq")throw new Error(`ActiveServerQueueManager requires CLAUDE_MEM_QUEUE_ENGINE=bullmq (got ${e.engine}); do not instantiate when bullmq is not selected.`);this.queues=r??this.buildQueues(e)}config;kind="queue-manager";queues;closed=!1;getQueue(e){let r=this.queues.get(e);if(!r)throw new Error(`unknown server generation job kind: ${e}`);return r}start(e,r){this.getQueue(e).start(r)}getHealth(){if(this.closed)return{status:"errored",reason:"queue-manager closed"};let e=lR.map(r=>({kind:r,name:Gc[r]}));return{status:"active",reason:"BullMQ-backed queue manager wired",details:{engine:this.config.engine,mode:this.config.mode,host:this.config.host,port:this.config.port,prefix:this.config.prefix,lanes:e}}}async getLaneMetrics(){let e=[];for(let r of lR){let n=this.queues.get(r);if(!n)continue;let i=n.getLifecycleCounters();try{e.push(await this.readLaneMetric(r,n,i.stalled))}catch(s){let o=s instanceof Error?s:new Error(String(s));S.warn("QUEUE","failed to read lane counts; reporting lane as unavailable",{kind:r,name:Gc[r]},o),e.push({kind:r,name:Gc[r],waiting:0,active:0,completed:0,failed:0,delayed:0,stalled:i.stalled,unavailable:!0,unavailableReason:o.message})}}return e}async readLaneMetric(e,r,n){let i=await r.getCounts();return{kind:e,name:Gc[e],waiting:i.waiting,active:i.active,completed:i.completed,failed:i.failed,delayed:i.delayed,stalled:n,unavailable:!1}}async close(){if(this.closed)return;this.closed=!0;let e=[];for(let r of this.queues.values())try{await r.close()}catch(n){let i=n instanceof Error?n:new Error(String(n));S.warn("QUEUE","error closing server job queue",{},i),e.push(i)}if(e.length>0)throw S.warn("QUEUE","errors closing server queue manager",{count:e.length,first:e[0].message}),e[0]}buildQueues(e){let r=new Map,n=lCe();for(let i of lR)r.set(i,new uv({name:Gc[i],config:e,...n!==void 0?{concurrency:n}:{}}));return r}}});var pR,lp,mv,uW,pv,dv,fv,dW=R(()=>{"use strict";pR=Xe(Mf(),1),lp=Xe(require("path"),1),mv=require("fs");Rr();oe();uW=(()=>{let t=_o();return[lp.default.join(t,"ui","viewer.html"),lp.default.join(t,"plugin","ui","viewer.html")]})(),pv=uW.find(t=>(0,mv.existsSync)(t))??null,dv=pv?(0,mv.readFileSync)(pv):null;pv?S.info("SYSTEM","Cached viewer.html at boot (server runtime)",{path:pv,bytes:dv.byteLength}):S.warn("SYSTEM","viewer.html not found for server runtime",{candidates:uW});fv=class{setupRoutes(e){let r=_o();e.use(pR.default.static(lp.default.join(r,"ui"))),e.use(pR.default.static(lp.default.join(r,"plugin","ui"))),e.get("/",(n,i)=>{if(!dv){i.status(503).json({error:"ViewerUnavailable",message:"Viewer UI not found at any expected location"});return}i.setHeader("Content-Type","text/html; charset=utf-8"),i.send(dv)})}static hasViewerHtml(){return dv!==null}}});var hv,up,uCe,no,yv=R(()=>{"use strict";hv=require("fs"),up=require("path");oe();Rr();uCe=/^[a-z0-9]+(?:-[a-z0-9]+)*(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$/,no=class t{static instance=null;activeMode=null;activeModeId=null;modeDirs;constructor(){let e=_o(),r=[...process.env.CLAUDE_MEM_MODES_DIR?[process.env.CLAUDE_MEM_MODES_DIR]:[],(0,up.join)(je.dataDir(),"modes"),(0,up.join)(e,"modes"),(0,up.join)(e,"..","plugin","modes")];this.modeDirs=[...new Set(r)]}static getInstance(){return t.instance||(t.instance=new t),t.instance}parseInheritance(e){let r=e.split("--");if(r.length===1)return{hasParent:!1,parentId:"",overrideId:""};if(r.length>2)throw new Error(`Invalid mode inheritance: ${e}. Only one level of inheritance supported (parent--override)`);return{hasParent:!0,parentId:r[0],overrideId:e}}isPlainObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}deepMerge(e,r){let n={...e};for(let i in r){let s=r[i],o=e[i];this.isPlainObject(s)&&this.isPlainObject(o)?n[i]=this.deepMerge(o,s):n[i]=s}return n}loadModeFile(e){if(!uCe.test(e))throw new Error(`Invalid mode ID: ${e}`);let r=this.modeDirs.map(i=>(0,up.join)(i,`${e}.json`)).find(i=>(0,hv.existsSync)(i));if(!r)throw new Error(`Mode file not found: ${e}.json (searched: ${this.modeDirs.join(", ")})`);let n=(0,hv.readFileSync)(r,"utf-8");return JSON.parse(n)}loadMode(e){let r=this.parseInheritance(e);if(!r.hasParent)try{let c=this.loadModeFile(e);return this.activeMode=c,this.activeModeId=e,S.debug("SYSTEM",`Loaded mode: ${c.name} (${e})`,void 0,{types:c.observation_types.map(l=>l.id),concepts:c.observation_concepts.map(l=>l.id)}),c}catch(c){if(c instanceof Error?S.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{message:c.message}):S.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{error:String(c)}),e==="code")throw new Error("Critical: code.json mode file missing");return this.loadMode("code")}let{parentId:n,overrideId:i}=r,s;try{s=this.loadMode(n)}catch(c){c instanceof Error?S.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{message:c.message}):S.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{error:String(c)}),s=this.loadMode("code")}let o;try{o=this.loadModeFile(i),S.debug("SYSTEM",`Loaded override file: ${i} for parent ${n}`)}catch(c){return c instanceof Error?S.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{message:c.message}):S.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{error:String(c)}),this.activeMode=s,s}if(!o)return S.warn("SYSTEM",`Invalid override file: ${i}, using parent mode '${n}' only`),this.activeMode=s,s;let a=this.deepMerge(s,o);return this.activeMode=a,this.activeModeId=e,S.debug("SYSTEM",`Loaded mode with inheritance: ${a.name} (${e} = ${n} + ${i})`,void 0,{parent:n,override:i,types:a.observation_types.map(c=>c.id),concepts:a.observation_concepts.map(c=>c.id)}),a}getActiveMode(){if(!this.activeMode)throw new Error("No mode loaded. Call loadMode() first.");return this.activeMode}getActiveModeId(){if(!this.activeModeId)throw new Error("No mode loaded. Call loadMode() first.");return this.activeModeId}getObservationTypes(){return this.getActiveMode().observation_types}getTypeIcon(e){return this.getObservationTypes().find(n=>n.id===e)?.emoji||"\u{1F4DD}"}getWorkEmoji(e){return this.getObservationTypes().find(n=>n.id===e)?.work_emoji||"\u{1F4DD}"}}});function pW(t){return{id:t.id,name:t.name,metadata:ht(t.metadata),createdAtEpoch:Ke(t.created_at),updatedAtEpoch:Ke(t.updated_at)}}function dCe(t){return{teamId:t.team_id,userId:t.user_id,role:t.role,metadata:ht(t.metadata),createdAtEpoch:Ke(t.created_at),updatedAtEpoch:Ke(t.updated_at)}}var Aa,gv=R(()=>{"use strict";Tn();Aa=class{constructor(e){this.client=e}client;async create(e){let r=e.id??et(),n=await ce(this.client,`
9547
9547
  INSERT INTO teams (id, name, metadata)
9548
9548
  VALUES ($1, $2, $3::jsonb)
9549
9549
  RETURNING *