resend-cli 2.15.0 → 2.17.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 hu=Object.create;var Ui=Object.defineProperty;var Au=Object.getOwnPropertyDescriptor;var bu=Object.getOwnPropertyNames;var Cu=Object.getPrototypeOf,yu=Object.prototype.hasOwnProperty;var ge=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(i){throw o=[i],i}};var ke=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},Wt=(e,t)=>{for(var o in t)Ui(e,o,{get:t[o],enumerable:!0})},Uu=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of bu(t))!yu.call(e,r)&&r!==o&&Ui(e,r,{get:()=>t[r],enumerable:!(i=Au(t,r))||i.enumerable});return e};var de=(e,t,o)=>(o=e!=null?hu(Cu(e)):{},Uu(t||!e||!e.__esModule?Ui(o,"default",{value:e,enumerable:!0}):o,e));var Jt=ke(Ki=>{var bo=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}},Si=class extends bo{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Ki.CommanderError=bo;Ki.InvalidArgumentError=Si});var Co=ke(wi=>{var{InvalidArgumentError:Su}=Jt(),vi=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 Su(`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 Ku(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}wi.Argument=vi;wi.humanReadableArgName=Ku});var ki=ke(Fi=>{var{humanReadableArgName:vu}=Co(),xi=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=>vu(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(d,f){return o.formatItem(d,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(d=>n(o.styleArgumentTerm(o.argumentTerm(d)),o.styleArgumentDescription(o.argumentDescription(d))));if(s=s.concat(this.formatItemList("Arguments:",l,o)),this.groupItems(t.options,o.visibleOptions(t),d=>d.helpGroupHeading??"Options:").forEach((d,f)=>{let b=d.map(h=>n(o.styleOptionTerm(o.optionTerm(h)),o.styleOptionDescription(o.optionDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),o.showGlobalOptions){let d=o.visibleGlobalOptions(t).map(f=>n(o.styleOptionTerm(o.optionTerm(f)),o.styleOptionDescription(o.optionDescription(f))));s=s.concat(this.formatItemList("Global Options:",d,o))}return this.groupItems(t.commands,o.visibleCommands(t),d=>d.helpGroup()||"Commands:").forEach((d,f)=>{let b=d.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 Nr(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,c=(this.helpWidth??80)-o-l-2,d;return c<this.minWidthToWrap||r.preformatted(i)?d=i:d=r.boxWrap(i,c).replace(/\n/g,`
4
- `+" ".repeat(o+l)),s+a+" ".repeat(l)+d.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(c=>{let d=this.displayWidth(c);if(u+d<=o){l.push(c),u+=d;return}n.push(l.join(""));let f=c.trimStart();l=[f],u=this.displayWidth(f)}),n.push(l.join(""))}),n.join(`
6
- `)}};function Nr(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}Fi.Help=xi;Fi.stripColor=Nr});var Ei=ke(Di=>{var{InvalidArgumentError:wu}=Jt(),Ri=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 wu(`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?qr(this.name().replace(/^no-/,"")):qr(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 qr(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}
2
+ "use strict";var Ku=Object.create;var Si=Object.defineProperty;var vu=Object.getOwnPropertyDescriptor;var xu=Object.getOwnPropertyNames;var Fu=Object.getPrototypeOf,ku=Object.prototype.hasOwnProperty;var ge=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(i){throw o=[i],i}};var ke=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},Jt=(e,t)=>{for(var o in t)Si(e,o,{get:t[o],enumerable:!0})},Ru=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of xu(t))!ku.call(e,r)&&r!==o&&Si(e,r,{get:()=>t[r],enumerable:!(i=vu(t,r))||i.enumerable});return e};var de=(e,t,o)=>(o=e!=null?Ku(Fu(e)):{},Ru(t||!e||!e.__esModule?Si(o,"default",{value:e,enumerable:!0}):o,e));var Vt=ke(Ki=>{var Co=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}},wi=class extends Co{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Ki.CommanderError=Co;Ki.InvalidArgumentError=wi});var yo=ke(xi=>{var{InvalidArgumentError:_u}=Vt(),vi=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 _u(`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 Du(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}xi.Argument=vi;xi.humanReadableArgName=Du});var Ri=ke(ki=>{var{humanReadableArgName:Eu}=yo(),Fi=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=>Eu(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(m,f){return o.formatItem(m,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(m=>n(o.styleArgumentTerm(o.argumentTerm(m)),o.styleArgumentDescription(o.argumentDescription(m))));if(s=s.concat(this.formatItemList("Arguments:",l,o)),this.groupItems(t.options,o.visibleOptions(t),m=>m.helpGroupHeading??"Options:").forEach((m,f)=>{let b=m.map(h=>n(o.styleOptionTerm(o.optionTerm(h)),o.styleOptionDescription(o.optionDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),o.showGlobalOptions){let m=o.visibleGlobalOptions(t).map(f=>n(o.styleOptionTerm(o.optionTerm(f)),o.styleOptionDescription(o.optionDescription(f))));s=s.concat(this.formatItemList("Global Options:",m,o))}return this.groupItems(t.commands,o.visibleCommands(t),m=>m.helpGroup()||"Commands:").forEach((m,f)=>{let b=m.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 qr(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,c=(this.helpWidth??80)-o-l-2,m;return c<this.minWidthToWrap||r.preformatted(i)?m=i:m=r.boxWrap(i,c).replace(/\n/g,`
4
+ `+" ".repeat(o+l)),s+a+" ".repeat(l)+m.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()],d=this.displayWidth(l[0]);a.forEach(c=>{let m=this.displayWidth(c);if(d+m<=o){l.push(c),d+=m;return}n.push(l.join(""));let f=c.trimStart();l=[f],d=this.displayWidth(f)}),n.push(l.join(""))}),n.join(`
6
+ `)}};function qr(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}ki.Help=Fi;ki.stripColor=qr});var Oi=ke(Ei=>{var{InvalidArgumentError:Ou}=Vt(),_i=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=Bu(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 Ou(`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?Mr(this.name().replace(/^no-/,"")):Mr(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}},Di=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 Mr(e){return e.split("-").reduce((t,o)=>t+o[0].toUpperCase()+o.slice(1))}function Bu(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}}Di.Option=Ri;Di.DualOptions=_i});var Lr=ke(Mr=>{function Fu(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 ku(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=Fu(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}}Ei.Option=_i;Ei.DualOptions=Di});var Wr=ke(Lr=>{function Tu(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 ju(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=Tu(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]}?)`:""}Mr.suggestSimilar=ku});var zr=ke(Ii=>{var Ru=require("node:events").EventEmitter,Bi=require("node:child_process"),Xe=require("node:path"),yo=require("node:fs"),W=require("node:process"),{Argument:_u,humanReadableArgName:Du}=Co(),{CommanderError:Oi}=Jt(),{Help:Eu,stripColor:Bu}=ki(),{Option:Wr,DualOptions:Ou}=Ei(),{suggestSimilar:Jr}=Lr(),Ti=class e extends Ru{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=>W.stdout.write(o),writeErr:o=>W.stderr.write(o),outputError:(o,i)=>i(o),getOutHelpWidth:()=>W.stdout.isTTY?W.stdout.columns:void 0,getErrHelpWidth:()=>W.stderr.isTTY?W.stderr.columns:void 0,getOutHasColors:()=>ji()??(W.stdout.isTTY&&W.stdout.hasColors?.()),getErrHasColors:()=>ji()??(W.stderr.isTTY&&W.stderr.hasColors?.()),stripColor:o=>Bu(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 Eu,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 _u(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 Oi(t,o,i)),W.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 Wr(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 Wr)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 c=a.exec(l);return c?c[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){W.versions?.electron&&(o.from="electron");let r=W.execArgv??[];(r.includes("-e")||r.includes("--eval")||r.includes("-p")||r.includes("--print"))&&(o.from="eval")}t===void 0&&(t=W.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":W.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(yo.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]}?)`:""}Lr.suggestSimilar=ju});var Yr=ke(Pi=>{var Iu=require("node:events").EventEmitter,Bi=require("node:child_process"),Ze=require("node:path"),Uo=require("node:fs"),J=require("node:process"),{Argument:Pu,humanReadableArgName:$u}=yo(),{CommanderError:Ti}=Vt(),{Help:Hu,stripColor:Gu}=Ri(),{Option:Jr,DualOptions:Qu}=Oi(),{suggestSimilar:Vr}=Wr(),ji=class e extends Iu{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:()=>Ii()??(J.stdout.isTTY&&J.stdout.hasColors?.()),getErrHasColors:()=>Ii()??(J.stderr.isTTY&&J.stderr.hasColors?.()),stripColor:o=>Gu(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 Hu,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 Pu(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 Ti(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 Jr(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 Jr)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,d)=>{let c=a.exec(l);return c?c[0]:d},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(Uo.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(c,d){let f=Xe.resolve(c,d);if(yo.existsSync(f))return f;if(r.includes(Xe.extname(d)))return;let b=r.find(h=>yo.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 c;try{c=yo.realpathSync(this._scriptPath)}catch{c=this._scriptPath}a=Xe.resolve(Xe.dirname(c),a)}if(a){let c=n(a,s);if(!c&&!t._executableFile&&this._scriptPath){let d=Xe.basename(this._scriptPath,Xe.extname(this._scriptPath));d!==this._name&&(c=n(a,`${d}-${t._name}`))}s=c||s}i=r.includes(Xe.extname(s));let l;W.platform!=="win32"?i?(o.unshift(s),o=Vr(W.execArgv).concat(o),l=Bi.spawn(W.argv[0],o,{stdio:"inherit"})):l=Bi.spawn(s,o,{stdio:"inherit"}):(this._checkForMissingExecutable(s,a,t._name),o.unshift(s),o=Vr(W.execArgv).concat(o),l=Bi.spawn(W.execPath,o,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{W.on(d,()=>{l.killed===!1&&l.exitCode===null&&l.kill(d)})});let u=this._exitCallback;l.on("close",c=>{c=c??1,u?u(new Oi(c,"commander.executeSubCommandAsync","(close)")):W.exit(c)}),l.on("error",c=>{if(c.code==="ENOENT")this._checkForMissingExecutable(s,a,t._name);else if(c.code==="EACCES")throw new Error(`'${s}' not executable`);if(!u)W.exit(1);else{let d=new Oi(1,"commander.executeSubCommandAsync","(error)");d.nestedError=c,u(d)}}),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(c){return c.length>1&&c[0]==="-"}let s=c=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(c)?!this._getCommandAndAncestors().some(d=>d.options.map(f=>f.short).some(f=>/^-\d$/.test(f))):!1,a=null,l=null,u=0;for(;u<t.length||l;){let c=l??t[u++];if(l=null,c==="--"){r===i&&r.push(c),r.push(...t.slice(u));break}if(a&&(!n(c)||s(c))){this.emit(`option:${a.name()}`,c);continue}if(a=null,n(c)){let d=this._findOption(c);if(d){if(d.required){let f=t[u++];f===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,f)}else if(d.optional){let f=null;u<t.length&&(!n(t[u])||s(t[u]))&&(f=t[u++]),this.emit(`option:${d.name()}`,f)}else this.emit(`option:${d.name()}`);a=d.variadic?d:null;continue}}if(c.length>2&&c[0]==="-"&&c[1]!=="-"){let d=this._findOption(`-${c[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,c.slice(2)):(this.emit(`option:${d.name()}`),l=`-${c.slice(2)}`);continue}}if(/^--[^=]+=/.test(c)){let d=c.indexOf("="),f=this._findOption(c.slice(0,d));if(f&&(f.required||f.optional)){this.emit(`option:${f.name()}`,c.slice(d+1));continue}}if(r===o&&n(c)&&!(this.commands.length===0&&s(c))&&(r=i),(this._enablePositionalOptions||this._passThroughOptions)&&o.length===0&&i.length===0){if(this._findCommand(c)){o.push(c),i.push(...t.slice(u));break}else if(this._getHelpCommand()&&c===this._getHelpCommand().name()){o.push(c,...t.slice(u));break}else if(this._defaultCommandName){i.push(c,...t.slice(u));break}}if(this._passThroughOptions){r.push(c,...t.slice(u));break}r.push(c)}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(c,m){let f=Ze.resolve(c,m);if(Uo.existsSync(f))return f;if(r.includes(Ze.extname(m)))return;let b=r.find(h=>Uo.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 c;try{c=Uo.realpathSync(this._scriptPath)}catch{c=this._scriptPath}a=Ze.resolve(Ze.dirname(c),a)}if(a){let c=n(a,s);if(!c&&!t._executableFile&&this._scriptPath){let m=Ze.basename(this._scriptPath,Ze.extname(this._scriptPath));m!==this._name&&(c=n(a,`${m}-${t._name}`))}s=c||s}i=r.includes(Ze.extname(s));let l;J.platform!=="win32"?i?(o.unshift(s),o=zr(J.execArgv).concat(o),l=Bi.spawn(J.argv[0],o,{stdio:"inherit"})):l=Bi.spawn(s,o,{stdio:"inherit"}):(this._checkForMissingExecutable(s,a,t._name),o.unshift(s),o=zr(J.execArgv).concat(o),l=Bi.spawn(J.execPath,o,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(m=>{J.on(m,()=>{l.killed===!1&&l.exitCode===null&&l.kill(m)})});let d=this._exitCallback;l.on("close",c=>{c=c??1,d?d(new Ti(c,"commander.executeSubCommandAsync","(close)")):J.exit(c)}),l.on("error",c=>{if(c.code==="ENOENT")this._checkForMissingExecutable(s,a,t._name);else if(c.code==="EACCES")throw new Error(`'${s}' not executable`);if(!d)J.exit(1);else{let m=new Ti(1,"commander.executeSubCommandAsync","(error)");m.nestedError=c,d(m)}}),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(c){return c.length>1&&c[0]==="-"}let s=c=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(c)?!this._getCommandAndAncestors().some(m=>m.options.map(f=>f.short).some(f=>/^-\d$/.test(f))):!1,a=null,l=null,d=0;for(;d<t.length||l;){let c=l??t[d++];if(l=null,c==="--"){r===i&&r.push(c),r.push(...t.slice(d));break}if(a&&(!n(c)||s(c))){this.emit(`option:${a.name()}`,c);continue}if(a=null,n(c)){let m=this._findOption(c);if(m){if(m.required){let f=t[d++];f===void 0&&this.optionMissingArgument(m),this.emit(`option:${m.name()}`,f)}else if(m.optional){let f=null;d<t.length&&(!n(t[d])||s(t[d]))&&(f=t[d++]),this.emit(`option:${m.name()}`,f)}else this.emit(`option:${m.name()}`);a=m.variadic?m:null;continue}}if(c.length>2&&c[0]==="-"&&c[1]!=="-"){let m=this._findOption(`-${c[1]}`);if(m){m.required||m.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${m.name()}`,c.slice(2)):(this.emit(`option:${m.name()}`),l=`-${c.slice(2)}`);continue}}if(/^--[^=]+=/.test(c)){let m=c.indexOf("="),f=this._findOption(c.slice(0,m));if(f&&(f.required||f.optional)){this.emit(`option:${f.name()}`,c.slice(m+1));continue}}if(r===o&&n(c)&&!(this.commands.length===0&&s(c))&&(r=i),(this._enablePositionalOptions||this._passThroughOptions)&&o.length===0&&i.length===0){if(this._findCommand(c)){o.push(c),i.push(...t.slice(d));break}else if(this._getHelpCommand()&&c===this._getHelpCommand().name()){o.push(c,...t.slice(d));break}else if(this._defaultCommandName){i.push(c,...t.slice(d));break}}if(this._passThroughOptions){r.push(c,...t.slice(d));break}r.push(c)}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 W.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()}`,W.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new Ou(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(d=>d.negate&&a===d.attributeName()),c=this.options.find(d=>!d.negate&&a===d.attributeName());return u&&(u.presetArg===void 0&&l===!1||u.presetArg!==void 0&&l===u.presetArg)?u:c||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=Jr(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=Jr(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=>Du(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=Xe.basename(t,Xe.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(W.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 Qu(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),d=this.options.find(m=>m.negate&&a===m.attributeName()),c=this.options.find(m=>!m.negate&&a===m.attributeName());return d&&(d.presetArg===void 0&&l===!1||d.presetArg!==void 0&&l===d.presetArg)?d:c||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=Vr(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=Vr(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=>$u(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=Ze.basename(t,Ze.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 Vr(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 ji(){if(W.env.NO_COLOR||W.env.FORCE_COLOR==="0"||W.env.FORCE_COLOR==="false")return!1;if(W.env.FORCE_COLOR||W.env.CLICOLOR_FORCE!==void 0)return!0}Ii.Command=Ti;Ii.useColor=ji});var en=ke(Ie=>{var{Argument:Yr}=Co(),{Command:Pi}=zr(),{CommanderError:Tu,InvalidArgumentError:Xr}=Jt(),{Help:ju}=ki(),{Option:Zr}=Ei();Ie.program=new Pi;Ie.createCommand=e=>new Pi(e);Ie.createOption=(e,t)=>new Zr(e,t);Ie.createArgument=(e,t)=>new Yr(e,t);Ie.Command=Pi;Ie.Option=Zr;Ie.Argument=Yr;Ie.Help=ju;Ie.CommanderError=Tu;Ie.InvalidArgumentError=Xr;Ie.InvalidOptionArgumentError=Xr});var on=ke((De,tn)=>{var Ne=en();De=tn.exports={};De.program=new Ne.Command;De.Argument=Ne.Argument;De.Command=Ne.Command;De.CommanderError=Ne.CommanderError;De.Help=Ne.Help;De.InvalidArgumentError=Ne.InvalidArgumentError;De.InvalidOptionArgumentError=Ne.InvalidArgumentError;De.Option=Ne.Option;De.createCommand=e=>new Ne.Command(e);De.createOption=(e,t)=>new Ne.Option(e,t);De.createArgument=(e,t)=>new Ne.Argument(e,t)});var We=ke((Eg,$i)=>{var So=process||{},sn=So.argv||[],Uo=So.env||{},Iu=!(Uo.NO_COLOR||sn.includes("--no-color"))&&(!!Uo.FORCE_COLOR||sn.includes("--color")||So.platform==="win32"||(So.stdout||{}).isTTY&&Uo.TERM!=="dumb"||!!Uo.CI),Pu=(e,t,o=e)=>i=>{let r=""+i,n=r.indexOf(t,e.length);return~n?e+$u(r,t,o,n)+t:e+r+t},$u=(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)},an=(e=Iu)=>{let t=e?Pu:()=>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")}};$i.exports=an();$i.exports.createColors=an});var qi=ke((Gg,Sn)=>{"use strict";var Ni={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"},op={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},ip={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?Ni.up():"");return e&&(t+=Ni.left),t}};Sn.exports={cursor:Ni,scroll:op,erase:ip,beep:"\x07"}});var zi,In=ge(()=>{zi={name:"resend-cli",version:"2.15.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.21.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 re,Pn,Ct=ge(()=>{"use strict";In();re=zi.version,Pn=zi.name});var Vn=ke(jo=>{"use strict";Object.defineProperty(jo,"__esModule",{value:!0});jo.timingSafeEqual=void 0;function Jn(e,t=""){if(!e)throw new Error(t)}function Hp(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)),Jn(e instanceof DataView),Jn(t instanceof DataView);let o=e.byteLength,i=0,r=-1;for(;++r<o;)i|=e.getUint8(r)^t.getUint8(r);return i===0}jo.timingSafeEqual=Hp});var Xn=ke(Oe=>{"use strict";var Gp=Oe&&Oe.__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(Oe,"__esModule",{value:!0});var le=256,nr=(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,c=0,d=0;s<i-4;s+=4)l=this._decodeChar(t.charCodeAt(s+0)),u=this._decodeChar(t.charCodeAt(s+1)),c=this._decodeChar(t.charCodeAt(s+2)),d=this._decodeChar(t.charCodeAt(s+3)),r[n++]=l<<2|u>>>4,r[n++]=u<<4|c>>>2,r[n++]=c<<6|d,a|=l&le,a|=u&le,a|=c&le,a|=d&le;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&le,a|=u&le),s<i-2&&(c=this._decodeChar(t.charCodeAt(s+2)),r[n++]=u<<4|c>>>2,a|=c&le),s<i-3&&(d=this._decodeChar(t.charCodeAt(s+3)),r[n++]=c<<6|d,a|=d&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})();Oe.Coder=nr;var ro=new nr;function Qp(e){return ro.encode(e)}Oe.encode=Qp;function Np(e){return ro.decode(e)}Oe.decode=Np;var zn=(function(e){Gp(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})(nr);Oe.URLSafeCoder=zn;var Yn=new zn;function qp(e){return Yn.encode(e)}Oe.encodeURLSafe=qp;function Mp(e){return Yn.decode(e)}Oe.decodeURLSafe=Mp;Oe.encodedLength=function(e){return ro.encodedLength(e)};Oe.maxDecodedLength=function(e){return ro.maxDecodedLength(e)};Oe.decodedLength=function(e){return ro.decodedLength(e)}});var es=ke((Zn,Io)=>{(function(e,t){var o={};t(o);var i=o.default;for(var r in o)i[r]=o[r];typeof Io=="object"&&typeof Io.exports=="object"?Io.exports=i:typeof define=="function"&&define.amd?define(function(){return i}):e.sha256=i})(Zn,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(d,f,b,h,A){for(var U,K,x,w,v,R,E,T,_,$,ye,ie,At;A>=64;){for(U=f[0],K=f[1],x=f[2],w=f[3],v=f[4],R=f[5],E=f[6],T=f[7],$=0;$<16;$++)ye=h+$*4,d[$]=(b[ye]&255)<<24|(b[ye+1]&255)<<16|(b[ye+2]&255)<<8|b[ye+3]&255;for($=16;$<64;$++)_=d[$-2],ie=(_>>>17|_<<15)^(_>>>19|_<<13)^_>>>10,_=d[$-15],At=(_>>>7|_<<25)^(_>>>18|_<<14)^_>>>3,d[$]=(ie+d[$-7]|0)+(At+d[$-16]|0);for($=0;$<64;$++)ie=(((v>>>6|v<<26)^(v>>>11|v<<21)^(v>>>25|v<<7))+(v&R^~v&E)|0)+(T+(t[$]+d[$]|0)|0)|0,At=((U>>>2|U<<30)^(U>>>13|U<<19)^(U>>>22|U<<10))+(U&K^U&x^K&x)|0,T=E,E=R,R=v,v=w+ie|0,w=x,x=K,K=U,U=ie+At|0;f[0]+=U,f[1]+=K,f[2]+=x,f[3]+=w,f[4]+=v,f[5]+=R,f[6]+=E,f[7]+=T,h+=64,A-=64}return h}var i=(function(){function d(){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 d.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},d.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()},d.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},d.prototype.finish=function(f){if(!this.finished){var b=this.bytesHashed,h=this.bufferLength,A=b/536870912|0,U=b<<3,K=b%64<56?64:128;this.buffer[h]=128;for(var x=h+1;x<K-8;x++)this.buffer[x]=0;this.buffer[K-8]=A>>>24&255,this.buffer[K-7]=A>>>16&255,this.buffer[K-6]=A>>>8&255,this.buffer[K-5]=A>>>0&255,this.buffer[K-4]=U>>>24&255,this.buffer[K-3]=U>>>16&255,this.buffer[K-2]=U>>>8&255,this.buffer[K-1]=U>>>0&255,o(this.temp,this.state,this.buffer,0,K),this.finished=!0}for(var x=0;x<8;x++)f[x*4+0]=this.state[x]>>>24&255,f[x*4+1]=this.state[x]>>>16&255,f[x*4+2]=this.state[x]>>>8&255,f[x*4+3]=this.state[x]>>>0&255;return this},d.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},d.prototype._saveState=function(f){for(var b=0;b<this.state.length;b++)f[b]=this.state[b]},d.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},d})();e.Hash=i;var r=(function(){function d(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 d.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},d.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()},d.prototype.update=function(f){return this.inner.update(f),this},d.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},d.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},d})();e.HMAC=r;function n(d){var f=new i().update(d),b=f.digest();return f.clean(),b}e.hash=n,e.default=n;function s(d,f){var b=new r(d).update(f),h=b.digest();return b.clean(),h}e.hmac=s;function a(d,f,b,h){var A=h[0];if(A===0)throw new Error("hkdf: cannot expand more");f.reset(),A>1&&f.update(d),b&&f.update(b),f.update(h),f.finish(d),h[0]++}var l=new Uint8Array(e.digestLength);function u(d,f,b,h){f===void 0&&(f=l),h===void 0&&(h=32);for(var A=new Uint8Array([1]),U=s(f,d),K=new r(U),x=new Uint8Array(K.digestLength),w=x.length,v=new Uint8Array(h),R=0;R<h;R++)w===x.length&&(a(x,K,b,A),w=0),v[R]=x[w++];return K.clean(),x.fill(0),A.fill(0),v}e.hkdf=u;function c(d,f,b,h){for(var A=new r(d),U=A.digestLength,K=new Uint8Array(4),x=new Uint8Array(U),w=new Uint8Array(U),v=new Uint8Array(h),R=0;R*U<h;R++){var E=R+1;K[0]=E>>>24&255,K[1]=E>>>16&255,K[2]=E>>>8&255,K[3]=E>>>0&255,A.reset(),A.update(f),A.update(K),A.finish(w);for(var T=0;T<U;T++)x[T]=w[T];for(var T=2;T<=b;T++){A.reset(),A.update(w).finish(w);for(var _=0;_<U;_++)x[_]^=w[_]}for(var T=0;T<U&&R*U+T<h;T++)v[R*U+T]=x[T]}for(var R=0;R<U;R++)x[R]=w[R]=0;for(var R=0;R<4;R++)K[R]=0;return A.clean(),v}e.pbkdf2=c})});var is=ke(kt=>{"use strict";Object.defineProperty(kt,"__esModule",{value:!0});kt.Webhook=kt.WebhookVerificationError=void 0;var Lp=Vn(),ts=Xn(),Wp=es(),os=300,sr=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="ExtendableError",this.stack=new Error(t).stack}},lt=class e extends sr{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="WebhookVerificationError"}};kt.WebhookVerificationError=lt;var Po=class e{constructor(t,o){if(!t)throw new Error("Secret can't be empty.");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=ts.decode(t)}}verify(t,o){let i={};for(let f of Object.keys(o))i[f.toLowerCase()]=o[f];let r=i["webhook-id"],n=i["webhook-signature"],s=i["webhook-timestamp"];if(!n||!r||!s)throw new lt("Missing required headers");let a=this.verifyTimestamp(s),u=this.sign(r,a,t).split(",")[1],c=n.split(" "),d=new globalThis.TextEncoder;for(let f of c){let[b,h]=f.split(",");if(b==="v1"&&(0,Lp.timingSafeEqual)(d.encode(h),d.encode(u)))return JSON.parse(t.toString())}throw new lt("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,${ts.encode(Wp.hmac(this.key,s))}`}verifyTimestamp(t){let o=Math.floor(Date.now()/1e3),i=parseInt(t,10);if(isNaN(i))throw new lt("Invalid Signature Headers");if(o-i>os)throw new lt("Message timestamp too old");if(i>o+os)throw new lt("Message timestamp too new");return new Date(i*1e3)}};kt.Webhook=Po;Po.prefix="whsec_"});var $o,gs=ge(()=>{"use strict";$o=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 zr(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 Ii(){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}Pi.Command=ji;Pi.useColor=Ii});var tn=ke(Pe=>{var{Argument:Xr}=yo(),{Command:$i}=Yr(),{CommanderError:Nu,InvalidArgumentError:Zr}=Vt(),{Help:qu}=Ri(),{Option:en}=Oi();Pe.program=new $i;Pe.createCommand=e=>new $i(e);Pe.createOption=(e,t)=>new en(e,t);Pe.createArgument=(e,t)=>new Xr(e,t);Pe.Command=$i;Pe.Option=en;Pe.Argument=Xr;Pe.Help=qu;Pe.CommanderError=Nu;Pe.InvalidArgumentError=Zr;Pe.InvalidOptionArgumentError=Zr});var rn=ke((Ee,on)=>{var Ne=tn();Ee=on.exports={};Ee.program=new Ne.Command;Ee.Argument=Ne.Argument;Ee.Command=Ne.Command;Ee.CommanderError=Ne.CommanderError;Ee.Help=Ne.Help;Ee.InvalidArgumentError=Ne.InvalidArgumentError;Ee.InvalidOptionArgumentError=Ne.InvalidArgumentError;Ee.Option=Ne.Option;Ee.createCommand=e=>new Ne.Command(e);Ee.createOption=(e,t)=>new Ne.Option(e,t);Ee.createArgument=(e,t)=>new Ne.Argument(e,t)});var We=ke((qg,Hi)=>{var wo=process||{},an=wo.argv||[],So=wo.env||{},Mu=!(So.NO_COLOR||an.includes("--no-color"))&&(!!So.FORCE_COLOR||an.includes("--color")||wo.platform==="win32"||(wo.stdout||{}).isTTY&&So.TERM!=="dumb"||!!So.CI),Lu=(e,t,o=e)=>i=>{let r=""+i,n=r.indexOf(t,e.length);return~n?e+Wu(r,t,o,n)+t:e+r+t},Wu=(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)},ln=(e=Mu)=>{let t=e?Lu:()=>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")}};Hi.exports=ln();Hi.exports.createColors=ln});var Mi=ke((Zg,wn)=>{"use strict";var qi={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"},dm={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},um={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?qi.up():"");return e&&(t+=qi.left),t}};wn.exports={cursor:qi,scroll:dm,erase:um,beep:"\x07"}});var Yi,Pn=ge(()=>{Yi={name:"resend-cli",version:"2.17.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.23.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 re,$n,Ut=ge(()=>{"use strict";Pn();re=Yi.version,$n=Yi.name});var zn=ke(Io=>{"use strict";Object.defineProperty(Io,"__esModule",{value:!0});Io.timingSafeEqual=void 0;function Vn(e,t=""){if(!e)throw new Error(t)}function Jm(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)),Vn(e instanceof DataView),Vn(t instanceof DataView);let o=e.byteLength,i=0,r=-1;for(;++r<o;)i|=e.getUint8(r)^t.getUint8(r);return i===0}Io.timingSafeEqual=Jm});var Zn=ke(Te=>{"use strict";var Vm=Te&&Te.__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(Te,"__esModule",{value:!0});var le=256,sr=(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,d=0,c=0,m=0;s<i-4;s+=4)l=this._decodeChar(t.charCodeAt(s+0)),d=this._decodeChar(t.charCodeAt(s+1)),c=this._decodeChar(t.charCodeAt(s+2)),m=this._decodeChar(t.charCodeAt(s+3)),r[n++]=l<<2|d>>>4,r[n++]=d<<4|c>>>2,r[n++]=c<<6|m,a|=l&le,a|=d&le,a|=c&le,a|=m&le;if(s<i-1&&(l=this._decodeChar(t.charCodeAt(s)),d=this._decodeChar(t.charCodeAt(s+1)),r[n++]=l<<2|d>>>4,a|=l&le,a|=d&le),s<i-2&&(c=this._decodeChar(t.charCodeAt(s+2)),r[n++]=d<<4|c>>>2,a|=c&le),s<i-3&&(m=this._decodeChar(t.charCodeAt(s+3)),r[n++]=c<<6|m,a|=m&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})();Te.Coder=sr;var no=new sr;function zm(e){return no.encode(e)}Te.encode=zm;function Ym(e){return no.decode(e)}Te.decode=Ym;var Yn=(function(e){Vm(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})(sr);Te.URLSafeCoder=Yn;var Xn=new Yn;function Xm(e){return Xn.encode(e)}Te.encodeURLSafe=Xm;function Zm(e){return Xn.decode(e)}Te.decodeURLSafe=Zm;Te.encodedLength=function(e){return no.encodedLength(e)};Te.maxDecodedLength=function(e){return no.maxDecodedLength(e)};Te.decodedLength=function(e){return no.decodedLength(e)}});var ts=ke((es,Po)=>{(function(e,t){var o={};t(o);var i=o.default;for(var r in o)i[r]=o[r];typeof Po=="object"&&typeof Po.exports=="object"?Po.exports=i:typeof define=="function"&&define.amd?define(function(){return i}):e.sha256=i})(es,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(m,f,b,h,A){for(var U,w,x,v,K,_,O,$,D,Q,ye,ie,Ct;A>=64;){for(U=f[0],w=f[1],x=f[2],v=f[3],K=f[4],_=f[5],O=f[6],$=f[7],Q=0;Q<16;Q++)ye=h+Q*4,m[Q]=(b[ye]&255)<<24|(b[ye+1]&255)<<16|(b[ye+2]&255)<<8|b[ye+3]&255;for(Q=16;Q<64;Q++)D=m[Q-2],ie=(D>>>17|D<<15)^(D>>>19|D<<13)^D>>>10,D=m[Q-15],Ct=(D>>>7|D<<25)^(D>>>18|D<<14)^D>>>3,m[Q]=(ie+m[Q-7]|0)+(Ct+m[Q-16]|0);for(Q=0;Q<64;Q++)ie=(((K>>>6|K<<26)^(K>>>11|K<<21)^(K>>>25|K<<7))+(K&_^~K&O)|0)+($+(t[Q]+m[Q]|0)|0)|0,Ct=((U>>>2|U<<30)^(U>>>13|U<<19)^(U>>>22|U<<10))+(U&w^U&x^w&x)|0,$=O,O=_,_=K,K=v+ie|0,v=x,x=w,w=U,U=ie+Ct|0;f[0]+=U,f[1]+=w,f[2]+=x,f[3]+=v,f[4]+=K,f[5]+=_,f[6]+=O,f[7]+=$,h+=64,A-=64}return h}var i=(function(){function m(){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 m.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},m.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()},m.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},m.prototype.finish=function(f){if(!this.finished){var b=this.bytesHashed,h=this.bufferLength,A=b/536870912|0,U=b<<3,w=b%64<56?64:128;this.buffer[h]=128;for(var x=h+1;x<w-8;x++)this.buffer[x]=0;this.buffer[w-8]=A>>>24&255,this.buffer[w-7]=A>>>16&255,this.buffer[w-6]=A>>>8&255,this.buffer[w-5]=A>>>0&255,this.buffer[w-4]=U>>>24&255,this.buffer[w-3]=U>>>16&255,this.buffer[w-2]=U>>>8&255,this.buffer[w-1]=U>>>0&255,o(this.temp,this.state,this.buffer,0,w),this.finished=!0}for(var x=0;x<8;x++)f[x*4+0]=this.state[x]>>>24&255,f[x*4+1]=this.state[x]>>>16&255,f[x*4+2]=this.state[x]>>>8&255,f[x*4+3]=this.state[x]>>>0&255;return this},m.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},m.prototype._saveState=function(f){for(var b=0;b<this.state.length;b++)f[b]=this.state[b]},m.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},m})();e.Hash=i;var r=(function(){function m(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 m.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},m.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()},m.prototype.update=function(f){return this.inner.update(f),this},m.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},m.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},m})();e.HMAC=r;function n(m){var f=new i().update(m),b=f.digest();return f.clean(),b}e.hash=n,e.default=n;function s(m,f){var b=new r(m).update(f),h=b.digest();return b.clean(),h}e.hmac=s;function a(m,f,b,h){var A=h[0];if(A===0)throw new Error("hkdf: cannot expand more");f.reset(),A>1&&f.update(m),b&&f.update(b),f.update(h),f.finish(m),h[0]++}var l=new Uint8Array(e.digestLength);function d(m,f,b,h){f===void 0&&(f=l),h===void 0&&(h=32);for(var A=new Uint8Array([1]),U=s(f,m),w=new r(U),x=new Uint8Array(w.digestLength),v=x.length,K=new Uint8Array(h),_=0;_<h;_++)v===x.length&&(a(x,w,b,A),v=0),K[_]=x[v++];return w.clean(),x.fill(0),A.fill(0),K}e.hkdf=d;function c(m,f,b,h){for(var A=new r(m),U=A.digestLength,w=new Uint8Array(4),x=new Uint8Array(U),v=new Uint8Array(U),K=new Uint8Array(h),_=0;_*U<h;_++){var O=_+1;w[0]=O>>>24&255,w[1]=O>>>16&255,w[2]=O>>>8&255,w[3]=O>>>0&255,A.reset(),A.update(f),A.update(w),A.finish(v);for(var $=0;$<U;$++)x[$]=v[$];for(var $=2;$<=b;$++){A.reset(),A.update(v).finish(v);for(var D=0;D<U;D++)x[D]^=v[D]}for(var $=0;$<U&&_*U+$<h;$++)K[_*U+$]=x[$]}for(var _=0;_<U;_++)x[_]=v[_]=0;for(var _=0;_<4;_++)w[_]=0;return A.clean(),K}e.pbkdf2=c})});var rs=ke(_t=>{"use strict";Object.defineProperty(_t,"__esModule",{value:!0});_t.Webhook=_t.WebhookVerificationError=void 0;var ep=zn(),os=Zn(),tp=ts(),is=300,ar=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="ExtendableError",this.stack=new Error(t).stack}},ct=class e extends ar{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="WebhookVerificationError"}};_t.WebhookVerificationError=ct;var $o=class e{constructor(t,o){if(!t)throw new Error("Secret can't be empty.");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=os.decode(t)}}verify(t,o){let i={};for(let f of Object.keys(o))i[f.toLowerCase()]=o[f];let r=i["webhook-id"],n=i["webhook-signature"],s=i["webhook-timestamp"];if(!n||!r||!s)throw new ct("Missing required headers");let a=this.verifyTimestamp(s),d=this.sign(r,a,t).split(",")[1],c=n.split(" "),m=new globalThis.TextEncoder;for(let f of c){let[b,h]=f.split(",");if(b==="v1"&&(0,ep.timingSafeEqual)(m.encode(h),m.encode(d)))return JSON.parse(t.toString())}throw new ct("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,${os.encode(tp.hmac(this.key,s))}`}verifyTimestamp(t){let o=Math.floor(Date.now()/1e3),i=parseInt(t,10);if(isNaN(i))throw new ct("Invalid Signature Headers");if(o-i>is)throw new ct("Message timestamp too old");if(i>o+is)throw new ct("Message timestamp too new");return new Date(i*1e3)}};_t.Webhook=$o;$o.prefix="whsec_"});var Ho,hs=ge(()=>{"use strict";Ho=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 lr={};Wt(lr,{FileBackend:()=>ar});var ar,cr=ge(()=>{"use strict";Ae();ar=class{name="plaintext file";isSecure=!1;async get(t,o){let i=Ke();if(!i)return null;let r=i.profiles[o];return(r?.type==="api_key"?r.api_key:null)??null}async set(t,o,i){dr(i,o)}async delete(t,o){try{return hs(o),!0}catch{return!1}}async isAvailable(){return!0}}});var bs={};Wt(bs,{MacOSBackend:()=>pr});function ur(e,t){return new Promise(o=>{(0,As.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 As,pr,Cs=ge(()=>{"use strict";As=require("node:child_process");pr=class{name="macOS Keychain";isSecure=!0;async get(t,o){let{stdout:i,stderr:r,code:n}=await ur("/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 ur("/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 ur("/usr/bin/security",["delete-generic-password","-s",t,"-a",o]);return i===0}async isAvailable(){return process.platform==="darwin"}}});var ys={};Wt(ys,{LinuxBackend:()=>mr});function Ho(e,t,o){return new Promise(i=>{(0,Go.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 Rm(e,t,o){return new Promise(i=>{let r=(0,Go.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 Go,mr,Us=ge(()=>{"use strict";Go=require("node:child_process");mr=class{name="Secret Service (libsecret)";isSecure=!0;async get(t,o){let{stdout:i,code:r}=await Ho("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 Rm("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 Ho("secret-tool",["clear","service",t,"account",o]);return i===0}async isAvailable(){if(process.platform!=="linux"||(await Ho("which",["secret-tool"])).code!==0)return!1;let o=await Ho("secret-tool",["lookup","service","__resend_cli_probe__"],{timeout:3e3});return o.code===0||o.code===1}}});var Ss={};Wt(Ss,{WindowsBackend:()=>fr});function Qo(e){return new Promise(t=>{(0,No.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 _m(e,t){return new Promise(o=>{let i=(0,No.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 ct(e){return e.replace(/'/g,"''")}var No,ao,fr,Ks=ge(()=>{"use strict";No=require("node:child_process");ao=`
29
+ To fix: either repair the JSON manually, or delete the file and run: resend login`),this.name="CorruptedCredentialsError"}}});var cr={};Jt(cr,{FileBackend:()=>lr});var lr,dr=ge(()=>{"use strict";Ae();lr=class{name="plaintext file";isSecure=!1;async get(t,o){let i=we();if(!i)return null;let r=i.profiles[o];return(r?.type==="api_key"?r.api_key:null)??null}async set(t,o,i){ur(i,o)}async delete(t,o){try{return As(o),!0}catch{return!1}}async isAvailable(){return!0}}});var Cs={};Jt(Cs,{MacOSBackend:()=>pr});function mr(e,t){return new Promise(o=>{(0,bs.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 bs,pr,ys=ge(()=>{"use strict";bs=require("node:child_process");pr=class{name="macOS Keychain";isSecure=!0;async get(t,o){let{stdout:i,stderr:r,code:n}=await mr("/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 mr("/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 mr("/usr/bin/security",["delete-generic-password","-s",t,"-a",o]);return i===0}async isAvailable(){return process.platform==="darwin"}}});var Us={};Jt(Us,{LinuxBackend:()=>fr});function Go(e,t,o){return new Promise(i=>{(0,Qo.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 $p(e,t,o){return new Promise(i=>{let r=(0,Qo.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 Qo,fr,Ss=ge(()=>{"use strict";Qo=require("node:child_process");fr=class{name="Secret Service (libsecret)";isSecure=!0;async get(t,o){let{stdout:i,code:r}=await Go("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 $p("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 Go("secret-tool",["clear","service",t,"account",o]);return i===0}async isAvailable(){if(process.platform!=="linux"||(await Go("which",["secret-tool"])).code!==0)return!1;let o=await Go("secret-tool",["lookup","service","__resend_cli_probe__"],{timeout:3e3});return o.code===0||o.code===1}}});var ws={};Jt(ws,{WindowsBackend:()=>gr});function No(e){return new Promise(t=>{(0,qo.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 Hp(e,t){return new Promise(o=>{let i=(0,qo.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 dt(e){return e.replace(/'/g,"''")}var qo,ao,gr,Ks=ge(()=>{"use strict";qo=require("node:child_process");ao=`
30
30
  try { $null = [Windows.Security.Credentials.PasswordVault] } catch {
31
31
  [void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]
32
32
  }
33
- `,fr=class{name="Windows Credential Manager";isSecure=!0;async get(t,o){let i=`${ao}
33
+ `,gr=class{name="Windows Credential Manager";isSecure=!0;async get(t,o){let i=`${ao}
34
34
  $v = New-Object Windows.Security.Credentials.PasswordVault
35
35
  try {
36
- $c = $v.Retrieve('${ct(t)}', '${ct(o)}')
36
+ $c = $v.Retrieve('${dt(t)}', '${dt(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 Qo(i);return n!==0||!r.trim()?null:r.trim()}async set(t,o,i){let r=`${ao}
42
+ `,{stdout:r,code:n}=await No(i);return n!==0||!r.trim()?null:r.trim()}async set(t,o,i){let r=`${ao}
43
43
  $v = New-Object Windows.Security.Credentials.PasswordVault
44
44
  try {
45
- $c = $v.Retrieve('${ct(t)}', '${ct(o)}')
45
+ $c = $v.Retrieve('${dt(t)}', '${dt(o)}')
46
46
  $v.Remove($c)
47
47
  } catch {}
48
- `;await Qo(r);let n=`${ao}
48
+ `;await No(r);let n=`${ao}
49
49
  $secret = [Console]::In.ReadLine()
50
50
  $v = New-Object Windows.Security.Credentials.PasswordVault
51
- $c = New-Object Windows.Security.Credentials.PasswordCredential('${ct(t)}', '${ct(o)}', $secret)
51
+ $c = New-Object Windows.Security.Credentials.PasswordCredential('${dt(t)}', '${dt(o)}', $secret)
52
52
  $v.Add($c)
53
- `,{code:s,stderr:a}=await _m(n,i);if(s!==0)throw new Error(`Failed to store credential in Windows Credential Manager: ${a.trim()}`)}async delete(t,o){let i=`${ao}
53
+ `,{code:s,stderr:a}=await Hp(n,i);if(s!==0)throw new Error(`Failed to store credential in Windows Credential Manager: ${a.trim()}`)}async delete(t,o){let i=`${ao}
54
54
  $v = New-Object Windows.Security.Credentials.PasswordVault
55
55
  try {
56
- $c = $v.Retrieve('${ct(t)}', '${ct(o)}')
56
+ $c = $v.Retrieve('${dt(t)}', '${dt(o)}')
57
57
  $v.Remove($c)
58
58
  } catch {
59
59
  exit 1
60
60
  }
61
- `,{code:r}=await Qo(i);return r===0}async isAvailable(){if(process.platform!=="win32")return!1;let{code:t}=await Qo(`${ao} $null = New-Object Windows.Security.Credentials.PasswordVault`);return t===0}}});async function Ze(){if(ze)return ze;let e=process.env.RESEND_CREDENTIAL_STORE;if(e==="file"){let{FileBackend:o}=await Promise.resolve().then(()=>(cr(),lr));return ze=new o,ze}if(e==="secure_storage"){let o=await vs();if(o)return ze=o,ze}if(!e){let o=await vs();if(o)return ze=o,ze}let{FileBackend:t}=await Promise.resolve().then(()=>(cr(),lr));return ze=new t,ze}async function vs(){if(process.platform==="darwin"){let{MacOSBackend:e}=await Promise.resolve().then(()=>(Cs(),bs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="linux"){let{LinuxBackend:e}=await Promise.resolve().then(()=>(Us(),ys)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="win32"){let{WindowsBackend:e}=await Promise.resolve().then(()=>(Ks(),Ss)),t=new e;if(await t.isAvailable())return t}return null}var qe,ze,gr=ge(()=>{"use strict";qe="resend-cli",ze=null});function et(e,t){(0,ve.mkdirSync)((0,Fs.dirname)(e),{recursive:!0});let o=Bm(e);try{let i=t();return i instanceof Promise?i.finally(()=>hr(e,o)):(hr(e,o),i)}catch(i){throw hr(e,o),i}}var xs,ve,Fs,Dm,Em,ws,Bm,hr,Om,Tm,ks=ge(()=>{"use strict";xs=require("node:crypto"),ve=require("node:fs"),Fs=require("node:path"),Dm=1e4,Em=50,ws=200;Bm=e=>{let t=(0,xs.randomUUID)();for(let o=0;o<ws;o++)try{let i=(0,ve.openSync)(e,"wx");try{(0,ve.writeSync)(i,t)}finally{(0,ve.closeSync)(i)}return t}catch(i){if(i.code!=="EEXIST")throw i;if(Om(e)){try{(0,ve.unlinkSync)(e)}catch{}continue}Tm(Em)}throw new Error(`Could not acquire lock on ${e} after ${ws} retries. If no other resend process is running, delete the lock file manually.`)},hr=(e,t)=>{try{if((0,ve.readFileSync)(e,"utf-8")!==t)return;(0,ve.unlinkSync)(e)}catch{}},Om=e=>{try{let t=(0,ve.statSync)(e);return Date.now()-t.mtimeMs>Dm}catch{return!0}},Tm=e=>{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}});var Rs,_s=ge(()=>{"use strict";Rs="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 Cr(e){let t=e.split(".");if(t.length!==3)throw new Error(Ar);let o;try{o=JSON.parse(Buffer.from(t[1],"base64url").toString())}catch{throw new Error(Ar)}if(typeof o!="object"||o===null||typeof o.exp!="number")throw new Error(Ar);return o.exp}function Bs(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 Os(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(jm)})}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=yr,n}}async function Ts(e,t){let o=Math.floor(Date.now()/1e3);if(e.access_token_expires_at>o+Im)return{access_token:e.access_token,scope:e.scope};let i=process.env.RESEND_BASE_URL??"https://api.resend.com",r=await Os(`${i}/oauth/token`,new URLSearchParams({grant_type:"refresh_token",client_id:qo,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=Bs(await r.json());return await Lo({access_token:n.access_token,access_token_expires_at:Cr(n.access_token),refresh_token:n.refresh_token,scope:n.scope},t),{access_token:n.access_token,scope:n.scope}}function br(e){return e.toString("base64url")}function Ds(e){let{heading:t,message:o}=e;return`<!doctype html>
61
+ `,{code:r}=await No(i);return r===0}async isAvailable(){if(process.platform!=="win32")return!1;let{code:t}=await No(`${ao} $null = New-Object Windows.Security.Credentials.PasswordVault`);return t===0}}});async function et(){if(ze)return ze;let e=process.env.RESEND_CREDENTIAL_STORE;if(e==="file"){let{FileBackend:o}=await Promise.resolve().then(()=>(dr(),cr));return ze=new o,ze}if(e==="secure_storage"){let o=await vs();if(o)return ze=o,ze}if(!e){let o=await vs();if(o)return ze=o,ze}let{FileBackend:t}=await Promise.resolve().then(()=>(dr(),cr));return ze=new t,ze}async function vs(){if(process.platform==="darwin"){let{MacOSBackend:e}=await Promise.resolve().then(()=>(ys(),Cs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="linux"){let{LinuxBackend:e}=await Promise.resolve().then(()=>(Ss(),Us)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="win32"){let{WindowsBackend:e}=await Promise.resolve().then(()=>(Ks(),ws)),t=new e;if(await t.isAvailable())return t}return null}var qe,ze,hr=ge(()=>{"use strict";qe="resend-cli",ze=null});function tt(e,t){(0,Ke.mkdirSync)((0,ks.dirname)(e),{recursive:!0});let o=Np(e);try{let i=t();return i instanceof Promise?i.finally(()=>Ar(e,o)):(Ar(e,o),i)}catch(i){throw Ar(e,o),i}}var Fs,Ke,ks,Gp,Qp,xs,Np,Ar,qp,Mp,Rs=ge(()=>{"use strict";Fs=require("node:crypto"),Ke=require("node:fs"),ks=require("node:path"),Gp=1e4,Qp=50,xs=200;Np=e=>{let t=(0,Fs.randomUUID)();for(let o=0;o<xs;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(qp(e)){try{(0,Ke.unlinkSync)(e)}catch{}continue}Mp(Qp)}throw new Error(`Could not acquire lock on ${e} after ${xs} retries. If no other resend process is running, delete the lock file manually.`)},Ar=(e,t)=>{try{if((0,Ke.readFileSync)(e,"utf-8")!==t)return;(0,Ke.unlinkSync)(e)}catch{}},qp=e=>{try{let t=(0,Ke.statSync)(e);return Date.now()-t.mtimeMs>Gp}catch{return!0}},Mp=e=>{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}});var _s,Ds=ge(()=>{"use strict";_s="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 yr(e){let t=e.split(".");if(t.length!==3)throw new Error(br);let o;try{o=JSON.parse(Buffer.from(t[1],"base64url").toString())}catch{throw new Error(br)}if(typeof o!="object"||o===null||typeof o.exp!="number")throw new Error(br);return o.exp}function Bs(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 Ts(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(Lp)})}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=Ur,n}}async function js(e,t){let o=Math.floor(Date.now()/1e3);if(e.access_token_expires_at>o+Wp)return{access_token:e.access_token,scope:e.scope};let i=process.env.RESEND_BASE_URL??"https://api.resend.com",r=await Ts(`${i}/oauth/token`,new URLSearchParams({grant_type:"refresh_token",client_id:Mo,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=Bs(await r.json());return await Wo({access_token:n.access_token,access_token_expires_at:yr(n.access_token),refresh_token:n.refresh_token,scope:n.scope},t),{access_token:n.access_token,scope:n.scope}}function Cr(e){return e.toString("base64url")}function Es(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("${Rs}");
89
+ background-image: url("${_s}");
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
- ${Pm}
126
+ ${Jp}
127
127
  <h1>${t}</h1>
128
128
  <p>${o}</p>
129
129
  </main>
130
130
  </body>
131
- </html>`}function js(){let e=br((0,lo.randomBytes)(64)),t=br((0,lo.createHash)("sha256").update(e).digest()),o=br((0,lo.randomBytes)(24));return{codeVerifier:e,codeChallenge:t,state:o}}function Is(){return new Promise((e,t)=>{let o,i,r=new Promise((a,l)=>{o=a,i=l}),n=(0,Es.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 c=u.searchParams.get("code"),d=u.searchParams.get("state"),f=u.searchParams.get("error"),b=f?`Authorization denied: ${f}`:!c||!d?"Missing code or state in OAuth callback":null,h=Ds(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)):c&&d&&o({code:c,state:d})}),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 Ps(e){let t=await Os(`${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 Bs(await t.json())}var lo,Es,qo,Ar,jm,Im,yr,Pm,Mo=ge(()=>{"use strict";lo=require("node:crypto"),Es=require("node:http");Ae();_s();qo="7136aa0b-625c-4c9c-8820-e9784c8eb141",Ar="Received an invalid access token from Resend. Please run `resend login` to authenticate again.";jm=3e4,Im=60,yr="OAuthNetworkError";Pm=`<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 Is(){let e=Cr((0,lo.randomBytes)(64)),t=Cr((0,lo.createHash)("sha256").update(e).digest()),o=Cr((0,lo.randomBytes)(24));return{codeVerifier:e,codeChallenge:t,state:o}}function Ps(){return new Promise((e,t)=>{let o,i,r=new Promise((a,l)=>{o=a,i=l}),n=(0,Os.createServer)((a,l)=>{let d=new URL(a.url??"/","http://127.0.0.1");if(d.pathname!=="/oauth/callback"){l.writeHead(404,{Connection:"close"}),l.end();return}let c=d.searchParams.get("code"),m=d.searchParams.get("state"),f=d.searchParams.get("error"),b=f?`Authorization denied: ${f}`:!c||!m?"Missing code or state in OAuth callback":null,h=Es(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)):c&&m&&o({code:c,state:m})}),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 $s(e){let t=await Ts(`${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 Bs(await t.json())}var lo,Os,Mo,br,Lp,Wp,Ur,Jp,Lo=ge(()=>{"use strict";lo=require("node:crypto"),Os=require("node:http");Ae();Ds();Mo="7136aa0b-625c-4c9c-8820-e9784c8eb141",br="Received an invalid access token from Resend. Please run `resend login` to authenticate again.";Lp=3e4,Wp=60,Ur="OAuthNetworkError";Jp=`<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,115 +142,115 @@ 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 $s,we,Hs,Gs,$m,Qs=ge(()=>{"use strict";$s=require("node:crypto"),we=require("node:fs"),Hs=require("node:path"),Gs=(e,t,o)=>{let i=`${e}.tmp.${process.pid}.${(0,$s.randomUUID)()}`;try{let r=(0,we.openSync)(i,"w",o);try{(0,we.writeSync)(r,t),(0,we.fsyncSync)(r)}finally{(0,we.closeSync)(r)}(0,we.renameSync)(i,e),$m((0,Hs.dirname)(e))}catch(r){try{(0,we.unlinkSync)(i)}catch{}throw r}},$m=e=>{if(process.platform!=="win32")try{let t=(0,we.openSync)(e,"r");try{(0,we.fsyncSync)(t)}finally{(0,we.closeSync)(t)}}catch{}}});function Pe(){return process.env.XDG_CONFIG_HOME?(0,_t.join)(process.env.XDG_CONFIG_HOME,"resend"):process.platform==="win32"&&process.env.APPDATA?(0,_t.join)(process.env.APPDATA,"resend"):(0,_t.join)((0,Ms.homedir)(),".config","resend")}function St(){return(0,_t.join)(Pe(),"credentials.json")}function Ns(e){return e.type==="oauth_grant"?Sr(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 Ur(){try{return Ke()}catch{return null}}function Ke(){let e=St();if(!(0,Te.existsSync)(e))return null;let t=(0,Te.readFileSync)(e,"utf-8");if(t.trim().length===0)return null;let o;try{o=JSON.parse(t)}catch{throw new $o(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,Ns(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,Ns(n)]))}}return null}function ut(e){let t=Pe();(0,Te.mkdirSync)(t,{recursive:!0,mode:448});let o=St();return Gs(o,`${JSON.stringify(e,null,2)}
146
- `,384),(0,Te.chmodSync)(o,384),o}function Wo(e){if(e)return e;let t=process.env.RESEND_PROFILE;if(t)return t;let o=Ke();return o?.active_profile?o.active_profile:"default"}function dr(e,t,o){let i=t||"default",r=ce(i);if(r)throw new Error(r);return et(dt(),()=>{let n=Ke()||{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 ut(a)})}function hs(e){return et(dt(),()=>{let t=Ke();if(!t)throw new Error("No credentials file found.");let o=e||Wo();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=St();return(0,Te.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return ut({...t,active_profile:n,profiles:r})})}function co(e){let t=ce(e);if(t)throw new Error(t);et(dt(),()=>{let o=Ke();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(", ")}`);ut({...o,active_profile:e})})}function xe(){let e=Ke();return e?Object.keys(e.profiles).map(t=>({name:t,active:t===e.active_profile})):[]}function ce(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 pt(e){return e.length<=7?`${e.slice(0,3)}...`:`${e.slice(0,3)}...${e.slice(-4)}`}function Sr(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 Hm(e){return Sr(e)?e:null}function Gm(e){let t;try{t=JSON.parse(e)}catch{t=null}if(!Sr(t))throw new Error("Stored OAuth credentials are invalid. Please run `resend login` to authenticate again.");return t}async function Kt(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=Ke(),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 Ze()).get(qe,n);if(l){if(s.type==="oauth_grant"){let u=Gm(l);return qs(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=Hm(s);if(a)return qs(a,n,"config",o)}}return null}async function qs(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 Ts(e,t);return{type:"oauth_grant",access_token:r,profile:t,scope:n,source:o}}async function Ls(e,t,o){let i=t||"default",r=ce(i);if(r)throw new Error(r);let n=await Ze();return n.isSecure?{configPath:await et(dt(),async()=>{await n.set(qe,i,e);let a=Ke()||{active_profile:"default",profiles:{}},l={...a.profiles,[i]:{type:"api_key",...o&&{permission:o}}};return ut({...a,storage:"secure_storage",profiles:l,...Object.keys(l).length===1?{active_profile:i}:{}})}),backend:n}:{configPath:dr(e,i,o),backend:n}}async function Lo(e,t){let o=t||"default",i=ce(o);if(i)throw new Error(i);let r=await Ze();return{configPath:await et(dt(),async()=>{let s=Ke()||{active_profile:"default",profiles:{}},a=r.isSecure?{type:"oauth_grant",scope:e.scope}:{type:"oauth_grant",...e};r.isSecure&&await r.set(qe,o,JSON.stringify(e));let l={...s.profiles,[o]:a};try{return ut({...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(qe,o).catch(()=>{}),u}}),backend:r}}async function Jo(e){return et(dt(),async()=>{let t=Ke(),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 Ze();if(s.isSecure&&!await s.delete(qe,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=St();return(0,Te.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return ut({...t,active_profile:n,profiles:r})})}async function Ws(){return et(dt(),async()=>{let e=Ur(),t=St();if(e?.storage==="secure_storage"){let o=await Ze();if(o.isSecure){let i=Object.keys(e.profiles),r=await Promise.all(i.map(s=>o.delete(qe,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 ut({...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,Te.existsSync)(t)&&(0,Te.unlinkSync)(t),t})}async function Vo(e,t){if(e===t)return;let o=ce(t);if(o)throw new Error(o);await et(dt(),async()=>{let i=Ke();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 Ze();if(s.isSecure){let a=await s.get(qe,e);if(a&&(await s.set(qe,t,a),!await s.delete(qe,e))){let u=await s.delete(qe,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;ut({...i,active_profile:i.active_profile===e?t:i.active_profile,profiles:{...n,[t]:r}})})}var Te,Ms,_t,Dt,dt,Ae=ge(()=>{"use strict";Te=require("node:fs"),Ms=require("node:os"),_t=require("node:path");gs();gr();ks();Mo();Qs();Dt=`Sending-only keys work with: emails send, emails batch, broadcasts send.
147
- Create a full access key at https://resend.com/api-keys`;dt=()=>(0,_t.join)(Pe(),"credentials.json.lock")});function S(){return!(!process.stdin.isTTY||!process.stdout.isTTY||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||process.env.TERM==="dumb")}var tt,J=ge(()=>{"use strict";tt=process.platform!=="win32"||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"});function ec(){return(0,Zl.join)(Pe(),"update-state.json")}function xf(){try{return JSON.parse((0,Qt.readFileSync)(ec(),"utf-8"))}catch{return null}}function Ff(e){(0,Qt.mkdirSync)(Pe(),{recursive:!0,mode:448}),(0,Qt.writeFileSync)(ec(),JSON.stringify(e),{mode:384})}function fi(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 Er(){try{let e=await fetch(Dr,{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 kf(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 tc(){let e=gi();return e.startsWith("npm")?"npm":e.startsWith("brew")?"homebrew":e.startsWith("curl")||e.startsWith("irm")?"install-script":"manual"}function gi(){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 Xl(e){let t=gi(),o=t.startsWith("http"),i="\x1B[2m",r="\x1B[33m",n="\x1B[36m",s="\x1B[0m",a=["",`${i}Update available: ${r}v${re}${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 oc(e){if(kf(e))return;let t=xf(),o=Date.now();if(t&&o-t.lastChecked<wf){fi(re,t.latestVersion)&&process.stderr.write(Xl(t.latestVersion));return}let i=await Er();i&&(Ff({lastChecked:o,latestVersion:i}),fi(re,i)&&process.stderr.write(Xl(i)))}var Qt,Zl,wf,Dr,Ao=ge(()=>{"use strict";Qt=require("node:fs"),Zl=require("node:path");Ae();Ct();wf=3600*1e3,Dr="https://api.github.com/repos/resend/resend-cli/releases/latest"});var pu={};Wt(pu,{flushFromFile:()=>fg,flushPayload:()=>uu,getOrCreateAnonymousId:()=>du,getSpoolDir:()=>$r,isDisabled:()=>cu,trackCommand:()=>Hr});function cg(){return lg[process.platform]??process.platform}function $r(){let e=(0,Le.join)(Pe(),"telemetry-spool");return(0,L.mkdirSync)(e,{recursive:!0,mode:448}),e}function cu(){return!lu||process.env.DO_NOT_TRACK==="1"||process.env.RESEND_TELEMETRY_DISABLED==="1"}function du(){let e=Pe(),t=(0,Le.join)(e,"telemetry-id");try{let i=(0,L.readFileSync)(t,"utf-8").trim();if(i)return i}catch{}let o=crypto.randomUUID();return(0,L.mkdirSync)(e,{recursive:!0,mode:448}),(0,L.writeFileSync)(t,o,{mode:384}),o}function dg(e){if(!e)return;let t=Pe(),o=(0,Le.join)(t,"telemetry-notice-shown");(0,L.existsSync)(o)||((0,L.mkdirSync)(t,{recursive:!0,mode:448}),(0,L.writeFileSync)(o,"",{mode:384}),process.stderr.write(`
145
+ </svg>`});var Hs,ve,Gs,Qs,Vp,Ns=ge(()=>{"use strict";Hs=require("node:crypto"),ve=require("node:fs"),Gs=require("node:path"),Qs=(e,t,o)=>{let i=`${e}.tmp.${process.pid}.${(0,Hs.randomUUID)()}`;try{let r=(0,ve.openSync)(i,"w",o);try{(0,ve.writeSync)(r,t),(0,ve.fsyncSync)(r)}finally{(0,ve.closeSync)(r)}(0,ve.renameSync)(i,e),Vp((0,Gs.dirname)(e))}catch(r){try{(0,ve.unlinkSync)(i)}catch{}throw r}},Vp=e=>{if(process.platform!=="win32")try{let t=(0,ve.openSync)(e,"r");try{(0,ve.fsyncSync)(t)}finally{(0,ve.closeSync)(t)}}catch{}}});function $e(){return process.env.XDG_CONFIG_HOME?(0,Ot.join)(process.env.XDG_CONFIG_HOME,"resend"):process.platform==="win32"&&process.env.APPDATA?(0,Ot.join)(process.env.APPDATA,"resend"):(0,Ot.join)((0,Ls.homedir)(),".config","resend")}function Kt(){return(0,Ot.join)($e(),"credentials.json")}function qs(e){return e.type==="oauth_grant"?wr(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 Sr(){try{return we()}catch{return null}}function we(){let e=Kt();if(!(0,je.existsSync)(e))return null;let t=(0,je.readFileSync)(e,"utf-8");if(t.trim().length===0)return null;let o;try{o=JSON.parse(t)}catch{throw new Ho(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,qs(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,qs(n)]))}}return null}function mt(e){let t=$e();(0,je.mkdirSync)(t,{recursive:!0,mode:448});let o=Kt();return Qs(o,`${JSON.stringify(e,null,2)}
146
+ `,384),(0,je.chmodSync)(o,384),o}function Jo(e){if(e)return e;let t=process.env.RESEND_PROFILE;if(t)return t;let o=we();return o?.active_profile?o.active_profile:"default"}function ur(e,t,o){let i=t||"default",r=ce(i);if(r)throw new Error(r);return tt(ut(),()=>{let n=we()||{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 mt(a)})}function As(e){return tt(ut(),()=>{let t=we();if(!t)throw new Error("No credentials file found.");let o=e||Jo();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=Kt();return(0,je.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return mt({...t,active_profile:n,profiles:r})})}function co(e){let t=ce(e);if(t)throw new Error(t);tt(ut(),()=>{let o=we();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(", ")}`);mt({...o,active_profile:e})})}function xe(){let e=we();return e?Object.keys(e.profiles).map(t=>({name:t,active:t===e.active_profile})):[]}function ce(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 pt(e){return e.length<=7?`${e.slice(0,3)}...`:`${e.slice(0,3)}...${e.slice(-4)}`}function wr(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 zp(e){return wr(e)?e:null}function Yp(e){let t;try{t=JSON.parse(e)}catch{t=null}if(!wr(t))throw new Error("Stored OAuth credentials are invalid. Please run `resend login` to authenticate again.");return t}async function vt(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=we(),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 et()).get(qe,n);if(l){if(s.type==="oauth_grant"){let d=Yp(l);return Ms(d,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=zp(s);if(a)return Ms(a,n,"config",o)}}return null}async function Ms(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 js(e,t);return{type:"oauth_grant",access_token:r,profile:t,scope:n,source:o}}async function Ws(e,t,o){let i=t||"default",r=ce(i);if(r)throw new Error(r);let n=await et();return n.isSecure?{configPath:await tt(ut(),async()=>{await n.set(qe,i,e);let a=we()||{active_profile:"default",profiles:{}},l={...a.profiles,[i]:{type:"api_key",...o&&{permission:o}}};return mt({...a,storage:"secure_storage",profiles:l,...Object.keys(l).length===1?{active_profile:i}:{}})}),backend:n}:{configPath:ur(e,i,o),backend:n}}async function Wo(e,t){let o=t||"default",i=ce(o);if(i)throw new Error(i);let r=await et();return{configPath:await tt(ut(),async()=>{let s=we()||{active_profile:"default",profiles:{}},a=r.isSecure?{type:"oauth_grant",scope:e.scope}:{type:"oauth_grant",...e};r.isSecure&&await r.set(qe,o,JSON.stringify(e));let l={...s.profiles,[o]:a};try{return mt({...s,storage:r.isSecure?"secure_storage":"file",profiles:l,...Object.keys(l).length===1?{active_profile:o}:{}})}catch(d){throw r.isSecure&&await r.delete(qe,o).catch(()=>{}),d}}),backend:r}}async function Vo(e){return tt(ut(),async()=>{let t=we(),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 et();if(s.isSecure&&!await s.delete(qe,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=Kt();return(0,je.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return mt({...t,active_profile:n,profiles:r})})}async function Js(){return tt(ut(),async()=>{let e=Sr(),t=Kt();if(e?.storage==="secure_storage"){let o=await et();if(o.isSecure){let i=Object.keys(e.profiles),r=await Promise.all(i.map(s=>o.delete(qe,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 mt({...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,je.existsSync)(t)&&(0,je.unlinkSync)(t),t})}async function zo(e,t){if(e===t)return;let o=ce(t);if(o)throw new Error(o);await tt(ut(),async()=>{let i=we();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 et();if(s.isSecure){let a=await s.get(qe,e);if(a&&(await s.set(qe,t,a),!await s.delete(qe,e))){let d=await s.delete(qe,t);throw new Error(d?`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;mt({...i,active_profile:i.active_profile===e?t:i.active_profile,profiles:{...n,[t]:r}})})}var je,Ls,Ot,Bt,ut,Ae=ge(()=>{"use strict";je=require("node:fs"),Ls=require("node:os"),Ot=require("node:path");hs();hr();Rs();Lo();Ns();Bt=`Sending-only keys work with: emails send, emails batch, broadcasts send.
147
+ Create a full access key at https://resend.com/api-keys`;ut=()=>(0,Ot.join)($e(),"credentials.json.lock")});function S(){return!(!process.stdin.isTTY||!process.stdout.isTTY||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||process.env.TERM==="dumb")}var ot,V=ge(()=>{"use strict";ot=process.platform!=="win32"||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"});function sc(){return(0,nc.join)($e(),"update-state.json")}function jf(){try{return JSON.parse((0,Nt.readFileSync)(sc(),"utf-8"))}catch{return null}}function If(e){(0,Nt.mkdirSync)($e(),{recursive:!0,mode:448}),(0,Nt.writeFileSync)(sc(),JSON.stringify(e),{mode:384})}function gi(e,t){let o=d=>d.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 Or(){try{let e=await fetch(Er,{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 Pf(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 ac(){let e=hi();return e.startsWith("npm")?"npm":e.startsWith("brew")?"homebrew":e.startsWith("curl")||e.startsWith("irm")?"install-script":"manual"}function hi(){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 rc(e){let t=hi(),o=t.startsWith("http"),i="\x1B[2m",r="\x1B[33m",n="\x1B[36m",s="\x1B[0m",a=["",`${i}Update available: ${r}v${re}${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 lc(e){if(Pf(e))return;let t=jf(),o=Date.now();if(t&&o-t.lastChecked<Tf){gi(re,t.latestVersion)&&process.stderr.write(rc(t.latestVersion));return}let i=await Or();i&&(If({lastChecked:o,latestVersion:i}),gi(re,i)&&process.stderr.write(rc(i)))}var Nt,nc,Tf,Er,Ao=ge(()=>{"use strict";Nt=require("node:fs"),nc=require("node:path");Ae();Ut();Tf=3600*1e3,Er="https://api.github.com/repos/resend/resend-cli/releases/latest"});var yu={};Jt(yu,{flushFromFile:()=>xg,flushPayload:()=>Cu,getOrCreateAnonymousId:()=>bu,getSpoolDir:()=>Hr,isDisabled:()=>Au,trackCommand:()=>Gr});function Ug(){return yg[process.platform]??process.platform}function Hr(){let e=(0,Le.join)($e(),"telemetry-spool");return(0,W.mkdirSync)(e,{recursive:!0,mode:448}),e}function Au(){return!hu||process.env.DO_NOT_TRACK==="1"||process.env.RESEND_TELEMETRY_DISABLED==="1"}function bu(){let e=$e(),t=(0,Le.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 Sg(e){if(!e)return;let t=$e(),o=(0,Le.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 Hr(e,t){if(!cu())try{let o=S()&&!t.json;dg(o);let i=du(),r={command:e,cli_version:re,os:cg(),node_version:process.version,interactive:o,install_method:tc()};t.flags?.length&&(r.flags=t.flags),t.globalFlags?.length&&(r.global_flags=t.globalFlags);let n=crypto.randomUUID(),s=JSON.stringify({api_key:lu,distinct_id:i,event:"cli.used",properties:r,_nonce:n}),a=$r(),l=(0,Le.join)(a,`resend-telemetry-${crypto.randomUUID()}.json`),u=(0,L.openSync)(l,L.constants.O_CREAT|L.constants.O_EXCL|L.constants.O_WRONLY|(L.constants.O_NOFOLLOW??0),384);try{(0,L.writeFileSync)(u,s)}finally{(0,L.closeSync)(u)}let c="pkg"in process,d=c?["telemetry","flush",l]:process.execArgv.concat([process.argv[1],"telemetry","flush",l]);(0,au.spawn)(process.execPath,d,{detached:!0,stdio:"ignore",env:{...process.env,RESEND_TELEMETRY_DISABLED:"1",...c?{PKG_EXECPATH:""}:{}}}).unref()}catch{}}async function uu(e){let t=JSON.parse(e);if(!ug(t))throw new Error("invalid telemetry payload schema");let{_nonce:o,...i}=t,r=JSON.stringify(i),n=await fetch(ag,{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 fg(e){let t=(0,Le.join)(e),o=$r(),i=(0,Le.basename)(t);if((0,Le.dirname)(t)!==o||!mg.test(i)||(0,L.realpathSync)((0,Le.dirname)(t))!==(0,L.realpathSync)(o))throw new Error("invalid telemetry flush path");let r=(0,L.openSync)(t,L.constants.O_RDONLY|L.constants.O_NOFOLLOW),n;try{let s=(0,L.fstatSync)(r);if(!s.isFile()||s.nlink!==1)throw new Error("invalid telemetry flush path");n=(0,L.readFileSync)(r,"utf-8")}finally{(0,L.closeSync)(r)}try{await uu(n)}finally{(0,L.unlinkSync)(t)}}var au,L,Le,lu,ag,lg,su,ug,pg,mg,Gr=ge(()=>{"use strict";au=require("node:child_process"),L=require("node:fs"),Le=require("node:path");Ae();J();Ao();Ct();lu="phc_AgEBpcQTRsBl3UgQX2U8XvimTlgdXG6YEhfvJl2cUfc",ag="https://us.i.posthog.com/capture/",lg={darwin:"macOS",win32:"Windows",linux:"Linux"};su=new Set(["api_key","distinct_id","event","properties","_nonce"]),ug=e=>{if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e,o=Object.keys(t);return o.length!==su.size||o.some(i=>!su.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};pg="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",mg=new RegExp(`^resend-telemetry-${pg}\\.json$`)});var rn=de(on(),1),{program:Kg,createCommand:vg,createArgument:wg,createOption:xg,CommanderError:Fg,InvalidArgumentError:kg,InvalidOptionArgumentError:Rg,Command:p,Argument:nn,Option:Y,Help:_g}=rn.default;var Lt=de(We(),1);var Hu=`Global options:
152
+ `))}function Gr(e,t){if(!Au())try{let o=S()&&!t.json;Sg(o);let i=bu(),r={command:e,cli_version:re,os:Ug(),node_version:process.version,interactive:o,install_method:ac()};t.flags?.length&&(r.flags=t.flags),t.globalFlags?.length&&(r.global_flags=t.globalFlags);let n=crypto.randomUUID(),s=JSON.stringify({api_key:hu,distinct_id:i,event:"cli.used",properties:r,_nonce:n}),a=Hr(),l=(0,Le.join)(a,`resend-telemetry-${crypto.randomUUID()}.json`),d=(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)(d,s)}finally{(0,W.closeSync)(d)}let c="pkg"in process,m=c?["telemetry","flush",l]:process.execArgv.concat([process.argv[1],"telemetry","flush",l]);(0,gu.spawn)(process.execPath,m,{detached:!0,stdio:"ignore",env:{...process.env,RESEND_TELEMETRY_DISABLED:"1",...c?{PKG_EXECPATH:""}:{}}}).unref()}catch{}}async function Cu(e){let t=JSON.parse(e);if(!wg(t))throw new Error("invalid telemetry payload schema");let{_nonce:o,...i}=t,r=JSON.stringify(i),n=await fetch(Cg,{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 xg(e){let t=(0,Le.join)(e),o=Hr(),i=(0,Le.basename)(t);if((0,Le.dirname)(t)!==o||!vg.test(i)||(0,W.realpathSync)((0,Le.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 Cu(n)}finally{(0,W.unlinkSync)(t)}}var gu,W,Le,hu,Cg,yg,fu,wg,Kg,vg,Qr=ge(()=>{"use strict";gu=require("node:child_process"),W=require("node:fs"),Le=require("node:path");Ae();V();Ao();Ut();hu="phc_AgEBpcQTRsBl3UgQX2U8XvimTlgdXG6YEhfvJl2cUfc",Cg="https://us.i.posthog.com/capture/",yg={darwin:"macOS",win32:"Windows",linux:"Linux"};fu=new Set(["api_key","distinct_id","event","properties","_nonce"]),wg=e=>{if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e,o=Object.keys(t);return o.length!==fu.size||o.some(i=>!fu.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};Kg="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",vg=new RegExp(`^resend-telemetry-${Kg}\\.json$`)});var nn=de(rn(),1),{program:Tg,createCommand:jg,createArgument:Ig,createOption:Pg,CommanderError:$g,InvalidArgumentError:Hg,InvalidOptionArgumentError:Gg,Command:u,Argument:sn,Option:L,Help:Qg}=nn.default;var Wt=de(We(),1);var Ju=`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)`,Gu=`Global options:
156
+ -q, --quiet Suppress spinners and status output (implies --json)`,Vu=`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)`,Qu=' {"error":{"message":"<message>","code":"<code>"}}';function m(e){let t=[];return e.context!=null&&t.push(e.context),t.push(e.setup?Gu:Hu),e.output!=null&&t.push(`Output (--json or piped):
159
+ -q, --quiet Suppress spinners and status output (implies --json)`,zu=' {"error":{"message":"<message>","code":"<code>"}}';function p(e){let t=[];return e.context!=null&&t.push(e.context),t.push(e.setup?Vu:Ju),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
- ${Qu}
161
+ ${zu}
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 wo=require("node:util"),Vt=require("node:process");var Kn=de(require("node:readline"),1);var ln=(()=>{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,dn=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 Nu=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,qu=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,un=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,Mu=/\t{1,1000}/y,pn=/[\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,Lu=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Wu=/\p{M}+/gu,Ju={limit:1/0,ellipsis:""},mn=(e,t={},o={})=>{let i=t.limit??1/0,r=t.ellipsis??"",n=t?.ellipsisWidth??(r?mn(r,Ju,o).width:0),s=0,a=o.controlWidth??0,l=o.tabWidth??8,u=o.emojiWidth??2,c=2,d=o.regularWidth??1,f=o.wideWidth??c,b=[[Lu,d],[Nu,s],[qu,a],[Mu,l],[pn,u],[un,f]],h=0,A=0,U=e.length,K=0,x=!1,w=U,v=Math.max(0,i-n),R=0,E=0,T=0,_=0;e:for(;;){if(E>R||A>=U&&A>h){let $=e.slice(R,E)||e.slice(h,A);K=0;for(let ye of $.replaceAll(Wu,"")){let ie=ye.codePointAt(0)||0;if(cn(ie)?_=c:dn(ie)?_=f:_=d,T+_>v&&(w=Math.min(w,Math.max(R,h)+K)),T+_>i){x=!0;break e}K+=ye.length,T+=_}R=E=0}if(A>=U)break e;for(let $=0,ye=b.length;$<ye;$++){let[ie,At]=b[$];if(ie.lastIndex=A,ie.test(e)){if(K=ie===un?ln(e.slice(A,ie.lastIndex)):ie===pn?1:ie.lastIndex-A,_=K*At,T+_>v&&(w=Math.min(w,A+Math.floor((v-T)/At))),T+_>i){x=!0;break e}T+=_,R=h,E=A,A=h=ie.lastIndex;continue e}}A+=1}return{width:x?v:T,index:x?w:U,truncated:x,ellipsed:x&&i>=n}},fn=mn;var Vu={limit:1/0,ellipsis:"",ellipsisWidth:0},zu=(e,t={})=>fn(e,Vu,t).width,Ue=zu;var Ko="\x1B",Cn="\x9B",Yu=39,Gi="\x07",yn="[",Xu="]",Un="m",Qi=`${Xu}8;;`,gn=new RegExp(`(?:\\${yn}(?<code>\\d+)m|\\${Qi}(?<uri>.*)${Gi})`,"y"),hn=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},An=e=>`${Ko}${yn}${e}${Un}`,bn=e=>`${Ko}${Qi}${e}${Gi}`,Hi=(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(),u=i.next(),c=0;for(;!l.done;){let d=l.value,f=Ue(d);a+f<=o?e[e.length-1]+=d:(e.push(d),a=0),(d===Ko||d===Cn)&&(r=!0,n=t.startsWith(Qi,c+1)),r?n?d===Gi&&(r=!1,n=!1):d===Un&&(r=!1):(a+=f,a===o&&!u.done&&(e.push(""),a=0)),l=u,u=i.next(),c+=d.length}s=e.at(-1),!a&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},Zu=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("")},ep=(e,t,o={})=>{if(o.trim!==!1&&e.trim()==="")return"";let i="",r,n,s=e.split(" "),a=[""],l=0;for(let d=0;d<s.length;d++){let f=s[d];if(o.trim!==!1){let h=a.at(-1)??"",A=h.trimStart();h.length!==A.length&&(a[a.length-1]=A,l=Ue(A))}d!==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(""),Hi(a,f,t),l=Ue(a.at(-1)??"");continue}if(l+b>t&&l&&b){if(o.wordWrap===!1&&l<t){Hi(a,f,t),l=Ue(a.at(-1)??"");continue}a.push(""),l=0}if(l+b>t&&o.wordWrap===!1){Hi(a,f,t),l=Ue(a.at(-1)??"");continue}a[a.length-1]+=f,l+=b}o.trim!==!1&&(a=a.map(d=>Zu(d)));let u=a.join(`
168
- `),c=!1;for(let d=0;d<u.length;d++){let f=u[d];if(i+=f,c)c=!1;else if(c=f>="\uD800"&&f<="\uDBFF",c)continue;if(f===Ko||f===Cn){gn.lastIndex=d+1;let h=gn.exec(u)?.groups;if(h?.code!==void 0){let A=Number.parseFloat(h.code);r=A===Yu?void 0:A}else h?.uri!==void 0&&(n=h.uri.length===0?void 0:h.uri)}if(u[d+1]===`
169
- `){n&&(i+=bn(""));let b=r?hn(r):void 0;r&&b&&(i+=An(b))}else f===`
170
- `&&(r&&hn(r)&&(i+=An(r)),n&&(i+=bn(n)))}return i},tp=/\r?\n/;function rt(e,t,o){return String(e).normalize().split(tp).map(i=>ep(i,t,o)).join(`
171
- `)}var Ee=de(qi(),1);function bt(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?bt(n,t<0?-1:1,o):n}var rp=["up","down","left","right","space","enter","cancel"],np=["January","February","March","April","May","June","July","August","September","October","November","December"],he={actions:new Set(rp),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:[...np],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 vn(e,t){if(typeof e=="string")return he.aliases.get(e)===t;for(let o of e)if(o!==void 0&&vn(o,t))return!0;return!1}function sp(e,t){if(e===t)return;let o=e.split(`
167
+ `)}`}var xo=require("node:util"),zt=require("node:process");var Kn=de(require("node:readline"),1);var cn=(()=>{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}})(),dn=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,un=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 Yu=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Xu=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,mn=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,Zu=/\t{1,1000}/y,pn=/[\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,em=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,tm=/\p{M}+/gu,om={limit:1/0,ellipsis:""},fn=(e,t={},o={})=>{let i=t.limit??1/0,r=t.ellipsis??"",n=t?.ellipsisWidth??(r?fn(r,om,o).width:0),s=0,a=o.controlWidth??0,l=o.tabWidth??8,d=o.emojiWidth??2,c=2,m=o.regularWidth??1,f=o.wideWidth??c,b=[[em,m],[Yu,s],[Xu,a],[Zu,l],[pn,d],[mn,f]],h=0,A=0,U=e.length,w=0,x=!1,v=U,K=Math.max(0,i-n),_=0,O=0,$=0,D=0;e:for(;;){if(O>_||A>=U&&A>h){let Q=e.slice(_,O)||e.slice(h,A);w=0;for(let ye of Q.replaceAll(tm,"")){let ie=ye.codePointAt(0)||0;if(dn(ie)?D=c:un(ie)?D=f:D=m,$+D>K&&(v=Math.min(v,Math.max(_,h)+w)),$+D>i){x=!0;break e}w+=ye.length,$+=D}_=O=0}if(A>=U)break e;for(let Q=0,ye=b.length;Q<ye;Q++){let[ie,Ct]=b[Q];if(ie.lastIndex=A,ie.test(e)){if(w=ie===mn?cn(e.slice(A,ie.lastIndex)):ie===pn?1:ie.lastIndex-A,D=w*Ct,$+D>K&&(v=Math.min(v,A+Math.floor((K-$)/Ct))),$+D>i){x=!0;break e}$+=D,_=h,O=A,A=h=ie.lastIndex;continue e}}A+=1}return{width:x?K:$,index:x?v:U,truncated:x,ellipsed:x&&i>=n}},gn=fn;var im={limit:1/0,ellipsis:"",ellipsisWidth:0},rm=(e,t={})=>gn(e,im,t).width,Ue=rm;var Ko="\x1B",yn="\x9B",nm=39,Qi="\x07",Un="[",sm="]",Sn="m",Ni=`${sm}8;;`,hn=new RegExp(`(?:\\${Un}(?<code>\\d+)m|\\${Ni}(?<uri>.*)${Qi})`,"y"),An=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},bn=e=>`${Ko}${Un}${e}${Sn}`,Cn=e=>`${Ko}${Ni}${e}${Qi}`,Gi=(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(),d=i.next(),c=0;for(;!l.done;){let m=l.value,f=Ue(m);a+f<=o?e[e.length-1]+=m:(e.push(m),a=0),(m===Ko||m===yn)&&(r=!0,n=t.startsWith(Ni,c+1)),r?n?m===Qi&&(r=!1,n=!1):m===Sn&&(r=!1):(a+=f,a===o&&!d.done&&(e.push(""),a=0)),l=d,d=i.next(),c+=m.length}s=e.at(-1),!a&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},am=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("")},lm=(e,t,o={})=>{if(o.trim!==!1&&e.trim()==="")return"";let i="",r,n,s=e.split(" "),a=[""],l=0;for(let m=0;m<s.length;m++){let f=s[m];if(o.trim!==!1){let h=a.at(-1)??"",A=h.trimStart();h.length!==A.length&&(a[a.length-1]=A,l=Ue(A))}m!==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(""),Gi(a,f,t),l=Ue(a.at(-1)??"");continue}if(l+b>t&&l&&b){if(o.wordWrap===!1&&l<t){Gi(a,f,t),l=Ue(a.at(-1)??"");continue}a.push(""),l=0}if(l+b>t&&o.wordWrap===!1){Gi(a,f,t),l=Ue(a.at(-1)??"");continue}a[a.length-1]+=f,l+=b}o.trim!==!1&&(a=a.map(m=>am(m)));let d=a.join(`
168
+ `),c=!1;for(let m=0;m<d.length;m++){let f=d[m];if(i+=f,c)c=!1;else if(c=f>="\uD800"&&f<="\uDBFF",c)continue;if(f===Ko||f===yn){hn.lastIndex=m+1;let h=hn.exec(d)?.groups;if(h?.code!==void 0){let A=Number.parseFloat(h.code);r=A===nm?void 0:A}else h?.uri!==void 0&&(n=h.uri.length===0?void 0:h.uri)}if(d[m+1]===`
169
+ `){n&&(i+=Cn(""));let b=r?An(r):void 0;r&&b&&(i+=bn(b))}else f===`
170
+ `&&(r&&An(r)&&(i+=bn(r)),n&&(i+=Cn(n)))}return i},cm=/\r?\n/;function nt(e,t,o){return String(e).normalize().split(cm).map(i=>lm(i,t,o)).join(`
171
+ `)}var Oe=de(Mi(),1);function yt(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?yt(n,t<0?-1:1,o):n}var mm=["up","down","left","right","space","enter","cancel"],pm=["January","February","March","April","May","June","July","August","September","October","November","December"],he={actions:new Set(mm),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:[...pm],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 vn(e,t){if(typeof e=="string")return he.aliases.get(e)===t;for(let o of e)if(o!==void 0&&vn(o,t))return!0;return!1}function fm(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 Ng=globalThis.process.platform.startsWith("win"),Mi=Symbol("clack:cancel");function F(e){return e===Mi}function vo(e,t){let o=e;o.isTTY&&o.setRawMode(t)}var _o=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,Li=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function nt(e,t,o,i=o,r=o,n){let s=_o(e??Vt.stdout);return rt(t,s-o.length,{hard:!0,trim:!1}).split(`
174
- `).map((a,l,u)=>{let c=n?n(a,l):a;return l===0?`${i}${c}`:l===u.length-1?`${r}${c}`:`${o}${c}`}).join(`
175
- `)}var zt=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=Vt.stdin,output:i=Vt.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(Mi);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=Kn.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),vo(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Ee.cursor.show),this.output.off("resize",this.render),vo(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(Ee.cursor.show),this.output.off("resize",this.render),vo(this.input,!1),e(Mi)})})}_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&&he.aliases.has(t.name)&&this.emit("cursor",he.aliases.get(t.name)),he.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")}vn([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
- `),vo(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=rt(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
177
- `).length-1;this.output.write(Ee.cursor.move(-999,e*-1))}render(){let e=rt(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(Ee.cursor.hide);else{let t=sp(this._prevFrame,e),o=Li(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(Ee.cursor.move(0,n-r)),this.output.write(Ee.erase.lines(1));let s=e.split(`
178
- `);this.output.write(s[n]),this._prevFrame=e,this.output.write(Ee.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(Ee.cursor.move(0,a))}this.output.write(Ee.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 th=globalThis.process.platform.startsWith("win"),Li=Symbol("clack:cancel");function F(e){return e===Li}function vo(e,t){let o=e;o.isTTY&&o.setRawMode(t)}var Do=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,Wi=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function st(e,t,o,i=o,r=o,n){let s=Do(e??zt.stdout);return nt(t,s-o.length,{hard:!0,trim:!1}).split(`
174
+ `).map((a,l,d)=>{let c=n?n(a,l):a;return l===0?`${i}${c}`:l===d.length-1?`${r}${c}`:`${o}${c}`}).join(`
175
+ `)}var Yt=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=zt.stdin,output:i=zt.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(Li);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=Kn.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),vo(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Oe.cursor.show),this.output.off("resize",this.render),vo(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(Oe.cursor.show),this.output.off("resize",this.render),vo(this.input,!1),e(Li)})})}_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&&he.aliases.has(t.name)&&this.emit("cursor",he.aliases.get(t.name)),he.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")}vn([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
+ `),vo(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=nt(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
177
+ `).length-1;this.output.write(Oe.cursor.move(-999,e*-1))}render(){let e=nt(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(Oe.cursor.hide);else{let t=fm(this._prevFrame,e),o=Wi(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(Oe.cursor.move(0,n-r)),this.output.write(Oe.erase.lines(1));let s=e.split(`
178
+ `);this.output.write(s[n]),this._prevFrame=e,this.output.write(Oe.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(Oe.cursor.move(0,a))}this.output.write(Oe.erase.down());let s=e.split(`
179
179
  `).slice(n);this.output.write(s.join(`
180
- `)),this._prevFrame=e;return}}this.output.write(Ee.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};var xo=class extends zt{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(Ee.cursor.move(0,-1)),this.value=o,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};var wn=class extends zt{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?bt(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=bt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=bt(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},Fo=class extends zt{_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,wo.styleText)(["inverse","hidden"],"_")}`;let o=this.masked,i=o.slice(0,this.cursor),r=o.slice(this.cursor);return`${i}${(0,wo.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)})}},ko=class extends zt{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?bt(i,1,this.options):i,this.changeValue(),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=bt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=bt(this.cursor,1,this.options);break}this.changeValue()})}};var Ro=class extends zt{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,wo.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"),Be=de(require("node:process"),1);var _n=de(qi(),1);function ap(){return Be.default.platform!=="win32"?Be.default.env.TERM!=="linux":!!Be.default.env.CI||!!Be.default.env.WT_SESSION||!!Be.default.env.TERMINUS_SUBLIME||Be.default.env.ConEmuTask==="{cmd::Cmder}"||Be.default.env.TERM_PROGRAM==="Terminus-Sublime"||Be.default.env.TERM_PROGRAM==="vscode"||Be.default.env.TERM==="xterm-256color"||Be.default.env.TERM==="alacritty"||Be.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var lp=ap();var Z=(e,t)=>lp?e:t,cp=Z("\u25C6","*"),dp=Z("\u25A0","x"),up=Z("\u25B2","x"),Vi=Z("\u25C7","o"),pp=Z("\u250C","T"),P=Z("\u2502","|"),Je=Z("\u2514","\u2014"),ih=Z("\u2510","T"),rh=Z("\u2518","\u2014"),Wi=Z("\u25CF",">"),Eo=Z("\u25CB"," "),mp=Z("\u25FB","[\u2022]"),xn=Z("\u25FC","[+]"),Fn=Z("\u25FB","[ ]"),fp=Z("\u25AA","\u2022"),kn=Z("\u2500","-"),gp=Z("\u256E","+"),hp=Z("\u251C","+"),Ap=Z("\u256F","+"),bp=Z("\u2570","+"),nh=Z("\u256D","+"),Cp=Z("\u25CF","\u2022"),yp=Z("\u25C6","*"),Up=Z("\u25B2","!"),Sp=Z("\u25A0","x"),Xt=e=>{switch(e){case"initial":case"active":return(0,C.styleText)("cyan",cp);case"cancel":return(0,C.styleText)("red",dp);case"error":return(0,C.styleText)("yellow",up);case"submit":return(0,C.styleText)("green",Vi)}},Dn=e=>{switch(e){case"initial":case"active":return(0,C.styleText)("cyan",P);case"cancel":return(0,C.styleText)("red",P);case"error":return(0,C.styleText)("yellow",P);case"submit":return(0,C.styleText)("green",P)}},Rn=(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}},Ji=({cursor:e,options:t,style:o,output:i=process.stdout,maxItems:r=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:s=4})=>{let a=_o(i)-n,l=Li(i),u=(0,C.styleText)("dim","..."),c=Math.max(l-s,0),d=Math.max(Math.min(r,c),5),f=0;e>=d-3&&(f=Math.max(Math.min(e-d+3,t.length-d),0));let b=d<t.length&&f>0,h=d<t.length&&f+d<t.length,A=Math.min(f+d,t.length),U=[],K=0;b&&K++,h&&K++;let x=f+(b?1:0),w=A-(h?1:0);for(let R=x;R<w;R++){let E=rt(o(t[R],R===e),a,{hard:!0,trim:!1}).split(`
181
- `);U.push(E),K+=E.length}if(K>c){let R=0,E=0,T=K,_=e-x,$=c,ye=()=>Rn(U,T,0,_,$),ie=()=>Rn(U,T,_+1,U.length,$,!0);b?({lineCount:T,removals:R}=ye(),T>$&&(h||($-=1),{lineCount:T,removals:E}=ie())):(h||($-=1),{lineCount:T,removals:E}=ie(),T>$&&($-=1,{lineCount:T,removals:R}=ye())),R>0&&(b=!0,U.splice(0,R)),E>0&&(h=!0,U.splice(U.length-E,E))}let v=[];b&&v.push(u);for(let R of U)for(let E of R)v.push(E);return h&&v.push(u),v};var Ve=e=>{let t=e.active??"Yes",o=e.inactive??"No";return new xo({active:t,inactive:o,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let i=e.withGuide??he.withGuide,r=`${Xt(this.state)} `,n=i?`${(0,C.styleText)("gray",P)} `:"",s=nt(e.output,e.message,n,r),a=`${i?`${(0,C.styleText)("gray",P)}
180
+ `)),this._prevFrame=e;return}}this.output.write(Oe.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};var Fo=class extends Yt{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(Oe.cursor.move(0,-1)),this.value=o,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};var xn=class extends Yt{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?yt(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=yt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=yt(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},ko=class extends Yt{_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,xo.styleText)(["inverse","hidden"],"_")}`;let o=this.masked,i=o.slice(0,this.cursor),r=o.slice(this.cursor);return`${i}${(0,xo.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)})}},Ro=class extends Yt{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?yt(i,1,this.options):i,this.changeValue(),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=yt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=yt(this.cursor,1,this.options);break}this.changeValue()})}};var _o=class extends Yt{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,xo.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"),Be=de(require("node:process"),1);var Dn=de(Mi(),1);function gm(){return Be.default.platform!=="win32"?Be.default.env.TERM!=="linux":!!Be.default.env.CI||!!Be.default.env.WT_SESSION||!!Be.default.env.TERMINUS_SUBLIME||Be.default.env.ConEmuTask==="{cmd::Cmder}"||Be.default.env.TERM_PROGRAM==="Terminus-Sublime"||Be.default.env.TERM_PROGRAM==="vscode"||Be.default.env.TERM==="xterm-256color"||Be.default.env.TERM==="alacritty"||Be.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var hm=gm();var Z=(e,t)=>hm?e:t,Am=Z("\u25C6","*"),bm=Z("\u25A0","x"),Cm=Z("\u25B2","x"),zi=Z("\u25C7","o"),ym=Z("\u250C","T"),G=Z("\u2502","|"),Je=Z("\u2514","\u2014"),gh=Z("\u2510","T"),hh=Z("\u2518","\u2014"),Ji=Z("\u25CF",">"),Oo=Z("\u25CB"," "),Um=Z("\u25FB","[\u2022]"),Fn=Z("\u25FC","[+]"),kn=Z("\u25FB","[ ]"),Sm=Z("\u25AA","\u2022"),Rn=Z("\u2500","-"),wm=Z("\u256E","+"),Km=Z("\u251C","+"),vm=Z("\u256F","+"),xm=Z("\u2570","+"),Ah=Z("\u256D","+"),Fm=Z("\u25CF","\u2022"),km=Z("\u25C6","*"),Rm=Z("\u25B2","!"),_m=Z("\u25A0","x"),Zt=e=>{switch(e){case"initial":case"active":return(0,C.styleText)("cyan",Am);case"cancel":return(0,C.styleText)("red",bm);case"error":return(0,C.styleText)("yellow",Cm);case"submit":return(0,C.styleText)("green",zi)}},En=e=>{switch(e){case"initial":case"active":return(0,C.styleText)("cyan",G);case"cancel":return(0,C.styleText)("red",G);case"error":return(0,C.styleText)("yellow",G);case"submit":return(0,C.styleText)("green",G)}},_n=(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}},Vi=({cursor:e,options:t,style:o,output:i=process.stdout,maxItems:r=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:s=4})=>{let a=Do(i)-n,l=Wi(i),d=(0,C.styleText)("dim","..."),c=Math.max(l-s,0),m=Math.max(Math.min(r,c),5),f=0;e>=m-3&&(f=Math.max(Math.min(e-m+3,t.length-m),0));let b=m<t.length&&f>0,h=m<t.length&&f+m<t.length,A=Math.min(f+m,t.length),U=[],w=0;b&&w++,h&&w++;let x=f+(b?1:0),v=A-(h?1:0);for(let _=x;_<v;_++){let O=nt(o(t[_],_===e),a,{hard:!0,trim:!1}).split(`
181
+ `);U.push(O),w+=O.length}if(w>c){let _=0,O=0,$=w,D=e-x,Q=c,ye=()=>_n(U,$,0,D,Q),ie=()=>_n(U,$,D+1,U.length,Q,!0);b?({lineCount:$,removals:_}=ye(),$>Q&&(h||(Q-=1),{lineCount:$,removals:O}=ie())):(h||(Q-=1),{lineCount:$,removals:O}=ie(),$>Q&&(Q-=1,{lineCount:$,removals:_}=ye())),_>0&&(b=!0,U.splice(0,_)),O>0&&(h=!0,U.splice(U.length-O,O))}let K=[];b&&K.push(d);for(let _ of U)for(let O of _)K.push(O);return h&&K.push(d),K};var Ve=e=>{let t=e.active??"Yes",o=e.inactive??"No";return new Fo({active:t,inactive:o,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let i=e.withGuide??he.withGuide,r=`${Zt(this.state)} `,n=i?`${(0,C.styleText)("gray",G)} `:"",s=st(e.output,e.message,n,r),a=`${i?`${(0,C.styleText)("gray",G)}
182
182
  `:""}${s}
183
- `,l=this.value?t:o;switch(this.state){case"submit":{let u=i?`${(0,C.styleText)("gray",P)} `:"";return`${a}${u}${(0,C.styleText)("dim",l)}`}case"cancel":{let u=i?`${(0,C.styleText)("gray",P)} `:"";return`${a}${u}${(0,C.styleText)(["strikethrough","dim"],l)}${i?`
184
- ${(0,C.styleText)("gray",P)}`:""}`}default:{let u=i?`${(0,C.styleText)("cyan",P)} `:"",c=i?(0,C.styleText)("cyan",Je):"";return`${a}${u}${this.value?`${(0,C.styleText)("green",Wi)} ${t}`:`${(0,C.styleText)("dim",Eo)} ${(0,C.styleText)("dim",t)}`}${e.vertical?i?`
185
- ${(0,C.styleText)("cyan",P)} `:`
186
- `:` ${(0,C.styleText)("dim","/")} `}${this.value?`${(0,C.styleText)("dim",Eo)} ${(0,C.styleText)("dim",o)}`:`${(0,C.styleText)("green",Wi)} ${o}`}
183
+ `,l=this.value?t:o;switch(this.state){case"submit":{let d=i?`${(0,C.styleText)("gray",G)} `:"";return`${a}${d}${(0,C.styleText)("dim",l)}`}case"cancel":{let d=i?`${(0,C.styleText)("gray",G)} `:"";return`${a}${d}${(0,C.styleText)(["strikethrough","dim"],l)}${i?`
184
+ ${(0,C.styleText)("gray",G)}`:""}`}default:{let d=i?`${(0,C.styleText)("cyan",G)} `:"",c=i?(0,C.styleText)("cyan",Je):"";return`${a}${d}${this.value?`${(0,C.styleText)("green",Ji)} ${t}`:`${(0,C.styleText)("dim",Oo)} ${(0,C.styleText)("dim",t)}`}${e.vertical?i?`
185
+ ${(0,C.styleText)("cyan",G)} `:`
186
+ `:` ${(0,C.styleText)("dim","/")} `}${this.value?`${(0,C.styleText)("dim",Oo)} ${(0,C.styleText)("dim",o)}`:`${(0,C.styleText)("green",Ji)} ${o}`}
187
187
  ${c}
188
- `}}}}).prompt()};var En=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 X={message:(e=[],{symbol:t=(0,C.styleText)("gray",P),secondarySymbol:o=(0,C.styleText)("gray",P),output:i=process.stdout,spacing:r=1,withGuide:n}={})=>{let s=[],a=n??he.withGuide,l=a?o:"",u=a?`${t} `:"",c=a?`${o} `:"";for(let f=0;f<r;f++)s.push(l);let d=Array.isArray(e)?e:e.split(`
189
- `);if(d.length>0){let[f,...b]=d;f.length>0?s.push(`${u}${f}`):s.push(a?t:"");for(let h of b)h.length>0?s.push(`${c}${h}`):s.push(a?o:"")}i.write(`${s.join(`
188
+ `}}}}).prompt()};var On=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 X={message:(e=[],{symbol:t=(0,C.styleText)("gray",G),secondarySymbol:o=(0,C.styleText)("gray",G),output:i=process.stdout,spacing:r=1,withGuide:n}={})=>{let s=[],a=n??he.withGuide,l=a?o:"",d=a?`${t} `:"",c=a?`${o} `:"";for(let f=0;f<r;f++)s.push(l);let m=Array.isArray(e)?e:e.split(`
189
+ `);if(m.length>0){let[f,...b]=m;f.length>0?s.push(`${d}${f}`):s.push(a?t:"");for(let h of b)h.length>0?s.push(`${c}${h}`):s.push(a?o:"")}i.write(`${s.join(`
190
190
  `)}
191
- `)},info:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("blue",Cp)})},success:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("green",yp)})},step:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("green",Vi)})},warn:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("yellow",Up)})},warning:(e,t)=>{X.warn(e,t)},error:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("red",Sp)})}},Bn=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??he.withGuide?`${(0,C.styleText)("gray",Je)} `:"";o.write(`${i}${(0,C.styleText)("red",e)}
191
+ `)},info:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("blue",Fm)})},success:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("green",km)})},step:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("green",zi)})},warn:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("yellow",Rm)})},warning:(e,t)=>{X.warn(e,t)},error:(e,t)=>{X.message(e,{...t,symbol:(0,C.styleText)("red",_m)})}},Bn=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??he.withGuide?`${(0,C.styleText)("gray",Je)} `:"";o.write(`${i}${(0,C.styleText)("red",e)}
192
192
 
193
- `)},Bo=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??he.withGuide?`${(0,C.styleText)("gray",pp)} `:"";o.write(`${i}${e}
194
- `)},wt=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??he.withGuide?`${(0,C.styleText)("gray",P)}
193
+ `)},Bo=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??he.withGuide?`${(0,C.styleText)("gray",ym)} `:"";o.write(`${i}${e}
194
+ `)},Ft=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??he.withGuide?`${(0,C.styleText)("gray",G)}
195
195
  ${(0,C.styleText)("gray",Je)} `:"";o.write(`${i}${e}
196
196
 
197
- `)};var Yt=(e,t)=>e.split(`
197
+ `)};var Xt=(e,t)=>e.split(`
198
198
  `).map(o=>t(o)).join(`
199
- `),On=e=>{let t=(i,r)=>{let n=i.label??String(i.value);return r==="disabled"?`${(0,C.styleText)("gray",Fn)} ${Yt(n,s=>(0,C.styleText)(["strikethrough","gray"],s))}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint??"disabled"})`)}`:""}`:r==="active"?`${(0,C.styleText)("cyan",mp)} ${n}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="selected"?`${(0,C.styleText)("green",xn)} ${Yt(n,s=>(0,C.styleText)("dim",s))}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="cancelled"?`${Yt(n,s=>(0,C.styleText)(["strikethrough","dim"],s))}`:r==="active-selected"?`${(0,C.styleText)("green",xn)} ${n}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="submitted"?`${Yt(n,s=>(0,C.styleText)("dim",s))}`:`${(0,C.styleText)("dim",Fn)} ${Yt(n,s=>(0,C.styleText)("dim",s))}`},o=e.required??!0;return new wn({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.
200
- ${(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??he.withGuide,r=nt(e.output,e.message,i?`${Dn(this.state)} `:"",`${Xt(this.state)} `),n=`${i?`${(0,C.styleText)("gray",P)}
199
+ `),Tn=e=>{let t=(i,r)=>{let n=i.label??String(i.value);return r==="disabled"?`${(0,C.styleText)("gray",kn)} ${Xt(n,s=>(0,C.styleText)(["strikethrough","gray"],s))}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint??"disabled"})`)}`:""}`:r==="active"?`${(0,C.styleText)("cyan",Um)} ${n}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="selected"?`${(0,C.styleText)("green",Fn)} ${Xt(n,s=>(0,C.styleText)("dim",s))}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="cancelled"?`${Xt(n,s=>(0,C.styleText)(["strikethrough","dim"],s))}`:r==="active-selected"?`${(0,C.styleText)("green",Fn)} ${n}${i.hint?` ${(0,C.styleText)("dim",`(${i.hint})`)}`:""}`:r==="submitted"?`${Xt(n,s=>(0,C.styleText)("dim",s))}`:`${(0,C.styleText)("dim",kn)} ${Xt(n,s=>(0,C.styleText)("dim",s))}`},o=e.required??!0;return new xn({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.
200
+ ${(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??he.withGuide,r=st(e.output,e.message,i?`${En(this.state)} `:"",`${Zt(this.state)} `),n=`${i?`${(0,C.styleText)("gray",G)}
201
201
  `:""}${r}
202
- `,s=this.value??[],a=(l,u)=>{if(l.disabled)return t(l,"disabled");let c=s.includes(l.value);return u&&c?t(l,"active-selected"):c?t(l,"selected"):t(l,u?"active":"inactive")};switch(this.state){case"submit":{let l=this.options.filter(({value:c})=>s.includes(c)).map(c=>t(c,"submitted")).join((0,C.styleText)("dim",", "))||(0,C.styleText)("dim","none"),u=nt(e.output,l,i?`${(0,C.styleText)("gray",P)} `:"");return`${n}${u}`}case"cancel":{let l=this.options.filter(({value:c})=>s.includes(c)).map(c=>t(c,"cancelled")).join((0,C.styleText)("dim",", "));if(l.trim()==="")return`${n}${(0,C.styleText)("gray",P)}`;let u=nt(e.output,l,i?`${(0,C.styleText)("gray",P)} `:"");return`${n}${u}${i?`
203
- ${(0,C.styleText)("gray",P)}`:""}`}case"error":{let l=i?`${(0,C.styleText)("yellow",P)} `:"",u=this.error.split(`
202
+ `,s=this.value??[],a=(l,d)=>{if(l.disabled)return t(l,"disabled");let c=s.includes(l.value);return d&&c?t(l,"active-selected"):c?t(l,"selected"):t(l,d?"active":"inactive")};switch(this.state){case"submit":{let l=this.options.filter(({value:c})=>s.includes(c)).map(c=>t(c,"submitted")).join((0,C.styleText)("dim",", "))||(0,C.styleText)("dim","none"),d=st(e.output,l,i?`${(0,C.styleText)("gray",G)} `:"");return`${n}${d}`}case"cancel":{let l=this.options.filter(({value:c})=>s.includes(c)).map(c=>t(c,"cancelled")).join((0,C.styleText)("dim",", "));if(l.trim()==="")return`${n}${(0,C.styleText)("gray",G)}`;let d=st(e.output,l,i?`${(0,C.styleText)("gray",G)} `:"");return`${n}${d}${i?`
203
+ ${(0,C.styleText)("gray",G)}`:""}`}case"error":{let l=i?`${(0,C.styleText)("yellow",G)} `:"",d=this.error.split(`
204
204
  `).map((f,b)=>b===0?`${i?`${(0,C.styleText)("yellow",Je)} `:""}${(0,C.styleText)("yellow",f)}`:` ${f}`).join(`
205
205
  `),c=n.split(`
206
- `).length,d=u.split(`
207
- `).length+1;return`${n}${l}${Ji({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:c+d,style:a}).join(`
206
+ `).length,m=d.split(`
207
+ `).length+1;return`${n}${l}${Vi({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:c+m,style:a}).join(`
208
208
  ${l}`)}
209
- ${u}
210
- `}default:{let l=i?`${(0,C.styleText)("cyan",P)} `:"",u=n.split(`
211
- `).length,c=i?2:1;return`${n}${l}${Ji({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:u+c,style:a}).join(`
209
+ ${d}
210
+ `}default:{let l=i?`${(0,C.styleText)("cyan",G)} `:"",d=n.split(`
211
+ `).length,c=i?2:1;return`${n}${l}${Vi({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:d+c,style:a}).join(`
212
212
  ${l}`)}
213
213
  ${i?(0,C.styleText)("cyan",Je):""}
214
- `}}}}).prompt()},Kp=e=>(0,C.styleText)("dim",e),vp=(e,t,o)=>{let i={hard:!0,trim:!1},r=rt(e,t,i).split(`
215
- `),n=r.reduce((l,u)=>Math.max(Ue(u),l),0),s=r.map(o).reduce((l,u)=>Math.max(Ue(u),l),0),a=t-(s-n);return rt(e,a,i)},Tn=(e="",t="",o)=>{let i=o?.output??Be.default.stdout,r=o?.withGuide??he.withGuide,n=o?.format??Kp,s=["",...vp(e,_o(i)-6,n).split(`
216
- `).map(n),""],a=Ue(t),l=Math.max(s.reduce((f,b)=>{let h=Ue(b);return h>f?h:f},0),a)+2,u=s.map(f=>`${(0,C.styleText)("gray",P)} ${f}${" ".repeat(l-Ue(f))}${(0,C.styleText)("gray",P)}`).join(`
217
- `),c=r?`${(0,C.styleText)("gray",P)}
218
- `:"",d=r?hp:bp;i.write(`${c}${(0,C.styleText)("green",Vi)} ${(0,C.styleText)("reset",t)} ${(0,C.styleText)("gray",kn.repeat(Math.max(l-a-1,1))+gp)}
219
- ${u}
220
- ${(0,C.styleText)("gray",d+kn.repeat(l+2)+Ap)}
221
- `)},jn=e=>new Fo({validate:e.validate,mask:e.mask??fp,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??he.withGuide,o=`${t?`${(0,C.styleText)("gray",P)}
222
- `:""}${Xt(this.state)} ${e.message}
223
- `,i=this.userInputWithCursor,r=this.masked;switch(this.state){case"error":{let n=t?`${(0,C.styleText)("yellow",P)} `:"",s=t?`${(0,C.styleText)("yellow",Je)} `:"",a=r??"";return e.clearOnError&&this.clear(),`${o.trim()}
214
+ `}}}}).prompt()},Dm=e=>(0,C.styleText)("dim",e),Em=(e,t,o)=>{let i={hard:!0,trim:!1},r=nt(e,t,i).split(`
215
+ `),n=r.reduce((l,d)=>Math.max(Ue(d),l),0),s=r.map(o).reduce((l,d)=>Math.max(Ue(d),l),0),a=t-(s-n);return nt(e,a,i)},jn=(e="",t="",o)=>{let i=o?.output??Be.default.stdout,r=o?.withGuide??he.withGuide,n=o?.format??Dm,s=["",...Em(e,Do(i)-6,n).split(`
216
+ `).map(n),""],a=Ue(t),l=Math.max(s.reduce((f,b)=>{let h=Ue(b);return h>f?h:f},0),a)+2,d=s.map(f=>`${(0,C.styleText)("gray",G)} ${f}${" ".repeat(l-Ue(f))}${(0,C.styleText)("gray",G)}`).join(`
217
+ `),c=r?`${(0,C.styleText)("gray",G)}
218
+ `:"",m=r?Km:xm;i.write(`${c}${(0,C.styleText)("green",zi)} ${(0,C.styleText)("reset",t)} ${(0,C.styleText)("gray",Rn.repeat(Math.max(l-a-1,1))+wm)}
219
+ ${d}
220
+ ${(0,C.styleText)("gray",m+Rn.repeat(l+2)+vm)}
221
+ `)},In=e=>new ko({validate:e.validate,mask:e.mask??Sm,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??he.withGuide,o=`${t?`${(0,C.styleText)("gray",G)}
222
+ `:""}${Zt(this.state)} ${e.message}
223
+ `,i=this.userInputWithCursor,r=this.masked;switch(this.state){case"error":{let n=t?`${(0,C.styleText)("yellow",G)} `:"",s=t?`${(0,C.styleText)("yellow",Je)} `:"",a=r??"";return e.clearOnError&&this.clear(),`${o.trim()}
224
224
  ${n}${a}
225
225
  ${s}${(0,C.styleText)("yellow",this.error)}
226
- `}case"submit":{let n=t?`${(0,C.styleText)("gray",P)} `:"",s=r?(0,C.styleText)("dim",r):"";return`${o}${n}${s}`}case"cancel":{let n=t?`${(0,C.styleText)("gray",P)} `:"",s=r?(0,C.styleText)(["strikethrough","dim"],r):"";return`${o}${n}${s}${r&&t?`
227
- ${(0,C.styleText)("gray",P)}`:""}`}default:{let n=t?`${(0,C.styleText)("cyan",P)} `:"",s=t?(0,C.styleText)("cyan",Je):"";return`${o}${n}${i}
226
+ `}case"submit":{let n=t?`${(0,C.styleText)("gray",G)} `:"",s=r?(0,C.styleText)("dim",r):"";return`${o}${n}${s}`}case"cancel":{let n=t?`${(0,C.styleText)("gray",G)} `:"",s=r?(0,C.styleText)(["strikethrough","dim"],r):"";return`${o}${n}${s}${r&&t?`
227
+ ${(0,C.styleText)("gray",G)}`:""}`}default:{let n=t?`${(0,C.styleText)("cyan",G)} `:"",s=t?(0,C.styleText)("cyan",Je):"";return`${o}${n}${i}
228
228
  ${s}
229
- `}}}}).prompt();var sh={light:Z("\u2500","-"),heavy:Z("\u2501","="),block:Z("\u2588","#")};var Do=(e,t)=>e.includes(`
229
+ `}}}}).prompt();var bh={light:Z("\u2500","-"),heavy:Z("\u2501","="),block:Z("\u2588","#")};var Eo=(e,t)=>e.includes(`
230
230
  `)?e.split(`
231
231
  `).map(o=>t(o)).join(`
232
- `):t(e),se=e=>{let t=(o,i)=>{let r=o.label??String(o.value);switch(i){case"disabled":return`${(0,C.styleText)("gray",Eo)} ${Do(r,n=>(0,C.styleText)("gray",n))}${o.hint?` ${(0,C.styleText)("dim",`(${o.hint??"disabled"})`)}`:""}`;case"selected":return`${Do(r,n=>(0,C.styleText)("dim",n))}`;case"active":return`${(0,C.styleText)("green",Wi)} ${r}${o.hint?` ${(0,C.styleText)("dim",`(${o.hint})`)}`:""}`;case"cancelled":return`${Do(r,n=>(0,C.styleText)(["strikethrough","dim"],n))}`;default:return`${(0,C.styleText)("dim",Eo)} ${Do(r,n=>(0,C.styleText)("dim",n))}`}};return new ko({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let o=e.withGuide??he.withGuide,i=`${Xt(this.state)} `,r=`${Dn(this.state)} `,n=nt(e.output,e.message,r,i),s=`${o?`${(0,C.styleText)("gray",P)}
232
+ `):t(e),se=e=>{let t=(o,i)=>{let r=o.label??String(o.value);switch(i){case"disabled":return`${(0,C.styleText)("gray",Oo)} ${Eo(r,n=>(0,C.styleText)("gray",n))}${o.hint?` ${(0,C.styleText)("dim",`(${o.hint??"disabled"})`)}`:""}`;case"selected":return`${Eo(r,n=>(0,C.styleText)("dim",n))}`;case"active":return`${(0,C.styleText)("green",Ji)} ${r}${o.hint?` ${(0,C.styleText)("dim",`(${o.hint})`)}`:""}`;case"cancelled":return`${Eo(r,n=>(0,C.styleText)(["strikethrough","dim"],n))}`;default:return`${(0,C.styleText)("dim",Oo)} ${Eo(r,n=>(0,C.styleText)("dim",n))}`}};return new Ro({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let o=e.withGuide??he.withGuide,i=`${Zt(this.state)} `,r=`${En(this.state)} `,n=st(e.output,e.message,r,i),s=`${o?`${(0,C.styleText)("gray",G)}
233
233
  `:""}${n}
234
- `;switch(this.state){case"submit":{let a=o?`${(0,C.styleText)("gray",P)} `:"",l=nt(e.output,t(this.options[this.cursor],"selected"),a);return`${s}${l}`}case"cancel":{let a=o?`${(0,C.styleText)("gray",P)} `:"",l=nt(e.output,t(this.options[this.cursor],"cancelled"),a);return`${s}${l}${o?`
235
- ${(0,C.styleText)("gray",P)}`:""}`}default:{let a=o?`${(0,C.styleText)("cyan",P)} `:"",l=o?(0,C.styleText)("cyan",Je):"",u=s.split(`
236
- `).length,c=o?2:1;return`${s}${a}${Ji({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:u+c,style:(d,f)=>t(d,d.disabled?"disabled":f?"active":"inactive")}).join(`
234
+ `;switch(this.state){case"submit":{let a=o?`${(0,C.styleText)("gray",G)} `:"",l=st(e.output,t(this.options[this.cursor],"selected"),a);return`${s}${l}`}case"cancel":{let a=o?`${(0,C.styleText)("gray",G)} `:"",l=st(e.output,t(this.options[this.cursor],"cancelled"),a);return`${s}${l}${o?`
235
+ ${(0,C.styleText)("gray",G)}`:""}`}default:{let a=o?`${(0,C.styleText)("cyan",G)} `:"",l=o?(0,C.styleText)("cyan",Je):"",d=s.split(`
236
+ `).length,c=o?2:1;return`${s}${a}${Vi({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:d+c,style:(m,f)=>t(m,m.disabled?"disabled":f?"active":"inactive")}).join(`
237
237
  ${a}`)}
238
238
  ${l}
239
- `}}}}).prompt()};var ah=`${(0,C.styleText)("gray",P)} `;var V=e=>new Ro({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??he.withGuide,o=`${`${t?`${(0,C.styleText)("gray",P)}
240
- `:""}${Xt(this.state)} `}${e.message}
241
- `,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",P)} `:"",l=t?(0,C.styleText)("yellow",Je):"";return`${o.trim()}
239
+ `}}}}).prompt()};var Ch=`${(0,C.styleText)("gray",G)} `;var z=e=>new _o({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??he.withGuide,o=`${`${t?`${(0,C.styleText)("gray",G)}
240
+ `:""}${Zt(this.state)} `}${e.message}
241
+ `,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",G)} `:"",l=t?(0,C.styleText)("yellow",Je):"";return`${o.trim()}
242
242
  ${a}${r}
243
243
  ${l}${s}
244
- `}case"submit":{let s=n?` ${(0,C.styleText)("dim",n)}`:"",a=t?(0,C.styleText)("gray",P):"";return`${o}${a}${s}`}case"cancel":{let s=n?` ${(0,C.styleText)(["strikethrough","dim"],n)}`:"",a=t?(0,C.styleText)("gray",P):"";return`${o}${a}${s}${n.trim()?`
245
- ${a}`:""}`}default:{let s=t?`${(0,C.styleText)("cyan",P)} `:"",a=t?(0,C.styleText)("cyan",Je):"";return`${o}${s}${r}
244
+ `}case"submit":{let s=n?` ${(0,C.styleText)("dim",n)}`:"",a=t?(0,C.styleText)("gray",G):"";return`${o}${a}${s}`}case"cancel":{let s=n?` ${(0,C.styleText)(["strikethrough","dim"],n)}`:"",a=t?(0,C.styleText)("gray",G):"";return`${o}${a}${s}${n.trim()?`
245
+ ${a}`:""}`}default:{let s=t?`${(0,C.styleText)("cyan",G)} `:"",a=t?(0,C.styleText)("cyan",Je):"";return`${o}${s}${r}
246
246
  ${a}
247
- `}}}}).prompt();var po=de(We(),1);Ct();process.env.RESEND_USER_AGENT=`resend-cli:${re}`;var st=new TextEncoder,$n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Zt=new Uint8Array(256);for(let e=0;e<$n.length;e++)Zt[$n.charCodeAt(e)]=e;function Oo(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=Zt[e.charCodeAt(s)],l=Zt[e.charCodeAt(s+1)],u=Zt[e.charCodeAt(s+2)],c=Zt[e.charCodeAt(s+3)];n[i++]=a<<2|l>>4,n[i++]=(l&15)<<4|u>>2,n[i++]=(u&3)<<6|c&63}return r}var xp=new Map([["iso-8859-8-i","iso-8859-8"],["iso-8859-8-e","iso-8859-8"]]);function xt(e){e=(e||"utf8").trim().toLowerCase(),e=xp.get(e)||e;let t;try{t=new TextDecoder(e)}catch{t=new TextDecoder("windows-1252")}return t}async function at(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 Hn(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70?String.fromCharCode(e):!1}function Fp(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=st.encode(o),s=[];for(let l=0,u=n.length;l<u;l++){let c=n[l];if(l<=u-2&&c===61){let d=Hn(n[l+1]),f=Hn(n[l+2]);if(d&&f){let b=parseInt(d+f,16);s.push(b),l+=2;continue}}s.push(c)}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=Oo(o.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):r=st.encode(o);return xt(e).decode(r)}function yt(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)=>Fp(n,s,a));if(t&&i.indexOf("\uFFFD")>=0)t=!1;else return i}}function kp(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=st.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 xt(t).decode(i)}function Gn(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]=kp(o.values.sort((r,n)=>r.nr-n.nr).map(r=>r.value).join(""),o.charset)})}var eo=class{constructor(){this.chunks=[]}update(t){this.chunks.push(t),this.chunks.push(`
248
- `)}finalize(){return at(new Blob(this.chunks,{type:"application/octet-stream"}))}};var to=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(Oo(r))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push(Oo(this.remainder)),at(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Qn=/^=[a-f0-9]{2}$/i,Rp=/(?==[a-f0-9]{2})/i,_p=/=\r?\n/g,Dp=/=[a-fA-F0-9]?$/,oo=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(_p,"");let o=t.split(Rp),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){Qn.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);Qn.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)+`
249
- `;if(o=this.remainder+o,o.length<this.maxChunkSize){this.remainder=o;return}this.remainder="";let i=o.match(Dp);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=""),at(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Ep=xt(),Ft=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 to:/quoted-printable/i.test(t)?this.contentDecoder=new oo({decoder:xt(this.contentType.parsed.params.charset)}):this.contentDecoder=new eo}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.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,c=t.length;u<c;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()),Gn(o),o}decodeFlowedText(t,o){return t.split(/\r?\n/).reduce((i,r)=>i.endsWith(" ")&&i!=="-- "&&!i.endsWith(`
247
+ `}}}}).prompt();var mo=de(We(),1);Ut();process.env.RESEND_USER_AGENT=`resend-cli:${re}`;var at=new TextEncoder,Hn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",eo=new Uint8Array(256);for(let e=0;e<Hn.length;e++)eo[Hn.charCodeAt(e)]=e;function To(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=eo[e.charCodeAt(s)],l=eo[e.charCodeAt(s+1)],d=eo[e.charCodeAt(s+2)],c=eo[e.charCodeAt(s+3)];n[i++]=a<<2|l>>4,n[i++]=(l&15)<<4|d>>2,n[i++]=(d&3)<<6|c&63}return r}var Bm=new Map([["iso-8859-8-i","iso-8859-8"],["iso-8859-8-e","iso-8859-8"]]);function kt(e){e=(e||"utf8").trim().toLowerCase(),e=Bm.get(e)||e;let t;try{t=new TextDecoder(e)}catch{t=new TextDecoder("windows-1252")}return t}async function lt(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 Gn(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70?String.fromCharCode(e):!1}function Tm(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=at.encode(o),s=[];for(let l=0,d=n.length;l<d;l++){let c=n[l];if(l<=d-2&&c===61){let m=Gn(n[l+1]),f=Gn(n[l+2]);if(m&&f){let b=parseInt(m+f,16);s.push(b),l+=2;continue}}s.push(c)}r=new ArrayBuffer(s.length);let a=new DataView(r);for(let l=0,d=s.length;l<d;l++)a.setUint8(l,s[l])}else t==="B"?r=To(o.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):r=at.encode(o);return kt(e).decode(r)}function St(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)=>Tm(n,s,a));if(t&&i.indexOf("\uFFFD")>=0)t=!1;else return i}}function jm(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=at.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 kt(t).decode(i)}function Qn(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]=jm(o.values.sort((r,n)=>r.nr-n.nr).map(r=>r.value).join(""),o.charset)})}var to=class{constructor(){this.chunks=[]}update(t){this.chunks.push(t),this.chunks.push(`
248
+ `)}finalize(){return lt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var oo=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(To(r))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push(To(this.remainder)),lt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Nn=/^=[a-f0-9]{2}$/i,Im=/(?==[a-f0-9]{2})/i,Pm=/=\r?\n/g,$m=/=[a-fA-F0-9]?$/,io=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(Pm,"");let o=t.split(Im),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){Nn.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);Nn.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)+`
249
+ `;if(o=this.remainder+o,o.length<this.maxChunkSize){this.remainder=o;return}this.remainder="";let i=o.match($m);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=""),lt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Hm=kt(),Rt=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 oo:/quoted-printable/i.test(t)?this.contentDecoder=new io({decoder:kt(this.contentType.parsed.params.charset)}):this.contentDecoder=new to}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.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 d=0,c=t.length;d<c;d++)switch(l=t.charAt(d),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()),Qn(o),o}decodeFlowedText(t,o){return t.split(/\r?\n/).reduce((i,r)=>i.endsWith(" ")&&i!=="-- "&&!i.endsWith(`
250
250
  -- `)?o?i.slice(0,-1)+r:i+r:i+`
251
- `+r).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let t=xt(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]+=`
252
- `+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:st.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(Ep.decode(t));break;case"body":this.contentDecoder.update(t)}}};var Bp={"&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;":`
253
- `,"&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"},Yi=Bp;function Op(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,(t,o)=>{if(typeof Yi[t]=="string")return Yi[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 Ut(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 Nn(e){return"<div>"+Ut(e).replace(/\n/g,"<br />")+"</div>"}function qn(e){return e=e.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,`
251
+ `+r).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let t=kt(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]+=`
252
+ `+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:at.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(Hm.decode(t));break;case"body":this.contentDecoder.update(t)}}};var Gm={"&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;":`
253
+ `,"&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"},Xi=Gm;function Qm(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,(t,o)=>{if(typeof Xi[t]=="string")return Xi[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 wt(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 qn(e){return"<div>"+wt(e).replace(/\n/g,"<br />")+"</div>"}function Mn(e){return e=e.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,`
254
254
  `).replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi,`
255
255
 
256
256
  `).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,`
@@ -260,60 +260,60 @@ ${a}
260
260
 
261
261
  `).replace(/^\n+/,`
262
262
  `).replace(/\n+$/,`
263
- `),e=Op(e),e}function Mn(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function Xi(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(Mn(i))};return e.forEach(o),t.join("")}function Ln(e){return`<a href="mailto:${Ut(e.address)}" class="postal-email-address">${Ut(e.name||`<${e.address}>`)}</a>`}function Zi(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">${Ut(i.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';t.push(n),i.group.forEach(o),t.push(s)}else t.push(Ln(i))};return e.forEach(o),t.join(" ")}function Tp(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
264
- `)}return n}function er(e){let t=[];if(e.from&&t.push({key:"From",val:Mn(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:Xi(e.to)}),e.cc&&e.cc.length&&t.push({key:"Cc",val:Xi(e.cc)}),e.bcc&&e.bcc.length&&t.push({key:"Bcc",val:Xi(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 Tp(s.val,80,!0).split(/\r?\n/).map(d=>d.trim()).map((d,f)=>`${f?u:l}${d}`)});let i=t.map(s=>s.length).reduce((s,a)=>a>s?a:s,0),r="-".repeat(i);return`
263
+ `),e=Qm(e),e}function Ln(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function Zi(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(Ln(i))};return e.forEach(o),t.join("")}function Wn(e){return`<a href="mailto:${wt(e.address)}" class="postal-email-address">${wt(e.name||`<${e.address}>`)}</a>`}function er(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">${wt(i.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';t.push(n),i.group.forEach(o),t.push(s)}else t.push(Wn(i))};return e.forEach(o),t.join(" ")}function Nm(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
264
+ `)}return n}function tr(e){let t=[];if(e.from&&t.push({key:"From",val:Ln(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:Zi(e.to)}),e.cc&&e.cc.length&&t.push({key:"Cc",val:Zi(e.cc)}),e.bcc&&e.bcc.length&&t.push({key:"Bcc",val:Zi(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)}`,d=`${" ".repeat(s.key.length+1)} ${" ".repeat(a)}`;return Nm(s.val,80,!0).split(/\r?\n/).map(m=>m.trim()).map((m,f)=>`${f?d:l}${m}`)});let i=t.map(s=>s.length).reduce((s,a)=>a>s?a:s,0),r="-".repeat(i);return`
265
265
  ${r}
266
266
  ${t.join(`
267
267
  `)}
268
268
  ${r}
269
- `}function tr(e){let t=[];if(e.from&&t.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${Ln(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">${Ut(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="${Ut(e.date)}">${Ut(r)}</div>`)}return e.to&&e.to.length&&t.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${Zi(e.to)}</div>`),e.cc&&e.cc.length&&t.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${Zi(e.cc)}</div>`),e.bcc&&e.bcc.length&&t.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${Zi(e.bcc)}</div>`),`<div class="postal-email-header">${t.length?'<div class="postal-email-header-row">':""}${t.join(`</div>
270
- <div class="postal-email-header-row">`)}${t.length?"</div>":""}</div>`}function jp(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 c=e[a],d=a?e[a-1]:null;if(c.type==="operator")switch(c.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 c.value&&(i==="address"&&(c.value=c.value.replace(/^[^<]*<\s*/,"")),d&&d.noBreak&&s[i].length?(s[i][s[i].length-1]+=c.value,i==="text"&&u&&(s.textWasQuoted[s.textWasQuoted.length-1]=!0)):(s[i].push(c.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 c=[];s.group.length&&ir(s.group.join(","),{_depth:t+1}).forEach(f=>{f.group?c=c.concat(f.group):c.push(f)}),n.push({name:yt(s.text||r&&r.name),group:c})}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 c=function(d){return s.address.length?d:(s.address=[d.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*/,c).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 c=yt(s.text);if(/<[^<>]+@[^<>]+>/.test(c)){let d=ir(c);if(d&&d.length)return d}return[{address:"",name:c}]}r={address:s.address||s.text||"",name:yt(s.text||s.address||"")},r.address===r.name&&((r.address||"").match(/@/)?r.name="":r.address=""),n.push(r)}return n}var or=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",`
269
+ `}function or(e){let t=[];if(e.from&&t.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${Wn(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">${wt(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="${wt(e.date)}">${wt(r)}</div>`)}return e.to&&e.to.length&&t.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${er(e.to)}</div>`),e.cc&&e.cc.length&&t.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${er(e.cc)}</div>`),e.bcc&&e.bcc.length&&t.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${er(e.bcc)}</div>`),`<div class="postal-email-header">${t.length?'<div class="postal-email-header-row">':""}${t.join(`</div>
270
+ <div class="postal-email-header-row">`)}${t.length?"</div>":""}</div>`}function qm(e,t){let o=!1,i="text",r,n=[],s={address:[],comment:[],group:[],text:[],textWasQuoted:[]},a,l,d=!1;for(a=0,l=e.length;a<l;a++){let c=e[a],m=a?e[a-1]:null;if(c.type==="operator")switch(c.value){case"<":i="address",d=!1;break;case"(":i="comment",d=!1;break;case":":i="group",o=!0,d=!1;break;case'"':d=!d,i="text";break;default:i="text",d=!1;break}else c.value&&(i==="address"&&(c.value=c.value.replace(/^[^<]*<\s*/,"")),m&&m.noBreak&&s[i].length?(s[i][s[i].length-1]+=c.value,i==="text"&&d&&(s.textWasQuoted[s.textWasQuoted.length-1]=!0)):(s[i].push(c.value),i==="text"&&s.textWasQuoted.push(d)))}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),o){s.text=s.text.join(" ");let c=[];s.group.length&&rr(s.group.join(","),{_depth:t+1}).forEach(f=>{f.group?c=c.concat(f.group):c.push(f)}),n.push({name:St(s.text||r&&r.name),group:c})}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 c=function(m){return s.address.length?m:(s.address=[m.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*/,c).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 c=St(s.text);if(/<[^<>]+@[^<>]+>/.test(c)){let m=rr(c);if(m&&m.length)return m}return[{address:"",name:c}]}r={address:s.address||s.text||"",name:St(s.text||s.address||"")},r.address===r.name&&((r.address||"").match(/@/)?r.name="":r.address=""),n.push(r)}return n}var ir=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",`
271
271
  `,",",";"].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===`
272
- `&&(t=" "),(t.charCodeAt(0)>=33||[" "," "].includes(t))&&(this.node.value+=t),this.escaped=!1}},Ip=50;function ir(e,t){t=t||{};let o=t._depth||0;if(o>Ip)return[];let r=new or(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=jp(l,o),l.length&&(a=a.concat(l))}),t.flatten){let l=[],u=c=>{c.forEach(d=>{if(d.group)return u(d.group);l.push(d)})};return u(a),l}return a}var To=ir;function Wn(e){for(var t="",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(e),r=i.byteLength,n=r%3,s=r-n,a,l,u,c,d,f=0;f<s;f=f+3)d=i[f]<<16|i[f+1]<<8|i[f+2],a=(d&16515072)>>18,l=(d&258048)>>12,u=(d&4032)>>6,c=d&63,t+=o[a]+o[l]+o[u]+o[c];return n==1?(d=i[s],a=(d&252)>>2,l=(d&3)<<4,t+=o[a]+o[l]+"=="):n==2&&(d=i[s]<<8|i[s+1],a=(d&64512)>>10,l=(d&1008)>>4,u=(d&15)<<2,t+=o[a]+o[l]+o[u]+"="),t}var Pp=256,$p=2*1024*1024;function rr(e){return e.replace(/-(.)/g,(t,o)=>o.toUpperCase())}var io=class e{static parse(t,o){return new e(o).parse(t)}constructor(t){this.options=t||{},this.mimeOptions={maxNestingDepth:this.options.maxNestingDepth||Pp,maxHeadersSize:this.options.maxHeadersSize||$p},this.root=this.currentNode=new Ft({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 c=0;c<n.value.length;c++)if(t[c+2]!==n.value[c]){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 c=a;c<t.length;c++)if(t[c]!==32&&t[c]!==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 Ft({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 if(this.isInlineMessageRfc822(s)&&!r){let u=new e;s.subMessage=await u.parse(s.content),i.has(s)||i.set(s,{});let c=i.get(s);(s.subMessage.text||!s.subMessage.html)&&(c.plain=c.plain||[],c.plain.push({type:"subMessage",value:s.subMessage}),o.add("plain")),s.subMessage.html&&(c.html=c.html||[],c.html.push({type:"subMessage",value:s.subMessage}),o.add("html")),u.textMap&&u.textMap.forEach((d,f)=>{i.set(f,d)});for(let d of s.subMessage.attachments||[])this.attachments.push(d)}else if(this.isInlineTextNode(s)){let u=s.contentType.parsed.value.substr(s.contentType.parsed.value.indexOf("/")+1),c=a||s;i.has(c)||i.set(c,{});let d=i.get(c);d[u]=d[u]||[],d[u].push({type:"text",value:s.getTextContent()}),o.add(u)}else if(s.content){let u=s.contentDisposition?.parsed?.params?.filename||s.contentType.parsed.params.name||null,c={filename:u?yt(u):null,mimeType:s.contentType.parsed.value,disposition:s.contentDisposition?.parsed?.value||null};switch(l&&s.contentId&&(c.related=!0),s.contentDescription&&(c.description=s.contentDescription),s.contentId&&(c.contentId=s.contentId),s.contentType.parsed.value){case"text/calendar":case"application/ics":{s.contentType.parsed.params.method&&(c.method=s.contentType.parsed.params.method.toString().toUpperCase().trim());let d=s.getTextContent().replace(/\r?\n/g,`
272
+ `&&(t=" "),(t.charCodeAt(0)>=33||[" "," "].includes(t))&&(this.node.value+=t),this.escaped=!1}},Mm=50;function rr(e,t){t=t||{};let o=t._depth||0;if(o>Mm)return[];let r=new ir(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=qm(l,o),l.length&&(a=a.concat(l))}),t.flatten){let l=[],d=c=>{c.forEach(m=>{if(m.group)return d(m.group);l.push(m)})};return d(a),l}return a}var jo=rr;function Jn(e){for(var t="",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(e),r=i.byteLength,n=r%3,s=r-n,a,l,d,c,m,f=0;f<s;f=f+3)m=i[f]<<16|i[f+1]<<8|i[f+2],a=(m&16515072)>>18,l=(m&258048)>>12,d=(m&4032)>>6,c=m&63,t+=o[a]+o[l]+o[d]+o[c];return n==1?(m=i[s],a=(m&252)>>2,l=(m&3)<<4,t+=o[a]+o[l]+"=="):n==2&&(m=i[s]<<8|i[s+1],a=(m&64512)>>10,l=(m&1008)>>4,d=(m&15)<<2,t+=o[a]+o[l]+o[d]+"="),t}var Lm=256,Wm=2*1024*1024;function nr(e){return e.replace(/-(.)/g,(t,o)=>o.toUpperCase())}var ro=class e{static parse(t,o){return new e(o).parse(t)}constructor(t){this.options=t||{},this.mimeOptions={maxNestingDepth:this.options.maxNestingDepth||Lm,maxHeadersSize:this.options.maxHeadersSize||Wm},this.root=this.currentNode=new Rt({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 c=0;c<n.value.length;c++)if(t[c+2]!==n.value[c]){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 d=!0;for(let c=a;c<t.length;c++)if(t[c]!==32&&t[c]!==9){d=!1;break}if(d)return l?(await n.node.finalize(),this.currentNode=n.node.parentNode||this.root):(await n.node.finalizeChildNodes(),this.currentNode=new Rt({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 if(this.isInlineMessageRfc822(s)&&!r){let d=new e;s.subMessage=await d.parse(s.content),i.has(s)||i.set(s,{});let c=i.get(s);(s.subMessage.text||!s.subMessage.html)&&(c.plain=c.plain||[],c.plain.push({type:"subMessage",value:s.subMessage}),o.add("plain")),s.subMessage.html&&(c.html=c.html||[],c.html.push({type:"subMessage",value:s.subMessage}),o.add("html")),d.textMap&&d.textMap.forEach((m,f)=>{i.set(f,m)});for(let m of s.subMessage.attachments||[])this.attachments.push(m)}else if(this.isInlineTextNode(s)){let d=s.contentType.parsed.value.substr(s.contentType.parsed.value.indexOf("/")+1),c=a||s;i.has(c)||i.set(c,{});let m=i.get(c);m[d]=m[d]||[],m[d].push({type:"text",value:s.getTextContent()}),o.add(d)}else if(s.content){let d=s.contentDisposition?.parsed?.params?.filename||s.contentType.parsed.params.name||null,c={filename:d?St(d):null,mimeType:s.contentType.parsed.value,disposition:s.contentDisposition?.parsed?.value||null};switch(l&&s.contentId&&(c.related=!0),s.contentDescription&&(c.description=s.contentDescription),s.contentId&&(c.contentId=s.contentId),s.contentType.parsed.value){case"text/calendar":case"application/ics":{s.contentType.parsed.params.method&&(c.method=s.contentType.parsed.params.method.toString().toUpperCase().trim());let m=s.getTextContent().replace(/\r?\n/g,`
273
273
  `).replace(/\n*$/,`
274
- `);c.content=st.encode(d);break}default:c.content=s.content}this.attachments.push(c)}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(tr(l.value));break;case"plain":t[a].push(er(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(Nn(u.value));break;case"plain":t[a].push(qn(u.value));break}break;case"subMessage":switch(a){case"html":t[a].push(tr(u.value));break;case"plain":t[a].push(er(u.value));break}break}})}})}),Object.keys(t).forEach(s=>{t[s]=t[s].join(`
275
- `)}),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=st.encode(t)),(t instanceof Blob||Object.prototype.toString.call(t)==="[object Blob]")&&(t=await at(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=To(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=To(n.value);if(s&&s.length&&s[0].address){let a=rr(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=>To(a.value)).forEach(a=>s=s.concat(a||[])),s&&s.length){let a=rr(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=rr(r);o[s]=yt(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=Wn(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 us=de(is(),1),Jp="6.21.0";function fe(e,t){let o=so(t);return o?`${e}?${o}`:e}function so(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 Vp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/api-keys",e,t)}async list(e={}){let t=fe("/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}`)}},zp=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=so(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 ps(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 ms(e){return{from:e.from,to:e.to,type:e.type}}function Yp(e){return{name:e.name,status:e.status,steps:e.steps.map(ps),connections:e.connections.map(ms)}}function Xp(e){return{event:e.event,contact_id:e.contactId,email:e.email,payload:e.payload}}var Zp=class{constructor(e){this.resend=e,this.runs=new zp(this.resend)}async create(e){return await this.resend.post("/automations",Yp(e))}async list(e={}){let t=[so(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(ps)),t.connections!==void 0&&(o.connections=t.connections.map(ms)),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 em(e){return e?.map(t=>({content:t.content,filename:t.filename,path:t.path,content_type:t.contentType,content_id:t.contentId}))}function fs(e){return{attachments:em(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 no(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 tm=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 no(i.react),i.react=void 0),o.push(fs(i));return await this.resend.post("/emails/batch",o,{...t,headers:{"x-batch-validation":t?.batchValidation??"strict",...t?.headers}})}},om=class{constructor(e){this.resend=e}async create(e,t={}){let o=e.react?await no(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=fe("/broadcasts",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/broadcasts/${e}`)}async remove(e){return await this.resend.delete(`/broadcasts/${e}`)}async cancel(e){return await this.resend.post(`/broadcasts/${e}/cancel`)}async update(e,t){let o=t.react?await no(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 rs(e){return{id:e.id,key:e.key,createdAt:e.created_at,type:e.type,fallbackValue:e.fallback_value}}function ns(e){return"key"in e?{key:e.key,type:e.type,fallback_value:e.fallbackValue}:{fallback_value:e.fallbackValue}}var im=class{constructor(e){this.resend=e}async create(e){let t=ns(e);return await this.resend.post("/contact-properties",t)}async list(e={}){let t=fe("/contact-properties",e),o=await this.resend.get(t);return o.data?{data:{...o.data,data:o.data.data.map(i=>rs(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",...rs(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=ns(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"}}}},rm=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(so(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))}},nm=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=fe(`/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}`)}},sm=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=fe(`/contacts/${e.email?e.email:e.id}/topics`,e);return this.resend.get(t)}},am=class{constructor(e){this.resend=e,this.imports=new rm(this.resend),this.topics=new sm(this.resend),this.segments=new nm(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=fe("/contacts",e);return await this.resend.get(i)}let o=fe(`/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 lm(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 cm=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`)}},dm=class{constructor(e){this.resend=e,this.claims=new cm(this.resend)}async create(e,t={}){return await this.resend.post("/domains",lm(e),t)}async list(e={}){let t=fe("/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`)}},um=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=fe(`/emails/${t}/attachments`,e);return await this.resend.get(o)}},pm=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=fe(`/emails/receiving/${t}/attachments`,e);return await this.resend.get(o)}},mm=class{constructor(e){this.resend=e,this.attachments=new pm(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=fe("/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 io.parse(a,{attachmentEncoding:"base64"}),u=l.attachments.map(c=>{let d=c.contentId?c.contentId.replace(/^<|>$/g,""):void 0;return{filename:c.filename,content:c.content.toString(),content_type:c.mimeType,content_id:d||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)}},fm=class{constructor(e){this.resend=e,this.attachments=new um(e),this.receiving=new mm(e)}async send(e,t={}){return this.create(e,t)}async create(e,t={}){let o={...e};return e.react&&(o.html=await no(e.react)),await this.resend.post("/emails",fs(o),t)}async get(e){return await this.resend.get(`/emails/${e}`)}async list(e={}){let t=fe("/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})}},gm=class{constructor(e){this.resend=e}async send(e){return await this.resend.post("/events/send",Xp(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=fe("/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)}`)}},hm=class{constructor(e){this.resend=e}async list(e={}){let t=fe("/logs",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/logs/${e}`)}},Am=class{constructor(e){this.resend=e}async list(e={}){let t=fe("/oauth/grants",e);return await this.resend.get(t)}async revoke(e){return await this.resend.delete(`/oauth/grants/${e}`)}},bm=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/segments",e,t)}async list(e={}){let t=fe("/segments",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/segments/${e}`)}async remove(e){return await this.resend.delete(`/segments/${e}`)}},Cm=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)}},ss=()=>({data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}),ym=class{constructor(e){this.resend=e,this.batch=new Cm(e)}async add(e){return this.resend.post("/suppressions",e)}async list(e={}){let t=Um(e),o=t?`/suppressions?${t}`:"/suppressions";return this.resend.get(o)}async get(e){return e?this.resend.get(`/suppressions/${encodeURIComponent(e)}`):ss()}async remove(e){return e?this.resend.delete(`/suppressions/${encodeURIComponent(e)}`):ss()}};function Um(e){let{origin:t,...o}=e,i=new URLSearchParams(so(o));return t&&i.set("origin",t),i.toString()}function Sm(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 Km(e){return e?.map(t=>({key:t.key,type:t.type,fallback_value:t.fallbackValue}))}function as(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:Km(e.variables)}}var ls=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)}},vm=class{constructor(e){this.resend=e}create(e){return new ls(this.performCreate(e),this.publish.bind(this))}async performCreate(e){let t={...e};return e.react&&(t.html=await no(e.react)),this.resend.post("/templates",as(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${Sm(e)}`)}duplicate(e){return new ls(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}`,as(t))}},wm=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"}}}},xm=class{constructor(e){this.resend=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=fe("/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}`)}verify(e){return new us.Webhook(e.webhookSecret).verify(e.payload,{"webhook-id":e.headers.id,"webhook-timestamp":e.headers.timestamp,"webhook-signature":e.headers.signature})}},cs="https://api.resend.com",ds=`resend-node:${Jp}`;function Fm(){return typeof process<"u"&&process.env&&process.env.RESEND_BASE_URL||cs}function km(){return typeof process<"u"&&process.env&&process.env.RESEND_USER_AGENT||ds}var Rt=class{constructor(e,t){if(this.key=e,this.segments=new bm(this),this.apiKeys=new Vp(this),this.audiences=this.segments,this.automations=new Zp(this),this.batch=new tm(this),this.broadcasts=new om(this),this.contactProperties=new im(this),this.contacts=new am(this),this.domains=new dm(this),this.emails=new fm(this),this.events=new gm(this),this.logs=new hm(this),this.oauthGrants=new Am(this),this.suppressions=new ym(this),this.templates=new vm(this),this.topics=new wm(this),this.webhooks=new xm(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??Fm(),this.userAgent=t?.userAgent??km(),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 Kr=de(We(),1);function M(e,t){return e instanceof Error?e.message:t}function Js(e){return!!(e||!process.stdout.isTTY)}function j(e,t={}){Js(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 Qm=new Set(["content-type","retry-after"]);function Nm(e){let t={};for(let[o,i]of Object.entries(e)){let r=o.toLowerCase();(Qm.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?Nm(e.headers):void 0,r=i!==void 0&&Object.keys(i).length>0;if(Js(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(`${Kr.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(Kr.default.dim(`[${n.join("; ")}]`))}process.exit(o)}var Vs={sending_access:0,full_access:1};function qm(e,t){return Vs[e]>=Vs[t]}async function z(e,t){let o=e.profile;try{let i=await Kt(e.apiKey,o);if(!i){if(o){let s=xe();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";qm(r,s)||g({message:`This command requires full access. Your current credential has sending access only.
276
- ${Dt}`,code:"insufficient_permissions"},{json:e.json})}let n=i.type==="api_key"?i.key:i.access_token;return new Rt(n)}catch(i){g({message:M(i,"Failed to create client"),code:"auth_error"},{json:e.json})}}var zs=130;function Mm(){process.stderr.isTTY&&process.stderr.write("\r\x1B[2K"),console.error("Cancelled."),process.exit(zs)}var Et;function Ys(){Et=Mm,process.on("SIGINT",Et),process.on("uncaughtException",e=>{g({message:M(e,"An unexpected error occurred"),code:"unexpected_error"},{}),process.exit(1)})}function zo(e){Et&&process.removeListener("SIGINT",Et),Et=e,process.on("SIGINT",Et)}function Bt(){return zs}Ae();var Yo=de(We(),1);J();var Xs=[1,2,4],Lm=Xs.length,Wm=new Set(["internal_server_error","service_unavailable","gateway_timeout"]),Jm=(e,t)=>!!(e==="rate_limit_exceeded"||t&&e!==void 0&&Wm.has(e)),Vm=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}},zm=e=>new Promise(t=>setTimeout(t,e)),uo=async(e,t,o=0)=>{let i=await e(),r=t?.retryTransient??!1;if(i.error&&o<Lm&&Jm(i.error.name,r)){let n=Vm(i.headers)??Xs[o];return t?.onRetry?.(o,n,i.error.name??""),await zm(n*1e3),uo(e,t,o+1)}return i};var Zs=(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 Xm=tt?String.fromCodePoint(10004):"v",Zm=tt?String.fromCodePoint(9888):"!",ef=tt?String.fromCodePoint(10007):"x",tf=["\u2839","\u2838","\u2834","\u2826","\u2807","\u280F","\u2819","\u2839"],of=80;async function ae(e,t,o,i,r={}){let n=ne(e,i.quiet);try{let{data:s,error:a,headers:l}=await uo(()=>Zs(t(),3e4),{retryTransient:r.retryTransient,onRetry:(u,c,d)=>{n.update(d==="rate_limit_exceeded"?`Rate limited, retrying in ${c}s...`:`Server error, retrying in ${c}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:M(s,"Unknown error"),code:o},{json:i.json})}}function ne(e,t){if(t||!S())return{update(a){},stop(a){},clear(){},warn(a){},fail(a){}};let o=tt?tf:["-","\\","|","/"],i=of,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 ${Yo.default.green(Xm)} ${a}
277
- `):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 ${Yo.default.yellow(Zm)} ${a}
278
- `)},fail(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${Yo.default.red(ef)} ${a}
279
- `)}}}J();function k(e){Bn(e),process.exit(Bt())}async function Xo(e,t,o){(!S()||o.json)&&g({message:"Use --yes to confirm deletion in non-interactive mode.",code:"confirmation_required"},{json:o.json});let i=await Ve({message:t});(F(i)||!i)&&k("Deletion cancelled.")}async function Zo(e,t){let o=ce(e);if(!o)return e;if(!S()||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 V({message:"Enter a new name for this profile:",placeholder:e.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:r=>ce(r)});F(i)&&k("Rename cancelled.");try{await Vo(e,i)}catch(r){return g({message:M(r,"Failed to rename profile"),code:"rename_failed"},{json:t.json}),null}return X.success(`Profile renamed to '${i}'.`),i}async function I(e,t,o,i){if(e!==void 0)return e;(!S()||i.json)&&g(o,{json:i.json});let r=await V({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)&&k("Cancelled."),r}async function Ot(e,t,o,i){if(e!==void 0)return e;(!S()||i.json)&&g(o,{json:i.json});let r=await se({message:t.message,options:t.options});return F(r)&&k("Cancelled."),r}async function oa(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(!S()||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 En(Object.fromEntries(r.map(s=>[s.flag,()=>V({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:()=>k("Operation cancelled.")});return{...e,...n}}var rf=20,ea="__fetch_more__",ta="__none__";async function ee(e,t,o,i){if(e)return{id:e,label:e};let r=i?.optional??!1;if(!S()||o.json){if(r)return;g({message:"Missing required argument: id",code:"missing_id"},{json:o.json})}let n=await z(o,t.permission?{permission:t.permission}:void 0),s=[];for(;;){let a=s.at(-1)?.id,l=ne(s.length===0?`Fetching ${t.resourcePlural}...`:`Fetching more ${t.resourcePlural}...`,o.quiet),u=await t.fetchItems(n,{limit:rf,...a&&{after:a}});if(u.error||!u.data){if(r){l.clear();return}l.fail(`Failed to fetch ${t.resourcePlural}`),g({message:u.error?.message??"Unexpected empty response",code:"list_error"},{json:o.json})}s.push(...u.data.data);let c=u.data.has_more??!1,d=t.filter?s.filter(t.filter):s;if(d.length===0&&!c&&r){l.clear();return}if(l.stop(s.length===d.length?`${t.resourcePlural} fetched`:`More ${t.resourcePlural} fetched`),d.length===0&&!c&&(X.warn(`No ${t.resourcePlural} found.`),g({message:`No ${t.resourcePlural} found.`,code:"no_items"},{json:o.json})),d.length===0&&c&&!r)continue;let f=d.map(A=>({item:A,...t.display(A)})),b=f.map(({item:A,label:U,hint:K})=>({value:A.id,label:U,hint:K}));r&&b.unshift({value:ta,label:"None"}),c&&b.push({value:ea,label:"Fetch more..."});let h=await se({message:`Select a ${t.resource}`,options:b});if(F(h)&&k("Cancelled."),h===ta)return;if(h!==ea){let A=f.find(({item:U})=>U.id===h);return{id:h,label:A?.label??h}}}}async function y(e,t,o,i){return(await ee(e,t,o,i))?.id}var ia=require("node:util"),nf=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\r(?!\n)/g,Fe=e=>(0,ia.stripVTControlCharacters)(String(e)).replace(nf,"");function Tt(e){return typeof e=="string"?Fe(e):Array.isArray(e)?e.map(Tt):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,o])=>[t,Tt(o)])):e}J();async function N(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await z(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"fetch_error",t,{retryTransient:!0});!t.json&&S()?e.onInteractive(Tt(r)):j(r,{json:t.json})}async function te(e,t,o,i){let r=o.permission?{permission:o.permission}:void 0,n=await z(i,r);t||await Xo(e,o.confirmMessage,i),await ae(o.loading,()=>o.sdkCall(n),"delete_error",i),!i.json&&S()?console.log(o.successMsg):j({object:o.object,id:e,deleted:!0},{json:i.json})}async function q(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await z(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"create_error",t);!t.json&&S()?e.onInteractive(Tt(r)):j(r,{json:t.json})}async function B(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await z(t,o),r=await ae(e.loading,()=>e.sdkCall(i),e.errorCode,t,{retryTransient:e.retryTransient});!t.json&&S()?console.log(e.successMsg):j(r,{json:t.json})}async function D(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await z(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"list_error",t,{retryTransient:!0});!t.json&&S()?e.onInteractive(Tt(r)):j(r,{json:t.json})}J();J();var ue=tt?{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 sf(){return process.stdout.columns}function af(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=`${ue.h}${ue.h} ${a} ${ue.h.repeat(Math.max(0,r-a.length-4))}`,u=e.map((c,d)=>` ${c.padEnd(i)} ${n[d]}`);return[l,...u].join(`
274
+ `);c.content=at.encode(m);break}default:c.content=s.content}this.attachments.push(c)}for(let d of s.childNodes)await n(d,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(or(l.value));break;case"plain":t[a].push(tr(l.value));break}break}});else{let l;switch(a){case"html":l="plain";break;case"plain":l="html";break}(s[l]||[]).forEach(d=>{switch(d.type){case"text":switch(a){case"html":t[a].push(qn(d.value));break;case"plain":t[a].push(Mn(d.value));break}break;case"subMessage":switch(a){case"html":t[a].push(or(d.value));break;case"plain":t[a].push(tr(d.value));break}break}})}})}),Object.keys(t).forEach(s=>{t[s]=t[s].join(`
275
+ `)}),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=at.encode(t)),(t instanceof Blob||Object.prototype.toString.call(t)==="[object Blob]")&&(t=await lt(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=jo(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=jo(n.value);if(s&&s.length&&s[0].address){let a=nr(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=>jo(a.value)).forEach(a=>s=s.concat(a||[])),s&&s.length){let a=nr(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=nr(r);o[s]=St(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=Jn(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 ms=de(rs(),1),op="6.23.0";function ue(e,t){let o=Dt(t);return o?`${e}?${o}`:e}function Dt(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 ip=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/api-keys",e,t)}async list(e={}){let t=ue("/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}`)}},rp=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=Dt(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 ps(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 np(e){return{name:e.name,status:e.status,steps:e.steps.map(ps),connections:e.connections.map(fs)}}function sp(e){return{event:e.event,contact_id:e.contactId,email:e.email,payload:e.payload}}var ap=class{constructor(e){this.resend=e,this.runs=new rp(this.resend)}async create(e){return await this.resend.post("/automations",np(e))}async list(e={}){let t=[Dt(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(ps)),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 lp(e){return e?.map(t=>({content:t.content,filename:t.filename,path:t.path,content_type:t.contentType,content_id:t.contentId}))}function gs(e){return{attachments:lp(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 so(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 cp=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 so(i.react),i.react=void 0),o.push(gs(i));return await this.resend.post("/emails/batch",o,{...t,headers:{"x-batch-validation":t?.batchValidation??"strict",...t?.headers}})}},dp=class{constructor(e){this.resend=e}async create(e,t={}){let o=e.react?await so(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=ue("/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?${up(t)}`;return await this.resend.get(o)}async clickedLinks(e,t={}){let o=ue(`/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 update(e,t){let o=t.react?await so(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 up(e){let{type:t,email:o,bounceType:i,...r}=e,n=new URLSearchParams(Dt(r));return n.set("type",t),o!==void 0&&n.set("email",o),i!==void 0&&n.set("bounce_type",i),n.toString()}function ns(e){return{id:e.id,key:e.key,createdAt:e.created_at,type:e.type,fallbackValue:e.fallback_value}}function ss(e){return"key"in e?{key:e.key,type:e.type,fallback_value:e.fallbackValue}:{fallback_value:e.fallbackValue}}var mp=class{constructor(e){this.resend=e}async create(e){let t=ss(e);return await this.resend.post("/contact-properties",t)}async list(e={}){let t=ue("/contact-properties",e),o=await this.resend.get(t);return o.data?{data:{...o.data,data:o.data.data.map(i=>ns(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",...ns(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=ss(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"}}}},pp=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(Dt(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))}},fp=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=ue(`/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}`)}},gp=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=ue(`/contacts/${e.email?e.email:e.id}/topics`,e);return this.resend.get(t)}},hp=class{constructor(e){this.resend=e,this.imports=new pp(this.resend),this.topics=new gp(this.resend),this.segments=new fp(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=ue("/contacts",e);return await this.resend.get(i)}let o=ue(`/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 Ap(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 bp=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`)}},Cp=class{constructor(e){this.resend=e,this.claims=new bp(this.resend)}async create(e,t={}){return await this.resend.post("/domains",Ap(e),t)}async list(e={}){let t=ue("/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`)}},yp=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=ue(`/emails/${t}/attachments`,e);return await this.resend.get(o)}},Up=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=ue(`/emails/receiving/${t}/attachments`,e);return await this.resend.get(o)}},Sp=class{constructor(e){this.resend=e,this.attachments=new Up(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=ue("/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 d=l.startsWith("Fwd:")?l:`Fwd: ${l}`;return this.forwardWrapped(a,{to:i,from:r,subject:d,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 ro.parse(a,{attachmentEncoding:"base64"}),d=l.attachments.map(c=>{let m=c.contentId?c.contentId.replace(/^<|>$/g,""):void 0;return{filename:c.filename,content:c.content.toString(),content_type:c.mimeType,content_id:m||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:d.length>0?d: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 d=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(d).toString("base64"),content_type:"message/rfc822"}]},o)}},wp=class{constructor(e){this.resend=e,this.attachments=new yp(e),this.receiving=new Sp(e)}async send(e,t={}){return this.create(e,t)}async create(e,t={}){let o={...e};return e.react&&(o.html=await so(e.react)),await this.resend.post("/emails",gs(o),t)}async get(e){return await this.resend.get(`/emails/${e}`)}async list(e={}){let t=ue("/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=Kp(e),o=t?`/emails/metrics?${t}`:"/emails/metrics";return await this.resend.get(o)}};function Kp(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",sp(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=ue("/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)}`)}},xp=class{constructor(e){this.resend=e}async list(e={}){let t=ue("/logs",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/logs/${e}`)}},Fp=class{constructor(e){this.resend=e}async list(e={}){let t=ue("/oauth/grants",e);return await this.resend.get(t)}async revoke(e){return await this.resend.delete(`/oauth/grants/${e}`)}},kp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/segments",e,t)}async list(e={}){let t=ue("/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}`)}},Rp=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)}},as=()=>({data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}),_p=class{constructor(e){this.resend=e,this.batch=new Rp(e)}async add(e){return this.resend.post("/suppressions",e)}async list(e={}){let t=Dp(e),o=t?`/suppressions?${t}`:"/suppressions";return this.resend.get(o)}async get(e){return e?this.resend.get(`/suppressions/${encodeURIComponent(e)}`):as()}async remove(e){return e?this.resend.delete(`/suppressions/${encodeURIComponent(e)}`):as()}};function Dp(e){let{origin:t,...o}=e,i=new URLSearchParams(Dt(o));return t&&i.set("origin",t),i.toString()}function Ep(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 Op(e){return e?.map(t=>({key:t.key,type:t.type,fallback_value:t.fallbackValue}))}function ls(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:Op(e.variables)}}var cs=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)}},Bp=class{constructor(e){this.resend=e}create(e){return new cs(this.performCreate(e),this.publish.bind(this))}async performCreate(e){let t={...e};return e.react&&(t.html=await so(e.react)),this.resend.post("/templates",ls(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${Ep(e)}`)}duplicate(e){return new cs(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}`,ls(t))}},Tp=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"}}}},jp=class{constructor(e){this.resend=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=ue("/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}`)}verify(e){return new ms.Webhook(e.webhookSecret).verify(e.payload,{"webhook-id":e.headers.id,"webhook-timestamp":e.headers.timestamp,"webhook-signature":e.headers.signature})}},ds="https://api.resend.com",us=`resend-node:${op}`;function Ip(){return typeof process<"u"&&process.env&&process.env.RESEND_BASE_URL||ds}function Pp(){return typeof process<"u"&&process.env&&process.env.RESEND_USER_AGENT||us}var Et=class{constructor(e,t){if(this.key=e,this.segments=new kp(this),this.apiKeys=new ip(this),this.audiences=this.segments,this.automations=new ap(this),this.batch=new cp(this),this.broadcasts=new dp(this),this.contactProperties=new mp(this),this.contacts=new hp(this),this.domains=new Cp(this),this.emails=new wp(this),this.events=new vp(this),this.logs=new xp(this),this.oauthGrants=new Fp(this),this.suppressions=new _p(this),this.templates=new Bp(this),this.topics=new Tp(this),this.webhooks=new jp(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??Ip(),this.userAgent=t?.userAgent??Pp(),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 Kr=de(We(),1);function M(e,t){return e instanceof Error?e.message:t}function Vs(e){return!!(e||!process.stdout.isTTY)}function H(e,t={}){Vs(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 Xp=new Set(["content-type","retry-after"]);function Zp(e){let t={};for(let[o,i]of Object.entries(e)){let r=o.toLowerCase();(Xp.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?Zp(e.headers):void 0,r=i!==void 0&&Object.keys(i).length>0;if(Vs(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(`${Kr.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(Kr.default.dim(`[${n.join("; ")}]`))}process.exit(o)}var zs={sending_access:0,full_access:1};function ef(e,t){return zs[e]>=zs[t]}async function Y(e,t){let o=e.profile;try{let i=await vt(e.apiKey,o);if(!i){if(o){let s=xe();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";ef(r,s)||g({message:`This command requires full access. Your current credential has sending access only.
276
+ ${Bt}`,code:"insufficient_permissions"},{json:e.json})}let n=i.type==="api_key"?i.key:i.access_token;return new Et(n)}catch(i){g({message:M(i,"Failed to create client"),code:"auth_error"},{json:e.json})}}var Ys=130;function tf(){process.stderr.isTTY&&process.stderr.write("\r\x1B[2K"),console.error("Cancelled."),process.exit(Ys)}var Tt;function Xs(){Tt=tf,process.on("SIGINT",Tt),process.on("uncaughtException",e=>{g({message:M(e,"An unexpected error occurred"),code:"unexpected_error"},{}),process.exit(1)})}function Yo(e){Tt&&process.removeListener("SIGINT",Tt),Tt=e,process.on("SIGINT",Tt)}function jt(){return Ys}Ae();var Xo=de(We(),1);V();var Zs=[1,2,4],of=Zs.length,rf=new Set(["internal_server_error","service_unavailable","gateway_timeout"]),nf=(e,t)=>!!(e==="rate_limit_exceeded"||t&&e!==void 0&&rf.has(e)),sf=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}},af=e=>new Promise(t=>setTimeout(t,e)),uo=async(e,t,o=0)=>{let i=await e(),r=t?.retryTransient??!1;if(i.error&&o<of&&nf(i.error.name,r)){let n=sf(i.headers)??Zs[o];return t?.onRetry?.(o,n,i.error.name??""),await af(n*1e3),uo(e,t,o+1)}return i};var ea=(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 cf=ot?String.fromCodePoint(10004):"v",df=ot?String.fromCodePoint(9888):"!",uf=ot?String.fromCodePoint(10007):"x",mf=["\u2839","\u2838","\u2834","\u2826","\u2807","\u280F","\u2819","\u2839"],pf=80;async function ae(e,t,o,i,r={}){let n=ne(e,i.quiet);try{let{data:s,error:a,headers:l}=await uo(()=>ea(t(),3e4),{retryTransient:r.retryTransient,onRetry:(d,c,m)=>{n.update(m==="rate_limit_exceeded"?`Rate limited, retrying in ${c}s...`:`Server error, retrying in ${c}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:M(s,"Unknown error"),code:o},{json:i.json})}}function ne(e,t){if(t||!S())return{update(a){},stop(a){},clear(){},warn(a){},fail(a){}};let o=ot?mf:["-","\\","|","/"],i=pf,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 ${Xo.default.green(cf)} ${a}
277
+ `):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 ${Xo.default.yellow(df)} ${a}
278
+ `)},fail(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${Xo.default.red(uf)} ${a}
279
+ `)}}}V();function k(e){Bn(e),process.exit(jt())}async function Zo(e,t,o){(!S()||o.json)&&g({message:"Use --yes to confirm deletion in non-interactive mode.",code:"confirmation_required"},{json:o.json});let i=await Ve({message:t});(F(i)||!i)&&k("Deletion cancelled.")}async function ei(e,t){let o=ce(e);if(!o)return e;if(!S()||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=>ce(r)});F(i)&&k("Rename cancelled.");try{await zo(e,i)}catch(r){return g({message:M(r,"Failed to rename profile"),code:"rename_failed"},{json:t.json}),null}return X.success(`Profile renamed to '${i}'.`),i}async function T(e,t,o,i){if(e!==void 0)return e;(!S()||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 F(r)&&k("Cancelled."),r}async function ft(e,t,o,i){if(e!==void 0)return e;(!S()||i.json)&&g(o,{json:i.json});let r=await se({message:t.message,options:t.options});return F(r)&&k("Cancelled."),r}async function ia(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(!S()||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 On(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:()=>k("Operation cancelled.")});return{...e,...n}}var ff=20,ta="__fetch_more__",oa="__none__";async function ee(e,t,o,i){if(e)return{id:e,label:e};let r=i?.optional??!1;if(!S()||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=ne(s.length===0?`Fetching ${t.resourcePlural}...`:`Fetching more ${t.resourcePlural}...`,o.quiet),d=await t.fetchItems(n,{limit:ff,...a&&{after:a}});if(d.error||!d.data){if(r){l.clear();return}l.fail(`Failed to fetch ${t.resourcePlural}`),g({message:d.error?.message??"Unexpected empty response",code:"list_error"},{json:o.json})}s.push(...d.data.data);let c=d.data.has_more??!1,m=t.filter?s.filter(t.filter):s;if(m.length===0&&!c&&r){l.clear();return}if(l.stop(s.length===m.length?`${t.resourcePlural} fetched`:`More ${t.resourcePlural} fetched`),m.length===0&&!c&&(X.warn(`No ${t.resourcePlural} found.`),g({message:`No ${t.resourcePlural} found.`,code:"no_items"},{json:o.json})),m.length===0&&c&&!r)continue;let f=m.map(A=>({item:A,...t.display(A)})),b=f.map(({item:A,label:U,hint:w})=>({value:A.id,label:U,hint:w}));r&&b.unshift({value:oa,label:"None"}),c&&b.push({value:ta,label:"Fetch more..."});let h=await se({message:`Select a ${t.resource}`,options:b});if(F(h)&&k("Cancelled."),h===oa)return;if(h!==ta){let A=f.find(({item:U})=>U.id===h);return{id:h,label:A?.label??h}}}}async function y(e,t,o,i){return(await ee(e,t,o,i))?.id}var ra=require("node:util"),gf=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\r(?!\n)/g,Fe=e=>(0,ra.stripVTControlCharacters)(String(e)).replace(gf,"");function It(e){return typeof e=="string"?Fe(e):Array.isArray(e)?e.map(It):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,o])=>[t,It(o)])):e}V();async function N(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&&S()?e.onInteractive(It(r)):H(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 Zo(e,o.confirmMessage,i),await ae(o.loading,()=>o.sdkCall(n),"delete_error",i),!i.json&&S()?console.log(o.successMsg):H({object:o.object,id:e,deleted:!0},{json:i.json})}async function q(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&&S()?e.onInteractive(It(r)):H(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&&S()?console.log(e.successMsg):H(r,{json:t.json})}async function R(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&&S()?e.onInteractive(It(r)):H(r,{json:t.json})}V();V();var me=ot?{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 hf(){return process.stdout.columns}function Af(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))}`,d=e.map((c,m)=>` ${c.padEnd(i)} ${n[m]}`);return[l,...d].join(`
280
280
  `)}).join(`
281
281
 
282
- `)}function O(e,t,o="(no results)"){if(t.length===0)return o;let i=t.map(c=>c.map(Fe)),r=e.map((c,d)=>Math.max(c.length,...i.map(f=>f[d].length))),n=sf();if(n!==void 0&&r.reduce((d,f)=>d+f,0)+3*r.length+1>n)return af(e,i,n);let s=ue.tl+r.map(c=>ue.h.repeat(c+2)).join(ue.tm)+ue.tr,a=ue.lm+r.map(c=>ue.h.repeat(c+2)).join(ue.mm)+ue.rm,l=ue.bl+r.map(c=>ue.h.repeat(c+2)).join(ue.bm)+ue.br,u=c=>ue.v+" "+c.map((d,f)=>d.padEnd(r[f])).join(` ${ue.v} `)+" "+ue.v;return[s,u(e),a,...i.map(u),l].join(`
283
- `)}J();var vr=tt?String.fromCodePoint(9472):"-";function ei(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[`${vr}${vr} ${i.type} ${vr.repeat(40)}`,` Name ${r}`,` TTL ${i.ttl}`,` Value ${i.value}`].join(`
282
+ `)}function E(e,t,o="(no results)"){if(t.length===0)return o;let i=t.map(c=>c.map(Fe)),r=e.map((c,m)=>Math.max(c.length,...i.map(f=>f[m].length))),n=hf();if(n!==void 0&&r.reduce((m,f)=>m+f,0)+3*r.length+1>n)return Af(e,i,n);let s=me.tl+r.map(c=>me.h.repeat(c+2)).join(me.tm)+me.tr,a=me.lm+r.map(c=>me.h.repeat(c+2)).join(me.mm)+me.rm,l=me.bl+r.map(c=>me.h.repeat(c+2)).join(me.bm)+me.br,d=c=>me.v+" "+c.map((m,f)=>m.padEnd(r[f])).join(` ${me.v} `)+" "+me.v;return[s,d(e),a,...i.map(d),l].join(`
283
+ `)}V();var vr=ot?String.fromCodePoint(9472):"-";function ti(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[`${vr}${vr} ${i.type} ${vr.repeat(40)}`,` Name ${r}`,` TTL ${i.ttl}`,` Value ${i.value}`].join(`
284
284
  `)}).join(`
285
285
 
286
- `)}function ra(e){let t=e.map(o=>[o.name,o.status,o.region,o.id]);return O(["Name","Status","Region","ID"],t,"(no domains)")}function na(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 Re={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 sa=new p("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 Y("--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).
286
+ `)}function na(e){let t=e.map(o=>[o.name,o.status,o.region,o.id]);return E(["Name","Status","Region","ID"],t,"(no domains)")}function sa(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 Re={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 aa=new u("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",p({context:`Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).
287
287
 
288
288
  Permissions:
289
289
  full_access Full API access (default)
290
290
  sending_access Send-only access; optionally scope to a domain with --domain-id`,output:` {"id":"<id>","token":"<token>"}
291
- 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){(!S()||o.json)&&g({message:"Missing --name flag.",code:"missing_name"},{json:o.json});let s=await V({message:"Key name",placeholder:"e.g. My API Key",validate:l=>{if(!l)return"Name is required"}});F(s)&&k("Cancelled."),i=s;let a=await se({message:"Permission level",options:[{value:"full_access",label:"Full access"},{value:"sending_access",label:"Sending access only"}]});F(a)&&k("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 y(void 0,Re,o,{optional:!0})),await q({loading:"Creating API key...",sdkCall:s=>s.apiKeys.create({name:i,...r&&{permission:r},...n&&{domain_id:n}}),onInteractive:s=>{console.log(` ${po.default.gray("Name:")} ${i}`),console.log(` ${po.default.gray("ID:")} ${s.id}`),console.log(` ${po.default.gray("Token:")} ${s.token}`),console.log(`
292
- ${po.default.yellow("\u26A0")} Store this token now \u2014 it cannot be retrieved again.`)}},o)});var ti={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 aa(e){let t=e.map(o=>[o.name,o.id,o.created_at,o.last_used_at??""]);return O(["Name","ID","Created","Last used"],t,"(no API keys)")}var la=new p("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.
291
+ 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){(!S()||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"}});F(s)&&k("Cancelled."),i=s;let a=await se({message:"Permission level",options:[{value:"full_access",label:"Full access"},{value:"sending_access",label:"Sending access only"}]});F(a)&&k("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 y(void 0,Re,o,{optional:!0})),await q({loading:"Creating API key...",sdkCall:s=>s.apiKeys.create({name:i,...r&&{permission:r},...n&&{domain_id:n}}),onInteractive:s=>{console.log(` ${mo.default.gray("Name:")} ${i}`),console.log(` ${mo.default.gray("ID:")} ${s.id}`),console.log(` ${mo.default.gray("Token:")} ${s.token}`),console.log(`
292
+ ${mo.default.yellow("\u26A0")} Store this token now \u2014 it cannot be retrieved again.`)}},o)});var oi={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 la(e){let t=e.map(o=>[o.name,o.id,o.created_at,o.last_used_at??""]);return E(["Name","ID","Created","Last used"],t,"(no API keys)")}var ca=new u("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",p({context:`Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.
293
293
 
294
294
  Warning: Deleting a key is immediate and irreversible. Any service using this key
295
295
  will stop authenticating instantly. The current key (used to call this command)
296
- 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,ti,i);await te(r.id,!!t.yes,{confirmMessage:`Delete API key "${r.label}"?
296
+ 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,oi,i);await te(r.id,!!t.yes,{confirmMessage:`Delete API key "${r.label}"?
297
297
  ID: ${r.id}
298
- 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 H(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 Q(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 ${pt(o.apiKey)}`:"",l=o.profile?` --profile ${o.profile}`:"",u=o.extraFlags?` ${o.extraFlags}`:"";console.log(`
298
+ 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 j(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 I(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 P(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 ${pt(o.apiKey)}`:"",l=o.profile?` --profile ${o.profile}`:"",d=o.extraFlags?` ${o.extraFlags}`:"";console.log(`
299
299
  Fetch the next page:
300
- $ resend ${t} ${n} ${r}${s}${u}${a}${l}`)}var ca=new p("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"}]}
301
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching API keys...",sdkCall:n=>n.apiKeys.list(r),onInteractive:n=>{console.log(aa(n.data)),Q(n,"api-keys list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var da=new p("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 y(e,ti,i),n=await I(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 ua=new p("api-keys").description("Manage API keys for authentication").addHelpText("after",m({context:`Security notes:
300
+ $ resend ${t} ${n} ${r}${s}${d}${a}${l}`)}var da=new u("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",p({output:` {"object":"list","has_more":false,"data":[{"id":"<id>","name":"<name>","created_at":"<date>","last_used_at":"<date>|null"}]}
301
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching API keys...",sdkCall:n=>n.apiKeys.list(r),onInteractive:n=>{console.log(la(n.data)),P(n,"api-keys list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ua=new u("update").description("Rename an API key").argument("[id]","API key ID").option("--name <name>","New API key name").addHelpText("after",p({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 y(e,oi,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||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 ma=new u("api-keys").description("Manage API keys for authentication").addHelpText("after",p({context:`Security notes:
302
302
  - Tokens are only shown at creation time and cannot be retrieved again.
303
303
  - Use sending_access keys with --domain-id for per-domain CI tokens.
304
- - 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(sa).addCommand(ca,{isDefault:!0}).addCommand(da).addCommand(la);Ae();J();function lf(e){let t=xe();if(e.json){j({profiles:t},{json:!0});return}if(t.length===0){console.log("No profiles configured. Run: resend login");return}S()&&console.log(`
304
+ - 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(aa).addCommand(da,{isDefault:!0}).addCommand(ua).addCommand(ca);Ae();V();function bf(e){let t=xe();if(e.json){H({profiles:t},{json:!0});return}if(t.length===0){console.log("No profiles configured. Run: resend login");return}S()&&console.log(`
305
305
  Profiles
306
- `);let o=!1;for(let i of t){let r=i.active?" (active)":"",n=ce(i.name)!==void 0;n&&(o=!0),console.log(` ${i.active?"\u25B8":" "} ${i.name}${r}${n?" (invalid name)":""}`)}o&&S()&&console.log("\n Profiles with invalid names can be renamed via `resend auth rename`."),S()&&console.log("")}var pa=new p("list").description("List all profiles").action((e,t)=>{lf(t.optsWithGlobals())});var ma=require("node:child_process"),mo=de(We(),1),Me="https://resend.com";function oi(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,ma.execFile)(o,r,{timeout:5e3,windowsVerbatimArguments:!0},n=>t(!n))})}async function _e(e,t){let o=await oi(e);t?.json||t?.quiet||(o?console.log(mo.default.dim("Opened"),mo.default.blue(e)):console.warn(mo.default.yellow("Could not open browser. Visit this link:"),mo.default.blue(e)))}var pe={emails:`${Me}/emails`,logs:`${Me}/logs`,log:e=>`${Me}/logs/${e}`,templates:`${Me}/templates`,template:e=>`${Me}/templates/${e}`,broadcasts:`${Me}/broadcasts`,broadcast:e=>`${Me}/broadcasts/${e}`,documentation:`${Me}/docs`,automations:`${Me}/automations`,automation:e=>`${Me}/automations/${e}/editor`,events:`${Me}/automations/events`};Ae();Mo();J();var wr="https://resend.com/api-keys?new=true";async function fa(e,t){let o=e.profile!==void 0?e.profile.trim():void 0;if(o!==void 0){let r=ce(o);return r&&g({message:r,code:"invalid_profile_name"},{json:e.json}),o}if(!S()||e.json)return o;let i=xe();if(i.length>0){let r=[...i.map(s=>({value:s.name,label:`${s.name} (overwrite)`,hint:ce(s.name)?"invalid name":void 0})),{value:"__new__",label:"+ Create new profile"}],n=await se({message:t,options:r});if(F(n)&&k("Login cancelled."),n==="__new__"){let s=await V({message:"Enter a name for the new profile:",validate:l=>ce((l??"").trim())});if(F(s)&&k("Login cancelled."),o=(s??"").trim()||"default",i.some(l=>l.name===o)){let l=await Ve({message:`Profile '${o}' already exists. Overwrite?`});(F(l)||!l)&&k("Login cancelled.")}}else if(ce(n)){let s=await Zo(n,e);if(!s)return;o=s}else o=n}else o="default";return o}function ga(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(S()?wt(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.";S()?X.info(a):console.log(a)}}async function cf(e){let{codeVerifier:t,codeChallenge:o,state:i}=js(),r=ne("Starting local callback server...",e.quiet),n,s;try{({port:n,waitForCallback:s}=await Is()),r.stop("")}catch(w){r.fail("Failed to start callback server"),g({message:M(w,"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:qo,response_type:"code",redirect_uri:a,scope:"full_access",state:i,code_challenge:o,code_challenge_method:"S256"}).toString(),await oi(u.toString())?X.info("Browser opened. Complete authentication to continue."):X.warn(`Could not open browser. Visit this URL to authenticate:
307
- ${u.toString()}`);let d=ne("Waiting for browser authentication...",e.quiet),f;try{f=await s}catch(w){d.fail("Authentication failed"),g({message:M(w,"Authentication failed"),code:"oauth_error"},{json:e.json})}f.state!==i&&(d.fail("Authentication failed"),g({message:"State mismatch in OAuth callback. Possible CSRF attack.",code:"oauth_state_mismatch"},{json:e.json})),d.stop("Browser authentication complete");let b=ne("Exchanging authorization code...",e.quiet),h;try{h=await Ps({code:f.code,codeVerifier:t,redirectUri:a,clientId:qo,baseUrl:l})}catch(w){b.fail("Token exchange failed"),g({message:M(w,"Token exchange failed"),code:"oauth_error"},{json:e.json})}b.stop("Authenticated successfully");let A=await fa(e,"Save credentials to which profile?"),U=A||"default",{configPath:K,backend:x}=await Lo({access_token:h.access_token,access_token_expires_at:Cr(h.access_token),refresh_token:h.refresh_token,scope:h.scope},A);if(A)try{co(U)}catch(w){g({message:M(w,"Failed to switch profile"),code:"switch_failed"},{json:e.json})}e.json?j({success:!0,config_path:K,profile:U,storage:x.name,scope:h.scope},{json:!0}):ga({noun:"Credentials",profileLabel:U,configPath:K,backend:x})}var ii=new p("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){(!S()||o.json)&&g({message:"Missing --key flag. Provide your API key in non-interactive mode.",code:"missing_key"},{json:o.json}),Bo("Resend Authentication");let c=await se({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(c)&&k("Login cancelled."),c==="oauth"){await cf(o);return}X.info(`Use a full access API key for complete CLI access.
308
- ${Dt}`),c==="browser"&&(await oi(wr)?X.info(`Opened ${wr}`):X.warn(`Could not open browser. Visit ${wr} manually.`));let d=await jn({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(d)&&k("Login cancelled."),i=d.trim()}i?.startsWith("re_")||g({message:"Invalid API key format. Key must start with re_",code:"invalid_key_format"},{json:o.json});let r=ne("Validating API key...",o.quiet),n="full_access";try{let c=new Rt(i),{error:d}=await c.domains.list();if(d){let f=d;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(c){r.fail("API key validation failed"),g({message:M(c,"Failed to validate API key"),code:"validation_failed"},{json:o.json})}let s=await fa(o,"Save API key to which profile?"),{configPath:a,backend:l}=await Ls(i,s,n),u=s||"default";if(s)try{co(u)}catch(c){g({message:M(c,"Failed to switch profile"),code:"switch_failed"},{json:o.json})}o.json?j({success:!0,config_path:a,profile:u,storage:l.name,permission:n},{json:!0}):ga({noun:"API key",profileLabel:u,configPath:a,backend:l})});var ha=require("node:fs");Ae();J();var ri=new p("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.
306
+ `);let o=!1;for(let i of t){let r=i.active?" (active)":"",n=ce(i.name)!==void 0;n&&(o=!0),console.log(` ${i.active?"\u25B8":" "} ${i.name}${r}${n?" (invalid name)":""}`)}o&&S()&&console.log("\n Profiles with invalid names can be renamed via `resend auth rename`."),S()&&console.log("")}var pa=new u("list").description("List all profiles").action((e,t)=>{bf(t.optsWithGlobals())});var fa=require("node:child_process"),po=de(We(),1),Me="https://resend.com";function ii(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,fa.execFile)(o,r,{timeout:5e3,windowsVerbatimArguments:!0},n=>t(!n))})}async function _e(e,t){let o=await ii(e);t?.json||t?.quiet||(o?console.log(po.default.dim("Opened"),po.default.blue(e)):console.warn(po.default.yellow("Could not open browser. Visit this link:"),po.default.blue(e)))}var pe={emails:`${Me}/emails`,logs:`${Me}/logs`,log:e=>`${Me}/logs/${e}`,templates:`${Me}/templates`,template:e=>`${Me}/templates/${e}`,broadcasts:`${Me}/broadcasts`,broadcast:e=>`${Me}/broadcasts/${e}`,documentation:`${Me}/docs`,automations:`${Me}/automations`,automation:e=>`${Me}/automations/${e}/editor`,events:`${Me}/automations/events`};Ae();Lo();V();var xr="https://resend.com/api-keys?new=true";async function ga(e,t){let o=e.profile!==void 0?e.profile.trim():void 0;if(o!==void 0){let r=ce(o);return r&&g({message:r,code:"invalid_profile_name"},{json:e.json}),o}if(!S()||e.json)return o;let i=xe();if(i.length>0){let r=[...i.map(s=>({value:s.name,label:`${s.name} (overwrite)`,hint:ce(s.name)?"invalid name":void 0})),{value:"__new__",label:"+ Create new profile"}],n=await se({message:t,options:r});if(F(n)&&k("Login cancelled."),n==="__new__"){let s=await z({message:"Enter a name for the new profile:",validate:l=>ce((l??"").trim())});if(F(s)&&k("Login cancelled."),o=(s??"").trim()||"default",i.some(l=>l.name===o)){let l=await Ve({message:`Profile '${o}' already exists. Overwrite?`});(F(l)||!l)&&k("Login cancelled.")}}else if(ce(n)){let s=await ei(n,e);if(!s)return;o=s}else o=n}else o="default";return o}function ha(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(S()?Ft(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.";S()?X.info(a):console.log(a)}}async function Cf(e){let{codeVerifier:t,codeChallenge:o,state:i}=Is(),r=ne("Starting local callback server...",e.quiet),n,s;try{({port:n,waitForCallback:s}=await Ps()),r.stop("")}catch(v){r.fail("Failed to start callback server"),g({message:M(v,"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",d=new URL(`${l}/oauth/authorize`);d.search=new URLSearchParams({client_id:Mo,response_type:"code",redirect_uri:a,scope:"full_access",state:i,code_challenge:o,code_challenge_method:"S256"}).toString(),await ii(d.toString())?X.info("Browser opened. Complete authentication to continue."):X.warn(`Could not open browser. Visit this URL to authenticate:
307
+ ${d.toString()}`);let m=ne("Waiting for browser authentication...",e.quiet),f;try{f=await s}catch(v){m.fail("Authentication failed"),g({message:M(v,"Authentication failed"),code:"oauth_error"},{json:e.json})}f.state!==i&&(m.fail("Authentication failed"),g({message:"State mismatch in OAuth callback. Possible CSRF attack.",code:"oauth_state_mismatch"},{json:e.json})),m.stop("Browser authentication complete");let b=ne("Exchanging authorization code...",e.quiet),h;try{h=await $s({code:f.code,codeVerifier:t,redirectUri:a,clientId:Mo,baseUrl:l})}catch(v){b.fail("Token exchange failed"),g({message:M(v,"Token exchange failed"),code:"oauth_error"},{json:e.json})}b.stop("Authenticated successfully");let A=await ga(e,"Save credentials to which profile?"),U=A||"default",{configPath:w,backend:x}=await Wo({access_token:h.access_token,access_token_expires_at:yr(h.access_token),refresh_token:h.refresh_token,scope:h.scope},A);if(A)try{co(U)}catch(v){g({message:M(v,"Failed to switch profile"),code:"switch_failed"},{json:e.json})}e.json?H({success:!0,config_path:w,profile:U,storage:x.name,scope:h.scope},{json:!0}):ha({noun:"Credentials",profileLabel:U,configPath:w,backend:x})}var ri=new u("login").description("Save a Resend API key").option("--key <key>","API key to store (required in non-interactive mode)").addHelpText("after",p({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){(!S()||o.json)&&g({message:"Missing --key flag. Provide your API key in non-interactive mode.",code:"missing_key"},{json:o.json}),Bo("Resend Authentication");let c=await se({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(c)&&k("Login cancelled."),c==="oauth"){await Cf(o);return}X.info(`Use a full access API key for complete CLI access.
308
+ ${Bt}`),c==="browser"&&(await ii(xr)?X.info(`Opened ${xr}`):X.warn(`Could not open browser. Visit ${xr} manually.`));let m=await In({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(m)&&k("Login cancelled."),i=m.trim()}i?.startsWith("re_")||g({message:"Invalid API key format. Key must start with re_",code:"invalid_key_format"},{json:o.json});let r=ne("Validating API key...",o.quiet),n="full_access";try{let c=new Et(i),{error:m}=await c.domains.list();if(m){let f=m;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(c){r.fail("API key validation failed"),g({message:M(c,"Failed to validate API key"),code:"validation_failed"},{json:o.json})}let s=await ga(o,"Save API key to which profile?"),{configPath:a,backend:l}=await Ws(i,s,n),d=s||"default";if(s)try{co(d)}catch(c){g({message:M(c,"Failed to switch profile"),code:"switch_failed"},{json:o.json})}o.json?H({success:!0,config_path:a,profile:d,storage:l.name,permission:n},{json:!0}):ha({noun:"API key",profileLabel:d,configPath:a,backend:l})});var Aa=require("node:fs");Ae();V();var ni=new u("logout").description("Remove your saved Resend API key").addHelpText("after",p({setup:!0,context:`Removes the saved API key from secure storage and the credentials file.
309
309
 
310
310
  When --profile is specified, only that profile's entry is removed.
311
311
  When no profile is specified, all profiles are removed.
312
312
 
313
- 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=St(),r=Ur();if(!r&&!(0,ha.existsSync)(i)){!o.json&&S()?console.log("No saved credentials found. Nothing to remove."):j({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&&S()){let l=s?"Remove all saved API keys?":`Remove saved API key for profile '${a}'?`,u=await Ve({message:l});(F(u)||!u)&&k("Logout cancelled.")}try{s?await Ws():await Jo(a)}catch(l){g({message:M(l,"Failed to remove credentials"),code:"remove_failed"},{json:o.json})}if(!o.json&&S()){let l=s?"Logged out. All API keys removed.":`Logged out. API key removed for profile '${a}'.`;wt(l)}else j({success:!0,config_path:i,profile:s?"all":a},{json:o.json})});Ae();J();async function df(e,t){let o=e;if(!o){if(!S()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let i=xe();if(i.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let r=await se({message:"Remove which profile?",options:i.map(n=>({value:n.name,label:n.name,hint:n.active?"active":void 0}))});F(r)&&k("Remove cancelled."),o=r}if(!t.json&&S()){let i=await Ve({message:`Remove profile '${o}' and its API key?`});(F(i)||!i)&&k("Remove cancelled.")}try{await Jo(o)}catch(i){g({message:M(i,"Failed to remove profile"),code:"remove_failed"},{json:t.json});return}t.json?j({success:!0,removed_profile:o},{json:!0}):console.log(`Profile '${o}' removed.`)}var Aa=new p("remove").description("Remove a profile").argument("[name]","Profile name to remove").action(async(e,t,o)=>{await df(e,o.optsWithGlobals())});Ae();J();async function uf(e,t,o){let i=e,r=t;if(!i){if(!S()||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=xe();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:o.json});return}let s=await se({message:"Rename which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":ce(a.name)?"invalid name":void 0}))});F(s)&&k("Rename cancelled."),i=s}if(!r){if(!S()||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 V({message:`Enter new name for '${i}':`,placeholder:i.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:s=>ce(s)});F(n)&&k("Rename cancelled."),r=n}try{await Vo(i,r)}catch(n){g({message:M(n,"Failed to rename profile"),code:"rename_failed"},{json:o.json});return}o.json?j({success:!0,old_name:i,new_name:r},{json:!0}):console.log(`Profile '${i}' renamed to '${r}'.`)}var ba=new p("rename").description("Rename a profile").argument("[old-name]","Current profile name").argument("[new-name]","New profile name").action(async(e,t,o,i)=>{await uf(e,t,i.optsWithGlobals())});Ae();J();async function pf(e,t){let o=e;if(!o){if(!S()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let n=xe();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let s=await se({message:"Switch to which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":ce(a.name)?"invalid name":void 0}))});F(s)&&k("Switch cancelled."),o=s}if(xe().some(n=>n.name===o)){let n=await Zo(o,t);if(!n)return;o=n}try{co(o)}catch(n){g({message:M(n,"Failed to switch profile"),code:"switch_failed"},{json:t.json});return}t.json?j({success:!0,active_profile:o},{json:!0}):console.log(`Switched to profile '${o}'.`)}var Ca=new p("switch").description("Switch the active profile").argument("[name]","Profile name to switch to").action(async(e,t,o)=>{await pf(e,o.optsWithGlobals())});var ya=new p("auth").description("Manage authentication and profiles").addHelpText("after",m({setup:!0,context:`Environment variables:
313
+ 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=Kt(),r=Sr();if(!r&&!(0,Aa.existsSync)(i)){!o.json&&S()?console.log("No saved credentials found. Nothing to remove."):H({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&&S()){let l=s?"Remove all saved API keys?":`Remove saved API key for profile '${a}'?`,d=await Ve({message:l});(F(d)||!d)&&k("Logout cancelled.")}try{s?await Js():await Vo(a)}catch(l){g({message:M(l,"Failed to remove credentials"),code:"remove_failed"},{json:o.json})}if(!o.json&&S()){let l=s?"Logged out. All API keys removed.":`Logged out. API key removed for profile '${a}'.`;Ft(l)}else H({success:!0,config_path:i,profile:s?"all":a},{json:o.json})});Ae();V();async function yf(e,t){let o=e;if(!o){if(!S()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let i=xe();if(i.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let r=await se({message:"Remove which profile?",options:i.map(n=>({value:n.name,label:n.name,hint:n.active?"active":void 0}))});F(r)&&k("Remove cancelled."),o=r}if(!t.json&&S()){let i=await Ve({message:`Remove profile '${o}' and its API key?`});(F(i)||!i)&&k("Remove cancelled.")}try{await Vo(o)}catch(i){g({message:M(i,"Failed to remove profile"),code:"remove_failed"},{json:t.json});return}t.json?H({success:!0,removed_profile:o},{json:!0}):console.log(`Profile '${o}' removed.`)}var ba=new u("remove").description("Remove a profile").argument("[name]","Profile name to remove").action(async(e,t,o)=>{await yf(e,o.optsWithGlobals())});Ae();V();async function Uf(e,t,o){let i=e,r=t;if(!i){if(!S()||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=xe();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:o.json});return}let s=await se({message:"Rename which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":ce(a.name)?"invalid name":void 0}))});F(s)&&k("Rename cancelled."),i=s}if(!r){if(!S()||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=>ce(s)});F(n)&&k("Rename cancelled."),r=n}try{await zo(i,r)}catch(n){g({message:M(n,"Failed to rename profile"),code:"rename_failed"},{json:o.json});return}o.json?H({success:!0,old_name:i,new_name:r},{json:!0}):console.log(`Profile '${i}' renamed to '${r}'.`)}var Ca=new u("rename").description("Rename a profile").argument("[old-name]","Current profile name").argument("[new-name]","New profile name").action(async(e,t,o,i)=>{await Uf(e,t,i.optsWithGlobals())});Ae();V();async function Sf(e,t){let o=e;if(!o){if(!S()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let n=xe();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let s=await se({message:"Switch to which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":ce(a.name)?"invalid name":void 0}))});F(s)&&k("Switch cancelled."),o=s}if(xe().some(n=>n.name===o)){let n=await ei(o,t);if(!n)return;o=n}try{co(o)}catch(n){g({message:M(n,"Failed to switch profile"),code:"switch_failed"},{json:t.json});return}t.json?H({success:!0,active_profile:o},{json:!0}):console.log(`Switched to profile '${o}'.`)}var ya=new u("switch").description("Switch the active profile").argument("[name]","Profile name to switch to").action(async(e,t,o)=>{await Sf(e,o.optsWithGlobals())});var Ua=new u("auth").description("Manage authentication and profiles").addHelpText("after",p({setup:!0,context:`Environment variables:
314
314
  RESEND_API_KEY API key (overrides stored credentials)
315
315
  RESEND_PROFILE Profile name (overrides config default)
316
- 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(ii).addCommand(ri).addCommand(pa,{isDefault:!0}).addCommand(Ca).addCommand(ba).addCommand(Aa);var xr=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,xr.readFileSync)(0,"utf-8")}catch{g({message:"Failed to read from stdin",code:"stdin_read_error"},{json:t.json})}}try{return(0,xr.readFileSync)(e,"utf-8")}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}}function vt(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 Ua=new p("create").description("Create a new automation").option("--name <name>","Automation name").addOption(new Y("--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.
316
+ 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(ri).addCommand(ni).addCommand(pa,{isDefault:!0}).addCommand(ya).addCommand(Ca).addCommand(ba);var Fr=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,Fr.readFileSync)(0,"utf-8")}catch{g({message:"Failed to read from stdin",code:"stdin_read_error"},{json:t.json})}}try{return(0,Fr.readFileSync)(e,"utf-8")}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}}function xt(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 Sa=new u("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",p({context:`Non-interactive: --name and --steps/--connections (or --file) are required.
317
317
 
318
318
  Payload format:
319
319
  --file accepts a JSON object with { name, status?, steps, connections }.
@@ -321,18 +321,18 @@ Payload format:
321
321
  When using --file, --name/--status/--steps/--connections flags override file values.
322
322
 
323
323
  Step types: trigger, delay, send_email, wait_for_event, condition
324
- 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(u){g({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))&&g({message:"--file must contain a JSON object with automation properties (name, steps, connections).",code:"invalid_json"},{json:o.json})}let r=await I(e.name??i.name,{message:"Automation name",placeholder:"e.g. Welcome Flow"},{message:"Missing --name flag.",code:"missing_name"},o),n=vt(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=vt(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 q({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 Sa(e){let t=e.map(o=>[o.name,Fr(o.status),o.created_at,o.id]);return O(["Name","Status","Created","ID"],t,"(no automations)")}function Fr(e){switch(e){case"enabled":return"\u2713 Enabled";case"disabled":return"\u25CB Disabled";default:return e}}var $e={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 Ka=new p("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 y(e,$e,i);await te(r,!!t.yes,{confirmMessage:`Delete automation ${r}?
325
- This cannot be undone.`,loading:"Deleting automation...",object:"automation",successMsg:"Automation deleted",sdkCall:n=>n.automations.remove(r)},i)});var va=new p("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.
326
- 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 y(e,$e,i);await q({loading:"Duplicating automation...",sdkCall:n=>n.automations.duplicate(r),onInteractive:n=>{console.log(`Automation duplicated: ${n.id}`)}},i)});var wa=new p("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.
324
+ 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(d){g({message:`Invalid JSON in --file: ${d instanceof Error?d.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 T(e.name??i.name,{message:"Automation name",placeholder:"e.g. Welcome Flow"},{message:"Missing --name flag.",code:"missing_name"},o),n=xt(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=xt(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 q({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 wa(e){let t=e.map(o=>[o.name,kr(o.status),o.created_at,o.id]);return E(["Name","Status","Created","ID"],t,"(no automations)")}function kr(e){switch(e){case"enabled":return"\u2713 Enabled";case"disabled":return"\u25CB Disabled";default:return e}}var He={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 Ka=new u("delete").alias("rm").description("Delete an automation").argument("[id]","Automation ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({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 y(e,He,i);await te(r,!!t.yes,{confirmMessage:`Delete automation ${r}?
325
+ This cannot be undone.`,loading:"Deleting automation...",object:"automation",successMsg:"Automation deleted",sdkCall:n=>n.automations.remove(r)},i)});var va=new u("duplicate").description("Duplicate an automation").argument("[id]","Automation ID to duplicate").addHelpText("after",p({context:`Creates a copy of an existing automation and returns the new automation ID.
326
+ 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 y(e,He,i);await q({loading:"Duplicating automation...",sdkCall:n=>n.automations.duplicate(r),onInteractive:n=>{console.log(`Automation duplicated: ${n.id}`)}},i)});var xa=new u("get").description("Retrieve an automation with its steps and connections").argument("[id]","Automation ID").addHelpText("after",p({output:` Full automation object including steps and connections arrays.
327
327
 
328
- 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 y(e,$e,i);await N({loading:"Fetching automation...",sdkCall:n=>n.automations.get(r),onInteractive:n=>{if(console.log(`${n.name} \u2014 ${Fr(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(`
329
- Steps:`);let s=n.steps.map(a=>[a.key,a.type]);console.log(O(["Key","Type"],s,"(no steps)"))}if(n.connections.length>0){console.log(`
330
- Connections:`);let s=n.connections.map(a=>[a.from,a.to,a.type]);console.log(O(["From","To","Type"],s,"(no connections)"))}}},i)});var xa=new p("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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching automations...",sdkCall:n=>n.automations.list(r),onInteractive:n=>{console.log(Sa(n.data)),Q(n,"automations list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Fa=new p("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.
328
+ 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 y(e,He,i);await N({loading:"Fetching automation...",sdkCall:n=>n.automations.get(r),onInteractive:n=>{if(console.log(`${n.name} \u2014 ${kr(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(`
329
+ Steps:`);let s=n.steps.map(a=>[a.key,a.type]);console.log(E(["Key","Type"],s,"(no steps)"))}if(n.connections.length>0){console.log(`
330
+ Connections:`);let s=n.connections.map(a=>[a.from,a.to,a.type]);console.log(E(["From","To","Type"],s,"(no connections)"))}}},i)});var Fa=new u("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",p({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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching automations...",sdkCall:n=>n.automations.list(r),onInteractive:n=>{console.log(wa(n.data)),P(n,"automations list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ka=new u("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",p({context:`Opens the Resend dashboard in your default browser.
331
331
  With an ID: opens that automation's editor.
332
- 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 _e(i,r)});var ka=new p("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 I(e.automationId,{message:"Automation ID"},{message:"Missing --automation-id flag.",code:"missing_automation_id"},o),r=await I(e.runId,{message:"Run ID"},{message:"Missing --run-id flag.",code:"missing_run_id"},o);await N({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 Ra=new p("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 y(e,$e,i),n=H(t.limit,i),s=G(n,t.after,t.before,i);await D({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(O(["ID","Status","Started","Completed"],l,"(no runs)")),Q(a,`automations runs list ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var _a=new p("runs").description("Manage automation runs").addHelpText("after",m({context:`Runs represent individual executions of an automation.
332
+ 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 _e(i,r)});var Ra=new u("get").description("Retrieve details of a specific automation run").option("--automation-id <id>","Automation ID").option("--run-id <id>","Run ID").addHelpText("after",p({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 N({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 _a=new u("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",p({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 y(e,He,i),n=j(t.limit,i),s=I(n,t.after,t.before,i);await R({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(d=>[d.id,d.status,d.started_at??"-",d.completed_at??"-"]);console.log(E(["ID","Status","Started","Completed"],l,"(no runs)")),P(a,`automations runs list ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Da=new u("runs").description("Manage automation runs").addHelpText("after",p({context:`Runs represent individual executions of an automation.
333
333
  Each run is triggered by an event and progresses through the automation's steps.
334
334
 
335
- 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(Ra,{isDefault:!0}).addCommand(ka);var Da=new p("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 y(e,$e,i);await B({loading:"Stopping automation...",sdkCall:n=>n.automations.stop(r),errorCode:"stop_error",successMsg:"Automation stopped"},i)});var Ea=new p("update").description("Update an automation status (enable or disable)").argument("[id]","Automation ID").addOption(new Y("--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 y(e,$e,i),n=await Ot(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 Ba=new p("automations").description("Manage automations").addHelpText("after",m({context:`Automations are event-driven workflows composed of steps and connections.
335
+ 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(_a,{isDefault:!0}).addCommand(Ra);var Ea=new u("stop").description("Stop a running automation").argument("[id]","Automation ID").addHelpText("after",p({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 y(e,He,i);await B({loading:"Stopping automation...",sdkCall:n=>n.automations.stop(r),errorCode:"stop_error",successMsg:"Automation stopped"},i)});var Oa=new u("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",p({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 y(e,He,i),n=await ft(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 Ba=new u("automations").description("Manage automations").addHelpText("after",p({context:`Automations are event-driven workflows composed of steps and connections.
336
336
 
337
337
  Steps define the actions (trigger, delay, send_email, wait_for_event, condition).
338
338
  Connections define the flow between steps (default, condition_met, condition_not_met, timeout, event_received).
@@ -343,12 +343,12 @@ Lifecycle:
343
343
  3. resend automations duplicate <id> (copy an automation)
344
344
  4. resend automations stop <id> (stop automation)
345
345
  5. resend automations runs <id> (inspect runs)
346
- 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(Ua).addCommand(wa).addCommand(xa,{isDefault:!0}).addCommand(Ea).addCommand(Ka).addCommand(va).addCommand(Da).addCommand(Fa).addCommand(_a);function kr(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 jt={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 Oa(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:`${kr(t.status)} ${t.id}`}),filter:e}}var Ta=Oa(e=>e.status==="draft"),ja=Oa(e=>e.status==="queued"||e.status==="scheduled");function Ia(e){let t=e.map(o=>[o.name??"(untitled)",o.status,o.created_at,o.id]);return O(["Name","Status","Created","ID"],t,"(no broadcasts)")}var Pa=new p("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.
346
+ 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(Sa).addCommand(xa).addCommand(Fa,{isDefault:!0}).addCommand(Oa).addCommand(Ka).addCommand(va).addCommand(Ea).addCommand(ka).addCommand(Da);function Rr(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 Ye={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 Ta(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:`${Rr(t.status)} ${t.id}`}),filter:e}}var ja=Ta(e=>e.status==="draft"),Ia=Ta(e=>e.status==="queued"||e.status==="scheduled");function Pa(e){let t=e.map(o=>[o.name??"(untitled)",o.status,o.created_at,o.id]);return E(["Name","Status","Created","ID"],t,"(no broadcasts)")}function $a(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 E(["Email","Contact ID","Count","Bounce Type","Clicked Links","ID"],t,"(no recipients)")}function Ha(e){let t=e.map(o=>[o.url,String(o.clicks),String(o.unique_clicks)]);return E(["URL","Clicks","Unique Clicks"],t,"(no clicked links)")}var Ga=new u("cancel").description("Cancel a queued or scheduled broadcast").argument("[id]","Broadcast ID").addHelpText("after",p({context:`Only queued or scheduled broadcasts can be cancelled; draft and sent broadcasts cannot.
347
347
  Cancelling a scheduled broadcast stops the scheduled delivery. Cancelling a queued
348
- 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 y(e,ja,i);await B({loading:"Cancelling broadcast...",sdkCall:n=>n.broadcasts.cancel(r),errorCode:"cancel_error",successMsg:"Broadcast cancelled"},i)});async function ni(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 mf=["noreply","hello"];async function si(e){let t;if(e.length===1)t=e[0];else{let r=await se({message:"Select a verified domain",options:e.map(n=>({value:n,label:n}))});F(r)&&k("Send cancelled."),t=r}let o=mf.map(r=>({value:`${r}@${t}`,label:`${r}@${t}`}));o.push({value:null,label:"Custom address..."});let i=await se({message:`From address (@${t})`,options:o});if(F(i)&&k("Send cancelled."),i===null){let r=await V({message:"From address",placeholder:`e.g. you@${t}`,validate:n=>n?.includes("@")?void 0:"Enter a valid email address"});return F(r)&&k("Send cancelled."),r}return i}var Pt=require("node:fs"),Ja=require("node:path");var ai=require("node:fs"),qa=require("node:os"),It=de(require("node:path"),1);function $a(){return"pkg"in process?require("esbuild-wasm"):require("esbuild")}var Ga=require("node:fs"),Qa=de(require("node:path"),1);function Ha(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var Na=e=>({name:"rendering-utilities-exporter",setup:t=>{t.onLoad({filter:new RegExp(e.map(o=>Ha(o)).join("|"))},async({path:o})=>({contents:`${await Ga.promises.readFile(o,"utf8")};
348
+ 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 y(e,Ia,i);await B({loading:"Cancelling broadcast...",sdkCall:n=>n.broadcasts.cancel(r),errorCode:"cancel_error",successMsg:"Broadcast cancelled"},i)});var Qa=new u("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",p({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 y(e,Ye,i),n=j(t.limit,i),s=I(n,t.after,t.before,i);await R({loading:"Fetching clicked links...",sdkCall:a=>a.broadcasts.clickedLinks(r,s),onInteractive:a=>{console.log(Ha(a.data)),P(a,`broadcasts clicked-links ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});async function si(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 wf=["noreply","hello"];async function ai(e){let t;if(e.length===1)t=e[0];else{let r=await se({message:"Select a verified domain",options:e.map(n=>({value:n,label:n}))});F(r)&&k("Send cancelled."),t=r}let o=wf.map(r=>({value:`${r}@${t}`,label:`${r}@${t}`}));o.push({value:null,label:"Custom address..."});let i=await se({message:`From address (@${t})`,options:o});if(F(i)&&k("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)&&k("Send cancelled."),r}return i}var $t=require("node:fs"),Xa=require("node:path");var li=require("node:fs"),Ja=require("node:os"),Pt=de(require("node:path"),1);function Na(){return"pkg"in process?require("esbuild-wasm"):require("esbuild")}var Ma=require("node:fs"),La=de(require("node:path"),1);function qa(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var Wa=e=>({name:"rendering-utilities-exporter",setup:t=>{t.onLoad({filter:new RegExp(e.map(o=>qa(o)).join("|"))},async({path:o})=>({contents:`${await Ma.promises.readFile(o,"utf8")};
349
349
  export { render } from 'react-email-module-that-will-export-render'
350
350
  export { createElement as reactEmailCreateReactElement } from 'react';
351
- `,loader:Qa.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 Ma(e){let t=It.default.resolve(e),o=(0,ai.mkdtempSync)(It.default.join((0,qa.tmpdir)(),"resend-react-email-"));try{let{build:n}=$a();await n({bundle:!0,entryPoints:[t],format:"cjs",jsx:"automatic",logLevel:"silent",outExtension:{".js":".cjs"},outdir:o,platform:"node",plugins:[Na([t])],write:!0})}catch(n){throw(0,ai.rmSync)(o,{recursive:!0,force:!0}),n}let i=It.default.basename(t,It.default.extname(t));return{cjsPath:It.default.join(o,`${i}.cjs`),tmpDir:o}}var La=require("node:module");async function Wa(e){let t=(0,La.createRequire)(e);delete t.cache[e];let o=t(e);return o.render(o.reactEmailCreateReactElement(o.default,{}),{})}var Rr=e=>{e&&(0,Pt.rmSync)(e,{recursive:!0,force:!0})},He=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,Ja.resolve)(e);if(!(0,Pt.existsSync)(o))return g({message:`File not found: ${e}`,code:"react_email_build_error"},{json:t.json});if(!(0,Pt.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=ne("Bundling React Email template...",t.quiet),r;try{let n=await Ma(e);r=n.tmpDir,i.stop("Bundled React Email template");let s=ne("Rendering React Email template...",t.quiet);try{let a=await Wa(n.cjsPath);return s.stop("Rendered React Email template"),Rr(r),a}catch(a){return s.fail("Failed to render React Email template"),Rr(r),g({message:M(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"),Rr(r),g({message:M(n,"Failed to bundle React Email template"),code:"react_email_build_error"},{json:t.json})}};J();var Ge={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 li(e){let t=e.map(o=>[o.name,o.id,o.created_at]);return O(["Name","ID","Created"],t,"(no segments)")}var mt={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 Va(e){let t=e.map(o=>[o.name,o.description??"",o.id,o.created_at]);return O(["Name","Description","ID","Created"],t,"(no topics)")}var za=new p("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.
351
+ `,loader:La.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 Va(e){let t=Pt.default.resolve(e),o=(0,li.mkdtempSync)(Pt.default.join((0,Ja.tmpdir)(),"resend-react-email-"));try{let{build:n}=Na();await n({bundle:!0,entryPoints:[t],format:"cjs",jsx:"automatic",logLevel:"silent",outExtension:{".js":".cjs"},outdir:o,platform:"node",plugins:[Wa([t])],write:!0})}catch(n){throw(0,li.rmSync)(o,{recursive:!0,force:!0}),n}let i=Pt.default.basename(t,Pt.default.extname(t));return{cjsPath:Pt.default.join(o,`${i}.cjs`),tmpDir:o}}var za=require("node:module");async function Ya(e){let t=(0,za.createRequire)(e);delete t.cache[e];let o=t(e);return o.render(o.reactEmailCreateReactElement(o.default,{}),{})}var _r=e=>{e&&(0,$t.rmSync)(e,{recursive:!0,force:!0})},Ge=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,Xa.resolve)(e);if(!(0,$t.existsSync)(o))return g({message:`File not found: ${e}`,code:"react_email_build_error"},{json:t.json});if(!(0,$t.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=ne("Bundling React Email template...",t.quiet),r;try{let n=await Va(e);r=n.tmpDir,i.stop("Bundled React Email template");let s=ne("Rendering React Email template...",t.quiet);try{let a=await Ya(n.cjsPath);return s.stop("Rendered React Email template"),_r(r),a}catch(a){return s.fail("Failed to render React Email template"),_r(r),g({message:M(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"),_r(r),g({message:M(n,"Failed to bundle React Email template"),code:"react_email_build_error"},{json:t.json})}};V();var De={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 ci(e){let t=e.map(o=>[o.name,o.id,o.created_at]);return E(["Name","ID","Created"],t,"(no segments)")}var gt={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 Za(e){let t=e.map(o=>[o.name,o.description??"",o.id,o.created_at]);return E(["Name","Description","ID","Created"],t,"(no topics)")}var el=new u("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",p({context:`Non-interactive: --from, --subject, and --segment-id are required.
352
352
  Body: provide at least one of --html, --html-file, --text, --text-file, or --react-email.
353
353
 
354
354
  Use --dry-run to print the request JSON without creating a broadcast.
@@ -360,26 +360,29 @@ Variable interpolation:
360
360
  Scheduling:
361
361
  Use --scheduled-at with --send to schedule delivery.
362
362
  Accepts ISO 8601 (e.g. 2026-08-05T11:52:01Z) or natural language (e.g. "in 1 hour").
363
- --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&&S()&&!o.json&&!e.dryRun){let c=await z(o),d=await ni(c);d.length>0&&(i=await si(d))}if(!i){(!S()||o.json)&&g({message:"Missing --from flag.",code:"missing_from"},{json:o.json});let c=await V({message:"From address",placeholder:"e.g. onboarding@resend.dev",validate:d=>d?void 0:"Required"});F(c)&&k("Cancelled."),i=c}if(!r){(!S()||o.json)&&g({message:"Missing --subject flag.",code:"missing_subject"},{json:o.json});let c=await V({message:"Subject",placeholder:"e.g. Weekly Newsletter",validate:d=>d?void 0:"Required"});F(c)&&k("Cancelled."),r=c}if(!n)if((!S()||o.json)&&g({message:"Missing --segment-id flag.",code:"missing_segment"},{json:o.json}),e.dryRun){let c=await V({message:"Segment ID",placeholder:"e.g. 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d",validate:d=>d?void 0:"Required"});F(c)&&k("Cancelled."),n=c}else n=await y(void 0,Ge,o);let s=e.reactEmail?await He(e.reactEmail,o):e.htmlFile?oe(e.htmlFile,o):e.html,a=e.textFile?oe(e.textFile,o):e.text;if(!s&&!a){(!S()||o.json)&&g({message:"Missing body. Provide --html, --html-file, --text, --text-file, or --react-email.",code:"missing_body"},{json:o.json});let c=await V({message:"Body (plain text)",placeholder:"e.g. Hello {{{FIRST_NAME|there}}}!",validate:d=>d?void 0:"Required"});F(c)&&k("Cancelled."),a=c}let l=e.topicId;if(!l&&S()&&!o.json)if(e.dryRun){let c=await V({message:"Topic ID (optional)",placeholder:"Press Enter to skip"});F(c)&&k("Cancelled."),l=c.trim()||void 0}else l=await y(void 0,mt,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){j({dryRun:!0,request:u},{json:o.json});return}await q({loading:"Creating broadcast...",sdkCall:c=>c.broadcasts.create(u),onInteractive:c=>{e.send?e.scheduledAt?console.log(`Broadcast scheduled: ${c.id}`):console.log(`Broadcast sent: ${c.id}`):(console.log(`Broadcast created: ${c.id}`),console.log("Status: draft"),console.log(`Send it with: resend broadcasts send ${c.id}`))}},o)});var Ya=new p("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.
363
+ --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&&S()&&!o.json&&!e.dryRun){let c=await Y(o),m=await si(c);m.length>0&&(i=await ai(m))}if(!i){(!S()||o.json)&&g({message:"Missing --from flag.",code:"missing_from"},{json:o.json});let c=await z({message:"From address",placeholder:"e.g. onboarding@resend.dev",validate:m=>m?void 0:"Required"});F(c)&&k("Cancelled."),i=c}if(!r){(!S()||o.json)&&g({message:"Missing --subject flag.",code:"missing_subject"},{json:o.json});let c=await z({message:"Subject",placeholder:"e.g. Weekly Newsletter",validate:m=>m?void 0:"Required"});F(c)&&k("Cancelled."),r=c}if(!n)if((!S()||o.json)&&g({message:"Missing --segment-id flag.",code:"missing_segment"},{json:o.json}),e.dryRun){let c=await z({message:"Segment ID",placeholder:"e.g. 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d",validate:m=>m?void 0:"Required"});F(c)&&k("Cancelled."),n=c}else n=await y(void 0,De,o);let s=e.reactEmail?await Ge(e.reactEmail,o):e.htmlFile?oe(e.htmlFile,o):e.html,a=e.textFile?oe(e.textFile,o):e.text;if(!s&&!a){(!S()||o.json)&&g({message:"Missing body. Provide --html, --html-file, --text, --text-file, or --react-email.",code:"missing_body"},{json:o.json});let c=await z({message:"Body (plain text)",placeholder:"e.g. Hello {{{FIRST_NAME|there}}}!",validate:m=>m?void 0:"Required"});F(c)&&k("Cancelled."),a=c}let l=e.topicId;if(!l&&S()&&!o.json)if(e.dryRun){let c=await z({message:"Topic ID (optional)",placeholder:"Press Enter to skip"});F(c)&&k("Cancelled."),l=c.trim()||void 0}else l=await y(void 0,gt,o,{optional:!0});let d={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){H({dryRun:!0,request:d},{json:o.json});return}await q({loading:"Creating broadcast...",sdkCall:c=>c.broadcasts.create(d),onInteractive:c=>{e.send?e.scheduledAt?console.log(`Broadcast scheduled: ${c.id}`):console.log(`Broadcast sent: ${c.id}`):(console.log(`Broadcast created: ${c.id}`),console.log("Status: draft"),console.log(`Send it with: resend broadcasts send ${c.id}`))}},o)});var tl=new u("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",p({context:`Warning: Deleting a scheduled broadcast cancels its delivery immediately.
364
364
  Only draft and scheduled broadcasts can be deleted; sent broadcasts cannot.
365
365
 
366
- 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,jt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete broadcast "${r.label}"?
366
+ 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,Ye,i);await te(r.id,!!t.yes,{confirmMessage:`Delete broadcast "${r.label}"?
367
367
  ID: ${r.id}
368
- If scheduled, delivery will be cancelled.`,loading:"Deleting broadcast...",object:"broadcast",successMsg:"Broadcast deleted",sdkCall:n=>n.broadcasts.remove(r.id)},i)});var Xa=new p("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.
369
- 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 y(e,jt,i);await N({loading:"Fetching broadcast...",sdkCall:n=>n.broadcasts.get(r),onInteractive:n=>{console.log(`Broadcast: ${n.id}`),console.log(` Status: ${kr(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 Za=new p("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.
370
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching broadcasts...",sdkCall:n=>n.broadcasts.list(r),onInteractive:n=>{console.log(Ia(n.data)),Q(n,"broadcasts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var el=new p("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.
368
+ If scheduled, delivery will be cancelled.`,loading:"Deleting broadcast...",object:"broadcast",successMsg:"Broadcast deleted",sdkCall:n=>n.broadcasts.remove(r.id)},i)});var ol=new u("get").description("Retrieve full details for a broadcast including HTML body, status, and delivery times").argument("[id]","Broadcast ID").addHelpText("after",p({context:`Note: The list command returns summary objects without html/text/from/subject.
369
+ 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 y(e,Ye,i);await N({loading:"Fetching broadcast...",sdkCall:n=>n.broadcasts.get(r),onInteractive:n=>{console.log(`Broadcast: ${n.id}`),console.log(` Status: ${Rr(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 il=new u("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",p({context:`Note: List results include name, status, created_at, and id only.
370
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching broadcasts...",sdkCall:n=>n.broadcasts.list(r),onInteractive:n=>{console.log(Pa(n.data)),P(n,"broadcasts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var rl=new u("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",p({context:`Opens the Resend dashboard in your default browser.
371
371
  With an ID: opens that broadcast's page for viewing or editing.
372
- 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 _e(i,r)});var tl=new p("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.
372
+ 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 _e(i,r)});var nl=["sent","delivered","opened","clicked","bounced","complained","unsubscribed","suppressed"],sl=new u("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(nl)).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",p({context:`Non-interactive: --type is required.
373
+ Note: responses are cached for up to 15 minutes, so requesting the same page
374
+ again may return slightly stale data within that window.
375
+ --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 y(e,Ye,i),n=await ft(t.type,{message:"Event type",options:nl.map(l=>({value:l,label:l}))},{message:"Missing --type flag.",code:"missing_type"},i),s=j(t.limit,i),a=I(s,t.after,t.before,i);await R({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($a(l.data)),P(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 al=new u("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",p({context:`Note: Only broadcasts created via the API can be sent via this command.
373
376
  Broadcasts created in the Resend dashboard cannot be sent programmatically.
374
377
 
375
378
  Scheduling:
376
379
  --scheduled-at accepts ISO 8601 (e.g. 2026-08-05T11:52:01Z) or
377
- 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 y(e,Ta,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 ol=new p("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.
380
+ 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 y(e,ja,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 ll=new u("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",p({context:`Note: Only draft broadcasts can be updated.
378
381
  If the broadcast is already sent or sending, the API will return an error.
379
382
 
380
383
  Variable interpolation:
381
384
  HTML bodies support triple-brace syntax for contact properties.
382
- 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 y(e,jt,i),n=t.reactEmail!=null?await He(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 il=new p("broadcasts").description("Manage broadcasts").addHelpText("after",m({context:`Lifecycle:
385
+ 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 y(e,Ye,i),n=t.reactEmail!=null?await Ge(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 cl=new u("broadcasts").description("Manage broadcasts").addHelpText("after",p({context:`Lifecycle:
383
386
  Broadcasts follow a draft \u2192 send flow:
384
387
  1. create \u2014 creates a draft (or sends immediately with --send)
385
388
  2. send \u2014 sends an API-created draft (dashboard broadcasts cannot be sent via API)
@@ -393,7 +396,7 @@ Template variables:
393
396
  Example: {{{FIRST_NAME|Friend}}} \u2014 uses FIRST_NAME or falls back to "Friend".
394
397
 
395
398
  Scheduling:
396
- --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 update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts cancel 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"]})).addCommand(za).addCommand(el).addCommand(tl).addCommand(Xa).addCommand(Za,{isDefault:!0}).addCommand(ol).addCommand(Pa).addCommand(Ya);var cl=require("node:fs"),fo=require("node:path");J();var rl={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 nl(e){let t=e.map(o=>[o.title,o.location??"",o.department??"",o.id]);return O(["Title","Location","Department","ID"],t,"(no open positions)")}var ff=10*1024*1024,gf={".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".txt":"text/plain"},sl="__skip__",dl=new p("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
399
+ --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 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(el).addCommand(rl).addCommand(al).addCommand(ol).addCommand(il,{isDefault:!0}).addCommand(sl).addCommand(ll).addCommand(Ga).addCommand(tl).addCommand(Qa);var gl=require("node:fs"),fo=require("node:path");V();var dl={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 ul(e){let t=e.map(o=>[o.title,o.location??"",o.department??"",o.id]);return E(["Title","Location","Department","ID"],t,"(no open positions)")}var Kf=10*1024*1024,vf={".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".txt":"text/plain"},ml="__skip__",hl=new u("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",p({context:`Interactive: run without flags to pick a position and answer each application
397
400
  question in a guided form. Flags pre-fill their matching questions.
398
401
 
399
402
  Non-interactive: --name, --email, and --resume are required, plus the job posting
@@ -401,27 +404,27 @@ ID argument. Answer job-specific questions with --field <path>=<value>, where
401
404
  <path> is shown on the job posting page at resend.com/careers (custom questions
402
405
  use UUID paths).
403
406
 
404
- 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 hf(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=S()&&!i.json,s=await ee(e,rl,i),a=s.id,l=t.resume,u=s.label;if(n){let h=await z(i,{permission:"sending_access"}),A=await ae("Fetching the application form...",()=>h.get(`/careers/${a}`),"fetch_error",i,{retryTransient:!0});u=A.title,Bo(A.location?`Apply to ${A.title} - ${A.location}`:`Apply to ${A.title}`);for(let U of A.fields){if(U.path==="resume"){l=l??await ll(U.title);continue}if(U.type==="File"){X.warn(`Skipping "${U.title}": only the resume file can be uploaded here. Apply on the careers page to include it.`);continue}if(r.has(U.path))continue;let K=await Af(U);K!==void 0&&r.set(U.path,K)}r.has("name")||r.set("name",await al("Name")),r.has("email")||r.set("email",await al("Email")),l=l??await ll("Resume"),t.yes||await bf(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 c=yf(l,i),d=new FormData;for(let[h,A]of r)d.append(h,A);d.append("resume",c.blob,c.filename);let f=await z(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:d}),"apply_error",i);!i.json&&S()?wt(`Application submitted for ${u}. Thanks for applying to Resend!`):j(b,{json:i.json})});function hf(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 Af(e){let t=e.required?e.title:`${e.title} (optional)`;if(e.selectable_values&&e.selectable_values.length>0){let r=[...e.required?[]:[{value:sl,label:"Skip"}],...e.selectable_values.map(s=>({value:s.value,label:s.label}))],n=await se({message:t,options:r});return F(n)&&k("Application cancelled."),n===sl?void 0:n}let o=await V({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)&&k("Application cancelled.");let i=o?.trim()??"";return i.length>0?i:void 0}async function al(e){let t=await V({message:e,validate:o=>!o||o.trim().length===0?`${e} is required`:void 0});return F(t)&&k("Application cancelled."),t.trim()}async function ll(e){let t=await V({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)&&k("Application cancelled."),t.trim()}async function bf(e,t,o){let i=new Map(e.fields.map(s=>[s.path,s.title])),r=[...t.entries()].map(([s,a])=>`${i.get(s)??s}: ${Cf(a,80)}`);r.push(`Resume: ${(0,fo.basename)(o)}`),Tn(r.join(`
405
- `),"Application summary");let n=await Ve({message:"Submit this application?"});(F(n)||!n)&&k("Application not submitted.")}function Cf(e,t){let o=e.replace(/\s+/g," ").trim();return o.length>t?`${o.slice(0,t-3)}...`:o}function yf(e,t){let o;try{o=(0,cl.readFileSync)(e)}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}o.length>ff&&g({message:"Resume file is too large. Maximum size is 10MB.",code:"invalid_resume"},{json:t.json});let i=gf[(0,fo.extname)(e).toLowerCase()]??"application/octet-stream";return{blob:new Blob([new Uint8Array(o)],{type:i}),filename:(0,fo.basename)(e)}}var ul=new p("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 D({loading:"Fetching open positions...",sdkCall:i=>i.get("/careers"),permission:"sending_access",onInteractive:i=>{console.log(nl(i.data)),i.data.length>0&&console.log(`
406
- Apply with: resend careers apply <id>`)}},o)});var pl=new p("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(dl).addCommand(ul,{isDefault:!0});function go(e){let t=[];for(let i of e.commands)i._hidden||t.push(go(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 ho(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(...ho(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 fl(e){let t=ho(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(A=>A.choices&&A.long),u=s.options.map(A=>A.long).filter(Boolean).join(" "),c=s.subcommands.map(A=>A.name).join(" "),d=l.length>0,f=u.length>0,b=c.length>0;if(!d&&!f&&!b)continue;o.push(` "${a}")`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(d||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(U=>[U.long,U.short].filter(Boolean)).join("|");o.push(` ${A}) return ;;`)}o.push(" esac")}f&&(o.push(' if [[ "$cur" == -* ]]; then'),o.push(` COMPREPLY=($(compgen -W "${u}" -- "$cur")); return`),o.push(" fi")),b&&o.push(` COMPREPLY=($(compgen -W "${c}" -- "$cur"))`),o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`complete -o default -F _${i}_completions ${i}`),o.join(`
407
- `)}function gl(e){let t=ho(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),c=s.subcommands.length>0;o.push(` "${a}")`);let d=s.options.filter(f=>f.takesValue&&!f.choices);if(l.length>0||d.length>0){o.push(' case "$prev" in');for(let f of l)o.push(` ${f.long}) compadd -- ${f.choices?.join(" ")}; return ;;`);if(d.length>0){let f=d.flatMap(b=>[b.long,b.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(b=>`"${b.long}:${ml(b.description)}"`).join(" ");o.push(` local -a opts=(${f}); _describe 'option' opts; return`),o.push(" fi")}if(c){let f=s.subcommands.map(b=>`"${b.name}:${ml(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(`
408
- `)}function hl(e){let t=e.name,o=ho(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 "${ci(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 "${ci(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 "${ci(u.description)}"`);for(let u of n.options)if(u.long){let c=u.long.replace("--",""),d=`complete -c ${t} -n "${l}" -l "${c}"`;u.short&&(d+=` -s "${u.short.replace("-","")}"`),u.takesValue&&(d+=" -r"),u.choices&&(d+=` -a "${u.choices.join(" ")}"`),d+=` -d "${ci(u.description)}"`,i.push(d)}}return i.join(`
409
- `)}function ml(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/:/g,"\\:")}function ci(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Al(e){let t=e.name,o=ho(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(A=>A.choices&&A.long),u=s.options.map(A=>A.long).filter(Boolean).map(A=>`"${A}"`).join(", "),c=s.subcommands.map(A=>`"${A.name}"`).join(", "),d=l.length>0,f=u.length>0,b=c.length>0;if(!d&&!f&&!b)continue;i.push(` "${a}" {`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(d||h.length>0){i.push(" switch ($prev) {");for(let A of l){let U=A.choices?.map(K=>`"${K}"`).join(", ");i.push(` "${A.long}" { @(${U}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return }`)}if(h.length>0){let A=h.flatMap(U=>[U.long,U.short].filter(Boolean)).map(U=>`"${U}"`).join(", ");i.push(` { $_ -in @(${A}) } { 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(" }")),b&&i.push(` @(${c}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }`),i.push(" }")}return i.push(" }"),i.push("}"),i.join(`
410
- `)}var bl=new p("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.
411
- 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=go(o);j(r,{json:i.json})});var me=require("node:fs"),ft=require("node:os"),je=require("node:path");J();var Ul=["bash","zsh","fish","powershell"],di="# resend shell completion";function Uf(){let e=process.env.SHELL;if(e){let t=(0,je.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 Sf(e){if(e)return e;let t=Uf();if(t)return t;S()||(process.stderr.write(`error: could not detect shell. Pass the shell name explicitly.
412
- `),process.exit(1));let o=await se({message:"Which shell do you use?",options:Ul.map(i=>({value:i,label:i}))});return F(o)&&k("Cancelled."),o}function Cl(e){switch(e){case"bash":return process.platform==="darwin"?(0,je.join)((0,ft.homedir)(),".bash_profile"):(0,je.join)((0,ft.homedir)(),".bashrc");case"zsh":return(0,je.join)((0,ft.homedir)(),".zshrc");case"powershell":return process.platform==="win32"?(0,je.join)((0,ft.homedir)(),"Documents","PowerShell","Microsoft.PowerShell_profile.ps1"):(0,je.join)((0,ft.homedir)(),".config","powershell","Microsoft.PowerShell_profile.ps1")}}function Kf(e,t){switch(e){case"bash":return fl(t);case"zsh":return gl(t);case"fish":return hl(t);case"powershell":return Al(t)}}function yl(e,t,o){(0,me.existsSync)(e)||(0,me.mkdirSync)(e,{recursive:!0});let i=(0,je.join)(e,t);return(0,me.writeFileSync)(i,`${o}
413
- `),i}function vf(e,t){switch(e){case"zsh":{let o=(0,je.join)((0,ft.homedir)(),".zsh","completions"),i=yl(o,"_resend",t);X.success(`Completions written to ${i}`);let r=Cl(e),n=!0;if((0,me.existsSync)(r)&&(0,me.readFileSync)(r,"utf8").includes(o)&&(n=!1),n){let s=`${di}
407
+ 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 xf(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=S()&&!i.json,s=await ee(e,dl,i),a=s.id,l=t.resume,d=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});d=A.title,Bo(A.location?`Apply to ${A.title} - ${A.location}`:`Apply to ${A.title}`);for(let U of A.fields){if(U.path==="resume"){l=l??await fl(U.title);continue}if(U.type==="File"){X.warn(`Skipping "${U.title}": only the resume file can be uploaded here. Apply on the careers page to include it.`);continue}if(r.has(U.path))continue;let w=await Ff(U);w!==void 0&&r.set(U.path,w)}r.has("name")||r.set("name",await pl("Name")),r.has("email")||r.set("email",await pl("Email")),l=l??await fl("Resume"),t.yes||await kf(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 c=_f(l,i),m=new FormData;for(let[h,A]of r)m.append(h,A);m.append("resume",c.blob,c.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:m}),"apply_error",i);!i.json&&S()?Ft(`Application submitted for ${d}. Thanks for applying to Resend!`):H(b,{json:i.json})});function xf(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 Ff(e){let t=e.required?e.title:`${e.title} (optional)`;if(e.selectable_values&&e.selectable_values.length>0){let r=[...e.required?[]:[{value:ml,label:"Skip"}],...e.selectable_values.map(s=>({value:s.value,label:s.label}))],n=await se({message:t,options:r});return F(n)&&k("Application cancelled."),n===ml?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)&&k("Application cancelled.");let i=o?.trim()??"";return i.length>0?i:void 0}async function pl(e){let t=await z({message:e,validate:o=>!o||o.trim().length===0?`${e} is required`:void 0});return F(t)&&k("Application cancelled."),t.trim()}async function fl(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)&&k("Application cancelled."),t.trim()}async function kf(e,t,o){let i=new Map(e.fields.map(s=>[s.path,s.title])),r=[...t.entries()].map(([s,a])=>`${i.get(s)??s}: ${Rf(a,80)}`);r.push(`Resume: ${(0,fo.basename)(o)}`),jn(r.join(`
408
+ `),"Application summary");let n=await Ve({message:"Submit this application?"});(F(n)||!n)&&k("Application not submitted.")}function Rf(e,t){let o=e.replace(/\s+/g," ").trim();return o.length>t?`${o.slice(0,t-3)}...`:o}function _f(e,t){let o;try{o=(0,gl.readFileSync)(e)}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}o.length>Kf&&g({message:"Resume file is too large. Maximum size is 10MB.",code:"invalid_resume"},{json:t.json});let i=vf[(0,fo.extname)(e).toLowerCase()]??"application/octet-stream";return{blob:new Blob([new Uint8Array(o)],{type:i}),filename:(0,fo.basename)(e)}}var Al=new u("list").description("List open positions at Resend").addHelpText("after",p({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 R({loading:"Fetching open positions...",sdkCall:i=>i.get("/careers"),permission:"sending_access",onInteractive:i=>{console.log(ul(i.data)),i.data.length>0&&console.log(`
409
+ Apply with: resend careers apply <id>`)}},o)});var bl=new u("careers").description("Browse open positions at Resend and apply from your terminal").addHelpText("after",p({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(hl).addCommand(Al,{isDefault:!0});function go(e){let t=[];for(let i of e.commands)i._hidden||t.push(go(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 ho(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(...ho(a,i,o));return r}function Dr(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 yl(e){let t=ho(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=Dr(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),d=s.options.map(A=>A.long).filter(Boolean).join(" "),c=s.subcommands.map(A=>A.name).join(" "),m=l.length>0,f=d.length>0,b=c.length>0;if(!m&&!f&&!b)continue;o.push(` "${a}")`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(m||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(U=>[U.long,U.short].filter(Boolean)).join("|");o.push(` ${A}) return ;;`)}o.push(" esac")}f&&(o.push(' if [[ "$cur" == -* ]]; then'),o.push(` COMPREPLY=($(compgen -W "${d}" -- "$cur")); return`),o.push(" fi")),b&&o.push(` COMPREPLY=($(compgen -W "${c}" -- "$cur"))`),o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`complete -o default -F _${i}_completions ${i}`),o.join(`
410
+ `)}function Ul(e){let t=ho(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=Dr(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),d=s.options.filter(f=>f.long),c=s.subcommands.length>0;o.push(` "${a}")`);let m=s.options.filter(f=>f.takesValue&&!f.choices);if(l.length>0||m.length>0){o.push(' case "$prev" in');for(let f of l)o.push(` ${f.long}) compadd -- ${f.choices?.join(" ")}; return ;;`);if(m.length>0){let f=m.flatMap(b=>[b.long,b.short].filter(Boolean)).join("|");o.push(` ${f}) _files; return ;;`)}o.push(" esac")}if(d.length>0){o.push(' if [[ "$cur" == -* ]]; then');let f=d.map(b=>`"${b.long}:${Cl(b.description)}"`).join(" ");o.push(` local -a opts=(${f}); _describe 'option' opts; return`),o.push(" fi")}if(c){let f=s.subcommands.map(b=>`"${b.name}:${Cl(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(`
411
+ `)}function Sl(e){let t=e.name,o=ho(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 "${di(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 "${di(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 d of n.subcommands)i.push(`complete -c ${t} -n "${l}" -a "${d.name}" -d "${di(d.description)}"`);for(let d of n.options)if(d.long){let c=d.long.replace("--",""),m=`complete -c ${t} -n "${l}" -l "${c}"`;d.short&&(m+=` -s "${d.short.replace("-","")}"`),d.takesValue&&(m+=" -r"),d.choices&&(m+=` -a "${d.choices.join(" ")}"`),m+=` -d "${di(d.description)}"`,i.push(m)}}return i.join(`
412
+ `)}function Cl(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/:/g,"\\:")}function di(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function wl(e){let t=e.name,o=ho(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=Dr(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),d=s.options.map(A=>A.long).filter(Boolean).map(A=>`"${A}"`).join(", "),c=s.subcommands.map(A=>`"${A.name}"`).join(", "),m=l.length>0,f=d.length>0,b=c.length>0;if(!m&&!f&&!b)continue;i.push(` "${a}" {`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(m||h.length>0){i.push(" switch ($prev) {");for(let A of l){let U=A.choices?.map(w=>`"${w}"`).join(", ");i.push(` "${A.long}" { @(${U}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return }`)}if(h.length>0){let A=h.flatMap(U=>[U.long,U.short].filter(Boolean)).map(U=>`"${U}"`).join(", ");i.push(` { $_ -in @(${A}) } { return }`)}i.push(" }")}f&&(i.push(' if ($cur -like "-*") {'),i.push(` @(${d}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return`),i.push(" }")),b&&i.push(` @(${c}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }`),i.push(" }")}return i.push(" }"),i.push("}"),i.join(`
413
+ `)}var Kl=new u("commands").description("Print the full command tree as JSON (for agents and tooling)").addHelpText("after",p({context:`Outputs every subcommand, option, and description from the CLI definition.
414
+ 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=go(o);H(r,{json:i.json})});var fe=require("node:fs"),ht=require("node:os"),Ie=require("node:path");V();var Fl=["bash","zsh","fish","powershell"],ui="# resend shell completion";function Df(){let e=process.env.SHELL;if(e){let t=(0,Ie.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 Ef(e){if(e)return e;let t=Df();if(t)return t;S()||(process.stderr.write(`error: could not detect shell. Pass the shell name explicitly.
415
+ `),process.exit(1));let o=await se({message:"Which shell do you use?",options:Fl.map(i=>({value:i,label:i}))});return F(o)&&k("Cancelled."),o}function vl(e){switch(e){case"bash":return process.platform==="darwin"?(0,Ie.join)((0,ht.homedir)(),".bash_profile"):(0,Ie.join)((0,ht.homedir)(),".bashrc");case"zsh":return(0,Ie.join)((0,ht.homedir)(),".zshrc");case"powershell":return process.platform==="win32"?(0,Ie.join)((0,ht.homedir)(),"Documents","PowerShell","Microsoft.PowerShell_profile.ps1"):(0,Ie.join)((0,ht.homedir)(),".config","powershell","Microsoft.PowerShell_profile.ps1")}}function Of(e,t){switch(e){case"bash":return yl(t);case"zsh":return Ul(t);case"fish":return Sl(t);case"powershell":return wl(t)}}function xl(e,t,o){(0,fe.existsSync)(e)||(0,fe.mkdirSync)(e,{recursive:!0});let i=(0,Ie.join)(e,t);return(0,fe.writeFileSync)(i,`${o}
416
+ `),i}function Bf(e,t){switch(e){case"zsh":{let o=(0,Ie.join)((0,ht.homedir)(),".zsh","completions"),i=xl(o,"_resend",t);X.success(`Completions written to ${i}`);let r=vl(e),n=!0;if((0,fe.existsSync)(r)&&(0,fe.readFileSync)(r,"utf8").includes(o)&&(n=!1),n){let s=`${ui}
414
417
  fpath=(${o} $fpath)
415
- `,a=(0,me.existsSync)(r)?(0,me.readFileSync)(r,"utf8"):"",l=a.match(/^.*compinit.*$/m);if(l){let u=a.indexOf(l[0]),c=a.slice(0,u),d=a.slice(u);(0,me.writeFileSync)(r,`${c}${s}
416
- ${d}`)}else{let u=`
418
+ `,a=(0,fe.existsSync)(r)?(0,fe.readFileSync)(r,"utf8"):"",l=a.match(/^.*compinit.*$/m);if(l){let d=a.indexOf(l[0]),c=a.slice(0,d),m=a.slice(d);(0,fe.writeFileSync)(r,`${c}${s}
419
+ ${m}`)}else{let d=`
417
420
  ${s}autoload -Uz compinit && compinit
418
- `;(0,me.writeFileSync)(r,u,{flag:"a"})}X.info(`Added completion path to ${r}`)}X.info("Restart your shell to activate completions.");return}case"fish":{let o=(0,je.join)((0,ft.homedir)(),".config","fish","completions"),i=yl(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=Cl(e),i=e==="powershell"?`
419
- ${di}
421
+ `;(0,fe.writeFileSync)(r,d,{flag:"a"})}X.info(`Added completion path to ${r}`)}X.info("Restart your shell to activate completions.");return}case"fish":{let o=(0,Ie.join)((0,ht.homedir)(),".config","fish","completions"),i=xl(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=vl(e),i=e==="powershell"?`
422
+ ${ui}
420
423
  resend completion powershell | Invoke-Expression
421
424
  `:`
422
- ${di}
425
+ ${ui}
423
426
  eval "$(resend completion ${e})"
424
- `;if((0,me.existsSync)(o)&&(0,me.readFileSync)(o,"utf8").includes(di)){X.info(`Completions already installed in ${o}`);return}let r=(0,je.dirname)(o);(0,me.existsSync)(r)||(0,me.mkdirSync)(r,{recursive:!0}),(0,me.writeFileSync)(o,i,{flag:"a"}),X.success(`Completions added to ${o}`),X.info("Restart your shell to activate completions.");return}}}var Sl=new p("completion").description("Generate shell completion script").addArgument(new nn("[shell]","Shell type").choices(Ul)).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
427
+ `;if((0,fe.existsSync)(o)&&(0,fe.readFileSync)(o,"utf8").includes(ui)){X.info(`Completions already installed in ${o}`);return}let r=(0,Ie.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 kl=new u("completion").description("Generate shell completion script").addArgument(new sn("[shell]","Shell type").choices(Fl)).option("--install","Install completions into your shell profile").addHelpText("after",p({context:`Outputs a completion script for the given shell. The shell is auto-detected
425
428
  from $SHELL when not specified.
426
429
 
427
430
  Quick setup:
@@ -441,7 +444,7 @@ Manual setup:
441
444
  PowerShell (add to $PROFILE):
442
445
  resend completion powershell >> $PROFILE
443
446
 
444
- 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 Sf(e),r=o.parent;if(!r)throw new Error("completion command must be registered under a parent");let n=go(r),s=Kf(i,n);if(t.install){vf(i,s);return}if(!e&&S()){o.help();return}console.log(s)});var Kl=new p("create").description("Create a new contact property definition").addOption(new Y("--key <key>","Property key name, used in broadcast template interpolation (e.g. company_name, department)")).addOption(new Y("--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:
447
+ 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 Ef(e),r=o.parent;if(!r)throw new Error("completion command must be registered under a parent");let n=go(r),s=Of(i,n);if(t.install){Bf(i,s);return}if(!e&&S()){o.help();return}console.log(s)});var Rl=new u("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",p({context:`Property keys are used as identifiers in broadcast HTML template interpolation:
445
448
  {{{PROPERTY_NAME|fallback}}} \u2014 triple-brace syntax substitutes the contact's value
446
449
  {{{company_name|Unknown}}} \u2014 falls back to "Unknown" if the property is not set
447
450
 
@@ -449,20 +452,20 @@ Reserved keys (cannot be used): FIRST_NAME, LAST_NAME, EMAIL, UNSUBSCRIBE_URL
449
452
 
450
453
  Non-interactive: --key and --type are required. --fallback-value is optional.
451
454
  Warning: do not create properties with reserved key names \u2014 they will conflict with
452
- 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 I(e.key,{message:"Property key",placeholder:"e.g. company_name"},{message:"Missing --key flag.",code:"missing_key"},o),r=await Ot(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 q({loading:"Creating contact property...",sdkCall:a=>a.contactProperties.create(s),onInteractive:a=>{console.log(`Contact property created: ${a.id}`)}},o)});var $t={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 vl(e){let t=e.map(o=>[o.key,o.type,o.fallbackValue!=null?String(o.fallbackValue):"",o.id,o.createdAt]);return O(["Key","Type","Fallback Value","ID","Created"],t,"(no contact properties)")}var wl=new p("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
455
+ 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 ft(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 q({loading:"Creating contact property...",sdkCall:a=>a.contactProperties.create(s),onInteractive:a=>{console.log(`Contact property created: ${a.id}`)}},o)});var Ht={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 E(["Key","Type","Fallback Value","ID","Created"],t,"(no contact properties)")}var Dl=new u("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",p({context:`WARNING: Deleting a property definition removes that property value from ALL contacts
453
456
  permanently. This cannot be undone, and any broadcasts that reference this property key
454
457
  via {{{PROPERTY_NAME}}} will render an empty string or their inline fallback instead.
455
458
 
456
- 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,$t,i);await te(r.id,!!t.yes,{confirmMessage:`Delete contact property "${r.label}"?
459
+ 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,Ht,i);await te(r.id,!!t.yes,{confirmMessage:`Delete contact property "${r.label}"?
457
460
  ID: ${r.id}
458
- 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 xl=new p("get").description("Retrieve a contact property definition by ID").argument("[id]","Contact property UUID").addHelpText("after",m({output:` {
461
+ 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 El=new u("get").description("Retrieve a contact property definition by ID").argument("[id]","Contact property UUID").addHelpText("after",p({output:` {
459
462
  "object": "contact_property",
460
463
  "id": "<uuid>",
461
464
  "key": "company_name",
462
465
  "type": "string",
463
466
  "fallbackValue": null,
464
467
  "createdAt": "2026-01-01 00:00:00+00"
465
- }`,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 y(e,$t,i);await N({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 Fl=new p("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.
468
+ }`,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 y(e,Ht,i);await N({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 Ol=new u("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",p({context:`Pagination: use --after or --before with a contact property ID as the cursor.
466
469
  Only one of --after or --before may be used at a time.
467
470
  The response includes has_more: true when additional pages exist.`,output:` {
468
471
  "object": "list",
@@ -470,14 +473,14 @@ This will remove this property from ALL contacts permanently.`,loading:"Deleting
470
473
  "data": [
471
474
  { "id": "<uuid>", "key": "company_name", "type": "string", "fallbackValue": null, "createdAt": "..." }
472
475
  ]
473
- }`,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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching contact properties...",sdkCall:n=>n.contactProperties.list(r),onInteractive:n=>{console.log(vl(n.data)),Q(n,"contact-properties list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var kl=new p("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
476
+ }`,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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching contact properties...",sdkCall:n=>n.contactProperties.list(r),onInteractive:n=>{console.log(_l(n.data)),P(n,"contact-properties list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Bl=new u("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",p({context:`Note: the property key and type cannot be changed after creation. Only the fallback value
474
477
  is updatable. Renaming a property would break existing broadcasts that reference the old key.
475
478
 
476
479
  --fallback-value and --clear-fallback-value are mutually exclusive.
477
480
 
478
481
  The fallback value is used in broadcast template interpolation when a contact has no value:
479
482
  {{{company_name|Unknown}}} \u2014 inline fallback (takes precedence over the property's fallback)
480
- {{{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 y(e,$t,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 z(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 Rl=new p("contact-properties").description("Manage contact property definitions").addHelpText("after",m({context:`Contact properties define the schema for custom data stored on contacts.
483
+ {{{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 y(e,Ht,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 Tl=new u("contact-properties").description("Manage contact property definitions").addHelpText("after",p({context:`Contact properties define the schema for custom data stored on contacts.
481
484
  Think of them as column definitions \u2014 you create a property definition (e.g. company_name)
482
485
  and then set values for that property on individual contacts via "resend contacts update --properties".
483
486
 
@@ -492,9 +495,9 @@ Supported types:
492
495
  number \u2014 numeric values (useful for counts, scores, thresholds)
493
496
 
494
497
  Note: property keys and types are immutable after creation. Only the fallback value can
495
- 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(Kl).addCommand(xl).addCommand(Fl,{isDefault:!0}).addCommand(kl).addCommand(wl);function ui(e){let t=e.map(o=>[o.email,o.first_name??"",o.last_name??"",o.unsubscribed?"yes":"no",o.id]);return O(["Email","First Name","Last Name","Unsubscribed","ID"],t,"(no contacts)")}function _l(e){let t=e.map(o=>[o.name,o.subscription,o.id,o.description??""]);return O(["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 Ht(e){return e.includes("@")?{email:e}:{id:e}}function Gt(e){return e.includes("@")?{email:e}:{contactId:e}}function pi(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 mi(e,t){if(e)try{return JSON.parse(e)}catch{g({message:"Invalid --properties JSON.",code:"invalid_properties"},{json:t.json})}}var Dl=new p("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.
498
+ 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(Rl).addCommand(El).addCommand(Ol,{isDefault:!0}).addCommand(Bl).addCommand(Dl);function mi(e){let t=e.map(o=>[o.email,o.first_name??"",o.last_name??"",o.unsubscribed?"yes":"no",o.id]);return E(["Email","First Name","Last Name","Unsubscribed","ID"],t,"(no contacts)")}function jl(e){let t=e.map(o=>[o.name,o.subscription,o.id,o.description??""]);return E(["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 Gt(e){return e.includes("@")?{email:e}:{id:e}}function Qt(e){return e.includes("@")?{email:e}:{contactId:e}}function pi(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 fi(e,t){if(e)try{return JSON.parse(e)}catch{g({message:"Invalid --properties JSON.",code:"invalid_properties"},{json:t.json})}}var Il=new u("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",p({context:`The <contactId> argument accepts either a UUID or an email address.
496
499
 
497
- 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 y(e,be,i),n=await y(t.segmentId,Ge,i),s={...Gt(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)});J();var El=new p("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.
500
+ 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 y(e,be,i),n=await y(t.segmentId,De,i),s={...Qt(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 Pl=new u("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",p({context:`Non-interactive: --email is required. All other flags are optional.
498
501
 
499
502
  Properties: pass a JSON object string to --properties (e.g. '{"plan":"pro","company":"Acme"}').
500
503
  Properties are stored as custom contact attributes. To clear a property, set it to null.
@@ -502,11 +505,11 @@ Properties: pass a JSON object string to --properties (e.g. '{"plan":"pro","comp
502
505
 
503
506
  Segments: use --segment-id once per segment to add the contact to one or more segments on creation.
504
507
 
505
- 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 I(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(S()&&!o.json&&!e.firstName){let l=await V({message:"First name (optional)"});F(l)&&k("Cancelled."),l&&(r=l)}if(S()&&!o.json&&!e.lastName){let l=await V({message:"Last name (optional)"});F(l)&&k("Cancelled."),l&&(n=l)}let s=mi(e.properties,o),a=e.segmentId??[];await q({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 Bl=new p("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.
508
+ 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(S()&&!o.json&&!e.firstName){let l=await z({message:"First name (optional)"});F(l)&&k("Cancelled."),l&&(r=l)}if(S()&&!o.json&&!e.lastName){let l=await z({message:"Last name (optional)"});F(l)&&k("Cancelled."),l&&(n=l)}let s=fi(e.properties,o),a=e.segmentId??[];await q({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(d=>({id:d}))}}),onInteractive:l=>{console.log(`Contact created: ${l.id}`)}},o)});var $l=new u("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",p({context:`The <id> argument accepts either a UUID or an email address.
506
509
 
507
510
  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}"?
508
511
  ID: ${r.id}
509
- This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMsg:"Contact deleted",sdkCall:n=>n.contacts.remove(r.id)},i)});var Ol=new p("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:` {
512
+ This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMsg:"Contact deleted",sdkCall:n=>n.contacts.remove(r.id)},i)});var Hl=new u("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",p({output:` {
510
513
  "object": "contact",
511
514
  "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
512
515
  "email": "steve.wozniak@gmail.com",
@@ -515,7 +518,7 @@ This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMs
515
518
  "created_at": "2026-01-01 00:00:00+00",
516
519
  "unsubscribed": false,
517
520
  "properties": {}
518
- }`,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 y(e,be,i);await N({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 Pl=require("node:fs"),$l=require("node:path");function Tl(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 O(["Status","Total","Created","Updated","Skipped","Failed","Created At","ID"],t,"(no contact imports)")}var jl={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 Il(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 Hl=new p("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 Y("--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.
521
+ }`,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 y(e,be,i);await N({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,d]of a)console.log(` ${l}: ${d.value}`)}}},i)});var ql=require("node:fs"),Ml=require("node:path");function Gl(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 E(["Status","Total","Created","Updated","Skipped","Failed","Created At","ID"],t,"(no contact imports)")}var Ql={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 Nl(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 Ll=new u("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",p({context:`Non-interactive: --file is required. All other flags are optional.
519
522
 
520
523
  The CSV file is uploaded as multipart form data (max 100MB).
521
524
 
@@ -531,32 +534,32 @@ On conflict: --on-conflict upsert (default) updates existing contacts; skip leav
531
534
 
532
535
  Segments: use --segment-id once per segment to add imported contacts to one or more segments.
533
536
 
534
- 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 I(e.file,{message:"Path to the CSV file",placeholder:"./contacts.csv"},{message:"Missing --file flag.",code:"missing_file"},o),r;try{r=(0,Pl.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,$l.basename)(i),{type:"text/csv"}),s=Il(e.columnMap,o),a=(e.segmentId??[]).map(u=>({id:u})),l=e.topics!==void 0?pi(e.topics,o):void 0;await q({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 Gl=new p("get").description("Retrieve a contact import by ID").argument("[id]","Contact import ID").addHelpText("after",m({output:` {
537
+ 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,ql.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,Ml.basename)(i),{type:"text/csv"}),s=Nl(e.columnMap,o),a=(e.segmentId??[]).map(d=>({id:d})),l=e.topics!==void 0?pi(e.topics,o):void 0;await q({loading:"Starting contact import...",sdkCall:d=>d.contacts.imports.create({file:n,...s&&{columnMap:s},...e.onConflict&&{onConflict:e.onConflict},...a.length>0&&{segments:a},...l&&{topics:l}}),onInteractive:d=>{console.log(`Contact import started: ${d.id}`)}},o)});var Wl=new u("get").description("Retrieve a contact import by ID").argument("[id]","Contact import ID").addHelpText("after",p({output:` {
535
538
  "object": "contact_import",
536
539
  "id": "479e3145-dd38-476b-932c-529ceb705947",
537
540
  "status": "completed",
538
541
  "created_at": "2026-05-15 18:32:37.823+00",
539
542
  "completed_at": "2026-05-15 18:33:42.916+00",
540
543
  "counts": {"total":1200,"created":800,"updated":300,"skipped":75,"failed":25}
541
- }`,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 y(e,jl,i);await N({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 Ql=new p("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 Y("--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.
544
+ }`,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 y(e,Ql,i);await N({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 Jl=new u("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",p({context:`Pagination: use --after or --before with a contact import ID as the cursor.
542
545
  Only one of --after or --before may be used at a time.
543
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching contact imports...",sdkCall:n=>n.contacts.imports.list({...r,...e.status&&{status:e.status}}),onInteractive:n=>{console.log(Tl(n.data)),Q(n,"contacts imports list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Nl=new p("imports").description("Import contacts in bulk from a CSV file").addHelpText("after",m({context:`Import lifecycle:
546
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching contact imports...",sdkCall:n=>n.contacts.imports.list({...r,...e.status&&{status:e.status}}),onInteractive:n=>{console.log(Gl(n.data)),P(n,"contacts imports list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Vl=new u("imports").description("Import contacts in bulk from a CSV file").addHelpText("after",p({context:`Import lifecycle:
544
547
  1. resend contacts imports create --file ./contacts.csv (returns the import id)
545
548
  2. resend contacts imports get <id> (poll until "completed")
546
549
  3. resend contacts imports list (review past imports)
547
550
 
548
551
  Imports run asynchronously. The create command returns immediately with an id while
549
- 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(Hl).addCommand(Gl).addCommand(Ql,{isDefault:!0});var ql=new p("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.
552
+ 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(Ll).addCommand(Wl).addCommand(Jl,{isDefault:!0});var zl=new u("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",p({context:`Contacts are global \u2014 they are not scoped to audiences or segments since the 2025 migration.
550
553
 
551
554
  Pagination: use --after or --before with a contact ID as the cursor.
552
555
  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","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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching contacts...",sdkCall:n=>n.contacts.list(r),onInteractive:n=>{console.log(ui(n.data)),Q(n,"contacts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Ml=new p("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.
554
- 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 y(e,be,r),s=await y(t,Ge,r),a={...Gt(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 Ll=new p("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 y(e,be,i);await D({loading:"Fetching segments...",sdkCall:n=>n.contacts.segments.list(Gt(r)),onInteractive:n=>console.log(li(n.data))},i)});var Wl=new p("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.
556
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching contacts...",sdkCall:n=>n.contacts.list(r),onInteractive:n=>{console.log(mi(n.data)),P(n,"contacts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Yl=new u("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",p({context:`The <contactId> argument accepts either a UUID or an email address.
557
+ 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 y(e,be,r),s=await y(t,De,r),a={...Qt(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 Xl=new u("segments").description("List the segments a contact belongs to").argument("[id]","Contact UUID or email address").addHelpText("after",p({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 y(e,be,i);await R({loading:"Fetching segments...",sdkCall:n=>n.contacts.segments.list(Qt(r)),onInteractive:n=>console.log(ci(n.data))},i)});var Zl=new u("topics").description("List a contact's topic subscriptions").argument("[id]","Contact UUID or email address").addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
555
558
 
556
559
  Topics control which broadcast email types a contact receives.
557
560
  subscription values: "opt_in" (receiving) | "opt_out" (not receiving)
558
561
 
559
- 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 y(e,be,i);await D({loading:"Fetching topic subscriptions...",sdkCall:n=>n.contacts.topics.list(Ht(r)),onInteractive:n=>console.log(_l(n.data))},i)});var Jl=new p("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.
562
+ 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 y(e,be,i);await R({loading:"Fetching topic subscriptions...",sdkCall:n=>n.contacts.topics.list(Gt(r)),onInteractive:n=>console.log(jl(n.data))},i)});var ec=new u("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",p({context:`The <id> argument accepts either a UUID or an email address.
560
563
 
561
564
  Subscription toggle:
562
565
  --unsubscribed Sets unsubscribed: true \u2014 contact will not receive any broadcasts.
@@ -564,7 +567,7 @@ Subscription toggle:
564
567
  Omitting both flags leaves the subscription status unchanged.
565
568
 
566
569
  Properties: --properties merges the given JSON object with existing properties.
567
- 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 y(e,be,i),n=mi(t.properties,i),s={...Ht(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)});J();var Vl=new p("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.
570
+ 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 y(e,be,i),n=fi(t.properties,i),s={...Gt(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 tc=new u("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",p({context:`The <id> argument accepts either a UUID or an email address.
568
571
 
569
572
  Non-interactive: --topics is required.
570
573
 
@@ -573,7 +576,7 @@ Topics JSON format:
573
576
  subscription values: "opt_in" | "opt_out"
574
577
 
575
578
  This operation replaces all topic subscriptions for the specified topics.
576
- 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 y(e,be,i),n=await z(i),s=t.topics;if(!s){(!S()||i.json)&&g({message:"Missing --topics flag.",code:"missing_topics"},{json:i.json});let u=await V({message:`Topics JSON (e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]')`,placeholder:'[{"id":"topic-uuid","subscription":"opt_in"}]',validate:c=>c?void 0:"Required"});F(u)&&k("Cancelled."),s=u}let a=pi(s,i),l=await ae("Updating topic subscriptions...",()=>n.contacts.topics.update({...Ht(r),topics:a}),"update_topics_error",i);!i.json&&S()?console.log(`Topic subscriptions updated for contact: ${r}`):j(l,{json:i.json})});var zl=new p("contacts").description("Manage contacts").addHelpText("after",m({context:`Contacts are global entities (not audience-scoped since the 2025 migration).
579
+ 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 y(e,be,i),n=await Y(i),s=t.topics;if(!s){(!S()||i.json)&&g({message:"Missing --topics flag.",code:"missing_topics"},{json:i.json});let d=await z({message:`Topics JSON (e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]')`,placeholder:'[{"id":"topic-uuid","subscription":"opt_in"}]',validate:c=>c?void 0:"Required"});F(d)&&k("Cancelled."),s=d}let a=pi(s,i),l=await ae("Updating topic subscriptions...",()=>n.contacts.topics.update({...Gt(r),topics:a}),"update_topics_error",i);!i.json&&S()?console.log(`Topic subscriptions updated for contact: ${r}`):H(l,{json:i.json})});var oc=new u("contacts").description("Manage contacts").addHelpText("after",p({context:`Contacts are global entities (not audience-scoped since the 2025 migration).
577
580
  Each contact is identified by a UUID or email address \u2014 both are accepted in all subcommands.
578
581
 
579
582
  Properties:
@@ -590,7 +593,7 @@ Segments:
590
593
  Manage membership with "resend contacts add-segment" and "resend contacts remove-segment".
591
594
 
592
595
  Imports:
593
- 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(El).addCommand(Ol).addCommand(ql,{isDefault:!0}).addCommand(Jl).addCommand(Bl).addCommand(Ll).addCommand(Dl).addCommand(Ml).addCommand(Wl).addCommand(Vl).addCommand(Nl);var Yl=new p("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 _e(pe.documentation,o)});Ae();gr();Mo();J();Ao();Ct();var Br="TimeoutError",ic=(e,t)=>{let o,i=new Promise((r,n)=>{o=setTimeout(()=>{let s=new Error(`Operation timed out after ${t}ms`);s.name=Br,n(s)},t)});return Promise.race([e,i]).finally(()=>{clearTimeout(o)})};var Rf=5e3;function _f(e){return e instanceof Error&&e.name===yr}async function Df(){try{let e=await fetch(Dr,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return{name:"CLI Version",status:"warn",message:`v${re} (could not check for updates)`};let t=await e.json();if(t.prerelease||t.draft)return{name:"CLI Version",status:"warn",message:`v${re} (could not check for updates)`};let o=t.tag_name?.replace(/^v/,"")??"unknown";return o===re?{name:"CLI Version",status:"pass",message:`v${re} (latest)`}:{name:"CLI Version",status:"warn",message:`v${re} (latest: v${o})`,detail:"Update available"}}catch{return{name:"CLI Version",status:"warn",message:`v${re} (could not check for updates)`}}}async function Ef(e){let t;try{t=await Kt(e,void 0,{refresh:!1})}catch(n){return{name:"API Key",status:"fail",message:M(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:`${pt(o)} (source: ${r}${i})`}}async function Bf(e){let t;try{t=await Kt(e)}catch(r){let n=_f(r);return{name:"API Validation",status:n?"warn":"fail",message:M(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 Rt(o),{data:n,error:s}=await ic(r.domains.list(),Rf);if(s){let c=s;return c.name==="restricted_api_key"?{name:"API Validation",status:"warn",message:`Sending-only ${i}`,detail:Dt}:c.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(c=>c.status==="verified"),u=a.filter(c=>c.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(c=>`${c.name} (${c.status})`).join(", ")}:{name:"Domains",status:"pass",message:`${l.length} verified, ${u.length} pending`,detail:a.map(c=>`${c.name} (${c.status})`).join(", ")}}catch(r){return r instanceof Error&&r.name===Br?{name:"API Validation",status:"warn",message:"Request timed out"}:{name:"API Validation",status:"fail",message:M(r,`Failed to validate ${i}`)}}}var rc=new p("doctor").description("Check CLI version, API key, and domain status").addHelpText("after",m({setup:!0,context:`Checks performed:
596
+ 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(Pl).addCommand(Hl).addCommand(zl,{isDefault:!0}).addCommand(ec).addCommand($l).addCommand(Xl).addCommand(Il).addCommand(Yl).addCommand(Zl).addCommand(tc).addCommand(Vl);var ic=new u("docs").description("Open the Resend documentation in your browser").addHelpText("after",p({context:"Opens https://resend.com/docs in your default browser.",examples:["resend docs"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await _e(pe.documentation,o)});Ae();hr();Lo();V();Ao();Ut();var Br="TimeoutError",cc=(e,t)=>{let o,i=new Promise((r,n)=>{o=setTimeout(()=>{let s=new Error(`Operation timed out after ${t}ms`);s.name=Br,n(s)},t)});return Promise.race([e,i]).finally(()=>{clearTimeout(o)})};var $f=5e3;function Hf(e){return e instanceof Error&&e.name===Ur}async function Gf(){try{let e=await fetch(Er,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return{name:"CLI Version",status:"warn",message:`v${re} (could not check for updates)`};let t=await e.json();if(t.prerelease||t.draft)return{name:"CLI Version",status:"warn",message:`v${re} (could not check for updates)`};let o=t.tag_name?.replace(/^v/,"")??"unknown";return o===re?{name:"CLI Version",status:"pass",message:`v${re} (latest)`}:{name:"CLI Version",status:"warn",message:`v${re} (latest: v${o})`,detail:"Update available"}}catch{return{name:"CLI Version",status:"warn",message:`v${re} (could not check for updates)`}}}async function Qf(e){let t;try{t=await vt(e,void 0,{refresh:!1})}catch(n){return{name:"API Key",status:"fail",message:M(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:`${pt(o)} (source: ${r}${i})`}}async function Nf(e){let t;try{t=await vt(e)}catch(r){let n=Hf(r);return{name:"API Validation",status:n?"warn":"fail",message:M(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 Et(o),{data:n,error:s}=await cc(r.domains.list(),$f);if(s){let c=s;return c.name==="restricted_api_key"?{name:"API Validation",status:"warn",message:`Sending-only ${i}`,detail:Bt}:c.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(c=>c.status==="verified"),d=a.filter(c=>c.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:`${d.length} domain(s) pending verification`,detail:a.map(c=>`${c.name} (${c.status})`).join(", ")}:{name:"Domains",status:"pass",message:`${l.length} verified, ${d.length} pending`,detail:a.map(c=>`${c.name} (${c.status})`).join(", ")}}catch(r){return r instanceof Error&&r.name===Br?{name:"API Validation",status:"warn",message:"Request timed out"}:{name:"API Validation",status:"fail",message:M(r,`Failed to validate ${i}`)}}}var dc=new u("doctor").description("Check CLI version, API key, and domain status").addHelpText("after",p({setup:!0,context:`Checks performed:
594
597
  CLI Version Is the installed version up to date?
595
598
  API Key Is a key present (--api-key, RESEND_API_KEY, or credentials file)?
596
599
  Credential Storage Which backend is storing credentials (secure storage vs plaintext file)?
@@ -605,37 +608,37 @@ Imports:
605
608
  status values: "pass" | "warn" | "fail"
606
609
  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=S()&&!o.json;r&&console.log(`
607
610
  Resend Doctor
608
- `);let n=r?ne("Checking CLI version..."):null,s=await Df();i.push(s),s.status==="warn"?n?.warn(s.message):n?.stop(s.message),n=r?ne("Checking API key..."):null;let a=await Ef(o.apiKey);i.push(a),a.status==="fail"?n?.fail(a.message):n?.stop(a.message),n=r?ne("Checking credential storage..."):null;let l=await Ze(),u=Ke(),c=l.isSecure,d={name:"Credential Storage",status:c?"pass":"warn",message:c?l.name:"plaintext file",...!c&&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(d),d.status==="warn"?n?.warn(d.message):n?.stop(d.message),n=r?ne("Validating API key & domains..."):null;let f=await Bf(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&&S()?console.log(""):j({ok:!b,checks:i},{json:o.json}),b&&process.exit(1)});var nc=new p("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 Y("--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 I(e.name,{message:"Domain name to claim",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await q({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(`
611
+ `);let n=r?ne("Checking CLI version..."):null,s=await Gf();i.push(s),s.status==="warn"?n?.warn(s.message):n?.stop(s.message),n=r?ne("Checking API key..."):null;let a=await Qf(o.apiKey);i.push(a),a.status==="fail"?n?.fail(a.message):n?.stop(a.message),n=r?ne("Checking credential storage..."):null;let l=await et(),d=we(),c=l.isSecure,m={name:"Credential Storage",status:c?"pass":"warn",message:c?l.name:"plaintext file",...!c&&process.env.RESEND_CREDENTIAL_STORE!=="file"&&(d?.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(m),m.status==="warn"?n?.warn(m.message):n?.stop(m.message),n=r?ne("Validating API key & domains..."):null;let f=await Nf(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&&S()?console.log(""):H({ok:!b,checks:i},{json:o.json}),b&&process.exit(1)});var uc=new u("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",p({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 q({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(`
609
612
  Add this TXT record at your DNS provider:`),console.log(` ${r.record.name} TXT ${r.record.value}`),console.log(`
610
- Then run \`resend domains claim verify ${r.domain_id}\`.`)}},o)});var sc=new p("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.
613
+ Then run \`resend domains claim verify ${r.domain_id}\`.`)}},o)});var mc=new u("get").description("Retrieve the latest claim for a domain").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",p({output:` domain_claim object: status, domain_id, the TXT record, blocked_reason, expires_at.
611
614
 
612
615
  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 y(e,Re,i);await N({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(`
613
- TXT record:`),console.log(` ${n.record.name} TXT ${n.record.value}`)}},i)});var ac=new p("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 y(e,Re,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 lc=new p("claim").description("Claim a domain already verified by another Resend account").addHelpText("after",m({context:`Claim lifecycle:
616
+ TXT record:`),console.log(` ${n.record.name} TXT ${n.record.value}`)}},i)});var pc=new u("verify").description("Trigger DNS verification and transfer for a domain claim").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",p({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 y(e,Re,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 fc=new u("claim").description("Claim a domain already verified by another Resend account").addHelpText("after",p({context:`Claim lifecycle:
614
617
  1. resend domains claim create --name example.com (returns the TXT record)
615
618
  2. Configure the TXT record at your DNS provider
616
619
  3. resend domains claim verify <domain-id> (trigger verification + transfer)
617
620
  4. resend domains claim get <domain-id> (poll until "completed")
618
621
  5. The transferred domain has NEW DKIM records \u2014 update DNS, then run:
619
- 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(nc).addCommand(sc).addCommand(ac);var cc=new p("create").description("Create a new domain and receive DNS records to configure").option("--name <domain>","Domain name (e.g. example.com)").addOption(new Y("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).addOption(new Y("--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 I(e.name,{message:"Domain name",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await q({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(`
620
- DNS Records to configure:`),console.log(ei(r.records,r.name)),console.log(`
621
- Run \`resend domains verify ${r.id}\` after configuring DNS.`)}},o)});var dc=new p("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,Re,i);await te(r.id,!!t.yes,{confirmMessage:`Delete domain "${r.label}"?
622
+ 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(uc).addCommand(mc).addCommand(pc);var gc=new u("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",p({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 q({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(`
623
+ DNS Records to configure:`),console.log(ti(r.records,r.name)),console.log(`
624
+ Run \`resend domains verify ${r.id}\` after configuring DNS.`)}},o)});var hc=new u("delete").alias("rm").description("Delete a domain").argument("[id]","Domain ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({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,Re,i);await te(r.id,!!t.yes,{confirmMessage:`Delete domain "${r.label}"?
622
625
  ID: ${r.id}
623
- This cannot be undone.`,loading:"Deleting domain...",object:"domain",successMsg:"Domain deleted",sdkCall:n=>n.domains.remove(r.id)},i)});var uc=new p("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.
626
+ This cannot be undone.`,loading:"Deleting domain...",object:"domain",successMsg:"Domain deleted",sdkCall:n=>n.domains.remove(r.id)},i)});var Ac=new u("get").description("Retrieve a domain with its DNS records and current verification status").argument("[id]","Domain ID").addHelpText("after",p({output:` Full domain object including records array and current status.
624
627
 
625
- 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 y(e,Re,i);await N({loading:"Fetching domain...",sdkCall:n=>n.domains.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${na(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(`
626
- DNS Records:`),console.log(ei(n.records,n.name)))}},i)});var pc=new p("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}
627
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching domains...",sdkCall:n=>n.domains.list(r),onInteractive:n=>{console.log(ra(n.data)),Q(n,"domains list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var mc=new p("update").description("Update domain settings: TLS mode, tracking, and tracking subdomain").argument("[id]","Domain ID").addOption(new Y("--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 y(e,Re,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 u={id:r};n&&(u.tls=n),s!==void 0&&(u.openTracking=s),a!==void 0&&(u.clickTracking=a),l&&(u.trackingSubdomain=l),await B({loading:"Updating domain...",sdkCall:c=>c.domains.update(u),errorCode:"update_error",successMsg:`Domain updated: ${r}`},i)});var fc=new p("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.
628
- 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 y(e,Re,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 gc=new p("domains").description("Manage verified sending and receiving domains").addHelpText("after",m({context:`Domain lifecycle:
628
+ 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 y(e,Re,i);await N({loading:"Fetching domain...",sdkCall:n=>n.domains.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${sa(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(`
629
+ DNS Records:`),console.log(ti(n.records,n.name)))}},i)});var bc=new u("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",p({output:` {"object":"list","data":[...],"has_more":true}
630
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching domains...",sdkCall:n=>n.domains.list(r),onInteractive:n=>{console.log(na(n.data)),P(n,"domains list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Cc=new u("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",p({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 y(e,Re,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 d={id:r};n&&(d.tls=n),s!==void 0&&(d.openTracking=s),a!==void 0&&(d.clickTracking=a),l&&(d.trackingSubdomain=l),await B({loading:"Updating domain...",sdkCall:c=>c.domains.update(d),errorCode:"update_error",successMsg:`Domain updated: ${r}`},i)});var yc=new u("verify").description("Trigger async DNS verification for a domain").argument("[id]","Domain ID").addHelpText("after",p({context:`Verification is async \u2014 the domain enters "pending" status while DNS records are checked.
631
+ 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 y(e,Re,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 Uc=new u("domains").description("Manage verified sending and receiving domains").addHelpText("after",p({context:`Domain lifecycle:
629
632
  1. resend domains create --name example.com (get DNS records)
630
633
  2. Configure DNS records at your DNS provider
631
634
  3. resend domains verify <id> (trigger verification)
632
- 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(cc).addCommand(fc).addCommand(uc).addCommand(pc,{isDefault:!0}).addCommand(mc).addCommand(dc).addCommand(lc);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 hc(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 hi(e){let t=e.map(o=>[o.filename??"(unnamed)",o.content_type,String(o.size),o.id]);return O(["Filename","Content-Type","Size (bytes)","ID"],t,"(no attachments)")}var Ac=new p("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:
633
- 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 y(e,Qe,r),s=await y(t,hc(n),r);await N({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 p("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).
635
+ 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(gc).addCommand(yc).addCommand(Ac).addCommand(bc,{isDefault:!0}).addCommand(Cc).addCommand(hc).addCommand(fc);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 Sc(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 Ai(e){let t=e.map(o=>[o.filename??"(unnamed)",o.content_type,String(o.size),o.id]);return E(["Filename","Content-Type","Size (bytes)","ID"],t,"(no attachments)")}var wc=new u("attachment").description("Retrieve a single attachment from a sent (outbound) email").argument("[emailId]","Email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",p({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
636
+ 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 y(e,Qe,r),s=await y(t,Sc(n),r);await N({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 Kc=new u("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",p({context:`Each attachment has a download_url (signed, expires ~1 hour).
634
637
  Use the attachment sub-command to retrieve a single attachment with its download URL:
635
638
  resend emails attachment <emailId> <attachmentId>
636
639
 
637
640
  content_disposition: "inline" means the attachment is embedded in the HTML body (e.g. an image).
638
- 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 y(e,Qe,i),n=H(t.limit,i),s=G(n,t.after,t.before,i);await D({loading:"Fetching attachments...",sdkCall:a=>a.emails.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(hi(a.data)),Q(a,`emails attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});J();var Cc=new p("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 Y("--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
641
+ 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 y(e,Qe,i),n=j(t.limit,i),s=I(n,t.after,t.before,i);await R({loading:"Fetching attachments...",sdkCall:a=>a.emails.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(Ai(a.data)),P(a,`emails attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});V();var vc=new u("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",p({context:`Non-interactive: --file
639
642
  Limit: 100 emails per request (API hard limit \u2014 warned if exceeded)
640
643
  Unsupported per-email fields: attachments
641
644
 
@@ -643,55 +646,55 @@ File format (--file path):
643
646
  [
644
647
  {"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","text":"Hi"},
645
648
  {"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","html":"<b>Hi</b>","scheduled_at":"in 1 hour","tags":[{"name":"campaign","value":"welcome"}]}
646
- ]`,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 z(o,{permission:"sending_access"}),r=await I(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 He(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,U]of Object.entries(l))A in h&&(h[U]??=h[A],delete h[A])}let u=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),c=u.data,d=u.errors;if(!o.json&&S()){console.log(`Sent ${c.length} email${c.length===1?"":"s"}`);for(let f of c)console.log(` ${f.id}`);if(d&&d.length>0){console.warn(`
647
- ${d.length} email${d.length===1?"":"s"} failed:`);for(let f of d)console.warn(` [${f.index}] ${f.message}`)}}else j(d&&d.length>0?{data:c,errors:d}:c,{json:o.json})});var yc=new p("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 y(e,Qe,i);await B({loading:"Cancelling email...",sdkCall:n=>n.emails.cancel(r),errorCode:"cancel_error",successMsg:`Email cancelled: ${r}`},i)});var Uc=new p("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 y(e,Qe,i);await N({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 Of(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 O(["From","To","Subject","Status","Created","ID"],t,"(no sent emails)")}var Sc=new p("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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching sent emails...",sdkCall:n=>n.emails.list(r),onInteractive:n=>{console.log(Of(n.data)),Q(n,"emails list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var gt={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 Kc(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 vc(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 O(["From","To","Subject","Created At","ID"],t,"(no received emails)")}var wc=new p("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:
648
- 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 y(e,gt,r),s=await y(t,Kc(n),r);await N({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 xc=new p("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).
649
+ ]`,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 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=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 Ge(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,U]of Object.entries(l))A in h&&(h[U]??=h[A],delete h[A])}let d=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),c=d.data,m=d.errors;if(!o.json&&S()){console.log(`Sent ${c.length} email${c.length===1?"":"s"}`);for(let f of c)console.log(` ${f.id}`);if(m&&m.length>0){console.warn(`
650
+ ${m.length} email${m.length===1?"":"s"} failed:`);for(let f of m)console.warn(` [${f.index}] ${f.message}`)}}else H(m&&m.length>0?{data:c,errors:m}:c,{json:o.json})});var xc=new u("cancel").description("Cancel a scheduled email").argument("[id]","Email ID").addHelpText("after",p({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 y(e,Qe,i);await B({loading:"Cancelling email...",sdkCall:n=>n.emails.cancel(r),errorCode:"cancel_error",successMsg:`Email cancelled: ${r}`},i)});var Fc=new u("get").description("Retrieve a sent email by ID").argument("[id]","Email ID").addHelpText("after",p({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 y(e,Qe,i);await N({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 qf(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 E(["From","To","Subject","Status","Created","ID"],t,"(no sent emails)")}var kc=new u("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",p({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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching sent emails...",sdkCall:n=>n.emails.list(r),onInteractive:n=>{console.log(qf(n.data)),P(n,"emails list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});function bo(e){if(e!==void 0)return e.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function Mf(e){let t=Object.entries(e).map(([o,i])=>[o,String(i)]);return E(["Metric","Value"],t,"(no metrics)")}function Lf(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 E(i,r,"(no breakdown rows)")}var Rc=new u("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",p({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=bo(e.dimensions),r=bo(e.emailId),n=bo(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=bo(e.metrics);await N({loading:"Fetching email metrics...",sdkCall:d=>d.emails.metrics({startDate:e.startDate,endDate:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:l,dimensions:i,domainId:bo(e.domainId),emailId:r,broadcastId:n}),onInteractive:d=>{console.log(`Metrics for ${d.start_date} to ${d.end_date} (${d.granularity} granularity)`),console.log(),console.log("Totals:"),console.log(Mf(d.totals)),d.data&&d.data.length>0&&(console.log(),console.log(`Breakdown by ${d.dimensions.join(", ")}:`),console.log(Lf(d.data,d.metrics)))}},o)});var At={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 Dc(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 E(["From","To","Subject","Created At","ID"],t,"(no received emails)")}var Ec=new u("attachment").description("Retrieve a single attachment from a received (inbound) email").argument("[emailId]","Received email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",p({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
651
+ 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 y(e,At,r),s=await y(t,_c(n),r);await N({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 Oc=new u("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",p({context:`Each attachment has a download_url (signed, expires ~1 hour).
649
652
  Use the attachment sub-command to retrieve a single attachment with its download URL:
650
653
  resend emails receiving attachment <emailId> <attachmentId>
651
654
 
652
655
  content_disposition: "inline" means the attachment is embedded in the HTML body (e.g. an image).
653
- 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 y(e,gt,i),n=H(t.limit,i),s=G(n,t.after,t.before,i);await D({loading:"Fetching attachments...",sdkCall:a=>a.emails.receiving.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(hi(a.data)),Q(a,`emails receiving attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Fc=new p("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
654
- 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 y(e,gt,i);await q({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 kc=new p("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
656
+ 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 y(e,At,i),n=j(t.limit,i),s=I(n,t.after,t.before,i);await R({loading:"Fetching attachments...",sdkCall:a=>a.emails.receiving.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(Ai(a.data)),P(a,`emails receiving attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Bc=new u("forward").description("Forward a received email").argument("[id]","Received email ID").requiredOption("--to <addresses...>","Recipient address(es)").requiredOption("--from <address>","Sender address").addHelpText("after",p({context:`Required: --to, --from
657
+ 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 y(e,At,i);await q({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 Tc=new u("get").description("Retrieve a single received (inbound) email with full details including HTML, text, and headers").argument("[id]","Received email UUID").addHelpText("after",p({context:`The raw.download_url field is a signed URL (expires ~1 hour) containing the full RFC 2822
655
658
  MIME message. Pipe it to curl to save the original email:
656
659
  resend emails receiving get <id> --json | jq -r .raw.download_url | xargs curl > email.eml
657
660
 
658
661
  Attachments are listed in the attachments array. Use the attachments sub-command to get
659
662
  download URLs:
660
- 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 y(e,gt,i);await N({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(`
661
- (HTML body only \u2014 use --json to view or pipe to a browser)`)}},i)});var Rc=new p("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:
663
+ 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 y(e,At,i);await N({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(`
664
+ (HTML body only \u2014 use --json to view or pipe to a browser)`)}},i)});var jc=new u("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",p({context:`Receiving must be enabled on the domain first:
662
665
  resend domains update <id> --receiving enabled
663
666
 
664
667
  Pagination: use --after or --before with a received email ID as the cursor.
665
668
  Only one of --after or --before may be used at a time.
666
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching received emails...",sdkCall:n=>n.emails.receiving.list(r),onInteractive:n=>{console.log(vc(n.data)),Q(n,"emails receiving list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ot=de(We(),1);J();var _c=(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 Or=100,Dc=5,Tr=()=>new Date().toLocaleTimeString("en-GB",{hour12:!1}),Tf=(e,t)=>{if(t)console.log(JSON.stringify(e));else{let o=e.to.map(Fe).join(", "),i=ot.default.dim(`[${Tr()}]`),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} ${ot.default.bold(`"${n}"`)} ${ot.default.dim(a)}
667
- `)}},jf=(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}},Ec=new p("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
669
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching received emails...",sdkCall:n=>n.emails.receiving.list(r),onInteractive:n=>{console.log(Dc(n.data)),P(n,"emails receiving list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var it=de(We(),1);V();var Ic=(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 Tr=100,Pc=5,jr=()=>new Date().toLocaleTimeString("en-GB",{hour12:!1}),Wf=(e,t)=>{if(t)console.log(JSON.stringify(e));else{let o=e.to.map(Fe).join(", "),i=it.default.dim(`[${jr()}]`),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} ${it.default.bold(`"${n}"`)} ${it.default.dim(a)}
670
+ `)}},Jf=(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}},$c=new u("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",p({context:`Long-running command that polls the receiving API at a fixed
668
671
  interval and prints each new email as it arrives.
669
672
 
670
673
  Interactive output shows one line per email. When piped (or with --json),
671
674
  output is NDJSON (one JSON object per line).
672
675
 
673
- 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 z(o),n=o.json||!S(),s=ne("Connecting...",o.quiet||n),a=_c(),l=0;try{let{data:A,error:U}=await r.emails.receiving.list({limit:1});(U||!A)&&(s.fail("Failed to connect"),g({message:U?.message??"Unexpected empty response",code:"list_error"},{json:o.json}));for(let K of A.data)a.add(K.id);s.stop("Ready")}catch(A){s.fail("Failed to connect"),g({message:M(A,"Unknown error"),code:"list_error"},{json:o.json})}n||(process.stderr.write(`
674
- `),process.stderr.write(` ${ot.default.bold("Polling:")} every ${i}s
676
+ 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||!S(),s=ne("Connecting...",o.quiet||n),a=Ic(),l=0;try{let{data:A,error:U}=await r.emails.receiving.list({limit:1});(U||!A)&&(s.fail("Failed to connect"),g({message:U?.message??"Unexpected empty response",code:"list_error"},{json:o.json}));for(let w of A.data)a.add(w.id);s.stop("Ready")}catch(A){s.fail("Failed to connect"),g({message:M(A,"Unknown error"),code:"list_error"},{json:o.json})}n||(process.stderr.write(`
677
+ `),process.stderr.write(` ${it.default.bold("Polling:")} every ${i}s
675
678
  `),process.stderr.write(`
676
679
  Listening for new inbound emails. Press Ctrl+C to stop.
677
680
 
678
- `));let u=A=>{l++,n||process.stderr.write(`${ot.default.dim(`[${Tr()}]`)} ${ot.default.yellow("Warning:")} ${A}
679
- `),l>=5&&g({message:"Exiting after 5 consecutive API failures.",code:"poll_error"},{json:o.json})},c=async(A,U,K)=>{if(K<=0)return{emails:U,hasMore:!0};let x=A?{limit:Or,after:A}:{limit:Or},{data:w,error:v}=await uo(()=>r.emails.receiving.list(x));if(v||!w)return{emails:U,error:v?.message??"Empty response",hasMore:!1};let{newEmails:R,foundSeen:E}=jf(w.data,a),T=[...U,...R];if(E||!w.has_more)return{emails:T,hasMore:!1};let _=w.data[w.data.length-1]?.id;return _?c(_,T,K-1):{emails:T,hasMore:!0}},d,f=()=>{let A=`Hit page cap of ${Dc*Or} emails this poll; remaining will be picked up next tick.`;n?console.log(JSON.stringify({warning:"page_cap_reached",message:A})):process.stderr.write(`${ot.default.dim(`[${Tr()}]`)} ${ot.default.yellow("Warning:")} ${A}
680
- `)},b=async()=>{try{let A=await c(void 0,[],Dc);A.error&&u(A.error),A.hasMore&&f();let U=A.emails.toReversed();for(let K of U)a.add(K.id);if(A.emails.length>0){l=0;for(let K of U)Tf(K,n)}else A.error||(l=0)}catch(A){u(M(A,"Unknown error"))}finally{d=setTimeout(b,i*1e3)}};d=setTimeout(b,i*1e3);let h=()=>{clearTimeout(d),n||process.stderr.write(`
681
+ `));let d=A=>{l++,n||process.stderr.write(`${it.default.dim(`[${jr()}]`)} ${it.default.yellow("Warning:")} ${A}
682
+ `),l>=5&&g({message:"Exiting after 5 consecutive API failures.",code:"poll_error"},{json:o.json})},c=async(A,U,w)=>{if(w<=0)return{emails:U,hasMore:!0};let x=A?{limit:Tr,after:A}:{limit:Tr},{data:v,error:K}=await uo(()=>r.emails.receiving.list(x));if(K||!v)return{emails:U,error:K?.message??"Empty response",hasMore:!1};let{newEmails:_,foundSeen:O}=Jf(v.data,a),$=[...U,..._];if(O||!v.has_more)return{emails:$,hasMore:!1};let D=v.data[v.data.length-1]?.id;return D?c(D,$,w-1):{emails:$,hasMore:!0}},m,f=()=>{let A=`Hit page cap of ${Pc*Tr} emails this poll; remaining will be picked up next tick.`;n?console.log(JSON.stringify({warning:"page_cap_reached",message:A})):process.stderr.write(`${it.default.dim(`[${jr()}]`)} ${it.default.yellow("Warning:")} ${A}
683
+ `)},b=async()=>{try{let A=await c(void 0,[],Pc);A.error&&d(A.error),A.hasMore&&f();let U=A.emails.toReversed();for(let w of U)a.add(w.id);if(A.emails.length>0){l=0;for(let w of U)Wf(w,n)}else A.error||(l=0)}catch(A){d(M(A,"Unknown error"))}finally{m=setTimeout(b,i*1e3)}};m=setTimeout(b,i*1e3);let h=()=>{clearTimeout(m),n||process.stderr.write(`
681
684
  Stopped listening.
682
- `),process.exit(Bt())};zo(h),process.on("SIGTERM",h),await new Promise(()=>{})});var Bc=new p("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:
683
- 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(Rc,{isDefault:!0}).addCommand(kc).addCommand(Ec).addCommand(xc).addCommand(wc).addCommand(Fc);var Ic=require("node:fs"),Pc=require("node:path");var If=/;(cid|type|filename)=/,Oc=/;[\w-]+=/,Pf={cid:"contentId",type:"contentType",filename:"filename"};function Tc(e){let t=e.split(If),o=t[0];if(!o)throw new Error(`Missing file path or URL in attachment "${e}".`);if(Oc.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=Pf[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"&&Oc.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 $f={content_type:"contentType",content_id:"contentId"},Hf=new Set(["content","filename","path","contentType","contentId"]);function jc(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=$f[n]??n;if(!Hf.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})}J();function Gf(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 $c=new p("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).
685
+ `),process.exit(jt())};Yo(h),process.on("SIGTERM",h),await new Promise(()=>{})});var Hc=new u("receiving").description("Manage received (inbound) emails \u2014 requires domain receiving to be enabled").addHelpText("after",p({context:`Receiving must be enabled on the domain first:
686
+ 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(jc,{isDefault:!0}).addCommand(Tc).addCommand($c).addCommand(Oc).addCommand(Ec).addCommand(Bc);var qc=require("node:fs"),Mc=require("node:path");var Vf=/;(cid|type|filename)=/,Gc=/;[\w-]+=/,zf={cid:"contentId",type:"contentType",filename:"filename"};function Qc(e){let t=e.split(Vf),o=t[0];if(!o)throw new Error(`Missing file path or URL in attachment "${e}".`);if(Gc.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=zf[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"&&Gc.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 Yf={content_type:"contentType",content_id:"contentId"},Xf=new Set(["content","filename","path","contentType","contentId"]);function Nc(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=Yf[n]??n;if(!Xf.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 Zf(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 Lc=new u("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",p({context:`Required: --to and either --template, --react-email, or (--from, --subject, and one of --text | --text-file | --html | --html-file).
684
687
  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.
685
688
  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=.
686
- 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(w=>w==="-").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(w=>{let v=w.indexOf("=");v<1&&g({message:`Invalid var format: "${w}". Expected key=value.`,code:"invalid_var"},{json:o.json});let R=w.slice(0,v),E=w.slice(v+1);return[R,E]})):void 0,s=e.from;if(!e.dryRun&&!s&&!r&&S()&&!o.json){let w=await z(o,{permission:"sending_access"}),v=await ni(w);v.length>0&&(s=await si(v))}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 oa({from:s,to:e.to?.[0],subject:e.subject},a,o),u=e.html,c=e.text;e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
687
- `),u=oe(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
688
- `),c=oe(e.textFile,o)),e.reactEmail&&(u=await He(e.reactEmail,o));let d=c;!r&&!e.reactEmail&&!u&&!c&&(d=await I(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(w=>{let v;try{v=Tc(w)}catch(E){return g({message:E.message,code:"invalid_attachment"},{json:o.json})}let R={...v.contentType&&{contentType:v.contentType},...v.contentId&&{contentId:v.contentId}};if(v.isUrl)return{path:v.source,...v.filename&&{filename:v.filename},...R};try{let E=(0,Ic.readFileSync)(v.source);return{filename:v.filename??(0,Pc.basename)(v.source),content:E,...R}}catch{return g({message:`Failed to read file: ${v.source}`,code:"file_read_error"},{json:o.json})}});if(e.attachmentsFile!==void 0){let w=oe(e.attachmentsFile,o);try{b=[...b??[],...jc(w)]}catch(v){g({message:v.message,code:"invalid_attachment"},{json:o.json})}}let h=e.headers?Object.fromEntries(e.headers.map(w=>{let v=w.indexOf("=");return v<1&&g({message:`Invalid header format: "${w}". Expected key=value.`,code:"invalid_header"},{json:o.json}),[w.slice(0,v),w.slice(v+1)]})):void 0,A=e.tags?.map(w=>{let v=w.indexOf("=");return v<1&&g({message:`Invalid tag format: "${w}". Expected name=value.`,code:"invalid_tag"},{json:o.json}),{name:w.slice(0,v),value:w.slice(v+1)}}),U;if(r?U={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}}:U={from:l.from,to:f,subject:l.subject,...u&&{html:u},...d&&{text:d},...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){j({dryRun:!0,request:Gf(U)},{json:o.json});return}let K=await z(o,{permission:"sending_access"}),x=await ae(e.scheduledAt?"Scheduling email...":"Sending email...",()=>K.emails.send(U,e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:void 0),"send_error",o);!o.json&&S()?e.scheduledAt?console.log(`Email scheduled: ${x.id}`):console.log(`Email sent: ${x.id}`):j(x,{json:o.json})});var jr=de(We(),1);var Hc=new p("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 y(e,Qe,i);await q({loading:"Creating share link...",sdkCall:n=>n.emails.share(r,t.expiresIn!==void 0?{expiresIn:t.expiresIn}:void 0),onInteractive:n=>{console.log(` ${jr.default.gray("ID:")} ${n.id}`),console.log(` ${jr.default.gray("URL:")} ${n.url}`)}},i)});var Gc=new p("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 y(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 Qc=new p("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 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(Sc,{isDefault:!0}).addCommand($c).addCommand(Uc).addCommand(Cc).addCommand(yc).addCommand(Gc).addCommand(Hc).addCommand(bc).addCommand(Ac).addCommand(Bc);var Qf=new Set(["string","number","boolean","date"]);function Ir(e){if(!e)return"(none)";let t=Object.entries(e);return t.length===0?"(empty)":t.map(([o,i])=>`${o}:${i}`).join(", ")}function Nc(e){let t=e.map(o=>[o.name,Ir(o.schema),o.created_at,o.id]);return O(["Name","Schema","Created","ID"],t,"(no events)")}function Ai(e,t){if(e==="null")return null;let o=vt(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"||!Qf.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 Nt={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 qc=new p("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.
689
+ 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(v=>v==="-").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(v=>{let K=v.indexOf("=");K<1&&g({message:`Invalid var format: "${v}". Expected key=value.`,code:"invalid_var"},{json:o.json});let _=v.slice(0,K),O=v.slice(K+1);return[_,O]})):void 0,s=e.from;if(!e.dryRun&&!s&&!r&&S()&&!o.json){let v=await Y(o,{permission:"sending_access"}),K=await si(v);K.length>0&&(s=await ai(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 ia({from:s,to:e.to?.[0],subject:e.subject},a,o),d=e.html,c=e.text;e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
690
+ `),d=oe(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
691
+ `),c=oe(e.textFile,o)),e.reactEmail&&(d=await Ge(e.reactEmail,o));let m=c;!r&&!e.reactEmail&&!d&&!c&&(m=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],b=e.attachment?.map(v=>{let K;try{K=Qc(v)}catch(O){return g({message:O.message,code:"invalid_attachment"},{json:o.json})}let _={...K.contentType&&{contentType:K.contentType},...K.contentId&&{contentId:K.contentId}};if(K.isUrl)return{path:K.source,...K.filename&&{filename:K.filename},..._};try{let O=(0,qc.readFileSync)(K.source);return{filename:K.filename??(0,Mc.basename)(K.source),content:O,..._}}catch{return g({message:`Failed to read file: ${K.source}`,code:"file_read_error"},{json:o.json})}});if(e.attachmentsFile!==void 0){let v=oe(e.attachmentsFile,o);try{b=[...b??[],...Nc(v)]}catch(K){g({message:K.message,code:"invalid_attachment"},{json:o.json})}}let h=e.headers?Object.fromEntries(e.headers.map(v=>{let K=v.indexOf("=");return K<1&&g({message:`Invalid header format: "${v}". Expected key=value.`,code:"invalid_header"},{json:o.json}),[v.slice(0,K),v.slice(K+1)]})):void 0,A=e.tags?.map(v=>{let K=v.indexOf("=");return K<1&&g({message:`Invalid tag format: "${v}". Expected name=value.`,code:"invalid_tag"},{json:o.json}),{name:v.slice(0,K),value:v.slice(K+1)}}),U;if(r?U={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}}:U={from:l.from,to:f,subject:l.subject,...d&&{html:d},...m&&{text:m},...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){H({dryRun:!0,request:Zf(U)},{json:o.json});return}let w=await Y(o,{permission:"sending_access"}),x=await ae(e.scheduledAt?"Scheduling email...":"Sending email...",()=>w.emails.send(U,e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:void 0),"send_error",o);!o.json&&S()?e.scheduledAt?console.log(`Email scheduled: ${x.id}`):console.log(`Email sent: ${x.id}`):H(x,{json:o.json})});var Ir=de(We(),1);var Wc=new u("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",p({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 y(e,Qe,i);await q({loading:"Creating share link...",sdkCall:n=>n.emails.share(r,t.expiresIn!==void 0?{expiresIn:t.expiresIn}:void 0),onInteractive:n=>{console.log(` ${Ir.default.gray("ID:")} ${n.id}`),console.log(` ${Ir.default.gray("URL:")} ${n.url}`)}},i)});var Jc=new u("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",p({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 y(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 Vc=new u("emails").description("Send and manage emails").addHelpText("after",p({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(kc,{isDefault:!0}).addCommand(Lc).addCommand(Fc).addCommand(vc).addCommand(xc).addCommand(Jc).addCommand(Wc).addCommand(Rc).addCommand(Kc).addCommand(wc).addCommand(Hc);var eg=new Set(["string","number","boolean","date"]);function Pr(e){if(!e)return"(none)";let t=Object.entries(e);return t.length===0?"(empty)":t.map(([o,i])=>`${o}:${i}`).join(", ")}function zc(e){let t=e.map(o=>[o.name,Pr(o.schema),o.created_at,o.id]);return E(["Name","Schema","Created","ID"],t,"(no events)")}function bi(e,t){if(e==="null")return null;let o=xt(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"||!eg.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 qt={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 Yc=new u("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",p({context:`Non-interactive: --name is required. --schema is optional.
689
692
 
690
693
  Schema format:
691
694
  A JSON object mapping field names to type strings.
692
695
  Valid types: string, number, boolean, date.
693
- 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 I(e.name,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --name flag.",code:"missing_name"},o),r=e.schema?Ai(e.schema,o):void 0;await q({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 Mc=new p("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 y(e,Nt,i);await te(r,!!t.yes,{confirmMessage:`Delete event ${r}?
694
- This cannot be undone.`,loading:"Deleting event...",object:"event",successMsg:"Event deleted",sdkCall:n=>n.events.remove(r)},i)});var Lc=new p("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 y(e,Nt,i);await N({loading:"Fetching event...",sdkCall:n=>n.events.get(r),onInteractive:n=>{console.log(n.name),console.log(`ID: ${n.id}`),console.log(`Schema: ${Ir(n.schema)}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`)}},i)});var Wc=new p("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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching events...",sdkCall:n=>n.events.list(r),onInteractive:n=>{console.log(Nc(n.data)),Q(n,"events list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Jc=new p("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 _e(pe.events,o)});var Vc=new p("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.
696
+ 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?bi(e.schema,o):void 0;await q({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 Xc=new u("delete").alias("rm").description("Delete an event definition").argument("[id]","Event ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({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 y(e,qt,i);await te(r,!!t.yes,{confirmMessage:`Delete event ${r}?
697
+ This cannot be undone.`,loading:"Deleting event...",object:"event",successMsg:"Event deleted",sdkCall:n=>n.events.remove(r)},i)});var Zc=new u("get").description("Retrieve an event definition").argument("[id]","Event ID").addHelpText("after",p({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 y(e,qt,i);await N({loading:"Fetching event...",sdkCall:n=>n.events.get(r),onInteractive:n=>{console.log(n.name),console.log(`ID: ${n.id}`),console.log(`Schema: ${Pr(n.schema)}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`)}},i)});var ed=new u("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",p({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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching events...",sdkCall:n=>n.events.list(r),onInteractive:n=>{console.log(zc(n.data)),P(n,"events list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var td=new u("open").description("Open the events page in the Resend dashboard").addHelpText("after",p({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 _e(pe.events,o)});var od=new u("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",p({context:`Sends an event for a specific contact, triggering any automations listening for it.
695
698
 
696
699
  Contact targeting:
697
700
  Provide exactly one of --contact-id or --email to identify the contact.
@@ -699,12 +702,12 @@ Contact targeting:
699
702
 
700
703
  Payload:
701
704
  Optional JSON object with event-specific data.
702
- 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 I(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 Ot(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 I(void 0,{message:"Contact ID"},{message:"Missing contact ID.",code:"missing_contact"},o):n=await I(void 0,{message:"Email address",placeholder:"user@example.com"},{message:"Missing email.",code:"missing_contact"},o));let s=vt(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)});J();var zc=new p("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.
705
+ 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 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 ft(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=xt(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 id=new u("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",p({context:`Non-interactive: --schema is required. Pass "null" to remove the schema.
703
706
 
704
707
  Schema format:
705
708
  A JSON object mapping field names to type strings.
706
709
  Valid types: string, number, boolean, date.
707
- 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 y(e,Nt,i),n=t.schema;n===void 0&&((!S()||i.json)&&g({message:"Missing --schema flag.",code:"missing_schema"},{json:i.json}),n=await I(void 0,{message:'Schema JSON (or "null" to clear)',placeholder:'{"field":"string"}'},{message:"Missing --schema flag.",code:"missing_schema"},i));let s=Ai(n,i);await B({loading:"Updating event...",sdkCall:a=>a.events.update(r,{schema:s}),errorCode:"update_error",successMsg:`Event updated: ${r}`},i)});var Yc=new p("events").description("Manage events").addHelpText("after",m({context:`Events define the signals that trigger automations.
710
+ 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 y(e,qt,i),n=t.schema;n===void 0&&((!S()||i.json)&&g({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=bi(n,i);await B({loading:"Updating event...",sdkCall:a=>a.events.update(r,{schema:s}),errorCode:"update_error",successMsg:`Event updated: ${r}`},i)});var rd=new u("events").description("Manage events").addHelpText("after",p({context:`Events define the signals that trigger automations.
708
711
  Each event has a name and an optional typed schema (string | number | boolean | date fields).
709
712
 
710
713
  Lifecycle:
@@ -713,72 +716,70 @@ Lifecycle:
713
716
  3. resend events list
714
717
  4. resend events get <id>
715
718
  5. resend events update <id> --schema '{"plan":"string","trial":"boolean"}'
716
- 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(qc).addCommand(Lc).addCommand(Wc,{isDefault:!0}).addCommand(zc).addCommand(Mc).addCommand(Jc).addCommand(Vc);function Xc(e){let t=e.map(o=>[o.method,o.endpoint,String(o.response_status),o.created_at,o.id]);return O(["Method","Endpoint","Status","Created","ID"],t,"(no logs)")}var Zc={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 ed=new p("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 y(e,Zc,i);await N({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(`
719
+ 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(Yc).addCommand(Zc).addCommand(ed,{isDefault:!0}).addCommand(id).addCommand(Xc).addCommand(td).addCommand(od);function nd(e){let t=e.map(o=>[o.method,o.endpoint,String(o.response_status),o.created_at,o.id]);return E(["Method","Endpoint","Status","Created","ID"],t,"(no logs)")}var sd={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 ad=new u("get").description("Retrieve a single API request log with full request/response bodies").argument("[id]","Log ID").addHelpText("after",p({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 y(e,sd,i);await N({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(`
717
720
  Request Body:
718
721
  ${JSON.stringify(n.request_body,null,2)}`),n.response_body&&console.log(`
719
722
  Response Body:
720
- ${JSON.stringify(n.response_body,null,2)}`)}},i)});var td=new p("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}
721
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching logs...",sdkCall:n=>n.logs.list(r),onInteractive:n=>{console.log(Xc(n.data)),Q(n,"logs list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var od=new p("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.
723
+ ${JSON.stringify(n.response_body,null,2)}`)}},i)});var ld=new u("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",p({output:` {"object":"list","data":[...],"has_more":true}
724
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching logs...",sdkCall:n=>n.logs.list(r),onInteractive:n=>{console.log(nd(n.data)),P(n,"logs list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var cd=new u("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",p({context:`Opens the Resend dashboard in your default browser.
722
725
  With an ID: opens that log's detail page.
723
- 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 _e(i,r)});var id=new p("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(ed).addCommand(td,{isDefault:!0}).addCommand(od);var rd={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 nd(e){let t=e.map(o=>[o.client.name,o.id,o.scopes.join(", "),o.created_at,o.revoked_at??""]);return O(["Client","ID","Scopes","Created","Revoked"],t,"(no OAuth grants)")}var sd=new p("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"}}]}
724
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching OAuth grants...",sdkCall:n=>n.oauthGrants.list(r),onInteractive:n=>{console.log(nd(n.data)),Q(n,"oauth-grants list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ad=new p("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.
726
+ 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 _e(i,r)});var dd=new u("logs").description("View API request logs").addHelpText("after",p({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(ad).addCommand(ld,{isDefault:!0}).addCommand(cd);var ud={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 md(e){let t=e.map(o=>[o.client.name,o.id,o.scopes.join(", "),o.created_at,o.revoked_at??""]);return E(["Client","ID","Scopes","Created","Revoked"],t,"(no OAuth grants)")}var pd=new u("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",p({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"}}]}
727
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching OAuth grants...",sdkCall:n=>n.oauthGrants.list(r),onInteractive:n=>{console.log(md(n.data)),P(n,"oauth-grants list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var fd=new u("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",p({context:`Non-interactive: --yes is required to confirm revocation when stdin/stdout is not a TTY.
725
728
 
726
729
  Any team API key can revoke any of the team's grants. Revocation is immediate and
727
- 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,rd,i);t.yes||await Xo(r.id,`Revoke OAuth grant for "${r.label}"?
730
+ 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,ud,i);t.yes||await Zo(r.id,`Revoke OAuth grant for "${r.label}"?
728
731
  ID: ${r.id}
729
- 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 ld=new p("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.
732
+ 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 gd=new u("oauth-grants").description("Manage OAuth grants (apps authorized to act on the team)").addHelpText("after",p({context:`An OAuth grant is a durable record of a client (app) authorized by the team.
730
733
  - Listing returns every grant, active and revoked. revoked_at/revoked_reason are null while active.
731
- - 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(sd,{isDefault:!0}).addCommand(ad);var cd=new p("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 _e(pe.emails,o)});var dd=new p("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.
734
+ - 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(pd,{isDefault:!0}).addCommand(fd);var hd=new u("open").description("Open the Resend dashboard in your browser").addHelpText("after",p({context:"Opens https://resend.com/emails in your default browser.",examples:["resend open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await _e(pe.emails,o)});var Ad=new u("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",p({context:`Lists all contacts that belong to the given segment.
732
735
 
733
736
  If no segment ID is provided interactively, a picker will prompt you to choose one.
734
737
 
735
738
  Pagination: use --after or --before with a contact ID as the cursor.
736
739
  Only one of --after or --before may be used at a time.
737
- 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 y(e,Ge,i),n=H(t.limit,i),s=G(n,t.after,t.before,i);await D({loading:"Fetching segment contacts...",sdkCall:a=>a.contacts.list({segmentId:r,...s}),onInteractive:a=>{console.log(ui(a.data)),Q(a,`segments contacts ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var ud=new p("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.
740
+ 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 y(e,De,i),n=j(t.limit,i),s=I(n,t.after,t.before,i);await R({loading:"Fetching segment contacts...",sdkCall:a=>a.contacts.list({segmentId:r,...s}),onInteractive:a=>{console.log(mi(a.data)),P(a,`segments contacts ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var bd=new u("create").description("Create a new segment").option("--name <name>","Segment name (required)").addHelpText("after",p({context:`Segments are named groups of contacts. Broadcasts target segments via segment_id.
738
741
  Contacts can belong to multiple segments. Audiences are deprecated \u2014 use segments instead.
739
742
 
740
- 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 I(e.name,{message:"Segment name",placeholder:"e.g. Newsletter Subscribers"},{message:"Missing --name flag.",code:"missing_name"},o);await q({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 pd=new p("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,
743
+ 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 q({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 Cd=new u("delete").alias("rm").description("Delete a segment").argument("[id]","Segment UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a segment removes it as a target for future broadcasts,
741
744
  but does NOT delete the contacts within it.
742
745
 
743
- 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,Ge,i);await te(r.id,!!t.yes,{confirmMessage:`Delete segment "${r.label}"?
746
+ 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,De,i);await te(r.id,!!t.yes,{confirmMessage:`Delete segment "${r.label}"?
744
747
  ID: ${r.id}
745
- 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 md=new p("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 y(e,Ge,i);await N({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 fd=new p("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.
748
+ 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 yd=new u("get").description("Retrieve a segment by ID").argument("[id]","Segment UUID").addHelpText("after",p({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 y(e,De,i);await N({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 Ud=new u("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",p({context:`Pagination: use --after or --before with a segment ID as the cursor.
746
749
  Only one of --after or --before may be used at a time.
747
750
  The response includes has_more: true when additional pages exist.
748
751
 
749
752
  Use "resend segments list" to discover segment IDs for use with broadcasts
750
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching segments...",sdkCall:n=>n.segments.list(r),onInteractive:n=>{console.log(li(n.data)),Q(n,"segments list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var gd=new p("segments").description("Manage segments").addHelpText("after",m({context:`Segments are the modern replacement for Audiences (deprecated).
753
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching segments...",sdkCall:n=>n.segments.list(r),onInteractive:n=>{console.log(ci(n.data)),P(n,"segments list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Sd=new u("update").description("Rename a segment").argument("[id]","Segment UUID").option("--name <name>","New segment name").addHelpText("after",p({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 y(e,De,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||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 wd=new u("segments").description("Manage segments").addHelpText("after",p({context:`Segments are the modern replacement for Audiences (deprecated).
751
754
  A segment is a named group of contacts. Broadcasts target segments via segment_id.
752
755
  Contacts can belong to multiple segments.
753
756
 
754
757
  Segment membership is managed through the contacts namespace:
755
758
  resend contacts add-segment <contactId> --segment-id <segmentId>
756
759
  resend contacts remove-segment <contactId> <segmentId>
757
- resend contacts segments <contactId>
758
-
759
- There is no "update" endpoint \u2014 to rename a segment, delete it and recreate.`,examples:["resend segments list",'resend segments create --name "Newsletter Subscribers"',"resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(dd).addCommand(ud).addCommand(md).addCommand(fd,{isDefault:!0}).addCommand(pd);var Pr=de(We(),1);var hd=new p("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).
760
+ 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(Ad).addCommand(bd).addCommand(yd).addCommand(Ud,{isDefault:!0}).addCommand(Sd).addCommand(Cd);var $r=de(We(),1);var Kd=new u("add").description("Suppress an email address so it stops receiving your emails").argument("[email]","Email address to suppress").addHelpText("after",p({context:`Non-interactive: <email> is required (no prompts when stdin/stdout is not a TTY).
760
761
 
761
762
  A suppressed address is skipped on future sends. Added this way, the entry has
762
- 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 I(e,{message:"Email to suppress",placeholder:"e.g. spam@example.com"},{message:"Missing <email> argument.",code:"missing_email"},i);await q({loading:"Suppressing address...",sdkCall:n=>n.suppressions.add({email:r}),onInteractive:n=>{console.log(` ${Pr.default.gray("Email:")} ${r}`),console.log(` ${Pr.default.gray("ID:")} ${n.id}`)}},i)});J();function bi(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 Ad=new p("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
763
+ 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 q({loading:"Suppressing address...",sdkCall:n=>n.suppressions.add({email:r}),onInteractive:n=>{console.log(` ${$r.default.gray("Email:")} ${r}`),console.log(` ${$r.default.gray("ID:")} ${n.id}`)}},i)});V();function Ci(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 vd=new u("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",p({context:`Non-interactive: --file
763
764
  Limit: 100 emails per request (API hard limit \u2014 warned if exceeded)
764
765
 
765
766
  File format (--file path):
766
- ["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 z(o),r=await I(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=bi(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&&S()){console.log(`Suppressed ${a.data.length} address${a.data.length===1?"":"es"}`);for(let l of a.data)console.log(` ${l.id}`)}else j(a,{json:o.json})});J();var bd=new p("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
767
+ ["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 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=oe(r,o),s=Ci(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&&S()){console.log(`Suppressed ${a.data.length} address${a.data.length===1?"":"es"}`);for(let l of a.data)console.log(` ${l.id}`)}else H(a,{json:o.json})});V();var xd=new u("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",p({context:`Non-interactive: --file
767
768
  Limit: 100 entries per request (API hard limit \u2014 warned if exceeded)
768
769
  By default entries are treated as email addresses; pass --ids to remove by suppression ID.
769
770
 
770
771
  File format (--file path):
771
- ["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 z(o),r=await I(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=bi(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&&S()){console.log(`Removed ${a.data.length} suppression${a.data.length===1?"":"s"}`);for(let l of a.data)console.log(` ${l.id}`)}else j(a,{json:o.json})});var Cd=new p("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).
772
- "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(Ad).addCommand(bd);var Ci={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 yd(e){let t=e.map(o=>[o.email,o.id,o.origin,o.created_at]);return O(["Email","ID","Origin","Created"],t,"(no suppressions)")}var Ud=new p("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.
772
+ ["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 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=oe(r,o),s=Ci(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&&S()){console.log(`Removed ${a.data.length} suppression${a.data.length===1?"":"s"}`);for(let l of a.data)console.log(` ${l.id}`)}else H(a,{json:o.json})});var Fd=new u("batch").description("Suppress or remove many addresses in a single request").addHelpText("after",p({context:`Batch operations read a JSON array of strings from --file (up to 100 per request).
773
+ "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(vd).addCommand(xd);var yi={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 kd(e){let t=e.map(o=>[o.email,o.id,o.origin,o.created_at]);return E(["Email","ID","Origin","Created"],t,"(no suppressions)")}var Rd=new u("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",p({context:`Non-interactive: --yes is required to confirm removal when stdin/stdout is not a TTY.
773
774
 
774
- 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,Ci,i);await te(r.id,!!t.yes,{confirmMessage:`Remove suppression "${r.label}"?
775
+ 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,yi,i);await te(r.id,!!t.yes,{confirmMessage:`Remove suppression "${r.label}"?
775
776
  ID: ${r.id}
776
- 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 Sd=new p("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 y(e,Ci,i);await N({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 Kd=new p("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 Y("--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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching suppressions...",sdkCall:n=>n.suppressions.list({...r,...e.origin&&{origin:e.origin}}),onInteractive:n=>{console.log(yd(n.data)),Q(n,"suppressions list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,...e.origin&&{extraFlags:`--origin ${e.origin}`}})}},o)});var vd=new p("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:
777
+ 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 u("get").description("Retrieve a suppression by ID or email address").argument("[id-or-email]","Suppression ID or the suppressed email address").addHelpText("after",p({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 y(e,yi,i);await N({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 Dd=new u("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",p({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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching suppressions...",sdkCall:n=>n.suppressions.list({...r,...e.origin&&{origin:e.origin}}),onInteractive:n=>{console.log(kd(n.data)),P(n,"suppressions list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,...e.origin&&{extraFlags:`--origin ${e.origin}`}})}},o)});var Ed=new u("suppressions").description("Manage the suppression list \u2014 addresses that won't receive your emails").addHelpText("after",p({context:`Suppressions block future sends to an address. Entries have an origin:
777
778
  bounce added automatically after a hard bounce
778
779
  complaint added automatically after a spam complaint
779
780
  manual added by you via "suppressions add"
780
781
 
781
- 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(Kd,{isDefault:!0}).addCommand(hd).addCommand(Sd).addCommand(Ud).addCommand(Cd);J();function yi(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 Ye={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 wd(e){let t=e.map(o=>[o.name,o.status,o.alias??"",o.id,o.created_at]);return O(["Name","Status","Alias","ID","Created"],t,"(no templates)")}var xd=new p("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.
782
+ 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(Dd,{isDefault:!0}).addCommand(Kd).addCommand(_d).addCommand(Rd).addCommand(Fd);V();function Ui(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 Xe={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 Od(e){let t=e.map(o=>[o.name,o.status,o.alias??"",o.id,o.created_at]);return E(["Name","Status","Alias","ID","Created"],t,"(no templates)")}var Bd=new u("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",p({context:`Creates a new draft template. Use "resend templates publish" to make it available for sending.
782
783
 
783
784
  --name is required. Body: provide --html, --html-file, or --react-email. Optionally add --text or --text-file for plain-text.
784
785
 
@@ -788,24 +789,24 @@ get/delete accept either a suppression ID or the email address.`,examples:["rese
788
789
  --html "<p>Hi {{{NAME}}}, your total is {{{PRICE}}}</p>"
789
790
  --var NAME:string --var PRICE:number:0
790
791
 
791
- 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){(!S()||o.json)&&g({message:"Missing --name flag.",code:"missing_name"},{json:o.json});let s=await V({message:"Template name",placeholder:"e.g. Welcome Email",validate:a=>a?void 0:"Required"});F(s)&&k("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
792
+ 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){(!S()||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"});F(s)&&k("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
792
793
  `),r=oe(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
793
- `),n=oe(e.textFile,o)),e.reactEmail&&(r=await He(e.reactEmail,o)),!r){(!S()||o.json)&&g({message:"Missing body. Provide --html, --html-file, or --react-email.",code:"missing_body"},{json:o.json});let s=await V({message:"HTML body",placeholder:"<h1>Hello {{name}}</h1>",validate:a=>a?void 0:"Required"});F(s)&&k("Cancelled."),r=s}await q({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:yi(e.var)}})),onInteractive:s=>{console.log(`Template created: ${s.id}`)}},o)});var Fd=new p("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.
794
+ `),n=oe(e.textFile,o)),e.reactEmail&&(r=await Ge(e.reactEmail,o)),!r){(!S()||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"});F(s)&&k("Cancelled."),r=s}await q({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:Ui(e.var)}})),onInteractive:s=>{console.log(`Template created: ${s.id}`)}},o)});var Td=new u("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",p({context:`Warning: Deleting a template is permanent and cannot be undone.
794
795
 
795
- 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,Ye,i);await te(r.id,!!t.yes,{confirmMessage:`Delete template "${r.label}"?
796
+ 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,Xe,i);await te(r.id,!!t.yes,{confirmMessage:`Delete template "${r.label}"?
796
797
  ID: ${r.id}
797
- 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 kd=new p("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.
798
+ 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 jd=new u("duplicate").description("Duplicate a template").argument("[id]","Template ID or alias to duplicate").addHelpText("after",p({context:`Creates a copy of an existing template and returns the new template ID.
798
799
  The duplicate is created as a draft with " (Copy)" appended to the original name.
799
- 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 y(e,Ye,i);await q({loading:"Duplicating template...",sdkCall:n=>Promise.resolve(n.templates.duplicate(r)),onInteractive:n=>{console.log(`Template duplicated: ${n.id}`)}},i)});var Rd=new p("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 y(e,Ye,i);await N({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 _d=new p("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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching templates...",sdkCall:n=>n.templates.list(r),onInteractive:n=>{console.log(wd(n.data)),Q(n,"templates list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Dd=new p("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.
800
+ 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 y(e,Xe,i);await q({loading:"Duplicating template...",sdkCall:n=>Promise.resolve(n.templates.duplicate(r)),onInteractive:n=>{console.log(`Template duplicated: ${n.id}`)}},i)});var Id=new u("get").description("Retrieve a template by ID or alias").argument("[id]","Template ID or alias").addHelpText("after",p({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 y(e,Xe,i);await N({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 Pd=new u("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",p({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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching templates...",sdkCall:n=>n.templates.list(r),onInteractive:n=>{console.log(Od(n.data)),P(n,"templates list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var $d=new u("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",p({context:`Opens the Resend dashboard in your default browser.
800
801
  With an ID: opens that template's page for editing or viewing.
801
- 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 _e(i,r)});var Ed=new p("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.
802
+ 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 _e(i,r)});var Hd=new u("publish").description("Publish a draft template").argument("[id]","Template ID or alias").addHelpText("after",p({context:`Promotes a draft template to published status, making it available for use in emails.
802
803
  After updating a published template, re-publish to make the changes live.
803
- 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 y(e,Ye,i);await B({loading:"Publishing template...",sdkCall:n=>n.templates.publish(r),errorCode:"publish_error",successMsg:`Template published: ${r}`,retryTransient:!0},i)});var Bd=new p("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.
804
+ 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 y(e,Xe,i);await B({loading:"Publishing template...",sdkCall:n=>n.templates.publish(r),errorCode:"publish_error",successMsg:`Template published: ${r}`,retryTransient:!0},i)});var Gd=new u("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",p({context:`At least one option is required. Only the provided fields are changed; others are left as-is.
804
805
 
805
806
  --var declares a template variable using the format KEY:type or KEY:type:fallback.
806
807
  Valid types: string, number.
807
- 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 y(e,Ye,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
808
- `),s=oe(t.textFile,i)),t.reactEmail!=null&&(n=await He(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:yi(t.var)}}),errorCode:"update_error",successMsg:`Template updated: ${r}`,retryTransient:!0},i)});var Od=new p("templates").description("Manage templates").addHelpText("after",m({context:`Lifecycle:
808
+ 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 y(e,Xe,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
809
+ `),s=oe(t.textFile,i)),t.reactEmail!=null&&(n=await Ge(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:Ui(t.var)}}),errorCode:"update_error",successMsg:`Template updated: ${r}`,retryTransient:!0},i)});var Qd=new u("templates").description("Manage templates").addHelpText("after",p({context:`Lifecycle:
809
810
  Templates follow a draft \u2192 published workflow:
810
811
  1. create \u2014 creates a draft template
811
812
  2. update \u2014 edits name, subject, HTML, variables, etc.
@@ -819,7 +820,7 @@ Template variables:
819
820
  Each variable must be declared with --var when creating or updating:
820
821
  --var KEY:type e.g. --var NAME:string
821
822
  --var KEY:type:fallback e.g. --var PRICE:number:25
822
- 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(xd).addCommand(Rd).addCommand(Dd).addCommand(_d,{isDefault:!0}).addCommand(Bd).addCommand(Fd).addCommand(Ed).addCommand(kd);var Td=new p("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 Y("--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
823
+ 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(Bd).addCommand(Id).addCommand($d).addCommand(Pd,{isDefault:!0}).addCommand(Gd).addCommand(Td).addCommand(Hd).addCommand(jd);var Nd=new u("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",p({context:`Topics enable fine-grained subscription management. Contacts can opt in or out of
823
824
  individual topics. Broadcasts can target only contacts opted into a specific topic.
824
825
 
825
826
  Example topics: "Product Updates", "Security Alerts", "Weekly Digest".
@@ -828,16 +829,16 @@ Example topics: "Product Updates", "Security Alerts", "Weekly Digest".
828
829
  opt_in Contacts receive broadcasts unless they explicitly opt out (default)
829
830
  opt_out Contacts do NOT receive broadcasts unless they explicitly opt in
830
831
 
831
- 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 I(e.name,{message:"Topic name",placeholder:"e.g. Product Updates"},{message:"Missing --name flag.",code:"missing_name"},o);await q({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 jd=new p("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
832
+ 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 q({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 qd=new u("delete").alias("rm").description("Delete a topic").argument("[id]","Topic UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a topic removes all contact subscriptions to that topic and may affect
832
833
  broadcasts that reference this topic_id. Contacts themselves are not deleted.
833
834
 
834
- 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,mt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete topic "${r.label}"?
835
+ 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,gt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete topic "${r.label}"?
835
836
  ID: ${r.id}
836
- 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 Id=new p("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 y(e,mt,i);await N({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 Pd=new p("list").alias("ls").description("List all topics").addHelpText("after",m({context:`Returns all topics in your account. Topic subscription management for individual
837
- 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 D({loading:"Fetching topics...",sdkCall:i=>i.topics.list(),onInteractive:i=>console.log(Va(i.data))},o)});var $d=new p("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.
837
+ 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 Md=new u("get").description("Retrieve a topic by ID").argument("[id]","Topic UUID").addHelpText("after",p({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 y(e,gt,i);await N({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 Ld=new u("list").alias("ls").description("List all topics").addHelpText("after",p({context:`Returns all topics in your account. Topic subscription management for individual
838
+ 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 R({loading:"Fetching topics...",sdkCall:i=>i.topics.list(),onInteractive:i=>console.log(Za(i.data))},o)});var Wd=new u("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",p({context:`At least one of --name or --description must be provided to update the topic.
838
839
 
839
840
  Note: --default-subscription cannot be changed after creation.
840
- 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 y(e,mt,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 Hd=new p("topics").description("Manage topics for contact subscription preferences").addHelpText("after",m({context:`Topics enable fine-grained subscription management beyond the global unsubscribe flag.
841
+ 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 y(e,gt,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 Jd=new u("topics").description("Manage topics for contact subscription preferences").addHelpText("after",p({context:`Topics enable fine-grained subscription management beyond the global unsubscribe flag.
841
842
  A contact can opt in or out of individual topics independently.
842
843
 
843
844
  Broadcasts can target a topic_id so only contacts who have opted into that topic
@@ -850,11 +851,11 @@ Subscription states:
850
851
 
851
852
  Contact topic subscriptions are managed via the contacts namespace:
852
853
  resend contacts topics <contactId>
853
- 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(Td).addCommand(Id).addCommand(Pd,{isDefault:!0}).addCommand($d).addCommand(jd);J();Ao();Ct();var Gd=new p("update").description("Check for available CLI updates").addHelpText("after",m({context:`Checks the latest release on GitHub (bypasses the cache).
854
+ 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(Nd).addCommand(Md).addCommand(Ld,{isDefault:!0}).addCommand(Wd).addCommand(qd);V();Ao();Ut();var Vd=new u("update").description("Check for available CLI updates").addHelpText("after",p({context:`Checks the latest release on GitHub (bypasses the cache).
854
855
  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"}
855
- {"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=S()&&!o.json?ne("Checking for updates..."):null,n=await Er();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=fi(re,n),a=gi();if(o.json||!S()){j({current:re,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${re} \u2192 v${n}`),console.log(`
856
+ {"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=S()&&!o.json?ne("Checking for updates..."):null,n=await Or();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=gi(re,n),a=hi();if(o.json||!S()){H({current:re,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${re} \u2192 v${n}`),console.log(`
856
857
  ${l?"Visit":"Run"}: \x1B[36m${a}\x1B[0m
857
- `)}else r?.stop(`Already up to date (v${re})`)});J();var it=["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 qt(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}var Mt={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 Qd(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 O(["Endpoint","Events","Status","ID"],t,"(no webhooks)")}var Nd=new p("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.
858
+ `)}else r?.stop(`Already up to date (v${re})`)});V();var rt=["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 Mt(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}var Lt={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 zd(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 E(["Endpoint","Events","Status","ID"],t,"(no webhooks)")}var Yd=new u("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",p({context:`Webhooks deliver real-time event notifications to your HTTPS endpoint.
858
859
  Events fire per-recipient: a batch email to 3 recipients generates 3 email.sent events.
859
860
 
860
861
  --endpoint must use HTTPS.
@@ -876,20 +877,20 @@ The signing_secret in the response is shown ONCE \u2014 save it immediately to v
876
877
  webhook payloads using Svix signature headers (svix-id, svix-timestamp, svix-signature).
877
878
  Use resend.webhooks.verify() in your application to validate incoming payloads.
878
879
 
879
- 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 I(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?qt(e.events):void 0;if(n?.includes("all"))r=it;else if(n?.length)r=n;else{(!S()||o.json)&&g({message:"Missing --events flag.",code:"missing_events"},{json:o.json});let s=await On({message:"Select event types to subscribe to",options:it.map(a=>({value:a,label:a}))});F(s)&&k("Cancelled."),r=s}await q({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}`),console.log("Save the signing secret \u2014 it is only shown once.")}},o)});var qd=new p("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.
880
+ 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?Mt(e.events):void 0;if(n?.includes("all"))r=rt;else if(n?.length)r=n;else{(!S()||o.json)&&g({message:"Missing --events flag.",code:"missing_events"},{json:o.json});let s=await Tn({message:"Select event types to subscribe to",options:rt.map(a=>({value:a,label:a}))});F(s)&&k("Cancelled."),r=s}await q({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}`),console.log("Save the signing secret \u2014 it is only shown once.")}},o)});var Xd=new u("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",p({context:`Warning: Deleting a webhook immediately stops event delivery to the endpoint.
880
881
  In-flight events may still be attempted once before the deletion takes effect.
881
882
  To temporarily pause delivery without losing configuration, use:
882
883
  resend webhooks update <id> --status disabled
883
884
 
884
- 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,Mt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete webhook "${r.label}"?
885
+ 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,Lt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete webhook "${r.label}"?
885
886
  ID: ${r.id}
886
- 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)});var Md=new p("get").description("Retrieve a webhook endpoint configuration by ID").argument("[id]","Webhook UUID").addHelpText("after",m({context:`Note: The signing_secret is not returned by the get endpoint.
887
- To rotate secrets, delete the webhook and recreate it.`,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 y(e,Mt,i);await N({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}`)}},i)});var Ld=new p("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.
887
+ 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)});var Zd=new u("get").description("Retrieve a webhook endpoint configuration by ID").argument("[id]","Webhook UUID").addHelpText("after",p({context:`Note: The signing_secret is not returned by the get endpoint.
888
+ To rotate secrets, delete the webhook and recreate it.`,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 y(e,Lt,i);await N({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}`)}},i)});var eu=new u("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",p({context:`Pagination: use --after or --before with a webhook ID as the cursor.
888
889
  Only one of --after or --before may be used at a time.
889
- 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=H(e.limit,o),r=G(i,e.after,e.before,o);await D({loading:"Fetching webhooks...",sdkCall:n=>n.webhooks.list(r),onInteractive:n=>{console.log(Qd(n.data)),Q(n,"webhooks list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Jd=require("node:http");var Ce=de(We(),1);J();function Wd(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 Vd=["svix-id","svix-timestamp","svix-signature"],Nf=3e4;function qf(){return new Date().toLocaleTimeString("en-GB",{hour12:!1})}function Mf(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 Lf(e){let t=`${e} ${Wf(e)}`;return e>=200&&e<300?Ce.default.green(t):e>=400&&e<500?Ce.default.yellow(t):Ce.default.red(t)}function Wf(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 Jf(e,t,o){let i={"content-type":"application/json"};for(let s of Vd){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(Nf)})).status}}function Vf(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 zf(e,t,o){process.stderr.write(`
890
+ 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=j(e.limit,o),r=I(i,e.after,e.before,o);await R({loading:"Fetching webhooks...",sdkCall:n=>n.webhooks.list(r),onInteractive:n=>{console.log(zd(n.data)),P(n,"webhooks list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ou=require("node:http");var Ce=de(We(),1);V();function tu(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 iu=["svix-id","svix-timestamp","svix-signature"],tg=3e4;function og(){return new Date().toLocaleTimeString("en-GB",{hour12:!1})}function ig(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 rg(e){let t=`${e} ${ng(e)}`;return e>=200&&e<300?Ce.default.green(t):e>=400&&e<500?Ce.default.yellow(t):Ce.default.red(t)}function ng(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 sg(e,t,o){let i={"content-type":"application/json"};for(let s of iu){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(tg)})).status}}function ag(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 lg(e,t,o){process.stderr.write(`
890
891
  Cleaning up...`);try{await e.webhooks.remove(t),process.stderr.write(` Webhook ${t} deleted.
891
892
  `)}catch{process.stderr.write(` Failed to delete webhook ${t}.
892
- `)}o.close()}var zd=new p("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.
893
+ `)}o.close()}var ru=new u("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",p({context:`Start a local server that receives Resend webhook events in real time.
893
894
 
894
895
  You must provide a public URL (e.g. from ngrok or localtunnel) that
895
896
  points to the local server port. The CLI will:
@@ -900,11 +901,11 @@ points to the local server port. The CLI will:
900
901
  5. Delete the temporary webhook on exit (Ctrl+C)
901
902
 
902
903
  Important: your tunnel must forward traffic to the same port as --port (default 4318).
903
- 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 I(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?qt(e.events):void 0,s;n?.includes("all")?s=it:n?.length?s=n:s=it;let a=await z(o),l=o.json||!S(),u=(0,Jd.createServer)(async(h,A)=>{try{if(h.method!=="POST"){A.writeHead(405).end("Method not allowed");return}let U=await Vf(h),K;try{K=JSON.parse(U)}catch{A.writeHead(400).end("Invalid JSON");return}let x={};for(let _ of Vd){let $=h.headers[_];x[_]=Array.isArray($)?$[0]:$}let{type:w,resourceId:v,detail:R}=Mf(K),E;if(e.forwardTo)try{let{status:_}=await Jf(e.forwardTo,U,x);E={status:_}}catch(_){let $=_ instanceof DOMException&&_.name==="TimeoutError";E={error:_ instanceof Error?_.message:"Unknown error",timeout:$}}if(l){let _={timestamp:new Date().toISOString(),type:w,resource_id:v,payload:K};e.forwardTo&&E&&(_.forwarded="error"in E?{url:e.forwardTo,error:E.error}:{url:e.forwardTo,status:E.status}),console.log(JSON.stringify(_))}else{let _=Ce.default.dim(`[${qf()}]`),$=w.padEnd(20),ye=v.padEnd(14);if(process.stderr.write(`${_} ${Ce.default.bold($)} ${Ce.default.cyan(ye)} ${R}
904
- `),e.forwardTo&&E){let ie=e.forwardTo.startsWith("http")?e.forwardTo:`http://${e.forwardTo}`;"error"in E?process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.red(`[Error: ${E.error}]`)}
905
- `):process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.dim(`[${Lf(E.status)}]`)}
906
- `)}}let T=Wd(E);A.writeHead(T.status).end(T.body)}catch{A.headersSent||A.writeHead(500).end("Internal error")}});try{await new Promise((h,A)=>{u.on("error",A),u.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 c=ne("Setting up webhook listener...",o.quiet),d;try{let{data:h,error:A}=await a.webhooks.create({endpoint:i,events:s});(A||!h)&&(c.fail("Failed to create webhook"),u.close(),g({message:A?.message??"Unexpected empty response",code:"create_error"},{json:o.json})),d=h.id}catch(h){c.fail("Failed to create webhook"),u.close(),g({message:h instanceof Error?h.message:"Unknown error",code:"create_error"},{json:o.json})}if(c.stop("Webhook listener ready"),!l){let h=s.length===it.length?"all events":s.length<=3?s.join(", "):`${s.slice(0,3).join(", ")} (+${s.length-3} more)`;if(process.stderr.write(`
907
- `),process.stderr.write(` ${Ce.default.bold("Webhook:")} ${d}
904
+ 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: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?Mt(e.events):void 0,s;n?.includes("all")?s=rt:n?.length?s=n:s=rt;let a=await Y(o),l=o.json||!S(),d=(0,ou.createServer)(async(h,A)=>{try{if(h.method!=="POST"){A.writeHead(405).end("Method not allowed");return}let U=await ag(h),w;try{w=JSON.parse(U)}catch{A.writeHead(400).end("Invalid JSON");return}let x={};for(let D of iu){let Q=h.headers[D];x[D]=Array.isArray(Q)?Q[0]:Q}let{type:v,resourceId:K,detail:_}=ig(w),O;if(e.forwardTo)try{let{status:D}=await sg(e.forwardTo,U,x);O={status:D}}catch(D){let Q=D instanceof DOMException&&D.name==="TimeoutError";O={error:D instanceof Error?D.message:"Unknown error",timeout:Q}}if(l){let D={timestamp:new Date().toISOString(),type:v,resource_id:K,payload:w};e.forwardTo&&O&&(D.forwarded="error"in O?{url:e.forwardTo,error:O.error}:{url:e.forwardTo,status:O.status}),console.log(JSON.stringify(D))}else{let D=Ce.default.dim(`[${og()}]`),Q=v.padEnd(20),ye=K.padEnd(14);if(process.stderr.write(`${D} ${Ce.default.bold(Q)} ${Ce.default.cyan(ye)} ${_}
905
+ `),e.forwardTo&&O){let ie=e.forwardTo.startsWith("http")?e.forwardTo:`http://${e.forwardTo}`;"error"in O?process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.red(`[Error: ${O.error}]`)}
906
+ `):process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.dim(`[${rg(O.status)}]`)}
907
+ `)}}let $=tu(O);A.writeHead($.status).end($.body)}catch{A.headersSent||A.writeHead(500).end("Internal error")}});try{await new Promise((h,A)=>{d.on("error",A),d.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 c=ne("Setting up webhook listener...",o.quiet),m;try{let{data:h,error:A}=await a.webhooks.create({endpoint:i,events:s});(A||!h)&&(c.fail("Failed to create webhook"),d.close(),g({message:A?.message??"Unexpected empty response",code:"create_error"},{json:o.json})),m=h.id}catch(h){c.fail("Failed to create webhook"),d.close(),g({message:h instanceof Error?h.message:"Unknown error",code:"create_error"},{json:o.json})}if(c.stop("Webhook listener ready"),!l){let h=s.length===rt.length?"all events":s.length<=3?s.join(", "):`${s.slice(0,3).join(", ")} (+${s.length-3} more)`;if(process.stderr.write(`
908
+ `),process.stderr.write(` ${Ce.default.bold("Webhook:")} ${m}
908
909
  `),process.stderr.write(` ${Ce.default.bold("Endpoint:")} ${i}
909
910
  `),process.stderr.write(` ${Ce.default.bold("Events:")} ${h}
910
911
  `),process.stderr.write(` ${Ce.default.bold("Server:")} http://localhost:${r}
@@ -912,14 +913,14 @@ For example, if using ngrok: ngrok http 4318`,examples:["resend webhooks listen
912
913
  `)}process.stderr.write(`
913
914
  Ready! Listening for webhook events. Press Ctrl+C to stop.
914
915
 
915
- `)}let f=!1,b=async()=>{f||(f=!0,await zf(a,d,u),process.exit(Bt()))};zo(b),process.on("SIGTERM",b),await new Promise(()=>{})});var Yd=new p("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 Y("--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.
916
+ `)}let f=!1,b=async()=>{f||(f=!0,await lg(a,m,d),process.exit(jt()))};Yo(b),process.on("SIGTERM",b),await new Promise(()=>{})});var nu=new u("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",p({context:`At least one of --endpoint, --events, or --status must be provided.
916
917
 
917
918
  --events replaces the entire event list (it is not additive).
918
919
  Use "all" as a shorthand for all 17 event types.
919
920
 
920
921
  --status controls whether events are delivered to this endpoint:
921
922
  enabled Events are delivered (default on creation)
922
- 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 y(e,Mt,i),n=t.events?.length?qt(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")?it: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 Xd=new p("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.
923
+ 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 y(e,Lt,i),n=t.events?.length?Mt(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")?rt: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 su=new u("webhooks").description("Manage webhook endpoints for real-time event notifications").addHelpText("after",p({context:`Webhooks let you receive real-time event notifications from Resend at an HTTPS endpoint.
923
924
  Payloads are signed with Svix headers for verification.
924
925
 
925
926
  Event categories (19 total):
@@ -932,25 +933,25 @@ Event categories (19 total):
932
933
 
933
934
  Signature verification (Svix):
934
935
  Each delivery includes headers: svix-id, svix-timestamp, svix-signature
935
- Verify payloads in your application using: resend.webhooks.verify({ payload, headers, webhookSecret })`,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 delete wh_abc123 --yes"]})).addCommand(Nd).addCommand(Md).addCommand(zd).addCommand(Ld,{isDefault:!0}).addCommand(Yd).addCommand(qd);var eu=require("node:path");Ae();J();var Zd={flag:"flag",env:"environment variable",config:"config file",secure_storage:"secure storage"},Yf={full_access:"full access",sending_access:"sending access"},tu=new p("whoami").description("Show current authentication status").addHelpText("after",m({setup:!0,context:`Local only \u2014 no network calls.
936
- 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 Kt(o.apiKey,i,{refresh:!1});if(!r){let f=i||Wo(i),b=xe(),h=b.some(x=>x.name===f),A=i||process.env.RESEND_PROFILE,U=A&&!h?`Profile "${f}" not found.
937
- Available profiles: ${b.map(x=>x.name).join(", ")||"(none)"}`:"Not authenticated.\nRun `resend login` to get started.",K=A&&!h?"profile_not_found":"not_authenticated";o.json||!S()?g({message:U,code:K},{json:o.json}):g({message:U,code:K},{json:!1})}let n=r.profile??Wo(i),s=(0,eu.join)(Pe(),"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||!S()){j({authenticated:!0,profile:n,api_key:pt(a),source:l,...u&&{permission:u},config_path:s},{json:o.json});return}let c=r.type==="oauth_grant"?`${Zd[l]} (oauth)`:Zd[l],d=u?Yf[u]:void 0;console.log(""),console.log(` Profile: ${n}`),console.log(r.type==="oauth_grant"?` Token: ${pt(a)}`:` API Key: ${pt(a)}`),console.log(` Source: ${c}`),d&&console.log(` Access: ${d}`),console.log(` Config: ${s}`),console.log("")});function ou(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(Xf(l,e,o()),u)}})}}function Xf(e,t,o){if(!eg(e))return e;let i=Zf(t,o);return i?tg(e,i):e}function Zf(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,c;for(let d of og(o)){for(let f of d.createHelp().visibleOptions(d))if(f.long===u||f.short===u){c=f;break}if(c)break}if(!c)s=void 0;else if(!c.required&&!c.optional)s=r+1;else if(c.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 d=t[r+1];c.optional&&(d===void 0||d.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=ig(o).find(u=>ru(u).has(n));if(a){o=a,i.push(a.name());continue}let l=rg(n,iu(o)).map(u=>[e.name(),...i,u.name()].join(" "));return l.length===0?void 0:{unknownCommand:n,suggestions:l}}}function eg(e){return/^error: unknown command /.test(e)||/^error: too many arguments/.test(e)}function tg(e,t){let o=e.endsWith(`
936
+ Verify payloads in your application using: resend.webhooks.verify({ payload, headers, webhookSecret })`,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 delete wh_abc123 --yes"]})).addCommand(Yd).addCommand(Zd).addCommand(ru).addCommand(eu,{isDefault:!0}).addCommand(nu).addCommand(Xd);var lu=require("node:path");Ae();V();var au={flag:"flag",env:"environment variable",config:"config file",secure_storage:"secure storage"},cg={full_access:"full access",sending_access:"sending access"},cu=new u("whoami").description("Show current authentication status").addHelpText("after",p({setup:!0,context:`Local only \u2014 no network calls.
937
+ 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 vt(o.apiKey,i,{refresh:!1});if(!r){let f=i||Jo(i),b=xe(),h=b.some(x=>x.name===f),A=i||process.env.RESEND_PROFILE,U=A&&!h?`Profile "${f}" not found.
938
+ Available profiles: ${b.map(x=>x.name).join(", ")||"(none)"}`:"Not authenticated.\nRun `resend login` to get started.",w=A&&!h?"profile_not_found":"not_authenticated";o.json||!S()?g({message:U,code:w},{json:o.json}):g({message:U,code:w},{json:!1})}let n=r.profile??Jo(i),s=(0,lu.join)($e(),"credentials.json"),a=r.type==="api_key"?r.key:r.access_token,l=r.source,d=r.type==="api_key"?r.permission:void 0;if(o.json||!S()){H({authenticated:!0,profile:n,api_key:pt(a),source:l,...d&&{permission:d},config_path:s},{json:o.json});return}let c=r.type==="oauth_grant"?`${au[l]} (oauth)`:au[l],m=d?cg[d]:void 0;console.log(""),console.log(` Profile: ${n}`),console.log(r.type==="oauth_grant"?` Token: ${pt(a)}`:` API Key: ${pt(a)}`),console.log(` Source: ${c}`),m&&console.log(` Access: ${m}`),console.log(` Config: ${s}`),console.log("")});function du(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,d)=>d(l));n.configureOutput({outputError:(l,d)=>{a(dg(l,e,o()),d)}})}}function dg(e,t,o){if(!mg(e))return e;let i=ug(t,o);return i?pg(e,i):e}function ug(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 d=n.startsWith("--")?n.split("=",1)[0]:n.length>2?n.slice(0,2):n,c;for(let m of fg(o)){for(let f of m.createHelp().visibleOptions(m))if(f.long===d||f.short===d){c=f;break}if(c)break}if(!c)s=void 0;else if(!c.required&&!c.optional)s=r+1;else if(c.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 m=t[r+1];c.optional&&(m===void 0||m.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=gg(o).find(d=>mu(d).has(n));if(a){o=a,i.push(a.name());continue}let l=hg(n,uu(o)).map(d=>[e.name(),...i,d.name()].join(" "));return l.length===0?void 0:{unknownCommand:n,suggestions:l}}}function mg(e){return/^error: unknown command /.test(e)||/^error: too many arguments/.test(e)}function pg(e,t){let o=e.endsWith(`
938
939
  `)?`
939
940
  `:"",{suggestions:i}=t,r=i.length===1?"Did you mean this?":"Did you mean one of these?",n=i.map(s=>` ${s}`).join(`
940
941
  `);return`error: unknown command '${t.unknownCommand}'
941
942
 
942
943
  ${r}
943
- ${n}${o}`}function og(e){let t=[];for(let o=e;o;o=o.parent)t.push(o);return t}function iu(e){return e.createHelp().visibleCommands(e).filter(t=>!t._hidden)}function ig(e){let t=[...e.commands];for(let o of iu(e))t.includes(o)||t.push(o);return t}function ru(e){return new Set([e.name(),...e.aliases()])}function rg(e,t){let o=t.map(r=>{let n=Number.POSITIVE_INFINITY;for(let s of ru(r)){if(s.length<=1)continue;let a=ng(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 ng(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 sg=[" \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 nu(){process.stdout.write(`
944
- `);for(let e of sg)process.stdout.write(`${e}
944
+ ${n}${o}`}function fg(e){let t=[];for(let o=e;o;o=o.parent)t.push(o);return t}function uu(e){return e.createHelp().visibleCommands(e).filter(t=>!t._hidden)}function gg(e){let t=[...e.commands];for(let o of uu(e))t.includes(o)||t.push(o);return t}function mu(e){return new Set([e.name(),...e.aliases()])}function hg(e,t){let o=t.map(r=>{let n=Number.POSITIVE_INFINITY;for(let s of mu(r)){if(s.length<=1)continue;let a=Ag(e,s,3),l=Math.max(e.length,s.length),d=(l-a)/l;a<=3&&d>.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 Ag(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 bg=[" \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 pu(){process.stdout.write(`
945
+ `);for(let e of bg)process.stdout.write(`${e}
945
946
  `);process.stdout.write(`
946
- `)}Gr();Ao();Ct();Ys();var Qr="",mu=[],fu=[],ht=new p().name("resend").description("Resend CLI \u2014 email for developers").configureHelp({showGlobalOptions:!0,styleTitle:e=>Lt.default.gray(e)}).configureOutput({writeErr:e=>{process.stderr.write(e.replace(/^error:/,()=>Lt.default.red("error:")))}}).helpCommand(!0).version(`${Pn} v${re}`,"-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());Qr=o.join(" ");let i=r=>r.options.filter(n=>r.getOptionValueSource(n.attributeName())==="cli").map(n=>n.long?.replace(/^--/,"")??n.short?.replace(/^-/,"")??"").filter(Boolean);mu=i(t),fu=i(e),t.optsWithGlobals().quiet&&e.setOptionValue("json",!0),t.optsWithGlobals().insecureStorage&&(process.env.RESEND_CREDENTIAL_STORE="file")}).addHelpText("after",`
947
- ${Lt.default.gray("Examples:")}
947
+ `)}Qr();Ao();Ut();Xs();var Nr="",Uu=[],Su=[],bt=new u().name("resend").description("Resend CLI \u2014 email for developers").configureHelp({showGlobalOptions:!0,styleTitle:e=>Wt.default.gray(e)}).configureOutput({writeErr:e=>{process.stderr.write(e.replace(/^error:/,()=>Wt.default.red("error:")))}}).helpCommand(!0).version(`${$n} v${re}`,"-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());Nr=o.join(" ");let i=r=>r.options.filter(n=>r.getOptionValueSource(n.attributeName())==="cli").map(n=>n.long?.replace(/^--/,"")??n.short?.replace(/^-/,"")??"").filter(Boolean);Uu=i(t),Su=i(e),t.optsWithGlobals().quiet&&e.setOptionValue("json",!0),t.optsWithGlobals().insecureStorage&&(process.env.RESEND_CREDENTIAL_STORE="file")}).addHelpText("after",`
948
+ ${Wt.default.gray("Examples:")}
948
949
 
949
950
  - Login to Resend
950
951
 
951
- ${Lt.default.blue("$ resend login")}
952
+ ${Wt.default.blue("$ resend login")}
952
953
 
953
954
  - Send an email
954
955
 
955
- ${Lt.default.blue("$ resend emails send")}
956
- `).action(()=>{process.stdout.isTTY&&nu();let e=ht.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}),ht.help()}).addCommand(ii).addCommand(Qc).addCommand(il).addCommand(Ba).addCommand(Yc).addCommand(Od).addCommand(zl).addCommand(Rl).addCommand(gd).addCommand(Hd).addCommand(gc).addCommand(id).addCommand(pl).addCommand(vd).addCommand(ua).addCommand(Xd).addCommand(ld).addCommand(ya).addCommand(ri).addCommand(tu).addCommand(rc).addCommand(cd).addCommand(Yl).addCommand(Gd).addCommand(bl).addCommand(Sl),gu=new p("telemetry").description("Telemetry management").helpCommand(!1);gu.command("flush").argument("<file>").action(async e=>{let{flushFromFile:t}=await Promise.resolve().then(()=>(Gr(),pu));await t(e)});ht.addCommand(gu,{hidden:!0});ou(ht);ht.parseAsync().then(()=>{let e=ht.args[0];if(e==="update"||e==="telemetry")return;Qr&&Hr(Qr,{...ht.opts(),flags:mu,globalFlags:fu});let t=ht.opts();oc({json:!!(t.json||t.quiet)}).catch(()=>{})}).catch(e=>{g({message:M(e,"An unexpected error occurred"),code:"unexpected_error"})});
956
+ ${Wt.default.blue("$ resend emails send")}
957
+ `).action(()=>{process.stdout.isTTY&&pu();let e=bt.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}),bt.help()}).addCommand(ri).addCommand(Vc).addCommand(cl).addCommand(Ba).addCommand(rd).addCommand(Qd).addCommand(oc).addCommand(Tl).addCommand(wd).addCommand(Jd).addCommand(Uc).addCommand(dd).addCommand(bl).addCommand(Ed).addCommand(ma).addCommand(su).addCommand(gd).addCommand(Ua).addCommand(ni).addCommand(cu).addCommand(dc).addCommand(hd).addCommand(ic).addCommand(Vd).addCommand(Kl).addCommand(kl),wu=new u("telemetry").description("Telemetry management").helpCommand(!1);wu.command("flush").argument("<file>").action(async e=>{let{flushFromFile:t}=await Promise.resolve().then(()=>(Qr(),yu));await t(e)});bt.addCommand(wu,{hidden:!0});du(bt);bt.parseAsync().then(()=>{let e=bt.args[0];if(e==="update"||e==="telemetry")return;Nr&&Gr(Nr,{...bt.opts(),flags:Uu,globalFlags:Su});let t=bt.opts();lc({json:!!(t.json||t.quiet)}).catch(()=>{})}).catch(e=>{g({message:M(e,"An unexpected error occurred"),code:"unexpected_error"})});