resend-cli 2.22.0-preview-inboxes.2 → 2.22.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.
package/dist/cli.cjs CHANGED
@@ -1,64 +1,64 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var km=Object.create;var Ri=Object.defineProperty;var _m=Object.getOwnPropertyDescriptor;var Fm=Object.getOwnPropertyNames;var Rm=Object.getPrototypeOf,Dm=Object.prototype.hasOwnProperty;var Ae=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(i){throw o=[i],i}};var Re=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},io=(e,t)=>{for(var o in t)Ri(e,o,{get:t[o],enumerable:!0})},Tm=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Fm(t))!Dm.call(e,r)&&r!==o&&Ri(e,r,{get:()=>t[r],enumerable:!(i=_m(t,r))||i.enumerable});return e};var me=(e,t,o)=>(o=e!=null?km(Rm(e)):{},Tm(t||!e||!e.__esModule?Ri(o,"default",{value:e,enumerable:!0}):o,e));var ro=Re(Ti=>{var Ko=class extends Error{constructor(t,o,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=o,this.exitCode=t,this.nestedError=void 0}},Di=class extends Ko{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Ti.CommanderError=Ko;Ti.InvalidArgumentError=Di});var ko=Re(Ei=>{var{InvalidArgumentError:Om}=ro(),Oi=class{constructor(t,o){switch(this.description=o||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,t[0]){case"<":this.required=!0,this._name=t.slice(1,-1);break;case"[":this.required=!1,this._name=t.slice(1,-1);break;default:this.required=!0,this._name=t;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}argParser(t){return this.parseArg=t,this}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Om(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Em(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}Ei.Argument=Oi;Ei.humanReadableArgName=Em});var ji=Re(Ii=>{var{humanReadableArgName:Bm}=ko(),Bi=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(t){this.helpWidth=this.helpWidth??t.helpWidth??80}visibleCommands(t){let o=t.commands.filter(r=>!r._hidden),i=t._getHelpCommand();return i&&!i._hidden&&o.push(i),this.sortSubcommands&&o.sort((r,n)=>r.name().localeCompare(n.name())),o}compareOptions(t,o){let i=r=>r.short?r.short.replace(/^-/,""):r.long.replace(/^--/,"");return i(t).localeCompare(i(o))}visibleOptions(t){let o=t.options.filter(r=>!r.hidden),i=t._getHelpOption();if(i&&!i.hidden){let r=i.short&&t._findOption(i.short),n=i.long&&t._findOption(i.long);!r&&!n?o.push(i):i.long&&!n?o.push(t.createOption(i.long,i.description)):i.short&&!r&&o.push(t.createOption(i.short,i.description))}return this.sortOptions&&o.sort(this.compareOptions),o}visibleGlobalOptions(t){if(!this.showGlobalOptions)return[];let o=[];for(let i=t.parent;i;i=i.parent){let r=i.options.filter(n=>!n.hidden);o.push(...r)}return this.sortOptions&&o.sort(this.compareOptions),o}visibleArguments(t){return t._argsDescription&&t.registeredArguments.forEach(o=>{o.description=o.description||t._argsDescription[o.name()]||""}),t.registeredArguments.find(o=>o.description)?t.registeredArguments:[]}subcommandTerm(t){let o=t.registeredArguments.map(i=>Bm(i)).join(" ");return t._name+(t._aliases[0]?"|"+t._aliases[0]:"")+(t.options.length?" [options]":"")+(o?" "+o:"")}optionTerm(t){return t.flags}argumentTerm(t){return t.name()}longestSubcommandTermLength(t,o){return o.visibleCommands(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleSubcommandTerm(o.subcommandTerm(r)))),0)}longestOptionTermLength(t,o){return o.visibleOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestGlobalOptionTermLength(t,o){return o.visibleGlobalOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestArgumentTermLength(t,o){return o.visibleArguments(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleArgumentTerm(o.argumentTerm(r)))),0)}commandUsage(t){let o=t._name;t._aliases[0]&&(o=o+"|"+t._aliases[0]);let i="";for(let r=t.parent;r;r=r.parent)i=r.name()+" "+i;return i+o+" "+t.usage()}commandDescription(t){return t.description()}subcommandDescription(t){return t.summary()||t.description()}optionDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&(t.required||t.optional||t.isBoolean()&&typeof t.defaultValue=="boolean")&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),t.presetArg!==void 0&&t.optional&&o.push(`preset: ${JSON.stringify(t.presetArg)}`),t.envVar!==void 0&&o.push(`env: ${t.envVar}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}argumentDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}formatItemList(t,o,i){return o.length===0?[]:[i.styleTitle(t),...o,""]}groupItems(t,o,i){let r=new Map;return t.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[])}),o.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[]),r.get(s).push(n)}),r}formatHelp(t,o){let i=o.padWidth(t,o),r=o.helpWidth??80;function n(p,f){return o.formatItem(p,i,f,o)}let s=[`${o.styleTitle("Usage:")} ${o.styleUsage(o.commandUsage(t))}`,""],a=o.commandDescription(t);a.length>0&&(s=s.concat([o.boxWrap(o.styleCommandDescription(a),r),""]));let l=o.visibleArguments(t).map(p=>n(o.styleArgumentTerm(o.argumentTerm(p)),o.styleArgumentDescription(o.argumentDescription(p))));if(s=s.concat(this.formatItemList("Arguments:",l,o)),this.groupItems(t.options,o.visibleOptions(t),p=>p.helpGroupHeading??"Options:").forEach((p,f)=>{let y=p.map(A=>n(o.styleOptionTerm(o.optionTerm(A)),o.styleOptionDescription(o.optionDescription(A))));s=s.concat(this.formatItemList(f,y,o))}),o.showGlobalOptions){let p=o.visibleGlobalOptions(t).map(f=>n(o.styleOptionTerm(o.optionTerm(f)),o.styleOptionDescription(o.optionDescription(f))));s=s.concat(this.formatItemList("Global Options:",p,o))}return this.groupItems(t.commands,o.visibleCommands(t),p=>p.helpGroup()||"Commands:").forEach((p,f)=>{let y=p.map(A=>n(o.styleSubcommandTerm(o.subcommandTerm(A)),o.styleSubcommandDescription(o.subcommandDescription(A))));s=s.concat(this.formatItemList(f,y,o))}),s.join(`
3
- `)}displayWidth(t){return en(t).length}styleTitle(t){return t}styleUsage(t){return t.split(" ").map(o=>o==="[options]"?this.styleOptionText(o):o==="[command]"?this.styleSubcommandText(o):o[0]==="["||o[0]==="<"?this.styleArgumentText(o):this.styleCommandText(o)).join(" ")}styleCommandDescription(t){return this.styleDescriptionText(t)}styleOptionDescription(t){return this.styleDescriptionText(t)}styleSubcommandDescription(t){return this.styleDescriptionText(t)}styleArgumentDescription(t){return this.styleDescriptionText(t)}styleDescriptionText(t){return t}styleOptionTerm(t){return this.styleOptionText(t)}styleSubcommandTerm(t){return t.split(" ").map(o=>o==="[options]"?this.styleOptionText(o):o[0]==="["||o[0]==="<"?this.styleArgumentText(o):this.styleSubcommandText(o)).join(" ")}styleArgumentTerm(t){return this.styleArgumentText(t)}styleOptionText(t){return t}styleArgumentText(t){return t}styleSubcommandText(t){return t}styleCommandText(t){return t}padWidth(t,o){return Math.max(o.longestOptionTermLength(t,o),o.longestGlobalOptionTermLength(t,o),o.longestSubcommandTermLength(t,o),o.longestArgumentTermLength(t,o))}preformatted(t){return/\n[^\S\r\n]/.test(t)}formatItem(t,o,i,r){let s=" ".repeat(2);if(!i)return s+t;let a=t.padEnd(o+t.length-r.displayWidth(t)),l=2,m=(this.helpWidth??80)-o-l-2,p;return m<this.minWidthToWrap||r.preformatted(i)?p=i:p=r.boxWrap(i,m).replace(/\n/g,`
2
+ "use strict";var Qu=Object.create;var ki=Object.defineProperty;var Nu=Object.getOwnPropertyDescriptor;var Mu=Object.getOwnPropertyNames;var qu=Object.getPrototypeOf,Lu=Object.prototype.hasOwnProperty;var he=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(i){throw o=[i],i}};var Re=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},oo=(e,t)=>{for(var o in t)ki(e,o,{get:t[o],enumerable:!0})},Wu=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Mu(t))!Lu.call(e,r)&&r!==o&&ki(e,r,{get:()=>t[r],enumerable:!(i=Nu(t,r))||i.enumerable});return e};var ue=(e,t,o)=>(o=e!=null?Qu(qu(e)):{},Wu(t||!e||!e.__esModule?ki(o,"default",{value:e,enumerable:!0}):o,e));var io=Re(Ri=>{var Ko=class extends Error{constructor(t,o,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=o,this.exitCode=t,this.nestedError=void 0}},Fi=class extends Ko{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Ri.CommanderError=Ko;Ri.InvalidArgumentError=Fi});var xo=Re(Di=>{var{InvalidArgumentError:Ju}=io(),_i=class{constructor(t,o){switch(this.description=o||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,t[0]){case"<":this.required=!0,this._name=t.slice(1,-1);break;case"[":this.required=!1,this._name=t.slice(1,-1);break;default:this.required=!0,this._name=t;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}argParser(t){return this.parseArg=t,this}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Ju(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Vu(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}Di.Argument=_i;Di.humanReadableArgName=Vu});var Oi=Re(Bi=>{var{humanReadableArgName:zu}=xo(),Ei=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(t){this.helpWidth=this.helpWidth??t.helpWidth??80}visibleCommands(t){let o=t.commands.filter(r=>!r._hidden),i=t._getHelpCommand();return i&&!i._hidden&&o.push(i),this.sortSubcommands&&o.sort((r,n)=>r.name().localeCompare(n.name())),o}compareOptions(t,o){let i=r=>r.short?r.short.replace(/^-/,""):r.long.replace(/^--/,"");return i(t).localeCompare(i(o))}visibleOptions(t){let o=t.options.filter(r=>!r.hidden),i=t._getHelpOption();if(i&&!i.hidden){let r=i.short&&t._findOption(i.short),n=i.long&&t._findOption(i.long);!r&&!n?o.push(i):i.long&&!n?o.push(t.createOption(i.long,i.description)):i.short&&!r&&o.push(t.createOption(i.short,i.description))}return this.sortOptions&&o.sort(this.compareOptions),o}visibleGlobalOptions(t){if(!this.showGlobalOptions)return[];let o=[];for(let i=t.parent;i;i=i.parent){let r=i.options.filter(n=>!n.hidden);o.push(...r)}return this.sortOptions&&o.sort(this.compareOptions),o}visibleArguments(t){return t._argsDescription&&t.registeredArguments.forEach(o=>{o.description=o.description||t._argsDescription[o.name()]||""}),t.registeredArguments.find(o=>o.description)?t.registeredArguments:[]}subcommandTerm(t){let o=t.registeredArguments.map(i=>zu(i)).join(" ");return t._name+(t._aliases[0]?"|"+t._aliases[0]:"")+(t.options.length?" [options]":"")+(o?" "+o:"")}optionTerm(t){return t.flags}argumentTerm(t){return t.name()}longestSubcommandTermLength(t,o){return o.visibleCommands(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleSubcommandTerm(o.subcommandTerm(r)))),0)}longestOptionTermLength(t,o){return o.visibleOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestGlobalOptionTermLength(t,o){return o.visibleGlobalOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestArgumentTermLength(t,o){return o.visibleArguments(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleArgumentTerm(o.argumentTerm(r)))),0)}commandUsage(t){let o=t._name;t._aliases[0]&&(o=o+"|"+t._aliases[0]);let i="";for(let r=t.parent;r;r=r.parent)i=r.name()+" "+i;return i+o+" "+t.usage()}commandDescription(t){return t.description()}subcommandDescription(t){return t.summary()||t.description()}optionDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&(t.required||t.optional||t.isBoolean()&&typeof t.defaultValue=="boolean")&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),t.presetArg!==void 0&&t.optional&&o.push(`preset: ${JSON.stringify(t.presetArg)}`),t.envVar!==void 0&&o.push(`env: ${t.envVar}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}argumentDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}formatItemList(t,o,i){return o.length===0?[]:[i.styleTitle(t),...o,""]}groupItems(t,o,i){let r=new Map;return t.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[])}),o.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[]),r.get(s).push(n)}),r}formatHelp(t,o){let i=o.padWidth(t,o),r=o.helpWidth??80;function n(p,f){return o.formatItem(p,i,f,o)}let s=[`${o.styleTitle("Usage:")} ${o.styleUsage(o.commandUsage(t))}`,""],a=o.commandDescription(t);a.length>0&&(s=s.concat([o.boxWrap(o.styleCommandDescription(a),r),""]));let l=o.visibleArguments(t).map(p=>n(o.styleArgumentTerm(o.argumentTerm(p)),o.styleArgumentDescription(o.argumentDescription(p))));if(s=s.concat(this.formatItemList("Arguments:",l,o)),this.groupItems(t.options,o.visibleOptions(t),p=>p.helpGroupHeading??"Options:").forEach((p,f)=>{let b=p.map(h=>n(o.styleOptionTerm(o.optionTerm(h)),o.styleOptionDescription(o.optionDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),o.showGlobalOptions){let p=o.visibleGlobalOptions(t).map(f=>n(o.styleOptionTerm(o.optionTerm(f)),o.styleOptionDescription(o.optionDescription(f))));s=s.concat(this.formatItemList("Global Options:",p,o))}return this.groupItems(t.commands,o.visibleCommands(t),p=>p.helpGroup()||"Commands:").forEach((p,f)=>{let b=p.map(h=>n(o.styleSubcommandTerm(o.subcommandTerm(h)),o.styleSubcommandDescription(o.subcommandDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),s.join(`
3
+ `)}displayWidth(t){return Vr(t).length}styleTitle(t){return t}styleUsage(t){return t.split(" ").map(o=>o==="[options]"?this.styleOptionText(o):o==="[command]"?this.styleSubcommandText(o):o[0]==="["||o[0]==="<"?this.styleArgumentText(o):this.styleCommandText(o)).join(" ")}styleCommandDescription(t){return this.styleDescriptionText(t)}styleOptionDescription(t){return this.styleDescriptionText(t)}styleSubcommandDescription(t){return this.styleDescriptionText(t)}styleArgumentDescription(t){return this.styleDescriptionText(t)}styleDescriptionText(t){return t}styleOptionTerm(t){return this.styleOptionText(t)}styleSubcommandTerm(t){return t.split(" ").map(o=>o==="[options]"?this.styleOptionText(o):o[0]==="["||o[0]==="<"?this.styleArgumentText(o):this.styleSubcommandText(o)).join(" ")}styleArgumentTerm(t){return this.styleArgumentText(t)}styleOptionText(t){return t}styleArgumentText(t){return t}styleSubcommandText(t){return t}styleCommandText(t){return t}padWidth(t,o){return Math.max(o.longestOptionTermLength(t,o),o.longestGlobalOptionTermLength(t,o),o.longestSubcommandTermLength(t,o),o.longestArgumentTermLength(t,o))}preformatted(t){return/\n[^\S\r\n]/.test(t)}formatItem(t,o,i,r){let s=" ".repeat(2);if(!i)return s+t;let a=t.padEnd(o+t.length-r.displayWidth(t)),l=2,u=(this.helpWidth??80)-o-l-2,p;return u<this.minWidthToWrap||r.preformatted(i)?p=i:p=r.boxWrap(i,u).replace(/\n/g,`
4
4
  `+" ".repeat(o+l)),s+a+" ".repeat(l)+p.replace(/\n/g,`
5
- ${s}`)}boxWrap(t,o){if(o<this.minWidthToWrap)return t;let i=t.split(/\r\n|\n/),r=/[\s]*[^\s]+/g,n=[];return i.forEach(s=>{let a=s.match(r);if(a===null){n.push("");return}let l=[a.shift()],u=this.displayWidth(l[0]);a.forEach(m=>{let p=this.displayWidth(m);if(u+p<=o){l.push(m),u+=p;return}n.push(l.join(""));let f=m.trimStart();l=[f],u=this.displayWidth(f)}),n.push(l.join(""))}),n.join(`
6
- `)}};function en(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}Ii.Help=Bi;Ii.stripColor=en});var Hi=Re(Gi=>{var{InvalidArgumentError:Im}=ro(),Pi=class{constructor(t,o){this.flags=t,this.description=o||"",this.required=t.includes("<"),this.optional=t.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(t),this.mandatory=!1;let i=jm(t);this.short=i.shortFlag,this.long=i.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}preset(t){return this.presetArg=t,this}conflicts(t){return this.conflictsWith=this.conflictsWith.concat(t),this}implies(t){let o=t;return typeof t=="string"&&(o={[t]:!0}),this.implied=Object.assign(this.implied||{},o),this}env(t){return this.envVar=t,this}argParser(t){return this.parseArg=t,this}makeOptionMandatory(t=!0){return this.mandatory=!!t,this}hideHelp(t=!0){return this.hidden=!!t,this}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Im(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?tn(this.name().replace(/^no-/,"")):tn(this.name())}helpGroup(t){return this.helpGroupHeading=t,this}is(t){return this.short===t||this.long===t}isBoolean(){return!this.required&&!this.optional&&!this.negate}},$i=class{constructor(t){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,t.forEach(o=>{o.negate?this.negativeOptions.set(o.attributeName(),o):this.positiveOptions.set(o.attributeName(),o)}),this.negativeOptions.forEach((o,i)=>{this.positiveOptions.has(i)&&this.dualOptions.add(i)})}valueFromOption(t,o){let i=o.attributeName();if(!this.dualOptions.has(i))return!0;let r=this.negativeOptions.get(i).presetArg,n=r!==void 0?r:!1;return o.negate===(n===t)}};function tn(e){return e.split("-").reduce((t,o)=>t+o[0].toUpperCase()+o.slice(1))}function jm(e){let t,o,i=/^-[^-]$/,r=/^--[^-]/,n=e.split(/[ |,]+/).concat("guard");if(i.test(n[0])&&(t=n.shift()),r.test(n[0])&&(o=n.shift()),!t&&i.test(n[0])&&(t=n.shift()),!t&&r.test(n[0])&&(t=o,o=n.shift()),n[0].startsWith("-")){let s=n[0],a=`option creation failed due to '${s}' in option flags '${e}'`;throw/^-[^-][^-]/.test(s)?new Error(`${a}
5
+ ${s}`)}boxWrap(t,o){if(o<this.minWidthToWrap)return t;let i=t.split(/\r\n|\n/),r=/[\s]*[^\s]+/g,n=[];return i.forEach(s=>{let a=s.match(r);if(a===null){n.push("");return}let l=[a.shift()],c=this.displayWidth(l[0]);a.forEach(u=>{let p=this.displayWidth(u);if(c+p<=o){l.push(u),c+=p;return}n.push(l.join(""));let f=u.trimStart();l=[f],c=this.displayWidth(f)}),n.push(l.join(""))}),n.join(`
6
+ `)}};function Vr(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}Bi.Help=Ei;Bi.stripColor=Vr});var Pi=Re(ji=>{var{InvalidArgumentError:Yu}=io(),Ti=class{constructor(t,o){this.flags=t,this.description=o||"",this.required=t.includes("<"),this.optional=t.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(t),this.mandatory=!1;let i=Xu(t);this.short=i.shortFlag,this.long=i.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}preset(t){return this.presetArg=t,this}conflicts(t){return this.conflictsWith=this.conflictsWith.concat(t),this}implies(t){let o=t;return typeof t=="string"&&(o={[t]:!0}),this.implied=Object.assign(this.implied||{},o),this}env(t){return this.envVar=t,this}argParser(t){return this.parseArg=t,this}makeOptionMandatory(t=!0){return this.mandatory=!!t,this}hideHelp(t=!0){return this.hidden=!!t,this}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Yu(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?zr(this.name().replace(/^no-/,"")):zr(this.name())}helpGroup(t){return this.helpGroupHeading=t,this}is(t){return this.short===t||this.long===t}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Ii=class{constructor(t){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,t.forEach(o=>{o.negate?this.negativeOptions.set(o.attributeName(),o):this.positiveOptions.set(o.attributeName(),o)}),this.negativeOptions.forEach((o,i)=>{this.positiveOptions.has(i)&&this.dualOptions.add(i)})}valueFromOption(t,o){let i=o.attributeName();if(!this.dualOptions.has(i))return!0;let r=this.negativeOptions.get(i).presetArg,n=r!==void 0?r:!1;return o.negate===(n===t)}};function zr(e){return e.split("-").reduce((t,o)=>t+o[0].toUpperCase()+o.slice(1))}function Xu(e){let t,o,i=/^-[^-]$/,r=/^--[^-]/,n=e.split(/[ |,]+/).concat("guard");if(i.test(n[0])&&(t=n.shift()),r.test(n[0])&&(o=n.shift()),!t&&i.test(n[0])&&(t=n.shift()),!t&&r.test(n[0])&&(t=o,o=n.shift()),n[0].startsWith("-")){let s=n[0],a=`option creation failed due to '${s}' in option flags '${e}'`;throw/^-[^-][^-]/.test(s)?new Error(`${a}
7
7
  - a short flag is a single dash and a single character
8
8
  - either use a single dash and a single character (for a short flag)
9
9
  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):i.test(s)?new Error(`${a}
10
10
  - too many short flags`):r.test(s)?new Error(`${a}
11
11
  - too many long flags`):new Error(`${a}
12
- - unrecognised flag format`)}if(t===void 0&&o===void 0)throw new Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:o}}Gi.Option=Pi;Gi.DualOptions=$i});var rn=Re(on=>{function Pm(e,t){if(Math.abs(e.length-t.length)>3)return Math.max(e.length,t.length);let o=[];for(let i=0;i<=e.length;i++)o[i]=[i];for(let i=0;i<=t.length;i++)o[0][i]=i;for(let i=1;i<=t.length;i++)for(let r=1;r<=e.length;r++){let n=1;e[r-1]===t[i-1]?n=0:n=1,o[r][i]=Math.min(o[r-1][i]+1,o[r][i-1]+1,o[r-1][i-1]+n),r>1&&i>1&&e[r-1]===t[i-2]&&e[r-2]===t[i-1]&&(o[r][i]=Math.min(o[r][i],o[r-2][i-2]+1))}return o[e.length][t.length]}function $m(e,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let o=e.startsWith("--");o&&(e=e.slice(2),t=t.map(s=>s.slice(2)));let i=[],r=3,n=.4;return t.forEach(s=>{if(s.length<=1)return;let a=Pm(e,s),l=Math.max(e.length,s.length);(l-a)/l>n&&(a<r?(r=a,i=[s]):a===r&&i.push(s))}),i.sort((s,a)=>s.localeCompare(a)),o&&(i=i.map(s=>`--${s}`)),i.length>1?`
12
+ - unrecognised flag format`)}if(t===void 0&&o===void 0)throw new Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:o}}ji.Option=Ti;ji.DualOptions=Ii});var Xr=Re(Yr=>{function Zu(e,t){if(Math.abs(e.length-t.length)>3)return Math.max(e.length,t.length);let o=[];for(let i=0;i<=e.length;i++)o[i]=[i];for(let i=0;i<=t.length;i++)o[0][i]=i;for(let i=1;i<=t.length;i++)for(let r=1;r<=e.length;r++){let n=1;e[r-1]===t[i-1]?n=0:n=1,o[r][i]=Math.min(o[r-1][i]+1,o[r][i-1]+1,o[r-1][i-1]+n),r>1&&i>1&&e[r-1]===t[i-2]&&e[r-2]===t[i-1]&&(o[r][i]=Math.min(o[r][i],o[r-2][i-2]+1))}return o[e.length][t.length]}function em(e,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let o=e.startsWith("--");o&&(e=e.slice(2),t=t.map(s=>s.slice(2)));let i=[],r=3,n=.4;return t.forEach(s=>{if(s.length<=1)return;let a=Zu(e,s),l=Math.max(e.length,s.length);(l-a)/l>n&&(a<r?(r=a,i=[s]):a===r&&i.push(s))}),i.sort((s,a)=>s.localeCompare(a)),o&&(i=i.map(s=>`--${s}`)),i.length>1?`
13
13
  (Did you mean one of ${i.join(", ")}?)`:i.length===1?`
14
- (Did you mean ${i[0]}?)`:""}on.suggestSimilar=$m});var ln=Re(Li=>{var Gm=require("node:events").EventEmitter,Qi=require("node:child_process"),ot=require("node:path"),_o=require("node:fs"),Y=require("node:process"),{Argument:Hm,humanReadableArgName:Qm}=ko(),{CommanderError:Ni}=ro(),{Help:Nm,stripColor:Mm}=ji(),{Option:nn,DualOptions:qm}=Hi(),{suggestSimilar:sn}=rn(),Mi=class e extends Gm{constructor(t){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=t||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:o=>Y.stdout.write(o),writeErr:o=>Y.stderr.write(o),outputError:(o,i)=>i(o),getOutHelpWidth:()=>Y.stdout.isTTY?Y.stdout.columns:void 0,getErrHelpWidth:()=>Y.stderr.isTTY?Y.stderr.columns:void 0,getOutHasColors:()=>qi()??(Y.stdout.isTTY&&Y.stdout.hasColors?.()),getErrHasColors:()=>qi()??(Y.stderr.isTTY&&Y.stderr.hasColors?.()),stripColor:o=>Mm(o)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(t){return this._outputConfiguration=t._outputConfiguration,this._helpOption=t._helpOption,this._helpCommand=t._helpCommand,this._helpConfiguration=t._helpConfiguration,this._exitCallback=t._exitCallback,this._storeOptionsAsProperties=t._storeOptionsAsProperties,this._combineFlagAndOptionalValue=t._combineFlagAndOptionalValue,this._allowExcessArguments=t._allowExcessArguments,this._enablePositionalOptions=t._enablePositionalOptions,this._showHelpAfterError=t._showHelpAfterError,this._showSuggestionAfterError=t._showSuggestionAfterError,this}_getCommandAndAncestors(){let t=[];for(let o=this;o;o=o.parent)t.push(o);return t}command(t,o,i){let r=o,n=i;typeof r=="object"&&r!==null&&(n=r,r=null),n=n||{};let[,s,a]=t.match(/([^ ]+) *(.*)/),l=this.createCommand(s);return r&&(l.description(r),l._executableHandler=!0),n.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(n.noHelp||n.hidden),l._executableFile=n.executableFile||null,a&&l.arguments(a),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),r?this:l}createCommand(t){return new e(t)}createHelp(){return Object.assign(new Nm,this.configureHelp())}configureHelp(t){return t===void 0?this._helpConfiguration:(this._helpConfiguration=t,this)}configureOutput(t){return t===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...t},this)}showHelpAfterError(t=!0){return typeof t!="string"&&(t=!!t),this._showHelpAfterError=t,this}showSuggestionAfterError(t=!0){return this._showSuggestionAfterError=!!t,this}addCommand(t,o){if(!t._name)throw new Error(`Command passed to .addCommand() must have a name
15
- - specify the name in Command constructor or using .name()`);return o=o||{},o.isDefault&&(this._defaultCommandName=t._name),(o.noHelp||o.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,o){return new Hm(t,o)}argument(t,o,i,r){let n=this.createArgument(t,o);return typeof i=="function"?n.default(r).argParser(i):n.default(i),this.addArgument(n),this}arguments(t){return t.trim().split(/ +/).forEach(o=>{this.argument(o)}),this}addArgument(t){let o=this.registeredArguments.slice(-1)[0];if(o?.variadic)throw new Error(`only the last argument can be variadic '${o.name()}'`);if(t.required&&t.defaultValue!==void 0&&t.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${t.name()}'`);return this.registeredArguments.push(t),this}helpCommand(t,o){if(typeof t=="boolean")return this._addImplicitHelpCommand=t,t&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let i=t??"help [command]",[,r,n]=i.match(/([^ ]+) *(.*)/),s=o??"display help for command",a=this.createCommand(r);return a.helpOption(!1),n&&a.arguments(n),s&&a.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=a,(t||o)&&this._initCommandGroup(a),this}addHelpCommand(t,o){return typeof t!="object"?(this.helpCommand(t,o),this):(this._addImplicitHelpCommand=!0,this._helpCommand=t,this._initCommandGroup(t),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(t,o){let i=["preSubcommand","preAction","postAction"];if(!i.includes(t))throw new Error(`Unexpected value for event passed to hook : '${t}'.
16
- Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._lifeCycleHooks[t].push(o):this._lifeCycleHooks[t]=[o],this}exitOverride(t){return t?this._exitCallback=t:this._exitCallback=o=>{if(o.code!=="commander.executeSubCommandAsync")throw o},this}_exit(t,o,i){this._exitCallback&&this._exitCallback(new Ni(t,o,i)),Y.exit(t)}action(t){let o=i=>{let r=this.registeredArguments.length,n=i.slice(0,r);return this._storeOptionsAsProperties?n[r]=this:n[r]=this.opts(),n.push(this),t.apply(this,n)};return this._actionHandler=o,this}createOption(t,o){return new nn(t,o)}_callParseArg(t,o,i,r){try{return t.parseArg(o,i)}catch(n){if(n.code==="commander.invalidArgument"){let s=`${r} ${n.message}`;this.error(s,{exitCode:n.exitCode,code:n.code})}throw n}}_registerOption(t){let o=t.short&&this._findOption(t.short)||t.long&&this._findOption(t.long);if(o){let i=t.long&&this._findOption(t.long)?t.long:t.short;throw new Error(`Cannot add option '${t.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${i}'
17
- - already used by option '${o.flags}'`)}this._initOptionGroup(t),this.options.push(t)}_registerCommand(t){let o=r=>[r.name()].concat(r.aliases()),i=o(t).find(r=>this._findCommand(r));if(i){let r=o(this._findCommand(i)).join("|"),n=o(t).join("|");throw new Error(`cannot add command '${n}' as already have command '${r}'`)}this._initCommandGroup(t),this.commands.push(t)}addOption(t){this._registerOption(t);let o=t.name(),i=t.attributeName();if(t.negate){let n=t.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(i,t.defaultValue===void 0?!0:t.defaultValue,"default")}else t.defaultValue!==void 0&&this.setOptionValueWithSource(i,t.defaultValue,"default");let r=(n,s,a)=>{n==null&&t.presetArg!==void 0&&(n=t.presetArg);let l=this.getOptionValue(i);n!==null&&t.parseArg?n=this._callParseArg(t,n,l,s):n!==null&&t.variadic&&(n=t._collectValue(n,l)),n==null&&(t.negate?n=!1:t.isBoolean()||t.optional?n=!0:n=""),this.setOptionValueWithSource(i,n,a)};return this.on("option:"+o,n=>{let s=`error: option '${t.flags}' argument '${n}' is invalid.`;r(n,s,"cli")}),t.envVar&&this.on("optionEnv:"+o,n=>{let s=`error: option '${t.flags}' value '${n}' from env '${t.envVar}' is invalid.`;r(n,s,"env")}),this}_optionEx(t,o,i,r,n){if(typeof o=="object"&&o instanceof nn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(o,i);if(s.makeOptionMandatory(!!t.mandatory),typeof r=="function")s.default(n).argParser(r);else if(r instanceof RegExp){let a=r;r=(l,u)=>{let m=a.exec(l);return m?m[0]:u},s.default(n).argParser(r)}else s.default(r);return this.addOption(s)}option(t,o,i,r){return this._optionEx({},t,o,i,r)}requiredOption(t,o,i,r){return this._optionEx({mandatory:!0},t,o,i,r)}combineFlagAndOptionalValue(t=!0){return this._combineFlagAndOptionalValue=!!t,this}allowUnknownOption(t=!0){return this._allowUnknownOption=!!t,this}allowExcessArguments(t=!0){return this._allowExcessArguments=!!t,this}enablePositionalOptions(t=!0){return this._enablePositionalOptions=!!t,this}passThroughOptions(t=!0){return this._passThroughOptions=!!t,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(t=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!t,this}getOptionValue(t){return this._storeOptionsAsProperties?this[t]:this._optionValues[t]}setOptionValue(t,o){return this.setOptionValueWithSource(t,o,void 0)}setOptionValueWithSource(t,o,i){return this._storeOptionsAsProperties?this[t]=o:this._optionValues[t]=o,this._optionValueSources[t]=i,this}getOptionValueSource(t){return this._optionValueSources[t]}getOptionValueSourceWithGlobals(t){let o;return this._getCommandAndAncestors().forEach(i=>{i.getOptionValueSource(t)!==void 0&&(o=i.getOptionValueSource(t))}),o}_prepareUserArgs(t,o){if(t!==void 0&&!Array.isArray(t))throw new Error("first parameter to parse must be array or undefined");if(o=o||{},t===void 0&&o.from===void 0){Y.versions?.electron&&(o.from="electron");let r=Y.execArgv??[];(r.includes("-e")||r.includes("--eval")||r.includes("-p")||r.includes("--print"))&&(o.from="eval")}t===void 0&&(t=Y.argv),this.rawArgs=t.slice();let i;switch(o.from){case void 0:case"node":this._scriptPath=t[1],i=t.slice(2);break;case"electron":Y.defaultApp?(this._scriptPath=t[1],i=t.slice(2)):i=t.slice(1);break;case"user":i=t.slice(0);break;case"eval":i=t.slice(1);break;default:throw new Error(`unexpected parse option { from: '${o.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",i}parse(t,o){this._prepareForParse();let i=this._prepareUserArgs(t,o);return this._parseCommand([],i),this}async parseAsync(t,o){this._prepareForParse();let i=this._prepareUserArgs(t,o);return await this._parseCommand([],i),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
18
- - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(t,o,i){if(_o.existsSync(t))return;let r=o?`searched for local subcommand relative to directory '${o}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",n=`'${t}' does not exist
14
+ (Did you mean ${i[0]}?)`:""}Yr.suggestSimilar=em});var on=Re(Ni=>{var tm=require("node:events").EventEmitter,$i=require("node:child_process"),tt=require("node:path"),ko=require("node:fs"),J=require("node:process"),{Argument:om,humanReadableArgName:im}=xo(),{CommanderError:Gi}=io(),{Help:rm,stripColor:nm}=Oi(),{Option:Zr,DualOptions:sm}=Pi(),{suggestSimilar:en}=Xr(),Hi=class e extends tm{constructor(t){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=t||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:o=>J.stdout.write(o),writeErr:o=>J.stderr.write(o),outputError:(o,i)=>i(o),getOutHelpWidth:()=>J.stdout.isTTY?J.stdout.columns:void 0,getErrHelpWidth:()=>J.stderr.isTTY?J.stderr.columns:void 0,getOutHasColors:()=>Qi()??(J.stdout.isTTY&&J.stdout.hasColors?.()),getErrHasColors:()=>Qi()??(J.stderr.isTTY&&J.stderr.hasColors?.()),stripColor:o=>nm(o)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(t){return this._outputConfiguration=t._outputConfiguration,this._helpOption=t._helpOption,this._helpCommand=t._helpCommand,this._helpConfiguration=t._helpConfiguration,this._exitCallback=t._exitCallback,this._storeOptionsAsProperties=t._storeOptionsAsProperties,this._combineFlagAndOptionalValue=t._combineFlagAndOptionalValue,this._allowExcessArguments=t._allowExcessArguments,this._enablePositionalOptions=t._enablePositionalOptions,this._showHelpAfterError=t._showHelpAfterError,this._showSuggestionAfterError=t._showSuggestionAfterError,this}_getCommandAndAncestors(){let t=[];for(let o=this;o;o=o.parent)t.push(o);return t}command(t,o,i){let r=o,n=i;typeof r=="object"&&r!==null&&(n=r,r=null),n=n||{};let[,s,a]=t.match(/([^ ]+) *(.*)/),l=this.createCommand(s);return r&&(l.description(r),l._executableHandler=!0),n.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(n.noHelp||n.hidden),l._executableFile=n.executableFile||null,a&&l.arguments(a),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),r?this:l}createCommand(t){return new e(t)}createHelp(){return Object.assign(new rm,this.configureHelp())}configureHelp(t){return t===void 0?this._helpConfiguration:(this._helpConfiguration=t,this)}configureOutput(t){return t===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...t},this)}showHelpAfterError(t=!0){return typeof t!="string"&&(t=!!t),this._showHelpAfterError=t,this}showSuggestionAfterError(t=!0){return this._showSuggestionAfterError=!!t,this}addCommand(t,o){if(!t._name)throw new Error(`Command passed to .addCommand() must have a name
15
+ - specify the name in Command constructor or using .name()`);return o=o||{},o.isDefault&&(this._defaultCommandName=t._name),(o.noHelp||o.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,o){return new om(t,o)}argument(t,o,i,r){let n=this.createArgument(t,o);return typeof i=="function"?n.default(r).argParser(i):n.default(i),this.addArgument(n),this}arguments(t){return t.trim().split(/ +/).forEach(o=>{this.argument(o)}),this}addArgument(t){let o=this.registeredArguments.slice(-1)[0];if(o?.variadic)throw new Error(`only the last argument can be variadic '${o.name()}'`);if(t.required&&t.defaultValue!==void 0&&t.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${t.name()}'`);return this.registeredArguments.push(t),this}helpCommand(t,o){if(typeof t=="boolean")return this._addImplicitHelpCommand=t,t&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let i=t??"help [command]",[,r,n]=i.match(/([^ ]+) *(.*)/),s=o??"display help for command",a=this.createCommand(r);return a.helpOption(!1),n&&a.arguments(n),s&&a.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=a,(t||o)&&this._initCommandGroup(a),this}addHelpCommand(t,o){return typeof t!="object"?(this.helpCommand(t,o),this):(this._addImplicitHelpCommand=!0,this._helpCommand=t,this._initCommandGroup(t),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(t,o){let i=["preSubcommand","preAction","postAction"];if(!i.includes(t))throw new Error(`Unexpected value for event passed to hook : '${t}'.
16
+ Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._lifeCycleHooks[t].push(o):this._lifeCycleHooks[t]=[o],this}exitOverride(t){return t?this._exitCallback=t:this._exitCallback=o=>{if(o.code!=="commander.executeSubCommandAsync")throw o},this}_exit(t,o,i){this._exitCallback&&this._exitCallback(new Gi(t,o,i)),J.exit(t)}action(t){let o=i=>{let r=this.registeredArguments.length,n=i.slice(0,r);return this._storeOptionsAsProperties?n[r]=this:n[r]=this.opts(),n.push(this),t.apply(this,n)};return this._actionHandler=o,this}createOption(t,o){return new Zr(t,o)}_callParseArg(t,o,i,r){try{return t.parseArg(o,i)}catch(n){if(n.code==="commander.invalidArgument"){let s=`${r} ${n.message}`;this.error(s,{exitCode:n.exitCode,code:n.code})}throw n}}_registerOption(t){let o=t.short&&this._findOption(t.short)||t.long&&this._findOption(t.long);if(o){let i=t.long&&this._findOption(t.long)?t.long:t.short;throw new Error(`Cannot add option '${t.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${i}'
17
+ - already used by option '${o.flags}'`)}this._initOptionGroup(t),this.options.push(t)}_registerCommand(t){let o=r=>[r.name()].concat(r.aliases()),i=o(t).find(r=>this._findCommand(r));if(i){let r=o(this._findCommand(i)).join("|"),n=o(t).join("|");throw new Error(`cannot add command '${n}' as already have command '${r}'`)}this._initCommandGroup(t),this.commands.push(t)}addOption(t){this._registerOption(t);let o=t.name(),i=t.attributeName();if(t.negate){let n=t.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(i,t.defaultValue===void 0?!0:t.defaultValue,"default")}else t.defaultValue!==void 0&&this.setOptionValueWithSource(i,t.defaultValue,"default");let r=(n,s,a)=>{n==null&&t.presetArg!==void 0&&(n=t.presetArg);let l=this.getOptionValue(i);n!==null&&t.parseArg?n=this._callParseArg(t,n,l,s):n!==null&&t.variadic&&(n=t._collectValue(n,l)),n==null&&(t.negate?n=!1:t.isBoolean()||t.optional?n=!0:n=""),this.setOptionValueWithSource(i,n,a)};return this.on("option:"+o,n=>{let s=`error: option '${t.flags}' argument '${n}' is invalid.`;r(n,s,"cli")}),t.envVar&&this.on("optionEnv:"+o,n=>{let s=`error: option '${t.flags}' value '${n}' from env '${t.envVar}' is invalid.`;r(n,s,"env")}),this}_optionEx(t,o,i,r,n){if(typeof o=="object"&&o instanceof Zr)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(o,i);if(s.makeOptionMandatory(!!t.mandatory),typeof r=="function")s.default(n).argParser(r);else if(r instanceof RegExp){let a=r;r=(l,c)=>{let u=a.exec(l);return u?u[0]:c},s.default(n).argParser(r)}else s.default(r);return this.addOption(s)}option(t,o,i,r){return this._optionEx({},t,o,i,r)}requiredOption(t,o,i,r){return this._optionEx({mandatory:!0},t,o,i,r)}combineFlagAndOptionalValue(t=!0){return this._combineFlagAndOptionalValue=!!t,this}allowUnknownOption(t=!0){return this._allowUnknownOption=!!t,this}allowExcessArguments(t=!0){return this._allowExcessArguments=!!t,this}enablePositionalOptions(t=!0){return this._enablePositionalOptions=!!t,this}passThroughOptions(t=!0){return this._passThroughOptions=!!t,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(t=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!t,this}getOptionValue(t){return this._storeOptionsAsProperties?this[t]:this._optionValues[t]}setOptionValue(t,o){return this.setOptionValueWithSource(t,o,void 0)}setOptionValueWithSource(t,o,i){return this._storeOptionsAsProperties?this[t]=o:this._optionValues[t]=o,this._optionValueSources[t]=i,this}getOptionValueSource(t){return this._optionValueSources[t]}getOptionValueSourceWithGlobals(t){let o;return this._getCommandAndAncestors().forEach(i=>{i.getOptionValueSource(t)!==void 0&&(o=i.getOptionValueSource(t))}),o}_prepareUserArgs(t,o){if(t!==void 0&&!Array.isArray(t))throw new Error("first parameter to parse must be array or undefined");if(o=o||{},t===void 0&&o.from===void 0){J.versions?.electron&&(o.from="electron");let r=J.execArgv??[];(r.includes("-e")||r.includes("--eval")||r.includes("-p")||r.includes("--print"))&&(o.from="eval")}t===void 0&&(t=J.argv),this.rawArgs=t.slice();let i;switch(o.from){case void 0:case"node":this._scriptPath=t[1],i=t.slice(2);break;case"electron":J.defaultApp?(this._scriptPath=t[1],i=t.slice(2)):i=t.slice(1);break;case"user":i=t.slice(0);break;case"eval":i=t.slice(1);break;default:throw new Error(`unexpected parse option { from: '${o.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",i}parse(t,o){this._prepareForParse();let i=this._prepareUserArgs(t,o);return this._parseCommand([],i),this}async parseAsync(t,o){this._prepareForParse();let i=this._prepareUserArgs(t,o);return await this._parseCommand([],i),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
18
+ - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(t,o,i){if(ko.existsSync(t))return;let r=o?`searched for local subcommand relative to directory '${o}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",n=`'${t}' does not exist
19
19
  - if '${i}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
20
20
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
21
- - ${r}`;throw new Error(n)}_executeSubCommand(t,o){o=o.slice();let i=!1,r=[".js",".ts",".tsx",".mjs",".cjs"];function n(m,p){let f=ot.resolve(m,p);if(_o.existsSync(f))return f;if(r.includes(ot.extname(p)))return;let y=r.find(A=>_o.existsSync(`${f}${A}`));if(y)return`${f}${y}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=t._executableFile||`${this._name}-${t._name}`,a=this._executableDir||"";if(this._scriptPath){let m;try{m=_o.realpathSync(this._scriptPath)}catch{m=this._scriptPath}a=ot.resolve(ot.dirname(m),a)}if(a){let m=n(a,s);if(!m&&!t._executableFile&&this._scriptPath){let p=ot.basename(this._scriptPath,ot.extname(this._scriptPath));p!==this._name&&(m=n(a,`${p}-${t._name}`))}s=m||s}i=r.includes(ot.extname(s));let l;Y.platform!=="win32"?i?(o.unshift(s),o=an(Y.execArgv).concat(o),l=Qi.spawn(Y.argv[0],o,{stdio:"inherit"})):l=Qi.spawn(s,o,{stdio:"inherit"}):(this._checkForMissingExecutable(s,a,t._name),o.unshift(s),o=an(Y.execArgv).concat(o),l=Qi.spawn(Y.execPath,o,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(p=>{Y.on(p,()=>{l.killed===!1&&l.exitCode===null&&l.kill(p)})});let u=this._exitCallback;l.on("close",m=>{m=m??1,u?u(new Ni(m,"commander.executeSubCommandAsync","(close)")):Y.exit(m)}),l.on("error",m=>{if(m.code==="ENOENT")this._checkForMissingExecutable(s,a,t._name);else if(m.code==="EACCES")throw new Error(`'${s}' not executable`);if(!u)Y.exit(1);else{let p=new Ni(1,"commander.executeSubCommandAsync","(error)");p.nestedError=m,u(p)}}),this.runningCommand=l}_dispatchSubcommand(t,o,i){let r=this._findCommand(t);r||this.help({error:!0}),r._prepareForParse();let n;return n=this._chainOrCallSubCommandHook(n,r,"preSubcommand"),n=this._chainOrCall(n,()=>{if(r._executableHandler)this._executeSubCommand(r,o.concat(i));else return r._parseCommand(o,i)}),n}_dispatchHelpCommand(t){t||this.help();let o=this._findCommand(t);return o&&!o._executableHandler&&o.help(),this._dispatchSubcommand(t,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((t,o)=>{t.required&&this.args[o]==null&&this.missingArgument(t.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let t=(i,r,n)=>{let s=r;if(r!==null&&i.parseArg){let a=`error: command-argument value '${r}' is invalid for argument '${i.name()}'.`;s=this._callParseArg(i,r,n,a)}return s};this._checkNumberOfArguments();let o=[];this.registeredArguments.forEach((i,r)=>{let n=i.defaultValue;i.variadic?r<this.args.length?(n=this.args.slice(r),i.parseArg&&(n=n.reduce((s,a)=>t(i,a,s),i.defaultValue))):n===void 0&&(n=[]):r<this.args.length&&(n=this.args[r],i.parseArg&&(n=t(i,n,i.defaultValue))),o[r]=n}),this.processedArgs=o}_chainOrCall(t,o){return t?.then&&typeof t.then=="function"?t.then(()=>o()):o()}_chainOrCallHooks(t,o){let i=t,r=[];return this._getCommandAndAncestors().reverse().filter(n=>n._lifeCycleHooks[o]!==void 0).forEach(n=>{n._lifeCycleHooks[o].forEach(s=>{r.push({hookedCommand:n,callback:s})})}),o==="postAction"&&r.reverse(),r.forEach(n=>{i=this._chainOrCall(i,()=>n.callback(n.hookedCommand,this))}),i}_chainOrCallSubCommandHook(t,o,i){let r=t;return this._lifeCycleHooks[i]!==void 0&&this._lifeCycleHooks[i].forEach(n=>{r=this._chainOrCall(r,()=>n(this,o))}),r}_parseCommand(t,o){let i=this.parseOptions(o);if(this._parseOptionsEnv(),this._parseOptionsImplied(),t=t.concat(i.operands),o=i.unknown,this.args=t.concat(o),t&&this._findCommand(t[0]))return this._dispatchSubcommand(t[0],t.slice(1),o);if(this._getHelpCommand()&&t[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(t[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(o),this._dispatchSubcommand(this._defaultCommandName,t,o);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=()=>{i.unknown.length>0&&this.unknownOption(i.unknown[0])},n=`command:${this.name()}`;if(this._actionHandler){r(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(n,t,o)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent?.listenerCount(n))r(),this._processArguments(),this.parent.emit(n,t,o);else if(t.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",t,o);this.listenerCount("command:*")?this.emit("command:*",t,o):this.commands.length?this.unknownCommand():(r(),this._processArguments())}else this.commands.length?(r(),this.help({error:!0})):(r(),this._processArguments())}_findCommand(t){if(t)return this.commands.find(o=>o._name===t||o._aliases.includes(t))}_findOption(t){return this.options.find(o=>o.is(t))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(t=>{t.options.forEach(o=>{o.mandatory&&t.getOptionValue(o.attributeName())===void 0&&t.missingMandatoryOptionValue(o)})})}_checkForConflictingLocalOptions(){let t=this.options.filter(i=>{let r=i.attributeName();return this.getOptionValue(r)===void 0?!1:this.getOptionValueSource(r)!=="default"});t.filter(i=>i.conflictsWith.length>0).forEach(i=>{let r=t.find(n=>i.conflictsWith.includes(n.attributeName()));r&&this._conflictingOption(i,r)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(t=>{t._checkForConflictingLocalOptions()})}parseOptions(t){let o=[],i=[],r=o;function n(m){return m.length>1&&m[0]==="-"}let s=m=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(m)?!this._getCommandAndAncestors().some(p=>p.options.map(f=>f.short).some(f=>/^-\d$/.test(f))):!1,a=null,l=null,u=0;for(;u<t.length||l;){let m=l??t[u++];if(l=null,m==="--"){r===i&&r.push(m),r.push(...t.slice(u));break}if(a&&(!n(m)||s(m))){this.emit(`option:${a.name()}`,m);continue}if(a=null,n(m)){let p=this._findOption(m);if(p){if(p.required){let f=t[u++];f===void 0&&this.optionMissingArgument(p),this.emit(`option:${p.name()}`,f)}else if(p.optional){let f=null;u<t.length&&(!n(t[u])||s(t[u]))&&(f=t[u++]),this.emit(`option:${p.name()}`,f)}else this.emit(`option:${p.name()}`);a=p.variadic?p:null;continue}}if(m.length>2&&m[0]==="-"&&m[1]!=="-"){let p=this._findOption(`-${m[1]}`);if(p){p.required||p.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${p.name()}`,m.slice(2)):(this.emit(`option:${p.name()}`),l=`-${m.slice(2)}`);continue}}if(/^--[^=]+=/.test(m)){let p=m.indexOf("="),f=this._findOption(m.slice(0,p));if(f&&(f.required||f.optional)){this.emit(`option:${f.name()}`,m.slice(p+1));continue}}if(r===o&&n(m)&&!(this.commands.length===0&&s(m))&&(r=i),(this._enablePositionalOptions||this._passThroughOptions)&&o.length===0&&i.length===0){if(this._findCommand(m)){o.push(m),i.push(...t.slice(u));break}else if(this._getHelpCommand()&&m===this._getHelpCommand().name()){o.push(m,...t.slice(u));break}else if(this._defaultCommandName){i.push(m,...t.slice(u));break}}if(this._passThroughOptions){r.push(m,...t.slice(u));break}r.push(m)}return{operands:o,unknown:i}}opts(){if(this._storeOptionsAsProperties){let t={},o=this.options.length;for(let i=0;i<o;i++){let r=this.options[i].attributeName();t[r]=r===this._versionOptionName?this._version:this[r]}return t}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((t,o)=>Object.assign(t,o.opts()),{})}error(t,o){this._outputConfiguration.outputError(`${t}
21
+ - ${r}`;throw new Error(n)}_executeSubCommand(t,o){o=o.slice();let i=!1,r=[".js",".ts",".tsx",".mjs",".cjs"];function n(u,p){let f=tt.resolve(u,p);if(ko.existsSync(f))return f;if(r.includes(tt.extname(p)))return;let b=r.find(h=>ko.existsSync(`${f}${h}`));if(b)return`${f}${b}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=t._executableFile||`${this._name}-${t._name}`,a=this._executableDir||"";if(this._scriptPath){let u;try{u=ko.realpathSync(this._scriptPath)}catch{u=this._scriptPath}a=tt.resolve(tt.dirname(u),a)}if(a){let u=n(a,s);if(!u&&!t._executableFile&&this._scriptPath){let p=tt.basename(this._scriptPath,tt.extname(this._scriptPath));p!==this._name&&(u=n(a,`${p}-${t._name}`))}s=u||s}i=r.includes(tt.extname(s));let l;J.platform!=="win32"?i?(o.unshift(s),o=tn(J.execArgv).concat(o),l=$i.spawn(J.argv[0],o,{stdio:"inherit"})):l=$i.spawn(s,o,{stdio:"inherit"}):(this._checkForMissingExecutable(s,a,t._name),o.unshift(s),o=tn(J.execArgv).concat(o),l=$i.spawn(J.execPath,o,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(p=>{J.on(p,()=>{l.killed===!1&&l.exitCode===null&&l.kill(p)})});let c=this._exitCallback;l.on("close",u=>{u=u??1,c?c(new Gi(u,"commander.executeSubCommandAsync","(close)")):J.exit(u)}),l.on("error",u=>{if(u.code==="ENOENT")this._checkForMissingExecutable(s,a,t._name);else if(u.code==="EACCES")throw new Error(`'${s}' not executable`);if(!c)J.exit(1);else{let p=new Gi(1,"commander.executeSubCommandAsync","(error)");p.nestedError=u,c(p)}}),this.runningCommand=l}_dispatchSubcommand(t,o,i){let r=this._findCommand(t);r||this.help({error:!0}),r._prepareForParse();let n;return n=this._chainOrCallSubCommandHook(n,r,"preSubcommand"),n=this._chainOrCall(n,()=>{if(r._executableHandler)this._executeSubCommand(r,o.concat(i));else return r._parseCommand(o,i)}),n}_dispatchHelpCommand(t){t||this.help();let o=this._findCommand(t);return o&&!o._executableHandler&&o.help(),this._dispatchSubcommand(t,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((t,o)=>{t.required&&this.args[o]==null&&this.missingArgument(t.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let t=(i,r,n)=>{let s=r;if(r!==null&&i.parseArg){let a=`error: command-argument value '${r}' is invalid for argument '${i.name()}'.`;s=this._callParseArg(i,r,n,a)}return s};this._checkNumberOfArguments();let o=[];this.registeredArguments.forEach((i,r)=>{let n=i.defaultValue;i.variadic?r<this.args.length?(n=this.args.slice(r),i.parseArg&&(n=n.reduce((s,a)=>t(i,a,s),i.defaultValue))):n===void 0&&(n=[]):r<this.args.length&&(n=this.args[r],i.parseArg&&(n=t(i,n,i.defaultValue))),o[r]=n}),this.processedArgs=o}_chainOrCall(t,o){return t?.then&&typeof t.then=="function"?t.then(()=>o()):o()}_chainOrCallHooks(t,o){let i=t,r=[];return this._getCommandAndAncestors().reverse().filter(n=>n._lifeCycleHooks[o]!==void 0).forEach(n=>{n._lifeCycleHooks[o].forEach(s=>{r.push({hookedCommand:n,callback:s})})}),o==="postAction"&&r.reverse(),r.forEach(n=>{i=this._chainOrCall(i,()=>n.callback(n.hookedCommand,this))}),i}_chainOrCallSubCommandHook(t,o,i){let r=t;return this._lifeCycleHooks[i]!==void 0&&this._lifeCycleHooks[i].forEach(n=>{r=this._chainOrCall(r,()=>n(this,o))}),r}_parseCommand(t,o){let i=this.parseOptions(o);if(this._parseOptionsEnv(),this._parseOptionsImplied(),t=t.concat(i.operands),o=i.unknown,this.args=t.concat(o),t&&this._findCommand(t[0]))return this._dispatchSubcommand(t[0],t.slice(1),o);if(this._getHelpCommand()&&t[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(t[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(o),this._dispatchSubcommand(this._defaultCommandName,t,o);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=()=>{i.unknown.length>0&&this.unknownOption(i.unknown[0])},n=`command:${this.name()}`;if(this._actionHandler){r(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(n,t,o)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent?.listenerCount(n))r(),this._processArguments(),this.parent.emit(n,t,o);else if(t.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",t,o);this.listenerCount("command:*")?this.emit("command:*",t,o):this.commands.length?this.unknownCommand():(r(),this._processArguments())}else this.commands.length?(r(),this.help({error:!0})):(r(),this._processArguments())}_findCommand(t){if(t)return this.commands.find(o=>o._name===t||o._aliases.includes(t))}_findOption(t){return this.options.find(o=>o.is(t))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(t=>{t.options.forEach(o=>{o.mandatory&&t.getOptionValue(o.attributeName())===void 0&&t.missingMandatoryOptionValue(o)})})}_checkForConflictingLocalOptions(){let t=this.options.filter(i=>{let r=i.attributeName();return this.getOptionValue(r)===void 0?!1:this.getOptionValueSource(r)!=="default"});t.filter(i=>i.conflictsWith.length>0).forEach(i=>{let r=t.find(n=>i.conflictsWith.includes(n.attributeName()));r&&this._conflictingOption(i,r)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(t=>{t._checkForConflictingLocalOptions()})}parseOptions(t){let o=[],i=[],r=o;function n(u){return u.length>1&&u[0]==="-"}let s=u=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(u)?!this._getCommandAndAncestors().some(p=>p.options.map(f=>f.short).some(f=>/^-\d$/.test(f))):!1,a=null,l=null,c=0;for(;c<t.length||l;){let u=l??t[c++];if(l=null,u==="--"){r===i&&r.push(u),r.push(...t.slice(c));break}if(a&&(!n(u)||s(u))){this.emit(`option:${a.name()}`,u);continue}if(a=null,n(u)){let p=this._findOption(u);if(p){if(p.required){let f=t[c++];f===void 0&&this.optionMissingArgument(p),this.emit(`option:${p.name()}`,f)}else if(p.optional){let f=null;c<t.length&&(!n(t[c])||s(t[c]))&&(f=t[c++]),this.emit(`option:${p.name()}`,f)}else this.emit(`option:${p.name()}`);a=p.variadic?p:null;continue}}if(u.length>2&&u[0]==="-"&&u[1]!=="-"){let p=this._findOption(`-${u[1]}`);if(p){p.required||p.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${p.name()}`,u.slice(2)):(this.emit(`option:${p.name()}`),l=`-${u.slice(2)}`);continue}}if(/^--[^=]+=/.test(u)){let p=u.indexOf("="),f=this._findOption(u.slice(0,p));if(f&&(f.required||f.optional)){this.emit(`option:${f.name()}`,u.slice(p+1));continue}}if(r===o&&n(u)&&!(this.commands.length===0&&s(u))&&(r=i),(this._enablePositionalOptions||this._passThroughOptions)&&o.length===0&&i.length===0){if(this._findCommand(u)){o.push(u),i.push(...t.slice(c));break}else if(this._getHelpCommand()&&u===this._getHelpCommand().name()){o.push(u,...t.slice(c));break}else if(this._defaultCommandName){i.push(u,...t.slice(c));break}}if(this._passThroughOptions){r.push(u,...t.slice(c));break}r.push(u)}return{operands:o,unknown:i}}opts(){if(this._storeOptionsAsProperties){let t={},o=this.options.length;for(let i=0;i<o;i++){let r=this.options[i].attributeName();t[r]=r===this._versionOptionName?this._version:this[r]}return t}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((t,o)=>Object.assign(t,o.opts()),{})}error(t,o){this._outputConfiguration.outputError(`${t}
22
22
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
23
23
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
24
- `),this.outputHelp({error:!0}));let i=o||{},r=i.exitCode||1,n=i.code||"commander.error";this._exit(r,n,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in Y.env){let o=t.attributeName();(this.getOptionValue(o)===void 0||["default","config","env"].includes(this.getOptionValueSource(o)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,Y.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new qm(this.options),o=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&o(i.attributeName())&&t.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(r=>!o(r)).forEach(r=>{this.setOptionValueWithSource(r,i.implied[r],"implied")})})}missingArgument(t){let o=`error: missing required argument '${t}'`;this.error(o,{code:"commander.missingArgument"})}optionMissingArgument(t){let o=`error: option '${t.flags}' argument missing`;this.error(o,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let o=`error: required option '${t.flags}' not specified`;this.error(o,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,o){let i=s=>{let a=s.attributeName(),l=this.getOptionValue(a),u=this.options.find(p=>p.negate&&a===p.attributeName()),m=this.options.find(p=>!p.negate&&a===p.attributeName());return u&&(u.presetArg===void 0&&l===!1||u.presetArg!==void 0&&l===u.presetArg)?u:m||s},r=s=>{let a=i(s),l=a.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},n=`error: ${r(t)} cannot be used with ${r(o)}`;this.error(n,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let o="";if(t.startsWith("--")&&this._showSuggestionAfterError){let r=[],n=this;do{let s=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);r=r.concat(s),n=n.parent}while(n&&!n._enablePositionalOptions);o=sn(t,r)}let i=`error: unknown option '${t}'${o}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let o=this.registeredArguments.length,i=o===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${o} argument${i} but got ${t.length}.`;this.error(n,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],o="";if(this._showSuggestionAfterError){let r=[];this.createHelp().visibleCommands(this).forEach(n=>{r.push(n.name()),n.alias()&&r.push(n.alias())}),o=sn(t,r)}let i=`error: unknown command '${t}'${o}`;this.error(i,{code:"commander.unknownCommand"})}version(t,o,i){if(t===void 0)return this._version;this._version=t,o=o||"-V, --version",i=i||"output the version number";let r=this.createOption(o,i);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${t}
25
- `),this._exit(0,"commander.version",t)}),this}description(t,o){return t===void 0&&o===void 0?this._description:(this._description=t,o&&(this._argsDescription=o),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let o=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(o=this.commands[this.commands.length-1]),t===o._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let r=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${r}'`)}return o._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(o=>this.alias(o)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let o=this.registeredArguments.map(i=>Qm(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?o:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}helpGroup(t){return t===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=t,this)}commandsGroup(t){return t===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=t,this)}optionsGroup(t){return t===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=t,this)}_initOptionGroup(t){this._defaultOptionGroup&&!t.helpGroupHeading&&t.helpGroup(this._defaultOptionGroup)}_initCommandGroup(t){this._defaultCommandGroup&&!t.helpGroup()&&t.helpGroup(this._defaultCommandGroup)}nameFromFilename(t){return this._name=ot.basename(t,ot.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let o=this.createHelp(),i=this._getOutputContext(t);o.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let r=o.formatHelp(this,o);return i.hasColors?r:this._outputConfiguration.stripColor(r)}_getOutputContext(t){t=t||{};let o=!!t.error,i,r,n;return o?(i=a=>this._outputConfiguration.writeErr(a),r=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(i=a=>this._outputConfiguration.writeOut(a),r=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:o,write:a=>(r||(a=this._outputConfiguration.stripColor(a)),i(a)),hasColors:r,helpWidth:n}}outputHelp(t){let o;typeof t=="function"&&(o=t,t=void 0);let i=this._getOutputContext(t),r={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let n=this.helpInformation({error:i.error});if(o&&(n=o(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(t,o){return typeof t=="boolean"?(t?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(t??"-h, --help",o??"display help for command"),(t||o)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this._initOptionGroup(t),this}help(t){this.outputHelp(t);let o=Number(Y.exitCode??0);o===0&&t&&typeof t!="function"&&t.error&&(o=1),this._exit(o,"commander.help","(outputHelp)")}addHelpText(t,o){let i=["beforeAll","before","after","afterAll"];if(!i.includes(t))throw new Error(`Unexpected value for position to addHelpText.
24
+ `),this.outputHelp({error:!0}));let i=o||{},r=i.exitCode||1,n=i.code||"commander.error";this._exit(r,n,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in J.env){let o=t.attributeName();(this.getOptionValue(o)===void 0||["default","config","env"].includes(this.getOptionValueSource(o)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,J.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new sm(this.options),o=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&o(i.attributeName())&&t.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(r=>!o(r)).forEach(r=>{this.setOptionValueWithSource(r,i.implied[r],"implied")})})}missingArgument(t){let o=`error: missing required argument '${t}'`;this.error(o,{code:"commander.missingArgument"})}optionMissingArgument(t){let o=`error: option '${t.flags}' argument missing`;this.error(o,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let o=`error: required option '${t.flags}' not specified`;this.error(o,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,o){let i=s=>{let a=s.attributeName(),l=this.getOptionValue(a),c=this.options.find(p=>p.negate&&a===p.attributeName()),u=this.options.find(p=>!p.negate&&a===p.attributeName());return c&&(c.presetArg===void 0&&l===!1||c.presetArg!==void 0&&l===c.presetArg)?c:u||s},r=s=>{let a=i(s),l=a.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},n=`error: ${r(t)} cannot be used with ${r(o)}`;this.error(n,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let o="";if(t.startsWith("--")&&this._showSuggestionAfterError){let r=[],n=this;do{let s=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);r=r.concat(s),n=n.parent}while(n&&!n._enablePositionalOptions);o=en(t,r)}let i=`error: unknown option '${t}'${o}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let o=this.registeredArguments.length,i=o===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${o} argument${i} but got ${t.length}.`;this.error(n,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],o="";if(this._showSuggestionAfterError){let r=[];this.createHelp().visibleCommands(this).forEach(n=>{r.push(n.name()),n.alias()&&r.push(n.alias())}),o=en(t,r)}let i=`error: unknown command '${t}'${o}`;this.error(i,{code:"commander.unknownCommand"})}version(t,o,i){if(t===void 0)return this._version;this._version=t,o=o||"-V, --version",i=i||"output the version number";let r=this.createOption(o,i);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${t}
25
+ `),this._exit(0,"commander.version",t)}),this}description(t,o){return t===void 0&&o===void 0?this._description:(this._description=t,o&&(this._argsDescription=o),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let o=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(o=this.commands[this.commands.length-1]),t===o._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let r=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${r}'`)}return o._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(o=>this.alias(o)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let o=this.registeredArguments.map(i=>im(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?o:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}helpGroup(t){return t===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=t,this)}commandsGroup(t){return t===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=t,this)}optionsGroup(t){return t===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=t,this)}_initOptionGroup(t){this._defaultOptionGroup&&!t.helpGroupHeading&&t.helpGroup(this._defaultOptionGroup)}_initCommandGroup(t){this._defaultCommandGroup&&!t.helpGroup()&&t.helpGroup(this._defaultCommandGroup)}nameFromFilename(t){return this._name=tt.basename(t,tt.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let o=this.createHelp(),i=this._getOutputContext(t);o.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let r=o.formatHelp(this,o);return i.hasColors?r:this._outputConfiguration.stripColor(r)}_getOutputContext(t){t=t||{};let o=!!t.error,i,r,n;return o?(i=a=>this._outputConfiguration.writeErr(a),r=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(i=a=>this._outputConfiguration.writeOut(a),r=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:o,write:a=>(r||(a=this._outputConfiguration.stripColor(a)),i(a)),hasColors:r,helpWidth:n}}outputHelp(t){let o;typeof t=="function"&&(o=t,t=void 0);let i=this._getOutputContext(t),r={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let n=this.helpInformation({error:i.error});if(o&&(n=o(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(t,o){return typeof t=="boolean"?(t?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(t??"-h, --help",o??"display help for command"),(t||o)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this._initOptionGroup(t),this}help(t){this.outputHelp(t);let o=Number(J.exitCode??0);o===0&&t&&typeof t!="function"&&t.error&&(o=1),this._exit(o,"commander.help","(outputHelp)")}addHelpText(t,o){let i=["beforeAll","before","after","afterAll"];if(!i.includes(t))throw new Error(`Unexpected value for position to addHelpText.
26
26
  Expecting one of '${i.join("', '")}'`);let r=`${t}Help`;return this.on(r,n=>{let s;typeof o=="function"?s=o({error:n.error,command:n.command}):s=o,s&&n.write(`${s}
27
- `)}),this}_outputHelpIfRequested(t){let o=this._getHelpOption();o&&t.find(r=>o.is(r))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function an(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let o,i="127.0.0.1",r="9229",n;return(n=t.match(/^(--inspect(-brk)?)$/))!==null?o=n[1]:(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(o=n[1],/^\d+$/.test(n[3])?r=n[3]:i=n[3]):(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(o=n[1],i=n[3],r=n[4]),o&&r!=="0"?`${o}=${i}:${parseInt(r)+1}`:t})}function qi(){if(Y.env.NO_COLOR||Y.env.FORCE_COLOR==="0"||Y.env.FORCE_COLOR==="false")return!1;if(Y.env.FORCE_COLOR||Y.env.CLICOLOR_FORCE!==void 0)return!0}Li.Command=Mi;Li.useColor=qi});var mn=Re(Ge=>{var{Argument:cn}=ko(),{Command:Wi}=ln(),{CommanderError:Lm,InvalidArgumentError:dn}=ro(),{Help:Wm}=ji(),{Option:un}=Hi();Ge.program=new Wi;Ge.createCommand=e=>new Wi(e);Ge.createOption=(e,t)=>new un(e,t);Ge.createArgument=(e,t)=>new cn(e,t);Ge.Command=Wi;Ge.Option=un;Ge.Argument=cn;Ge.Help=Wm;Ge.CommanderError=Lm;Ge.InvalidArgumentError=dn;Ge.InvalidOptionArgumentError=dn});var fn=Re((Ee,pn)=>{var We=mn();Ee=pn.exports={};Ee.program=new We.Command;Ee.Argument=We.Argument;Ee.Command=We.Command;Ee.CommanderError=We.CommanderError;Ee.Help=We.Help;Ee.InvalidArgumentError=We.InvalidArgumentError;Ee.InvalidOptionArgumentError=We.InvalidArgumentError;Ee.Option=We.Option;Ee.createCommand=e=>new We.Command(e);Ee.createOption=(e,t)=>new We.Option(e,t);Ee.createArgument=(e,t)=>new We.Argument(e,t)});var Je=Re((lA,Ji)=>{var Ro=process||{},An=Ro.argv||[],Fo=Ro.env||{},Jm=!(Fo.NO_COLOR||An.includes("--no-color"))&&(!!Fo.FORCE_COLOR||An.includes("--color")||Ro.platform==="win32"||(Ro.stdout||{}).isTTY&&Fo.TERM!=="dumb"||!!Fo.CI),Vm=(e,t,o=e)=>i=>{let r=""+i,n=r.indexOf(t,e.length);return~n?e+zm(r,t,o,n)+t:e+r+t},zm=(e,t,o,i)=>{let r="",n=0;do r+=e.substring(n,i)+o,n=i+t.length,i=e.indexOf(t,n);while(~i);return r+e.substring(n)},bn=(e=Jm)=>{let t=e?Vm:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};Ji.exports=bn();Ji.exports.createColors=bn});var Zi=Re((AA,On)=>{"use strict";var Xi={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let o="";return e<0?o+=`\x1B[${-e}D`:e>0&&(o+=`\x1B[${e}C`),t<0?o+=`\x1B[${-t}A`:t>0&&(o+=`\x1B[${t}B`),o},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},pp={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},fp={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let o=0;o<e;o++)t+=this.line+(o<e-1?Xi.up():"");return e&&(t+=Xi.left),t}};On.exports={cursor:Xi,scroll:pp,erase:fp,beep:"\x07"}});var ir,Yn=Ae(()=>{ir={name:"resend-cli",version:"2.22.0-preview-inboxes.2",description:"The official CLI for Resend",license:"MIT",repository:{type:"git",url:"https://github.com/resend/resend-cli"},homepage:"https://github.com/resend/resend-cli#readme",keywords:["cli","resend","email","api","tanstack-intent"],engines:{node:">=22"},packageManager:"pnpm@11.8.0",files:["dist/cli.cjs","skills/"],type:"module",bin:{resend:"./dist/cli.cjs"},scripts:{dev:"tsx src/cli.ts","dev:watch":"tsx --watch src/cli.ts",build:"node scripts/build.mjs","build:bin":"pnpm build && pkg dist/cli.cjs --config package.json --compress Brotli --target node24 --output dist/resend",lint:"biome check .","lint:fix":"biome check --write .",typecheck:"tsc --noEmit",test:"vitest run","test:e2e":"vitest run --config vitest.config.e2e.ts",prepack:"pnpm install && pnpm build && node scripts/verify-bundle.mjs"},dependencies:{"@clack/prompts":"1.4.0","@commander-js/extra-typings":"14.0.0",commander:"14.0.3",esbuild:"0.28.1","esbuild-wasm":"0.28.0",picocolors:"1.1.1",resend:"6.28.1-preview-inboxes.1"},pkg:{scripts:["node_modules/esbuild-wasm/bin/esbuild","node_modules/esbuild-wasm/wasm_exec.js","node_modules/esbuild-wasm/wasm_exec_node.js"],assets:["node_modules/esbuild-wasm/esbuild.wasm"]},devDependencies:{"@biomejs/biome":"2.4.11","@types/node":"24.12.4","@yao-pkg/pkg":"6.20.0",tsx:"4.22.4",typescript:"5.9.3",vitest:"4.1.9"}}});var se,Xn,Kt=Ae(()=>{"use strict";Yn();se=ir.version,Xn=ir.name});var ds=Re(je=>{"use strict";var rf=je&&je.__extends||(function(){var e=function(t,o){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,r){i.__proto__=r}||function(i,r){for(var n in r)r.hasOwnProperty(n)&&(i[n]=r[n])},e(t,o)};return function(t,o){e(t,o);function i(){this.constructor=t}t.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)}})();Object.defineProperty(je,"__esModule",{value:!0});var de=256,pr=(function(){function e(t){t===void 0&&(t="="),this._paddingCharacter=t}return e.prototype.encodedLength=function(t){return this._paddingCharacter?(t+2)/3*4|0:(t*8+5)/6|0},e.prototype.encode=function(t){for(var o="",i=0;i<t.length-2;i+=3){var r=t[i]<<16|t[i+1]<<8|t[i+2];o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),o+=this._encodeByte(r>>>6&63),o+=this._encodeByte(r>>>0&63)}var n=t.length-i;if(n>0){var r=t[i]<<16|(n===2?t[i+1]<<8:0);o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),n===2?o+=this._encodeByte(r>>>6&63):o+=this._paddingCharacter||"",o+=this._paddingCharacter||""}return o},e.prototype.maxDecodedLength=function(t){return this._paddingCharacter?t/4*3|0:(t*6+7)/8|0},e.prototype.decodedLength=function(t){return this.maxDecodedLength(t.length-this._getPaddingLength(t))},e.prototype.decode=function(t){if(t.length===0)return new Uint8Array(0);for(var o=this._getPaddingLength(t),i=t.length-o,r=new Uint8Array(this.maxDecodedLength(i)),n=0,s=0,a=0,l=0,u=0,m=0,p=0;s<i-4;s+=4)l=this._decodeChar(t.charCodeAt(s+0)),u=this._decodeChar(t.charCodeAt(s+1)),m=this._decodeChar(t.charCodeAt(s+2)),p=this._decodeChar(t.charCodeAt(s+3)),r[n++]=l<<2|u>>>4,r[n++]=u<<4|m>>>2,r[n++]=m<<6|p,a|=l&de,a|=u&de,a|=m&de,a|=p&de;if(s<i-1&&(l=this._decodeChar(t.charCodeAt(s)),u=this._decodeChar(t.charCodeAt(s+1)),r[n++]=l<<2|u>>>4,a|=l&de,a|=u&de),s<i-2&&(m=this._decodeChar(t.charCodeAt(s+2)),r[n++]=u<<4|m>>>2,a|=m&de),s<i-3&&(p=this._decodeChar(t.charCodeAt(s+3)),r[n++]=m<<6|p,a|=p&de),a!==0)throw new Error("Base64Coder: incorrect characters for decoding");return r},e.prototype._encodeByte=function(t){var o=t;return o+=65,o+=25-t>>>8&6,o+=51-t>>>8&-75,o+=61-t>>>8&-15,o+=62-t>>>8&3,String.fromCharCode(o)},e.prototype._decodeChar=function(t){var o=de;return o+=(42-t&t-44)>>>8&-de+t-43+62,o+=(46-t&t-48)>>>8&-de+t-47+63,o+=(47-t&t-58)>>>8&-de+t-48+52,o+=(64-t&t-91)>>>8&-de+t-65+0,o+=(96-t&t-123)>>>8&-de+t-97+26,o},e.prototype._getPaddingLength=function(t){var o=0;if(this._paddingCharacter){for(var i=t.length-1;i>=0&&t[i]===this._paddingCharacter;i--)o++;if(t.length<4||o>2)throw new Error("Base64Coder: incorrect padding")}return o},e})();je.Coder=pr;var po=new pr;function nf(e){return po.encode(e)}je.encode=nf;function sf(e){return po.decode(e)}je.decode=sf;var ls=(function(e){rf(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype._encodeByte=function(o){var i=o;return i+=65,i+=25-o>>>8&6,i+=51-o>>>8&-75,i+=61-o>>>8&-13,i+=62-o>>>8&49,String.fromCharCode(i)},t.prototype._decodeChar=function(o){var i=de;return i+=(44-o&o-46)>>>8&-de+o-45+62,i+=(94-o&o-96)>>>8&-de+o-95+63,i+=(47-o&o-58)>>>8&-de+o-48+52,i+=(64-o&o-91)>>>8&-de+o-65+0,i+=(96-o&o-123)>>>8&-de+o-97+26,i},t})(pr);je.URLSafeCoder=ls;var cs=new ls;function af(e){return cs.encode(e)}je.encodeURLSafe=af;function lf(e){return cs.decode(e)}je.decodeURLSafe=lf;je.encodedLength=function(e){return po.encodedLength(e)};je.maxDecodedLength=function(e){return po.maxDecodedLength(e)};je.decodedLength=function(e){return po.decodedLength(e)}});var ms=Re((us,Mo)=>{(function(e,t){var o={};t(o);var i=o.default;for(var r in o)i[r]=o[r];typeof Mo=="object"&&typeof Mo.exports=="object"?Mo.exports=i:typeof define=="function"&&define.amd?define(function(){return i}):e.sha256=i})(us,function(e){"use strict";e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function o(p,f,y,A,b){for(var x,v,U,S,K,B,G,Q,$,q,we,re,Ut;b>=64;){for(x=f[0],v=f[1],U=f[2],S=f[3],K=f[4],B=f[5],G=f[6],Q=f[7],q=0;q<16;q++)we=A+q*4,p[q]=(y[we]&255)<<24|(y[we+1]&255)<<16|(y[we+2]&255)<<8|y[we+3]&255;for(q=16;q<64;q++)$=p[q-2],re=($>>>17|$<<15)^($>>>19|$<<13)^$>>>10,$=p[q-15],Ut=($>>>7|$<<25)^($>>>18|$<<14)^$>>>3,p[q]=(re+p[q-7]|0)+(Ut+p[q-16]|0);for(q=0;q<64;q++)re=(((K>>>6|K<<26)^(K>>>11|K<<21)^(K>>>25|K<<7))+(K&B^~K&G)|0)+(Q+(t[q]+p[q]|0)|0)|0,Ut=((x>>>2|x<<30)^(x>>>13|x<<19)^(x>>>22|x<<10))+(x&v^x&U^v&U)|0,Q=G,G=B,B=K,K=S+re|0,S=U,U=v,v=x,x=re+Ut|0;f[0]+=x,f[1]+=v,f[2]+=U,f[3]+=S,f[4]+=K,f[5]+=B,f[6]+=G,f[7]+=Q,A+=64,b-=64}return A}var i=(function(){function p(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return p.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},p.prototype.clean=function(){for(var f=0;f<this.buffer.length;f++)this.buffer[f]=0;for(var f=0;f<this.temp.length;f++)this.temp[f]=0;this.reset()},p.prototype.update=function(f,y){if(y===void 0&&(y=f.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var A=0;if(this.bytesHashed+=y,this.bufferLength>0){for(;this.bufferLength<64&&y>0;)this.buffer[this.bufferLength++]=f[A++],y--;this.bufferLength===64&&(o(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(y>=64&&(A=o(this.temp,this.state,f,A,y),y%=64);y>0;)this.buffer[this.bufferLength++]=f[A++],y--;return this},p.prototype.finish=function(f){if(!this.finished){var y=this.bytesHashed,A=this.bufferLength,b=y/536870912|0,x=y<<3,v=y%64<56?64:128;this.buffer[A]=128;for(var U=A+1;U<v-8;U++)this.buffer[U]=0;this.buffer[v-8]=b>>>24&255,this.buffer[v-7]=b>>>16&255,this.buffer[v-6]=b>>>8&255,this.buffer[v-5]=b>>>0&255,this.buffer[v-4]=x>>>24&255,this.buffer[v-3]=x>>>16&255,this.buffer[v-2]=x>>>8&255,this.buffer[v-1]=x>>>0&255,o(this.temp,this.state,this.buffer,0,v),this.finished=!0}for(var U=0;U<8;U++)f[U*4+0]=this.state[U]>>>24&255,f[U*4+1]=this.state[U]>>>16&255,f[U*4+2]=this.state[U]>>>8&255,f[U*4+3]=this.state[U]>>>0&255;return this},p.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},p.prototype._saveState=function(f){for(var y=0;y<this.state.length;y++)f[y]=this.state[y]},p.prototype._restoreState=function(f,y){for(var A=0;A<this.state.length;A++)this.state[A]=f[A];this.bytesHashed=y,this.finished=!1,this.bufferLength=0},p})();e.Hash=i;var r=(function(){function p(f){this.inner=new i,this.outer=new i,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var y=new Uint8Array(this.blockSize);if(f.length>this.blockSize)new i().update(f).finish(y).clean();else for(var A=0;A<f.length;A++)y[A]=f[A];for(var A=0;A<y.length;A++)y[A]^=54;this.inner.update(y);for(var A=0;A<y.length;A++)y[A]^=106;this.outer.update(y),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(var A=0;A<y.length;A++)y[A]=0}return p.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},p.prototype.clean=function(){for(var f=0;f<this.istate.length;f++)this.ostate[f]=this.istate[f]=0;this.inner.clean(),this.outer.clean()},p.prototype.update=function(f){return this.inner.update(f),this},p.prototype.finish=function(f){return this.outer.finished?this.outer.finish(f):(this.inner.finish(f),this.outer.update(f,this.digestLength).finish(f)),this},p.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},p})();e.HMAC=r;function n(p){var f=new i().update(p),y=f.digest();return f.clean(),y}e.hash=n,e.default=n;function s(p,f){var y=new r(p).update(f),A=y.digest();return y.clean(),A}e.hmac=s;function a(p,f,y,A){var b=A[0];if(b===0)throw new Error("hkdf: cannot expand more");f.reset(),b>1&&f.update(p),y&&f.update(y),f.update(A),f.finish(p),A[0]++}var l=new Uint8Array(e.digestLength);function u(p,f,y,A){f===void 0&&(f=l),A===void 0&&(A=32);for(var b=new Uint8Array([1]),x=s(f,p),v=new r(x),U=new Uint8Array(v.digestLength),S=U.length,K=new Uint8Array(A),B=0;B<A;B++)S===U.length&&(a(U,v,y,b),S=0),K[B]=U[S++];return v.clean(),U.fill(0),b.fill(0),K}e.hkdf=u;function m(p,f,y,A){for(var b=new r(p),x=b.digestLength,v=new Uint8Array(4),U=new Uint8Array(x),S=new Uint8Array(x),K=new Uint8Array(A),B=0;B*x<A;B++){var G=B+1;v[0]=G>>>24&255,v[1]=G>>>16&255,v[2]=G>>>8&255,v[3]=G>>>0&255,b.reset(),b.update(f),b.update(v),b.finish(S);for(var Q=0;Q<x;Q++)U[Q]=S[Q];for(var Q=2;Q<=y;Q++){b.reset(),b.update(S).finish(S);for(var $=0;$<x;$++)U[$]^=S[$]}for(var Q=0;Q<x&&B*x+Q<A;Q++)K[B*x+Q]=U[Q]}for(var B=0;B<x;B++)U[B]=S[B]=0;for(var B=0;B<4;B++)v[B]=0;return b.clean(),K}e.pbkdf2=m})});var fs=Re(fr=>{"use strict";Object.defineProperty(fr,"__esModule",{value:!0});fr.timingSafeEqual=cf;function ps(e,t=""){if(!e)throw new Error(t)}function cf(e,t){if(e.byteLength!==t.byteLength)return!1;e instanceof DataView||(e=new DataView(ArrayBuffer.isView(e)?e.buffer:e)),t instanceof DataView||(t=new DataView(ArrayBuffer.isView(t)?t.buffer:t)),ps(e instanceof DataView),ps(t instanceof DataView);let o=e.byteLength,i=0,r=-1;for(;++r<o;)i|=e.getUint8(r)^t.getUint8(r);return i===0}});var As=Re(Pt=>{"use strict";Object.defineProperty(Pt,"__esModule",{value:!0});Pt.Webhook=Pt.WebhookVerificationError=void 0;var hs=ds(),df=ms(),uf=fs(),gs=300,hr=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="ExtendableError",this.stack=new Error(t).stack}},pt=class e extends hr{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="WebhookVerificationError"}};Pt.WebhookVerificationError=pt;var qo=class e{constructor(t,o){if(o?.format==="raw")t instanceof Uint8Array?this.key=t:this.key=Uint8Array.from(t,i=>i.charCodeAt(0));else{if(typeof t!="string")throw new Error("Expected secret to be of type string");t.startsWith(e.prefix)&&(t=t.substring(e.prefix.length)),this.key=hs.decode(t)}if(this.key.length===0)throw new Error("Secret can't be empty.")}verify(t,o,i){var r;let n=(r=i?.jsonParse)!==null&&r!==void 0?r:!0,s={};for(let b of Object.keys(o))s[b.toLowerCase()]=o[b];let a=s["webhook-id"],l=s["webhook-signature"],u=s["webhook-timestamp"];if(!l||!a||!u)throw new pt("Missing required headers");let m=this.verifyTimestamp(u),f=this.sign(a,m,t).split(",")[1],y=l.split(" "),A=new globalThis.TextEncoder;for(let b of y){let[x,v]=b.split(",");if(x==="v1"&&(0,uf.timingSafeEqual)(A.encode(v),A.encode(f))){let U=t.toString();return U===""?void 0:n?JSON.parse(U):void 0}}throw new pt("No matching signature found")}sign(t,o,i){if(typeof i!="string")if(i.constructor.name==="Buffer")i=i.toString();else throw new Error("Expected payload to be of type string or Buffer.");let r=new TextEncoder,n=Math.floor(o.getTime()/1e3),s=r.encode(`${t}.${n}.${i}`);return`v1,${hs.encode(df.hmac(this.key,s))}`}verifyTimestamp(t){let o=Math.floor(Date.now()/1e3),i=parseInt(t,10);if(Number.isNaN(i))throw new pt("Invalid Signature Headers");if(o-i>gs)throw new pt("Message timestamp too old");if(i>o+gs)throw new pt("Message timestamp too new");return new Date(i*1e3)}};Pt.Webhook=qo;qo.prefix="whsec_"});var Wo,Ts=Ae(()=>{"use strict";Wo=class extends Error{constructor(t){super(`Credentials file is corrupted or contains invalid JSON: ${t}
27
+ `)}),this}_outputHelpIfRequested(t){let o=this._getHelpOption();o&&t.find(r=>o.is(r))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function tn(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let o,i="127.0.0.1",r="9229",n;return(n=t.match(/^(--inspect(-brk)?)$/))!==null?o=n[1]:(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(o=n[1],/^\d+$/.test(n[3])?r=n[3]:i=n[3]):(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(o=n[1],i=n[3],r=n[4]),o&&r!=="0"?`${o}=${i}:${parseInt(r)+1}`:t})}function Qi(){if(J.env.NO_COLOR||J.env.FORCE_COLOR==="0"||J.env.FORCE_COLOR==="false")return!1;if(J.env.FORCE_COLOR||J.env.CLICOLOR_FORCE!==void 0)return!0}Ni.Command=Hi;Ni.useColor=Qi});var an=Re(Ge=>{var{Argument:rn}=xo(),{Command:Mi}=on(),{CommanderError:am,InvalidArgumentError:nn}=io(),{Help:lm}=Oi(),{Option:sn}=Pi();Ge.program=new Mi;Ge.createCommand=e=>new Mi(e);Ge.createOption=(e,t)=>new sn(e,t);Ge.createArgument=(e,t)=>new rn(e,t);Ge.Command=Mi;Ge.Option=sn;Ge.Argument=rn;Ge.Help=lm;Ge.CommanderError=am;Ge.InvalidArgumentError=nn;Ge.InvalidOptionArgumentError=nn});var cn=Re((Oe,ln)=>{var Le=an();Oe=ln.exports={};Oe.program=new Le.Command;Oe.Argument=Le.Argument;Oe.Command=Le.Command;Oe.CommanderError=Le.CommanderError;Oe.Help=Le.Help;Oe.InvalidArgumentError=Le.InvalidArgumentError;Oe.InvalidOptionArgumentError=Le.InvalidArgumentError;Oe.Option=Le.Option;Oe.createCommand=e=>new Le.Command(e);Oe.createOption=(e,t)=>new Le.Option(e,t);Oe.createArgument=(e,t)=>new Le.Argument(e,t)});var Ye=Re((bh,qi)=>{var Ro=process||{},mn=Ro.argv||[],Fo=Ro.env||{},cm=!(Fo.NO_COLOR||mn.includes("--no-color"))&&(!!Fo.FORCE_COLOR||mn.includes("--color")||Ro.platform==="win32"||(Ro.stdout||{}).isTTY&&Fo.TERM!=="dumb"||!!Fo.CI),dm=(e,t,o=e)=>i=>{let r=""+i,n=r.indexOf(t,e.length);return~n?e+um(r,t,o,n)+t:e+r+t},um=(e,t,o,i)=>{let r="",n=0;do r+=e.substring(n,i)+o,n=i+t.length,i=e.indexOf(t,n);while(~i);return r+e.substring(n)},pn=(e=cm)=>{let t=e?dm:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};qi.exports=pn();qi.exports.createColors=pn});var zi=Re((kh,Fn)=>{"use strict";var Vi={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let o="";return e<0?o+=`\x1B[${-e}D`:e>0&&(o+=`\x1B[${e}C`),t<0?o+=`\x1B[${-t}A`:t>0&&(o+=`\x1B[${t}B`),o},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Fm={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},Rm={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let o=0;o<e;o++)t+=this.line+(o<e-1?Vi.up():"");return e&&(t+=Vi.left),t}};Fn.exports={cursor:Vi,scroll:Fm,erase:Rm,beep:"\x07"}});var er,Ln=he(()=>{er={name:"resend-cli",version:"2.22.0",description:"The official CLI for Resend",license:"MIT",repository:{type:"git",url:"https://github.com/resend/resend-cli"},homepage:"https://github.com/resend/resend-cli#readme",keywords:["cli","resend","email","api","tanstack-intent"],engines:{node:">=22"},packageManager:"pnpm@11.8.0",files:["dist/cli.cjs","skills/"],type:"module",bin:{resend:"./dist/cli.cjs"},scripts:{dev:"tsx src/cli.ts","dev:watch":"tsx --watch src/cli.ts",build:"node scripts/build.mjs","build:bin":"pnpm build && pkg dist/cli.cjs --config package.json --compress Brotli --target node24 --output dist/resend",lint:"biome check .","lint:fix":"biome check --write .",typecheck:"tsc --noEmit",test:"vitest run","test:e2e":"vitest run --config vitest.config.e2e.ts",prepack:"pnpm install && pnpm build && node scripts/verify-bundle.mjs"},dependencies:{"@clack/prompts":"1.4.0","@commander-js/extra-typings":"14.0.0",commander:"14.0.3",esbuild:"0.28.1","esbuild-wasm":"0.28.0",picocolors:"1.1.1",resend:"6.30.0"},pkg:{scripts:["node_modules/esbuild-wasm/bin/esbuild","node_modules/esbuild-wasm/wasm_exec.js","node_modules/esbuild-wasm/wasm_exec_node.js"],assets:["node_modules/esbuild-wasm/esbuild.wasm"]},devDependencies:{"@biomejs/biome":"2.4.11","@types/node":"24.12.4","@yao-pkg/pkg":"6.20.0",tsx:"4.22.4",typescript:"5.9.3",vitest:"4.1.9"}}});var ne,Wn,Kt=he(()=>{"use strict";Ln();ne=er.version,Wn=er.name});var ns=Re(je=>{"use strict";var bp=je&&je.__extends||(function(){var e=function(t,o){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,r){i.__proto__=r}||function(i,r){for(var n in r)r.hasOwnProperty(n)&&(i[n]=r[n])},e(t,o)};return function(t,o){e(t,o);function i(){this.constructor=t}t.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)}})();Object.defineProperty(je,"__esModule",{value:!0});var le=256,dr=(function(){function e(t){t===void 0&&(t="="),this._paddingCharacter=t}return e.prototype.encodedLength=function(t){return this._paddingCharacter?(t+2)/3*4|0:(t*8+5)/6|0},e.prototype.encode=function(t){for(var o="",i=0;i<t.length-2;i+=3){var r=t[i]<<16|t[i+1]<<8|t[i+2];o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),o+=this._encodeByte(r>>>6&63),o+=this._encodeByte(r>>>0&63)}var n=t.length-i;if(n>0){var r=t[i]<<16|(n===2?t[i+1]<<8:0);o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),n===2?o+=this._encodeByte(r>>>6&63):o+=this._paddingCharacter||"",o+=this._paddingCharacter||""}return o},e.prototype.maxDecodedLength=function(t){return this._paddingCharacter?t/4*3|0:(t*6+7)/8|0},e.prototype.decodedLength=function(t){return this.maxDecodedLength(t.length-this._getPaddingLength(t))},e.prototype.decode=function(t){if(t.length===0)return new Uint8Array(0);for(var o=this._getPaddingLength(t),i=t.length-o,r=new Uint8Array(this.maxDecodedLength(i)),n=0,s=0,a=0,l=0,c=0,u=0,p=0;s<i-4;s+=4)l=this._decodeChar(t.charCodeAt(s+0)),c=this._decodeChar(t.charCodeAt(s+1)),u=this._decodeChar(t.charCodeAt(s+2)),p=this._decodeChar(t.charCodeAt(s+3)),r[n++]=l<<2|c>>>4,r[n++]=c<<4|u>>>2,r[n++]=u<<6|p,a|=l&le,a|=c&le,a|=u&le,a|=p&le;if(s<i-1&&(l=this._decodeChar(t.charCodeAt(s)),c=this._decodeChar(t.charCodeAt(s+1)),r[n++]=l<<2|c>>>4,a|=l&le,a|=c&le),s<i-2&&(u=this._decodeChar(t.charCodeAt(s+2)),r[n++]=c<<4|u>>>2,a|=u&le),s<i-3&&(p=this._decodeChar(t.charCodeAt(s+3)),r[n++]=u<<6|p,a|=p&le),a!==0)throw new Error("Base64Coder: incorrect characters for decoding");return r},e.prototype._encodeByte=function(t){var o=t;return o+=65,o+=25-t>>>8&6,o+=51-t>>>8&-75,o+=61-t>>>8&-15,o+=62-t>>>8&3,String.fromCharCode(o)},e.prototype._decodeChar=function(t){var o=le;return o+=(42-t&t-44)>>>8&-le+t-43+62,o+=(46-t&t-48)>>>8&-le+t-47+63,o+=(47-t&t-58)>>>8&-le+t-48+52,o+=(64-t&t-91)>>>8&-le+t-65+0,o+=(96-t&t-123)>>>8&-le+t-97+26,o},e.prototype._getPaddingLength=function(t){var o=0;if(this._paddingCharacter){for(var i=t.length-1;i>=0&&t[i]===this._paddingCharacter;i--)o++;if(t.length<4||o>2)throw new Error("Base64Coder: incorrect padding")}return o},e})();je.Coder=dr;var mo=new dr;function yp(e){return mo.encode(e)}je.encode=yp;function Cp(e){return mo.decode(e)}je.decode=Cp;var is=(function(e){bp(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype._encodeByte=function(o){var i=o;return i+=65,i+=25-o>>>8&6,i+=51-o>>>8&-75,i+=61-o>>>8&-13,i+=62-o>>>8&49,String.fromCharCode(i)},t.prototype._decodeChar=function(o){var i=le;return i+=(44-o&o-46)>>>8&-le+o-45+62,i+=(94-o&o-96)>>>8&-le+o-95+63,i+=(47-o&o-58)>>>8&-le+o-48+52,i+=(64-o&o-91)>>>8&-le+o-65+0,i+=(96-o&o-123)>>>8&-le+o-97+26,i},t})(dr);je.URLSafeCoder=is;var rs=new is;function wp(e){return rs.encode(e)}je.encodeURLSafe=wp;function Up(e){return rs.decode(e)}je.decodeURLSafe=Up;je.encodedLength=function(e){return mo.encodedLength(e)};je.maxDecodedLength=function(e){return mo.maxDecodedLength(e)};je.decodedLength=function(e){return mo.decodedLength(e)}});var as=Re((ss,No)=>{(function(e,t){var o={};t(o);var i=o.default;for(var r in o)i[r]=o[r];typeof No=="object"&&typeof No.exports=="object"?No.exports=i:typeof define=="function"&&define.amd?define(function(){return i}):e.sha256=i})(ss,function(e){"use strict";e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function o(p,f,b,h,A){for(var w,S,v,K,x,D,I,H,E,N,we,ie,St;A>=64;){for(w=f[0],S=f[1],v=f[2],K=f[3],x=f[4],D=f[5],I=f[6],H=f[7],N=0;N<16;N++)we=h+N*4,p[N]=(b[we]&255)<<24|(b[we+1]&255)<<16|(b[we+2]&255)<<8|b[we+3]&255;for(N=16;N<64;N++)E=p[N-2],ie=(E>>>17|E<<15)^(E>>>19|E<<13)^E>>>10,E=p[N-15],St=(E>>>7|E<<25)^(E>>>18|E<<14)^E>>>3,p[N]=(ie+p[N-7]|0)+(St+p[N-16]|0);for(N=0;N<64;N++)ie=(((x>>>6|x<<26)^(x>>>11|x<<21)^(x>>>25|x<<7))+(x&D^~x&I)|0)+(H+(t[N]+p[N]|0)|0)|0,St=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&S^w&v^S&v)|0,H=I,I=D,D=x,x=K+ie|0,K=v,v=S,S=w,w=ie+St|0;f[0]+=w,f[1]+=S,f[2]+=v,f[3]+=K,f[4]+=x,f[5]+=D,f[6]+=I,f[7]+=H,h+=64,A-=64}return h}var i=(function(){function p(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return p.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},p.prototype.clean=function(){for(var f=0;f<this.buffer.length;f++)this.buffer[f]=0;for(var f=0;f<this.temp.length;f++)this.temp[f]=0;this.reset()},p.prototype.update=function(f,b){if(b===void 0&&(b=f.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var h=0;if(this.bytesHashed+=b,this.bufferLength>0){for(;this.bufferLength<64&&b>0;)this.buffer[this.bufferLength++]=f[h++],b--;this.bufferLength===64&&(o(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(b>=64&&(h=o(this.temp,this.state,f,h,b),b%=64);b>0;)this.buffer[this.bufferLength++]=f[h++],b--;return this},p.prototype.finish=function(f){if(!this.finished){var b=this.bytesHashed,h=this.bufferLength,A=b/536870912|0,w=b<<3,S=b%64<56?64:128;this.buffer[h]=128;for(var v=h+1;v<S-8;v++)this.buffer[v]=0;this.buffer[S-8]=A>>>24&255,this.buffer[S-7]=A>>>16&255,this.buffer[S-6]=A>>>8&255,this.buffer[S-5]=A>>>0&255,this.buffer[S-4]=w>>>24&255,this.buffer[S-3]=w>>>16&255,this.buffer[S-2]=w>>>8&255,this.buffer[S-1]=w>>>0&255,o(this.temp,this.state,this.buffer,0,S),this.finished=!0}for(var v=0;v<8;v++)f[v*4+0]=this.state[v]>>>24&255,f[v*4+1]=this.state[v]>>>16&255,f[v*4+2]=this.state[v]>>>8&255,f[v*4+3]=this.state[v]>>>0&255;return this},p.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},p.prototype._saveState=function(f){for(var b=0;b<this.state.length;b++)f[b]=this.state[b]},p.prototype._restoreState=function(f,b){for(var h=0;h<this.state.length;h++)this.state[h]=f[h];this.bytesHashed=b,this.finished=!1,this.bufferLength=0},p})();e.Hash=i;var r=(function(){function p(f){this.inner=new i,this.outer=new i,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var b=new Uint8Array(this.blockSize);if(f.length>this.blockSize)new i().update(f).finish(b).clean();else for(var h=0;h<f.length;h++)b[h]=f[h];for(var h=0;h<b.length;h++)b[h]^=54;this.inner.update(b);for(var h=0;h<b.length;h++)b[h]^=106;this.outer.update(b),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(var h=0;h<b.length;h++)b[h]=0}return p.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},p.prototype.clean=function(){for(var f=0;f<this.istate.length;f++)this.ostate[f]=this.istate[f]=0;this.inner.clean(),this.outer.clean()},p.prototype.update=function(f){return this.inner.update(f),this},p.prototype.finish=function(f){return this.outer.finished?this.outer.finish(f):(this.inner.finish(f),this.outer.update(f,this.digestLength).finish(f)),this},p.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},p})();e.HMAC=r;function n(p){var f=new i().update(p),b=f.digest();return f.clean(),b}e.hash=n,e.default=n;function s(p,f){var b=new r(p).update(f),h=b.digest();return b.clean(),h}e.hmac=s;function a(p,f,b,h){var A=h[0];if(A===0)throw new Error("hkdf: cannot expand more");f.reset(),A>1&&f.update(p),b&&f.update(b),f.update(h),f.finish(p),h[0]++}var l=new Uint8Array(e.digestLength);function c(p,f,b,h){f===void 0&&(f=l),h===void 0&&(h=32);for(var A=new Uint8Array([1]),w=s(f,p),S=new r(w),v=new Uint8Array(S.digestLength),K=v.length,x=new Uint8Array(h),D=0;D<h;D++)K===v.length&&(a(v,S,b,A),K=0),x[D]=v[K++];return S.clean(),v.fill(0),A.fill(0),x}e.hkdf=c;function u(p,f,b,h){for(var A=new r(p),w=A.digestLength,S=new Uint8Array(4),v=new Uint8Array(w),K=new Uint8Array(w),x=new Uint8Array(h),D=0;D*w<h;D++){var I=D+1;S[0]=I>>>24&255,S[1]=I>>>16&255,S[2]=I>>>8&255,S[3]=I>>>0&255,A.reset(),A.update(f),A.update(S),A.finish(K);for(var H=0;H<w;H++)v[H]=K[H];for(var H=2;H<=b;H++){A.reset(),A.update(K).finish(K);for(var E=0;E<w;E++)v[E]^=K[E]}for(var H=0;H<w&&D*w+H<h;H++)x[D*w+H]=v[H]}for(var D=0;D<w;D++)v[D]=K[D]=0;for(var D=0;D<4;D++)S[D]=0;return A.clean(),x}e.pbkdf2=u})});var cs=Re(ur=>{"use strict";Object.defineProperty(ur,"__esModule",{value:!0});ur.timingSafeEqual=Sp;function ls(e,t=""){if(!e)throw new Error(t)}function Sp(e,t){if(e.byteLength!==t.byteLength)return!1;e instanceof DataView||(e=new DataView(ArrayBuffer.isView(e)?e.buffer:e)),t instanceof DataView||(t=new DataView(ArrayBuffer.isView(t)?t.buffer:t)),ls(e instanceof DataView),ls(t instanceof DataView);let o=e.byteLength,i=0,r=-1;for(;++r<o;)i|=e.getUint8(r)^t.getUint8(r);return i===0}});var ms=Re(jt=>{"use strict";Object.defineProperty(jt,"__esModule",{value:!0});jt.Webhook=jt.WebhookVerificationError=void 0;var ds=ns(),vp=as(),Kp=cs(),us=300,mr=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="ExtendableError",this.stack=new Error(t).stack}},mt=class e extends mr{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="WebhookVerificationError"}};jt.WebhookVerificationError=mt;var Mo=class e{constructor(t,o){if(o?.format==="raw")t instanceof Uint8Array?this.key=t:this.key=Uint8Array.from(t,i=>i.charCodeAt(0));else{if(typeof t!="string")throw new Error("Expected secret to be of type string");t.startsWith(e.prefix)&&(t=t.substring(e.prefix.length)),this.key=ds.decode(t)}if(this.key.length===0)throw new Error("Secret can't be empty.")}verify(t,o,i){var r;let n=(r=i?.jsonParse)!==null&&r!==void 0?r:!0,s={};for(let A of Object.keys(o))s[A.toLowerCase()]=o[A];let a=s["webhook-id"],l=s["webhook-signature"],c=s["webhook-timestamp"];if(!l||!a||!c)throw new mt("Missing required headers");let u=this.verifyTimestamp(c),f=this.sign(a,u,t).split(",")[1],b=l.split(" "),h=new globalThis.TextEncoder;for(let A of b){let[w,S]=A.split(",");if(w==="v1"&&(0,Kp.timingSafeEqual)(h.encode(S),h.encode(f))){let v=t.toString();return v===""?void 0:n?JSON.parse(v):void 0}}throw new mt("No matching signature found")}sign(t,o,i){if(typeof i!="string")if(i.constructor.name==="Buffer")i=i.toString();else throw new Error("Expected payload to be of type string or Buffer.");let r=new TextEncoder,n=Math.floor(o.getTime()/1e3),s=r.encode(`${t}.${n}.${i}`);return`v1,${ds.encode(vp.hmac(this.key,s))}`}verifyTimestamp(t){let o=Math.floor(Date.now()/1e3),i=parseInt(t,10);if(Number.isNaN(i))throw new mt("Invalid Signature Headers");if(o-i>us)throw new mt("Message timestamp too old");if(i>o+us)throw new mt("Message timestamp too new");return new Date(i*1e3)}};jt.Webhook=Mo;Mo.prefix="whsec_"});var qo,vs=he(()=>{"use strict";qo=class extends Error{constructor(t){super(`Credentials file is corrupted or contains invalid JSON: ${t}
28
28
  The file has been preserved for manual inspection.
29
- To fix: either repair the JSON manually, or delete the file and run: resend login`),this.name="CorruptedCredentialsError"}}});var Ar={};io(Ar,{FileBackend:()=>gr});var gr,br=Ae(()=>{"use strict";be();gr=class{name="plaintext file";isSecure=!1;async get(t,o){let i=Se();if(!i)return null;let r=i.profiles[o];return(r?.type==="api_key"?r.api_key:null)??null}async set(t,o,i){yr(i,o)}async delete(t,o){try{return Os(o),!0}catch{return!1}}async isAvailable(){return!0}}});var Bs={};io(Bs,{MacOSBackend:()=>xr});function Cr(e,t){return new Promise(o=>{(0,Es.execFile)(e,t,{timeout:5e3},(i,r,n)=>{let s=i&&"code"in i?i.code:0;o({stdout:r??"",stderr:n??"",code:s})})})}var Es,xr,Is=Ae(()=>{"use strict";Es=require("node:child_process");xr=class{name="macOS Keychain";isSecure=!0;async get(t,o){let{stdout:i,stderr:r,code:n}=await Cr("/usr/bin/security",["find-generic-password","-s",t,"-a",o,"-w"]);if(n===44)return null;if(n!==0)throw new Error(`Failed to read from macOS Keychain (exit code ${n}): ${r.trim()}`);return i.trim()||null}async set(t,o,i){let{code:r,stderr:n}=await Cr("/usr/bin/security",["add-generic-password","-s",t,"-a",o,"-w",i,"-U"]);if(r!==0)throw new Error(`Failed to store credential in macOS Keychain: ${n.trim()}`)}async delete(t,o){let{code:i}=await Cr("/usr/bin/security",["delete-generic-password","-s",t,"-a",o]);return i===0}async isAvailable(){return process.platform==="darwin"}}});var js={};io(js,{LinuxBackend:()=>wr});function Jo(e,t,o){return new Promise(i=>{(0,Vo.execFile)(e,t,{timeout:o?.timeout??5e3},(r,n,s)=>{let a=r&&"code"in r?r.code:0;i({stdout:n??"",stderr:s??"",code:a})})})}function oh(e,t,o){return new Promise(i=>{let r=(0,Vo.spawn)(e,t,{stdio:["pipe","ignore","pipe"],timeout:5e3}),n="";r.stderr?.on("data",s=>{n+=s.toString()}),r.on("close",s=>{i({code:s,stderr:n})}),r.on("error",()=>{i({code:1,stderr:"Failed to spawn process"})}),r.stdin?.on("error",()=>{}),r.stdin?.write(o),r.stdin?.end()})}var Vo,wr,Ps=Ae(()=>{"use strict";Vo=require("node:child_process");wr=class{name="Secret Service (libsecret)";isSecure=!0;async get(t,o){let{stdout:i,code:r}=await Jo("secret-tool",["lookup","service",t,"account",o]);return r!==0||!i.trim()?null:i.trim()}async set(t,o,i){let{code:r,stderr:n}=await oh("secret-tool",["store",`--label=Resend CLI (${o})`,"service",t,"account",o],i);if(r!==0)throw new Error(`Failed to store credential in Secret Service: ${n.trim()}`)}async delete(t,o){let{code:i}=await Jo("secret-tool",["clear","service",t,"account",o]);return i===0}async isAvailable(){if(process.platform!=="linux"||(await Jo("which",["secret-tool"])).code!==0)return!1;let o=await Jo("secret-tool",["lookup","service","__resend_cli_probe__"],{timeout:3e3});return o.code===0||o.code===1}}});var $s={};io($s,{WindowsBackend:()=>vr});function zo(e){return new Promise(t=>{(0,Yo.execFile)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{timeout:1e4},(o,i,r)=>{let n=o&&"code"in o?o.code:0;t({stdout:i??"",stderr:r??"",code:n})})})}function ih(e,t){return new Promise(o=>{let i=(0,Yo.spawn)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{stdio:["pipe","pipe","pipe"],timeout:1e4}),r="",n="";i.stdout?.on("data",s=>{r+=s.toString()}),i.stderr?.on("data",s=>{n+=s.toString()}),i.on("close",s=>{o({stdout:r,stderr:n,code:s})}),i.on("error",()=>{o({stdout:"",stderr:"Failed to spawn process",code:1})}),i.stdin?.on("error",()=>{}),i.stdin?.write(t),i.stdin?.end()})}function ft(e){return e.replace(/'/g,"''")}var Yo,ho,vr,Gs=Ae(()=>{"use strict";Yo=require("node:child_process");ho=`
29
+ To fix: either repair the JSON manually, or delete the file and run: resend login`),this.name="CorruptedCredentialsError"}}});var fr={};oo(fr,{FileBackend:()=>pr});var pr,gr=he(()=>{"use strict";Ae();pr=class{name="plaintext file";isSecure=!1;async get(t,o){let i=ve();if(!i)return null;let r=i.profiles[o];return(r?.type==="api_key"?r.api_key:null)??null}async set(t,o,i){hr(i,o)}async delete(t,o){try{return Ks(o),!0}catch{return!1}}async isAvailable(){return!0}}});var ks={};oo(ks,{MacOSBackend:()=>br});function Ar(e,t){return new Promise(o=>{(0,xs.execFile)(e,t,{timeout:5e3},(i,r,n)=>{let s=i&&"code"in i?i.code:0;o({stdout:r??"",stderr:n??"",code:s})})})}var xs,br,Fs=he(()=>{"use strict";xs=require("node:child_process");br=class{name="macOS Keychain";isSecure=!0;async get(t,o){let{stdout:i,stderr:r,code:n}=await Ar("/usr/bin/security",["find-generic-password","-s",t,"-a",o,"-w"]);if(n===44)return null;if(n!==0)throw new Error(`Failed to read from macOS Keychain (exit code ${n}): ${r.trim()}`);return i.trim()||null}async set(t,o,i){let{code:r,stderr:n}=await Ar("/usr/bin/security",["add-generic-password","-s",t,"-a",o,"-w",i,"-U"]);if(r!==0)throw new Error(`Failed to store credential in macOS Keychain: ${n.trim()}`)}async delete(t,o){let{code:i}=await Ar("/usr/bin/security",["delete-generic-password","-s",t,"-a",o]);return i===0}async isAvailable(){return process.platform==="darwin"}}});var Rs={};oo(Rs,{LinuxBackend:()=>yr});function Lo(e,t,o){return new Promise(i=>{(0,Wo.execFile)(e,t,{timeout:o?.timeout??5e3},(r,n,s)=>{let a=r&&"code"in r?r.code:0;i({stdout:n??"",stderr:s??"",code:a})})})}function pf(e,t,o){return new Promise(i=>{let r=(0,Wo.spawn)(e,t,{stdio:["pipe","ignore","pipe"],timeout:5e3}),n="";r.stderr?.on("data",s=>{n+=s.toString()}),r.on("close",s=>{i({code:s,stderr:n})}),r.on("error",()=>{i({code:1,stderr:"Failed to spawn process"})}),r.stdin?.on("error",()=>{}),r.stdin?.write(o),r.stdin?.end()})}var Wo,yr,_s=he(()=>{"use strict";Wo=require("node:child_process");yr=class{name="Secret Service (libsecret)";isSecure=!0;async get(t,o){let{stdout:i,code:r}=await Lo("secret-tool",["lookup","service",t,"account",o]);return r!==0||!i.trim()?null:i.trim()}async set(t,o,i){let{code:r,stderr:n}=await pf("secret-tool",["store",`--label=Resend CLI (${o})`,"service",t,"account",o],i);if(r!==0)throw new Error(`Failed to store credential in Secret Service: ${n.trim()}`)}async delete(t,o){let{code:i}=await Lo("secret-tool",["clear","service",t,"account",o]);return i===0}async isAvailable(){if(process.platform!=="linux"||(await Lo("which",["secret-tool"])).code!==0)return!1;let o=await Lo("secret-tool",["lookup","service","__resend_cli_probe__"],{timeout:3e3});return o.code===0||o.code===1}}});var Ds={};oo(Ds,{WindowsBackend:()=>Cr});function Jo(e){return new Promise(t=>{(0,Vo.execFile)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{timeout:1e4},(o,i,r)=>{let n=o&&"code"in o?o.code:0;t({stdout:i??"",stderr:r??"",code:n})})})}function ff(e,t){return new Promise(o=>{let i=(0,Vo.spawn)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{stdio:["pipe","pipe","pipe"],timeout:1e4}),r="",n="";i.stdout?.on("data",s=>{r+=s.toString()}),i.stderr?.on("data",s=>{n+=s.toString()}),i.on("close",s=>{o({stdout:r,stderr:n,code:s})}),i.on("error",()=>{o({stdout:"",stderr:"Failed to spawn process",code:1})}),i.stdin?.on("error",()=>{}),i.stdin?.write(t),i.stdin?.end()})}function pt(e){return e.replace(/'/g,"''")}var Vo,fo,Cr,Es=he(()=>{"use strict";Vo=require("node:child_process");fo=`
30
30
  try { $null = [Windows.Security.Credentials.PasswordVault] } catch {
31
31
  [void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]
32
32
  }
33
- `,vr=class{name="Windows Credential Manager";isSecure=!0;async get(t,o){let i=`${ho}
33
+ `,Cr=class{name="Windows Credential Manager";isSecure=!0;async get(t,o){let i=`${fo}
34
34
  $v = New-Object Windows.Security.Credentials.PasswordVault
35
35
  try {
36
- $c = $v.Retrieve('${ft(t)}', '${ft(o)}')
36
+ $c = $v.Retrieve('${pt(t)}', '${pt(o)}')
37
37
  $c.RetrievePassword()
38
38
  Write-Output $c.Password
39
39
  } catch {
40
40
  exit 1
41
41
  }
42
- `,{stdout:r,code:n}=await zo(i);return n!==0||!r.trim()?null:r.trim()}async set(t,o,i){let r=`${ho}
42
+ `,{stdout:r,code:n}=await Jo(i);return n!==0||!r.trim()?null:r.trim()}async set(t,o,i){let r=`${fo}
43
43
  $v = New-Object Windows.Security.Credentials.PasswordVault
44
44
  try {
45
- $c = $v.Retrieve('${ft(t)}', '${ft(o)}')
45
+ $c = $v.Retrieve('${pt(t)}', '${pt(o)}')
46
46
  $v.Remove($c)
47
47
  } catch {}
48
- `;await zo(r);let n=`${ho}
48
+ `;await Jo(r);let n=`${fo}
49
49
  $secret = [Console]::In.ReadLine()
50
50
  $v = New-Object Windows.Security.Credentials.PasswordVault
51
- $c = New-Object Windows.Security.Credentials.PasswordCredential('${ft(t)}', '${ft(o)}', $secret)
51
+ $c = New-Object Windows.Security.Credentials.PasswordCredential('${pt(t)}', '${pt(o)}', $secret)
52
52
  $v.Add($c)
53
- `,{code:s,stderr:a}=await ih(n,i);if(s!==0)throw new Error(`Failed to store credential in Windows Credential Manager: ${a.trim()}`)}async delete(t,o){let i=`${ho}
53
+ `,{code:s,stderr:a}=await ff(n,i);if(s!==0)throw new Error(`Failed to store credential in Windows Credential Manager: ${a.trim()}`)}async delete(t,o){let i=`${fo}
54
54
  $v = New-Object Windows.Security.Credentials.PasswordVault
55
55
  try {
56
- $c = $v.Retrieve('${ft(t)}', '${ft(o)}')
56
+ $c = $v.Retrieve('${pt(t)}', '${pt(o)}')
57
57
  $v.Remove($c)
58
58
  } catch {
59
59
  exit 1
60
60
  }
61
- `,{code:r}=await zo(i);return r===0}async isAvailable(){if(process.platform!=="win32")return!1;let{code:t}=await zo(`${ho} $null = New-Object Windows.Security.Credentials.PasswordVault`);return t===0}}});async function rt(){if(et)return et;let e=process.env.RESEND_CREDENTIAL_STORE;if(e==="file"){let{FileBackend:o}=await Promise.resolve().then(()=>(br(),Ar));return et=new o,et}if(e==="secure_storage"){let o=await Hs();if(o)return et=o,et}if(!e){let o=await Hs();if(o)return et=o,et}let{FileBackend:t}=await Promise.resolve().then(()=>(br(),Ar));return et=new t,et}async function Hs(){if(process.platform==="darwin"){let{MacOSBackend:e}=await Promise.resolve().then(()=>(Is(),Bs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="linux"){let{LinuxBackend:e}=await Promise.resolve().then(()=>(Ps(),js)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="win32"){let{WindowsBackend:e}=await Promise.resolve().then(()=>(Gs(),$s)),t=new e;if(await t.isAvailable())return t}return null}var ze,et,Ur=Ae(()=>{"use strict";ze="resend-cli",et=null});function nt(e,t){(0,Ke.mkdirSync)((0,Ms.dirname)(e),{recursive:!0});let o=sh(e);try{let i=t();return i instanceof Promise?i.finally(()=>Sr(e,o)):(Sr(e,o),i)}catch(i){throw Sr(e,o),i}}var Ns,Ke,Ms,rh,nh,Qs,sh,Sr,ah,lh,qs=Ae(()=>{"use strict";Ns=require("node:crypto"),Ke=require("node:fs"),Ms=require("node:path"),rh=1e4,nh=50,Qs=200;sh=e=>{let t=(0,Ns.randomUUID)();for(let o=0;o<Qs;o++)try{let i=(0,Ke.openSync)(e,"wx");try{(0,Ke.writeSync)(i,t)}finally{(0,Ke.closeSync)(i)}return t}catch(i){if(i.code!=="EEXIST")throw i;if(ah(e)){try{(0,Ke.unlinkSync)(e)}catch{}continue}lh(nh)}throw new Error(`Could not acquire lock on ${e} after ${Qs} retries. If no other resend process is running, delete the lock file manually.`)},Sr=(e,t)=>{try{if((0,Ke.readFileSync)(e,"utf-8")!==t)return;(0,Ke.unlinkSync)(e)}catch{}},ah=e=>{try{let t=(0,Ke.statSync)(e);return Date.now()-t.mtimeMs>rh}catch{return!0}},lh=e=>{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}});var Ls,Ws=Ae(()=>{"use strict";Ls="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCARXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAABkCgAwAEAAAAAQAAA4QAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIA4QGQAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAQEBAQEBAYEBAYJBgYGCQwJCQkJDA8MDAwMDA8SDw8PDw8PEhISEhISEhIVFRUVFRUZGRkZGRwcHBwcHBwcHBz/2wBDAQQFBQcHBwwHBwwdFBAUHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR3/3QAEAGT/2gAMAwEAAhEDEQA/APgDrRRRQAUUUUAFFFFABRRRQAUUUUAFFH0ooAKKKKACiiigAooooAKKKOKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo+tFABRRRQAUUUUAFFFFABRRRQAUuaSigB1FIDRQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUYoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigAooooAKKKKACkNLSUAdx4RvyDJp7n1dPb+8K9DXDgHGK8Ltbh7W4juI/vIciva7C6S7giuYj8sg70AaCgA1fifjBqkPpirEfHOc0AaqHIGTUwwapxEDk1aUjpQA888VGyg1IKUrkZ70AUJI+M4yaoyRe1bDLgVVdCRnrigDAljP+elUZYh909jXQSR9ttUpY++OvrQBgyRkt6/3arPERnAyPStmSJckY6/0qkynseaAMto153dPU1WyQTnuP0rRZCDt2ZOOtViGIHOeeKAKmD9cjqf89aRVBAJPT1qfaVBzgnqfxqJlbBI45oAjIyCMZNIcjoAakYHHXAHrSAEDHY96AGfwjGN1BOF9/wDPSk4Y7BwemaU4IyBQAq5IIzgj06UdOQBgcE035QpDd+1KoABbGc/yoAcuBntnrSguDzwB+IoG4qdoGP50u4gbeqk5xjmgB44I5yCOKmUu3zE44/Oq67Tn3/SpApABycmgC5vPBXGferyZAyOp555rLRuxzkVfidCATwelAGtEQDnoa0IpDt9zxWJGctuB+X1rRikAGQe9AG5FhR/StCM5H4Vi27jdn061pRNgCgC+DxS5PX8KjU9KmH+RQAnWoyPepgOPftTducE0AVWGRVd17VdK4bHpUEg5z+NAGTJH7YxVN1U579+a1nTPHv1qpKmRtPTvQBiuCQT3qm0UgG485rWkj5Jx+AqpImMnkZ/zxQBjyRsxJC5PUCq5YADI49e+a0WHl/OevOKqzKMZ45xj15oArFU64P1FNT72R9eOtPY7TuXIx2prZYnJ5U0AOKjAC+nU05N3IPPvUQ3BgR0xUsbYz/CfegBMhcP/ABKcdOpqQAH5gOR+XFIoYAlz2pNpHLE/SgBmfmLHgN/SlIIx/tc04fMfmzn9KVsYK425x60AQ4Kn5RnFMKggDJweh61NgEYJwMenWm4Xop6GgCLC5GOvYYpACucfkP6U9hk7lwMHFKTtyFPB6d6AIthJx3/SmHcpBGOetTZUhTyMdff/APXTSvpx6YoAibJXOc+gqPGe/PSpThl3KMD3prcjJGPSgCEjHFRsOan47j8aaR04zQBVYCoWHWrjCoWWgCmwqBhVxhUDCgCsRTCKnYVGRQBAajIqYimGgCOm080ygBKOKWm0Af/Q+AKKKKACiiigAoo9qKACiiigAooooAKKKKACiiigAooooAKKKKACij3ooAKKOtFABRRRQAdaKKKACiiigAooooAKKKKACiijpQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAC0lFFABRR1ooAKKKOlABRRRQAUtJRQA6im5paAFooooAKKSigBaKKKAClpKWgBKKKKACiiigAooooAWkoooAKKKKAClpKKACiiigAooNFAC0lFFABRSUtABRRRQAUUUUAFFFFABRRSUALRSUUALRRRQAUUlFAC0UlLQAUUUlAC0UlFAC0UUlABXoHg/UvkbTpGwVJZM9weorz81asbprK7iuV58tgSPUdxQB73GVIHOD6VYAw1Z1ncpcRJNGflcBl+hrSX34oAsqeatIapoCO1WEOKALg5p2Mc1Ep/WpM/5NAAR+lQuo9KnOM0FeOlAGfIp7DNUpYjkk8jFbDLuHpVWROKAMOSI9SMj6VTljXJ7DPWtuRfYVQkjxkcc0AYzxkH6dCe9U5IumenXp0radFA9wapTRAHb1z3oAySoPUd8YqJwqAJnGetaTxHG3uOM9/aqkkRZjx+HvQBVKg4JPHYetRn5s46Gp8hdylcgcj/Co3UHGBx6UAREKPuDvQQ5Y449acwOOOnakPX5hhemM0AMGRj1P50DODu4NKVY4XOPQ0bT07j1oAXJ4AGQP0pwK5yQMDoaiGBznnP4U4qyt0yR60AOyM/Kc59KkGRnHBHX2qE4U8e1TZy2aAJxjO5WyTjipgcDA5U9cVWTczdADn5TU+WR8sck9u1AF+IovGOTyG7Vei6Lt59qyYXZRgnHYetXYGYdeOwH0oA24WG4dvatSGQKcdc9awYm98e/1rTickLgcj3oA242HGeABVoVmxMD8uevetBOf8aAJOaPX3pQKUCgCE8Hjk1ER7VaI70w8/0oAoOmc47VTkjG08ZFaTAnPaq8i9QeBQBjyqR15NUZhgDjI9K2ZE5x+tUXUL8nv1oAyZULFh90Y6+9UjHy2SOB37VrSICPbNZ8kaqoIA7jOKAM9wdxy2T+vvVdjlgw/hxV10BbBbG45BqBwu35FA5xQBEcn5c8N0/p+dBx0yST2x0pSFOE3c44pArKcMckjg+uKAJDt5LHPp+HtSox+bIzmkTaygd26f8A16BlsEZwD16UASYUkEAk+p4pj/PluoXpTyq7uMnuOaAGKncMUANbGxcLgjv6UzBY8D73P5VIRgYHfqKQ7jgkAMPXtQAw7QWA+UnnPWmlgwwvygdafkKuCee+aQLtGM4LdjQBETuxwSBUZEmQB1HBFWCAqsRnPbjAOKiGDwWwD3oAibaenrSkY64IqV1UtwMEdaYVBHI+nrQBCRxn72KaylcYHBqYhfpimthhk8dqAK7DJz0qEjJq1sPAP4UwgZIA5oApslV2TvV5gemKhZcUAUWWoSKuMtQEUAVStRlasEVERQBARTalIqMjFADKaRT6bQB//9H4AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFpKKKAFpKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWkoooAKKKKACiiigAooooAKKKKACiiigAopaSgAoopfegBKKKKACiiigAooooAKKO1FABQKKKAFpabTqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigAooooASlxRRQB6H4N1IvG+nyHmP5k+h6j8DXo0bZXJ4HrXz/Z3UlldR3UX3oznHqO4/GvdbG5jureK5i5WRQ350Aay46A8+tTr6VXTGOepqdTjpQBZXqKlBBzVdWJ61MDQBKDnNLgmmjFLzmgBCO4qJlzkfjU+abtJ6mgDPZCBzyaqPHz0rWdetVZF4NAGM8fB6VSkQAccitkoAKrSpzuwDigDHeIL1AyPTv8AjVB4wxPGD1yOorZdC33OAKrNGP4sc96AMZ41yVJyTyMe1V2bBOeeMZrTkjVc5BJHaq0itwMcDt/WgCkVy2MDtwP88Uxhzzgj19asOgyWVSajIXqOB3z3oAh+QnDH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EEc5FRYJXp+tAEZXGUx9D/8AWp4wRzyAaTAQnHTFKCvIboBmgCRfu4HGev0qUdOpOO3oKhJ2Y7ZqXblffj8aALm8BR6+h6Yq/GQQTkE9Dn0rNjHGcEY7VdiZd4z+nagDUhY5AznGckelaKMcDnDVjxnAwf0rQVgyjPCigDWjPIBPIrThfjJ/GsRGA49uvar0bY5JoA21w2PyNOxjiqkL55Herq4IyaAIytRkfSrBHpUZAoApOmefSqzLxn07VoMODUDqMGgDJcFevNVJVwQ3PPpWoyY4AqnIpz1x60AZcq4JwOD+dVHCl+mcVqOScjGPeqkig9AOaAMt0U/e+XGenrVTZgjnGB07GtPALemOKqSJxxxjuep9qAM50DNhlJ/HFMAXaMc/j0q06jkL0PHPaq+3Dc8Y49h9aAIwPl5Xvk1NtBKyA/j6UxioGOpzkEdPekPJLcHv7UASof7+DuPbtUzIxyynHbFRIAVXb1BOf/rVIhBIUg7s9e3NAEvO4g8HHH0pVLkbW5zTT0YDHp1p6nCjnGOuev4e1ADCu44k4Ge3elYFQNwIOcUikrgAjKn/AD0p3GCuD/hQA3BxgEEE4yetRklMnsc1LgZy3I7496G2+3y9j3oAjKr1Y1GAB3xj/IqZlHBIyDx8tMIRs7icEYHegCDaQxYcZ7f59ajYHJ+XmrEg24Vj/wDrpmBt6YwecmgCtsDMexHIxTSEByT3696s/NuKr1I9qjYZXK447HrQBWI47A/41Ey/5/wqzg9WGTUZ78fQelAFJl9arsnWr5Xiq7IaAM91qsy1pMlVXWgD/9X4EooooAKOtFFABRRRQAUUUUAFJS0lABRRRQAUUUUAFFFJQAtJS0lABS0UZoASiiigAooooAKKWigBKWiigAooooASloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKACiiigAoopKAFoozSUAHWiiigAooooAKKKWgBKKKKAFpKKKADrRRRQAUUUUAFFHSigAooooAKKKKACiiigAooooAKKKKACiijrQAUUUUAFFFHSgAooo96ACiiigBaSiigAooooAKKKKACiiigAooooAKKPaigAooooAKKKKACiiigAooooAWikooAKKKKACiiigApaSigApaKSgAooooAKKKKACiiigAooooAKKKKALmn302nXcV3AcNG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PA+tLhs45UjkZPFMRlJKrnJOTg1Mqrkq3CgcZ68UAKCQevTGB60Fwr7Tyx6UikSFWU89cHtS7kfLDJI6CgBWIxtKgMelRyDpt5X3qY8rknB4GKbkcKv3TxQBGfm5AyCe1RkgfKDnvk1OqkjJBGfWkCsq7GIHcY/WgCAjKkL379qjIVVIb5c4XPXip8ZOw9u4qFtwJ2jAPNADHAVcN0H6/jUJToe/T/8AVVgKG6kZA49qZ23IcNQBW5wARz/Wo9uRluntxVplIQSckNx+NQMpZgSeD0NAFZlYfKBkDvUDr9488dKvsuSB7Z+tVCoHOPXigD//1/gWkpaKAEooooAKKKKAEpaKKAEpaKKAEopfpSUAFFFFABRRS0AJRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUUAFFFFABRRRQAUUUUAFLRRQAUYopfegBKSlooASiiigAooooAKKKKACiiigAooooAKSlooASilooASilpKAClopKACiiigAopaSgAooooAKKKKACiiigAooo+tABRRR1oAKKKKACiiigApaSigAooooAKKWkoAKKKKACiiigApaSigApaSigAooooAKKKWgApKWkoAKKKKADpRRS0AJRRRQAUUUUAFFFFABRRS0AJS0nSigAooooAKKKKACiiigAopaSgAooooAWk96WigaCikpaQBRSUtMLB0rt/BviAabObG5P7ic/KT/C3+BriKSgR9SxPuAOetWh2xXm/gvxD/AGhD9gunzcQrxn+JB/Ud69FU5HvQBMKUc00HJpRxzQA/FGKAeKKAG4pDkU+koAjI9abwalIz1qNulAELKOuKiI9eRVhhz71EVxz7UAQN1GO9V2BB9AatEKevUc49KiIPPf1+lAFcoOo/GoCoUjBxj171aK4HUfSoGAOMDOKAKzjgjv69qrvGMceuKtsv3sHOfyqJlTPT8qAKbKD16rnA9arOpRCQMjuKvEEHsSe57VCysQMfXp1oAz3TYMnoeKgbDkccjt7VfZfkP+eag2ZAPRjxigCkdueRye/t6VGy7m4GAO3pVtlO35sA5prBi2Tyo9O9AFXk8Hj09qkUEruHQcYpNhYHHUHkd6BkEEHGP1oAnBOevB44q3GemCDWdkFsHjPp2qzGxUjPegDbhkxwPTg1pQkFcDg+tY0T9WPFacDcg+tAGuo4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sA4yPyxUqs5zlQDnGBQBKqkgbjnjrTRuALL34weelJ8+WwBxjBx2p6gFckdetADMbcyEcjgj1pD8nGMjGckilXCrgcjufSl2qrEYzk0Af//W+DKKWjmgBKKWigBuKTFOooAbRS4pKACiiigBKKWkoASloxRQAlFLS0AJRS0YoAbRS0UAJRS0UAJRilooASilooASilooASilooAKSlooASjmlooASilooASilooASilpKACiiloASilooASiiloASjrS0UAJRS0UAJRRS0AJRS0daAEopaSgA9qKKKACiiigApKWigBKSnUUAJRRS0ANopaMUAJRS9KKAEo60tJQAUUUUAFFFLQAlFLRQAlFHSigAooooAKTmlooASilpKAEpaMUUAFJS0UAJ7UUtJQAUUUUAFFFFABR70UUAFFFFABR0oooAOlFFFABRR1ooAKKKKACiiloASilpKACiiigA96KWigBKKKKACiiigAopaSgAooooAKKKKAEpaKKACiiigA96KKKACiiigBKWiigAooooASilo+lACUUtFABTqbS0AFdx4T8Xz6E4tLg+ZZO2SO8ZPUr7eoriKOlAz62s72G7hSeCRZI2GVZeQa0CM4r5o8K+K5/D0xjkBltJCNyd1P95f6jvX0Npuo22o20d3aOJIpBuBH+e1AGjim0/gjigjvQIixjgUwr6VNj86QgUAVGGeKgdeOuR71eK46ComTIoAolRzu7DFQOgz/OrpXH4VEUz93gd6AKDJg5J5qJgWxxzVt1MnXqOlR9AMfjQBRZcnBz7motoY7RxVuROvrUJQbsNxQBXKbWyOo6HrmoSASeOcVYZSvA6E0wqwGFFAFbBBx6j8qikJwOOnOPWrLKxIGRkDmoWyATwCKAISBvDcgY/nTJODhMKp74z+FSsCo+Y578U0KQdpI29KAGMqjOzc3brT93yLvB+lN2lDwcAHjHSgDGW7D0oAtLhOQCQa04WYbeaxQS2CpzitGOUg5PI96AOntpFCj0zzW9G5bnPFchbTkEMcYxXQ2sgZQSODQBqcEc1GVHapV5GKUqPSgCmwA6jtVZgACKvsMCq5XmgCiUAztFWoJNvHbvTWFRAlDxQBqMAfmHSoCNwp8MvmAA96cVKGgDPkUEn1rOljBOD26VsSA8kAD0qjIjA89RQBjuhC4zmqrgEA4JJrUdMnHT1qhKuOc89qAKRQsD27E+lVmXgH7xPNXZORyBgDHtVZgd248cde1AFOQDZyvTkAVBIDsPUZq4RtOFP3utRMmPlHQ9KAKBHAzxgdv600K24c9e1WmXGdxwPbpUDgZJHynGMf1oAh6bhUYXaNhOccipWCupAx83PXoBTNoGAQcL0/GgAKsEAICk5zipQYwFY9uKiGQx3HBpPl6EY9M9qAJkUvwzEH09qlUjJJ6E44/SqvIOe46/41OFIHXvQBOpjDDcTk96RdqksCSfTNIuQgfOQTSludpxn35oAlP3hk4x1HpSNlVJfuaUkgfKCc9cdaGYlSoXI6jH8uaAP//X+DqKdSUAJRS0lACYpMU6igBpopaSgBKSnUUANopaKAEooxRigAopcUlAAKKKKACiiigANJS0UAJRS0UAJRS0UAGKKKKACkpaKACkpaKAEopaSgAopaKAEopaKAEopaKAEopaKAEopaKAEooooAKWikoAWkpaKAEopaKAEopaSgApKdRQA2ilooASiiigAooooAKKKKACiiigAooooASilooASilooASiiigAooooAKKWkoAKSlooASloooASilpKACiiigAooooAKKKKACkxS0UAJiilooASilooAbS0tFACUUtFACdaKWigBKKWkoAOtFFFACUUUUAFLSUtABRRRQAUlFLQAUUUUAFJS0UAFFJS0AFFFFACUUtFACUUUUAFFFLQAfWij60UAJRRRQAUUdKOlABRRS0AJRRRQAUUUUAFFFH1oAKWkpaBoSloooAWul8O+J7/AMPzjymL2zNmSE9D2yPQ1zVJQB9YaRq9nq9ot5ZSCRD1HdT3BHY1tAivk/RNdv8AQroXFm2VJ+eMn5XHuPX0NfRXh/xFY69bCa0JDjG+M/eQ+h9vegDpiPWkxSg07HpQIiIzURU1axmmEUAUmQ1EVJY56HtV0qfyqFo8HI60AZ7j0HHaoWTJOec1oFcZ9KgcEnjjPagCiUJ4xu+tV2BwSR+dXSpzgHj1qFgDnHegCi6nGeq0wjHtVxwc4A+WoWUnG0cUAUsMM89P1qPaBk8HNWGTIODkVGVIHB56igCswGNuOveogNg+XqOtWmRcdc571ER8xPc8UAQtkjJOFHI/rTCDuGOBzkf0qU8AYB460MA2Q2QRQAwMynIOBx06Af8A1+lTxsB2JqAkKBjknn/61SLnJTPJ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AUZoooAPaiiigBKWiigBPaloooASilooASiloxQAlFLSUAFFLSUAFFFFACUU6koASloooASjilooASilpKACilooASiiigAooooAKKKKACkpaKAExS0UUAFJzS0UAFNp2KSgBKWlooASiiigBMUmMU6igBlLRikoAKKKWgBKKKKACiikoAWiiigAooooAKKWigBKKWkoAKKKKACiiigAooooAKKWkoAKKKKACiiigAooooAKOlFFABRRRQAUmaWk60AFFFFABRRRQAUUUUAHSur8N+L9T8OSbIT51qxy0Lnj6qf4TXK0mKAPrTw94j07xBafaLKTkffjPDofcenuOK6MN+NfGFreXNjcJdWkrQyocq6nBFe8+FPiRZ3+yz1oi2ujwJekTn8fun68fSgD1cimlBSrKHH+H86f2oArMmagaPjmtDFRMlAGWyADHrVZk7GtZ48iq7RnGT0H50AZTRnA31WdBk8dK15Iy3HB7mqkoxnjg9qAMl1wc+vAzUDoVUkcjr71qMueew6Zqq6uWJboaAKBBAyBzUOFA9cd6vmNck9/Sq7oQu44x2oArFQwUjjHrTGVQcrnOMH0/CrIBHJHY800jo2Puj+dACRkDMYPbIq3HJgkk5AqmG2naM8+tTg8qo5xQB0FvPswSeT1rpLaTcuO+K4mGQhhj8a37K4B2j86AOmxkComFLC4IweakYdiKAKrCoyARVplHWoiOOlAFVlzyeKiIweBmrRGTUTJzkcZoAFOD04psi4yR9KIyVba3IqU4xigDNdOvrjpWc6smcdDyfWtxwOp6ms+WM5YnoPTvQBjvH3xx6DrVRgQAT0PatOVWBGM4PeqbxqAR156+lAFBxwGA6Y6dqhcMrZA6GrjjBK9OAfYmoHUAAdaAKTL0255GTVd3OCv8XUZ9KuMMBec1Cyx4wRuB7UAQOAWUEn14+neoCA2QF4Hf0q26N0Qj2zUD7QMAH6CgCqhZQV6Z6Go929WOOc4J9ce1Wij4weDTNwOMjkZyaAIBvBGBnjkUmTtAP4VMVBIwRn1pgUkg5wPSgD/1Ph2kNPxSEUANopaKAI8UlSUmKAGUlPxSYoAZRTsUlACYpMU/FIeaAGYop1JQA00U7FFADaSnYooATFJTqSgBMUUtFACUUuKKAEooxS4oASiil5oASkp1JQAlLRR9aAEopaKAExQaWigBtFL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UmKfSUANxQadSYoAZijFOpQKAGYpKkxSYoAbikxTqSgBKKdijFADMU3FSYoxQBFijFPIoxQAzFIRT8UYoAjxRin4ooAZRTsUYoAbijFP6UlADcUuKWjFADcUY5p1LQAyinYooASiloxQA2kxUlJigBlFOxRigBtFOxRQA2kxinGigBuKKdikxQAlGKWkoAKSlooAbRRRQAUdKKKAEopaKAG4pMU+koAbikp9JQA2jFOoxQAzFFOoxQA2ilxRQAlFLijFADaKWigBKWiigBKMUtFACUUtFADaKdik7UAJRS0YoASilxRQAlFLRQAlFFFABSUtFACUU6koATFFLRQAmKSnUUAJikp1FADcUU6koASilooATFFLRQA3FFLijigBKKKKACijrRQAlFLRQAUlLRQA2inUlACYop1JigBKKKKACg4paSgBmKKf1phoASloooAKKKWgBKKKKACiiigBKKWjFABSUtJQAUUUUAFFFFABRRRQAUUUUAJRS0UANpaKKACiiigAooooAKKKO1ACUtFJQAUUUUALRRSUDQtJS0UAJmjFFFABSUtJQMKKKKBWClVipBBwRzSZooEeseGPidfWLR2eu5ubYYXzQP3qgcc/3gPzr32w1O11C3S7s5Vngfo6nI+nsfY818VVsaNrup6DcfadNmMZP3kPKP7Mvf8An70DPs8ENyKUjivNPC3xC0zXNlrcf6JebeVc/K+OuxvX2PP1r0lZAwz/AJ+tADWTIqs8e1cDsP51fIHak2KcgigRjSQ5HPQiqbRAjB9a3mjJ4PeqckfHyjBoAw5I2Pztkc9KhYFMs3f0/pWu8POfWqrRAAFs+1AECbSQe1attIwI5wKyvLYMCcVZjJBI64oA6eKQkfN09Kkx3rLgk6c8Vqqdy9c0AIeeajK5qUccdqAKAK7dKaw44qcqKYVz2oAgAJBOOlQyISDU5UoSM9TSuNw/CgDGkQEnPSqMo2+tbTqw6DOazpVwxGD+NAGUQCfm6mqbpxgckYFakiDsDwapyRqQM9aAM9ggOw5weuagZf4RggVbbcvXnPWo3H94/hQBWZQoOzjB5qAgNz35qyyMBkjI9qgkwI8LwRzmgD//0fjQim4qbHFRkUARmm4qQikoAjwaSpDSYoAZimmn4pOtADMUYp9N4oASkxT6SgBmKXFOxRQA3FGKWigBuKQin4oxQAwC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FABRRRQAlFBooASlopaAENJS0lAB0ooooAM0UlFAC0UUUAFJRRQAlJTqTHpQA2iiigAopaSgAo60UUAFJS0hoATvS0lFABR0paSgAziikpaACiiigA96KKKACiiigBKKWkoAWikpaAEoNFLQAlJS80lABS0lFABRRRQAUUlLQAUUUUAFNp1JQAUtNooAWkpaSgBKKKKAF5opKKAClpKKAFo6UUUAdT4Z8X6t4Yn3Wb+ZA334HJKH3Ho3uK+mvC3jPSfFFsDaN5VwgzJA5+dfcf3l9x+OK+O/pU9vcz2k6XNtI0UsZyrqcEH6igD7vVlbkdqkAU4rwzwd8U4LkJYeImEE/AScDCP2+f8Aun36fSvbYJ1kCtkENyCO4oAcyc00Ag1Y600gUAAwwwai5Vtv61MOlNdQ68dRQAo5oxioA5HB696nHIoAqHKNuP3WNIwyDVpk3qV79RVUMW68N3FAFKZRnjpisyaPGTnqK2p0zgVQkUEH8hQBjSq351RlUnGep/i9a1JV+b2I5qkyPj2PX/61AH//1fkoimVMRUZFAEZFMNS0wigCI03FSkU3FAEZphqSmkUAMNNxUhpuKAG0hp2KCKAI8UuKXFFACUUUUAJTadRQA2l4opKAFxSUuKKAG0lOooAaabT8UlADaKdSYoAbRTsUYoAZ9KTFSdKQigBtFLRigBtFLSYoAKWkooAKSnUUANopaSgApKd1ooAbRS0UAJRilpaAG4pMU6igBlLS02gAopaSgBKKdSUAJSfWlooASk60vvRigBO9FGKKAEoxS0UAIabTqTFADTS4pcCjFADaSlIpaAG0UtJQAUh9qWigBtJTqKAEooo5oAT2o4paSgApKKXpQA2kp2KKAEpKdSUAJSY5pTRQAlHSlpMUAFJS0UAJRR1ooASilooASilooASkpaKAEpaKKACko60tACUUUtADTRS4oxQA2ilooASkpaSgAopaKAEpKcaSgBKKKKACiiigApKWkoAKKKKACkoooAKSlooAKKKSgAopetFACUtFJQAhptOooASkpaSgAo+lFFABSGlpKADiiiigApKKWgBKBRRQAUUtFABSUtJ70AFFHvRQAlFLSUAFFFFAC0UUUAJRS0lABSUtJQAUUdaKACiiigAooooAKSlooASiiigBKXNJRQAlFLSUAFFLSUAFFLRQAlGaKKACiiloAOle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RkVPioyKYiLFMNSkU00AR4pKdTTQA2ilooATFNxUlIetAEdFOIpKAEpKdSUANxS0tJQAlNp9JQA3HNJipO1NoAYRSU+koAbilo9qWgBppKfikNADaKWjFADc0UtFACUUUUAJRRRigBMUlOxSUAJijFOpKAEpDTsUmKAE6UUfWloASilooASkNLSUAJRQeKWgBKTpS0lABSUtFADaWlpKACijvRQAmKTFO+tBoAZS0Uc0AIKMUtJ7UAJikp1JigBKKWkoASjrS0UANxSYp1JQAlFLikoASiiigBPpRRRQAlJT6TFADaSnd6OKAEooooASjFFFACUmKWigBKSlpKACkoooAWkpaSgAooooADRRSUAFFLSUAFFLiigBMUlLRQAlJS0lMAooopAFJS0UANo4paSgAooooASkp1JQAUlFFABRS0lABSGlpKAEoopaAEopaKAEooooAKKKKAEoopaAEpKdikNACUUtHSgBKQilooAZRTjSUAJRRijtQAlKKKKACiiigAooooAKKKKACiiigApKWkoAKSlooASloooASilptAC0lFFABRRRQAGiiigANJS0UAJRS0UAJRRS0AJRRRQAmKKWkoAKKKKACiiigAooooASilpKACkpaKAEooo+tABSikpaAHo7RsHRirKcgjggjuK9+8C/FLf5Oj+JXw5IWO7JwD6CT0/3vz9a+f6KAPvnKyDae/IqtG7RSbG9eDXzT4D+JNzoTrpetO8+nNhUc5Z4Pp3K+o7dvSvpOKa31K0jurKVZopV3RuhyCPUfyNAFqUBgsvcdRVZl9DzU8EhYeW3UfezUagqzIw4HYUAf//R72OfOAKupJXJRXYbHzce1bENxwCT16UAbyvmpQ1Zkcucc1aV/egDP1/w/pPibTn0vWIBNDJ0I4ZG7MrdiK+RPGvgTVvBl0DKGudPmJEN0Bx/uvj7rfXrX2gGFMura01C0lsL+Jbi2nXbJG/KsPQ0Dufn4cYGKjNetfED4X3PhUS61pDtd6WWLOhH7y3BPHT7ye/UV5MGVl3Kcg96AIzTTTzTTQIZikp9JigCOilNFACUlLiigBtIadSYoAbijFOoNADKKdSYoAbiinYpKAG0lOpKAExTcU+mmgBKMUtJQAUlLSUAJij6UtFADaMUtFACUlLRQA2loooASkp1JQAUlKaMUANopxpKAEpcUUdaAG0U7rSUAJSUuKQ0AFJS0UANoxS0UANop1HFADaSnUGgBtLRRQAU2looASloooAQ0lLRQA0UYpaKAG0U6koASkpaKAEpKWigBKDS0lACUlOptACEUUtBoASiiigBKSlpaAGmkpaKAENJTqbQAtNp1JQAlJTqSgBtFLSUAFFAooASiiigApKWigAoxRRQACiikoAKKKKAE70UUUAJRS0lACUtFFACUUtJQAlFBooADSUtFACUUUUAJRRRQAUlLSGgA6UUUUAHWiiigBKKKKAFpKKOKACig0UAFFJRQAUn1paSgAopKWgApCKWigBtFKabQAtJRRQAUUUUAFFFJQAtFFFABRRRQAlFLSGgAooooAKPeik+tAC0UlLQA2lopKACiiigAooooAKKKKACkpaKAEooxRQAUtJS0AFJRRQAlLRRQAlFFFABRRRQAUUUGgBKKKKAEooooAKWkooAWlpKKRQo4rv/AAT47vvCd0InzcadIf3sGeV9Xj5wG9ex79jXAA0tAj7j0/UrLWrCPVdKlE0Mg6j+RHUMO4NXnbIWUcdiBXxz4U8W6n4UvfPtGL28h/fQE/JIP6MOx/pX1do+uabr2njVNLcy274VlPDIw6qw7Efr1pgf/9JsU/Hy9Dz6fnW1b3JCpuK4PQ9yK4aObCghwx3ck9/atmG4A6EYbpigDuILoHg8fWtFJc9x9K46G54AznGa2ILjAXPegDo1epwwzzzWVHPuAx3q0su7nNAF9gsgYOodHGGVgCCPQg9a+cviN8J5Imk1/wAHW+5MFrizTsepeIfzUfhX0Osn41OrbTkdaAPzvVwwyKQ19UfED4T2utLPrXhlFt9SOXktxxHcHuR2Rz+R78818syxywTSW9xG0UsTFHjcYZWHBBB6EUAMooooAaab3p5pKAG0UpFJQAGm06jFACYpKWigBtFLiigBtIadSUANxSU6koAbRSmkoASkp30ooAbijFLiigBvU0UuKMUANxS4pcUUAMpDT6SgBtFLRigBtFFLigBKKXFJQAlFLRQAlFFFACUlOoxQA2kp9JQA2g8U6koAbRilpDQAneilpKAEopaKACm06jpQA2ilpKAEpaKWgBtJS0UAJRilooAbikp5ptACUhpaKAEooooASil96SgBKKWigBppKd70fWgBnNFOpKAEoNLSUABoo70UANNJTqKAG0UtJQAUlFFACdqSlooASkpaSgAooooABRRRQAUUUfSgBKSlooAKKSigBOKKKWgBKSlooASiiigApKKKACkxRS0AFNpaSgBaSiigBKKWigBKKKDQAUfSikoAWkpaSgBDRRiigAooooASloooASiiigApOtLSUAFFFFABRRRQAU3FLS0AN6UlONNoAKKKKACiiigAooooAKKKKACkpaSgAooooAKKKKACikooASilo96AEooooAKKKKAEpaKKACkpaSgApaKSgAoopaACkpfrSGgBDS0UUAJRS0lABRRRQAUUUUAJRRRmgBKKWkoAKWiigAoopKkoUUtJRQA6us8H+LLzwnqi3kJL28mFuIuzp/LcOoP9K5KkpiP/0+CjnkJXfgkdCPX1Na0U4XIzgDue9clFOoyF+8Tlv8+1asMxVgz9B0Pc59KAOvhnIA2nGOOP/r1qxXO35mOQOOv+FcdBPkBW57kg8D0z71rwXOFGzHPJ+tAHaR3Iznd0xWrDPkdeK4uGckDbjPqe+K2YboHpQB1ccmRnNWlc44rCinbGegrQSYEdeaANEPXnfjv4c6f4zha7t2S01ZF+Scj5ZAOiS45I7Buo+ld0rVMHoA+B9W0fU9Cv5NM1e3a2uYuWQ85B6MpHDKexFZwr7k8V+EtH8Y6f9i1RNsqcw3CY8yJvY91PdTwfavkLxV4Q1jwfffY9UTdFIT5FwnMcoHdT2Pqp5FAHMEUlONJQA2kp1FADcUlOptABikpaKAG0UuPWkoASilooASkxTqT2oAYRSGnmkIoAb1paKKAG0U6kNACUUtBoAbSYp1IaAEpMc06m0AFJS0lABSUtFADaSnUUAN9qKKMUAFFApaAEpKdSUAJRS0lACdKQ06koATFJ1paKAExSU6koASjFLRQAlGKKKAExSUtFACYpKWkoAKSg5ooAKKWkoASjFLSUAJRS0YoAb0oxTvek5oAb1opaKAExSGlooAbRSmigBKSlpKAEopcUlACUUtJQAUcUUdKAG0UtJQAntRRRQAlJS0UAJ2pKdTTQAlFLRQAlFFFABS0lKaAEpKXFFACUUvWkoAKSlpKADFJS0lABSUUUAFJS0lABSUtFACUe9LR1oASiikoAWkooNABSUUUAJRS0UAJRS0hoAWkopKACiijtQAlLRRQAUlLRQAnFJTqbQAUUUUAFFFFACUtJS0AFIRS0lADaKXFJQAUUUUAFFFJQAtFFFABSUtFACUUUUAFFFFABRRRQAUUUUAJSUtFACYooooAKKKKACiiigBKWkpaAEpetJS0AFFFFACUUUlABRRRQAUUUUAFFFFABSYpaTNABRS0UAJRRRQAUUUUrDuFFFFFguLSUUlFguf/U8dhlGSQN2O44xV6KRVITAAI5z29xWJvwQqkgAEHPv296uREfKw5UjBzQB0ELKpJDYK9B2/ya07aYFdmOhz14rmYZQybTwR1JrSjmAUquQD938P6UAdPBPnLbuPrW1b3KsRg8dvwrkbebBLfKAfT29q04J8OCGxjk0AdlDc5ZcEjPWteK4AwCOfWuLt7nsRyoxn0z6Vr29z0+bdt65oA66OYGritmubhnzitaGXpQBpg1S1fSNM1/TZdJ1eET203UHhlI6Mp6hh2IqdWqUNQB8hePPhrqXg8nULVmvdKY/wCux88XtKBwPZhx64rzPOa/QwhJEaKVVkjkBVkYBlYHqCDwRXzV8RPhJLp7Sa54RhaazPzTWa5Z4feMclk9uq9uOiGeFUlIOaXtTAKbTqKBDKKWkOKBiUUdaSgBaSlpDQIKKSlzQA00cUuKSgBBSU6igBtFLR0oASkxRS0AJSEU6koAbikpxpCKAG0UuKMYoAbRS0EUAJRS9qSgBMUhp2KTFACUUtFACUUUGgBKKKKAE6UUtFACUlLSYoADSUpoxQA2ilxSUAFJilpKACiiigBtLiil7UAMPtSU40YoASilxSUAJSU6igBtFLRQAneiiigBMUlOpKAG4opaKAG0UuKKAEpKXHFFACUlLRQA2ilNAoASiikNACUUUYoASkp3NJQAlFLSYoASkp1J9KAEooooASilpKADFFFJQAfSilpKACkpaKAE7UlFFABRRSUAFFFFACUUUUAFFFFACUUUUwEope1JSAKTFLRQA2ilpKACiiimAUYopKQBSU6koASlpKKACiiigAooooASkp1JQAlFLQaAEooooAKSlooAbRS0lABR1oooASilpKACiiigAooooAKKKKAEopaSgBaSlpKACiiigBKWiigBKSnUlABSUtJQAUUUc0AFFFFACUooooAKKKSgBaKSloAKSlpKAEopcUlAC0lFLQAntRRRQAUlLSUAFLRSUAFFFFABRRRQAUUUUAFJS0lAH//V8GSTI3EYOe3cetTq4kYqGwx9On41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U4fmgD4D13w/q/hjUpNJ1qAwzpyMcq69mRuhB/8A11lV97+IvDei+LLA6drcPmKOY5F4kib+8jdj7Hg96+PvG3gPWPBN0q3g8+xnYi3u0Hyuf7rD+F/Y9e1IZw9FFFMQlLSc0UALRSUZoAdS02igB1FJRQAtLSdDRQAtFFJQAUtJRmgBaTFFFABTaWg0AIabSmloAbSfSnZpKAEopfeigBtFKaSgBPalpOlKaAExR7UtIaAE6UhpaTFABmkpcUlACUUtJQAhpD607ikNADaKXtRQA00U6kzxQA2k6UvtSHNABSUv1pKACiiigBKKKKACkopaAG0d6U0lABSUfSj60AFJRRQAUnJpaSgBKKWkoAKSiigAptO7UnegBDwKKOtIaAFpD0paQ0AJSUtFACUnSlNJQAlFFFABSUtJQAmKKWkoASiiigBKKKKAEooooASjmiigApKWk6UALSfSiigANFGaSgAooooAKSlpKACijNIeKACikooAKKKKACkpaKAEooooASiiimAUUUUgCiiigApKKKACkpaSgAopaSgAopKKAA0lLRQAlHel96SgAooooAKKKKACiiigBKKKKACiiloASkpaSgAooooAKKKKACiiigBKSlpKACiiigAo60UlABRRRQAUUUUALRSUUALSYoooASilooAKKKKAEopaSgAooo6UAJRRRQAUUGigAoopaACm0tJQB//R+ZdzcoOMY6fzpVDcEgkiofmYjBwO/tipMuAdp3YP50ATg7iXIxkA4x1p6gHDkAA9xUXmAjcGPHf39KfzwQRnGcDpxQBMGyPl+UHPfv8AWnLtXJbJ7YqFBnnoQelTKy7+Onqe/wBaALAyjEsCuMdPSpzId+CAM/rVPO3Geh5BJ7elT7iWCgAdhQBcV8c5wKljY7s9jVRWIznmpVft37UAXwRn3qyrkAEdaz0Y9+DVhW54oAvRtircch5zWWrHpVlGNAGzHN6VejnrASQir0cnTmgDoops1qRT4rl45cd60I5gDQB1cFx2rYguRxzXHwzdMGtOCc5AoA7WKbIq6r1y9vc8cmtWK4PTNAGyGNQ3tlZarZS6bqcKXNrOMSRuMg+n4jseopI3BGasKRQB8lfEP4X3fhUyatpBa70knJyMy2+ez46p6P8AnjrXkQORkdK/RQ4YFWAZWBBBGQQeoIPUGvnf4g/B4jzdb8GQ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lJRQAUe9NozQAtLTaM0ALSUlFABR2pM0H1oAWm59aM0maACjNNzSUAOzSUlFADqSkooAM0UlFABRRSUAJRRmigApKOetFACUZopMUAHFJS0lABSUUhoAWkoooAKSiigAopKKAFpKKKACikozQAUlBpKAFpppc0hoASiikoAWkoooAKSiigApKWkoASiiigAooooAKKKTNAATSUUUAFJmijrQAUUUUAJRRRQAUUUGgApKKSgBaTpRR9aACiiigAooooAKKKKACiig0AJSUUtABSUUUAFFFFABRRiigAooooASiiigBaKKKAEpKXvSUALSUUUAFFFFABRRiigAoopKAFpKKKACkoooAKKKKACiiigAopKWgAopKWgBDS0lFAC0UUUAHtRRRQAUUUUAJRRS0AJRS0lABRRRQAUUUUAFJS0lACUUUUAFJTqbQB//0/lD2pw9abS0AOApwpuc0o96AJOO9LmmDFL04oAeKdmmCnCgB4NOBqOnigB9Lmm0vagB2aWkpaAFp1MpRQA+im0tADhS036UtADs06mZoFAD80ueaZS0ASD3pc0wHvS8UAPz60uajFPB9aAJAakU+lQg9qcGoAm3c08NVcE0/PSgCyrVMGqmp561MDgUAW1cVOjVnq2e9TqxoAvo3INWUeswOanRjxzQBqpIOlXIpRxWKr1MspB60AbySjNXkm5rAilq6kvQ0Ab8c1aUVxjFcyk/FXo5umDQB1cNxitOK4z1NclHNjFaMU54yaAOtinX1p17a2OrWMum6lCtzaTjDxvyD7j0I7EcisKK47VoRzkEYNAHzF8Qfhhe+Ef+JppjNe6O5xvx+8gJ7S4/h9H/ADryjNfoKsyvG0bgMjgqysMhgeoIPBFfO/j/AOEywiXW/B8RMY+aWwXLMo7tD3IHXZ1Hb0oA8EzRTM9vwp1AxaKSloEKDRTaWgB1FNzS5oAWgUmaSgB9JSUlADqKbmjNAC5opM0lADjSUlGaACgmm5ooAKSiigA4pKXNJQAtJRmkzQAuaTNH0pKAClpM0UAJRRSZoAKKSlzQAUn0ozSUALmm5paSgAzSZo+tJQAtJmikoAKKKQ0ALSUCigApKKKAFpKKSgA+lFFJQAGk+tFFACUUGkoAKKKSgAooooAKKKT60AGaKKKAEpKWkoAKKKKACkoooAQ0ZopKAD2paSigBc0neiigAooo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"});function _r(e){let t=e.split(".");if(t.length!==3)throw new Error(Kr);let o;try{o=JSON.parse(Buffer.from(t[1],"base64url").toString())}catch{throw new Error(Kr)}if(typeof o!="object"||o===null||typeof o.exp!="number")throw new Error(Kr);return o.exp}function zs(e){let t=new Error("Received an unexpected response from Resend while authenticating. Please run `resend login` again.");if(typeof e!="object"||e===null)throw t;let o=e;if(typeof o.access_token!="string"||o.access_token.length===0||typeof o.refresh_token!="string"||o.refresh_token.length===0||typeof o.scope!="string")throw t;return o}async function Ys(e,t,o){try{return await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:t,signal:AbortSignal.timeout(ch)})}catch(i){let r=i instanceof Error&&i.name==="TimeoutError"?`${o} timed out after 30s. Check your connection and try again.`:"Could not reach the Resend API. Check your connection and try again.",n=new Error(r);throw n.name=Fr,n}}async function Xs(e,t){let o=Math.floor(Date.now()/1e3);if(e.access_token_expires_at>o+dh)return{access_token:e.access_token,scope:e.scope};let i=process.env.RESEND_BASE_URL??"https://api.resend.com",r=await Ys(`${i}/oauth/token`,new URLSearchParams({grant_type:"refresh_token",client_id:Xo,refresh_token:e.refresh_token}),"Token refresh");if(!r.ok)throw new Error(`Token refresh failed (${r.status}). Please run \`resend login\` again.`);let n=zs(await r.json());return await ei({access_token:n.access_token,access_token_expires_at:_r(n.access_token),refresh_token:n.refresh_token,scope:n.scope},t),{access_token:n.access_token,scope:n.scope}}function kr(e){return e.toString("base64url")}function Js(e){let{heading:t,message:o}=e;return`<!doctype html>
61
+ `,{code:r}=await Jo(i);return r===0}async isAvailable(){if(process.platform!=="win32")return!1;let{code:t}=await Jo(`${fo} $null = New-Object Windows.Security.Credentials.PasswordVault`);return t===0}}});async function it(){if(Ze)return Ze;let e=process.env.RESEND_CREDENTIAL_STORE;if(e==="file"){let{FileBackend:o}=await Promise.resolve().then(()=>(gr(),fr));return Ze=new o,Ze}if(e==="secure_storage"){let o=await Bs();if(o)return Ze=o,Ze}if(!e){let o=await Bs();if(o)return Ze=o,Ze}let{FileBackend:t}=await Promise.resolve().then(()=>(gr(),fr));return Ze=new t,Ze}async function Bs(){if(process.platform==="darwin"){let{MacOSBackend:e}=await Promise.resolve().then(()=>(Fs(),ks)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="linux"){let{LinuxBackend:e}=await Promise.resolve().then(()=>(_s(),Rs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="win32"){let{WindowsBackend:e}=await Promise.resolve().then(()=>(Es(),Ds)),t=new e;if(await t.isAvailable())return t}return null}var Je,Ze,wr=he(()=>{"use strict";Je="resend-cli",Ze=null});function rt(e,t){(0,Ke.mkdirSync)((0,Is.dirname)(e),{recursive:!0});let o=Af(e);try{let i=t();return i instanceof Promise?i.finally(()=>Ur(e,o)):(Ur(e,o),i)}catch(i){throw Ur(e,o),i}}var Ts,Ke,Is,gf,hf,Os,Af,Ur,bf,yf,js=he(()=>{"use strict";Ts=require("node:crypto"),Ke=require("node:fs"),Is=require("node:path"),gf=1e4,hf=50,Os=200;Af=e=>{let t=(0,Ts.randomUUID)();for(let o=0;o<Os;o++)try{let i=(0,Ke.openSync)(e,"wx");try{(0,Ke.writeSync)(i,t)}finally{(0,Ke.closeSync)(i)}return t}catch(i){if(i.code!=="EEXIST")throw i;if(bf(e)){try{(0,Ke.unlinkSync)(e)}catch{}continue}yf(hf)}throw new Error(`Could not acquire lock on ${e} after ${Os} retries. If no other resend process is running, delete the lock file manually.`)},Ur=(e,t)=>{try{if((0,Ke.readFileSync)(e,"utf-8")!==t)return;(0,Ke.unlinkSync)(e)}catch{}},bf=e=>{try{let t=(0,Ke.statSync)(e);return Date.now()-t.mtimeMs>gf}catch{return!0}},yf=e=>{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}});var Ps,$s=he(()=>{"use strict";Ps="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCARXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAABkCgAwAEAAAAAQAAA4QAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIA4QGQAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAQEBAQEBAYEBAYJBgYGCQwJCQkJDA8MDAwMDA8SDw8PDw8PEhISEhISEhIVFRUVFRUZGRkZGRwcHBwcHBwcHBz/2wBDAQQFBQcHBwwHBwwdFBAUHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR3/3QAEAGT/2gAMAwEAAhEDEQA/APgDrRRRQAUUUUAFFFFABRRRQAUUUUAFFH0ooAKKKKACiiigAooooAKKKOKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo+tFABRRRQAUUUUAFFFFABRRRQAUuaSigB1FIDRQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUYoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigAooooAKKKKACkNLSUAdx4RvyDJp7n1dPb+8K9DXDgHGK8Ltbh7W4juI/vIciva7C6S7giuYj8sg70AaCgA1fifjBqkPpirEfHOc0AaqHIGTUwwapxEDk1aUjpQA888VGyg1IKUrkZ70AUJI+M4yaoyRe1bDLgVVdCRnrigDAljP+elUZYh909jXQSR9ttUpY++OvrQBgyRkt6/3arPERnAyPStmSJckY6/0qkynseaAMto153dPU1WyQTnuP0rRZCDt2ZOOtViGIHOeeKAKmD9cjqf89aRVBAJPT1qfaVBzgnqfxqJlbBI45oAjIyCMZNIcjoAakYHHXAHrSAEDHY96AGfwjGN1BOF9/wDPSk4Y7BwemaU4IyBQAq5IIzgj06UdOQBgcE035QpDd+1KoABbGc/yoAcuBntnrSguDzwB+IoG4qdoGP50u4gbeqk5xjmgB44I5yCOKmUu3zE44/Oq67Tn3/SpApABycmgC5vPBXGferyZAyOp555rLRuxzkVfidCATwelAGtEQDnoa0IpDt9zxWJGctuB+X1rRikAGQe9AG5FhR/StCM5H4Vi27jdn061pRNgCgC+DxS5PX8KjU9KmH+RQAnWoyPepgOPftTducE0AVWGRVd17VdK4bHpUEg5z+NAGTJH7YxVN1U579+a1nTPHv1qpKmRtPTvQBiuCQT3qm0UgG485rWkj5Jx+AqpImMnkZ/zxQBjyRsxJC5PUCq5YADI49e+a0WHl/OevOKqzKMZ45xj15oArFU64P1FNT72R9eOtPY7TuXIx2prZYnJ5U0AOKjAC+nU05N3IPPvUQ3BgR0xUsbYz/CfegBMhcP/ABKcdOpqQAH5gOR+XFIoYAlz2pNpHLE/SgBmfmLHgN/SlIIx/tc04fMfmzn9KVsYK425x60AQ4Kn5RnFMKggDJweh61NgEYJwMenWm4Xop6GgCLC5GOvYYpACucfkP6U9hk7lwMHFKTtyFPB6d6AIthJx3/SmHcpBGOetTZUhTyMdff/APXTSvpx6YoAibJXOc+gqPGe/PSpThl3KMD3prcjJGPSgCEjHFRsOan47j8aaR04zQBVYCoWHWrjCoWWgCmwqBhVxhUDCgCsRTCKnYVGRQBAajIqYimGgCOm080ygBKOKWm0Af/Q+AKKKKACiiigAoo9qKACiiigAooooAKKKKACiiigAooooAKKKKACij3ooAKKOtFABRRRQAdaKKKACiiigAooooAKKKKACiijpQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAC0lFFABRR1ooAKKKOlABRRRQAUtJRQA6im5paAFooooAKKSigBaKKKAClpKWgBKKKKACiiigAooooAWkoooAKKKKAClpKKACiiigAooNFAC0lFFABRSUtABRRRQAUUUUAFFFFABRRSUALRSUUALRRRQAUUlFAC0UlLQAUUUlAC0UlFAC0UUlABXoHg/UvkbTpGwVJZM9weorz81asbprK7iuV58tgSPUdxQB73GVIHOD6VYAw1Z1ncpcRJNGflcBl+hrSX34oAsqeatIapoCO1WEOKALg5p2Mc1Ep/WpM/5NAAR+lQuo9KnOM0FeOlAGfIp7DNUpYjkk8jFbDLuHpVWROKAMOSI9SMj6VTljXJ7DPWtuRfYVQkjxkcc0AYzxkH6dCe9U5IumenXp0radFA9wapTRAHb1z3oAySoPUd8YqJwqAJnGetaTxHG3uOM9/aqkkRZjx+HvQBVKg4JPHYetRn5s46Gp8hdylcgcj/Co3UHGBx6UAREKPuDvQQ5Y449acwOOOnakPX5hhemM0AMGRj1P50DODu4NKVY4XOPQ0bT07j1oAXJ4AGQP0pwK5yQMDoaiGBznnP4U4qyt0yR60AOyM/Kc59KkGRnHBHX2qE4U8e1TZy2aAJxjO5WyTjipgcDA5U9cVWTczdADn5TU+WR8sck9u1AF+IovGOTyG7Vei6Lt59qyYXZRgnHYetXYGYdeOwH0oA24WG4dvatSGQKcdc9awYm98e/1rTickLgcj3oA242HGeABVoVmxMD8uevetBOf8aAJOaPX3pQKUCgCE8Hjk1ER7VaI70w8/0oAoOmc47VTkjG08ZFaTAnPaq8i9QeBQBjyqR15NUZhgDjI9K2ZE5x+tUXUL8nv1oAyZULFh90Y6+9UjHy2SOB37VrSICPbNZ8kaqoIA7jOKAM9wdxy2T+vvVdjlgw/hxV10BbBbG45BqBwu35FA5xQBEcn5c8N0/p+dBx0yST2x0pSFOE3c44pArKcMckjg+uKAJDt5LHPp+HtSox+bIzmkTaygd26f8A16BlsEZwD16UASYUkEAk+p4pj/PluoXpTyq7uMnuOaAGKncMUANbGxcLgjv6UzBY8D73P5VIRgYHfqKQ7jgkAMPXtQAw7QWA+UnnPWmlgwwvygdafkKuCee+aQLtGM4LdjQBETuxwSBUZEmQB1HBFWCAqsRnPbjAOKiGDwWwD3oAibaenrSkY64IqV1UtwMEdaYVBHI+nrQBCRxn72KaylcYHBqYhfpimthhk8dqAK7DJz0qEjJq1sPAP4UwgZIA5oApslV2TvV5gemKhZcUAUWWoSKuMtQEUAVStRlasEVERQBARTalIqMjFADKaRT6bQB//9H4AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFpKKKAFpKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWkoooAKKKKACiiigAooooAKKKKACiiigAopaSgAoopfegBKKKKACiiigAooooAKKO1FABQKKKAFpabTqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigAooooASlxRRQB6H4N1IvG+nyHmP5k+h6j8DXo0bZXJ4HrXz/Z3UlldR3UX3oznHqO4/GvdbG5jureK5i5WRQ350Aay46A8+tTr6VXTGOepqdTjpQBZXqKlBBzVdWJ61MDQBKDnNLgmmjFLzmgBCO4qJlzkfjU+abtJ6mgDPZCBzyaqPHz0rWdetVZF4NAGM8fB6VSkQAccitkoAKrSpzuwDigDHeIL1AyPTv8AjVB4wxPGD1yOorZdC33OAKrNGP4sc96AMZ41yVJyTyMe1V2bBOeeMZrTkjVc5BJHaq0itwMcDt/WgCkVy2MDtwP88Uxhzzgj19asOgyWVSajIXqOB3z3oAh+QnDH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EEc5FRYJXp+tAEZXGUx9D/8AWp4wRzyAaTAQnHTFKCvIboBmgCRfu4HGev0qUdOpOO3oKhJ2Y7ZqXblffj8aALm8BR6+h6Yq/GQQTkE9Dn0rNjHGcEY7VdiZd4z+nagDUhY5AznGckelaKMcDnDVjxnAwf0rQVgyjPCigDWjPIBPIrThfjJ/GsRGA49uvar0bY5JoA21w2PyNOxjiqkL55Herq4IyaAIytRkfSrBHpUZAoApOmefSqzLxn07VoMODUDqMGgDJcFevNVJVwQ3PPpWoyY4AqnIpz1x60AZcq4JwOD+dVHCl+mcVqOScjGPeqkig9AOaAMt0U/e+XGenrVTZgjnGB07GtPALemOKqSJxxxjuep9qAM50DNhlJ/HFMAXaMc/j0q06jkL0PHPaq+3Dc8Y49h9aAIwPl5Xvk1NtBKyA/j6UxioGOpzkEdPekPJLcHv7UASof7+DuPbtUzIxyynHbFRIAVXb1BOf/rVIhBIUg7s9e3NAEvO4g8HHH0pVLkbW5zTT0YDHp1p6nCjnGOuev4e1ADCu44k4Ge3elYFQNwIOcUikrgAjKn/AD0p3GCuD/hQA3BxgEEE4yetRklMnsc1LgZy3I7496G2+3y9j3oAjKr1Y1GAB3xj/IqZlHBIyDx8tMIRs7icEYHegCDaQxYcZ7f59ajYHJ+XmrEg24Vj/wDrpmBt6YwecmgCtsDMexHIxTSEByT3696s/NuKr1I9qjYZXK447HrQBWI47A/41Ey/5/wqzg9WGTUZ78fQelAFJl9arsnWr5Xiq7IaAM91qsy1pMlVXWgD/9X4EooooAKOtFFABRRRQAUUUUAFJS0lABRRRQAUUUUAFFFJQAtJS0lABS0UZoASiiigAooooAKKWigBKWiigAooooASloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKACiiigAoopKAFoozSUAHWiiigAooooAKKKWgBKKKKAFpKKKADrRRRQAUUUUAFFHSigAooooAKKKKACiiigAooooAKKKKACiijrQAUUUUAFFFHSgAooo96ACiiigBaSiigAooooAKKKKACiiigAooooAKKPaigAooooAKKKKACiiigAooooAWikooAKKKKACiiigApaSigApaKSgAooooAKKKKACiiigAooooAKKKKALmn302nXcV3AcNG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PA+tLhs45UjkZPFMRlJKrnJOTg1Mqrkq3CgcZ68UAKCQevTGB60Fwr7Tyx6UikSFWU89cHtS7kfLDJI6CgBWIxtKgMelRyDpt5X3qY8rknB4GKbkcKv3TxQBGfm5AyCe1RkgfKDnvk1OqkjJBGfWkCsq7GIHcY/WgCAjKkL379qjIVVIb5c4XPXip8ZOw9u4qFtwJ2jAPNADHAVcN0H6/jUJToe/T/8AVVgKG6kZA49qZ23IcNQBW5wARz/Wo9uRluntxVplIQSckNx+NQMpZgSeD0NAFZlYfKBkDvUDr9488dKvsuSB7Z+tVCoHOPXigD//1/gWkpaKAEooooAKKKKAEpaKKAEpaKKAEopfpSUAFFFFABRRS0AJRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUUAFFFFABRRRQAUUUUAFLRRQAUYopfegBKSlooASiiigAooooAKKKKACiiigAooooAKSlooASilooASilpKAClopKACiiigAopaSgAooooAKKKKACiiigAooo+tABRRR1oAKKKKACiiigApaSigAooooAKKWkoAKKKKACiiigApaSigApaSigAooooAKKKWgApKWkoAKKKKADpRRS0AJRRRQAUUUUAFFFFABRRS0AJS0nSigAooooAKKKKACiiigAopaSgAooooAWk96WigaCikpaQBRSUtMLB0rt/BviAabObG5P7ic/KT/C3+BriKSgR9SxPuAOetWh2xXm/gvxD/AGhD9gunzcQrxn+JB/Ud69FU5HvQBMKUc00HJpRxzQA/FGKAeKKAG4pDkU+koAjI9abwalIz1qNulAELKOuKiI9eRVhhz71EVxz7UAQN1GO9V2BB9AatEKevUc49KiIPPf1+lAFcoOo/GoCoUjBxj171aK4HUfSoGAOMDOKAKzjgjv69qrvGMceuKtsv3sHOfyqJlTPT8qAKbKD16rnA9arOpRCQMjuKvEEHsSe57VCysQMfXp1oAz3TYMnoeKgbDkccjt7VfZfkP+eag2ZAPRjxigCkdueRye/t6VGy7m4GAO3pVtlO35sA5prBi2Tyo9O9AFXk8Hj09qkUEruHQcYpNhYHHUHkd6BkEEHGP1oAnBOevB44q3GemCDWdkFsHjPp2qzGxUjPegDbhkxwPTg1pQkFcDg+tY0T9WPFacDcg+tAGuo4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sA4yPyxUqs5zlQDnGBQBKqkgbjnjrTRuALL34weelJ8+WwBxjBx2p6gFckdetADMbcyEcjgj1pD8nGMjGckilXCrgcjufSl2qrEYzk0Af//W+DKKWjmgBKKWigBuKTFOooAbRS4pKACiiigBKKWkoASloxRQAlFLS0AJRS0YoAbRS0UAJRS0UAJRilooASilooASilooASilooAKSlooASjmlooASilooASilooASilpKACiiloASilooASiiloASjrS0UAJRS0UAJRRS0AJRS0daAEopaSgA9qKKKACiiigApKWigBKSnUUAJRRS0ANopaMUAJRS9KKAEo60tJQAUUUUAFFFLQAlFLRQAlFHSigAooooAKTmlooASilpKAEpaMUUAFJS0UAJ7UUtJQAUUUUAFFFFABR70UUAFFFFABR0oooAOlFFFABRR1ooAKKKKACiiloASilpKACiiigA96KWigBKKKKACiiigAopaSgAooooAKKKKAEpaKKACiiigA96KKKACiiigBKWiigAooooASilo+lACUUtFABTqbS0AFdx4T8Xz6E4tLg+ZZO2SO8ZPUr7eoriKOlAz62s72G7hSeCRZI2GVZeQa0CM4r5o8K+K5/D0xjkBltJCNyd1P95f6jvX0Npuo22o20d3aOJIpBuBH+e1AGjim0/gjigjvQIixjgUwr6VNj86QgUAVGGeKgdeOuR71eK46ComTIoAolRzu7DFQOgz/OrpXH4VEUz93gd6AKDJg5J5qJgWxxzVt1MnXqOlR9AMfjQBRZcnBz7motoY7RxVuROvrUJQbsNxQBXKbWyOo6HrmoSASeOcVYZSvA6E0wqwGFFAFbBBx6j8qikJwOOnOPWrLKxIGRkDmoWyATwCKAISBvDcgY/nTJODhMKp74z+FSsCo+Y578U0KQdpI29KAGMqjOzc3brT93yLvB+lN2lDwcAHjHSgDGW7D0oAtLhOQCQa04WYbeaxQS2CpzitGOUg5PI96AOntpFCj0zzW9G5bnPFchbTkEMcYxXQ2sgZQSODQBqcEc1GVHapV5GKUqPSgCmwA6jtVZgACKvsMCq5XmgCiUAztFWoJNvHbvTWFRAlDxQBqMAfmHSoCNwp8MvmAA96cVKGgDPkUEn1rOljBOD26VsSA8kAD0qjIjA89RQBjuhC4zmqrgEA4JJrUdMnHT1qhKuOc89qAKRQsD27E+lVmXgH7xPNXZORyBgDHtVZgd248cde1AFOQDZyvTkAVBIDsPUZq4RtOFP3utRMmPlHQ9KAKBHAzxgdv600K24c9e1WmXGdxwPbpUDgZJHynGMf1oAh6bhUYXaNhOccipWCupAx83PXoBTNoGAQcL0/GgAKsEAICk5zipQYwFY9uKiGQx3HBpPl6EY9M9qAJkUvwzEH09qlUjJJ6E44/SqvIOe46/41OFIHXvQBOpjDDcTk96RdqksCSfTNIuQgfOQTSludpxn35oAlP3hk4x1HpSNlVJfuaUkgfKCc9cdaGYlSoXI6jH8uaAP//X+DqKdSUAJRS0lACYpMU6igBpopaSgBKSnUUANopaKAEooxRigAopcUlAAKKKKACiiigANJS0UAJRS0UAJRS0UAGKKKKACkpaKACkpaKAEopaSgAopaKAEopaKAEopaKAEopaKAEopaKAEooooAKWikoAWkpaKAEopaKAEopaSgApKdRQA2ilooASiiigAooooAKKKKACiiigAooooASilooASilooASiiigAooooAKKWkoAKSlooASloooASilpKACiiigAooooAKKKKACkxS0UAJiilooASilooAbS0tFACUUtFACdaKWigBKKWkoAOtFFFACUUUUAFLSUtABRRRQAUlFLQAUUUUAFJS0UAFFJS0AFFFFACUUtFACUUUUAFFFLQAfWij60UAJRRRQAUUdKOlABRRS0AJRRRQAUUUUAFFFH1oAKWkpaBoSloooAWul8O+J7/AMPzjymL2zNmSE9D2yPQ1zVJQB9YaRq9nq9ot5ZSCRD1HdT3BHY1tAivk/RNdv8AQroXFm2VJ+eMn5XHuPX0NfRXh/xFY69bCa0JDjG+M/eQ+h9vegDpiPWkxSg07HpQIiIzURU1axmmEUAUmQ1EVJY56HtV0qfyqFo8HI60AZ7j0HHaoWTJOec1oFcZ9KgcEnjjPagCiUJ4xu+tV2BwSR+dXSpzgHj1qFgDnHegCi6nGeq0wjHtVxwc4A+WoWUnG0cUAUsMM89P1qPaBk8HNWGTIODkVGVIHB56igCswGNuOveogNg+XqOtWmRcdc571ER8xPc8UAQtkjJOFHI/rTCDuGOBzkf0qU8AYB460MA2Q2QRQAwMynIOBx06Af8A1+lTxsB2JqAkKBjknn/61SLnJTPJ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AUZoooAPaiiigBKWiigBPaloooASilooASiloxQAlFLSUAFFLSUAFFFFACUU6koASloooASjilooASilpKACilooASiiigAooooAKKKKACkpaKAExS0UUAFJzS0UAFNp2KSgBKWlooASiiigBMUmMU6igBlLRikoAKKKWgBKKKKACiikoAWiiigAooooAKKWigBKKWkoAKKKKACiiigAooooAKKWkoAKKKKACiiigAooooAKOlFFABRRRQAUmaWk60AFFFFABRRRQAUUUUAHSur8N+L9T8OSbIT51qxy0Lnj6qf4TXK0mKAPrTw94j07xBafaLKTkffjPDofcenuOK6MN+NfGFreXNjcJdWkrQyocq6nBFe8+FPiRZ3+yz1oi2ujwJekTn8fun68fSgD1cimlBSrKHH+H86f2oArMmagaPjmtDFRMlAGWyADHrVZk7GtZ48iq7RnGT0H50AZTRnA31WdBk8dK15Iy3HB7mqkoxnjg9qAMl1wc+vAzUDoVUkcjr71qMueew6Zqq6uWJboaAKBBAyBzUOFA9cd6vmNck9/Sq7oQu44x2oArFQwUjjHrTGVQcrnOMH0/CrIBHJHY800jo2Puj+dACRkDMYPbIq3HJgkk5AqmG2naM8+tTg8qo5xQB0FvPswSeT1rpLaTcuO+K4mGQhhj8a37K4B2j86AOmxkComFLC4IweakYdiKAKrCoyARVplHWoiOOlAFVlzyeKiIweBmrRGTUTJzkcZoAFOD04psi4yR9KIyVba3IqU4xigDNdOvrjpWc6smcdDyfWtxwOp6ms+WM5YnoPTvQBjvH3xx6DrVRgQAT0PatOVWBGM4PeqbxqAR156+lAFBxwGA6Y6dqhcMrZA6GrjjBK9OAfYmoHUAAdaAKTL0255GTVd3OCv8XUZ9KuMMBec1Cyx4wRuB7UAQOAWUEn14+neoCA2QF4Hf0q26N0Qj2zUD7QMAH6CgCqhZQV6Z6Go929WOOc4J9ce1Wij4weDTNwOMjkZyaAIBvBGBnjkUmTtAP4VMVBIwRn1pgUkg5wPSgD/1Ph2kNPxSEUANopaKAI8UlSUmKAGUlPxSYoAZRTsUlACYpMU/FIeaAGYop1JQA00U7FFADaSnYooATFJTqSgBMUUtFACUUuKKAEooxS4oASiil5oASkp1JQAlLRR9aAEopaKAExQaWigBtFLRQAlFLRQAlFLRQAlFLijFACUlOxSUAFFFFACUUtFACUUUtACUUtFACGkp1GKAG9aKdSUAJRS0YoASkpaKACilpKACkpaKAEopcUUAJRS0d6AEopaKAEopaSgBKWlpKACilpKAEopaKAEopaSgApKdSYoAKKKWgBKKKKAEpaKKACiiigApKWgUAJSU6koAKKKKAEopaSgAopTSe9ABRRRQAUUUUAHFFFFABSUtFABRRRQAlLRRQAmM0mKdRQAyloxSdKACkpaKAEopaSgAopaKACkpaKACiiigAooooAKSlpKACloooASiiloASilooASiiigAooooAKKKKACiiigAoopaAEooooAKSlpKACiiigAooooAKKKKACiiloA9C8LfEHUtCKWl5m7shgbT99B/snv9D+GK+gdK1rTtYtxdadcLOh64+8vsy9Qa+PK1NJ1jUNFuheadMYpB1HVWHow6EUhn2LwOn1pWA6V5x4U+IGna4Y7K6UWt6RgKTlJD6qT3/2Tz6Zr0YHcSD1piGlQRioGQ1bpCMigDNaPI9DnNV3TOTjitZkzVdoyc4oAx2iBPHGageLcpJG0jrWu8Z6frVZ4yxGe3agDHeMn5Rwaruh5BHFarxgE881VdM84yaAM6VTzjj09qiMYYjuR2q88JK4HJ7momjKnrwPzzQBQKEPg8mpBgAAHPpUmzgjr3zTCB2FAEyMqnBPJx0rThlAwF9etZG9dxHTHQmrcRJ298UAdfaz8dc81tBt6iuPtJQcbeOeRXRwSgrwelAFsjIqNhU+MjimlaAKhHPNMYHNWGT161GRxzQBUYYOakB47GnstRAbTnOTQAMCWHpVOZch9uQa0PlI+vIqCRT1PegDFcA8kZxziqUoIwCOo5xWw8YBOD1HNZ8iADnvxQBnOpckEc9hVTYMnPA/zxWk3K4+6D+dUpFxwDk9aAKThSOR931qEjbz3xwD2q6QPqOjVXcY49qAKxBznPTqaib5c7hnHJq1tPb8qrsu488HtQBW/vlfl7+9RtuKFjwcdR0qzIGLFW/CoirFsHgUAVy3B3DJ46dPrSAPuGW+UDvSupbtg9MUpG7LcqwHA7UAf/9X4hxSEVJim0AMpKeaTFADKTFPxSYoAbSYpxpKAG4pKfikxQA3FGKdigigBmKTFPxSYoAbRinYoxQAzFGKeRSYoAZikp9GKAGUfWlooAKSnUUANoxTqSgBKKXFGKAEopaKAG0YzS0tADaKdijHpQA2jFOxSEUANxRTqMUAJSU6jFADaMU7FLQA3FGKdRQAyin4ptADaKdikoAKTFOpKAEoxS96KAExSU6igBtFLRigBKKWigApKWigBKMUUUAJRS0UAJRS0daAEooxRQAUlOooASiiloAbRS4ooASiiloASjFLSUAFFFFABRRRQAYpKWigApMUtFACUlOooASiiigAxSUtJQAUUtFACUUUUAFFFFABRRRQAlHFLSUAJR1paMUAFJS4ooASilooASj3opaAEopaSgAoFFFABRS0UAJTcU6igBlFOxSUAJRS+1JQAUUtFACUUUUAFFFLQAlFFFABRRRQAUUUUAFFFFABRRRQAUUUdqACiiigBKKKWgBKKWkoAWkopaACkoooAKKKKAEpaKKAEooooAKKKKACj6UtJQAtFFFACglSCDgjpivUPCvxIvNL2WWtFru1HCydZU9ufvL7dR69q8upKQH2bp+pWWp2qXllMs0Ljhl/kfQjuOorRr480XX9U0G5+06bKUzwyHlHH+0v9etfQ3hTx3pviEJBIy2t8RgwseGPqhPX6df50DO9xTCgpwJP1p+OPrTEU3jzzVZ4l+8a08VCyEmgDJeJQcnk1WeI9FPTith4z6VTkiPXHNAGTImBwOP51VaJgQw5H9a2JE+T0Pc1UeMFsrnJ6gUAZZjG0gjJ9BUDfLyFHXitJkYjC856VWdCOcZx2/nQBVK5ION3rUoXg7hgev0qTZyzgheBx7U1D82GwD7e9AFuJwW68+3pXQWkqjJUmuYjbdlT2xj1rRgkKcnqeM0AdnE+UANSkdKybWb5R2rWDBwMUARsuajIzVg9KYRyaAK2M8ComBxjvVplqMrQBWBIxkU8qcHb1PalIxmnDBAB7c0AZzJjOef5VQljBzk9+a2HU5/WqEkZIPGe9AGQ0Y+vfiqzqB0GMf/rrQkjcAjp6f/XqnIDnoeKAM91UDuM9feq7KSduNvtV9lU9emOlVyNwyevt6UAU2B3buc+3Wo22g9KtFWOe1QMuAVXntQBTkCsDs7EZqD5d4Cr8wPr61dZBuPJA46+tQ7GaMqo2j+tAEbAswLDjsRVbl8gZ4PFWyNxKxj73PNQ7AVyzD2HrQB//1viam04ijFADCKTFPxSUAMxRin0lADCKbTzTaAG0cU7FJQAmKTFPpKAG4oxTsUYoAZiinYooAbSYp+KSgBmKTFSGm0ANxRTqSgBtFOpMUAJS4oxS0ANxSU6jFACUmKdRQA3FHWnUUANop1FADcUYpaWgBuKMU6igBuKKXFLQA3GaMUtFACUUuKSgApKXFFACYpMetO+tJQAmKMU6igBlFOxR0oAbiinUlACUU7FJigBtFOxSUANopaKAExRS0UAJRilooASilpKAEoopaAEopaKAEooo60AFJTqSgBKKWigBKKWigBKSndKSgAoxRS0ANopaKAEpaKSgAooooAKKKKAEoxS0UAJS0UlABSUtGKADpSUtFABRRRQAlFLRQAlFFFABRS0UAJSUtFACUUUUAFFFFABRRRQAUUUUAFFFFABSEHtS0UANpKcRSUAJRRS0AJRS0lABRRS0AJSUtFACUUtFABSUtFABRRRQAUlLRQAUlLSUAFFFJ7UALRRRQAUUUUAFJRRQAtFJRQAtFJRQAUUUUAJRS0UAFJRRQAUUtHFABRRRQMKKKKAClBIII4xyKbS0Aes+FPiXc2BWy18vcW4wFmHMiD/a/vD9frXvFjf2l/bJd2cqzwycq6HI/wDrH2NfFvSt7QfEeqeHbn7Rp8uFYjfE3KOP9of1HNID7DGDz1oIzXBeFvHWleIU8lnFpeDrC5Hze6N3+nX2rvUYNx/k0xEbLzVZkzxV89enWmlRQBlNEO44qu0Z59e1a7x1WaHgkDmgDFlh4zVdkIOeO1a8kZPAqs8WQRjqOlAGG0JGT75IprL0K9c8GtJ16cdPT0qu0ePu9DQBU2nftXqeKtxOWyAelR8qd2OcfzpVDNgodp/OgDatZsEHqT1HaugglVhgDFcfE/lkY6f41vWs60AbuOB703HPrRG4IAzT+BQBEQfTNREVY4qMigCuy5+tREHIH51ZPWomXkn8qAGEZFVZEAHBq8OvNRMgPIOfagDGkTIPr0qiUKoWJ5FbUqBgeMZ7VmvGMHA60AZjEbRx2/zmqrIzdCMjkY9K05cAYUDj1qjICBg+nUUAUWUqd4HXr7fSoMYXpgdh6GrrEtwBxVVl5GTz6YoArHk8HsSDURA+ZOQO3v8A/qq2yAtjPFQ4ZX77TxQBV28EyHoO3vUbxvnqOOnrVls4MYxtHb8OtRg7ThQfrigD/9f4pxSGpMU00ANxSGnUlADKSn4pMUAR0YqTFNxQAzFJin4pKAG4pMU/H40uKAI6XFKRRQAmKQ06igBuKMUtLQA0im4qSkxQBFijFPIpMUAMxiinUYoAbRS4oxQA2j606jFADaSnYooAbS0uKKAG0U7FGKAExRiloxQA2lpcUUAJijFOxRQAmMUlOpKAExSYp1FADaKdiigBtJinUdaAG0Yp2KMUANoxS4oxQA3FFOooAbSU7FFADe9GKWjFACUlOoNADaTFL3ooATFJS0hoAKKWigBKSlooAKDRRQAmKKWigBOlJS0YoASilxRQAlJTqSgAoopaAEooooAKSlooASilooATFFGKWgBDSU6kxQAlFLRQAlFLRQAlFLRQAlFLRQAhzSU6igBuKMUuKXFADcUU6m0AFFFLQAlFGKKAEopaKAEpKdSUAFFFFABSUtFACUUtFACUUUtACUEUtFADDRTiM03pQAUUUUAFFFFABSUtFABSUpooASiiigAoopaAEopaSgApKWigA9qKKKACiiigApKKWgBMYpKWigAooooAKSlooASloooAKKKKAEopaSgApKWigAFLRSUhi0UUUwEooooBiUYoooEKrFSCpwQeCP8AGvW/C/xOurJUs9eBuIRws45kX/eH8Q9+v1ryOigD7T07U7TUraO9s5BLBIMqyng+v4+o61ojBr430TxHq3h+cTabOUUkFozyjfVf6jmvojwv4+0vxAEt2P2a9PWFzwx/2G7/AE6/zpDPQdoPFRsnpT1dT0qTOeBTEZ8iZbpVaSE5IrXZQelQNHnqKAMSSPnjgj9apSIOWAPB/Kt2SHJ6c1UaMjPH1oAw2jBO4cMeP8KiZHBIXgjnNazQ7eM8DqarFO2AW56/1oArISPm9OM1ctmIfk84zVYx4wQcAmnIMH0GaAOpt5sbQa1OoyK5W3kZGwec8mt+CXOADQBZxSEcU9uBkc0lAELLzTCKnIqMjmgCueDSfeGBwae4pqjnmgCs6ZI96oTICe/+NbDpyRVGRPSgDFlTcDmqLxhuVzjHatmRD0Ocd6oOgGc8c4OO1AGeUPUDj1qqxVeXPJ6VeePABXk5/CqzqVJ3DOePoKAKrg4znv2qF1wTvYn1H0q0QNuB2quwI9sfrQBWbnLp/d/LmodvOActnOParZBxnGKY+ATg9fQdKAP/0Pi09aQipMUYoAjxSYqQikoAixS06koAaRTMVJ1pCKAGUmKfSUANxQadSYoAZijFOpQKAGYpKkxSYoAbikxTqSgBKKdijFADMU3FSYoxQBFijFPIoxQAzFIRT8UYoAjxRin4ooAZRTsUYoAbijFP6UlADcUuKWjFADcUY5p1LQAyinYooASiloxQA2kxUlJigBlFOxRigBtFOxRQA2kxinGigBuKKdikxQAlGKWkoAKSlooAbRRRQAUdKKKAEopaKAG4pMU+koAbikp9JQA2jFOoxQAzFFOoxQA2ilxRQAlFLijFADaKWigBKWiigBKMUtFACUUtFADaKdik7UAJRS0YoASilxRQAlFLRQAlFFFABSUtFACUU6koATFFLRQAmKSnUUAJikp1FADcUU6koASilooATFFLRQA3FFLijigBKKKKACijrRQAlFLRQAUlLRQA2inUlACYop1JigBKKKKACg4paSgBmKKf1phoASloooAKKKWgBKKKKACiiigBKKWjFABSUtJQAUUUUAFFFFABRRRQAUUUUAJRS0UANpaKKACiiigAooooAKKKO1ACUtFJQAUUUUALRRSUDQtJS0UAJmjFFFABSUtJQMKKKKBWClVipBBwRzSZooEeseGPidfWLR2eu5ubYYXzQP3qgcc/3gPzr32w1O11C3S7s5Vngfo6nI+nsfY818VVsaNrup6DcfadNmMZP3kPKP7Mvf8An70DPs8ENyKUjivNPC3xC0zXNlrcf6JebeVc/K+OuxvX2PP1r0lZAwz/AJ+tADWTIqs8e1cDsP51fIHak2KcgigRjSQ5HPQiqbRAjB9a3mjJ4PeqckfHyjBoAw5I2Pztkc9KhYFMs3f0/pWu8POfWqrRAAFs+1AECbSQe1attIwI5wKyvLYMCcVZjJBI64oA6eKQkfN09Kkx3rLgk6c8Vqqdy9c0AIeeajK5qUccdqAKAK7dKaw44qcqKYVz2oAgAJBOOlQyISDU5UoSM9TSuNw/CgDGkQEnPSqMo2+tbTqw6DOazpVwxGD+NAGUQCfm6mqbpxgckYFakiDsDwapyRqQM9aAM9ggOw5weuagZf4RggVbbcvXnPWo3H94/hQBWZQoOzjB5qAgNz35qyyMBkjI9qgkwI8LwRzmgD//0fjQim4qbHFRkUARmm4qQikoAjwaSpDSYoAZimmn4pOtADMUYp9N4oASkxT6SgBmKXFOxRQA3FGKWigBuKQin4oxQAwC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FABRRRQAlFBooASlopaAENJS0lAB0ooooAM0UlFAC0UUUAFJRRQAlJTqTHpQA2iiigAopaSgAo60UUAFJS0hoATvS0lFABR0paSgAziikpaACiiigA96KKKACiiigBKKWkoAWikpaAEoNFLQAlJS80lABS0lFABRRRQAUUlLQAUUUUAFNp1JQAUtNooAWkpaSgBKKKKAF5opKKAClpKKAFo6UUUAdT4Z8X6t4Yn3Wb+ZA334HJKH3Ho3uK+mvC3jPSfFFsDaN5VwgzJA5+dfcf3l9x+OK+O/pU9vcz2k6XNtI0UsZyrqcEH6igD7vVlbkdqkAU4rwzwd8U4LkJYeImEE/AScDCP2+f8Aun36fSvbYJ1kCtkENyCO4oAcyc00Ag1Y600gUAAwwwai5Vtv61MOlNdQ68dRQAo5oxioA5HB696nHIoAqHKNuP3WNIwyDVpk3qV79RVUMW68N3FAFKZRnjpisyaPGTnqK2p0zgVQkUEH8hQBjSq351RlUnGep/i9a1JV+b2I5qkyPj2PX/61AH//1fkoimVMRUZFAEZFMNS0wigCI03FSkU3FAEZphqSmkUAMNNxUhpuKAG0hp2KCKAI8UuKXFFACUUUUAJTadRQA2l4opKAFxSUuKKAG0lOooAaabT8UlADaKdSYoAbRTsUYoAZ9KTFSdKQigBtFLRigBtFLSYoAKWkooAKSnUUANopaSgApKd1ooAbRS0UAJRilpaAG4pMU6igBlLS02gAopaSgBKKdSUAJSfWlooASk60vvRigBO9FGKKAEoxS0UAIabTqTFADTS4pcCjFADaSlIpaAG0UtJQAUh9qWigBtJTqKAEooo5oAT2o4paSgApKKXpQA2kp2KKAEpKdSUAJSY5pTRQAlHSlpMUAFJS0UAJRR1ooASilooASilooASkpaKAEpaKKACko60tACUUUtADTRS4oxQA2ilooASkpaSgAopaKAEpKcaSgBKKKKACiiigApKWkoAKKKKACkoooAKSlooAKKKSgAopetFACUtFJQAhptOooASkpaSgAo+lFFABSGlpKADiiiigApKKWgBKBRRQAUUtFABSUtJ70AFFHvRQAlFLSUAFFFFAC0UUUAJRS0lABSUtJQAUUdaKACiiigAooooAKSlooASiiigBKXNJRQAlFLSUAFFLSUAFFLRQAlGaKKACiiloAOle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RkVPioyKYiLFMNSkU00AR4pKdTTQA2ilooATFNxUlIetAEdFOIpKAEpKdSUANxS0tJQAlNp9JQA3HNJipO1NoAYRSU+koAbilo9qWgBppKfikNADaKWjFADc0UtFACUUUUAJRRRigBMUlOxSUAJijFOpKAEpDTsUmKAE6UUfWloASilooASkNLSUAJRQeKWgBKTpS0lABSUtFADaWlpKACijvRQAmKTFO+tBoAZS0Uc0AIKMUtJ7UAJikp1JigBKKWkoASjrS0UANxSYp1JQAlFLikoASiiigBPpRRRQAlJT6TFADaSnd6OKAEooooASjFFFACUmKWigBKSlpKACkoooAWkpaSgAooooADRRSUAFFLSUAFFLiigBMUlLRQAlJS0lMAooopAFJS0UANo4paSgAooooASkp1JQAUlFFABRS0lABSGlpKAEoopaAEopaKAEooooAKKKKAEoopaAEpKdikNACUUtHSgBKQilooAZRTjSUAJRRijtQAlKKKKACiiigAooooAKKKKACiiigApKWkoAKSlooASloooASilptAC0lFFABRRRQAGiiigANJS0UAJRS0UAJRRS0AJRRRQAmKKWkoAKKKKACiiigAooooASilpKACkpaKAEooo+tABSikpaAHo7RsHRirKcgjggjuK9+8C/FLf5Oj+JXw5IWO7JwD6CT0/3vz9a+f6KAPvnKyDae/IqtG7RSbG9eDXzT4D+JNzoTrpetO8+nNhUc5Z4Pp3K+o7dvSvpOKa31K0jurKVZopV3RuhyCPUfyNAFqUBgsvcdRVZl9DzU8EhYeW3UfezUagqzIw4HYUAf//R72OfOAKupJXJRXYbHzce1bENxwCT16UAbyvmpQ1Zkcucc1aV/egDP1/w/pPibTn0vWIBNDJ0I4ZG7MrdiK+RPGvgTVvBl0DKGudPmJEN0Bx/uvj7rfXrX2gGFMura01C0lsL+Jbi2nXbJG/KsPQ0Dufn4cYGKjNetfED4X3PhUS61pDtd6WWLOhH7y3BPHT7ye/UV5MGVl3Kcg96AIzTTTzTTQIZikp9JigCOilNFACUlLiigBtIadSYoAbijFOoNADKKdSYoAbiinYpKAG0lOpKAExTcU+mmgBKMUtJQAUlLSUAJij6UtFADaMUtFACUlLRQA2loooASkp1JQAUlKaMUANopxpKAEpcUUdaAG0U7rSUAJSUuKQ0AFJS0UANoxS0UANop1HFADaSnUGgBtLRRQAU2looASloooAQ0lLRQA0UYpaKAG0U6koASkpaKAEpKWigBKDS0lACUlOptACEUUtBoASiiigBKSlpaAGmkpaKAENJTqbQAtNp1JQAlJTqSgBtFLSUAFFAooASiiigApKWigAoxRRQACiikoAKKKKAE70UUUAJRS0lACUtFFACUUtJQAlFBooADSUtFACUUUUAJRRRQAUlLSGgA6UUUUAHWiiigBKKKKAFpKKOKACig0UAFFJRQAUn1paSgAopKWgApCKWigBtFKabQAtJRRQAUUUUAFFFJQAtFFFABRRRQAlFLSGgAooooAKPeik+tAC0UlLQA2lopKACiiigAooooAKKKKACkpaKAEooxRQAUtJS0AFJRRQAlLRRQAlFFFABRRRQAUUUGgBKKKKAEooooAKWkooAWlpKKRQo4rv/AAT47vvCd0InzcadIf3sGeV9Xj5wG9ex79jXAA0tAj7j0/UrLWrCPVdKlE0Mg6j+RHUMO4NXnbIWUcdiBXxz4U8W6n4UvfPtGL28h/fQE/JIP6MOx/pX1do+uabr2njVNLcy274VlPDIw6qw7Efr1pgf/9JsU/Hy9Dz6fnW1b3JCpuK4PQ9yK4aObCghwx3ck9/atmG4A6EYbpigDuILoHg8fWtFJc9x9K46G54AznGa2ILjAXPegDo1epwwzzzWVHPuAx3q0su7nNAF9gsgYOodHGGVgCCPQg9a+cviN8J5Imk1/wAHW+5MFrizTsepeIfzUfhX0Osn41OrbTkdaAPzvVwwyKQ19UfED4T2utLPrXhlFt9SOXktxxHcHuR2Rz+R78818syxywTSW9xG0UsTFHjcYZWHBBB6EUAMooooAaab3p5pKAG0UpFJQAGm06jFACYpKWigBtFLiigBtIadSUANxSU6koAbRSmkoASkp30ooAbijFLiigBvU0UuKMUANxS4pcUUAMpDT6SgBtFLRigBtFFLigBKKXFJQAlFLRQAlFFFACUlOoxQA2kp9JQA2g8U6koAbRilpDQAneilpKAEopaKACm06jpQA2ilpKAEpaKWgBtJS0UAJRilooAbikp5ptACUhpaKAEooooASil96SgBKKWigBppKd70fWgBnNFOpKAEoNLSUABoo70UANNJTqKAG0UtJQAUlFFACdqSlooASkpaSgAooooABRRRQAUUUfSgBKSlooAKKSigBOKKKWgBKSlooASiiigApKKKACkxRS0AFNpaSgBaSiigBKKWigBKKKDQAUfSikoAWkpaSgBDRRiigAooooASloooASiiigApOtLSUAFFFFABRRRQAU3FLS0AN6UlONNoAKKKKACiiigAooooAKKKKACkpaSgAooooAKKKKACikooASilo96AEooooAKKKKAEpaKKACkpaSgApaKSgAoopaACkpfrSGgBDS0UUAJRS0lABRRRQAUUUUAJRRRmgBKKWkoAKWiigAoopKkoUUtJRQA6us8H+LLzwnqi3kJL28mFuIuzp/LcOoP9K5KkpiP/0+CjnkJXfgkdCPX1Na0U4XIzgDue9clFOoyF+8Tlv8+1asMxVgz9B0Pc59KAOvhnIA2nGOOP/r1qxXO35mOQOOv+FcdBPkBW57kg8D0z71rwXOFGzHPJ+tAHaR3Iznd0xWrDPkdeK4uGckDbjPqe+K2YboHpQB1ccmRnNWlc44rCinbGegrQSYEdeaANEPXnfjv4c6f4zha7t2S01ZF+Scj5ZAOiS45I7Buo+ld0rVMHoA+B9W0fU9Cv5NM1e3a2uYuWQ85B6MpHDKexFZwr7k8V+EtH8Y6f9i1RNsqcw3CY8yJvY91PdTwfavkLxV4Q1jwfffY9UTdFIT5FwnMcoHdT2Pqp5FAHMEUlONJQA2kp1FADcUlOptABikpaKAG0UuPWkoASilooASkxTqT2oAYRSGnmkIoAb1paKKAG0U6kNACUUtBoAbSYp1IaAEpMc06m0AFJS0lABSUtFADaSnUUAN9qKKMUAFFApaAEpKdSUAJRS0lACdKQ06koATFJ1paKAExSU6koASjFLRQAlGKKKAExSUtFACYpKWkoAKSg5ooAKKWkoASjFLSUAJRS0YoAb0oxTvek5oAb1opaKAExSGlooAbRSmigBKSlpKAEopcUlACUUtJQAUcUUdKAG0UtJQAntRRRQAlJS0UAJ2pKdTTQAlFLRQAlFFFABS0lKaAEpKXFFACUUvWkoAKSlpKADFJS0lABSUUUAFJS0lABSUtFACUe9LR1oASiikoAWkooNABSUUUAJRS0UAJRS0hoAWkopKACiijtQAlLRRQAUlLRQAnFJTqbQAUUUUAFFFFACUtJS0AFIRS0lADaKXFJQAUUUUAFFFJQAtFFFABSUtFACUUUUAFFFFABRRRQAUUUUAJSUtFACYooooAKKKKACiiigBKWkpaAEpetJS0AFFFFACUUUlABRRRQAUUUUAFFFFABSYpaTNABRS0UAJRRRQAUUUUrDuFFFFFguLSUUlFguf/U8dhlGSQN2O44xV6KRVITAAI5z29xWJvwQqkgAEHPv296uREfKw5UjBzQB0ELKpJDYK9B2/ya07aYFdmOhz14rmYZQybTwR1JrSjmAUquQD938P6UAdPBPnLbuPrW1b3KsRg8dvwrkbebBLfKAfT29q04J8OCGxjk0AdlDc5ZcEjPWteK4AwCOfWuLt7nsRyoxn0z6Vr29z0+bdt65oA66OYGritmubhnzitaGXpQBpg1S1fSNM1/TZdJ1eET203UHhlI6Mp6hh2IqdWqUNQB8hePPhrqXg8nULVmvdKY/wCux88XtKBwPZhx64rzPOa/QwhJEaKVVkjkBVkYBlYHqCDwRXzV8RPhJLp7Sa54RhaazPzTWa5Z4feMclk9uq9uOiGeFUlIOaXtTAKbTqKBDKKWkOKBiUUdaSgBaSlpDQIKKSlzQA00cUuKSgBBSU6igBtFLR0oASkxRS0AJSEU6koAbikpxpCKAG0UuKMYoAbRS0EUAJRS9qSgBMUhp2KTFACUUtFACUUUGgBKKKKAE6UUtFACUlLSYoADSUpoxQA2ilxSUAFJilpKACiiigBtLiil7UAMPtSU40YoASilxSUAJSU6igBtFLRQAneiiigBMUlOpKAG4opaKAG0UuKKAEpKXHFFACUlLRQA2ilNAoASiikNACUUUYoASkp3NJQAlFLSYoASkp1J9KAEooooASilpKADFFFJQAfSilpKACkpaKAE7UlFFABRRSUAFFFFACUUUUAFFFFACUUUUwEope1JSAKTFLRQA2ilpKACiiimAUYopKQBSU6koASlpKKACiiigAooooASkp1JQAlFLQaAEooooAKSlooAbRS0lABR1oooASilpKACiiigAooooAKKKKAEopaSgBaSlpKACiiigBKWiigBKSnUlABSUtJQAUUUc0AFFFFACUooooAKKKSgBaKSloAKSlpKAEopcUlAC0lFLQAntRRRQAUlLSUAFLRSUAFFFFABRRRQAUUUUAFJS0lAH//V8GSTI3EYOe3cetTq4kYqGwx9On41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U4fmgD4D13w/q/hjUpNJ1qAwzpyMcq69mRuhB/8A11lV97+IvDei+LLA6drcPmKOY5F4kib+8jdj7Hg96+PvG3gPWPBN0q3g8+xnYi3u0Hyuf7rD+F/Y9e1IZw9FFFMQlLSc0UALRSUZoAdS02igB1FJRQAtLSdDRQAtFFJQAUtJRmgBaTFFFABTaWg0AIabSmloAbSfSnZpKAEopfeigBtFKaSgBPalpOlKaAExR7UtIaAE6UhpaTFABmkpcUlACUUtJQAhpD607ikNADaKXtRQA00U6kzxQA2k6UvtSHNABSUv1pKACiiigBKKKKACkopaAG0d6U0lABSUfSj60AFJRRQAUnJpaSgBKKWkoAKSiigAptO7UnegBDwKKOtIaAFpD0paQ0AJSUtFACUnSlNJQAlFFFABSUtJQAmKKWkoASiiigBKKKKAEooooASjmiigApKWk6UALSfSiigANFGaSgAooooAKSlpKACijNIeKACikooAKKKKACkpaKAEooooASiiimAUUUUgCiiigApKKKACkpaSgAopaSgAopKKAA0lLRQAlHel96SgAooooAKKKKACiiigBKKKKACiiloASkpaSgAooooAKKKKACiiigBKSlpKACiiigAo60UlABRRRQAUUUUALRSUUALSYoooASilooAKKKKAEopaSgAooo6UAJRRRQAUUGigAoopaACm0tJQB//R+ZdzcoOMY6fzpVDcEgkiofmYjBwO/tipMuAdp3YP50ATg7iXIxkA4x1p6gHDkAA9xUXmAjcGPHf39KfzwQRnGcDpxQBMGyPl+UHPfv8AWnLtXJbJ7YqFBnnoQelTKy7+Onqe/wBaALAyjEsCuMdPSpzId+CAM/rVPO3Geh5BJ7elT7iWCgAdhQBcV8c5wKljY7s9jVRWIznmpVft37UAXwRn3qyrkAEdaz0Y9+DVhW54oAvRtircch5zWWrHpVlGNAGzHN6VejnrASQir0cnTmgDoops1qRT4rl45cd60I5gDQB1cFx2rYguRxzXHwzdMGtOCc5AoA7WKbIq6r1y9vc8cmtWK4PTNAGyGNQ3tlZarZS6bqcKXNrOMSRuMg+n4jseopI3BGasKRQB8lfEP4X3fhUyatpBa70knJyMy2+ez46p6P8AnjrXkQORkdK/RQ4YFWAZWBBBGQQeoIPUGvnf4g/B4jzdb8GQ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lJRQAUe9NozQAtLTaM0ALSUlFABR2pM0H1oAWm59aM0maACjNNzSUAOzSUlFADqSkooAM0UlFABRRSUAJRRmigApKOetFACUZopMUAHFJS0lABSUUhoAWkoooAKSiigAopKKAFpKKKACikozQAUlBpKAFpppc0hoASiikoAWkoooAKSiigApKWkoASiiigAooooAKKKTNAATSUUUAFJmijrQAUUUUAJRRRQAUUUGgApKKSgBaTpRR9aACiiigAooooAKKKKACiig0AJSUUtABSUUUAFFFFABRRiigAooooASiiigBaKKKAEpKXvSUALSUUUAFFFFABRRiigAoopKAFpKKKACkoooAKKKKACiiigAopKWgAopKWgBDS0lFAC0UUUAHtRRRQAUUUUAJRRS0AJRS0lABRRRQAUUUUAFJS0lACUUUUAFJTqbQB//0/lD2pw9abS0AOApwpuc0o96AJOO9LmmDFL04oAeKdmmCnCgB4NOBqOnigB9Lmm0vagB2aWkpaAFp1MpRQA+im0tADhS036UtADs06mZoFAD80ueaZS0ASD3pc0wHvS8UAPz60uajFPB9aAJAakU+lQg9qcGoAm3c08NVcE0/PSgCyrVMGqmp561MDgUAW1cVOjVnq2e9TqxoAvo3INWUeswOanRjxzQBqpIOlXIpRxWKr1MspB60AbySjNXkm5rAilq6kvQ0Ab8c1aUVxjFcyk/FXo5umDQB1cNxitOK4z1NclHNjFaMU54yaAOtinX1p17a2OrWMum6lCtzaTjDxvyD7j0I7EcisKK47VoRzkEYNAHzF8Qfhhe+Ef+JppjNe6O5xvx+8gJ7S4/h9H/ADryjNfoKsyvG0bgMjgqysMhgeoIPBFfO/j/AOEywiXW/B8RMY+aWwXLMo7tD3IHXZ1Hb0oA8EzRTM9vwp1AxaKSloEKDRTaWgB1FNzS5oAWgUmaSgB9JSUlADqKbmjNAC5opM0lADjSUlGaACgmm5ooAKSiigA4pKXNJQAtJRmkzQAuaTNH0pKAClpM0UAJRRSZoAKKSlzQAUn0ozSUALmm5paSgAzSZo+tJQAtJmikoAKKKQ0ALSUCigApKKKAFpKKSgA+lFFJQAGk+tFFACUUGkoAKKKSgAooooAKKKT60AGaKKKAEpKWkoAKKKKACkoooAQ0ZopKAD2paSigBc0neiigAooo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"});function Kr(e){let t=e.split(".");if(t.length!==3)throw new Error(Sr);let o;try{o=JSON.parse(Buffer.from(t[1],"base64url").toString())}catch{throw new Error(Sr)}if(typeof o!="object"||o===null||typeof o.exp!="number")throw new Error(Sr);return o.exp}function Qs(e){let t=new Error("Received an unexpected response from Resend while authenticating. Please run `resend login` again.");if(typeof e!="object"||e===null)throw t;let o=e;if(typeof o.access_token!="string"||o.access_token.length===0||typeof o.refresh_token!="string"||o.refresh_token.length===0||typeof o.scope!="string")throw t;return o}async function Ns(e,t,o){try{return await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:t,signal:AbortSignal.timeout(Cf)})}catch(i){let r=i instanceof Error&&i.name==="TimeoutError"?`${o} timed out after 30s. Check your connection and try again.`:"Could not reach the Resend API. Check your connection and try again.",n=new Error(r);throw n.name=xr,n}}async function Ms(e,t){let o=Math.floor(Date.now()/1e3);if(e.access_token_expires_at>o+wf)return{access_token:e.access_token,scope:e.scope};let i=process.env.RESEND_BASE_URL??"https://api.resend.com",r=await Ns(`${i}/oauth/token`,new URLSearchParams({grant_type:"refresh_token",client_id:zo,refresh_token:e.refresh_token}),"Token refresh");if(!r.ok)throw new Error(`Token refresh failed (${r.status}). Please run \`resend login\` again.`);let n=Qs(await r.json());return await Xo({access_token:n.access_token,access_token_expires_at:Kr(n.access_token),refresh_token:n.refresh_token,scope:n.scope},t),{access_token:n.access_token,scope:n.scope}}function vr(e){return e.toString("base64url")}function Gs(e){let{heading:t,message:o}=e;return`<!doctype html>
62
62
  <html lang="en">
63
63
  <head>
64
64
  <meta charset="utf-8" />
@@ -86,7 +86,7 @@ To fix: either repair the JSON manually, or delete the file and run: resend logi
86
86
  z-index: 0;
87
87
  pointer-events: none;
88
88
  user-select: none;
89
- background-image: url("${Ls}");
89
+ background-image: url("${Ps}");
90
90
  background-size: cover;
91
91
  background-position: center;
92
92
  opacity: 0.2;
@@ -123,12 +123,12 @@ To fix: either repair the JSON manually, or delete the file and run: resend logi
123
123
  <body>
124
124
  <div class="bg"></div>
125
125
  <main>
126
- ${uh}
126
+ ${Uf}
127
127
  <h1>${t}</h1>
128
128
  <p>${o}</p>
129
129
  </main>
130
130
  </body>
131
- </html>`}function Zs(){let e=kr((0,go.randomBytes)(64)),t=kr((0,go.createHash)("sha256").update(e).digest()),o=kr((0,go.randomBytes)(24));return{codeVerifier:e,codeChallenge:t,state:o}}function ea(){return new Promise((e,t)=>{let o,i,r=new Promise((a,l)=>{o=a,i=l}),n=(0,Vs.createServer)((a,l)=>{let u=new URL(a.url??"/","http://127.0.0.1");if(u.pathname!=="/oauth/callback"){l.writeHead(404,{Connection:"close"}),l.end();return}let m=u.searchParams.get("code"),p=u.searchParams.get("state"),f=u.searchParams.get("error"),y=f?`Authorization denied: ${f}`:!m||!p?"Missing code or state in OAuth callback":null,A=Js(y?{heading:"Authentication failed",message:`${y}. Return to your terminal and try again.`}:{heading:"Authentication complete",message:"You can close this tab and return to your terminal."});l.writeHead(200,{"Content-Type":"text/html; charset=utf-8",Connection:"close"}),l.end(A,()=>{a.socket.destroy()}),n.close(),clearTimeout(s),y?i(new Error(y)):m&&p&&o({code:m,state:p})}),s=setTimeout(()=>{n.close(),i(new Error("OAuth login timed out after 5 minutes. Please try again."))},300*1e3);n.listen(0,"127.0.0.1",()=>{let{port:a}=n.address();e({port:a,waitForCallback:r})}),n.on("error",t)})}async function ta(e){let t=await Ys(`${e.baseUrl}/oauth/token`,new URLSearchParams({grant_type:"authorization_code",client_id:e.clientId,code:e.code,redirect_uri:e.redirectUri,code_verifier:e.codeVerifier}),"Token exchange");if(!t.ok){let o="";try{let i=await t.json();o=i.error_description??i.error??""}catch{}throw new Error(`Token exchange failed (${t.status})${o?`: ${o}`:""}`)}return zs(await t.json())}var go,Vs,Xo,Kr,ch,dh,Fr,uh,Zo=Ae(()=>{"use strict";go=require("node:crypto"),Vs=require("node:http");be();Ws();Xo="7136aa0b-625c-4c9c-8820-e9784c8eb141",Kr="Received an invalid access token from Resend. Please run `resend login` to authenticate again.";ch=3e4,dh=60,Fr="OAuthNetworkError";uh=`<svg class="logo" role="img" aria-label="Resend" fill="none" viewBox="0 0 78 78" xmlns="http://www.w3.org/2000/svg">
131
+ </html>`}function qs(){let e=vr((0,go.randomBytes)(64)),t=vr((0,go.createHash)("sha256").update(e).digest()),o=vr((0,go.randomBytes)(24));return{codeVerifier:e,codeChallenge:t,state:o}}function Ls(){return new Promise((e,t)=>{let o,i,r=new Promise((a,l)=>{o=a,i=l}),n=(0,Hs.createServer)((a,l)=>{let c=new URL(a.url??"/","http://127.0.0.1");if(c.pathname!=="/oauth/callback"){l.writeHead(404,{Connection:"close"}),l.end();return}let u=c.searchParams.get("code"),p=c.searchParams.get("state"),f=c.searchParams.get("error"),b=f?`Authorization denied: ${f}`:!u||!p?"Missing code or state in OAuth callback":null,h=Gs(b?{heading:"Authentication failed",message:`${b}. Return to your terminal and try again.`}:{heading:"Authentication complete",message:"You can close this tab and return to your terminal."});l.writeHead(200,{"Content-Type":"text/html; charset=utf-8",Connection:"close"}),l.end(h,()=>{a.socket.destroy()}),n.close(),clearTimeout(s),b?i(new Error(b)):u&&p&&o({code:u,state:p})}),s=setTimeout(()=>{n.close(),i(new Error("OAuth login timed out after 5 minutes. Please try again."))},300*1e3);n.listen(0,"127.0.0.1",()=>{let{port:a}=n.address();e({port:a,waitForCallback:r})}),n.on("error",t)})}async function Ws(e){let t=await Ns(`${e.baseUrl}/oauth/token`,new URLSearchParams({grant_type:"authorization_code",client_id:e.clientId,code:e.code,redirect_uri:e.redirectUri,code_verifier:e.codeVerifier}),"Token exchange");if(!t.ok){let o="";try{let i=await t.json();o=i.error_description??i.error??""}catch{}throw new Error(`Token exchange failed (${t.status})${o?`: ${o}`:""}`)}return Qs(await t.json())}var go,Hs,zo,Sr,Cf,wf,xr,Uf,Yo=he(()=>{"use strict";go=require("node:crypto"),Hs=require("node:http");Ae();$s();zo="7136aa0b-625c-4c9c-8820-e9784c8eb141",Sr="Received an invalid access token from Resend. Please run `resend login` to authenticate again.";Cf=3e4,wf=60,xr="OAuthNetworkError";Uf=`<svg class="logo" role="img" aria-label="Resend" fill="none" viewBox="0 0 78 78" xmlns="http://www.w3.org/2000/svg">
132
132
  <rect x="1" y="1" width="76" height="76" rx="21" stroke="#FDFDFD" stroke-opacity="0.1" stroke-width="2" />
133
133
  <path d="M43.0184 21C49.9908 21 54.1374 25.1467 54.1374 30.6513C54.1374 36.1558 49.9908 40.3025 43.0184 40.3025H39.4953L57 57H44.6329L31.3118 44.3394C30.3578 43.4587 29.9174 42.4312 29.9174 41.5506C29.9174 40.3029 30.7984 39.202 32.4864 38.7249L39.3485 36.8897C41.954 36.1925 43.7522 34.1741 43.7522 31.5319C43.7522 28.3027 41.1098 26.4312 37.8438 26.4312H21V21H43.0184Z" fill="url(#resend_cli_logo_a)" />
134
134
  <path d="M54.1375 30.6513C54.1374 25.1467 49.9908 21 43.0184 21V20.55C46.5934 20.55 49.4879 21.6142 51.4941 23.4275C53.4405 25.1867 54.5189 27.6229 54.5844 30.3832L54.5875 30.6513C54.5875 33.5218 53.5032 36.0591 51.4941 37.875C49.5505 39.6317 46.7734 40.6853 43.3515 40.7495L43.0184 40.7525H40.619L58.1237 57.45H44.4532L44.3231 57.3261L31.0064 44.6694C29.978 43.7199 29.4675 42.579 29.4674 41.5506C29.4674 40.0491 30.5379 38.8082 32.3643 38.292L32.37 38.2903L39.2321 36.4551C41.6742 35.8016 43.3023 33.9377 43.3023 31.5319C43.3023 30.0523 42.7022 28.9051 41.7383 28.1191C40.7652 27.3258 39.3949 26.8812 37.8438 26.8812H20.55V20.55H43.0184V21H21V26.4312H37.8438C41.1098 26.4312 43.7522 28.3027 43.7523 31.5319C43.7523 34.1741 41.954 36.1925 39.3485 36.8897L32.4865 38.7249C30.7984 39.202 29.9174 40.3029 29.9174 41.5506C29.9175 42.4312 30.3578 43.4587 31.3118 44.3393L44.633 57H57.0001L39.4953 40.3025H43.0184C49.9909 40.3025 54.1375 36.1558 54.1375 30.6513Z" fill="url(#resend_cli_logo_b)" />
@@ -142,120 +142,120 @@ To fix: either repair the JSON manually, or delete the file and run: resend logi
142
142
  <stop offset="1" stop-color="#ADADAD" />
143
143
  </linearGradient>
144
144
  </defs>
145
- </svg>`});var oa,ke,ia,ra,mh,na=Ae(()=>{"use strict";oa=require("node:crypto"),ke=require("node:fs"),ia=require("node:path"),ra=(e,t,o)=>{let i=`${e}.tmp.${process.pid}.${(0,oa.randomUUID)()}`;try{let r=(0,ke.openSync)(i,"w",o);try{(0,ke.writeSync)(r,t),(0,ke.fsyncSync)(r)}finally{(0,ke.closeSync)(r)}(0,ke.renameSync)(i,e),mh((0,ia.dirname)(e))}catch(r){try{(0,ke.unlinkSync)(i)}catch{}throw r}},mh=e=>{if(process.platform!=="win32")try{let t=(0,ke.openSync)(e,"r");try{(0,ke.fsyncSync)(t)}finally{(0,ke.closeSync)(t)}}catch{}}});function He(){return process.env.XDG_CONFIG_HOME?(0,Ht.join)(process.env.XDG_CONFIG_HOME,"resend"):process.platform==="win32"&&process.env.APPDATA?(0,Ht.join)(process.env.APPDATA,"resend"):(0,Ht.join)((0,la.homedir)(),".config","resend")}function Ft(){return(0,Ht.join)(He(),"credentials.json")}function sa(e){return e.type==="oauth_grant"?Dr(e)?{type:"oauth_grant",...e}:{type:"oauth_grant",scope:typeof e.scope=="string"?e.scope:""}:{type:"api_key",...e.api_key!==void 0?{api_key:e.api_key}:{},...e.permission?{permission:e.permission}:{}}}function Rr(){try{return Se()}catch{return null}}function Se(){let e=Ft();if(!(0,Pe.existsSync)(e))return null;let t=(0,Pe.readFileSync)(e,"utf-8");if(t.trim().length===0)return null;let o;try{o=JSON.parse(t)}catch{throw new Wo(e)}if(typeof o=="object"&&o!==null&&"api_key"in o&&!("profiles"in o)&&!("teams"in o))return{active_profile:"default",profiles:{default:{type:"api_key",api_key:o.api_key}}};if("profiles"in o){let i=o.storage==="keychain"?"secure_storage":o.storage,r=o.profiles;return{active_profile:o.active_profile??"default",...i?{storage:i}:{},profiles:Object.fromEntries(Object.entries(r).map(([n,s])=>[n,sa(s)]))}}if("teams"in o){let i=o.teams;return{active_profile:o.active_team??"default",profiles:Object.fromEntries(Object.entries(i).map(([r,n])=>[r,sa(n)]))}}return null}function gt(e){let t=He();(0,Pe.mkdirSync)(t,{recursive:!0,mode:448});let o=Ft();return ra(o,`${JSON.stringify(e,null,2)}
146
- `,384),(0,Pe.chmodSync)(o,384),o}function ti(e){if(e)return e;let t=process.env.RESEND_PROFILE;if(t)return t;let o=Se();return o?.active_profile?o.active_profile:"default"}function yr(e,t,o){let i=t||"default",r=ue(i);if(r)throw new Error(r);return nt(ht(),()=>{let n=Se()||{active_profile:"default",profiles:{}},s={...n.profiles,[i]:{type:"api_key",api_key:e,...o&&{permission:o}}},a={...n,profiles:s,...Object.keys(s).length===1?{active_profile:i}:{}};return gt(a)})}function Os(e){return nt(ht(),()=>{let t=Se();if(!t)throw new Error("No credentials file found.");let o=e||ti();if(!t.profiles[o])throw new Error(`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`);let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=Ft();return(0,Pe.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return gt({...t,active_profile:n,profiles:r})})}function Ao(e){let t=ue(e);if(t)throw new Error(t);nt(ht(),()=>{let o=Se();if(!o)throw new Error("No credentials file found. Run: resend login");if(!o.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(o.profiles).join(", ")}`);gt({...o,active_profile:e})})}function _e(){let e=Se();return e?Object.keys(e.profiles).map(t=>({name:t,active:t===e.active_profile})):[]}function ue(e){if(!e||e.length===0)return"Profile name must not be empty";if(e.length>64)return"Profile name must be 64 characters or fewer";if(!/^[a-zA-Z0-9._-]+$/.test(e))return"Profile name must contain only letters, numbers, dots, dashes, and underscores"}function At(e){return e.length<=7?`${e.slice(0,3)}...`:`${e.slice(0,3)}...${e.slice(-4)}`}function Dr(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.access_token=="string"&&typeof t.access_token_expires_at=="number"&&typeof t.refresh_token=="string"&&typeof t.scope=="string"}function ph(e){return Dr(e)?e:null}function fh(e){let t;try{t=JSON.parse(e)}catch{t=null}if(!Dr(t))throw new Error("Stored OAuth credentials are invalid. Please run `resend login` to authenticate again.");return t}async function Rt(e,t,o){if(e)return{type:"api_key",key:e,source:"flag"};let i=process.env.RESEND_API_KEY;if(i)return{type:"api_key",key:i,source:"env"};let r=Se(),n=t||process.env.RESEND_PROFILE||r?.active_profile||"default";if(r?.storage==="secure_storage"&&r.profiles[n]){let s=r.profiles[n],l=await(await rt()).get(ze,n);if(l){if(s.type==="oauth_grant"){let u=fh(l);return aa(u,n,"secure_storage",o)}return{type:"api_key",key:l,source:"secure_storage",profile:n,permission:s.permission}}}if(r){let s=r.profiles[n];if(s?.type==="api_key"&&s.api_key)return{type:"api_key",key:s.api_key,source:"config",profile:n,permission:s.permission};if(s?.type==="oauth_grant"){let a=ph(s);if(a)return aa(a,n,"config",o)}}return null}async function aa(e,t,o,i){if(i?.refresh===!1)return{type:"oauth_grant",access_token:e.access_token,profile:t,scope:e.scope,source:o};let{access_token:r,scope:n}=await Xs(e,t);return{type:"oauth_grant",access_token:r,profile:t,scope:n,source:o}}async function ca(e,t,o){let i=t||"default",r=ue(i);if(r)throw new Error(r);let n=await rt();return n.isSecure?{configPath:await nt(ht(),async()=>{await n.set(ze,i,e);let a=Se()||{active_profile:"default",profiles:{}},l={...a.profiles,[i]:{type:"api_key",...o&&{permission:o}}};return gt({...a,storage:"secure_storage",profiles:l,...Object.keys(l).length===1?{active_profile:i}:{}})}),backend:n}:{configPath:yr(e,i,o),backend:n}}async function ei(e,t){let o=t||"default",i=ue(o);if(i)throw new Error(i);let r=await rt();return{configPath:await nt(ht(),async()=>{let s=Se()||{active_profile:"default",profiles:{}},a=r.isSecure?{type:"oauth_grant",scope:e.scope}:{type:"oauth_grant",...e};r.isSecure&&await r.set(ze,o,JSON.stringify(e));let l={...s.profiles,[o]:a};try{return gt({...s,storage:r.isSecure?"secure_storage":"file",profiles:l,...Object.keys(l).length===1?{active_profile:o}:{}})}catch(u){throw r.isSecure&&await r.delete(ze,o).catch(()=>{}),u}}),backend:r}}async function oi(e){return nt(ht(),async()=>{let t=Se(),o=e||process.env.RESEND_PROFILE||t?.active_profile||"default";if(!t?.profiles[o])throw new Error(t?`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`:"No credentials file found.");if(t.storage==="secure_storage"){let s=await rt();if(s.isSecure&&!await s.delete(ze,o))throw new Error(`Failed to remove API key for profile "${o}" from ${s.name}. Credential may still exist in secure storage.`)}let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=Ft();return(0,Pe.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return gt({...t,active_profile:n,profiles:r})})}async function da(){return nt(ht(),async()=>{let e=Rr(),t=Ft();if(e?.storage==="secure_storage"){let o=await rt();if(o.isSecure){let i=Object.keys(e.profiles),r=await Promise.all(i.map(s=>o.delete(ze,s))),n=i.filter((s,a)=>!r[a]);if(n.length>0){let s=Object.fromEntries(Object.entries(e.profiles).filter(([l])=>!r[i.indexOf(l)])),a=Object.keys(s);throw gt({...e,active_profile:e.active_profile&&s[e.active_profile]?e.active_profile:a[0]??"default",profiles:s}),new Error(`Failed to remove API keys from ${o.name} for profiles: ${n.join(", ")}. Credentials may still exist in secure storage.`)}}}return(0,Pe.existsSync)(t)&&(0,Pe.unlinkSync)(t),t})}async function ii(e,t){if(e===t)return;let o=ue(t);if(o)throw new Error(o);await nt(ht(),async()=>{let i=Se();if(!i)throw new Error("No credentials file found. Run: resend login");if(!i.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(i.profiles).join(", ")}`);if(i.profiles[t])throw new Error(`Profile "${t}" already exists.`);if(i.storage==="secure_storage"){let s=await rt();if(s.isSecure){let a=await s.get(ze,e);if(a&&(await s.set(ze,t,a),!await s.delete(ze,e))){let u=await s.delete(ze,t);throw new Error(u?`Failed to remove old credential "${e}" from ${s.name} during rename. The rename has been rolled back.`:`Failed to remove old credential "${e}" from ${s.name} during rename. Rollback also failed \u2014 credential "${t}" may still exist in secure storage.`)}}}let{[e]:r,...n}=i.profiles;gt({...i,active_profile:i.active_profile===e?t:i.active_profile,profiles:{...n,[t]:r}})})}var Pe,la,Ht,Qt,ht,be=Ae(()=>{"use strict";Pe=require("node:fs"),la=require("node:os"),Ht=require("node:path");Ts();Ur();qs();Zo();na();Qt=`Sending-only keys work with: emails send, emails batch, broadcasts send.
147
- Create a full access key at https://resend.com/api-keys`;ht=()=>(0,Ht.join)(He(),"credentials.json.lock")});function w(){return!(!process.stdin.isTTY||!process.stdout.isTTY||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||process.env.TERM==="dumb")}var st,X=Ae(()=>{"use strict";st=process.platform!=="win32"||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"});function vc(){return(0,wc.join)(He(),"update-state.json")}function Xh(){try{return JSON.parse((0,Xt.readFileSync)(vc(),"utf-8"))}catch{return null}}function Zh(e){(0,Xt.mkdirSync)(He(),{recursive:!0,mode:448}),(0,Xt.writeFileSync)(vc(),JSON.stringify(e),{mode:384})}function wi(e,t){let o=u=>u.replace(/^v/,"").split(".").map(Number),[i,r,n]=o(e),[s,a,l]=o(t);return s!==i?s>i:a!==r?a>r:l>n}async function Hr(){try{let e=await fetch(Gr,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return null;let t=await e.json();if(t.prerelease||t.draft)return null;let o=t.tag_name?.replace(/^v/,"");return!o||!/^\d+\.\d+\.\d+$/.test(o)?null:o}catch{return null}}function eg(e){return!!(e?.json||process.env.RESEND_NO_UPDATE_NOTIFIER==="1"||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||!process.stdout.isTTY)}function Uc(){let e=vi();return e.startsWith("npm")?"npm":e.startsWith("brew")?"homebrew":e.startsWith("curl")||e.startsWith("irm")?"install-script":"manual"}function vi(){let e=process.execPath||process.argv[0]||"",t=process.argv[1]||"";return process.env.npm_execpath||/node_modules/.test(t)||/node_modules/.test(e)?"npm install -g resend-cli":/\/(Cellar|homebrew)\//i.test(e)?"brew update && brew upgrade resend":/[/\\]\.resend[/\\]bin[/\\]/.test(e)?process.platform==="win32"?"irm https://resend.com/install.ps1 | iex":"curl -fsSL https://resend.com/install.sh | bash":"https://github.com/resend/resend-cli/releases/latest"}function xc(e){let t=vi(),o=t.startsWith("http"),i="\x1B[2m",r="\x1B[33m",n="\x1B[36m",s="\x1B[0m",a=["",`${i}Update available: ${r}v${se}${s}${i} \u2192 ${n}v${e}${s}`,`${i}${o?"Visit":"Run"}: ${n}${t}${s}`];return process.platform==="win32"&&a.push(`${i}Or download from: ${n}https://github.com/resend/resend-cli/releases/latest${s}`),a.push(""),a.join(`
148
- `)}async function Sc(e){if(eg(e))return;let t=Xh(),o=Date.now();if(t&&o-t.lastChecked<Yh){wi(se,t.latestVersion)&&process.stderr.write(xc(t.latestVersion));return}let i=await Hr();i&&(Zh({lastChecked:o,latestVersion:i}),wi(se,i)&&process.stderr.write(xc(i)))}var Xt,wc,Yh,Gr,Uo=Ae(()=>{"use strict";Xt=require("node:fs"),wc=require("node:path");be();Kt();Yh=3600*1e3,Gr="https://api.github.com/repos/resend/resend-cli/releases/latest"});var vm={};io(vm,{flushFromFile:()=>Mg,flushPayload:()=>wm,getOrCreateAnonymousId:()=>xm,getSpoolDir:()=>zr,isDisabled:()=>Cm,trackCommand:()=>Yr});function $g(){return Pg[process.platform]??process.platform}function zr(){let e=(0,Xe.join)(He(),"telemetry-spool");return(0,V.mkdirSync)(e,{recursive:!0,mode:448}),e}function Cm(){return!ym||process.env.DO_NOT_TRACK==="1"||process.env.RESEND_TELEMETRY_DISABLED==="1"}function xm(){let e=He(),t=(0,Xe.join)(e,"telemetry-id");try{let i=(0,V.readFileSync)(t,"utf-8").trim();if(i)return i}catch{}let o=crypto.randomUUID();return(0,V.mkdirSync)(e,{recursive:!0,mode:448}),(0,V.writeFileSync)(t,o,{mode:384}),o}function Gg(e){if(!e)return;let t=He(),o=(0,Xe.join)(t,"telemetry-notice-shown");(0,V.existsSync)(o)||((0,V.mkdirSync)(t,{recursive:!0,mode:448}),(0,V.writeFileSync)(o,"",{mode:384}),process.stderr.write(`
145
+ </svg>`});var Js,xe,Vs,zs,Sf,Ys=he(()=>{"use strict";Js=require("node:crypto"),xe=require("node:fs"),Vs=require("node:path"),zs=(e,t,o)=>{let i=`${e}.tmp.${process.pid}.${(0,Js.randomUUID)()}`;try{let r=(0,xe.openSync)(i,"w",o);try{(0,xe.writeSync)(r,t),(0,xe.fsyncSync)(r)}finally{(0,xe.closeSync)(r)}(0,xe.renameSync)(i,e),Sf((0,Vs.dirname)(e))}catch(r){try{(0,xe.unlinkSync)(i)}catch{}throw r}},Sf=e=>{if(process.platform!=="win32")try{let t=(0,xe.openSync)(e,"r");try{(0,xe.fsyncSync)(t)}finally{(0,xe.closeSync)(t)}}catch{}}});function He(){return process.env.XDG_CONFIG_HOME?(0,Gt.join)(process.env.XDG_CONFIG_HOME,"resend"):process.platform==="win32"&&process.env.APPDATA?(0,Gt.join)(process.env.APPDATA,"resend"):(0,Gt.join)((0,ea.homedir)(),".config","resend")}function Ft(){return(0,Gt.join)(He(),"credentials.json")}function Xs(e){return e.type==="oauth_grant"?Fr(e)?{type:"oauth_grant",...e}:{type:"oauth_grant",scope:typeof e.scope=="string"?e.scope:""}:{type:"api_key",...e.api_key!==void 0?{api_key:e.api_key}:{},...e.permission?{permission:e.permission}:{}}}function kr(){try{return ve()}catch{return null}}function ve(){let e=Ft();if(!(0,Pe.existsSync)(e))return null;let t=(0,Pe.readFileSync)(e,"utf-8");if(t.trim().length===0)return null;let o;try{o=JSON.parse(t)}catch{throw new qo(e)}if(typeof o=="object"&&o!==null&&"api_key"in o&&!("profiles"in o)&&!("teams"in o))return{active_profile:"default",profiles:{default:{type:"api_key",api_key:o.api_key}}};if("profiles"in o){let i=o.storage==="keychain"?"secure_storage":o.storage,r=o.profiles;return{active_profile:o.active_profile??"default",...i?{storage:i}:{},profiles:Object.fromEntries(Object.entries(r).map(([n,s])=>[n,Xs(s)]))}}if("teams"in o){let i=o.teams;return{active_profile:o.active_team??"default",profiles:Object.fromEntries(Object.entries(i).map(([r,n])=>[r,Xs(n)]))}}return null}function gt(e){let t=He();(0,Pe.mkdirSync)(t,{recursive:!0,mode:448});let o=Ft();return zs(o,`${JSON.stringify(e,null,2)}
146
+ `,384),(0,Pe.chmodSync)(o,384),o}function Zo(e){if(e)return e;let t=process.env.RESEND_PROFILE;if(t)return t;let o=ve();return o?.active_profile?o.active_profile:"default"}function hr(e,t,o){let i=t||"default",r=de(i);if(r)throw new Error(r);return rt(ft(),()=>{let n=ve()||{active_profile:"default",profiles:{}},s={...n.profiles,[i]:{type:"api_key",api_key:e,...o&&{permission:o}}},a={...n,profiles:s,...Object.keys(s).length===1?{active_profile:i}:{}};return gt(a)})}function Ks(e){return rt(ft(),()=>{let t=ve();if(!t)throw new Error("No credentials file found.");let o=e||Zo();if(!t.profiles[o])throw new Error(`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`);let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=Ft();return(0,Pe.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return gt({...t,active_profile:n,profiles:r})})}function ho(e){let t=de(e);if(t)throw new Error(t);rt(ft(),()=>{let o=ve();if(!o)throw new Error("No credentials file found. Run: resend login");if(!o.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(o.profiles).join(", ")}`);gt({...o,active_profile:e})})}function ke(){let e=ve();return e?Object.keys(e.profiles).map(t=>({name:t,active:t===e.active_profile})):[]}function de(e){if(!e||e.length===0)return"Profile name must not be empty";if(e.length>64)return"Profile name must be 64 characters or fewer";if(!/^[a-zA-Z0-9._-]+$/.test(e))return"Profile name must contain only letters, numbers, dots, dashes, and underscores"}function ht(e){return e.length<=7?`${e.slice(0,3)}...`:`${e.slice(0,3)}...${e.slice(-4)}`}function Fr(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.access_token=="string"&&typeof t.access_token_expires_at=="number"&&typeof t.refresh_token=="string"&&typeof t.scope=="string"}function vf(e){return Fr(e)?e:null}function Kf(e){let t;try{t=JSON.parse(e)}catch{t=null}if(!Fr(t))throw new Error("Stored OAuth credentials are invalid. Please run `resend login` to authenticate again.");return t}async function Rt(e,t,o){if(e)return{type:"api_key",key:e,source:"flag"};let i=process.env.RESEND_API_KEY;if(i)return{type:"api_key",key:i,source:"env"};let r=ve(),n=t||process.env.RESEND_PROFILE||r?.active_profile||"default";if(r?.storage==="secure_storage"&&r.profiles[n]){let s=r.profiles[n],l=await(await it()).get(Je,n);if(l){if(s.type==="oauth_grant"){let c=Kf(l);return Zs(c,n,"secure_storage",o)}return{type:"api_key",key:l,source:"secure_storage",profile:n,permission:s.permission}}}if(r){let s=r.profiles[n];if(s?.type==="api_key"&&s.api_key)return{type:"api_key",key:s.api_key,source:"config",profile:n,permission:s.permission};if(s?.type==="oauth_grant"){let a=vf(s);if(a)return Zs(a,n,"config",o)}}return null}async function Zs(e,t,o,i){if(i?.refresh===!1)return{type:"oauth_grant",access_token:e.access_token,profile:t,scope:e.scope,source:o};let{access_token:r,scope:n}=await Ms(e,t);return{type:"oauth_grant",access_token:r,profile:t,scope:n,source:o}}async function ta(e,t,o){let i=t||"default",r=de(i);if(r)throw new Error(r);let n=await it();return n.isSecure?{configPath:await rt(ft(),async()=>{await n.set(Je,i,e);let a=ve()||{active_profile:"default",profiles:{}},l={...a.profiles,[i]:{type:"api_key",...o&&{permission:o}}};return gt({...a,storage:"secure_storage",profiles:l,...Object.keys(l).length===1?{active_profile:i}:{}})}),backend:n}:{configPath:hr(e,i,o),backend:n}}async function Xo(e,t){let o=t||"default",i=de(o);if(i)throw new Error(i);let r=await it();return{configPath:await rt(ft(),async()=>{let s=ve()||{active_profile:"default",profiles:{}},a=r.isSecure?{type:"oauth_grant",scope:e.scope}:{type:"oauth_grant",...e};r.isSecure&&await r.set(Je,o,JSON.stringify(e));let l={...s.profiles,[o]:a};try{return gt({...s,storage:r.isSecure?"secure_storage":"file",profiles:l,...Object.keys(l).length===1?{active_profile:o}:{}})}catch(c){throw r.isSecure&&await r.delete(Je,o).catch(()=>{}),c}}),backend:r}}async function ei(e){return rt(ft(),async()=>{let t=ve(),o=e||process.env.RESEND_PROFILE||t?.active_profile||"default";if(!t?.profiles[o])throw new Error(t?`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`:"No credentials file found.");if(t.storage==="secure_storage"){let s=await it();if(s.isSecure&&!await s.delete(Je,o))throw new Error(`Failed to remove API key for profile "${o}" from ${s.name}. Credential may still exist in secure storage.`)}let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=Ft();return(0,Pe.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return gt({...t,active_profile:n,profiles:r})})}async function oa(){return rt(ft(),async()=>{let e=kr(),t=Ft();if(e?.storage==="secure_storage"){let o=await it();if(o.isSecure){let i=Object.keys(e.profiles),r=await Promise.all(i.map(s=>o.delete(Je,s))),n=i.filter((s,a)=>!r[a]);if(n.length>0){let s=Object.fromEntries(Object.entries(e.profiles).filter(([l])=>!r[i.indexOf(l)])),a=Object.keys(s);throw gt({...e,active_profile:e.active_profile&&s[e.active_profile]?e.active_profile:a[0]??"default",profiles:s}),new Error(`Failed to remove API keys from ${o.name} for profiles: ${n.join(", ")}. Credentials may still exist in secure storage.`)}}}return(0,Pe.existsSync)(t)&&(0,Pe.unlinkSync)(t),t})}async function ti(e,t){if(e===t)return;let o=de(t);if(o)throw new Error(o);await rt(ft(),async()=>{let i=ve();if(!i)throw new Error("No credentials file found. Run: resend login");if(!i.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(i.profiles).join(", ")}`);if(i.profiles[t])throw new Error(`Profile "${t}" already exists.`);if(i.storage==="secure_storage"){let s=await it();if(s.isSecure){let a=await s.get(Je,e);if(a&&(await s.set(Je,t,a),!await s.delete(Je,e))){let c=await s.delete(Je,t);throw new Error(c?`Failed to remove old credential "${e}" from ${s.name} during rename. The rename has been rolled back.`:`Failed to remove old credential "${e}" from ${s.name} during rename. Rollback also failed \u2014 credential "${t}" may still exist in secure storage.`)}}}let{[e]:r,...n}=i.profiles;gt({...i,active_profile:i.active_profile===e?t:i.active_profile,profiles:{...n,[t]:r}})})}var Pe,ea,Gt,Ht,ft,Ae=he(()=>{"use strict";Pe=require("node:fs"),ea=require("node:os"),Gt=require("node:path");vs();wr();js();Yo();Ys();Ht=`Sending-only keys work with: emails send, emails batch, broadcasts send.
147
+ Create a full access key at https://resend.com/api-keys`;ft=()=>(0,Gt.join)(He(),"credentials.json.lock")});function U(){return!(!process.stdin.isTTY||!process.stdout.isTTY||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||process.env.TERM==="dumb")}var nt,V=he(()=>{"use strict";nt=process.platform!=="win32"||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"});function gc(){return(0,fc.join)(He(),"update-state.json")}function cg(){try{return JSON.parse((0,Yt.readFileSync)(gc(),"utf-8"))}catch{return null}}function dg(e){(0,Yt.mkdirSync)(He(),{recursive:!0,mode:448}),(0,Yt.writeFileSync)(gc(),JSON.stringify(e),{mode:384})}function Ci(e,t){let o=c=>c.replace(/^v/,"").split(".").map(Number),[i,r,n]=o(e),[s,a,l]=o(t);return s!==i?s>i:a!==r?a>r:l>n}async function Pr(){try{let e=await fetch(jr,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return null;let t=await e.json();if(t.prerelease||t.draft)return null;let o=t.tag_name?.replace(/^v/,"");return!o||!/^\d+\.\d+\.\d+$/.test(o)?null:o}catch{return null}}function ug(e){return!!(e?.json||process.env.RESEND_NO_UPDATE_NOTIFIER==="1"||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||!process.stdout.isTTY)}function hc(){let e=wi();return e.startsWith("npm")?"npm":e.startsWith("brew")?"homebrew":e.startsWith("curl")||e.startsWith("irm")?"install-script":"manual"}function wi(){let e=process.execPath||process.argv[0]||"",t=process.argv[1]||"";return process.env.npm_execpath||/node_modules/.test(t)||/node_modules/.test(e)?"npm install -g resend-cli":/\/(Cellar|homebrew)\//i.test(e)?"brew update && brew upgrade resend":/[/\\]\.resend[/\\]bin[/\\]/.test(e)?process.platform==="win32"?"irm https://resend.com/install.ps1 | iex":"curl -fsSL https://resend.com/install.sh | bash":"https://github.com/resend/resend-cli/releases/latest"}function pc(e){let t=wi(),o=t.startsWith("http"),i="\x1B[2m",r="\x1B[33m",n="\x1B[36m",s="\x1B[0m",a=["",`${i}Update available: ${r}v${ne}${s}${i} \u2192 ${n}v${e}${s}`,`${i}${o?"Visit":"Run"}: ${n}${t}${s}`];return process.platform==="win32"&&a.push(`${i}Or download from: ${n}https://github.com/resend/resend-cli/releases/latest${s}`),a.push(""),a.join(`
148
+ `)}async function Ac(e){if(ug(e))return;let t=cg(),o=Date.now();if(t&&o-t.lastChecked<lg){Ci(ne,t.latestVersion)&&process.stderr.write(pc(t.latestVersion));return}let i=await Pr();i&&(dg({lastChecked:o,latestVersion:i}),Ci(ne,i)&&process.stderr.write(pc(i)))}var Yt,fc,lg,jr,So=he(()=>{"use strict";Yt=require("node:fs"),fc=require("node:path");Ae();Kt();lg=3600*1e3,jr="https://api.github.com/repos/resend/resend-cli/releases/latest"});var Pu={};oo(Pu,{flushFromFile:()=>eh,flushPayload:()=>ju,getOrCreateAnonymousId:()=>Iu,getSpoolDir:()=>qr,isDisabled:()=>Tu,trackCommand:()=>Lr});function Vg(){return Jg[process.platform]??process.platform}function qr(){let e=(0,ze.join)(He(),"telemetry-spool");return(0,W.mkdirSync)(e,{recursive:!0,mode:448}),e}function Tu(){return!Ou||process.env.DO_NOT_TRACK==="1"||process.env.RESEND_TELEMETRY_DISABLED==="1"}function Iu(){let e=He(),t=(0,ze.join)(e,"telemetry-id");try{let i=(0,W.readFileSync)(t,"utf-8").trim();if(i)return i}catch{}let o=crypto.randomUUID();return(0,W.mkdirSync)(e,{recursive:!0,mode:448}),(0,W.writeFileSync)(t,o,{mode:384}),o}function zg(e){if(!e)return;let t=He(),o=(0,ze.join)(t,"telemetry-notice-shown");(0,W.existsSync)(o)||((0,W.mkdirSync)(t,{recursive:!0,mode:448}),(0,W.writeFileSync)(o,"",{mode:384}),process.stderr.write(`
149
149
  Resend collects anonymous CLI usage data to improve the tool.
150
150
  To opt out: export RESEND_TELEMETRY_DISABLED=1
151
151
 
152
- `))}function Yr(e,t){if(!Cm())try{let o=w()&&!t.json;Gg(o);let i=xm(),r={command:e,cli_version:se,os:$g(),node_version:process.version,interactive:o,install_method:Uc()};t.flags?.length&&(r.flags=t.flags),t.globalFlags?.length&&(r.global_flags=t.globalFlags);let n=crypto.randomUUID(),s=JSON.stringify({api_key:ym,distinct_id:i,event:"cli.used",properties:r,_nonce:n}),a=zr(),l=(0,Xe.join)(a,`resend-telemetry-${crypto.randomUUID()}.json`),u=(0,V.openSync)(l,V.constants.O_CREAT|V.constants.O_EXCL|V.constants.O_WRONLY|(V.constants.O_NOFOLLOW??0),384);try{(0,V.writeFileSync)(u,s)}finally{(0,V.closeSync)(u)}let m="pkg"in process,p=m?["telemetry","flush",l]:process.execArgv.concat([process.argv[1],"telemetry","flush",l]);(0,bm.spawn)(process.execPath,p,{detached:!0,stdio:"ignore",env:{...process.env,RESEND_TELEMETRY_DISABLED:"1",...m?{PKG_EXECPATH:""}:{}}}).unref()}catch{}}async function wm(e){let t=JSON.parse(e);if(!Hg(t))throw new Error("invalid telemetry payload schema");let{_nonce:o,...i}=t,r=JSON.stringify(i),n=await fetch(jg,{method:"POST",headers:{"Content-Type":"application/json"},body:r,signal:AbortSignal.timeout(3e3)});if(!n.ok)throw new Error(`telemetry flush failed: ${n.status}`)}async function Mg(e){let t=(0,Xe.join)(e),o=zr(),i=(0,Xe.basename)(t);if((0,Xe.dirname)(t)!==o||!Ng.test(i)||(0,V.realpathSync)((0,Xe.dirname)(t))!==(0,V.realpathSync)(o))throw new Error("invalid telemetry flush path");let r=(0,V.openSync)(t,V.constants.O_RDONLY|V.constants.O_NOFOLLOW),n;try{let s=(0,V.fstatSync)(r);if(!s.isFile()||s.nlink!==1)throw new Error("invalid telemetry flush path");n=(0,V.readFileSync)(r,"utf-8")}finally{(0,V.closeSync)(r)}try{await wm(n)}finally{(0,V.unlinkSync)(t)}}var bm,V,Xe,ym,jg,Pg,Am,Hg,Qg,Ng,Xr=Ae(()=>{"use strict";bm=require("node:child_process"),V=require("node:fs"),Xe=require("node:path");be();X();Uo();Kt();ym="phc_AgEBpcQTRsBl3UgQX2U8XvimTlgdXG6YEhfvJl2cUfc",jg="https://us.i.posthog.com/capture/",Pg={darwin:"macOS",win32:"Windows",linux:"Linux"};Am=new Set(["api_key","distinct_id","event","properties","_nonce"]),Hg=e=>{if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e,o=Object.keys(t);return o.length!==Am.size||o.some(i=>!Am.has(i))?!1:typeof t.api_key=="string"&&typeof t.distinct_id=="string"&&t.event==="cli.used"&&typeof t.properties=="object"&&t.properties!==null&&!Array.isArray(t.properties)&&typeof t._nonce=="string"&&t._nonce.length>0};Qg="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",Ng=new RegExp(`^resend-telemetry-${Qg}\\.json$`)});var hn=me(fn(),1),{program:Zg,createCommand:eA,createArgument:tA,createOption:oA,CommanderError:iA,InvalidArgumentError:rA,InvalidOptionArgumentError:nA,Command:c,Argument:gn,Option:M,Help:sA}=hn.default;var oo=me(Je(),1);var Ym=`Global options:
152
+ `))}function Lr(e,t){if(!Tu())try{let o=U()&&!t.json;zg(o);let i=Iu(),r={command:e,cli_version:ne,os:Vg(),node_version:process.version,interactive:o,install_method:hc()};t.flags?.length&&(r.flags=t.flags),t.globalFlags?.length&&(r.global_flags=t.globalFlags);let n=crypto.randomUUID(),s=JSON.stringify({api_key:Ou,distinct_id:i,event:"cli.used",properties:r,_nonce:n}),a=qr(),l=(0,ze.join)(a,`resend-telemetry-${crypto.randomUUID()}.json`),c=(0,W.openSync)(l,W.constants.O_CREAT|W.constants.O_EXCL|W.constants.O_WRONLY|(W.constants.O_NOFOLLOW??0),384);try{(0,W.writeFileSync)(c,s)}finally{(0,W.closeSync)(c)}let u="pkg"in process,p=u?["telemetry","flush",l]:process.execArgv.concat([process.argv[1],"telemetry","flush",l]);(0,Bu.spawn)(process.execPath,p,{detached:!0,stdio:"ignore",env:{...process.env,RESEND_TELEMETRY_DISABLED:"1",...u?{PKG_EXECPATH:""}:{}}}).unref()}catch{}}async function ju(e){let t=JSON.parse(e);if(!Yg(t))throw new Error("invalid telemetry payload schema");let{_nonce:o,...i}=t,r=JSON.stringify(i),n=await fetch(Wg,{method:"POST",headers:{"Content-Type":"application/json"},body:r,signal:AbortSignal.timeout(3e3)});if(!n.ok)throw new Error(`telemetry flush failed: ${n.status}`)}async function eh(e){let t=(0,ze.join)(e),o=qr(),i=(0,ze.basename)(t);if((0,ze.dirname)(t)!==o||!Zg.test(i)||(0,W.realpathSync)((0,ze.dirname)(t))!==(0,W.realpathSync)(o))throw new Error("invalid telemetry flush path");let r=(0,W.openSync)(t,W.constants.O_RDONLY|W.constants.O_NOFOLLOW),n;try{let s=(0,W.fstatSync)(r);if(!s.isFile()||s.nlink!==1)throw new Error("invalid telemetry flush path");n=(0,W.readFileSync)(r,"utf-8")}finally{(0,W.closeSync)(r)}try{await ju(n)}finally{(0,W.unlinkSync)(t)}}var Bu,W,ze,Ou,Wg,Jg,Eu,Yg,Xg,Zg,Wr=he(()=>{"use strict";Bu=require("node:child_process"),W=require("node:fs"),ze=require("node:path");Ae();V();So();Kt();Ou="phc_AgEBpcQTRsBl3UgQX2U8XvimTlgdXG6YEhfvJl2cUfc",Wg="https://us.i.posthog.com/capture/",Jg={darwin:"macOS",win32:"Windows",linux:"Linux"};Eu=new Set(["api_key","distinct_id","event","properties","_nonce"]),Yg=e=>{if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e,o=Object.keys(t);return o.length!==Eu.size||o.some(i=>!Eu.has(i))?!1:typeof t.api_key=="string"&&typeof t.distinct_id=="string"&&t.event==="cli.used"&&typeof t.properties=="object"&&t.properties!==null&&!Array.isArray(t.properties)&&typeof t._nonce=="string"&&t._nonce.length>0};Xg="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",Zg=new RegExp(`^resend-telemetry-${Xg}\\.json$`)});var dn=ue(cn(),1),{program:ch,createCommand:dh,createArgument:uh,createOption:mh,CommanderError:ph,InvalidArgumentError:fh,InvalidOptionArgumentError:gh,Command:d,Argument:un,Option:L,Help:hh}=dn.default;var to=ue(Ye(),1);var mm=`Global options:
153
153
  --api-key <key> API key (or set RESEND_API_KEY env var)
154
154
  -p, --profile <name> Profile to use (overrides RESEND_PROFILE)
155
155
  --json Force JSON output (also auto-enabled when stdout is piped)
156
- -q, --quiet Suppress spinners and status output (implies --json)`,Xm=`Global options:
156
+ -q, --quiet Suppress spinners and status output (implies --json)`,pm=`Global options:
157
157
  -p, --profile <name> Profile to use
158
158
  --json Force JSON output
159
- -q, --quiet Suppress spinners and status output (implies --json)`,Zm=' {"error":{"message":"<message>","code":"<code>"}}';function d(e){let t=[];return e.context!=null&&t.push(e.context),t.push(e.setup?Xm:Ym),e.output!=null&&t.push(`Output (--json or piped):
159
+ -q, --quiet Suppress spinners and status output (implies --json)`,fm=' {"error":{"message":"<message>","code":"<code>"}}';function m(e){let t=[];return e.context!=null&&t.push(e.context),t.push(e.setup?pm:mm),e.output!=null&&t.push(`Output (--json or piped):
160
160
  ${e.output}`),e.errorCodes!=null&&t.push(`Errors (exit code 1, JSON on stderr when using --json or non-TTY):
161
- ${Zm}
161
+ ${fm}
162
162
  Codes: ${e.errorCodes.join(" | ")}`),t.push(`Examples:
163
163
  ${e.examples.map(o=>` $ ${o}`).join(`
164
164
  `)}`),`
165
165
  ${t.join(`
166
166
 
167
- `)}`}var Tt=require("node:util"),no=require("node:process");var En=me(require("node:readline"),1);var yn=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let o=0;for(e.lastIndex=0;e.test(t);)o+=1;return t.length-o}})(),Cn=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,xn=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var ep=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,tp=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,wn=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,op=/\t{1,1000}/y,vn=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,ip=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,rp=/\p{M}+/gu,np={limit:1/0,ellipsis:""},Un=(e,t={},o={})=>{let i=t.limit??1/0,r=t.ellipsis??"",n=t?.ellipsisWidth??(r?Un(r,np,o).width:0),s=0,a=o.controlWidth??0,l=o.tabWidth??8,u=o.emojiWidth??2,m=2,p=o.regularWidth??1,f=o.wideWidth??m,y=[[ip,p],[ep,s],[tp,a],[op,l],[vn,u],[wn,f]],A=0,b=0,x=e.length,v=0,U=!1,S=x,K=Math.max(0,i-n),B=0,G=0,Q=0,$=0;e:for(;;){if(G>B||b>=x&&b>A){let q=e.slice(B,G)||e.slice(A,b);v=0;for(let we of q.replaceAll(rp,"")){let re=we.codePointAt(0)||0;if(Cn(re)?$=m:xn(re)?$=f:$=p,Q+$>K&&(S=Math.min(S,Math.max(B,A)+v)),Q+$>i){U=!0;break e}v+=we.length,Q+=$}B=G=0}if(b>=x)break e;for(let q=0,we=y.length;q<we;q++){let[re,Ut]=y[q];if(re.lastIndex=b,re.test(e)){if(v=re===wn?yn(e.slice(b,re.lastIndex)):re===vn?1:re.lastIndex-b,$=v*Ut,Q+$>K&&(S=Math.min(S,b+Math.floor((K-Q)/Ut))),Q+$>i){U=!0;break e}Q+=$,B=A,G=b,b=A=re.lastIndex;continue e}}b+=1}return{width:U?K:Q,index:U?S:x,truncated:U,ellipsed:U&&i>=n}},Sn=Un;var sp={limit:1/0,ellipsis:"",ellipsisWidth:0},ap=(e,t={})=>Sn(e,sp,t).width,ve=ap;var Do="\x1B",Rn="\x9B",lp=39,zi="\x07",Dn="[",cp="]",Tn="m",Yi=`${cp}8;;`,Kn=new RegExp(`(?:\\${Dn}(?<code>\\d+)m|\\${Yi}(?<uri>.*)${zi})`,"y"),kn=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},_n=e=>`${Do}${Dn}${e}${Tn}`,Fn=e=>`${Do}${Yi}${e}${zi}`,Vi=(e,t,o)=>{let i=t[Symbol.iterator](),r=!1,n=!1,s=e.at(-1),a=s===void 0?0:ve(s),l=i.next(),u=i.next(),m=0;for(;!l.done;){let p=l.value,f=ve(p);a+f<=o?e[e.length-1]+=p:(e.push(p),a=0),(p===Do||p===Rn)&&(r=!0,n=t.startsWith(Yi,m+1)),r?n?p===zi&&(r=!1,n=!1):p===Tn&&(r=!1):(a+=f,a===o&&!u.done&&(e.push(""),a=0)),l=u,u=i.next(),m+=p.length}s=e.at(-1),!a&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},dp=e=>{let t=e.split(" "),o=t.length;for(;o&&!ve(t[o-1]);)o--;return o===t.length?e:t.slice(0,o).join(" ")+t.slice(o).join("")},up=(e,t,o={})=>{if(o.trim!==!1&&e.trim()==="")return"";let i="",r,n,s=e.split(" "),a=[""],l=0;for(let p=0;p<s.length;p++){let f=s[p];if(o.trim!==!1){let A=a.at(-1)??"",b=A.trimStart();A.length!==b.length&&(a[a.length-1]=b,l=ve(b))}p!==0&&(l>=t&&(o.wordWrap===!1||o.trim===!1)&&(a.push(""),l=0),(l||o.trim===!1)&&(a[a.length-1]+=" ",l++));let y=ve(f);if(o.hard&&y>t){let A=t-l,b=1+Math.floor((y-A-1)/t);Math.floor((y-1)/t)<b&&a.push(""),Vi(a,f,t),l=ve(a.at(-1)??"");continue}if(l+y>t&&l&&y){if(o.wordWrap===!1&&l<t){Vi(a,f,t),l=ve(a.at(-1)??"");continue}a.push(""),l=0}if(l+y>t&&o.wordWrap===!1){Vi(a,f,t),l=ve(a.at(-1)??"");continue}a[a.length-1]+=f,l+=y}o.trim!==!1&&(a=a.map(p=>dp(p)));let u=a.join(`
168
- `),m=!1;for(let p=0;p<u.length;p++){let f=u[p];if(i+=f,m)m=!1;else if(m=f>="\uD800"&&f<="\uDBFF",m)continue;if(f===Do||f===Rn){Kn.lastIndex=p+1;let A=Kn.exec(u)?.groups;if(A?.code!==void 0){let b=Number.parseFloat(A.code);r=b===lp?void 0:b}else A?.uri!==void 0&&(n=A.uri.length===0?void 0:A.uri)}if(u[p+1]===`
169
- `){n&&(i+=Fn(""));let y=r?kn(r):void 0;r&&y&&(i+=_n(y))}else f===`
170
- `&&(r&&kn(r)&&(i+=_n(r)),n&&(i+=Fn(n)))}return i},mp=/\r?\n/;function ct(e,t,o){return String(e).normalize().split(mp).map(i=>up(i,t,o)).join(`
171
- `)}var Be=me(Zi(),1);function it(e,t,o){if(!o.some(s=>!s.disabled))return e;let i=e+t,r=Math.max(o.length-1,0),n=i<0?r:i>r?0:i;return o[n].disabled?it(n,t<0?-1:1,o):n}var hp=["up","down","left","right","space","enter","cancel"],gp=["January","February","March","April","May","June","July","August","September","October","November","December"],ge={actions:new Set(hp),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...gp],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function Bn(e,t){if(typeof e=="string")return ge.aliases.get(e)===t;for(let o of e)if(o!==void 0&&Bn(o,t))return!0;return!1}function Ap(e,t){if(e===t)return;let o=e.split(`
167
+ `)}`}var Dt=require("node:util"),ro=require("node:process");var Rn=ue(require("node:readline"),1);var fn=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let o=0;for(e.lastIndex=0;e.test(t);)o+=1;return t.length-o}})(),gn=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,hn=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var gm=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,hm=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,An=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,Am=/\t{1,1000}/y,bn=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,bm=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,ym=/\p{M}+/gu,Cm={limit:1/0,ellipsis:""},yn=(e,t={},o={})=>{let i=t.limit??1/0,r=t.ellipsis??"",n=t?.ellipsisWidth??(r?yn(r,Cm,o).width:0),s=0,a=o.controlWidth??0,l=o.tabWidth??8,c=o.emojiWidth??2,u=2,p=o.regularWidth??1,f=o.wideWidth??u,b=[[bm,p],[gm,s],[hm,a],[Am,l],[bn,c],[An,f]],h=0,A=0,w=e.length,S=0,v=!1,K=w,x=Math.max(0,i-n),D=0,I=0,H=0,E=0;e:for(;;){if(I>D||A>=w&&A>h){let N=e.slice(D,I)||e.slice(h,A);S=0;for(let we of N.replaceAll(ym,"")){let ie=we.codePointAt(0)||0;if(gn(ie)?E=u:hn(ie)?E=f:E=p,H+E>x&&(K=Math.min(K,Math.max(D,h)+S)),H+E>i){v=!0;break e}S+=we.length,H+=E}D=I=0}if(A>=w)break e;for(let N=0,we=b.length;N<we;N++){let[ie,St]=b[N];if(ie.lastIndex=A,ie.test(e)){if(S=ie===An?fn(e.slice(A,ie.lastIndex)):ie===bn?1:ie.lastIndex-A,E=S*St,H+E>x&&(K=Math.min(K,A+Math.floor((x-H)/St))),H+E>i){v=!0;break e}H+=E,D=h,I=A,A=h=ie.lastIndex;continue e}}A+=1}return{width:v?x:H,index:v?K:w,truncated:v,ellipsed:v&&i>=n}},Cn=yn;var wm={limit:1/0,ellipsis:"",ellipsisWidth:0},Um=(e,t={})=>Cn(e,wm,t).width,Ue=Um;var _o="\x1B",Kn="\x9B",Sm=39,Wi="\x07",xn="[",vm="]",kn="m",Ji=`${vm}8;;`,wn=new RegExp(`(?:\\${xn}(?<code>\\d+)m|\\${Ji}(?<uri>.*)${Wi})`,"y"),Un=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},Sn=e=>`${_o}${xn}${e}${kn}`,vn=e=>`${_o}${Ji}${e}${Wi}`,Li=(e,t,o)=>{let i=t[Symbol.iterator](),r=!1,n=!1,s=e.at(-1),a=s===void 0?0:Ue(s),l=i.next(),c=i.next(),u=0;for(;!l.done;){let p=l.value,f=Ue(p);a+f<=o?e[e.length-1]+=p:(e.push(p),a=0),(p===_o||p===Kn)&&(r=!0,n=t.startsWith(Ji,u+1)),r?n?p===Wi&&(r=!1,n=!1):p===kn&&(r=!1):(a+=f,a===o&&!c.done&&(e.push(""),a=0)),l=c,c=i.next(),u+=p.length}s=e.at(-1),!a&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},Km=e=>{let t=e.split(" "),o=t.length;for(;o&&!Ue(t[o-1]);)o--;return o===t.length?e:t.slice(0,o).join(" ")+t.slice(o).join("")},xm=(e,t,o={})=>{if(o.trim!==!1&&e.trim()==="")return"";let i="",r,n,s=e.split(" "),a=[""],l=0;for(let p=0;p<s.length;p++){let f=s[p];if(o.trim!==!1){let h=a.at(-1)??"",A=h.trimStart();h.length!==A.length&&(a[a.length-1]=A,l=Ue(A))}p!==0&&(l>=t&&(o.wordWrap===!1||o.trim===!1)&&(a.push(""),l=0),(l||o.trim===!1)&&(a[a.length-1]+=" ",l++));let b=Ue(f);if(o.hard&&b>t){let h=t-l,A=1+Math.floor((b-h-1)/t);Math.floor((b-1)/t)<A&&a.push(""),Li(a,f,t),l=Ue(a.at(-1)??"");continue}if(l+b>t&&l&&b){if(o.wordWrap===!1&&l<t){Li(a,f,t),l=Ue(a.at(-1)??"");continue}a.push(""),l=0}if(l+b>t&&o.wordWrap===!1){Li(a,f,t),l=Ue(a.at(-1)??"");continue}a[a.length-1]+=f,l+=b}o.trim!==!1&&(a=a.map(p=>Km(p)));let c=a.join(`
168
+ `),u=!1;for(let p=0;p<c.length;p++){let f=c[p];if(i+=f,u)u=!1;else if(u=f>="\uD800"&&f<="\uDBFF",u)continue;if(f===_o||f===Kn){wn.lastIndex=p+1;let h=wn.exec(c)?.groups;if(h?.code!==void 0){let A=Number.parseFloat(h.code);r=A===Sm?void 0:A}else h?.uri!==void 0&&(n=h.uri.length===0?void 0:h.uri)}if(c[p+1]===`
169
+ `){n&&(i+=vn(""));let b=r?Un(r):void 0;r&&b&&(i+=Sn(b))}else f===`
170
+ `&&(r&&Un(r)&&(i+=Sn(r)),n&&(i+=vn(n)))}return i},km=/\r?\n/;function lt(e,t,o){return String(e).normalize().split(km).map(i=>xm(i,t,o)).join(`
171
+ `)}var Te=ue(zi(),1);function ot(e,t,o){if(!o.some(s=>!s.disabled))return e;let i=e+t,r=Math.max(o.length-1,0),n=i<0?r:i>r?0:i;return o[n].disabled?ot(n,t<0?-1:1,o):n}var _m=["up","down","left","right","space","enter","cancel"],Dm=["January","February","March","April","May","June","July","August","September","October","November","December"],ge={actions:new Set(_m),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...Dm],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function _n(e,t){if(typeof e=="string")return ge.aliases.get(e)===t;for(let o of e)if(o!==void 0&&_n(o,t))return!0;return!1}function Em(e,t){if(e===t)return;let o=e.split(`
172
172
  `),i=t.split(`
173
- `),r=Math.max(o.length,i.length),n=[];for(let s=0;s<r;s++)o[s]!==i[s]&&n.push(s);return{lines:n,numLinesBefore:o.length,numLinesAfter:i.length,numLines:r}}var yA=globalThis.process.platform.startsWith("win"),er=Symbol("clack:cancel");function F(e){return e===er}function To(e,t){let o=e;o.isTTY&&o.setRawMode(t)}var jo=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,tr=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function dt(e,t,o,i=o,r=o,n){let s=jo(e??no.stdout);return ct(t,s-o.length,{hard:!0,trim:!1}).split(`
174
- `).map((a,l,u)=>{let m=n?n(a,l):a;return l===0?`${i}${m}`:l===u.length-1?`${r}${m}`:`${o}${m}`}).join(`
175
- `)}var Ot=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(e,t=!0){let{input:o=no.stdin,output:i=no.stdout,render:r,signal:n,...s}=e;this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=r.bind(this),this._track=t,this._abortSignal=n,this.input=o,this.output=i}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let o=this._subscribers.get(e)??[];o.push(t),this._subscribers.set(e,o)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let o=this._subscribers.get(e)??[],i=[];for(let r of o)r.cb(...t),r.once&&i.push(()=>o.splice(o.indexOf(r),1));for(let r of i)r()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(er);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=En.default.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),To(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Be.cursor.show),this.output.off("resize",this.render),To(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(Be.cursor.show),this.output.off("resize",this.render),To(this.input,!1),e(er)})})}_isActionKey(e,t){return e===" "}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit("value",this.value)}_setUserInput(e,t){this.userInput=e??"",this.emit("userInput",this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(e,t){if(this._track&&t.name!=="return"&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&ge.aliases.has(t.name)&&this.emit("cursor",ge.aliases.get(t.name)),ge.actions.has(t.name)&&this.emit("cursor",t.name)),e&&(e.toLowerCase()==="y"||e.toLowerCase()==="n")&&this.emit("confirm",e.toLowerCase()==="y"),this.emit("key",e?.toLowerCase(),t),t?.name==="return"&&this._shouldSubmit(e,t)){if(this.opts.validate){let o=this.opts.validate(this.value);o&&(this.error=o instanceof Error?o.message:o,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}Bn([e,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
176
- `),To(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=ct(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
177
- `).length-1;this.output.write(Be.cursor.move(-999,e*-1))}render(){let e=ct(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(Be.cursor.hide);else{let t=Ap(this._prevFrame,e),o=tr(this.output);if(this.restoreCursor(),t){let i=Math.max(0,t.numLinesAfter-o),r=Math.max(0,t.numLinesBefore-o),n=t.lines.find(s=>s>=i);if(n===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(Be.cursor.move(0,n-r)),this.output.write(Be.erase.lines(1));let s=e.split(`
178
- `);this.output.write(s[n]),this._prevFrame=e,this.output.write(Be.cursor.move(0,s.length-n-1));return}else if(t.lines.length>1){if(i<r)n=i;else{let a=n-r;a>0&&this.output.write(Be.cursor.move(0,a))}this.output.write(Be.erase.down());let s=e.split(`
173
+ `),r=Math.max(o.length,i.length),n=[];for(let s=0;s<r;s++)o[s]!==i[s]&&n.push(s);return{lines:n,numLinesBefore:o.length,numLinesAfter:i.length,numLines:r}}var Rh=globalThis.process.platform.startsWith("win"),Yi=Symbol("clack:cancel");function k(e){return e===Yi}function Do(e,t){let o=e;o.isTTY&&o.setRawMode(t)}var Io=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,Xi=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function ct(e,t,o,i=o,r=o,n){let s=Io(e??ro.stdout);return lt(t,s-o.length,{hard:!0,trim:!1}).split(`
174
+ `).map((a,l,c)=>{let u=n?n(a,l):a;return l===0?`${i}${u}`:l===c.length-1?`${r}${u}`:`${o}${u}`}).join(`
175
+ `)}var Et=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(e,t=!0){let{input:o=ro.stdin,output:i=ro.stdout,render:r,signal:n,...s}=e;this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=r.bind(this),this._track=t,this._abortSignal=n,this.input=o,this.output=i}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let o=this._subscribers.get(e)??[];o.push(t),this._subscribers.set(e,o)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let o=this._subscribers.get(e)??[],i=[];for(let r of o)r.cb(...t),r.once&&i.push(()=>o.splice(o.indexOf(r),1));for(let r of i)r()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(Yi);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=Rn.default.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),Do(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Te.cursor.show),this.output.off("resize",this.render),Do(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(Te.cursor.show),this.output.off("resize",this.render),Do(this.input,!1),e(Yi)})})}_isActionKey(e,t){return e===" "}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit("value",this.value)}_setUserInput(e,t){this.userInput=e??"",this.emit("userInput",this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(e,t){if(this._track&&t.name!=="return"&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&ge.aliases.has(t.name)&&this.emit("cursor",ge.aliases.get(t.name)),ge.actions.has(t.name)&&this.emit("cursor",t.name)),e&&(e.toLowerCase()==="y"||e.toLowerCase()==="n")&&this.emit("confirm",e.toLowerCase()==="y"),this.emit("key",e?.toLowerCase(),t),t?.name==="return"&&this._shouldSubmit(e,t)){if(this.opts.validate){let o=this.opts.validate(this.value);o&&(this.error=o instanceof Error?o.message:o,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}_n([e,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
176
+ `),Do(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=lt(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
177
+ `).length-1;this.output.write(Te.cursor.move(-999,e*-1))}render(){let e=lt(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(Te.cursor.hide);else{let t=Em(this._prevFrame,e),o=Xi(this.output);if(this.restoreCursor(),t){let i=Math.max(0,t.numLinesAfter-o),r=Math.max(0,t.numLinesBefore-o),n=t.lines.find(s=>s>=i);if(n===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(Te.cursor.move(0,n-r)),this.output.write(Te.erase.lines(1));let s=e.split(`
178
+ `);this.output.write(s[n]),this._prevFrame=e,this.output.write(Te.cursor.move(0,s.length-n-1));return}else if(t.lines.length>1){if(i<r)n=i;else{let a=n-r;a>0&&this.output.write(Te.cursor.move(0,a))}this.output.write(Te.erase.down());let s=e.split(`
179
179
  `).slice(n);this.output.write(s.join(`
180
- `)),this._prevFrame=e;return}}this.output.write(Be.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};function bp(e,t){if(e===void 0||t.length===0)return 0;let o=t.findIndex(i=>i.value===e);return o!==-1?o:0}function yp(e,t){return(t.label??String(t.value)).toLowerCase().includes(e.toLowerCase())}function Cp(e,t){if(t)return e?t:t[0]}var In=class extends Ot{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#i="";#t;#o;#r;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return(0,Tt.styleText)(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}\u2588`;let e=this.userInput.slice(0,this._cursor),[t,...o]=this.userInput.slice(this._cursor);return`${e}${(0,Tt.styleText)("inverse",t)}${o.join("")}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#r=e.placeholder;let t=this.options;this.filteredOptions=[...t],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??yp;let o;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?o=e.initialValue:o=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(o=[this.options[0].value]),o)for(let i of o){let r=t.findIndex(n=>n.value===i);r!==-1&&(this.toggleSelected(i),this.#e=r)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,r)=>this.#n(i,r)),this.on("userInput",i=>this.#s(i))}_isActionKey(e,t){return e===" "||this.multiple&&this.isNavigating&&t.name==="space"&&e!==void 0&&e!==""}#n(e,t){let o=t.name==="up",i=t.name==="down",r=t.name==="return",n=this.userInput===""||this.userInput===" ",s=this.#r,a=this.options,l=s!==void 0&&s!==""&&a.some(u=>!u.disabled&&(this.#t?this.#t(s,u):!0));if(t.name==="tab"&&n&&l){this.userInput===" "&&this._clearUserInput(),this._setUserInput(s,!0),this.isNavigating=!1;return}o||i?(this.#e=it(this.#e,o?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):r?this.value=Cp(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(t.name==="tab"||this.isNavigating&&t.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter(t=>t!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#s(e){if(e!==this.#i){this.#i=e;let t=this.options;e&&this.#t?this.filteredOptions=t.filter(r=>this.#t?.(e,r)):this.filteredOptions=[...t];let o=bp(this.focusedValue,this.filteredOptions);this.#e=it(o,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}},Oo=class extends Ot{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",o=>{this.output.write(Be.cursor.move(0,-1)),this.value=o,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};var jn=class extends Ot{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(e=>e.disabled!==!0)}toggleAll(){let e=this._enabledOptions,t=this.value!==void 0&&this.value.length===e.length;this.value=t?[]:e.map(o=>o.value)}toggleInvert(){let e=this.value;if(!e)return;let t=this._enabledOptions.filter(o=>!e.includes(o.value));this.value=t.map(o=>o.value)}toggleValue(){this.value===void 0&&(this.value=[]);let e=this.value.includes(this._value);this.value=e?this.value.filter(t=>t!==this._value):[...this.value,this._value]}constructor(e){super(e,!1),this.options=e.options,this.value=[...e.initialValues??[]];let t=Math.max(this.options.findIndex(({value:o})=>o===e.cursorAt),0);this.cursor=this.options[t].disabled?it(t,1,this.options):t,this.on("key",o=>{o==="a"&&this.toggleAll(),o==="i"&&this.toggleInvert()}),this.on("cursor",o=>{switch(o){case"left":case"up":this.cursor=it(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=it(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},Eo=class extends Ot{_mask="\u2022";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state==="submit"||this.state==="cancel")return this.masked;let t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${(0,Tt.styleText)(["inverse","hidden"],"_")}`;let o=this.masked,i=o.slice(0,this.cursor),r=o.slice(this.cursor);return`${i}${(0,Tt.styleText)("inverse",r[0])}${r.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...o}){super(o),this._mask=t??"\u2022",this.on("userInput",i=>{this._setValue(i)})}},Bo=class extends Ot{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;let o=this.options.findIndex(({value:r})=>r===t.initialValue),i=o===-1?0:o;this.cursor=this.options[i].disabled?it(i,1,this.options):i,this.changeValue(),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=it(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=it(this.cursor,1,this.options);break}this.changeValue()})}};var Io=class extends Ot{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let o=t.slice(0,this.cursor),[i,...r]=t.slice(this.cursor);return`${o}${(0,Tt.styleText)("inverse",i)}${r.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",o=>{this._setValue(o)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}};var C=require("node:util"),Ie=me(require("node:process"),1);var Nn=me(Zi(),1);function xp(){return Ie.default.platform!=="win32"?Ie.default.env.TERM!=="linux":!!Ie.default.env.CI||!!Ie.default.env.WT_SESSION||!!Ie.default.env.TERMINUS_SUBLIME||Ie.default.env.ConEmuTask==="{cmd::Cmder}"||Ie.default.env.TERM_PROGRAM==="Terminus-Sublime"||Ie.default.env.TERM_PROGRAM==="vscode"||Ie.default.env.TERM==="xterm-256color"||Ie.default.env.TERM==="alacritty"||Ie.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var wp=xp();var oe=(e,t)=>wp?e:t,vp=oe("\u25C6","*"),Up=oe("\u25A0","x"),Sp=oe("\u25B2","x"),or=oe("\u25C7","o"),Kp=oe("\u250C","T"),H=oe("\u2502","|"),Ve=oe("\u2514","\u2014"),OA=oe("\u2510","T"),EA=oe("\u2518","\u2014"),$o=oe("\u25CF",">"),Et=oe("\u25CB"," "),kp=oe("\u25FB","[\u2022]"),Pn=oe("\u25FC","[+]"),$n=oe("\u25FB","[ ]"),_p=oe("\u25AA","\u2022"),Gn=oe("\u2500","-"),Fp=oe("\u256E","+"),Rp=oe("\u251C","+"),Dp=oe("\u256F","+"),Tp=oe("\u2570","+"),BA=oe("\u256D","+"),Op=oe("\u25CF","\u2022"),Ep=oe("\u25C6","*"),Bp=oe("\u25B2","!"),Ip=oe("\u25A0","x"),St=e=>{switch(e){case"initial":case"active":return(0,C.styleText)("cyan",vp);case"cancel":return(0,C.styleText)("red",Up);case"error":return(0,C.styleText)("yellow",Sp);case"submit":return(0,C.styleText)("green",or)}},Mn=e=>{switch(e){case"initial":case"active":return(0,C.styleText)("cyan",H);case"cancel":return(0,C.styleText)("red",H);case"error":return(0,C.styleText)("yellow",H);case"submit":return(0,C.styleText)("green",H)}},Hn=(e,t,o,i,r,n=!1)=>{let s=t,a=0;if(n)for(let l=i-1;l>=o&&(s-=e[l].length,a++,!(s<=r));l--);else for(let l=o;l<i&&(s-=e[l].length,a++,!(s<=r));l++);return{lineCount:s,removals:a}},Go=({cursor:e,options:t,style:o,output:i=process.stdout,maxItems:r=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:s=4})=>{let a=jo(i)-n,l=tr(i),u=(0,C.styleText)("dim","..."),m=Math.max(l-s,0),p=Math.max(Math.min(r,m),5),f=0;e>=p-3&&(f=Math.max(Math.min(e-p+3,t.length-p),0));let y=p<t.length&&f>0,A=p<t.length&&f+p<t.length,b=Math.min(f+p,t.length),x=[],v=0;y&&v++,A&&v++;let U=f+(y?1:0),S=b-(A?1:0);for(let B=U;B<S;B++){let G=ct(o(t[B],B===e),a,{hard:!0,trim:!1}).split(`
181
- `);x.push(G),v+=G.length}if(v>m){let B=0,G=0,Q=v,$=e-U,q=m,we=()=>Hn(x,Q,0,$,q),re=()=>Hn(x,Q,$+1,x.length,q,!0);y?({lineCount:Q,removals:B}=we(),Q>q&&(A||(q-=1),{lineCount:Q,removals:G}=re())):(A||(q-=1),{lineCount:Q,removals:G}=re(),Q>q&&(q-=1,{lineCount:Q,removals:B}=we())),B>0&&(y=!0,x.splice(0,B)),G>0&&(A=!0,x.splice(x.length-G,G))}let K=[];y&&K.push(u);for(let B of x)for(let G of B)K.push(G);return A&&K.push(u),K};function Qn(e){return e.label??String(e.value??"")}function jp(e,t){if(!e)return!0;let o=(t.label??String(t.value??"")).toLowerCase(),i=(t.hint??"").toLowerCase(),r=String(t.value).toLowerCase(),n=e.toLowerCase();return o.includes(n)||i.includes(n)||r.includes(n)}function Pp(e,t){let o=[];for(let i of t)e.includes(i.value)&&o.push(i);return o}var qn=e=>new In({options:e.options,initialValue:e.initialValue?[e.initialValue]:void 0,initialUserInput:e.initialUserInput,placeholder:e.placeholder,filter:e.filter??((t,o)=>jp(t,o)),signal:e.signal,input:e.input,output:e.output,validate:e.validate,render(){let t=e.withGuide??ge.withGuide,o=t?[`${(0,C.styleText)("gray",H)}`,`${St(this.state)} ${e.message}`]:[`${St(this.state)} ${e.message}`],i=this.userInput,r=this.options,n=e.placeholder,s=i===""&&n!==void 0,a=(l,u)=>{let m=Qn(l),p=l.hint&&l.value===this.focusedValue?(0,C.styleText)("dim",` (${l.hint})`):"";switch(u){case"active":return`${(0,C.styleText)("green",$o)} ${m}${p}`;case"inactive":return`${(0,C.styleText)("dim",Et)} ${(0,C.styleText)("dim",m)}`;case"disabled":return`${(0,C.styleText)("gray",Et)} ${(0,C.styleText)(["strikethrough","gray"],m)}`}};switch(this.state){case"submit":{let l=Pp(this.selectedValues,r),u=l.length>0?` ${(0,C.styleText)("dim",l.map(Qn).join(", "))}`:"",m=t?(0,C.styleText)("gray",H):"";return`${o.join(`
180
+ `)),this._prevFrame=e;return}}this.output.write(Te.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};function Bm(e,t){if(e===void 0||t.length===0)return 0;let o=t.findIndex(i=>i.value===e);return o!==-1?o:0}function Om(e,t){return(t.label??String(t.value)).toLowerCase().includes(e.toLowerCase())}function Tm(e,t){if(t)return e?t:t[0]}var Dn=class extends Et{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#i="";#t;#o;#r;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return(0,Dt.styleText)(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}\u2588`;let e=this.userInput.slice(0,this._cursor),[t,...o]=this.userInput.slice(this._cursor);return`${e}${(0,Dt.styleText)("inverse",t)}${o.join("")}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#r=e.placeholder;let t=this.options;this.filteredOptions=[...t],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??Om;let o;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?o=e.initialValue:o=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(o=[this.options[0].value]),o)for(let i of o){let r=t.findIndex(n=>n.value===i);r!==-1&&(this.toggleSelected(i),this.#e=r)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,r)=>this.#n(i,r)),this.on("userInput",i=>this.#s(i))}_isActionKey(e,t){return e===" "||this.multiple&&this.isNavigating&&t.name==="space"&&e!==void 0&&e!==""}#n(e,t){let o=t.name==="up",i=t.name==="down",r=t.name==="return",n=this.userInput===""||this.userInput===" ",s=this.#r,a=this.options,l=s!==void 0&&s!==""&&a.some(c=>!c.disabled&&(this.#t?this.#t(s,c):!0));if(t.name==="tab"&&n&&l){this.userInput===" "&&this._clearUserInput(),this._setUserInput(s,!0),this.isNavigating=!1;return}o||i?(this.#e=ot(this.#e,o?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):r?this.value=Tm(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(t.name==="tab"||this.isNavigating&&t.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter(t=>t!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#s(e){if(e!==this.#i){this.#i=e;let t=this.options;e&&this.#t?this.filteredOptions=t.filter(r=>this.#t?.(e,r)):this.filteredOptions=[...t];let o=Bm(this.focusedValue,this.filteredOptions);this.#e=ot(o,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}},Eo=class extends Et{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",o=>{this.output.write(Te.cursor.move(0,-1)),this.value=o,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};var En=class extends Et{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(e=>e.disabled!==!0)}toggleAll(){let e=this._enabledOptions,t=this.value!==void 0&&this.value.length===e.length;this.value=t?[]:e.map(o=>o.value)}toggleInvert(){let e=this.value;if(!e)return;let t=this._enabledOptions.filter(o=>!e.includes(o.value));this.value=t.map(o=>o.value)}toggleValue(){this.value===void 0&&(this.value=[]);let e=this.value.includes(this._value);this.value=e?this.value.filter(t=>t!==this._value):[...this.value,this._value]}constructor(e){super(e,!1),this.options=e.options,this.value=[...e.initialValues??[]];let t=Math.max(this.options.findIndex(({value:o})=>o===e.cursorAt),0);this.cursor=this.options[t].disabled?ot(t,1,this.options):t,this.on("key",o=>{o==="a"&&this.toggleAll(),o==="i"&&this.toggleInvert()}),this.on("cursor",o=>{switch(o){case"left":case"up":this.cursor=ot(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=ot(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},Bo=class extends Et{_mask="\u2022";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state==="submit"||this.state==="cancel")return this.masked;let t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${(0,Dt.styleText)(["inverse","hidden"],"_")}`;let o=this.masked,i=o.slice(0,this.cursor),r=o.slice(this.cursor);return`${i}${(0,Dt.styleText)("inverse",r[0])}${r.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...o}){super(o),this._mask=t??"\u2022",this.on("userInput",i=>{this._setValue(i)})}},Oo=class extends Et{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;let o=this.options.findIndex(({value:r})=>r===t.initialValue),i=o===-1?0:o;this.cursor=this.options[i].disabled?ot(i,1,this.options):i,this.changeValue(),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=ot(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=ot(this.cursor,1,this.options);break}this.changeValue()})}};var To=class extends Et{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let o=t.slice(0,this.cursor),[i,...r]=t.slice(this.cursor);return`${o}${(0,Dt.styleText)("inverse",i)}${r.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",o=>{this._setValue(o)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}};var y=require("node:util"),Ie=ue(require("node:process"),1);var Pn=ue(zi(),1);function Im(){return Ie.default.platform!=="win32"?Ie.default.env.TERM!=="linux":!!Ie.default.env.CI||!!Ie.default.env.WT_SESSION||!!Ie.default.env.TERMINUS_SUBLIME||Ie.default.env.ConEmuTask==="{cmd::Cmder}"||Ie.default.env.TERM_PROGRAM==="Terminus-Sublime"||Ie.default.env.TERM_PROGRAM==="vscode"||Ie.default.env.TERM==="xterm-256color"||Ie.default.env.TERM==="alacritty"||Ie.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var jm=Im();var Z=(e,t)=>jm?e:t,Pm=Z("\u25C6","*"),$m=Z("\u25A0","x"),Gm=Z("\u25B2","x"),Zi=Z("\u25C7","o"),Hm=Z("\u250C","T"),j=Z("\u2502","|"),We=Z("\u2514","\u2014"),Nh=Z("\u2510","T"),Mh=Z("\u2518","\u2014"),Po=Z("\u25CF",">"),Bt=Z("\u25CB"," "),Qm=Z("\u25FB","[\u2022]"),Bn=Z("\u25FC","[+]"),On=Z("\u25FB","[ ]"),Nm=Z("\u25AA","\u2022"),Tn=Z("\u2500","-"),Mm=Z("\u256E","+"),qm=Z("\u251C","+"),Lm=Z("\u256F","+"),Wm=Z("\u2570","+"),qh=Z("\u256D","+"),Jm=Z("\u25CF","\u2022"),Vm=Z("\u25C6","*"),zm=Z("\u25B2","!"),Ym=Z("\u25A0","x"),vt=e=>{switch(e){case"initial":case"active":return(0,y.styleText)("cyan",Pm);case"cancel":return(0,y.styleText)("red",$m);case"error":return(0,y.styleText)("yellow",Gm);case"submit":return(0,y.styleText)("green",Zi)}},$n=e=>{switch(e){case"initial":case"active":return(0,y.styleText)("cyan",j);case"cancel":return(0,y.styleText)("red",j);case"error":return(0,y.styleText)("yellow",j);case"submit":return(0,y.styleText)("green",j)}},In=(e,t,o,i,r,n=!1)=>{let s=t,a=0;if(n)for(let l=i-1;l>=o&&(s-=e[l].length,a++,!(s<=r));l--);else for(let l=o;l<i&&(s-=e[l].length,a++,!(s<=r));l++);return{lineCount:s,removals:a}},$o=({cursor:e,options:t,style:o,output:i=process.stdout,maxItems:r=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:s=4})=>{let a=Io(i)-n,l=Xi(i),c=(0,y.styleText)("dim","..."),u=Math.max(l-s,0),p=Math.max(Math.min(r,u),5),f=0;e>=p-3&&(f=Math.max(Math.min(e-p+3,t.length-p),0));let b=p<t.length&&f>0,h=p<t.length&&f+p<t.length,A=Math.min(f+p,t.length),w=[],S=0;b&&S++,h&&S++;let v=f+(b?1:0),K=A-(h?1:0);for(let D=v;D<K;D++){let I=lt(o(t[D],D===e),a,{hard:!0,trim:!1}).split(`
181
+ `);w.push(I),S+=I.length}if(S>u){let D=0,I=0,H=S,E=e-v,N=u,we=()=>In(w,H,0,E,N),ie=()=>In(w,H,E+1,w.length,N,!0);b?({lineCount:H,removals:D}=we(),H>N&&(h||(N-=1),{lineCount:H,removals:I}=ie())):(h||(N-=1),{lineCount:H,removals:I}=ie(),H>N&&(N-=1,{lineCount:H,removals:D}=we())),D>0&&(b=!0,w.splice(0,D)),I>0&&(h=!0,w.splice(w.length-I,I))}let x=[];b&&x.push(c);for(let D of w)for(let I of D)x.push(I);return h&&x.push(c),x};function jn(e){return e.label??String(e.value??"")}function Xm(e,t){if(!e)return!0;let o=(t.label??String(t.value??"")).toLowerCase(),i=(t.hint??"").toLowerCase(),r=String(t.value).toLowerCase(),n=e.toLowerCase();return o.includes(n)||i.includes(n)||r.includes(n)}function Zm(e,t){let o=[];for(let i of t)e.includes(i.value)&&o.push(i);return o}var Gn=e=>new Dn({options:e.options,initialValue:e.initialValue?[e.initialValue]:void 0,initialUserInput:e.initialUserInput,placeholder:e.placeholder,filter:e.filter??((t,o)=>Xm(t,o)),signal:e.signal,input:e.input,output:e.output,validate:e.validate,render(){let t=e.withGuide??ge.withGuide,o=t?[`${(0,y.styleText)("gray",j)}`,`${vt(this.state)} ${e.message}`]:[`${vt(this.state)} ${e.message}`],i=this.userInput,r=this.options,n=e.placeholder,s=i===""&&n!==void 0,a=(l,c)=>{let u=jn(l),p=l.hint&&l.value===this.focusedValue?(0,y.styleText)("dim",` (${l.hint})`):"";switch(c){case"active":return`${(0,y.styleText)("green",Po)} ${u}${p}`;case"inactive":return`${(0,y.styleText)("dim",Bt)} ${(0,y.styleText)("dim",u)}`;case"disabled":return`${(0,y.styleText)("gray",Bt)} ${(0,y.styleText)(["strikethrough","gray"],u)}`}};switch(this.state){case"submit":{let l=Zm(this.selectedValues,r),c=l.length>0?` ${(0,y.styleText)("dim",l.map(jn).join(", "))}`:"",u=t?(0,y.styleText)("gray",j):"";return`${o.join(`
182
182
  `)}
183
- ${m}${u}`}case"cancel":{let l=i?` ${(0,C.styleText)(["strikethrough","dim"],i)}`:"",u=t?(0,C.styleText)("gray",H):"";return`${o.join(`
183
+ ${u}${c}`}case"cancel":{let l=i?` ${(0,y.styleText)(["strikethrough","dim"],i)}`:"",c=t?(0,y.styleText)("gray",j):"";return`${o.join(`
184
184
  `)}
185
- ${u}${l}`}default:{let l=this.state==="error"?"yellow":"cyan",u=t?`${(0,C.styleText)(l,H)} `:"",m=t?(0,C.styleText)(l,Ve):"",p="";if(this.isNavigating||s){let U=s?n:i;p=U!==""?` ${(0,C.styleText)("dim",U)}`:""}else p=` ${this.userInputWithCursor}`;let f=this.filteredOptions.length!==r.length?(0,C.styleText)("dim",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"",y=this.filteredOptions.length===0&&i?[`${u}${(0,C.styleText)("yellow","No matches found")}`]:[],A=this.state==="error"?[`${u}${(0,C.styleText)("yellow",this.error)}`]:[];t&&o.push(`${u.trimEnd()}`),o.push(`${u}${(0,C.styleText)("dim","Search:")}${p}${f}`,...y,...A);let b=[`${(0,C.styleText)("dim","\u2191/\u2193")} to select`,`${(0,C.styleText)("dim","Enter:")} confirm`,`${(0,C.styleText)("dim","Type:")} to search`],x=[`${u}${b.join(" \u2022 ")}`,m],v=this.filteredOptions.length===0?[]:Go({cursor:this.cursor,options:this.filteredOptions,columnPadding:t?3:0,rowPadding:o.length+x.length,style:(U,S)=>a(U,U.disabled?"disabled":S?"active":"inactive"),maxItems:e.maxItems,output:e.output});return[...o,...v.map(U=>`${u}${U}`),...x].join(`
186
- `)}}}}).prompt();var Ze=e=>{let t=e.active??"Yes",o=e.inactive??"No";return new Oo({active:t,inactive:o,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let i=e.withGuide??ge.withGuide,r=`${St(this.state)} `,n=i?`${(0,C.styleText)("gray",H)} `:"",s=dt(e.output,e.message,n,r),a=`${i?`${(0,C.styleText)("gray",H)}
185
+ ${c}${l}`}default:{let l=this.state==="error"?"yellow":"cyan",c=t?`${(0,y.styleText)(l,j)} `:"",u=t?(0,y.styleText)(l,We):"",p="";if(this.isNavigating||s){let v=s?n:i;p=v!==""?` ${(0,y.styleText)("dim",v)}`:""}else p=` ${this.userInputWithCursor}`;let f=this.filteredOptions.length!==r.length?(0,y.styleText)("dim",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"",b=this.filteredOptions.length===0&&i?[`${c}${(0,y.styleText)("yellow","No matches found")}`]:[],h=this.state==="error"?[`${c}${(0,y.styleText)("yellow",this.error)}`]:[];t&&o.push(`${c.trimEnd()}`),o.push(`${c}${(0,y.styleText)("dim","Search:")}${p}${f}`,...b,...h);let A=[`${(0,y.styleText)("dim","\u2191/\u2193")} to select`,`${(0,y.styleText)("dim","Enter:")} confirm`,`${(0,y.styleText)("dim","Type:")} to search`],w=[`${c}${A.join(" \u2022 ")}`,u],S=this.filteredOptions.length===0?[]:$o({cursor:this.cursor,options:this.filteredOptions,columnPadding:t?3:0,rowPadding:o.length+w.length,style:(v,K)=>a(v,v.disabled?"disabled":K?"active":"inactive"),maxItems:e.maxItems,output:e.output});return[...o,...S.map(v=>`${c}${v}`),...w].join(`
186
+ `)}}}}).prompt();var Xe=e=>{let t=e.active??"Yes",o=e.inactive??"No";return new Eo({active:t,inactive:o,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let i=e.withGuide??ge.withGuide,r=`${vt(this.state)} `,n=i?`${(0,y.styleText)("gray",j)} `:"",s=ct(e.output,e.message,n,r),a=`${i?`${(0,y.styleText)("gray",j)}
187
187
  `:""}${s}
188
- `,l=this.value?t:o;switch(this.state){case"submit":{let u=i?`${(0,C.styleText)("gray",H)} `:"";return`${a}${u}${(0,C.styleText)("dim",l)}`}case"cancel":{let u=i?`${(0,C.styleText)("gray",H)} `:"";return`${a}${u}${(0,C.styleText)(["strikethrough","dim"],l)}${i?`
189
- ${(0,C.styleText)("gray",H)}`:""}`}default:{let u=i?`${(0,C.styleText)("cyan",H)} `:"",m=i?(0,C.styleText)("cyan",Ve):"";return`${a}${u}${this.value?`${(0,C.styleText)("green",$o)} ${t}`:`${(0,C.styleText)("dim",Et)} ${(0,C.styleText)("dim",t)}`}${e.vertical?i?`
190
- ${(0,C.styleText)("cyan",H)} `:`
191
- `:` ${(0,C.styleText)("dim","/")} `}${this.value?`${(0,C.styleText)("dim",Et)} ${(0,C.styleText)("dim",o)}`:`${(0,C.styleText)("green",$o)} ${o}`}
192
- ${m}
193
- `}}}}).prompt()};var Ln=async(e,t)=>{let o={},i=Object.keys(e);for(let r of i){let n=e[r],s=await n({results:o})?.catch(a=>{throw a});if(typeof t?.onCancel=="function"&&F(s)){o[r]="canceled",t.onCancel({results:o});continue}o[r]=s}return o};var te={message:(e=[],{symbol:t=(0,C.styleText)("gray",H),secondarySymbol:o=(0,C.styleText)("gray",H),output:i=process.stdout,spacing:r=1,withGuide:n}={})=>{let s=[],a=n??ge.withGuide,l=a?o:"",u=a?`${t} `:"",m=a?`${o} `:"";for(let f=0;f<r;f++)s.push(l);let p=Array.isArray(e)?e:e.split(`
194
- `);if(p.length>0){let[f,...y]=p;f.length>0?s.push(`${u}${f}`):s.push(a?t:"");for(let A of y)A.length>0?s.push(`${m}${A}`):s.push(a?o:"")}i.write(`${s.join(`
188
+ `,l=this.value?t:o;switch(this.state){case"submit":{let c=i?`${(0,y.styleText)("gray",j)} `:"";return`${a}${c}${(0,y.styleText)("dim",l)}`}case"cancel":{let c=i?`${(0,y.styleText)("gray",j)} `:"";return`${a}${c}${(0,y.styleText)(["strikethrough","dim"],l)}${i?`
189
+ ${(0,y.styleText)("gray",j)}`:""}`}default:{let c=i?`${(0,y.styleText)("cyan",j)} `:"",u=i?(0,y.styleText)("cyan",We):"";return`${a}${c}${this.value?`${(0,y.styleText)("green",Po)} ${t}`:`${(0,y.styleText)("dim",Bt)} ${(0,y.styleText)("dim",t)}`}${e.vertical?i?`
190
+ ${(0,y.styleText)("cyan",j)} `:`
191
+ `:` ${(0,y.styleText)("dim","/")} `}${this.value?`${(0,y.styleText)("dim",Bt)} ${(0,y.styleText)("dim",o)}`:`${(0,y.styleText)("green",Po)} ${o}`}
192
+ ${u}
193
+ `}}}}).prompt()};var Hn=async(e,t)=>{let o={},i=Object.keys(e);for(let r of i){let n=e[r],s=await n({results:o})?.catch(a=>{throw a});if(typeof t?.onCancel=="function"&&k(s)){o[r]="canceled",t.onCancel({results:o});continue}o[r]=s}return o};var X={message:(e=[],{symbol:t=(0,y.styleText)("gray",j),secondarySymbol:o=(0,y.styleText)("gray",j),output:i=process.stdout,spacing:r=1,withGuide:n}={})=>{let s=[],a=n??ge.withGuide,l=a?o:"",c=a?`${t} `:"",u=a?`${o} `:"";for(let f=0;f<r;f++)s.push(l);let p=Array.isArray(e)?e:e.split(`
194
+ `);if(p.length>0){let[f,...b]=p;f.length>0?s.push(`${c}${f}`):s.push(a?t:"");for(let h of b)h.length>0?s.push(`${u}${h}`):s.push(a?o:"")}i.write(`${s.join(`
195
195
  `)}
196
- `)},info:(e,t)=>{te.message(e,{...t,symbol:(0,C.styleText)("blue",Op)})},success:(e,t)=>{te.message(e,{...t,symbol:(0,C.styleText)("green",Ep)})},step:(e,t)=>{te.message(e,{...t,symbol:(0,C.styleText)("green",or)})},warn:(e,t)=>{te.message(e,{...t,symbol:(0,C.styleText)("yellow",Bp)})},warning:(e,t)=>{te.warn(e,t)},error:(e,t)=>{te.message(e,{...t,symbol:(0,C.styleText)("red",Ip)})}},Wn=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,C.styleText)("gray",Ve)} `:"";o.write(`${i}${(0,C.styleText)("red",e)}
196
+ `)},info:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("blue",Jm)})},success:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("green",Vm)})},step:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("green",Zi)})},warn:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("yellow",zm)})},warning:(e,t)=>{X.warn(e,t)},error:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("red",Ym)})}},Qn=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",We)} `:"";o.write(`${i}${(0,y.styleText)("red",e)}
197
197
 
198
- `)},Ho=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,C.styleText)("gray",Kp)} `:"";o.write(`${i}${e}
199
- `)},Bt=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,C.styleText)("gray",H)}
200
- ${(0,C.styleText)("gray",Ve)} `:"";o.write(`${i}${e}
198
+ `)},Go=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",Hm)} `:"";o.write(`${i}${e}
199
+ `)},Ot=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",j)}
200
+ ${(0,y.styleText)("gray",We)} `:"";o.write(`${i}${e}
201
201
 
202
- `)};var so=(e,t)=>e.split(`
202
+ `)};var no=(e,t)=>e.split(`
203
203
  `).map(o=>t(o)).join(`
204
- `),Jn=e=>{let t=(i,r)=>{let n=i.label??String(i.value);return r==="disabled"?`${(0,C.styleText)("gray",$n)} ${so(n,s=>(0,C.styleText)(["strikethrough","gray"],s))}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint??"disabled"})`)}`:""}`:r==="active"?`${(0,C.styleText)("cyan",kp)} ${n}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="selected"?`${(0,C.styleText)("green",Pn)} ${so(n,s=>(0,C.styleText)("dim",s))}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="cancelled"?`${so(n,s=>(0,C.styleText)(["strikethrough","dim"],s))}`:r==="active-selected"?`${(0,C.styleText)("green",Pn)} ${n}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="submitted"?`${so(n,s=>(0,C.styleText)("dim",s))}`:`${(0,C.styleText)("dim",$n)} ${so(n,s=>(0,C.styleText)("dim",s))}`},o=e.required??!0;return new jn({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:o,cursorAt:e.cursorAt,validate(i){if(o&&(i===void 0||i.length===0))return`Please select at least one option.
205
- ${(0,C.styleText)("reset",(0,C.styleText)("dim",`Press ${(0,C.styleText)(["gray","bgWhite","inverse"]," space ")} to select, ${(0,C.styleText)("gray",(0,C.styleText)("bgWhite",(0,C.styleText)("inverse"," enter ")))} to submit`))}`},render(){let i=e.withGuide??ge.withGuide,r=dt(e.output,e.message,i?`${Mn(this.state)} `:"",`${St(this.state)} `),n=`${i?`${(0,C.styleText)("gray",H)}
204
+ `),Nn=e=>{let t=(i,r)=>{let n=i.label??String(i.value);return r==="disabled"?`${(0,y.styleText)("gray",On)} ${no(n,s=>(0,y.styleText)(["strikethrough","gray"],s))}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint??"disabled"})`)}`:""}`:r==="active"?`${(0,y.styleText)("cyan",Qm)} ${n}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="selected"?`${(0,y.styleText)("green",Bn)} ${no(n,s=>(0,y.styleText)("dim",s))}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="cancelled"?`${no(n,s=>(0,y.styleText)(["strikethrough","dim"],s))}`:r==="active-selected"?`${(0,y.styleText)("green",Bn)} ${n}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="submitted"?`${no(n,s=>(0,y.styleText)("dim",s))}`:`${(0,y.styleText)("dim",On)} ${no(n,s=>(0,y.styleText)("dim",s))}`},o=e.required??!0;return new En({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:o,cursorAt:e.cursorAt,validate(i){if(o&&(i===void 0||i.length===0))return`Please select at least one option.
205
+ ${(0,y.styleText)("reset",(0,y.styleText)("dim",`Press ${(0,y.styleText)(["gray","bgWhite","inverse"]," space ")} to select, ${(0,y.styleText)("gray",(0,y.styleText)("bgWhite",(0,y.styleText)("inverse"," enter ")))} to submit`))}`},render(){let i=e.withGuide??ge.withGuide,r=ct(e.output,e.message,i?`${$n(this.state)} `:"",`${vt(this.state)} `),n=`${i?`${(0,y.styleText)("gray",j)}
206
206
  `:""}${r}
207
- `,s=this.value??[],a=(l,u)=>{if(l.disabled)return t(l,"disabled");let m=s.includes(l.value);return u&&m?t(l,"active-selected"):m?t(l,"selected"):t(l,u?"active":"inactive")};switch(this.state){case"submit":{let l=this.options.filter(({value:m})=>s.includes(m)).map(m=>t(m,"submitted")).join((0,C.styleText)("dim",", "))||(0,C.styleText)("dim","none"),u=dt(e.output,l,i?`${(0,C.styleText)("gray",H)} `:"");return`${n}${u}`}case"cancel":{let l=this.options.filter(({value:m})=>s.includes(m)).map(m=>t(m,"cancelled")).join((0,C.styleText)("dim",", "));if(l.trim()==="")return`${n}${(0,C.styleText)("gray",H)}`;let u=dt(e.output,l,i?`${(0,C.styleText)("gray",H)} `:"");return`${n}${u}${i?`
208
- ${(0,C.styleText)("gray",H)}`:""}`}case"error":{let l=i?`${(0,C.styleText)("yellow",H)} `:"",u=this.error.split(`
209
- `).map((f,y)=>y===0?`${i?`${(0,C.styleText)("yellow",Ve)} `:""}${(0,C.styleText)("yellow",f)}`:` ${f}`).join(`
210
- `),m=n.split(`
211
- `).length,p=u.split(`
212
- `).length+1;return`${n}${l}${Go({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:m+p,style:a}).join(`
207
+ `,s=this.value??[],a=(l,c)=>{if(l.disabled)return t(l,"disabled");let u=s.includes(l.value);return c&&u?t(l,"active-selected"):u?t(l,"selected"):t(l,c?"active":"inactive")};switch(this.state){case"submit":{let l=this.options.filter(({value:u})=>s.includes(u)).map(u=>t(u,"submitted")).join((0,y.styleText)("dim",", "))||(0,y.styleText)("dim","none"),c=ct(e.output,l,i?`${(0,y.styleText)("gray",j)} `:"");return`${n}${c}`}case"cancel":{let l=this.options.filter(({value:u})=>s.includes(u)).map(u=>t(u,"cancelled")).join((0,y.styleText)("dim",", "));if(l.trim()==="")return`${n}${(0,y.styleText)("gray",j)}`;let c=ct(e.output,l,i?`${(0,y.styleText)("gray",j)} `:"");return`${n}${c}${i?`
208
+ ${(0,y.styleText)("gray",j)}`:""}`}case"error":{let l=i?`${(0,y.styleText)("yellow",j)} `:"",c=this.error.split(`
209
+ `).map((f,b)=>b===0?`${i?`${(0,y.styleText)("yellow",We)} `:""}${(0,y.styleText)("yellow",f)}`:` ${f}`).join(`
210
+ `),u=n.split(`
211
+ `).length,p=c.split(`
212
+ `).length+1;return`${n}${l}${$o({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:u+p,style:a}).join(`
213
213
  ${l}`)}
214
- ${u}
215
- `}default:{let l=i?`${(0,C.styleText)("cyan",H)} `:"",u=n.split(`
216
- `).length,m=i?2:1;return`${n}${l}${Go({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:u+m,style:a}).join(`
214
+ ${c}
215
+ `}default:{let l=i?`${(0,y.styleText)("cyan",j)} `:"",c=n.split(`
216
+ `).length,u=i?2:1;return`${n}${l}${$o({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:c+u,style:a}).join(`
217
217
  ${l}`)}
218
- ${i?(0,C.styleText)("cyan",Ve):""}
219
- `}}}}).prompt()},$p=e=>(0,C.styleText)("dim",e),Gp=(e,t,o)=>{let i={hard:!0,trim:!1},r=ct(e,t,i).split(`
220
- `),n=r.reduce((l,u)=>Math.max(ve(u),l),0),s=r.map(o).reduce((l,u)=>Math.max(ve(u),l),0),a=t-(s-n);return ct(e,a,i)},Vn=(e="",t="",o)=>{let i=o?.output??Ie.default.stdout,r=o?.withGuide??ge.withGuide,n=o?.format??$p,s=["",...Gp(e,jo(i)-6,n).split(`
221
- `).map(n),""],a=ve(t),l=Math.max(s.reduce((f,y)=>{let A=ve(y);return A>f?A:f},0),a)+2,u=s.map(f=>`${(0,C.styleText)("gray",H)} ${f}${" ".repeat(l-ve(f))}${(0,C.styleText)("gray",H)}`).join(`
222
- `),m=r?`${(0,C.styleText)("gray",H)}
223
- `:"",p=r?Rp:Tp;i.write(`${m}${(0,C.styleText)("green",or)} ${(0,C.styleText)("reset",t)} ${(0,C.styleText)("gray",Gn.repeat(Math.max(l-a-1,1))+Fp)}
224
- ${u}
225
- ${(0,C.styleText)("gray",p+Gn.repeat(l+2)+Dp)}
226
- `)},zn=e=>new Eo({validate:e.validate,mask:e.mask??_p,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??ge.withGuide,o=`${t?`${(0,C.styleText)("gray",H)}
227
- `:""}${St(this.state)} ${e.message}
228
- `,i=this.userInputWithCursor,r=this.masked;switch(this.state){case"error":{let n=t?`${(0,C.styleText)("yellow",H)} `:"",s=t?`${(0,C.styleText)("yellow",Ve)} `:"",a=r??"";return e.clearOnError&&this.clear(),`${o.trim()}
218
+ ${i?(0,y.styleText)("cyan",We):""}
219
+ `}}}}).prompt()},ep=e=>(0,y.styleText)("dim",e),tp=(e,t,o)=>{let i={hard:!0,trim:!1},r=lt(e,t,i).split(`
220
+ `),n=r.reduce((l,c)=>Math.max(Ue(c),l),0),s=r.map(o).reduce((l,c)=>Math.max(Ue(c),l),0),a=t-(s-n);return lt(e,a,i)},Mn=(e="",t="",o)=>{let i=o?.output??Ie.default.stdout,r=o?.withGuide??ge.withGuide,n=o?.format??ep,s=["",...tp(e,Io(i)-6,n).split(`
221
+ `).map(n),""],a=Ue(t),l=Math.max(s.reduce((f,b)=>{let h=Ue(b);return h>f?h:f},0),a)+2,c=s.map(f=>`${(0,y.styleText)("gray",j)} ${f}${" ".repeat(l-Ue(f))}${(0,y.styleText)("gray",j)}`).join(`
222
+ `),u=r?`${(0,y.styleText)("gray",j)}
223
+ `:"",p=r?qm:Wm;i.write(`${u}${(0,y.styleText)("green",Zi)} ${(0,y.styleText)("reset",t)} ${(0,y.styleText)("gray",Tn.repeat(Math.max(l-a-1,1))+Mm)}
224
+ ${c}
225
+ ${(0,y.styleText)("gray",p+Tn.repeat(l+2)+Lm)}
226
+ `)},qn=e=>new Bo({validate:e.validate,mask:e.mask??Nm,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??ge.withGuide,o=`${t?`${(0,y.styleText)("gray",j)}
227
+ `:""}${vt(this.state)} ${e.message}
228
+ `,i=this.userInputWithCursor,r=this.masked;switch(this.state){case"error":{let n=t?`${(0,y.styleText)("yellow",j)} `:"",s=t?`${(0,y.styleText)("yellow",We)} `:"",a=r??"";return e.clearOnError&&this.clear(),`${o.trim()}
229
229
  ${n}${a}
230
- ${s}${(0,C.styleText)("yellow",this.error)}
231
- `}case"submit":{let n=t?`${(0,C.styleText)("gray",H)} `:"",s=r?(0,C.styleText)("dim",r):"";return`${o}${n}${s}`}case"cancel":{let n=t?`${(0,C.styleText)("gray",H)} `:"",s=r?(0,C.styleText)(["strikethrough","dim"],r):"";return`${o}${n}${s}${r&&t?`
232
- ${(0,C.styleText)("gray",H)}`:""}`}default:{let n=t?`${(0,C.styleText)("cyan",H)} `:"",s=t?(0,C.styleText)("cyan",Ve):"";return`${o}${n}${i}
230
+ ${s}${(0,y.styleText)("yellow",this.error)}
231
+ `}case"submit":{let n=t?`${(0,y.styleText)("gray",j)} `:"",s=r?(0,y.styleText)("dim",r):"";return`${o}${n}${s}`}case"cancel":{let n=t?`${(0,y.styleText)("gray",j)} `:"",s=r?(0,y.styleText)(["strikethrough","dim"],r):"";return`${o}${n}${s}${r&&t?`
232
+ ${(0,y.styleText)("gray",j)}`:""}`}default:{let n=t?`${(0,y.styleText)("cyan",j)} `:"",s=t?(0,y.styleText)("cyan",We):"";return`${o}${n}${i}
233
233
  ${s}
234
- `}}}}).prompt();var IA={light:oe("\u2500","-"),heavy:oe("\u2501","="),block:oe("\u2588","#")};var Po=(e,t)=>e.includes(`
234
+ `}}}}).prompt();var Lh={light:Z("\u2500","-"),heavy:Z("\u2501","="),block:Z("\u2588","#")};var jo=(e,t)=>e.includes(`
235
235
  `)?e.split(`
236
236
  `).map(o=>t(o)).join(`
237
- `):t(e),ne=e=>{let t=(o,i)=>{let r=o.label??String(o.value);switch(i){case"disabled":return`${(0,C.styleText)("gray",Et)} ${Po(r,n=>(0,C.styleText)("gray",n))}${o.hint?` ${(0,C.styleText)("dim",`(${o.hint??"disabled"})`)}`:""}`;case"selected":return`${Po(r,n=>(0,C.styleText)("dim",n))}`;case"active":return`${(0,C.styleText)("green",$o)} ${r}${o.hint?` ${(0,C.styleText)("dim",`(${o.hint})`)}`:""}`;case"cancelled":return`${Po(r,n=>(0,C.styleText)(["strikethrough","dim"],n))}`;default:return`${(0,C.styleText)("dim",Et)} ${Po(r,n=>(0,C.styleText)("dim",n))}`}};return new Bo({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let o=e.withGuide??ge.withGuide,i=`${St(this.state)} `,r=`${Mn(this.state)} `,n=dt(e.output,e.message,r,i),s=`${o?`${(0,C.styleText)("gray",H)}
237
+ `):t(e),re=e=>{let t=(o,i)=>{let r=o.label??String(o.value);switch(i){case"disabled":return`${(0,y.styleText)("gray",Bt)} ${jo(r,n=>(0,y.styleText)("gray",n))}${o.hint?` ${(0,y.styleText)("dim",`(${o.hint??"disabled"})`)}`:""}`;case"selected":return`${jo(r,n=>(0,y.styleText)("dim",n))}`;case"active":return`${(0,y.styleText)("green",Po)} ${r}${o.hint?` ${(0,y.styleText)("dim",`(${o.hint})`)}`:""}`;case"cancelled":return`${jo(r,n=>(0,y.styleText)(["strikethrough","dim"],n))}`;default:return`${(0,y.styleText)("dim",Bt)} ${jo(r,n=>(0,y.styleText)("dim",n))}`}};return new Oo({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let o=e.withGuide??ge.withGuide,i=`${vt(this.state)} `,r=`${$n(this.state)} `,n=ct(e.output,e.message,r,i),s=`${o?`${(0,y.styleText)("gray",j)}
238
238
  `:""}${n}
239
- `;switch(this.state){case"submit":{let a=o?`${(0,C.styleText)("gray",H)} `:"",l=dt(e.output,t(this.options[this.cursor],"selected"),a);return`${s}${l}`}case"cancel":{let a=o?`${(0,C.styleText)("gray",H)} `:"",l=dt(e.output,t(this.options[this.cursor],"cancelled"),a);return`${s}${l}${o?`
240
- ${(0,C.styleText)("gray",H)}`:""}`}default:{let a=o?`${(0,C.styleText)("cyan",H)} `:"",l=o?(0,C.styleText)("cyan",Ve):"",u=s.split(`
241
- `).length,m=o?2:1;return`${s}${a}${Go({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:u+m,style:(p,f)=>t(p,p.disabled?"disabled":f?"active":"inactive")}).join(`
239
+ `;switch(this.state){case"submit":{let a=o?`${(0,y.styleText)("gray",j)} `:"",l=ct(e.output,t(this.options[this.cursor],"selected"),a);return`${s}${l}`}case"cancel":{let a=o?`${(0,y.styleText)("gray",j)} `:"",l=ct(e.output,t(this.options[this.cursor],"cancelled"),a);return`${s}${l}${o?`
240
+ ${(0,y.styleText)("gray",j)}`:""}`}default:{let a=o?`${(0,y.styleText)("cyan",j)} `:"",l=o?(0,y.styleText)("cyan",We):"",c=s.split(`
241
+ `).length,u=o?2:1;return`${s}${a}${$o({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:c+u,style:(p,f)=>t(p,p.disabled?"disabled":f?"active":"inactive")}).join(`
242
242
  ${a}`)}
243
243
  ${l}
244
- `}}}}).prompt()};var jA=`${(0,C.styleText)("gray",H)} `;var Z=e=>new Io({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??ge.withGuide,o=`${`${t?`${(0,C.styleText)("gray",H)}
245
- `:""}${St(this.state)} `}${e.message}
246
- `,i=e.placeholder?(0,C.styleText)("inverse",e.placeholder[0])+(0,C.styleText)("dim",e.placeholder.slice(1)):(0,C.styleText)(["inverse","hidden"],"_"),r=this.userInput?this.userInputWithCursor:i,n=this.value??"";switch(this.state){case"error":{let s=this.error?` ${(0,C.styleText)("yellow",this.error)}`:"",a=t?`${(0,C.styleText)("yellow",H)} `:"",l=t?(0,C.styleText)("yellow",Ve):"";return`${o.trim()}
244
+ `}}}}).prompt()};var Wh=`${(0,y.styleText)("gray",j)} `;var z=e=>new To({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??ge.withGuide,o=`${`${t?`${(0,y.styleText)("gray",j)}
245
+ `:""}${vt(this.state)} `}${e.message}
246
+ `,i=e.placeholder?(0,y.styleText)("inverse",e.placeholder[0])+(0,y.styleText)("dim",e.placeholder.slice(1)):(0,y.styleText)(["inverse","hidden"],"_"),r=this.userInput?this.userInputWithCursor:i,n=this.value??"";switch(this.state){case"error":{let s=this.error?` ${(0,y.styleText)("yellow",this.error)}`:"",a=t?`${(0,y.styleText)("yellow",j)} `:"",l=t?(0,y.styleText)("yellow",We):"";return`${o.trim()}
247
247
  ${a}${r}
248
248
  ${l}${s}
249
- `}case"submit":{let s=n?` ${(0,C.styleText)("dim",n)}`:"",a=t?(0,C.styleText)("gray",H):"";return`${o}${a}${s}`}case"cancel":{let s=n?` ${(0,C.styleText)(["strikethrough","dim"],n)}`:"",a=t?(0,C.styleText)("gray",H):"";return`${o}${a}${s}${n.trim()?`
250
- ${a}`:""}`}default:{let s=t?`${(0,C.styleText)("cyan",H)} `:"",a=t?(0,C.styleText)("cyan",Ve):"";return`${o}${s}${r}
249
+ `}case"submit":{let s=n?` ${(0,y.styleText)("dim",n)}`:"",a=t?(0,y.styleText)("gray",j):"";return`${o}${a}${s}`}case"cancel":{let s=n?` ${(0,y.styleText)(["strikethrough","dim"],n)}`:"",a=t?(0,y.styleText)("gray",j):"";return`${o}${a}${s}${n.trim()?`
250
+ ${a}`:""}`}default:{let s=t?`${(0,y.styleText)("cyan",j)} `:"",a=t?(0,y.styleText)("cyan",We):"";return`${o}${s}${r}
251
251
  ${a}
252
- `}}}}).prompt();var yo=me(Je(),1);Kt();process.env.RESEND_USER_AGENT=`resend-cli:${se}`;var ut=new TextEncoder,Zn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ao=new Uint8Array(256);for(let e=0;e<Zn.length;e++)ao[Zn.charCodeAt(e)]=e;function Qo(e){let t=Math.ceil(e.length/4)*3,o=e.length,i=0;e.length%4===3?t--:e.length%4===2?t-=2:e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);let r=new ArrayBuffer(t),n=new Uint8Array(r);for(let s=0;s<o;s+=4){let a=ao[e.charCodeAt(s)],l=ao[e.charCodeAt(s+1)],u=ao[e.charCodeAt(s+2)],m=ao[e.charCodeAt(s+3)];n[i++]=a<<2|l>>4,n[i++]=(l&15)<<4|u>>2,n[i++]=(u&3)<<6|m&63}return r}var Qp=new Map([["iso-8859-8-i","iso-8859-8"],["iso-8859-8-e","iso-8859-8"]]);function It(e){e=(e||"utf8").trim().toLowerCase(),e=Qp.get(e)||e;let t;try{t=new TextDecoder(e)}catch{t=new TextDecoder("windows-1252")}return t}async function mt(e){if("arrayBuffer"in e)return await e.arrayBuffer();let t=new FileReader;return new Promise((o,i)=>{t.onload=function(r){o(r.target.result)},t.onerror=function(r){i(t.error)},t.readAsArrayBuffer(e)})}function es(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70?String.fromCharCode(e):!1}function Np(e,t,o){let i=e.indexOf("*");i>=0&&(e=e.substr(0,i)),t=t.toUpperCase();let r;if(t==="Q"){o=o.replace(/=\s+([0-9a-fA-F])/g,"=$1").replace(/[_\s]/g," ");let n=ut.encode(o),s=[];for(let l=0,u=n.length;l<u;l++){let m=n[l];if(l<=u-2&&m===61){let p=es(n[l+1]),f=es(n[l+2]);if(p&&f){let y=parseInt(p+f,16);s.push(y),l+=2;continue}}s.push(m)}r=new ArrayBuffer(s.length);let a=new DataView(r);for(let l=0,u=s.length;l<u;l++)a.setUint8(l,s[l])}else t==="B"?r=Qo(o.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):r=ut.encode(o);return It(e).decode(r)}function kt(e){let t=!0,o=!1;for(;!o;){let i=(e||"").toString().replace(/(=\?([^?]+)\?[Bb]\?([^?]*)\?=)\s*(?==\?([^?]+)\?[Bb]\?[^?]*\?=)/g,(r,n,s,a,l)=>t&&s===l&&a.length%4===0&&!/=$/.test(a)?n+"__\0JOIN\0__":r).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g,(r,n,s,a)=>t&&s===a?n+"__\0JOIN\0__":r).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g,"").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g,"$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g,(r,n,s,a)=>Np(n,s,a));if(t&&i.indexOf("\uFFFD")>=0)t=!1;else return i}}function Mp(e,t){t=t||"utf-8";let o=[];for(let n=0;n<e.length;n++){let s=e.charAt(n);if(s==="%"&&/^[a-f0-9]{2}/i.test(e.substr(n+1,2))){let a=e.substr(n+1,2);n+=2,o.push(parseInt(a,16))}else if(s.charCodeAt(0)>126){s=ut.encode(s);for(let a=0;a<s.length;a++)o.push(s[a])}else o.push(s.charCodeAt(0))}let i=new ArrayBuffer(o.length),r=new DataView(i);for(let n=0,s=o.length;n<s;n++)r.setUint8(n,o[n]);return It(t).decode(i)}function ts(e){let t=new Map;Object.keys(e.params).forEach(o=>{let i=o.match(/\*((\d+)\*?)?$/);if(!i)return;let r=o.substr(0,i.index).toLowerCase(),n=Number(i[2])||0,s;t.has(r)?s=t.get(r):(s={charset:!1,values:[]},t.set(r,s));let a=e.params[o];n===0&&i[0].charAt(i[0].length-1)==="*"&&(i=a.match(/^([^']*)'[^']*'(.*)$/))&&(s.charset=i[1]||"utf-8",a=i[2]),s.values.push({nr:n,value:a}),delete e.params[o]}),t.forEach((o,i)=>{e.params[i]=Mp(o.values.sort((r,n)=>r.nr-n.nr).map(r=>r.value).join(""),o.charset)})}var lo=class{constructor(){this.chunks=[]}update(t){this.chunks.push(t),this.chunks.push(`
253
- `)}finalize(){return mt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var co=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.chunks=[],this.remainder=""}update(t){let o=this.decoder.decode(t);if(o=o.replace(/[^a-zA-Z0-9+\/]+/g,""),this.remainder+=o,this.remainder.length>=this.maxChunkSize){let i=Math.floor(this.remainder.length/4)*4,r;i===this.remainder.length?(r=this.remainder,this.remainder=""):(r=this.remainder.substr(0,i),this.remainder=this.remainder.substr(i)),r.length&&this.chunks.push(Qo(r))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push(Qo(this.remainder)),mt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var os=/^=[a-f0-9]{2}$/i,qp=/(?==[a-f0-9]{2})/i,Lp=/=\r?\n/g,Wp=/=[a-fA-F0-9]?$/,uo=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.remainder="",this.chunks=[]}decodeQPBytes(t){let o=new ArrayBuffer(t.length),i=new DataView(o);for(let r=0,n=t.length;r<n;r++)i.setUint8(r,parseInt(t[r],16));return o}decodeChunks(t){t=t.replace(Lp,"");let o=t.split(qp),i=[];for(let r of o){if(r.charAt(0)!=="="){i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r);continue}if(r.length===3){os.test(r)?i.push(r.substr(1)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r));continue}if(r.length>3){let n=r.substr(0,3);os.test(n)?(i.push(r.substr(1,2)),this.chunks.push(this.decodeQPBytes(i)),i=[],r=r.substr(3),this.chunks.push(r)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r))}}i.length&&this.chunks.push(this.decodeQPBytes(i))}update(t){let o=this.decoder.decode(t)+`
254
- `;if(o=this.remainder+o,o.length<this.maxChunkSize){this.remainder=o;return}this.remainder="";let i=o.match(Wp);if(i){if(i.index===0){this.remainder=o;return}this.remainder=o.substr(i.index),o=o.substr(0,i.index)}this.decodeChunks(o)}finalize(){return this.remainder.length&&(this.decodeChunks(this.remainder),this.remainder=""),mt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Jp=It(),jt=class{constructor(t){if(this.options=t||{},this.postalMime=this.options.postalMime,this.root=!!this.options.parentNode,this.childNodes=[],this.options.parentNode){if(this.parentNode=this.options.parentNode,this.depth=this.parentNode.depth+1,this.depth>this.options.maxNestingDepth)throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);this.options.parentNode.childNodes.push(this)}else this.depth=0;this.state="header",this.headerLines=[],this.headerSize=0;let i=(this.options.parentMultipartType||null)==="digest"?"message/rfc822":"text/plain";this.contentType={value:i,default:!0},this.contentTransferEncoding={value:"8bit"},this.contentDisposition={value:""},this.headers=[],this.contentDecoder=!1}setupContentDecoder(t){/base64/i.test(t)?this.contentDecoder=new co:/quoted-printable/i.test(t)?this.contentDecoder=new uo({decoder:It(this.contentType.parsed.params.charset)}):this.contentDecoder=new lo}async finalize(){if(this.state==="finished")return;this.state==="header"&&this.processHeaders();let t=this.postalMime.boundaries;for(let o=t.length-1;o>=0;o--)if(t[o].node===this){t.splice(o,1);break}await this.finalizeChildNodes(),this.content=this.contentDecoder?await this.contentDecoder.finalize():null,this.contentDecoder=!1,this.state="finished"}async finalizeChildNodes(){for(let t of this.childNodes)await t.finalize()}stripComments(t){let o="",i=0,r=!1,n=!1;for(let s=0;s<t.length;s++){let a=t.charAt(s);if(r){i===0&&(o+=a),r=!1;continue}if(a==="\\"){r=!0,i===0&&(o+=a);continue}if(a==='"'&&i===0){n=!n,o+=a;continue}if(!n){if(a==="("){i++;continue}if(a===")"&&i>0){i--;continue}}i===0&&(o+=a)}return o}parseStructuredHeader(t){t=this.stripComments(t);let o={value:!1,params:{}},i=!1,r="",n="value",s=!1,a=!1,l;for(let u=0,m=t.length;u<m;u++)switch(l=t.charAt(u),n){case"key":if(l==="="){i=r.trim().toLowerCase(),n="value",r="";break}r+=l;break;case"value":if(a)r+=l;else if(l==="\\"){a=!0;continue}else s&&l===s?s=!1:!s&&l==='"'?s=l:!s&&l===";"?(i===!1?o.value=r.trim():o.params[i]=r.trim(),n="key",r=""):r+=l;a=!1;break}return r=r.trim(),n==="value"?i===!1?o.value=r:o.params[i]=r:r&&(o.params[r.toLowerCase()]=""),o.value&&(o.value=o.value.toLowerCase()),ts(o),o}decodeFlowedText(t,o){return t.split(/\r?\n/).reduce((i,r)=>i.endsWith(" ")&&i!=="-- "&&!i.endsWith(`
252
+ `}}}}).prompt();var bo=ue(Ye(),1);Kt();process.env.RESEND_USER_AGENT=`resend-cli:${ne}`;var dt=new TextEncoder,Jn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",so=new Uint8Array(256);for(let e=0;e<Jn.length;e++)so[Jn.charCodeAt(e)]=e;function Ho(e){let t=Math.ceil(e.length/4)*3,o=e.length,i=0;e.length%4===3?t--:e.length%4===2?t-=2:e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);let r=new ArrayBuffer(t),n=new Uint8Array(r);for(let s=0;s<o;s+=4){let a=so[e.charCodeAt(s)],l=so[e.charCodeAt(s+1)],c=so[e.charCodeAt(s+2)],u=so[e.charCodeAt(s+3)];n[i++]=a<<2|l>>4,n[i++]=(l&15)<<4|c>>2,n[i++]=(c&3)<<6|u&63}return r}var ip=new Map([["iso-8859-8-i","iso-8859-8"],["iso-8859-8-e","iso-8859-8"]]);function Tt(e){e=(e||"utf8").trim().toLowerCase(),e=ip.get(e)||e;let t;try{t=new TextDecoder(e)}catch{t=new TextDecoder("windows-1252")}return t}async function ut(e){if("arrayBuffer"in e)return await e.arrayBuffer();let t=new FileReader;return new Promise((o,i)=>{t.onload=function(r){o(r.target.result)},t.onerror=function(r){i(t.error)},t.readAsArrayBuffer(e)})}function Vn(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70?String.fromCharCode(e):!1}function rp(e,t,o){let i=e.indexOf("*");i>=0&&(e=e.substr(0,i)),t=t.toUpperCase();let r;if(t==="Q"){o=o.replace(/=\s+([0-9a-fA-F])/g,"=$1").replace(/[_\s]/g," ");let n=dt.encode(o),s=[];for(let l=0,c=n.length;l<c;l++){let u=n[l];if(l<=c-2&&u===61){let p=Vn(n[l+1]),f=Vn(n[l+2]);if(p&&f){let b=parseInt(p+f,16);s.push(b),l+=2;continue}}s.push(u)}r=new ArrayBuffer(s.length);let a=new DataView(r);for(let l=0,c=s.length;l<c;l++)a.setUint8(l,s[l])}else t==="B"?r=Ho(o.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):r=dt.encode(o);return Tt(e).decode(r)}function xt(e){let t=!0,o=!1;for(;!o;){let i=(e||"").toString().replace(/(=\?([^?]+)\?[Bb]\?([^?]*)\?=)\s*(?==\?([^?]+)\?[Bb]\?[^?]*\?=)/g,(r,n,s,a,l)=>t&&s===l&&a.length%4===0&&!/=$/.test(a)?n+"__\0JOIN\0__":r).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g,(r,n,s,a)=>t&&s===a?n+"__\0JOIN\0__":r).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g,"").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g,"$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g,(r,n,s,a)=>rp(n,s,a));if(t&&i.indexOf("\uFFFD")>=0)t=!1;else return i}}function np(e,t){t=t||"utf-8";let o=[];for(let n=0;n<e.length;n++){let s=e.charAt(n);if(s==="%"&&/^[a-f0-9]{2}/i.test(e.substr(n+1,2))){let a=e.substr(n+1,2);n+=2,o.push(parseInt(a,16))}else if(s.charCodeAt(0)>126){s=dt.encode(s);for(let a=0;a<s.length;a++)o.push(s[a])}else o.push(s.charCodeAt(0))}let i=new ArrayBuffer(o.length),r=new DataView(i);for(let n=0,s=o.length;n<s;n++)r.setUint8(n,o[n]);return Tt(t).decode(i)}function zn(e){let t=new Map;Object.keys(e.params).forEach(o=>{let i=o.match(/\*((\d+)\*?)?$/);if(!i)return;let r=o.substr(0,i.index).toLowerCase(),n=Number(i[2])||0,s;t.has(r)?s=t.get(r):(s={charset:!1,values:[]},t.set(r,s));let a=e.params[o];n===0&&i[0].charAt(i[0].length-1)==="*"&&(i=a.match(/^([^']*)'[^']*'(.*)$/))&&(s.charset=i[1]||"utf-8",a=i[2]),s.values.push({nr:n,value:a}),delete e.params[o]}),t.forEach((o,i)=>{e.params[i]=np(o.values.sort((r,n)=>r.nr-n.nr).map(r=>r.value).join(""),o.charset)})}var ao=class{constructor(){this.chunks=[]}update(t){this.chunks.push(t),this.chunks.push(`
253
+ `)}finalize(){return ut(new Blob(this.chunks,{type:"application/octet-stream"}))}};var lo=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.chunks=[],this.remainder=""}update(t){let o=this.decoder.decode(t);if(o=o.replace(/[^a-zA-Z0-9+\/]+/g,""),this.remainder+=o,this.remainder.length>=this.maxChunkSize){let i=Math.floor(this.remainder.length/4)*4,r;i===this.remainder.length?(r=this.remainder,this.remainder=""):(r=this.remainder.substr(0,i),this.remainder=this.remainder.substr(i)),r.length&&this.chunks.push(Ho(r))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push(Ho(this.remainder)),ut(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Yn=/^=[a-f0-9]{2}$/i,sp=/(?==[a-f0-9]{2})/i,ap=/=\r?\n/g,lp=/=[a-fA-F0-9]?$/,co=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.remainder="",this.chunks=[]}decodeQPBytes(t){let o=new ArrayBuffer(t.length),i=new DataView(o);for(let r=0,n=t.length;r<n;r++)i.setUint8(r,parseInt(t[r],16));return o}decodeChunks(t){t=t.replace(ap,"");let o=t.split(sp),i=[];for(let r of o){if(r.charAt(0)!=="="){i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r);continue}if(r.length===3){Yn.test(r)?i.push(r.substr(1)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r));continue}if(r.length>3){let n=r.substr(0,3);Yn.test(n)?(i.push(r.substr(1,2)),this.chunks.push(this.decodeQPBytes(i)),i=[],r=r.substr(3),this.chunks.push(r)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r))}}i.length&&this.chunks.push(this.decodeQPBytes(i))}update(t){let o=this.decoder.decode(t)+`
254
+ `;if(o=this.remainder+o,o.length<this.maxChunkSize){this.remainder=o;return}this.remainder="";let i=o.match(lp);if(i){if(i.index===0){this.remainder=o;return}this.remainder=o.substr(i.index),o=o.substr(0,i.index)}this.decodeChunks(o)}finalize(){return this.remainder.length&&(this.decodeChunks(this.remainder),this.remainder=""),ut(new Blob(this.chunks,{type:"application/octet-stream"}))}};var cp=Tt(),It=class{constructor(t){if(this.options=t||{},this.postalMime=this.options.postalMime,this.root=!!this.options.parentNode,this.childNodes=[],this.options.parentNode){if(this.parentNode=this.options.parentNode,this.depth=this.parentNode.depth+1,this.depth>this.options.maxNestingDepth)throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);this.options.parentNode.childNodes.push(this)}else this.depth=0;this.state="header",this.headerLines=[],this.headerSize=0;let i=(this.options.parentMultipartType||null)==="digest"?"message/rfc822":"text/plain";this.contentType={value:i,default:!0},this.contentTransferEncoding={value:"8bit"},this.contentDisposition={value:""},this.headers=[],this.contentDecoder=!1}setupContentDecoder(t){/base64/i.test(t)?this.contentDecoder=new lo:/quoted-printable/i.test(t)?this.contentDecoder=new co({decoder:Tt(this.contentType.parsed.params.charset)}):this.contentDecoder=new ao}async finalize(){if(this.state==="finished")return;this.state==="header"&&this.processHeaders();let t=this.postalMime.boundaries;for(let o=t.length-1;o>=0;o--)if(t[o].node===this){t.splice(o,1);break}await this.finalizeChildNodes(),this.content=this.contentDecoder?await this.contentDecoder.finalize():null,this.contentDecoder=!1,this.state="finished"}async finalizeChildNodes(){for(let t of this.childNodes)await t.finalize()}stripComments(t){let o="",i=0,r=!1,n=!1;for(let s=0;s<t.length;s++){let a=t.charAt(s);if(r){i===0&&(o+=a),r=!1;continue}if(a==="\\"){r=!0,i===0&&(o+=a);continue}if(a==='"'&&i===0){n=!n,o+=a;continue}if(!n){if(a==="("){i++;continue}if(a===")"&&i>0){i--;continue}}i===0&&(o+=a)}return o}parseStructuredHeader(t){t=this.stripComments(t);let o={value:!1,params:{}},i=!1,r="",n="value",s=!1,a=!1,l;for(let c=0,u=t.length;c<u;c++)switch(l=t.charAt(c),n){case"key":if(l==="="){i=r.trim().toLowerCase(),n="value",r="";break}r+=l;break;case"value":if(a)r+=l;else if(l==="\\"){a=!0;continue}else s&&l===s?s=!1:!s&&l==='"'?s=l:!s&&l===";"?(i===!1?o.value=r.trim():o.params[i]=r.trim(),n="key",r=""):r+=l;a=!1;break}return r=r.trim(),n==="value"?i===!1?o.value=r:o.params[i]=r:r&&(o.params[r.toLowerCase()]=""),o.value&&(o.value=o.value.toLowerCase()),zn(o),o}decodeFlowedText(t,o){return t.split(/\r?\n/).reduce((i,r)=>i.endsWith(" ")&&i!=="-- "&&!i.endsWith(`
255
255
  -- `)?o?i.slice(0,-1)+r:i+r:i+`
256
- `+r).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let t=It(this.contentType.parsed.params.charset).decode(this.content);return/^flowed$/i.test(this.contentType.parsed.params.format)&&(t=this.decodeFlowedText(t,/^yes$/i.test(this.contentType.parsed.params.delsp))),t}processHeaders(){for(let t=this.headerLines.length-1;t>=0;t--){let o=this.headerLines[t];t&&/^\s/.test(o)&&(this.headerLines[t-1]+=`
257
- `+o,this.headerLines.splice(t,1))}this.rawHeaderLines=[];for(let t=this.headerLines.length-1;t>=0;t--){let o=this.headerLines[t],i=o.indexOf(":"),r=i<0?o.trim():o.substr(0,i).trim();this.rawHeaderLines.push({key:r.toLowerCase(),line:o});let n=o.replace(/\s+/g," ");i=n.indexOf(":");let s=i<0?n.trim():n.substr(0,i).trim(),a=i<0?"":n.substr(i+1).trim();switch(this.headers.push({key:s.toLowerCase(),originalKey:s,value:a}),s.toLowerCase()){case"content-type":this.contentType.default&&(this.contentType={value:a,parsed:{}});break;case"content-transfer-encoding":this.contentTransferEncoding={value:a,parsed:{}};break;case"content-disposition":this.contentDisposition={value:a,parsed:{}};break;case"content-id":this.contentId=a;break;case"content-description":this.contentDescription=a;break}}this.contentType.parsed=this.parseStructuredHeader(this.contentType.value),this.contentType.multipart=/^multipart\//i.test(this.contentType.parsed.value)?this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/")+1):!1,this.contentType.multipart&&this.contentType.parsed.params.boundary&&this.postalMime.boundaries.push({value:ut.encode(this.contentType.parsed.params.boundary),node:this}),this.contentDisposition.parsed=this.parseStructuredHeader(this.contentDisposition.value),this.contentTransferEncoding.encoding=this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(),this.setupContentDecoder(this.contentTransferEncoding.encoding)}feed(t){switch(this.state){case"header":if(!t.length)return this.state="body",this.processHeaders();if(this.headerSize+=t.length,this.headerSize>this.options.maxHeadersSize)throw new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);this.headerLines.push(Jp.decode(t));break;case"body":this.contentDecoder.update(t)}}};var Vp={"&AElig":"\xC6","&AElig;":"\xC6","&AMP":"&","&AMP;":"&","&Aacute":"\xC1","&Aacute;":"\xC1","&Abreve;":"\u0102","&Acirc":"\xC2","&Acirc;":"\xC2","&Acy;":"\u0410","&Afr;":"\u{1D504}","&Agrave":"\xC0","&Agrave;":"\xC0","&Alpha;":"\u0391","&Amacr;":"\u0100","&And;":"\u2A53","&Aogon;":"\u0104","&Aopf;":"\u{1D538}","&ApplyFunction;":"\u2061","&Aring":"\xC5","&Aring;":"\xC5","&Ascr;":"\u{1D49C}","&Assign;":"\u2254","&Atilde":"\xC3","&Atilde;":"\xC3","&Auml":"\xC4","&Auml;":"\xC4","&Backslash;":"\u2216","&Barv;":"\u2AE7","&Barwed;":"\u2306","&Bcy;":"\u0411","&Because;":"\u2235","&Bernoullis;":"\u212C","&Beta;":"\u0392","&Bfr;":"\u{1D505}","&Bopf;":"\u{1D539}","&Breve;":"\u02D8","&Bscr;":"\u212C","&Bumpeq;":"\u224E","&CHcy;":"\u0427","&COPY":"\xA9","&COPY;":"\xA9","&Cacute;":"\u0106","&Cap;":"\u22D2","&CapitalDifferentialD;":"\u2145","&Cayleys;":"\u212D","&Ccaron;":"\u010C","&Ccedil":"\xC7","&Ccedil;":"\xC7","&Ccirc;":"\u0108","&Cconint;":"\u2230","&Cdot;":"\u010A","&Cedilla;":"\xB8","&CenterDot;":"\xB7","&Cfr;":"\u212D","&Chi;":"\u03A7","&CircleDot;":"\u2299","&CircleMinus;":"\u2296","&CirclePlus;":"\u2295","&CircleTimes;":"\u2297","&ClockwiseContourIntegral;":"\u2232","&CloseCurlyDoubleQuote;":"\u201D","&CloseCurlyQuote;":"\u2019","&Colon;":"\u2237","&Colone;":"\u2A74","&Congruent;":"\u2261","&Conint;":"\u222F","&ContourIntegral;":"\u222E","&Copf;":"\u2102","&Coproduct;":"\u2210","&CounterClockwiseContourIntegral;":"\u2233","&Cross;":"\u2A2F","&Cscr;":"\u{1D49E}","&Cup;":"\u22D3","&CupCap;":"\u224D","&DD;":"\u2145","&DDotrahd;":"\u2911","&DJcy;":"\u0402","&DScy;":"\u0405","&DZcy;":"\u040F","&Dagger;":"\u2021","&Darr;":"\u21A1","&Dashv;":"\u2AE4","&Dcaron;":"\u010E","&Dcy;":"\u0414","&Del;":"\u2207","&Delta;":"\u0394","&Dfr;":"\u{1D507}","&DiacriticalAcute;":"\xB4","&DiacriticalDot;":"\u02D9","&DiacriticalDoubleAcute;":"\u02DD","&DiacriticalGrave;":"`","&DiacriticalTilde;":"\u02DC","&Diamond;":"\u22C4","&DifferentialD;":"\u2146","&Dopf;":"\u{1D53B}","&Dot;":"\xA8","&DotDot;":"\u20DC","&DotEqual;":"\u2250","&DoubleContourIntegral;":"\u222F","&DoubleDot;":"\xA8","&DoubleDownArrow;":"\u21D3","&DoubleLeftArrow;":"\u21D0","&DoubleLeftRightArrow;":"\u21D4","&DoubleLeftTee;":"\u2AE4","&DoubleLongLeftArrow;":"\u27F8","&DoubleLongLeftRightArrow;":"\u27FA","&DoubleLongRightArrow;":"\u27F9","&DoubleRightArrow;":"\u21D2","&DoubleRightTee;":"\u22A8","&DoubleUpArrow;":"\u21D1","&DoubleUpDownArrow;":"\u21D5","&DoubleVerticalBar;":"\u2225","&DownArrow;":"\u2193","&DownArrowBar;":"\u2913","&DownArrowUpArrow;":"\u21F5","&DownBreve;":"\u0311","&DownLeftRightVector;":"\u2950","&DownLeftTeeVector;":"\u295E","&DownLeftVector;":"\u21BD","&DownLeftVectorBar;":"\u2956","&DownRightTeeVector;":"\u295F","&DownRightVector;":"\u21C1","&DownRightVectorBar;":"\u2957","&DownTee;":"\u22A4","&DownTeeArrow;":"\u21A7","&Downarrow;":"\u21D3","&Dscr;":"\u{1D49F}","&Dstrok;":"\u0110","&ENG;":"\u014A","&ETH":"\xD0","&ETH;":"\xD0","&Eacute":"\xC9","&Eacute;":"\xC9","&Ecaron;":"\u011A","&Ecirc":"\xCA","&Ecirc;":"\xCA","&Ecy;":"\u042D","&Edot;":"\u0116","&Efr;":"\u{1D508}","&Egrave":"\xC8","&Egrave;":"\xC8","&Element;":"\u2208","&Emacr;":"\u0112","&EmptySmallSquare;":"\u25FB","&EmptyVerySmallSquare;":"\u25AB","&Eogon;":"\u0118","&Eopf;":"\u{1D53C}","&Epsilon;":"\u0395","&Equal;":"\u2A75","&EqualTilde;":"\u2242","&Equilibrium;":"\u21CC","&Escr;":"\u2130","&Esim;":"\u2A73","&Eta;":"\u0397","&Euml":"\xCB","&Euml;":"\xCB","&Exists;":"\u2203","&ExponentialE;":"\u2147","&Fcy;":"\u0424","&Ffr;":"\u{1D509}","&FilledSmallSquare;":"\u25FC","&FilledVerySmallSquare;":"\u25AA","&Fopf;":"\u{1D53D}","&ForAll;":"\u2200","&Fouriertrf;":"\u2131","&Fscr;":"\u2131","&GJcy;":"\u0403","&GT":">","&GT;":">","&Gamma;":"\u0393","&Gammad;":"\u03DC","&Gbreve;":"\u011E","&Gcedil;":"\u0122","&Gcirc;":"\u011C","&Gcy;":"\u0413","&Gdot;":"\u0120","&Gfr;":"\u{1D50A}","&Gg;":"\u22D9","&Gopf;":"\u{1D53E}","&GreaterEqual;":"\u2265","&GreaterEqualLess;":"\u22DB","&GreaterFullEqual;":"\u2267","&GreaterGreater;":"\u2AA2","&GreaterLess;":"\u2277","&GreaterSlantEqual;":"\u2A7E","&GreaterTilde;":"\u2273","&Gscr;":"\u{1D4A2}","&Gt;":"\u226B","&HARDcy;":"\u042A","&Hacek;":"\u02C7","&Hat;":"^","&Hcirc;":"\u0124","&Hfr;":"\u210C","&HilbertSpace;":"\u210B","&Hopf;":"\u210D","&HorizontalLine;":"\u2500","&Hscr;":"\u210B","&Hstrok;":"\u0126","&HumpDownHump;":"\u224E","&HumpEqual;":"\u224F","&IEcy;":"\u0415","&IJlig;":"\u0132","&IOcy;":"\u0401","&Iacute":"\xCD","&Iacute;":"\xCD","&Icirc":"\xCE","&Icirc;":"\xCE","&Icy;":"\u0418","&Idot;":"\u0130","&Ifr;":"\u2111","&Igrave":"\xCC","&Igrave;":"\xCC","&Im;":"\u2111","&Imacr;":"\u012A","&ImaginaryI;":"\u2148","&Implies;":"\u21D2","&Int;":"\u222C","&Integral;":"\u222B","&Intersection;":"\u22C2","&InvisibleComma;":"\u2063","&InvisibleTimes;":"\u2062","&Iogon;":"\u012E","&Iopf;":"\u{1D540}","&Iota;":"\u0399","&Iscr;":"\u2110","&Itilde;":"\u0128","&Iukcy;":"\u0406","&Iuml":"\xCF","&Iuml;":"\xCF","&Jcirc;":"\u0134","&Jcy;":"\u0419","&Jfr;":"\u{1D50D}","&Jopf;":"\u{1D541}","&Jscr;":"\u{1D4A5}","&Jsercy;":"\u0408","&Jukcy;":"\u0404","&KHcy;":"\u0425","&KJcy;":"\u040C","&Kappa;":"\u039A","&Kcedil;":"\u0136","&Kcy;":"\u041A","&Kfr;":"\u{1D50E}","&Kopf;":"\u{1D542}","&Kscr;":"\u{1D4A6}","&LJcy;":"\u0409","&LT":"<","&LT;":"<","&Lacute;":"\u0139","&Lambda;":"\u039B","&Lang;":"\u27EA","&Laplacetrf;":"\u2112","&Larr;":"\u219E","&Lcaron;":"\u013D","&Lcedil;":"\u013B","&Lcy;":"\u041B","&LeftAngleBracket;":"\u27E8","&LeftArrow;":"\u2190","&LeftArrowBar;":"\u21E4","&LeftArrowRightArrow;":"\u21C6","&LeftCeiling;":"\u2308","&LeftDoubleBracket;":"\u27E6","&LeftDownTeeVector;":"\u2961","&LeftDownVector;":"\u21C3","&LeftDownVectorBar;":"\u2959","&LeftFloor;":"\u230A","&LeftRightArrow;":"\u2194","&LeftRightVector;":"\u294E","&LeftTee;":"\u22A3","&LeftTeeArrow;":"\u21A4","&LeftTeeVector;":"\u295A","&LeftTriangle;":"\u22B2","&LeftTriangleBar;":"\u29CF","&LeftTriangleEqual;":"\u22B4","&LeftUpDownVector;":"\u2951","&LeftUpTeeVector;":"\u2960","&LeftUpVector;":"\u21BF","&LeftUpVectorBar;":"\u2958","&LeftVector;":"\u21BC","&LeftVectorBar;":"\u2952","&Leftarrow;":"\u21D0","&Leftrightarrow;":"\u21D4","&LessEqualGreater;":"\u22DA","&LessFullEqual;":"\u2266","&LessGreater;":"\u2276","&LessLess;":"\u2AA1","&LessSlantEqual;":"\u2A7D","&LessTilde;":"\u2272","&Lfr;":"\u{1D50F}","&Ll;":"\u22D8","&Lleftarrow;":"\u21DA","&Lmidot;":"\u013F","&LongLeftArrow;":"\u27F5","&LongLeftRightArrow;":"\u27F7","&LongRightArrow;":"\u27F6","&Longleftarrow;":"\u27F8","&Longleftrightarrow;":"\u27FA","&Longrightarrow;":"\u27F9","&Lopf;":"\u{1D543}","&LowerLeftArrow;":"\u2199","&LowerRightArrow;":"\u2198","&Lscr;":"\u2112","&Lsh;":"\u21B0","&Lstrok;":"\u0141","&Lt;":"\u226A","&Map;":"\u2905","&Mcy;":"\u041C","&MediumSpace;":"\u205F","&Mellintrf;":"\u2133","&Mfr;":"\u{1D510}","&MinusPlus;":"\u2213","&Mopf;":"\u{1D544}","&Mscr;":"\u2133","&Mu;":"\u039C","&NJcy;":"\u040A","&Nacute;":"\u0143","&Ncaron;":"\u0147","&Ncedil;":"\u0145","&Ncy;":"\u041D","&NegativeMediumSpace;":"\u200B","&NegativeThickSpace;":"\u200B","&NegativeThinSpace;":"\u200B","&NegativeVeryThinSpace;":"\u200B","&NestedGreaterGreater;":"\u226B","&NestedLessLess;":"\u226A","&NewLine;":`
258
- `,"&Nfr;":"\u{1D511}","&NoBreak;":"\u2060","&NonBreakingSpace;":"\xA0","&Nopf;":"\u2115","&Not;":"\u2AEC","&NotCongruent;":"\u2262","&NotCupCap;":"\u226D","&NotDoubleVerticalBar;":"\u2226","&NotElement;":"\u2209","&NotEqual;":"\u2260","&NotEqualTilde;":"\u2242\u0338","&NotExists;":"\u2204","&NotGreater;":"\u226F","&NotGreaterEqual;":"\u2271","&NotGreaterFullEqual;":"\u2267\u0338","&NotGreaterGreater;":"\u226B\u0338","&NotGreaterLess;":"\u2279","&NotGreaterSlantEqual;":"\u2A7E\u0338","&NotGreaterTilde;":"\u2275","&NotHumpDownHump;":"\u224E\u0338","&NotHumpEqual;":"\u224F\u0338","&NotLeftTriangle;":"\u22EA","&NotLeftTriangleBar;":"\u29CF\u0338","&NotLeftTriangleEqual;":"\u22EC","&NotLess;":"\u226E","&NotLessEqual;":"\u2270","&NotLessGreater;":"\u2278","&NotLessLess;":"\u226A\u0338","&NotLessSlantEqual;":"\u2A7D\u0338","&NotLessTilde;":"\u2274","&NotNestedGreaterGreater;":"\u2AA2\u0338","&NotNestedLessLess;":"\u2AA1\u0338","&NotPrecedes;":"\u2280","&NotPrecedesEqual;":"\u2AAF\u0338","&NotPrecedesSlantEqual;":"\u22E0","&NotReverseElement;":"\u220C","&NotRightTriangle;":"\u22EB","&NotRightTriangleBar;":"\u29D0\u0338","&NotRightTriangleEqual;":"\u22ED","&NotSquareSubset;":"\u228F\u0338","&NotSquareSubsetEqual;":"\u22E2","&NotSquareSuperset;":"\u2290\u0338","&NotSquareSupersetEqual;":"\u22E3","&NotSubset;":"\u2282\u20D2","&NotSubsetEqual;":"\u2288","&NotSucceeds;":"\u2281","&NotSucceedsEqual;":"\u2AB0\u0338","&NotSucceedsSlantEqual;":"\u22E1","&NotSucceedsTilde;":"\u227F\u0338","&NotSuperset;":"\u2283\u20D2","&NotSupersetEqual;":"\u2289","&NotTilde;":"\u2241","&NotTildeEqual;":"\u2244","&NotTildeFullEqual;":"\u2247","&NotTildeTilde;":"\u2249","&NotVerticalBar;":"\u2224","&Nscr;":"\u{1D4A9}","&Ntilde":"\xD1","&Ntilde;":"\xD1","&Nu;":"\u039D","&OElig;":"\u0152","&Oacute":"\xD3","&Oacute;":"\xD3","&Ocirc":"\xD4","&Ocirc;":"\xD4","&Ocy;":"\u041E","&Odblac;":"\u0150","&Ofr;":"\u{1D512}","&Ograve":"\xD2","&Ograve;":"\xD2","&Omacr;":"\u014C","&Omega;":"\u03A9","&Omicron;":"\u039F","&Oopf;":"\u{1D546}","&OpenCurlyDoubleQuote;":"\u201C","&OpenCurlyQuote;":"\u2018","&Or;":"\u2A54","&Oscr;":"\u{1D4AA}","&Oslash":"\xD8","&Oslash;":"\xD8","&Otilde":"\xD5","&Otilde;":"\xD5","&Otimes;":"\u2A37","&Ouml":"\xD6","&Ouml;":"\xD6","&OverBar;":"\u203E","&OverBrace;":"\u23DE","&OverBracket;":"\u23B4","&OverParenthesis;":"\u23DC","&PartialD;":"\u2202","&Pcy;":"\u041F","&Pfr;":"\u{1D513}","&Phi;":"\u03A6","&Pi;":"\u03A0","&PlusMinus;":"\xB1","&Poincareplane;":"\u210C","&Popf;":"\u2119","&Pr;":"\u2ABB","&Precedes;":"\u227A","&PrecedesEqual;":"\u2AAF","&PrecedesSlantEqual;":"\u227C","&PrecedesTilde;":"\u227E","&Prime;":"\u2033","&Product;":"\u220F","&Proportion;":"\u2237","&Proportional;":"\u221D","&Pscr;":"\u{1D4AB}","&Psi;":"\u03A8","&QUOT":'"',"&QUOT;":'"',"&Qfr;":"\u{1D514}","&Qopf;":"\u211A","&Qscr;":"\u{1D4AC}","&RBarr;":"\u2910","&REG":"\xAE","&REG;":"\xAE","&Racute;":"\u0154","&Rang;":"\u27EB","&Rarr;":"\u21A0","&Rarrtl;":"\u2916","&Rcaron;":"\u0158","&Rcedil;":"\u0156","&Rcy;":"\u0420","&Re;":"\u211C","&ReverseElement;":"\u220B","&ReverseEquilibrium;":"\u21CB","&ReverseUpEquilibrium;":"\u296F","&Rfr;":"\u211C","&Rho;":"\u03A1","&RightAngleBracket;":"\u27E9","&RightArrow;":"\u2192","&RightArrowBar;":"\u21E5","&RightArrowLeftArrow;":"\u21C4","&RightCeiling;":"\u2309","&RightDoubleBracket;":"\u27E7","&RightDownTeeVector;":"\u295D","&RightDownVector;":"\u21C2","&RightDownVectorBar;":"\u2955","&RightFloor;":"\u230B","&RightTee;":"\u22A2","&RightTeeArrow;":"\u21A6","&RightTeeVector;":"\u295B","&RightTriangle;":"\u22B3","&RightTriangleBar;":"\u29D0","&RightTriangleEqual;":"\u22B5","&RightUpDownVector;":"\u294F","&RightUpTeeVector;":"\u295C","&RightUpVector;":"\u21BE","&RightUpVectorBar;":"\u2954","&RightVector;":"\u21C0","&RightVectorBar;":"\u2953","&Rightarrow;":"\u21D2","&Ropf;":"\u211D","&RoundImplies;":"\u2970","&Rrightarrow;":"\u21DB","&Rscr;":"\u211B","&Rsh;":"\u21B1","&RuleDelayed;":"\u29F4","&SHCHcy;":"\u0429","&SHcy;":"\u0428","&SOFTcy;":"\u042C","&Sacute;":"\u015A","&Sc;":"\u2ABC","&Scaron;":"\u0160","&Scedil;":"\u015E","&Scirc;":"\u015C","&Scy;":"\u0421","&Sfr;":"\u{1D516}","&ShortDownArrow;":"\u2193","&ShortLeftArrow;":"\u2190","&ShortRightArrow;":"\u2192","&ShortUpArrow;":"\u2191","&Sigma;":"\u03A3","&SmallCircle;":"\u2218","&Sopf;":"\u{1D54A}","&Sqrt;":"\u221A","&Square;":"\u25A1","&SquareIntersection;":"\u2293","&SquareSubset;":"\u228F","&SquareSubsetEqual;":"\u2291","&SquareSuperset;":"\u2290","&SquareSupersetEqual;":"\u2292","&SquareUnion;":"\u2294","&Sscr;":"\u{1D4AE}","&Star;":"\u22C6","&Sub;":"\u22D0","&Subset;":"\u22D0","&SubsetEqual;":"\u2286","&Succeeds;":"\u227B","&SucceedsEqual;":"\u2AB0","&SucceedsSlantEqual;":"\u227D","&SucceedsTilde;":"\u227F","&SuchThat;":"\u220B","&Sum;":"\u2211","&Sup;":"\u22D1","&Superset;":"\u2283","&SupersetEqual;":"\u2287","&Supset;":"\u22D1","&THORN":"\xDE","&THORN;":"\xDE","&TRADE;":"\u2122","&TSHcy;":"\u040B","&TScy;":"\u0426","&Tab;":" ","&Tau;":"\u03A4","&Tcaron;":"\u0164","&Tcedil;":"\u0162","&Tcy;":"\u0422","&Tfr;":"\u{1D517}","&Therefore;":"\u2234","&Theta;":"\u0398","&ThickSpace;":"\u205F\u200A","&ThinSpace;":"\u2009","&Tilde;":"\u223C","&TildeEqual;":"\u2243","&TildeFullEqual;":"\u2245","&TildeTilde;":"\u2248","&Topf;":"\u{1D54B}","&TripleDot;":"\u20DB","&Tscr;":"\u{1D4AF}","&Tstrok;":"\u0166","&Uacute":"\xDA","&Uacute;":"\xDA","&Uarr;":"\u219F","&Uarrocir;":"\u2949","&Ubrcy;":"\u040E","&Ubreve;":"\u016C","&Ucirc":"\xDB","&Ucirc;":"\xDB","&Ucy;":"\u0423","&Udblac;":"\u0170","&Ufr;":"\u{1D518}","&Ugrave":"\xD9","&Ugrave;":"\xD9","&Umacr;":"\u016A","&UnderBar;":"_","&UnderBrace;":"\u23DF","&UnderBracket;":"\u23B5","&UnderParenthesis;":"\u23DD","&Union;":"\u22C3","&UnionPlus;":"\u228E","&Uogon;":"\u0172","&Uopf;":"\u{1D54C}","&UpArrow;":"\u2191","&UpArrowBar;":"\u2912","&UpArrowDownArrow;":"\u21C5","&UpDownArrow;":"\u2195","&UpEquilibrium;":"\u296E","&UpTee;":"\u22A5","&UpTeeArrow;":"\u21A5","&Uparrow;":"\u21D1","&Updownarrow;":"\u21D5","&UpperLeftArrow;":"\u2196","&UpperRightArrow;":"\u2197","&Upsi;":"\u03D2","&Upsilon;":"\u03A5","&Uring;":"\u016E","&Uscr;":"\u{1D4B0}","&Utilde;":"\u0168","&Uuml":"\xDC","&Uuml;":"\xDC","&VDash;":"\u22AB","&Vbar;":"\u2AEB","&Vcy;":"\u0412","&Vdash;":"\u22A9","&Vdashl;":"\u2AE6","&Vee;":"\u22C1","&Verbar;":"\u2016","&Vert;":"\u2016","&VerticalBar;":"\u2223","&VerticalLine;":"|","&VerticalSeparator;":"\u2758","&VerticalTilde;":"\u2240","&VeryThinSpace;":"\u200A","&Vfr;":"\u{1D519}","&Vopf;":"\u{1D54D}","&Vscr;":"\u{1D4B1}","&Vvdash;":"\u22AA","&Wcirc;":"\u0174","&Wedge;":"\u22C0","&Wfr;":"\u{1D51A}","&Wopf;":"\u{1D54E}","&Wscr;":"\u{1D4B2}","&Xfr;":"\u{1D51B}","&Xi;":"\u039E","&Xopf;":"\u{1D54F}","&Xscr;":"\u{1D4B3}","&YAcy;":"\u042F","&YIcy;":"\u0407","&YUcy;":"\u042E","&Yacute":"\xDD","&Yacute;":"\xDD","&Ycirc;":"\u0176","&Ycy;":"\u042B","&Yfr;":"\u{1D51C}","&Yopf;":"\u{1D550}","&Yscr;":"\u{1D4B4}","&Yuml;":"\u0178","&ZHcy;":"\u0416","&Zacute;":"\u0179","&Zcaron;":"\u017D","&Zcy;":"\u0417","&Zdot;":"\u017B","&ZeroWidthSpace;":"\u200B","&Zeta;":"\u0396","&Zfr;":"\u2128","&Zopf;":"\u2124","&Zscr;":"\u{1D4B5}","&aacute":"\xE1","&aacute;":"\xE1","&abreve;":"\u0103","&ac;":"\u223E","&acE;":"\u223E\u0333","&acd;":"\u223F","&acirc":"\xE2","&acirc;":"\xE2","&acute":"\xB4","&acute;":"\xB4","&acy;":"\u0430","&aelig":"\xE6","&aelig;":"\xE6","&af;":"\u2061","&afr;":"\u{1D51E}","&agrave":"\xE0","&agrave;":"\xE0","&alefsym;":"\u2135","&aleph;":"\u2135","&alpha;":"\u03B1","&amacr;":"\u0101","&amalg;":"\u2A3F","&amp":"&","&amp;":"&","&and;":"\u2227","&andand;":"\u2A55","&andd;":"\u2A5C","&andslope;":"\u2A58","&andv;":"\u2A5A","&ang;":"\u2220","&ange;":"\u29A4","&angle;":"\u2220","&angmsd;":"\u2221","&angmsdaa;":"\u29A8","&angmsdab;":"\u29A9","&angmsdac;":"\u29AA","&angmsdad;":"\u29AB","&angmsdae;":"\u29AC","&angmsdaf;":"\u29AD","&angmsdag;":"\u29AE","&angmsdah;":"\u29AF","&angrt;":"\u221F","&angrtvb;":"\u22BE","&angrtvbd;":"\u299D","&angsph;":"\u2222","&angst;":"\xC5","&angzarr;":"\u237C","&aogon;":"\u0105","&aopf;":"\u{1D552}","&ap;":"\u2248","&apE;":"\u2A70","&apacir;":"\u2A6F","&ape;":"\u224A","&apid;":"\u224B","&apos;":"'","&approx;":"\u2248","&approxeq;":"\u224A","&aring":"\xE5","&aring;":"\xE5","&ascr;":"\u{1D4B6}","&ast;":"*","&asymp;":"\u2248","&asympeq;":"\u224D","&atilde":"\xE3","&atilde;":"\xE3","&auml":"\xE4","&auml;":"\xE4","&awconint;":"\u2233","&awint;":"\u2A11","&bNot;":"\u2AED","&backcong;":"\u224C","&backepsilon;":"\u03F6","&backprime;":"\u2035","&backsim;":"\u223D","&backsimeq;":"\u22CD","&barvee;":"\u22BD","&barwed;":"\u2305","&barwedge;":"\u2305","&bbrk;":"\u23B5","&bbrktbrk;":"\u23B6","&bcong;":"\u224C","&bcy;":"\u0431","&bdquo;":"\u201E","&becaus;":"\u2235","&because;":"\u2235","&bemptyv;":"\u29B0","&bepsi;":"\u03F6","&bernou;":"\u212C","&beta;":"\u03B2","&beth;":"\u2136","&between;":"\u226C","&bfr;":"\u{1D51F}","&bigcap;":"\u22C2","&bigcirc;":"\u25EF","&bigcup;":"\u22C3","&bigodot;":"\u2A00","&bigoplus;":"\u2A01","&bigotimes;":"\u2A02","&bigsqcup;":"\u2A06","&bigstar;":"\u2605","&bigtriangledown;":"\u25BD","&bigtriangleup;":"\u25B3","&biguplus;":"\u2A04","&bigvee;":"\u22C1","&bigwedge;":"\u22C0","&bkarow;":"\u290D","&blacklozenge;":"\u29EB","&blacksquare;":"\u25AA","&blacktriangle;":"\u25B4","&blacktriangledown;":"\u25BE","&blacktriangleleft;":"\u25C2","&blacktriangleright;":"\u25B8","&blank;":"\u2423","&blk12;":"\u2592","&blk14;":"\u2591","&blk34;":"\u2593","&block;":"\u2588","&bne;":"=\u20E5","&bnequiv;":"\u2261\u20E5","&bnot;":"\u2310","&bopf;":"\u{1D553}","&bot;":"\u22A5","&bottom;":"\u22A5","&bowtie;":"\u22C8","&boxDL;":"\u2557","&boxDR;":"\u2554","&boxDl;":"\u2556","&boxDr;":"\u2553","&boxH;":"\u2550","&boxHD;":"\u2566","&boxHU;":"\u2569","&boxHd;":"\u2564","&boxHu;":"\u2567","&boxUL;":"\u255D","&boxUR;":"\u255A","&boxUl;":"\u255C","&boxUr;":"\u2559","&boxV;":"\u2551","&boxVH;":"\u256C","&boxVL;":"\u2563","&boxVR;":"\u2560","&boxVh;":"\u256B","&boxVl;":"\u2562","&boxVr;":"\u255F","&boxbox;":"\u29C9","&boxdL;":"\u2555","&boxdR;":"\u2552","&boxdl;":"\u2510","&boxdr;":"\u250C","&boxh;":"\u2500","&boxhD;":"\u2565","&boxhU;":"\u2568","&boxhd;":"\u252C","&boxhu;":"\u2534","&boxminus;":"\u229F","&boxplus;":"\u229E","&boxtimes;":"\u22A0","&boxuL;":"\u255B","&boxuR;":"\u2558","&boxul;":"\u2518","&boxur;":"\u2514","&boxv;":"\u2502","&boxvH;":"\u256A","&boxvL;":"\u2561","&boxvR;":"\u255E","&boxvh;":"\u253C","&boxvl;":"\u2524","&boxvr;":"\u251C","&bprime;":"\u2035","&breve;":"\u02D8","&brvbar":"\xA6","&brvbar;":"\xA6","&bscr;":"\u{1D4B7}","&bsemi;":"\u204F","&bsim;":"\u223D","&bsime;":"\u22CD","&bsol;":"\\","&bsolb;":"\u29C5","&bsolhsub;":"\u27C8","&bull;":"\u2022","&bullet;":"\u2022","&bump;":"\u224E","&bumpE;":"\u2AAE","&bumpe;":"\u224F","&bumpeq;":"\u224F","&cacute;":"\u0107","&cap;":"\u2229","&capand;":"\u2A44","&capbrcup;":"\u2A49","&capcap;":"\u2A4B","&capcup;":"\u2A47","&capdot;":"\u2A40","&caps;":"\u2229\uFE00","&caret;":"\u2041","&caron;":"\u02C7","&ccaps;":"\u2A4D","&ccaron;":"\u010D","&ccedil":"\xE7","&ccedil;":"\xE7","&ccirc;":"\u0109","&ccups;":"\u2A4C","&ccupssm;":"\u2A50","&cdot;":"\u010B","&cedil":"\xB8","&cedil;":"\xB8","&cemptyv;":"\u29B2","&cent":"\xA2","&cent;":"\xA2","&centerdot;":"\xB7","&cfr;":"\u{1D520}","&chcy;":"\u0447","&check;":"\u2713","&checkmark;":"\u2713","&chi;":"\u03C7","&cir;":"\u25CB","&cirE;":"\u29C3","&circ;":"\u02C6","&circeq;":"\u2257","&circlearrowleft;":"\u21BA","&circlearrowright;":"\u21BB","&circledR;":"\xAE","&circledS;":"\u24C8","&circledast;":"\u229B","&circledcirc;":"\u229A","&circleddash;":"\u229D","&cire;":"\u2257","&cirfnint;":"\u2A10","&cirmid;":"\u2AEF","&cirscir;":"\u29C2","&clubs;":"\u2663","&clubsuit;":"\u2663","&colon;":":","&colone;":"\u2254","&coloneq;":"\u2254","&comma;":",","&commat;":"@","&comp;":"\u2201","&compfn;":"\u2218","&complement;":"\u2201","&complexes;":"\u2102","&cong;":"\u2245","&congdot;":"\u2A6D","&conint;":"\u222E","&copf;":"\u{1D554}","&coprod;":"\u2210","&copy":"\xA9","&copy;":"\xA9","&copysr;":"\u2117","&crarr;":"\u21B5","&cross;":"\u2717","&cscr;":"\u{1D4B8}","&csub;":"\u2ACF","&csube;":"\u2AD1","&csup;":"\u2AD0","&csupe;":"\u2AD2","&ctdot;":"\u22EF","&cudarrl;":"\u2938","&cudarrr;":"\u2935","&cuepr;":"\u22DE","&cuesc;":"\u22DF","&cularr;":"\u21B6","&cularrp;":"\u293D","&cup;":"\u222A","&cupbrcap;":"\u2A48","&cupcap;":"\u2A46","&cupcup;":"\u2A4A","&cupdot;":"\u228D","&cupor;":"\u2A45","&cups;":"\u222A\uFE00","&curarr;":"\u21B7","&curarrm;":"\u293C","&curlyeqprec;":"\u22DE","&curlyeqsucc;":"\u22DF","&curlyvee;":"\u22CE","&curlywedge;":"\u22CF","&curren":"\xA4","&curren;":"\xA4","&curvearrowleft;":"\u21B6","&curvearrowright;":"\u21B7","&cuvee;":"\u22CE","&cuwed;":"\u22CF","&cwconint;":"\u2232","&cwint;":"\u2231","&cylcty;":"\u232D","&dArr;":"\u21D3","&dHar;":"\u2965","&dagger;":"\u2020","&daleth;":"\u2138","&darr;":"\u2193","&dash;":"\u2010","&dashv;":"\u22A3","&dbkarow;":"\u290F","&dblac;":"\u02DD","&dcaron;":"\u010F","&dcy;":"\u0434","&dd;":"\u2146","&ddagger;":"\u2021","&ddarr;":"\u21CA","&ddotseq;":"\u2A77","&deg":"\xB0","&deg;":"\xB0","&delta;":"\u03B4","&demptyv;":"\u29B1","&dfisht;":"\u297F","&dfr;":"\u{1D521}","&dharl;":"\u21C3","&dharr;":"\u21C2","&diam;":"\u22C4","&diamond;":"\u22C4","&diamondsuit;":"\u2666","&diams;":"\u2666","&die;":"\xA8","&digamma;":"\u03DD","&disin;":"\u22F2","&div;":"\xF7","&divide":"\xF7","&divide;":"\xF7","&divideontimes;":"\u22C7","&divonx;":"\u22C7","&djcy;":"\u0452","&dlcorn;":"\u231E","&dlcrop;":"\u230D","&dollar;":"$","&dopf;":"\u{1D555}","&dot;":"\u02D9","&doteq;":"\u2250","&doteqdot;":"\u2251","&dotminus;":"\u2238","&dotplus;":"\u2214","&dotsquare;":"\u22A1","&doublebarwedge;":"\u2306","&downarrow;":"\u2193","&downdownarrows;":"\u21CA","&downharpoonleft;":"\u21C3","&downharpoonright;":"\u21C2","&drbkarow;":"\u2910","&drcorn;":"\u231F","&drcrop;":"\u230C","&dscr;":"\u{1D4B9}","&dscy;":"\u0455","&dsol;":"\u29F6","&dstrok;":"\u0111","&dtdot;":"\u22F1","&dtri;":"\u25BF","&dtrif;":"\u25BE","&duarr;":"\u21F5","&duhar;":"\u296F","&dwangle;":"\u29A6","&dzcy;":"\u045F","&dzigrarr;":"\u27FF","&eDDot;":"\u2A77","&eDot;":"\u2251","&eacute":"\xE9","&eacute;":"\xE9","&easter;":"\u2A6E","&ecaron;":"\u011B","&ecir;":"\u2256","&ecirc":"\xEA","&ecirc;":"\xEA","&ecolon;":"\u2255","&ecy;":"\u044D","&edot;":"\u0117","&ee;":"\u2147","&efDot;":"\u2252","&efr;":"\u{1D522}","&eg;":"\u2A9A","&egrave":"\xE8","&egrave;":"\xE8","&egs;":"\u2A96","&egsdot;":"\u2A98","&el;":"\u2A99","&elinters;":"\u23E7","&ell;":"\u2113","&els;":"\u2A95","&elsdot;":"\u2A97","&emacr;":"\u0113","&empty;":"\u2205","&emptyset;":"\u2205","&emptyv;":"\u2205","&emsp13;":"\u2004","&emsp14;":"\u2005","&emsp;":"\u2003","&eng;":"\u014B","&ensp;":"\u2002","&eogon;":"\u0119","&eopf;":"\u{1D556}","&epar;":"\u22D5","&eparsl;":"\u29E3","&eplus;":"\u2A71","&epsi;":"\u03B5","&epsilon;":"\u03B5","&epsiv;":"\u03F5","&eqcirc;":"\u2256","&eqcolon;":"\u2255","&eqsim;":"\u2242","&eqslantgtr;":"\u2A96","&eqslantless;":"\u2A95","&equals;":"=","&equest;":"\u225F","&equiv;":"\u2261","&equivDD;":"\u2A78","&eqvparsl;":"\u29E5","&erDot;":"\u2253","&erarr;":"\u2971","&escr;":"\u212F","&esdot;":"\u2250","&esim;":"\u2242","&eta;":"\u03B7","&eth":"\xF0","&eth;":"\xF0","&euml":"\xEB","&euml;":"\xEB","&euro;":"\u20AC","&excl;":"!","&exist;":"\u2203","&expectation;":"\u2130","&exponentiale;":"\u2147","&fallingdotseq;":"\u2252","&fcy;":"\u0444","&female;":"\u2640","&ffilig;":"\uFB03","&fflig;":"\uFB00","&ffllig;":"\uFB04","&ffr;":"\u{1D523}","&filig;":"\uFB01","&fjlig;":"fj","&flat;":"\u266D","&fllig;":"\uFB02","&fltns;":"\u25B1","&fnof;":"\u0192","&fopf;":"\u{1D557}","&forall;":"\u2200","&fork;":"\u22D4","&forkv;":"\u2AD9","&fpartint;":"\u2A0D","&frac12":"\xBD","&frac12;":"\xBD","&frac13;":"\u2153","&frac14":"\xBC","&frac14;":"\xBC","&frac15;":"\u2155","&frac16;":"\u2159","&frac18;":"\u215B","&frac23;":"\u2154","&frac25;":"\u2156","&frac34":"\xBE","&frac34;":"\xBE","&frac35;":"\u2157","&frac38;":"\u215C","&frac45;":"\u2158","&frac56;":"\u215A","&frac58;":"\u215D","&frac78;":"\u215E","&frasl;":"\u2044","&frown;":"\u2322","&fscr;":"\u{1D4BB}","&gE;":"\u2267","&gEl;":"\u2A8C","&gacute;":"\u01F5","&gamma;":"\u03B3","&gammad;":"\u03DD","&gap;":"\u2A86","&gbreve;":"\u011F","&gcirc;":"\u011D","&gcy;":"\u0433","&gdot;":"\u0121","&ge;":"\u2265","&gel;":"\u22DB","&geq;":"\u2265","&geqq;":"\u2267","&geqslant;":"\u2A7E","&ges;":"\u2A7E","&gescc;":"\u2AA9","&gesdot;":"\u2A80","&gesdoto;":"\u2A82","&gesdotol;":"\u2A84","&gesl;":"\u22DB\uFE00","&gesles;":"\u2A94","&gfr;":"\u{1D524}","&gg;":"\u226B","&ggg;":"\u22D9","&gimel;":"\u2137","&gjcy;":"\u0453","&gl;":"\u2277","&glE;":"\u2A92","&gla;":"\u2AA5","&glj;":"\u2AA4","&gnE;":"\u2269","&gnap;":"\u2A8A","&gnapprox;":"\u2A8A","&gne;":"\u2A88","&gneq;":"\u2A88","&gneqq;":"\u2269","&gnsim;":"\u22E7","&gopf;":"\u{1D558}","&grave;":"`","&gscr;":"\u210A","&gsim;":"\u2273","&gsime;":"\u2A8E","&gsiml;":"\u2A90","&gt":">","&gt;":">","&gtcc;":"\u2AA7","&gtcir;":"\u2A7A","&gtdot;":"\u22D7","&gtlPar;":"\u2995","&gtquest;":"\u2A7C","&gtrapprox;":"\u2A86","&gtrarr;":"\u2978","&gtrdot;":"\u22D7","&gtreqless;":"\u22DB","&gtreqqless;":"\u2A8C","&gtrless;":"\u2277","&gtrsim;":"\u2273","&gvertneqq;":"\u2269\uFE00","&gvnE;":"\u2269\uFE00","&hArr;":"\u21D4","&hairsp;":"\u200A","&half;":"\xBD","&hamilt;":"\u210B","&hardcy;":"\u044A","&harr;":"\u2194","&harrcir;":"\u2948","&harrw;":"\u21AD","&hbar;":"\u210F","&hcirc;":"\u0125","&hearts;":"\u2665","&heartsuit;":"\u2665","&hellip;":"\u2026","&hercon;":"\u22B9","&hfr;":"\u{1D525}","&hksearow;":"\u2925","&hkswarow;":"\u2926","&hoarr;":"\u21FF","&homtht;":"\u223B","&hookleftarrow;":"\u21A9","&hookrightarrow;":"\u21AA","&hopf;":"\u{1D559}","&horbar;":"\u2015","&hscr;":"\u{1D4BD}","&hslash;":"\u210F","&hstrok;":"\u0127","&hybull;":"\u2043","&hyphen;":"\u2010","&iacute":"\xED","&iacute;":"\xED","&ic;":"\u2063","&icirc":"\xEE","&icirc;":"\xEE","&icy;":"\u0438","&iecy;":"\u0435","&iexcl":"\xA1","&iexcl;":"\xA1","&iff;":"\u21D4","&ifr;":"\u{1D526}","&igrave":"\xEC","&igrave;":"\xEC","&ii;":"\u2148","&iiiint;":"\u2A0C","&iiint;":"\u222D","&iinfin;":"\u29DC","&iiota;":"\u2129","&ijlig;":"\u0133","&imacr;":"\u012B","&image;":"\u2111","&imagline;":"\u2110","&imagpart;":"\u2111","&imath;":"\u0131","&imof;":"\u22B7","&imped;":"\u01B5","&in;":"\u2208","&incare;":"\u2105","&infin;":"\u221E","&infintie;":"\u29DD","&inodot;":"\u0131","&int;":"\u222B","&intcal;":"\u22BA","&integers;":"\u2124","&intercal;":"\u22BA","&intlarhk;":"\u2A17","&intprod;":"\u2A3C","&iocy;":"\u0451","&iogon;":"\u012F","&iopf;":"\u{1D55A}","&iota;":"\u03B9","&iprod;":"\u2A3C","&iquest":"\xBF","&iquest;":"\xBF","&iscr;":"\u{1D4BE}","&isin;":"\u2208","&isinE;":"\u22F9","&isindot;":"\u22F5","&isins;":"\u22F4","&isinsv;":"\u22F3","&isinv;":"\u2208","&it;":"\u2062","&itilde;":"\u0129","&iukcy;":"\u0456","&iuml":"\xEF","&iuml;":"\xEF","&jcirc;":"\u0135","&jcy;":"\u0439","&jfr;":"\u{1D527}","&jmath;":"\u0237","&jopf;":"\u{1D55B}","&jscr;":"\u{1D4BF}","&jsercy;":"\u0458","&jukcy;":"\u0454","&kappa;":"\u03BA","&kappav;":"\u03F0","&kcedil;":"\u0137","&kcy;":"\u043A","&kfr;":"\u{1D528}","&kgreen;":"\u0138","&khcy;":"\u0445","&kjcy;":"\u045C","&kopf;":"\u{1D55C}","&kscr;":"\u{1D4C0}","&lAarr;":"\u21DA","&lArr;":"\u21D0","&lAtail;":"\u291B","&lBarr;":"\u290E","&lE;":"\u2266","&lEg;":"\u2A8B","&lHar;":"\u2962","&lacute;":"\u013A","&laemptyv;":"\u29B4","&lagran;":"\u2112","&lambda;":"\u03BB","&lang;":"\u27E8","&langd;":"\u2991","&langle;":"\u27E8","&lap;":"\u2A85","&laquo":"\xAB","&laquo;":"\xAB","&larr;":"\u2190","&larrb;":"\u21E4","&larrbfs;":"\u291F","&larrfs;":"\u291D","&larrhk;":"\u21A9","&larrlp;":"\u21AB","&larrpl;":"\u2939","&larrsim;":"\u2973","&larrtl;":"\u21A2","&lat;":"\u2AAB","&latail;":"\u2919","&late;":"\u2AAD","&lates;":"\u2AAD\uFE00","&lbarr;":"\u290C","&lbbrk;":"\u2772","&lbrace;":"{","&lbrack;":"[","&lbrke;":"\u298B","&lbrksld;":"\u298F","&lbrkslu;":"\u298D","&lcaron;":"\u013E","&lcedil;":"\u013C","&lceil;":"\u2308","&lcub;":"{","&lcy;":"\u043B","&ldca;":"\u2936","&ldquo;":"\u201C","&ldquor;":"\u201E","&ldrdhar;":"\u2967","&ldrushar;":"\u294B","&ldsh;":"\u21B2","&le;":"\u2264","&leftarrow;":"\u2190","&leftarrowtail;":"\u21A2","&leftharpoondown;":"\u21BD","&leftharpoonup;":"\u21BC","&leftleftarrows;":"\u21C7","&leftrightarrow;":"\u2194","&leftrightarrows;":"\u21C6","&leftrightharpoons;":"\u21CB","&leftrightsquigarrow;":"\u21AD","&leftthreetimes;":"\u22CB","&leg;":"\u22DA","&leq;":"\u2264","&leqq;":"\u2266","&leqslant;":"\u2A7D","&les;":"\u2A7D","&lescc;":"\u2AA8","&lesdot;":"\u2A7F","&lesdoto;":"\u2A81","&lesdotor;":"\u2A83","&lesg;":"\u22DA\uFE00","&lesges;":"\u2A93","&lessapprox;":"\u2A85","&lessdot;":"\u22D6","&lesseqgtr;":"\u22DA","&lesseqqgtr;":"\u2A8B","&lessgtr;":"\u2276","&lesssim;":"\u2272","&lfisht;":"\u297C","&lfloor;":"\u230A","&lfr;":"\u{1D529}","&lg;":"\u2276","&lgE;":"\u2A91","&lhard;":"\u21BD","&lharu;":"\u21BC","&lharul;":"\u296A","&lhblk;":"\u2584","&ljcy;":"\u0459","&ll;":"\u226A","&llarr;":"\u21C7","&llcorner;":"\u231E","&llhard;":"\u296B","&lltri;":"\u25FA","&lmidot;":"\u0140","&lmoust;":"\u23B0","&lmoustache;":"\u23B0","&lnE;":"\u2268","&lnap;":"\u2A89","&lnapprox;":"\u2A89","&lne;":"\u2A87","&lneq;":"\u2A87","&lneqq;":"\u2268","&lnsim;":"\u22E6","&loang;":"\u27EC","&loarr;":"\u21FD","&lobrk;":"\u27E6","&longleftarrow;":"\u27F5","&longleftrightarrow;":"\u27F7","&longmapsto;":"\u27FC","&longrightarrow;":"\u27F6","&looparrowleft;":"\u21AB","&looparrowright;":"\u21AC","&lopar;":"\u2985","&lopf;":"\u{1D55D}","&loplus;":"\u2A2D","&lotimes;":"\u2A34","&lowast;":"\u2217","&lowbar;":"_","&loz;":"\u25CA","&lozenge;":"\u25CA","&lozf;":"\u29EB","&lpar;":"(","&lparlt;":"\u2993","&lrarr;":"\u21C6","&lrcorner;":"\u231F","&lrhar;":"\u21CB","&lrhard;":"\u296D","&lrm;":"\u200E","&lrtri;":"\u22BF","&lsaquo;":"\u2039","&lscr;":"\u{1D4C1}","&lsh;":"\u21B0","&lsim;":"\u2272","&lsime;":"\u2A8D","&lsimg;":"\u2A8F","&lsqb;":"[","&lsquo;":"\u2018","&lsquor;":"\u201A","&lstrok;":"\u0142","&lt":"<","&lt;":"<","&ltcc;":"\u2AA6","&ltcir;":"\u2A79","&ltdot;":"\u22D6","&lthree;":"\u22CB","&ltimes;":"\u22C9","&ltlarr;":"\u2976","&ltquest;":"\u2A7B","&ltrPar;":"\u2996","&ltri;":"\u25C3","&ltrie;":"\u22B4","&ltrif;":"\u25C2","&lurdshar;":"\u294A","&luruhar;":"\u2966","&lvertneqq;":"\u2268\uFE00","&lvnE;":"\u2268\uFE00","&mDDot;":"\u223A","&macr":"\xAF","&macr;":"\xAF","&male;":"\u2642","&malt;":"\u2720","&maltese;":"\u2720","&map;":"\u21A6","&mapsto;":"\u21A6","&mapstodown;":"\u21A7","&mapstoleft;":"\u21A4","&mapstoup;":"\u21A5","&marker;":"\u25AE","&mcomma;":"\u2A29","&mcy;":"\u043C","&mdash;":"\u2014","&measuredangle;":"\u2221","&mfr;":"\u{1D52A}","&mho;":"\u2127","&micro":"\xB5","&micro;":"\xB5","&mid;":"\u2223","&midast;":"*","&midcir;":"\u2AF0","&middot":"\xB7","&middot;":"\xB7","&minus;":"\u2212","&minusb;":"\u229F","&minusd;":"\u2238","&minusdu;":"\u2A2A","&mlcp;":"\u2ADB","&mldr;":"\u2026","&mnplus;":"\u2213","&models;":"\u22A7","&mopf;":"\u{1D55E}","&mp;":"\u2213","&mscr;":"\u{1D4C2}","&mstpos;":"\u223E","&mu;":"\u03BC","&multimap;":"\u22B8","&mumap;":"\u22B8","&nGg;":"\u22D9\u0338","&nGt;":"\u226B\u20D2","&nGtv;":"\u226B\u0338","&nLeftarrow;":"\u21CD","&nLeftrightarrow;":"\u21CE","&nLl;":"\u22D8\u0338","&nLt;":"\u226A\u20D2","&nLtv;":"\u226A\u0338","&nRightarrow;":"\u21CF","&nVDash;":"\u22AF","&nVdash;":"\u22AE","&nabla;":"\u2207","&nacute;":"\u0144","&nang;":"\u2220\u20D2","&nap;":"\u2249","&napE;":"\u2A70\u0338","&napid;":"\u224B\u0338","&napos;":"\u0149","&napprox;":"\u2249","&natur;":"\u266E","&natural;":"\u266E","&naturals;":"\u2115","&nbsp":"\xA0","&nbsp;":"\xA0","&nbump;":"\u224E\u0338","&nbumpe;":"\u224F\u0338","&ncap;":"\u2A43","&ncaron;":"\u0148","&ncedil;":"\u0146","&ncong;":"\u2247","&ncongdot;":"\u2A6D\u0338","&ncup;":"\u2A42","&ncy;":"\u043D","&ndash;":"\u2013","&ne;":"\u2260","&neArr;":"\u21D7","&nearhk;":"\u2924","&nearr;":"\u2197","&nearrow;":"\u2197","&nedot;":"\u2250\u0338","&nequiv;":"\u2262","&nesear;":"\u2928","&nesim;":"\u2242\u0338","&nexist;":"\u2204","&nexists;":"\u2204","&nfr;":"\u{1D52B}","&ngE;":"\u2267\u0338","&nge;":"\u2271","&ngeq;":"\u2271","&ngeqq;":"\u2267\u0338","&ngeqslant;":"\u2A7E\u0338","&nges;":"\u2A7E\u0338","&ngsim;":"\u2275","&ngt;":"\u226F","&ngtr;":"\u226F","&nhArr;":"\u21CE","&nharr;":"\u21AE","&nhpar;":"\u2AF2","&ni;":"\u220B","&nis;":"\u22FC","&nisd;":"\u22FA","&niv;":"\u220B","&njcy;":"\u045A","&nlArr;":"\u21CD","&nlE;":"\u2266\u0338","&nlarr;":"\u219A","&nldr;":"\u2025","&nle;":"\u2270","&nleftarrow;":"\u219A","&nleftrightarrow;":"\u21AE","&nleq;":"\u2270","&nleqq;":"\u2266\u0338","&nleqslant;":"\u2A7D\u0338","&nles;":"\u2A7D\u0338","&nless;":"\u226E","&nlsim;":"\u2274","&nlt;":"\u226E","&nltri;":"\u22EA","&nltrie;":"\u22EC","&nmid;":"\u2224","&nopf;":"\u{1D55F}","&not":"\xAC","&not;":"\xAC","&notin;":"\u2209","&notinE;":"\u22F9\u0338","&notindot;":"\u22F5\u0338","&notinva;":"\u2209","&notinvb;":"\u22F7","&notinvc;":"\u22F6","&notni;":"\u220C","&notniva;":"\u220C","&notnivb;":"\u22FE","&notnivc;":"\u22FD","&npar;":"\u2226","&nparallel;":"\u2226","&nparsl;":"\u2AFD\u20E5","&npart;":"\u2202\u0338","&npolint;":"\u2A14","&npr;":"\u2280","&nprcue;":"\u22E0","&npre;":"\u2AAF\u0338","&nprec;":"\u2280","&npreceq;":"\u2AAF\u0338","&nrArr;":"\u21CF","&nrarr;":"\u219B","&nrarrc;":"\u2933\u0338","&nrarrw;":"\u219D\u0338","&nrightarrow;":"\u219B","&nrtri;":"\u22EB","&nrtrie;":"\u22ED","&nsc;":"\u2281","&nsccue;":"\u22E1","&nsce;":"\u2AB0\u0338","&nscr;":"\u{1D4C3}","&nshortmid;":"\u2224","&nshortparallel;":"\u2226","&nsim;":"\u2241","&nsime;":"\u2244","&nsimeq;":"\u2244","&nsmid;":"\u2224","&nspar;":"\u2226","&nsqsube;":"\u22E2","&nsqsupe;":"\u22E3","&nsub;":"\u2284","&nsubE;":"\u2AC5\u0338","&nsube;":"\u2288","&nsubset;":"\u2282\u20D2","&nsubseteq;":"\u2288","&nsubseteqq;":"\u2AC5\u0338","&nsucc;":"\u2281","&nsucceq;":"\u2AB0\u0338","&nsup;":"\u2285","&nsupE;":"\u2AC6\u0338","&nsupe;":"\u2289","&nsupset;":"\u2283\u20D2","&nsupseteq;":"\u2289","&nsupseteqq;":"\u2AC6\u0338","&ntgl;":"\u2279","&ntilde":"\xF1","&ntilde;":"\xF1","&ntlg;":"\u2278","&ntriangleleft;":"\u22EA","&ntrianglelefteq;":"\u22EC","&ntriangleright;":"\u22EB","&ntrianglerighteq;":"\u22ED","&nu;":"\u03BD","&num;":"#","&numero;":"\u2116","&numsp;":"\u2007","&nvDash;":"\u22AD","&nvHarr;":"\u2904","&nvap;":"\u224D\u20D2","&nvdash;":"\u22AC","&nvge;":"\u2265\u20D2","&nvgt;":">\u20D2","&nvinfin;":"\u29DE","&nvlArr;":"\u2902","&nvle;":"\u2264\u20D2","&nvlt;":"<\u20D2","&nvltrie;":"\u22B4\u20D2","&nvrArr;":"\u2903","&nvrtrie;":"\u22B5\u20D2","&nvsim;":"\u223C\u20D2","&nwArr;":"\u21D6","&nwarhk;":"\u2923","&nwarr;":"\u2196","&nwarrow;":"\u2196","&nwnear;":"\u2927","&oS;":"\u24C8","&oacute":"\xF3","&oacute;":"\xF3","&oast;":"\u229B","&ocir;":"\u229A","&ocirc":"\xF4","&ocirc;":"\xF4","&ocy;":"\u043E","&odash;":"\u229D","&odblac;":"\u0151","&odiv;":"\u2A38","&odot;":"\u2299","&odsold;":"\u29BC","&oelig;":"\u0153","&ofcir;":"\u29BF","&ofr;":"\u{1D52C}","&ogon;":"\u02DB","&ograve":"\xF2","&ograve;":"\xF2","&ogt;":"\u29C1","&ohbar;":"\u29B5","&ohm;":"\u03A9","&oint;":"\u222E","&olarr;":"\u21BA","&olcir;":"\u29BE","&olcross;":"\u29BB","&oline;":"\u203E","&olt;":"\u29C0","&omacr;":"\u014D","&omega;":"\u03C9","&omicron;":"\u03BF","&omid;":"\u29B6","&ominus;":"\u2296","&oopf;":"\u{1D560}","&opar;":"\u29B7","&operp;":"\u29B9","&oplus;":"\u2295","&or;":"\u2228","&orarr;":"\u21BB","&ord;":"\u2A5D","&order;":"\u2134","&orderof;":"\u2134","&ordf":"\xAA","&ordf;":"\xAA","&ordm":"\xBA","&ordm;":"\xBA","&origof;":"\u22B6","&oror;":"\u2A56","&orslope;":"\u2A57","&orv;":"\u2A5B","&oscr;":"\u2134","&oslash":"\xF8","&oslash;":"\xF8","&osol;":"\u2298","&otilde":"\xF5","&otilde;":"\xF5","&otimes;":"\u2297","&otimesas;":"\u2A36","&ouml":"\xF6","&ouml;":"\xF6","&ovbar;":"\u233D","&par;":"\u2225","&para":"\xB6","&para;":"\xB6","&parallel;":"\u2225","&parsim;":"\u2AF3","&parsl;":"\u2AFD","&part;":"\u2202","&pcy;":"\u043F","&percnt;":"%","&period;":".","&permil;":"\u2030","&perp;":"\u22A5","&pertenk;":"\u2031","&pfr;":"\u{1D52D}","&phi;":"\u03C6","&phiv;":"\u03D5","&phmmat;":"\u2133","&phone;":"\u260E","&pi;":"\u03C0","&pitchfork;":"\u22D4","&piv;":"\u03D6","&planck;":"\u210F","&planckh;":"\u210E","&plankv;":"\u210F","&plus;":"+","&plusacir;":"\u2A23","&plusb;":"\u229E","&pluscir;":"\u2A22","&plusdo;":"\u2214","&plusdu;":"\u2A25","&pluse;":"\u2A72","&plusmn":"\xB1","&plusmn;":"\xB1","&plussim;":"\u2A26","&plustwo;":"\u2A27","&pm;":"\xB1","&pointint;":"\u2A15","&popf;":"\u{1D561}","&pound":"\xA3","&pound;":"\xA3","&pr;":"\u227A","&prE;":"\u2AB3","&prap;":"\u2AB7","&prcue;":"\u227C","&pre;":"\u2AAF","&prec;":"\u227A","&precapprox;":"\u2AB7","&preccurlyeq;":"\u227C","&preceq;":"\u2AAF","&precnapprox;":"\u2AB9","&precneqq;":"\u2AB5","&precnsim;":"\u22E8","&precsim;":"\u227E","&prime;":"\u2032","&primes;":"\u2119","&prnE;":"\u2AB5","&prnap;":"\u2AB9","&prnsim;":"\u22E8","&prod;":"\u220F","&profalar;":"\u232E","&profline;":"\u2312","&profsurf;":"\u2313","&prop;":"\u221D","&propto;":"\u221D","&prsim;":"\u227E","&prurel;":"\u22B0","&pscr;":"\u{1D4C5}","&psi;":"\u03C8","&puncsp;":"\u2008","&qfr;":"\u{1D52E}","&qint;":"\u2A0C","&qopf;":"\u{1D562}","&qprime;":"\u2057","&qscr;":"\u{1D4C6}","&quaternions;":"\u210D","&quatint;":"\u2A16","&quest;":"?","&questeq;":"\u225F","&quot":'"',"&quot;":'"',"&rAarr;":"\u21DB","&rArr;":"\u21D2","&rAtail;":"\u291C","&rBarr;":"\u290F","&rHar;":"\u2964","&race;":"\u223D\u0331","&racute;":"\u0155","&radic;":"\u221A","&raemptyv;":"\u29B3","&rang;":"\u27E9","&rangd;":"\u2992","&range;":"\u29A5","&rangle;":"\u27E9","&raquo":"\xBB","&raquo;":"\xBB","&rarr;":"\u2192","&rarrap;":"\u2975","&rarrb;":"\u21E5","&rarrbfs;":"\u2920","&rarrc;":"\u2933","&rarrfs;":"\u291E","&rarrhk;":"\u21AA","&rarrlp;":"\u21AC","&rarrpl;":"\u2945","&rarrsim;":"\u2974","&rarrtl;":"\u21A3","&rarrw;":"\u219D","&ratail;":"\u291A","&ratio;":"\u2236","&rationals;":"\u211A","&rbarr;":"\u290D","&rbbrk;":"\u2773","&rbrace;":"}","&rbrack;":"]","&rbrke;":"\u298C","&rbrksld;":"\u298E","&rbrkslu;":"\u2990","&rcaron;":"\u0159","&rcedil;":"\u0157","&rceil;":"\u2309","&rcub;":"}","&rcy;":"\u0440","&rdca;":"\u2937","&rdldhar;":"\u2969","&rdquo;":"\u201D","&rdquor;":"\u201D","&rdsh;":"\u21B3","&real;":"\u211C","&realine;":"\u211B","&realpart;":"\u211C","&reals;":"\u211D","&rect;":"\u25AD","&reg":"\xAE","&reg;":"\xAE","&rfisht;":"\u297D","&rfloor;":"\u230B","&rfr;":"\u{1D52F}","&rhard;":"\u21C1","&rharu;":"\u21C0","&rharul;":"\u296C","&rho;":"\u03C1","&rhov;":"\u03F1","&rightarrow;":"\u2192","&rightarrowtail;":"\u21A3","&rightharpoondown;":"\u21C1","&rightharpoonup;":"\u21C0","&rightleftarrows;":"\u21C4","&rightleftharpoons;":"\u21CC","&rightrightarrows;":"\u21C9","&rightsquigarrow;":"\u219D","&rightthreetimes;":"\u22CC","&ring;":"\u02DA","&risingdotseq;":"\u2253","&rlarr;":"\u21C4","&rlhar;":"\u21CC","&rlm;":"\u200F","&rmoust;":"\u23B1","&rmoustache;":"\u23B1","&rnmid;":"\u2AEE","&roang;":"\u27ED","&roarr;":"\u21FE","&robrk;":"\u27E7","&ropar;":"\u2986","&ropf;":"\u{1D563}","&roplus;":"\u2A2E","&rotimes;":"\u2A35","&rpar;":")","&rpargt;":"\u2994","&rppolint;":"\u2A12","&rrarr;":"\u21C9","&rsaquo;":"\u203A","&rscr;":"\u{1D4C7}","&rsh;":"\u21B1","&rsqb;":"]","&rsquo;":"\u2019","&rsquor;":"\u2019","&rthree;":"\u22CC","&rtimes;":"\u22CA","&rtri;":"\u25B9","&rtrie;":"\u22B5","&rtrif;":"\u25B8","&rtriltri;":"\u29CE","&ruluhar;":"\u2968","&rx;":"\u211E","&sacute;":"\u015B","&sbquo;":"\u201A","&sc;":"\u227B","&scE;":"\u2AB4","&scap;":"\u2AB8","&scaron;":"\u0161","&sccue;":"\u227D","&sce;":"\u2AB0","&scedil;":"\u015F","&scirc;":"\u015D","&scnE;":"\u2AB6","&scnap;":"\u2ABA","&scnsim;":"\u22E9","&scpolint;":"\u2A13","&scsim;":"\u227F","&scy;":"\u0441","&sdot;":"\u22C5","&sdotb;":"\u22A1","&sdote;":"\u2A66","&seArr;":"\u21D8","&searhk;":"\u2925","&searr;":"\u2198","&searrow;":"\u2198","&sect":"\xA7","&sect;":"\xA7","&semi;":";","&seswar;":"\u2929","&setminus;":"\u2216","&setmn;":"\u2216","&sext;":"\u2736","&sfr;":"\u{1D530}","&sfrown;":"\u2322","&sharp;":"\u266F","&shchcy;":"\u0449","&shcy;":"\u0448","&shortmid;":"\u2223","&shortparallel;":"\u2225","&shy":"\xAD","&shy;":"\xAD","&sigma;":"\u03C3","&sigmaf;":"\u03C2","&sigmav;":"\u03C2","&sim;":"\u223C","&simdot;":"\u2A6A","&sime;":"\u2243","&simeq;":"\u2243","&simg;":"\u2A9E","&simgE;":"\u2AA0","&siml;":"\u2A9D","&simlE;":"\u2A9F","&simne;":"\u2246","&simplus;":"\u2A24","&simrarr;":"\u2972","&slarr;":"\u2190","&smallsetminus;":"\u2216","&smashp;":"\u2A33","&smeparsl;":"\u29E4","&smid;":"\u2223","&smile;":"\u2323","&smt;":"\u2AAA","&smte;":"\u2AAC","&smtes;":"\u2AAC\uFE00","&softcy;":"\u044C","&sol;":"/","&solb;":"\u29C4","&solbar;":"\u233F","&sopf;":"\u{1D564}","&spades;":"\u2660","&spadesuit;":"\u2660","&spar;":"\u2225","&sqcap;":"\u2293","&sqcaps;":"\u2293\uFE00","&sqcup;":"\u2294","&sqcups;":"\u2294\uFE00","&sqsub;":"\u228F","&sqsube;":"\u2291","&sqsubset;":"\u228F","&sqsubseteq;":"\u2291","&sqsup;":"\u2290","&sqsupe;":"\u2292","&sqsupset;":"\u2290","&sqsupseteq;":"\u2292","&squ;":"\u25A1","&square;":"\u25A1","&squarf;":"\u25AA","&squf;":"\u25AA","&srarr;":"\u2192","&sscr;":"\u{1D4C8}","&ssetmn;":"\u2216","&ssmile;":"\u2323","&sstarf;":"\u22C6","&star;":"\u2606","&starf;":"\u2605","&straightepsilon;":"\u03F5","&straightphi;":"\u03D5","&strns;":"\xAF","&sub;":"\u2282","&subE;":"\u2AC5","&subdot;":"\u2ABD","&sube;":"\u2286","&subedot;":"\u2AC3","&submult;":"\u2AC1","&subnE;":"\u2ACB","&subne;":"\u228A","&subplus;":"\u2ABF","&subrarr;":"\u2979","&subset;":"\u2282","&subseteq;":"\u2286","&subseteqq;":"\u2AC5","&subsetneq;":"\u228A","&subsetneqq;":"\u2ACB","&subsim;":"\u2AC7","&subsub;":"\u2AD5","&subsup;":"\u2AD3","&succ;":"\u227B","&succapprox;":"\u2AB8","&succcurlyeq;":"\u227D","&succeq;":"\u2AB0","&succnapprox;":"\u2ABA","&succneqq;":"\u2AB6","&succnsim;":"\u22E9","&succsim;":"\u227F","&sum;":"\u2211","&sung;":"\u266A","&sup1":"\xB9","&sup1;":"\xB9","&sup2":"\xB2","&sup2;":"\xB2","&sup3":"\xB3","&sup3;":"\xB3","&sup;":"\u2283","&supE;":"\u2AC6","&supdot;":"\u2ABE","&supdsub;":"\u2AD8","&supe;":"\u2287","&supedot;":"\u2AC4","&suphsol;":"\u27C9","&suphsub;":"\u2AD7","&suplarr;":"\u297B","&supmult;":"\u2AC2","&supnE;":"\u2ACC","&supne;":"\u228B","&supplus;":"\u2AC0","&supset;":"\u2283","&supseteq;":"\u2287","&supseteqq;":"\u2AC6","&supsetneq;":"\u228B","&supsetneqq;":"\u2ACC","&supsim;":"\u2AC8","&supsub;":"\u2AD4","&supsup;":"\u2AD6","&swArr;":"\u21D9","&swarhk;":"\u2926","&swarr;":"\u2199","&swarrow;":"\u2199","&swnwar;":"\u292A","&szlig":"\xDF","&szlig;":"\xDF","&target;":"\u2316","&tau;":"\u03C4","&tbrk;":"\u23B4","&tcaron;":"\u0165","&tcedil;":"\u0163","&tcy;":"\u0442","&tdot;":"\u20DB","&telrec;":"\u2315","&tfr;":"\u{1D531}","&there4;":"\u2234","&therefore;":"\u2234","&theta;":"\u03B8","&thetasym;":"\u03D1","&thetav;":"\u03D1","&thickapprox;":"\u2248","&thicksim;":"\u223C","&thinsp;":"\u2009","&thkap;":"\u2248","&thksim;":"\u223C","&thorn":"\xFE","&thorn;":"\xFE","&tilde;":"\u02DC","&times":"\xD7","&times;":"\xD7","&timesb;":"\u22A0","&timesbar;":"\u2A31","&timesd;":"\u2A30","&tint;":"\u222D","&toea;":"\u2928","&top;":"\u22A4","&topbot;":"\u2336","&topcir;":"\u2AF1","&topf;":"\u{1D565}","&topfork;":"\u2ADA","&tosa;":"\u2929","&tprime;":"\u2034","&trade;":"\u2122","&triangle;":"\u25B5","&triangledown;":"\u25BF","&triangleleft;":"\u25C3","&trianglelefteq;":"\u22B4","&triangleq;":"\u225C","&triangleright;":"\u25B9","&trianglerighteq;":"\u22B5","&tridot;":"\u25EC","&trie;":"\u225C","&triminus;":"\u2A3A","&triplus;":"\u2A39","&trisb;":"\u29CD","&tritime;":"\u2A3B","&trpezium;":"\u23E2","&tscr;":"\u{1D4C9}","&tscy;":"\u0446","&tshcy;":"\u045B","&tstrok;":"\u0167","&twixt;":"\u226C","&twoheadleftarrow;":"\u219E","&twoheadrightarrow;":"\u21A0","&uArr;":"\u21D1","&uHar;":"\u2963","&uacute":"\xFA","&uacute;":"\xFA","&uarr;":"\u2191","&ubrcy;":"\u045E","&ubreve;":"\u016D","&ucirc":"\xFB","&ucirc;":"\xFB","&ucy;":"\u0443","&udarr;":"\u21C5","&udblac;":"\u0171","&udhar;":"\u296E","&ufisht;":"\u297E","&ufr;":"\u{1D532}","&ugrave":"\xF9","&ugrave;":"\xF9","&uharl;":"\u21BF","&uharr;":"\u21BE","&uhblk;":"\u2580","&ulcorn;":"\u231C","&ulcorner;":"\u231C","&ulcrop;":"\u230F","&ultri;":"\u25F8","&umacr;":"\u016B","&uml":"\xA8","&uml;":"\xA8","&uogon;":"\u0173","&uopf;":"\u{1D566}","&uparrow;":"\u2191","&updownarrow;":"\u2195","&upharpoonleft;":"\u21BF","&upharpoonright;":"\u21BE","&uplus;":"\u228E","&upsi;":"\u03C5","&upsih;":"\u03D2","&upsilon;":"\u03C5","&upuparrows;":"\u21C8","&urcorn;":"\u231D","&urcorner;":"\u231D","&urcrop;":"\u230E","&uring;":"\u016F","&urtri;":"\u25F9","&uscr;":"\u{1D4CA}","&utdot;":"\u22F0","&utilde;":"\u0169","&utri;":"\u25B5","&utrif;":"\u25B4","&uuarr;":"\u21C8","&uuml":"\xFC","&uuml;":"\xFC","&uwangle;":"\u29A7","&vArr;":"\u21D5","&vBar;":"\u2AE8","&vBarv;":"\u2AE9","&vDash;":"\u22A8","&vangrt;":"\u299C","&varepsilon;":"\u03F5","&varkappa;":"\u03F0","&varnothing;":"\u2205","&varphi;":"\u03D5","&varpi;":"\u03D6","&varpropto;":"\u221D","&varr;":"\u2195","&varrho;":"\u03F1","&varsigma;":"\u03C2","&varsubsetneq;":"\u228A\uFE00","&varsubsetneqq;":"\u2ACB\uFE00","&varsupsetneq;":"\u228B\uFE00","&varsupsetneqq;":"\u2ACC\uFE00","&vartheta;":"\u03D1","&vartriangleleft;":"\u22B2","&vartriangleright;":"\u22B3","&vcy;":"\u0432","&vdash;":"\u22A2","&vee;":"\u2228","&veebar;":"\u22BB","&veeeq;":"\u225A","&vellip;":"\u22EE","&verbar;":"|","&vert;":"|","&vfr;":"\u{1D533}","&vltri;":"\u22B2","&vnsub;":"\u2282\u20D2","&vnsup;":"\u2283\u20D2","&vopf;":"\u{1D567}","&vprop;":"\u221D","&vrtri;":"\u22B3","&vscr;":"\u{1D4CB}","&vsubnE;":"\u2ACB\uFE00","&vsubne;":"\u228A\uFE00","&vsupnE;":"\u2ACC\uFE00","&vsupne;":"\u228B\uFE00","&vzigzag;":"\u299A","&wcirc;":"\u0175","&wedbar;":"\u2A5F","&wedge;":"\u2227","&wedgeq;":"\u2259","&weierp;":"\u2118","&wfr;":"\u{1D534}","&wopf;":"\u{1D568}","&wp;":"\u2118","&wr;":"\u2240","&wreath;":"\u2240","&wscr;":"\u{1D4CC}","&xcap;":"\u22C2","&xcirc;":"\u25EF","&xcup;":"\u22C3","&xdtri;":"\u25BD","&xfr;":"\u{1D535}","&xhArr;":"\u27FA","&xharr;":"\u27F7","&xi;":"\u03BE","&xlArr;":"\u27F8","&xlarr;":"\u27F5","&xmap;":"\u27FC","&xnis;":"\u22FB","&xodot;":"\u2A00","&xopf;":"\u{1D569}","&xoplus;":"\u2A01","&xotime;":"\u2A02","&xrArr;":"\u27F9","&xrarr;":"\u27F6","&xscr;":"\u{1D4CD}","&xsqcup;":"\u2A06","&xuplus;":"\u2A04","&xutri;":"\u25B3","&xvee;":"\u22C1","&xwedge;":"\u22C0","&yacute":"\xFD","&yacute;":"\xFD","&yacy;":"\u044F","&ycirc;":"\u0177","&ycy;":"\u044B","&yen":"\xA5","&yen;":"\xA5","&yfr;":"\u{1D536}","&yicy;":"\u0457","&yopf;":"\u{1D56A}","&yscr;":"\u{1D4CE}","&yucy;":"\u044E","&yuml":"\xFF","&yuml;":"\xFF","&zacute;":"\u017A","&zcaron;":"\u017E","&zcy;":"\u0437","&zdot;":"\u017C","&zeetrf;":"\u2128","&zeta;":"\u03B6","&zfr;":"\u{1D537}","&zhcy;":"\u0436","&zigrarr;":"\u21DD","&zopf;":"\u{1D56B}","&zscr;":"\u{1D4CF}","&zwj;":"\u200D","&zwnj;":"\u200C"},rr=Vp;function zp(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,(t,o)=>{if(typeof rr[t]=="string")return rr[t];if(o.charAt(0)!=="#"||t.charAt(t.length-1)!==";")return t;let i;o.charAt(1)==="x"?i=parseInt(o.substr(2),16):i=parseInt(o.substr(1),10);let r="";return i>=55296&&i<=57343||i>1114111?"\uFFFD":(i>65535&&(i-=65536,r+=String.fromCharCode(i>>>10&1023|55296),i=56320|i&1023),r+=String.fromCharCode(i),r)})}function _t(e){return e.trim().replace(/[<>"'?&]/g,t=>{let o=t.charCodeAt(0).toString(16);return o.length<2&&(o="0"+o),"&#x"+o.toUpperCase()+";"})}function is(e){return"<div>"+_t(e).replace(/\n/g,"<br />")+"</div>"}function rs(e){return e=e.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,`
256
+ `+r).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let t=Tt(this.contentType.parsed.params.charset).decode(this.content);return/^flowed$/i.test(this.contentType.parsed.params.format)&&(t=this.decodeFlowedText(t,/^yes$/i.test(this.contentType.parsed.params.delsp))),t}processHeaders(){for(let t=this.headerLines.length-1;t>=0;t--){let o=this.headerLines[t];t&&/^\s/.test(o)&&(this.headerLines[t-1]+=`
257
+ `+o,this.headerLines.splice(t,1))}this.rawHeaderLines=[];for(let t=this.headerLines.length-1;t>=0;t--){let o=this.headerLines[t],i=o.indexOf(":"),r=i<0?o.trim():o.substr(0,i).trim();this.rawHeaderLines.push({key:r.toLowerCase(),line:o});let n=o.replace(/\s+/g," ");i=n.indexOf(":");let s=i<0?n.trim():n.substr(0,i).trim(),a=i<0?"":n.substr(i+1).trim();switch(this.headers.push({key:s.toLowerCase(),originalKey:s,value:a}),s.toLowerCase()){case"content-type":this.contentType.default&&(this.contentType={value:a,parsed:{}});break;case"content-transfer-encoding":this.contentTransferEncoding={value:a,parsed:{}};break;case"content-disposition":this.contentDisposition={value:a,parsed:{}};break;case"content-id":this.contentId=a;break;case"content-description":this.contentDescription=a;break}}this.contentType.parsed=this.parseStructuredHeader(this.contentType.value),this.contentType.multipart=/^multipart\//i.test(this.contentType.parsed.value)?this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/")+1):!1,this.contentType.multipart&&this.contentType.parsed.params.boundary&&this.postalMime.boundaries.push({value:dt.encode(this.contentType.parsed.params.boundary),node:this}),this.contentDisposition.parsed=this.parseStructuredHeader(this.contentDisposition.value),this.contentTransferEncoding.encoding=this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(),this.setupContentDecoder(this.contentTransferEncoding.encoding)}feed(t){switch(this.state){case"header":if(!t.length)return this.state="body",this.processHeaders();if(this.headerSize+=t.length,this.headerSize>this.options.maxHeadersSize)throw new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);this.headerLines.push(cp.decode(t));break;case"body":this.contentDecoder.update(t)}}};var dp={"&AElig":"\xC6","&AElig;":"\xC6","&AMP":"&","&AMP;":"&","&Aacute":"\xC1","&Aacute;":"\xC1","&Abreve;":"\u0102","&Acirc":"\xC2","&Acirc;":"\xC2","&Acy;":"\u0410","&Afr;":"\u{1D504}","&Agrave":"\xC0","&Agrave;":"\xC0","&Alpha;":"\u0391","&Amacr;":"\u0100","&And;":"\u2A53","&Aogon;":"\u0104","&Aopf;":"\u{1D538}","&ApplyFunction;":"\u2061","&Aring":"\xC5","&Aring;":"\xC5","&Ascr;":"\u{1D49C}","&Assign;":"\u2254","&Atilde":"\xC3","&Atilde;":"\xC3","&Auml":"\xC4","&Auml;":"\xC4","&Backslash;":"\u2216","&Barv;":"\u2AE7","&Barwed;":"\u2306","&Bcy;":"\u0411","&Because;":"\u2235","&Bernoullis;":"\u212C","&Beta;":"\u0392","&Bfr;":"\u{1D505}","&Bopf;":"\u{1D539}","&Breve;":"\u02D8","&Bscr;":"\u212C","&Bumpeq;":"\u224E","&CHcy;":"\u0427","&COPY":"\xA9","&COPY;":"\xA9","&Cacute;":"\u0106","&Cap;":"\u22D2","&CapitalDifferentialD;":"\u2145","&Cayleys;":"\u212D","&Ccaron;":"\u010C","&Ccedil":"\xC7","&Ccedil;":"\xC7","&Ccirc;":"\u0108","&Cconint;":"\u2230","&Cdot;":"\u010A","&Cedilla;":"\xB8","&CenterDot;":"\xB7","&Cfr;":"\u212D","&Chi;":"\u03A7","&CircleDot;":"\u2299","&CircleMinus;":"\u2296","&CirclePlus;":"\u2295","&CircleTimes;":"\u2297","&ClockwiseContourIntegral;":"\u2232","&CloseCurlyDoubleQuote;":"\u201D","&CloseCurlyQuote;":"\u2019","&Colon;":"\u2237","&Colone;":"\u2A74","&Congruent;":"\u2261","&Conint;":"\u222F","&ContourIntegral;":"\u222E","&Copf;":"\u2102","&Coproduct;":"\u2210","&CounterClockwiseContourIntegral;":"\u2233","&Cross;":"\u2A2F","&Cscr;":"\u{1D49E}","&Cup;":"\u22D3","&CupCap;":"\u224D","&DD;":"\u2145","&DDotrahd;":"\u2911","&DJcy;":"\u0402","&DScy;":"\u0405","&DZcy;":"\u040F","&Dagger;":"\u2021","&Darr;":"\u21A1","&Dashv;":"\u2AE4","&Dcaron;":"\u010E","&Dcy;":"\u0414","&Del;":"\u2207","&Delta;":"\u0394","&Dfr;":"\u{1D507}","&DiacriticalAcute;":"\xB4","&DiacriticalDot;":"\u02D9","&DiacriticalDoubleAcute;":"\u02DD","&DiacriticalGrave;":"`","&DiacriticalTilde;":"\u02DC","&Diamond;":"\u22C4","&DifferentialD;":"\u2146","&Dopf;":"\u{1D53B}","&Dot;":"\xA8","&DotDot;":"\u20DC","&DotEqual;":"\u2250","&DoubleContourIntegral;":"\u222F","&DoubleDot;":"\xA8","&DoubleDownArrow;":"\u21D3","&DoubleLeftArrow;":"\u21D0","&DoubleLeftRightArrow;":"\u21D4","&DoubleLeftTee;":"\u2AE4","&DoubleLongLeftArrow;":"\u27F8","&DoubleLongLeftRightArrow;":"\u27FA","&DoubleLongRightArrow;":"\u27F9","&DoubleRightArrow;":"\u21D2","&DoubleRightTee;":"\u22A8","&DoubleUpArrow;":"\u21D1","&DoubleUpDownArrow;":"\u21D5","&DoubleVerticalBar;":"\u2225","&DownArrow;":"\u2193","&DownArrowBar;":"\u2913","&DownArrowUpArrow;":"\u21F5","&DownBreve;":"\u0311","&DownLeftRightVector;":"\u2950","&DownLeftTeeVector;":"\u295E","&DownLeftVector;":"\u21BD","&DownLeftVectorBar;":"\u2956","&DownRightTeeVector;":"\u295F","&DownRightVector;":"\u21C1","&DownRightVectorBar;":"\u2957","&DownTee;":"\u22A4","&DownTeeArrow;":"\u21A7","&Downarrow;":"\u21D3","&Dscr;":"\u{1D49F}","&Dstrok;":"\u0110","&ENG;":"\u014A","&ETH":"\xD0","&ETH;":"\xD0","&Eacute":"\xC9","&Eacute;":"\xC9","&Ecaron;":"\u011A","&Ecirc":"\xCA","&Ecirc;":"\xCA","&Ecy;":"\u042D","&Edot;":"\u0116","&Efr;":"\u{1D508}","&Egrave":"\xC8","&Egrave;":"\xC8","&Element;":"\u2208","&Emacr;":"\u0112","&EmptySmallSquare;":"\u25FB","&EmptyVerySmallSquare;":"\u25AB","&Eogon;":"\u0118","&Eopf;":"\u{1D53C}","&Epsilon;":"\u0395","&Equal;":"\u2A75","&EqualTilde;":"\u2242","&Equilibrium;":"\u21CC","&Escr;":"\u2130","&Esim;":"\u2A73","&Eta;":"\u0397","&Euml":"\xCB","&Euml;":"\xCB","&Exists;":"\u2203","&ExponentialE;":"\u2147","&Fcy;":"\u0424","&Ffr;":"\u{1D509}","&FilledSmallSquare;":"\u25FC","&FilledVerySmallSquare;":"\u25AA","&Fopf;":"\u{1D53D}","&ForAll;":"\u2200","&Fouriertrf;":"\u2131","&Fscr;":"\u2131","&GJcy;":"\u0403","&GT":">","&GT;":">","&Gamma;":"\u0393","&Gammad;":"\u03DC","&Gbreve;":"\u011E","&Gcedil;":"\u0122","&Gcirc;":"\u011C","&Gcy;":"\u0413","&Gdot;":"\u0120","&Gfr;":"\u{1D50A}","&Gg;":"\u22D9","&Gopf;":"\u{1D53E}","&GreaterEqual;":"\u2265","&GreaterEqualLess;":"\u22DB","&GreaterFullEqual;":"\u2267","&GreaterGreater;":"\u2AA2","&GreaterLess;":"\u2277","&GreaterSlantEqual;":"\u2A7E","&GreaterTilde;":"\u2273","&Gscr;":"\u{1D4A2}","&Gt;":"\u226B","&HARDcy;":"\u042A","&Hacek;":"\u02C7","&Hat;":"^","&Hcirc;":"\u0124","&Hfr;":"\u210C","&HilbertSpace;":"\u210B","&Hopf;":"\u210D","&HorizontalLine;":"\u2500","&Hscr;":"\u210B","&Hstrok;":"\u0126","&HumpDownHump;":"\u224E","&HumpEqual;":"\u224F","&IEcy;":"\u0415","&IJlig;":"\u0132","&IOcy;":"\u0401","&Iacute":"\xCD","&Iacute;":"\xCD","&Icirc":"\xCE","&Icirc;":"\xCE","&Icy;":"\u0418","&Idot;":"\u0130","&Ifr;":"\u2111","&Igrave":"\xCC","&Igrave;":"\xCC","&Im;":"\u2111","&Imacr;":"\u012A","&ImaginaryI;":"\u2148","&Implies;":"\u21D2","&Int;":"\u222C","&Integral;":"\u222B","&Intersection;":"\u22C2","&InvisibleComma;":"\u2063","&InvisibleTimes;":"\u2062","&Iogon;":"\u012E","&Iopf;":"\u{1D540}","&Iota;":"\u0399","&Iscr;":"\u2110","&Itilde;":"\u0128","&Iukcy;":"\u0406","&Iuml":"\xCF","&Iuml;":"\xCF","&Jcirc;":"\u0134","&Jcy;":"\u0419","&Jfr;":"\u{1D50D}","&Jopf;":"\u{1D541}","&Jscr;":"\u{1D4A5}","&Jsercy;":"\u0408","&Jukcy;":"\u0404","&KHcy;":"\u0425","&KJcy;":"\u040C","&Kappa;":"\u039A","&Kcedil;":"\u0136","&Kcy;":"\u041A","&Kfr;":"\u{1D50E}","&Kopf;":"\u{1D542}","&Kscr;":"\u{1D4A6}","&LJcy;":"\u0409","&LT":"<","&LT;":"<","&Lacute;":"\u0139","&Lambda;":"\u039B","&Lang;":"\u27EA","&Laplacetrf;":"\u2112","&Larr;":"\u219E","&Lcaron;":"\u013D","&Lcedil;":"\u013B","&Lcy;":"\u041B","&LeftAngleBracket;":"\u27E8","&LeftArrow;":"\u2190","&LeftArrowBar;":"\u21E4","&LeftArrowRightArrow;":"\u21C6","&LeftCeiling;":"\u2308","&LeftDoubleBracket;":"\u27E6","&LeftDownTeeVector;":"\u2961","&LeftDownVector;":"\u21C3","&LeftDownVectorBar;":"\u2959","&LeftFloor;":"\u230A","&LeftRightArrow;":"\u2194","&LeftRightVector;":"\u294E","&LeftTee;":"\u22A3","&LeftTeeArrow;":"\u21A4","&LeftTeeVector;":"\u295A","&LeftTriangle;":"\u22B2","&LeftTriangleBar;":"\u29CF","&LeftTriangleEqual;":"\u22B4","&LeftUpDownVector;":"\u2951","&LeftUpTeeVector;":"\u2960","&LeftUpVector;":"\u21BF","&LeftUpVectorBar;":"\u2958","&LeftVector;":"\u21BC","&LeftVectorBar;":"\u2952","&Leftarrow;":"\u21D0","&Leftrightarrow;":"\u21D4","&LessEqualGreater;":"\u22DA","&LessFullEqual;":"\u2266","&LessGreater;":"\u2276","&LessLess;":"\u2AA1","&LessSlantEqual;":"\u2A7D","&LessTilde;":"\u2272","&Lfr;":"\u{1D50F}","&Ll;":"\u22D8","&Lleftarrow;":"\u21DA","&Lmidot;":"\u013F","&LongLeftArrow;":"\u27F5","&LongLeftRightArrow;":"\u27F7","&LongRightArrow;":"\u27F6","&Longleftarrow;":"\u27F8","&Longleftrightarrow;":"\u27FA","&Longrightarrow;":"\u27F9","&Lopf;":"\u{1D543}","&LowerLeftArrow;":"\u2199","&LowerRightArrow;":"\u2198","&Lscr;":"\u2112","&Lsh;":"\u21B0","&Lstrok;":"\u0141","&Lt;":"\u226A","&Map;":"\u2905","&Mcy;":"\u041C","&MediumSpace;":"\u205F","&Mellintrf;":"\u2133","&Mfr;":"\u{1D510}","&MinusPlus;":"\u2213","&Mopf;":"\u{1D544}","&Mscr;":"\u2133","&Mu;":"\u039C","&NJcy;":"\u040A","&Nacute;":"\u0143","&Ncaron;":"\u0147","&Ncedil;":"\u0145","&Ncy;":"\u041D","&NegativeMediumSpace;":"\u200B","&NegativeThickSpace;":"\u200B","&NegativeThinSpace;":"\u200B","&NegativeVeryThinSpace;":"\u200B","&NestedGreaterGreater;":"\u226B","&NestedLessLess;":"\u226A","&NewLine;":`
258
+ `,"&Nfr;":"\u{1D511}","&NoBreak;":"\u2060","&NonBreakingSpace;":"\xA0","&Nopf;":"\u2115","&Not;":"\u2AEC","&NotCongruent;":"\u2262","&NotCupCap;":"\u226D","&NotDoubleVerticalBar;":"\u2226","&NotElement;":"\u2209","&NotEqual;":"\u2260","&NotEqualTilde;":"\u2242\u0338","&NotExists;":"\u2204","&NotGreater;":"\u226F","&NotGreaterEqual;":"\u2271","&NotGreaterFullEqual;":"\u2267\u0338","&NotGreaterGreater;":"\u226B\u0338","&NotGreaterLess;":"\u2279","&NotGreaterSlantEqual;":"\u2A7E\u0338","&NotGreaterTilde;":"\u2275","&NotHumpDownHump;":"\u224E\u0338","&NotHumpEqual;":"\u224F\u0338","&NotLeftTriangle;":"\u22EA","&NotLeftTriangleBar;":"\u29CF\u0338","&NotLeftTriangleEqual;":"\u22EC","&NotLess;":"\u226E","&NotLessEqual;":"\u2270","&NotLessGreater;":"\u2278","&NotLessLess;":"\u226A\u0338","&NotLessSlantEqual;":"\u2A7D\u0338","&NotLessTilde;":"\u2274","&NotNestedGreaterGreater;":"\u2AA2\u0338","&NotNestedLessLess;":"\u2AA1\u0338","&NotPrecedes;":"\u2280","&NotPrecedesEqual;":"\u2AAF\u0338","&NotPrecedesSlantEqual;":"\u22E0","&NotReverseElement;":"\u220C","&NotRightTriangle;":"\u22EB","&NotRightTriangleBar;":"\u29D0\u0338","&NotRightTriangleEqual;":"\u22ED","&NotSquareSubset;":"\u228F\u0338","&NotSquareSubsetEqual;":"\u22E2","&NotSquareSuperset;":"\u2290\u0338","&NotSquareSupersetEqual;":"\u22E3","&NotSubset;":"\u2282\u20D2","&NotSubsetEqual;":"\u2288","&NotSucceeds;":"\u2281","&NotSucceedsEqual;":"\u2AB0\u0338","&NotSucceedsSlantEqual;":"\u22E1","&NotSucceedsTilde;":"\u227F\u0338","&NotSuperset;":"\u2283\u20D2","&NotSupersetEqual;":"\u2289","&NotTilde;":"\u2241","&NotTildeEqual;":"\u2244","&NotTildeFullEqual;":"\u2247","&NotTildeTilde;":"\u2249","&NotVerticalBar;":"\u2224","&Nscr;":"\u{1D4A9}","&Ntilde":"\xD1","&Ntilde;":"\xD1","&Nu;":"\u039D","&OElig;":"\u0152","&Oacute":"\xD3","&Oacute;":"\xD3","&Ocirc":"\xD4","&Ocirc;":"\xD4","&Ocy;":"\u041E","&Odblac;":"\u0150","&Ofr;":"\u{1D512}","&Ograve":"\xD2","&Ograve;":"\xD2","&Omacr;":"\u014C","&Omega;":"\u03A9","&Omicron;":"\u039F","&Oopf;":"\u{1D546}","&OpenCurlyDoubleQuote;":"\u201C","&OpenCurlyQuote;":"\u2018","&Or;":"\u2A54","&Oscr;":"\u{1D4AA}","&Oslash":"\xD8","&Oslash;":"\xD8","&Otilde":"\xD5","&Otilde;":"\xD5","&Otimes;":"\u2A37","&Ouml":"\xD6","&Ouml;":"\xD6","&OverBar;":"\u203E","&OverBrace;":"\u23DE","&OverBracket;":"\u23B4","&OverParenthesis;":"\u23DC","&PartialD;":"\u2202","&Pcy;":"\u041F","&Pfr;":"\u{1D513}","&Phi;":"\u03A6","&Pi;":"\u03A0","&PlusMinus;":"\xB1","&Poincareplane;":"\u210C","&Popf;":"\u2119","&Pr;":"\u2ABB","&Precedes;":"\u227A","&PrecedesEqual;":"\u2AAF","&PrecedesSlantEqual;":"\u227C","&PrecedesTilde;":"\u227E","&Prime;":"\u2033","&Product;":"\u220F","&Proportion;":"\u2237","&Proportional;":"\u221D","&Pscr;":"\u{1D4AB}","&Psi;":"\u03A8","&QUOT":'"',"&QUOT;":'"',"&Qfr;":"\u{1D514}","&Qopf;":"\u211A","&Qscr;":"\u{1D4AC}","&RBarr;":"\u2910","&REG":"\xAE","&REG;":"\xAE","&Racute;":"\u0154","&Rang;":"\u27EB","&Rarr;":"\u21A0","&Rarrtl;":"\u2916","&Rcaron;":"\u0158","&Rcedil;":"\u0156","&Rcy;":"\u0420","&Re;":"\u211C","&ReverseElement;":"\u220B","&ReverseEquilibrium;":"\u21CB","&ReverseUpEquilibrium;":"\u296F","&Rfr;":"\u211C","&Rho;":"\u03A1","&RightAngleBracket;":"\u27E9","&RightArrow;":"\u2192","&RightArrowBar;":"\u21E5","&RightArrowLeftArrow;":"\u21C4","&RightCeiling;":"\u2309","&RightDoubleBracket;":"\u27E7","&RightDownTeeVector;":"\u295D","&RightDownVector;":"\u21C2","&RightDownVectorBar;":"\u2955","&RightFloor;":"\u230B","&RightTee;":"\u22A2","&RightTeeArrow;":"\u21A6","&RightTeeVector;":"\u295B","&RightTriangle;":"\u22B3","&RightTriangleBar;":"\u29D0","&RightTriangleEqual;":"\u22B5","&RightUpDownVector;":"\u294F","&RightUpTeeVector;":"\u295C","&RightUpVector;":"\u21BE","&RightUpVectorBar;":"\u2954","&RightVector;":"\u21C0","&RightVectorBar;":"\u2953","&Rightarrow;":"\u21D2","&Ropf;":"\u211D","&RoundImplies;":"\u2970","&Rrightarrow;":"\u21DB","&Rscr;":"\u211B","&Rsh;":"\u21B1","&RuleDelayed;":"\u29F4","&SHCHcy;":"\u0429","&SHcy;":"\u0428","&SOFTcy;":"\u042C","&Sacute;":"\u015A","&Sc;":"\u2ABC","&Scaron;":"\u0160","&Scedil;":"\u015E","&Scirc;":"\u015C","&Scy;":"\u0421","&Sfr;":"\u{1D516}","&ShortDownArrow;":"\u2193","&ShortLeftArrow;":"\u2190","&ShortRightArrow;":"\u2192","&ShortUpArrow;":"\u2191","&Sigma;":"\u03A3","&SmallCircle;":"\u2218","&Sopf;":"\u{1D54A}","&Sqrt;":"\u221A","&Square;":"\u25A1","&SquareIntersection;":"\u2293","&SquareSubset;":"\u228F","&SquareSubsetEqual;":"\u2291","&SquareSuperset;":"\u2290","&SquareSupersetEqual;":"\u2292","&SquareUnion;":"\u2294","&Sscr;":"\u{1D4AE}","&Star;":"\u22C6","&Sub;":"\u22D0","&Subset;":"\u22D0","&SubsetEqual;":"\u2286","&Succeeds;":"\u227B","&SucceedsEqual;":"\u2AB0","&SucceedsSlantEqual;":"\u227D","&SucceedsTilde;":"\u227F","&SuchThat;":"\u220B","&Sum;":"\u2211","&Sup;":"\u22D1","&Superset;":"\u2283","&SupersetEqual;":"\u2287","&Supset;":"\u22D1","&THORN":"\xDE","&THORN;":"\xDE","&TRADE;":"\u2122","&TSHcy;":"\u040B","&TScy;":"\u0426","&Tab;":" ","&Tau;":"\u03A4","&Tcaron;":"\u0164","&Tcedil;":"\u0162","&Tcy;":"\u0422","&Tfr;":"\u{1D517}","&Therefore;":"\u2234","&Theta;":"\u0398","&ThickSpace;":"\u205F\u200A","&ThinSpace;":"\u2009","&Tilde;":"\u223C","&TildeEqual;":"\u2243","&TildeFullEqual;":"\u2245","&TildeTilde;":"\u2248","&Topf;":"\u{1D54B}","&TripleDot;":"\u20DB","&Tscr;":"\u{1D4AF}","&Tstrok;":"\u0166","&Uacute":"\xDA","&Uacute;":"\xDA","&Uarr;":"\u219F","&Uarrocir;":"\u2949","&Ubrcy;":"\u040E","&Ubreve;":"\u016C","&Ucirc":"\xDB","&Ucirc;":"\xDB","&Ucy;":"\u0423","&Udblac;":"\u0170","&Ufr;":"\u{1D518}","&Ugrave":"\xD9","&Ugrave;":"\xD9","&Umacr;":"\u016A","&UnderBar;":"_","&UnderBrace;":"\u23DF","&UnderBracket;":"\u23B5","&UnderParenthesis;":"\u23DD","&Union;":"\u22C3","&UnionPlus;":"\u228E","&Uogon;":"\u0172","&Uopf;":"\u{1D54C}","&UpArrow;":"\u2191","&UpArrowBar;":"\u2912","&UpArrowDownArrow;":"\u21C5","&UpDownArrow;":"\u2195","&UpEquilibrium;":"\u296E","&UpTee;":"\u22A5","&UpTeeArrow;":"\u21A5","&Uparrow;":"\u21D1","&Updownarrow;":"\u21D5","&UpperLeftArrow;":"\u2196","&UpperRightArrow;":"\u2197","&Upsi;":"\u03D2","&Upsilon;":"\u03A5","&Uring;":"\u016E","&Uscr;":"\u{1D4B0}","&Utilde;":"\u0168","&Uuml":"\xDC","&Uuml;":"\xDC","&VDash;":"\u22AB","&Vbar;":"\u2AEB","&Vcy;":"\u0412","&Vdash;":"\u22A9","&Vdashl;":"\u2AE6","&Vee;":"\u22C1","&Verbar;":"\u2016","&Vert;":"\u2016","&VerticalBar;":"\u2223","&VerticalLine;":"|","&VerticalSeparator;":"\u2758","&VerticalTilde;":"\u2240","&VeryThinSpace;":"\u200A","&Vfr;":"\u{1D519}","&Vopf;":"\u{1D54D}","&Vscr;":"\u{1D4B1}","&Vvdash;":"\u22AA","&Wcirc;":"\u0174","&Wedge;":"\u22C0","&Wfr;":"\u{1D51A}","&Wopf;":"\u{1D54E}","&Wscr;":"\u{1D4B2}","&Xfr;":"\u{1D51B}","&Xi;":"\u039E","&Xopf;":"\u{1D54F}","&Xscr;":"\u{1D4B3}","&YAcy;":"\u042F","&YIcy;":"\u0407","&YUcy;":"\u042E","&Yacute":"\xDD","&Yacute;":"\xDD","&Ycirc;":"\u0176","&Ycy;":"\u042B","&Yfr;":"\u{1D51C}","&Yopf;":"\u{1D550}","&Yscr;":"\u{1D4B4}","&Yuml;":"\u0178","&ZHcy;":"\u0416","&Zacute;":"\u0179","&Zcaron;":"\u017D","&Zcy;":"\u0417","&Zdot;":"\u017B","&ZeroWidthSpace;":"\u200B","&Zeta;":"\u0396","&Zfr;":"\u2128","&Zopf;":"\u2124","&Zscr;":"\u{1D4B5}","&aacute":"\xE1","&aacute;":"\xE1","&abreve;":"\u0103","&ac;":"\u223E","&acE;":"\u223E\u0333","&acd;":"\u223F","&acirc":"\xE2","&acirc;":"\xE2","&acute":"\xB4","&acute;":"\xB4","&acy;":"\u0430","&aelig":"\xE6","&aelig;":"\xE6","&af;":"\u2061","&afr;":"\u{1D51E}","&agrave":"\xE0","&agrave;":"\xE0","&alefsym;":"\u2135","&aleph;":"\u2135","&alpha;":"\u03B1","&amacr;":"\u0101","&amalg;":"\u2A3F","&amp":"&","&amp;":"&","&and;":"\u2227","&andand;":"\u2A55","&andd;":"\u2A5C","&andslope;":"\u2A58","&andv;":"\u2A5A","&ang;":"\u2220","&ange;":"\u29A4","&angle;":"\u2220","&angmsd;":"\u2221","&angmsdaa;":"\u29A8","&angmsdab;":"\u29A9","&angmsdac;":"\u29AA","&angmsdad;":"\u29AB","&angmsdae;":"\u29AC","&angmsdaf;":"\u29AD","&angmsdag;":"\u29AE","&angmsdah;":"\u29AF","&angrt;":"\u221F","&angrtvb;":"\u22BE","&angrtvbd;":"\u299D","&angsph;":"\u2222","&angst;":"\xC5","&angzarr;":"\u237C","&aogon;":"\u0105","&aopf;":"\u{1D552}","&ap;":"\u2248","&apE;":"\u2A70","&apacir;":"\u2A6F","&ape;":"\u224A","&apid;":"\u224B","&apos;":"'","&approx;":"\u2248","&approxeq;":"\u224A","&aring":"\xE5","&aring;":"\xE5","&ascr;":"\u{1D4B6}","&ast;":"*","&asymp;":"\u2248","&asympeq;":"\u224D","&atilde":"\xE3","&atilde;":"\xE3","&auml":"\xE4","&auml;":"\xE4","&awconint;":"\u2233","&awint;":"\u2A11","&bNot;":"\u2AED","&backcong;":"\u224C","&backepsilon;":"\u03F6","&backprime;":"\u2035","&backsim;":"\u223D","&backsimeq;":"\u22CD","&barvee;":"\u22BD","&barwed;":"\u2305","&barwedge;":"\u2305","&bbrk;":"\u23B5","&bbrktbrk;":"\u23B6","&bcong;":"\u224C","&bcy;":"\u0431","&bdquo;":"\u201E","&becaus;":"\u2235","&because;":"\u2235","&bemptyv;":"\u29B0","&bepsi;":"\u03F6","&bernou;":"\u212C","&beta;":"\u03B2","&beth;":"\u2136","&between;":"\u226C","&bfr;":"\u{1D51F}","&bigcap;":"\u22C2","&bigcirc;":"\u25EF","&bigcup;":"\u22C3","&bigodot;":"\u2A00","&bigoplus;":"\u2A01","&bigotimes;":"\u2A02","&bigsqcup;":"\u2A06","&bigstar;":"\u2605","&bigtriangledown;":"\u25BD","&bigtriangleup;":"\u25B3","&biguplus;":"\u2A04","&bigvee;":"\u22C1","&bigwedge;":"\u22C0","&bkarow;":"\u290D","&blacklozenge;":"\u29EB","&blacksquare;":"\u25AA","&blacktriangle;":"\u25B4","&blacktriangledown;":"\u25BE","&blacktriangleleft;":"\u25C2","&blacktriangleright;":"\u25B8","&blank;":"\u2423","&blk12;":"\u2592","&blk14;":"\u2591","&blk34;":"\u2593","&block;":"\u2588","&bne;":"=\u20E5","&bnequiv;":"\u2261\u20E5","&bnot;":"\u2310","&bopf;":"\u{1D553}","&bot;":"\u22A5","&bottom;":"\u22A5","&bowtie;":"\u22C8","&boxDL;":"\u2557","&boxDR;":"\u2554","&boxDl;":"\u2556","&boxDr;":"\u2553","&boxH;":"\u2550","&boxHD;":"\u2566","&boxHU;":"\u2569","&boxHd;":"\u2564","&boxHu;":"\u2567","&boxUL;":"\u255D","&boxUR;":"\u255A","&boxUl;":"\u255C","&boxUr;":"\u2559","&boxV;":"\u2551","&boxVH;":"\u256C","&boxVL;":"\u2563","&boxVR;":"\u2560","&boxVh;":"\u256B","&boxVl;":"\u2562","&boxVr;":"\u255F","&boxbox;":"\u29C9","&boxdL;":"\u2555","&boxdR;":"\u2552","&boxdl;":"\u2510","&boxdr;":"\u250C","&boxh;":"\u2500","&boxhD;":"\u2565","&boxhU;":"\u2568","&boxhd;":"\u252C","&boxhu;":"\u2534","&boxminus;":"\u229F","&boxplus;":"\u229E","&boxtimes;":"\u22A0","&boxuL;":"\u255B","&boxuR;":"\u2558","&boxul;":"\u2518","&boxur;":"\u2514","&boxv;":"\u2502","&boxvH;":"\u256A","&boxvL;":"\u2561","&boxvR;":"\u255E","&boxvh;":"\u253C","&boxvl;":"\u2524","&boxvr;":"\u251C","&bprime;":"\u2035","&breve;":"\u02D8","&brvbar":"\xA6","&brvbar;":"\xA6","&bscr;":"\u{1D4B7}","&bsemi;":"\u204F","&bsim;":"\u223D","&bsime;":"\u22CD","&bsol;":"\\","&bsolb;":"\u29C5","&bsolhsub;":"\u27C8","&bull;":"\u2022","&bullet;":"\u2022","&bump;":"\u224E","&bumpE;":"\u2AAE","&bumpe;":"\u224F","&bumpeq;":"\u224F","&cacute;":"\u0107","&cap;":"\u2229","&capand;":"\u2A44","&capbrcup;":"\u2A49","&capcap;":"\u2A4B","&capcup;":"\u2A47","&capdot;":"\u2A40","&caps;":"\u2229\uFE00","&caret;":"\u2041","&caron;":"\u02C7","&ccaps;":"\u2A4D","&ccaron;":"\u010D","&ccedil":"\xE7","&ccedil;":"\xE7","&ccirc;":"\u0109","&ccups;":"\u2A4C","&ccupssm;":"\u2A50","&cdot;":"\u010B","&cedil":"\xB8","&cedil;":"\xB8","&cemptyv;":"\u29B2","&cent":"\xA2","&cent;":"\xA2","&centerdot;":"\xB7","&cfr;":"\u{1D520}","&chcy;":"\u0447","&check;":"\u2713","&checkmark;":"\u2713","&chi;":"\u03C7","&cir;":"\u25CB","&cirE;":"\u29C3","&circ;":"\u02C6","&circeq;":"\u2257","&circlearrowleft;":"\u21BA","&circlearrowright;":"\u21BB","&circledR;":"\xAE","&circledS;":"\u24C8","&circledast;":"\u229B","&circledcirc;":"\u229A","&circleddash;":"\u229D","&cire;":"\u2257","&cirfnint;":"\u2A10","&cirmid;":"\u2AEF","&cirscir;":"\u29C2","&clubs;":"\u2663","&clubsuit;":"\u2663","&colon;":":","&colone;":"\u2254","&coloneq;":"\u2254","&comma;":",","&commat;":"@","&comp;":"\u2201","&compfn;":"\u2218","&complement;":"\u2201","&complexes;":"\u2102","&cong;":"\u2245","&congdot;":"\u2A6D","&conint;":"\u222E","&copf;":"\u{1D554}","&coprod;":"\u2210","&copy":"\xA9","&copy;":"\xA9","&copysr;":"\u2117","&crarr;":"\u21B5","&cross;":"\u2717","&cscr;":"\u{1D4B8}","&csub;":"\u2ACF","&csube;":"\u2AD1","&csup;":"\u2AD0","&csupe;":"\u2AD2","&ctdot;":"\u22EF","&cudarrl;":"\u2938","&cudarrr;":"\u2935","&cuepr;":"\u22DE","&cuesc;":"\u22DF","&cularr;":"\u21B6","&cularrp;":"\u293D","&cup;":"\u222A","&cupbrcap;":"\u2A48","&cupcap;":"\u2A46","&cupcup;":"\u2A4A","&cupdot;":"\u228D","&cupor;":"\u2A45","&cups;":"\u222A\uFE00","&curarr;":"\u21B7","&curarrm;":"\u293C","&curlyeqprec;":"\u22DE","&curlyeqsucc;":"\u22DF","&curlyvee;":"\u22CE","&curlywedge;":"\u22CF","&curren":"\xA4","&curren;":"\xA4","&curvearrowleft;":"\u21B6","&curvearrowright;":"\u21B7","&cuvee;":"\u22CE","&cuwed;":"\u22CF","&cwconint;":"\u2232","&cwint;":"\u2231","&cylcty;":"\u232D","&dArr;":"\u21D3","&dHar;":"\u2965","&dagger;":"\u2020","&daleth;":"\u2138","&darr;":"\u2193","&dash;":"\u2010","&dashv;":"\u22A3","&dbkarow;":"\u290F","&dblac;":"\u02DD","&dcaron;":"\u010F","&dcy;":"\u0434","&dd;":"\u2146","&ddagger;":"\u2021","&ddarr;":"\u21CA","&ddotseq;":"\u2A77","&deg":"\xB0","&deg;":"\xB0","&delta;":"\u03B4","&demptyv;":"\u29B1","&dfisht;":"\u297F","&dfr;":"\u{1D521}","&dharl;":"\u21C3","&dharr;":"\u21C2","&diam;":"\u22C4","&diamond;":"\u22C4","&diamondsuit;":"\u2666","&diams;":"\u2666","&die;":"\xA8","&digamma;":"\u03DD","&disin;":"\u22F2","&div;":"\xF7","&divide":"\xF7","&divide;":"\xF7","&divideontimes;":"\u22C7","&divonx;":"\u22C7","&djcy;":"\u0452","&dlcorn;":"\u231E","&dlcrop;":"\u230D","&dollar;":"$","&dopf;":"\u{1D555}","&dot;":"\u02D9","&doteq;":"\u2250","&doteqdot;":"\u2251","&dotminus;":"\u2238","&dotplus;":"\u2214","&dotsquare;":"\u22A1","&doublebarwedge;":"\u2306","&downarrow;":"\u2193","&downdownarrows;":"\u21CA","&downharpoonleft;":"\u21C3","&downharpoonright;":"\u21C2","&drbkarow;":"\u2910","&drcorn;":"\u231F","&drcrop;":"\u230C","&dscr;":"\u{1D4B9}","&dscy;":"\u0455","&dsol;":"\u29F6","&dstrok;":"\u0111","&dtdot;":"\u22F1","&dtri;":"\u25BF","&dtrif;":"\u25BE","&duarr;":"\u21F5","&duhar;":"\u296F","&dwangle;":"\u29A6","&dzcy;":"\u045F","&dzigrarr;":"\u27FF","&eDDot;":"\u2A77","&eDot;":"\u2251","&eacute":"\xE9","&eacute;":"\xE9","&easter;":"\u2A6E","&ecaron;":"\u011B","&ecir;":"\u2256","&ecirc":"\xEA","&ecirc;":"\xEA","&ecolon;":"\u2255","&ecy;":"\u044D","&edot;":"\u0117","&ee;":"\u2147","&efDot;":"\u2252","&efr;":"\u{1D522}","&eg;":"\u2A9A","&egrave":"\xE8","&egrave;":"\xE8","&egs;":"\u2A96","&egsdot;":"\u2A98","&el;":"\u2A99","&elinters;":"\u23E7","&ell;":"\u2113","&els;":"\u2A95","&elsdot;":"\u2A97","&emacr;":"\u0113","&empty;":"\u2205","&emptyset;":"\u2205","&emptyv;":"\u2205","&emsp13;":"\u2004","&emsp14;":"\u2005","&emsp;":"\u2003","&eng;":"\u014B","&ensp;":"\u2002","&eogon;":"\u0119","&eopf;":"\u{1D556}","&epar;":"\u22D5","&eparsl;":"\u29E3","&eplus;":"\u2A71","&epsi;":"\u03B5","&epsilon;":"\u03B5","&epsiv;":"\u03F5","&eqcirc;":"\u2256","&eqcolon;":"\u2255","&eqsim;":"\u2242","&eqslantgtr;":"\u2A96","&eqslantless;":"\u2A95","&equals;":"=","&equest;":"\u225F","&equiv;":"\u2261","&equivDD;":"\u2A78","&eqvparsl;":"\u29E5","&erDot;":"\u2253","&erarr;":"\u2971","&escr;":"\u212F","&esdot;":"\u2250","&esim;":"\u2242","&eta;":"\u03B7","&eth":"\xF0","&eth;":"\xF0","&euml":"\xEB","&euml;":"\xEB","&euro;":"\u20AC","&excl;":"!","&exist;":"\u2203","&expectation;":"\u2130","&exponentiale;":"\u2147","&fallingdotseq;":"\u2252","&fcy;":"\u0444","&female;":"\u2640","&ffilig;":"\uFB03","&fflig;":"\uFB00","&ffllig;":"\uFB04","&ffr;":"\u{1D523}","&filig;":"\uFB01","&fjlig;":"fj","&flat;":"\u266D","&fllig;":"\uFB02","&fltns;":"\u25B1","&fnof;":"\u0192","&fopf;":"\u{1D557}","&forall;":"\u2200","&fork;":"\u22D4","&forkv;":"\u2AD9","&fpartint;":"\u2A0D","&frac12":"\xBD","&frac12;":"\xBD","&frac13;":"\u2153","&frac14":"\xBC","&frac14;":"\xBC","&frac15;":"\u2155","&frac16;":"\u2159","&frac18;":"\u215B","&frac23;":"\u2154","&frac25;":"\u2156","&frac34":"\xBE","&frac34;":"\xBE","&frac35;":"\u2157","&frac38;":"\u215C","&frac45;":"\u2158","&frac56;":"\u215A","&frac58;":"\u215D","&frac78;":"\u215E","&frasl;":"\u2044","&frown;":"\u2322","&fscr;":"\u{1D4BB}","&gE;":"\u2267","&gEl;":"\u2A8C","&gacute;":"\u01F5","&gamma;":"\u03B3","&gammad;":"\u03DD","&gap;":"\u2A86","&gbreve;":"\u011F","&gcirc;":"\u011D","&gcy;":"\u0433","&gdot;":"\u0121","&ge;":"\u2265","&gel;":"\u22DB","&geq;":"\u2265","&geqq;":"\u2267","&geqslant;":"\u2A7E","&ges;":"\u2A7E","&gescc;":"\u2AA9","&gesdot;":"\u2A80","&gesdoto;":"\u2A82","&gesdotol;":"\u2A84","&gesl;":"\u22DB\uFE00","&gesles;":"\u2A94","&gfr;":"\u{1D524}","&gg;":"\u226B","&ggg;":"\u22D9","&gimel;":"\u2137","&gjcy;":"\u0453","&gl;":"\u2277","&glE;":"\u2A92","&gla;":"\u2AA5","&glj;":"\u2AA4","&gnE;":"\u2269","&gnap;":"\u2A8A","&gnapprox;":"\u2A8A","&gne;":"\u2A88","&gneq;":"\u2A88","&gneqq;":"\u2269","&gnsim;":"\u22E7","&gopf;":"\u{1D558}","&grave;":"`","&gscr;":"\u210A","&gsim;":"\u2273","&gsime;":"\u2A8E","&gsiml;":"\u2A90","&gt":">","&gt;":">","&gtcc;":"\u2AA7","&gtcir;":"\u2A7A","&gtdot;":"\u22D7","&gtlPar;":"\u2995","&gtquest;":"\u2A7C","&gtrapprox;":"\u2A86","&gtrarr;":"\u2978","&gtrdot;":"\u22D7","&gtreqless;":"\u22DB","&gtreqqless;":"\u2A8C","&gtrless;":"\u2277","&gtrsim;":"\u2273","&gvertneqq;":"\u2269\uFE00","&gvnE;":"\u2269\uFE00","&hArr;":"\u21D4","&hairsp;":"\u200A","&half;":"\xBD","&hamilt;":"\u210B","&hardcy;":"\u044A","&harr;":"\u2194","&harrcir;":"\u2948","&harrw;":"\u21AD","&hbar;":"\u210F","&hcirc;":"\u0125","&hearts;":"\u2665","&heartsuit;":"\u2665","&hellip;":"\u2026","&hercon;":"\u22B9","&hfr;":"\u{1D525}","&hksearow;":"\u2925","&hkswarow;":"\u2926","&hoarr;":"\u21FF","&homtht;":"\u223B","&hookleftarrow;":"\u21A9","&hookrightarrow;":"\u21AA","&hopf;":"\u{1D559}","&horbar;":"\u2015","&hscr;":"\u{1D4BD}","&hslash;":"\u210F","&hstrok;":"\u0127","&hybull;":"\u2043","&hyphen;":"\u2010","&iacute":"\xED","&iacute;":"\xED","&ic;":"\u2063","&icirc":"\xEE","&icirc;":"\xEE","&icy;":"\u0438","&iecy;":"\u0435","&iexcl":"\xA1","&iexcl;":"\xA1","&iff;":"\u21D4","&ifr;":"\u{1D526}","&igrave":"\xEC","&igrave;":"\xEC","&ii;":"\u2148","&iiiint;":"\u2A0C","&iiint;":"\u222D","&iinfin;":"\u29DC","&iiota;":"\u2129","&ijlig;":"\u0133","&imacr;":"\u012B","&image;":"\u2111","&imagline;":"\u2110","&imagpart;":"\u2111","&imath;":"\u0131","&imof;":"\u22B7","&imped;":"\u01B5","&in;":"\u2208","&incare;":"\u2105","&infin;":"\u221E","&infintie;":"\u29DD","&inodot;":"\u0131","&int;":"\u222B","&intcal;":"\u22BA","&integers;":"\u2124","&intercal;":"\u22BA","&intlarhk;":"\u2A17","&intprod;":"\u2A3C","&iocy;":"\u0451","&iogon;":"\u012F","&iopf;":"\u{1D55A}","&iota;":"\u03B9","&iprod;":"\u2A3C","&iquest":"\xBF","&iquest;":"\xBF","&iscr;":"\u{1D4BE}","&isin;":"\u2208","&isinE;":"\u22F9","&isindot;":"\u22F5","&isins;":"\u22F4","&isinsv;":"\u22F3","&isinv;":"\u2208","&it;":"\u2062","&itilde;":"\u0129","&iukcy;":"\u0456","&iuml":"\xEF","&iuml;":"\xEF","&jcirc;":"\u0135","&jcy;":"\u0439","&jfr;":"\u{1D527}","&jmath;":"\u0237","&jopf;":"\u{1D55B}","&jscr;":"\u{1D4BF}","&jsercy;":"\u0458","&jukcy;":"\u0454","&kappa;":"\u03BA","&kappav;":"\u03F0","&kcedil;":"\u0137","&kcy;":"\u043A","&kfr;":"\u{1D528}","&kgreen;":"\u0138","&khcy;":"\u0445","&kjcy;":"\u045C","&kopf;":"\u{1D55C}","&kscr;":"\u{1D4C0}","&lAarr;":"\u21DA","&lArr;":"\u21D0","&lAtail;":"\u291B","&lBarr;":"\u290E","&lE;":"\u2266","&lEg;":"\u2A8B","&lHar;":"\u2962","&lacute;":"\u013A","&laemptyv;":"\u29B4","&lagran;":"\u2112","&lambda;":"\u03BB","&lang;":"\u27E8","&langd;":"\u2991","&langle;":"\u27E8","&lap;":"\u2A85","&laquo":"\xAB","&laquo;":"\xAB","&larr;":"\u2190","&larrb;":"\u21E4","&larrbfs;":"\u291F","&larrfs;":"\u291D","&larrhk;":"\u21A9","&larrlp;":"\u21AB","&larrpl;":"\u2939","&larrsim;":"\u2973","&larrtl;":"\u21A2","&lat;":"\u2AAB","&latail;":"\u2919","&late;":"\u2AAD","&lates;":"\u2AAD\uFE00","&lbarr;":"\u290C","&lbbrk;":"\u2772","&lbrace;":"{","&lbrack;":"[","&lbrke;":"\u298B","&lbrksld;":"\u298F","&lbrkslu;":"\u298D","&lcaron;":"\u013E","&lcedil;":"\u013C","&lceil;":"\u2308","&lcub;":"{","&lcy;":"\u043B","&ldca;":"\u2936","&ldquo;":"\u201C","&ldquor;":"\u201E","&ldrdhar;":"\u2967","&ldrushar;":"\u294B","&ldsh;":"\u21B2","&le;":"\u2264","&leftarrow;":"\u2190","&leftarrowtail;":"\u21A2","&leftharpoondown;":"\u21BD","&leftharpoonup;":"\u21BC","&leftleftarrows;":"\u21C7","&leftrightarrow;":"\u2194","&leftrightarrows;":"\u21C6","&leftrightharpoons;":"\u21CB","&leftrightsquigarrow;":"\u21AD","&leftthreetimes;":"\u22CB","&leg;":"\u22DA","&leq;":"\u2264","&leqq;":"\u2266","&leqslant;":"\u2A7D","&les;":"\u2A7D","&lescc;":"\u2AA8","&lesdot;":"\u2A7F","&lesdoto;":"\u2A81","&lesdotor;":"\u2A83","&lesg;":"\u22DA\uFE00","&lesges;":"\u2A93","&lessapprox;":"\u2A85","&lessdot;":"\u22D6","&lesseqgtr;":"\u22DA","&lesseqqgtr;":"\u2A8B","&lessgtr;":"\u2276","&lesssim;":"\u2272","&lfisht;":"\u297C","&lfloor;":"\u230A","&lfr;":"\u{1D529}","&lg;":"\u2276","&lgE;":"\u2A91","&lhard;":"\u21BD","&lharu;":"\u21BC","&lharul;":"\u296A","&lhblk;":"\u2584","&ljcy;":"\u0459","&ll;":"\u226A","&llarr;":"\u21C7","&llcorner;":"\u231E","&llhard;":"\u296B","&lltri;":"\u25FA","&lmidot;":"\u0140","&lmoust;":"\u23B0","&lmoustache;":"\u23B0","&lnE;":"\u2268","&lnap;":"\u2A89","&lnapprox;":"\u2A89","&lne;":"\u2A87","&lneq;":"\u2A87","&lneqq;":"\u2268","&lnsim;":"\u22E6","&loang;":"\u27EC","&loarr;":"\u21FD","&lobrk;":"\u27E6","&longleftarrow;":"\u27F5","&longleftrightarrow;":"\u27F7","&longmapsto;":"\u27FC","&longrightarrow;":"\u27F6","&looparrowleft;":"\u21AB","&looparrowright;":"\u21AC","&lopar;":"\u2985","&lopf;":"\u{1D55D}","&loplus;":"\u2A2D","&lotimes;":"\u2A34","&lowast;":"\u2217","&lowbar;":"_","&loz;":"\u25CA","&lozenge;":"\u25CA","&lozf;":"\u29EB","&lpar;":"(","&lparlt;":"\u2993","&lrarr;":"\u21C6","&lrcorner;":"\u231F","&lrhar;":"\u21CB","&lrhard;":"\u296D","&lrm;":"\u200E","&lrtri;":"\u22BF","&lsaquo;":"\u2039","&lscr;":"\u{1D4C1}","&lsh;":"\u21B0","&lsim;":"\u2272","&lsime;":"\u2A8D","&lsimg;":"\u2A8F","&lsqb;":"[","&lsquo;":"\u2018","&lsquor;":"\u201A","&lstrok;":"\u0142","&lt":"<","&lt;":"<","&ltcc;":"\u2AA6","&ltcir;":"\u2A79","&ltdot;":"\u22D6","&lthree;":"\u22CB","&ltimes;":"\u22C9","&ltlarr;":"\u2976","&ltquest;":"\u2A7B","&ltrPar;":"\u2996","&ltri;":"\u25C3","&ltrie;":"\u22B4","&ltrif;":"\u25C2","&lurdshar;":"\u294A","&luruhar;":"\u2966","&lvertneqq;":"\u2268\uFE00","&lvnE;":"\u2268\uFE00","&mDDot;":"\u223A","&macr":"\xAF","&macr;":"\xAF","&male;":"\u2642","&malt;":"\u2720","&maltese;":"\u2720","&map;":"\u21A6","&mapsto;":"\u21A6","&mapstodown;":"\u21A7","&mapstoleft;":"\u21A4","&mapstoup;":"\u21A5","&marker;":"\u25AE","&mcomma;":"\u2A29","&mcy;":"\u043C","&mdash;":"\u2014","&measuredangle;":"\u2221","&mfr;":"\u{1D52A}","&mho;":"\u2127","&micro":"\xB5","&micro;":"\xB5","&mid;":"\u2223","&midast;":"*","&midcir;":"\u2AF0","&middot":"\xB7","&middot;":"\xB7","&minus;":"\u2212","&minusb;":"\u229F","&minusd;":"\u2238","&minusdu;":"\u2A2A","&mlcp;":"\u2ADB","&mldr;":"\u2026","&mnplus;":"\u2213","&models;":"\u22A7","&mopf;":"\u{1D55E}","&mp;":"\u2213","&mscr;":"\u{1D4C2}","&mstpos;":"\u223E","&mu;":"\u03BC","&multimap;":"\u22B8","&mumap;":"\u22B8","&nGg;":"\u22D9\u0338","&nGt;":"\u226B\u20D2","&nGtv;":"\u226B\u0338","&nLeftarrow;":"\u21CD","&nLeftrightarrow;":"\u21CE","&nLl;":"\u22D8\u0338","&nLt;":"\u226A\u20D2","&nLtv;":"\u226A\u0338","&nRightarrow;":"\u21CF","&nVDash;":"\u22AF","&nVdash;":"\u22AE","&nabla;":"\u2207","&nacute;":"\u0144","&nang;":"\u2220\u20D2","&nap;":"\u2249","&napE;":"\u2A70\u0338","&napid;":"\u224B\u0338","&napos;":"\u0149","&napprox;":"\u2249","&natur;":"\u266E","&natural;":"\u266E","&naturals;":"\u2115","&nbsp":"\xA0","&nbsp;":"\xA0","&nbump;":"\u224E\u0338","&nbumpe;":"\u224F\u0338","&ncap;":"\u2A43","&ncaron;":"\u0148","&ncedil;":"\u0146","&ncong;":"\u2247","&ncongdot;":"\u2A6D\u0338","&ncup;":"\u2A42","&ncy;":"\u043D","&ndash;":"\u2013","&ne;":"\u2260","&neArr;":"\u21D7","&nearhk;":"\u2924","&nearr;":"\u2197","&nearrow;":"\u2197","&nedot;":"\u2250\u0338","&nequiv;":"\u2262","&nesear;":"\u2928","&nesim;":"\u2242\u0338","&nexist;":"\u2204","&nexists;":"\u2204","&nfr;":"\u{1D52B}","&ngE;":"\u2267\u0338","&nge;":"\u2271","&ngeq;":"\u2271","&ngeqq;":"\u2267\u0338","&ngeqslant;":"\u2A7E\u0338","&nges;":"\u2A7E\u0338","&ngsim;":"\u2275","&ngt;":"\u226F","&ngtr;":"\u226F","&nhArr;":"\u21CE","&nharr;":"\u21AE","&nhpar;":"\u2AF2","&ni;":"\u220B","&nis;":"\u22FC","&nisd;":"\u22FA","&niv;":"\u220B","&njcy;":"\u045A","&nlArr;":"\u21CD","&nlE;":"\u2266\u0338","&nlarr;":"\u219A","&nldr;":"\u2025","&nle;":"\u2270","&nleftarrow;":"\u219A","&nleftrightarrow;":"\u21AE","&nleq;":"\u2270","&nleqq;":"\u2266\u0338","&nleqslant;":"\u2A7D\u0338","&nles;":"\u2A7D\u0338","&nless;":"\u226E","&nlsim;":"\u2274","&nlt;":"\u226E","&nltri;":"\u22EA","&nltrie;":"\u22EC","&nmid;":"\u2224","&nopf;":"\u{1D55F}","&not":"\xAC","&not;":"\xAC","&notin;":"\u2209","&notinE;":"\u22F9\u0338","&notindot;":"\u22F5\u0338","&notinva;":"\u2209","&notinvb;":"\u22F7","&notinvc;":"\u22F6","&notni;":"\u220C","&notniva;":"\u220C","&notnivb;":"\u22FE","&notnivc;":"\u22FD","&npar;":"\u2226","&nparallel;":"\u2226","&nparsl;":"\u2AFD\u20E5","&npart;":"\u2202\u0338","&npolint;":"\u2A14","&npr;":"\u2280","&nprcue;":"\u22E0","&npre;":"\u2AAF\u0338","&nprec;":"\u2280","&npreceq;":"\u2AAF\u0338","&nrArr;":"\u21CF","&nrarr;":"\u219B","&nrarrc;":"\u2933\u0338","&nrarrw;":"\u219D\u0338","&nrightarrow;":"\u219B","&nrtri;":"\u22EB","&nrtrie;":"\u22ED","&nsc;":"\u2281","&nsccue;":"\u22E1","&nsce;":"\u2AB0\u0338","&nscr;":"\u{1D4C3}","&nshortmid;":"\u2224","&nshortparallel;":"\u2226","&nsim;":"\u2241","&nsime;":"\u2244","&nsimeq;":"\u2244","&nsmid;":"\u2224","&nspar;":"\u2226","&nsqsube;":"\u22E2","&nsqsupe;":"\u22E3","&nsub;":"\u2284","&nsubE;":"\u2AC5\u0338","&nsube;":"\u2288","&nsubset;":"\u2282\u20D2","&nsubseteq;":"\u2288","&nsubseteqq;":"\u2AC5\u0338","&nsucc;":"\u2281","&nsucceq;":"\u2AB0\u0338","&nsup;":"\u2285","&nsupE;":"\u2AC6\u0338","&nsupe;":"\u2289","&nsupset;":"\u2283\u20D2","&nsupseteq;":"\u2289","&nsupseteqq;":"\u2AC6\u0338","&ntgl;":"\u2279","&ntilde":"\xF1","&ntilde;":"\xF1","&ntlg;":"\u2278","&ntriangleleft;":"\u22EA","&ntrianglelefteq;":"\u22EC","&ntriangleright;":"\u22EB","&ntrianglerighteq;":"\u22ED","&nu;":"\u03BD","&num;":"#","&numero;":"\u2116","&numsp;":"\u2007","&nvDash;":"\u22AD","&nvHarr;":"\u2904","&nvap;":"\u224D\u20D2","&nvdash;":"\u22AC","&nvge;":"\u2265\u20D2","&nvgt;":">\u20D2","&nvinfin;":"\u29DE","&nvlArr;":"\u2902","&nvle;":"\u2264\u20D2","&nvlt;":"<\u20D2","&nvltrie;":"\u22B4\u20D2","&nvrArr;":"\u2903","&nvrtrie;":"\u22B5\u20D2","&nvsim;":"\u223C\u20D2","&nwArr;":"\u21D6","&nwarhk;":"\u2923","&nwarr;":"\u2196","&nwarrow;":"\u2196","&nwnear;":"\u2927","&oS;":"\u24C8","&oacute":"\xF3","&oacute;":"\xF3","&oast;":"\u229B","&ocir;":"\u229A","&ocirc":"\xF4","&ocirc;":"\xF4","&ocy;":"\u043E","&odash;":"\u229D","&odblac;":"\u0151","&odiv;":"\u2A38","&odot;":"\u2299","&odsold;":"\u29BC","&oelig;":"\u0153","&ofcir;":"\u29BF","&ofr;":"\u{1D52C}","&ogon;":"\u02DB","&ograve":"\xF2","&ograve;":"\xF2","&ogt;":"\u29C1","&ohbar;":"\u29B5","&ohm;":"\u03A9","&oint;":"\u222E","&olarr;":"\u21BA","&olcir;":"\u29BE","&olcross;":"\u29BB","&oline;":"\u203E","&olt;":"\u29C0","&omacr;":"\u014D","&omega;":"\u03C9","&omicron;":"\u03BF","&omid;":"\u29B6","&ominus;":"\u2296","&oopf;":"\u{1D560}","&opar;":"\u29B7","&operp;":"\u29B9","&oplus;":"\u2295","&or;":"\u2228","&orarr;":"\u21BB","&ord;":"\u2A5D","&order;":"\u2134","&orderof;":"\u2134","&ordf":"\xAA","&ordf;":"\xAA","&ordm":"\xBA","&ordm;":"\xBA","&origof;":"\u22B6","&oror;":"\u2A56","&orslope;":"\u2A57","&orv;":"\u2A5B","&oscr;":"\u2134","&oslash":"\xF8","&oslash;":"\xF8","&osol;":"\u2298","&otilde":"\xF5","&otilde;":"\xF5","&otimes;":"\u2297","&otimesas;":"\u2A36","&ouml":"\xF6","&ouml;":"\xF6","&ovbar;":"\u233D","&par;":"\u2225","&para":"\xB6","&para;":"\xB6","&parallel;":"\u2225","&parsim;":"\u2AF3","&parsl;":"\u2AFD","&part;":"\u2202","&pcy;":"\u043F","&percnt;":"%","&period;":".","&permil;":"\u2030","&perp;":"\u22A5","&pertenk;":"\u2031","&pfr;":"\u{1D52D}","&phi;":"\u03C6","&phiv;":"\u03D5","&phmmat;":"\u2133","&phone;":"\u260E","&pi;":"\u03C0","&pitchfork;":"\u22D4","&piv;":"\u03D6","&planck;":"\u210F","&planckh;":"\u210E","&plankv;":"\u210F","&plus;":"+","&plusacir;":"\u2A23","&plusb;":"\u229E","&pluscir;":"\u2A22","&plusdo;":"\u2214","&plusdu;":"\u2A25","&pluse;":"\u2A72","&plusmn":"\xB1","&plusmn;":"\xB1","&plussim;":"\u2A26","&plustwo;":"\u2A27","&pm;":"\xB1","&pointint;":"\u2A15","&popf;":"\u{1D561}","&pound":"\xA3","&pound;":"\xA3","&pr;":"\u227A","&prE;":"\u2AB3","&prap;":"\u2AB7","&prcue;":"\u227C","&pre;":"\u2AAF","&prec;":"\u227A","&precapprox;":"\u2AB7","&preccurlyeq;":"\u227C","&preceq;":"\u2AAF","&precnapprox;":"\u2AB9","&precneqq;":"\u2AB5","&precnsim;":"\u22E8","&precsim;":"\u227E","&prime;":"\u2032","&primes;":"\u2119","&prnE;":"\u2AB5","&prnap;":"\u2AB9","&prnsim;":"\u22E8","&prod;":"\u220F","&profalar;":"\u232E","&profline;":"\u2312","&profsurf;":"\u2313","&prop;":"\u221D","&propto;":"\u221D","&prsim;":"\u227E","&prurel;":"\u22B0","&pscr;":"\u{1D4C5}","&psi;":"\u03C8","&puncsp;":"\u2008","&qfr;":"\u{1D52E}","&qint;":"\u2A0C","&qopf;":"\u{1D562}","&qprime;":"\u2057","&qscr;":"\u{1D4C6}","&quaternions;":"\u210D","&quatint;":"\u2A16","&quest;":"?","&questeq;":"\u225F","&quot":'"',"&quot;":'"',"&rAarr;":"\u21DB","&rArr;":"\u21D2","&rAtail;":"\u291C","&rBarr;":"\u290F","&rHar;":"\u2964","&race;":"\u223D\u0331","&racute;":"\u0155","&radic;":"\u221A","&raemptyv;":"\u29B3","&rang;":"\u27E9","&rangd;":"\u2992","&range;":"\u29A5","&rangle;":"\u27E9","&raquo":"\xBB","&raquo;":"\xBB","&rarr;":"\u2192","&rarrap;":"\u2975","&rarrb;":"\u21E5","&rarrbfs;":"\u2920","&rarrc;":"\u2933","&rarrfs;":"\u291E","&rarrhk;":"\u21AA","&rarrlp;":"\u21AC","&rarrpl;":"\u2945","&rarrsim;":"\u2974","&rarrtl;":"\u21A3","&rarrw;":"\u219D","&ratail;":"\u291A","&ratio;":"\u2236","&rationals;":"\u211A","&rbarr;":"\u290D","&rbbrk;":"\u2773","&rbrace;":"}","&rbrack;":"]","&rbrke;":"\u298C","&rbrksld;":"\u298E","&rbrkslu;":"\u2990","&rcaron;":"\u0159","&rcedil;":"\u0157","&rceil;":"\u2309","&rcub;":"}","&rcy;":"\u0440","&rdca;":"\u2937","&rdldhar;":"\u2969","&rdquo;":"\u201D","&rdquor;":"\u201D","&rdsh;":"\u21B3","&real;":"\u211C","&realine;":"\u211B","&realpart;":"\u211C","&reals;":"\u211D","&rect;":"\u25AD","&reg":"\xAE","&reg;":"\xAE","&rfisht;":"\u297D","&rfloor;":"\u230B","&rfr;":"\u{1D52F}","&rhard;":"\u21C1","&rharu;":"\u21C0","&rharul;":"\u296C","&rho;":"\u03C1","&rhov;":"\u03F1","&rightarrow;":"\u2192","&rightarrowtail;":"\u21A3","&rightharpoondown;":"\u21C1","&rightharpoonup;":"\u21C0","&rightleftarrows;":"\u21C4","&rightleftharpoons;":"\u21CC","&rightrightarrows;":"\u21C9","&rightsquigarrow;":"\u219D","&rightthreetimes;":"\u22CC","&ring;":"\u02DA","&risingdotseq;":"\u2253","&rlarr;":"\u21C4","&rlhar;":"\u21CC","&rlm;":"\u200F","&rmoust;":"\u23B1","&rmoustache;":"\u23B1","&rnmid;":"\u2AEE","&roang;":"\u27ED","&roarr;":"\u21FE","&robrk;":"\u27E7","&ropar;":"\u2986","&ropf;":"\u{1D563}","&roplus;":"\u2A2E","&rotimes;":"\u2A35","&rpar;":")","&rpargt;":"\u2994","&rppolint;":"\u2A12","&rrarr;":"\u21C9","&rsaquo;":"\u203A","&rscr;":"\u{1D4C7}","&rsh;":"\u21B1","&rsqb;":"]","&rsquo;":"\u2019","&rsquor;":"\u2019","&rthree;":"\u22CC","&rtimes;":"\u22CA","&rtri;":"\u25B9","&rtrie;":"\u22B5","&rtrif;":"\u25B8","&rtriltri;":"\u29CE","&ruluhar;":"\u2968","&rx;":"\u211E","&sacute;":"\u015B","&sbquo;":"\u201A","&sc;":"\u227B","&scE;":"\u2AB4","&scap;":"\u2AB8","&scaron;":"\u0161","&sccue;":"\u227D","&sce;":"\u2AB0","&scedil;":"\u015F","&scirc;":"\u015D","&scnE;":"\u2AB6","&scnap;":"\u2ABA","&scnsim;":"\u22E9","&scpolint;":"\u2A13","&scsim;":"\u227F","&scy;":"\u0441","&sdot;":"\u22C5","&sdotb;":"\u22A1","&sdote;":"\u2A66","&seArr;":"\u21D8","&searhk;":"\u2925","&searr;":"\u2198","&searrow;":"\u2198","&sect":"\xA7","&sect;":"\xA7","&semi;":";","&seswar;":"\u2929","&setminus;":"\u2216","&setmn;":"\u2216","&sext;":"\u2736","&sfr;":"\u{1D530}","&sfrown;":"\u2322","&sharp;":"\u266F","&shchcy;":"\u0449","&shcy;":"\u0448","&shortmid;":"\u2223","&shortparallel;":"\u2225","&shy":"\xAD","&shy;":"\xAD","&sigma;":"\u03C3","&sigmaf;":"\u03C2","&sigmav;":"\u03C2","&sim;":"\u223C","&simdot;":"\u2A6A","&sime;":"\u2243","&simeq;":"\u2243","&simg;":"\u2A9E","&simgE;":"\u2AA0","&siml;":"\u2A9D","&simlE;":"\u2A9F","&simne;":"\u2246","&simplus;":"\u2A24","&simrarr;":"\u2972","&slarr;":"\u2190","&smallsetminus;":"\u2216","&smashp;":"\u2A33","&smeparsl;":"\u29E4","&smid;":"\u2223","&smile;":"\u2323","&smt;":"\u2AAA","&smte;":"\u2AAC","&smtes;":"\u2AAC\uFE00","&softcy;":"\u044C","&sol;":"/","&solb;":"\u29C4","&solbar;":"\u233F","&sopf;":"\u{1D564}","&spades;":"\u2660","&spadesuit;":"\u2660","&spar;":"\u2225","&sqcap;":"\u2293","&sqcaps;":"\u2293\uFE00","&sqcup;":"\u2294","&sqcups;":"\u2294\uFE00","&sqsub;":"\u228F","&sqsube;":"\u2291","&sqsubset;":"\u228F","&sqsubseteq;":"\u2291","&sqsup;":"\u2290","&sqsupe;":"\u2292","&sqsupset;":"\u2290","&sqsupseteq;":"\u2292","&squ;":"\u25A1","&square;":"\u25A1","&squarf;":"\u25AA","&squf;":"\u25AA","&srarr;":"\u2192","&sscr;":"\u{1D4C8}","&ssetmn;":"\u2216","&ssmile;":"\u2323","&sstarf;":"\u22C6","&star;":"\u2606","&starf;":"\u2605","&straightepsilon;":"\u03F5","&straightphi;":"\u03D5","&strns;":"\xAF","&sub;":"\u2282","&subE;":"\u2AC5","&subdot;":"\u2ABD","&sube;":"\u2286","&subedot;":"\u2AC3","&submult;":"\u2AC1","&subnE;":"\u2ACB","&subne;":"\u228A","&subplus;":"\u2ABF","&subrarr;":"\u2979","&subset;":"\u2282","&subseteq;":"\u2286","&subseteqq;":"\u2AC5","&subsetneq;":"\u228A","&subsetneqq;":"\u2ACB","&subsim;":"\u2AC7","&subsub;":"\u2AD5","&subsup;":"\u2AD3","&succ;":"\u227B","&succapprox;":"\u2AB8","&succcurlyeq;":"\u227D","&succeq;":"\u2AB0","&succnapprox;":"\u2ABA","&succneqq;":"\u2AB6","&succnsim;":"\u22E9","&succsim;":"\u227F","&sum;":"\u2211","&sung;":"\u266A","&sup1":"\xB9","&sup1;":"\xB9","&sup2":"\xB2","&sup2;":"\xB2","&sup3":"\xB3","&sup3;":"\xB3","&sup;":"\u2283","&supE;":"\u2AC6","&supdot;":"\u2ABE","&supdsub;":"\u2AD8","&supe;":"\u2287","&supedot;":"\u2AC4","&suphsol;":"\u27C9","&suphsub;":"\u2AD7","&suplarr;":"\u297B","&supmult;":"\u2AC2","&supnE;":"\u2ACC","&supne;":"\u228B","&supplus;":"\u2AC0","&supset;":"\u2283","&supseteq;":"\u2287","&supseteqq;":"\u2AC6","&supsetneq;":"\u228B","&supsetneqq;":"\u2ACC","&supsim;":"\u2AC8","&supsub;":"\u2AD4","&supsup;":"\u2AD6","&swArr;":"\u21D9","&swarhk;":"\u2926","&swarr;":"\u2199","&swarrow;":"\u2199","&swnwar;":"\u292A","&szlig":"\xDF","&szlig;":"\xDF","&target;":"\u2316","&tau;":"\u03C4","&tbrk;":"\u23B4","&tcaron;":"\u0165","&tcedil;":"\u0163","&tcy;":"\u0442","&tdot;":"\u20DB","&telrec;":"\u2315","&tfr;":"\u{1D531}","&there4;":"\u2234","&therefore;":"\u2234","&theta;":"\u03B8","&thetasym;":"\u03D1","&thetav;":"\u03D1","&thickapprox;":"\u2248","&thicksim;":"\u223C","&thinsp;":"\u2009","&thkap;":"\u2248","&thksim;":"\u223C","&thorn":"\xFE","&thorn;":"\xFE","&tilde;":"\u02DC","&times":"\xD7","&times;":"\xD7","&timesb;":"\u22A0","&timesbar;":"\u2A31","&timesd;":"\u2A30","&tint;":"\u222D","&toea;":"\u2928","&top;":"\u22A4","&topbot;":"\u2336","&topcir;":"\u2AF1","&topf;":"\u{1D565}","&topfork;":"\u2ADA","&tosa;":"\u2929","&tprime;":"\u2034","&trade;":"\u2122","&triangle;":"\u25B5","&triangledown;":"\u25BF","&triangleleft;":"\u25C3","&trianglelefteq;":"\u22B4","&triangleq;":"\u225C","&triangleright;":"\u25B9","&trianglerighteq;":"\u22B5","&tridot;":"\u25EC","&trie;":"\u225C","&triminus;":"\u2A3A","&triplus;":"\u2A39","&trisb;":"\u29CD","&tritime;":"\u2A3B","&trpezium;":"\u23E2","&tscr;":"\u{1D4C9}","&tscy;":"\u0446","&tshcy;":"\u045B","&tstrok;":"\u0167","&twixt;":"\u226C","&twoheadleftarrow;":"\u219E","&twoheadrightarrow;":"\u21A0","&uArr;":"\u21D1","&uHar;":"\u2963","&uacute":"\xFA","&uacute;":"\xFA","&uarr;":"\u2191","&ubrcy;":"\u045E","&ubreve;":"\u016D","&ucirc":"\xFB","&ucirc;":"\xFB","&ucy;":"\u0443","&udarr;":"\u21C5","&udblac;":"\u0171","&udhar;":"\u296E","&ufisht;":"\u297E","&ufr;":"\u{1D532}","&ugrave":"\xF9","&ugrave;":"\xF9","&uharl;":"\u21BF","&uharr;":"\u21BE","&uhblk;":"\u2580","&ulcorn;":"\u231C","&ulcorner;":"\u231C","&ulcrop;":"\u230F","&ultri;":"\u25F8","&umacr;":"\u016B","&uml":"\xA8","&uml;":"\xA8","&uogon;":"\u0173","&uopf;":"\u{1D566}","&uparrow;":"\u2191","&updownarrow;":"\u2195","&upharpoonleft;":"\u21BF","&upharpoonright;":"\u21BE","&uplus;":"\u228E","&upsi;":"\u03C5","&upsih;":"\u03D2","&upsilon;":"\u03C5","&upuparrows;":"\u21C8","&urcorn;":"\u231D","&urcorner;":"\u231D","&urcrop;":"\u230E","&uring;":"\u016F","&urtri;":"\u25F9","&uscr;":"\u{1D4CA}","&utdot;":"\u22F0","&utilde;":"\u0169","&utri;":"\u25B5","&utrif;":"\u25B4","&uuarr;":"\u21C8","&uuml":"\xFC","&uuml;":"\xFC","&uwangle;":"\u29A7","&vArr;":"\u21D5","&vBar;":"\u2AE8","&vBarv;":"\u2AE9","&vDash;":"\u22A8","&vangrt;":"\u299C","&varepsilon;":"\u03F5","&varkappa;":"\u03F0","&varnothing;":"\u2205","&varphi;":"\u03D5","&varpi;":"\u03D6","&varpropto;":"\u221D","&varr;":"\u2195","&varrho;":"\u03F1","&varsigma;":"\u03C2","&varsubsetneq;":"\u228A\uFE00","&varsubsetneqq;":"\u2ACB\uFE00","&varsupsetneq;":"\u228B\uFE00","&varsupsetneqq;":"\u2ACC\uFE00","&vartheta;":"\u03D1","&vartriangleleft;":"\u22B2","&vartriangleright;":"\u22B3","&vcy;":"\u0432","&vdash;":"\u22A2","&vee;":"\u2228","&veebar;":"\u22BB","&veeeq;":"\u225A","&vellip;":"\u22EE","&verbar;":"|","&vert;":"|","&vfr;":"\u{1D533}","&vltri;":"\u22B2","&vnsub;":"\u2282\u20D2","&vnsup;":"\u2283\u20D2","&vopf;":"\u{1D567}","&vprop;":"\u221D","&vrtri;":"\u22B3","&vscr;":"\u{1D4CB}","&vsubnE;":"\u2ACB\uFE00","&vsubne;":"\u228A\uFE00","&vsupnE;":"\u2ACC\uFE00","&vsupne;":"\u228B\uFE00","&vzigzag;":"\u299A","&wcirc;":"\u0175","&wedbar;":"\u2A5F","&wedge;":"\u2227","&wedgeq;":"\u2259","&weierp;":"\u2118","&wfr;":"\u{1D534}","&wopf;":"\u{1D568}","&wp;":"\u2118","&wr;":"\u2240","&wreath;":"\u2240","&wscr;":"\u{1D4CC}","&xcap;":"\u22C2","&xcirc;":"\u25EF","&xcup;":"\u22C3","&xdtri;":"\u25BD","&xfr;":"\u{1D535}","&xhArr;":"\u27FA","&xharr;":"\u27F7","&xi;":"\u03BE","&xlArr;":"\u27F8","&xlarr;":"\u27F5","&xmap;":"\u27FC","&xnis;":"\u22FB","&xodot;":"\u2A00","&xopf;":"\u{1D569}","&xoplus;":"\u2A01","&xotime;":"\u2A02","&xrArr;":"\u27F9","&xrarr;":"\u27F6","&xscr;":"\u{1D4CD}","&xsqcup;":"\u2A06","&xuplus;":"\u2A04","&xutri;":"\u25B3","&xvee;":"\u22C1","&xwedge;":"\u22C0","&yacute":"\xFD","&yacute;":"\xFD","&yacy;":"\u044F","&ycirc;":"\u0177","&ycy;":"\u044B","&yen":"\xA5","&yen;":"\xA5","&yfr;":"\u{1D536}","&yicy;":"\u0457","&yopf;":"\u{1D56A}","&yscr;":"\u{1D4CE}","&yucy;":"\u044E","&yuml":"\xFF","&yuml;":"\xFF","&zacute;":"\u017A","&zcaron;":"\u017E","&zcy;":"\u0437","&zdot;":"\u017C","&zeetrf;":"\u2128","&zeta;":"\u03B6","&zfr;":"\u{1D537}","&zhcy;":"\u0436","&zigrarr;":"\u21DD","&zopf;":"\u{1D56B}","&zscr;":"\u{1D4CF}","&zwj;":"\u200D","&zwnj;":"\u200C"},tr=dp;function up(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,(t,o)=>{if(typeof tr[t]=="string")return tr[t];if(o.charAt(0)!=="#"||t.charAt(t.length-1)!==";")return t;let i;o.charAt(1)==="x"?i=parseInt(o.substr(2),16):i=parseInt(o.substr(1),10);let r="";return i>=55296&&i<=57343||i>1114111?"\uFFFD":(i>65535&&(i-=65536,r+=String.fromCharCode(i>>>10&1023|55296),i=56320|i&1023),r+=String.fromCharCode(i),r)})}function kt(e){return e.trim().replace(/[<>"'?&]/g,t=>{let o=t.charCodeAt(0).toString(16);return o.length<2&&(o="0"+o),"&#x"+o.toUpperCase()+";"})}function Xn(e){return"<div>"+kt(e).replace(/\n/g,"<br />")+"</div>"}function Zn(e){return e=e.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,`
259
259
  `).replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi,`
260
260
 
261
261
  `).replace(/<script\b[^>]*>.*?<\/script\b[^>]*>/gi," ").replace(/^.*<body\b[^>]*>/i,"").replace(/^.*<\/head\b[^>]*>/i,"").replace(/^.*<\!doctype\b[^>]*>/i,"").replace(/<\/body\b[^>]*>.*$/i,"").replace(/<\/html\b[^>]*>.*$/i,"").replace(/<a\b[^>]*href\s*=\s*["']?([^\s"']+)[^>]*>/gi," ($1) ").replace(/<\/?(span|em|i|strong|b|u|a)\b[^>]*>/gi,"").replace(/<li\b[^>]*>[\n\u0001\s]*/gi,"* ").replace(/<hr\b[^>]*>/g,`
@@ -265,60 +265,60 @@ ${a}
265
265
 
266
266
  `).replace(/^\n+/,`
267
267
  `).replace(/\n+$/,`
268
- `),e=zp(e),e}function ns(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function nr(e){let t=[],o=(i,r)=>{if(r&&t.push(", "),i.group){let n=`${i.name}:`,s=";";t.push(n),i.group.forEach(o),t.push(s)}else t.push(ns(i))};return e.forEach(o),t.join("")}function ss(e){return`<a href="mailto:${_t(e.address)}" class="postal-email-address">${_t(e.name||`<${e.address}>`)}</a>`}function sr(e){let t=[],o=(i,r)=>{if(r&&t.push('<span class="postal-email-address-separator">, </span>'),i.group){let n=`<span class="postal-email-address-group">${_t(i.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';t.push(n),i.group.forEach(o),t.push(s)}else t.push(ss(i))};return e.forEach(o),t.join(" ")}function Yp(e,t,o){e=(e||"").toString(),t=t||76;let i=0,r=e.length,n="",s,a;for(;i<r;){if(s=e.substr(i,t),s.length<t){n+=s;break}if(a=s.match(/^[^\n\r]*(\r?\n|\r)/)){s=a[0],n+=s,i+=s.length;continue}else(a=s.match(/(\s+)[^\s]*$/))&&a[0].length-(o?(a[1]||"").length:0)<s.length?s=s.substr(0,s.length-(a[0].length-(o?(a[1]||"").length:0))):(a=e.substr(i+s.length).match(/^[^\s]+(\s*)/))&&(s=s+a[0].substr(0,a[0].length-(o?0:(a[1]||"").length)));n+=s,i+=s.length,i<r&&(n+=`\r
269
- `)}return n}function ar(e){let t=[];if(e.from&&t.push({key:"From",val:ns(e.from)}),e.subject&&t.push({key:"Subject",val:e.subject}),e.date){let s={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},a=typeof Intl>"u"?e.date:new Intl.DateTimeFormat("default",s).format(new Date(e.date));t.push({key:"Date",val:a})}e.to&&e.to.length&&t.push({key:"To",val:nr(e.to)}),e.cc&&e.cc.length&&t.push({key:"Cc",val:nr(e.cc)}),e.bcc&&e.bcc.length&&t.push({key:"Bcc",val:nr(e.bcc)});let o=t.map(s=>s.key.length).reduce((s,a)=>a>s?a:s,0);t=t.flatMap(s=>{let a=o-s.key.length,l=`${s.key}: ${" ".repeat(a)}`,u=`${" ".repeat(s.key.length+1)} ${" ".repeat(a)}`;return Yp(s.val,80,!0).split(/\r?\n/).map(p=>p.trim()).map((p,f)=>`${f?u:l}${p}`)});let i=t.map(s=>s.length).reduce((s,a)=>a>s?a:s,0),r="-".repeat(i);return`
268
+ `),e=up(e),e}function es(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function or(e){let t=[],o=(i,r)=>{if(r&&t.push(", "),i.group){let n=`${i.name}:`,s=";";t.push(n),i.group.forEach(o),t.push(s)}else t.push(es(i))};return e.forEach(o),t.join("")}function ts(e){return`<a href="mailto:${kt(e.address)}" class="postal-email-address">${kt(e.name||`<${e.address}>`)}</a>`}function ir(e){let t=[],o=(i,r)=>{if(r&&t.push('<span class="postal-email-address-separator">, </span>'),i.group){let n=`<span class="postal-email-address-group">${kt(i.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';t.push(n),i.group.forEach(o),t.push(s)}else t.push(ts(i))};return e.forEach(o),t.join(" ")}function mp(e,t,o){e=(e||"").toString(),t=t||76;let i=0,r=e.length,n="",s,a;for(;i<r;){if(s=e.substr(i,t),s.length<t){n+=s;break}if(a=s.match(/^[^\n\r]*(\r?\n|\r)/)){s=a[0],n+=s,i+=s.length;continue}else(a=s.match(/(\s+)[^\s]*$/))&&a[0].length-(o?(a[1]||"").length:0)<s.length?s=s.substr(0,s.length-(a[0].length-(o?(a[1]||"").length:0))):(a=e.substr(i+s.length).match(/^[^\s]+(\s*)/))&&(s=s+a[0].substr(0,a[0].length-(o?0:(a[1]||"").length)));n+=s,i+=s.length,i<r&&(n+=`\r
269
+ `)}return n}function rr(e){let t=[];if(e.from&&t.push({key:"From",val:es(e.from)}),e.subject&&t.push({key:"Subject",val:e.subject}),e.date){let s={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},a=typeof Intl>"u"?e.date:new Intl.DateTimeFormat("default",s).format(new Date(e.date));t.push({key:"Date",val:a})}e.to&&e.to.length&&t.push({key:"To",val:or(e.to)}),e.cc&&e.cc.length&&t.push({key:"Cc",val:or(e.cc)}),e.bcc&&e.bcc.length&&t.push({key:"Bcc",val:or(e.bcc)});let o=t.map(s=>s.key.length).reduce((s,a)=>a>s?a:s,0);t=t.flatMap(s=>{let a=o-s.key.length,l=`${s.key}: ${" ".repeat(a)}`,c=`${" ".repeat(s.key.length+1)} ${" ".repeat(a)}`;return mp(s.val,80,!0).split(/\r?\n/).map(p=>p.trim()).map((p,f)=>`${f?c:l}${p}`)});let i=t.map(s=>s.length).reduce((s,a)=>a>s?a:s,0),r="-".repeat(i);return`
270
270
  ${r}
271
271
  ${t.join(`
272
272
  `)}
273
273
  ${r}
274
- `}function lr(e){let t=[];if(e.from&&t.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${ss(e.from)}</div>`),e.subject&&t.push(`<div class="postal-email-header-key">Subject</div><div class="postal-email-header-value postal-email-header-subject">${_t(e.subject)}</div>`),e.date){let i={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},r=typeof Intl>"u"?e.date:new Intl.DateTimeFormat("default",i).format(new Date(e.date));t.push(`<div class="postal-email-header-key">Date</div><div class="postal-email-header-value postal-email-header-date" data-date="${_t(e.date)}">${_t(r)}</div>`)}return e.to&&e.to.length&&t.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${sr(e.to)}</div>`),e.cc&&e.cc.length&&t.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${sr(e.cc)}</div>`),e.bcc&&e.bcc.length&&t.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${sr(e.bcc)}</div>`),`<div class="postal-email-header">${t.length?'<div class="postal-email-header-row">':""}${t.join(`</div>
275
- <div class="postal-email-header-row">`)}${t.length?"</div>":""}</div>`}function Xp(e,t){let o=!1,i="text",r,n=[],s={address:[],comment:[],group:[],text:[],textWasQuoted:[]},a,l,u=!1;for(a=0,l=e.length;a<l;a++){let m=e[a],p=a?e[a-1]:null;if(m.type==="operator")switch(m.value){case"<":i="address",u=!1;break;case"(":i="comment",u=!1;break;case":":i="group",o=!0,u=!1;break;case'"':u=!u,i="text";break;default:i="text",u=!1;break}else m.value&&(i==="address"&&(m.value=m.value.replace(/^[^<]*<\s*/,"")),p&&p.noBreak&&s[i].length?(s[i][s[i].length-1]+=m.value,i==="text"&&u&&(s.textWasQuoted[s.textWasQuoted.length-1]=!0)):(s[i].push(m.value),i==="text"&&s.textWasQuoted.push(u)))}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),o){s.text=s.text.join(" ");let m=[];s.group.length&&dr(s.group.join(","),{_depth:t+1}).forEach(f=>{f.group?m=m.concat(f.group):m.push(f)}),n.push({name:kt(s.text||r&&r.name),group:m})}else{if(!s.address.length&&s.text.length){for(a=s.text.length-1;a>=0;a--)if(!s.textWasQuoted[a]&&s.text[a].match(/^[^@\s]+@[^@\s]+$/)){s.address=s.text.splice(a,1),s.textWasQuoted.splice(a,1);break}let m=function(p){return s.address.length?p:(s.address=[p.trim()]," ")};if(!s.address.length)for(a=s.text.length-1;a>=0&&!(!s.textWasQuoted[a]&&(s.text[a]=s.text[a].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/,m).trim(),s.address.length));a--);}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),s.address.length>1&&(s.text=s.text.concat(s.address.splice(1))),s.text=s.text.join(" "),s.address=s.address.join(" "),!s.address&&/^=\?[^=]+?=$/.test(s.text.trim())){let m=kt(s.text);if(/<[^<>]+@[^<>]+>/.test(m)){let p=dr(m);if(p&&p.length)return p}return[{address:"",name:m}]}r={address:s.address||s.text||"",name:kt(s.text||s.address||"")},r.address===r.name&&((r.address||"").match(/@/)?r.name="":r.address=""),n.push(r)}return n}var cr=class{constructor(t){this.str=(t||"").toString(),this.operatorCurrent="",this.operatorExpecting="",this.node=null,this.escaped=!1,this.list=[],this.operators={'"':'"',"(":")","<":">",",":"",":":";",";":""}}tokenize(){let t=[];for(let o=0,i=this.str.length;o<i;o++){let r=this.str.charAt(o),n=o<i-1?this.str.charAt(o+1):null;this.checkChar(r,n)}return this.list.forEach(o=>{o.value=(o.value||"").toString().trim(),o.value&&t.push(o)}),t}checkChar(t,o){if(!this.escaped){if(t===this.operatorExpecting){this.node={type:"operator",value:t},o&&![" "," ","\r",`
274
+ `}function nr(e){let t=[];if(e.from&&t.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${ts(e.from)}</div>`),e.subject&&t.push(`<div class="postal-email-header-key">Subject</div><div class="postal-email-header-value postal-email-header-subject">${kt(e.subject)}</div>`),e.date){let i={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},r=typeof Intl>"u"?e.date:new Intl.DateTimeFormat("default",i).format(new Date(e.date));t.push(`<div class="postal-email-header-key">Date</div><div class="postal-email-header-value postal-email-header-date" data-date="${kt(e.date)}">${kt(r)}</div>`)}return e.to&&e.to.length&&t.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${ir(e.to)}</div>`),e.cc&&e.cc.length&&t.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${ir(e.cc)}</div>`),e.bcc&&e.bcc.length&&t.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${ir(e.bcc)}</div>`),`<div class="postal-email-header">${t.length?'<div class="postal-email-header-row">':""}${t.join(`</div>
275
+ <div class="postal-email-header-row">`)}${t.length?"</div>":""}</div>`}function pp(e,t){let o=!1,i="text",r,n=[],s={address:[],comment:[],group:[],text:[],textWasQuoted:[]},a,l,c=!1;for(a=0,l=e.length;a<l;a++){let u=e[a],p=a?e[a-1]:null;if(u.type==="operator")switch(u.value){case"<":i="address",c=!1;break;case"(":i="comment",c=!1;break;case":":i="group",o=!0,c=!1;break;case'"':c=!c,i="text";break;default:i="text",c=!1;break}else u.value&&(i==="address"&&(u.value=u.value.replace(/^[^<]*<\s*/,"")),p&&p.noBreak&&s[i].length?(s[i][s[i].length-1]+=u.value,i==="text"&&c&&(s.textWasQuoted[s.textWasQuoted.length-1]=!0)):(s[i].push(u.value),i==="text"&&s.textWasQuoted.push(c)))}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),o){s.text=s.text.join(" ");let u=[];s.group.length&&ar(s.group.join(","),{_depth:t+1}).forEach(f=>{f.group?u=u.concat(f.group):u.push(f)}),n.push({name:xt(s.text||r&&r.name),group:u})}else{if(!s.address.length&&s.text.length){for(a=s.text.length-1;a>=0;a--)if(!s.textWasQuoted[a]&&s.text[a].match(/^[^@\s]+@[^@\s]+$/)){s.address=s.text.splice(a,1),s.textWasQuoted.splice(a,1);break}let u=function(p){return s.address.length?p:(s.address=[p.trim()]," ")};if(!s.address.length)for(a=s.text.length-1;a>=0&&!(!s.textWasQuoted[a]&&(s.text[a]=s.text[a].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/,u).trim(),s.address.length));a--);}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),s.address.length>1&&(s.text=s.text.concat(s.address.splice(1))),s.text=s.text.join(" "),s.address=s.address.join(" "),!s.address&&/^=\?[^=]+?=$/.test(s.text.trim())){let u=xt(s.text);if(/<[^<>]+@[^<>]+>/.test(u)){let p=ar(u);if(p&&p.length)return p}return[{address:"",name:u}]}r={address:s.address||s.text||"",name:xt(s.text||s.address||"")},r.address===r.name&&((r.address||"").match(/@/)?r.name="":r.address=""),n.push(r)}return n}var sr=class{constructor(t){this.str=(t||"").toString(),this.operatorCurrent="",this.operatorExpecting="",this.node=null,this.escaped=!1,this.list=[],this.operators={'"':'"',"(":")","<":">",",":"",":":";",";":""}}tokenize(){let t=[];for(let o=0,i=this.str.length;o<i;o++){let r=this.str.charAt(o),n=o<i-1?this.str.charAt(o+1):null;this.checkChar(r,n)}return this.list.forEach(o=>{o.value=(o.value||"").toString().trim(),o.value&&t.push(o)}),t}checkChar(t,o){if(!this.escaped){if(t===this.operatorExpecting){this.node={type:"operator",value:t},o&&![" "," ","\r",`
276
276
  `,",",";"].includes(o)&&(this.node.noBreak=!0),this.list.push(this.node),this.node=null,this.operatorExpecting="",this.escaped=!1;return}else if(!this.operatorExpecting&&t in this.operators){this.node={type:"operator",value:t},this.list.push(this.node),this.node=null,this.operatorExpecting=this.operators[t],this.escaped=!1;return}else if(this.operatorExpecting==='"'&&t==="\\"){this.escaped=!0;return}}this.node||(this.node={type:"text",value:""},this.list.push(this.node)),t===`
277
- `&&(t=" "),(t.charCodeAt(0)>=33||[" "," "].includes(t))&&(this.node.value+=t),this.escaped=!1}},Zp=50;function dr(e,t){t=t||{};let o=t._depth||0;if(o>Zp)return[];let r=new cr(e).tokenize(),n=[],s=[],a=[];if(r.forEach(l=>{l.type==="operator"&&(l.value===","||l.value===";")?(s.length&&n.push(s),s=[]):s.push(l)}),s.length&&n.push(s),n.forEach(l=>{l=Xp(l,o),l.length&&(a=a.concat(l))}),t.flatten){let l=[],u=m=>{m.forEach(p=>{if(p.group)return u(p.group);l.push(p)})};return u(a),l}return a}var No=dr;function as(e){for(var t="",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(e),r=i.byteLength,n=r%3,s=r-n,a,l,u,m,p,f=0;f<s;f=f+3)p=i[f]<<16|i[f+1]<<8|i[f+2],a=(p&16515072)>>18,l=(p&258048)>>12,u=(p&4032)>>6,m=p&63,t+=o[a]+o[l]+o[u]+o[m];return n==1?(p=i[s],a=(p&252)>>2,l=(p&3)<<4,t+=o[a]+o[l]+"=="):n==2&&(p=i[s]<<8|i[s+1],a=(p&64512)>>10,l=(p&1008)>>4,u=(p&15)<<2,t+=o[a]+o[l]+o[u]+"="),t}var ef=256,tf=2*1024*1024,of=10;function ur(e){return e.replace(/-(.)/g,(t,o)=>o.toUpperCase())}function mr(e,t,o){if(e==null)return t;if(typeof e!="number"||!Number.isInteger(e)||e<0)throw new TypeError(`${o} must be a non-negative integer`);return e}var mo=class e{static async parse(t,o){return new e(o).parse(t)}constructor(t,o=0){this.options=t||{},this.mimeOptions={maxNestingDepth:mr(this.options.maxNestingDepth,ef,"maxNestingDepth"),maxHeadersSize:mr(this.options.maxHeadersSize,tf,"maxHeadersSize")},this.maxRfc822NestingDepth=mr(this.options.maxRfc822NestingDepth,of,"maxRfc822NestingDepth"),this.rfc822NestingDepth=o,this.root=this.currentNode=new jt({postalMime:this,...this.mimeOptions}),this.boundaries=[],this.textContent={},this.attachments=[],this.attachmentEncoding=(this.options.attachmentEncoding||"").toString().replace(/[-_\s]/g,"").trim().toLowerCase()||"arraybuffer",this.started=!1}async finalize(){await this.root.finalize()}async processLine(t,o){let i=this.boundaries;if(i.length&&t.length>2&&t[0]===45&&t[1]===45)for(let r=i.length-1;r>=0;r--){let n=i[r];if(t.length<n.value.length+2)continue;let s=!0;for(let m=0;m<n.value.length;m++)if(t[m+2]!==n.value[m]){s=!1;break}if(!s)continue;let a=n.value.length+2,l=!1;t.length>=n.value.length+4&&t[n.value.length+2]===45&&t[n.value.length+3]===45&&(l=!0,a=n.value.length+4);let u=!0;for(let m=a;m<t.length;m++)if(t[m]!==32&&t[m]!==9){u=!1;break}if(u)return l?(await n.node.finalize(),this.currentNode=n.node.parentNode||this.root):(await n.node.finalizeChildNodes(),this.currentNode=new jt({postalMime:this,parentNode:n.node,parentMultipartType:n.node.contentType.multipart,...this.mimeOptions})),o?this.finalize():void 0}if(this.currentNode.feed(t),o)return this.finalize()}readLine(){let t=this.readPos,o=this.readPos;for(;this.readPos<this.av.length;){let i=this.av[this.readPos++];if(i!==13&&i!==10&&(o=this.readPos),i===10)return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}async processNodeTree(){let t={},o=new Set,i=this.textMap=new Map,r=this.forceRfc822Attachments(),n=async(s,a,l)=>{if(a=a||!1,l=l||!1,s.contentType.multipart)s.contentType.multipart==="alternative"?a=s:s.contentType.multipart==="related"&&(l=s);else{let u=this.isInlineMessageRfc822(s)&&!r,m=u&&this.rfc822NestingDepth>=this.maxRfc822NestingDepth;if(u&&!m){let p=new e({...this.mimeOptions,maxRfc822NestingDepth:this.maxRfc822NestingDepth,attachmentEncoding:"arraybuffer"},this.rfc822NestingDepth+1);s.subMessage=await p.parse(s.content),i.has(s)||i.set(s,{});let f=i.get(s);(s.subMessage.text||!s.subMessage.html)&&(f.plain=f.plain||[],f.plain.push({type:"subMessage",value:s.subMessage}),o.add("plain")),s.subMessage.html&&(f.html=f.html||[],f.html.push({type:"subMessage",value:s.subMessage}),o.add("html")),p.textMap&&p.textMap.forEach((y,A)=>{i.set(A,y)});for(let y of s.subMessage.attachments||[])this.attachments.push(y)}else if(this.isInlineTextNode(s)){let p=s.contentType.parsed.value.substr(s.contentType.parsed.value.indexOf("/")+1),f=a||s;i.has(f)||i.set(f,{});let y=i.get(f);y[p]=y[p]||[],y[p].push({type:"text",value:s.getTextContent()}),o.add(p)}else if(s.content){let p=s.contentDisposition?.parsed?.params?.filename||s.contentType.parsed.params.name||null,f={filename:p?kt(p):null,mimeType:s.contentType.parsed.value,disposition:s.contentDisposition?.parsed?.value||null};switch(l&&s.contentId&&!m&&(f.related=!0),m&&(f.rfc822DepthExceeded=!0),s.contentDescription&&(f.description=s.contentDescription),s.contentId&&(f.contentId=s.contentId),s.contentType.parsed.value){case"text/calendar":case"application/ics":{s.contentType.parsed.params.method&&(f.method=s.contentType.parsed.params.method.toString().toUpperCase().trim());let y=s.getTextContent().replace(/\r?\n/g,`
277
+ `&&(t=" "),(t.charCodeAt(0)>=33||[" "," "].includes(t))&&(this.node.value+=t),this.escaped=!1}},fp=50;function ar(e,t){t=t||{};let o=t._depth||0;if(o>fp)return[];let r=new sr(e).tokenize(),n=[],s=[],a=[];if(r.forEach(l=>{l.type==="operator"&&(l.value===","||l.value===";")?(s.length&&n.push(s),s=[]):s.push(l)}),s.length&&n.push(s),n.forEach(l=>{l=pp(l,o),l.length&&(a=a.concat(l))}),t.flatten){let l=[],c=u=>{u.forEach(p=>{if(p.group)return c(p.group);l.push(p)})};return c(a),l}return a}var Qo=ar;function os(e){for(var t="",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(e),r=i.byteLength,n=r%3,s=r-n,a,l,c,u,p,f=0;f<s;f=f+3)p=i[f]<<16|i[f+1]<<8|i[f+2],a=(p&16515072)>>18,l=(p&258048)>>12,c=(p&4032)>>6,u=p&63,t+=o[a]+o[l]+o[c]+o[u];return n==1?(p=i[s],a=(p&252)>>2,l=(p&3)<<4,t+=o[a]+o[l]+"=="):n==2&&(p=i[s]<<8|i[s+1],a=(p&64512)>>10,l=(p&1008)>>4,c=(p&15)<<2,t+=o[a]+o[l]+o[c]+"="),t}var gp=256,hp=2*1024*1024,Ap=10;function lr(e){return e.replace(/-(.)/g,(t,o)=>o.toUpperCase())}function cr(e,t,o){if(e==null)return t;if(typeof e!="number"||!Number.isInteger(e)||e<0)throw new TypeError(`${o} must be a non-negative integer`);return e}var uo=class e{static async parse(t,o){return new e(o).parse(t)}constructor(t,o=0){this.options=t||{},this.mimeOptions={maxNestingDepth:cr(this.options.maxNestingDepth,gp,"maxNestingDepth"),maxHeadersSize:cr(this.options.maxHeadersSize,hp,"maxHeadersSize")},this.maxRfc822NestingDepth=cr(this.options.maxRfc822NestingDepth,Ap,"maxRfc822NestingDepth"),this.rfc822NestingDepth=o,this.root=this.currentNode=new It({postalMime:this,...this.mimeOptions}),this.boundaries=[],this.textContent={},this.attachments=[],this.attachmentEncoding=(this.options.attachmentEncoding||"").toString().replace(/[-_\s]/g,"").trim().toLowerCase()||"arraybuffer",this.started=!1}async finalize(){await this.root.finalize()}async processLine(t,o){let i=this.boundaries;if(i.length&&t.length>2&&t[0]===45&&t[1]===45)for(let r=i.length-1;r>=0;r--){let n=i[r];if(t.length<n.value.length+2)continue;let s=!0;for(let u=0;u<n.value.length;u++)if(t[u+2]!==n.value[u]){s=!1;break}if(!s)continue;let a=n.value.length+2,l=!1;t.length>=n.value.length+4&&t[n.value.length+2]===45&&t[n.value.length+3]===45&&(l=!0,a=n.value.length+4);let c=!0;for(let u=a;u<t.length;u++)if(t[u]!==32&&t[u]!==9){c=!1;break}if(c)return l?(await n.node.finalize(),this.currentNode=n.node.parentNode||this.root):(await n.node.finalizeChildNodes(),this.currentNode=new It({postalMime:this,parentNode:n.node,parentMultipartType:n.node.contentType.multipart,...this.mimeOptions})),o?this.finalize():void 0}if(this.currentNode.feed(t),o)return this.finalize()}readLine(){let t=this.readPos,o=this.readPos;for(;this.readPos<this.av.length;){let i=this.av[this.readPos++];if(i!==13&&i!==10&&(o=this.readPos),i===10)return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}async processNodeTree(){let t={},o=new Set,i=this.textMap=new Map,r=this.forceRfc822Attachments(),n=async(s,a,l)=>{if(a=a||!1,l=l||!1,s.contentType.multipart)s.contentType.multipart==="alternative"?a=s:s.contentType.multipart==="related"&&(l=s);else{let c=this.isInlineMessageRfc822(s)&&!r,u=c&&this.rfc822NestingDepth>=this.maxRfc822NestingDepth;if(c&&!u){let p=new e({...this.mimeOptions,maxRfc822NestingDepth:this.maxRfc822NestingDepth,attachmentEncoding:"arraybuffer"},this.rfc822NestingDepth+1);s.subMessage=await p.parse(s.content),i.has(s)||i.set(s,{});let f=i.get(s);(s.subMessage.text||!s.subMessage.html)&&(f.plain=f.plain||[],f.plain.push({type:"subMessage",value:s.subMessage}),o.add("plain")),s.subMessage.html&&(f.html=f.html||[],f.html.push({type:"subMessage",value:s.subMessage}),o.add("html")),p.textMap&&p.textMap.forEach((b,h)=>{i.set(h,b)});for(let b of s.subMessage.attachments||[])this.attachments.push(b)}else if(this.isInlineTextNode(s)){let p=s.contentType.parsed.value.substr(s.contentType.parsed.value.indexOf("/")+1),f=a||s;i.has(f)||i.set(f,{});let b=i.get(f);b[p]=b[p]||[],b[p].push({type:"text",value:s.getTextContent()}),o.add(p)}else if(s.content){let p=s.contentDisposition?.parsed?.params?.filename||s.contentType.parsed.params.name||null,f={filename:p?xt(p):null,mimeType:s.contentType.parsed.value,disposition:s.contentDisposition?.parsed?.value||null};switch(l&&s.contentId&&!u&&(f.related=!0),u&&(f.rfc822DepthExceeded=!0),s.contentDescription&&(f.description=s.contentDescription),s.contentId&&(f.contentId=s.contentId),s.contentType.parsed.value){case"text/calendar":case"application/ics":{s.contentType.parsed.params.method&&(f.method=s.contentType.parsed.params.method.toString().toUpperCase().trim());let b=s.getTextContent().replace(/\r?\n/g,`
278
278
  `).replace(/\n*$/,`
279
- `);f.content=ut.encode(y);break}default:f.content=s.content}this.attachments.push(f)}}for(let u of s.childNodes)await n(u,a,l)};await n(this.root,!1,!1),i.forEach(s=>{o.forEach(a=>{if(t[a]||(t[a]=[]),s[a])s[a].forEach(l=>{switch(l.type){case"text":t[a].push(l.value);break;case"subMessage":switch(a){case"html":t[a].push(lr(l.value));break;case"plain":t[a].push(ar(l.value));break}break}});else{let l;switch(a){case"html":l="plain";break;case"plain":l="html";break}(s[l]||[]).forEach(u=>{switch(u.type){case"text":switch(a){case"html":t[a].push(is(u.value));break;case"plain":t[a].push(rs(u.value));break}break;case"subMessage":switch(a){case"html":t[a].push(lr(u.value));break;case"plain":t[a].push(ar(u.value));break}break}})}})}),Object.keys(t).forEach(s=>{t[s]=t[s].join(`
280
- `)}),this.textContent=t}isInlineTextNode(t){if(t.contentDisposition?.parsed?.value==="attachment")return!1;switch(t.contentType.parsed?.value){case"text/html":case"text/plain":return!0;default:return!1}}isInlineMessageRfc822(t){return t.contentType.parsed?.value!=="message/rfc822"?!1:(t.contentDisposition?.parsed?.value||(this.options.rfc822Attachments?"attachment":"inline"))==="inline"}forceRfc822Attachments(){if(this.options.forceRfc822Attachments)return!0;let t=!1,o=i=>{i.contentType.multipart||i.contentType.parsed&&["message/delivery-status","message/feedback-report"].includes(i.contentType.parsed.value)&&(t=!0);for(let r of i.childNodes)o(r)};return o(this.root),t}async resolveStream(t){let o=0,i=[],r=t.getReader();for(;;){let{done:a,value:l}=await r.read();if(a)break;i.push(l),o+=l.length}let n=new Uint8Array(o),s=0;for(let a of i)n.set(a,s),s+=a.length;return n}async parse(t){if(this.started)throw new Error("Can not reuse parser, create a new PostalMime object");for(this.started=!0,t&&typeof t.getReader=="function"&&(t=await this.resolveStream(t)),t=t||new ArrayBuffer(0),typeof t=="string"&&(t=ut.encode(t)),(t instanceof Blob||Object.prototype.toString.call(t)==="[object Blob]")&&(t=await mt(t)),t.buffer instanceof ArrayBuffer&&(t=new Uint8Array(t).buffer),this.buf=t,this.av=new Uint8Array(t),this.readPos=0;this.readPos<this.av.length;){let r=this.readLine();await this.processLine(r.bytes,r.done)}await this.processNodeTree();let o={headers:this.root.headers.map(r=>({key:r.key,originalKey:r.originalKey,value:r.value})).reverse()};for(let r of["from","sender"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=No(n.value);s&&s.length&&(o[r]=s[0])}}for(let r of["delivered-to","return-path"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=No(n.value);if(s&&s.length&&s[0].address){let a=ur(r);o[a]=s[0].address}}}for(let r of["to","cc","bcc","reply-to"]){let n=this.root.headers.filter(a=>a.key===r),s=[];if(n.filter(a=>a&&a.value).map(a=>No(a.value)).forEach(a=>s=s.concat(a||[])),s&&s.length){let a=ur(r);o[a]=s}}for(let r of["subject","message-id","in-reply-to","references"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=ur(r);o[s]=kt(n.value)}}let i=this.root.headers.find(r=>r.key==="date");if(i){let r=new Date(i.value);r.toString()==="Invalid Date"?r=i.value:r=r.toISOString(),o.date=r}switch(this.textContent?.html&&(o.html=this.textContent.html),this.textContent?.plain&&(o.text=this.textContent.plain),o.attachments=this.attachments,o.headerLines=(this.root.rawHeaderLines||[]).slice().reverse(),this.attachmentEncoding){case"arraybuffer":break;case"base64":for(let n of o.attachments||[])n?.content&&(n.content=as(n.content),n.encoding="base64");break;case"utf8":let r=new TextDecoder("utf8");for(let n of o.attachments||[])n?.content&&(n.content=r.decode(n.content),n.encoding="utf8");break;default:throw new Error("Unknown attachment encoding")}return o}};var Ss=me(As(),1),Ks=["inbox","archive","spam","sent","trash"],ks=["inbox","archive","spam","trash"],Lo=["cyan","teal","grass","lime","yellow","orange","iris","plum","crimson","bronze","mauve"],mf="6.28.1-preview-inboxes.1";function le(e,t){let o=$t(t);return o?`${e}?${o}`:e}function $t(e){let t=new URLSearchParams;return e.limit!==void 0&&t.set("limit",e.limit.toString()),"after"in e&&e.after!==void 0&&t.set("after",e.after),"before"in e&&e.before!==void 0&&t.set("before",e.before),t.toString()}var pf=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/api-keys",e,t)}async list(e={}){let t=le("/api-keys",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/api-keys/${e}`,t)}async remove(e){return await this.resend.delete(`/api-keys/${e}`)}},ff=class{constructor(e){this.resend=e}async get(e){return await this.resend.get(`/automations/${e.automationId}/runs/${e.runId}`)}async list(e){let t=$t(e),o=new URLSearchParams(t);if(e.status){let n=Array.isArray(e.status)?e.status.join(","):e.status;o.set("status",n)}let i=o.toString(),r=i?`/automations/${e.automationId}/runs?${i}`:`/automations/${e.automationId}/runs`;return await this.resend.get(r)}};function _s(e){switch(e.type){case"trigger":return{key:e.key,type:e.type,config:{event_name:e.config.eventName}};case"delay":return{key:e.key,type:e.type,config:e.config};case"send_email":return{key:e.key,type:e.type,config:{template:e.config.template,subject:e.config.subject,from:e.config.from,reply_to:e.config.replyTo}};case"wait_for_event":return{key:e.key,type:e.type,config:{event_name:e.config.eventName,timeout:e.config.timeout,filter_rule:e.config.filterRule}};case"condition":return{key:e.key,type:e.type,config:e.config};case"contact_update":return{key:e.key,type:e.type,config:{first_name:e.config.firstName,last_name:e.config.lastName,unsubscribed:e.config.unsubscribed,properties:e.config.properties}};case"contact_delete":return{key:e.key,type:e.type,config:e.config};case"add_to_segment":return{key:e.key,type:e.type,config:{segment_id:e.config.segmentId}}}}function Fs(e){return{from:e.from,to:e.to,type:e.type}}function hf(e){return{name:e.name,status:e.status,steps:e.steps.map(_s),connections:e.connections.map(Fs)}}function gf(e){return{event:e.event,contact_id:e.contactId,email:e.email,payload:e.payload}}var Af=class{constructor(e){this.resend=e,this.runs=new ff(this.resend)}async create(e){return await this.resend.post("/automations",hf(e))}async list(e={}){let t=[$t(e)];e.status&&t.push(`status=${encodeURIComponent(e.status)}`);let o=t.filter(Boolean).join("&"),i=o?`/automations?${o}`:"/automations";return await this.resend.get(i)}async get(e){return await this.resend.get(`/automations/${e}`)}async remove(e){return await this.resend.delete(`/automations/${e}`)}async update(e,t){let o={};return t.name!==void 0&&(o.name=t.name),t.status!==void 0&&(o.status=t.status),t.steps!==void 0&&(o.steps=t.steps.map(_s)),t.connections!==void 0&&(o.connections=t.connections.map(Fs)),await this.resend.patch(`/automations/${e}`,o)}async duplicate(e){return await this.resend.post(`/automations/${e}/duplicate`)}async stop(e){return await this.resend.post(`/automations/${e}/stop`)}};function bf(e){return e?.map(t=>({content:t.content,filename:t.filename,path:t.path,content_type:t.contentType,content_id:t.contentId}))}function Rs(e){return{attachments:bf(e.attachments),bcc:e.bcc,cc:e.cc,from:e.from,headers:e.headers,html:e.html,reply_to:e.replyTo,scheduled_at:e.scheduledAt,subject:e.subject,tags:e.tags,text:e.text,to:e.to,template:e.template?{id:e.template.id,variables:e.template.variables}:void 0,topic_id:e.topicId}}async function fo(e){let t;try{({render:t}=await import("@react-email/render"))}catch{throw new Error("Failed to render React component. Make sure to install `@react-email/render` or `@react-email/components`.")}return t(e)}var yf=class{constructor(e){this.resend=e}async send(e,t){return this.create(e,t)}async create(e,t){let o=[];for(let i of e)i.react&&(i.html=await fo(i.react),i.react=void 0),o.push(Rs(i));return await this.resend.post("/emails/batch",o,{...t,headers:{"x-batch-validation":t?.batchValidation??"strict",...t?.headers}})}},Cf=class{constructor(e){this.resend=e}async create(e,t={}){let o=e.react?await fo(e.react):e.html;return await this.resend.post("/broadcasts",{name:e.name,segment_id:e.segmentId,audience_id:e.audienceId,preview_text:e.previewText,from:e.from,html:o,reply_to:e.replyTo,subject:e.subject,text:e.text,topic_id:e.topicId,send:e.send,scheduled_at:e.scheduledAt},t)}async send(e,t){return await this.resend.post(`/broadcasts/${e}/send`,{scheduled_at:t?.scheduledAt})}async list(e={}){let t=le("/broadcasts",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/broadcasts/${e}`)}async recipients(e,t){let o=`/broadcasts/${e}/recipients?${xf(t)}`;return await this.resend.get(o)}async clickedLinks(e,t={}){let o=le(`/broadcasts/${e}/clicked-links`,t);return await this.resend.get(o)}async remove(e){return await this.resend.delete(`/broadcasts/${e}`)}async cancel(e){return await this.resend.post(`/broadcasts/${e}/cancel`)}async duplicate(e){return await this.resend.post(`/broadcasts/${e}/duplicate`)}async update(e,t){let o=t.react?await fo(t.react):t.html;return await this.resend.patch(`/broadcasts/${e}`,{name:t.name,segment_id:t.segmentId,audience_id:t.audienceId,from:t.from,html:o,text:t.text,subject:t.subject,reply_to:t.replyTo,preview_text:t.previewText,topic_id:t.topicId})}};function xf(e){let{type:t,email:o,bounceType:i,...r}=e,n=new URLSearchParams($t(r));return n.set("type",t),o!==void 0&&n.set("email",o),i!==void 0&&n.set("bounce_type",i),n.toString()}function bs(e){return{id:e.id,key:e.key,createdAt:e.created_at,type:e.type,fallbackValue:e.fallback_value}}function ys(e){return"key"in e?{key:e.key,type:e.type,fallback_value:e.fallbackValue}:{fallback_value:e.fallbackValue}}var wf=class{constructor(e){this.resend=e}async create(e){let t=ys(e);return await this.resend.post("/contact-properties",t)}async list(e={}){let t=le("/contact-properties",e),o=await this.resend.get(t);return o.data?{data:{...o.data,data:o.data.data.map(i=>bs(i))},headers:o.headers,error:null}:o}async get(e){if(!e)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=await this.resend.get(`/contact-properties/${e}`);return t.data?{data:{object:"contact_property",...bs(t.data)},headers:t.headers,error:null}:t}async update(e){if(!e.id)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=ys(e);return await this.resend.patch(`/contact-properties/${e.id}`,t)}async remove(e){return e?await this.resend.delete(`/contact-properties/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},vf=class{constructor(e){this.resend=e}async create(e,t={}){let o=this.buildCreateFormData(e);return this.resend.post("/contacts/imports",o,t)}async list(e={}){let t=new URLSearchParams($t(e));e.status!==void 0&&t.set("status",e.status);let o=t.toString(),i=o?`/contacts/imports?${o}`:"/contacts/imports";return this.resend.get(i)}async get(e){return this.resend.get(`/contacts/imports/${e}`)}buildCreateFormData(e){let t=new FormData;return t.append("file",e.file),this.appendField(t,"column_map",this.buildColumnMap(e.columnMap??null)),this.appendField(t,"on_conflict",e.onConflict??null),this.appendField(t,"segments",e.segments??null),this.appendField(t,"topics",e.topics??null),t}buildColumnMap(e){return e===null?null:{email:e.email,first_name:e.firstName,last_name:e.lastName,unsubscribed:e.unsubscribed,properties:e.properties}}appendField(e,t,o){o!==null&&e.append(t,typeof o=="string"?o:JSON.stringify(o))}},Uf=class{constructor(e){this.resend=e}async list(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=le(`/contacts/${e.email?e.email:e.contactId}/segments`,e);return await this.resend.get(t)}async add(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.post(`/contacts/${t}/segments/${e.segmentId}`)}async remove(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.delete(`/contacts/${t}/segments/${e.segmentId}`)}},Sf=class{constructor(e){this.resend=e}async update(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.id;return this.resend.patch(`/contacts/${t}/topics`,e.topics)}async list(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=le(`/contacts/${e.email?e.email:e.id}/topics`,e);return this.resend.get(t)}},Kf=class{constructor(e){this.resend=e,this.imports=new vf(this.resend),this.topics=new Sf(this.resend),this.segments=new Uf(this.resend)}async create(e,t={}){return"audienceId"in e?"segments"in e||"topics"in e?{data:null,headers:null,error:{message:"`audienceId` is deprecated, and cannot be used together with `segments` or `topics`. Use `segments` instead to add one or more segments to the new contact.",statusCode:null,name:"invalid_parameter"}}:await this.resend.post(`/audiences/${e.audienceId}/contacts`,{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties},t):await this.resend.post("/contacts",{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties,segments:e.segments,topics:e.topics},t)}async list(e={}){let t=e.segmentId??e.audienceId;if(!t){let i=le("/contacts",e);return await this.resend.get(i)}let o=le(`/segments/${t}/contacts`,e);return await this.resend.get(o)}async get(e){return typeof e=="string"?this.resend.get(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.get(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.get(`/contacts/${e?.email?e?.email:e?.id}`)}async update(e){return!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?await this.resend.patch(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties}):await this.resend.patch(`/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties})}async remove(e){return typeof e=="string"?this.resend.delete(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.delete(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.delete(`/contacts/${e?.email?e?.email:e?.id}`)}};function kf(e){return{name:e.name,region:e.region,custom_return_path:e.customReturnPath,capabilities:e.capabilities,open_tracking:e.openTracking,click_tracking:e.clickTracking,tls:e.tls,tracking_subdomain:e.trackingSubdomain}}var _f=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/domains/claim",{name:e.name,region:e.region,custom_return_path:e.customReturnPath,open_tracking:e.openTracking,click_tracking:e.clickTracking,tracking_subdomain:e.trackingSubdomain},t)}async get(e){return await this.resend.get(`/domains/${e}/claim`)}async verify(e){return await this.resend.post(`/domains/${e}/claim/verify`)}},Ff=class{constructor(e){this.resend=e,this.claims=new _f(this.resend)}async create(e,t={}){return await this.resend.post("/domains",kf(e),t)}async list(e={}){let t=le("/domains",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/domains/${e}`)}async update(e){return await this.resend.patch(`/domains/${e.id}`,{click_tracking:e.clickTracking,open_tracking:e.openTracking,tls:e.tls,capabilities:e.capabilities,tracking_subdomain:e.trackingSubdomain})}async remove(e){return await this.resend.delete(`/domains/${e}`)}async verify(e){return await this.resend.post(`/domains/${e}/verify`)}},Rf=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=le(`/emails/${t}/attachments`,e);return await this.resend.get(o)}},Df=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/receiving/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=le(`/emails/receiving/${t}/attachments`,e);return await this.resend.get(o)}},Tf=class{constructor(e){this.resend=e,this.attachments=new Df(e)}async get(e,t={}){let o=new URLSearchParams;t.html_format!==void 0&&o.set("html_format",t.html_format);let i=o.toString(),r=i?`/emails/receiving/${e}?${i}`:`/emails/receiving/${e}`;return await this.resend.get(r)}async list(e={}){let t=le("/emails/receiving",e);return await this.resend.get(t)}async forward(e,t={}){let{emailId:o,to:i,from:r}=e,n=e.passthrough!==!1,s=await this.get(o);if(s.error)return{data:null,error:s.error,headers:s.headers};let a=s.data,l=a.subject||"(no subject)";if(n)return this.forwardPassthrough(a,{to:i,from:r,subject:l},t);let u=l.startsWith("Fwd:")?l:`Fwd: ${l}`;return this.forwardWrapped(a,{to:i,from:r,subject:u,text:"text"in e?e.text:void 0,html:"html"in e?e.html:void 0},t)}async forwardPassthrough(e,t,o){let{to:i,from:r,subject:n}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let s=await fetch(e.raw.download_url);if(!s.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:s.status},headers:null};let a=await s.text(),l=await mo.parse(a,{attachmentEncoding:"base64"}),u=l.attachments.map(m=>{let p=m.contentId?m.contentId.replace(/^<|>$/g,""):void 0;return{filename:m.filename,content:m.content.toString(),content_type:m.mimeType,content_id:p||void 0}});return await this.resend.post("/emails",{from:r,to:i,subject:n,text:l.text||void 0,html:l.html||void 0,attachments:u.length>0?u:void 0},o)}async forwardWrapped(e,t,o){let{to:i,from:r,subject:n,text:s,html:a}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let l=await fetch(e.raw.download_url);if(!l.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:l.status},headers:null};let u=await l.text();return await this.resend.post("/emails",{from:r,to:i,subject:n,text:s,html:a,attachments:[{filename:"forwarded_message.eml",content:Buffer.from(u).toString("base64"),content_type:"message/rfc822"}]},o)}},Of=class{constructor(e){this.resend=e,this.attachments=new Rf(e),this.receiving=new Tf(e)}async send(e,t={}){return this.create(e,t)}async create(e,t={}){let o={...e};return e.react&&(o.html=await fo(e.react)),await this.resend.post("/emails",Rs(o),t)}async get(e){return await this.resend.get(`/emails/${e}`)}async list(e={}){let t=le("/emails",e);return await this.resend.get(t)}async update(e){return await this.resend.patch(`/emails/${e.id}`,{scheduled_at:e.scheduledAt})}async cancel(e){return await this.resend.post(`/emails/${e}/cancel`)}async share(e,t){return await this.resend.post(`/emails/${e}/share`,{expires_in:t?.expiresIn})}async metrics(e={}){let t=Ef(e),o=t?`/emails/metrics?${t}`:"/emails/metrics";return await this.resend.get(o)}};function Ef(e){let t={start_date:e.startDate,end_date:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:e.metrics?.join(","),dimensions:e.dimensions?.join(","),domain_id:e.domainId?.join(","),email_id:e.emailId?.join(","),broadcast_id:e.broadcastId?.join(",")},o=new URLSearchParams;for(let[i,r]of Object.entries(t))r!==void 0&&r!==""&&o.set(i,r);return o.toString()}var Bf=class{constructor(e){this.resend=e}async send(e){return await this.resend.post("/events/send",gf(e))}async create(e){return await this.resend.post("/events",e)}async get(e){return await this.resend.get(`/events/${encodeURIComponent(e)}`)}async list(e={}){let t=le("/events",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/events/${encodeURIComponent(e)}`,t)}async remove(e){return await this.resend.delete(`/events/${encodeURIComponent(e)}`)}};function Ds(e,t={}){let o=new URLSearchParams;t.folder!==void 0&&o.set("folder",t.folder),t.query!==void 0&&o.set("query",t.query),t.from!==void 0&&o.set("from",t.from),t.limit!==void 0&&o.set("limit",String(t.limit)),t.after!==void 0&&o.set("after",t.after),t.before!==void 0&&o.set("before",t.before);let i=t.label===void 0?[]:Array.isArray(t.label)?t.label:[t.label];for(let n of i)o.append("label",n);let r=o.toString();return r?`${e}?${r}`:e}var If=class{constructor(e){this.resend=e}async list(e){let{inboxId:t,limit:o,after:i,before:r}=e,n=Ds(`/inboxes/${t}/drafts`,{limit:o,after:i,before:r});return this.resend.get(n)}async create(e,t={}){let{inboxId:o,threadId:i,replyToEmailId:r,...n}=e;return this.resend.post(`/inboxes/${o}/drafts`,{...n,thread_id:i,reply_to_email_id:r},t)}async get(e){let{inboxId:t,draftId:o}=e;return this.resend.get(`/inboxes/${t}/drafts/${o}`)}async update(e){let{inboxId:t,draftId:o,...i}=e;return this.resend.patch(`/inboxes/${t}/drafts/${o}`,i)}async remove(e){let{inboxId:t,draftId:o}=e;return this.resend.delete(`/inboxes/${t}/drafts/${o}`)}async send(e,t={}){let{inboxId:o,draftId:i}=e;return this.resend.post(`/inboxes/${o}/drafts/${i}/send`,void 0,t)}},jf=class{constructor(e){this.resend=e}async list(e){return this.resend.get(`/inboxes/${e.inboxId}/labels`)}async create(e,t={}){let{inboxId:o,name:i,color:r}=e;return this.resend.post(`/inboxes/${o}/labels`,{name:i,color:r},t)}async update(e){let{inboxId:t,labelId:o,name:i,color:r}=e;return this.resend.patch(`/inboxes/${t}/labels/${o}`,{name:i,color:r})}async remove(e){let{inboxId:t,labelId:o}=e;return this.resend.delete(`/inboxes/${t}/labels/${o}`)}},Pf=class{constructor(e){this.resend=e}async get(e){let{inboxId:t,threadId:o,emailId:i}=e;return this.resend.get(`/inboxes/${t}/threads/${o}/emails/${i}`)}async reply(e,t={}){let{inboxId:o,threadId:i,emailId:r,html:n,text:s,subject:a}=e;return this.resend.post(`/inboxes/${o}/threads/${i}/emails/${r}/reply`,{html:n,text:s,subject:a},t)}async forward(e,t={}){let{inboxId:o,threadId:i,emailId:r,to:n,html:s,text:a,subject:l}=e;return this.resend.post(`/inboxes/${o}/threads/${i}/emails/${r}/forward`,{to:n,html:s,text:a,subject:l},t)}},$f=class{constructor(e){this.resend=e,this.emails=new Pf(e)}async list(e){let{inboxId:t,...o}=e,i=Ds(`/inboxes/${t}/threads`,o);return this.resend.get(i)}async get(e){let{inboxId:t,threadId:o}=e;return this.resend.get(`/inboxes/${t}/threads/${o}`)}async update(e){let{inboxId:t,threadId:o,read:i,folder:r,labelId:n}=e;return this.resend.patch(`/inboxes/${t}/threads/${o}`,{read:i,folder:r,label_id:n})}async remove(e){let{inboxId:t,threadId:o}=e;return this.resend.delete(`/inboxes/${t}/threads/${o}`)}},Gf=class{constructor(e){this.resend=e,this.threads=new $f(e),this.labels=new jf(e),this.drafts=new If(e)}async create(e,t={}){return this.resend.post("/inboxes",{email_address:e.emailAddress,name:e.name,forwarding:e.forwarding,friendly_name:e.friendlyName},t)}async list(e={}){let t=le("/inboxes",e);return this.resend.get(t)}async get(e){return this.resend.get(`/inboxes/${e}`)}async update(e,t){return this.resend.patch(`/inboxes/${e}`,{name:t.name,friendly_name:t.friendlyName})}async remove(e){return this.resend.delete(`/inboxes/${e}`)}},Hf=class{constructor(e){this.resend=e}async list(e={}){let t=le("/logs",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/logs/${e}`)}},Qf=class{constructor(e){this.resend=e}async list(e={}){let t=le("/oauth/grants",e);return await this.resend.get(t)}async revoke(e){return await this.resend.delete(`/oauth/grants/${e}`)}},Nf=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/segments",e,t)}async list(e={}){let t=le("/segments",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/segments/${e}`)}async update(e,t){return await this.resend.patch(`/segments/${e}`,t)}async remove(e){return await this.resend.delete(`/segments/${e}`)}},Mf=class{constructor(e){this.resend=e}async add(e){return this.resend.post("/suppressions/batch/add",e)}async remove(e){return this.resend.post("/suppressions/batch/remove",e)}},Cs=()=>({data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}),qf=class{constructor(e){this.resend=e,this.batch=new Mf(e)}async add(e){return this.resend.post("/suppressions",e)}async list(e={}){let t=Lf(e),o=t?`/suppressions?${t}`:"/suppressions";return this.resend.get(o)}async get(e){return e?this.resend.get(`/suppressions/${encodeURIComponent(e)}`):Cs()}async remove(e){return e?this.resend.delete(`/suppressions/${encodeURIComponent(e)}`):Cs()}};function Lf(e){let{origin:t,...o}=e,i=new URLSearchParams($t(o));return t&&i.set("origin",t),i.toString()}function Wf(e={}){let t=new URLSearchParams;return e.before&&t.set("before",e.before),e.after&&t.set("after",e.after),e.limit&&t.set("limit",e.limit.toString()),t.size>0?`?${t.toString()}`:""}function Jf(e){return e?.map(t=>({key:t.key,type:t.type,fallback_value:t.fallbackValue}))}function xs(e){return{name:"name"in e?e.name:void 0,subject:e.subject,html:e.html,text:e.text,alias:e.alias,from:e.from,reply_to:e.replyTo,variables:Jf(e.variables)}}var ws=class{constructor(e,t){this.promise=e,this.publishFn=t}then(e,t){return this.promise.then(e,t)}async publish(){let{data:e,error:t}=await this.promise;return t?{data:null,headers:null,error:t}:this.publishFn(e.id)}},Vf=class{constructor(e){this.resend=e}create(e){return new ws(this.performCreate(e),this.publish.bind(this))}async performCreate(e){let t={...e};return e.react&&(t.html=await fo(e.react)),this.resend.post("/templates",xs(t))}async remove(e){return await this.resend.delete(`/templates/${e}`)}async get(e){return await this.resend.get(`/templates/${e}`)}async list(e={}){return this.resend.get(`/templates${Wf(e)}`)}duplicate(e){return new ws(this.resend.post(`/templates/${e}/duplicate`),this.publish.bind(this))}async publish(e){return await this.resend.post(`/templates/${e}/publish`)}async update(e,t){return await this.resend.patch(`/templates/${e}`,xs(t))}},zf=class{constructor(e){this.resend=e}async create(e){let{defaultSubscription:t,...o}=e;return await this.resend.post("/topics",{...o,default_subscription:t})}async list(){return await this.resend.get("/topics")}async get(e){return e?await this.resend.get(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async update(e){return e.id?await this.resend.patch(`/topics/${e.id}`,e):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async remove(e){return e?await this.resend.delete(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},Yf=class{constructor(e){this.resend=e}async list(e){let{webhookId:t,eventId:o}=e,i=le(`/webhooks/${t}/events/${o}/attempts`,e);return await this.resend.get(i)}},Xf=class{constructor(e){this.resend=e,this.attempts=new Yf(e)}async list(e){let{webhookId:t}=e,o=le(`/webhooks/${t}/events`,e);return await this.resend.get(o)}async get(e){let{webhookId:t,eventId:o}=e;return await this.resend.get(`/webhooks/${t}/events/${o}`)}async replay(e){let{webhookId:t,eventId:o}=e;return await this.resend.post(`/webhooks/${t}/events/${o}/replay`)}},Zf=class{constructor(e){this.resend=e,this.events=new Xf(e)}async create(e,t={}){return await this.resend.post("/webhooks",e,t)}async get(e){return await this.resend.get(`/webhooks/${e}`)}async list(e={}){let t=le("/webhooks",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/webhooks/${e}`,t)}async remove(e){return await this.resend.delete(`/webhooks/${e}`)}async rotateSigningSecret(e){return await this.resend.post(`/webhooks/${e}/signing-secret/rotate`)}verify(e){return new Ss.Webhook(e.webhookSecret).verify(e.payload,{"webhook-id":e.headers.id,"webhook-timestamp":e.headers.timestamp,"webhook-signature":e.headers.signature})}},vs="https://api.resend.com",Us=`resend-node:${mf}`;function eh(){return typeof process<"u"&&process.env&&process.env.RESEND_BASE_URL||vs}function th(){return typeof process<"u"&&process.env&&process.env.RESEND_USER_AGENT||Us}var Gt=class{constructor(e,t){if(this.key=e,this.segments=new Nf(this),this.apiKeys=new pf(this),this.audiences=this.segments,this.automations=new Af(this),this.batch=new yf(this),this.broadcasts=new Cf(this),this.contactProperties=new wf(this),this.contacts=new Kf(this),this.domains=new Ff(this),this.emails=new Of(this),this.events=new Bf(this),this.inboxes=new Gf(this),this.logs=new Hf(this),this.oauthGrants=new Qf(this),this.suppressions=new qf(this),this.templates=new Vf(this),this.topics=new zf(this),this.webhooks=new Zf(this),!e&&(typeof process<"u"&&process.env&&(this.key=process.env.RESEND_API_KEY),!this.key))throw new Error('Missing API key. Pass it to the constructor `new Resend("re_123")`');this.baseUrl=t?.baseUrl??eh(),this.userAgent=t?.userAgent??th(),this.headers=new Headers({Authorization:`Bearer ${this.key}`,"User-Agent":this.userAgent,"Content-Type":"application/json"})}logError(e,t,o){typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"&&console.error("[Resend API Error]:",{...o!==void 0&&{status:o},error:e,path:t})}async fetchRequest(e,t={}){try{let o=await fetch(`${this.baseUrl}${e}`,t);if(!o.ok)try{let i=await o.text(),r=JSON.parse(i);return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}catch(i){if(i instanceof SyntaxError){let n={name:"application_error",statusCode:o.status,message:"Internal server error. We are unable to process your request right now, please try again later."};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}let r={message:o.statusText,statusCode:o.status,name:"application_error"};if(i instanceof Error){let n={...r,message:i.message};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}return{data:await o.json(),error:null,headers:Object.fromEntries(o.headers.entries())}}catch{let o={name:"application_error",statusCode:null,message:"Unable to fetch data. The request could not be resolved."};return this.logError(o,e),{data:null,error:o,headers:null}}}async post(e,t,o={}){let i=new Headers(this.headers),r=typeof FormData<"u"&&t instanceof FormData;if(r&&i.delete("Content-Type"),o.headers)for(let[s,a]of new Headers(o.headers).entries())i.set(s,a);o.idempotencyKey&&i.set("Idempotency-Key",o.idempotencyKey);let n={method:"POST",body:r?t:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,n)}async get(e,t={}){let o=new Headers(this.headers);if(t.headers)for(let[r,n]of new Headers(t.headers).entries())o.set(r,n);let i={method:"GET",...t,headers:o};return this.fetchRequest(e,i)}async put(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PUT",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async patch(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PATCH",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async delete(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"DELETE",body:t===void 0?void 0:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}};be();var Tr=me(Je(),1);function W(e,t){return e instanceof Error?e.message:t}function ua(e){return!!(e||!process.stdout.isTTY)}function N(e,t={}){ua(t.json)?console.log(JSON.stringify(e,null,2)):console.log(typeof e=="string"?e:JSON.stringify(e,null,2)),t.exitCode!==void 0&&process.exit(t.exitCode)}var hh=new Set(["content-type","retry-after"]);function gh(e){let t={};for(let[o,i]of Object.entries(e)){let r=o.toLowerCase();(hh.has(r)||r.startsWith("x-"))&&(t[r]=i)}return t}function h(e,t={}){let o=t.exitCode??1,i=e.headers&&Object.keys(e.headers).length>0?gh(e.headers):void 0,r=i!==void 0&&Object.keys(i).length>0;if(ua(t.json)){let n={message:e.message,code:e.code??"unknown"};typeof e.statusCode=="number"&&(n.statusCode=e.statusCode),r&&(n.headers=i),typeof e.body=="string"&&e.body.length>0&&(n.body=e.body),console.error(JSON.stringify({error:n},null,2))}else{console.error(`${Tr.default.red("Error:")} ${e.message}`);let n=[];if(typeof e.statusCode=="number"&&n.push(`HTTP ${e.statusCode}`),r)for(let[s,a]of Object.entries(i))n.push(`${s}: ${a}`);n.length>0&&console.error(Tr.default.dim(`[${n.join("; ")}]`))}process.exit(o)}var ma={sending_access:0,full_access:1};function Ah(e,t){return ma[e]>=ma[t]}async function ee(e,t){let o=e.profile;try{let i=await Rt(e.apiKey,o);if(!i){if(o){let s=_e();if(!s.some(l=>l.name===o))throw new Error(`Profile "${o}" not found. Available profiles: ${s.map(l=>l.name).join(", ")||"(none)"}`)}throw new Error("No API key found. Set RESEND_API_KEY, use --api-key, or run: resend login")}let r;if(i.type==="api_key")r=i.permission;else{let s=i.scope.split(" ").filter(Boolean);s.includes("full_access")?r="full_access":s.includes("emails:send")?r="sending_access":h({message:`Unrecognized credential scope${i.scope?` "${i.scope}"`:""}. Run \`resend login\` to re-authenticate.`,code:"unrecognized_scope"},{json:e.json})}if(r){let s=t?.permission??"full_access";Ah(r,s)||h({message:`This command requires full access. Your current credential has sending access only.
281
- ${Qt}`,code:"insufficient_permissions"},{json:e.json})}let n=i.type==="api_key"?i.key:i.access_token;return new Gt(n)}catch(i){h({message:W(i,"Failed to create client"),code:"auth_error"},{json:e.json})}}var pa=130;function bh(){process.stderr.isTTY&&process.stderr.write("\r\x1B[2K"),console.error("Cancelled."),process.exit(pa)}var Nt;function fa(){Nt=bh,process.on("SIGINT",Nt),process.on("uncaughtException",e=>{h({message:W(e,"An unexpected error occurred"),code:"unexpected_error"},{}),process.exit(1)})}function ri(e){Nt&&process.removeListener("SIGINT",Nt),Nt=e,process.on("SIGINT",Nt)}function Mt(){return pa}be();var ni=me(Je(),1);X();var ha=[1,2,4],yh=ha.length,Ch=new Set(["internal_server_error","service_unavailable","gateway_timeout"]),xh=(e,t)=>!!(e==="rate_limit_exceeded"||t&&e!==void 0&&Ch.has(e)),wh=e=>{let t=e?.["retry-after"];if(!t)return;let o=Number(t);if(Number.isFinite(o)&&o>=0)return o;let i=Date.parse(t);if(!Number.isNaN(i)){let r=(i-Date.now())/1e3;return r>0?r:0}},vh=e=>new Promise(t=>setTimeout(t,e)),bo=async(e,t,o=0)=>{let i=await e(),r=t?.retryTransient??!1;if(i.error&&o<yh&&xh(i.error.name,r)){let n=wh(i.headers)??ha[o];return t?.onRetry?.(o,n,i.error.name??""),await vh(n*1e3),bo(e,t,o+1)}return i};var ga=(e,t)=>new Promise((o,i)=>{let r=setTimeout(()=>{i(new Error(`Request timed out after ${t/1e3}s`))},t);r.unref(),e.then(n=>{clearTimeout(r),o(n)},n=>{clearTimeout(r),i(n)})});var Sh=st?String.fromCodePoint(10004):"v",Kh=st?String.fromCodePoint(9888):"!",kh=st?String.fromCodePoint(10007):"x",_h=["\u2839","\u2838","\u2834","\u2826","\u2807","\u280F","\u2819","\u2839"],Fh=80;async function ce(e,t,o,i,r={}){let n=ae(e,i.quiet);try{let{data:s,error:a,headers:l}=await bo(()=>ga(t(),3e4),{retryTransient:r.retryTransient,onRetry:(u,m,p)=>{n.update(p==="rate_limit_exceeded"?`Rate limited, retrying in ${m}s...`:`Server error, retrying in ${m}s...`)}});return a&&(n.stop(),h({message:a.message,code:o,statusCode:a.statusCode,headers:l},{json:i.json})),s===null&&(n.stop(),h({message:"Unexpected empty response",code:o,headers:l},{json:i.json})),n.stop(),s}catch(s){return n.stop(),h({message:W(s,"Unknown error"),code:o},{json:i.json})}}function ae(e,t){if(t||!w())return{update(a){},stop(a){},clear(){},warn(a){},fail(a){}};let o=st?_h:["-","\\","|","/"],i=Fh,r=0,n=e,s=setInterval(()=>{process.stderr.write(`\r\x1B[2K ${o[r++%o.length]} ${n}`)},i);return{update(a){n=a},stop(a){clearInterval(s),a?process.stderr.write(`\r\x1B[2K ${ni.default.green(Sh)} ${a}
282
- `):process.stderr.write("\r\x1B[2K")},clear(){clearInterval(s),process.stderr.write("\r\x1B[2K")},warn(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${ni.default.yellow(Kh)} ${a}
283
- `)},fail(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${ni.default.red(kh)} ${a}
284
- `)}}}X();function D(e){Wn(e),process.exit(Mt())}async function si(e,t,o){(!w()||o.json)&&h({message:"Use --yes to confirm deletion in non-interactive mode.",code:"confirmation_required"},{json:o.json});let i=await Ze({message:t});(F(i)||!i)&&D("Deletion cancelled.")}async function ai(e,t){let o=ue(e);if(!o)return e;if(!w()||t.json)return h({message:`Profile "${e}" has an invalid name: ${o}`,code:"invalid_profile_name"},{json:t.json}),null;te.warn(`Profile "${e}" has an invalid name: ${o}`);let i=await Z({message:"Enter a new name for this profile:",placeholder:e.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:r=>ue(r)});F(i)&&D("Rename cancelled.");try{await ii(e,i)}catch(r){return h({message:W(r,"Failed to rename profile"),code:"rename_failed"},{json:t.json}),null}return te.success(`Profile renamed to '${i}'.`),i}async function T(e,t,o,i){if(e!==void 0)return e;(!w()||i.json)&&h(o,{json:i.json});let r=await Z({message:t.message,placeholder:t.placeholder,defaultValue:t.defaultValue,validate:t.validate??(n=>!t.defaultValue&&(!n||n.length===0)?`${t.message} is required`:void 0)});return F(r)&&D("Cancelled."),r}async function bt(e,t,o,i){if(e!==void 0)return e;(!w()||i.json)&&h(o,{json:i.json});let r=await ne({message:t.message,options:t.options});return F(r)&&D("Cancelled."),r}async function ya(e,t,o){let i=t.filter(s=>s.required!==!1&&e[s.flag]==="");if(i.length>0){let s=i.map(a=>`--${a.flag}`).join(", ");h({message:`Empty value for required flags: ${s}`,code:"invalid_options"},{json:o.json})}let r=t.filter(s=>s.required!==!1&&!e[s.flag]);if(r.length===0)return e;if(!w()||o.json){let s=r.map(a=>`--${a.flag}`).join(", ");h({message:`Missing required flags: ${s}`,code:"missing_flags"},{json:o.json})}let n=await Ln(Object.fromEntries(r.map(s=>[s.flag,()=>Z({message:s.message,placeholder:s.placeholder,defaultValue:s.defaultValue,validate:s.validate??(a=>!s.defaultValue&&(!a||a.length===0)?`${s.message} is required`:void 0)})])),{onCancel:()=>D("Operation cancelled.")});return{...e,...n}}var Rh=20,Aa="__fetch_more__",ba="__none__";async function J(e,t,o,i){if(e)return{id:e,label:e};let r=i?.optional??!1;if(!w()||o.json){if(r)return;h({message:"Missing required argument: id",code:"missing_id"},{json:o.json})}let n=await ee(o,t.permission?{permission:t.permission}:void 0),s=[];for(;;){let a=s.at(-1)?.id,l=ae(s.length===0?`Fetching ${t.resourcePlural}...`:`Fetching more ${t.resourcePlural}...`,o.quiet),u=await t.fetchItems(n,{limit:Rh,...a&&{after:a}});if(u.error||!u.data){if(r){l.clear();return}l.fail(`Failed to fetch ${t.resourcePlural}`),h({message:u.error?.message??"Unexpected empty response",code:"list_error"},{json:o.json})}s.push(...u.data.data);let m=u.data.has_more??!1,p=t.filter?s.filter(t.filter):s;if(p.length===0&&!m&&r){l.clear();return}if(l.stop(s.length===p.length?`${t.resourcePlural} fetched`:`More ${t.resourcePlural} fetched`),p.length===0&&!m&&(te.warn(`No ${t.resourcePlural} found.`),h({message:`No ${t.resourcePlural} found.`,code:"no_items"},{json:o.json})),p.length===0&&m&&!r)continue;let f=p.map(b=>({item:b,...t.display(b)})),y=f.map(({item:b,label:x,hint:v})=>({value:b.id,label:x,hint:v}));r&&y.unshift({value:ba,label:"None"}),m&&y.push({value:Aa,label:"Fetch more..."});let A=await ne({message:`Select a ${t.resource}`,options:y});if(F(A)&&D("Cancelled."),A===ba)return;if(A!==Aa){let b=f.find(({item:x})=>x.id===A);return{id:A,label:b?.label??A}}}}async function g(e,t,o,i){return(await J(e,t,o,i))?.id}var Ca=require("node:util"),Dh=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\r(?!\n)/g,Fe=e=>(0,Ca.stripVTControlCharacters)(String(e)).replace(Dh,"");function qt(e){return typeof e=="string"?Fe(e):Array.isArray(e)?e.map(qt):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,o])=>[t,qt(o)])):e}X();async function I(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await ee(t,o),r=await ce(e.loading,()=>e.sdkCall(i),"fetch_error",t,{retryTransient:!0});!t.json&&w()?e.onInteractive(qt(r)):N(r,{json:t.json})}async function z(e,t,o,i){let r=o.permission?{permission:o.permission}:void 0,n=await ee(i,r);t||await si(e,o.confirmMessage,i),await ce(o.loading,()=>o.sdkCall(n),"delete_error",i),!i.json&&w()?console.log(o.successMsg):N({object:o.object,id:e,deleted:!0},{json:i.json})}async function j(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await ee(t,o),r=await ce(e.loading,()=>e.sdkCall(i),"create_error",t);!t.json&&w()?e.onInteractive(qt(r)):N(r,{json:t.json})}async function R(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await ee(t,o),r=await ce(e.loading,()=>e.sdkCall(i),e.errorCode,t,{retryTransient:e.retryTransient});!t.json&&w()?console.log(e.successMsg):N(r,{json:t.json})}async function k(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await ee(t,o),r=await ce(e.loading,()=>e.sdkCall(i),"list_error",t,{retryTransient:!0});!t.json&&w()?e.onInteractive(qt(r)):N(r,{json:t.json})}X();X();var pe=st?{h:String.fromCodePoint(9472),v:String.fromCodePoint(9474),tl:String.fromCodePoint(9484),tr:String.fromCodePoint(9488),bl:String.fromCodePoint(9492),br:String.fromCodePoint(9496),lm:String.fromCodePoint(9500),rm:String.fromCodePoint(9508),tm:String.fromCodePoint(9516),bm:String.fromCodePoint(9524),mm:String.fromCodePoint(9532)}:{h:"-",v:"|",tl:"+",tr:"+",bl:"+",br:"+",lm:"+",rm:"+",tm:"+",bm:"+",mm:"+"};function Th(){return process.stdout.columns}function Oh(e,t,o){let i=Math.max(...e.map(n=>n.length)),r=Math.max(20,Math.min(o,60));return t.map((n,s)=>{let a=String(s+1),l=`${pe.h}${pe.h} ${a} ${pe.h.repeat(Math.max(0,r-a.length-4))}`,u=e.map((m,p)=>` ${m.padEnd(i)} ${n[p]}`);return[l,...u].join(`
279
+ `);f.content=dt.encode(b);break}default:f.content=s.content}this.attachments.push(f)}}for(let c of s.childNodes)await n(c,a,l)};await n(this.root,!1,!1),i.forEach(s=>{o.forEach(a=>{if(t[a]||(t[a]=[]),s[a])s[a].forEach(l=>{switch(l.type){case"text":t[a].push(l.value);break;case"subMessage":switch(a){case"html":t[a].push(nr(l.value));break;case"plain":t[a].push(rr(l.value));break}break}});else{let l;switch(a){case"html":l="plain";break;case"plain":l="html";break}(s[l]||[]).forEach(c=>{switch(c.type){case"text":switch(a){case"html":t[a].push(Xn(c.value));break;case"plain":t[a].push(Zn(c.value));break}break;case"subMessage":switch(a){case"html":t[a].push(nr(c.value));break;case"plain":t[a].push(rr(c.value));break}break}})}})}),Object.keys(t).forEach(s=>{t[s]=t[s].join(`
280
+ `)}),this.textContent=t}isInlineTextNode(t){if(t.contentDisposition?.parsed?.value==="attachment")return!1;switch(t.contentType.parsed?.value){case"text/html":case"text/plain":return!0;default:return!1}}isInlineMessageRfc822(t){return t.contentType.parsed?.value!=="message/rfc822"?!1:(t.contentDisposition?.parsed?.value||(this.options.rfc822Attachments?"attachment":"inline"))==="inline"}forceRfc822Attachments(){if(this.options.forceRfc822Attachments)return!0;let t=!1,o=i=>{i.contentType.multipart||i.contentType.parsed&&["message/delivery-status","message/feedback-report"].includes(i.contentType.parsed.value)&&(t=!0);for(let r of i.childNodes)o(r)};return o(this.root),t}async resolveStream(t){let o=0,i=[],r=t.getReader();for(;;){let{done:a,value:l}=await r.read();if(a)break;i.push(l),o+=l.length}let n=new Uint8Array(o),s=0;for(let a of i)n.set(a,s),s+=a.length;return n}async parse(t){if(this.started)throw new Error("Can not reuse parser, create a new PostalMime object");for(this.started=!0,t&&typeof t.getReader=="function"&&(t=await this.resolveStream(t)),t=t||new ArrayBuffer(0),typeof t=="string"&&(t=dt.encode(t)),(t instanceof Blob||Object.prototype.toString.call(t)==="[object Blob]")&&(t=await ut(t)),t.buffer instanceof ArrayBuffer&&(t=new Uint8Array(t).buffer),this.buf=t,this.av=new Uint8Array(t),this.readPos=0;this.readPos<this.av.length;){let r=this.readLine();await this.processLine(r.bytes,r.done)}await this.processNodeTree();let o={headers:this.root.headers.map(r=>({key:r.key,originalKey:r.originalKey,value:r.value})).reverse()};for(let r of["from","sender"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=Qo(n.value);s&&s.length&&(o[r]=s[0])}}for(let r of["delivered-to","return-path"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=Qo(n.value);if(s&&s.length&&s[0].address){let a=lr(r);o[a]=s[0].address}}}for(let r of["to","cc","bcc","reply-to"]){let n=this.root.headers.filter(a=>a.key===r),s=[];if(n.filter(a=>a&&a.value).map(a=>Qo(a.value)).forEach(a=>s=s.concat(a||[])),s&&s.length){let a=lr(r);o[a]=s}}for(let r of["subject","message-id","in-reply-to","references"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=lr(r);o[s]=xt(n.value)}}let i=this.root.headers.find(r=>r.key==="date");if(i){let r=new Date(i.value);r.toString()==="Invalid Date"?r=i.value:r=r.toISOString(),o.date=r}switch(this.textContent?.html&&(o.html=this.textContent.html),this.textContent?.plain&&(o.text=this.textContent.plain),o.attachments=this.attachments,o.headerLines=(this.root.rawHeaderLines||[]).slice().reverse(),this.attachmentEncoding){case"arraybuffer":break;case"base64":for(let n of o.attachments||[])n?.content&&(n.content=os(n.content),n.encoding="base64");break;case"utf8":let r=new TextDecoder("utf8");for(let n of o.attachments||[])n?.content&&(n.content=r.decode(n.content),n.encoding="utf8");break;default:throw new Error("Unknown attachment encoding")}return o}};var Cs=ue(ms(),1),xp="6.30.0";function ce(e,t){let o=Pt(t);return o?`${e}?${o}`:e}function Pt(e){let t=new URLSearchParams;return e.limit!==void 0&&t.set("limit",e.limit.toString()),"after"in e&&e.after!==void 0&&t.set("after",e.after),"before"in e&&e.before!==void 0&&t.set("before",e.before),t.toString()}var kp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/api-keys",e,t)}async list(e={}){let t=ce("/api-keys",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/api-keys/${e}`,t)}async remove(e){return await this.resend.delete(`/api-keys/${e}`)}},Fp=class{constructor(e){this.resend=e}async get(e){return await this.resend.get(`/automations/${e.automationId}/runs/${e.runId}`)}async list(e){let t=Pt(e),o=new URLSearchParams(t);if(e.status){let n=Array.isArray(e.status)?e.status.join(","):e.status;o.set("status",n)}let i=o.toString(),r=i?`/automations/${e.automationId}/runs?${i}`:`/automations/${e.automationId}/runs`;return await this.resend.get(r)}};function ws(e){switch(e.type){case"trigger":return{key:e.key,type:e.type,config:{event_name:e.config.eventName}};case"delay":return{key:e.key,type:e.type,config:e.config};case"send_email":return{key:e.key,type:e.type,config:{template:e.config.template,subject:e.config.subject,from:e.config.from,reply_to:e.config.replyTo}};case"wait_for_event":return{key:e.key,type:e.type,config:{event_name:e.config.eventName,timeout:e.config.timeout,filter_rule:e.config.filterRule}};case"condition":return{key:e.key,type:e.type,config:e.config};case"contact_update":return{key:e.key,type:e.type,config:{first_name:e.config.firstName,last_name:e.config.lastName,unsubscribed:e.config.unsubscribed,properties:e.config.properties}};case"contact_delete":return{key:e.key,type:e.type,config:e.config};case"add_to_segment":return{key:e.key,type:e.type,config:{segment_id:e.config.segmentId}}}}function Us(e){return{from:e.from,to:e.to,type:e.type}}function Rp(e){return{name:e.name,status:e.status,steps:e.steps.map(ws),connections:e.connections.map(Us)}}function _p(e){return{event:e.event,contact_id:e.contactId,email:e.email,payload:e.payload}}var Dp=class{constructor(e){this.resend=e,this.runs=new Fp(this.resend)}async create(e){return await this.resend.post("/automations",Rp(e))}async list(e={}){let t=[Pt(e)];e.status&&t.push(`status=${encodeURIComponent(e.status)}`);let o=t.filter(Boolean).join("&"),i=o?`/automations?${o}`:"/automations";return await this.resend.get(i)}async get(e){return await this.resend.get(`/automations/${e}`)}async remove(e){return await this.resend.delete(`/automations/${e}`)}async update(e,t){let o={};return t.name!==void 0&&(o.name=t.name),t.status!==void 0&&(o.status=t.status),t.steps!==void 0&&(o.steps=t.steps.map(ws)),t.connections!==void 0&&(o.connections=t.connections.map(Us)),await this.resend.patch(`/automations/${e}`,o)}async duplicate(e){return await this.resend.post(`/automations/${e}/duplicate`)}async stop(e){return await this.resend.post(`/automations/${e}/stop`)}};function Ep(e){return e?.map(t=>({content:t.content,filename:t.filename,path:t.path,content_type:t.contentType,content_id:t.contentId}))}function Ss(e){return{attachments:Ep(e.attachments),bcc:e.bcc,cc:e.cc,from:e.from,headers:e.headers,html:e.html,reply_to:e.replyTo,scheduled_at:e.scheduledAt,subject:e.subject,tags:e.tags,text:e.text,to:e.to,template:e.template?{id:e.template.id,variables:e.template.variables}:void 0,topic_id:e.topicId}}async function po(e){let t;try{({render:t}=await import("@react-email/render"))}catch{throw new Error("Failed to render React component. Make sure to install `@react-email/render` or `@react-email/components`.")}return t(e)}var Bp=class{constructor(e){this.resend=e}async send(e,t){return this.create(e,t)}async create(e,t){let o=[];for(let i of e)i.react&&(i.html=await po(i.react),i.react=void 0),o.push(Ss(i));return await this.resend.post("/emails/batch",o,{...t,headers:{"x-batch-validation":t?.batchValidation??"strict",...t?.headers}})}},Op=class{constructor(e){this.resend=e}async create(e,t={}){let o=e.react?await po(e.react):e.html;return await this.resend.post("/broadcasts",{name:e.name,segment_id:e.segmentId,audience_id:e.audienceId,preview_text:e.previewText,from:e.from,html:o,reply_to:e.replyTo,subject:e.subject,text:e.text,topic_id:e.topicId,send:e.send,scheduled_at:e.scheduledAt},t)}async send(e,t){return await this.resend.post(`/broadcasts/${e}/send`,{scheduled_at:t?.scheduledAt})}async list(e={}){let t=ce("/broadcasts",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/broadcasts/${e}`)}async recipients(e,t){let o=`/broadcasts/${e}/recipients?${Tp(t)}`;return await this.resend.get(o)}async clickedLinks(e,t={}){let o=ce(`/broadcasts/${e}/clicked-links`,t);return await this.resend.get(o)}async remove(e){return await this.resend.delete(`/broadcasts/${e}`)}async cancel(e){return await this.resend.post(`/broadcasts/${e}/cancel`)}async duplicate(e){return await this.resend.post(`/broadcasts/${e}/duplicate`)}async update(e,t){let o=t.react?await po(t.react):t.html;return await this.resend.patch(`/broadcasts/${e}`,{name:t.name,segment_id:t.segmentId,audience_id:t.audienceId,from:t.from,html:o,text:t.text,subject:t.subject,reply_to:t.replyTo,preview_text:t.previewText,topic_id:t.topicId})}};function Tp(e){let{type:t,email:o,bounceType:i,...r}=e,n=new URLSearchParams(Pt(r));return n.set("type",t),o!==void 0&&n.set("email",o),i!==void 0&&n.set("bounce_type",i),n.toString()}function ps(e){return{id:e.id,key:e.key,createdAt:e.created_at,type:e.type,fallbackValue:e.fallback_value}}function fs(e){return"key"in e?{key:e.key,type:e.type,fallback_value:e.fallbackValue}:{fallback_value:e.fallbackValue}}var Ip=class{constructor(e){this.resend=e}async create(e){let t=fs(e);return await this.resend.post("/contact-properties",t)}async list(e={}){let t=ce("/contact-properties",e),o=await this.resend.get(t);return o.data?{data:{...o.data,data:o.data.data.map(i=>ps(i))},headers:o.headers,error:null}:o}async get(e){if(!e)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=await this.resend.get(`/contact-properties/${e}`);return t.data?{data:{object:"contact_property",...ps(t.data)},headers:t.headers,error:null}:t}async update(e){if(!e.id)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=fs(e);return await this.resend.patch(`/contact-properties/${e.id}`,t)}async remove(e){return e?await this.resend.delete(`/contact-properties/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},jp=class{constructor(e){this.resend=e}async create(e,t={}){let o=this.buildCreateFormData(e);return this.resend.post("/contacts/imports",o,t)}async list(e={}){let t=new URLSearchParams(Pt(e));e.status!==void 0&&t.set("status",e.status);let o=t.toString(),i=o?`/contacts/imports?${o}`:"/contacts/imports";return this.resend.get(i)}async get(e){return this.resend.get(`/contacts/imports/${e}`)}buildCreateFormData(e){let t=new FormData;return t.append("file",e.file),this.appendField(t,"column_map",this.buildColumnMap(e.columnMap??null)),this.appendField(t,"on_conflict",e.onConflict??null),this.appendField(t,"segments",e.segments??null),this.appendField(t,"topics",e.topics??null),t}buildColumnMap(e){return e===null?null:{email:e.email,first_name:e.firstName,last_name:e.lastName,unsubscribed:e.unsubscribed,properties:e.properties}}appendField(e,t,o){o!==null&&e.append(t,typeof o=="string"?o:JSON.stringify(o))}},Pp=class{constructor(e){this.resend=e}async list(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=ce(`/contacts/${e.email?e.email:e.contactId}/segments`,e);return await this.resend.get(t)}async add(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.post(`/contacts/${t}/segments/${e.segmentId}`)}async remove(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.delete(`/contacts/${t}/segments/${e.segmentId}`)}},$p=class{constructor(e){this.resend=e}async update(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.id;return this.resend.patch(`/contacts/${t}/topics`,e.topics)}async list(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=ce(`/contacts/${e.email?e.email:e.id}/topics`,e);return this.resend.get(t)}},Gp=class{constructor(e){this.resend=e,this.imports=new jp(this.resend),this.topics=new $p(this.resend),this.segments=new Pp(this.resend)}async create(e,t={}){return"audienceId"in e?"segments"in e||"topics"in e?{data:null,headers:null,error:{message:"`audienceId` is deprecated, and cannot be used together with `segments` or `topics`. Use `segments` instead to add one or more segments to the new contact.",statusCode:null,name:"invalid_parameter"}}:await this.resend.post(`/audiences/${e.audienceId}/contacts`,{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties},t):await this.resend.post("/contacts",{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties,segments:e.segments,topics:e.topics},t)}async list(e={}){let t=e.segmentId??e.audienceId;if(!t){let i=ce("/contacts",e);return await this.resend.get(i)}let o=ce(`/segments/${t}/contacts`,e);return await this.resend.get(o)}async get(e){return typeof e=="string"?this.resend.get(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.get(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.get(`/contacts/${e?.email?e?.email:e?.id}`)}async update(e){return!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?await this.resend.patch(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties}):await this.resend.patch(`/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties})}async remove(e){return typeof e=="string"?this.resend.delete(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.delete(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.delete(`/contacts/${e?.email?e?.email:e?.id}`)}};function Hp(e){return{name:e.name,region:e.region,custom_return_path:e.customReturnPath,capabilities:e.capabilities,open_tracking:e.openTracking,click_tracking:e.clickTracking,tls:e.tls,tracking_subdomain:e.trackingSubdomain}}var Qp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/domains/claim",{name:e.name,region:e.region,custom_return_path:e.customReturnPath,open_tracking:e.openTracking,click_tracking:e.clickTracking,tracking_subdomain:e.trackingSubdomain},t)}async get(e){return await this.resend.get(`/domains/${e}/claim`)}async verify(e){return await this.resend.post(`/domains/${e}/claim/verify`)}},Np=class{constructor(e){this.resend=e,this.claims=new Qp(this.resend)}async create(e,t={}){return await this.resend.post("/domains",Hp(e),t)}async list(e={}){let t=ce("/domains",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/domains/${e}`)}async update(e){return await this.resend.patch(`/domains/${e.id}`,{click_tracking:e.clickTracking,open_tracking:e.openTracking,tls:e.tls,capabilities:e.capabilities,tracking_subdomain:e.trackingSubdomain})}async remove(e){return await this.resend.delete(`/domains/${e}`)}async verify(e){return await this.resend.post(`/domains/${e}/verify`)}},Mp=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=ce(`/emails/${t}/attachments`,e);return await this.resend.get(o)}},qp=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/receiving/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=ce(`/emails/receiving/${t}/attachments`,e);return await this.resend.get(o)}},Lp=class{constructor(e){this.resend=e,this.attachments=new qp(e)}async get(e,t={}){let o=new URLSearchParams;t.html_format!==void 0&&o.set("html_format",t.html_format);let i=o.toString(),r=i?`/emails/receiving/${e}?${i}`:`/emails/receiving/${e}`;return await this.resend.get(r)}async list(e={}){let t=ce("/emails/receiving",e);return await this.resend.get(t)}async forward(e,t={}){let{emailId:o,to:i,from:r}=e,n=e.passthrough!==!1,s=await this.get(o);if(s.error)return{data:null,error:s.error,headers:s.headers};let a=s.data,l=a.subject||"(no subject)";if(n)return this.forwardPassthrough(a,{to:i,from:r,subject:l},t);let c=l.startsWith("Fwd:")?l:`Fwd: ${l}`;return this.forwardWrapped(a,{to:i,from:r,subject:c,text:"text"in e?e.text:void 0,html:"html"in e?e.html:void 0},t)}async forwardPassthrough(e,t,o){let{to:i,from:r,subject:n}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let s=await fetch(e.raw.download_url);if(!s.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:s.status},headers:null};let a=await s.text(),l=await uo.parse(a,{attachmentEncoding:"base64"}),c=l.attachments.map(u=>{let p=u.contentId?u.contentId.replace(/^<|>$/g,""):void 0;return{filename:u.filename,content:u.content.toString(),content_type:u.mimeType,content_id:p||void 0}});return await this.resend.post("/emails",{from:r,to:i,subject:n,text:l.text||void 0,html:l.html||void 0,attachments:c.length>0?c:void 0},o)}async forwardWrapped(e,t,o){let{to:i,from:r,subject:n,text:s,html:a}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let l=await fetch(e.raw.download_url);if(!l.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:l.status},headers:null};let c=await l.text();return await this.resend.post("/emails",{from:r,to:i,subject:n,text:s,html:a,attachments:[{filename:"forwarded_message.eml",content:Buffer.from(c).toString("base64"),content_type:"message/rfc822"}]},o)}},Wp=class{constructor(e){this.resend=e,this.attachments=new Mp(e),this.receiving=new Lp(e)}async send(e,t={}){return this.create(e,t)}async create(e,t={}){let o={...e};return e.react&&(o.html=await po(e.react)),await this.resend.post("/emails",Ss(o),t)}async get(e){return await this.resend.get(`/emails/${e}`)}async list(e={}){let t=ce("/emails",e);return await this.resend.get(t)}async update(e){return await this.resend.patch(`/emails/${e.id}`,{scheduled_at:e.scheduledAt})}async cancel(e){return await this.resend.post(`/emails/${e}/cancel`)}async share(e,t){return await this.resend.post(`/emails/${e}/share`,{expires_in:t?.expiresIn})}async metrics(e={}){let t=Jp(e),o=t?`/emails/metrics?${t}`:"/emails/metrics";return await this.resend.get(o)}};function Jp(e){let t={start_date:e.startDate,end_date:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:e.metrics?.join(","),dimensions:e.dimensions?.join(","),domain_id:e.domainId?.join(","),email_id:e.emailId?.join(","),broadcast_id:e.broadcastId?.join(",")},o=new URLSearchParams;for(let[i,r]of Object.entries(t))r!==void 0&&r!==""&&o.set(i,r);return o.toString()}var Vp=class{constructor(e){this.resend=e}async send(e){return await this.resend.post("/events/send",_p(e))}async create(e){return await this.resend.post("/events",e)}async get(e){return await this.resend.get(`/events/${encodeURIComponent(e)}`)}async list(e={}){let t=ce("/events",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/events/${encodeURIComponent(e)}`,t)}async remove(e){return await this.resend.delete(`/events/${encodeURIComponent(e)}`)}},zp=class{constructor(e){this.resend=e}async list(e={}){let t=ce("/logs",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/logs/${e}`)}},Yp=class{constructor(e){this.resend=e}async list(e={}){let t=ce("/oauth/grants",e);return await this.resend.get(t)}async revoke(e){return await this.resend.delete(`/oauth/grants/${e}`)}},Xp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/segments",e,t)}async list(e={}){let t=ce("/segments",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/segments/${e}`)}async update(e,t){return await this.resend.patch(`/segments/${e}`,t)}async remove(e){return await this.resend.delete(`/segments/${e}`)}},Zp=class{constructor(e){this.resend=e}async add(e){return this.resend.post("/suppressions/batch/add",e)}async remove(e){return this.resend.post("/suppressions/batch/remove",e)}},gs=()=>({data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}),ef=class{constructor(e){this.resend=e,this.batch=new Zp(e)}async add(e){return this.resend.post("/suppressions",e)}async list(e={}){let t=tf(e),o=t?`/suppressions?${t}`:"/suppressions";return this.resend.get(o)}async get(e){return e?this.resend.get(`/suppressions/${encodeURIComponent(e)}`):gs()}async remove(e){return e?this.resend.delete(`/suppressions/${encodeURIComponent(e)}`):gs()}};function tf(e){let{origin:t,...o}=e,i=new URLSearchParams(Pt(o));return t&&i.set("origin",t),i.toString()}function of(e={}){let t=new URLSearchParams;return e.before&&t.set("before",e.before),e.after&&t.set("after",e.after),e.limit&&t.set("limit",e.limit.toString()),t.size>0?`?${t.toString()}`:""}function rf(e){return e?.map(t=>({key:t.key,type:t.type,fallback_value:t.fallbackValue}))}function hs(e){return{name:"name"in e?e.name:void 0,subject:e.subject,html:e.html,text:e.text,alias:e.alias,from:e.from,reply_to:e.replyTo,variables:rf(e.variables)}}var As=class{constructor(e,t){this.promise=e,this.publishFn=t}then(e,t){return this.promise.then(e,t)}async publish(){let{data:e,error:t}=await this.promise;return t?{data:null,headers:null,error:t}:this.publishFn(e.id)}},nf=class{constructor(e){this.resend=e}create(e){return new As(this.performCreate(e),this.publish.bind(this))}async performCreate(e){let t={...e};return e.react&&(t.html=await po(e.react)),this.resend.post("/templates",hs(t))}async remove(e){return await this.resend.delete(`/templates/${e}`)}async get(e){return await this.resend.get(`/templates/${e}`)}async list(e={}){return this.resend.get(`/templates${of(e)}`)}duplicate(e){return new As(this.resend.post(`/templates/${e}/duplicate`),this.publish.bind(this))}async publish(e){return await this.resend.post(`/templates/${e}/publish`)}async update(e,t){return await this.resend.patch(`/templates/${e}`,hs(t))}},sf=class{constructor(e){this.resend=e}async create(e){let{defaultSubscription:t,...o}=e;return await this.resend.post("/topics",{...o,default_subscription:t})}async list(){return await this.resend.get("/topics")}async get(e){return e?await this.resend.get(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async update(e){return e.id?await this.resend.patch(`/topics/${e.id}`,e):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async remove(e){return e?await this.resend.delete(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},af=class{constructor(e){this.resend=e}async get(){return await this.resend.get("/usage")}},lf=class{constructor(e){this.resend=e}async list(e){let{webhookId:t,eventId:o}=e,i=ce(`/webhooks/${t}/events/${o}/attempts`,e);return await this.resend.get(i)}},cf=class{constructor(e){this.resend=e,this.attempts=new lf(e)}async list(e){let{webhookId:t}=e,o=ce(`/webhooks/${t}/events`,e);return await this.resend.get(o)}async get(e){let{webhookId:t,eventId:o}=e;return await this.resend.get(`/webhooks/${t}/events/${o}`)}async replay(e){let{webhookId:t,eventId:o}=e;return await this.resend.post(`/webhooks/${t}/events/${o}/replay`)}},df=class{constructor(e){this.resend=e,this.events=new cf(e)}async create(e,t={}){return await this.resend.post("/webhooks",e,t)}async get(e){return await this.resend.get(`/webhooks/${e}`)}async list(e={}){let t=ce("/webhooks",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/webhooks/${e}`,t)}async remove(e){return await this.resend.delete(`/webhooks/${e}`)}async rotateSigningSecret(e){return await this.resend.post(`/webhooks/${e}/signing-secret/rotate`)}verify(e){return new Cs.Webhook(e.webhookSecret).verify(e.payload,{"webhook-id":e.headers.id,"webhook-timestamp":e.headers.timestamp,"webhook-signature":e.headers.signature})}},bs="https://api.resend.com",ys=`resend-node:${xp}`;function uf(){return typeof process<"u"&&process.env&&process.env.RESEND_BASE_URL||bs}function mf(){return typeof process<"u"&&process.env&&process.env.RESEND_USER_AGENT||ys}var $t=class{constructor(e,t){if(this.key=e,this.segments=new Xp(this),this.apiKeys=new kp(this),this.audiences=this.segments,this.automations=new Dp(this),this.batch=new Bp(this),this.broadcasts=new Op(this),this.contactProperties=new Ip(this),this.contacts=new Gp(this),this.domains=new Np(this),this.emails=new Wp(this),this.events=new Vp(this),this.logs=new zp(this),this.oauthGrants=new Yp(this),this.suppressions=new ef(this),this.templates=new nf(this),this.topics=new sf(this),this.usage=new af(this),this.webhooks=new df(this),!e&&(typeof process<"u"&&process.env&&(this.key=process.env.RESEND_API_KEY),!this.key))throw new Error('Missing API key. Pass it to the constructor `new Resend("re_123")`');this.baseUrl=t?.baseUrl??uf(),this.userAgent=t?.userAgent??mf(),this.headers=new Headers({Authorization:`Bearer ${this.key}`,"User-Agent":this.userAgent,"Content-Type":"application/json"})}logError(e,t,o){typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"&&console.error("[Resend API Error]:",{...o!==void 0&&{status:o},error:e,path:t})}async fetchRequest(e,t={}){try{let o=await fetch(`${this.baseUrl}${e}`,t);if(!o.ok)try{let i=await o.text(),r=JSON.parse(i);return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}catch(i){if(i instanceof SyntaxError){let n={name:"application_error",statusCode:o.status,message:"Internal server error. We are unable to process your request right now, please try again later."};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}let r={message:o.statusText,statusCode:o.status,name:"application_error"};if(i instanceof Error){let n={...r,message:i.message};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}return{data:await o.json(),error:null,headers:Object.fromEntries(o.headers.entries())}}catch{let o={name:"application_error",statusCode:null,message:"Unable to fetch data. The request could not be resolved."};return this.logError(o,e),{data:null,error:o,headers:null}}}async post(e,t,o={}){let i=new Headers(this.headers),r=typeof FormData<"u"&&t instanceof FormData;if(r&&i.delete("Content-Type"),o.headers)for(let[s,a]of new Headers(o.headers).entries())i.set(s,a);o.idempotencyKey&&i.set("Idempotency-Key",o.idempotencyKey);let n={method:"POST",body:r?t:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,n)}async get(e,t={}){let o=new Headers(this.headers);if(t.headers)for(let[r,n]of new Headers(t.headers).entries())o.set(r,n);let i={method:"GET",...t,headers:o};return this.fetchRequest(e,i)}async put(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PUT",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async patch(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PATCH",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async delete(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"DELETE",body:t===void 0?void 0:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}};Ae();var Rr=ue(Ye(),1);function q(e,t){return e instanceof Error?e.message:t}function ia(e){return!!(e||!process.stdout.isTTY)}function Q(e,t={}){ia(t.json)?console.log(JSON.stringify(e,null,2)):console.log(typeof e=="string"?e:JSON.stringify(e,null,2)),t.exitCode!==void 0&&process.exit(t.exitCode)}var xf=new Set(["content-type","retry-after"]);function kf(e){let t={};for(let[o,i]of Object.entries(e)){let r=o.toLowerCase();(xf.has(r)||r.startsWith("x-"))&&(t[r]=i)}return t}function g(e,t={}){let o=t.exitCode??1,i=e.headers&&Object.keys(e.headers).length>0?kf(e.headers):void 0,r=i!==void 0&&Object.keys(i).length>0;if(ia(t.json)){let n={message:e.message,code:e.code??"unknown"};typeof e.statusCode=="number"&&(n.statusCode=e.statusCode),r&&(n.headers=i),typeof e.body=="string"&&e.body.length>0&&(n.body=e.body),console.error(JSON.stringify({error:n},null,2))}else{console.error(`${Rr.default.red("Error:")} ${e.message}`);let n=[];if(typeof e.statusCode=="number"&&n.push(`HTTP ${e.statusCode}`),r)for(let[s,a]of Object.entries(i))n.push(`${s}: ${a}`);n.length>0&&console.error(Rr.default.dim(`[${n.join("; ")}]`))}process.exit(o)}var ra={sending_access:0,full_access:1};function Ff(e,t){return ra[e]>=ra[t]}async function Y(e,t){let o=e.profile;try{let i=await Rt(e.apiKey,o);if(!i){if(o){let s=ke();if(!s.some(l=>l.name===o))throw new Error(`Profile "${o}" not found. Available profiles: ${s.map(l=>l.name).join(", ")||"(none)"}`)}throw new Error("No API key found. Set RESEND_API_KEY, use --api-key, or run: resend login")}let r;if(i.type==="api_key")r=i.permission;else{let s=i.scope.split(" ").filter(Boolean);s.includes("full_access")?r="full_access":s.includes("emails:send")?r="sending_access":g({message:`Unrecognized credential scope${i.scope?` "${i.scope}"`:""}. Run \`resend login\` to re-authenticate.`,code:"unrecognized_scope"},{json:e.json})}if(r){let s=t?.permission??"full_access";Ff(r,s)||g({message:`This command requires full access. Your current credential has sending access only.
281
+ ${Ht}`,code:"insufficient_permissions"},{json:e.json})}let n=i.type==="api_key"?i.key:i.access_token;return new $t(n)}catch(i){g({message:q(i,"Failed to create client"),code:"auth_error"},{json:e.json})}}var na=130;function Rf(){process.stderr.isTTY&&process.stderr.write("\r\x1B[2K"),console.error("Cancelled."),process.exit(na)}var Qt;function sa(){Qt=Rf,process.on("SIGINT",Qt),process.on("uncaughtException",e=>{g({message:q(e,"An unexpected error occurred"),code:"unexpected_error"},{}),process.exit(1)})}function oi(e){Qt&&process.removeListener("SIGINT",Qt),Qt=e,process.on("SIGINT",Qt)}function Nt(){return na}Ae();var ii=ue(Ye(),1);V();var aa=[1,2,4],_f=aa.length,Df=new Set(["internal_server_error","service_unavailable","gateway_timeout"]),Ef=(e,t)=>!!(e==="rate_limit_exceeded"||t&&e!==void 0&&Df.has(e)),Bf=e=>{let t=e?.["retry-after"];if(!t)return;let o=Number(t);if(Number.isFinite(o)&&o>=0)return o;let i=Date.parse(t);if(!Number.isNaN(i)){let r=(i-Date.now())/1e3;return r>0?r:0}},Of=e=>new Promise(t=>setTimeout(t,e)),Ao=async(e,t,o=0)=>{let i=await e(),r=t?.retryTransient??!1;if(i.error&&o<_f&&Ef(i.error.name,r)){let n=Bf(i.headers)??aa[o];return t?.onRetry?.(o,n,i.error.name??""),await Of(n*1e3),Ao(e,t,o+1)}return i};var la=(e,t)=>new Promise((o,i)=>{let r=setTimeout(()=>{i(new Error(`Request timed out after ${t/1e3}s`))},t);r.unref(),e.then(n=>{clearTimeout(r),o(n)},n=>{clearTimeout(r),i(n)})});var If=nt?String.fromCodePoint(10004):"v",jf=nt?String.fromCodePoint(9888):"!",Pf=nt?String.fromCodePoint(10007):"x",$f=["\u2839","\u2838","\u2834","\u2826","\u2807","\u280F","\u2819","\u2839"],Gf=80;async function ae(e,t,o,i,r={}){let n=se(e,i.quiet);try{let{data:s,error:a,headers:l}=await Ao(()=>la(t(),3e4),{retryTransient:r.retryTransient,onRetry:(c,u,p)=>{n.update(p==="rate_limit_exceeded"?`Rate limited, retrying in ${u}s...`:`Server error, retrying in ${u}s...`)}});return a&&(n.stop(),g({message:a.message,code:o,statusCode:a.statusCode,headers:l},{json:i.json})),s===null&&(n.stop(),g({message:"Unexpected empty response",code:o,headers:l},{json:i.json})),n.stop(),s}catch(s){return n.stop(),g({message:q(s,"Unknown error"),code:o},{json:i.json})}}function se(e,t){if(t||!U())return{update(a){},stop(a){},clear(){},warn(a){},fail(a){}};let o=nt?$f:["-","\\","|","/"],i=Gf,r=0,n=e,s=setInterval(()=>{process.stderr.write(`\r\x1B[2K ${o[r++%o.length]} ${n}`)},i);return{update(a){n=a},stop(a){clearInterval(s),a?process.stderr.write(`\r\x1B[2K ${ii.default.green(If)} ${a}
282
+ `):process.stderr.write("\r\x1B[2K")},clear(){clearInterval(s),process.stderr.write("\r\x1B[2K")},warn(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${ii.default.yellow(jf)} ${a}
283
+ `)},fail(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${ii.default.red(Pf)} ${a}
284
+ `)}}}V();function R(e){Qn(e),process.exit(Nt())}async function ri(e,t,o){(!U()||o.json)&&g({message:"Use --yes to confirm deletion in non-interactive mode.",code:"confirmation_required"},{json:o.json});let i=await Xe({message:t});(k(i)||!i)&&R("Deletion cancelled.")}async function ni(e,t){let o=de(e);if(!o)return e;if(!U()||t.json)return g({message:`Profile "${e}" has an invalid name: ${o}`,code:"invalid_profile_name"},{json:t.json}),null;X.warn(`Profile "${e}" has an invalid name: ${o}`);let i=await z({message:"Enter a new name for this profile:",placeholder:e.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:r=>de(r)});k(i)&&R("Rename cancelled.");try{await ti(e,i)}catch(r){return g({message:q(r,"Failed to rename profile"),code:"rename_failed"},{json:t.json}),null}return X.success(`Profile renamed to '${i}'.`),i}async function P(e,t,o,i){if(e!==void 0)return e;(!U()||i.json)&&g(o,{json:i.json});let r=await z({message:t.message,placeholder:t.placeholder,defaultValue:t.defaultValue,validate:t.validate??(n=>!t.defaultValue&&(!n||n.length===0)?`${t.message} is required`:void 0)});return k(r)&&R("Cancelled."),r}async function At(e,t,o,i){if(e!==void 0)return e;(!U()||i.json)&&g(o,{json:i.json});let r=await re({message:t.message,options:t.options});return k(r)&&R("Cancelled."),r}async function ua(e,t,o){let i=t.filter(s=>s.required!==!1&&e[s.flag]==="");if(i.length>0){let s=i.map(a=>`--${a.flag}`).join(", ");g({message:`Empty value for required flags: ${s}`,code:"invalid_options"},{json:o.json})}let r=t.filter(s=>s.required!==!1&&!e[s.flag]);if(r.length===0)return e;if(!U()||o.json){let s=r.map(a=>`--${a.flag}`).join(", ");g({message:`Missing required flags: ${s}`,code:"missing_flags"},{json:o.json})}let n=await Hn(Object.fromEntries(r.map(s=>[s.flag,()=>z({message:s.message,placeholder:s.placeholder,defaultValue:s.defaultValue,validate:s.validate??(a=>!s.defaultValue&&(!a||a.length===0)?`${s.message} is required`:void 0)})])),{onCancel:()=>R("Operation cancelled.")});return{...e,...n}}var Hf=20,ca="__fetch_more__",da="__none__";async function ee(e,t,o,i){if(e)return{id:e,label:e};let r=i?.optional??!1;if(!U()||o.json){if(r)return;g({message:"Missing required argument: id",code:"missing_id"},{json:o.json})}let n=await Y(o,t.permission?{permission:t.permission}:void 0),s=[];for(;;){let a=s.at(-1)?.id,l=se(s.length===0?`Fetching ${t.resourcePlural}...`:`Fetching more ${t.resourcePlural}...`,o.quiet),c=await t.fetchItems(n,{limit:Hf,...a&&{after:a}});if(c.error||!c.data){if(r){l.clear();return}l.fail(`Failed to fetch ${t.resourcePlural}`),g({message:c.error?.message??"Unexpected empty response",code:"list_error"},{json:o.json})}s.push(...c.data.data);let u=c.data.has_more??!1,p=t.filter?s.filter(t.filter):s;if(p.length===0&&!u&&r){l.clear();return}if(l.stop(s.length===p.length?`${t.resourcePlural} fetched`:`More ${t.resourcePlural} fetched`),p.length===0&&!u&&(X.warn(`No ${t.resourcePlural} found.`),g({message:`No ${t.resourcePlural} found.`,code:"no_items"},{json:o.json})),p.length===0&&u&&!r)continue;let f=p.map(A=>({item:A,...t.display(A)})),b=f.map(({item:A,label:w,hint:S})=>({value:A.id,label:w,hint:S}));r&&b.unshift({value:da,label:"None"}),u&&b.push({value:ca,label:"Fetch more..."});let h=await re({message:`Select a ${t.resource}`,options:b});if(k(h)&&R("Cancelled."),h===da)return;if(h!==ca){let A=f.find(({item:w})=>w.id===h);return{id:h,label:A?.label??h}}}}async function C(e,t,o,i){return(await ee(e,t,o,i))?.id}var ma=require("node:util"),Qf=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\r(?!\n)/g,Fe=e=>(0,ma.stripVTControlCharacters)(String(e)).replace(Qf,"");function Mt(e){return typeof e=="string"?Fe(e):Array.isArray(e)?e.map(Mt):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,o])=>[t,Mt(o)])):e}V();async function $(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"fetch_error",t,{retryTransient:!0});!t.json&&U()?e.onInteractive(Mt(r)):Q(r,{json:t.json})}async function te(e,t,o,i){let r=o.permission?{permission:o.permission}:void 0,n=await Y(i,r);t||await ri(e,o.confirmMessage,i),await ae(o.loading,()=>o.sdkCall(n),"delete_error",i),!i.json&&U()?console.log(o.successMsg):Q({object:o.object,id:e,deleted:!0},{json:i.json})}async function M(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"create_error",t);!t.json&&U()?e.onInteractive(Mt(r)):Q(r,{json:t.json})}async function B(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),e.errorCode,t,{retryTransient:e.retryTransient});!t.json&&U()?console.log(e.successMsg):Q(r,{json:t.json})}async function F(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"list_error",t,{retryTransient:!0});!t.json&&U()?e.onInteractive(Mt(r)):Q(r,{json:t.json})}V();V();var me=nt?{h:String.fromCodePoint(9472),v:String.fromCodePoint(9474),tl:String.fromCodePoint(9484),tr:String.fromCodePoint(9488),bl:String.fromCodePoint(9492),br:String.fromCodePoint(9496),lm:String.fromCodePoint(9500),rm:String.fromCodePoint(9508),tm:String.fromCodePoint(9516),bm:String.fromCodePoint(9524),mm:String.fromCodePoint(9532)}:{h:"-",v:"|",tl:"+",tr:"+",bl:"+",br:"+",lm:"+",rm:"+",tm:"+",bm:"+",mm:"+"};function Nf(){return process.stdout.columns}function Mf(e,t,o){let i=Math.max(...e.map(n=>n.length)),r=Math.max(20,Math.min(o,60));return t.map((n,s)=>{let a=String(s+1),l=`${me.h}${me.h} ${a} ${me.h.repeat(Math.max(0,r-a.length-4))}`,c=e.map((u,p)=>` ${u.padEnd(i)} ${n[p]}`);return[l,...c].join(`
285
285
  `)}).join(`
286
286
 
287
- `)}function _(e,t,o="(no results)"){if(t.length===0)return o;let i=t.map(m=>m.map(Fe)),r=e.map((m,p)=>Math.max(m.length,...i.map(f=>f[p].length))),n=Th();if(n!==void 0&&r.reduce((p,f)=>p+f,0)+3*r.length+1>n)return Oh(e,i,n);let s=pe.tl+r.map(m=>pe.h.repeat(m+2)).join(pe.tm)+pe.tr,a=pe.lm+r.map(m=>pe.h.repeat(m+2)).join(pe.mm)+pe.rm,l=pe.bl+r.map(m=>pe.h.repeat(m+2)).join(pe.bm)+pe.br,u=m=>pe.v+" "+m.map((p,f)=>p.padEnd(r[f])).join(` ${pe.v} `)+" "+pe.v;return[s,u(e),a,...i.map(u),l].join(`
288
- `)}X();var Or=st?String.fromCodePoint(9472):"-";function li(e,t){return e.length===0?"(no DNS records)":e.map(i=>{let r=i.name?i.name.includes(".")?i.name:`${i.name}.${t}`:t;return[`${Or}${Or} ${i.type} ${Or.repeat(40)}`,` Name ${r}`,` TTL ${i.ttl}`,` Value ${i.value}`].join(`
287
+ `)}function _(e,t,o="(no results)"){if(t.length===0)return o;let i=t.map(u=>u.map(Fe)),r=e.map((u,p)=>Math.max(u.length,...i.map(f=>f[p].length))),n=Nf();if(n!==void 0&&r.reduce((p,f)=>p+f,0)+3*r.length+1>n)return Mf(e,i,n);let s=me.tl+r.map(u=>me.h.repeat(u+2)).join(me.tm)+me.tr,a=me.lm+r.map(u=>me.h.repeat(u+2)).join(me.mm)+me.rm,l=me.bl+r.map(u=>me.h.repeat(u+2)).join(me.bm)+me.br,c=u=>me.v+" "+u.map((p,f)=>p.padEnd(r[f])).join(` ${me.v} `)+" "+me.v;return[s,c(e),a,...i.map(c),l].join(`
288
+ `)}V();var _r=nt?String.fromCodePoint(9472):"-";function si(e,t){return e.length===0?"(no DNS records)":e.map(i=>{let r=i.name?i.name.includes(".")?i.name:`${i.name}.${t}`:t;return[`${_r}${_r} ${i.type} ${_r.repeat(40)}`,` Name ${r}`,` TTL ${i.ttl}`,` Value ${i.value}`].join(`
289
289
  `)}).join(`
290
290
 
291
- `)}function xa(e){let t=e.map(o=>[o.name,o.status,o.region,o.id]);return _(["Name","Status","Region","ID"],t,"(no domains)")}function wa(e){switch(e){case"verified":return"\u2713 Verified";case"pending":return"\u23F3 Pending";case"not_started":return"\u25CB Not started";case"partially_verified":return"\u25D0 Partially verified";case"partially_failed":return"\u25D0 Partially failed";case"failed":case"temporary_failure":return"\u2717 Failed";default:return e}}var De={resource:"domain",resourcePlural:"domains",fetchItems:(e,{limit:t,after:o})=>e.domains.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var va=new c("create").description("Create a new API key and display the token (shown once \u2014 store it immediately)").option("--name <name>","API key name").addOption(new M("--permission <permission>","Permission level").choices(["full_access","sending_access"])).option("--domain-id <id>","Restrict a sending_access key to a single domain ID").addHelpText("after",d({context:`Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).
291
+ `)}function pa(e){let t=e.map(o=>[o.name,o.status,o.region,o.id]);return _(["Name","Status","Region","ID"],t,"(no domains)")}function fa(e){switch(e){case"verified":return"\u2713 Verified";case"pending":return"\u23F3 Pending";case"not_started":return"\u25CB Not started";case"partially_verified":return"\u25D0 Partially verified";case"partially_failed":return"\u25D0 Partially failed";case"failed":case"temporary_failure":return"\u2717 Failed";default:return e}}var _e={resource:"domain",resourcePlural:"domains",fetchItems:(e,{limit:t,after:o})=>e.domains.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var ga=new d("create").description("Create a new API key and display the token (shown once \u2014 store it immediately)").option("--name <name>","API key name").addOption(new L("--permission <permission>","Permission level").choices(["full_access","sending_access"])).option("--domain-id <id>","Restrict a sending_access key to a single domain ID").addHelpText("after",m({context:`Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).
292
292
 
293
293
  Permissions:
294
294
  full_access Full API access (default)
295
295
  sending_access Send-only access; optionally scope to a domain with --domain-id`,output:` {"id":"<id>","token":"<token>"}
296
- The token is only returned at creation time and cannot be retrieved again.`,errorCodes:["auth_error","missing_name","invalid_flags","create_error"],examples:['resend api-keys create --name "Production"','resend api-keys create --name "CI Token" --permission sending_access','resend api-keys create --name "Domain Token" --permission sending_access --domain-id <domain-id>','resend api-keys create --name "Production" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=e.name,r=e.permission;if(!i){(!w()||o.json)&&h({message:"Missing --name flag.",code:"missing_name"},{json:o.json});let s=await Z({message:"Key name",placeholder:"e.g. My API Key",validate:l=>{if(!l)return"Name is required"}});F(s)&&D("Cancelled."),i=s;let a=await ne({message:"Permission level",options:[{value:"full_access",label:"Full access"},{value:"sending_access",label:"Sending access only"}]});F(a)&&D("Cancelled."),r=a}let n=e.domainId;n!==void 0&&r!=="sending_access"&&h({message:"--domain-id requires --permission sending_access",code:"invalid_flags"},{json:o.json}),!n&&r==="sending_access"&&(n=await g(void 0,De,o,{optional:!0})),await j({loading:"Creating API key...",sdkCall:s=>s.apiKeys.create({name:i,...r&&{permission:r},...n&&{domain_id:n}}),onInteractive:s=>{console.log(` ${yo.default.gray("Name:")} ${i}`),console.log(` ${yo.default.gray("ID:")} ${s.id}`),console.log(` ${yo.default.gray("Token:")} ${s.token}`),console.log(`
297
- ${yo.default.yellow("\u26A0")} Store this token now \u2014 it cannot be retrieved again.`)}},o)});var ci={resource:"API key",resourcePlural:"API keys",fetchItems:(e,{limit:t,after:o})=>e.apiKeys.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function Ua(e){let t=e.map(o=>[o.name,o.id,o.created_at,o.last_used_at??""]);return _(["Name","ID","Created","Last used"],t,"(no API keys)")}var Sa=new c("delete").alias("rm").description("Delete an API key \u2014 any services using it will immediately lose access").argument("[id]","API key ID").option("--yes","Skip confirmation prompt").addHelpText("after",d({context:`Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.
296
+ The token is only returned at creation time and cannot be retrieved again.`,errorCodes:["auth_error","missing_name","invalid_flags","create_error"],examples:['resend api-keys create --name "Production"','resend api-keys create --name "CI Token" --permission sending_access','resend api-keys create --name "Domain Token" --permission sending_access --domain-id <domain-id>','resend api-keys create --name "Production" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=e.name,r=e.permission;if(!i){(!U()||o.json)&&g({message:"Missing --name flag.",code:"missing_name"},{json:o.json});let s=await z({message:"Key name",placeholder:"e.g. My API Key",validate:l=>{if(!l)return"Name is required"}});k(s)&&R("Cancelled."),i=s;let a=await re({message:"Permission level",options:[{value:"full_access",label:"Full access"},{value:"sending_access",label:"Sending access only"}]});k(a)&&R("Cancelled."),r=a}let n=e.domainId;n!==void 0&&r!=="sending_access"&&g({message:"--domain-id requires --permission sending_access",code:"invalid_flags"},{json:o.json}),!n&&r==="sending_access"&&(n=await C(void 0,_e,o,{optional:!0})),await M({loading:"Creating API key...",sdkCall:s=>s.apiKeys.create({name:i,...r&&{permission:r},...n&&{domain_id:n}}),onInteractive:s=>{console.log(` ${bo.default.gray("Name:")} ${i}`),console.log(` ${bo.default.gray("ID:")} ${s.id}`),console.log(` ${bo.default.gray("Token:")} ${s.token}`),console.log(`
297
+ ${bo.default.yellow("\u26A0")} Store this token now \u2014 it cannot be retrieved again.`)}},o)});var ai={resource:"API key",resourcePlural:"API keys",fetchItems:(e,{limit:t,after:o})=>e.apiKeys.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function ha(e){let t=e.map(o=>[o.name,o.id,o.created_at,o.last_used_at??""]);return _(["Name","ID","Created","Last used"],t,"(no API keys)")}var Aa=new d("delete").alias("rm").description("Delete an API key \u2014 any services using it will immediately lose access").argument("[id]","API key ID").option("--yes","Skip confirmation prompt").addHelpText("after",m({context:`Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.
298
298
 
299
299
  Warning: Deleting a key is immediate and irreversible. Any service using this key
300
300
  will stop authenticating instantly. The current key (used to call this command)
301
- can delete itself \u2014 the API does not prevent self-deletion.`,output:' {"object":"api-key","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend api-keys delete dacf4072-aa82-4ff3-97de-514ae3000ee0 --yes","resend api-keys delete dacf4072-aa82-4ff3-97de-514ae3000ee0 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,ci,i);await z(r.id,!!t.yes,{confirmMessage:`Delete API key "${r.label}"?
301
+ can delete itself \u2014 the API does not prevent self-deletion.`,output:' {"object":"api-key","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend api-keys delete dacf4072-aa82-4ff3-97de-514ae3000ee0 --yes","resend api-keys delete dacf4072-aa82-4ff3-97de-514ae3000ee0 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,ai,i);await te(r.id,!!t.yes,{confirmMessage:`Delete API key "${r.label}"?
302
302
  ID: ${r.id}
303
- Any services using this key will stop working.`,loading:"Deleting API key...",object:"api-key",successMsg:"API key deleted",sdkCall:n=>n.apiKeys.remove(r.id)},i)});be();function O(e,t){let o=parseInt(e,10);return(Number.isNaN(o)||o<1||o>100)&&h({message:"--limit must be an integer between 1 and 100",code:"invalid_limit"},{json:t.json}),o}function P(e,t,o,i){return t!==void 0&&o!==void 0&&h({message:"Cannot use --after and --before together. Pass only one cursor.",code:"invalid_pagination"},{json:i.json}),t!==void 0?{limit:e,after:t}:o!==void 0?{limit:e,before:o}:{limit:e}}function E(e,t,o){if(!e.has_more||e.data.length===0)return;let i=!!o.before,r=i?e.data[0].id:e.data[e.data.length-1].id,n=i?"--before":"--after",s=o.limit?` --limit ${o.limit}`:"",a=o.apiKey?` --api-key ${At(o.apiKey)}`:"",l=o.profile?` --profile ${o.profile}`:"",u=o.extraFlags?` ${o.extraFlags}`:"";console.log(`
303
+ Any services using this key will stop working.`,loading:"Deleting API key...",object:"api-key",successMsg:"API key deleted",sdkCall:n=>n.apiKeys.remove(r.id)},i)});Ae();function O(e,t){let o=parseInt(e,10);return(Number.isNaN(o)||o<1||o>100)&&g({message:"--limit must be an integer between 1 and 100",code:"invalid_limit"},{json:t.json}),o}function G(e,t,o,i){return t!==void 0&&o!==void 0&&g({message:"Cannot use --after and --before together. Pass only one cursor.",code:"invalid_pagination"},{json:i.json}),t!==void 0?{limit:e,after:t}:o!==void 0?{limit:e,before:o}:{limit:e}}function T(e,t,o){if(!e.has_more||e.data.length===0)return;let i=!!o.before,r=i?e.data[0].id:e.data[e.data.length-1].id,n=i?"--before":"--after",s=o.limit?` --limit ${o.limit}`:"",a=o.apiKey?` --api-key ${ht(o.apiKey)}`:"",l=o.profile?` --profile ${o.profile}`:"",c=o.extraFlags?` ${o.extraFlags}`:"";console.log(`
304
304
  Fetch the next page:
305
- $ resend ${t} ${n} ${r}${s}${u}${a}${l}`)}var Ka=new c("list").alias("ls").description("List all API keys (IDs and names \u2014 tokens are never returned by this endpoint)").option("--limit <n>","Maximum number of API keys to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({output:` {"object":"list","has_more":false,"data":[{"id":"<id>","name":"<name>","created_at":"<date>","last_used_at":"<date>|null"}]}
306
- Tokens are never included in list responses.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend api-keys list","resend api-keys list --limit 25 --json","resend api-keys list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching API keys...",sdkCall:n=>n.apiKeys.list(r),onInteractive:n=>{console.log(Ua(n.data)),E(n,"api-keys list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ka=new c("update").description("Rename an API key").argument("[id]","API key ID").option("--name <name>","New API key name").addHelpText("after",d({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).",output:' {"object":"api_key","id":"<id>"}',errorCodes:["auth_error","missing_name","update_error"],examples:['resend api-keys update dacf4072-aa82-4ff3-97de-514ae3000ee0 --name "Production v2"','resend api-keys update dacf4072-aa82-4ff3-97de-514ae3000ee0 --name "Production v2" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,ci,i),n=await T(t.name,{message:"New key name",placeholder:"e.g. Production v2",validate:s=>{if(!s)return"Name is required"}},{message:"Missing --name flag.",code:"missing_name"},i);n||h({message:"Name is required.",code:"missing_name"},{json:i.json}),await R({loading:"Updating API key...",sdkCall:s=>s.apiKeys.update(r,{name:n}),errorCode:"update_error",successMsg:`API key updated: ${r}`},i)});var _a=new c("api-keys").description("Manage API keys for authentication").addHelpText("after",d({context:`Security notes:
305
+ $ resend ${t} ${n} ${r}${s}${c}${a}${l}`)}var ba=new d("list").alias("ls").description("List all API keys (IDs and names \u2014 tokens are never returned by this endpoint)").option("--limit <n>","Maximum number of API keys to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",m({output:` {"object":"list","has_more":false,"data":[{"id":"<id>","name":"<name>","created_at":"<date>","last_used_at":"<date>|null"}]}
306
+ Tokens are never included in list responses.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend api-keys list","resend api-keys list --limit 25 --json","resend api-keys list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching API keys...",sdkCall:n=>n.apiKeys.list(r),onInteractive:n=>{console.log(ha(n.data)),T(n,"api-keys list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ya=new d("update").description("Rename an API key").argument("[id]","API key ID").option("--name <name>","New API key name").addHelpText("after",m({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).",output:' {"object":"api_key","id":"<id>"}',errorCodes:["auth_error","missing_name","update_error"],examples:['resend api-keys update dacf4072-aa82-4ff3-97de-514ae3000ee0 --name "Production v2"','resend api-keys update dacf4072-aa82-4ff3-97de-514ae3000ee0 --name "Production v2" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ai,i),n=await P(t.name,{message:"New key name",placeholder:"e.g. Production v2",validate:s=>{if(!s)return"Name is required"}},{message:"Missing --name flag.",code:"missing_name"},i);n||g({message:"Name is required.",code:"missing_name"},{json:i.json}),await B({loading:"Updating API key...",sdkCall:s=>s.apiKeys.update(r,{name:n}),errorCode:"update_error",successMsg:`API key updated: ${r}`},i)});var Ca=new d("api-keys").description("Manage API keys for authentication").addHelpText("after",m({context:`Security notes:
307
307
  - Tokens are only shown at creation time and cannot be retrieved again.
308
308
  - Use sending_access keys with --domain-id for per-domain CI tokens.
309
- - Deleting a key is immediate \u2014 any service using it loses access instantly.`,examples:["resend api-keys list",'resend api-keys create --name "Production"','resend api-keys create --name "CI Token" --permission sending_access --domain-id <domain-id>','resend api-keys update <id> --name "Production v2"',"resend api-keys delete <id> --yes"]})).addCommand(va).addCommand(Ka,{isDefault:!0}).addCommand(ka).addCommand(Sa);be();X();function Eh(e){let t=_e();if(e.json){N({profiles:t},{json:!0});return}if(t.length===0){console.log("No profiles configured. Run: resend login");return}w()&&console.log(`
309
+ - Deleting a key is immediate \u2014 any service using it loses access instantly.`,examples:["resend api-keys list",'resend api-keys create --name "Production"','resend api-keys create --name "CI Token" --permission sending_access --domain-id <domain-id>','resend api-keys update <id> --name "Production v2"',"resend api-keys delete <id> --yes"]})).addCommand(ga).addCommand(ba,{isDefault:!0}).addCommand(ya).addCommand(Aa);Ae();V();function qf(e){let t=ke();if(e.json){Q({profiles:t},{json:!0});return}if(t.length===0){console.log("No profiles configured. Run: resend login");return}U()&&console.log(`
310
310
  Profiles
311
- `);let o=!1;for(let i of t){let r=i.active?" (active)":"",n=ue(i.name)!==void 0;n&&(o=!0),console.log(` ${i.active?"\u25B8":" "} ${i.name}${r}${n?" (invalid name)":""}`)}o&&w()&&console.log("\n Profiles with invalid names can be renamed via `resend auth rename`."),w()&&console.log("")}var Fa=new c("list").description("List all profiles").action((e,t)=>{Eh(t.optsWithGlobals())});var Ra=require("node:child_process"),Co=me(Je(),1),Ye="https://resend.com";function di(e){return new Promise(t=>{let o=process.platform==="win32"?"cmd.exe":process.platform==="darwin"?"open":"xdg-open",i=e.replaceAll('"',""),r=process.platform==="win32"?["/c","start",'""',`"${i}"`]:[e];(0,Ra.execFile)(o,r,{timeout:5e3,windowsVerbatimArguments:!0},n=>t(!n))})}async function Te(e,t){let o=await di(e);t?.json||t?.quiet||(o?console.log(Co.default.dim("Opened"),Co.default.blue(e)):console.warn(Co.default.yellow("Could not open browser. Visit this link:"),Co.default.blue(e)))}var fe={emails:`${Ye}/emails`,logs:`${Ye}/logs`,log:e=>`${Ye}/logs/${e}`,templates:`${Ye}/templates`,template:e=>`${Ye}/templates/${e}`,broadcasts:`${Ye}/broadcasts`,broadcast:e=>`${Ye}/broadcasts/${e}`,documentation:`${Ye}/docs`,automations:`${Ye}/automations`,automation:e=>`${Ye}/automations/${e}/editor`,events:`${Ye}/automations/events`};be();Zo();X();var Er="https://resend.com/api-keys?new=true";async function Da(e,t){let o=e.profile!==void 0?e.profile.trim():void 0;if(o!==void 0){let r=ue(o);return r&&h({message:r,code:"invalid_profile_name"},{json:e.json}),o}if(!w()||e.json)return o;let i=_e();if(i.length>0){let r=[...i.map(s=>({value:s.name,label:`${s.name} (overwrite)`,hint:ue(s.name)?"invalid name":void 0})),{value:"__new__",label:"+ Create new profile"}],n=await ne({message:t,options:r});if(F(n)&&D("Login cancelled."),n==="__new__"){let s=await Z({message:"Enter a name for the new profile:",validate:l=>ue((l??"").trim())});if(F(s)&&D("Login cancelled."),o=(s??"").trim()||"default",i.some(l=>l.name===o)){let l=await Ze({message:`Profile '${o}' already exists. Overwrite?`});(F(l)||!l)&&D("Login cancelled.")}}else if(ue(n)){let s=await ai(n,e);if(!s)return;o=s}else o=n}else o="default";return o}function Ta(e){let{noun:t,profileLabel:o,configPath:i,backend:r}=e,n=r.isSecure?`in ${r.name}`:`at ${i}`,s=`${t} stored for profile '${o}' ${n}`;if(w()?Bt(s):console.log(s),!r.isSecure&&process.platform==="linux"){let a="Tip: Install libsecret-tools and a Secret Service provider (e.g. gnome-keyring) to store credentials in secure storage instead of a plaintext file.";w()?te.info(a):console.log(a)}}async function Bh(e){let{codeVerifier:t,codeChallenge:o,state:i}=Zs(),r=ae("Starting local callback server...",e.quiet),n,s;try{({port:n,waitForCallback:s}=await ea()),r.stop("")}catch(S){r.fail("Failed to start callback server"),h({message:W(S,"Failed to start callback server"),code:"oauth_error"},{json:e.json})}let a=`http://127.0.0.1:${n}/oauth/callback`,l=process.env.RESEND_BASE_URL??"https://api.resend.com",u=new URL(`${l}/oauth/authorize`);u.search=new URLSearchParams({client_id:Xo,response_type:"code",redirect_uri:a,scope:"full_access",state:i,code_challenge:o,code_challenge_method:"S256"}).toString(),await di(u.toString())?te.info("Browser opened. Complete authentication to continue."):te.warn(`Could not open browser. Visit this URL to authenticate:
312
- ${u.toString()}`);let p=ae("Waiting for browser authentication...",e.quiet),f;try{f=await s}catch(S){p.fail("Authentication failed"),h({message:W(S,"Authentication failed"),code:"oauth_error"},{json:e.json})}f.state!==i&&(p.fail("Authentication failed"),h({message:"State mismatch in OAuth callback. Possible CSRF attack.",code:"oauth_state_mismatch"},{json:e.json})),p.stop("Browser authentication complete");let y=ae("Exchanging authorization code...",e.quiet),A;try{A=await ta({code:f.code,codeVerifier:t,redirectUri:a,clientId:Xo,baseUrl:l})}catch(S){y.fail("Token exchange failed"),h({message:W(S,"Token exchange failed"),code:"oauth_error"},{json:e.json})}y.stop("Authenticated successfully");let b=await Da(e,"Save credentials to which profile?"),x=b||"default",{configPath:v,backend:U}=await ei({access_token:A.access_token,access_token_expires_at:_r(A.access_token),refresh_token:A.refresh_token,scope:A.scope},b);if(b)try{Ao(x)}catch(S){h({message:W(S,"Failed to switch profile"),code:"switch_failed"},{json:e.json})}e.json?N({success:!0,config_path:v,profile:x,storage:U.name,scope:A.scope},{json:!0}):Ta({noun:"Credentials",profileLabel:x,configPath:v,backend:U})}var ui=new c("login").description("Save a Resend API key").option("--key <key>","API key to store (required in non-interactive mode)").addHelpText("after",d({setup:!0,context:"Non-interactive: --key is required (no prompts will appear when stdin/stdout is not a TTY).",output:' {"success":true,"config_path":"<path>","profile":"<name>"}',errorCodes:["missing_key","invalid_key_format","validation_failed","invalid_profile_name","switch_failed","write_failed","oauth_error","oauth_state_mismatch"],examples:["resend login --key re_123456789","resend login (interactive \u2014 prompts and opens browser)","RESEND_API_KEY=re_123 resend emails send ... (skip login; use env var directly)"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=typeof e.key=="string"?e.key.trim():e.key;if(!i){(!w()||o.json)&&h({message:"Missing --key flag. Provide your API key in non-interactive mode.",code:"missing_key"},{json:o.json}),Ho("Resend Authentication");let m=await ne({message:"How would you like to authenticate?",options:[{value:"oauth",label:"Login with Resend (opens browser)"},{value:"browser",label:"Get API key from resend.com (opens browser)"},{value:"manual",label:"Enter API key manually"}]});if(F(m)&&D("Login cancelled."),m==="oauth"){await Bh(o);return}te.info(`Use a full access API key for complete CLI access.
313
- ${Qt}`),m==="browser"&&(await di(Er)?te.info(`Opened ${Er}`):te.warn(`Could not open browser. Visit ${Er} manually.`));let p=await zn({message:"Enter your Resend API key:",validate:f=>{if(!f)return"API key is required";if(!f.startsWith("re_"))return"API key must start with re_"}});F(p)&&D("Login cancelled."),i=p.trim()}i?.startsWith("re_")||h({message:"Invalid API key format. Key must start with re_",code:"invalid_key_format"},{json:o.json});let r=ae("Validating API key...",o.quiet),n="full_access";try{let m=new Gt(i),{error:p}=await m.domains.list();if(p){let f=p;f.name==="restricted_api_key"?(n="sending_access",r.warn("API key is valid (sending access only)")):(r.fail("API key validation failed"),h({message:f.message||"Failed to validate API key",code:"validation_failed"},{json:o.json}))}else r.stop("API key is valid (full access)")}catch(m){r.fail("API key validation failed"),h({message:W(m,"Failed to validate API key"),code:"validation_failed"},{json:o.json})}let s=await Da(o,"Save API key to which profile?"),{configPath:a,backend:l}=await ca(i,s,n),u=s||"default";if(s)try{Ao(u)}catch(m){h({message:W(m,"Failed to switch profile"),code:"switch_failed"},{json:o.json})}o.json?N({success:!0,config_path:a,profile:u,storage:l.name,permission:n},{json:!0}):Ta({noun:"API key",profileLabel:u,configPath:a,backend:l})});var Oa=require("node:fs");be();X();var mi=new c("logout").description("Remove your saved Resend API key").addHelpText("after",d({setup:!0,context:`Removes the saved API key from secure storage and the credentials file.
311
+ `);let o=!1;for(let i of t){let r=i.active?" (active)":"",n=de(i.name)!==void 0;n&&(o=!0),console.log(` ${i.active?"\u25B8":" "} ${i.name}${r}${n?" (invalid name)":""}`)}o&&U()&&console.log("\n Profiles with invalid names can be renamed via `resend auth rename`."),U()&&console.log("")}var wa=new d("list").description("List all profiles").action((e,t)=>{qf(t.optsWithGlobals())});var Ua=require("node:child_process"),yo=ue(Ye(),1),Ve="https://resend.com";function li(e){return new Promise(t=>{let o=process.platform==="win32"?"cmd.exe":process.platform==="darwin"?"open":"xdg-open",i=e.replaceAll('"',""),r=process.platform==="win32"?["/c","start",'""',`"${i}"`]:[e];(0,Ua.execFile)(o,r,{timeout:5e3,windowsVerbatimArguments:!0},n=>t(!n))})}async function De(e,t){let o=await li(e);t?.json||t?.quiet||(o?console.log(yo.default.dim("Opened"),yo.default.blue(e)):console.warn(yo.default.yellow("Could not open browser. Visit this link:"),yo.default.blue(e)))}var pe={emails:`${Ve}/emails`,logs:`${Ve}/logs`,log:e=>`${Ve}/logs/${e}`,templates:`${Ve}/templates`,template:e=>`${Ve}/templates/${e}`,broadcasts:`${Ve}/broadcasts`,broadcast:e=>`${Ve}/broadcasts/${e}`,documentation:`${Ve}/docs`,automations:`${Ve}/automations`,automation:e=>`${Ve}/automations/${e}/editor`,events:`${Ve}/automations/events`};Ae();Yo();V();var Dr="https://resend.com/api-keys?new=true";async function Sa(e,t){let o=e.profile!==void 0?e.profile.trim():void 0;if(o!==void 0){let r=de(o);return r&&g({message:r,code:"invalid_profile_name"},{json:e.json}),o}if(!U()||e.json)return o;let i=ke();if(i.length>0){let r=[...i.map(s=>({value:s.name,label:`${s.name} (overwrite)`,hint:de(s.name)?"invalid name":void 0})),{value:"__new__",label:"+ Create new profile"}],n=await re({message:t,options:r});if(k(n)&&R("Login cancelled."),n==="__new__"){let s=await z({message:"Enter a name for the new profile:",validate:l=>de((l??"").trim())});if(k(s)&&R("Login cancelled."),o=(s??"").trim()||"default",i.some(l=>l.name===o)){let l=await Xe({message:`Profile '${o}' already exists. Overwrite?`});(k(l)||!l)&&R("Login cancelled.")}}else if(de(n)){let s=await ni(n,e);if(!s)return;o=s}else o=n}else o="default";return o}function va(e){let{noun:t,profileLabel:o,configPath:i,backend:r}=e,n=r.isSecure?`in ${r.name}`:`at ${i}`,s=`${t} stored for profile '${o}' ${n}`;if(U()?Ot(s):console.log(s),!r.isSecure&&process.platform==="linux"){let a="Tip: Install libsecret-tools and a Secret Service provider (e.g. gnome-keyring) to store credentials in secure storage instead of a plaintext file.";U()?X.info(a):console.log(a)}}async function Lf(e){let{codeVerifier:t,codeChallenge:o,state:i}=qs(),r=se("Starting local callback server...",e.quiet),n,s;try{({port:n,waitForCallback:s}=await Ls()),r.stop("")}catch(K){r.fail("Failed to start callback server"),g({message:q(K,"Failed to start callback server"),code:"oauth_error"},{json:e.json})}let a=`http://127.0.0.1:${n}/oauth/callback`,l=process.env.RESEND_BASE_URL??"https://api.resend.com",c=new URL(`${l}/oauth/authorize`);c.search=new URLSearchParams({client_id:zo,response_type:"code",redirect_uri:a,scope:"full_access",state:i,code_challenge:o,code_challenge_method:"S256"}).toString(),await li(c.toString())?X.info("Browser opened. Complete authentication to continue."):X.warn(`Could not open browser. Visit this URL to authenticate:
312
+ ${c.toString()}`);let p=se("Waiting for browser authentication...",e.quiet),f;try{f=await s}catch(K){p.fail("Authentication failed"),g({message:q(K,"Authentication failed"),code:"oauth_error"},{json:e.json})}f.state!==i&&(p.fail("Authentication failed"),g({message:"State mismatch in OAuth callback. Possible CSRF attack.",code:"oauth_state_mismatch"},{json:e.json})),p.stop("Browser authentication complete");let b=se("Exchanging authorization code...",e.quiet),h;try{h=await Ws({code:f.code,codeVerifier:t,redirectUri:a,clientId:zo,baseUrl:l})}catch(K){b.fail("Token exchange failed"),g({message:q(K,"Token exchange failed"),code:"oauth_error"},{json:e.json})}b.stop("Authenticated successfully");let A=await Sa(e,"Save credentials to which profile?"),w=A||"default",{configPath:S,backend:v}=await Xo({access_token:h.access_token,access_token_expires_at:Kr(h.access_token),refresh_token:h.refresh_token,scope:h.scope},A);if(A)try{ho(w)}catch(K){g({message:q(K,"Failed to switch profile"),code:"switch_failed"},{json:e.json})}e.json?Q({success:!0,config_path:S,profile:w,storage:v.name,scope:h.scope},{json:!0}):va({noun:"Credentials",profileLabel:w,configPath:S,backend:v})}var ci=new d("login").description("Save a Resend API key").option("--key <key>","API key to store (required in non-interactive mode)").addHelpText("after",m({setup:!0,context:"Non-interactive: --key is required (no prompts will appear when stdin/stdout is not a TTY).",output:' {"success":true,"config_path":"<path>","profile":"<name>"}',errorCodes:["missing_key","invalid_key_format","validation_failed","invalid_profile_name","switch_failed","write_failed","oauth_error","oauth_state_mismatch"],examples:["resend login --key re_123456789","resend login (interactive \u2014 prompts and opens browser)","RESEND_API_KEY=re_123 resend emails send ... (skip login; use env var directly)"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=typeof e.key=="string"?e.key.trim():e.key;if(!i){(!U()||o.json)&&g({message:"Missing --key flag. Provide your API key in non-interactive mode.",code:"missing_key"},{json:o.json}),Go("Resend Authentication");let u=await re({message:"How would you like to authenticate?",options:[{value:"oauth",label:"Login with Resend (opens browser)"},{value:"browser",label:"Get API key from resend.com (opens browser)"},{value:"manual",label:"Enter API key manually"}]});if(k(u)&&R("Login cancelled."),u==="oauth"){await Lf(o);return}X.info(`Use a full access API key for complete CLI access.
313
+ ${Ht}`),u==="browser"&&(await li(Dr)?X.info(`Opened ${Dr}`):X.warn(`Could not open browser. Visit ${Dr} manually.`));let p=await qn({message:"Enter your Resend API key:",validate:f=>{if(!f)return"API key is required";if(!f.startsWith("re_"))return"API key must start with re_"}});k(p)&&R("Login cancelled."),i=p.trim()}i?.startsWith("re_")||g({message:"Invalid API key format. Key must start with re_",code:"invalid_key_format"},{json:o.json});let r=se("Validating API key...",o.quiet),n="full_access";try{let u=new $t(i),{error:p}=await u.domains.list();if(p){let f=p;f.name==="restricted_api_key"?(n="sending_access",r.warn("API key is valid (sending access only)")):(r.fail("API key validation failed"),g({message:f.message||"Failed to validate API key",code:"validation_failed"},{json:o.json}))}else r.stop("API key is valid (full access)")}catch(u){r.fail("API key validation failed"),g({message:q(u,"Failed to validate API key"),code:"validation_failed"},{json:o.json})}let s=await Sa(o,"Save API key to which profile?"),{configPath:a,backend:l}=await ta(i,s,n),c=s||"default";if(s)try{ho(c)}catch(u){g({message:q(u,"Failed to switch profile"),code:"switch_failed"},{json:o.json})}o.json?Q({success:!0,config_path:a,profile:c,storage:l.name,permission:n},{json:!0}):va({noun:"API key",profileLabel:c,configPath:a,backend:l})});var Ka=require("node:fs");Ae();V();var di=new d("logout").description("Remove your saved Resend API key").addHelpText("after",m({setup:!0,context:`Removes the saved API key from secure storage and the credentials file.
314
314
 
315
315
  When --profile is specified, only that profile's entry is removed.
316
316
  When no profile is specified, all profiles are removed.
317
317
 
318
- If no credentials file exists, exits cleanly with no error.`,output:' {"success":true,"config_path":"<path>"}',errorCodes:["remove_failed"],examples:["resend logout","resend logout --profile staging","resend logout --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Ft(),r=Rr();if(!r&&!(0,Oa.existsSync)(i)){!o.json&&w()?console.log("No saved credentials found. Nothing to remove."):N({success:!0,already_logged_out:!0},{json:o.json});return}let n=o.profile,s=!n,a=n??"all";if(!s&&r&&!r.profiles[a]&&h({message:`Profile "${a}" not found. Available profiles: ${Object.keys(r.profiles).join(", ")}`,code:"remove_failed"},{json:o.json}),!o.json&&w()){let l=s?"Remove all saved API keys?":`Remove saved API key for profile '${a}'?`,u=await Ze({message:l});(F(u)||!u)&&D("Logout cancelled.")}try{s?await da():await oi(a)}catch(l){h({message:W(l,"Failed to remove credentials"),code:"remove_failed"},{json:o.json})}if(!o.json&&w()){let l=s?"Logged out. All API keys removed.":`Logged out. API key removed for profile '${a}'.`;Bt(l)}else N({success:!0,config_path:i,profile:s?"all":a},{json:o.json})});be();X();async function Ih(e,t){let o=e;if(!o){if(!w()||t.json){h({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let i=_e();if(i.length===0){h({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let r=await ne({message:"Remove which profile?",options:i.map(n=>({value:n.name,label:n.name,hint:n.active?"active":void 0}))});F(r)&&D("Remove cancelled."),o=r}if(!t.json&&w()){let i=await Ze({message:`Remove profile '${o}' and its API key?`});(F(i)||!i)&&D("Remove cancelled.")}try{await oi(o)}catch(i){h({message:W(i,"Failed to remove profile"),code:"remove_failed"},{json:t.json});return}t.json?N({success:!0,removed_profile:o},{json:!0}):console.log(`Profile '${o}' removed.`)}var Ea=new c("remove").description("Remove a profile").argument("[name]","Profile name to remove").action(async(e,t,o)=>{await Ih(e,o.optsWithGlobals())});be();X();async function jh(e,t,o){let i=e,r=t;if(!i){if(!w()||o.json){h({message:"Missing profile name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=_e();if(n.length===0){h({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:o.json});return}let s=await ne({message:"Rename which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":ue(a.name)?"invalid name":void 0}))});F(s)&&D("Rename cancelled."),i=s}if(!r){if(!w()||o.json){h({message:"Missing new name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=await Z({message:`Enter new name for '${i}':`,placeholder:i.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:s=>ue(s)});F(n)&&D("Rename cancelled."),r=n}try{await ii(i,r)}catch(n){h({message:W(n,"Failed to rename profile"),code:"rename_failed"},{json:o.json});return}o.json?N({success:!0,old_name:i,new_name:r},{json:!0}):console.log(`Profile '${i}' renamed to '${r}'.`)}var Ba=new c("rename").description("Rename a profile").argument("[old-name]","Current profile name").argument("[new-name]","New profile name").action(async(e,t,o,i)=>{await jh(e,t,i.optsWithGlobals())});be();X();async function Ph(e,t){let o=e;if(!o){if(!w()||t.json){h({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let n=_e();if(n.length===0){h({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let s=await ne({message:"Switch to which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":ue(a.name)?"invalid name":void 0}))});F(s)&&D("Switch cancelled."),o=s}if(_e().some(n=>n.name===o)){let n=await ai(o,t);if(!n)return;o=n}try{Ao(o)}catch(n){h({message:W(n,"Failed to switch profile"),code:"switch_failed"},{json:t.json});return}t.json?N({success:!0,active_profile:o},{json:!0}):console.log(`Switched to profile '${o}'.`)}var Ia=new c("switch").description("Switch the active profile").argument("[name]","Profile name to switch to").action(async(e,t,o)=>{await Ph(e,o.optsWithGlobals())});var ja=new c("auth").description("Manage authentication and profiles").addHelpText("after",d({setup:!0,context:`Environment variables:
318
+ If no credentials file exists, exits cleanly with no error.`,output:' {"success":true,"config_path":"<path>"}',errorCodes:["remove_failed"],examples:["resend logout","resend logout --profile staging","resend logout --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Ft(),r=kr();if(!r&&!(0,Ka.existsSync)(i)){!o.json&&U()?console.log("No saved credentials found. Nothing to remove."):Q({success:!0,already_logged_out:!0},{json:o.json});return}let n=o.profile,s=!n,a=n??"all";if(!s&&r&&!r.profiles[a]&&g({message:`Profile "${a}" not found. Available profiles: ${Object.keys(r.profiles).join(", ")}`,code:"remove_failed"},{json:o.json}),!o.json&&U()){let l=s?"Remove all saved API keys?":`Remove saved API key for profile '${a}'?`,c=await Xe({message:l});(k(c)||!c)&&R("Logout cancelled.")}try{s?await oa():await ei(a)}catch(l){g({message:q(l,"Failed to remove credentials"),code:"remove_failed"},{json:o.json})}if(!o.json&&U()){let l=s?"Logged out. All API keys removed.":`Logged out. API key removed for profile '${a}'.`;Ot(l)}else Q({success:!0,config_path:i,profile:s?"all":a},{json:o.json})});Ae();V();async function Wf(e,t){let o=e;if(!o){if(!U()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let i=ke();if(i.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let r=await re({message:"Remove which profile?",options:i.map(n=>({value:n.name,label:n.name,hint:n.active?"active":void 0}))});k(r)&&R("Remove cancelled."),o=r}if(!t.json&&U()){let i=await Xe({message:`Remove profile '${o}' and its API key?`});(k(i)||!i)&&R("Remove cancelled.")}try{await ei(o)}catch(i){g({message:q(i,"Failed to remove profile"),code:"remove_failed"},{json:t.json});return}t.json?Q({success:!0,removed_profile:o},{json:!0}):console.log(`Profile '${o}' removed.`)}var xa=new d("remove").description("Remove a profile").argument("[name]","Profile name to remove").action(async(e,t,o)=>{await Wf(e,o.optsWithGlobals())});Ae();V();async function Jf(e,t,o){let i=e,r=t;if(!i){if(!U()||o.json){g({message:"Missing profile name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=ke();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:o.json});return}let s=await re({message:"Rename which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":de(a.name)?"invalid name":void 0}))});k(s)&&R("Rename cancelled."),i=s}if(!r){if(!U()||o.json){g({message:"Missing new name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=await z({message:`Enter new name for '${i}':`,placeholder:i.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:s=>de(s)});k(n)&&R("Rename cancelled."),r=n}try{await ti(i,r)}catch(n){g({message:q(n,"Failed to rename profile"),code:"rename_failed"},{json:o.json});return}o.json?Q({success:!0,old_name:i,new_name:r},{json:!0}):console.log(`Profile '${i}' renamed to '${r}'.`)}var ka=new d("rename").description("Rename a profile").argument("[old-name]","Current profile name").argument("[new-name]","New profile name").action(async(e,t,o,i)=>{await Jf(e,t,i.optsWithGlobals())});Ae();V();async function Vf(e,t){let o=e;if(!o){if(!U()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let n=ke();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let s=await re({message:"Switch to which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":de(a.name)?"invalid name":void 0}))});k(s)&&R("Switch cancelled."),o=s}if(ke().some(n=>n.name===o)){let n=await ni(o,t);if(!n)return;o=n}try{ho(o)}catch(n){g({message:q(n,"Failed to switch profile"),code:"switch_failed"},{json:t.json});return}t.json?Q({success:!0,active_profile:o},{json:!0}):console.log(`Switched to profile '${o}'.`)}var Fa=new d("switch").description("Switch the active profile").argument("[name]","Profile name to switch to").action(async(e,t,o)=>{await Vf(e,o.optsWithGlobals())});var Ra=new d("auth").description("Manage authentication and profiles").addHelpText("after",m({setup:!0,context:`Environment variables:
319
319
  RESEND_API_KEY API key (overrides stored credentials)
320
320
  RESEND_PROFILE Profile name (overrides config default)
321
- RESEND_CREDENTIAL_STORE Storage method: "secure_storage" or "file"`,examples:["resend login","resend login --key re_123456789","resend logout","resend auth list","resend auth switch staging","resend auth rename staging production","resend auth remove staging"]})).addCommand(ui).addCommand(mi).addCommand(Fa,{isDefault:!0}).addCommand(Ia).addCommand(Ba).addCommand(Ea);var Br=require("node:fs");function ie(e,t){if(e==="-"){process.stdin.isTTY&&h({message:"No input piped to stdin",code:"stdin_read_error"},{json:t.json});try{return(0,Br.readFileSync)(0,"utf-8")}catch{h({message:"Failed to read from stdin",code:"stdin_read_error"},{json:t.json})}}try{return(0,Br.readFileSync)(e,"utf-8")}catch{h({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}}function Dt(e,t,o){if(e!==void 0)try{return JSON.parse(e)}catch(i){h({message:`Invalid JSON for ${t}: ${i instanceof Error?i.message:"parse error"}`,code:"invalid_json"},{json:o.json})}}var Pa=new c("create").description("Create a new automation").option("--name <name>","Automation name").addOption(new M("--status <status>","Initial status").choices(["enabled","disabled"])).option("--steps <json>","Steps array as JSON string").option("--connections <json>","Connections array as JSON string").option("--file <path>",'Path to a JSON file containing the full automation payload (use "-" for stdin)').addHelpText("after",d({context:`Non-interactive: --name and --steps/--connections (or --file) are required.
321
+ RESEND_CREDENTIAL_STORE Storage method: "secure_storage" or "file"`,examples:["resend login","resend login --key re_123456789","resend logout","resend auth list","resend auth switch staging","resend auth rename staging production","resend auth remove staging"]})).addCommand(ci).addCommand(di).addCommand(wa,{isDefault:!0}).addCommand(Fa).addCommand(ka).addCommand(xa);var Er=require("node:fs");function oe(e,t){if(e==="-"){process.stdin.isTTY&&g({message:"No input piped to stdin",code:"stdin_read_error"},{json:t.json});try{return(0,Er.readFileSync)(0,"utf-8")}catch{g({message:"Failed to read from stdin",code:"stdin_read_error"},{json:t.json})}}try{return(0,Er.readFileSync)(e,"utf-8")}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}}function _t(e,t,o){if(e!==void 0)try{return JSON.parse(e)}catch(i){g({message:`Invalid JSON for ${t}: ${i instanceof Error?i.message:"parse error"}`,code:"invalid_json"},{json:o.json})}}var _a=new d("create").description("Create a new automation").option("--name <name>","Automation name").addOption(new L("--status <status>","Initial status").choices(["enabled","disabled"])).option("--steps <json>","Steps array as JSON string").option("--connections <json>","Connections array as JSON string").option("--file <path>",'Path to a JSON file containing the full automation payload (use "-" for stdin)').addHelpText("after",m({context:`Non-interactive: --name and --steps/--connections (or --file) are required.
322
322
 
323
323
  Payload format:
324
324
  --file accepts a JSON object with { name, status?, steps, connections }.
@@ -326,18 +326,18 @@ Payload format:
326
326
  When using --file, --name/--status/--steps/--connections flags override file values.
327
327
 
328
328
  Step types: trigger, delay, send_email, wait_for_event, condition
329
- Connection types: default, condition_met, condition_not_met, timeout, event_received`,output:' {"object":"automation","id":"<id>"}',errorCodes:["auth_error","missing_name","missing_steps","missing_connections","invalid_json","file_read_error","create_error"],examples:["resend automations create --file automation.json","cat automation.json | resend automations create --file -","resend automations create --file automation.json --status disabled",`resend automations create --name "Welcome Flow" --steps '[...]' --connections '[...]'`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i={};if(e.file){let l=ie(e.file,o);try{i=JSON.parse(l)}catch(u){h({message:`Invalid JSON in --file: ${u instanceof Error?u.message:"parse error"}`,code:"invalid_json"},{json:o.json})}(typeof i!="object"||i===null||Array.isArray(i))&&h({message:"--file must contain a JSON object with automation properties (name, steps, connections).",code:"invalid_json"},{json:o.json})}let r=await T(e.name??i.name,{message:"Automation name",placeholder:"e.g. Welcome Flow"},{message:"Missing --name flag.",code:"missing_name"},o),n=Dt(e.steps,"--steps",o)??i.steps;(!n||!Array.isArray(n)||n.length===0)&&h({message:"Missing or empty steps. Provide --steps as a JSON array or use --file.",code:"missing_steps"},{json:o.json});let s=Dt(e.connections,"--connections",o)??i.connections;s||h({message:"Missing connections. Provide --connections as a JSON array or use --file (empty array is valid for single-step automations).",code:"missing_connections"},{json:o.json}),Array.isArray(s)||h({message:"--connections must be a JSON array.",code:"invalid_json"},{json:o.json});let a=e.status??i.status;await j({loading:"Creating automation...",sdkCall:l=>l.automations.create({name:r,steps:n,connections:s,...a&&{status:a}}),onInteractive:l=>{console.log(`Automation created: ${l.id}`)}},o)});function $a(e){let t=e.map(o=>[o.name,Ir(o.status),o.created_at,o.id]);return _(["Name","Status","Created","ID"],t,"(no automations)")}function Ir(e){switch(e){case"enabled":return"\u2713 Enabled";case"disabled":return"\u25CB Disabled";default:return e}}var Qe={resource:"automation",resourcePlural:"automations",fetchItems:(e,{limit:t,after:o})=>e.automations.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var Ga=new c("delete").alias("rm").description("Delete an automation").argument("[id]","Automation ID").option("--yes","Skip confirmation prompt").addHelpText("after",d({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"automation","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend automations delete <id> --yes","resend automations delete <id> --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Qe,i);await z(r,!!t.yes,{confirmMessage:`Delete automation ${r}?
330
- This cannot be undone.`,loading:"Deleting automation...",object:"automation",successMsg:"Automation deleted",sdkCall:n=>n.automations.remove(r)},i)});var Ha=new c("duplicate").description("Duplicate an automation").argument("[id]","Automation ID to duplicate").addHelpText("after",d({context:`Creates a copy of an existing automation and returns the new automation ID.
331
- The steps and connections are copied from the original.`,output:' {"object":"automation","id":"<new-automation-id>"}',errorCodes:["auth_error","create_error"],examples:["resend automations duplicate <id>","resend automations duplicate <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Qe,i);await j({loading:"Duplicating automation...",sdkCall:n=>n.automations.duplicate(r),onInteractive:n=>{console.log(`Automation duplicated: ${n.id}`)}},i)});var Qa=new c("get").description("Retrieve an automation with its steps and connections").argument("[id]","Automation ID").addHelpText("after",d({output:` Full automation object including steps and connections arrays.
329
+ Connection types: default, condition_met, condition_not_met, timeout, event_received`,output:' {"object":"automation","id":"<id>"}',errorCodes:["auth_error","missing_name","missing_steps","missing_connections","invalid_json","file_read_error","create_error"],examples:["resend automations create --file automation.json","cat automation.json | resend automations create --file -","resend automations create --file automation.json --status disabled",`resend automations create --name "Welcome Flow" --steps '[...]' --connections '[...]'`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i={};if(e.file){let l=oe(e.file,o);try{i=JSON.parse(l)}catch(c){g({message:`Invalid JSON in --file: ${c instanceof Error?c.message:"parse error"}`,code:"invalid_json"},{json:o.json})}(typeof i!="object"||i===null||Array.isArray(i))&&g({message:"--file must contain a JSON object with automation properties (name, steps, connections).",code:"invalid_json"},{json:o.json})}let r=await P(e.name??i.name,{message:"Automation name",placeholder:"e.g. Welcome Flow"},{message:"Missing --name flag.",code:"missing_name"},o),n=_t(e.steps,"--steps",o)??i.steps;(!n||!Array.isArray(n)||n.length===0)&&g({message:"Missing or empty steps. Provide --steps as a JSON array or use --file.",code:"missing_steps"},{json:o.json});let s=_t(e.connections,"--connections",o)??i.connections;s||g({message:"Missing connections. Provide --connections as a JSON array or use --file (empty array is valid for single-step automations).",code:"missing_connections"},{json:o.json}),Array.isArray(s)||g({message:"--connections must be a JSON array.",code:"invalid_json"},{json:o.json});let a=e.status??i.status;await M({loading:"Creating automation...",sdkCall:l=>l.automations.create({name:r,steps:n,connections:s,...a&&{status:a}}),onInteractive:l=>{console.log(`Automation created: ${l.id}`)}},o)});function Da(e){let t=e.map(o=>[o.name,Br(o.status),o.created_at,o.id]);return _(["Name","Status","Created","ID"],t,"(no automations)")}function Br(e){switch(e){case"enabled":return"\u2713 Enabled";case"disabled":return"\u25CB Disabled";default:return e}}var Qe={resource:"automation",resourcePlural:"automations",fetchItems:(e,{limit:t,after:o})=>e.automations.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var Ea=new d("delete").alias("rm").description("Delete an automation").argument("[id]","Automation ID").option("--yes","Skip confirmation prompt").addHelpText("after",m({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"automation","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend automations delete <id> --yes","resend automations delete <id> --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i);await te(r,!!t.yes,{confirmMessage:`Delete automation ${r}?
330
+ This cannot be undone.`,loading:"Deleting automation...",object:"automation",successMsg:"Automation deleted",sdkCall:n=>n.automations.remove(r)},i)});var Ba=new d("duplicate").description("Duplicate an automation").argument("[id]","Automation ID to duplicate").addHelpText("after",m({context:`Creates a copy of an existing automation and returns the new automation ID.
331
+ The steps and connections are copied from the original.`,output:' {"object":"automation","id":"<new-automation-id>"}',errorCodes:["auth_error","create_error"],examples:["resend automations duplicate <id>","resend automations duplicate <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i);await M({loading:"Duplicating automation...",sdkCall:n=>n.automations.duplicate(r),onInteractive:n=>{console.log(`Automation duplicated: ${n.id}`)}},i)});var Oa=new d("get").description("Retrieve an automation with its steps and connections").argument("[id]","Automation ID").addHelpText("after",m({output:` Full automation object including steps and connections arrays.
332
332
 
333
- Automation status values: enabled | disabled`,errorCodes:["auth_error","fetch_error"],examples:["resend automations get <id>","resend automations get <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Qe,i);await I({loading:"Fetching automation...",sdkCall:n=>n.automations.get(r),onInteractive:n=>{if(console.log(`${n.name} \u2014 ${Ir(n.status)}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`),n.steps.length>0){console.log(`
333
+ Automation status values: enabled | disabled`,errorCodes:["auth_error","fetch_error"],examples:["resend automations get <id>","resend automations get <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i);await $({loading:"Fetching automation...",sdkCall:n=>n.automations.get(r),onInteractive:n=>{if(console.log(`${n.name} \u2014 ${Br(n.status)}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`),n.steps.length>0){console.log(`
334
334
  Steps:`);let s=n.steps.map(a=>[a.key,a.type]);console.log(_(["Key","Type"],s,"(no steps)"))}if(n.connections.length>0){console.log(`
335
- Connections:`);let s=n.connections.map(a=>[a.from,a.to,a.type]);console.log(_(["From","To","Type"],s,"(no connections)"))}}},i)});var Na=new c("list").alias("ls").description("List all automations").option("--limit <n>","Maximum number of automations to return (1-100)","10").option("--after <cursor>","Return automations after this cursor (next page)").option("--before <cursor>","Return automations before this cursor (previous page)").addHelpText("after",d({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend automations list","resend automations list --limit 25 --json","resend automations list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching automations...",sdkCall:n=>n.automations.list(r),onInteractive:n=>{console.log($a(n.data)),E(n,"automations list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Ma=new c("open").description("Open an automation or the automations list in the Resend dashboard").argument("[id]","Automation ID \u2014 omit to open the automations list").addHelpText("after",d({context:`Opens the Resend dashboard in your default browser.
335
+ Connections:`);let s=n.connections.map(a=>[a.from,a.to,a.type]);console.log(_(["From","To","Type"],s,"(no connections)"))}}},i)});var Ta=new d("list").alias("ls").description("List all automations").option("--limit <n>","Maximum number of automations to return (1-100)","10").option("--after <cursor>","Return automations after this cursor (next page)").option("--before <cursor>","Return automations before this cursor (previous page)").addHelpText("after",m({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend automations list","resend automations list --limit 25 --json","resend automations list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching automations...",sdkCall:n=>n.automations.list(r),onInteractive:n=>{console.log(Da(n.data)),T(n,"automations list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Ia=new d("open").description("Open an automation or the automations list in the Resend dashboard").argument("[id]","Automation ID \u2014 omit to open the automations list").addHelpText("after",m({context:`Opens the Resend dashboard in your default browser.
336
336
  With an ID: opens that automation's editor.
337
- Without an ID: opens the automations list.`,examples:["resend automations open","resend automations open 019d4ef1-8266-71d4-a1aa-60ce5d0eaea7"]})).action(async(e,t,o)=>{let i=e?fe.automation(e):fe.automations,r=o.optsWithGlobals();await Te(i,r)});var qa=new c("get").description("Retrieve details of a specific automation run").option("--automation-id <id>","Automation ID").option("--run-id <id>","Run ID").addHelpText("after",d({output:" Full automation run object with status, trigger, and timestamps.",errorCodes:["auth_error","missing_automation_id","missing_run_id","fetch_error"],examples:["resend automations runs get --automation-id <id> --run-id <id>","resend automations runs get --automation-id <id> --run-id <id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.automationId,{message:"Automation ID"},{message:"Missing --automation-id flag.",code:"missing_automation_id"},o),r=await T(e.runId,{message:"Run ID"},{message:"Missing --run-id flag.",code:"missing_run_id"},o);await I({loading:"Fetching automation run...",sdkCall:n=>n.automations.runs.get({automationId:i,runId:r}),onInteractive:n=>{console.log(`Run: ${n.id}`),console.log(`Status: ${n.status}`),n.started_at&&console.log(`Started: ${n.started_at}`),n.completed_at&&console.log(`Completed: ${n.completed_at}`),console.log(`Created: ${n.created_at}`)}},o)});var La=new c("list").alias("ls").description("List runs for an automation").argument("[automation-id]","Automation ID").option("--status <status>","Filter by status (running, completed, failed, cancelled). Comma-separated.").option("--limit <n>","Maximum number of runs to return (1-100)","10").option("--after <cursor>","Return runs after this cursor (next page)").option("--before <cursor>","Return runs before this cursor (previous page)").addHelpText("after",d({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","missing_id","invalid_limit","list_error"],examples:["resend automations runs <automation-id>","resend automations runs list <automation-id>","resend automations runs list <automation-id> --status running","resend automations runs list <automation-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Qe,i),n=O(t.limit,i),s=P(n,t.after,t.before,i);await k({loading:"Fetching automation runs...",sdkCall:a=>a.automations.runs.list({automationId:r,...s,...t.status?{status:t.status}:{}}),onInteractive:a=>{let l=a.data.map(u=>[u.id,u.status,u.started_at??"-",u.completed_at??"-"]);console.log(_(["ID","Status","Started","Completed"],l,"(no runs)")),E(a,`automations runs list ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Wa=new c("runs").description("Manage automation runs").addHelpText("after",d({context:`Runs represent individual executions of an automation.
337
+ Without an ID: opens the automations list.`,examples:["resend automations open","resend automations open 019d4ef1-8266-71d4-a1aa-60ce5d0eaea7"]})).action(async(e,t,o)=>{let i=e?pe.automation(e):pe.automations,r=o.optsWithGlobals();await De(i,r)});var ja=new d("get").description("Retrieve details of a specific automation run").option("--automation-id <id>","Automation ID").option("--run-id <id>","Run ID").addHelpText("after",m({output:" Full automation run object with status, trigger, and timestamps.",errorCodes:["auth_error","missing_automation_id","missing_run_id","fetch_error"],examples:["resend automations runs get --automation-id <id> --run-id <id>","resend automations runs get --automation-id <id> --run-id <id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.automationId,{message:"Automation ID"},{message:"Missing --automation-id flag.",code:"missing_automation_id"},o),r=await P(e.runId,{message:"Run ID"},{message:"Missing --run-id flag.",code:"missing_run_id"},o);await $({loading:"Fetching automation run...",sdkCall:n=>n.automations.runs.get({automationId:i,runId:r}),onInteractive:n=>{console.log(`Run: ${n.id}`),console.log(`Status: ${n.status}`),n.started_at&&console.log(`Started: ${n.started_at}`),n.completed_at&&console.log(`Completed: ${n.completed_at}`),console.log(`Created: ${n.created_at}`)}},o)});var Pa=new d("list").alias("ls").description("List runs for an automation").argument("[automation-id]","Automation ID").option("--status <status>","Filter by status (running, completed, failed, cancelled). Comma-separated.").option("--limit <n>","Maximum number of runs to return (1-100)","10").option("--after <cursor>","Return runs after this cursor (next page)").option("--before <cursor>","Return runs before this cursor (previous page)").addHelpText("after",m({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","missing_id","invalid_limit","list_error"],examples:["resend automations runs <automation-id>","resend automations runs list <automation-id>","resend automations runs list <automation-id> --status running","resend automations runs list <automation-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i),n=O(t.limit,i),s=G(n,t.after,t.before,i);await F({loading:"Fetching automation runs...",sdkCall:a=>a.automations.runs.list({automationId:r,...s,...t.status?{status:t.status}:{}}),onInteractive:a=>{let l=a.data.map(c=>[c.id,c.status,c.started_at??"-",c.completed_at??"-"]);console.log(_(["ID","Status","Started","Completed"],l,"(no runs)")),T(a,`automations runs list ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var $a=new d("runs").description("Manage automation runs").addHelpText("after",m({context:`Runs represent individual executions of an automation.
338
338
  Each run is triggered by an event and progresses through the automation's steps.
339
339
 
340
- Run status values: running | completed | failed | cancelled`,examples:["resend automations runs <automation-id>","resend automations runs list <automation-id> --limit 25","resend automations runs get --automation-id <id> --run-id <id>"]})).addCommand(La,{isDefault:!0}).addCommand(qa);var Ja=new c("stop").description("Stop a running automation").argument("[id]","Automation ID").addHelpText("after",d({context:"Stops a running automation by setting its status to disabled and cancelling active runs.",output:' {"object":"automation","id":"<id>","status":"disabled"}',errorCodes:["auth_error","stop_error"],examples:["resend automations stop <id>","resend automations stop <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Qe,i);await R({loading:"Stopping automation...",sdkCall:n=>n.automations.stop(r),errorCode:"stop_error",successMsg:"Automation stopped"},i)});var Va=new c("update").description("Update an automation status (enable or disable)").argument("[id]","Automation ID").addOption(new M("--status <status>","New status").choices(["enabled","disabled"])).addHelpText("after",d({output:' {"object":"automation","id":"<id>","status":"<status>"}',errorCodes:["auth_error","missing_status","update_error"],examples:["resend automations update <id> --status enabled","resend automations update <id> --status disabled --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Qe,i),n=await bt(t.status,{message:"Status",options:[{value:"enabled",label:"Enabled"},{value:"disabled",label:"Disabled"}]},{message:"Missing --status flag.",code:"missing_status"},i);await R({loading:"Updating automation...",sdkCall:s=>s.automations.update(r,{status:n}),errorCode:"update_error",successMsg:`Automation updated: ${r} (${n})`},i)});var za=new c("automations").description("Manage automations").addHelpText("after",d({context:`Automations are event-driven workflows composed of steps and connections.
340
+ Run status values: running | completed | failed | cancelled`,examples:["resend automations runs <automation-id>","resend automations runs list <automation-id> --limit 25","resend automations runs get --automation-id <id> --run-id <id>"]})).addCommand(Pa,{isDefault:!0}).addCommand(ja);var Ga=new d("stop").description("Stop a running automation").argument("[id]","Automation ID").addHelpText("after",m({context:"Stops a running automation by setting its status to disabled and cancelling active runs.",output:' {"object":"automation","id":"<id>","status":"disabled"}',errorCodes:["auth_error","stop_error"],examples:["resend automations stop <id>","resend automations stop <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i);await B({loading:"Stopping automation...",sdkCall:n=>n.automations.stop(r),errorCode:"stop_error",successMsg:"Automation stopped"},i)});var Ha=new d("update").description("Update an automation status (enable or disable)").argument("[id]","Automation ID").addOption(new L("--status <status>","New status").choices(["enabled","disabled"])).addHelpText("after",m({output:' {"object":"automation","id":"<id>","status":"<status>"}',errorCodes:["auth_error","missing_status","update_error"],examples:["resend automations update <id> --status enabled","resend automations update <id> --status disabled --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i),n=await At(t.status,{message:"Status",options:[{value:"enabled",label:"Enabled"},{value:"disabled",label:"Disabled"}]},{message:"Missing --status flag.",code:"missing_status"},i);await B({loading:"Updating automation...",sdkCall:s=>s.automations.update(r,{status:n}),errorCode:"update_error",successMsg:`Automation updated: ${r} (${n})`},i)});var Qa=new d("automations").description("Manage automations").addHelpText("after",m({context:`Automations are event-driven workflows composed of steps and connections.
341
341
 
342
342
  Steps define the actions (trigger, delay, send_email, wait_for_event, condition).
343
343
  Connections define the flow between steps (default, condition_met, condition_not_met, timeout, event_received).
@@ -348,12 +348,12 @@ Lifecycle:
348
348
  3. resend automations duplicate <id> (copy an automation)
349
349
  4. resend automations stop <id> (stop automation)
350
350
  5. resend automations runs <id> (inspect runs)
351
- 6. resend automations open <id> (view in dashboard)`,examples:["resend automations list",'resend automations create --name "Welcome Flow" --file workflow.json',"resend automations get <id>","resend automations update <id> --status enabled","resend automations duplicate <id>","resend automations stop <id>","resend automations delete <id> --yes","resend automations runs <automation-id>","resend automations runs get --automation-id <id> --run-id <id>","resend automations open <id>"]})).addCommand(Pa).addCommand(Qa).addCommand(Na,{isDefault:!0}).addCommand(Va).addCommand(Ga).addCommand(Ha).addCommand(Ja).addCommand(Ma).addCommand(Wa);function jr(e){switch(e){case"draft":return"\u25CB Draft";case"queued":return"\u23F3 Queued";case"scheduled":return"\u{1F4C5} Scheduled";case"sent":return"\u2713 Sent";default:return e}}var Ne={resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(e,{limit:t,after:o})=>e.broadcasts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name??"(untitled)",hint:e.id})};function Ya(e){return{resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(t,{limit:o,after:i})=>t.broadcasts.list({limit:o,...i&&{after:i}}),display:t=>({label:t.name??"(untitled)",hint:`${jr(t.status)} ${t.id}`}),filter:e}}var Xa=Ya(e=>e.status==="draft"),Za=Ya(e=>e.status==="queued"||e.status==="scheduled");function el(e){let t=e.map(o=>[o.name??"(untitled)",o.status,o.created_at,o.id]);return _(["Name","Status","Created","ID"],t,"(no broadcasts)")}function tl(e){let t=e.map(o=>[o.email,o.contact_id??"-",o.count!==void 0&&o.count!==null?String(o.count):"-",o.bounce_type??"-",o.clicked_links&&o.clicked_links.length>0?o.clicked_links.map(i=>`${i.url} (${i.clicks})`).join(", "):"-",o.id]);return _(["Email","Contact ID","Count","Bounce Type","Clicked Links","ID"],t,"(no recipients)")}function ol(e){let t=e.map(o=>[o.url,String(o.clicks),String(o.unique_clicks)]);return _(["URL","Clicks","Unique Clicks"],t,"(no clicked links)")}var il=new c("cancel").description("Cancel a queued or scheduled broadcast").argument("[id]","Broadcast ID").addHelpText("after",d({context:`Only queued or scheduled broadcasts can be cancelled; draft and sent broadcasts cannot.
351
+ 6. resend automations open <id> (view in dashboard)`,examples:["resend automations list",'resend automations create --name "Welcome Flow" --file workflow.json',"resend automations get <id>","resend automations update <id> --status enabled","resend automations duplicate <id>","resend automations stop <id>","resend automations delete <id> --yes","resend automations runs <automation-id>","resend automations runs get --automation-id <id> --run-id <id>","resend automations open <id>"]})).addCommand(_a).addCommand(Oa).addCommand(Ta,{isDefault:!0}).addCommand(Ha).addCommand(Ea).addCommand(Ba).addCommand(Ga).addCommand(Ia).addCommand($a);function Or(e){switch(e){case"draft":return"\u25CB Draft";case"queued":return"\u23F3 Queued";case"scheduled":return"\u{1F4C5} Scheduled";case"sent":return"\u2713 Sent";default:return e}}var Ne={resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(e,{limit:t,after:o})=>e.broadcasts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name??"(untitled)",hint:e.id})};function Na(e){return{resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(t,{limit:o,after:i})=>t.broadcasts.list({limit:o,...i&&{after:i}}),display:t=>({label:t.name??"(untitled)",hint:`${Or(t.status)} ${t.id}`}),filter:e}}var Ma=Na(e=>e.status==="draft"),qa=Na(e=>e.status==="queued"||e.status==="scheduled");function La(e){let t=e.map(o=>[o.name??"(untitled)",o.status,o.created_at,o.id]);return _(["Name","Status","Created","ID"],t,"(no broadcasts)")}function Wa(e){let t=e.map(o=>[o.email,o.contact_id??"-",o.count!==void 0&&o.count!==null?String(o.count):"-",o.bounce_type??"-",o.clicked_links&&o.clicked_links.length>0?o.clicked_links.map(i=>`${i.url} (${i.clicks})`).join(", "):"-",o.id]);return _(["Email","Contact ID","Count","Bounce Type","Clicked Links","ID"],t,"(no recipients)")}function Ja(e){let t=e.map(o=>[o.url,String(o.clicks),String(o.unique_clicks)]);return _(["URL","Clicks","Unique Clicks"],t,"(no clicked links)")}var Va=new d("cancel").description("Cancel a queued or scheduled broadcast").argument("[id]","Broadcast ID").addHelpText("after",m({context:`Only queued or scheduled broadcasts can be cancelled; draft and sent broadcasts cannot.
352
352
  Cancelling a scheduled broadcast stops the scheduled delivery. Cancelling a queued
353
- broadcast stops it mid-send \u2014 emails already sent are not affected.`,output:' {"object":"broadcast","id":"<id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Za,i);await R({loading:"Cancelling broadcast...",sdkCall:n=>n.broadcasts.cancel(r),errorCode:"cancel_error",successMsg:"Broadcast cancelled"},i)});var rl=new c("clicked-links").description("List the links clicked in a broadcast, ranked by total clicks").argument("[id]","Broadcast ID").option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({output:' {"object":"list","has_more":false,"data":[{"id":"...","url":"...","clicks":42,"unique_clicks":30}]}',errorCodes:["auth_error","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 5","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --after b2Zmc2V0OjA","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ne,i),n=O(t.limit,i),s=P(n,t.after,t.before,i);await k({loading:"Fetching clicked links...",sdkCall:a=>a.broadcasts.clickedLinks(r,s),onInteractive:a=>{console.log(ol(a.data)),E(a,`broadcasts clicked-links ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});async function pi(e){try{let{data:t,error:o}=await e.domains.list();return o||!t?[]:t.data.filter(i=>i.status==="verified"&&i.capabilities.sending==="enabled").map(i=>i.name)}catch{return[]}}var $h=["hello","support"];async function fi(e){let t;if(e.length===1)t=e[0];else{let r=await ne({message:"Select a verified domain",options:e.map(n=>({value:n,label:n}))});F(r)&&D("Send cancelled."),t=r}let o=$h.map(r=>({value:`${r}@${t}`,label:`${r}@${t}`}));o.push({value:null,label:"Custom address..."});let i=await ne({message:`From address (@${t})`,options:o});if(F(i)&&D("Send cancelled."),i===null){let r=await Z({message:"From address",placeholder:`e.g. you@${t}`,validate:n=>n?.includes("@")?void 0:"Enter a valid email address"});return F(r)&&D("Send cancelled."),r}return i}var Wt=require("node:fs"),fl=require("node:path");var hi=require("node:fs"),dl=require("node:os"),Lt=me(require("node:path"),1);function nl(){return"pkg"in process?require("esbuild-wasm"):require("esbuild")}var al=require("node:fs"),ll=me(require("node:path"),1);function sl(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var cl=e=>({name:"rendering-utilities-exporter",setup:t=>{t.onLoad({filter:new RegExp(e.map(o=>sl(o)).join("|"))},async({path:o})=>({contents:`${await al.promises.readFile(o,"utf8")};
353
+ broadcast stops it mid-send \u2014 emails already sent are not affected.`,output:' {"object":"broadcast","id":"<id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,qa,i);await B({loading:"Cancelling broadcast...",sdkCall:n=>n.broadcasts.cancel(r),errorCode:"cancel_error",successMsg:"Broadcast cancelled"},i)});var za=new d("clicked-links").description("List the links clicked in a broadcast, ranked by total clicks").argument("[id]","Broadcast ID").option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",m({output:' {"object":"list","has_more":false,"data":[{"id":"...","url":"...","clicks":42,"unique_clicks":30}]}',errorCodes:["auth_error","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 5","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --after b2Zmc2V0OjA","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i),n=O(t.limit,i),s=G(n,t.after,t.before,i);await F({loading:"Fetching clicked links...",sdkCall:a=>a.broadcasts.clickedLinks(r,s),onInteractive:a=>{console.log(Ja(a.data)),T(a,`broadcasts clicked-links ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});async function ui(e){try{let{data:t,error:o}=await e.domains.list();return o||!t?[]:t.data.filter(i=>i.status==="verified"&&i.capabilities.sending==="enabled").map(i=>i.name)}catch{return[]}}var zf=["hello","support"];async function mi(e){let t;if(e.length===1)t=e[0];else{let r=await re({message:"Select a verified domain",options:e.map(n=>({value:n,label:n}))});k(r)&&R("Send cancelled."),t=r}let o=zf.map(r=>({value:`${r}@${t}`,label:`${r}@${t}`}));o.push({value:null,label:"Custom address..."});let i=await re({message:`From address (@${t})`,options:o});if(k(i)&&R("Send cancelled."),i===null){let r=await z({message:"From address",placeholder:`e.g. you@${t}`,validate:n=>n?.includes("@")?void 0:"Enter a valid email address"});return k(r)&&R("Send cancelled."),r}return i}var Lt=require("node:fs"),sl=require("node:path");var pi=require("node:fs"),ol=require("node:os"),qt=ue(require("node:path"),1);function Ya(){return"pkg"in process?require("esbuild-wasm"):require("esbuild")}var Za=require("node:fs"),el=ue(require("node:path"),1);function Xa(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var tl=e=>({name:"rendering-utilities-exporter",setup:t=>{t.onLoad({filter:new RegExp(e.map(o=>Xa(o)).join("|"))},async({path:o})=>({contents:`${await Za.promises.readFile(o,"utf8")};
354
354
  export { render } from 'react-email-module-that-will-export-render'
355
355
  export { createElement as reactEmailCreateReactElement } from 'react';
356
- `,loader:ll.default.extname(o).slice(1)})),t.onResolve({filter:/^react-email-module-that-will-export-render$/},async o=>{let i={kind:"import-statement",importer:o.importer,resolveDir:o.resolveDir,namespace:o.namespace},r=await t.resolve("react-email",i);return r.errors.length===0||(r=await t.resolve("@react-email/components",i),r.errors.length===0)||(r=await t.resolve("@react-email/render",i),r.errors.length>0&&r.errors[0]&&(r.errors[0].text="Failed to import `render` from `react-email` (6.0+), `@react-email/components` (5.x), or `@react-email/render`. Install one of them in your project.")),r})}});async function ul(e){let t=Lt.default.resolve(e),o=(0,hi.mkdtempSync)(Lt.default.join((0,dl.tmpdir)(),"resend-react-email-"));try{let{build:n}=nl();await n({bundle:!0,entryPoints:[t],format:"cjs",jsx:"automatic",logLevel:"silent",outExtension:{".js":".cjs"},outdir:o,platform:"node",plugins:[cl([t])],write:!0})}catch(n){throw(0,hi.rmSync)(o,{recursive:!0,force:!0}),n}let i=Lt.default.basename(t,Lt.default.extname(t));return{cjsPath:Lt.default.join(o,`${i}.cjs`),tmpDir:o}}var ml=require("node:module");async function pl(e){let t=(0,ml.createRequire)(e);delete t.cache[e];let o=t(e);return o.render(o.reactEmailCreateReactElement(o.default,{}),{})}var Pr=e=>{e&&(0,Wt.rmSync)(e,{recursive:!0,force:!0})},Me=async(e,t)=>{if(e.trim()==="")return h({message:"--react-email path cannot be empty",code:"react_email_build_error"},{json:t.json});let o=(0,fl.resolve)(e);if(!(0,Wt.existsSync)(o))return h({message:`File not found: ${e}`,code:"react_email_build_error"},{json:t.json});if(!(0,Wt.statSync)(o).isFile())return h({message:`--react-email path must be a file, got a directory: ${e}`,code:"react_email_build_error"},{json:t.json});let i=ae("Bundling React Email template...",t.quiet),r;try{let n=await ul(e);r=n.tmpDir,i.stop("Bundled React Email template");let s=ae("Rendering React Email template...",t.quiet);try{let a=await pl(n.cjsPath);return s.stop("Rendered React Email template"),Pr(r),a}catch(a){return s.fail("Failed to render React Email template"),Pr(r),h({message:W(a,"Failed to render React Email template"),code:"react_email_render_error"},{json:t.json})}}catch(n){return i.fail("Failed to bundle React Email template"),Pr(r),h({message:W(n,"Failed to bundle React Email template"),code:"react_email_build_error"},{json:t.json})}};X();var Oe={resource:"segment",resourcePlural:"segments",fetchItems:(e,{limit:t,after:o})=>e.segments.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function gi(e){let t=e.map(o=>[o.name,o.id,o.created_at]);return _(["Name","ID","Created"],t,"(no segments)")}var yt={resource:"topic",resourcePlural:"topics",fetchItems:e=>e.topics.list().then(t=>({...t,data:t.data?{data:t.data.data,has_more:!1}:null})),display:e=>({label:e.name,hint:e.id})};function hl(e){let t=e.map(o=>[o.name,o.description??"",o.id,o.created_at]);return _(["Name","Description","ID","Created"],t,"(no topics)")}var gl=new c("create").description("Create a broadcast draft (or send immediately with --send)").option("--from <address>","Sender address \u2014 required").option("--subject <subject>","Email subject \u2014 required").option("--segment-id <id>","Target segment ID \u2014 required").option("--html <html>","HTML body (supports {{{FIRST_NAME|fallback}}} triple-brace variable interpolation)").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Internal label for the broadcast (optional)").option("--reply-to <address>","Reply-to address (optional)").option("--preview-text <text>","Preview text shown in inbox below the subject line (optional)").option("--topic-id <id>","Associate with a topic for subscription filtering (optional)").option("--send","Send immediately on create instead of saving as draft").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET" (only valid with --send)').option("--dry-run","Validate input and print the create request JSON without calling the API (interactive: type segment/topic IDs; lists are not fetched)").addHelpText("after",d({context:`Non-interactive: --from, --subject, and --segment-id are required.
356
+ `,loader:el.default.extname(o).slice(1)})),t.onResolve({filter:/^react-email-module-that-will-export-render$/},async o=>{let i={kind:"import-statement",importer:o.importer,resolveDir:o.resolveDir,namespace:o.namespace},r=await t.resolve("react-email",i);return r.errors.length===0||(r=await t.resolve("@react-email/components",i),r.errors.length===0)||(r=await t.resolve("@react-email/render",i),r.errors.length>0&&r.errors[0]&&(r.errors[0].text="Failed to import `render` from `react-email` (6.0+), `@react-email/components` (5.x), or `@react-email/render`. Install one of them in your project.")),r})}});async function il(e){let t=qt.default.resolve(e),o=(0,pi.mkdtempSync)(qt.default.join((0,ol.tmpdir)(),"resend-react-email-"));try{let{build:n}=Ya();await n({bundle:!0,entryPoints:[t],format:"cjs",jsx:"automatic",logLevel:"silent",outExtension:{".js":".cjs"},outdir:o,platform:"node",plugins:[tl([t])],write:!0})}catch(n){throw(0,pi.rmSync)(o,{recursive:!0,force:!0}),n}let i=qt.default.basename(t,qt.default.extname(t));return{cjsPath:qt.default.join(o,`${i}.cjs`),tmpDir:o}}var rl=require("node:module");async function nl(e){let t=(0,rl.createRequire)(e);delete t.cache[e];let o=t(e);return o.render(o.reactEmailCreateReactElement(o.default,{}),{})}var Tr=e=>{e&&(0,Lt.rmSync)(e,{recursive:!0,force:!0})},Me=async(e,t)=>{if(e.trim()==="")return g({message:"--react-email path cannot be empty",code:"react_email_build_error"},{json:t.json});let o=(0,sl.resolve)(e);if(!(0,Lt.existsSync)(o))return g({message:`File not found: ${e}`,code:"react_email_build_error"},{json:t.json});if(!(0,Lt.statSync)(o).isFile())return g({message:`--react-email path must be a file, got a directory: ${e}`,code:"react_email_build_error"},{json:t.json});let i=se("Bundling React Email template...",t.quiet),r;try{let n=await il(e);r=n.tmpDir,i.stop("Bundled React Email template");let s=se("Rendering React Email template...",t.quiet);try{let a=await nl(n.cjsPath);return s.stop("Rendered React Email template"),Tr(r),a}catch(a){return s.fail("Failed to render React Email template"),Tr(r),g({message:q(a,"Failed to render React Email template"),code:"react_email_render_error"},{json:t.json})}}catch(n){return i.fail("Failed to bundle React Email template"),Tr(r),g({message:q(n,"Failed to bundle React Email template"),code:"react_email_build_error"},{json:t.json})}};V();var Ee={resource:"segment",resourcePlural:"segments",fetchItems:(e,{limit:t,after:o})=>e.segments.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function fi(e){let t=e.map(o=>[o.name,o.id,o.created_at]);return _(["Name","ID","Created"],t,"(no segments)")}var bt={resource:"topic",resourcePlural:"topics",fetchItems:e=>e.topics.list().then(t=>({...t,data:t.data?{data:t.data.data,has_more:!1}:null})),display:e=>({label:e.name,hint:e.id})};function al(e){let t=e.map(o=>[o.name,o.description??"",o.id,o.created_at]);return _(["Name","Description","ID","Created"],t,"(no topics)")}var ll=new d("create").description("Create a broadcast draft (or send immediately with --send)").option("--from <address>","Sender address \u2014 required").option("--subject <subject>","Email subject \u2014 required").option("--segment-id <id>","Target segment ID \u2014 required").option("--html <html>","HTML body (supports {{{FIRST_NAME|fallback}}} triple-brace variable interpolation)").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Internal label for the broadcast (optional)").option("--reply-to <address>","Reply-to address (optional)").option("--preview-text <text>","Preview text shown in inbox below the subject line (optional)").option("--topic-id <id>","Associate with a topic for subscription filtering (optional)").option("--send","Send immediately on create instead of saving as draft").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET" (only valid with --send)').option("--dry-run","Validate input and print the create request JSON without calling the API (interactive: type segment/topic IDs; lists are not fetched)").addHelpText("after",m({context:`Non-interactive: --from, --subject, and --segment-id are required.
357
357
  Body: provide at least one of --html, --html-file, --text, --text-file, or --react-email.
358
358
 
359
359
  Use --dry-run to print the request JSON without creating a broadcast.
@@ -365,31 +365,31 @@ Variable interpolation:
365
365
  Scheduling:
366
366
  Use --scheduled-at with --send to schedule delivery.
367
367
  Accepts ISO 8601 (e.g. 2026-08-05T11:52:01Z) or natural language (e.g. "in 1 hour").
368
- --scheduled-at without --send is ignored.`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","missing_from","missing_subject","missing_segment","missing_body","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","create_error"],examples:['resend broadcasts create --from onboarding@resend.dev --subject "Weekly Update" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hello {{{FIRST_NAME|there}}}</p>"','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html-file ./email.html --send','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --text "Hello!" --send --scheduled-at "tomorrow at 9am ET"']})).action(async(e,t)=>{let o=t.optsWithGlobals();e.htmlFile==="-"&&e.textFile==="-"&&h({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile)&&h({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:o.json}),e.html!==void 0&&e.htmlFile!==void 0&&h({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:o.json}),e.text!==void 0&&e.textFile!==void 0&&h({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:o.json});let i=e.from,r=e.subject,n=e.segmentId;if(!i&&w()&&!o.json&&!e.dryRun){let m=await ee(o),p=await pi(m);p.length>0&&(i=await fi(p))}if(!i){(!w()||o.json)&&h({message:"Missing --from flag.",code:"missing_from"},{json:o.json});let m=await Z({message:"From address",placeholder:"e.g. onboarding@resend.dev",validate:p=>p?void 0:"Required"});F(m)&&D("Cancelled."),i=m}if(!r){(!w()||o.json)&&h({message:"Missing --subject flag.",code:"missing_subject"},{json:o.json});let m=await Z({message:"Subject",placeholder:"e.g. Weekly Newsletter",validate:p=>p?void 0:"Required"});F(m)&&D("Cancelled."),r=m}if(!n)if((!w()||o.json)&&h({message:"Missing --segment-id flag.",code:"missing_segment"},{json:o.json}),e.dryRun){let m=await Z({message:"Segment ID",placeholder:"e.g. 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d",validate:p=>p?void 0:"Required"});F(m)&&D("Cancelled."),n=m}else n=await g(void 0,Oe,o);let s=e.reactEmail?await Me(e.reactEmail,o):e.htmlFile?ie(e.htmlFile,o):e.html,a=e.textFile?ie(e.textFile,o):e.text;if(!s&&!a){(!w()||o.json)&&h({message:"Missing body. Provide --html, --html-file, --text, --text-file, or --react-email.",code:"missing_body"},{json:o.json});let m=await Z({message:"Body (plain text)",placeholder:"e.g. Hello {{{FIRST_NAME|there}}}!",validate:p=>p?void 0:"Required"});F(m)&&D("Cancelled."),a=m}let l=e.topicId;if(!l&&w()&&!o.json)if(e.dryRun){let m=await Z({message:"Topic ID (optional)",placeholder:"Press Enter to skip"});F(m)&&D("Cancelled."),l=m.trim()||void 0}else l=await g(void 0,yt,o,{optional:!0});let u={from:i,subject:r,segmentId:n,...s&&{html:s},...a&&{text:a},...e.name&&{name:e.name},...e.replyTo&&{replyTo:e.replyTo},...e.previewText&&{previewText:e.previewText},...l&&{topicId:l},...e.send&&{send:!0},...e.send&&e.scheduledAt&&{scheduledAt:e.scheduledAt}};if(e.dryRun){N({dryRun:!0,request:u},{json:o.json});return}await j({loading:"Creating broadcast...",sdkCall:m=>m.broadcasts.create(u),onInteractive:m=>{e.send?e.scheduledAt?console.log(`Broadcast scheduled: ${m.id}`):console.log(`Broadcast sent: ${m.id}`):(console.log(`Broadcast created: ${m.id}`),console.log("Status: draft"),console.log(`Send it with: resend broadcasts send ${m.id}`))}},o)});var Al=new c("delete").alias("rm").description("Delete a broadcast \u2014 draft broadcasts are removed; scheduled broadcasts are cancelled before delivery").argument("[id]","Broadcast ID").option("--yes","Skip confirmation prompt").addHelpText("after",d({context:`Warning: Deleting a scheduled broadcast cancels its delivery immediately.
368
+ --scheduled-at without --send is ignored.`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","missing_from","missing_subject","missing_segment","missing_body","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","create_error"],examples:['resend broadcasts create --from onboarding@resend.dev --subject "Weekly Update" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hello {{{FIRST_NAME|there}}}</p>"','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html-file ./email.html --send','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --text "Hello!" --send --scheduled-at "tomorrow at 9am ET"']})).action(async(e,t)=>{let o=t.optsWithGlobals();e.htmlFile==="-"&&e.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:o.json}),e.html!==void 0&&e.htmlFile!==void 0&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:o.json}),e.text!==void 0&&e.textFile!==void 0&&g({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:o.json});let i=e.from,r=e.subject,n=e.segmentId;if(!i&&U()&&!o.json&&!e.dryRun){let u=await Y(o),p=await ui(u);p.length>0&&(i=await mi(p))}if(!i){(!U()||o.json)&&g({message:"Missing --from flag.",code:"missing_from"},{json:o.json});let u=await z({message:"From address",placeholder:"e.g. onboarding@resend.dev",validate:p=>p?void 0:"Required"});k(u)&&R("Cancelled."),i=u}if(!r){(!U()||o.json)&&g({message:"Missing --subject flag.",code:"missing_subject"},{json:o.json});let u=await z({message:"Subject",placeholder:"e.g. Weekly Newsletter",validate:p=>p?void 0:"Required"});k(u)&&R("Cancelled."),r=u}if(!n)if((!U()||o.json)&&g({message:"Missing --segment-id flag.",code:"missing_segment"},{json:o.json}),e.dryRun){let u=await z({message:"Segment ID",placeholder:"e.g. 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d",validate:p=>p?void 0:"Required"});k(u)&&R("Cancelled."),n=u}else n=await C(void 0,Ee,o);let s=e.reactEmail?await Me(e.reactEmail,o):e.htmlFile?oe(e.htmlFile,o):e.html,a=e.textFile?oe(e.textFile,o):e.text;if(!s&&!a){(!U()||o.json)&&g({message:"Missing body. Provide --html, --html-file, --text, --text-file, or --react-email.",code:"missing_body"},{json:o.json});let u=await z({message:"Body (plain text)",placeholder:"e.g. Hello {{{FIRST_NAME|there}}}!",validate:p=>p?void 0:"Required"});k(u)&&R("Cancelled."),a=u}let l=e.topicId;if(!l&&U()&&!o.json)if(e.dryRun){let u=await z({message:"Topic ID (optional)",placeholder:"Press Enter to skip"});k(u)&&R("Cancelled."),l=u.trim()||void 0}else l=await C(void 0,bt,o,{optional:!0});let c={from:i,subject:r,segmentId:n,...s&&{html:s},...a&&{text:a},...e.name&&{name:e.name},...e.replyTo&&{replyTo:e.replyTo},...e.previewText&&{previewText:e.previewText},...l&&{topicId:l},...e.send&&{send:!0},...e.send&&e.scheduledAt&&{scheduledAt:e.scheduledAt}};if(e.dryRun){Q({dryRun:!0,request:c},{json:o.json});return}await M({loading:"Creating broadcast...",sdkCall:u=>u.broadcasts.create(c),onInteractive:u=>{e.send?e.scheduledAt?console.log(`Broadcast scheduled: ${u.id}`):console.log(`Broadcast sent: ${u.id}`):(console.log(`Broadcast created: ${u.id}`),console.log("Status: draft"),console.log(`Send it with: resend broadcasts send ${u.id}`))}},o)});var cl=new d("delete").alias("rm").description("Delete a broadcast \u2014 draft broadcasts are removed; scheduled broadcasts are cancelled before delivery").argument("[id]","Broadcast ID").option("--yes","Skip confirmation prompt").addHelpText("after",m({context:`Warning: Deleting a scheduled broadcast cancels its delivery immediately.
369
369
  Only draft and scheduled broadcasts can be deleted; sent broadcasts cannot.
370
370
 
371
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"broadcast","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,Ne,i);await z(r.id,!!t.yes,{confirmMessage:`Delete broadcast "${r.label}"?
371
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"broadcast","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Ne,i);await te(r.id,!!t.yes,{confirmMessage:`Delete broadcast "${r.label}"?
372
372
  ID: ${r.id}
373
- If scheduled, delivery will be cancelled.`,loading:"Deleting broadcast...",object:"broadcast",successMsg:"Broadcast deleted",sdkCall:n=>n.broadcasts.remove(r.id)},i)});var bl=new c("duplicate").description("Duplicate a broadcast").argument("[id]","Broadcast ID").addHelpText("after",d({context:`Creates a copy of an existing broadcast and returns the new broadcast ID.
373
+ If scheduled, delivery will be cancelled.`,loading:"Deleting broadcast...",object:"broadcast",successMsg:"Broadcast deleted",sdkCall:n=>n.broadcasts.remove(r.id)},i)});var dl=new d("duplicate").description("Duplicate a broadcast").argument("[id]","Broadcast ID").addHelpText("after",m({context:`Creates a copy of an existing broadcast and returns the new broadcast ID.
374
374
  The copy is a draft named after the original with " (copy)" appended, truncated to 70 characters.
375
- Segment, topic, from, subject, reply-to, preview text, and content are copied. Any broadcast can be duplicated, including sent ones.`,output:' {"object":"broadcast","id":"<new-broadcast-id>"}',errorCodes:["auth_error","create_error"],examples:["resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ne,i);await j({loading:"Duplicating broadcast...",sdkCall:n=>n.broadcasts.duplicate(r),onInteractive:n=>{console.log(`Broadcast duplicated: ${n.id}`)}},i)});var yl=new c("get").description("Retrieve full details for a broadcast including HTML body, status, and delivery times").argument("[id]","Broadcast ID").addHelpText("after",d({context:`Note: The list command returns summary objects without html/text/from/subject.
376
- Use this command to retrieve the full broadcast payload.`,output:' {"id":"...","object":"broadcast","name":"...","segment_id":"...","from":"...","subject":"...","status":"draft|queued|sent","created_at":"...","scheduled_at":null,"sent_at":null}',errorCodes:["auth_error","fetch_error"],examples:["resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ne,i);await I({loading:"Fetching broadcast...",sdkCall:n=>n.broadcasts.get(r),onInteractive:n=>{console.log(`Broadcast: ${n.id}`),console.log(` Status: ${jr(n.status)}`),console.log(` Name: ${n.name??"(untitled)"}`),console.log(` From: ${n.from??"\u2014"}`),console.log(` Subject: ${n.subject??"\u2014"}`),console.log(` Segment: ${n.segment_id??"\u2014"}`),n.preview_text&&console.log(` Preview: ${n.preview_text}`),n.topic_id&&console.log(` Topic: ${n.topic_id}`),console.log(` Created: ${n.created_at}`),n.scheduled_at&&console.log(` Scheduled: ${n.scheduled_at}`),n.sent_at&&console.log(` Sent: ${n.sent_at}`)}},i)});var Cl=new c("list").alias("ls").description('List broadcasts \u2014 returns summary objects (use "get <id>" for full details including html/text)').option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({context:`Note: List results include name, status, created_at, and id only.
377
- To retrieve full details (html, from, subject), use: resend broadcasts get <id>`,output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|queued|sent","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend broadcasts list","resend broadcasts list --limit 5","resend broadcasts list --after d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 10","resend broadcasts list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching broadcasts...",sdkCall:n=>n.broadcasts.list(r),onInteractive:n=>{console.log(el(n.data)),E(n,"broadcasts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var xl=new c("open").description("Open a broadcast or the broadcasts list in the Resend dashboard").argument("[id]","Broadcast ID \u2014 omit to open the broadcasts list").addHelpText("after",d({context:`Opens the Resend dashboard in your default browser.
375
+ Segment, topic, from, subject, reply-to, preview text, and content are copied. Any broadcast can be duplicated, including sent ones.`,output:' {"object":"broadcast","id":"<new-broadcast-id>"}',errorCodes:["auth_error","create_error"],examples:["resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i);await M({loading:"Duplicating broadcast...",sdkCall:n=>n.broadcasts.duplicate(r),onInteractive:n=>{console.log(`Broadcast duplicated: ${n.id}`)}},i)});var ul=new d("get").description("Retrieve full details for a broadcast including HTML body, status, and delivery times").argument("[id]","Broadcast ID").addHelpText("after",m({context:`Note: The list command returns summary objects without html/text/from/subject.
376
+ Use this command to retrieve the full broadcast payload.`,output:' {"id":"...","object":"broadcast","name":"...","segment_id":"...","from":"...","subject":"...","status":"draft|queued|sent","created_at":"...","scheduled_at":null,"sent_at":null}',errorCodes:["auth_error","fetch_error"],examples:["resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i);await $({loading:"Fetching broadcast...",sdkCall:n=>n.broadcasts.get(r),onInteractive:n=>{console.log(`Broadcast: ${n.id}`),console.log(` Status: ${Or(n.status)}`),console.log(` Name: ${n.name??"(untitled)"}`),console.log(` From: ${n.from??"\u2014"}`),console.log(` Subject: ${n.subject??"\u2014"}`),console.log(` Segment: ${n.segment_id??"\u2014"}`),n.preview_text&&console.log(` Preview: ${n.preview_text}`),n.topic_id&&console.log(` Topic: ${n.topic_id}`),console.log(` Created: ${n.created_at}`),n.scheduled_at&&console.log(` Scheduled: ${n.scheduled_at}`),n.sent_at&&console.log(` Sent: ${n.sent_at}`)}},i)});var ml=new d("list").alias("ls").description('List broadcasts \u2014 returns summary objects (use "get <id>" for full details including html/text)').option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",m({context:`Note: List results include name, status, created_at, and id only.
377
+ To retrieve full details (html, from, subject), use: resend broadcasts get <id>`,output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|queued|sent","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend broadcasts list","resend broadcasts list --limit 5","resend broadcasts list --after d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 10","resend broadcasts list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching broadcasts...",sdkCall:n=>n.broadcasts.list(r),onInteractive:n=>{console.log(La(n.data)),T(n,"broadcasts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var pl=new d("open").description("Open a broadcast or the broadcasts list in the Resend dashboard").argument("[id]","Broadcast ID \u2014 omit to open the broadcasts list").addHelpText("after",m({context:`Opens the Resend dashboard in your default browser.
378
378
  With an ID: opens that broadcast's page for viewing or editing.
379
- Without an ID: opens the broadcasts list.`,examples:["resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).action(async(e,t,o)=>{let i=e?fe.broadcast(e):fe.broadcasts,r=o.optsWithGlobals();await Te(i,r)});var wl=["sent","delivered","opened","clicked","bounced","complained","unsubscribed","suppressed"],vl=new c("recipients").description("List a broadcast's recipients for a given event type").argument("[id]","Broadcast ID").addOption(new M("--type <type>","Event type to filter recipients by").choices(wl)).option("--email <email>","Filter recipients whose email contains this value").addOption(new M("--bounce-type <type>","Filter by bounce classification \u2014 only meaningful when --type is bounced").choices(["permanent","transient","undetermined"])).option("--limit <n>","Maximum number of recipients to return (1-100)","20").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({context:`Non-interactive: --type is required.
379
+ Without an ID: opens the broadcasts list.`,examples:["resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).action(async(e,t,o)=>{let i=e?pe.broadcast(e):pe.broadcasts,r=o.optsWithGlobals();await De(i,r)});var fl=["sent","delivered","opened","clicked","bounced","complained","unsubscribed","suppressed"],gl=new d("recipients").description("List a broadcast's recipients for a given event type").argument("[id]","Broadcast ID").addOption(new L("--type <type>","Event type to filter recipients by").choices(fl)).option("--email <email>","Filter recipients whose email contains this value").addOption(new L("--bounce-type <type>","Filter by bounce classification \u2014 only meaningful when --type is bounced").choices(["permanent","transient","undetermined"])).option("--limit <n>","Maximum number of recipients to return (1-100)","20").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",m({context:`Non-interactive: --type is required.
380
380
  Note: responses are cached for up to 15 minutes, so requesting the same page
381
381
  again may return slightly stale data within that window.
382
- --bounce-type only has an effect when --type is bounced.`,output:' {"object":"list","has_more":false,"data":[{"id":"<cursor>","contact_id":"<id>|null","email":"...","count":3,"clicked_links":[{"url":"...","clicks":2}]}]}',errorCodes:["auth_error","missing_type","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type clicked --limit 50","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type bounced --bounce-type permanent","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type sent --email @example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ne,i),n=await bt(t.type,{message:"Event type",options:wl.map(l=>({value:l,label:l}))},{message:"Missing --type flag.",code:"missing_type"},i),s=O(t.limit,i),a=P(s,t.after,t.before,i);await k({loading:"Fetching recipients...",sdkCall:l=>l.broadcasts.recipients(r,{type:n,...a,...t.email&&{email:t.email},...t.bounceType&&{bounceType:t.bounceType}}),onInteractive:l=>{console.log(tl(l.data)),E(l,`broadcasts recipients ${r}`,{limit:s,before:t.before,apiKey:i.apiKey,profile:i.profile,extraFlags:[`--type ${n}`,t.email&&`--email ${t.email}`,t.bounceType&&`--bounce-type ${t.bounceType}`].filter(Boolean).join(" ")})}},i)});var Ul=new c("send").description("Send a draft broadcast (API-created drafts only \u2014 dashboard broadcasts cannot be sent via API)").argument("[id]","Broadcast ID").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').addHelpText("after",d({context:`Note: Only broadcasts created via the API can be sent via this command.
382
+ --bounce-type only has an effect when --type is bounced.`,output:' {"object":"list","has_more":false,"data":[{"id":"<cursor>","contact_id":"<id>|null","email":"...","count":3,"clicked_links":[{"url":"...","clicks":2}]}]}',errorCodes:["auth_error","missing_type","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type clicked --limit 50","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type bounced --bounce-type permanent","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type sent --email @example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i),n=await At(t.type,{message:"Event type",options:fl.map(l=>({value:l,label:l}))},{message:"Missing --type flag.",code:"missing_type"},i),s=O(t.limit,i),a=G(s,t.after,t.before,i);await F({loading:"Fetching recipients...",sdkCall:l=>l.broadcasts.recipients(r,{type:n,...a,...t.email&&{email:t.email},...t.bounceType&&{bounceType:t.bounceType}}),onInteractive:l=>{console.log(Wa(l.data)),T(l,`broadcasts recipients ${r}`,{limit:s,before:t.before,apiKey:i.apiKey,profile:i.profile,extraFlags:[`--type ${n}`,t.email&&`--email ${t.email}`,t.bounceType&&`--bounce-type ${t.bounceType}`].filter(Boolean).join(" ")})}},i)});var hl=new d("send").description("Send a draft broadcast (API-created drafts only \u2014 dashboard broadcasts cannot be sent via API)").argument("[id]","Broadcast ID").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').addHelpText("after",m({context:`Note: Only broadcasts created via the API can be sent via this command.
383
383
  Broadcasts created in the Resend dashboard cannot be sent programmatically.
384
384
 
385
385
  Scheduling:
386
386
  --scheduled-at accepts ISO 8601 (e.g. 2026-08-05T11:52:01Z) or
387
- natural language (e.g. "in 1 hour", "tomorrow at 9am ET").`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","send_error"],examples:["resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"','resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "2026-08-05T11:52:01Z" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Xa,i);await R({loading:t.scheduledAt?"Scheduling broadcast...":"Sending broadcast...",sdkCall:n=>n.broadcasts.send(r,{...t.scheduledAt&&{scheduledAt:t.scheduledAt}}),errorCode:"send_error",successMsg:t.scheduledAt?"Broadcast scheduled":"Broadcast sent",permission:"sending_access"},i)});var Sl=new c("update").description("Update a draft broadcast \u2014 only drafts can be updated; sent broadcasts are immutable").argument("[id]","Broadcast ID").option("--from <address>","Update sender address").option("--subject <subject>","Update subject").option("--html <html>","Update HTML body (supports {{{FIRST_NAME|fallback}}} variable interpolation)").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Update internal label").addHelpText("after",d({context:`Note: Only draft broadcasts can be updated.
387
+ natural language (e.g. "in 1 hour", "tomorrow at 9am ET").`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","send_error"],examples:["resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"','resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "2026-08-05T11:52:01Z" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ma,i);await B({loading:t.scheduledAt?"Scheduling broadcast...":"Sending broadcast...",sdkCall:n=>n.broadcasts.send(r,{...t.scheduledAt&&{scheduledAt:t.scheduledAt}}),errorCode:"send_error",successMsg:t.scheduledAt?"Broadcast scheduled":"Broadcast sent",permission:"sending_access"},i)});var Al=new d("update").description("Update a draft broadcast \u2014 only drafts can be updated; sent broadcasts are immutable").argument("[id]","Broadcast ID").option("--from <address>","Update sender address").option("--subject <subject>","Update subject").option("--html <html>","Update HTML body (supports {{{FIRST_NAME|fallback}}} variable interpolation)").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Update internal label").addHelpText("after",m({context:`Note: Only draft broadcasts can be updated.
388
388
  If the broadcast is already sent or sending, the API will return an error.
389
389
 
390
390
  Variable interpolation:
391
391
  HTML bodies support triple-brace syntax for contact properties.
392
- Example: {{{FIRST_NAME|Friend}}} \u2014 uses FIRST_NAME or falls back to "Friend".`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","no_changes","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","update_error"],examples:['resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file ./new-email.html",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --name "Q1 Newsletter" --from "onboarding@resend.dev" --json','echo "<p>New content</p>" | resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file -']})).action(async(e,t,o)=>{let i=o.optsWithGlobals();t.from==null&&t.subject==null&&t.html==null&&t.htmlFile==null&&t.text==null&&t.textFile==null&&t.reactEmail==null&&t.name==null&&h({message:"Provide at least one option to update: --from, --subject, --html, --html-file, --text, --text-file, --react-email, or --name.",code:"no_changes"},{json:i.json}),t.htmlFile==="-"&&t.textFile==="-"&&h({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:i.json}),t.reactEmail!=null&&(t.html!=null||t.htmlFile!=null)&&h({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:i.json}),t.html!=null&&t.htmlFile!=null&&h({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:i.json}),t.text!=null&&t.textFile!=null&&h({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:i.json});let r=await g(e,Ne,i),n=t.reactEmail!=null?await Me(t.reactEmail,i):t.htmlFile!=null?ie(t.htmlFile,i):t.html,s=t.textFile!=null?ie(t.textFile,i):t.text;await R({loading:"Updating broadcast...",sdkCall:a=>a.broadcasts.update(r,{...t.from!=null&&{from:t.from},...t.subject!=null&&{subject:t.subject},...n!=null&&{html:n},...s!=null&&{text:s},...t.name!=null&&{name:t.name}}),errorCode:"update_error",successMsg:`Broadcast updated: ${r}`},i)});var Kl=new c("broadcasts").description("Manage broadcasts").addHelpText("after",d({context:`Lifecycle:
392
+ Example: {{{FIRST_NAME|Friend}}} \u2014 uses FIRST_NAME or falls back to "Friend".`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","no_changes","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","update_error"],examples:['resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file ./new-email.html",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --name "Q1 Newsletter" --from "onboarding@resend.dev" --json','echo "<p>New content</p>" | resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file -']})).action(async(e,t,o)=>{let i=o.optsWithGlobals();t.from==null&&t.subject==null&&t.html==null&&t.htmlFile==null&&t.text==null&&t.textFile==null&&t.reactEmail==null&&t.name==null&&g({message:"Provide at least one option to update: --from, --subject, --html, --html-file, --text, --text-file, --react-email, or --name.",code:"no_changes"},{json:i.json}),t.htmlFile==="-"&&t.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:i.json}),t.reactEmail!=null&&(t.html!=null||t.htmlFile!=null)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:i.json}),t.html!=null&&t.htmlFile!=null&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:i.json}),t.text!=null&&t.textFile!=null&&g({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:i.json});let r=await C(e,Ne,i),n=t.reactEmail!=null?await Me(t.reactEmail,i):t.htmlFile!=null?oe(t.htmlFile,i):t.html,s=t.textFile!=null?oe(t.textFile,i):t.text;await B({loading:"Updating broadcast...",sdkCall:a=>a.broadcasts.update(r,{...t.from!=null&&{from:t.from},...t.subject!=null&&{subject:t.subject},...n!=null&&{html:n},...s!=null&&{text:s},...t.name!=null&&{name:t.name}}),errorCode:"update_error",successMsg:`Broadcast updated: ${r}`},i)});var bl=new d("broadcasts").description("Manage broadcasts").addHelpText("after",m({context:`Lifecycle:
393
393
  Broadcasts follow a draft \u2192 send flow:
394
394
  1. create \u2014 creates a draft (or sends immediately with --send)
395
395
  2. send \u2014 sends an API-created draft (dashboard broadcasts cannot be sent via API)
@@ -403,7 +403,7 @@ Template variables:
403
403
  Example: {{{FIRST_NAME|Friend}}} \u2014 uses FIRST_NAME or falls back to "Friend".
404
404
 
405
405
  Scheduling:
406
- --scheduled-at accepts ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET".`,examples:["resend broadcasts list",'resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hi {{{FIRST_NAME|there}}}</p>"',"resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"',"resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).addCommand(gl).addCommand(xl).addCommand(Ul).addCommand(yl).addCommand(Cl,{isDefault:!0}).addCommand(vl).addCommand(Sl).addCommand(il).addCommand(bl).addCommand(Al).addCommand(rl);var Tl=require("node:fs"),xo=require("node:path");X();var kl=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","British Indian Ocean Territory","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos Islands","Colombia","Comoros","Cook Islands","Costa Rica","Croatia","Cuba","Cura\xE7ao","Cyprus","Czech Republic","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Guiana","French Polynesia","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Ivory Coast","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn","Poland","Portugal","Puerto Rico","Qatar","Republic of the Congo","R\xE9union","Romania","Russia","Rwanda","Saint Barth\xE9lemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","S\xE3o Tom\xE9 and Pr\xEDncipe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","U.S. Virgin Islands","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"];var _l={resource:"job posting",resourcePlural:"job postings",permission:"sending_access",fetchItems:async e=>{let{data:t,error:o}=await e.get("/careers");return{data:t?{data:t.data,has_more:!1}:null,error:o}},display:e=>({label:e.title,hint:e.location??e.id})};function Fl(e){let t=e.map(o=>[o.title,o.location??"",o.department??"",o.id]);return _(["Title","Location","Department","ID"],t,"(no open positions)")}var Gh=10*1024*1024,Hh={".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".txt":"text/plain"},Jt="__skip__",Ol=new c("apply").description("Apply to an open position at Resend").argument("[id]","Job posting ID (from `resend careers list`)").option("--name <name>","Your full name").option("--email <email>","Your email address").option("--resume <path>","Path to your resume file (PDF, max 10MB)").option("--field <path=value...>","Answer a job-specific question by field path (repeatable: --field <path>=<answer>). Field paths are shown on the job posting page at resend.com/careers").option("--yes","Skip the confirmation prompt in interactive mode").addHelpText("after",d({context:`Interactive: run without flags to pick a position and answer each application
406
+ --scheduled-at accepts ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET".`,examples:["resend broadcasts list",'resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hi {{{FIRST_NAME|there}}}</p>"',"resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"',"resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).addCommand(ll).addCommand(pl).addCommand(hl).addCommand(ul).addCommand(ml,{isDefault:!0}).addCommand(gl).addCommand(Al).addCommand(Va).addCommand(dl).addCommand(cl).addCommand(za);var vl=require("node:fs"),Co=require("node:path");V();var yl=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","British Indian Ocean Territory","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos Islands","Colombia","Comoros","Cook Islands","Costa Rica","Croatia","Cuba","Cura\xE7ao","Cyprus","Czech Republic","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Guiana","French Polynesia","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Ivory Coast","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn","Poland","Portugal","Puerto Rico","Qatar","Republic of the Congo","R\xE9union","Romania","Russia","Rwanda","Saint Barth\xE9lemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","S\xE3o Tom\xE9 and Pr\xEDncipe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","U.S. Virgin Islands","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"];var Cl={resource:"job posting",resourcePlural:"job postings",permission:"sending_access",fetchItems:async e=>{let{data:t,error:o}=await e.get("/careers");return{data:t?{data:t.data,has_more:!1}:null,error:o}},display:e=>({label:e.title,hint:e.location??e.id})};function wl(e){let t=e.map(o=>[o.title,o.location??"",o.department??"",o.id]);return _(["Title","Location","Department","ID"],t,"(no open positions)")}var Yf=10*1024*1024,Xf={".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".txt":"text/plain"},Wt="__skip__",Kl=new d("apply").description("Apply to an open position at Resend").argument("[id]","Job posting ID (from `resend careers list`)").option("--name <name>","Your full name").option("--email <email>","Your email address").option("--resume <path>","Path to your resume file (PDF, max 10MB)").option("--field <path=value...>","Answer a job-specific question by field path (repeatable: --field <path>=<answer>). Field paths are shown on the job posting page at resend.com/careers").option("--yes","Skip the confirmation prompt in interactive mode").addHelpText("after",m({context:`Interactive: run without flags to pick a position and answer each application
407
407
  question in a guided form. Flags pre-fill their matching questions.
408
408
 
409
409
  Non-interactive: --name, --email, and --resume are required, plus the job posting
@@ -411,27 +411,27 @@ ID argument. Answer job-specific questions with --field <path>=<value>, where
411
411
  <path> is shown on the job posting page at resend.com/careers (custom questions
412
412
  use UUID paths).
413
413
 
414
- The resume is uploaded as multipart form data (max 10MB, PDF recommended).`,output:' {"success":true}',errorCodes:["auth_error","missing_id","list_error","missing_name","missing_email","missing_resume","invalid_field","file_read_error","invalid_resume","fetch_error","apply_error"],examples:["resend careers apply",`resend careers apply 053bde8f-294e-4cce-9d62-2301282120a2 --name "Ada Lovelace" --email ada@example.com --resume ./resume.pdf --field 'd5cef330-d154-4f3a-8c5a-092986c61fe3=I love email infrastructure.'`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=new Map;for(let[A,b]of Qh(t.field,i))r.set(A,b);t.name!==void 0&&r.set("name",t.name),t.email!==void 0&&r.set("email",t.email);let n=w()&&!i.json,s=await J(e,_l,i),a=s.id,l=t.resume,u=s.label;if(n){let A=await ee(i,{permission:"sending_access"}),b=await ce("Fetching the application form...",()=>A.get(`/careers/${a}`),"fetch_error",i,{retryTransient:!0});u=b.title,Ho(b.location?`Apply to ${b.title} - ${b.location}`:`Apply to ${b.title}`);for(let x of b.fields){if(x.path==="resume"){l=l??await Dl(x.title);continue}if(x.type==="File"){te.warn(`Skipping "${x.title}": only the resume file can be uploaded here. Apply on the careers page to include it.`);continue}if(r.has(x.path))continue;let v=await Nh(x);v!==void 0&&r.set(x.path,v)}r.has("name")||r.set("name",await Rl("Name")),r.has("email")||r.set("email",await Rl("Email")),l=l??await Dl("Resume"),t.yes||await Mh(b,r,l)}else r.get("name")||h({message:"Missing --name flag.",code:"missing_name"},{json:i.json}),r.get("email")||h({message:"Missing --email flag.",code:"missing_email"},{json:i.json}),l||h({message:"Missing --resume flag.",code:"missing_resume"},{json:i.json});let m=Lh(l,i),p=new FormData;for(let[A,b]of r)p.append(A,b);p.append("resume",m.blob,m.filename);let f=await ee(i,{permission:"sending_access"}),y=await ce("Submitting application...",()=>f.fetchRequest(`/careers/${a}`,{method:"POST",headers:{Authorization:`Bearer ${f.key}`,"User-Agent":process.env.RESEND_USER_AGENT??""},body:p}),"apply_error",i);!i.json&&w()?Bt(`Application submitted for ${u}. Thanks for applying to Resend!`):N(y,{json:i.json})});function Qh(e,t){let o=new Map;for(let i of e??[]){let r=i.indexOf("=");r<=0&&h({message:`Invalid --field value "${i}". Use --field <path>=<value>.`,code:"invalid_field"},{json:t.json}),o.set(i.slice(0,r),i.slice(r+1))}return o}async function Nh(e){let t=e.required?e.title:`${e.title} (optional)`;if(e.selectable_values&&e.selectable_values.length>0){let r=[...e.required?[]:[{value:Jt,label:"Skip"}],...e.selectable_values.map(s=>({value:s.value,label:s.label}))],n=await ne({message:t,options:r});return F(n)&&D("Application cancelled."),n===Jt?void 0:n}if(e.type==="Boolean"){let r=[...e.required?[]:[{value:Jt,label:"Skip"}],{value:"true",label:"Yes"},{value:"false",label:"No"}],n=await ne({message:t,options:r});return F(n)&&D("Application cancelled."),n===Jt?void 0:n}if(e.type==="Location"){let r=[...e.required?[]:[{value:Jt,label:"Skip"}],...kl.map(s=>({value:s,label:s}))],n=await qn({message:t,options:r,maxItems:8,placeholder:"Start typing a country..."});return F(n)&&D("Application cancelled."),n===Jt?void 0:n}let o=await Z({message:t,...e.description?{placeholder:e.description}:{},validate:r=>{let n=r?.trim()??"";if(e.required&&n.length===0)return`${e.title} is required`;if(n&&e.type==="Email"&&!n.includes("@"))return"Enter a valid email address";if(n&&e.type==="Number"&&Number.isNaN(Number(n)))return"Enter a number"}});F(o)&&D("Application cancelled.");let i=o?.trim()??"";return i.length>0?i:void 0}async function Rl(e){let t=await Z({message:e,validate:o=>!o||o.trim().length===0?`${e} is required`:void 0});return F(t)&&D("Application cancelled."),t.trim()}async function Dl(e){let t=await Z({message:`${e} (path to a local file, PDF recommended)`,placeholder:"./resume.pdf",validate:o=>!o||o.trim().length===0?"A resume file is required":void 0});return F(t)&&D("Application cancelled."),t.trim()}async function Mh(e,t,o){let i=new Map(e.fields.map(s=>[s.path,s])),r=[...t.entries()].map(([s,a])=>{let l=i.get(s),u=l?.title??s,m=l?.type==="Boolean"?a==="true"?"Yes":a==="false"?"No":a:a;return`${u}: ${qh(m,80)}`});r.push(`Resume: ${(0,xo.basename)(o)}`),Vn(r.join(`
415
- `),"Application summary");let n=await Ze({message:"Submit this application?"});(F(n)||!n)&&D("Application not submitted.")}function qh(e,t){let o=e.replace(/\s+/g," ").trim();return o.length>t?`${o.slice(0,t-3)}...`:o}function Lh(e,t){let o;try{o=(0,Tl.readFileSync)(e)}catch{h({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}o.length>Gh&&h({message:"Resume file is too large. Maximum size is 10MB.",code:"invalid_resume"},{json:t.json});let i=Hh[(0,xo.extname)(e).toLowerCase()]??"application/octet-stream";return{blob:new Blob([new Uint8Array(o)],{type:i}),filename:(0,xo.basename)(e)}}var El=new c("list").description("List open positions at Resend").addHelpText("after",d({context:"Lists open positions, fetched live from our applicant tracking system.",output:' {"object":"list","data":[{"id":"<id>","title":"<title>","department":"<department>","team":"<team>","location":"<location>","employment_type":"<type>","workplace_type":"<type>","published_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend careers","resend careers list --json","resend careers apply <id>"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await k({loading:"Fetching open positions...",sdkCall:i=>i.get("/careers"),permission:"sending_access",onInteractive:i=>{console.log(Fl(i.data)),i.data.length>0&&console.log(`
416
- Apply with: resend careers apply <id>`)}},o)});var Bl=new c("careers").description("Browse open positions at Resend and apply from your terminal").addHelpText("after",d({context:"Flow: `resend careers` lists open positions, and `resend careers apply`\nwalks you through the application (or takes flags for scripted submissions).\n\nAny Resend API key works \u2014 applications are not tied to your team.",examples:["resend careers","resend careers apply"]})).addCommand(Ol).addCommand(El,{isDefault:!0});function wo(e){let t=[];for(let i of e.commands)i._hidden||t.push(wo(i));let o=[];for(let i of e.options)i.hidden||o.push({long:i.long,short:i.short,description:i.description,takesValue:i.required||i.optional,choices:i.argChoices});return{name:e.name(),aliases:e.aliases(),description:e.description(),subcommands:t,options:o}}function vo(e,t,o){let i=t?`${t} ${e.name}`:e.name,r=[],n=[];for(let a of e.subcommands){n.push({name:a.name,description:a.description});for(let l of a.aliases)n.push({name:l,description:a.description})}let s=[...e.options,...o];r.push({path:i,subcommands:n,options:s});for(let a of e.subcommands)r.push(...vo(a,i,o));return r}function $r(e){let t=new Set;function o(i){for(let r of i.options)r.takesValue&&(r.long&&t.add(r.long),r.short&&t.add(r.short));for(let r of i.subcommands)o(r)}return o(e),[...t]}function jl(e){let t=vo(e,"",[]),o=[],i=e.name;o.push(`# bash completion for ${i}`),o.push(`# Generated by: ${i} completion bash`),o.push(""),o.push(`_${i}_completions() {`),o.push(" local cur prev words cword"),o.push(" if type _init_completion &>/dev/null; then _init_completion || return; else"),o.push(' cur="${COMP_WORDS[COMP_CWORD]}"'),o.push(' prev="${COMP_WORDS[COMP_CWORD-1]}"'),o.push(' words=("${COMP_WORDS[@]}")'),o.push(" cword=$COMP_CWORD"),o.push(" fi"),o.push("");let n=$r(e).join("|");o.push(' local cmd_path=""'),o.push(" local i=1"),o.push(" while [ $i -lt $cword ]; do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) i=$((i + 1)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" i=$((i + 1))"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(b=>b.choices&&b.long),u=s.options.map(b=>b.long).filter(Boolean).join(" "),m=s.subcommands.map(b=>b.name).join(" "),p=l.length>0,f=u.length>0,y=m.length>0;if(!p&&!f&&!y)continue;o.push(` "${a}")`);let A=s.options.filter(b=>b.takesValue&&!b.choices);if(p||A.length>0){o.push(' case "$prev" in');for(let b of l)o.push(` ${b.long}) COMPREPLY=($(compgen -W "${b.choices?.join(" ")}" -- "$cur")); return ;;`);if(A.length>0){let b=A.flatMap(x=>[x.long,x.short].filter(Boolean)).join("|");o.push(` ${b}) return ;;`)}o.push(" esac")}f&&(o.push(' if [[ "$cur" == -* ]]; then'),o.push(` COMPREPLY=($(compgen -W "${u}" -- "$cur")); return`),o.push(" fi")),y&&o.push(` COMPREPLY=($(compgen -W "${m}" -- "$cur"))`),o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`complete -o default -F _${i}_completions ${i}`),o.join(`
417
- `)}function Pl(e){let t=vo(e,"",[]),o=[],i=e.name;o.push(`#compdef ${i}`),o.push(`# zsh completion for ${i}`),o.push(`# Generated by: ${i} completion zsh`),o.push(""),o.push(`_${i}() {`),o.push(" local cur prev cmd_path"),o.push(' cur="${words[$CURRENT]}"'),o.push(' prev="${words[$CURRENT-1]}"'),o.push("");let n=$r(e).join("|");o.push(' cmd_path=""'),o.push(" for ((i=2; i < CURRENT; i++)); do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) ((i++)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(f=>f.choices&&f.long),u=s.options.filter(f=>f.long),m=s.subcommands.length>0;o.push(` "${a}")`);let p=s.options.filter(f=>f.takesValue&&!f.choices);if(l.length>0||p.length>0){o.push(' case "$prev" in');for(let f of l)o.push(` ${f.long}) compadd -- ${f.choices?.join(" ")}; return ;;`);if(p.length>0){let f=p.flatMap(y=>[y.long,y.short].filter(Boolean)).join("|");o.push(` ${f}) _files; return ;;`)}o.push(" esac")}if(u.length>0){o.push(' if [[ "$cur" == -* ]]; then');let f=u.map(y=>`"${y.long}:${Il(y.description)}"`).join(" ");o.push(` local -a opts=(${f}); _describe 'option' opts; return`),o.push(" fi")}if(m){let f=s.subcommands.map(y=>`"${y.name}:${Il(y.description)}"`).join(" ");o.push(` local -a cmds=(${f}); _describe 'command' cmds`)}else o.push(" _files");o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`compdef _${i} ${i}`),o.join(`
418
- `)}function $l(e){let t=e.name,o=vo(e,"",[]),i=[];i.push(`# fish completion for ${t}`),i.push(`# Generated by: ${t} completion fish`),i.push("");let r=o[0];for(let n of r.subcommands)i.push(`complete -c ${t} -n "__fish_use_subcommand" -a "${n.name}" -d "${Ai(n.description)}"`);for(let n of e.options)if(n.long){let s=n.long.replace("--",""),a=`complete -c ${t} -l "${s}"`;n.short&&(a+=` -s "${n.short.replace("-","")}"`),n.takesValue&&(a+=" -r"),n.choices&&(a+=` -a "${n.choices.join(" ")}"`),a+=` -d "${Ai(n.description)}"`,i.push(a)}for(let n of o.slice(1)){let s=n.path.split(" ").slice(1),l=`__fish_seen_subcommand_from ${s[s.length-1]}`;for(let u of n.subcommands)i.push(`complete -c ${t} -n "${l}" -a "${u.name}" -d "${Ai(u.description)}"`);for(let u of n.options)if(u.long){let m=u.long.replace("--",""),p=`complete -c ${t} -n "${l}" -l "${m}"`;u.short&&(p+=` -s "${u.short.replace("-","")}"`),u.takesValue&&(p+=" -r"),u.choices&&(p+=` -a "${u.choices.join(" ")}"`),p+=` -d "${Ai(u.description)}"`,i.push(p)}}return i.join(`
419
- `)}function Il(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/:/g,"\\:")}function Ai(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Gl(e){let t=e.name,o=vo(e,"",[]),i=[];i.push(`# PowerShell completion for ${t}`),i.push(`# Generated by: ${t} completion powershell`),i.push(""),i.push(`Register-ArgumentCompleter -Native -CommandName ${t} -ScriptBlock {`),i.push(" param($wordToComplete, $commandAst, $cursorPosition)"),i.push(""),i.push(' $words = $commandAst.ToString().Substring(0, $cursorPosition) -split "\\s+"');let n=$r(e).map(s=>`"${s}"`).join(", ");i.push(" $cmdPath = @()"),i.push(` $valueFlags = @(${n})`),i.push(" for ($i = 1; $i -lt $words.Count - 1; $i++) {"),i.push(" if ($valueFlags -contains $words[$i]) { $i++; continue }"),i.push(' if ($words[$i] -notlike "-*") { $cmdPath += $words[$i] }'),i.push(" }"),i.push(' $joined = $cmdPath -join " "'),i.push(" $cur = $words[-1]"),i.push(' if ($words.Count -eq 1) { $cur = "" }'),i.push(""),i.push(' $prev = if ($words.Count -ge 2) { $words[-2] } else { "" }'),i.push(""),i.push(" switch ($joined) {");for(let s of o){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(b=>b.choices&&b.long),u=s.options.map(b=>b.long).filter(Boolean).map(b=>`"${b}"`).join(", "),m=s.subcommands.map(b=>`"${b.name}"`).join(", "),p=l.length>0,f=u.length>0,y=m.length>0;if(!p&&!f&&!y)continue;i.push(` "${a}" {`);let A=s.options.filter(b=>b.takesValue&&!b.choices);if(p||A.length>0){i.push(" switch ($prev) {");for(let b of l){let x=b.choices?.map(v=>`"${v}"`).join(", ");i.push(` "${b.long}" { @(${x}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return }`)}if(A.length>0){let b=A.flatMap(x=>[x.long,x.short].filter(Boolean)).map(x=>`"${x}"`).join(", ");i.push(` { $_ -in @(${b}) } { return }`)}i.push(" }")}f&&(i.push(' if ($cur -like "-*") {'),i.push(` @(${u}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return`),i.push(" }")),y&&i.push(` @(${m}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }`),i.push(" }")}return i.push(" }"),i.push("}"),i.join(`
420
- `)}var Hl=new c("commands").description("Print the full command tree as JSON (for agents and tooling)").addHelpText("after",d({context:`Outputs every subcommand, option, and description from the CLI definition.
421
- In machine mode (piped, CI, or --json), the tree is JSON you can feed to agents or scripts.`,examples:["resend commands","resend commands --json",'resend commands | jq ".subcommands[].name"']})).action((e,t)=>{let o=t.parent;if(!o)throw new Error("commands must be registered on the root program");let i=t.optsWithGlobals(),r=wo(o);N(r,{json:i.json})});var he=require("node:fs"),Ct=require("node:os"),$e=require("node:path");X();var Ml=["bash","zsh","fish","powershell"],bi="# resend shell completion";function Wh(){let e=process.env.SHELL;if(e){let t=(0,$e.basename)(e);if(t==="bash")return"bash";if(t==="zsh")return"zsh";if(t==="fish")return"fish"}if(process.env.PSModulePath)return"powershell"}async function Jh(e){if(e)return e;let t=Wh();if(t)return t;w()||(process.stderr.write(`error: could not detect shell. Pass the shell name explicitly.
422
- `),process.exit(1));let o=await ne({message:"Which shell do you use?",options:Ml.map(i=>({value:i,label:i}))});return F(o)&&D("Cancelled."),o}function Ql(e){switch(e){case"bash":return process.platform==="darwin"?(0,$e.join)((0,Ct.homedir)(),".bash_profile"):(0,$e.join)((0,Ct.homedir)(),".bashrc");case"zsh":return(0,$e.join)((0,Ct.homedir)(),".zshrc");case"powershell":return process.platform==="win32"?(0,$e.join)((0,Ct.homedir)(),"Documents","PowerShell","Microsoft.PowerShell_profile.ps1"):(0,$e.join)((0,Ct.homedir)(),".config","powershell","Microsoft.PowerShell_profile.ps1")}}function Vh(e,t){switch(e){case"bash":return jl(t);case"zsh":return Pl(t);case"fish":return $l(t);case"powershell":return Gl(t)}}function Nl(e,t,o){(0,he.existsSync)(e)||(0,he.mkdirSync)(e,{recursive:!0});let i=(0,$e.join)(e,t);return(0,he.writeFileSync)(i,`${o}
423
- `),i}function zh(e,t){switch(e){case"zsh":{let o=(0,$e.join)((0,Ct.homedir)(),".zsh","completions"),i=Nl(o,"_resend",t);te.success(`Completions written to ${i}`);let r=Ql(e),n=!0;if((0,he.existsSync)(r)&&(0,he.readFileSync)(r,"utf8").includes(o)&&(n=!1),n){let s=`${bi}
414
+ The resume is uploaded as multipart form data (max 10MB, PDF recommended).`,output:' {"success":true}',errorCodes:["auth_error","missing_id","list_error","missing_name","missing_email","missing_resume","invalid_field","file_read_error","invalid_resume","fetch_error","apply_error"],examples:["resend careers apply",`resend careers apply 053bde8f-294e-4cce-9d62-2301282120a2 --name "Ada Lovelace" --email ada@example.com --resume ./resume.pdf --field 'd5cef330-d154-4f3a-8c5a-092986c61fe3=I love email infrastructure.'`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=new Map;for(let[h,A]of Zf(t.field,i))r.set(h,A);t.name!==void 0&&r.set("name",t.name),t.email!==void 0&&r.set("email",t.email);let n=U()&&!i.json,s=await ee(e,Cl,i),a=s.id,l=t.resume,c=s.label;if(n){let h=await Y(i,{permission:"sending_access"}),A=await ae("Fetching the application form...",()=>h.get(`/careers/${a}`),"fetch_error",i,{retryTransient:!0});c=A.title,Go(A.location?`Apply to ${A.title} - ${A.location}`:`Apply to ${A.title}`);for(let w of A.fields){if(w.path==="resume"){l=l??await Sl(w.title);continue}if(w.type==="File"){X.warn(`Skipping "${w.title}": only the resume file can be uploaded here. Apply on the careers page to include it.`);continue}if(r.has(w.path))continue;let S=await eg(w);S!==void 0&&r.set(w.path,S)}r.has("name")||r.set("name",await Ul("Name")),r.has("email")||r.set("email",await Ul("Email")),l=l??await Sl("Resume"),t.yes||await tg(A,r,l)}else r.get("name")||g({message:"Missing --name flag.",code:"missing_name"},{json:i.json}),r.get("email")||g({message:"Missing --email flag.",code:"missing_email"},{json:i.json}),l||g({message:"Missing --resume flag.",code:"missing_resume"},{json:i.json});let u=ig(l,i),p=new FormData;for(let[h,A]of r)p.append(h,A);p.append("resume",u.blob,u.filename);let f=await Y(i,{permission:"sending_access"}),b=await ae("Submitting application...",()=>f.fetchRequest(`/careers/${a}`,{method:"POST",headers:{Authorization:`Bearer ${f.key}`,"User-Agent":process.env.RESEND_USER_AGENT??""},body:p}),"apply_error",i);!i.json&&U()?Ot(`Application submitted for ${c}. Thanks for applying to Resend!`):Q(b,{json:i.json})});function Zf(e,t){let o=new Map;for(let i of e??[]){let r=i.indexOf("=");r<=0&&g({message:`Invalid --field value "${i}". Use --field <path>=<value>.`,code:"invalid_field"},{json:t.json}),o.set(i.slice(0,r),i.slice(r+1))}return o}async function eg(e){let t=e.required?e.title:`${e.title} (optional)`;if(e.selectable_values&&e.selectable_values.length>0){let r=[...e.required?[]:[{value:Wt,label:"Skip"}],...e.selectable_values.map(s=>({value:s.value,label:s.label}))],n=await re({message:t,options:r});return k(n)&&R("Application cancelled."),n===Wt?void 0:n}if(e.type==="Boolean"){let r=[...e.required?[]:[{value:Wt,label:"Skip"}],{value:"true",label:"Yes"},{value:"false",label:"No"}],n=await re({message:t,options:r});return k(n)&&R("Application cancelled."),n===Wt?void 0:n}if(e.type==="Location"){let r=[...e.required?[]:[{value:Wt,label:"Skip"}],...yl.map(s=>({value:s,label:s}))],n=await Gn({message:t,options:r,maxItems:8,placeholder:"Start typing a country..."});return k(n)&&R("Application cancelled."),n===Wt?void 0:n}let o=await z({message:t,...e.description?{placeholder:e.description}:{},validate:r=>{let n=r?.trim()??"";if(e.required&&n.length===0)return`${e.title} is required`;if(n&&e.type==="Email"&&!n.includes("@"))return"Enter a valid email address";if(n&&e.type==="Number"&&Number.isNaN(Number(n)))return"Enter a number"}});k(o)&&R("Application cancelled.");let i=o?.trim()??"";return i.length>0?i:void 0}async function Ul(e){let t=await z({message:e,validate:o=>!o||o.trim().length===0?`${e} is required`:void 0});return k(t)&&R("Application cancelled."),t.trim()}async function Sl(e){let t=await z({message:`${e} (path to a local file, PDF recommended)`,placeholder:"./resume.pdf",validate:o=>!o||o.trim().length===0?"A resume file is required":void 0});return k(t)&&R("Application cancelled."),t.trim()}async function tg(e,t,o){let i=new Map(e.fields.map(s=>[s.path,s])),r=[...t.entries()].map(([s,a])=>{let l=i.get(s),c=l?.title??s,u=l?.type==="Boolean"?a==="true"?"Yes":a==="false"?"No":a:a;return`${c}: ${og(u,80)}`});r.push(`Resume: ${(0,Co.basename)(o)}`),Mn(r.join(`
415
+ `),"Application summary");let n=await Xe({message:"Submit this application?"});(k(n)||!n)&&R("Application not submitted.")}function og(e,t){let o=e.replace(/\s+/g," ").trim();return o.length>t?`${o.slice(0,t-3)}...`:o}function ig(e,t){let o;try{o=(0,vl.readFileSync)(e)}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}o.length>Yf&&g({message:"Resume file is too large. Maximum size is 10MB.",code:"invalid_resume"},{json:t.json});let i=Xf[(0,Co.extname)(e).toLowerCase()]??"application/octet-stream";return{blob:new Blob([new Uint8Array(o)],{type:i}),filename:(0,Co.basename)(e)}}var xl=new d("list").description("List open positions at Resend").addHelpText("after",m({context:"Lists open positions, fetched live from our applicant tracking system.",output:' {"object":"list","data":[{"id":"<id>","title":"<title>","department":"<department>","team":"<team>","location":"<location>","employment_type":"<type>","workplace_type":"<type>","published_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend careers","resend careers list --json","resend careers apply <id>"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await F({loading:"Fetching open positions...",sdkCall:i=>i.get("/careers"),permission:"sending_access",onInteractive:i=>{console.log(wl(i.data)),i.data.length>0&&console.log(`
416
+ Apply with: resend careers apply <id>`)}},o)});var kl=new d("careers").description("Browse open positions at Resend and apply from your terminal").addHelpText("after",m({context:"Flow: `resend careers` lists open positions, and `resend careers apply`\nwalks you through the application (or takes flags for scripted submissions).\n\nAny Resend API key works \u2014 applications are not tied to your team.",examples:["resend careers","resend careers apply"]})).addCommand(Kl).addCommand(xl,{isDefault:!0});function wo(e){let t=[];for(let i of e.commands)i._hidden||t.push(wo(i));let o=[];for(let i of e.options)i.hidden||o.push({long:i.long,short:i.short,description:i.description,takesValue:i.required||i.optional,choices:i.argChoices});return{name:e.name(),aliases:e.aliases(),description:e.description(),subcommands:t,options:o}}function Uo(e,t,o){let i=t?`${t} ${e.name}`:e.name,r=[],n=[];for(let a of e.subcommands){n.push({name:a.name,description:a.description});for(let l of a.aliases)n.push({name:l,description:a.description})}let s=[...e.options,...o];r.push({path:i,subcommands:n,options:s});for(let a of e.subcommands)r.push(...Uo(a,i,o));return r}function Ir(e){let t=new Set;function o(i){for(let r of i.options)r.takesValue&&(r.long&&t.add(r.long),r.short&&t.add(r.short));for(let r of i.subcommands)o(r)}return o(e),[...t]}function Rl(e){let t=Uo(e,"",[]),o=[],i=e.name;o.push(`# bash completion for ${i}`),o.push(`# Generated by: ${i} completion bash`),o.push(""),o.push(`_${i}_completions() {`),o.push(" local cur prev words cword"),o.push(" if type _init_completion &>/dev/null; then _init_completion || return; else"),o.push(' cur="${COMP_WORDS[COMP_CWORD]}"'),o.push(' prev="${COMP_WORDS[COMP_CWORD-1]}"'),o.push(' words=("${COMP_WORDS[@]}")'),o.push(" cword=$COMP_CWORD"),o.push(" fi"),o.push("");let n=Ir(e).join("|");o.push(' local cmd_path=""'),o.push(" local i=1"),o.push(" while [ $i -lt $cword ]; do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) i=$((i + 1)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" i=$((i + 1))"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(A=>A.choices&&A.long),c=s.options.map(A=>A.long).filter(Boolean).join(" "),u=s.subcommands.map(A=>A.name).join(" "),p=l.length>0,f=c.length>0,b=u.length>0;if(!p&&!f&&!b)continue;o.push(` "${a}")`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(p||h.length>0){o.push(' case "$prev" in');for(let A of l)o.push(` ${A.long}) COMPREPLY=($(compgen -W "${A.choices?.join(" ")}" -- "$cur")); return ;;`);if(h.length>0){let A=h.flatMap(w=>[w.long,w.short].filter(Boolean)).join("|");o.push(` ${A}) return ;;`)}o.push(" esac")}f&&(o.push(' if [[ "$cur" == -* ]]; then'),o.push(` COMPREPLY=($(compgen -W "${c}" -- "$cur")); return`),o.push(" fi")),b&&o.push(` COMPREPLY=($(compgen -W "${u}" -- "$cur"))`),o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`complete -o default -F _${i}_completions ${i}`),o.join(`
417
+ `)}function _l(e){let t=Uo(e,"",[]),o=[],i=e.name;o.push(`#compdef ${i}`),o.push(`# zsh completion for ${i}`),o.push(`# Generated by: ${i} completion zsh`),o.push(""),o.push(`_${i}() {`),o.push(" local cur prev cmd_path"),o.push(' cur="${words[$CURRENT]}"'),o.push(' prev="${words[$CURRENT-1]}"'),o.push("");let n=Ir(e).join("|");o.push(' cmd_path=""'),o.push(" for ((i=2; i < CURRENT; i++)); do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) ((i++)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(f=>f.choices&&f.long),c=s.options.filter(f=>f.long),u=s.subcommands.length>0;o.push(` "${a}")`);let p=s.options.filter(f=>f.takesValue&&!f.choices);if(l.length>0||p.length>0){o.push(' case "$prev" in');for(let f of l)o.push(` ${f.long}) compadd -- ${f.choices?.join(" ")}; return ;;`);if(p.length>0){let f=p.flatMap(b=>[b.long,b.short].filter(Boolean)).join("|");o.push(` ${f}) _files; return ;;`)}o.push(" esac")}if(c.length>0){o.push(' if [[ "$cur" == -* ]]; then');let f=c.map(b=>`"${b.long}:${Fl(b.description)}"`).join(" ");o.push(` local -a opts=(${f}); _describe 'option' opts; return`),o.push(" fi")}if(u){let f=s.subcommands.map(b=>`"${b.name}:${Fl(b.description)}"`).join(" ");o.push(` local -a cmds=(${f}); _describe 'command' cmds`)}else o.push(" _files");o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`compdef _${i} ${i}`),o.join(`
418
+ `)}function Dl(e){let t=e.name,o=Uo(e,"",[]),i=[];i.push(`# fish completion for ${t}`),i.push(`# Generated by: ${t} completion fish`),i.push("");let r=o[0];for(let n of r.subcommands)i.push(`complete -c ${t} -n "__fish_use_subcommand" -a "${n.name}" -d "${gi(n.description)}"`);for(let n of e.options)if(n.long){let s=n.long.replace("--",""),a=`complete -c ${t} -l "${s}"`;n.short&&(a+=` -s "${n.short.replace("-","")}"`),n.takesValue&&(a+=" -r"),n.choices&&(a+=` -a "${n.choices.join(" ")}"`),a+=` -d "${gi(n.description)}"`,i.push(a)}for(let n of o.slice(1)){let s=n.path.split(" ").slice(1),l=`__fish_seen_subcommand_from ${s[s.length-1]}`;for(let c of n.subcommands)i.push(`complete -c ${t} -n "${l}" -a "${c.name}" -d "${gi(c.description)}"`);for(let c of n.options)if(c.long){let u=c.long.replace("--",""),p=`complete -c ${t} -n "${l}" -l "${u}"`;c.short&&(p+=` -s "${c.short.replace("-","")}"`),c.takesValue&&(p+=" -r"),c.choices&&(p+=` -a "${c.choices.join(" ")}"`),p+=` -d "${gi(c.description)}"`,i.push(p)}}return i.join(`
419
+ `)}function Fl(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/:/g,"\\:")}function gi(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function El(e){let t=e.name,o=Uo(e,"",[]),i=[];i.push(`# PowerShell completion for ${t}`),i.push(`# Generated by: ${t} completion powershell`),i.push(""),i.push(`Register-ArgumentCompleter -Native -CommandName ${t} -ScriptBlock {`),i.push(" param($wordToComplete, $commandAst, $cursorPosition)"),i.push(""),i.push(' $words = $commandAst.ToString().Substring(0, $cursorPosition) -split "\\s+"');let n=Ir(e).map(s=>`"${s}"`).join(", ");i.push(" $cmdPath = @()"),i.push(` $valueFlags = @(${n})`),i.push(" for ($i = 1; $i -lt $words.Count - 1; $i++) {"),i.push(" if ($valueFlags -contains $words[$i]) { $i++; continue }"),i.push(' if ($words[$i] -notlike "-*") { $cmdPath += $words[$i] }'),i.push(" }"),i.push(' $joined = $cmdPath -join " "'),i.push(" $cur = $words[-1]"),i.push(' if ($words.Count -eq 1) { $cur = "" }'),i.push(""),i.push(' $prev = if ($words.Count -ge 2) { $words[-2] } else { "" }'),i.push(""),i.push(" switch ($joined) {");for(let s of o){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(A=>A.choices&&A.long),c=s.options.map(A=>A.long).filter(Boolean).map(A=>`"${A}"`).join(", "),u=s.subcommands.map(A=>`"${A.name}"`).join(", "),p=l.length>0,f=c.length>0,b=u.length>0;if(!p&&!f&&!b)continue;i.push(` "${a}" {`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(p||h.length>0){i.push(" switch ($prev) {");for(let A of l){let w=A.choices?.map(S=>`"${S}"`).join(", ");i.push(` "${A.long}" { @(${w}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return }`)}if(h.length>0){let A=h.flatMap(w=>[w.long,w.short].filter(Boolean)).map(w=>`"${w}"`).join(", ");i.push(` { $_ -in @(${A}) } { return }`)}i.push(" }")}f&&(i.push(' if ($cur -like "-*") {'),i.push(` @(${c}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return`),i.push(" }")),b&&i.push(` @(${u}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }`),i.push(" }")}return i.push(" }"),i.push("}"),i.join(`
420
+ `)}var Bl=new d("commands").description("Print the full command tree as JSON (for agents and tooling)").addHelpText("after",m({context:`Outputs every subcommand, option, and description from the CLI definition.
421
+ In machine mode (piped, CI, or --json), the tree is JSON you can feed to agents or scripts.`,examples:["resend commands","resend commands --json",'resend commands | jq ".subcommands[].name"']})).action((e,t)=>{let o=t.parent;if(!o)throw new Error("commands must be registered on the root program");let i=t.optsWithGlobals(),r=wo(o);Q(r,{json:i.json})});var fe=require("node:fs"),yt=require("node:os"),$e=require("node:path");V();var Il=["bash","zsh","fish","powershell"],hi="# resend shell completion";function rg(){let e=process.env.SHELL;if(e){let t=(0,$e.basename)(e);if(t==="bash")return"bash";if(t==="zsh")return"zsh";if(t==="fish")return"fish"}if(process.env.PSModulePath)return"powershell"}async function ng(e){if(e)return e;let t=rg();if(t)return t;U()||(process.stderr.write(`error: could not detect shell. Pass the shell name explicitly.
422
+ `),process.exit(1));let o=await re({message:"Which shell do you use?",options:Il.map(i=>({value:i,label:i}))});return k(o)&&R("Cancelled."),o}function Ol(e){switch(e){case"bash":return process.platform==="darwin"?(0,$e.join)((0,yt.homedir)(),".bash_profile"):(0,$e.join)((0,yt.homedir)(),".bashrc");case"zsh":return(0,$e.join)((0,yt.homedir)(),".zshrc");case"powershell":return process.platform==="win32"?(0,$e.join)((0,yt.homedir)(),"Documents","PowerShell","Microsoft.PowerShell_profile.ps1"):(0,$e.join)((0,yt.homedir)(),".config","powershell","Microsoft.PowerShell_profile.ps1")}}function sg(e,t){switch(e){case"bash":return Rl(t);case"zsh":return _l(t);case"fish":return Dl(t);case"powershell":return El(t)}}function Tl(e,t,o){(0,fe.existsSync)(e)||(0,fe.mkdirSync)(e,{recursive:!0});let i=(0,$e.join)(e,t);return(0,fe.writeFileSync)(i,`${o}
423
+ `),i}function ag(e,t){switch(e){case"zsh":{let o=(0,$e.join)((0,yt.homedir)(),".zsh","completions"),i=Tl(o,"_resend",t);X.success(`Completions written to ${i}`);let r=Ol(e),n=!0;if((0,fe.existsSync)(r)&&(0,fe.readFileSync)(r,"utf8").includes(o)&&(n=!1),n){let s=`${hi}
424
424
  fpath=(${o} $fpath)
425
- `,a=(0,he.existsSync)(r)?(0,he.readFileSync)(r,"utf8"):"",l=a.match(/^.*compinit.*$/m);if(l){let u=a.indexOf(l[0]),m=a.slice(0,u),p=a.slice(u);(0,he.writeFileSync)(r,`${m}${s}
426
- ${p}`)}else{let u=`
425
+ `,a=(0,fe.existsSync)(r)?(0,fe.readFileSync)(r,"utf8"):"",l=a.match(/^.*compinit.*$/m);if(l){let c=a.indexOf(l[0]),u=a.slice(0,c),p=a.slice(c);(0,fe.writeFileSync)(r,`${u}${s}
426
+ ${p}`)}else{let c=`
427
427
  ${s}autoload -Uz compinit && compinit
428
- `;(0,he.writeFileSync)(r,u,{flag:"a"})}te.info(`Added completion path to ${r}`)}te.info("Restart your shell to activate completions.");return}case"fish":{let o=(0,$e.join)((0,Ct.homedir)(),".config","fish","completions"),i=Nl(o,"resend.fish",t);te.success(`Completions written to ${i}`),te.info("Completions will be available in new fish sessions.");return}case"bash":case"powershell":{let o=Ql(e),i=e==="powershell"?`
429
- ${bi}
428
+ `;(0,fe.writeFileSync)(r,c,{flag:"a"})}X.info(`Added completion path to ${r}`)}X.info("Restart your shell to activate completions.");return}case"fish":{let o=(0,$e.join)((0,yt.homedir)(),".config","fish","completions"),i=Tl(o,"resend.fish",t);X.success(`Completions written to ${i}`),X.info("Completions will be available in new fish sessions.");return}case"bash":case"powershell":{let o=Ol(e),i=e==="powershell"?`
429
+ ${hi}
430
430
  resend completion powershell | Invoke-Expression
431
431
  `:`
432
- ${bi}
432
+ ${hi}
433
433
  eval "$(resend completion ${e})"
434
- `;if((0,he.existsSync)(o)&&(0,he.readFileSync)(o,"utf8").includes(bi)){te.info(`Completions already installed in ${o}`);return}let r=(0,$e.dirname)(o);(0,he.existsSync)(r)||(0,he.mkdirSync)(r,{recursive:!0}),(0,he.writeFileSync)(o,i,{flag:"a"}),te.success(`Completions added to ${o}`),te.info("Restart your shell to activate completions.");return}}}var ql=new c("completion").description("Generate shell completion script").addArgument(new gn("[shell]","Shell type").choices(Ml)).option("--install","Install completions into your shell profile").addHelpText("after",d({context:`Outputs a completion script for the given shell. The shell is auto-detected
434
+ `;if((0,fe.existsSync)(o)&&(0,fe.readFileSync)(o,"utf8").includes(hi)){X.info(`Completions already installed in ${o}`);return}let r=(0,$e.dirname)(o);(0,fe.existsSync)(r)||(0,fe.mkdirSync)(r,{recursive:!0}),(0,fe.writeFileSync)(o,i,{flag:"a"}),X.success(`Completions added to ${o}`),X.info("Restart your shell to activate completions.");return}}}var jl=new d("completion").description("Generate shell completion script").addArgument(new un("[shell]","Shell type").choices(Il)).option("--install","Install completions into your shell profile").addHelpText("after",m({context:`Outputs a completion script for the given shell. The shell is auto-detected
435
435
  from $SHELL when not specified.
436
436
 
437
437
  Quick setup:
@@ -451,7 +451,7 @@ Manual setup:
451
451
  PowerShell (add to $PROFILE):
452
452
  resend completion powershell >> $PROFILE
453
453
 
454
- Homebrew users: completions may be configured automatically by your formula.`,examples:["resend completion --install","resend completion bash","resend completion zsh",'eval "$(resend completion bash)"']})).action(async(e,t,o)=>{let i=await Jh(e),r=o.parent;if(!r)throw new Error("completion command must be registered under a parent");let n=wo(r),s=Vh(i,n);if(t.install){zh(i,s);return}if(!e&&w()){o.help();return}console.log(s)});var Ll=new c("create").description("Create a new contact property definition").addOption(new M("--key <key>","Property key name, used in broadcast template interpolation (e.g. company_name, department)")).addOption(new M("--type <type>","Property data type: 'string' for text values, 'number' for numeric values").choices(["string","number"])).option("--fallback-value <value>","Default value used in broadcast templates when a contact has no value set for this property").addHelpText("after",d({context:`Property keys are used as identifiers in broadcast HTML template interpolation:
454
+ Homebrew users: completions may be configured automatically by your formula.`,examples:["resend completion --install","resend completion bash","resend completion zsh",'eval "$(resend completion bash)"']})).action(async(e,t,o)=>{let i=await ng(e),r=o.parent;if(!r)throw new Error("completion command must be registered under a parent");let n=wo(r),s=sg(i,n);if(t.install){ag(i,s);return}if(!e&&U()){o.help();return}console.log(s)});var Pl=new d("create").description("Create a new contact property definition").addOption(new L("--key <key>","Property key name, used in broadcast template interpolation (e.g. company_name, department)")).addOption(new L("--type <type>","Property data type: 'string' for text values, 'number' for numeric values").choices(["string","number"])).option("--fallback-value <value>","Default value used in broadcast templates when a contact has no value set for this property").addHelpText("after",m({context:`Property keys are used as identifiers in broadcast HTML template interpolation:
455
455
  {{{PROPERTY_NAME|fallback}}} \u2014 triple-brace syntax substitutes the contact's value
456
456
  {{{company_name|Unknown}}} \u2014 falls back to "Unknown" if the property is not set
457
457
 
@@ -459,20 +459,20 @@ Reserved keys (cannot be used): FIRST_NAME, LAST_NAME, EMAIL, UNSUBSCRIBE_URL
459
459
 
460
460
  Non-interactive: --key and --type are required. --fallback-value is optional.
461
461
  Warning: do not create properties with reserved key names \u2014 they will conflict with
462
- built-in contact fields and may cause unexpected behavior in broadcasts.`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","missing_key","missing_type","invalid_fallback_value","create_error"],examples:["resend contact-properties create --key company_name --type string",'resend contact-properties create --key company_name --type string --fallback-value "Unknown"',"resend contact-properties create --key employee_count --type number --fallback-value 0","resend contact-properties create --key department --type string --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.key,{message:"Property key",placeholder:"e.g. company_name"},{message:"Missing --key flag.",code:"missing_key"},o),r=await bt(e.type,{message:"Property data type",options:[{value:"string",label:"string \u2014 text values"},{value:"number",label:"number \u2014 numeric values"}]},{message:"Missing --type flag.",code:"missing_type"},o),n;if(e.fallbackValue!==void 0)if(r==="number"){let a=parseFloat(e.fallbackValue);Number.isNaN(a)&&h({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:o.json}),n=a}else n=e.fallbackValue;let s={key:i,type:r,...n!==void 0&&{fallbackValue:n}};await j({loading:"Creating contact property...",sdkCall:a=>a.contactProperties.create(s),onInteractive:a=>{console.log(`Contact property created: ${a.id}`)}},o)});var Vt={resource:"contact property",resourcePlural:"contact properties",fetchItems:(e,{limit:t,after:o})=>e.contactProperties.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.key} (${e.type})`,hint:e.id})};function Wl(e){let t=e.map(o=>[o.key,o.type,o.fallbackValue!=null?String(o.fallbackValue):"",o.id,o.createdAt]);return _(["Key","Type","Fallback Value","ID","Created"],t,"(no contact properties)")}var Jl=new c("delete").alias("rm").description("Delete a contact property definition").argument("[id]","Contact property UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`WARNING: Deleting a property definition removes that property value from ALL contacts
462
+ built-in contact fields and may cause unexpected behavior in broadcasts.`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","missing_key","missing_type","invalid_fallback_value","create_error"],examples:["resend contact-properties create --key company_name --type string",'resend contact-properties create --key company_name --type string --fallback-value "Unknown"',"resend contact-properties create --key employee_count --type number --fallback-value 0","resend contact-properties create --key department --type string --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.key,{message:"Property key",placeholder:"e.g. company_name"},{message:"Missing --key flag.",code:"missing_key"},o),r=await At(e.type,{message:"Property data type",options:[{value:"string",label:"string \u2014 text values"},{value:"number",label:"number \u2014 numeric values"}]},{message:"Missing --type flag.",code:"missing_type"},o),n;if(e.fallbackValue!==void 0)if(r==="number"){let a=parseFloat(e.fallbackValue);Number.isNaN(a)&&g({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:o.json}),n=a}else n=e.fallbackValue;let s={key:i,type:r,...n!==void 0&&{fallbackValue:n}};await M({loading:"Creating contact property...",sdkCall:a=>a.contactProperties.create(s),onInteractive:a=>{console.log(`Contact property created: ${a.id}`)}},o)});var Jt={resource:"contact property",resourcePlural:"contact properties",fetchItems:(e,{limit:t,after:o})=>e.contactProperties.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.key} (${e.type})`,hint:e.id})};function $l(e){let t=e.map(o=>[o.key,o.type,o.fallbackValue!=null?String(o.fallbackValue):"",o.id,o.createdAt]);return _(["Key","Type","Fallback Value","ID","Created"],t,"(no contact properties)")}var Gl=new d("delete").alias("rm").description("Delete a contact property definition").argument("[id]","Contact property UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",m({context:`WARNING: Deleting a property definition removes that property value from ALL contacts
463
463
  permanently. This cannot be undone, and any broadcasts that reference this property key
464
464
  via {{{PROPERTY_NAME}}} will render an empty string or their inline fallback instead.
465
465
 
466
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"contact_property","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes","resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,Vt,i);await z(r.id,!!t.yes,{confirmMessage:`Delete contact property "${r.label}"?
466
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"contact_property","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes","resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Jt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete contact property "${r.label}"?
467
467
  ID: ${r.id}
468
- This will remove this property from ALL contacts permanently.`,loading:"Deleting contact property...",object:"contact_property",successMsg:"Contact property deleted",sdkCall:n=>n.contactProperties.remove(r.id)},i)});var Vl=new c("get").description("Retrieve a contact property definition by ID").argument("[id]","Contact property UUID").addHelpText("after",d({output:` {
468
+ This will remove this property from ALL contacts permanently.`,loading:"Deleting contact property...",object:"contact_property",successMsg:"Contact property deleted",sdkCall:n=>n.contactProperties.remove(r.id)},i)});var Hl=new d("get").description("Retrieve a contact property definition by ID").argument("[id]","Contact property UUID").addHelpText("after",m({output:` {
469
469
  "object": "contact_property",
470
470
  "id": "<uuid>",
471
471
  "key": "company_name",
472
472
  "type": "string",
473
473
  "fallbackValue": null,
474
474
  "createdAt": "2026-01-01 00:00:00+00"
475
- }`,errorCodes:["auth_error","fetch_error"],examples:["resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Vt,i);await I({loading:"Fetching contact property...",sdkCall:n=>n.contactProperties.get(r),onInteractive:n=>{console.log(`${n.key} (${n.type})`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.createdAt}`),console.log(`Fallback value: ${n.fallbackValue??"(none)"}`)}},i)});var zl=new c("list").alias("ls").description("List all contact property definitions").option("--limit <n>","Maximum number of contact properties to return (1-100)","10").option("--after <cursor>","Return contact properties after this cursor (next page)").option("--before <cursor>","Return contact properties before this cursor (previous page)").addHelpText("after",d({context:`Pagination: use --after or --before with a contact property ID as the cursor.
475
+ }`,errorCodes:["auth_error","fetch_error"],examples:["resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Jt,i);await $({loading:"Fetching contact property...",sdkCall:n=>n.contactProperties.get(r),onInteractive:n=>{console.log(`${n.key} (${n.type})`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.createdAt}`),console.log(`Fallback value: ${n.fallbackValue??"(none)"}`)}},i)});var Ql=new d("list").alias("ls").description("List all contact property definitions").option("--limit <n>","Maximum number of contact properties to return (1-100)","10").option("--after <cursor>","Return contact properties after this cursor (next page)").option("--before <cursor>","Return contact properties before this cursor (previous page)").addHelpText("after",m({context:`Pagination: use --after or --before with a contact property ID as the cursor.
476
476
  Only one of --after or --before may be used at a time.
477
477
  The response includes has_more: true when additional pages exist.`,output:` {
478
478
  "object": "list",
@@ -480,14 +480,14 @@ This will remove this property from ALL contacts permanently.`,loading:"Deleting
480
480
  "data": [
481
481
  { "id": "<uuid>", "key": "company_name", "type": "string", "fallbackValue": null, "createdAt": "..." }
482
482
  ]
483
- }`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contact-properties list","resend contact-properties list --limit 25 --json","resend contact-properties list --after b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching contact properties...",sdkCall:n=>n.contactProperties.list(r),onInteractive:n=>{console.log(Wl(n.data)),E(n,"contact-properties list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Yl=new c("update").description("Update a contact property definition").argument("[id]","Contact property UUID").option("--fallback-value <value>","New fallback value used in broadcast templates when a contact has no value set for this property").option("--clear-fallback-value","Remove the fallback value (sets it to null)").addHelpText("after",d({context:`Note: the property key and type cannot be changed after creation. Only the fallback value
483
+ }`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contact-properties list","resend contact-properties list --limit 25 --json","resend contact-properties list --after b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching contact properties...",sdkCall:n=>n.contactProperties.list(r),onInteractive:n=>{console.log($l(n.data)),T(n,"contact-properties list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Nl=new d("update").description("Update a contact property definition").argument("[id]","Contact property UUID").option("--fallback-value <value>","New fallback value used in broadcast templates when a contact has no value set for this property").option("--clear-fallback-value","Remove the fallback value (sets it to null)").addHelpText("after",m({context:`Note: the property key and type cannot be changed after creation. Only the fallback value
484
484
  is updatable. Renaming a property would break existing broadcasts that reference the old key.
485
485
 
486
486
  --fallback-value and --clear-fallback-value are mutually exclusive.
487
487
 
488
488
  The fallback value is used in broadcast template interpolation when a contact has no value:
489
489
  {{{company_name|Unknown}}} \u2014 inline fallback (takes precedence over the property's fallback)
490
- {{{company_name}}} \u2014 uses the property's stored fallback value if set`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","no_changes","conflicting_flags","fetch_error","invalid_fallback_value","update_error"],examples:['resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Acme Corp"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value 42","resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Vt,i);t.fallbackValue===void 0&&!t.clearFallbackValue&&h({message:"Provide at least one option to update: --fallback-value or --clear-fallback-value.",code:"no_changes"},{json:i.json}),t.fallbackValue!==void 0&&t.clearFallbackValue&&h({message:"--fallback-value and --clear-fallback-value are mutually exclusive.",code:"conflicting_flags"},{json:i.json});let n=t.clearFallbackValue?null:t.fallbackValue;if(typeof n=="string"){let s=await ee(i);if((await ce("Fetching contact property...",()=>s.contactProperties.get(r),"fetch_error",i,{retryTransient:!0})).type==="number"){let l=parseFloat(n);Number.isNaN(l)&&h({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:i.json}),n=l}}await R({loading:"Updating contact property...",sdkCall:s=>s.contactProperties.update({id:r,...n!==void 0&&{fallbackValue:n}}),errorCode:"update_error",successMsg:`Contact property updated: ${r}`},i)});var Xl=new c("contact-properties").description("Manage contact property definitions").addHelpText("after",d({context:`Contact properties define the schema for custom data stored on contacts.
490
+ {{{company_name}}} \u2014 uses the property's stored fallback value if set`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","no_changes","conflicting_flags","fetch_error","invalid_fallback_value","update_error"],examples:['resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Acme Corp"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value 42","resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Jt,i);t.fallbackValue===void 0&&!t.clearFallbackValue&&g({message:"Provide at least one option to update: --fallback-value or --clear-fallback-value.",code:"no_changes"},{json:i.json}),t.fallbackValue!==void 0&&t.clearFallbackValue&&g({message:"--fallback-value and --clear-fallback-value are mutually exclusive.",code:"conflicting_flags"},{json:i.json});let n=t.clearFallbackValue?null:t.fallbackValue;if(typeof n=="string"){let s=await Y(i);if((await ae("Fetching contact property...",()=>s.contactProperties.get(r),"fetch_error",i,{retryTransient:!0})).type==="number"){let l=parseFloat(n);Number.isNaN(l)&&g({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:i.json}),n=l}}await B({loading:"Updating contact property...",sdkCall:s=>s.contactProperties.update({id:r,...n!==void 0&&{fallbackValue:n}}),errorCode:"update_error",successMsg:`Contact property updated: ${r}`},i)});var Ml=new d("contact-properties").description("Manage contact property definitions").addHelpText("after",m({context:`Contact properties define the schema for custom data stored on contacts.
491
491
  Think of them as column definitions \u2014 you create a property definition (e.g. company_name)
492
492
  and then set values for that property on individual contacts via "resend contacts update --properties".
493
493
 
@@ -502,9 +502,9 @@ Supported types:
502
502
  number \u2014 numeric values (useful for counts, scores, thresholds)
503
503
 
504
504
  Note: property keys and types are immutable after creation. Only the fallback value can
505
- be updated. Deleting a property removes it from all contacts.`,examples:["resend contact-properties list","resend contact-properties create --key company_name --type string",'resend contact-properties create --key plan --type string --fallback-value "free"',"resend contact-properties create --key score --type number --fallback-value 0","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value","resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes"]})).addCommand(Ll).addCommand(Vl).addCommand(zl,{isDefault:!0}).addCommand(Yl).addCommand(Jl);function yi(e){let t=e.map(o=>[o.email,o.first_name??"",o.last_name??"",o.unsubscribed?"yes":"no",o.id]);return _(["Email","First Name","Last Name","Unsubscribed","ID"],t,"(no contacts)")}function Zl(e){let t=e.map(o=>[o.name,o.subscription,o.id,o.description??""]);return _(["Name","Subscription","ID","Description"],t,"(no topic subscriptions)")}var ye={resource:"contact",resourcePlural:"contacts",fetchItems:(e,{limit:t,after:o})=>e.contacts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function zt(e){return e.includes("@")?{email:e}:{id:e}}function Yt(e){return e.includes("@")?{email:e}:{contactId:e}}function Ci(e,t){let o;try{o=JSON.parse(e)}catch{h({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json})}return Array.isArray(o)||h({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json}),o}function xi(e,t){if(e)try{return JSON.parse(e)}catch{h({message:"Invalid --properties JSON.",code:"invalid_properties"},{json:t.json})}}var ec=new c("add-segment").description("Add a contact to a segment").argument("[contactId]","Contact UUID or email address").option("--segment-id <id>","Segment ID to add the contact to (required)").addHelpText("after",d({context:`The <contactId> argument accepts either a UUID or an email address.
505
+ be updated. Deleting a property removes it from all contacts.`,examples:["resend contact-properties list","resend contact-properties create --key company_name --type string",'resend contact-properties create --key plan --type string --fallback-value "free"',"resend contact-properties create --key score --type number --fallback-value 0","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value","resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes"]})).addCommand(Pl).addCommand(Hl).addCommand(Ql,{isDefault:!0}).addCommand(Nl).addCommand(Gl);function Ai(e){let t=e.map(o=>[o.email,o.first_name??"",o.last_name??"",o.unsubscribed?"yes":"no",o.id]);return _(["Email","First Name","Last Name","Unsubscribed","ID"],t,"(no contacts)")}function ql(e){let t=e.map(o=>[o.name,o.subscription,o.id,o.description??""]);return _(["Name","Subscription","ID","Description"],t,"(no topic subscriptions)")}var be={resource:"contact",resourcePlural:"contacts",fetchItems:(e,{limit:t,after:o})=>e.contacts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function Vt(e){return e.includes("@")?{email:e}:{id:e}}function zt(e){return e.includes("@")?{email:e}:{contactId:e}}function bi(e,t){let o;try{o=JSON.parse(e)}catch{g({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json})}return Array.isArray(o)||g({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json}),o}function yi(e,t){if(e)try{return JSON.parse(e)}catch{g({message:"Invalid --properties JSON.",code:"invalid_properties"},{json:t.json})}}var Ll=new d("add-segment").description("Add a contact to a segment").argument("[contactId]","Contact UUID or email address").option("--segment-id <id>","Segment ID to add the contact to (required)").addHelpText("after",m({context:`The <contactId> argument accepts either a UUID or an email address.
506
506
 
507
- Non-interactive: --segment-id is required.`,output:' {"id":"<segment-membership-id>"}',errorCodes:["auth_error","missing_segment_id","add_segment_error"],examples:["resend contacts add-segment e169aa45-1ecf-4183-9955-b1499d5701d3 --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,ye,i),n=await g(t.segmentId,Oe,i),s={...Yt(r),segmentId:n};await R({loading:"Adding contact to segment...",sdkCall:a=>a.contacts.segments.add(s),errorCode:"add_segment_error",successMsg:`Contact added to segment: ${n}`},i)});X();var tc=new c("create").description("Create a new contact").option("--email <email>","Contact email address (required)").option("--first-name <name>","First name").option("--last-name <name>","Last name").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--properties <json>",`Custom properties as a JSON string (e.g. '{"company":"Acme"}')`).option("--segment-id <id...>","Segment ID to add the contact to on creation (repeatable: --segment-id abc --segment-id def)").addHelpText("after",d({context:`Non-interactive: --email is required. All other flags are optional.
507
+ Non-interactive: --segment-id is required.`,output:' {"id":"<segment-membership-id>"}',errorCodes:["auth_error","missing_segment_id","add_segment_error"],examples:["resend contacts add-segment e169aa45-1ecf-4183-9955-b1499d5701d3 --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=await C(t.segmentId,Ee,i),s={...zt(r),segmentId:n};await B({loading:"Adding contact to segment...",sdkCall:a=>a.contacts.segments.add(s),errorCode:"add_segment_error",successMsg:`Contact added to segment: ${n}`},i)});V();var Wl=new d("create").description("Create a new contact").option("--email <email>","Contact email address (required)").option("--first-name <name>","First name").option("--last-name <name>","Last name").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--properties <json>",`Custom properties as a JSON string (e.g. '{"company":"Acme"}')`).option("--segment-id <id...>","Segment ID to add the contact to on creation (repeatable: --segment-id abc --segment-id def)").addHelpText("after",m({context:`Non-interactive: --email is required. All other flags are optional.
508
508
 
509
509
  Properties: pass a JSON object string to --properties (e.g. '{"plan":"pro","company":"Acme"}').
510
510
  Properties are stored as custom contact attributes. To clear a property, set it to null.
@@ -512,11 +512,11 @@ Properties: pass a JSON object string to --properties (e.g. '{"plan":"pro","comp
512
512
 
513
513
  Segments: use --segment-id once per segment to add the contact to one or more segments on creation.
514
514
 
515
- Unsubscribed: setting --unsubscribed is a team-wide opt-out from all broadcasts, regardless of segments/topics.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","missing_email","invalid_properties","create_error"],examples:["resend contacts create --email steve.wozniak@gmail.com","resend contacts create --email steve.wozniak@gmail.com --first-name Steve --last-name Wozniak",`resend contacts create --email steve.wozniak@gmail.com --properties '{"company":"Acme","plan":"pro"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.email,{message:"Email address",placeholder:"steve.wozniak@gmail.com"},{message:"Missing --email flag.",code:"missing_email"},o),r=e.firstName,n=e.lastName;if(w()&&!o.json&&!e.firstName){let l=await Z({message:"First name (optional)"});F(l)&&D("Cancelled."),l&&(r=l)}if(w()&&!o.json&&!e.lastName){let l=await Z({message:"Last name (optional)"});F(l)&&D("Cancelled."),l&&(n=l)}let s=xi(e.properties,o),a=e.segmentId??[];await j({loading:"Creating contact...",sdkCall:l=>l.contacts.create({email:i,...r&&{firstName:r},...n&&{lastName:n},...e.unsubscribed&&{unsubscribed:!0},...s&&{properties:s},...a.length>0&&{segments:a.map(u=>({id:u}))}}),onInteractive:l=>{console.log(`Contact created: ${l.id}`)}},o)});var oc=new c("delete").alias("rm").description("Delete a contact").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`The <id> argument accepts either a UUID or an email address.
515
+ Unsubscribed: setting --unsubscribed is a team-wide opt-out from all broadcasts, regardless of segments/topics.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","missing_email","invalid_properties","create_error"],examples:["resend contacts create --email steve.wozniak@gmail.com","resend contacts create --email steve.wozniak@gmail.com --first-name Steve --last-name Wozniak",`resend contacts create --email steve.wozniak@gmail.com --properties '{"company":"Acme","plan":"pro"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.email,{message:"Email address",placeholder:"steve.wozniak@gmail.com"},{message:"Missing --email flag.",code:"missing_email"},o),r=e.firstName,n=e.lastName;if(U()&&!o.json&&!e.firstName){let l=await z({message:"First name (optional)"});k(l)&&R("Cancelled."),l&&(r=l)}if(U()&&!o.json&&!e.lastName){let l=await z({message:"Last name (optional)"});k(l)&&R("Cancelled."),l&&(n=l)}let s=yi(e.properties,o),a=e.segmentId??[];await M({loading:"Creating contact...",sdkCall:l=>l.contacts.create({email:i,...r&&{firstName:r},...n&&{lastName:n},...e.unsubscribed&&{unsubscribed:!0},...s&&{properties:s},...a.length>0&&{segments:a.map(c=>({id:c}))}}),onInteractive:l=>{console.log(`Contact created: ${l.id}`)}},o)});var Jl=new d("delete").alias("rm").description("Delete a contact").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",m({context:`The <id> argument accepts either a UUID or an email address.
516
516
 
517
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"contact","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend contacts delete 520784e2-887d-4c25-b53c-4ad46ad38100 --yes","resend contacts delete acme@example.com --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,ye,i);await z(r.id,!!t.yes,{confirmMessage:`Delete contact "${r.label}"?
517
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"contact","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend contacts delete 520784e2-887d-4c25-b53c-4ad46ad38100 --yes","resend contacts delete acme@example.com --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,be,i);await te(r.id,!!t.yes,{confirmMessage:`Delete contact "${r.label}"?
518
518
  ID: ${r.id}
519
- This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMsg:"Contact deleted",sdkCall:n=>n.contacts.remove(r.id)},i)});var ic=new c("get").description("Retrieve a contact by ID or email address").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").addHelpText("after",d({output:` {
519
+ This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMsg:"Contact deleted",sdkCall:n=>n.contacts.remove(r.id)},i)});var Vl=new d("get").description("Retrieve a contact by ID or email address").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").addHelpText("after",m({output:` {
520
520
  "object": "contact",
521
521
  "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
522
522
  "email": "steve.wozniak@gmail.com",
@@ -525,7 +525,7 @@ This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMs
525
525
  "created_at": "2026-01-01 00:00:00+00",
526
526
  "unsubscribed": false,
527
527
  "properties": {}
528
- }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,ye,i);await I({loading:"Fetching contact...",sdkCall:n=>n.contacts.get(r),onInteractive:n=>{let s=[n.first_name,n.last_name].filter(Boolean).join(" ");console.log(`${n.email}${s?` (${s})`:""}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`Unsubscribed: ${n.unsubscribed?"yes":"no"}`);let a=Object.entries(n.properties??{});if(a.length>0){console.log("Properties:");for(let[l,u]of a)console.log(` ${l}: ${u.value}`)}}},i)});var ac=require("node:fs"),lc=require("node:path");function rc(e){let t=e.map(o=>[o.status,String(o.counts.total),String(o.counts.created),String(o.counts.updated),String(o.counts.skipped),String(o.counts.failed),o.created_at,o.id]);return _(["Status","Total","Created","Updated","Skipped","Failed","Created At","ID"],t,"(no contact imports)")}var nc={resource:"contact import",resourcePlural:"contact imports",fetchItems:(e,{limit:t,after:o})=>e.contacts.imports.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.status} - ${e.counts.total} contacts`,hint:e.id})};function sc(e,t){if(!e)return;let o;try{o=JSON.parse(e)}catch{h({message:"Invalid --column-map JSON.",code:"invalid_column_map"},{json:t.json})}return(typeof o!="object"||o===null||Array.isArray(o))&&h({message:"Invalid --column-map JSON. Expected an object mapping contact fields to CSV column headers.",code:"invalid_column_map"},{json:t.json}),o}var cc=new c("create").description("Import contacts in bulk from a local CSV file").option("--file <path>","Path to the CSV file to import (required)").option("--column-map <json>",`Map CSV columns to contact fields as a JSON object (e.g. '{"email":"Email","firstName":"First Name"}')`).addOption(new M("--on-conflict <strategy>","How to handle contacts that already exist").choices(["upsert","skip"])).option("--segment-id <id...>","Segment ID to add imported contacts to (repeatable: --segment-id abc --segment-id def)").option("--topics <json>","Topic subscriptions as a JSON array of {id, subscription} objects").addHelpText("after",d({context:`Non-interactive: --file is required. All other flags are optional.
528
+ }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await $({loading:"Fetching contact...",sdkCall:n=>n.contacts.get(r),onInteractive:n=>{let s=[n.first_name,n.last_name].filter(Boolean).join(" ");console.log(`${n.email}${s?` (${s})`:""}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`Unsubscribed: ${n.unsubscribed?"yes":"no"}`);let a=Object.entries(n.properties??{});if(a.length>0){console.log("Properties:");for(let[l,c]of a)console.log(` ${l}: ${c.value}`)}}},i)});var Zl=require("node:fs"),ec=require("node:path");function zl(e){let t=e.map(o=>[o.status,String(o.counts.total),String(o.counts.created),String(o.counts.updated),String(o.counts.skipped),String(o.counts.failed),o.created_at,o.id]);return _(["Status","Total","Created","Updated","Skipped","Failed","Created At","ID"],t,"(no contact imports)")}var Yl={resource:"contact import",resourcePlural:"contact imports",fetchItems:(e,{limit:t,after:o})=>e.contacts.imports.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.status} - ${e.counts.total} contacts`,hint:e.id})};function Xl(e,t){if(!e)return;let o;try{o=JSON.parse(e)}catch{g({message:"Invalid --column-map JSON.",code:"invalid_column_map"},{json:t.json})}return(typeof o!="object"||o===null||Array.isArray(o))&&g({message:"Invalid --column-map JSON. Expected an object mapping contact fields to CSV column headers.",code:"invalid_column_map"},{json:t.json}),o}var tc=new d("create").description("Import contacts in bulk from a local CSV file").option("--file <path>","Path to the CSV file to import (required)").option("--column-map <json>",`Map CSV columns to contact fields as a JSON object (e.g. '{"email":"Email","firstName":"First Name"}')`).addOption(new L("--on-conflict <strategy>","How to handle contacts that already exist").choices(["upsert","skip"])).option("--segment-id <id...>","Segment ID to add imported contacts to (repeatable: --segment-id abc --segment-id def)").option("--topics <json>","Topic subscriptions as a JSON array of {id, subscription} objects").addHelpText("after",m({context:`Non-interactive: --file is required. All other flags are optional.
529
529
 
530
530
  The CSV file is uploaded as multipart form data (max 100MB).
531
531
 
@@ -541,32 +541,32 @@ On conflict: --on-conflict upsert (default) updates existing contacts; skip leav
541
541
 
542
542
  Segments: use --segment-id once per segment to add imported contacts to one or more segments.
543
543
 
544
- Topics: pass a JSON array of {id, subscription} objects (subscription is "opt_in" or "opt_out").`,output:' {"object":"contact_import","id":"<id>"}',errorCodes:["auth_error","missing_file","file_read_error","invalid_column_map","invalid_topics","create_error"],examples:["resend contacts imports create --file ./contacts.csv",`resend contacts imports create --file ./contacts.csv --column-map '{"email":"Email","firstName":"First Name"}'`,"resend contacts imports create --file ./contacts.csv --on-conflict skip --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.file,{message:"Path to the CSV file",placeholder:"./contacts.csv"},{message:"Missing --file flag.",code:"missing_file"},o),r;try{r=(0,ac.readFileSync)(i)}catch{h({message:`Failed to read file: ${i}`,code:"file_read_error"},{json:o.json})}let n=new File([new Uint8Array(r)],(0,lc.basename)(i),{type:"text/csv"}),s=sc(e.columnMap,o),a=(e.segmentId??[]).map(u=>({id:u})),l=e.topics!==void 0?Ci(e.topics,o):void 0;await j({loading:"Starting contact import...",sdkCall:u=>u.contacts.imports.create({file:n,...s&&{columnMap:s},...e.onConflict&&{onConflict:e.onConflict},...a.length>0&&{segments:a},...l&&{topics:l}}),onInteractive:u=>{console.log(`Contact import started: ${u.id}`)}},o)});var dc=new c("get").description("Retrieve a contact import by ID").argument("[id]","Contact import ID").addHelpText("after",d({output:` {
544
+ Topics: pass a JSON array of {id, subscription} objects (subscription is "opt_in" or "opt_out").`,output:' {"object":"contact_import","id":"<id>"}',errorCodes:["auth_error","missing_file","file_read_error","invalid_column_map","invalid_topics","create_error"],examples:["resend contacts imports create --file ./contacts.csv",`resend contacts imports create --file ./contacts.csv --column-map '{"email":"Email","firstName":"First Name"}'`,"resend contacts imports create --file ./contacts.csv --on-conflict skip --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.file,{message:"Path to the CSV file",placeholder:"./contacts.csv"},{message:"Missing --file flag.",code:"missing_file"},o),r;try{r=(0,Zl.readFileSync)(i)}catch{g({message:`Failed to read file: ${i}`,code:"file_read_error"},{json:o.json})}let n=new File([new Uint8Array(r)],(0,ec.basename)(i),{type:"text/csv"}),s=Xl(e.columnMap,o),a=(e.segmentId??[]).map(c=>({id:c})),l=e.topics!==void 0?bi(e.topics,o):void 0;await M({loading:"Starting contact import...",sdkCall:c=>c.contacts.imports.create({file:n,...s&&{columnMap:s},...e.onConflict&&{onConflict:e.onConflict},...a.length>0&&{segments:a},...l&&{topics:l}}),onInteractive:c=>{console.log(`Contact import started: ${c.id}`)}},o)});var oc=new d("get").description("Retrieve a contact import by ID").argument("[id]","Contact import ID").addHelpText("after",m({output:` {
545
545
  "object": "contact_import",
546
546
  "id": "479e3145-dd38-476b-932c-529ceb705947",
547
547
  "status": "completed",
548
548
  "created_at": "2026-05-15 18:32:37.823+00",
549
549
  "completed_at": "2026-05-15 18:33:42.916+00",
550
550
  "counts": {"total":1200,"created":800,"updated":300,"skipped":75,"failed":25}
551
- }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,nc,i);await I({loading:"Fetching contact import...",sdkCall:n=>n.contacts.imports.get(r),onInteractive:n=>{console.log(`${n.id} - ${n.status}`),console.log(`Created: ${n.created_at}`),n.completed_at&&console.log(`Completed: ${n.completed_at}`);let s=n.counts;console.log(`Counts: ${s.total} total, ${s.created} created, ${s.updated} updated, ${s.skipped} skipped, ${s.failed} failed`)}},i)});var uc=new c("list").alias("ls").description("List contact imports").option("--limit <n>","Maximum number of contact imports to return (1-100)","10").option("--after <cursor>","Return imports after this cursor (next page)").option("--before <cursor>","Return imports before this cursor (previous page)").addOption(new M("--status <status>","Filter by import status").choices(["queued","in_progress","completed","failed"])).addHelpText("after",d({context:`Pagination: use --after or --before with a contact import ID as the cursor.
551
+ }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Yl,i);await $({loading:"Fetching contact import...",sdkCall:n=>n.contacts.imports.get(r),onInteractive:n=>{console.log(`${n.id} - ${n.status}`),console.log(`Created: ${n.created_at}`),n.completed_at&&console.log(`Completed: ${n.completed_at}`);let s=n.counts;console.log(`Counts: ${s.total} total, ${s.created} created, ${s.updated} updated, ${s.skipped} skipped, ${s.failed} failed`)}},i)});var ic=new d("list").alias("ls").description("List contact imports").option("--limit <n>","Maximum number of contact imports to return (1-100)","10").option("--after <cursor>","Return imports after this cursor (next page)").option("--before <cursor>","Return imports before this cursor (previous page)").addOption(new L("--status <status>","Filter by import status").choices(["queued","in_progress","completed","failed"])).addHelpText("after",m({context:`Pagination: use --after or --before with a contact import ID as the cursor.
552
552
  Only one of --after or --before may be used at a time.
553
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"object":"contact_import","id":"...","status":"completed","counts":{"total":1200,"created":800,"updated":300,"skipped":75,"failed":25}}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts imports list","resend contacts imports list --status completed --json","resend contacts imports list --after 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching contact imports...",sdkCall:n=>n.contacts.imports.list({...r,...e.status&&{status:e.status}}),onInteractive:n=>{console.log(rc(n.data)),E(n,"contacts imports list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var mc=new c("imports").description("Import contacts in bulk from a CSV file").addHelpText("after",d({context:`Import lifecycle:
553
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"object":"contact_import","id":"...","status":"completed","counts":{"total":1200,"created":800,"updated":300,"skipped":75,"failed":25}}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts imports list","resend contacts imports list --status completed --json","resend contacts imports list --after 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching contact imports...",sdkCall:n=>n.contacts.imports.list({...r,...e.status&&{status:e.status}}),onInteractive:n=>{console.log(zl(n.data)),T(n,"contacts imports list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var rc=new d("imports").description("Import contacts in bulk from a CSV file").addHelpText("after",m({context:`Import lifecycle:
554
554
  1. resend contacts imports create --file ./contacts.csv (returns the import id)
555
555
  2. resend contacts imports get <id> (poll until "completed")
556
556
  3. resend contacts imports list (review past imports)
557
557
 
558
558
  Imports run asynchronously. The create command returns immediately with an id while
559
- the file is processed in the background.`,examples:["resend contacts imports create --file ./contacts.csv","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports list --status completed"]})).addCommand(cc).addCommand(dc).addCommand(uc,{isDefault:!0});var pc=new c("list").alias("ls").description("List all contacts").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",d({context:`Contacts are global \u2014 they are not scoped to audiences or segments since the 2025 migration.
559
+ the file is processed in the background.`,examples:["resend contacts imports create --file ./contacts.csv","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports list --status completed"]})).addCommand(tc).addCommand(oc).addCommand(ic,{isDefault:!0});var nc=new d("list").alias("ls").description("List all contacts").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",m({context:`Contacts are global \u2014 they are not scoped to audiences or segments since the 2025 migration.
560
560
 
561
561
  Pagination: use --after or --before with a contact ID as the cursor.
562
562
  Only one of --after or --before may be used at a time.
563
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts list","resend contacts list --limit 25 --json","resend contacts list --after 479e3145-dd38-4932-8c0c-e58b548c9e76 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching contacts...",sdkCall:n=>n.contacts.list(r),onInteractive:n=>{console.log(yi(n.data)),E(n,"contacts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var fc=new c("remove-segment").description("Remove a contact from a segment").argument("[contactId]","Contact UUID or email address").argument("[segmentId]","Segment ID to remove the contact from").addHelpText("after",d({context:`The <contactId> argument accepts either a UUID or an email address.
564
- The <segmentId> argument must be a segment UUID (not an email).`,output:' {"id":"<segment-id>","deleted":true}',errorCodes:["auth_error","remove_segment_error"],examples:["resend contacts remove-segment e169aa45-1ecf-4183-9955-b1499d5701d3 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await g(e,ye,r),s=await g(t,Oe,r),a={...Yt(n),segmentId:s};await R({loading:"Removing contact from segment...",sdkCall:l=>l.contacts.segments.remove(a),errorCode:"remove_segment_error",successMsg:`Contact removed from segment: ${s}`},r)});var hc=new c("segments").description("List the segments a contact belongs to").argument("[id]","Contact UUID or email address").addHelpText("after",d({context:"The <id> argument accepts either a UUID or an email address.",output:' {"object":"list","data":[{"id":"<segment-uuid>","name":"Newsletter Subscribers","created_at":"..."}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts segments steve.wozniak@gmail.com","resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,ye,i);await k({loading:"Fetching segments...",sdkCall:n=>n.contacts.segments.list(Yt(r)),onInteractive:n=>console.log(gi(n.data))},i)});var gc=new c("topics").description("List a contact's topic subscriptions").argument("[id]","Contact UUID or email address").addHelpText("after",d({context:`The <id> argument accepts either a UUID or an email address.
563
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts list","resend contacts list --limit 25 --json","resend contacts list --after 479e3145-dd38-4932-8c0c-e58b548c9e76 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching contacts...",sdkCall:n=>n.contacts.list(r),onInteractive:n=>{console.log(Ai(n.data)),T(n,"contacts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var sc=new d("remove-segment").description("Remove a contact from a segment").argument("[contactId]","Contact UUID or email address").argument("[segmentId]","Segment ID to remove the contact from").addHelpText("after",m({context:`The <contactId> argument accepts either a UUID or an email address.
564
+ The <segmentId> argument must be a segment UUID (not an email).`,output:' {"id":"<segment-id>","deleted":true}',errorCodes:["auth_error","remove_segment_error"],examples:["resend contacts remove-segment e169aa45-1ecf-4183-9955-b1499d5701d3 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,be,r),s=await C(t,Ee,r),a={...zt(n),segmentId:s};await B({loading:"Removing contact from segment...",sdkCall:l=>l.contacts.segments.remove(a),errorCode:"remove_segment_error",successMsg:`Contact removed from segment: ${s}`},r)});var ac=new d("segments").description("List the segments a contact belongs to").argument("[id]","Contact UUID or email address").addHelpText("after",m({context:"The <id> argument accepts either a UUID or an email address.",output:' {"object":"list","data":[{"id":"<segment-uuid>","name":"Newsletter Subscribers","created_at":"..."}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts segments steve.wozniak@gmail.com","resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await F({loading:"Fetching segments...",sdkCall:n=>n.contacts.segments.list(zt(r)),onInteractive:n=>console.log(fi(n.data))},i)});var lc=new d("topics").description("List a contact's topic subscriptions").argument("[id]","Contact UUID or email address").addHelpText("after",m({context:`The <id> argument accepts either a UUID or an email address.
565
565
 
566
566
  Topics control which broadcast email types a contact receives.
567
567
  subscription values: "opt_in" (receiving) | "opt_out" (not receiving)
568
568
 
569
- Use "resend contacts update-topics <id>" to change subscription statuses.`,output:' {"object":"list","data":[{"id":"...","name":"Product Updates","description":"...","subscription":"opt_in"}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts topics steve.wozniak@gmail.com","resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,ye,i);await k({loading:"Fetching topic subscriptions...",sdkCall:n=>n.contacts.topics.list(zt(r)),onInteractive:n=>console.log(Zl(n.data))},i)});var Ac=new c("update").description("Update a contact's subscription status or custom properties").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--no-unsubscribed","Re-subscribe the contact (clears the global unsubscribe flag)").option("--properties <json>",`JSON object of properties to merge (e.g. '{"company":"Acme"}'); set a key to null to clear it`).addHelpText("after",d({context:`The <id> argument accepts either a UUID or an email address.
569
+ Use "resend contacts update-topics <id>" to change subscription statuses.`,output:' {"object":"list","data":[{"id":"...","name":"Product Updates","description":"...","subscription":"opt_in"}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts topics steve.wozniak@gmail.com","resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await F({loading:"Fetching topic subscriptions...",sdkCall:n=>n.contacts.topics.list(Vt(r)),onInteractive:n=>console.log(ql(n.data))},i)});var cc=new d("update").description("Update a contact's subscription status or custom properties").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--no-unsubscribed","Re-subscribe the contact (clears the global unsubscribe flag)").option("--properties <json>",`JSON object of properties to merge (e.g. '{"company":"Acme"}'); set a key to null to clear it`).addHelpText("after",m({context:`The <id> argument accepts either a UUID or an email address.
570
570
 
571
571
  Subscription toggle:
572
572
  --unsubscribed Sets unsubscribed: true \u2014 contact will not receive any broadcasts.
@@ -574,7 +574,7 @@ Subscription toggle:
574
574
  Omitting both flags leaves the subscription status unchanged.
575
575
 
576
576
  Properties: --properties merges the given JSON object with existing properties.
577
- Set a key to null to clear it: '{"company":null}'.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","invalid_properties","update_error"],examples:["resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --unsubscribed","resend contacts update acme@example.com --no-unsubscribed",`resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --properties '{"plan":"pro"}'`,"resend contacts update acme@example.com --unsubscribed --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,ye,i),n=xi(t.properties,i),s={...zt(r),...t.unsubscribed!==void 0&&{unsubscribed:t.unsubscribed},...n&&{properties:n}};await R({loading:"Updating contact...",sdkCall:a=>a.contacts.update(s),errorCode:"update_error",successMsg:`Contact updated: ${r}`},i)});X();var bc=new c("update-topics").description("Update a contact's topic subscription statuses").argument("[id]","Contact UUID or email address").option("--topics <json>",`JSON array of topic subscriptions (required) \u2014 e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]'`).addHelpText("after",d({context:`The <id> argument accepts either a UUID or an email address.
577
+ Set a key to null to clear it: '{"company":null}'.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","invalid_properties","update_error"],examples:["resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --unsubscribed","resend contacts update acme@example.com --no-unsubscribed",`resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --properties '{"plan":"pro"}'`,"resend contacts update acme@example.com --unsubscribed --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=yi(t.properties,i),s={...Vt(r),...t.unsubscribed!==void 0&&{unsubscribed:t.unsubscribed},...n&&{properties:n}};await B({loading:"Updating contact...",sdkCall:a=>a.contacts.update(s),errorCode:"update_error",successMsg:`Contact updated: ${r}`},i)});V();var dc=new d("update-topics").description("Update a contact's topic subscription statuses").argument("[id]","Contact UUID or email address").option("--topics <json>",`JSON array of topic subscriptions (required) \u2014 e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]'`).addHelpText("after",m({context:`The <id> argument accepts either a UUID or an email address.
578
578
 
579
579
  Non-interactive: --topics is required.
580
580
 
@@ -583,7 +583,7 @@ Topics JSON format:
583
583
  subscription values: "opt_in" | "opt_out"
584
584
 
585
585
  This operation replaces all topic subscriptions for the specified topics.
586
- Topics not included in the array are left unchanged.`,output:' {"id":"<contact-id>"}',errorCodes:["auth_error","missing_topics","invalid_topics","update_topics_error"],examples:[`resend contacts update-topics e169aa45-1ecf-4183-9955-b1499d5701d3 --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_out"},{"id":"07d84122-7224-4881-9c31-1c048e204602","subscription":"opt_in"}]' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,ye,i),n=await ee(i),s=t.topics;if(!s){(!w()||i.json)&&h({message:"Missing --topics flag.",code:"missing_topics"},{json:i.json});let u=await Z({message:`Topics JSON (e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]')`,placeholder:'[{"id":"topic-uuid","subscription":"opt_in"}]',validate:m=>m?void 0:"Required"});F(u)&&D("Cancelled."),s=u}let a=Ci(s,i),l=await ce("Updating topic subscriptions...",()=>n.contacts.topics.update({...zt(r),topics:a}),"update_topics_error",i);!i.json&&w()?console.log(`Topic subscriptions updated for contact: ${r}`):N(l,{json:i.json})});var yc=new c("contacts").description("Manage contacts").addHelpText("after",d({context:`Contacts are global entities (not audience-scoped since the 2025 migration).
586
+ Topics not included in the array are left unchanged.`,output:' {"id":"<contact-id>"}',errorCodes:["auth_error","missing_topics","invalid_topics","update_topics_error"],examples:[`resend contacts update-topics e169aa45-1ecf-4183-9955-b1499d5701d3 --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_out"},{"id":"07d84122-7224-4881-9c31-1c048e204602","subscription":"opt_in"}]' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=await Y(i),s=t.topics;if(!s){(!U()||i.json)&&g({message:"Missing --topics flag.",code:"missing_topics"},{json:i.json});let c=await z({message:`Topics JSON (e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]')`,placeholder:'[{"id":"topic-uuid","subscription":"opt_in"}]',validate:u=>u?void 0:"Required"});k(c)&&R("Cancelled."),s=c}let a=bi(s,i),l=await ae("Updating topic subscriptions...",()=>n.contacts.topics.update({...Vt(r),topics:a}),"update_topics_error",i);!i.json&&U()?console.log(`Topic subscriptions updated for contact: ${r}`):Q(l,{json:i.json})});var uc=new d("contacts").description("Manage contacts").addHelpText("after",m({context:`Contacts are global entities (not audience-scoped since the 2025 migration).
587
587
  Each contact is identified by a UUID or email address \u2014 both are accepted in all subcommands.
588
588
 
589
589
  Properties:
@@ -600,7 +600,7 @@ Segments:
600
600
  Manage membership with "resend contacts add-segment" and "resend contacts remove-segment".
601
601
 
602
602
  Imports:
603
- Bulk-import contacts from a CSV file with "resend contacts imports create --file <path>".`,examples:["resend contacts list","resend contacts create --email steve.wozniak@gmail.com --first-name Steve","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts update acme@example.com --unsubscribed","resend contacts delete e169aa45-1ecf-4183-9955-b1499d5701d3 --yes","resend contacts segments steve.wozniak@gmail.com","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts topics steve.wozniak@gmail.com",`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,"resend contacts imports create --file ./contacts.csv"]})).addCommand(tc).addCommand(ic).addCommand(pc,{isDefault:!0}).addCommand(Ac).addCommand(oc).addCommand(hc).addCommand(ec).addCommand(fc).addCommand(gc).addCommand(bc).addCommand(mc);var Cc=new c("docs").description("Open the Resend documentation in your browser").addHelpText("after",d({context:"Opens https://resend.com/docs in your default browser.",examples:["resend docs"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await Te(fe.documentation,o)});be();Ur();Zo();X();Uo();Kt();var Qr="TimeoutError",Kc=(e,t)=>{let o,i=new Promise((r,n)=>{o=setTimeout(()=>{let s=new Error(`Operation timed out after ${t}ms`);s.name=Qr,n(s)},t)});return Promise.race([e,i]).finally(()=>{clearTimeout(o)})};var tg=5e3;function og(e){return e instanceof Error&&e.name===Fr}async function ig(){try{let e=await fetch(Gr,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return{name:"CLI Version",status:"warn",message:`v${se} (could not check for updates)`};let t=await e.json();if(t.prerelease||t.draft)return{name:"CLI Version",status:"warn",message:`v${se} (could not check for updates)`};let o=t.tag_name?.replace(/^v/,"")??"unknown";return o===se?{name:"CLI Version",status:"pass",message:`v${se} (latest)`}:{name:"CLI Version",status:"warn",message:`v${se} (latest: v${o})`,detail:"Update available"}}catch{return{name:"CLI Version",status:"warn",message:`v${se} (could not check for updates)`}}}async function rg(e){let t;try{t=await Rt(e,void 0,{refresh:!1})}catch(n){return{name:"API Key",status:"fail",message:W(n,"Authentication failed"),detail:"Run: resend login"}}if(!t)return{name:"API Key",status:"fail",message:"No API key found",detail:"Run: resend login"};let o=t.type==="api_key"?t.key:t.access_token,i=t.profile?`, profile: ${t.profile}`:"",r=t.type==="oauth_grant"?`${t.source} (oauth)`:t.source;return{name:"API Key",status:"pass",message:`${At(o)} (source: ${r}${i})`}}async function ng(e){let t;try{t=await Rt(e)}catch(r){let n=og(r);return{name:"API Validation",status:n?"warn":"fail",message:W(r,"Authentication failed"),...n?{}:{detail:"Run: resend login"}}}if(!t)return{name:"API Validation",status:"fail",message:"Skipped \u2014 no API key"};let o=t.type==="api_key"?t.key:t.access_token,i=t.type==="api_key"?"API key":"credential";try{let r=new Gt(o),{data:n,error:s}=await Kc(r.domains.list(),tg);if(s){let m=s;return m.name==="restricted_api_key"?{name:"API Validation",status:"warn",message:`Sending-only ${i}`,detail:Qt}:m.name==="application_error"?{name:"API Validation",status:"warn",message:"Network error. Check your connection and try again"}:{name:"API Validation",status:"fail",message:`Invalid ${i}: ${s.message}`}}let a=n?.data??[],l=a.filter(m=>m.status==="verified"),u=a.filter(m=>m.status!=="verified");return a.length===0?{name:"Domains",status:"warn",message:"No domains configured",detail:"Add a domain at https://resend.com/domains"}:l.length===0?{name:"Domains",status:"warn",message:`${u.length} domain(s) pending verification`,detail:a.map(m=>`${m.name} (${m.status})`).join(", ")}:{name:"Domains",status:"pass",message:`${l.length} verified, ${u.length} pending`,detail:a.map(m=>`${m.name} (${m.status})`).join(", ")}}catch(r){return r instanceof Error&&r.name===Qr?{name:"API Validation",status:"warn",message:"Request timed out"}:{name:"API Validation",status:"fail",message:W(r,`Failed to validate ${i}`)}}}var kc=new c("doctor").description("Check CLI version, API key, and domain status").addHelpText("after",d({setup:!0,context:`Checks performed:
603
+ Bulk-import contacts from a CSV file with "resend contacts imports create --file <path>".`,examples:["resend contacts list","resend contacts create --email steve.wozniak@gmail.com --first-name Steve","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts update acme@example.com --unsubscribed","resend contacts delete e169aa45-1ecf-4183-9955-b1499d5701d3 --yes","resend contacts segments steve.wozniak@gmail.com","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts topics steve.wozniak@gmail.com",`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,"resend contacts imports create --file ./contacts.csv"]})).addCommand(Wl).addCommand(Vl).addCommand(nc,{isDefault:!0}).addCommand(cc).addCommand(Jl).addCommand(ac).addCommand(Ll).addCommand(sc).addCommand(lc).addCommand(dc).addCommand(rc);var mc=new d("docs").description("Open the Resend documentation in your browser").addHelpText("after",m({context:"Opens https://resend.com/docs in your default browser.",examples:["resend docs"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.documentation,o)});Ae();wr();Yo();V();So();Kt();var $r="TimeoutError",bc=(e,t)=>{let o,i=new Promise((r,n)=>{o=setTimeout(()=>{let s=new Error(`Operation timed out after ${t}ms`);s.name=$r,n(s)},t)});return Promise.race([e,i]).finally(()=>{clearTimeout(o)})};var mg=5e3;function pg(e){return e instanceof Error&&e.name===xr}async function fg(){try{let e=await fetch(jr,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`};let t=await e.json();if(t.prerelease||t.draft)return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`};let o=t.tag_name?.replace(/^v/,"")??"unknown";return o===ne?{name:"CLI Version",status:"pass",message:`v${ne} (latest)`}:{name:"CLI Version",status:"warn",message:`v${ne} (latest: v${o})`,detail:"Update available"}}catch{return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`}}}async function gg(e){let t;try{t=await Rt(e,void 0,{refresh:!1})}catch(n){return{name:"API Key",status:"fail",message:q(n,"Authentication failed"),detail:"Run: resend login"}}if(!t)return{name:"API Key",status:"fail",message:"No API key found",detail:"Run: resend login"};let o=t.type==="api_key"?t.key:t.access_token,i=t.profile?`, profile: ${t.profile}`:"",r=t.type==="oauth_grant"?`${t.source} (oauth)`:t.source;return{name:"API Key",status:"pass",message:`${ht(o)} (source: ${r}${i})`}}async function hg(e){let t;try{t=await Rt(e)}catch(r){let n=pg(r);return{name:"API Validation",status:n?"warn":"fail",message:q(r,"Authentication failed"),...n?{}:{detail:"Run: resend login"}}}if(!t)return{name:"API Validation",status:"fail",message:"Skipped \u2014 no API key"};let o=t.type==="api_key"?t.key:t.access_token,i=t.type==="api_key"?"API key":"credential";try{let r=new $t(o),{data:n,error:s}=await bc(r.domains.list(),mg);if(s){let u=s;return u.name==="restricted_api_key"?{name:"API Validation",status:"warn",message:`Sending-only ${i}`,detail:Ht}:u.name==="application_error"?{name:"API Validation",status:"warn",message:"Network error. Check your connection and try again"}:{name:"API Validation",status:"fail",message:`Invalid ${i}: ${s.message}`}}let a=n?.data??[],l=a.filter(u=>u.status==="verified"),c=a.filter(u=>u.status!=="verified");return a.length===0?{name:"Domains",status:"warn",message:"No domains configured",detail:"Add a domain at https://resend.com/domains"}:l.length===0?{name:"Domains",status:"warn",message:`${c.length} domain(s) pending verification`,detail:a.map(u=>`${u.name} (${u.status})`).join(", ")}:{name:"Domains",status:"pass",message:`${l.length} verified, ${c.length} pending`,detail:a.map(u=>`${u.name} (${u.status})`).join(", ")}}catch(r){return r instanceof Error&&r.name===$r?{name:"API Validation",status:"warn",message:"Request timed out"}:{name:"API Validation",status:"fail",message:q(r,`Failed to validate ${i}`)}}}var yc=new d("doctor").description("Check CLI version, API key, and domain status").addHelpText("after",m({setup:!0,context:`Checks performed:
604
604
  CLI Version Is the installed version up to date?
605
605
  API Key Is a key present (--api-key, RESEND_API_KEY, or credentials file)?
606
606
  Credential Storage Which backend is storing credentials (secure storage vs plaintext file)?
@@ -613,39 +613,39 @@ Imports:
613
613
  ]
614
614
  }
615
615
  status values: "pass" | "warn" | "fail"
616
- Exit code 1 if any check has status "fail"`,examples:["resend doctor","resend doctor --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=[],r=w()&&!o.json;r&&console.log(`
616
+ Exit code 1 if any check has status "fail"`,examples:["resend doctor","resend doctor --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=[],r=U()&&!o.json;r&&console.log(`
617
617
  Resend Doctor
618
- `);let n=r?ae("Checking CLI version..."):null,s=await ig();i.push(s),s.status==="warn"?n?.warn(s.message):n?.stop(s.message),n=r?ae("Checking API key..."):null;let a=await rg(o.apiKey);i.push(a),a.status==="fail"?n?.fail(a.message):n?.stop(a.message),n=r?ae("Checking credential storage..."):null;let l=await rt(),u=Se(),m=l.isSecure,p={name:"Credential Storage",status:m?"pass":"warn",message:m?l.name:"plaintext file",...!m&&process.env.RESEND_CREDENTIAL_STORE!=="file"&&(u?.storage==="secure_storage"||process.env.RESEND_CREDENTIAL_STORE==="secure_storage")?{detail:"Secure backend unavailable despite secure storage preference \u2014 falling back to plaintext"}:{}};i.push(p),p.status==="warn"?n?.warn(p.message):n?.stop(p.message),n=r?ae("Validating API key & domains..."):null;let f=await ng(o.apiKey);i.push(f),f.status==="fail"?n?.fail(f.message):f.status==="warn"?n?.warn(f.message):n?.stop(f.message);let y=i.some(A=>A.status==="fail");!o.json&&w()?console.log(""):N({ok:!y,checks:i},{json:o.json}),y&&process.exit(1)});var _c=new c("create").description("Start a claim for a domain another Resend account has verified").option("--name <domain>","Domain name to claim (e.g. example.com)").addOption(new M("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").addHelpText("after",d({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" domain_claim object with the placeholder domain_id and the TXT record to add to DNS.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains claim create --name example.com","resend domains claim create --name example.com --region eu-west-1","resend domains claim create --name example.com --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.name,{message:"Domain name to claim",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await j({loading:"Starting domain claim...",sdkCall:r=>r.domains.claims.create({name:i,...e.region&&{region:e.region},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...e.openTracking!==void 0&&{openTracking:e.openTracking},...e.clickTracking!==void 0&&{clickTracking:e.clickTracking},...e.trackingSubdomain!==void 0&&{trackingSubdomain:e.trackingSubdomain}}),onInteractive:r=>{console.log(`Claim started for ${r.name} (claim id: ${r.id}, domain id: ${r.domain_id})`),console.log(`Status: ${r.status}`),console.log(`
618
+ `);let n=r?se("Checking CLI version..."):null,s=await fg();i.push(s),s.status==="warn"?n?.warn(s.message):n?.stop(s.message),n=r?se("Checking API key..."):null;let a=await gg(o.apiKey);i.push(a),a.status==="fail"?n?.fail(a.message):n?.stop(a.message),n=r?se("Checking credential storage..."):null;let l=await it(),c=ve(),u=l.isSecure,p={name:"Credential Storage",status:u?"pass":"warn",message:u?l.name:"plaintext file",...!u&&process.env.RESEND_CREDENTIAL_STORE!=="file"&&(c?.storage==="secure_storage"||process.env.RESEND_CREDENTIAL_STORE==="secure_storage")?{detail:"Secure backend unavailable despite secure storage preference \u2014 falling back to plaintext"}:{}};i.push(p),p.status==="warn"?n?.warn(p.message):n?.stop(p.message),n=r?se("Validating API key & domains..."):null;let f=await hg(o.apiKey);i.push(f),f.status==="fail"?n?.fail(f.message):f.status==="warn"?n?.warn(f.message):n?.stop(f.message);let b=i.some(h=>h.status==="fail");!o.json&&U()?console.log(""):Q({ok:!b,checks:i},{json:o.json}),b&&process.exit(1)});var Cc=new d("create").description("Start a claim for a domain another Resend account has verified").option("--name <domain>","Domain name to claim (e.g. example.com)").addOption(new L("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").addHelpText("after",m({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" domain_claim object with the placeholder domain_id and the TXT record to add to DNS.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains claim create --name example.com","resend domains claim create --name example.com --region eu-west-1","resend domains claim create --name example.com --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Domain name to claim",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Starting domain claim...",sdkCall:r=>r.domains.claims.create({name:i,...e.region&&{region:e.region},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...e.openTracking!==void 0&&{openTracking:e.openTracking},...e.clickTracking!==void 0&&{clickTracking:e.clickTracking},...e.trackingSubdomain!==void 0&&{trackingSubdomain:e.trackingSubdomain}}),onInteractive:r=>{console.log(`Claim started for ${r.name} (claim id: ${r.id}, domain id: ${r.domain_id})`),console.log(`Status: ${r.status}`),console.log(`
619
619
  Add this TXT record at your DNS provider:`),console.log(` ${r.record.name} TXT ${r.record.value}`),console.log(`
620
- Then run \`resend domains claim verify ${r.domain_id}\`.`)}},o)});var Fc=new c("get").description("Retrieve the latest claim for a domain").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",d({output:` domain_claim object: status, domain_id, the TXT record, blocked_reason, expires_at.
620
+ Then run \`resend domains claim verify ${r.domain_id}\`.`)}},o)});var wc=new d("get").description("Retrieve the latest claim for a domain").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",m({output:` domain_claim object: status, domain_id, the TXT record, blocked_reason, expires_at.
621
621
 
622
- Claim status values: pending | verified | completed | blocked | expired | superseded | canceled | failed`,errorCodes:["auth_error","fetch_error","not_found"],examples:["resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,De,i);await I({loading:"Fetching domain claim...",sdkCall:n=>n.domains.claims.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${n.status}`),console.log(`Claim ID: ${n.id}`),console.log(`Domain ID: ${n.domain_id}`),n.blocked_reason&&console.log(`Blocked: ${n.blocked_reason}`),console.log(`Expires: ${n.expires_at}`),console.log(`
623
- TXT record:`),console.log(` ${n.record.name} TXT ${n.record.value}`)}},i)});var Rc=new c("verify").description("Trigger DNS verification and transfer for a domain claim").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",d({output:" domain_claim object (status stays pending while verification runs async).",errorCodes:["auth_error","verify_error","not_found"],examples:["resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,De,i);await R({loading:"Verifying domain claim...",sdkCall:n=>n.domains.claims.verify(r),errorCode:"verify_error",successMsg:`Domain claim verification started. Check status with resend domains claim get ${r}.`},i)});var Dc=new c("claim").description("Claim a domain already verified by another Resend account").addHelpText("after",d({context:`Claim lifecycle:
622
+ Claim status values: pending | verified | completed | blocked | expired | superseded | canceled | failed`,errorCodes:["auth_error","fetch_error","not_found"],examples:["resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await $({loading:"Fetching domain claim...",sdkCall:n=>n.domains.claims.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${n.status}`),console.log(`Claim ID: ${n.id}`),console.log(`Domain ID: ${n.domain_id}`),n.blocked_reason&&console.log(`Blocked: ${n.blocked_reason}`),console.log(`Expires: ${n.expires_at}`),console.log(`
623
+ TXT record:`),console.log(` ${n.record.name} TXT ${n.record.value}`)}},i)});var Uc=new d("verify").description("Trigger DNS verification and transfer for a domain claim").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",m({output:" domain_claim object (status stays pending while verification runs async).",errorCodes:["auth_error","verify_error","not_found"],examples:["resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await B({loading:"Verifying domain claim...",sdkCall:n=>n.domains.claims.verify(r),errorCode:"verify_error",successMsg:`Domain claim verification started. Check status with resend domains claim get ${r}.`},i)});var Sc=new d("claim").description("Claim a domain already verified by another Resend account").addHelpText("after",m({context:`Claim lifecycle:
624
624
  1. resend domains claim create --name example.com (returns the TXT record)
625
625
  2. Configure the TXT record at your DNS provider
626
626
  3. resend domains claim verify <domain-id> (trigger verification + transfer)
627
627
  4. resend domains claim get <domain-id> (poll until "completed")
628
628
  5. The transferred domain has NEW DKIM records \u2014 update DNS, then run:
629
- resend domains verify <domain-id>`,examples:["resend domains claim create --name example.com","resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).addCommand(_c).addCommand(Fc).addCommand(Rc);var Tc=new c("create").description("Create a new domain and receive DNS records to configure").option("--name <domain>","Domain name (e.g. example.com)").addOption(new M("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).addOption(new M("--tls <mode>","TLS mode (default: opportunistic)").choices(["opportunistic","enforced"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--sending","Enable sending capability (default: enabled)").option("--receiving","Enable receiving capability (default: disabled)").addHelpText("after",d({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" Full domain object with DNS records array to configure in your DNS provider.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains create --name example.com","resend domains create --name example.com --region eu-west-1 --tls enforced","resend domains create --name example.com --tracking-subdomain track","resend domains create --name example.com --custom-return-path bounce","resend domains create --name example.com --receiving --json","resend domains create --name example.com --sending --receiving --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.name,{message:"Domain name",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await j({loading:"Creating domain...",sdkCall:r=>r.domains.create({name:i,...e.region&&{region:e.region},...e.tls&&{tls:e.tls},...e.trackingSubdomain&&{trackingSubdomain:e.trackingSubdomain},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...(e.sending||e.receiving)&&{capabilities:{...e.sending&&{sending:"enabled"},...e.receiving&&{receiving:"enabled"}}}}),onInteractive:r=>{console.log(`Domain created: ${r.name} (id: ${r.id})`),console.log(`
630
- DNS Records to configure:`),console.log(li(r.records,r.name)),console.log(`
631
- Run \`resend domains verify ${r.id}\` after configuring DNS.`)}},o)});var Oc=new c("delete").alias("rm").description("Delete a domain").argument("[id]","Domain ID").option("--yes","Skip confirmation prompt").addHelpText("after",d({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"domain","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes","resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,De,i);await z(r.id,!!t.yes,{confirmMessage:`Delete domain "${r.label}"?
629
+ resend domains verify <domain-id>`,examples:["resend domains claim create --name example.com","resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).addCommand(Cc).addCommand(wc).addCommand(Uc);var vc=new d("create").description("Create a new domain and receive DNS records to configure").option("--name <domain>","Domain name (e.g. example.com)").addOption(new L("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).addOption(new L("--tls <mode>","TLS mode (default: opportunistic)").choices(["opportunistic","enforced"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--sending","Enable sending capability (default: enabled)").option("--receiving","Enable receiving capability (default: disabled)").addHelpText("after",m({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" Full domain object with DNS records array to configure in your DNS provider.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains create --name example.com","resend domains create --name example.com --region eu-west-1 --tls enforced","resend domains create --name example.com --tracking-subdomain track","resend domains create --name example.com --custom-return-path bounce","resend domains create --name example.com --receiving --json","resend domains create --name example.com --sending --receiving --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Domain name",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating domain...",sdkCall:r=>r.domains.create({name:i,...e.region&&{region:e.region},...e.tls&&{tls:e.tls},...e.trackingSubdomain&&{trackingSubdomain:e.trackingSubdomain},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...(e.sending||e.receiving)&&{capabilities:{...e.sending&&{sending:"enabled"},...e.receiving&&{receiving:"enabled"}}}}),onInteractive:r=>{console.log(`Domain created: ${r.name} (id: ${r.id})`),console.log(`
630
+ DNS Records to configure:`),console.log(si(r.records,r.name)),console.log(`
631
+ Run \`resend domains verify ${r.id}\` after configuring DNS.`)}},o)});var Kc=new d("delete").alias("rm").description("Delete a domain").argument("[id]","Domain ID").option("--yes","Skip confirmation prompt").addHelpText("after",m({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"domain","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes","resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,_e,i);await te(r.id,!!t.yes,{confirmMessage:`Delete domain "${r.label}"?
632
632
  ID: ${r.id}
633
- This cannot be undone.`,loading:"Deleting domain...",object:"domain",successMsg:"Domain deleted",sdkCall:n=>n.domains.remove(r.id)},i)});var Ec=new c("get").description("Retrieve a domain with its DNS records and current verification status").argument("[id]","Domain ID").addHelpText("after",d({output:` Full domain object including records array and current status.
633
+ This cannot be undone.`,loading:"Deleting domain...",object:"domain",successMsg:"Domain deleted",sdkCall:n=>n.domains.remove(r.id)},i)});var xc=new d("get").description("Retrieve a domain with its DNS records and current verification status").argument("[id]","Domain ID").addHelpText("after",m({output:` Full domain object including records array and current status.
634
634
 
635
- Domain status values: not_started | pending | verified | failed | partially_verified | partially_failed`,errorCodes:["auth_error","fetch_error"],examples:["resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,De,i);await I({loading:"Fetching domain...",sdkCall:n=>n.domains.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${wa(n.status)}`),console.log(`ID: ${n.id}`),console.log(`Region: ${n.region}`),console.log(`Created: ${n.created_at}`),n.open_tracking!==void 0&&console.log(`Open tracking: ${n.open_tracking?"enabled":"disabled"}`),n.click_tracking!==void 0&&console.log(`Click tracking: ${n.click_tracking?"enabled":"disabled"}`),n.tracking_subdomain&&console.log(`Tracking subdomain: ${n.tracking_subdomain}`),n.records.length>0&&(console.log(`
636
- DNS Records:`),console.log(li(n.records,n.name)))}},i)});var Bc=new c("list").alias("ls").description("List all domains").option("--limit <n>","Maximum number of domains to return (1-100)","10").option("--after <cursor>","Return domains after this cursor (next page)").option("--before <cursor>","Return domains before this cursor (previous page)").addHelpText("after",d({output:` {"object":"list","data":[...],"has_more":true}
637
- The list response does not include DNS records \u2014 use "resend domains get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend domains list","resend domains list --limit 25 --json","resend domains list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching domains...",sdkCall:n=>n.domains.list(r),onInteractive:n=>{console.log(xa(n.data)),E(n,"domains list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Ic=new c("update").description("Update domain settings: TLS mode, tracking, and tracking subdomain").argument("[id]","Domain ID").addOption(new M("--tls <mode>","TLS mode").choices(["opportunistic","enforced"])).option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").addHelpText("after",d({output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend domains update <id> --tls enforced","resend domains update <id> --open-tracking --click-tracking","resend domains update <id> --tracking-subdomain track","resend domains update <id> --no-open-tracking --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,De,i),{tls:n,openTracking:s,clickTracking:a,trackingSubdomain:l}=t;!n&&s===void 0&&a===void 0&&!l&&h({message:"Provide at least one option to update: --tls, --open-tracking, --click-tracking, or --tracking-subdomain.",code:"no_changes"},{json:i.json});let u={id:r};n&&(u.tls=n),s!==void 0&&(u.openTracking=s),a!==void 0&&(u.clickTracking=a),l&&(u.trackingSubdomain=l),await R({loading:"Updating domain...",sdkCall:m=>m.domains.update(u),errorCode:"update_error",successMsg:`Domain updated: ${r}`},i)});var jc=new c("verify").description("Trigger async DNS verification for a domain").argument("[id]","Domain ID").addHelpText("after",d({context:`Verification is async \u2014 the domain enters "pending" status while DNS records are checked.
638
- Poll the status with: resend domains get <id>`,output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","verify_error"],examples:["resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,De,i);await R({loading:"Verifying domain...",sdkCall:n=>n.domains.verify(r),errorCode:"verify_error",successMsg:`Domain verification started. Check status with resend domains get ${r}.`},i)});var Pc=new c("domains").description("Manage verified sending and receiving domains").addHelpText("after",d({context:`Domain lifecycle:
635
+ Domain status values: not_started | pending | verified | failed | partially_verified | partially_failed`,errorCodes:["auth_error","fetch_error"],examples:["resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await $({loading:"Fetching domain...",sdkCall:n=>n.domains.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${fa(n.status)}`),console.log(`ID: ${n.id}`),console.log(`Region: ${n.region}`),console.log(`Created: ${n.created_at}`),n.open_tracking!==void 0&&console.log(`Open tracking: ${n.open_tracking?"enabled":"disabled"}`),n.click_tracking!==void 0&&console.log(`Click tracking: ${n.click_tracking?"enabled":"disabled"}`),n.tracking_subdomain&&console.log(`Tracking subdomain: ${n.tracking_subdomain}`),n.records.length>0&&(console.log(`
636
+ DNS Records:`),console.log(si(n.records,n.name)))}},i)});var kc=new d("list").alias("ls").description("List all domains").option("--limit <n>","Maximum number of domains to return (1-100)","10").option("--after <cursor>","Return domains after this cursor (next page)").option("--before <cursor>","Return domains before this cursor (previous page)").addHelpText("after",m({output:` {"object":"list","data":[...],"has_more":true}
637
+ The list response does not include DNS records \u2014 use "resend domains get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend domains list","resend domains list --limit 25 --json","resend domains list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching domains...",sdkCall:n=>n.domains.list(r),onInteractive:n=>{console.log(pa(n.data)),T(n,"domains list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Fc=new d("update").description("Update domain settings: TLS mode, tracking, and tracking subdomain").argument("[id]","Domain ID").addOption(new L("--tls <mode>","TLS mode").choices(["opportunistic","enforced"])).option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").addHelpText("after",m({output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend domains update <id> --tls enforced","resend domains update <id> --open-tracking --click-tracking","resend domains update <id> --tracking-subdomain track","resend domains update <id> --no-open-tracking --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i),{tls:n,openTracking:s,clickTracking:a,trackingSubdomain:l}=t;!n&&s===void 0&&a===void 0&&!l&&g({message:"Provide at least one option to update: --tls, --open-tracking, --click-tracking, or --tracking-subdomain.",code:"no_changes"},{json:i.json});let c={id:r};n&&(c.tls=n),s!==void 0&&(c.openTracking=s),a!==void 0&&(c.clickTracking=a),l&&(c.trackingSubdomain=l),await B({loading:"Updating domain...",sdkCall:u=>u.domains.update(c),errorCode:"update_error",successMsg:`Domain updated: ${r}`},i)});var Rc=new d("verify").description("Trigger async DNS verification for a domain").argument("[id]","Domain ID").addHelpText("after",m({context:`Verification is async \u2014 the domain enters "pending" status while DNS records are checked.
638
+ Poll the status with: resend domains get <id>`,output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","verify_error"],examples:["resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await B({loading:"Verifying domain...",sdkCall:n=>n.domains.verify(r),errorCode:"verify_error",successMsg:`Domain verification started. Check status with resend domains get ${r}.`},i)});var _c=new d("domains").description("Manage verified sending and receiving domains").addHelpText("after",m({context:`Domain lifecycle:
639
639
  1. resend domains create --name example.com (get DNS records)
640
640
  2. Configure DNS records at your DNS provider
641
641
  3. resend domains verify <id> (trigger verification)
642
- 4. resend domains get <id> (poll until "verified")`,examples:["resend domains list","resend domains create --name example.com --region us-east-1","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains update <id> --tls enforced --open-tracking","resend domains delete <id> --yes","resend domains claim create --name example.com"]})).addCommand(Tc).addCommand(jc).addCommand(Ec).addCommand(Bc,{isDefault:!0}).addCommand(Ic).addCommand(Oc).addCommand(Dc);var qe={resource:"email",resourcePlural:"emails",fetchItems:(e,{limit:t,after:o})=>e.emails.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function $c(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function Ui(e){let t=e.map(o=>[o.filename??"(unnamed)",o.content_type,String(o.size),o.id]);return _(["Filename","Content-Type","Size (bytes)","ID"],t,"(no attachments)")}var Gc=new c("attachment").description("Retrieve a single attachment from a sent (outbound) email").argument("[emailId]","Email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",d({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
643
- resend emails attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails attachment <email-id> <attachment-id>","resend emails attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await g(e,qe,r),s=await g(t,$c(n),r);await I({loading:"Fetching attachment...",sdkCall:a=>a.emails.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var Hc=new c("attachments").description("List attachments on a sent (outbound) email").argument("[emailId]","Email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",d({context:`Each attachment has a download_url (signed, expires ~1 hour).
642
+ 4. resend domains get <id> (poll until "verified")`,examples:["resend domains list","resend domains create --name example.com --region us-east-1","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains update <id> --tls enforced --open-tracking","resend domains delete <id> --yes","resend domains claim create --name example.com"]})).addCommand(vc).addCommand(Rc).addCommand(xc).addCommand(kc,{isDefault:!0}).addCommand(Fc).addCommand(Kc).addCommand(Sc);var qe={resource:"email",resourcePlural:"emails",fetchItems:(e,{limit:t,after:o})=>e.emails.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function Dc(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function Ui(e){let t=e.map(o=>[o.filename??"(unnamed)",o.content_type,String(o.size),o.id]);return _(["Filename","Content-Type","Size (bytes)","ID"],t,"(no attachments)")}var Ec=new d("attachment").description("Retrieve a single attachment from a sent (outbound) email").argument("[emailId]","Email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",m({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
643
+ resend emails attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails attachment <email-id> <attachment-id>","resend emails attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,qe,r),s=await C(t,Dc(n),r);await $({loading:"Fetching attachment...",sdkCall:a=>a.emails.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var Bc=new d("attachments").description("List attachments on a sent (outbound) email").argument("[emailId]","Email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",m({context:`Each attachment has a download_url (signed, expires ~1 hour).
644
644
  Use the attachment sub-command to retrieve a single attachment with its download URL:
645
645
  resend emails attachment <emailId> <attachmentId>
646
646
 
647
647
  content_disposition: "inline" means the attachment is embedded in the HTML body (e.g. an image).
648
- content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails attachments <email-id>","resend emails attachments <email-id> --json","resend emails attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,qe,i),n=O(t.limit,i),s=P(n,t.after,t.before,i);await k({loading:"Fetching attachments...",sdkCall:a=>a.emails.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(Ui(a.data)),E(a,`emails attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});X();var Qc=new c("batch").description("Send up to 100 emails in a single API request from a JSON file").option("--file <path>",'Path to a JSON file containing an array of email objects (use "-" for stdin; required in non-interactive mode)').option("--react-email <path>","Path to a React Email template (.tsx) \u2014 rendered HTML is set on every email in the batch").option("--idempotency-key <key>","Deduplicate this batch request using this key").addOption(new M("--batch-validation <mode>","Validation mode: strict (default, fail all on error) or permissive (partial success)").choices(["strict","permissive"])).addHelpText("after",d({context:`Non-interactive: --file
648
+ content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails attachments <email-id>","resend emails attachments <email-id> --json","resend emails attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,qe,i),n=O(t.limit,i),s=G(n,t.after,t.before,i);await F({loading:"Fetching attachments...",sdkCall:a=>a.emails.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(Ui(a.data)),T(a,`emails attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});V();var Oc=new d("batch").description("Send up to 100 emails in a single API request from a JSON file").option("--file <path>",'Path to a JSON file containing an array of email objects (use "-" for stdin; required in non-interactive mode)').option("--react-email <path>","Path to a React Email template (.tsx) \u2014 rendered HTML is set on every email in the batch").option("--idempotency-key <key>","Deduplicate this batch request using this key").addOption(new L("--batch-validation <mode>","Validation mode: strict (default, fail all on error) or permissive (partial success)").choices(["strict","permissive"])).addHelpText("after",m({context:`Non-interactive: --file
649
649
  Limit: 100 emails per request (API hard limit \u2014 warned if exceeded)
650
650
  Unsupported per-email fields: attachments
651
651
 
@@ -653,55 +653,55 @@ File format (--file path):
653
653
  [
654
654
  {"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","text":"Hi"},
655
655
  {"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","html":"<b>Hi</b>","scheduled_at":"in 1 hour","tags":[{"name":"campaign","value":"welcome"}]}
656
- ]`,output:' [{"id":"<email-id>"},{"id":"<email-id>"}]',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","react_email_build_error","react_email_render_error","batch_error"],examples:["resend emails batch --file ./emails.json","resend emails batch --file ./emails.json --batch-validation permissive",`echo '[{"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hi","text":"Hello"}]' | resend emails batch --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await ee(o,{permission:"sending_access"}),r=await T(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email objects.",code:"missing_file"},o),n=ie(r,o),s;try{s=JSON.parse(n)}catch{h({message:"File content is not valid JSON.",code:"invalid_json"},{json:o.json})}Array.isArray(s)||h({message:"File content must be a JSON array of email objects.",code:"invalid_format"},{json:o.json});let a=s;if(a.length>100&&console.warn(`Warning: ${a.length} emails exceeds the 100-email limit. The API may reject this request.`),e.reactEmail){let f=await Me(e.reactEmail,o);for(let y of a)y.html=f}let l={reply_to:"replyTo",scheduled_at:"scheduledAt",topic_id:"topicId"};for(let f=0;f<a.length;f++){let y=a[f];(y===null||typeof y!="object"||Array.isArray(y))&&h({message:`Email at index ${f} must be a JSON object.`,code:"invalid_format"},{json:o.json}),"attachments"in y&&h({message:`Email at index ${f} contains "attachments", which is not supported in batch sends.`,code:"batch_error"},{json:o.json});let A=y;for(let[b,x]of Object.entries(l))b in A&&(A[x]??=A[b],delete A[b])}let u=await ce("Sending batch...",()=>{let f={...e.idempotencyKey&&{idempotencyKey:e.idempotencyKey},...e.batchValidation&&{batchValidation:e.batchValidation}};return i.batch.send(a,Object.keys(f).length>0?f:void 0)},"batch_error",o),m=u.data,p=u.errors;if(!o.json&&w()){console.log(`Sent ${m.length} email${m.length===1?"":"s"}`);for(let f of m)console.log(` ${f.id}`);if(p&&p.length>0){console.warn(`
657
- ${p.length} email${p.length===1?"":"s"} failed:`);for(let f of p)console.warn(` [${f.index}] ${f.message}`)}}else N(p&&p.length>0?{data:m,errors:p}:m,{json:o.json})});var Nc=new c("cancel").description("Cancel a scheduled email").argument("[id]","Email ID").addHelpText("after",d({output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend emails cancel <email-id>","resend emails cancel <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,qe,i);await R({loading:"Cancelling email...",sdkCall:n=>n.emails.cancel(r),errorCode:"cancel_error",successMsg:`Email cancelled: ${r}`},i)});var Mc=new c("get").description("Retrieve a sent email by ID").argument("[id]","Email ID").addHelpText("after",d({output:' {"object":"email","id":"<uuid>","message_id":"<111-222-333@email.example.com>","from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","html":"<p>Hi</p>","text":"Hi","last_event":"delivered","created_at":"<date>","scheduled_at":null,"bcc":null,"cc":null,"reply_to":null}',errorCodes:["auth_error","fetch_error"],examples:["resend emails get <email-id>","resend emails get <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,qe,i);await I({loading:"Fetching email...",sdkCall:n=>n.emails.get(r),onInteractive:n=>{console.log(`From: ${n.from}`),console.log(`To: ${n.to.join(", ")}`),console.log(`Subject: ${n.subject}`),console.log(`Message-ID: ${n.message_id}`),console.log(`Status: ${n.last_event}`),console.log(`Date: ${n.created_at}`),n.scheduled_at&&console.log(`Scheduled: ${n.scheduled_at}`)}},i)});function sg(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.last_event??"\u2014",o.created_at,o.id]});return _(["From","To","Subject","Status","Created","ID"],t,"(no sent emails)")}var qc=new c("list").alias("ls").description('List sent emails \u2014 returns summary (use "get <id>" for full details)').option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({context:"Lists emails sent by your team. For emails received by your domain, use: resend emails receiving list",output:' {"object":"list","has_more":false,"data":[{"id":"...","message_id":"<111-222-333@email.example.com>","to":["..."],"from":"...","subject":"...","created_at":"...","last_event":"delivered|opened|...","scheduled_at":null}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails list","resend emails list --limit 5","resend emails list --after <email-id> --limit 10","resend emails list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching sent emails...",sdkCall:n=>n.emails.list(r),onInteractive:n=>{console.log(sg(n.data)),E(n,"emails list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});function So(e){if(e!==void 0)return e.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function ag(e){let t=Object.entries(e).map(([o,i])=>[o,String(i)]);return _(["Metric","Value"],t,"(no metrics)")}function lg(e,t){let i=[...Object.keys(e[0]??{}).filter(n=>!t.includes(n)),...t],r=e.map(n=>i.map(s=>String(n[s]??"")));return _(i,r,"(no breakdown rows)")}var Lc=new c("metrics").description("Retrieve account-level email metrics").option("--start-date <date>","ISO 8601 date/datetime, defaults to 6 days before --end-date").option("--end-date <date>","ISO 8601 date/datetime, defaults to now").option("--timezone <tz>","IANA timezone, e.g. America/New_York, defaults to UTC").addOption(new M("--granularity <granularity>",'Bucket size used when "period" is a dimension (default: daily)').choices(["hourly","daily","weekly","monthly"])).option("--metrics <list>","Comma-separated metrics to include, defaults to all").option("--dimensions <list>","Comma-separated dimensions to break down by: period, domain, email, broadcast").option("--domain-id <list>","Comma-separated sending domain IDs (max 100)").option("--email-id <list>",'Comma-separated email IDs (max 100). Cannot be combined with the "broadcast" dimension or --broadcast-id').option("--broadcast-id <list>",'Comma-separated broadcast IDs (max 100). Cannot be combined with the "email" dimension or --email-id').addHelpText("after",d({output:' {"object":"metrics","start_date":"...","end_date":"...","metrics":["sent","delivered"],"dimensions":[],"granularity":"daily","totals":{"sent":100,"delivered":95}}',errorCodes:["auth_error","invalid_options","fetch_error"],examples:["resend emails metrics","resend emails metrics --start-date 2026-07-01 --end-date 2026-07-08","resend emails metrics --dimensions period,broadcast --broadcast-id <broadcast-id>","resend emails metrics --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=So(e.dimensions),r=So(e.emailId),n=So(e.broadcastId),s=(i?.includes("email")??!1)||e.emailId!==void 0,a=(i?.includes("broadcast")??!1)||e.broadcastId!==void 0;s&&a&&h({message:'The "broadcast" dimension/--broadcast-id cannot be combined with the "email" dimension/--email-id.',code:"invalid_options"},{json:o.json});let l=So(e.metrics);await I({loading:"Fetching email metrics...",sdkCall:u=>u.emails.metrics({startDate:e.startDate,endDate:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:l,dimensions:i,domainId:So(e.domainId),emailId:r,broadcastId:n}),onInteractive:u=>{console.log(`Metrics for ${u.start_date} to ${u.end_date} (${u.granularity} granularity)`),console.log(),console.log("Totals:"),console.log(ag(u.totals)),u.data&&u.data.length>0&&(console.log(),console.log(`Breakdown by ${u.dimensions.join(", ")}:`),console.log(lg(u.data,u.metrics)))}},o)});var xt={resource:"received email",resourcePlural:"received emails",fetchItems:(e,{limit:t,after:o})=>e.emails.receiving.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function Wc(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.receiving.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function Jc(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.created_at,o.id]});return _(["From","To","Subject","Created At","ID"],t,"(no received emails)")}var Vc=new c("attachment").description("Retrieve a single attachment from a received (inbound) email").argument("[emailId]","Received email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",d({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
658
- resend emails receiving attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await g(e,xt,r),s=await g(t,Wc(n),r);await I({loading:"Fetching attachment...",sdkCall:a=>a.emails.receiving.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var zc=new c("attachments").description("List attachments on a received (inbound) email").argument("[emailId]","Received email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",d({context:`Each attachment has a download_url (signed, expires ~1 hour).
656
+ ]`,output:' [{"id":"<email-id>"},{"id":"<email-id>"}]',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","react_email_build_error","react_email_render_error","batch_error"],examples:["resend emails batch --file ./emails.json","resend emails batch --file ./emails.json --batch-validation permissive",`echo '[{"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hi","text":"Hello"}]' | resend emails batch --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o,{permission:"sending_access"}),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email objects.",code:"missing_file"},o),n=oe(r,o),s;try{s=JSON.parse(n)}catch{g({message:"File content is not valid JSON.",code:"invalid_json"},{json:o.json})}Array.isArray(s)||g({message:"File content must be a JSON array of email objects.",code:"invalid_format"},{json:o.json});let a=s;if(a.length>100&&console.warn(`Warning: ${a.length} emails exceeds the 100-email limit. The API may reject this request.`),e.reactEmail){let f=await Me(e.reactEmail,o);for(let b of a)b.html=f}let l={reply_to:"replyTo",scheduled_at:"scheduledAt",topic_id:"topicId"};for(let f=0;f<a.length;f++){let b=a[f];(b===null||typeof b!="object"||Array.isArray(b))&&g({message:`Email at index ${f} must be a JSON object.`,code:"invalid_format"},{json:o.json}),"attachments"in b&&g({message:`Email at index ${f} contains "attachments", which is not supported in batch sends.`,code:"batch_error"},{json:o.json});let h=b;for(let[A,w]of Object.entries(l))A in h&&(h[w]??=h[A],delete h[A])}let c=await ae("Sending batch...",()=>{let f={...e.idempotencyKey&&{idempotencyKey:e.idempotencyKey},...e.batchValidation&&{batchValidation:e.batchValidation}};return i.batch.send(a,Object.keys(f).length>0?f:void 0)},"batch_error",o),u=c.data,p=c.errors;if(!o.json&&U()){console.log(`Sent ${u.length} email${u.length===1?"":"s"}`);for(let f of u)console.log(` ${f.id}`);if(p&&p.length>0){console.warn(`
657
+ ${p.length} email${p.length===1?"":"s"} failed:`);for(let f of p)console.warn(` [${f.index}] ${f.message}`)}}else Q(p&&p.length>0?{data:u,errors:p}:u,{json:o.json})});var Tc=new d("cancel").description("Cancel a scheduled email").argument("[id]","Email ID").addHelpText("after",m({output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend emails cancel <email-id>","resend emails cancel <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,qe,i);await B({loading:"Cancelling email...",sdkCall:n=>n.emails.cancel(r),errorCode:"cancel_error",successMsg:`Email cancelled: ${r}`},i)});var Ic=new d("get").description("Retrieve a sent email by ID").argument("[id]","Email ID").addHelpText("after",m({output:' {"object":"email","id":"<uuid>","message_id":"<111-222-333@email.example.com>","from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","html":"<p>Hi</p>","text":"Hi","last_event":"delivered","created_at":"<date>","scheduled_at":null,"bcc":null,"cc":null,"reply_to":null}',errorCodes:["auth_error","fetch_error"],examples:["resend emails get <email-id>","resend emails get <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,qe,i);await $({loading:"Fetching email...",sdkCall:n=>n.emails.get(r),onInteractive:n=>{console.log(`From: ${n.from}`),console.log(`To: ${n.to.join(", ")}`),console.log(`Subject: ${n.subject}`),console.log(`Message-ID: ${n.message_id}`),console.log(`Status: ${n.last_event}`),console.log(`Date: ${n.created_at}`),n.scheduled_at&&console.log(`Scheduled: ${n.scheduled_at}`)}},i)});function Ag(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.last_event??"\u2014",o.created_at,o.id]});return _(["From","To","Subject","Status","Created","ID"],t,"(no sent emails)")}var jc=new d("list").alias("ls").description('List sent emails \u2014 returns summary (use "get <id>" for full details)').option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",m({context:"Lists emails sent by your team. For emails received by your domain, use: resend emails receiving list",output:' {"object":"list","has_more":false,"data":[{"id":"...","message_id":"<111-222-333@email.example.com>","to":["..."],"from":"...","subject":"...","created_at":"...","last_event":"delivered|opened|...","scheduled_at":null}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails list","resend emails list --limit 5","resend emails list --after <email-id> --limit 10","resend emails list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching sent emails...",sdkCall:n=>n.emails.list(r),onInteractive:n=>{console.log(Ag(n.data)),T(n,"emails list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});function vo(e){if(e!==void 0)return e.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function bg(e){let t=Object.entries(e).map(([o,i])=>[o,String(i)]);return _(["Metric","Value"],t,"(no metrics)")}function yg(e,t){let i=[...Object.keys(e[0]??{}).filter(n=>!t.includes(n)),...t],r=e.map(n=>i.map(s=>String(n[s]??"")));return _(i,r,"(no breakdown rows)")}var Pc=new d("metrics").description("Retrieve account-level email metrics").option("--start-date <date>","ISO 8601 date/datetime, defaults to 6 days before --end-date").option("--end-date <date>","ISO 8601 date/datetime, defaults to now").option("--timezone <tz>","IANA timezone, e.g. America/New_York, defaults to UTC").addOption(new L("--granularity <granularity>",'Bucket size used when "period" is a dimension (default: daily)').choices(["hourly","daily","weekly","monthly"])).option("--metrics <list>","Comma-separated metrics to include, defaults to all").option("--dimensions <list>","Comma-separated dimensions to break down by: period, domain, email, broadcast").option("--domain-id <list>","Comma-separated sending domain IDs (max 100)").option("--email-id <list>",'Comma-separated email IDs (max 100). Cannot be combined with the "broadcast" dimension or --broadcast-id').option("--broadcast-id <list>",'Comma-separated broadcast IDs (max 100). Cannot be combined with the "email" dimension or --email-id').addHelpText("after",m({output:' {"object":"metrics","start_date":"...","end_date":"...","metrics":["sent","delivered"],"dimensions":[],"granularity":"daily","totals":{"sent":100,"delivered":95}}',errorCodes:["auth_error","invalid_options","fetch_error"],examples:["resend emails metrics","resend emails metrics --start-date 2026-07-01 --end-date 2026-07-08","resend emails metrics --dimensions period,broadcast --broadcast-id <broadcast-id>","resend emails metrics --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=vo(e.dimensions),r=vo(e.emailId),n=vo(e.broadcastId),s=(i?.includes("email")??!1)||e.emailId!==void 0,a=(i?.includes("broadcast")??!1)||e.broadcastId!==void 0;s&&a&&g({message:'The "broadcast" dimension/--broadcast-id cannot be combined with the "email" dimension/--email-id.',code:"invalid_options"},{json:o.json});let l=vo(e.metrics);await $({loading:"Fetching email metrics...",sdkCall:c=>c.emails.metrics({startDate:e.startDate,endDate:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:l,dimensions:i,domainId:vo(e.domainId),emailId:r,broadcastId:n}),onInteractive:c=>{console.log(`Metrics for ${c.start_date} to ${c.end_date} (${c.granularity} granularity)`),console.log(),console.log("Totals:"),console.log(bg(c.totals)),c.data&&c.data.length>0&&(console.log(),console.log(`Breakdown by ${c.dimensions.join(", ")}:`),console.log(yg(c.data,c.metrics)))}},o)});var Ct={resource:"received email",resourcePlural:"received emails",fetchItems:(e,{limit:t,after:o})=>e.emails.receiving.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function $c(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.receiving.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function Gc(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.created_at,o.id]});return _(["From","To","Subject","Created At","ID"],t,"(no received emails)")}var Hc=new d("attachment").description("Retrieve a single attachment from a received (inbound) email").argument("[emailId]","Received email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",m({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
658
+ resend emails receiving attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,Ct,r),s=await C(t,$c(n),r);await $({loading:"Fetching attachment...",sdkCall:a=>a.emails.receiving.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var Qc=new d("attachments").description("List attachments on a received (inbound) email").argument("[emailId]","Received email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",m({context:`Each attachment has a download_url (signed, expires ~1 hour).
659
659
  Use the attachment sub-command to retrieve a single attachment with its download URL:
660
660
  resend emails receiving attachment <emailId> <attachmentId>
661
661
 
662
662
  content_disposition: "inline" means the attachment is embedded in the HTML body (e.g. an image).
663
- content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving attachments <email-id>","resend emails receiving attachments <email-id> --json","resend emails receiving attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,xt,i),n=O(t.limit,i),s=P(n,t.after,t.before,i);await k({loading:"Fetching attachments...",sdkCall:a=>a.emails.receiving.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(Ui(a.data)),E(a,`emails receiving attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Yc=new c("forward").description("Forward a received email").argument("[id]","Received email ID").requiredOption("--to <addresses...>","Recipient address(es)").requiredOption("--from <address>","Sender address").addHelpText("after",d({context:`Required: --to, --from
664
- Forwards the original email content (passthrough mode).`,output:' {"id":"<email-id>"}',errorCodes:["auth_error","create_error"],examples:["resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,xt,i);await j({loading:"Forwarding email...",sdkCall:n=>n.emails.receiving.forward({emailId:r,to:t.to,from:t.from}),onInteractive:n=>{console.log(`Email forwarded: ${n.id}`)}},i)});var Xc=new c("get").description("Retrieve a single received (inbound) email with full details including HTML, text, and headers").argument("[id]","Received email UUID").addHelpText("after",d({context:`The raw.download_url field is a signed URL (expires ~1 hour) containing the full RFC 2822
663
+ content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving attachments <email-id>","resend emails receiving attachments <email-id> --json","resend emails receiving attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ct,i),n=O(t.limit,i),s=G(n,t.after,t.before,i);await F({loading:"Fetching attachments...",sdkCall:a=>a.emails.receiving.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(Ui(a.data)),T(a,`emails receiving attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Nc=new d("forward").description("Forward a received email").argument("[id]","Received email ID").requiredOption("--to <addresses...>","Recipient address(es)").requiredOption("--from <address>","Sender address").addHelpText("after",m({context:`Required: --to, --from
664
+ Forwards the original email content (passthrough mode).`,output:' {"id":"<email-id>"}',errorCodes:["auth_error","create_error"],examples:["resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ct,i);await M({loading:"Forwarding email...",sdkCall:n=>n.emails.receiving.forward({emailId:r,to:t.to,from:t.from}),onInteractive:n=>{console.log(`Email forwarded: ${n.id}`)}},i)});var Mc=new d("get").description("Retrieve a single received (inbound) email with full details including HTML, text, and headers").argument("[id]","Received email UUID").addHelpText("after",m({context:`The raw.download_url field is a signed URL (expires ~1 hour) containing the full RFC 2822
665
665
  MIME message. Pipe it to curl to save the original email:
666
666
  resend emails receiving get <id> --json | jq -r .raw.download_url | xargs curl > email.eml
667
667
 
668
668
  Attachments are listed in the attachments array. Use the attachments sub-command to get
669
669
  download URLs:
670
- resend emails receiving attachments <id>`,output:' {"object":"email","id":"<uuid>","to":["inbox@example.com"],"from":"sender@external.com","subject":"Hello","html":"<p>Hello!</p>","text":"Hello!","headers":{"x-mailer":"..."},"message_id":"<str>","bcc":[],"cc":[],"reply_to":[],"raw":{"download_url":"<url>","expires_at":"<date>"},"attachments":[]}',errorCodes:["auth_error","fetch_error"],examples:["resend emails receiving get <email-id>","resend emails receiving get <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,xt,i);await I({loading:"Fetching received email...",sdkCall:n=>n.emails.receiving.get(r),onInteractive:n=>{if(console.log(`From: ${n.from}`),console.log(`To: ${n.to.join(", ")}`),console.log(`Subject: ${n.subject}`),console.log(`Date: ${n.created_at}`),n.attachments.length>0&&console.log(`Files: ${n.attachments.length} attachment(s)`),n.text){let s=n.text.length>200?`${n.text.slice(0,197)}...`:n.text;console.log(`${s}`)}else n.html&&console.log(`
671
- (HTML body only \u2014 use --json to view or pipe to a browser)`)}},i)});var Zc=new c("list").alias("ls").description("List received (inbound) emails for domains with receiving enabled").option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Return emails after this cursor (next page)").option("--before <cursor>","Return emails before this cursor (previous page)").addHelpText("after",d({context:`Receiving must be enabled on the domain first:
670
+ resend emails receiving attachments <id>`,output:' {"object":"email","id":"<uuid>","to":["inbox@example.com"],"from":"sender@external.com","subject":"Hello","html":"<p>Hello!</p>","text":"Hello!","headers":{"x-mailer":"..."},"message_id":"<str>","bcc":[],"cc":[],"reply_to":[],"raw":{"download_url":"<url>","expires_at":"<date>"},"attachments":[]}',errorCodes:["auth_error","fetch_error"],examples:["resend emails receiving get <email-id>","resend emails receiving get <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ct,i);await $({loading:"Fetching received email...",sdkCall:n=>n.emails.receiving.get(r),onInteractive:n=>{if(console.log(`From: ${n.from}`),console.log(`To: ${n.to.join(", ")}`),console.log(`Subject: ${n.subject}`),console.log(`Date: ${n.created_at}`),n.attachments.length>0&&console.log(`Files: ${n.attachments.length} attachment(s)`),n.text){let s=n.text.length>200?`${n.text.slice(0,197)}...`:n.text;console.log(`${s}`)}else n.html&&console.log(`
671
+ (HTML body only \u2014 use --json to view or pipe to a browser)`)}},i)});var qc=new d("list").alias("ls").description("List received (inbound) emails for domains with receiving enabled").option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Return emails after this cursor (next page)").option("--before <cursor>","Return emails before this cursor (previous page)").addHelpText("after",m({context:`Receiving must be enabled on the domain first:
672
672
  resend domains update <id> --receiving enabled
673
673
 
674
674
  Pagination: use --after or --before with a received email ID as the cursor.
675
675
  Only one of --after or --before may be used at a time.
676
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","to":["inbox@example.com"],"from":"sender@external.com","subject":"Hello","created_at":"<date>","message_id":"<str>","bcc":null,"cc":null,"reply_to":null,"attachments":[]}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving list","resend emails receiving list --limit 25 --json","resend emails receiving list --after <email-id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching received emails...",sdkCall:n=>n.emails.receiving.list(r),onInteractive:n=>{console.log(Jc(n.data)),E(n,"emails receiving list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var at=me(Je(),1);X();var ed=(e=1e4)=>{if(!Number.isInteger(e)||e<1)throw new RangeError(`maxSize must be a positive integer, got ${e}`);let t=new Map,o=()=>{let i=t.keys().next();i.done||t.delete(i.value)};return{has:i=>t.has(i)?(t.delete(i),t.set(i,!0),!0):!1,add:i=>{if(t.has(i)){t.delete(i),t.set(i,!0);return}t.size>=e&&o(),t.set(i,!0)},size:()=>t.size}};var Nr=100,td=5,Mr=()=>new Date().toLocaleTimeString("en-GB",{hour12:!1}),cg=(e,t)=>{if(t)console.log(JSON.stringify(e));else{let o=e.to.map(Fe).join(", "),i=at.default.dim(`[${Mr()}]`),r=Fe(e.subject),n=r.length>50?`${r.slice(0,47)}...`:r,s=Fe(e.from),a=Fe(e.id);process.stderr.write(`${i} ${s} -> ${o} ${at.default.bold(`"${n}"`)} ${at.default.dim(a)}
677
- `)}},dg=(e,t)=>{let o=e.findIndex(i=>t.has(i.id));return o===-1?{newEmails:e,foundSeen:!1}:{newEmails:e.slice(0,o),foundSeen:!0}},od=new c("listen").description("Poll for new inbound emails and display them as they arrive").option("--interval <seconds>","Polling interval in seconds (minimum 2)","5").addHelpText("after",d({context:`Long-running command that polls the receiving API at a fixed
676
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","to":["inbox@example.com"],"from":"sender@external.com","subject":"Hello","created_at":"<date>","message_id":"<str>","bcc":null,"cc":null,"reply_to":null,"attachments":[]}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving list","resend emails receiving list --limit 25 --json","resend emails receiving list --after <email-id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching received emails...",sdkCall:n=>n.emails.receiving.list(r),onInteractive:n=>{console.log(Gc(n.data)),T(n,"emails receiving list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var st=ue(Ye(),1);V();var Lc=(e=1e4)=>{if(!Number.isInteger(e)||e<1)throw new RangeError(`maxSize must be a positive integer, got ${e}`);let t=new Map,o=()=>{let i=t.keys().next();i.done||t.delete(i.value)};return{has:i=>t.has(i)?(t.delete(i),t.set(i,!0),!0):!1,add:i=>{if(t.has(i)){t.delete(i),t.set(i,!0);return}t.size>=e&&o(),t.set(i,!0)},size:()=>t.size}};var Gr=100,Wc=5,Hr=()=>new Date().toLocaleTimeString("en-GB",{hour12:!1}),Cg=(e,t)=>{if(t)console.log(JSON.stringify(e));else{let o=e.to.map(Fe).join(", "),i=st.default.dim(`[${Hr()}]`),r=Fe(e.subject),n=r.length>50?`${r.slice(0,47)}...`:r,s=Fe(e.from),a=Fe(e.id);process.stderr.write(`${i} ${s} -> ${o} ${st.default.bold(`"${n}"`)} ${st.default.dim(a)}
677
+ `)}},wg=(e,t)=>{let o=e.findIndex(i=>t.has(i.id));return o===-1?{newEmails:e,foundSeen:!1}:{newEmails:e.slice(0,o),foundSeen:!0}},Jc=new d("listen").description("Poll for new inbound emails and display them as they arrive").option("--interval <seconds>","Polling interval in seconds (minimum 2)","5").addHelpText("after",m({context:`Long-running command that polls the receiving API at a fixed
678
678
  interval and prints each new email as it arrives.
679
679
 
680
680
  Interactive output shows one line per email. When piped (or with --json),
681
681
  output is NDJSON (one JSON object per line).
682
682
 
683
- Ctrl+C exits cleanly.`,examples:["resend emails receiving listen","resend emails receiving listen --interval 10","resend emails receiving listen --json | head -3"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Number.parseInt(e.interval??"5",10);(Number.isNaN(i)||i<2)&&h({message:"Polling interval must be at least 2 seconds.",code:"invalid_interval"},{json:o.json});let r=await ee(o),n=o.json||!w(),s=ae("Connecting...",o.quiet||n),a=ed(),l=0;try{let{data:b,error:x}=await r.emails.receiving.list({limit:1});(x||!b)&&(s.fail("Failed to connect"),h({message:x?.message??"Unexpected empty response",code:"list_error"},{json:o.json}));for(let v of b.data)a.add(v.id);s.stop("Ready")}catch(b){s.fail("Failed to connect"),h({message:W(b,"Unknown error"),code:"list_error"},{json:o.json})}n||(process.stderr.write(`
684
- `),process.stderr.write(` ${at.default.bold("Polling:")} every ${i}s
683
+ Ctrl+C exits cleanly.`,examples:["resend emails receiving listen","resend emails receiving listen --interval 10","resend emails receiving listen --json | head -3"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Number.parseInt(e.interval??"5",10);(Number.isNaN(i)||i<2)&&g({message:"Polling interval must be at least 2 seconds.",code:"invalid_interval"},{json:o.json});let r=await Y(o),n=o.json||!U(),s=se("Connecting...",o.quiet||n),a=Lc(),l=0;try{let{data:A,error:w}=await r.emails.receiving.list({limit:1});(w||!A)&&(s.fail("Failed to connect"),g({message:w?.message??"Unexpected empty response",code:"list_error"},{json:o.json}));for(let S of A.data)a.add(S.id);s.stop("Ready")}catch(A){s.fail("Failed to connect"),g({message:q(A,"Unknown error"),code:"list_error"},{json:o.json})}n||(process.stderr.write(`
684
+ `),process.stderr.write(` ${st.default.bold("Polling:")} every ${i}s
685
685
  `),process.stderr.write(`
686
686
  Listening for new inbound emails. Press Ctrl+C to stop.
687
687
 
688
- `));let u=b=>{l++,n||process.stderr.write(`${at.default.dim(`[${Mr()}]`)} ${at.default.yellow("Warning:")} ${b}
689
- `),l>=5&&h({message:"Exiting after 5 consecutive API failures.",code:"poll_error"},{json:o.json})},m=async(b,x,v)=>{if(v<=0)return{emails:x,hasMore:!0};let U=b?{limit:Nr,after:b}:{limit:Nr},{data:S,error:K}=await bo(()=>r.emails.receiving.list(U));if(K||!S)return{emails:x,error:K?.message??"Empty response",hasMore:!1};let{newEmails:B,foundSeen:G}=dg(S.data,a),Q=[...x,...B];if(G||!S.has_more)return{emails:Q,hasMore:!1};let $=S.data[S.data.length-1]?.id;return $?m($,Q,v-1):{emails:Q,hasMore:!0}},p,f=()=>{let b=`Hit page cap of ${td*Nr} emails this poll; remaining will be picked up next tick.`;n?console.log(JSON.stringify({warning:"page_cap_reached",message:b})):process.stderr.write(`${at.default.dim(`[${Mr()}]`)} ${at.default.yellow("Warning:")} ${b}
690
- `)},y=async()=>{try{let b=await m(void 0,[],td);b.error&&u(b.error),b.hasMore&&f();let x=b.emails.toReversed();for(let v of x)a.add(v.id);if(b.emails.length>0){l=0;for(let v of x)cg(v,n)}else b.error||(l=0)}catch(b){u(W(b,"Unknown error"))}finally{p=setTimeout(y,i*1e3)}};p=setTimeout(y,i*1e3);let A=()=>{clearTimeout(p),n||process.stderr.write(`
688
+ `));let c=A=>{l++,n||process.stderr.write(`${st.default.dim(`[${Hr()}]`)} ${st.default.yellow("Warning:")} ${A}
689
+ `),l>=5&&g({message:"Exiting after 5 consecutive API failures.",code:"poll_error"},{json:o.json})},u=async(A,w,S)=>{if(S<=0)return{emails:w,hasMore:!0};let v=A?{limit:Gr,after:A}:{limit:Gr},{data:K,error:x}=await Ao(()=>r.emails.receiving.list(v));if(x||!K)return{emails:w,error:x?.message??"Empty response",hasMore:!1};let{newEmails:D,foundSeen:I}=wg(K.data,a),H=[...w,...D];if(I||!K.has_more)return{emails:H,hasMore:!1};let E=K.data[K.data.length-1]?.id;return E?u(E,H,S-1):{emails:H,hasMore:!0}},p,f=()=>{let A=`Hit page cap of ${Wc*Gr} emails this poll; remaining will be picked up next tick.`;n?console.log(JSON.stringify({warning:"page_cap_reached",message:A})):process.stderr.write(`${st.default.dim(`[${Hr()}]`)} ${st.default.yellow("Warning:")} ${A}
690
+ `)},b=async()=>{try{let A=await u(void 0,[],Wc);A.error&&c(A.error),A.hasMore&&f();let w=A.emails.toReversed();for(let S of w)a.add(S.id);if(A.emails.length>0){l=0;for(let S of w)Cg(S,n)}else A.error||(l=0)}catch(A){c(q(A,"Unknown error"))}finally{p=setTimeout(b,i*1e3)}};p=setTimeout(b,i*1e3);let h=()=>{clearTimeout(p),n||process.stderr.write(`
691
691
  Stopped listening.
692
- `),process.exit(Mt())};ri(A),process.on("SIGTERM",A),await new Promise(()=>{})});var id=new c("receiving").description("Manage received (inbound) emails \u2014 requires domain receiving to be enabled").addHelpText("after",d({context:`Receiving must be enabled on the domain first:
693
- resend domains update <id> --receiving enabled`,examples:["resend emails receiving list","resend emails receiving listen","resend emails receiving get <email-id>","resend emails receiving attachments <email-id>","resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(Zc,{isDefault:!0}).addCommand(Xc).addCommand(od).addCommand(zc).addCommand(Vc).addCommand(Yc);var ad=require("node:fs"),ld=require("node:path");var ug=/;(cid|type|filename)=/,rd=/;[\w-]+=/,mg={cid:"contentId",type:"contentType",filename:"filename"};function nd(e){let t=e.split(ug),o=t[0];if(!o)throw new Error(`Missing file path or URL in attachment "${e}".`);if(rd.test(o))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);let i={source:o,isUrl:/^https?:\/\//i.test(o)};for(let r=1;r<t.length;r+=2){let n=t[r],s=t[r+1],a=mg[n];if(i[a]!==void 0)throw new Error(`Duplicate ";${n}=" in attachment "${e}".`);if(!s)throw new Error(`Empty ";${n}=" in attachment "${e}".`);if(a!=="contentType"&&rd.test(s))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);i[a]=s}return i}var pg={content_type:"contentType",content_id:"contentId"},fg=new Set(["content","filename","path","contentType","contentId"]);function sd(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Attachments file is not valid JSON.")}if(!Array.isArray(t))throw new Error("Attachments file must contain a JSON array of attachment objects.");return t.map((o,i)=>{if(o===null||typeof o!="object"||Array.isArray(o))throw new Error(`Attachment at index ${i} must be a JSON object.`);let r={};for(let[n,s]of Object.entries(o)){let a=pg[n]??n;if(!fg.has(a))throw new Error(`Attachment at index ${i} has unsupported field "${n}". Supported: content, filename, path, content_type/contentType, content_id/contentId.`);if(a in r)throw new Error(`Attachment at index ${i} sets "${a}" more than once (snake_case and camelCase are aliases).`);if(typeof s!="string")throw new Error(`Attachment at index ${i}: "${n}" must be a string.`);r[a]=s}if(!r.content&&!r.path)throw new Error(`Attachment at index ${i} must include "content" (base64) or "path" (hosted URL).`);return r})}X();function hg(e){let{attachments:t,...o}=e;return t?.length?{...o,attachments:t.map(i=>({...i.filename!==void 0&&{filename:i.filename},...i.path&&{path:i.path},...i.contentType&&{contentType:i.contentType},...i.contentId&&{contentId:i.contentId},...i.content!==void 0&&{byteLength:Buffer.isBuffer(i.content)?i.content.byteLength:Buffer.byteLength(String(i.content),"utf8")}}))}:o}var cd=new c("send").description("Send an email").option("--from <address>","Sender address (required unless using --template)").option("--to <addresses...>","Recipient address(es) (required)").option("--subject <subject>","Email subject (required unless using --template)").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and send").option("--cc <addresses...>","CC recipients").option("--bcc <addresses...>","BCC recipients").option("--reply-to <address>","Reply-to address").option("--scheduled-at <datetime>",'Schedule email for later \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').option("--attachment <specs...>","File path or URL to attach, with optional ;cid= ;type= ;filename= params (quote the value)").option("--attachments-file <path>",'Path to a JSON array of attachment objects (use "-" for stdin)').option("--headers <key=value...>","Custom headers as key=value pairs (e.g. X-Entity-Ref-ID=123)").option("--tags <name=value...>","Email tags as name=value pairs (e.g. category=marketing)").option("--idempotency-key <key>","Deduplicate this send request using this key").option("--dry-run","Validate input and print the request JSON without calling the API (interactive: verified-domain list is not fetched)").option("--template <id>","Template ID to use").option("--var <key=value...>","Template variables as key=value pairs (repeatable, e.g. --var name=John --var count=42)").addHelpText("after",d({context:`Required: --to and either --template, --react-email, or (--from, --subject, and one of --text | --text-file | --html | --html-file).
692
+ `),process.exit(Nt())};oi(h),process.on("SIGTERM",h),await new Promise(()=>{})});var Vc=new d("receiving").description("Manage received (inbound) emails \u2014 requires domain receiving to be enabled").addHelpText("after",m({context:`Receiving must be enabled on the domain first:
693
+ resend domains update <id> --receiving enabled`,examples:["resend emails receiving list","resend emails receiving listen","resend emails receiving get <email-id>","resend emails receiving attachments <email-id>","resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(qc,{isDefault:!0}).addCommand(Mc).addCommand(Jc).addCommand(Qc).addCommand(Hc).addCommand(Nc);var Zc=require("node:fs"),ed=require("node:path");var Ug=/;(cid|type|filename)=/,zc=/;[\w-]+=/,Sg={cid:"contentId",type:"contentType",filename:"filename"};function Yc(e){let t=e.split(Ug),o=t[0];if(!o)throw new Error(`Missing file path or URL in attachment "${e}".`);if(zc.test(o))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);let i={source:o,isUrl:/^https?:\/\//i.test(o)};for(let r=1;r<t.length;r+=2){let n=t[r],s=t[r+1],a=Sg[n];if(i[a]!==void 0)throw new Error(`Duplicate ";${n}=" in attachment "${e}".`);if(!s)throw new Error(`Empty ";${n}=" in attachment "${e}".`);if(a!=="contentType"&&zc.test(s))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);i[a]=s}return i}var vg={content_type:"contentType",content_id:"contentId"},Kg=new Set(["content","filename","path","contentType","contentId"]);function Xc(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Attachments file is not valid JSON.")}if(!Array.isArray(t))throw new Error("Attachments file must contain a JSON array of attachment objects.");return t.map((o,i)=>{if(o===null||typeof o!="object"||Array.isArray(o))throw new Error(`Attachment at index ${i} must be a JSON object.`);let r={};for(let[n,s]of Object.entries(o)){let a=vg[n]??n;if(!Kg.has(a))throw new Error(`Attachment at index ${i} has unsupported field "${n}". Supported: content, filename, path, content_type/contentType, content_id/contentId.`);if(a in r)throw new Error(`Attachment at index ${i} sets "${a}" more than once (snake_case and camelCase are aliases).`);if(typeof s!="string")throw new Error(`Attachment at index ${i}: "${n}" must be a string.`);r[a]=s}if(!r.content&&!r.path)throw new Error(`Attachment at index ${i} must include "content" (base64) or "path" (hosted URL).`);return r})}V();function xg(e){let{attachments:t,...o}=e;return t?.length?{...o,attachments:t.map(i=>({...i.filename!==void 0&&{filename:i.filename},...i.path&&{path:i.path},...i.contentType&&{contentType:i.contentType},...i.contentId&&{contentId:i.contentId},...i.content!==void 0&&{byteLength:Buffer.isBuffer(i.content)?i.content.byteLength:Buffer.byteLength(String(i.content),"utf8")}}))}:o}var td=new d("send").description("Send an email").option("--from <address>","Sender address (required unless using --template)").option("--to <addresses...>","Recipient address(es) (required)").option("--subject <subject>","Email subject (required unless using --template)").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and send").option("--cc <addresses...>","CC recipients").option("--bcc <addresses...>","BCC recipients").option("--reply-to <address>","Reply-to address").option("--scheduled-at <datetime>",'Schedule email for later \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').option("--attachment <specs...>","File path or URL to attach, with optional ;cid= ;type= ;filename= params (quote the value)").option("--attachments-file <path>",'Path to a JSON array of attachment objects (use "-" for stdin)').option("--headers <key=value...>","Custom headers as key=value pairs (e.g. X-Entity-Ref-ID=123)").option("--tags <name=value...>","Email tags as name=value pairs (e.g. category=marketing)").option("--idempotency-key <key>","Deduplicate this send request using this key").option("--dry-run","Validate input and print the request JSON without calling the API (interactive: verified-domain list is not fetched)").option("--template <id>","Template ID to use").option("--var <key=value...>","Template variables as key=value pairs (repeatable, e.g. --var name=John --var count=42)").addHelpText("after",m({context:`Required: --to and either --template, --react-email, or (--from, --subject, and one of --text | --text-file | --html | --html-file).
694
694
  Attachments: --attachment takes a local path or https:// URL plus optional ;cid= (inline content-id), ;type= (MIME type), ;filename= params. Always double-quote values containing ";" \u2014 required on every shell (bash, PowerShell, cmd). For paths containing ";key=" or scripted use, pass a JSON array via --attachments-file.
695
695
  URL attachments are fetched by the API after send: an unreachable URL fails the email (check \`emails get <id>\`), and filename/MIME type are not derived from the URL \u2014 pass ;filename= and ;type=.
696
- Use --dry-run to print the request JSON without sending (attachment content shows byteLength only).`,output:' {"id":"<email-id>"}',errorCodes:["auth_error","missing_body","file_read_error","invalid_options","stdin_read_error","invalid_header","invalid_tag","invalid_var","invalid_attachment","template_body_conflict","template_attachment_conflict","react_email_build_error","react_email_render_error","send_error"],examples:['resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --html "<b>Hi</b>"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachment ./report.pdf','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --html "<img src=cid:logo>" --attachment "./logo.png;cid=logo"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachment "https://example.com/report.pdf;filename=report.pdf;type=application/pdf"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachments-file ./attachments.json',"resend emails send --template tmpl_123 --to delivered@resend.dev"]})).action(async(e,t)=>{let o=t.optsWithGlobals();[e.htmlFile,e.textFile,e.attachmentsFile].filter(S=>S==="-").length>1&&h({message:'Only one of --html-file, --text-file, or --attachments-file can read from stdin ("-"). Pass the others as file paths.',code:"invalid_options"},{json:o.json}),e.from===""&&h({message:"--from cannot be empty",code:"invalid_options"},{json:o.json});let r=!!e.template;e.var&&!r&&h({message:"--var can only be used with --template",code:"invalid_var"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile||r)&&h({message:"Cannot use --react-email with --html, --html-file, or --template",code:"invalid_options"},{json:o.json}),r&&(e.html||e.htmlFile||e.text||e.textFile)&&h({message:"Cannot use --template with --html, --html-file, --text, or --text-file",code:"template_body_conflict"},{json:o.json}),r&&(e.attachment||e.attachmentsFile!==void 0)&&h({message:"Cannot use --attachment or --attachments-file with --template",code:"template_attachment_conflict"},{json:o.json});let n=e.var?Object.fromEntries(e.var.map(S=>{let K=S.indexOf("=");K<1&&h({message:`Invalid var format: "${S}". Expected key=value.`,code:"invalid_var"},{json:o.json});let B=S.slice(0,K),G=S.slice(K+1);return[B,G]})):void 0,s=e.from;if(!e.dryRun&&!s&&!r&&w()&&!o.json){let S=await ee(o,{permission:"sending_access"}),K=await pi(S);K.length>0&&(s=await fi(K))}let a=[{flag:"from",message:"From address",placeholder:"onboarding@resend.dev",defaultValue:"onboarding@resend.dev",required:!r},{flag:"to",message:"To address",placeholder:"delivered@resend.dev",defaultValue:"delivered@resend.dev"},{flag:"subject",message:"Subject",placeholder:"Hello!",defaultValue:"Hello!",required:!r}],l=await ya({from:s,to:e.to?.[0],subject:e.subject},a,o),u=e.html,m=e.text;e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
697
- `),u=ie(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
698
- `),m=ie(e.textFile,o)),e.reactEmail&&(u=await Me(e.reactEmail,o));let p=m;!r&&!e.reactEmail&&!u&&!m&&(p=await T(void 0,{message:"Email body (plain text)",placeholder:"Hello, World!",defaultValue:"Hello, World!"},{message:"Missing email body. Provide --html, --html-file, --text, --text-file, or --react-email",code:"missing_body"},o));let f=e.to??[l.to],y=e.attachment?.map(S=>{let K;try{K=nd(S)}catch(G){return h({message:G.message,code:"invalid_attachment"},{json:o.json})}let B={...K.contentType&&{contentType:K.contentType},...K.contentId&&{contentId:K.contentId}};if(K.isUrl)return{path:K.source,...K.filename&&{filename:K.filename},...B};try{let G=(0,ad.readFileSync)(K.source);return{filename:K.filename??(0,ld.basename)(K.source),content:G,...B}}catch{return h({message:`Failed to read file: ${K.source}`,code:"file_read_error"},{json:o.json})}});if(e.attachmentsFile!==void 0){let S=ie(e.attachmentsFile,o);try{y=[...y??[],...sd(S)]}catch(K){h({message:K.message,code:"invalid_attachment"},{json:o.json})}}let A=e.headers?Object.fromEntries(e.headers.map(S=>{let K=S.indexOf("=");return K<1&&h({message:`Invalid header format: "${S}". Expected key=value.`,code:"invalid_header"},{json:o.json}),[S.slice(0,K),S.slice(K+1)]})):void 0,b=e.tags?.map(S=>{let K=S.indexOf("=");return K<1&&h({message:`Invalid tag format: "${S}". Expected name=value.`,code:"invalid_tag"},{json:o.json}),{name:S.slice(0,K),value:S.slice(K+1)}}),x;if(r?x={template:{id:e.template,...n&&{variables:n}},to:f,...l.from&&{from:l.from},...l.subject&&{subject:l.subject},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...A&&{headers:A},...b&&{tags:b}}:x={from:l.from,to:f,subject:l.subject,...u&&{html:u},...p&&{text:p},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...y&&{attachments:y},...A&&{headers:A},...b&&{tags:b}},e.dryRun){N({dryRun:!0,request:hg(x)},{json:o.json});return}let v=await ee(o,{permission:"sending_access"}),U=await ce(e.scheduledAt?"Scheduling email...":"Sending email...",()=>v.emails.send(x,e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:void 0),"send_error",o);!o.json&&w()?e.scheduledAt?console.log(`Email scheduled: ${U.id}`):console.log(`Email sent: ${U.id}`):N(U,{json:o.json})});var qr=me(Je(),1);var dd=new c("share").description("Create a shareable link for a sent or received email").argument("[id]","Email ID").option("--expires-in <duration>",'Link expiration, e.g. "10m", "2 hours", "1 day" (max 48h, default 48h)').addHelpText("after",d({output:' {"object":"email","id":"<email-id>","url":"<share-link-url>"}',errorCodes:["auth_error","create_error"],examples:["resend emails share <email-id>",'resend emails share <email-id> --expires-in "1 day"',"resend emails share <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,qe,i);await j({loading:"Creating share link...",sdkCall:n=>n.emails.share(r,t.expiresIn!==void 0?{expiresIn:t.expiresIn}:void 0),onInteractive:n=>{console.log(` ${qr.default.gray("ID:")} ${n.id}`),console.log(` ${qr.default.gray("URL:")} ${n.url}`)}},i)});var ud=new c("update").description("Update a scheduled email").argument("[id]","Email ID").requiredOption("--scheduled-at <datetime>","New scheduled date in ISO 8601 format (e.g. 2024-08-05T11:52:01.858Z)").addHelpText("after",d({context:"Required: --scheduled-at",output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","update_error"],examples:["resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z","resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,qe,i);await R({loading:"Updating email...",sdkCall:n=>n.emails.update({id:r,scheduledAt:t.scheduledAt}),errorCode:"update_error",successMsg:`Email updated: ${r}`},i)});var md=new c("emails").description("Send and manage emails").addHelpText("after",d({examples:['resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi"',"resend emails get <email-id>","resend emails batch --file ./emails.json","resend emails cancel <email-id>","resend emails share <email-id>","resend emails metrics","resend emails attachments <email-id>","resend emails attachment <email-id> <attachment-id>","resend emails receiving list","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(qc,{isDefault:!0}).addCommand(cd).addCommand(Mc).addCommand(Qc).addCommand(Nc).addCommand(ud).addCommand(dd).addCommand(Lc).addCommand(Hc).addCommand(Gc).addCommand(id);var gg=new Set(["string","number","boolean","date"]);function Lr(e){if(!e)return"(none)";let t=Object.entries(e);return t.length===0?"(empty)":t.map(([o,i])=>`${o}:${i}`).join(", ")}function pd(e){let t=e.map(o=>[o.name,Lr(o.schema),o.created_at,o.id]);return _(["Name","Schema","Created","ID"],t,"(no events)")}function Si(e,t){if(e==="null")return null;let o=Dt(e,"--schema",t);(typeof o!="object"||o===null||Array.isArray(o))&&h({message:"--schema must be a JSON object mapping field names to types (string | number | boolean | date).",code:"invalid_schema"},{json:t.json});for(let[i,r]of Object.entries(o))(typeof r!="string"||!gg.has(r))&&h({message:`Invalid schema type for "${i}": "${r}". Must be one of: string, number, boolean, date.`,code:"invalid_schema"},{json:t.json});return o}var Zt={resource:"event",resourcePlural:"events",fetchItems:(e,{limit:t,after:o})=>e.events.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var fd=new c("create").description("Create a new event definition").option("--name <name>","Event name (e.g. user.signed_up)").option("--schema <json>","Schema as JSON mapping field names to types (string | number | boolean | date)").addHelpText("after",d({context:`Non-interactive: --name is required. --schema is optional.
696
+ Use --dry-run to print the request JSON without sending (attachment content shows byteLength only).`,output:' {"id":"<email-id>"}',errorCodes:["auth_error","missing_body","file_read_error","invalid_options","stdin_read_error","invalid_header","invalid_tag","invalid_var","invalid_attachment","template_body_conflict","template_attachment_conflict","react_email_build_error","react_email_render_error","send_error"],examples:['resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --html "<b>Hi</b>"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachment ./report.pdf','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --html "<img src=cid:logo>" --attachment "./logo.png;cid=logo"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachment "https://example.com/report.pdf;filename=report.pdf;type=application/pdf"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachments-file ./attachments.json',"resend emails send --template tmpl_123 --to delivered@resend.dev"]})).action(async(e,t)=>{let o=t.optsWithGlobals();[e.htmlFile,e.textFile,e.attachmentsFile].filter(K=>K==="-").length>1&&g({message:'Only one of --html-file, --text-file, or --attachments-file can read from stdin ("-"). Pass the others as file paths.',code:"invalid_options"},{json:o.json}),e.from===""&&g({message:"--from cannot be empty",code:"invalid_options"},{json:o.json});let r=!!e.template;e.var&&!r&&g({message:"--var can only be used with --template",code:"invalid_var"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile||r)&&g({message:"Cannot use --react-email with --html, --html-file, or --template",code:"invalid_options"},{json:o.json}),r&&(e.html||e.htmlFile||e.text||e.textFile)&&g({message:"Cannot use --template with --html, --html-file, --text, or --text-file",code:"template_body_conflict"},{json:o.json}),r&&(e.attachment||e.attachmentsFile!==void 0)&&g({message:"Cannot use --attachment or --attachments-file with --template",code:"template_attachment_conflict"},{json:o.json});let n=e.var?Object.fromEntries(e.var.map(K=>{let x=K.indexOf("=");x<1&&g({message:`Invalid var format: "${K}". Expected key=value.`,code:"invalid_var"},{json:o.json});let D=K.slice(0,x),I=K.slice(x+1);return[D,I]})):void 0,s=e.from;if(!e.dryRun&&!s&&!r&&U()&&!o.json){let K=await Y(o,{permission:"sending_access"}),x=await ui(K);x.length>0&&(s=await mi(x))}let a=[{flag:"from",message:"From address",placeholder:"onboarding@resend.dev",defaultValue:"onboarding@resend.dev",required:!r},{flag:"to",message:"To address",placeholder:"delivered@resend.dev",defaultValue:"delivered@resend.dev"},{flag:"subject",message:"Subject",placeholder:"Hello!",defaultValue:"Hello!",required:!r}],l=await ua({from:s,to:e.to?.[0],subject:e.subject},a,o),c=e.html,u=e.text;e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
697
+ `),c=oe(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
698
+ `),u=oe(e.textFile,o)),e.reactEmail&&(c=await Me(e.reactEmail,o));let p=u;!r&&!e.reactEmail&&!c&&!u&&(p=await P(void 0,{message:"Email body (plain text)",placeholder:"Hello, World!",defaultValue:"Hello, World!"},{message:"Missing email body. Provide --html, --html-file, --text, --text-file, or --react-email",code:"missing_body"},o));let f=e.to??[l.to],b=e.attachment?.map(K=>{let x;try{x=Yc(K)}catch(I){return g({message:I.message,code:"invalid_attachment"},{json:o.json})}let D={...x.contentType&&{contentType:x.contentType},...x.contentId&&{contentId:x.contentId}};if(x.isUrl)return{path:x.source,...x.filename&&{filename:x.filename},...D};try{let I=(0,Zc.readFileSync)(x.source);return{filename:x.filename??(0,ed.basename)(x.source),content:I,...D}}catch{return g({message:`Failed to read file: ${x.source}`,code:"file_read_error"},{json:o.json})}});if(e.attachmentsFile!==void 0){let K=oe(e.attachmentsFile,o);try{b=[...b??[],...Xc(K)]}catch(x){g({message:x.message,code:"invalid_attachment"},{json:o.json})}}let h=e.headers?Object.fromEntries(e.headers.map(K=>{let x=K.indexOf("=");return x<1&&g({message:`Invalid header format: "${K}". Expected key=value.`,code:"invalid_header"},{json:o.json}),[K.slice(0,x),K.slice(x+1)]})):void 0,A=e.tags?.map(K=>{let x=K.indexOf("=");return x<1&&g({message:`Invalid tag format: "${K}". Expected name=value.`,code:"invalid_tag"},{json:o.json}),{name:K.slice(0,x),value:K.slice(x+1)}}),w;if(r?w={template:{id:e.template,...n&&{variables:n}},to:f,...l.from&&{from:l.from},...l.subject&&{subject:l.subject},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...h&&{headers:h},...A&&{tags:A}}:w={from:l.from,to:f,subject:l.subject,...c&&{html:c},...p&&{text:p},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...b&&{attachments:b},...h&&{headers:h},...A&&{tags:A}},e.dryRun){Q({dryRun:!0,request:xg(w)},{json:o.json});return}let S=await Y(o,{permission:"sending_access"}),v=await ae(e.scheduledAt?"Scheduling email...":"Sending email...",()=>S.emails.send(w,e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:void 0),"send_error",o);!o.json&&U()?e.scheduledAt?console.log(`Email scheduled: ${v.id}`):console.log(`Email sent: ${v.id}`):Q(v,{json:o.json})});var Qr=ue(Ye(),1);var od=new d("share").description("Create a shareable link for a sent or received email").argument("[id]","Email ID").option("--expires-in <duration>",'Link expiration, e.g. "10m", "2 hours", "1 day" (max 48h, default 48h)').addHelpText("after",m({output:' {"object":"email","id":"<email-id>","url":"<share-link-url>"}',errorCodes:["auth_error","create_error"],examples:["resend emails share <email-id>",'resend emails share <email-id> --expires-in "1 day"',"resend emails share <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,qe,i);await M({loading:"Creating share link...",sdkCall:n=>n.emails.share(r,t.expiresIn!==void 0?{expiresIn:t.expiresIn}:void 0),onInteractive:n=>{console.log(` ${Qr.default.gray("ID:")} ${n.id}`),console.log(` ${Qr.default.gray("URL:")} ${n.url}`)}},i)});var id=new d("update").description("Update a scheduled email").argument("[id]","Email ID").requiredOption("--scheduled-at <datetime>","New scheduled date in ISO 8601 format (e.g. 2024-08-05T11:52:01.858Z)").addHelpText("after",m({context:"Required: --scheduled-at",output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","update_error"],examples:["resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z","resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,qe,i);await B({loading:"Updating email...",sdkCall:n=>n.emails.update({id:r,scheduledAt:t.scheduledAt}),errorCode:"update_error",successMsg:`Email updated: ${r}`},i)});var rd=new d("emails").description("Send and manage emails").addHelpText("after",m({examples:['resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi"',"resend emails get <email-id>","resend emails batch --file ./emails.json","resend emails cancel <email-id>","resend emails share <email-id>","resend emails metrics","resend emails attachments <email-id>","resend emails attachment <email-id> <attachment-id>","resend emails receiving list","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(jc,{isDefault:!0}).addCommand(td).addCommand(Ic).addCommand(Oc).addCommand(Tc).addCommand(id).addCommand(od).addCommand(Pc).addCommand(Bc).addCommand(Ec).addCommand(Vc);var kg=new Set(["string","number","boolean","date"]);function Nr(e){if(!e)return"(none)";let t=Object.entries(e);return t.length===0?"(empty)":t.map(([o,i])=>`${o}:${i}`).join(", ")}function nd(e){let t=e.map(o=>[o.name,Nr(o.schema),o.created_at,o.id]);return _(["Name","Schema","Created","ID"],t,"(no events)")}function Si(e,t){if(e==="null")return null;let o=_t(e,"--schema",t);(typeof o!="object"||o===null||Array.isArray(o))&&g({message:"--schema must be a JSON object mapping field names to types (string | number | boolean | date).",code:"invalid_schema"},{json:t.json});for(let[i,r]of Object.entries(o))(typeof r!="string"||!kg.has(r))&&g({message:`Invalid schema type for "${i}": "${r}". Must be one of: string, number, boolean, date.`,code:"invalid_schema"},{json:t.json});return o}var Xt={resource:"event",resourcePlural:"events",fetchItems:(e,{limit:t,after:o})=>e.events.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var sd=new d("create").description("Create a new event definition").option("--name <name>","Event name (e.g. user.signed_up)").option("--schema <json>","Schema as JSON mapping field names to types (string | number | boolean | date)").addHelpText("after",m({context:`Non-interactive: --name is required. --schema is optional.
699
699
 
700
700
  Schema format:
701
701
  A JSON object mapping field names to type strings.
702
702
  Valid types: string, number, boolean, date.
703
- Example: '{"plan":"string","age":"number","active":"boolean"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_name","invalid_schema","create_error"],examples:['resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,'resend events create --name "user.signed_up" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.name,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --name flag.",code:"missing_name"},o),r=e.schema?Si(e.schema,o):void 0;await j({loading:"Creating event...",sdkCall:n=>n.events.create({name:i,...r!==void 0&&{schema:r}}),onInteractive:n=>{console.log(`Event created: ${n.id}`)}},o)});var hd=new c("delete").alias("rm").description("Delete an event definition").argument("[id]","Event ID").option("--yes","Skip confirmation prompt").addHelpText("after",d({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"event","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend events delete <id> --yes","resend events delete <id> --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Zt,i);await z(r,!!t.yes,{confirmMessage:`Delete event ${r}?
704
- This cannot be undone.`,loading:"Deleting event...",object:"event",successMsg:"Event deleted",sdkCall:n=>n.events.remove(r)},i)});var gd=new c("get").description("Retrieve an event definition").argument("[id]","Event ID").addHelpText("after",d({output:" Full event object including schema.",errorCodes:["auth_error","fetch_error"],examples:["resend events get <id>","resend events get <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Zt,i);await I({loading:"Fetching event...",sdkCall:n=>n.events.get(r),onInteractive:n=>{console.log(n.name),console.log(`ID: ${n.id}`),console.log(`Schema: ${Lr(n.schema)}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`)}},i)});var Ad=new c("list").alias("ls").description("List all events").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this cursor (next page)").option("--before <cursor>","Return events before this cursor (previous page)").addHelpText("after",d({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend events list","resend events list --limit 25 --json","resend events list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching events...",sdkCall:n=>n.events.list(r),onInteractive:n=>{console.log(pd(n.data)),E(n,"events list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var bd=new c("open").description("Open the events page in the Resend dashboard").addHelpText("after",d({context:"Opens the events management page in the Resend dashboard in your default browser.",examples:["resend events open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await Te(fe.events,o)});var yd=new c("send").description("Send an event to trigger automations for a contact").option("--event <name>","Event name (e.g. user.signed_up)").option("--contact-id <id>","Contact ID (mutually exclusive with --email)").option("--email <email>","Contact email (mutually exclusive with --contact-id)").option("--payload <json>","Event payload as JSON string").addHelpText("after",d({context:`Sends an event for a specific contact, triggering any automations listening for it.
703
+ Example: '{"plan":"string","age":"number","active":"boolean"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_name","invalid_schema","create_error"],examples:['resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,'resend events create --name "user.signed_up" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --name flag.",code:"missing_name"},o),r=e.schema?Si(e.schema,o):void 0;await M({loading:"Creating event...",sdkCall:n=>n.events.create({name:i,...r!==void 0&&{schema:r}}),onInteractive:n=>{console.log(`Event created: ${n.id}`)}},o)});var ad=new d("delete").alias("rm").description("Delete an event definition").argument("[id]","Event ID").option("--yes","Skip confirmation prompt").addHelpText("after",m({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"event","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend events delete <id> --yes","resend events delete <id> --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Xt,i);await te(r,!!t.yes,{confirmMessage:`Delete event ${r}?
704
+ This cannot be undone.`,loading:"Deleting event...",object:"event",successMsg:"Event deleted",sdkCall:n=>n.events.remove(r)},i)});var ld=new d("get").description("Retrieve an event definition").argument("[id]","Event ID").addHelpText("after",m({output:" Full event object including schema.",errorCodes:["auth_error","fetch_error"],examples:["resend events get <id>","resend events get <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Xt,i);await $({loading:"Fetching event...",sdkCall:n=>n.events.get(r),onInteractive:n=>{console.log(n.name),console.log(`ID: ${n.id}`),console.log(`Schema: ${Nr(n.schema)}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`)}},i)});var cd=new d("list").alias("ls").description("List all events").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this cursor (next page)").option("--before <cursor>","Return events before this cursor (previous page)").addHelpText("after",m({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend events list","resend events list --limit 25 --json","resend events list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching events...",sdkCall:n=>n.events.list(r),onInteractive:n=>{console.log(nd(n.data)),T(n,"events list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var dd=new d("open").description("Open the events page in the Resend dashboard").addHelpText("after",m({context:"Opens the events management page in the Resend dashboard in your default browser.",examples:["resend events open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.events,o)});var ud=new d("send").description("Send an event to trigger automations for a contact").option("--event <name>","Event name (e.g. user.signed_up)").option("--contact-id <id>","Contact ID (mutually exclusive with --email)").option("--email <email>","Contact email (mutually exclusive with --contact-id)").option("--payload <json>","Event payload as JSON string").addHelpText("after",m({context:`Sends an event for a specific contact, triggering any automations listening for it.
705
705
 
706
706
  Contact targeting:
707
707
  Provide exactly one of --contact-id or --email to identify the contact.
@@ -709,12 +709,12 @@ Contact targeting:
709
709
 
710
710
  Payload:
711
711
  Optional JSON object with event-specific data.
712
- Must match the event's schema if one is defined.`,output:' {"object":"event","event":"<name>"}',errorCodes:["auth_error","missing_event","missing_contact","conflicting_contact","invalid_json","send_error"],examples:['resend events send --event "user.signed_up" --contact-id <id>','resend events send --event "user.signed_up" --email user@example.com',`resend events send --event "order.completed" --contact-id <id> --payload '{"amount":99,"currency":"usd"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals();e.contactId!==void 0&&e.email!==void 0&&h({message:"Cannot use both --contact-id and --email. Provide only one.",code:"conflicting_contact"},{json:o.json});let i=await T(e.event,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --event flag.",code:"missing_event"},o),r=e.contactId,n=e.email;!r&&!n&&(await bt(void 0,{message:"Identify contact by",options:[{value:"contact-id",label:"Contact ID"},{value:"email",label:"Email address"}]},{message:"Missing --contact-id or --email flag.",code:"missing_contact"},o)==="contact-id"?r=await T(void 0,{message:"Contact ID"},{message:"Missing contact ID.",code:"missing_contact"},o):n=await T(void 0,{message:"Email address",placeholder:"user@example.com"},{message:"Missing email.",code:"missing_contact"},o));let s=Dt(e.payload,"--payload",o),a=r?{event:i,contactId:r,...s&&{payload:s}}:{event:i,email:n,...s&&{payload:s}};await R({loading:"Sending event...",sdkCall:l=>l.events.send(a),errorCode:"send_error",successMsg:`Event sent: ${i}`},o)});X();var Cd=new c("update").description("Update an event schema").argument("[id]","Event ID").option("--schema <json>",'New schema as JSON (or "null" to clear the schema)').addHelpText("after",d({context:`Non-interactive: --schema is required. Pass "null" to remove the schema.
712
+ Must match the event's schema if one is defined.`,output:' {"object":"event","event":"<name>"}',errorCodes:["auth_error","missing_event","missing_contact","conflicting_contact","invalid_json","send_error"],examples:['resend events send --event "user.signed_up" --contact-id <id>','resend events send --event "user.signed_up" --email user@example.com',`resend events send --event "order.completed" --contact-id <id> --payload '{"amount":99,"currency":"usd"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals();e.contactId!==void 0&&e.email!==void 0&&g({message:"Cannot use both --contact-id and --email. Provide only one.",code:"conflicting_contact"},{json:o.json});let i=await P(e.event,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --event flag.",code:"missing_event"},o),r=e.contactId,n=e.email;!r&&!n&&(await At(void 0,{message:"Identify contact by",options:[{value:"contact-id",label:"Contact ID"},{value:"email",label:"Email address"}]},{message:"Missing --contact-id or --email flag.",code:"missing_contact"},o)==="contact-id"?r=await P(void 0,{message:"Contact ID"},{message:"Missing contact ID.",code:"missing_contact"},o):n=await P(void 0,{message:"Email address",placeholder:"user@example.com"},{message:"Missing email.",code:"missing_contact"},o));let s=_t(e.payload,"--payload",o),a=r?{event:i,contactId:r,...s&&{payload:s}}:{event:i,email:n,...s&&{payload:s}};await B({loading:"Sending event...",sdkCall:l=>l.events.send(a),errorCode:"send_error",successMsg:`Event sent: ${i}`},o)});V();var md=new d("update").description("Update an event schema").argument("[id]","Event ID").option("--schema <json>",'New schema as JSON (or "null" to clear the schema)').addHelpText("after",m({context:`Non-interactive: --schema is required. Pass "null" to remove the schema.
713
713
 
714
714
  Schema format:
715
715
  A JSON object mapping field names to type strings.
716
716
  Valid types: string, number, boolean, date.
717
- Example: '{"plan":"string","age":"number"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_schema","invalid_schema","update_error"],examples:[`resend events update <id> --schema '{"plan":"string","age":"number"}'`,"resend events update <id> --schema null",`resend events update <id> --schema '{"plan":"string"}' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Zt,i),n=t.schema;n===void 0&&((!w()||i.json)&&h({message:"Missing --schema flag.",code:"missing_schema"},{json:i.json}),n=await T(void 0,{message:'Schema JSON (or "null" to clear)',placeholder:'{"field":"string"}'},{message:"Missing --schema flag.",code:"missing_schema"},i));let s=Si(n,i);await R({loading:"Updating event...",sdkCall:a=>a.events.update(r,{schema:s}),errorCode:"update_error",successMsg:`Event updated: ${r}`},i)});var xd=new c("events").description("Manage events").addHelpText("after",d({context:`Events define the signals that trigger automations.
717
+ Example: '{"plan":"string","age":"number"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_schema","invalid_schema","update_error"],examples:[`resend events update <id> --schema '{"plan":"string","age":"number"}'`,"resend events update <id> --schema null",`resend events update <id> --schema '{"plan":"string"}' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Xt,i),n=t.schema;n===void 0&&((!U()||i.json)&&g({message:"Missing --schema flag.",code:"missing_schema"},{json:i.json}),n=await P(void 0,{message:'Schema JSON (or "null" to clear)',placeholder:'{"field":"string"}'},{message:"Missing --schema flag.",code:"missing_schema"},i));let s=Si(n,i);await B({loading:"Updating event...",sdkCall:a=>a.events.update(r,{schema:s}),errorCode:"update_error",successMsg:`Event updated: ${r}`},i)});var pd=new d("events").description("Manage events").addHelpText("after",m({context:`Events define the signals that trigger automations.
718
718
  Each event has a name and an optional typed schema (string | number | boolean | date fields).
719
719
 
720
720
  Lifecycle:
@@ -723,110 +723,70 @@ Lifecycle:
723
723
  3. resend events list
724
724
  4. resend events get <id>
725
725
  5. resend events update <id> --schema '{"plan":"string","trial":"boolean"}'
726
- 6. resend events delete <id> --yes`,examples:["resend events list",'resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,"resend events get <id>",`resend events update <id> --schema '{"plan":"string"}'`,"resend events update <id> --schema null","resend events delete <id> --yes",'resend events send --event "user.signed_up" --contact-id <id>',`resend events send --event "user.signed_up" --email user@example.com --payload '{"plan":"pro"}'`]})).addCommand(fd).addCommand(gd).addCommand(Ad,{isDefault:!0}).addCommand(Cd).addCommand(hd).addCommand(bd).addCommand(yd);var Xd=me(Je(),1);var wd=new c("create").description("Create a new inbox at one of your verified domains").option("--email_address <address>","Email address for the inbox, e.g. support@yourdomain.com (required)").option("--name <name>","Inbox name shown in the dashboard").option("--friendly_name <name>",'Name used when sending from this inbox, e.g. "Ada from Support"').option("--forwarding","Enable forwarding \u2014 received emails are also forwarded to a generated forwarding address").addHelpText("after",d({context:`The address must belong to one of your verified domains with receiving enabled.
727
-
728
- Non-interactive: --email_address is required.`,output:' {"object":"inbox","id":"<uuid>","name":"<name>","email_address":"<address>","domain_id":"<uuid>","forwarding_address":"<address>|null","unread":0,"created_at":"<date>"}',errorCodes:["auth_error","missing_email_address","create_error"],examples:["resend inboxes create --email_address support@yourdomain.com",'resend inboxes create --email_address hello@yourdomain.com --name "Hello" --friendly_name "Team Hello" --forwarding',"resend inboxes create --email_address support@yourdomain.com --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.email_address,{message:"Inbox email address",placeholder:"e.g. support@yourdomain.com"},{message:"Missing --email_address flag.",code:"missing_email_address"},o);await j({loading:"Creating inbox...",sdkCall:r=>r.inboxes.create({emailAddress:i,...e.name&&{name:e.name},...e.friendly_name&&{friendlyName:e.friendly_name},...e.forwarding&&{forwarding:!0}}),onInteractive:r=>{console.log(`Inbox created: ${r.id}`),console.log(`Email address: ${r.email_address}`),r.forwarding_address&&console.log(`Forwarding address: ${r.forwarding_address}`)}},o)});var L={resource:"inbox",resourcePlural:"inboxes",fetchItems:(e,{limit:t,after:o})=>e.inboxes.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email_address,hint:e.id})};function vd(e){let t=e.map(o=>[o.email_address,o.name??"",String(o.unread),o.id]);return _(["Email","Name","Unread","ID"],t,"(no inboxes)")}var Ud=new c("delete").alias("rm").description("Delete an inbox").argument("[id]","Inbox UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`Warning: Deleting an inbox removes its threads and messages, and the address
729
- stops receiving email.
730
-
731
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"inbox","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend inboxes delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend inboxes delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,L,i);await z(r.id,!!t.yes,{confirmMessage:`Delete inbox "${r.label}"?
732
- ID: ${r.id}
733
- All threads and messages in this inbox will be removed.`,loading:"Deleting inbox...",object:"inbox",successMsg:"Inbox deleted",sdkCall:n=>n.inboxes.remove(r.id)},i)});var Wr=(e,t)=>[...t,e],Sd=new c("create").description("Create a draft in an inbox").option("--inbox_id <id>","Inbox UUID").option("--to <address>","Recipient address (repeat the flag for multiple recipients)",Wr,[]).option("--cc <address>","Cc address (repeatable)",Wr,[]).option("--bcc <address>","Bcc address (repeatable)",Wr,[]).option("--subject <subject>","Draft subject").option("--text <text>","Plain text body").option("--html <html>","HTML body").option("--thread_id <thread_id>","Thread to reply to (requires --reply_to_email_id)").option("--reply_to_email_id <email_id>","Email the draft replies to (requires --thread_id)").addHelpText("after",d({context:`Creates a standalone draft, or a reply draft when --thread_id and
734
- --reply_to_email_id are passed together. At least one content field
735
- (--to, --cc, --bcc, --subject, --text, --html) is required.
736
-
737
- Send the draft later with "resend inboxes drafts send".`,output:' {"object":"inbox_draft","id":"<uuid>","type":"standalone|reply","to":["<address>"]|null,"cc":[],"bcc":[],"subject":"<subject>|null","html":"<html>|null","text":"<text>|null","thread_id":"<uuid>|null","reply_to_email_id":"<uuid>|null","email_id":null,"created_at":"<date>","updated_at":"<date>"}',errorCodes:["auth_error","invalid_options","missing_content","create_error"],examples:['resend inboxes drafts create --inbox_id <inbox_id> --to user@example.com --subject "Hello" --text "Draft body"','resend inboxes drafts create --inbox_id <inbox_id> --thread_id <thread_id> --reply_to_email_id <email_id> --text "Reply draft" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals();!!e.thread_id!=!!e.reply_to_email_id&&h({message:"--thread_id and --reply_to_email_id must be provided together.",code:"invalid_options"},{json:o.json}),e.to.length>0||e.cc.length>0||e.bcc.length>0||e.subject!==void 0||e.text!==void 0||e.html!==void 0||h({message:"Provide at least one of --to, --cc, --bcc, --subject, --text, or --html.",code:"missing_content"},{json:o.json});let n={inboxId:await g(e.inbox_id,L,o),...e.to.length>0&&{to:e.to},...e.cc.length>0&&{cc:e.cc},...e.bcc.length>0&&{bcc:e.bcc},...e.subject!==void 0&&{subject:e.subject},...e.text!==void 0&&{text:e.text},...e.html!==void 0&&{html:e.html},...e.thread_id&&{threadId:e.thread_id,replyToEmailId:e.reply_to_email_id}};await j({loading:"Creating draft...",sdkCall:s=>s.inboxes.drafts.create(n),onInteractive:s=>{console.log(`Draft created: ${s.id}`),console.log(`Type: ${s.type}`)}},o)});function wt(e){return{resource:"draft",resourcePlural:"drafts",fetchItems:(t,{limit:o,after:i})=>t.inboxes.drafts.list({inboxId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.subject??t.to?.join(", ")??"(no subject)",hint:t.id})}}function Kd(e){let t=e.map(o=>[o.to?.join(", ")??"",o.subject??"(no subject)",o.type,o.updated_at,o.id]);return _(["To","Subject","Type","Updated","ID"],t,"(no drafts)")}var kd=new c("delete").alias("rm").description("Delete a draft").option("--inbox_id <id>","Inbox UUID").option("--draft_id <id>","Draft UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"inbox_draft","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend inboxes drafts delete --inbox_id <inbox_id> --draft_id <draft_id> --yes","resend inboxes drafts delete --inbox_id <inbox_id> --draft_id <draft_id> --yes --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await J(e.draft_id,wt(i),o);await z(r.id,!!e.yes,{confirmMessage:`Delete draft "${r.label}"?
738
- ID: ${r.id}`,loading:"Deleting draft...",object:"inbox_draft",successMsg:"Draft deleted",sdkCall:n=>n.inboxes.drafts.remove({inboxId:i,draftId:r.id})},o)});var _d=new c("get").description("Retrieve a draft by ID").option("--inbox_id <id>","Inbox UUID").option("--draft_id <id>","Draft UUID").addHelpText("after",d({output:' {"object":"inbox_draft","id":"<uuid>","type":"standalone|reply","to":["<address>"]|null,"cc":[],"bcc":[],"subject":"<subject>|null","html":"<html>|null","text":"<text>|null","thread_id":"<uuid>|null","reply_to_email_id":"<uuid>|null","email_id":"<uuid>|null","created_at":"<date>","updated_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend inboxes drafts get --inbox_id <inbox_id> --draft_id <draft_id>","resend inboxes drafts get --inbox_id <inbox_id> --draft_id <draft_id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await g(e.draft_id,wt(i),o);await I({loading:"Fetching draft...",sdkCall:n=>n.inboxes.drafts.get({inboxId:i,draftId:r}),onInteractive:n=>{console.log(`${n.subject??"(no subject)"}`),console.log(`ID: ${n.id}`),console.log(`Type: ${n.type}`),n.to?.length&&console.log(`To: ${n.to.join(", ")}`),console.log(`Updated: ${n.updated_at}`),console.log(""),console.log(n.text??n.html??"(no body)")}},o)});var Fd=new c("list").alias("ls").description("List drafts in an inbox").option("--inbox_id <id>","Inbox UUID").option("--limit <n>","Maximum number of drafts to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list drafts after this draft ID").option("--before <cursor>","Cursor for backward pagination \u2014 list drafts before this draft ID").addHelpText("after",d({context:"Pass the last draft ID of the previous page as --after to fetch the next page.",output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","type":"standalone|reply","to":["<address>"]|null,"cc":[],"bcc":[],"subject":"<subject>|null","snippet":"<text>|null","thread_id":"<uuid>|null","reply_to_email_id":"<uuid>|null","updated_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","invalid_pagination","list_error"],examples:["resend inboxes drafts list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend inboxes drafts list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --json","resend inboxes drafts list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --limit 25 --after <draft_id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o),n=await g(e.inbox_id,L,o);await k({loading:"Fetching drafts...",sdkCall:s=>s.inboxes.drafts.list({inboxId:n,...r}),onInteractive:s=>{console.log(Kd(s.data)),E(s,"inboxes drafts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,extraFlags:`--inbox_id ${n}`})}},o)});var Rd=new c("send").description("Send a draft").option("--inbox_id <id>","Inbox UUID").option("--draft_id <id>","Draft UUID").addHelpText("after",d({context:"Sends the draft from the inbox address. The draft must have recipients and a body.",output:' {"object":"inbox_draft","id":"<uuid>","thread_id":"<uuid>","email_id":"<uuid>"}',errorCodes:["auth_error","send_error"],examples:["resend inboxes drafts send --inbox_id <inbox_id> --draft_id <draft_id>","resend inboxes drafts send --inbox_id <inbox_id> --draft_id <draft_id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await g(e.draft_id,wt(i),o);await R({loading:"Sending draft...",sdkCall:n=>n.inboxes.drafts.send({inboxId:i,draftId:r}),errorCode:"send_error",successMsg:`Draft sent: ${r}`},o)});var Jr=(e,t)=>[...t,e],Dd=new c("update").description("Update a draft's recipients, subject, or body").option("--inbox_id <id>","Inbox UUID").option("--draft_id <id>","Draft UUID").option("--to <address>","Replace recipients (repeatable)",Jr,[]).option("--cc <address>","Replace cc addresses (repeatable)",Jr,[]).option("--bcc <address>","Replace bcc addresses (repeatable)",Jr,[]).option("--subject <subject>","New subject").option("--text <text>","New plain text body").option("--html <html>","New HTML body").addHelpText("after",d({context:"At least one option is required. Provided fields replace the existing values.",output:' {"object":"inbox_draft","id":"<uuid>","type":"standalone|reply","to":["<address>"]|null,"cc":[],"bcc":[],"subject":"<subject>|null","html":"<html>|null","text":"<text>|null","thread_id":"<uuid>|null","reply_to_email_id":"<uuid>|null","email_id":"<uuid>|null","created_at":"<date>","updated_at":"<date>"}',errorCodes:["auth_error","no_changes","update_error"],examples:['resend inboxes drafts update --inbox_id <inbox_id> --draft_id <draft_id> --subject "Updated subject"','resend inboxes drafts update --inbox_id <inbox_id> --draft_id <draft_id> --text "New body" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals();e.to.length>0||e.cc.length>0||e.bcc.length>0||e.subject!==void 0||e.text!==void 0||e.html!==void 0||h({message:"Provide at least one option to update: --to, --cc, --bcc, --subject, --text, or --html.",code:"no_changes"},{json:o.json});let r=await g(e.inbox_id,L,o),n=await g(e.draft_id,wt(r),o),s={inboxId:r,draftId:n,...e.to.length>0&&{to:e.to},...e.cc.length>0&&{cc:e.cc},...e.bcc.length>0&&{bcc:e.bcc},...e.subject!==void 0&&{subject:e.subject},...e.text!==void 0&&{text:e.text},...e.html!==void 0&&{html:e.html}};await R({loading:"Updating draft...",sdkCall:a=>a.inboxes.drafts.update(s),errorCode:"update_error",successMsg:`Draft updated: ${n}`},o)});var Td=new c("drafts").description("Manage email drafts in an inbox").addHelpText("after",d({context:`Drafts are unsent emails in an inbox \u2014 standalone, or replies when created
739
- with --thread_id and --reply_to_email_id. Send one with "drafts send".`,examples:["resend inboxes drafts list --inbox_id <inbox_id>",'resend inboxes drafts create --inbox_id <inbox_id> --to user@example.com --subject "Hello" --text "Body"',"resend inboxes drafts send --inbox_id <inbox_id> --draft_id <draft_id>"]})).addCommand(Fd,{isDefault:!0}).addCommand(Sd).addCommand(_d).addCommand(Dd).addCommand(kd).addCommand(Rd);var Od=new c("get").description("Retrieve an inbox by ID").argument("[id]","Inbox UUID").addHelpText("after",d({output:' {"object":"inbox","id":"<uuid>","name":"<name>|null","email_address":"<address>","forwarding_address":"<address>|null","unread":0,"drafts":0,"last_received":"<date>|null"}',errorCodes:["auth_error","fetch_error"],examples:["resend inboxes get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend inboxes get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,L,i);await I({loading:"Fetching inbox...",sdkCall:n=>n.inboxes.get(r),onInteractive:n=>{console.log(`${n.email_address}`),console.log(`ID: ${n.id}`),n.name&&console.log(`Name: ${n.name}`),n.forwarding_address&&console.log(`Forwarding address: ${n.forwarding_address}`),console.log(`Unread: ${n.unread}`),console.log(`Drafts: ${n.drafts}`),n.last_received&&console.log(`Last received: ${n.last_received}`)}},i)});var Ed=new c("create").description("Create a label in an inbox").option("--inbox_id <id>","Inbox UUID").option("--name <name>","Label name (required, max 64 characters)").addOption(new M("--color <color>","Label color (random when omitted)").choices(Lo)).addHelpText("after",d({context:`An inbox can have up to 100 labels.
740
-
741
- Non-interactive: --name is required.`,output:' {"object":"inbox_label","id":"<uuid>","name":"<name>","color":"<color>","created_at":"<date>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend inboxes labels create --inbox_id <inbox_id> --name "Billing"','resend inboxes labels create --inbox_id <inbox_id> --name "Urgent" --color crimson --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await T(e.name,{message:"Label name",placeholder:"e.g. Billing"},{message:"Missing --name flag.",code:"missing_name"},o);await j({loading:"Creating label...",sdkCall:n=>n.inboxes.labels.create({inboxId:i,name:r,...e.color&&{color:e.color}}),onInteractive:n=>{console.log(`Label created: ${n.id}`),console.log(`Name: ${n.name} (${n.color})`)}},o)});function Ki(e){return{resource:"label",resourcePlural:"labels",fetchItems:t=>t.inboxes.labels.list({inboxId:e}).then(o=>({...o,data:o.data?{data:o.data.data,has_more:!1}:null})),display:t=>({label:t.name,hint:t.id})}}function Bd(e){let t=e.map(o=>[o.name,o.color,o.created_at,o.id]);return _(["Name","Color","Created","ID"],t,"(no labels)")}var Id=new c("delete").alias("rm").description("Delete a label").option("--inbox_id <id>","Inbox UUID").option("--label_id <id>","Label UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`The label is removed from every thread that has it. Threads themselves are
742
- not deleted.
743
-
744
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"inbox_label","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend inboxes labels delete --inbox_id <inbox_id> --label_id <label_id> --yes","resend inboxes labels delete --inbox_id <inbox_id> --label_id <label_id> --yes --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await J(e.label_id,Ki(i),o);await z(r.id,!!e.yes,{confirmMessage:`Delete label "${r.label}"?
745
- ID: ${r.id}
746
- It will be removed from every thread that has it.`,loading:"Deleting label...",object:"inbox_label",successMsg:"Label deleted",sdkCall:n=>n.inboxes.labels.remove({inboxId:i,labelId:r.id})},o)});var jd=new c("list").alias("ls").description("List labels in an inbox").option("--inbox_id <id>","Inbox UUID").addHelpText("after",d({context:'Returns all labels in the inbox (not paginated). Use the label IDs with "threads update --label_id" and "threads list --label".',output:' {"object":"list","data":[{"id":"<uuid>","name":"<name>","color":"cyan|teal|grass|lime|yellow|orange|iris|plum|crimson|bronze|mauve","created_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend inboxes labels list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend inboxes labels list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o);await k({loading:"Fetching labels...",sdkCall:r=>r.inboxes.labels.list({inboxId:i}),onInteractive:r=>console.log(Bd(r.data))},o)});var Pd=new c("update").description("Update a label's name or color").option("--inbox_id <id>","Inbox UUID").option("--label_id <id>","Label UUID").option("--name <name>","New label name (max 64 characters)").addOption(new M("--color <color>","New label color").choices(Lo)).addHelpText("after",d({context:"At least one of --name or --color must be provided.",output:' {"object":"inbox_label","id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:['resend inboxes labels update --inbox_id <inbox_id> --label_id <label_id> --name "Billing"',"resend inboxes labels update --inbox_id <inbox_id> --label_id <label_id> --color teal --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals();!e.name&&!e.color&&h({message:"Provide at least one option to update: --name or --color.",code:"no_changes"},{json:o.json});let i=await g(e.inbox_id,L,o),r=await g(e.label_id,Ki(i),o);await R({loading:"Updating label...",sdkCall:n=>n.inboxes.labels.update({inboxId:i,labelId:r,...e.name&&{name:e.name},...e.color&&{color:e.color}}),errorCode:"update_error",successMsg:`Label updated: ${r}`},o)});var $d=new c("labels").description("Manage labels for organizing threads in an inbox").addHelpText("after",d({context:`Labels organize threads within an inbox. Apply one with
747
- "resend inboxes threads update --inbox_id <inbox_id> --thread_id <thread_id> --label_id <label_id>" and
748
- filter with "resend inboxes threads list --inbox_id <inbox_id> --label <label_id>".`,examples:["resend inboxes labels list --inbox_id <inbox_id>",'resend inboxes labels create --inbox_id <inbox_id> --name "Billing" --color teal',"resend inboxes labels delete --inbox_id <inbox_id> --label_id <label_id> --yes"]})).addCommand(jd,{isDefault:!0}).addCommand(Ed).addCommand(Pd).addCommand(Id);var Gd=new c("list").alias("ls").description("List all inboxes").option("--limit <n>","Maximum number of inboxes to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","name":"<name>|null","email_address":"<address>","unread":0,"last_received":"<date>|null"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend inboxes list","resend inboxes list --json","resend inboxes list --limit 25 --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching inboxes...",sdkCall:n=>n.inboxes.list(r),onInteractive:n=>{console.log(vd(n.data)),E(n,"inboxes list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});function Le(e){return{resource:"thread",resourcePlural:"threads",fetchItems:(t,{limit:o,after:i})=>t.inboxes.threads.list({inboxId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.subject??"(no subject)",hint:t.id})}}function Hd(e){let t=e.map(o=>[o.from??"",o.subject??"(no subject)",o.read?"yes":"no",String(o.message_count),o.received_at,o.id]);return _(["From","Subject","Read","Msgs","Received","ID"],t,"(no threads)")}var Qd=new c("delete").alias("rm").description("Delete a thread and all of its messages").option("--inbox_id <id>","Inbox UUID").option("--thread_id <id>","Thread UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"inbox_thread","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend inboxes threads delete --inbox_id <inbox_id> --thread_id <thread_id> --yes","resend inboxes threads delete --inbox_id <inbox_id> --thread_id <thread_id> --yes --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await J(e.thread_id,Le(i),o);await z(r.id,!!e.yes,{confirmMessage:`Delete thread "${r.label}"?
749
- ID: ${r.id}
750
- All messages in this thread will be removed.`,loading:"Deleting thread...",object:"inbox_thread",successMsg:"Thread deleted",sdkCall:n=>n.inboxes.threads.remove({inboxId:i,threadId:r.id})},o)});var Ag=(e,t)=>[...t,e],Nd=new c("forward").description("Forward an email in a thread to other recipients").option("--inbox_id <id>","Inbox UUID").option("--thread_id <id>","Thread UUID").option("--email_id <id>",'Email UUID to forward (from "threads get")').option("--to <address>","Recipient address (repeat the flag for multiple recipients)",Ag,[]).option("--text <text>","Plain text note to include with the forward").option("--html <html>","HTML note to include with the forward").option("--subject <subject>","Override the forwarded subject").addHelpText("after",d({context:"Forwards the email from the inbox address. --to is required; --text/--html add an optional note.",output:' {"id":"<uuid>","email_id":"<uuid>","direction":"outbound","from":"<inbox-address>","to":["<recipient>"],"text":"<text>|null","html":"<html>|null","attachments":[],"read":true,"received_at":"<date>"}',errorCodes:["auth_error","missing_id","missing_to","create_error"],examples:["resend inboxes threads emails forward --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --to teammate@example.com",'resend inboxes threads emails forward --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --to a@x.com --to b@x.com --text "FYI" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals();e.to.length===0&&h({message:"Provide at least one recipient with --to.",code:"missing_to"},{json:o.json});let i=await g(e.inbox_id,L,o),r=await g(e.thread_id,Le(i),o),n=await T(e.email_id,{message:"Email ID to forward",placeholder:'from "threads get"'},{message:"Missing --email_id flag.",code:"missing_id"},o);await j({loading:"Forwarding email...",sdkCall:s=>s.inboxes.threads.emails.forward({inboxId:i,threadId:r,emailId:n,to:e.to,...e.text&&{text:e.text},...e.html&&{html:e.html},...e.subject&&{subject:e.subject}}),onInteractive:s=>{console.log(`Email forwarded: ${s.email_id}`),console.log(`To: ${s.to.join(", ")}`)}},o)});var Md=new c("get").description("Retrieve a single email from a thread").option("--inbox_id <id>","Inbox UUID").option("--thread_id <id>","Thread UUID").option("--email_id <id>",'Email UUID (from "threads get")').addHelpText("after",d({output:' {"id":"<uuid>","direction":"inbound|outbound","from":"<sender>","to":[],"cc":[],"bcc":[],"reply_to":[],"subject":"<subject>|null","message_id":"<message-id>|null","html":"<html>|null","text":"<text>|null","attachments":[{"id":"<id>","filename":"<name>|null","size":123}],"read":true,"received_at":"<date>"}',errorCodes:["auth_error","missing_id","fetch_error"],examples:["resend inboxes threads emails get --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id>","resend inboxes threads emails get --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await g(e.thread_id,Le(i),o),n=await T(e.email_id,{message:"Email ID",placeholder:'from "threads get"'},{message:"Missing --email_id flag.",code:"missing_id"},o);await I({loading:"Fetching email...",sdkCall:s=>s.inboxes.threads.emails.get({inboxId:i,threadId:r,emailId:n}),onInteractive:s=>{console.log(`${s.subject??"(no subject)"}`),console.log(`ID: ${s.id}`),console.log(`[${s.direction}] ${s.from} \xB7 ${s.received_at}`),console.log(`To: ${s.to.join(", ")}`),s.attachments.length>0&&console.log(`Attachments: ${s.attachments.map(a=>a.filename??a.id).join(", ")}`),console.log(""),console.log(s.text??s.html??"(no body)")}},o)});var qd=new c("reply").description("Reply to an email in a thread").option("--inbox_id <id>","Inbox UUID").option("--thread_id <id>","Thread UUID").option("--email_id <id>",'Email UUID to reply to (from "threads get")').option("--text <text>","Plain text body of the reply").option("--html <html>","HTML body of the reply").option("--subject <subject>","Override the reply subject").addHelpText("after",d({context:`Sends the reply from the inbox address to the sender of the original email.
751
- At least one of --text or --html is required.`,output:' {"id":"<uuid>","email_id":"<uuid>","direction":"outbound","from":"<inbox-address>","to":["<recipient>"],"text":"<text>|null","html":"<html>|null","read":true,"received_at":"<date>"}',errorCodes:["auth_error","missing_id","missing_content","create_error"],examples:['resend inboxes threads emails reply --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --text "On it \u2014 reply to follow."','resend inboxes threads emails reply --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --html "<p>Done!</p>" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),{text:i,html:r}=e;!i&&!r&&h({message:"Provide --text or --html for the reply body.",code:"missing_content"},{json:o.json});let n=await g(e.inbox_id,L,o),s=await g(e.thread_id,Le(n),o),a=await T(e.email_id,{message:"Email ID to reply to",placeholder:'from "threads get"'},{message:"Missing --email_id flag.",code:"missing_id"},o),l=i?{text:i,...r&&{html:r}}:{html:r};await j({loading:"Sending reply...",sdkCall:u=>u.inboxes.threads.emails.reply({inboxId:n,threadId:s,emailId:a,...l,...e.subject&&{subject:e.subject}}),onInteractive:u=>{console.log(`Reply sent: ${u.email_id}`),console.log(`To: ${u.to.join(", ")}`)}},o)});var Ld=new c("emails").description("Work with individual emails in a thread").addHelpText("after",d({context:'Email IDs come from "resend inboxes threads get", which lists every message in a thread.',examples:["resend inboxes threads emails get --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id>",'resend inboxes threads emails reply --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --text "Thanks!"',"resend inboxes threads emails forward --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --to teammate@example.com"]})).addCommand(Md).addCommand(qd).addCommand(Nd);var Wd=new c("get").description("Retrieve a thread with all of its messages").option("--inbox_id <id>","Inbox UUID").option("--thread_id <id>","Thread UUID").addHelpText("after",d({context:"Returns the thread summary and every message in the thread, including html and text bodies.",output:' {"object":"inbox_thread","id":"<uuid>","subject":"<subject>|null","folder":"inbox|archive|spam|sent|trash","labels":[],"read":true,"messages":[{"id":"<uuid>","direction":"inbound|outbound","from":"<sender>","to":[],"cc":[],"bcc":[],"reply_to":[],"subject":"<subject>|null","message_id":"<message-id>|null","html":"<html>|null","text":"<text>|null","attachments":[],"read":true,"received_at":"<date>"}]}',errorCodes:["auth_error","fetch_error"],examples:["resend inboxes threads get --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --thread_id 3deaccfa-f572-443c-be6f-92b74f9d5c48","resend inboxes threads get --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --thread_id 3deaccfa-f572-443c-be6f-92b74f9d5c48 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await g(e.inbox_id,L,o),r=await g(e.thread_id,Le(i),o);await I({loading:"Fetching thread...",sdkCall:n=>n.inboxes.threads.get({inboxId:i,threadId:r}),onInteractive:n=>{console.log(`${n.subject??"(no subject)"}`),console.log(`ID: ${n.id}`),console.log(`Folder: ${n.folder}`),n.labels.length>0&&console.log(`Labels: ${n.labels.map(s=>s.name).join(", ")}`),console.log(`Read: ${n.read?"yes":"no"}`);for(let s of n.messages){console.log(""),console.log(`[${s.direction}] ${s.from} \xB7 ${s.received_at}`),console.log(`Email ID: ${s.id}`);let a=s.text??s.html??"(no body)";console.log(a)}}},o)});var bg=(e,t)=>[...t,e],Jd=new c("list").alias("ls").description("List threads in an inbox").option("--inbox_id <id>","Inbox UUID").addOption(new M("--folder <folder>","Folder to list (default: inbox)").choices(Ks)).option("--query <text>","Search subject, sender, and label names").option("--from <sender>","Filter by sender address or name").option("--label <label_id>","Filter by label UUID (repeat the flag for multiple labels)",bg,[]).option("--limit <n>","Maximum number of threads to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list threads after this thread ID").option("--before <cursor>","Cursor for backward pagination \u2014 list threads before this thread ID").addHelpText("after",d({context:`Threads are ordered by newest activity first. Pass the last thread ID of the
752
- previous page as --after to fetch the next page.
753
-
754
- --label takes label UUIDs (from "resend inboxes labels list"), not label names.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","subject":"<subject>|null","from":"<sender>|null","to":[],"cc":[],"bcc":[],"labels":[],"message_count":1,"has_attachment":false,"has_draft":false,"read":false,"received_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","invalid_pagination","list_error"],examples:["resend inboxes threads list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend inboxes threads list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --folder archive --json","resend inboxes threads list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --query billing --json","resend inboxes threads list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf --limit 25 --after <thread_id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o),n=await g(e.inbox_id,L,o);await k({loading:"Fetching threads...",sdkCall:s=>s.inboxes.threads.list({inboxId:n,...e.folder&&{folder:e.folder},...e.query&&{query:e.query},...e.from&&{from:e.from},...e.label.length>0&&{label:e.label},...r}),onInteractive:s=>{console.log(Hd(s.data)),E(s,"inboxes threads list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,extraFlags:[`--inbox_id ${n}`,e.folder&&`--folder ${e.folder}`,e.query&&`--query ${e.query}`,e.from&&`--from ${e.from}`,...e.label.map(a=>`--label ${a}`)].filter(Boolean).join(" ")})}},o)});var Vd=new c("update").description("Mark a thread read or unread, move it, or apply a label").option("--inbox_id <id>","Inbox UUID").option("--thread_id <id>","Thread UUID").option("--read","Mark every message in the thread as read").option("--unread","Mark every message in the thread as unread").addOption(new M("--folder <folder>","Move the thread to a folder").choices(ks)).option("--label_id <label_id>","Apply this label (UUID) to the thread").addHelpText("after",d({context:`At least one of --read/--unread, --folder, or --label_id is required.
755
- Threads cannot be moved to "sent".`,output:' {"object":"inbox_thread","id":"<uuid>","subject":"<subject>|null","folder":"inbox|archive|spam|sent|trash","labels":[],"read":true}',errorCodes:["auth_error","invalid_options","no_changes","update_error"],examples:["resend inboxes threads update --inbox_id <inbox_id> --thread_id <thread_id> --read","resend inboxes threads update --inbox_id <inbox_id> --thread_id <thread_id> --folder archive --json","resend inboxes threads update --inbox_id <inbox_id> --thread_id <thread_id> --label_id <label_id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals();e.read&&e.unread&&h({message:"Use either --read or --unread, not both.",code:"invalid_options"},{json:o.json});let i=e.read?!0:e.unread?!1:void 0;i===void 0&&!e.folder&&!e.label_id&&h({message:"Provide at least one option to update: --read/--unread, --folder, or --label_id.",code:"no_changes"},{json:o.json});let r=await g(e.inbox_id,L,o),n=await g(e.thread_id,Le(r),o),s={inboxId:r,threadId:n,...i!==void 0&&{read:i},...e.folder&&{folder:e.folder},...e.label_id&&{labelId:e.label_id}};await R({loading:"Updating thread...",sdkCall:a=>a.inboxes.threads.update(s),errorCode:"update_error",successMsg:`Thread updated: ${n}`},o)});var zd=new c("threads").description("Browse and reply to email threads in an inbox").addHelpText("after",d({context:`Received messages are grouped into threads. "list" shows threads in a folder,
756
- "get" returns a thread with full message bodies, "update" marks read/unread,
757
- moves, or labels a thread, and "emails" works with individual messages.`,examples:["resend inboxes threads list --inbox_id <inbox_id>","resend inboxes threads get --inbox_id <inbox_id> --thread_id <thread_id>","resend inboxes threads update --inbox_id <inbox_id> --thread_id <thread_id> --read",'resend inboxes threads emails reply --inbox_id <inbox_id> --thread_id <thread_id> --email_id <email_id> --text "Thanks!"']})).addCommand(Jd,{isDefault:!0}).addCommand(Wd).addCommand(Vd).addCommand(Qd).addCommand(Ld);var Yd=new c("update").description("Update an inbox's name or friendly name").argument("[id]","Inbox UUID").option("--name <name>","New inbox name").option("--friendly_name <name>",'New name used when sending from this inbox, e.g. "Ada from Support"').addHelpText("after",d({context:`At least one of --name or --friendly_name is required.
758
-
759
- Note: the email address cannot be changed after creation.
760
- To use a different address, create a new inbox.`,output:' {"object":"inbox","id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:['resend inboxes update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Support"','resend inboxes update 78261eea-8f8b-4381-83c6-79fa7120f1cf --friendly_name "Ada from Support" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,L,i);!t.name&&!t.friendly_name&&h({message:"Provide at least one option to update: --name or --friendly_name.",code:"no_changes"},{json:i.json});let n={...t.name&&{name:t.name},...t.friendly_name&&{friendlyName:t.friendly_name}};await R({loading:"Updating inbox...",sdkCall:s=>s.inboxes.update(r,n),errorCode:"update_error",successMsg:`Inbox updated: ${r}`},i)});var Zd=new c("inboxes").description(`${Xd.default.cyan("\u25CF beta")} \xB7 Manage inboxes \u2014 email addresses at your domains that receive mail (request access to enable)`).addHelpText("after",d({context:`Beta: this command requires inboxes to be enabled on your account.
761
- Not enabled yet? Reach out to Resend to join the beta. Calls return an API error until then.
762
-
763
- An inbox is an email address at one of your verified domains that can receive email.
764
- Received messages are grouped into threads inside the inbox.
765
-
766
- Inboxes require a full-access API key \u2014 sending-only keys are rejected.`,examples:["resend inboxes list","resend inboxes create --email_address support@yourdomain.com","resend inboxes get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend inboxes threads list --inbox_id 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend inboxes update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Support"',"resend inboxes delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(wd).addCommand(Od).addCommand(Gd,{isDefault:!0}).addCommand(zd).addCommand($d).addCommand(Td).addCommand(Yd).addCommand(Ud);function eu(e){let t=e.map(o=>[o.method,o.endpoint,String(o.response_status),o.created_at,o.id]);return _(["Method","Endpoint","Status","Created","ID"],t,"(no logs)")}var tu={resource:"log",resourcePlural:"logs",fetchItems:(e,{limit:t,after:o})=>e.logs.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.method} ${e.endpoint}`,hint:e.id})};var ou=new c("get").description("Retrieve a single API request log with full request/response bodies").argument("[id]","Log ID").addHelpText("after",d({output:" Full log object including request_body and response_body.",errorCodes:["auth_error","fetch_error"],examples:["resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,tu,i);await I({loading:"Fetching log...",sdkCall:n=>n.logs.get(r),onInteractive:n=>{console.log(`${n.method} ${n.endpoint} \u2014 ${n.response_status}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`User-Agent: ${n.user_agent??"(none)"}`),n.request_body&&console.log(`
726
+ 6. resend events delete <id> --yes`,examples:["resend events list",'resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,"resend events get <id>",`resend events update <id> --schema '{"plan":"string"}'`,"resend events update <id> --schema null","resend events delete <id> --yes",'resend events send --event "user.signed_up" --contact-id <id>',`resend events send --event "user.signed_up" --email user@example.com --payload '{"plan":"pro"}'`]})).addCommand(sd).addCommand(ld).addCommand(cd,{isDefault:!0}).addCommand(md).addCommand(ad).addCommand(dd).addCommand(ud);function fd(e){let t=e.map(o=>[o.method,o.endpoint,String(o.response_status),o.created_at,o.id]);return _(["Method","Endpoint","Status","Created","ID"],t,"(no logs)")}var gd={resource:"log",resourcePlural:"logs",fetchItems:(e,{limit:t,after:o})=>e.logs.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.method} ${e.endpoint}`,hint:e.id})};var hd=new d("get").description("Retrieve a single API request log with full request/response bodies").argument("[id]","Log ID").addHelpText("after",m({output:" Full log object including request_body and response_body.",errorCodes:["auth_error","fetch_error"],examples:["resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,gd,i);await $({loading:"Fetching log...",sdkCall:n=>n.logs.get(r),onInteractive:n=>{console.log(`${n.method} ${n.endpoint} \u2014 ${n.response_status}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`User-Agent: ${n.user_agent??"(none)"}`),n.request_body&&console.log(`
767
727
  Request Body:
768
728
  ${JSON.stringify(n.request_body,null,2)}`),n.response_body&&console.log(`
769
729
  Response Body:
770
- ${JSON.stringify(n.response_body,null,2)}`)}},i)});var iu=new c("list").alias("ls").description("List API request logs").option("--limit <n>","Maximum number of logs to return (1-100)","10").option("--after <cursor>","Return logs after this cursor (next page)").option("--before <cursor>","Return logs before this cursor (previous page)").addHelpText("after",d({output:` {"object":"list","data":[...],"has_more":true}
771
- The list response does not include request/response bodies \u2014 use "resend logs get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend logs list","resend logs list --limit 25 --json","resend logs list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching logs...",sdkCall:n=>n.logs.list(r),onInteractive:n=>{console.log(eu(n.data)),E(n,"logs list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ru=new c("open").description("Open a log or the logs list in the Resend dashboard").argument("[id]","Log ID \u2014 omit to open the logs list").addHelpText("after",d({context:`Opens the Resend dashboard in your default browser.
730
+ ${JSON.stringify(n.response_body,null,2)}`)}},i)});var Ad=new d("list").alias("ls").description("List API request logs").option("--limit <n>","Maximum number of logs to return (1-100)","10").option("--after <cursor>","Return logs after this cursor (next page)").option("--before <cursor>","Return logs before this cursor (previous page)").addHelpText("after",m({output:` {"object":"list","data":[...],"has_more":true}
731
+ The list response does not include request/response bodies \u2014 use "resend logs get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend logs list","resend logs list --limit 25 --json","resend logs list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching logs...",sdkCall:n=>n.logs.list(r),onInteractive:n=>{console.log(fd(n.data)),T(n,"logs list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var bd=new d("open").description("Open a log or the logs list in the Resend dashboard").argument("[id]","Log ID \u2014 omit to open the logs list").addHelpText("after",m({context:`Opens the Resend dashboard in your default browser.
772
732
  With an ID: opens that log's detail page.
773
- Without an ID: opens the logs list.`,examples:["resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).action(async(e,t,o)=>{let i=e?fe.log(e):fe.logs,r=o.optsWithGlobals();await Te(i,r)});var nu=new c("logs").description("View API request logs").addHelpText("after",d({examples:["resend logs list","resend logs list --limit 25 --json","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).addCommand(ou).addCommand(iu,{isDefault:!0}).addCommand(ru);var su={resource:"OAuth grant",resourcePlural:"OAuth grants",fetchItems:(e,{limit:t,after:o})=>e.oauthGrants.list({limit:t,...o&&{after:o}}),display:e=>({label:e.client.name,hint:e.id})};function au(e){let t=e.map(o=>[o.client.name,o.id,o.scopes.join(", "),o.created_at,o.revoked_at??""]);return _(["Client","ID","Scopes","Created","Revoked"],t,"(no OAuth grants)")}var lu=new c("list").alias("ls").description("List OAuth grants for the team (both active and revoked), including each grant's client, scopes, and revocation status").option("--limit <n>","Maximum number of OAuth grants to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({output:` {"object":"list","has_more":false,"data":[{"id":"<id>","client_id":"<id>","scopes":["<scope>"],"created_at":"<date>","revoked_at":"<date>|null","revoked_reason":"<reason>|null","client":{"name":"<name>","logo_uri":"<url>|null"}}]}
774
- Revoked grants have non-null revoked_at and revoked_reason.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching OAuth grants...",sdkCall:n=>n.oauthGrants.list(r),onInteractive:n=>{console.log(au(n.data)),E(n,"oauth-grants list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var cu=new c("revoke").description("Revoke an OAuth grant \u2014 every access and refresh token issued under it stops working immediately").argument("[id]","OAuth grant ID").option("--yes","Skip confirmation prompt").addHelpText("after",d({context:`Non-interactive: --yes is required to confirm revocation when stdin/stdout is not a TTY.
733
+ Without an ID: opens the logs list.`,examples:["resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).action(async(e,t,o)=>{let i=e?pe.log(e):pe.logs,r=o.optsWithGlobals();await De(i,r)});var yd=new d("logs").description("View API request logs").addHelpText("after",m({examples:["resend logs list","resend logs list --limit 25 --json","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).addCommand(hd).addCommand(Ad,{isDefault:!0}).addCommand(bd);var Cd={resource:"OAuth grant",resourcePlural:"OAuth grants",fetchItems:(e,{limit:t,after:o})=>e.oauthGrants.list({limit:t,...o&&{after:o}}),display:e=>({label:e.client.name,hint:e.id})};function wd(e){let t=e.map(o=>[o.client.name,o.id,o.scopes.join(", "),o.created_at,o.revoked_at??""]);return _(["Client","ID","Scopes","Created","Revoked"],t,"(no OAuth grants)")}var Ud=new d("list").alias("ls").description("List OAuth grants for the team (both active and revoked), including each grant's client, scopes, and revocation status").option("--limit <n>","Maximum number of OAuth grants to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",m({output:` {"object":"list","has_more":false,"data":[{"id":"<id>","client_id":"<id>","scopes":["<scope>"],"created_at":"<date>","revoked_at":"<date>|null","revoked_reason":"<reason>|null","client":{"name":"<name>","logo_uri":"<url>|null"}}]}
734
+ Revoked grants have non-null revoked_at and revoked_reason.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching OAuth grants...",sdkCall:n=>n.oauthGrants.list(r),onInteractive:n=>{console.log(wd(n.data)),T(n,"oauth-grants list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Sd=new d("revoke").description("Revoke an OAuth grant \u2014 every access and refresh token issued under it stops working immediately").argument("[id]","OAuth grant ID").option("--yes","Skip confirmation prompt").addHelpText("after",m({context:`Non-interactive: --yes is required to confirm revocation when stdin/stdout is not a TTY.
775
735
 
776
736
  Any team API key can revoke any of the team's grants. Revocation is immediate and
777
- irreversible \u2014 the client would need to re-authorize to regain access.`,output:' {"object":"oauth_grant","id":"<id>","revoked_at":"<date>","revoked_reason":"<reason>"}',errorCodes:["auth_error","confirmation_required","revoke_error"],examples:["resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes","resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,su,i);t.yes||await si(r.id,`Revoke OAuth grant for "${r.label}"?
737
+ irreversible \u2014 the client would need to re-authorize to regain access.`,output:' {"object":"oauth_grant","id":"<id>","revoked_at":"<date>","revoked_reason":"<reason>"}',errorCodes:["auth_error","confirmation_required","revoke_error"],examples:["resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes","resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Cd,i);t.yes||await ri(r.id,`Revoke OAuth grant for "${r.label}"?
778
738
  ID: ${r.id}
779
- Every access and refresh token issued under it will stop working.`,i),await R({loading:"Revoking OAuth grant...",sdkCall:n=>n.oauthGrants.revoke(r.id),errorCode:"revoke_error",successMsg:"OAuth grant revoked"},i)});var du=new c("oauth-grants").description("Manage OAuth grants (apps authorized to act on the team)").addHelpText("after",d({context:`An OAuth grant is a durable record of a client (app) authorized by the team.
739
+ Every access and refresh token issued under it will stop working.`,i),await B({loading:"Revoking OAuth grant...",sdkCall:n=>n.oauthGrants.revoke(r.id),errorCode:"revoke_error",successMsg:"OAuth grant revoked"},i)});var vd=new d("oauth-grants").description("Manage OAuth grants (apps authorized to act on the team)").addHelpText("after",m({context:`An OAuth grant is a durable record of a client (app) authorized by the team.
780
740
  - Listing returns every grant, active and revoked. revoked_at/revoked_reason are null while active.
781
- - Revoking is immediate: all access and refresh tokens issued under the grant stop working.`,examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants revoke <id> --yes"]})).addCommand(lu,{isDefault:!0}).addCommand(cu);var uu=new c("open").description("Open the Resend dashboard in your browser").addHelpText("after",d({context:"Opens https://resend.com/emails in your default browser.",examples:["resend open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await Te(fe.emails,o)});var mu=new c("contacts").description("List contacts belonging to a segment").argument("[segmentId]","ID of the segment").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",d({context:`Lists all contacts that belong to the given segment.
741
+ - Revoking is immediate: all access and refresh tokens issued under the grant stop working.`,examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants revoke <id> --yes"]})).addCommand(Ud,{isDefault:!0}).addCommand(Sd);var Kd=new d("open").description("Open the Resend dashboard in your browser").addHelpText("after",m({context:"Opens https://resend.com/emails in your default browser.",examples:["resend open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.emails,o)});var xd=new d("contacts").description("List contacts belonging to a segment").argument("[segmentId]","ID of the segment").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",m({context:`Lists all contacts that belong to the given segment.
782
742
 
783
743
  If no segment ID is provided interactively, a picker will prompt you to choose one.
784
744
 
785
745
  Pagination: use --after or --before with a contact ID as the cursor.
786
746
  Only one of --after or --before may be used at a time.
787
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --limit 25 --json","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --after 479e3145-dd38-4932-8c0c-e58b548c9e76"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Oe,i),n=O(t.limit,i),s=P(n,t.after,t.before,i);await k({loading:"Fetching segment contacts...",sdkCall:a=>a.contacts.list({segmentId:r,...s}),onInteractive:a=>{console.log(yi(a.data)),E(a,`segments contacts ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var pu=new c("create").description("Create a new segment").option("--name <name>","Segment name (required)").addHelpText("after",d({context:`Segments are named groups of contacts. Broadcasts target segments via segment_id.
747
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --limit 25 --json","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --after 479e3145-dd38-4932-8c0c-e58b548c9e76"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i),n=O(t.limit,i),s=G(n,t.after,t.before,i);await F({loading:"Fetching segment contacts...",sdkCall:a=>a.contacts.list({segmentId:r,...s}),onInteractive:a=>{console.log(Ai(a.data)),T(a,`segments contacts ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var kd=new d("create").description("Create a new segment").option("--name <name>","Segment name (required)").addHelpText("after",m({context:`Segments are named groups of contacts. Broadcasts target segments via segment_id.
788
748
  Contacts can belong to multiple segments. Audiences are deprecated \u2014 use segments instead.
789
749
 
790
- Non-interactive: --name is required.`,output:' {"object":"segment","id":"<uuid>","name":"<name>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend segments create --name "Newsletter Subscribers"','resend segments create --name "Beta Users" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.name,{message:"Segment name",placeholder:"e.g. Newsletter Subscribers"},{message:"Missing --name flag.",code:"missing_name"},o);await j({loading:"Creating segment...",sdkCall:r=>r.segments.create({name:i}),onInteractive:r=>{console.log(`Segment created: ${r.id}`),console.log(`Name: ${r.name}`)}},o)});var fu=new c("delete").alias("rm").description("Delete a segment").argument("[id]","Segment UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`Warning: Deleting a segment removes it as a target for future broadcasts,
750
+ Non-interactive: --name is required.`,output:' {"object":"segment","id":"<uuid>","name":"<name>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend segments create --name "Newsletter Subscribers"','resend segments create --name "Beta Users" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Segment name",placeholder:"e.g. Newsletter Subscribers"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating segment...",sdkCall:r=>r.segments.create({name:i}),onInteractive:r=>{console.log(`Segment created: ${r.id}`),console.log(`Name: ${r.name}`)}},o)});var Fd=new d("delete").alias("rm").description("Delete a segment").argument("[id]","Segment UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",m({context:`Warning: Deleting a segment removes it as a target for future broadcasts,
791
751
  but does NOT delete the contacts within it.
792
752
 
793
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"segment","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,Oe,i);await z(r.id,!!t.yes,{confirmMessage:`Delete segment "${r.label}"?
753
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"segment","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Ee,i);await te(r.id,!!t.yes,{confirmMessage:`Delete segment "${r.label}"?
794
754
  ID: ${r.id}
795
- Contacts will not be deleted, but broadcasts targeting this segment will no longer work.`,loading:"Deleting segment...",object:"segment",successMsg:"Segment deleted",sdkCall:n=>n.segments.remove(r.id)},i)});var hu=new c("get").description("Retrieve a segment by ID").argument("[id]","Segment UUID").addHelpText("after",d({output:' {"object":"segment","id":"<uuid>","name":"<name>","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Oe,i);await I({loading:"Fetching segment...",sdkCall:n=>n.segments.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`)}},i)});var gu=new c("list").alias("ls").description("List all segments").option("--limit <n>","Maximum number of segments to return (1-100)","10").option("--after <cursor>","Return segments after this cursor (next page)").option("--before <cursor>","Return segments before this cursor (previous page)").addHelpText("after",d({context:`Pagination: use --after or --before with a segment ID as the cursor.
755
+ Contacts will not be deleted, but broadcasts targeting this segment will no longer work.`,loading:"Deleting segment...",object:"segment",successMsg:"Segment deleted",sdkCall:n=>n.segments.remove(r.id)},i)});var Rd=new d("get").description("Retrieve a segment by ID").argument("[id]","Segment UUID").addHelpText("after",m({output:' {"object":"segment","id":"<uuid>","name":"<name>","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i);await $({loading:"Fetching segment...",sdkCall:n=>n.segments.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`)}},i)});var _d=new d("list").alias("ls").description("List all segments").option("--limit <n>","Maximum number of segments to return (1-100)","10").option("--after <cursor>","Return segments after this cursor (next page)").option("--before <cursor>","Return segments before this cursor (previous page)").addHelpText("after",m({context:`Pagination: use --after or --before with a segment ID as the cursor.
796
756
  Only one of --after or --before may be used at a time.
797
757
  The response includes has_more: true when additional pages exist.
798
758
 
799
759
  Use "resend segments list" to discover segment IDs for use with broadcasts
800
- or "resend contacts add-segment".`,output:' {"object":"list","data":[{"id":"<uuid>","name":"<name>","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments list","resend segments list --limit 25 --json","resend segments list --after 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching segments...",sdkCall:n=>n.segments.list(r),onInteractive:n=>{console.log(gi(n.data)),E(n,"segments list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Au=new c("update").description("Rename a segment").argument("[id]","Segment UUID").option("--name <name>","New segment name").addHelpText("after",d({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).",output:' {"object":"segment","id":"<uuid>"}',errorCodes:["auth_error","missing_name","update_error"],examples:['resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"','resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Oe,i),n=await T(t.name,{message:"New segment name",placeholder:"e.g. Active Subscribers",validate:s=>{if(!s)return"Name is required"}},{message:"Missing --name flag.",code:"missing_name"},i);n||h({message:"Name is required.",code:"missing_name"},{json:i.json}),await R({loading:"Updating segment...",sdkCall:s=>s.segments.update(r,{name:n}),errorCode:"update_error",successMsg:`Segment updated: ${r}`},i)});var bu=new c("segments").description("Manage segments").addHelpText("after",d({context:`Segments are the modern replacement for Audiences (deprecated).
760
+ or "resend contacts add-segment".`,output:' {"object":"list","data":[{"id":"<uuid>","name":"<name>","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments list","resend segments list --limit 25 --json","resend segments list --after 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching segments...",sdkCall:n=>n.segments.list(r),onInteractive:n=>{console.log(fi(n.data)),T(n,"segments list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Dd=new d("update").description("Rename a segment").argument("[id]","Segment UUID").option("--name <name>","New segment name").addHelpText("after",m({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).",output:' {"object":"segment","id":"<uuid>"}',errorCodes:["auth_error","missing_name","update_error"],examples:['resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"','resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i),n=await P(t.name,{message:"New segment name",placeholder:"e.g. Active Subscribers",validate:s=>{if(!s)return"Name is required"}},{message:"Missing --name flag.",code:"missing_name"},i);n||g({message:"Name is required.",code:"missing_name"},{json:i.json}),await B({loading:"Updating segment...",sdkCall:s=>s.segments.update(r,{name:n}),errorCode:"update_error",successMsg:`Segment updated: ${r}`},i)});var Ed=new d("segments").description("Manage segments").addHelpText("after",m({context:`Segments are the modern replacement for Audiences (deprecated).
801
761
  A segment is a named group of contacts. Broadcasts target segments via segment_id.
802
762
  Contacts can belong to multiple segments.
803
763
 
804
764
  Segment membership is managed through the contacts namespace:
805
765
  resend contacts add-segment <contactId> --segment-id <segmentId>
806
766
  resend contacts remove-segment <contactId> <segmentId>
807
- resend contacts segments <contactId>`,examples:["resend segments list",'resend segments create --name "Newsletter Subscribers"',"resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"',"resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(mu).addCommand(pu).addCommand(hu).addCommand(gu,{isDefault:!0}).addCommand(Au).addCommand(fu);var Vr=me(Je(),1);var yu=new c("add").description("Suppress an email address so it stops receiving your emails").argument("[email]","Email address to suppress").addHelpText("after",d({context:`Non-interactive: <email> is required (no prompts when stdin/stdout is not a TTY).
767
+ resend contacts segments <contactId>`,examples:["resend segments list",'resend segments create --name "Newsletter Subscribers"',"resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"',"resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(xd).addCommand(kd).addCommand(Rd).addCommand(_d,{isDefault:!0}).addCommand(Dd).addCommand(Fd);var Mr=ue(Ye(),1);var Bd=new d("add").description("Suppress an email address so it stops receiving your emails").argument("[email]","Email address to suppress").addHelpText("after",m({context:`Non-interactive: <email> is required (no prompts when stdin/stdout is not a TTY).
808
768
 
809
769
  A suppressed address is skipped on future sends. Added this way, the entry has
810
- origin "manual". Use "suppressions delete" to remove it again.`,output:' {"object":"suppression","id":"<id>"}',errorCodes:["auth_error","missing_email","create_error"],examples:["resend suppressions add spam@example.com","resend suppressions add spam@example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await T(e,{message:"Email to suppress",placeholder:"e.g. spam@example.com"},{message:"Missing <email> argument.",code:"missing_email"},i);await j({loading:"Suppressing address...",sdkCall:n=>n.suppressions.add({email:r}),onInteractive:n=>{console.log(` ${Vr.default.gray("Email:")} ${r}`),console.log(` ${Vr.default.gray("ID:")} ${n.id}`)}},i)});X();function ki(e,t){let o;try{o=JSON.parse(e)}catch{h({message:"File content is not valid JSON.",code:"invalid_json"},{json:t.json})}Array.isArray(o)||h({message:"File content must be a JSON array of strings.",code:"invalid_format"},{json:t.json});let i=o;for(let r=0;r<i.length;r++)(typeof i[r]!="string"||i[r]==="")&&h({message:`Item at index ${r} must be a non-empty string.`,code:"invalid_format"},{json:t.json});return i}var Cu=new c("add").description("Suppress up to 100 email addresses from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').addHelpText("after",d({context:`Non-interactive: --file
770
+ origin "manual". Use "suppressions delete" to remove it again.`,output:' {"object":"suppression","id":"<id>"}',errorCodes:["auth_error","missing_email","create_error"],examples:["resend suppressions add spam@example.com","resend suppressions add spam@example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await P(e,{message:"Email to suppress",placeholder:"e.g. spam@example.com"},{message:"Missing <email> argument.",code:"missing_email"},i);await M({loading:"Suppressing address...",sdkCall:n=>n.suppressions.add({email:r}),onInteractive:n=>{console.log(` ${Mr.default.gray("Email:")} ${r}`),console.log(` ${Mr.default.gray("ID:")} ${n.id}`)}},i)});V();function vi(e,t){let o;try{o=JSON.parse(e)}catch{g({message:"File content is not valid JSON.",code:"invalid_json"},{json:t.json})}Array.isArray(o)||g({message:"File content must be a JSON array of strings.",code:"invalid_format"},{json:t.json});let i=o;for(let r=0;r<i.length;r++)(typeof i[r]!="string"||i[r]==="")&&g({message:`Item at index ${r} must be a non-empty string.`,code:"invalid_format"},{json:t.json});return i}var Od=new d("add").description("Suppress up to 100 email addresses from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').addHelpText("after",m({context:`Non-interactive: --file
811
771
  Limit: 100 emails per request (API hard limit \u2014 warned if exceeded)
812
772
 
813
773
  File format (--file path):
814
- ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>"}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","create_error"],examples:["resend suppressions batch add --file ./emails.json",`echo '["a@example.com","b@example.com"]' | resend suppressions batch add --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await ee(o),r=await T(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email strings.",code:"missing_file"},o),n=ie(r,o),s=ki(n,o);s.length>100&&console.warn(`Warning: ${s.length} emails exceeds the 100-email limit. The API may reject this request.`);let a=await ce("Suppressing addresses...",()=>i.suppressions.batch.add({emails:s}),"create_error",o);if(!o.json&&w()){console.log(`Suppressed ${a.data.length} address${a.data.length===1?"":"es"}`);for(let l of a.data)console.log(` ${l.id}`)}else N(a,{json:o.json})});X();var xu=new c("remove").alias("rm").description("Remove up to 100 suppressions from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').option("--ids","Treat the file entries as suppression IDs instead of email addresses").addHelpText("after",d({context:`Non-interactive: --file
774
+ ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>"}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","create_error"],examples:["resend suppressions batch add --file ./emails.json",`echo '["a@example.com","b@example.com"]' | resend suppressions batch add --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email strings.",code:"missing_file"},o),n=oe(r,o),s=vi(n,o);s.length>100&&console.warn(`Warning: ${s.length} emails exceeds the 100-email limit. The API may reject this request.`);let a=await ae("Suppressing addresses...",()=>i.suppressions.batch.add({emails:s}),"create_error",o);if(!o.json&&U()){console.log(`Suppressed ${a.data.length} address${a.data.length===1?"":"es"}`);for(let l of a.data)console.log(` ${l.id}`)}else Q(a,{json:o.json})});V();var Td=new d("remove").alias("rm").description("Remove up to 100 suppressions from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').option("--ids","Treat the file entries as suppression IDs instead of email addresses").addHelpText("after",m({context:`Non-interactive: --file
815
775
  Limit: 100 entries per request (API hard limit \u2014 warned if exceeded)
816
776
  By default entries are treated as email addresses; pass --ids to remove by suppression ID.
817
777
 
818
778
  File format (--file path):
819
- ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>","deleted":true}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","delete_error"],examples:["resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids",`echo '["a@example.com","b@example.com"]' | resend suppressions batch rm --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await ee(o),r=await T(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of strings.",code:"missing_file"},o),n=ie(r,o),s=ki(n,o);s.length>100&&console.warn(`Warning: ${s.length} entries exceeds the 100-entry limit. The API may reject this request.`);let a=await ce("Removing suppressions...",()=>i.suppressions.batch.remove(e.ids?{ids:s}:{emails:s}),"delete_error",o);if(!o.json&&w()){console.log(`Removed ${a.data.length} suppression${a.data.length===1?"":"s"}`);for(let l of a.data)console.log(` ${l.id}`)}else N(a,{json:o.json})});var wu=new c("batch").description("Suppress or remove many addresses in a single request").addHelpText("after",d({context:`Batch operations read a JSON array of strings from --file (up to 100 per request).
820
- "add" always operates on emails. "remove" defaults to emails; pass --ids to remove by ID.`,examples:["resend suppressions batch add --file ./emails.json","resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids"]})).addCommand(Cu).addCommand(xu);var _i={resource:"suppression",resourcePlural:"suppressions",fetchItems:(e,{limit:t,after:o})=>e.suppressions.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function vu(e){let t=e.map(o=>[o.email,o.id,o.origin,o.created_at]);return _(["Email","ID","Origin","Created"],t,"(no suppressions)")}var Uu=new c("delete").alias("rm").description("Remove a suppression so the address can receive your emails again").argument("[id-or-email]","Suppression ID or the suppressed email address").option("--yes","Skip confirmation prompt").addHelpText("after",d({context:`Non-interactive: --yes is required to confirm removal when stdin/stdout is not a TTY.
779
+ ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>","deleted":true}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","delete_error"],examples:["resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids",`echo '["a@example.com","b@example.com"]' | resend suppressions batch rm --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of strings.",code:"missing_file"},o),n=oe(r,o),s=vi(n,o);s.length>100&&console.warn(`Warning: ${s.length} entries exceeds the 100-entry limit. The API may reject this request.`);let a=await ae("Removing suppressions...",()=>i.suppressions.batch.remove(e.ids?{ids:s}:{emails:s}),"delete_error",o);if(!o.json&&U()){console.log(`Removed ${a.data.length} suppression${a.data.length===1?"":"s"}`);for(let l of a.data)console.log(` ${l.id}`)}else Q(a,{json:o.json})});var Id=new d("batch").description("Suppress or remove many addresses in a single request").addHelpText("after",m({context:`Batch operations read a JSON array of strings from --file (up to 100 per request).
780
+ "add" always operates on emails. "remove" defaults to emails; pass --ids to remove by ID.`,examples:["resend suppressions batch add --file ./emails.json","resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids"]})).addCommand(Od).addCommand(Td);var Ki={resource:"suppression",resourcePlural:"suppressions",fetchItems:(e,{limit:t,after:o})=>e.suppressions.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function jd(e){let t=e.map(o=>[o.email,o.id,o.origin,o.created_at]);return _(["Email","ID","Origin","Created"],t,"(no suppressions)")}var Pd=new d("delete").alias("rm").description("Remove a suppression so the address can receive your emails again").argument("[id-or-email]","Suppression ID or the suppressed email address").option("--yes","Skip confirmation prompt").addHelpText("after",m({context:`Non-interactive: --yes is required to confirm removal when stdin/stdout is not a TTY.
821
781
 
822
- Removing a suppression means future sends to this address are no longer skipped.`,output:' {"object":"suppression","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend suppressions delete spam@example.com --yes","resend suppressions rm 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,_i,i);await z(r.id,!!t.yes,{confirmMessage:`Remove suppression "${r.label}"?
782
+ Removing a suppression means future sends to this address are no longer skipped.`,output:' {"object":"suppression","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend suppressions delete spam@example.com --yes","resend suppressions rm 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Ki,i);await te(r.id,!!t.yes,{confirmMessage:`Remove suppression "${r.label}"?
823
783
  ID: ${r.id}
824
- Resend will be able to send to this address again.`,loading:"Removing suppression...",object:"suppression",successMsg:"Suppression removed",sdkCall:n=>n.suppressions.remove(r.id)},i)});var Su=new c("get").description("Retrieve a suppression by ID or email address").argument("[id-or-email]","Suppression ID or the suppressed email address").addHelpText("after",d({output:' {"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend suppressions get spam@example.com","resend suppressions get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,_i,i);await I({loading:"Fetching suppression...",sdkCall:n=>n.suppressions.get(r),onInteractive:n=>{console.log(`${n.email}`),console.log(`ID: ${n.id}`),console.log(`Origin: ${n.origin}`),n.source_id&&console.log(`Source: ${n.source_id}`),console.log(`Created: ${n.created_at}`)}},i)});var Ku=new c("list").alias("ls").description("List suppressed email addresses").option("--limit <n>","Maximum number of suppressions to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addOption(new M("--origin <origin>","Filter by how the address was suppressed").choices(["bounce","complaint","manual"])).addHelpText("after",d({output:' {"object":"list","has_more":false,"data":[{"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend suppressions list","resend suppressions list --origin bounce --json","resend suppressions list --limit 25 --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching suppressions...",sdkCall:n=>n.suppressions.list({...r,...e.origin&&{origin:e.origin}}),onInteractive:n=>{console.log(vu(n.data)),E(n,"suppressions list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,...e.origin&&{extraFlags:`--origin ${e.origin}`}})}},o)});var ku=new c("suppressions").description("Manage the suppression list \u2014 addresses that won't receive your emails").addHelpText("after",d({context:`Suppressions block future sends to an address. Entries have an origin:
784
+ Resend will be able to send to this address again.`,loading:"Removing suppression...",object:"suppression",successMsg:"Suppression removed",sdkCall:n=>n.suppressions.remove(r.id)},i)});var $d=new d("get").description("Retrieve a suppression by ID or email address").argument("[id-or-email]","Suppression ID or the suppressed email address").addHelpText("after",m({output:' {"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend suppressions get spam@example.com","resend suppressions get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ki,i);await $({loading:"Fetching suppression...",sdkCall:n=>n.suppressions.get(r),onInteractive:n=>{console.log(`${n.email}`),console.log(`ID: ${n.id}`),console.log(`Origin: ${n.origin}`),n.source_id&&console.log(`Source: ${n.source_id}`),console.log(`Created: ${n.created_at}`)}},i)});var Gd=new d("list").alias("ls").description("List suppressed email addresses").option("--limit <n>","Maximum number of suppressions to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addOption(new L("--origin <origin>","Filter by how the address was suppressed").choices(["bounce","complaint","manual"])).addHelpText("after",m({output:' {"object":"list","has_more":false,"data":[{"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend suppressions list","resend suppressions list --origin bounce --json","resend suppressions list --limit 25 --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching suppressions...",sdkCall:n=>n.suppressions.list({...r,...e.origin&&{origin:e.origin}}),onInteractive:n=>{console.log(jd(n.data)),T(n,"suppressions list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,...e.origin&&{extraFlags:`--origin ${e.origin}`}})}},o)});var Hd=new d("suppressions").description("Manage the suppression list \u2014 addresses that won't receive your emails").addHelpText("after",m({context:`Suppressions block future sends to an address. Entries have an origin:
825
785
  bounce added automatically after a hard bounce
826
786
  complaint added automatically after a spam complaint
827
787
  manual added by you via "suppressions add"
828
788
 
829
- get/delete accept either a suppression ID or the email address.`,examples:["resend suppressions list","resend suppressions add spam@example.com","resend suppressions get spam@example.com","resend suppressions delete spam@example.com --yes","resend suppressions batch add --file ./emails.json"]})).addCommand(Ku,{isDefault:!0}).addCommand(yu).addCommand(Su).addCommand(Uu).addCommand(wu);X();function Fi(e){return e.map(t=>{let[o,i,...r]=t.split(":");if(!o)throw new Error(`Invalid --var "${t}": key is required.`);if(i!=="string"&&i!=="number")throw new Error(`Invalid --var "${t}": type must be "string" or "number".`);let n=r.length?r.join(":"):void 0;if(n!=null&&n==="")throw new Error(`Invalid --var "${t}": fallback value cannot be empty.`);let s=n;if(i==="number"){if(s!=null&&Number.isNaN(Number(s)))throw new Error(`Invalid --var "${t}": fallback "${s}" is not a valid number.`);return{key:o,type:"number",...s!=null?{fallbackValue:Number(s)}:{}}}return{key:o,type:"string",...s!=null?{fallbackValue:s}:{}}})}var tt={resource:"template",resourcePlural:"templates",fetchItems:(e,{limit:t,after:o})=>e.templates.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function _u(e){let t=e.map(o=>[o.name,o.status,o.alias??"",o.id,o.created_at]);return _(["Name","Status","Alias","ID","Created"],t,"(no templates)")}var Fu=new c("create").description("Create a new template").option("--name <name>","Template name \u2014 required").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--subject <subject>","Email subject").option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Sender address").option("--reply-to <address>","Reply-to address").option("--alias <alias>","Template alias for lookup by name").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",d({context:`Creates a new draft template. Use "resend templates publish" to make it available for sending.
789
+ get/delete accept either a suppression ID or the email address.`,examples:["resend suppressions list","resend suppressions add spam@example.com","resend suppressions get spam@example.com","resend suppressions delete spam@example.com --yes","resend suppressions batch add --file ./emails.json"]})).addCommand(Gd,{isDefault:!0}).addCommand(Bd).addCommand($d).addCommand(Pd).addCommand(Id);V();function xi(e){return e.map(t=>{let[o,i,...r]=t.split(":");if(!o)throw new Error(`Invalid --var "${t}": key is required.`);if(i!=="string"&&i!=="number")throw new Error(`Invalid --var "${t}": type must be "string" or "number".`);let n=r.length?r.join(":"):void 0;if(n!=null&&n==="")throw new Error(`Invalid --var "${t}": fallback value cannot be empty.`);let s=n;if(i==="number"){if(s!=null&&Number.isNaN(Number(s)))throw new Error(`Invalid --var "${t}": fallback "${s}" is not a valid number.`);return{key:o,type:"number",...s!=null?{fallbackValue:Number(s)}:{}}}return{key:o,type:"string",...s!=null?{fallbackValue:s}:{}}})}var et={resource:"template",resourcePlural:"templates",fetchItems:(e,{limit:t,after:o})=>e.templates.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function Qd(e){let t=e.map(o=>[o.name,o.status,o.alias??"",o.id,o.created_at]);return _(["Name","Status","Alias","ID","Created"],t,"(no templates)")}var Nd=new d("create").description("Create a new template").option("--name <name>","Template name \u2014 required").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--subject <subject>","Email subject").option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Sender address").option("--reply-to <address>","Reply-to address").option("--alias <alias>","Template alias for lookup by name").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",m({context:`Creates a new draft template. Use "resend templates publish" to make it available for sending.
830
790
 
831
791
  --name is required. Body: provide --html, --html-file, or --react-email. Optionally add --text or --text-file for plain-text.
832
792
 
@@ -836,24 +796,24 @@ get/delete accept either a suppression ID or the email address.`,examples:["rese
836
796
  --html "<p>Hi {{{NAME}}}, your total is {{{PRICE}}}</p>"
837
797
  --var NAME:string --var PRICE:number:0
838
798
 
839
- Non-interactive: --name and a body (--html, --html-file, or --react-email) are required. --text-file provides a plain-text fallback.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","missing_name","missing_body","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","create_error"],examples:['resend templates create --name "Welcome" --html "<h1>Hello</h1>" --subject "Welcome!"','resend templates create --name "Newsletter" --html-file ./template.html --from acme@example.com','resend templates create --name "Onboarding" --html "<p>Hi</p>" --alias onboarding --json','resend templates create --name "Order" --html "<p>{{{PRODUCT}}}: {{{PRICE}}}</p>" --var PRODUCT:string:item --var PRICE:number:25']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=e.name;if(!i){(!w()||o.json)&&h({message:"Missing --name flag.",code:"missing_name"},{json:o.json});let s=await Z({message:"Template name",placeholder:"e.g. Welcome Email",validate:a=>a?void 0:"Required"});F(s)&&D("Cancelled."),i=s}e.htmlFile==="-"&&e.textFile==="-"&&h({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile)&&h({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:o.json});let r=e.html,n=e.text;if(e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
840
- `),r=ie(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
841
- `),n=ie(e.textFile,o)),e.reactEmail&&(r=await Me(e.reactEmail,o)),!r){(!w()||o.json)&&h({message:"Missing body. Provide --html, --html-file, or --react-email.",code:"missing_body"},{json:o.json});let s=await Z({message:"HTML body",placeholder:"<h1>Hello {{name}}</h1>",validate:a=>a?void 0:"Required"});F(s)&&D("Cancelled."),r=s}await j({loading:"Creating template...",sdkCall:s=>Promise.resolve(s.templates.create({name:i,html:r,...e.subject&&{subject:e.subject},...n&&{text:n},...e.from&&{from:e.from},...e.replyTo&&{replyTo:e.replyTo},...e.alias&&{alias:e.alias},...e.var&&{variables:Fi(e.var)}})),onInteractive:s=>{console.log(`Template created: ${s.id}`)}},o)});var Ru=new c("delete").alias("rm").description("Delete a template").argument("[id]","Template ID or alias").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`Warning: Deleting a template is permanent and cannot be undone.
799
+ Non-interactive: --name and a body (--html, --html-file, or --react-email) are required. --text-file provides a plain-text fallback.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","missing_name","missing_body","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","create_error"],examples:['resend templates create --name "Welcome" --html "<h1>Hello</h1>" --subject "Welcome!"','resend templates create --name "Newsletter" --html-file ./template.html --from acme@example.com','resend templates create --name "Onboarding" --html "<p>Hi</p>" --alias onboarding --json','resend templates create --name "Order" --html "<p>{{{PRODUCT}}}: {{{PRICE}}}</p>" --var PRODUCT:string:item --var PRICE:number:25']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=e.name;if(!i){(!U()||o.json)&&g({message:"Missing --name flag.",code:"missing_name"},{json:o.json});let s=await z({message:"Template name",placeholder:"e.g. Welcome Email",validate:a=>a?void 0:"Required"});k(s)&&R("Cancelled."),i=s}e.htmlFile==="-"&&e.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:o.json});let r=e.html,n=e.text;if(e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
800
+ `),r=oe(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
801
+ `),n=oe(e.textFile,o)),e.reactEmail&&(r=await Me(e.reactEmail,o)),!r){(!U()||o.json)&&g({message:"Missing body. Provide --html, --html-file, or --react-email.",code:"missing_body"},{json:o.json});let s=await z({message:"HTML body",placeholder:"<h1>Hello {{name}}</h1>",validate:a=>a?void 0:"Required"});k(s)&&R("Cancelled."),r=s}await M({loading:"Creating template...",sdkCall:s=>Promise.resolve(s.templates.create({name:i,html:r,...e.subject&&{subject:e.subject},...n&&{text:n},...e.from&&{from:e.from},...e.replyTo&&{replyTo:e.replyTo},...e.alias&&{alias:e.alias},...e.var&&{variables:xi(e.var)}})),onInteractive:s=>{console.log(`Template created: ${s.id}`)}},o)});var Md=new d("delete").alias("rm").description("Delete a template").argument("[id]","Template ID or alias").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",m({context:`Warning: Deleting a template is permanent and cannot be undone.
842
802
 
843
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"template","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend templates rm my-template-alias --yes","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,tt,i);await z(r.id,!!t.yes,{confirmMessage:`Delete template "${r.label}"?
803
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"template","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend templates rm my-template-alias --yes","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,et,i);await te(r.id,!!t.yes,{confirmMessage:`Delete template "${r.label}"?
844
804
  ID: ${r.id}
845
- This action is permanent and cannot be undone.`,loading:"Deleting template...",object:"template",successMsg:"Template deleted",sdkCall:n=>n.templates.remove(r.id)},i)});var Du=new c("duplicate").description("Duplicate a template").argument("[id]","Template ID or alias to duplicate").addHelpText("after",d({context:`Creates a copy of an existing template and returns the new template ID.
805
+ This action is permanent and cannot be undone.`,loading:"Deleting template...",object:"template",successMsg:"Template deleted",sdkCall:n=>n.templates.remove(r.id)},i)});var qd=new d("duplicate").description("Duplicate a template").argument("[id]","Template ID or alias to duplicate").addHelpText("after",m({context:`Creates a copy of an existing template and returns the new template ID.
846
806
  The duplicate is created as a draft with " (Copy)" appended to the original name.
847
- All fields (HTML, subject, variables, etc.) are copied to the new template.`,output:' {"object":"template","id":"<new-template-id>"}',errorCodes:["auth_error","create_error"],examples:["resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate my-template-alias --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,tt,i);await j({loading:"Duplicating template...",sdkCall:n=>Promise.resolve(n.templates.duplicate(r)),onInteractive:n=>{console.log(`Template duplicated: ${n.id}`)}},i)});var Tu=new c("get").description("Retrieve a template by ID or alias").argument("[id]","Template ID or alias").addHelpText("after",d({context:"Returns the full template including HTML body, variables, and publication status.",output:' {"object":"template","id":"...","name":"...","subject":"...","status":"draft|published","html":"...","alias":"...","from":"...","reply_to":["..."],"variables":[...],"created_at":"...","updated_at":"..."}',errorCodes:["auth_error","fetch_error"],examples:["resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates get my-template-alias","resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,tt,i);await I({loading:"Fetching template...",sdkCall:n=>n.templates.get(r),onInteractive:n=>{if(console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),n.alias&&console.log(`Alias: ${n.alias}`),n.subject&&console.log(`Subject: ${n.subject}`),n.from&&console.log(`From: ${n.from}`),n.reply_to?.length&&console.log(`Reply-To: ${n.reply_to.join(", ")}`),n.html){let s=n.html.length>200?`${n.html.slice(0,197)}...`:n.html;console.log(`HTML: ${s}`)}n.variables?.length&&console.log(`Variables: ${n.variables.map(s=>s.key).join(", ")}`),n.published_at&&console.log(`Published: ${n.published_at}`),console.log(`Created: ${n.created_at}`),console.log(`Updated: ${n.updated_at}`)}},i)});var Ou=new c("list").alias("ls").description("List all templates").option("--limit <n>","Maximum number of templates to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",d({output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|published","alias":"...","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend templates list","resend templates list --limit 5","resend templates list --after <template-id> --limit 10","resend templates list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching templates...",sdkCall:n=>n.templates.list(r),onInteractive:n=>{console.log(_u(n.data)),E(n,"templates list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Eu=new c("open").description("Open a template or the templates list in the Resend dashboard").argument("[id]","Template ID \u2014 omit to open the templates list").addHelpText("after",d({context:`Opens the Resend dashboard in your default browser.
807
+ All fields (HTML, subject, variables, etc.) are copied to the new template.`,output:' {"object":"template","id":"<new-template-id>"}',errorCodes:["auth_error","create_error"],examples:["resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate my-template-alias --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,et,i);await M({loading:"Duplicating template...",sdkCall:n=>Promise.resolve(n.templates.duplicate(r)),onInteractive:n=>{console.log(`Template duplicated: ${n.id}`)}},i)});var Ld=new d("get").description("Retrieve a template by ID or alias").argument("[id]","Template ID or alias").addHelpText("after",m({context:"Returns the full template including HTML body, variables, and publication status.",output:' {"object":"template","id":"...","name":"...","subject":"...","status":"draft|published","html":"...","alias":"...","from":"...","reply_to":["..."],"variables":[...],"created_at":"...","updated_at":"..."}',errorCodes:["auth_error","fetch_error"],examples:["resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates get my-template-alias","resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,et,i);await $({loading:"Fetching template...",sdkCall:n=>n.templates.get(r),onInteractive:n=>{if(console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),n.alias&&console.log(`Alias: ${n.alias}`),n.subject&&console.log(`Subject: ${n.subject}`),n.from&&console.log(`From: ${n.from}`),n.reply_to?.length&&console.log(`Reply-To: ${n.reply_to.join(", ")}`),n.html){let s=n.html.length>200?`${n.html.slice(0,197)}...`:n.html;console.log(`HTML: ${s}`)}n.variables?.length&&console.log(`Variables: ${n.variables.map(s=>s.key).join(", ")}`),n.published_at&&console.log(`Published: ${n.published_at}`),console.log(`Created: ${n.created_at}`),console.log(`Updated: ${n.updated_at}`)}},i)});var Wd=new d("list").alias("ls").description("List all templates").option("--limit <n>","Maximum number of templates to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",m({output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|published","alias":"...","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend templates list","resend templates list --limit 5","resend templates list --after <template-id> --limit 10","resend templates list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching templates...",sdkCall:n=>n.templates.list(r),onInteractive:n=>{console.log(Qd(n.data)),T(n,"templates list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Jd=new d("open").description("Open a template or the templates list in the Resend dashboard").argument("[id]","Template ID \u2014 omit to open the templates list").addHelpText("after",m({context:`Opens the Resend dashboard in your default browser.
848
808
  With an ID: opens that template's page for editing or viewing.
849
- Without an ID: opens the templates list.`,examples:["resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t,o)=>{let i=e?fe.template(e):fe.templates,r=o.optsWithGlobals();await Te(i,r)});var Bu=new c("publish").description("Publish a draft template").argument("[id]","Template ID or alias").addHelpText("after",d({context:`Promotes a draft template to published status, making it available for use in emails.
809
+ Without an ID: opens the templates list.`,examples:["resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t,o)=>{let i=e?pe.template(e):pe.templates,r=o.optsWithGlobals();await De(i,r)});var Vd=new d("publish").description("Publish a draft template").argument("[id]","Template ID or alias").addHelpText("after",m({context:`Promotes a draft template to published status, making it available for use in emails.
850
810
  After updating a published template, re-publish to make the changes live.
851
- Publishing an already-published template re-publishes it with the latest draft changes.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","publish_error"],examples:["resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,tt,i);await R({loading:"Publishing template...",sdkCall:n=>n.templates.publish(r),errorCode:"publish_error",successMsg:`Template published: ${r}`,retryTransient:!0},i)});var Iu=new c("update").description("Update an existing template").argument("[id]","Template ID or alias").option("--name <name>","Update template name").option("--html <html>","Update HTML body").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin)').option("--subject <subject>","Update subject").option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Update sender address").option("--reply-to <address>","Update reply-to address").option("--alias <alias>","Update template alias").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",d({context:`At least one option is required. Only the provided fields are changed; others are left as-is.
811
+ Publishing an already-published template re-publishes it with the latest draft changes.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","publish_error"],examples:["resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,et,i);await B({loading:"Publishing template...",sdkCall:n=>n.templates.publish(r),errorCode:"publish_error",successMsg:`Template published: ${r}`,retryTransient:!0},i)});var zd=new d("update").description("Update an existing template").argument("[id]","Template ID or alias").option("--name <name>","Update template name").option("--html <html>","Update HTML body").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin)').option("--subject <subject>","Update subject").option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Update sender address").option("--reply-to <address>","Update reply-to address").option("--alias <alias>","Update template alias").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",m({context:`At least one option is required. Only the provided fields are changed; others are left as-is.
852
812
 
853
813
  --var declares a template variable using the format KEY:type or KEY:type:fallback.
854
814
  Valid types: string, number.
855
- Variables must match {{{KEY}}} placeholders in the HTML body.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","no_changes","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","update_error"],examples:['resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Updated Name"',"resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --html-file ./new-template.html",'resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --subject "New Subject" --from "acme@example.com" --json',"resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --var PRODUCT:string:item --var PRICE:number:25"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals();t.name==null&&t.html==null&&t.htmlFile==null&&t.reactEmail==null&&t.subject==null&&t.text==null&&t.textFile==null&&t.from==null&&t.replyTo==null&&t.alias==null&&t.var==null&&h({message:"Provide at least one option to update: --name, --html, --html-file, --react-email, --subject, --text, --text-file, --from, --reply-to, --alias, or --var.",code:"no_changes"},{json:i.json}),t.reactEmail!=null&&(t.html!=null||t.htmlFile!=null)&&h({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:i.json}),t.html!=null&&t.htmlFile!=null&&h({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:i.json}),t.htmlFile==="-"&&t.textFile==="-"&&h({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:i.json});let r=await g(e,tt,i),n=t.html,s=t.text;t.htmlFile!=null&&(n=ie(t.htmlFile,i)),t.textFile!=null&&(t.text!=null&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
856
- `),s=ie(t.textFile,i)),t.reactEmail!=null&&(n=await Me(t.reactEmail,i)),await R({loading:"Updating template...",sdkCall:a=>a.templates.update(r,{...t.name!=null&&{name:t.name},...n!=null&&{html:n},...t.subject!=null&&{subject:t.subject},...s!=null&&{text:s},...t.from!=null&&{from:t.from},...t.replyTo!=null&&{replyTo:t.replyTo},...t.alias!=null&&{alias:t.alias},...t.var!=null&&{variables:Fi(t.var)}}),errorCode:"update_error",successMsg:`Template updated: ${r}`,retryTransient:!0},i)});var ju=new c("templates").description("Manage templates").addHelpText("after",d({context:`Lifecycle:
815
+ Variables must match {{{KEY}}} placeholders in the HTML body.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","no_changes","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","update_error"],examples:['resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Updated Name"',"resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --html-file ./new-template.html",'resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --subject "New Subject" --from "acme@example.com" --json',"resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --var PRODUCT:string:item --var PRICE:number:25"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals();t.name==null&&t.html==null&&t.htmlFile==null&&t.reactEmail==null&&t.subject==null&&t.text==null&&t.textFile==null&&t.from==null&&t.replyTo==null&&t.alias==null&&t.var==null&&g({message:"Provide at least one option to update: --name, --html, --html-file, --react-email, --subject, --text, --text-file, --from, --reply-to, --alias, or --var.",code:"no_changes"},{json:i.json}),t.reactEmail!=null&&(t.html!=null||t.htmlFile!=null)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:i.json}),t.html!=null&&t.htmlFile!=null&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:i.json}),t.htmlFile==="-"&&t.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:i.json});let r=await C(e,et,i),n=t.html,s=t.text;t.htmlFile!=null&&(n=oe(t.htmlFile,i)),t.textFile!=null&&(t.text!=null&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
816
+ `),s=oe(t.textFile,i)),t.reactEmail!=null&&(n=await Me(t.reactEmail,i)),await B({loading:"Updating template...",sdkCall:a=>a.templates.update(r,{...t.name!=null&&{name:t.name},...n!=null&&{html:n},...t.subject!=null&&{subject:t.subject},...s!=null&&{text:s},...t.from!=null&&{from:t.from},...t.replyTo!=null&&{replyTo:t.replyTo},...t.alias!=null&&{alias:t.alias},...t.var!=null&&{variables:xi(t.var)}}),errorCode:"update_error",successMsg:`Template updated: ${r}`,retryTransient:!0},i)});var Yd=new d("templates").description("Manage templates").addHelpText("after",m({context:`Lifecycle:
857
817
  Templates follow a draft \u2192 published workflow:
858
818
  1. create \u2014 creates a draft template
859
819
  2. update \u2014 edits name, subject, HTML, variables, etc.
@@ -867,7 +827,7 @@ Template variables:
867
827
  Each variable must be declared with --var when creating or updating:
868
828
  --var KEY:type e.g. --var NAME:string
869
829
  --var KEY:type:fallback e.g. --var PRICE:number:25
870
- Valid types: string, number.`,examples:["resend templates list",'resend templates create --name "Welcome" --html "<h1>Hello {{{NAME}}}</h1>" --subject "Welcome!" --var NAME:string',"resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --subject "Updated Subject"',"resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).addCommand(Fu).addCommand(Tu).addCommand(Eu).addCommand(Ou,{isDefault:!0}).addCommand(Iu).addCommand(Ru).addCommand(Bu).addCommand(Du);var Pu=new c("create").description("Create a new topic for subscription management").option("--name <name>","Topic name (required)").option("--description <description>","Description shown to contacts when managing subscriptions").addOption(new M("--default-subscription <mode>","Default subscription state for contacts").choices(["opt_in","opt_out"]).default("opt_in")).addHelpText("after",d({context:`Topics enable fine-grained subscription management. Contacts can opt in or out of
830
+ Valid types: string, number.`,examples:["resend templates list",'resend templates create --name "Welcome" --html "<h1>Hello {{{NAME}}}</h1>" --subject "Welcome!" --var NAME:string',"resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --subject "Updated Subject"',"resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).addCommand(Nd).addCommand(Ld).addCommand(Jd).addCommand(Wd,{isDefault:!0}).addCommand(zd).addCommand(Md).addCommand(Vd).addCommand(qd);var Xd=new d("create").description("Create a new topic for subscription management").option("--name <name>","Topic name (required)").option("--description <description>","Description shown to contacts when managing subscriptions").addOption(new L("--default-subscription <mode>","Default subscription state for contacts").choices(["opt_in","opt_out"]).default("opt_in")).addHelpText("after",m({context:`Topics enable fine-grained subscription management. Contacts can opt in or out of
871
831
  individual topics. Broadcasts can target only contacts opted into a specific topic.
872
832
 
873
833
  Example topics: "Product Updates", "Security Alerts", "Weekly Digest".
@@ -876,16 +836,16 @@ Example topics: "Product Updates", "Security Alerts", "Weekly Digest".
876
836
  opt_in Contacts receive broadcasts unless they explicitly opt out (default)
877
837
  opt_out Contacts do NOT receive broadcasts unless they explicitly opt in
878
838
 
879
- Non-interactive: --name is required.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out','resend topics create --name "Security Alerts" --description "Critical security notices" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.name,{message:"Topic name",placeholder:"e.g. Product Updates"},{message:"Missing --name flag.",code:"missing_name"},o);await j({loading:"Creating topic...",sdkCall:r=>r.topics.create({name:i,defaultSubscription:e.defaultSubscription,...e.description&&{description:e.description}}),onInteractive:r=>{console.log(`Topic created: ${r.id}`)}},o)});var $u=new c("delete").alias("rm").description("Delete a topic").argument("[id]","Topic UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`Warning: Deleting a topic removes all contact subscriptions to that topic and may affect
839
+ Non-interactive: --name is required.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out','resend topics create --name "Security Alerts" --description "Critical security notices" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Topic name",placeholder:"e.g. Product Updates"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating topic...",sdkCall:r=>r.topics.create({name:i,defaultSubscription:e.defaultSubscription,...e.description&&{description:e.description}}),onInteractive:r=>{console.log(`Topic created: ${r.id}`)}},o)});var Zd=new d("delete").alias("rm").description("Delete a topic").argument("[id]","Topic UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",m({context:`Warning: Deleting a topic removes all contact subscriptions to that topic and may affect
880
840
  broadcasts that reference this topic_id. Contacts themselves are not deleted.
881
841
 
882
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"topic","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,yt,i);await z(r.id,!!t.yes,{confirmMessage:`Delete topic "${r.label}"?
842
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"topic","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,bt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete topic "${r.label}"?
883
843
  ID: ${r.id}
884
- All contact subscriptions and broadcast associations will be removed.`,loading:"Deleting topic...",object:"topic",successMsg:"Topic deleted",sdkCall:n=>n.topics.remove(r.id)},i)});var Gu=new c("get").description("Retrieve a topic by ID").argument("[id]","Topic UUID").addHelpText("after",d({output:' {"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,yt,i);await I({loading:"Fetching topic...",sdkCall:n=>n.topics.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),n.description&&console.log(`Description: ${n.description}`),console.log(`Default subscription: ${n.default_subscription}`),console.log(`Created: ${n.created_at}`)}},i)});var Hu=new c("list").alias("ls").description("List all topics").addHelpText("after",d({context:`Returns all topics in your account. Topic subscription management for individual
885
- contacts is handled via "resend contacts topics <contactId>".`,output:' {"data":[{"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend topics list","resend topics list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await k({loading:"Fetching topics...",sdkCall:i=>i.topics.list(),onInteractive:i=>console.log(hl(i.data))},o)});var Qu=new c("update").description("Update a topic's name or description").argument("[id]","Topic UUID").option("--name <name>","New topic name").option("--description <description>","New description shown to contacts").addHelpText("after",d({context:`At least one of --name or --description must be provided to update the topic.
844
+ All contact subscriptions and broadcast associations will be removed.`,loading:"Deleting topic...",object:"topic",successMsg:"Topic deleted",sdkCall:n=>n.topics.remove(r.id)},i)});var eu=new d("get").description("Retrieve a topic by ID").argument("[id]","Topic UUID").addHelpText("after",m({output:' {"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,bt,i);await $({loading:"Fetching topic...",sdkCall:n=>n.topics.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),n.description&&console.log(`Description: ${n.description}`),console.log(`Default subscription: ${n.default_subscription}`),console.log(`Created: ${n.created_at}`)}},i)});var tu=new d("list").alias("ls").description("List all topics").addHelpText("after",m({context:`Returns all topics in your account. Topic subscription management for individual
845
+ contacts is handled via "resend contacts topics <contactId>".`,output:' {"data":[{"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend topics list","resend topics list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await F({loading:"Fetching topics...",sdkCall:i=>i.topics.list(),onInteractive:i=>console.log(al(i.data))},o)});var ou=new d("update").description("Update a topic's name or description").argument("[id]","Topic UUID").option("--name <name>","New topic name").option("--description <description>","New description shown to contacts").addHelpText("after",m({context:`At least one of --name or --description must be provided to update the topic.
886
846
 
887
847
  Note: --default-subscription cannot be changed after creation.
888
- To change the default subscription, delete the topic and recreate it.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:['resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"','resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --description "Critical notices" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,yt,i);!t.name&&!t.description&&h({message:"Provide at least one option to update: --name or --description.",code:"no_changes"},{json:i.json}),await R({loading:"Updating topic...",sdkCall:n=>n.topics.update({id:r,...t.name&&{name:t.name},...t.description&&{description:t.description}}),errorCode:"update_error",successMsg:`Topic updated: ${r}`},i)});var Nu=new c("topics").description("Manage topics for contact subscription preferences").addHelpText("after",d({context:`Topics enable fine-grained subscription management beyond the global unsubscribe flag.
848
+ To change the default subscription, delete the topic and recreate it.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:['resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"','resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --description "Critical notices" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,bt,i);!t.name&&!t.description&&g({message:"Provide at least one option to update: --name or --description.",code:"no_changes"},{json:i.json}),await B({loading:"Updating topic...",sdkCall:n=>n.topics.update({id:r,...t.name&&{name:t.name},...t.description&&{description:t.description}}),errorCode:"update_error",successMsg:`Topic updated: ${r}`},i)});var iu=new d("topics").description("Manage topics for contact subscription preferences").addHelpText("after",m({context:`Topics enable fine-grained subscription management beyond the global unsubscribe flag.
889
849
  A contact can opt in or out of individual topics independently.
890
850
 
891
851
  Broadcasts can target a topic_id so only contacts who have opted into that topic
@@ -898,11 +858,11 @@ Subscription states:
898
858
 
899
859
  Contact topic subscriptions are managed via the contacts namespace:
900
860
  resend contacts topics <contactId>
901
- resend contacts update-topics <contactId> --topic-id <id> --subscription opt_in`,examples:["resend topics list",'resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out',"resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"',"resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(Pu).addCommand(Gu).addCommand(Hu,{isDefault:!0}).addCommand(Qu).addCommand($u);X();Uo();Kt();var Mu=new c("update").description("Check for available CLI updates").addHelpText("after",d({context:`Checks the latest release on GitHub (bypasses the cache).
861
+ resend contacts update-topics <contactId> --topic-id <id> --subscription opt_in`,examples:["resend topics list",'resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out',"resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"',"resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(Xd).addCommand(eu).addCommand(tu,{isDefault:!0}).addCommand(ou).addCommand(Zd);V();So();Kt();var ru=new d("update").description("Check for available CLI updates").addHelpText("after",m({context:`Checks the latest release on GitHub (bypasses the cache).
902
862
  Shows the current version, latest version, and how to upgrade.`,output:` {"current":"1.4.0","latest":"1.5.0","update_available":true,"upgrade_command":"npm install -g resend-cli"}
903
- {"current":"1.5.0","latest":"1.5.0","update_available":false}`,examples:["resend update","resend update --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),r=w()&&!o.json?ae("Checking for updates..."):null,n=await Hr();if(!n){r?.fail("Could not check for updates"),h({message:"Could not reach GitHub releases",code:"fetch_failed"},{json:o.json});return}let s=wi(se,n),a=vi();if(o.json||!w()){N({current:se,latest:n,update_available:s,...s?{upgrade_command:a}:{}},{json:o.json});return}if(s){let l=a.startsWith("http");r?.warn(`Update available: v${se} \u2192 v${n}`),console.log(`
863
+ {"current":"1.5.0","latest":"1.5.0","update_available":false}`,examples:["resend update","resend update --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),r=U()&&!o.json?se("Checking for updates..."):null,n=await Pr();if(!n){r?.fail("Could not check for updates"),g({message:"Could not reach GitHub releases",code:"fetch_failed"},{json:o.json});return}let s=Ci(ne,n),a=wi();if(o.json||!U()){Q({current:ne,latest:n,update_available:s,...s?{upgrade_command:a}:{}},{json:o.json});return}if(s){let l=a.startsWith("http");r?.warn(`Update available: v${ne} \u2192 v${n}`),console.log(`
904
864
  ${l?"Visit":"Run"}: \x1B[36m${a}\x1B[0m
905
- `)}else r?.stop(`Already up to date (v${se})`)});X();var lt=["email.sent","email.delivered","email.delivery_delayed","email.bounced","email.complained","email.opened","email.clicked","email.failed","email.scheduled","email.suppressed","email.received","contact.created","contact.updated","contact.deleted","domain.created","domain.updated","domain.deleted","suppression.added","suppression.removed"];function eo(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}var Ce={resource:"webhook",resourcePlural:"webhooks",fetchItems:(e,{limit:t,after:o})=>e.webhooks.list({limit:t,...o&&{after:o}}),display:e=>({label:e.endpoint,hint:e.id})};function qu(e){let t=e.map(o=>{let i=(o.events??[]).join(", "),r=i.length>60?`${i.slice(0,57)}...`:i;return[o.endpoint,r,o.status,o.id]});return _(["Endpoint","Events","Status","ID"],t,"(no webhooks)")}var Lu=new c("create").description("Register a new webhook endpoint to receive real-time event notifications").option("--endpoint <endpoint>","HTTPS URL to receive webhook events (required)").option("--events <events...>",'Event types to subscribe to (comma or space-separated). Use "all" for all 17 events.').addHelpText("after",d({context:`Webhooks deliver real-time event notifications to your HTTPS endpoint.
865
+ `)}else r?.stop(`Already up to date (v${ne})`)});var Be=new Intl.NumberFormat("en-US");function wt(e){return e===null?"\u2014":Be.format(e)}function Fg(e){let t=["Resource","Used","Limit","Sent","Received","Resets At"],o=[["emails_daily",Be.format(e.emails.daily.used),wt(e.emails.daily.limit),Be.format(e.emails.daily.sent),Be.format(e.emails.daily.received),e.emails.daily.resets_at],["emails_monthly",Be.format(e.emails.monthly.used),wt(e.emails.monthly.limit),Be.format(e.emails.monthly.sent),Be.format(e.emails.monthly.received),e.emails.monthly.resets_at],["contacts",Be.format(e.contacts.used),wt(e.contacts.limit),"","",""],["segments",Be.format(e.segments.used),wt(e.segments.limit),"","",""],["broadcasts",Be.format(e.broadcasts.used),wt(e.broadcasts.limit),"","",""],["ai_credits",Be.format(e.ai_credits.used),wt(e.ai_credits.limit),"","",e.ai_credits.next_increase_at??""],["automation_runs",Be.format(e.automation_runs.used),wt(e.automation_runs.limit),"","",e.automation_runs.resets_at],["domains",Be.format(e.domains.used),wt(e.domains.limit),"","",""],["rate_limit","\u2014",`${Be.format(e.rate_limit.limit)} requests / ${e.rate_limit.duration}`,"","",""]];return _(t,o)}var nu=new d("usage").description("Show account-level usage and quota limits").addHelpText("after",m({output:' {"object":"usage","emails":{"daily":{"used":258,"limit":null,"sent":57,"received":201,"resets_at":"..."},"monthly":{"used":5442,"limit":10000,"sent":1000,"received":4442,"resets_at":"..."}},"contacts":{"used":85000,"limit":150000},"segments":{"used":2,"limit":3},"broadcasts":{"used":100,"limit":null},"ai_credits":{"used":0,"limit":500,"next_increase_at":"..."},"automation_runs":{"used":0,"limit":1000,"resets_at":"..."},"domains":{"used":1,"limit":1000},"rate_limit":{"limit":10,"duration":"1000ms"}}',errorCodes:["auth_error","fetch_error"],examples:["resend usage","resend usage --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await $({loading:"Fetching usage...",sdkCall:i=>i.usage.get(),onInteractive:i=>{console.log(Fg(i))}},o)});V();var at=["email.sent","email.delivered","email.delivery_delayed","email.bounced","email.complained","email.opened","email.clicked","email.failed","email.scheduled","email.suppressed","email.received","contact.created","contact.updated","contact.deleted","domain.created","domain.updated","domain.deleted","suppression.added","suppression.removed"];function Zt(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}var ye={resource:"webhook",resourcePlural:"webhooks",fetchItems:(e,{limit:t,after:o})=>e.webhooks.list({limit:t,...o&&{after:o}}),display:e=>({label:e.endpoint,hint:e.id})};function su(e){let t=e.map(o=>{let i=(o.events??[]).join(", "),r=i.length>60?`${i.slice(0,57)}...`:i;return[o.endpoint,r,o.status,o.id]});return _(["Endpoint","Events","Status","ID"],t,"(no webhooks)")}var au=new d("create").description("Register a new webhook endpoint to receive real-time event notifications").option("--endpoint <endpoint>","HTTPS URL to receive webhook events (required)").option("--events <events...>",'Event types to subscribe to (comma or space-separated). Use "all" for all 17 events.').addHelpText("after",m({context:`Webhooks deliver real-time event notifications to your HTTPS endpoint.
906
866
  Events fire per-recipient: a batch email to 3 recipients generates 3 email.sent events.
907
867
 
908
868
  --endpoint must use HTTPS.
@@ -924,38 +884,38 @@ Use the signing_secret in the response to verify webhook payloads using Svix
924
884
  signature headers (svix-id, svix-timestamp, svix-signature). "resend webhooks get" returns it again.
925
885
  Use resend.webhooks.verify() in your application to validate incoming payloads.
926
886
 
927
- Non-interactive: --endpoint and --events are required.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","missing_endpoint","missing_events","create_error"],examples:["resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks create --endpoint https://app.example.com/hooks/resend --events email.sent email.bounced","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.endpoint,{message:"Webhook endpoint URL",placeholder:"https://your-app.com/webhooks/resend",validate:s=>{if(!s)return"Endpoint URL is required";if(!s.startsWith("https://"))return"Endpoint must use HTTPS"}},{message:"Missing --endpoint flag.",code:"missing_endpoint"},o),r,n=e.events?.length?eo(e.events):void 0;if(n?.includes("all"))r=lt;else if(n?.length)r=n;else{(!w()||o.json)&&h({message:"Missing --events flag.",code:"missing_events"},{json:o.json});let s=await Jn({message:"Select event types to subscribe to",options:lt.map(a=>({value:a,label:a}))});F(s)&&D("Cancelled."),r=s}await j({loading:"Creating webhook...",sdkCall:s=>s.webhooks.create({endpoint:i,events:r}),onInteractive:s=>{console.log("Webhook created"),console.log(`ID: ${s.id}`),console.log(`Signing Secret: ${s.signing_secret}`)}},o)});var Wu=new c("delete").alias("rm").description("Delete a webhook endpoint and stop all event deliveries to it").argument("[id]","Webhook UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",d({context:`Warning: Deleting a webhook immediately stops event delivery to the endpoint.
887
+ Non-interactive: --endpoint and --events are required.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","missing_endpoint","missing_events","create_error"],examples:["resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks create --endpoint https://app.example.com/hooks/resend --events email.sent email.bounced","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.endpoint,{message:"Webhook endpoint URL",placeholder:"https://your-app.com/webhooks/resend",validate:s=>{if(!s)return"Endpoint URL is required";if(!s.startsWith("https://"))return"Endpoint must use HTTPS"}},{message:"Missing --endpoint flag.",code:"missing_endpoint"},o),r,n=e.events?.length?Zt(e.events):void 0;if(n?.includes("all"))r=at;else if(n?.length)r=n;else{(!U()||o.json)&&g({message:"Missing --events flag.",code:"missing_events"},{json:o.json});let s=await Nn({message:"Select event types to subscribe to",options:at.map(a=>({value:a,label:a}))});k(s)&&R("Cancelled."),r=s}await M({loading:"Creating webhook...",sdkCall:s=>s.webhooks.create({endpoint:i,events:r}),onInteractive:s=>{console.log("Webhook created"),console.log(`ID: ${s.id}`),console.log(`Signing Secret: ${s.signing_secret}`)}},o)});var lu=new d("delete").alias("rm").description("Delete a webhook endpoint and stop all event deliveries to it").argument("[id]","Webhook UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",m({context:`Warning: Deleting a webhook immediately stops event delivery to the endpoint.
928
888
  In-flight events may still be attempted once before the deletion takes effect.
929
889
  To temporarily pause delivery without losing configuration, use:
930
890
  resend webhooks update <id> --status disabled
931
891
 
932
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"webhook","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend webhooks delete wh_abc123 --yes","resend webhooks delete wh_abc123 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await J(e,Ce,i);await z(r.id,!!t.yes,{confirmMessage:`Delete webhook "${r.label}"?
892
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"webhook","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend webhooks delete wh_abc123 --yes","resend webhooks delete wh_abc123 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,ye,i);await te(r.id,!!t.yes,{confirmMessage:`Delete webhook "${r.label}"?
933
893
  ID: ${r.id}
934
- Events will no longer be delivered to this endpoint.`,loading:"Deleting webhook...",object:"webhook",successMsg:"Webhook deleted",sdkCall:n=>n.webhooks.remove(r.id)},i)});function to(e){return{resource:"webhook event",resourcePlural:"webhook events",fetchItems:(t,{limit:o,after:i})=>t.webhooks.events.list({webhookId:e,limit:o,...i&&{after:i}}),display:t=>({label:`${t.type} (${t.status})`,hint:t.id})}}function Ju(e){let t=e.map(o=>[o.type,o.status,o.created_at,o.id]);return _(["Type","Status","Created","ID"],t,"(no webhook events)")}function Vu(e){let t=e.map(o=>{let i=o.response.replace(/\s+/g," ").trim();return[String(o.http_status_code),o.sent_at,i.length>60?`${i.slice(0,57)}...`:i,o.id]});return _(["HTTP","Sent","Response","ID"],t,"(no delivery attempts)")}var zu=new c("attempts").description("List the delivery attempts for a webhook event, most recent first").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").option("--limit <n>","Maximum number of attempts to return (1-100)","10").option("--after <cursor>","Return attempts after this attempt ID (next page)").addHelpText("after",d({context:`Each attempt records what your endpoint returned: http_status_code and the
894
+ Events will no longer be delivered to this endpoint.`,loading:"Deleting webhook...",object:"webhook",successMsg:"Webhook deleted",sdkCall:n=>n.webhooks.remove(r.id)},i)});function eo(e){return{resource:"webhook event",resourcePlural:"webhook events",fetchItems:(t,{limit:o,after:i})=>t.webhooks.events.list({webhookId:e,limit:o,...i&&{after:i}}),display:t=>({label:`${t.type} (${t.status})`,hint:t.id})}}function cu(e){let t=e.map(o=>[o.type,o.status,o.created_at,o.id]);return _(["Type","Status","Created","ID"],t,"(no webhook events)")}function du(e){let t=e.map(o=>{let i=o.response.replace(/\s+/g," ").trim();return[String(o.http_status_code),o.sent_at,i.length>60?`${i.slice(0,57)}...`:i,o.id]});return _(["HTTP","Sent","Response","ID"],t,"(no delivery attempts)")}var uu=new d("attempts").description("List the delivery attempts for a webhook event, most recent first").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").option("--limit <n>","Maximum number of attempts to return (1-100)","10").option("--after <cursor>","Return attempts after this attempt ID (next page)").addHelpText("after",m({context:`Each attempt records what your endpoint returned: http_status_code and the
935
895
  response body. Use this to debug why an event ended up in the failed status.
936
896
 
937
- This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"atmpt_...","http_status_code":500,"response":"Internal Server Error","sent_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await g(e,Ce,r),s=await g(t,to(n),r),a=O(o.limit,r);await k({loading:"Fetching delivery attempts...",sdkCall:l=>l.webhooks.events.attempts.list({webhookId:n,eventId:s,limit:a,...o.after!==void 0&&{after:o.after}}),onInteractive:l=>{console.log(Vu(l.data)),E(l,`webhooks events attempts ${n} ${s}`,{limit:a,apiKey:r.apiKey,profile:r.profile})}},r)});var Yu=new c("get").description("Retrieve a single event delivered to a webhook").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",d({context:`next_attempt_at is when the next delivery attempt is scheduled. It is null
897
+ This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"atmpt_...","http_status_code":500,"response":"Internal Server Error","sent_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,eo(n),r),a=O(o.limit,r);await F({loading:"Fetching delivery attempts...",sdkCall:l=>l.webhooks.events.attempts.list({webhookId:n,eventId:s,limit:a,...o.after!==void 0&&{after:o.after}}),onInteractive:l=>{console.log(du(l.data)),T(l,`webhooks events attempts ${n} ${s}`,{limit:a,apiKey:r.apiKey,profile:r.profile})}},r)});var mu=new d("get").description("Retrieve a single event delivered to a webhook").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",m({context:`next_attempt_at is when the next delivery attempt is scheduled. It is null
938
898
  once the event reaches success or failed.
939
899
 
940
- payload is the JSON body that was sent to your endpoint.`,output:' {"object":"webhook_event","id":"msg_...","type":"email.sent","created_at":"...","status":"attempting","next_attempt_at":"...","payload":{...}}',errorCodes:["auth_error","fetch_error"],examples:["resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await g(e,Ce,r),s=await g(t,to(n),r);await I({loading:"Fetching webhook event...",sdkCall:a=>a.webhooks.events.get({webhookId:n,eventId:s}),onInteractive:a=>{console.log(`${a.type} - ${a.status}`),console.log(`ID: ${a.id}`),console.log(`Created: ${a.created_at}`),console.log(`Next attempt: ${a.next_attempt_at??"none scheduled"}`),console.log(`
900
+ payload is the JSON body that was sent to your endpoint.`,output:' {"object":"webhook_event","id":"msg_...","type":"email.sent","created_at":"...","status":"attempting","next_attempt_at":"...","payload":{...}}',errorCodes:["auth_error","fetch_error"],examples:["resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,eo(n),r);await $({loading:"Fetching webhook event...",sdkCall:a=>a.webhooks.events.get({webhookId:n,eventId:s}),onInteractive:a=>{console.log(`${a.type} - ${a.status}`),console.log(`ID: ${a.id}`),console.log(`Created: ${a.created_at}`),console.log(`Next attempt: ${a.next_attempt_at??"none scheduled"}`),console.log(`
941
901
  Payload:
942
- ${JSON.stringify(a.payload,null,2)}`)}},r)});var Xu=new c("list").alias("ls").description("List the events delivered to a webhook, most recent first").argument("[webhookId]","Webhook ID").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this event ID (next page)").addHelpText("after",d({context:`status is the delivery status of the event to this webhook:
902
+ ${JSON.stringify(a.payload,null,2)}`)}},r)});var pu=new d("list").alias("ls").description("List the events delivered to a webhook, most recent first").argument("[webhookId]","Webhook ID").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this event ID (next page)").addHelpText("after",m({context:`status is the delivery status of the event to this webhook:
943
903
  pending, attempting, success, or failed.
944
904
 
945
- This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"msg_...","type":"email.sent","created_at":"...","status":"success"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --limit 50","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --after msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ce,i),n=O(t.limit,i);await k({loading:"Fetching webhook events...",sdkCall:s=>s.webhooks.events.list({webhookId:r,limit:n,...t.after!==void 0&&{after:t.after}}),onInteractive:s=>{console.log(Ju(s.data)),E(s,`webhooks events list ${r}`,{limit:n,apiKey:i.apiKey,profile:i.profile})}},i)});var Zu=new c("replay").description("Queue another delivery attempt for a webhook event").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",d({context:`Queues one more delivery of the event. Does not schedule automatic retries.
946
- The webhook must be enabled \u2014 re-enable it first with: resend webhooks update <webhook-id> --status enabled`,output:' {"object":"webhook_event","id":"msg_..."}',errorCodes:["auth_error","replay_error"],examples:["resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await g(e,Ce,r),s=await g(t,to(n),r);await R({loading:"Replaying webhook event...",sdkCall:a=>a.webhooks.events.replay({webhookId:n,eventId:s}),errorCode:"replay_error",successMsg:`Webhook event replay queued: ${s}`},r)});var em=new c("events").description("Inspect or replay the events Resend delivered to a webhook").addHelpText("after",d({context:`Debugging a webhook that is missing deliveries:
905
+ This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"msg_...","type":"email.sent","created_at":"...","status":"success"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --limit 50","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --after msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i),n=O(t.limit,i);await F({loading:"Fetching webhook events...",sdkCall:s=>s.webhooks.events.list({webhookId:r,limit:n,...t.after!==void 0&&{after:t.after}}),onInteractive:s=>{console.log(cu(s.data)),T(s,`webhooks events list ${r}`,{limit:n,apiKey:i.apiKey,profile:i.profile})}},i)});var fu=new d("replay").description("Queue another delivery attempt for a webhook event").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",m({context:`Queues one more delivery of the event. Does not schedule automatic retries.
906
+ The webhook must be enabled \u2014 re-enable it first with: resend webhooks update <webhook-id> --status enabled`,output:' {"object":"webhook_event","id":"msg_..."}',errorCodes:["auth_error","replay_error"],examples:["resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,eo(n),r);await B({loading:"Replaying webhook event...",sdkCall:a=>a.webhooks.events.replay({webhookId:n,eventId:s}),errorCode:"replay_error",successMsg:`Webhook event replay queued: ${s}`},r)});var gu=new d("events").description("Inspect or replay the events Resend delivered to a webhook").addHelpText("after",m({context:`Debugging a webhook that is missing deliveries:
947
907
  1. resend webhooks events list <webhook-id> (find the event)
948
908
  2. resend webhooks events get <webhook-id> <event-id> (see the payload we sent)
949
909
  3. resend webhooks events attempts <webhook-id> <event-id> (see what your endpoint returned)
950
910
  4. resend webhooks events replay <webhook-id> <event-id> (queue another delivery)
951
911
 
952
912
  Events are listed most recent first. Both list commands paginate forward only,
953
- with --after.`,examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"]})).addCommand(Xu,{isDefault:!0}).addCommand(Yu).addCommand(zu).addCommand(Zu);var tm=new c("get").description("Retrieve a webhook endpoint configuration by ID").argument("[id]","Webhook UUID").addHelpText("after",d({context:'The response includes the signing_secret. Rotate it with "resend webhooks rotate-signing-secret <id>".',output:' {"object":"webhook","id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled|disabled","created_at":"<date>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","fetch_error"],examples:["resend webhooks get wh_abc123","resend webhooks get wh_abc123 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ce,i);await I({loading:"Fetching webhook...",sdkCall:n=>n.webhooks.get(r),onInteractive:n=>{console.log(`${n.endpoint}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),console.log(`Events: ${(n.events??[]).join(", ")||"(none)"}`),console.log(`Created: ${n.created_at}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var om=new c("list").alias("ls").description("List all registered webhook endpoints").option("--limit <n>","Maximum number of webhooks to return (1-100)","10").option("--after <cursor>","Return webhooks after this cursor (next page)").option("--before <cursor>","Return webhooks before this cursor (previous page)").addHelpText("after",d({context:`Pagination: use --after or --before with a webhook ID as the cursor.
913
+ with --after.`,examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"]})).addCommand(pu,{isDefault:!0}).addCommand(mu).addCommand(uu).addCommand(fu);var hu=new d("get").description("Retrieve a webhook endpoint configuration by ID").argument("[id]","Webhook UUID").addHelpText("after",m({context:'The response includes the signing_secret. Rotate it with "resend webhooks rotate-signing-secret <id>".',output:' {"object":"webhook","id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled|disabled","created_at":"<date>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","fetch_error"],examples:["resend webhooks get wh_abc123","resend webhooks get wh_abc123 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i);await $({loading:"Fetching webhook...",sdkCall:n=>n.webhooks.get(r),onInteractive:n=>{console.log(`${n.endpoint}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),console.log(`Events: ${(n.events??[]).join(", ")||"(none)"}`),console.log(`Created: ${n.created_at}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var Au=new d("list").alias("ls").description("List all registered webhook endpoints").option("--limit <n>","Maximum number of webhooks to return (1-100)","10").option("--after <cursor>","Return webhooks after this cursor (next page)").option("--before <cursor>","Return webhooks before this cursor (previous page)").addHelpText("after",m({context:`Pagination: use --after or --before with a webhook ID as the cursor.
954
914
  Only one of --after or --before may be used at a time.
955
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks list","resend webhooks list --limit 25 --json","resend webhooks list --after wh_abc123 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=P(i,e.after,e.before,o);await k({loading:"Fetching webhooks...",sdkCall:n=>n.webhooks.list(r),onInteractive:n=>{console.log(qu(n.data)),E(n,"webhooks list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var rm=require("node:http");var xe=me(Je(),1);X();function im(e){return e?"error"in e?e.timeout?{status:504,body:"Forward target timed out"}:{status:502,body:"Forward target unreachable"}:e.status>=200&&e.status<300?{status:200,body:"OK"}:{status:e.status,body:"Forward target failed"}:{status:200,body:"OK"}}var nm=["svix-id","svix-timestamp","svix-signature"],yg=3e4;function Cg(){return new Date().toLocaleTimeString("en-GB",{hour12:!1})}function xg(e){let t=Fe(e.type??"unknown"),o=e.data??{},i=Fe(o.id??""),r="";if(t.startsWith("email.")){let n=Fe(o.from??""),s=Fe(Array.isArray(o.to)?o.to[0]:"");(n||s)&&(r=`${n} -> ${s}`)}else t.startsWith("domain.")?r=Fe(o.name??""):(t.startsWith("contact.")||t.startsWith("suppression."))&&(r=Fe(o.email??""));return{type:t,resourceId:i,detail:r}}function wg(e){let t=`${e} ${vg(e)}`;return e>=200&&e<300?xe.default.green(t):e>=400&&e<500?xe.default.yellow(t):xe.default.red(t)}function vg(e){return{200:"OK",201:"Created",204:"No Content",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"}[e]??""}async function Ug(e,t,o){let i={"content-type":"application/json"};for(let s of nm){let a=o[s];a&&(i[s]=a)}let r=e.startsWith("http")?e:`http://${e}`;return{status:(await fetch(r,{method:"POST",headers:i,body:t,signal:AbortSignal.timeout(yg)})).status}}function Sg(e){return new Promise((t,o)=>{let i=[];e.on("data",r=>i.push(r)),e.on("end",()=>t(Buffer.concat(i).toString())),e.on("error",o)})}async function Kg(e,t,o){process.stderr.write(`
915
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks list","resend webhooks list --limit 25 --json","resend webhooks list --after wh_abc123 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=G(i,e.after,e.before,o);await F({loading:"Fetching webhooks...",sdkCall:n=>n.webhooks.list(r),onInteractive:n=>{console.log(su(n.data)),T(n,"webhooks list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var yu=require("node:http");var Ce=ue(Ye(),1);V();function bu(e){return e?"error"in e?e.timeout?{status:504,body:"Forward target timed out"}:{status:502,body:"Forward target unreachable"}:e.status>=200&&e.status<300?{status:200,body:"OK"}:{status:e.status,body:"Forward target failed"}:{status:200,body:"OK"}}var Cu=["svix-id","svix-timestamp","svix-signature"],Rg=3e4;function _g(){return new Date().toLocaleTimeString("en-GB",{hour12:!1})}function Dg(e){let t=Fe(e.type??"unknown"),o=e.data??{},i=Fe(o.id??""),r="";if(t.startsWith("email.")){let n=Fe(o.from??""),s=Fe(Array.isArray(o.to)?o.to[0]:"");(n||s)&&(r=`${n} -> ${s}`)}else t.startsWith("domain.")?r=Fe(o.name??""):(t.startsWith("contact.")||t.startsWith("suppression."))&&(r=Fe(o.email??""));return{type:t,resourceId:i,detail:r}}function Eg(e){let t=`${e} ${Bg(e)}`;return e>=200&&e<300?Ce.default.green(t):e>=400&&e<500?Ce.default.yellow(t):Ce.default.red(t)}function Bg(e){return{200:"OK",201:"Created",204:"No Content",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"}[e]??""}async function Og(e,t,o){let i={"content-type":"application/json"};for(let s of Cu){let a=o[s];a&&(i[s]=a)}let r=e.startsWith("http")?e:`http://${e}`;return{status:(await fetch(r,{method:"POST",headers:i,body:t,signal:AbortSignal.timeout(Rg)})).status}}function Tg(e){return new Promise((t,o)=>{let i=[];e.on("data",r=>i.push(r)),e.on("end",()=>t(Buffer.concat(i).toString())),e.on("error",o)})}async function Ig(e,t,o){process.stderr.write(`
956
916
  Cleaning up...`);try{await e.webhooks.remove(t),process.stderr.write(` Webhook ${t} deleted.
957
917
  `)}catch{process.stderr.write(` Failed to delete webhook ${t}.
958
- `)}o.close()}var sm=new c("listen").description("Listen for webhook events locally during development").option("--url <url>","Public URL for receiving webhooks (your tunnel URL)").option("--forward-to <url>","Forward payloads to this local URL").option("--events <events...>","Event types to listen for (default: all)").option("--port <port>","Local server port","4318").addHelpText("after",d({context:`Start a local server that receives Resend webhook events in real time.
918
+ `)}o.close()}var wu=new d("listen").description("Listen for webhook events locally during development").option("--url <url>","Public URL for receiving webhooks (your tunnel URL)").option("--forward-to <url>","Forward payloads to this local URL").option("--events <events...>","Event types to listen for (default: all)").option("--port <port>","Local server port","4318").addHelpText("after",m({context:`Start a local server that receives Resend webhook events in real time.
959
919
 
960
920
  You must provide a public URL (e.g. from ngrok or localtunnel) that
961
921
  points to the local server port. The CLI will:
@@ -966,28 +926,28 @@ points to the local server port. The CLI will:
966
926
  5. Delete the temporary webhook on exit (Ctrl+C)
967
927
 
968
928
  Important: your tunnel must forward traffic to the same port as --port (default 4318).
969
- For example, if using ngrok: ngrok http 4318`,examples:["resend webhooks listen --url https://example.ngrok-free.app","resend webhooks listen --url https://example.ngrok-free.app --forward-to localhost:3000/webhook","resend webhooks listen --url https://example.ngrok-free.app --events email.sent email.bounced","resend webhooks listen --url https://example.ngrok-free.app --port 8080"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await T(e.url,{message:"Public tunnel URL",placeholder:"https://example.ngrok-free.app",validate:A=>{if(!A)return"URL is required";if(!A.startsWith("https://")&&!A.startsWith("http://"))return"URL must start with http:// or https://"}},{message:"Missing --url flag.",code:"missing_url"},o),r=Number.parseInt(e.port??"4318",10);(Number.isNaN(r)||r<1||r>65535)&&h({message:"Invalid port number.",code:"invalid_port"},{json:o.json});let n=e.events?.length?eo(e.events):void 0,s;n?.includes("all")?s=lt:n?.length?s=n:s=lt;let a=await ee(o),l=o.json||!w(),u=(0,rm.createServer)(async(A,b)=>{try{if(A.method!=="POST"){b.writeHead(405).end("Method not allowed");return}let x=await Sg(A),v;try{v=JSON.parse(x)}catch{b.writeHead(400).end("Invalid JSON");return}let U={};for(let $ of nm){let q=A.headers[$];U[$]=Array.isArray(q)?q[0]:q}let{type:S,resourceId:K,detail:B}=xg(v),G;if(e.forwardTo)try{let{status:$}=await Ug(e.forwardTo,x,U);G={status:$}}catch($){let q=$ instanceof DOMException&&$.name==="TimeoutError";G={error:$ instanceof Error?$.message:"Unknown error",timeout:q}}if(l){let $={timestamp:new Date().toISOString(),type:S,resource_id:K,payload:v};e.forwardTo&&G&&($.forwarded="error"in G?{url:e.forwardTo,error:G.error}:{url:e.forwardTo,status:G.status}),console.log(JSON.stringify($))}else{let $=xe.default.dim(`[${Cg()}]`),q=S.padEnd(20),we=K.padEnd(14);if(process.stderr.write(`${$} ${xe.default.bold(q)} ${xe.default.cyan(we)} ${B}
970
- `),e.forwardTo&&G){let re=e.forwardTo.startsWith("http")?e.forwardTo:`http://${e.forwardTo}`;"error"in G?process.stderr.write(`${xe.default.dim(" -> POST")} ${re} ${xe.default.red(`[Error: ${G.error}]`)}
971
- `):process.stderr.write(`${xe.default.dim(" -> POST")} ${re} ${xe.default.dim(`[${wg(G.status)}]`)}
972
- `)}}let Q=im(G);b.writeHead(Q.status).end(Q.body)}catch{b.headersSent||b.writeHead(500).end("Internal error")}});try{await new Promise((A,b)=>{u.on("error",b),u.listen(r,A)})}catch(A){h({message:A instanceof Error?`Failed to start local server on port ${r}: ${A.message}`:`Failed to start local server on port ${r}`,code:"server_listen_error"},{json:o.json})}let m=ae("Setting up webhook listener...",o.quiet),p;try{let{data:A,error:b}=await a.webhooks.create({endpoint:i,events:s});(b||!A)&&(m.fail("Failed to create webhook"),u.close(),h({message:b?.message??"Unexpected empty response",code:"create_error"},{json:o.json})),p=A.id}catch(A){m.fail("Failed to create webhook"),u.close(),h({message:A instanceof Error?A.message:"Unknown error",code:"create_error"},{json:o.json})}if(m.stop("Webhook listener ready"),!l){let A=s.length===lt.length?"all events":s.length<=3?s.join(", "):`${s.slice(0,3).join(", ")} (+${s.length-3} more)`;if(process.stderr.write(`
973
- `),process.stderr.write(` ${xe.default.bold("Webhook:")} ${p}
974
- `),process.stderr.write(` ${xe.default.bold("Endpoint:")} ${i}
975
- `),process.stderr.write(` ${xe.default.bold("Events:")} ${A}
976
- `),process.stderr.write(` ${xe.default.bold("Server:")} http://localhost:${r}
977
- `),e.forwardTo){let b=e.forwardTo.startsWith("http")?e.forwardTo:`http://${e.forwardTo}`;process.stderr.write(` ${xe.default.bold("Forward:")} ${b}
929
+ For example, if using ngrok: ngrok http 4318`,examples:["resend webhooks listen --url https://example.ngrok-free.app","resend webhooks listen --url https://example.ngrok-free.app --forward-to localhost:3000/webhook","resend webhooks listen --url https://example.ngrok-free.app --events email.sent email.bounced","resend webhooks listen --url https://example.ngrok-free.app --port 8080"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.url,{message:"Public tunnel URL",placeholder:"https://example.ngrok-free.app",validate:h=>{if(!h)return"URL is required";if(!h.startsWith("https://")&&!h.startsWith("http://"))return"URL must start with http:// or https://"}},{message:"Missing --url flag.",code:"missing_url"},o),r=Number.parseInt(e.port??"4318",10);(Number.isNaN(r)||r<1||r>65535)&&g({message:"Invalid port number.",code:"invalid_port"},{json:o.json});let n=e.events?.length?Zt(e.events):void 0,s;n?.includes("all")?s=at:n?.length?s=n:s=at;let a=await Y(o),l=o.json||!U(),c=(0,yu.createServer)(async(h,A)=>{try{if(h.method!=="POST"){A.writeHead(405).end("Method not allowed");return}let w=await Tg(h),S;try{S=JSON.parse(w)}catch{A.writeHead(400).end("Invalid JSON");return}let v={};for(let E of Cu){let N=h.headers[E];v[E]=Array.isArray(N)?N[0]:N}let{type:K,resourceId:x,detail:D}=Dg(S),I;if(e.forwardTo)try{let{status:E}=await Og(e.forwardTo,w,v);I={status:E}}catch(E){let N=E instanceof DOMException&&E.name==="TimeoutError";I={error:E instanceof Error?E.message:"Unknown error",timeout:N}}if(l){let E={timestamp:new Date().toISOString(),type:K,resource_id:x,payload:S};e.forwardTo&&I&&(E.forwarded="error"in I?{url:e.forwardTo,error:I.error}:{url:e.forwardTo,status:I.status}),console.log(JSON.stringify(E))}else{let E=Ce.default.dim(`[${_g()}]`),N=K.padEnd(20),we=x.padEnd(14);if(process.stderr.write(`${E} ${Ce.default.bold(N)} ${Ce.default.cyan(we)} ${D}
930
+ `),e.forwardTo&&I){let ie=e.forwardTo.startsWith("http")?e.forwardTo:`http://${e.forwardTo}`;"error"in I?process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.red(`[Error: ${I.error}]`)}
931
+ `):process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.dim(`[${Eg(I.status)}]`)}
932
+ `)}}let H=bu(I);A.writeHead(H.status).end(H.body)}catch{A.headersSent||A.writeHead(500).end("Internal error")}});try{await new Promise((h,A)=>{c.on("error",A),c.listen(r,h)})}catch(h){g({message:h instanceof Error?`Failed to start local server on port ${r}: ${h.message}`:`Failed to start local server on port ${r}`,code:"server_listen_error"},{json:o.json})}let u=se("Setting up webhook listener...",o.quiet),p;try{let{data:h,error:A}=await a.webhooks.create({endpoint:i,events:s});(A||!h)&&(u.fail("Failed to create webhook"),c.close(),g({message:A?.message??"Unexpected empty response",code:"create_error"},{json:o.json})),p=h.id}catch(h){u.fail("Failed to create webhook"),c.close(),g({message:h instanceof Error?h.message:"Unknown error",code:"create_error"},{json:o.json})}if(u.stop("Webhook listener ready"),!l){let h=s.length===at.length?"all events":s.length<=3?s.join(", "):`${s.slice(0,3).join(", ")} (+${s.length-3} more)`;if(process.stderr.write(`
933
+ `),process.stderr.write(` ${Ce.default.bold("Webhook:")} ${p}
934
+ `),process.stderr.write(` ${Ce.default.bold("Endpoint:")} ${i}
935
+ `),process.stderr.write(` ${Ce.default.bold("Events:")} ${h}
936
+ `),process.stderr.write(` ${Ce.default.bold("Server:")} http://localhost:${r}
937
+ `),e.forwardTo){let A=e.forwardTo.startsWith("http")?e.forwardTo:`http://${e.forwardTo}`;process.stderr.write(` ${Ce.default.bold("Forward:")} ${A}
978
938
  `)}process.stderr.write(`
979
939
  Ready! Listening for webhook events. Press Ctrl+C to stop.
980
940
 
981
- `)}let f=!1,y=async()=>{f||(f=!0,await Kg(a,p,u),process.exit(Mt()))};ri(y),process.on("SIGTERM",y),await new Promise(()=>{})});var am=new c("rotate-signing-secret").description("Generate a new signing secret for a webhook").argument("[id]","Webhook UUID").addHelpText("after",d({context:`Generates a new signing secret and returns it. For 24 hours, payloads are
941
+ `)}let f=!1,b=async()=>{f||(f=!0,await Ig(a,p,c),process.exit(Nt()))};oi(b),process.on("SIGTERM",b),await new Promise(()=>{})});var Uu=new d("rotate-signing-secret").description("Generate a new signing secret for a webhook").argument("[id]","Webhook UUID").addHelpText("after",m({context:`Generates a new signing secret and returns it. For 24 hours, payloads are
982
942
  signed with both the new and the previous secret, so either one verifies them.
983
- After that, only the new secret does. Update your verification code within that window.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","create_error"],examples:["resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ce,i);await j({loading:"Rotating webhook signing secret...",sdkCall:n=>n.webhooks.rotateSigningSecret(r),onInteractive:n=>{console.log("Webhook signing secret rotated"),console.log(`ID: ${n.id}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var lm=new c("update").description("Update a webhook's endpoint URL, event subscriptions, or enabled status").argument("[id]","Webhook UUID").option("--endpoint <endpoint>","New HTTPS URL for this webhook").option("--events <events...>",'Replace the full event subscription list (comma or space-separated). Use "all" for all 17 events.').addOption(new M("--status <status>","Enable or disable event delivery for this webhook").choices(["enabled","disabled"])).addHelpText("after",d({context:`At least one of --endpoint, --events, or --status must be provided.
943
+ After that, only the new secret does. Update your verification code within that window.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","create_error"],examples:["resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i);await M({loading:"Rotating webhook signing secret...",sdkCall:n=>n.webhooks.rotateSigningSecret(r),onInteractive:n=>{console.log("Webhook signing secret rotated"),console.log(`ID: ${n.id}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var Su=new d("update").description("Update a webhook's endpoint URL, event subscriptions, or enabled status").argument("[id]","Webhook UUID").option("--endpoint <endpoint>","New HTTPS URL for this webhook").option("--events <events...>",'Replace the full event subscription list (comma or space-separated). Use "all" for all 17 events.').addOption(new L("--status <status>","Enable or disable event delivery for this webhook").choices(["enabled","disabled"])).addHelpText("after",m({context:`At least one of --endpoint, --events, or --status must be provided.
984
944
 
985
945
  --events replaces the entire event list (it is not additive).
986
946
  Use "all" as a shorthand for all 17 event types.
987
947
 
988
948
  --status controls whether events are delivered to this endpoint:
989
949
  enabled Events are delivered (default on creation)
990
- disabled Events are suppressed without deleting the webhook`,output:' {"object":"webhook","id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend","resend webhooks update wh_abc123 --events email.sent email.bounced","resend webhooks update wh_abc123 --events all","resend webhooks update wh_abc123 --status disabled","resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend --events all --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await g(e,Ce,i),n=t.events?.length?eo(t.events):void 0,s=n!==void 0;!t.endpoint&&!s&&!t.status&&h({message:"Provide at least one option to update: --endpoint, --events, or --status.",code:"no_changes"},{json:i.json}),s&&!n.length&&h({message:"Missing --events values.",code:"no_changes"},{json:i.json});let a=n?.includes("all")?lt:n?.length?n:void 0;await R({loading:"Updating webhook...",sdkCall:l=>l.webhooks.update(r,{...t.endpoint&&{endpoint:t.endpoint},...a?.length&&{events:a},...t.status&&{status:t.status}}),errorCode:"update_error",successMsg:`Webhook updated: ${r}`},i)});var cm=new c("webhooks").description("Manage webhook endpoints for real-time event notifications").addHelpText("after",d({context:`Webhooks let you receive real-time event notifications from Resend at an HTTPS endpoint.
950
+ disabled Events are suppressed without deleting the webhook`,output:' {"object":"webhook","id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend","resend webhooks update wh_abc123 --events email.sent email.bounced","resend webhooks update wh_abc123 --events all","resend webhooks update wh_abc123 --status disabled","resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend --events all --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i),n=t.events?.length?Zt(t.events):void 0,s=n!==void 0;!t.endpoint&&!s&&!t.status&&g({message:"Provide at least one option to update: --endpoint, --events, or --status.",code:"no_changes"},{json:i.json}),s&&!n.length&&g({message:"Missing --events values.",code:"no_changes"},{json:i.json});let a=n?.includes("all")?at:n?.length?n:void 0;await B({loading:"Updating webhook...",sdkCall:l=>l.webhooks.update(r,{...t.endpoint&&{endpoint:t.endpoint},...a?.length&&{events:a},...t.status&&{status:t.status}}),errorCode:"update_error",successMsg:`Webhook updated: ${r}`},i)});var vu=new d("webhooks").description("Manage webhook endpoints for real-time event notifications").addHelpText("after",m({context:`Webhooks let you receive real-time event notifications from Resend at an HTTPS endpoint.
991
951
  Payloads are signed with Svix headers for verification.
992
952
 
993
953
  Event categories (19 total):
@@ -1004,25 +964,25 @@ Signature verification (Svix):
1004
964
  Rotate a secret with "resend webhooks rotate-signing-secret <id>"; "resend webhooks get" returns the current one.
1005
965
 
1006
966
  Delivery history:
1007
- Inspect what Resend sent and what your endpoint returned with "resend webhooks events".`,examples:["resend webhooks list","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks get wh_abc123","resend webhooks update wh_abc123 --status disabled","resend webhooks rotate-signing-secret wh_abc123","resend webhooks delete wh_abc123 --yes","resend webhooks events list wh_abc123"]})).addCommand(Lu).addCommand(tm).addCommand(em).addCommand(sm).addCommand(om,{isDefault:!0}).addCommand(lm).addCommand(am).addCommand(Wu);var um=require("node:path");be();X();var dm={flag:"flag",env:"environment variable",config:"config file",secure_storage:"secure storage"},kg={full_access:"full access",sending_access:"sending access"},mm=new c("whoami").description("Show current authentication status").addHelpText("after",d({setup:!0,context:`Local only \u2014 no network calls.
1008
- Shows which profile is active and where the active credential comes from.`,output:' {"authenticated":true,"profile":"production","api_key":"re_...abcd","source":"config","config_path":"/Users/you/.config/resend/credentials.json"}\n {"error":{"message":"Not authenticated.\\nRun `resend login` to get started.","code":"not_authenticated"}}',examples:["resend whoami","resend whoami --json","resend whoami --profile production"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=o.profile,r=await Rt(o.apiKey,i,{refresh:!1});if(!r){let f=i||ti(i),y=_e(),A=y.some(U=>U.name===f),b=i||process.env.RESEND_PROFILE,x=b&&!A?`Profile "${f}" not found.
1009
- Available profiles: ${y.map(U=>U.name).join(", ")||"(none)"}`:"Not authenticated.\nRun `resend login` to get started.",v=b&&!A?"profile_not_found":"not_authenticated";o.json||!w()?h({message:x,code:v},{json:o.json}):h({message:x,code:v},{json:!1})}let n=r.profile??ti(i),s=(0,um.join)(He(),"credentials.json"),a=r.type==="api_key"?r.key:r.access_token,l=r.source,u=r.type==="api_key"?r.permission:void 0;if(o.json||!w()){N({authenticated:!0,profile:n,api_key:At(a),source:l,...u&&{permission:u},config_path:s},{json:o.json});return}let m=r.type==="oauth_grant"?`${dm[l]} (oauth)`:dm[l],p=u?kg[u]:void 0;console.log(""),console.log(` Profile: ${n}`),console.log(r.type==="oauth_grant"?` Token: ${At(a)}`:` API Key: ${At(a)}`),console.log(` Source: ${m}`),p&&console.log(` Access: ${p}`),console.log(` Config: ${s}`),console.log("")});function pm(e,t={}){let o=t.getArgv??(()=>process.argv.slice(2)),i=[],r=[e];for(;r.length>0;){let n=r.pop();if(!n)break;i.push(n);for(let s of n.commands)r.push(s)}for(let n of i){let a=n.configureOutput().outputError??((l,u)=>u(l));n.configureOutput({outputError:(l,u)=>{a(_g(l,e,o()),u)}})}}function _g(e,t,o){if(!Rg(e))return e;let i=Fg(t,o);return i?Dg(e,i):e}function Fg(e,t){let o=e,i=[];for(let r=0;r<t.length;r+=1){let n=t[r];if(!n||n==="--")return;let s=r;if(n.startsWith("-")&&n!=="-"){let u=n.startsWith("--")?n.split("=",1)[0]:n.length>2?n.slice(0,2):n,m;for(let p of Tg(o)){for(let f of p.createHelp().visibleOptions(p))if(f.long===u||f.short===u){m=f;break}if(m)break}if(!m)s=void 0;else if(!m.required&&!m.optional)s=r+1;else if(m.variadic)s=t.length;else if(n.startsWith("--")&&n.includes("="))s=r+1;else if(!n.startsWith("--")&&n.length>2)s=r+1;else{let p=t[r+1];m.optional&&(p===void 0||p.startsWith("-"))?s=r+1:s=Math.min(r+2,t.length)}}if(s===void 0)return;if(s!==r){r=s-1;continue}if(n.startsWith("-"))return;let a=Og(o).find(u=>hm(u).has(n));if(a){o=a,i.push(a.name());continue}let l=Eg(n,fm(o)).map(u=>[e.name(),...i,u.name()].join(" "));return l.length===0?void 0:{unknownCommand:n,suggestions:l}}}function Rg(e){return/^error: unknown command /.test(e)||/^error: too many arguments/.test(e)}function Dg(e,t){let o=e.endsWith(`
967
+ Inspect what Resend sent and what your endpoint returned with "resend webhooks events".`,examples:["resend webhooks list","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks get wh_abc123","resend webhooks update wh_abc123 --status disabled","resend webhooks rotate-signing-secret wh_abc123","resend webhooks delete wh_abc123 --yes","resend webhooks events list wh_abc123"]})).addCommand(au).addCommand(hu).addCommand(gu).addCommand(wu).addCommand(Au,{isDefault:!0}).addCommand(Su).addCommand(Uu).addCommand(lu);var xu=require("node:path");Ae();V();var Ku={flag:"flag",env:"environment variable",config:"config file",secure_storage:"secure storage"},jg={full_access:"full access",sending_access:"sending access"},ku=new d("whoami").description("Show current authentication status").addHelpText("after",m({setup:!0,context:`Local only \u2014 no network calls.
968
+ Shows which profile is active and where the active credential comes from.`,output:' {"authenticated":true,"profile":"production","api_key":"re_...abcd","source":"config","config_path":"/Users/you/.config/resend/credentials.json"}\n {"error":{"message":"Not authenticated.\\nRun `resend login` to get started.","code":"not_authenticated"}}',examples:["resend whoami","resend whoami --json","resend whoami --profile production"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=o.profile,r=await Rt(o.apiKey,i,{refresh:!1});if(!r){let f=i||Zo(i),b=ke(),h=b.some(v=>v.name===f),A=i||process.env.RESEND_PROFILE,w=A&&!h?`Profile "${f}" not found.
969
+ Available profiles: ${b.map(v=>v.name).join(", ")||"(none)"}`:"Not authenticated.\nRun `resend login` to get started.",S=A&&!h?"profile_not_found":"not_authenticated";o.json||!U()?g({message:w,code:S},{json:o.json}):g({message:w,code:S},{json:!1})}let n=r.profile??Zo(i),s=(0,xu.join)(He(),"credentials.json"),a=r.type==="api_key"?r.key:r.access_token,l=r.source,c=r.type==="api_key"?r.permission:void 0;if(o.json||!U()){Q({authenticated:!0,profile:n,api_key:ht(a),source:l,...c&&{permission:c},config_path:s},{json:o.json});return}let u=r.type==="oauth_grant"?`${Ku[l]} (oauth)`:Ku[l],p=c?jg[c]:void 0;console.log(""),console.log(` Profile: ${n}`),console.log(r.type==="oauth_grant"?` Token: ${ht(a)}`:` API Key: ${ht(a)}`),console.log(` Source: ${u}`),p&&console.log(` Access: ${p}`),console.log(` Config: ${s}`),console.log("")});function Fu(e,t={}){let o=t.getArgv??(()=>process.argv.slice(2)),i=[],r=[e];for(;r.length>0;){let n=r.pop();if(!n)break;i.push(n);for(let s of n.commands)r.push(s)}for(let n of i){let a=n.configureOutput().outputError??((l,c)=>c(l));n.configureOutput({outputError:(l,c)=>{a(Pg(l,e,o()),c)}})}}function Pg(e,t,o){if(!Gg(e))return e;let i=$g(t,o);return i?Hg(e,i):e}function $g(e,t){let o=e,i=[];for(let r=0;r<t.length;r+=1){let n=t[r];if(!n||n==="--")return;let s=r;if(n.startsWith("-")&&n!=="-"){let c=n.startsWith("--")?n.split("=",1)[0]:n.length>2?n.slice(0,2):n,u;for(let p of Qg(o)){for(let f of p.createHelp().visibleOptions(p))if(f.long===c||f.short===c){u=f;break}if(u)break}if(!u)s=void 0;else if(!u.required&&!u.optional)s=r+1;else if(u.variadic)s=t.length;else if(n.startsWith("--")&&n.includes("="))s=r+1;else if(!n.startsWith("--")&&n.length>2)s=r+1;else{let p=t[r+1];u.optional&&(p===void 0||p.startsWith("-"))?s=r+1:s=Math.min(r+2,t.length)}}if(s===void 0)return;if(s!==r){r=s-1;continue}if(n.startsWith("-"))return;let a=Ng(o).find(c=>_u(c).has(n));if(a){o=a,i.push(a.name());continue}let l=Mg(n,Ru(o)).map(c=>[e.name(),...i,c.name()].join(" "));return l.length===0?void 0:{unknownCommand:n,suggestions:l}}}function Gg(e){return/^error: unknown command /.test(e)||/^error: too many arguments/.test(e)}function Hg(e,t){let o=e.endsWith(`
1010
970
  `)?`
1011
971
  `:"",{suggestions:i}=t,r=i.length===1?"Did you mean this?":"Did you mean one of these?",n=i.map(s=>` ${s}`).join(`
1012
972
  `);return`error: unknown command '${t.unknownCommand}'
1013
973
 
1014
974
  ${r}
1015
- ${n}${o}`}function Tg(e){let t=[];for(let o=e;o;o=o.parent)t.push(o);return t}function fm(e){return e.createHelp().visibleCommands(e).filter(t=>!t._hidden)}function Og(e){let t=[...e.commands];for(let o of fm(e))t.includes(o)||t.push(o);return t}function hm(e){return new Set([e.name(),...e.aliases()])}function Eg(e,t){let o=t.map(r=>{let n=Number.POSITIVE_INFINITY;for(let s of hm(r)){if(s.length<=1)continue;let a=Bg(e,s,3),l=Math.max(e.length,s.length),u=(l-a)/l;a<=3&&u>.4&&a<n&&(n=a)}return{command:r,distance:n}}).filter(r=>Number.isFinite(r.distance));if(o.length===0)return[];let i=Math.min(...o.map(r=>r.distance));return o.filter(r=>r.distance===i).sort((r,n)=>r.command.name().localeCompare(n.command.name())).map(r=>r.command)}function Bg(e,t,o=Number.POSITIVE_INFINITY){if(Math.abs(e.length-t.length)>o)return Math.max(e.length,t.length);let i=[];for(let r=0;r<=e.length;r+=1)i[r]=[r];for(let r=0;r<=t.length;r+=1)i[0][r]=r;for(let r=1;r<=t.length;r+=1)for(let n=1;n<=e.length;n+=1){let s=e[n-1]===t[r-1]?0:1;i[n][r]=Math.min(i[n-1][r]+1,i[n][r-1]+1,i[n-1][r-1]+s),n>1&&r>1&&e[n-1]===t[r-2]&&e[n-2]===t[r-1]&&(i[n][r]=Math.min(i[n][r],i[n-2][r-2]+1))}return i[e.length][t.length]}var Ig=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 "," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557"," \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D"," \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D "];function gm(){process.stdout.write(`
1016
- `);for(let e of Ig)process.stdout.write(`${e}
975
+ ${n}${o}`}function Qg(e){let t=[];for(let o=e;o;o=o.parent)t.push(o);return t}function Ru(e){return e.createHelp().visibleCommands(e).filter(t=>!t._hidden)}function Ng(e){let t=[...e.commands];for(let o of Ru(e))t.includes(o)||t.push(o);return t}function _u(e){return new Set([e.name(),...e.aliases()])}function Mg(e,t){let o=t.map(r=>{let n=Number.POSITIVE_INFINITY;for(let s of _u(r)){if(s.length<=1)continue;let a=qg(e,s,3),l=Math.max(e.length,s.length),c=(l-a)/l;a<=3&&c>.4&&a<n&&(n=a)}return{command:r,distance:n}}).filter(r=>Number.isFinite(r.distance));if(o.length===0)return[];let i=Math.min(...o.map(r=>r.distance));return o.filter(r=>r.distance===i).sort((r,n)=>r.command.name().localeCompare(n.command.name())).map(r=>r.command)}function qg(e,t,o=Number.POSITIVE_INFINITY){if(Math.abs(e.length-t.length)>o)return Math.max(e.length,t.length);let i=[];for(let r=0;r<=e.length;r+=1)i[r]=[r];for(let r=0;r<=t.length;r+=1)i[0][r]=r;for(let r=1;r<=t.length;r+=1)for(let n=1;n<=e.length;n+=1){let s=e[n-1]===t[r-1]?0:1;i[n][r]=Math.min(i[n-1][r]+1,i[n][r-1]+1,i[n-1][r-1]+s),n>1&&r>1&&e[n-1]===t[r-2]&&e[n-2]===t[r-1]&&(i[n][r]=Math.min(i[n][r],i[n-2][r-2]+1))}return i[e.length][t.length]}var Lg=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 "," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557"," \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D"," \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D "];function Du(){process.stdout.write(`
976
+ `);for(let e of Lg)process.stdout.write(`${e}
1017
977
  `);process.stdout.write(`
1018
- `)}Xr();Uo();Kt();fa();var Zr="",Um=[],Sm=[],vt=new c().name("resend").description("Resend CLI \u2014 email for developers").configureHelp({showGlobalOptions:!0,styleTitle:e=>oo.default.gray(e)}).configureOutput({writeErr:e=>{process.stderr.write(e.replace(/^error:/,()=>oo.default.red("error:")))}}).helpCommand(!0).version(`${Xn} v${se}`,"-v, --version","Output the current version").option("--api-key <key>","Resend API key (overrides env/config)").option("-p, --profile <name>","Profile to use (overrides RESEND_PROFILE)").option("--json","Force JSON output").option("-q, --quiet","Suppress spinners and status output (implies --json)").option("--insecure-storage","Save API key as plaintext instead of secure storage").hook("preAction",(e,t)=>{let o=[];for(let r=t;r?.parent;r=r.parent)o.unshift(r.name());Zr=o.join(" ");let i=r=>r.options.filter(n=>r.getOptionValueSource(n.attributeName())==="cli").map(n=>n.long?.replace(/^--/,"")??n.short?.replace(/^-/,"")??"").filter(Boolean);Um=i(t),Sm=i(e),t.optsWithGlobals().quiet&&e.setOptionValue("json",!0),t.optsWithGlobals().insecureStorage&&(process.env.RESEND_CREDENTIAL_STORE="file")}).addHelpText("after",`
1019
- ${oo.default.gray("Examples:")}
978
+ `)}Wr();So();Kt();sa();var Jr="",$u=[],Gu=[],Ut=new d().name("resend").description("Resend CLI \u2014 email for developers").configureHelp({showGlobalOptions:!0,styleTitle:e=>to.default.gray(e)}).configureOutput({writeErr:e=>{process.stderr.write(e.replace(/^error:/,()=>to.default.red("error:")))}}).helpCommand(!0).version(`${Wn} v${ne}`,"-v, --version","Output the current version").option("--api-key <key>","Resend API key (overrides env/config)").option("-p, --profile <name>","Profile to use (overrides RESEND_PROFILE)").option("--json","Force JSON output").option("-q, --quiet","Suppress spinners and status output (implies --json)").option("--insecure-storage","Save API key as plaintext instead of secure storage").hook("preAction",(e,t)=>{let o=[];for(let r=t;r?.parent;r=r.parent)o.unshift(r.name());Jr=o.join(" ");let i=r=>r.options.filter(n=>r.getOptionValueSource(n.attributeName())==="cli").map(n=>n.long?.replace(/^--/,"")??n.short?.replace(/^-/,"")??"").filter(Boolean);$u=i(t),Gu=i(e),t.optsWithGlobals().quiet&&e.setOptionValue("json",!0),t.optsWithGlobals().insecureStorage&&(process.env.RESEND_CREDENTIAL_STORE="file")}).addHelpText("after",`
979
+ ${to.default.gray("Examples:")}
1020
980
 
1021
981
  - Login to Resend
1022
982
 
1023
- ${oo.default.blue("$ resend login")}
983
+ ${to.default.blue("$ resend login")}
1024
984
 
1025
985
  - Send an email
1026
986
 
1027
- ${oo.default.blue("$ resend emails send")}
1028
- `).action(()=>{process.stdout.isTTY&&gm();let e=vt.opts();e.apiKey&&h({message:"--api-key is a per-command override and was not saved. To store your API key, run `resend login`.",code:"missing_command"},{json:e.json}),vt.help()}).addCommand(ui).addCommand(md).addCommand(Kl).addCommand(za).addCommand(xd).addCommand(ju).addCommand(yc).addCommand(Xl).addCommand(bu).addCommand(Nu).addCommand(Pc).addCommand(nu).addCommand(Bl).addCommand(ku).addCommand(Zd).addCommand(_a).addCommand(cm).addCommand(du).addCommand(ja).addCommand(mi).addCommand(mm).addCommand(kc).addCommand(uu).addCommand(Cc).addCommand(Mu).addCommand(Hl).addCommand(ql),Km=new c("telemetry").description("Telemetry management").helpCommand(!1);Km.command("flush").argument("<file>").action(async e=>{let{flushFromFile:t}=await Promise.resolve().then(()=>(Xr(),vm));await t(e)});vt.addCommand(Km,{hidden:!0});pm(vt);vt.parseAsync().then(()=>{let e=vt.args[0];if(e==="update"||e==="telemetry")return;Zr&&Yr(Zr,{...vt.opts(),flags:Um,globalFlags:Sm});let t=vt.opts();Sc({json:!!(t.json||t.quiet)}).catch(()=>{})}).catch(e=>{h({message:W(e,"An unexpected error occurred"),code:"unexpected_error"})});
987
+ ${to.default.blue("$ resend emails send")}
988
+ `).action(()=>{process.stdout.isTTY&&Du();let e=Ut.opts();e.apiKey&&g({message:"--api-key is a per-command override and was not saved. To store your API key, run `resend login`.",code:"missing_command"},{json:e.json}),Ut.help()}).addCommand(ci).addCommand(rd).addCommand(bl).addCommand(Qa).addCommand(pd).addCommand(Yd).addCommand(uc).addCommand(Ml).addCommand(Ed).addCommand(iu).addCommand(_c).addCommand(yd).addCommand(nu).addCommand(kl).addCommand(Hd).addCommand(Ca).addCommand(vu).addCommand(vd).addCommand(Ra).addCommand(di).addCommand(ku).addCommand(yc).addCommand(Kd).addCommand(mc).addCommand(ru).addCommand(Bl).addCommand(jl),Hu=new d("telemetry").description("Telemetry management").helpCommand(!1);Hu.command("flush").argument("<file>").action(async e=>{let{flushFromFile:t}=await Promise.resolve().then(()=>(Wr(),Pu));await t(e)});Ut.addCommand(Hu,{hidden:!0});Fu(Ut);Ut.parseAsync().then(()=>{let e=Ut.args[0];if(e==="update"||e==="telemetry")return;Jr&&Lr(Jr,{...Ut.opts(),flags:$u,globalFlags:Gu});let t=Ut.opts();Ac({json:!!(t.json||t.quiet)}).catch(()=>{})}).catch(e=>{g({message:q(e,"An unexpected error occurred"),code:"unexpected_error"})});