@spree/cli 2.3.2 → 2.3.3
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/index.js +134 -134
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,105 +1,105 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __createRequire } from "node:module";
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
|
-
var
|
|
4
|
+
var rh=Object.create;var Bo=Object.defineProperty;var ih=Object.getOwnPropertyDescriptor;var nh=Object.getOwnPropertyNames;var sh=Object.getPrototypeOf,oh=Object.prototype.hasOwnProperty;var se=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(r){throw t=0,r}};var ah=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of nh(t))!oh.call(e,n)&&n!==r&&Bo(e,n,{get:()=>t[n],enumerable:!(i=ih(t,n))||i.enumerable});return e};var U=(e,t,r)=>(r=e!=null?rh(sh(e)):{},ah(t||!e||!e.__esModule?Bo(r,"default",{value:e,enumerable:!0}):r,e));var Lt=S(an=>{"use strict";var br=class extends Error{constructor(t,r,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,this.exitCode=t,this.nestedError=void 0}},on=class extends br{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};an.CommanderError=br;an.InvalidArgumentError=on});var xr=S(pn=>{"use strict";var{InvalidArgumentError:ch}=Lt(),cn=class{constructor(t,r){switch(this.description=r||"",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,r){return r===this.defaultValue||!Array.isArray(r)?[t]:(r.push(t),r)}default(t,r){return this.defaultValue=t,this.defaultValueDescription=r,this}argParser(t){return this.parseArg=t,this}choices(t){return this.argChoices=t.slice(),this.parseArg=(r,i)=>{if(!this.argChoices.includes(r))throw new ch(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,i):r},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function ph(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}pn.Argument=cn;pn.humanReadableArgName=ph});var ln=S(un=>{"use strict";var{humanReadableArgName:dh}=xr(),dn=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 r=t.commands.filter(n=>!n._hidden),i=t._getHelpCommand();return i&&!i._hidden&&r.push(i),this.sortSubcommands&&r.sort((n,s)=>n.name().localeCompare(s.name())),r}compareOptions(t,r){let i=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return i(t).localeCompare(i(r))}visibleOptions(t){let r=t.options.filter(n=>!n.hidden),i=t._getHelpOption();if(i&&!i.hidden){let n=i.short&&t._findOption(i.short),s=i.long&&t._findOption(i.long);!n&&!s?r.push(i):i.long&&!s?r.push(t.createOption(i.long,i.description)):i.short&&!n&&r.push(t.createOption(i.short,i.description))}return this.sortOptions&&r.sort(this.compareOptions),r}visibleGlobalOptions(t){if(!this.showGlobalOptions)return[];let r=[];for(let i=t.parent;i;i=i.parent){let n=i.options.filter(s=>!s.hidden);r.push(...n)}return this.sortOptions&&r.sort(this.compareOptions),r}visibleArguments(t){return t._argsDescription&&t.registeredArguments.forEach(r=>{r.description=r.description||t._argsDescription[r.name()]||""}),t.registeredArguments.find(r=>r.description)?t.registeredArguments:[]}subcommandTerm(t){let r=t.registeredArguments.map(i=>dh(i)).join(" ");return t._name+(t._aliases[0]?"|"+t._aliases[0]:"")+(t.options.length?" [options]":"")+(r?" "+r:"")}optionTerm(t){return t.flags}argumentTerm(t){return t.name()}longestSubcommandTermLength(t,r){return r.visibleCommands(t).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleSubcommandTerm(r.subcommandTerm(n)))),0)}longestOptionTermLength(t,r){return r.visibleOptions(t).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(n)))),0)}longestGlobalOptionTermLength(t,r){return r.visibleGlobalOptions(t).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(n)))),0)}longestArgumentTermLength(t,r){return r.visibleArguments(t).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleArgumentTerm(r.argumentTerm(n)))),0)}commandUsage(t){let r=t._name;t._aliases[0]&&(r=r+"|"+t._aliases[0]);let i="";for(let n=t.parent;n;n=n.parent)i=n.name()+" "+i;return i+r+" "+t.usage()}commandDescription(t){return t.description()}subcommandDescription(t){return t.summary()||t.description()}optionDescription(t){let r=[];if(t.argChoices&&r.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&(t.required||t.optional||t.isBoolean()&&typeof t.defaultValue=="boolean")&&r.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),t.presetArg!==void 0&&t.optional&&r.push(`preset: ${JSON.stringify(t.presetArg)}`),t.envVar!==void 0&&r.push(`env: ${t.envVar}`),r.length>0){let i=`(${r.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}argumentDescription(t){let r=[];if(t.argChoices&&r.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&r.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),r.length>0){let i=`(${r.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}formatItemList(t,r,i){return r.length===0?[]:[i.styleTitle(t),...r,""]}groupItems(t,r,i){let n=new Map;return t.forEach(s=>{let o=i(s);n.has(o)||n.set(o,[])}),r.forEach(s=>{let o=i(s);n.has(o)||n.set(o,[]),n.get(o).push(s)}),n}formatHelp(t,r){let i=r.padWidth(t,r),n=r.helpWidth??80;function s(u,l){return r.formatItem(u,i,l,r)}let o=[`${r.styleTitle("Usage:")} ${r.styleUsage(r.commandUsage(t))}`,""],a=r.commandDescription(t);a.length>0&&(o=o.concat([r.boxWrap(r.styleCommandDescription(a),n),""]));let c=r.visibleArguments(t).map(u=>s(r.styleArgumentTerm(r.argumentTerm(u)),r.styleArgumentDescription(r.argumentDescription(u))));if(o=o.concat(this.formatItemList("Arguments:",c,r)),this.groupItems(t.options,r.visibleOptions(t),u=>u.helpGroupHeading??"Options:").forEach((u,l)=>{let m=u.map(h=>s(r.styleOptionTerm(r.optionTerm(h)),r.styleOptionDescription(r.optionDescription(h))));o=o.concat(this.formatItemList(l,m,r))}),r.showGlobalOptions){let u=r.visibleGlobalOptions(t).map(l=>s(r.styleOptionTerm(r.optionTerm(l)),r.styleOptionDescription(r.optionDescription(l))));o=o.concat(this.formatItemList("Global Options:",u,r))}return this.groupItems(t.commands,r.visibleCommands(t),u=>u.helpGroup()||"Commands:").forEach((u,l)=>{let m=u.map(h=>s(r.styleSubcommandTerm(r.subcommandTerm(h)),r.styleSubcommandDescription(r.subcommandDescription(h))));o=o.concat(this.formatItemList(l,m,r))}),o.join(`
|
|
5
5
|
`)}displayWidth(t){return Uo(t).length}styleTitle(t){return t}styleUsage(t){return t.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r==="[command]"?this.styleSubcommandText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleCommandText(r)).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(r=>r==="[options]"?this.styleOptionText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleSubcommandText(r)).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,r){return Math.max(r.longestOptionTermLength(t,r),r.longestGlobalOptionTermLength(t,r),r.longestSubcommandTermLength(t,r),r.longestArgumentTermLength(t,r))}preformatted(t){return/\n[^\S\r\n]/.test(t)}formatItem(t,r,i,n){let o=" ".repeat(2);if(!i)return o+t;let a=t.padEnd(r+t.length-n.displayWidth(t)),c=2,p=(this.helpWidth??80)-r-c-2,u;return p<this.minWidthToWrap||n.preformatted(i)?u=i:u=n.boxWrap(i,p).replace(/\n/g,`
|
|
6
6
|
`+" ".repeat(r+c)),o+a+" ".repeat(c)+u.replace(/\n/g,`
|
|
7
7
|
${o}`)}boxWrap(t,r){if(r<this.minWidthToWrap)return t;let i=t.split(/\r\n|\n/),n=/[\s]*[^\s]+/g,s=[];return i.forEach(o=>{let a=o.match(n);if(a===null){s.push("");return}let c=[a.shift()],d=this.displayWidth(c[0]);a.forEach(p=>{let u=this.displayWidth(p);if(d+u<=r){c.push(p),d+=u;return}s.push(c.join(""));let l=p.trimStart();c=[l],d=this.displayWidth(l)}),s.push(c.join(""))}),s.join(`
|
|
8
|
-
`)}};function Uo(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}
|
|
8
|
+
`)}};function Uo(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}un.Help=dn;un.stripColor=Uo});var fn=S(yn=>{"use strict";var{InvalidArgumentError:uh}=Lt(),mn=class{constructor(t,r){this.flags=t,this.description=r||"",this.required=t.includes("<"),this.optional=t.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(t),this.mandatory=!1;let i=lh(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,r){return this.defaultValue=t,this.defaultValueDescription=r,this}preset(t){return this.presetArg=t,this}conflicts(t){return this.conflictsWith=this.conflictsWith.concat(t),this}implies(t){let r=t;return typeof t=="string"&&(r={[t]:!0}),this.implied=Object.assign(this.implied||{},r),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,r){return r===this.defaultValue||!Array.isArray(r)?[t]:(r.push(t),r)}choices(t){return this.argChoices=t.slice(),this.parseArg=(r,i)=>{if(!this.argChoices.includes(r))throw new uh(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,i):r},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?No(this.name().replace(/^no-/,"")):No(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}},hn=class{constructor(t){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,t.forEach(r=>{r.negate?this.negativeOptions.set(r.attributeName(),r):this.positiveOptions.set(r.attributeName(),r)}),this.negativeOptions.forEach((r,i)=>{this.positiveOptions.has(i)&&this.dualOptions.add(i)})}valueFromOption(t,r){let i=r.attributeName();if(!this.dualOptions.has(i))return!0;let n=this.negativeOptions.get(i).presetArg,s=n!==void 0?n:!1;return r.negate===(s===t)}};function No(e){return e.split("-").reduce((t,r)=>t+r[0].toUpperCase()+r.slice(1))}function lh(e){let t,r,i=/^-[^-]$/,n=/^--[^-]/,s=e.split(/[ |,]+/).concat("guard");if(i.test(s[0])&&(t=s.shift()),n.test(s[0])&&(r=s.shift()),!t&&i.test(s[0])&&(t=s.shift()),!t&&n.test(s[0])&&(t=r,r=s.shift()),s[0].startsWith("-")){let o=s[0],a=`option creation failed due to '${o}' in option flags '${e}'`;throw/^-[^-][^-]/.test(o)?new Error(`${a}
|
|
9
9
|
- a short flag is a single dash and a single character
|
|
10
10
|
- either use a single dash and a single character (for a short flag)
|
|
11
11
|
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):i.test(o)?new Error(`${a}
|
|
12
12
|
- too many short flags`):n.test(o)?new Error(`${a}
|
|
13
13
|
- too many long flags`):new Error(`${a}
|
|
14
|
-
- unrecognised flag format`)}if(t===void 0&&r===void 0)throw new Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:r}}
|
|
14
|
+
- unrecognised flag format`)}if(t===void 0&&r===void 0)throw new Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:r}}yn.Option=mn;yn.DualOptions=hn});var zo=S(Go=>{"use strict";function mh(e,t){if(Math.abs(e.length-t.length)>3)return Math.max(e.length,t.length);let r=[];for(let i=0;i<=e.length;i++)r[i]=[i];for(let i=0;i<=t.length;i++)r[0][i]=i;for(let i=1;i<=t.length;i++)for(let n=1;n<=e.length;n++){let s=1;e[n-1]===t[i-1]?s=0:s=1,r[n][i]=Math.min(r[n-1][i]+1,r[n][i-1]+1,r[n-1][i-1]+s),n>1&&i>1&&e[n-1]===t[i-2]&&e[n-2]===t[i-1]&&(r[n][i]=Math.min(r[n][i],r[n-2][i-2]+1))}return r[e.length][t.length]}function hh(e,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let r=e.startsWith("--");r&&(e=e.slice(2),t=t.map(o=>o.slice(2)));let i=[],n=3,s=.4;return t.forEach(o=>{if(o.length<=1)return;let a=mh(e,o),c=Math.max(e.length,o.length);(c-a)/c>s&&(a<n?(n=a,i=[o]):a===n&&i.push(o))}),i.sort((o,a)=>o.localeCompare(a)),r&&(i=i.map(o=>`--${o}`)),i.length>1?`
|
|
15
15
|
(Did you mean one of ${i.join(", ")}?)`:i.length===1?`
|
|
16
|
-
(Did you mean ${i[0]}?)`:""}
|
|
17
|
-
- specify the name in Command constructor or using .name()`);return r=r||{},r.isDefault&&(this._defaultCommandName=t._name),(r.noHelp||r.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,r){return new
|
|
18
|
-
Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._lifeCycleHooks[t].push(r):this._lifeCycleHooks[t]=[r],this}exitOverride(t){return t?this._exitCallback=t:this._exitCallback=r=>{if(r.code!=="commander.executeSubCommandAsync")throw r},this}_exit(t,r,i){this._exitCallback&&this._exitCallback(new
|
|
19
|
-
- already used by option '${r.flags}'`)}this._initOptionGroup(t),this.options.push(t)}_registerCommand(t){let r=n=>[n.name()].concat(n.aliases()),i=r(t).find(n=>this._findCommand(n));if(i){let n=r(this._findCommand(i)).join("|"),s=r(t).join("|");throw new Error(`cannot add command '${s}' as already have command '${n}'`)}this._initCommandGroup(t),this.commands.push(t)}addOption(t){this._registerOption(t);let r=t.name(),i=t.attributeName();if(t.negate){let s=t.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(i,t.defaultValue===void 0?!0:t.defaultValue,"default")}else t.defaultValue!==void 0&&this.setOptionValueWithSource(i,t.defaultValue,"default");let n=(s,o,a)=>{s==null&&t.presetArg!==void 0&&(s=t.presetArg);let c=this.getOptionValue(i);s!==null&&t.parseArg?s=this._callParseArg(t,s,c,o):s!==null&&t.variadic&&(s=t._collectValue(s,c)),s==null&&(t.negate?s=!1:t.isBoolean()||t.optional?s=!0:s=""),this.setOptionValueWithSource(i,s,a)};return this.on("option:"+r,s=>{let o=`error: option '${t.flags}' argument '${s}' is invalid.`;n(s,o,"cli")}),t.envVar&&this.on("optionEnv:"+r,s=>{let o=`error: option '${t.flags}' value '${s}' from env '${t.envVar}' is invalid.`;n(s,o,"env")}),this}_optionEx(t,r,i,n,s){if(typeof r=="object"&&r instanceof
|
|
20
|
-
- 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,r,i){if(
|
|
16
|
+
(Did you mean ${i[0]}?)`:""}Go.suggestSimilar=hh});var Ko=S(wn=>{"use strict";var yh=se("events").EventEmitter,gn=se("child_process"),De=se("path"),wr=se("fs"),T=se("process"),{Argument:fh,humanReadableArgName:gh}=xr(),{CommanderError:_n}=Lt(),{Help:_h,stripColor:bh}=ln(),{Option:Vo,DualOptions:xh}=fn(),{suggestSimilar:Wo}=zo(),bn=class e extends yh{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:r=>T.stdout.write(r),writeErr:r=>T.stderr.write(r),outputError:(r,i)=>i(r),getOutHelpWidth:()=>T.stdout.isTTY?T.stdout.columns:void 0,getErrHelpWidth:()=>T.stderr.isTTY?T.stderr.columns:void 0,getOutHasColors:()=>xn()??(T.stdout.isTTY&&T.stdout.hasColors?.()),getErrHasColors:()=>xn()??(T.stderr.isTTY&&T.stderr.hasColors?.()),stripColor:r=>bh(r)},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 r=this;r;r=r.parent)t.push(r);return t}command(t,r,i){let n=r,s=i;typeof n=="object"&&n!==null&&(s=n,n=null),s=s||{};let[,o,a]=t.match(/([^ ]+) *(.*)/),c=this.createCommand(o);return n&&(c.description(n),c._executableHandler=!0),s.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(s.noHelp||s.hidden),c._executableFile=s.executableFile||null,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),n?this:c}createCommand(t){return new e(t)}createHelp(){return Object.assign(new _h,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,r){if(!t._name)throw new Error(`Command passed to .addCommand() must have a name
|
|
17
|
+
- specify the name in Command constructor or using .name()`);return r=r||{},r.isDefault&&(this._defaultCommandName=t._name),(r.noHelp||r.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,r){return new fh(t,r)}argument(t,r,i,n){let s=this.createArgument(t,r);return typeof i=="function"?s.default(n).argParser(i):s.default(i),this.addArgument(s),this}arguments(t){return t.trim().split(/ +/).forEach(r=>{this.argument(r)}),this}addArgument(t){let r=this.registeredArguments.slice(-1)[0];if(r?.variadic)throw new Error(`only the last argument can be variadic '${r.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,r){if(typeof t=="boolean")return this._addImplicitHelpCommand=t,t&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let i=t??"help [command]",[,n,s]=i.match(/([^ ]+) *(.*)/),o=r??"display help for command",a=this.createCommand(n);return a.helpOption(!1),s&&a.arguments(s),o&&a.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=a,(t||r)&&this._initCommandGroup(a),this}addHelpCommand(t,r){return typeof t!="object"?(this.helpCommand(t,r),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,r){let i=["preSubcommand","preAction","postAction"];if(!i.includes(t))throw new Error(`Unexpected value for event passed to hook : '${t}'.
|
|
18
|
+
Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._lifeCycleHooks[t].push(r):this._lifeCycleHooks[t]=[r],this}exitOverride(t){return t?this._exitCallback=t:this._exitCallback=r=>{if(r.code!=="commander.executeSubCommandAsync")throw r},this}_exit(t,r,i){this._exitCallback&&this._exitCallback(new _n(t,r,i)),T.exit(t)}action(t){let r=i=>{let n=this.registeredArguments.length,s=i.slice(0,n);return this._storeOptionsAsProperties?s[n]=this:s[n]=this.opts(),s.push(this),t.apply(this,s)};return this._actionHandler=r,this}createOption(t,r){return new Vo(t,r)}_callParseArg(t,r,i,n){try{return t.parseArg(r,i)}catch(s){if(s.code==="commander.invalidArgument"){let o=`${n} ${s.message}`;this.error(o,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(t){let r=t.short&&this._findOption(t.short)||t.long&&this._findOption(t.long);if(r){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}'
|
|
19
|
+
- already used by option '${r.flags}'`)}this._initOptionGroup(t),this.options.push(t)}_registerCommand(t){let r=n=>[n.name()].concat(n.aliases()),i=r(t).find(n=>this._findCommand(n));if(i){let n=r(this._findCommand(i)).join("|"),s=r(t).join("|");throw new Error(`cannot add command '${s}' as already have command '${n}'`)}this._initCommandGroup(t),this.commands.push(t)}addOption(t){this._registerOption(t);let r=t.name(),i=t.attributeName();if(t.negate){let s=t.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(i,t.defaultValue===void 0?!0:t.defaultValue,"default")}else t.defaultValue!==void 0&&this.setOptionValueWithSource(i,t.defaultValue,"default");let n=(s,o,a)=>{s==null&&t.presetArg!==void 0&&(s=t.presetArg);let c=this.getOptionValue(i);s!==null&&t.parseArg?s=this._callParseArg(t,s,c,o):s!==null&&t.variadic&&(s=t._collectValue(s,c)),s==null&&(t.negate?s=!1:t.isBoolean()||t.optional?s=!0:s=""),this.setOptionValueWithSource(i,s,a)};return this.on("option:"+r,s=>{let o=`error: option '${t.flags}' argument '${s}' is invalid.`;n(s,o,"cli")}),t.envVar&&this.on("optionEnv:"+r,s=>{let o=`error: option '${t.flags}' value '${s}' from env '${t.envVar}' is invalid.`;n(s,o,"env")}),this}_optionEx(t,r,i,n,s){if(typeof r=="object"&&r instanceof Vo)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(r,i);if(o.makeOptionMandatory(!!t.mandatory),typeof n=="function")o.default(s).argParser(n);else if(n instanceof RegExp){let a=n;n=(c,d)=>{let p=a.exec(c);return p?p[0]:d},o.default(s).argParser(n)}else o.default(n);return this.addOption(o)}option(t,r,i,n){return this._optionEx({},t,r,i,n)}requiredOption(t,r,i,n){return this._optionEx({mandatory:!0},t,r,i,n)}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,r){return this.setOptionValueWithSource(t,r,void 0)}setOptionValueWithSource(t,r,i){return this._storeOptionsAsProperties?this[t]=r:this._optionValues[t]=r,this._optionValueSources[t]=i,this}getOptionValueSource(t){return this._optionValueSources[t]}getOptionValueSourceWithGlobals(t){let r;return this._getCommandAndAncestors().forEach(i=>{i.getOptionValueSource(t)!==void 0&&(r=i.getOptionValueSource(t))}),r}_prepareUserArgs(t,r){if(t!==void 0&&!Array.isArray(t))throw new Error("first parameter to parse must be array or undefined");if(r=r||{},t===void 0&&r.from===void 0){T.versions?.electron&&(r.from="electron");let n=T.execArgv??[];(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))&&(r.from="eval")}t===void 0&&(t=T.argv),this.rawArgs=t.slice();let i;switch(r.from){case void 0:case"node":this._scriptPath=t[1],i=t.slice(2);break;case"electron":T.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: '${r.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",i}parse(t,r){this._prepareForParse();let i=this._prepareUserArgs(t,r);return this._parseCommand([],i),this}async parseAsync(t,r){this._prepareForParse();let i=this._prepareUserArgs(t,r);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.
|
|
20
|
+
- 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,r,i){if(wr.existsSync(t))return;let n=r?`searched for local subcommand relative to directory '${r}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",s=`'${t}' does not exist
|
|
21
21
|
- if '${i}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
22
22
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
23
|
-
- ${n}`;throw new Error(s)}_executeSubCommand(t,r){r=r.slice();let i=!1,n=[".js",".ts",".tsx",".mjs",".cjs"];function s(p,u){let l=De.resolve(p,u);if(
|
|
23
|
+
- ${n}`;throw new Error(s)}_executeSubCommand(t,r){r=r.slice();let i=!1,n=[".js",".ts",".tsx",".mjs",".cjs"];function s(p,u){let l=De.resolve(p,u);if(wr.existsSync(l))return l;if(n.includes(De.extname(u)))return;let m=n.find(h=>wr.existsSync(`${l}${h}`));if(m)return`${l}${m}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=t._executableFile||`${this._name}-${t._name}`,a=this._executableDir||"";if(this._scriptPath){let p;try{p=wr.realpathSync(this._scriptPath)}catch{p=this._scriptPath}a=De.resolve(De.dirname(p),a)}if(a){let p=s(a,o);if(!p&&!t._executableFile&&this._scriptPath){let u=De.basename(this._scriptPath,De.extname(this._scriptPath));u!==this._name&&(p=s(a,`${u}-${t._name}`))}o=p||o}i=n.includes(De.extname(o));let c;T.platform!=="win32"?i?(r.unshift(o),r=Ho(T.execArgv).concat(r),c=gn.spawn(T.argv[0],r,{stdio:"inherit"})):c=gn.spawn(o,r,{stdio:"inherit"}):(this._checkForMissingExecutable(o,a,t._name),r.unshift(o),r=Ho(T.execArgv).concat(r),c=gn.spawn(T.execPath,r,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(u=>{T.on(u,()=>{c.killed===!1&&c.exitCode===null&&c.kill(u)})});let d=this._exitCallback;c.on("close",p=>{p=p??1,d?d(new _n(p,"commander.executeSubCommandAsync","(close)")):T.exit(p)}),c.on("error",p=>{if(p.code==="ENOENT")this._checkForMissingExecutable(o,a,t._name);else if(p.code==="EACCES")throw new Error(`'${o}' not executable`);if(!d)T.exit(1);else{let u=new _n(1,"commander.executeSubCommandAsync","(error)");u.nestedError=p,d(u)}}),this.runningCommand=c}_dispatchSubcommand(t,r,i){let n=this._findCommand(t);n||this.help({error:!0}),n._prepareForParse();let s;return s=this._chainOrCallSubCommandHook(s,n,"preSubcommand"),s=this._chainOrCall(s,()=>{if(n._executableHandler)this._executeSubCommand(n,r.concat(i));else return n._parseCommand(r,i)}),s}_dispatchHelpCommand(t){t||this.help();let r=this._findCommand(t);return r&&!r._executableHandler&&r.help(),this._dispatchSubcommand(t,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((t,r)=>{t.required&&this.args[r]==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,n,s)=>{let o=n;if(n!==null&&i.parseArg){let a=`error: command-argument value '${n}' is invalid for argument '${i.name()}'.`;o=this._callParseArg(i,n,s,a)}return o};this._checkNumberOfArguments();let r=[];this.registeredArguments.forEach((i,n)=>{let s=i.defaultValue;i.variadic?n<this.args.length?(s=this.args.slice(n),i.parseArg&&(s=s.reduce((o,a)=>t(i,a,o),i.defaultValue))):s===void 0&&(s=[]):n<this.args.length&&(s=this.args[n],i.parseArg&&(s=t(i,s,i.defaultValue))),r[n]=s}),this.processedArgs=r}_chainOrCall(t,r){return t?.then&&typeof t.then=="function"?t.then(()=>r()):r()}_chainOrCallHooks(t,r){let i=t,n=[];return this._getCommandAndAncestors().reverse().filter(s=>s._lifeCycleHooks[r]!==void 0).forEach(s=>{s._lifeCycleHooks[r].forEach(o=>{n.push({hookedCommand:s,callback:o})})}),r==="postAction"&&n.reverse(),n.forEach(s=>{i=this._chainOrCall(i,()=>s.callback(s.hookedCommand,this))}),i}_chainOrCallSubCommandHook(t,r,i){let n=t;return this._lifeCycleHooks[i]!==void 0&&this._lifeCycleHooks[i].forEach(s=>{n=this._chainOrCall(n,()=>s(this,r))}),n}_parseCommand(t,r){let i=this.parseOptions(r);if(this._parseOptionsEnv(),this._parseOptionsImplied(),t=t.concat(i.operands),r=i.unknown,this.args=t.concat(r),t&&this._findCommand(t[0]))return this._dispatchSubcommand(t[0],t.slice(1),r);if(this._getHelpCommand()&&t[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(t[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(r),this._dispatchSubcommand(this._defaultCommandName,t,r);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let n=()=>{i.unknown.length>0&&this.unknownOption(i.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){n(),this._processArguments();let o;return o=this._chainOrCallHooks(o,"preAction"),o=this._chainOrCall(o,()=>this._actionHandler(this.processedArgs)),this.parent&&(o=this._chainOrCall(o,()=>{this.parent.emit(s,t,r)})),o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent?.listenerCount(s))n(),this._processArguments(),this.parent.emit(s,t,r);else if(t.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",t,r);this.listenerCount("command:*")?this.emit("command:*",t,r):this.commands.length?this.unknownCommand():(n(),this._processArguments())}else this.commands.length?(n(),this.help({error:!0})):(n(),this._processArguments())}_findCommand(t){if(t)return this.commands.find(r=>r._name===t||r._aliases.includes(t))}_findOption(t){return this.options.find(r=>r.is(t))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(t=>{t.options.forEach(r=>{r.mandatory&&t.getOptionValue(r.attributeName())===void 0&&t.missingMandatoryOptionValue(r)})})}_checkForConflictingLocalOptions(){let t=this.options.filter(i=>{let n=i.attributeName();return this.getOptionValue(n)===void 0?!1:this.getOptionValueSource(n)!=="default"});t.filter(i=>i.conflictsWith.length>0).forEach(i=>{let n=t.find(s=>i.conflictsWith.includes(s.attributeName()));n&&this._conflictingOption(i,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(t=>{t._checkForConflictingLocalOptions()})}parseOptions(t){let r=[],i=[],n=r;function s(p){return p.length>1&&p[0]==="-"}let o=p=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(p)?!this._getCommandAndAncestors().some(u=>u.options.map(l=>l.short).some(l=>/^-\d$/.test(l))):!1,a=null,c=null,d=0;for(;d<t.length||c;){let p=c??t[d++];if(c=null,p==="--"){n===i&&n.push(p),n.push(...t.slice(d));break}if(a&&(!s(p)||o(p))){this.emit(`option:${a.name()}`,p);continue}if(a=null,s(p)){let u=this._findOption(p);if(u){if(u.required){let l=t[d++];l===void 0&&this.optionMissingArgument(u),this.emit(`option:${u.name()}`,l)}else if(u.optional){let l=null;d<t.length&&(!s(t[d])||o(t[d]))&&(l=t[d++]),this.emit(`option:${u.name()}`,l)}else this.emit(`option:${u.name()}`);a=u.variadic?u:null;continue}}if(p.length>2&&p[0]==="-"&&p[1]!=="-"){let u=this._findOption(`-${p[1]}`);if(u){u.required||u.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${u.name()}`,p.slice(2)):(this.emit(`option:${u.name()}`),c=`-${p.slice(2)}`);continue}}if(/^--[^=]+=/.test(p)){let u=p.indexOf("="),l=this._findOption(p.slice(0,u));if(l&&(l.required||l.optional)){this.emit(`option:${l.name()}`,p.slice(u+1));continue}}if(n===r&&s(p)&&!(this.commands.length===0&&o(p))&&(n=i),(this._enablePositionalOptions||this._passThroughOptions)&&r.length===0&&i.length===0){if(this._findCommand(p)){r.push(p),i.push(...t.slice(d));break}else if(this._getHelpCommand()&&p===this._getHelpCommand().name()){r.push(p,...t.slice(d));break}else if(this._defaultCommandName){i.push(p,...t.slice(d));break}}if(this._passThroughOptions){n.push(p,...t.slice(d));break}n.push(p)}return{operands:r,unknown:i}}opts(){if(this._storeOptionsAsProperties){let t={},r=this.options.length;for(let i=0;i<r;i++){let n=this.options[i].attributeName();t[n]=n===this._versionOptionName?this._version:this[n]}return t}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((t,r)=>Object.assign(t,r.opts()),{})}error(t,r){this._outputConfiguration.outputError(`${t}
|
|
24
24
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
25
25
|
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
26
|
-
`),this.outputHelp({error:!0}));let i=r||{},n=i.exitCode||1,s=i.code||"commander.error";this._exit(n,s,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in T.env){let r=t.attributeName();(this.getOptionValue(r)===void 0||["default","config","env"].includes(this.getOptionValueSource(r)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,T.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new
|
|
27
|
-
`),this._exit(0,"commander.version",t)}),this}description(t,r){return t===void 0&&r===void 0?this._description:(this._description=t,r&&(this._argsDescription=r),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let r=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(r=this.commands[this.commands.length-1]),t===r._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let n=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${n}'`)}return r._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(r=>this.alias(r)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let r=this.registeredArguments.map(i=>
|
|
26
|
+
`),this.outputHelp({error:!0}));let i=r||{},n=i.exitCode||1,s=i.code||"commander.error";this._exit(n,s,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in T.env){let r=t.attributeName();(this.getOptionValue(r)===void 0||["default","config","env"].includes(this.getOptionValueSource(r)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,T.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new xh(this.options),r=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&r(i.attributeName())&&t.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(n=>!r(n)).forEach(n=>{this.setOptionValueWithSource(n,i.implied[n],"implied")})})}missingArgument(t){let r=`error: missing required argument '${t}'`;this.error(r,{code:"commander.missingArgument"})}optionMissingArgument(t){let r=`error: option '${t.flags}' argument missing`;this.error(r,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let r=`error: required option '${t.flags}' not specified`;this.error(r,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,r){let i=o=>{let a=o.attributeName(),c=this.getOptionValue(a),d=this.options.find(u=>u.negate&&a===u.attributeName()),p=this.options.find(u=>!u.negate&&a===u.attributeName());return d&&(d.presetArg===void 0&&c===!1||d.presetArg!==void 0&&c===d.presetArg)?d:p||o},n=o=>{let a=i(o),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},s=`error: ${n(t)} cannot be used with ${n(r)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let r="";if(t.startsWith("--")&&this._showSuggestionAfterError){let n=[],s=this;do{let o=s.createHelp().visibleOptions(s).filter(a=>a.long).map(a=>a.long);n=n.concat(o),s=s.parent}while(s&&!s._enablePositionalOptions);r=Wo(t,n)}let i=`error: unknown option '${t}'${r}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let r=this.registeredArguments.length,i=r===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${r} argument${i} but got ${t.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],r="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(s=>{n.push(s.name()),s.alias()&&n.push(s.alias())}),r=Wo(t,n)}let i=`error: unknown command '${t}'${r}`;this.error(i,{code:"commander.unknownCommand"})}version(t,r,i){if(t===void 0)return this._version;this._version=t,r=r||"-V, --version",i=i||"output the version number";let n=this.createOption(r,i);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${t}
|
|
27
|
+
`),this._exit(0,"commander.version",t)}),this}description(t,r){return t===void 0&&r===void 0?this._description:(this._description=t,r&&(this._argsDescription=r),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let r=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(r=this.commands[this.commands.length-1]),t===r._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let n=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${n}'`)}return r._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(r=>this.alias(r)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let r=this.registeredArguments.map(i=>gh(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?r:[]).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=De.basename(t,De.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let r=this.createHelp(),i=this._getOutputContext(t);r.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let n=r.formatHelp(this,r);return i.hasColors?n:this._outputConfiguration.stripColor(n)}_getOutputContext(t){t=t||{};let r=!!t.error,i,n,s;return r?(i=a=>this._outputConfiguration.writeErr(a),n=this._outputConfiguration.getErrHasColors(),s=this._outputConfiguration.getErrHelpWidth()):(i=a=>this._outputConfiguration.writeOut(a),n=this._outputConfiguration.getOutHasColors(),s=this._outputConfiguration.getOutHelpWidth()),{error:r,write:a=>(n||(a=this._outputConfiguration.stripColor(a)),i(a)),hasColors:n,helpWidth:s}}outputHelp(t){let r;typeof t=="function"&&(r=t,t=void 0);let i=this._getOutputContext(t),n={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let s=this.helpInformation({error:i.error});if(r&&(s=r(s),typeof s!="string"&&!Buffer.isBuffer(s)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(s),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",n))}helpOption(t,r){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",r??"display help for command"),(t||r)&&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 r=Number(T.exitCode??0);r===0&&t&&typeof t!="function"&&t.error&&(r=1),this._exit(r,"commander.help","(outputHelp)")}addHelpText(t,r){let i=["beforeAll","before","after","afterAll"];if(!i.includes(t))throw new Error(`Unexpected value for position to addHelpText.
|
|
28
28
|
Expecting one of '${i.join("', '")}'`);let n=`${t}Help`;return this.on(n,s=>{let o;typeof r=="function"?o=r({error:s.error,command:s.command}):o=r,o&&s.write(`${o}
|
|
29
|
-
`)}),this}_outputHelpIfRequested(t){let r=this._getHelpOption();r&&t.find(n=>r.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Wo(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let r,i="127.0.0.1",n="9229",s;return(s=t.match(/^(--inspect(-brk)?)$/))!==null?r=s[1]:(s=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(r=s[1],/^\d+$/.test(s[3])?n=s[3]:i=s[3]):(s=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(r=s[1],i=s[3],n=s[4]),r&&n!=="0"?`${r}=${i}:${parseInt(n)+1}`:t})}function bn(){if(T.env.NO_COLOR||T.env.FORCE_COLOR==="0"||T.env.FORCE_COLOR==="false")return!1;if(T.env.FORCE_COLOR||T.env.CLICOLOR_FORCE!==void 0)return!0}xn.Command=_n;xn.useColor=bn});var Xo=q(pe=>{"use strict";var{Argument:Ko}=br(),{Command:wn}=Ho(),{CommanderError:xh,InvalidArgumentError:Yo}=Dt(),{Help:wh}=un(),{Option:Jo}=yn();pe.program=new wn;pe.createCommand=e=>new wn(e);pe.createOption=(e,t)=>new Jo(e,t);pe.createArgument=(e,t)=>new Ko(e,t);pe.Command=wn;pe.Option=Jo;pe.Argument=Ko;pe.Help=wh;pe.CommanderError=xh;pe.InvalidArgumentError=Yo;pe.InvalidOptionArgumentError=Yo});var X=q((JS,kn)=>{"use strict";var kr=process||{},ta=kr.argv||[],wr=kr.env||{},kh=!(wr.NO_COLOR||ta.includes("--no-color"))&&(!!wr.FORCE_COLOR||ta.includes("--color")||kr.platform==="win32"||(kr.stdout||{}).isTTY&&wr.TERM!=="dumb"||!!wr.CI),Sh=(e,t,r=e)=>i=>{let n=""+i,s=n.indexOf(t,e.length);return~s?e+vh(n,t,r,s)+t:e+n+t},vh=(e,t,r,i)=>{let n="",s=0;do n+=e.substring(s,i)+r,s=i+t.length,i=e.indexOf(t,s);while(~i);return n+e.substring(s)},ra=(e=kh)=>{let t=e?Sh:()=>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")}};kn.exports=ra();kn.exports.createColors=ra});var vn=q(ht=>{"use strict";Object.defineProperty(ht,"__esModule",{value:!0});ht.DEFAULT_COLOR_MAP=void 0;ht.DEFAULT_COLOR_MAP={red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",white_bold:"\x1B[01m",reset:"\x1B[0m"};var Sn=class{constructor(t=ht.DEFAULT_COLOR_MAP){this.text="",this.colorMap=t}addCharsWithColor(t,r){let i=this.colorMap[t];this.text+=i!==void 0?`${i}${r}${this.colorMap.reset}`:r}renderConsole(){return this.text}};ht.default=Sn});var Mt=q(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.DEFAULT_HEADER_ALIGNMENT=W.DEFAULT_ROW_ALIGNMENT=W.DEFAULT_HEADER_FONT_COLOR=W.DEFAULT_ROW_FONT_COLOR=W.COLORS=W.ALIGNMENTS=W.DEFAULT_TABLE_STYLE=W.DEFAULT_ROW_SEPARATOR=W.DEFAULT_COLUMN_LEN=void 0;W.DEFAULT_COLUMN_LEN=20;W.DEFAULT_ROW_SEPARATOR=!1;W.DEFAULT_TABLE_STYLE={headerTop:{left:"\u250C",mid:"\u252C",right:"\u2510",other:"\u2500"},headerBottom:{left:"\u251C",mid:"\u253C",right:"\u2524",other:"\u2500"},tableBottom:{left:"\u2514",mid:"\u2534",right:"\u2518",other:"\u2500"},vertical:"\u2502",rowSeparator:{left:"\u251C",mid:"\u253C",right:"\u2524",other:"\u2500"}};W.ALIGNMENTS=["right","left","center"];W.COLORS=["red","green","yellow","white","blue","magenta","cyan","white_bold","reset"];W.DEFAULT_ROW_FONT_COLOR="white";W.DEFAULT_HEADER_FONT_COLOR="white_bold";W.DEFAULT_ROW_ALIGNMENT="right";W.DEFAULT_HEADER_ALIGNMENT="center"});var sa=q(qn=>{"use strict";Object.defineProperty(qn,"__esModule",{value:!0});var Oh=[{first:768,last:879},{first:1155,last:1158},{first:1160,last:1161},{first:1425,last:1469},{first:1471,last:1471},{first:1473,last:1474},{first:1476,last:1477},{first:1479,last:1479},{first:1536,last:1539},{first:1552,last:1557},{first:1611,last:1630},{first:1648,last:1648},{first:1750,last:1764},{first:1767,last:1768},{first:1770,last:1773},{first:1807,last:1807},{first:1809,last:1809},{first:1840,last:1866},{first:1958,last:1968},{first:2027,last:2035},{first:2305,last:2306},{first:2364,last:2364},{first:2369,last:2376},{first:2381,last:2381},{first:2385,last:2388},{first:2402,last:2403},{first:2433,last:2433},{first:2492,last:2492},{first:2497,last:2500},{first:2509,last:2509},{first:2530,last:2531},{first:2561,last:2562},{first:2620,last:2620},{first:2625,last:2626},{first:2631,last:2632},{first:2635,last:2637},{first:2672,last:2673},{first:2689,last:2690},{first:2748,last:2748},{first:2753,last:2757},{first:2759,last:2760},{first:2765,last:2765},{first:2786,last:2787},{first:2817,last:2817},{first:2876,last:2876},{first:2879,last:2879},{first:2881,last:2883},{first:2893,last:2893},{first:2902,last:2902},{first:2946,last:2946},{first:3008,last:3008},{first:3021,last:3021},{first:3134,last:3136},{first:3142,last:3144},{first:3146,last:3149},{first:3157,last:3158},{first:3260,last:3260},{first:3263,last:3263},{first:3270,last:3270},{first:3276,last:3277},{first:3298,last:3299},{first:3393,last:3395},{first:3405,last:3405},{first:3530,last:3530},{first:3538,last:3540},{first:3542,last:3542},{first:3633,last:3633},{first:3636,last:3642},{first:3655,last:3662},{first:3761,last:3761},{first:3764,last:3769},{first:3771,last:3772},{first:3784,last:3789},{first:3864,last:3865},{first:3893,last:3893},{first:3895,last:3895},{first:3897,last:3897},{first:3953,last:3966},{first:3968,last:3972},{first:3974,last:3975},{first:3984,last:3991},{first:3993,last:4028},{first:4038,last:4038},{first:4141,last:4144},{first:4146,last:4146},{first:4150,last:4151},{first:4153,last:4153},{first:4184,last:4185},{first:4448,last:4607},{first:4959,last:4959},{first:5906,last:5908},{first:5938,last:5940},{first:5970,last:5971},{first:6002,last:6003},{first:6068,last:6069},{first:6071,last:6077},{first:6086,last:6086},{first:6089,last:6099},{first:6109,last:6109},{first:6155,last:6157},{first:6313,last:6313},{first:6432,last:6434},{first:6439,last:6440},{first:6450,last:6450},{first:6457,last:6459},{first:6679,last:6680},{first:6912,last:6915},{first:6964,last:6964},{first:6966,last:6970},{first:6972,last:6972},{first:6978,last:6978},{first:7019,last:7027},{first:7616,last:7626},{first:7678,last:7679},{first:8203,last:8207},{first:8234,last:8238},{first:8288,last:8291},{first:8298,last:8303},{first:8400,last:8431},{first:12330,last:12335},{first:12441,last:12442},{first:43014,last:43014},{first:43019,last:43019},{first:43045,last:43046},{first:64286,last:64286},{first:65024,last:65039},{first:65056,last:65059},{first:65279,last:65279},{first:65529,last:65531},{first:68097,last:68099},{first:68101,last:68102},{first:68108,last:68111},{first:68152,last:68154},{first:68159,last:68159},{first:119143,last:119145},{first:119155,last:119170},{first:119173,last:119179},{first:119210,last:119213},{first:119362,last:119364},{first:917505,last:917505},{first:917536,last:917631},{first:917760,last:917999}];qn.default=Oh});var oa=q($n=>{"use strict";Object.defineProperty($n,"__esModule",{value:!0});var Ih=(e,t,r)=>{let i=0,n,s=r;if(e<t[0].first||e>t[s].last)return 0;for(;s>=i;)if(n=Math.floor((i+s)/2),e>t[n].last)i=n+1;else if(e<t[n].first)s=n-1;else return 1;return 0};$n.default=Ih});var An=q(Ft=>{"use strict";var ca=Ft&&Ft.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ft,"__esModule",{value:!0});var aa=ca(sa()),Rh=ca(oa()),jh=e=>e===0?0:e<32||e>=127&&e<160?-1:(0,Rh.default)(e,aa.default,aa.default.length-1)?0:1+ +(e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072&&e<=196605||e>=196608&&e<=262141));Ft.default=jh});var pa=q(Ut=>{"use strict";var Dh=Ut&&Ut.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ut,"__esModule",{value:!0});var Lh=Dh(An()),Mh=e=>{let t=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r),n=(0,Lh.default)(i);if(n<0)return-1;t+=n}return t};Ut.default=Mh});var ua=q(ze=>{"use strict";var da=ze&&ze.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ze,"__esModule",{value:!0});ze.wcswidth=ze.wcwidth=void 0;var Fh=da(pa());ze.wcswidth=Fh.default;var Uh=da(An());ze.wcwidth=Uh.default});var Cn=q(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.findWidthInConsole=rt.stripAnsi=void 0;var Bh=ua(),Nh=/\x1b\[\d{1,3}(;\d{1,3})*m/g,Gh=e=>e.replace(Nh,"");rt.stripAnsi=Gh;var zh=(e,t)=>{let r=0;return e=(0,rt.stripAnsi)(e),t&&Object.entries(t).forEach(([i,n])=>{let s=new RegExp(i,"g");r+=(e.match(s)||[]).length*n,e=e.replace(i,"")}),r+=(0,Bh.wcswidth)(e),r};rt.findWidthInConsole=zh});var Tn=q(we=>{"use strict";Object.defineProperty(we,"__esModule",{value:!0});we.biggestWordInSentence=we.textWithPadding=we.splitTextIntoTextsOfMinLen=void 0;var En=Cn(),Vh=(e,t,r)=>{let i=[];return e.split(/[\n\r]/).forEach(s=>{let o=s.split(" "),a=[],c=0;o.forEach(d=>{let p=(0,En.findWidthInConsole)(d,r);c+p<=t?(c+=p+1,a.push(d)):(a.length>0&&i.push(a.join(" ")),a=[d],c=p+1)}),i.push(a.join(" "))}),i};we.splitTextIntoTextsOfMinLen=Vh;var Wh=(e,t,r,i)=>{let n=(0,En.findWidthInConsole)(e,i),s=Math.floor((r-n)/2),o=r-s-n;if(r<n){let a=(0,we.splitTextIntoTextsOfMinLen)(e,r);return a.length===1?e:a.map(c=>(0,we.textWithPadding)(c,t,r,i)).join(`
|
|
30
|
-
`)}switch(t){case"left":return e.concat(" ".repeat(r-n));case"center":return" ".repeat(s).concat(e).concat(" ".repeat(o));default:return" ".repeat(r-n).concat(e)}};we.textWithPadding=
|
|
31
|
-
`)};de.renderTable=ky;var Sy=(e,t)=>{let r=new hy.default(t);return r.addRows(e),(0,de.renderTable)(r)};de.renderSimpleTable=Sy;var vy=(e,t)=>{console.log((0,de.renderSimpleTable)(e,t))};de.printSimpleTable=vy});var Rn=q(Mn=>{"use strict";Object.defineProperty(Mn,"__esModule",{value:!0});var qy=vn(),Sr=Mt(),jn=Bt(),Dn=ma(),$y=In(),Ay=()=>0,Cy=()=>!0,Ln=class{initSimple(t){this.columns=t.map(r=>({name:r,title:r,alignment:Sr.DEFAULT_ROW_ALIGNMENT}))}initDetailed(t){var r;this.title=t?.title||this.title,this.tableStyle=Object.assign(Object.assign({},this.tableStyle),t?.style),this.sortFunction=t?.sort||this.sortFunction,this.filterFunction=t?.filter||this.filterFunction,this.enabledColumns=t?.enabledColumns||this.enabledColumns,this.disabledColumns=t?.disabledColumns||this.disabledColumns,this.computedColumns=t?.computedColumns||this.computedColumns,this.columns=((r=t?.columns)===null||r===void 0?void 0:r.map(i=>(0,Dn.rawColumnToInternalColumn)(i,t?.defaultColumnOptions)))||this.columns,this.rowSeparator=t?.rowSeparator||this.rowSeparator,this.charLength=t?.charLength||this.charLength,this.defaultColumnOptions=t?.defaultColumnOptions||this.defaultColumnOptions,t?.shouldDisableColors?this.colorMap={}:t?.colorMap&&(this.colorMap=Object.assign(Object.assign({},this.colorMap),t.colorMap)),t.rows!==void 0&&this.addRows(t.rows)}constructor(t){this.rows=[],this.columns=[],this.title=void 0,this.tableStyle=Sr.DEFAULT_TABLE_STYLE,this.filterFunction=Cy,this.sortFunction=Ay,this.enabledColumns=[],this.disabledColumns=[],this.computedColumns=[],this.rowSeparator=Sr.DEFAULT_ROW_SEPARATOR,this.colorMap=qy.DEFAULT_COLOR_MAP,this.charLength={},this.defaultColumnOptions=void 0,this.transforms={},t instanceof Array?this.initSimple(t):typeof t=="object"&&this.initDetailed(t)}createColumnFromRow(t){let r=this.columns.map(i=>i.name);Object.keys(t).forEach(i=>{r.includes(i)||this.columns.push((0,Dn.rawColumnToInternalColumn)((0,jn.createColumFromOnlyName)(i),this.defaultColumnOptions))})}addColumn(t){let r=typeof t=="string"?(0,jn.createColumFromOnlyName)(t):t;this.columns.push((0,Dn.rawColumnToInternalColumn)(r,this.defaultColumnOptions))}addColumns(t){t.forEach(r=>{this.addColumn(r)})}addRow(t,r){this.createColumnFromRow(t),this.rows.push((0,jn.createRow)(r?.color||Sr.DEFAULT_ROW_FONT_COLOR,t,r?.separator!==void 0?r?.separator:this.rowSeparator))}addRows(t,r){t.forEach(i=>{this.addRow(i,r)})}renderTable(){return(0,$y.renderTable)(this)}};Mn.default=Ln});var wa=q(Nt=>{"use strict";var Ey=Nt&&Nt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Nt,"__esModule",{value:!0});var Ty=Ey(Rn()),xa=Bt(),Fn=class{constructor(t){this.table=new Ty.default(t)}addColumn(t){return this.table.addColumn(t),this}addColumns(t){return this.table.addColumns(t),this}addRow(t,r){return this.table.addRow(t,(0,xa.convertRawRowOptionsToStandard)(r)),this}addRows(t,r){return this.table.addRows(t,(0,xa.convertRawRowOptionsToStandard)(r)),this}printTable(){let t=this.table.renderTable();console.log(t)}render(){return this.table.renderTable()}};Nt.default=Fn});var Gt=q(ke=>{"use strict";var Py=ke&&ke.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ke,"__esModule",{value:!0});ke.renderTable=ke.printTable=ke.Table=void 0;var Oy=Py(wa());ke.Table=Oy.default;var ka=In();Object.defineProperty(ke,"printTable",{enumerable:!0,get:function(){return ka.printSimpleTable}});Object.defineProperty(ke,"renderTable",{enumerable:!0,get:function(){return ka.renderSimpleTable}})});var rc=q((s$,tc)=>{"use strict";tc.exports=ec;ec.sync=Lf;var Qa=se("fs");function Df(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i<r.length;i++){var n=r[i].toLowerCase();if(n&&e.substr(-n.length).toLowerCase()===n)return!0}return!1}function Za(e,t,r){return!e.isSymbolicLink()&&!e.isFile()?!1:Df(t,r)}function ec(e,t,r){Qa.stat(e,function(i,n){r(i,i?!1:Za(n,e,t))})}function Lf(e,t){return Za(Qa.statSync(e),e,t)}});var ac=q((o$,oc)=>{"use strict";oc.exports=nc;nc.sync=Mf;var ic=se("fs");function nc(e,t,r){ic.stat(e,function(i,n){r(i,i?!1:sc(n,t))})}function Mf(e,t){return sc(ic.statSync(e),t)}function sc(e,t){return e.isFile()&&Ff(e,t)}function Ff(e,t){var r=e.mode,i=e.uid,n=e.gid,s=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),d=parseInt("001",8),p=a|c,u=r&d||r&c&&n===o||r&a&&i===s||r&p&&s===0;return u}});var pc=q((c$,cc)=>{"use strict";var a$=se("fs"),Fr;process.platform==="win32"||global.TESTING_WINDOWS?Fr=rc():Fr=ac();cc.exports=Qn;Qn.sync=Uf;function Qn(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Qn(e,t||{},function(s,o){s?n(s):i(o)})})}Fr(e,t||{},function(i,n){i&&(i.code==="EACCES"||t&&t.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Uf(e,t){try{return Fr.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var fc=q((p$,yc)=>{"use strict";var wt=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",dc=se("path"),Bf=wt?";":":",uc=pc(),lc=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),mc=(e,t)=>{let r=t.colon||Bf,i=e.match(/\//)||wt&&e.match(/\\/)?[""]:[...wt?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],n=wt?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=wt?n.split(r):[""];return wt&&e.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},hc=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:i,pathExt:n,pathExtExe:s}=mc(e,t),o=[],a=d=>new Promise((p,u)=>{if(d===i.length)return t.all&&o.length?p(o):u(lc(e));let l=i[d],m=/^".*"$/.test(l)?l.slice(1,-1):l,h=dc.join(m,e),f=!m&&/^\.[\\\/]/.test(e)?e.slice(0,2)+h:h;p(c(f,d,0))}),c=(d,p,u)=>new Promise((l,m)=>{if(u===n.length)return l(a(p+1));let h=n[u];uc(d+h,{pathExt:s},(f,x)=>{if(!f&&x)if(t.all)o.push(d+h);else return l(d+h);return l(c(d,p,u+1))})});return r?a(0).then(d=>r(null,d),r):a(0)},Nf=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=mc(e,t),s=[];for(let o=0;o<r.length;o++){let a=r[o],c=/^".*"$/.test(a)?a.slice(1,-1):a,d=dc.join(c,e),p=!c&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let u=0;u<i.length;u++){let l=p+i[u];try{if(uc.sync(l,{pathExt:n}))if(t.all)s.push(l);else return l}catch{}}}if(t.all&&s.length)return s;if(t.nothrow)return null;throw lc(e)};yc.exports=hc;hc.sync=Nf});var _c=q((d$,Zn)=>{"use strict";var gc=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Zn.exports=gc;Zn.exports.default=gc});var kc=q((u$,wc)=>{"use strict";var bc=se("path"),Gf=fc(),zf=_c();function xc(e,t){let r=e.options.env||process.env,i=process.cwd(),n=e.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(e.options.cwd)}catch{}let o;try{o=Gf.sync(e.command,{path:r[zf({env:r})],pathExt:t?bc.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=bc.resolve(n?e.options.cwd:"",o)),o}function Vf(e){return xc(e)||xc(e,!0)}wc.exports=Vf});var Sc=q((l$,ts)=>{"use strict";var es=/([()\][%!^"`<>&|;, *?])/g;function Wf(e){return e=e.replace(es,"^$1"),e}function Hf(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),e=e.replace(/(?=(\\+?)?)\1$/,"$1$1"),e=`"${e}"`,e=e.replace(es,"^$1"),t&&(e=e.replace(es,"^$1")),e}ts.exports.command=Wf;ts.exports.argument=Hf});var qc=q((m$,vc)=>{"use strict";vc.exports=/^#!(.*)/});var Ac=q((h$,$c)=>{"use strict";var Kf=qc();$c.exports=(e="")=>{let t=e.match(Kf);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var Ec=q((y$,Cc)=>{"use strict";var rs=se("fs"),Yf=Ac();function Jf(e){let r=Buffer.alloc(150),i;try{i=rs.openSync(e,"r"),rs.readSync(i,r,0,150,0),rs.closeSync(i)}catch{}return Yf(r.toString())}Cc.exports=Jf});var Ic=q((f$,Oc)=>{"use strict";var Xf=se("path"),Tc=kc(),Pc=Sc(),Qf=Ec(),Zf=process.platform==="win32",eg=/\.(?:com|exe)$/i,tg=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function rg(e){e.file=Tc(e);let t=e.file&&Qf(e.file);return t?(e.args.unshift(e.file),e.command=t,Tc(e)):e.file}function ig(e){if(!Zf)return e;let t=rg(e),r=!eg.test(t);if(e.options.forceShell||r){let i=tg.test(t);e.command=Xf.normalize(e.command),e.command=Pc.command(e.command),e.args=e.args.map(s=>Pc.argument(s,i));let n=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${n}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function ng(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);let i={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?i:ig(i)}Oc.exports=ng});var Dc=q((g$,jc)=>{"use strict";var is=process.platform==="win32";function ns(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function sg(e,t){if(!is)return;let r=e.emit;e.emit=function(i,n){if(i==="exit"){let s=Rc(n,t);if(s)return r.call(e,"error",s)}return r.apply(e,arguments)}}function Rc(e,t){return is&&e===1&&!t.file?ns(t.original,"spawn"):null}function og(e,t){return is&&e===1&&!t.file?ns(t.original,"spawnSync"):null}jc.exports={hookChildProcess:sg,verifyENOENT:Rc,verifyENOENTSync:og,notFoundError:ns}});var Fc=q((_$,kt)=>{"use strict";var Lc=se("child_process"),ss=Ic(),os=Dc();function Mc(e,t,r){let i=ss(e,t,r),n=Lc.spawn(i.command,i.args,i.options);return os.hookChildProcess(n,i),n}function ag(e,t,r){let i=ss(e,t,r),n=Lc.spawnSync(i.command,i.args,i.options);return n.error=n.error||os.verifyENOENTSync(n.status,i),n}kt.exports=Mc;kt.exports.spawn=Mc;kt.exports.sync=ag;kt.exports._parse=ss;kt.exports._enoent=os});var Eo=q((o1,am)=>{"use strict";var Co={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let r="";return e<0?r+=`\x1B[${-e}D`:e>0&&(r+=`\x1B[${e}C`),t<0?r+=`\x1B[${-t}A`:t>0&&(r+=`\x1B[${t}B`),r},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"},Ik={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},Rk={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 r=0;r<e;r++)t+=this.line+(r<e-1?Co.up():"");return e&&(t+=Co.left),t}};am.exports={cursor:Co,scroll:Ik,erase:Rk,beep:"\x07"}});var Qo=B(Xo(),1),{program:US,createCommand:BS,createArgument:NS,createOption:GS,CommanderError:zS,InvalidArgumentError:VS,InvalidOptionArgumentError:WS,Command:Zo,Argument:HS,Option:ea,Help:KS}=Qo.default;var Qm=B(X(),1);function C(e){if(!e)return;let t={};return e.expand?.length&&(t.expand=e.expand.join(",")),e.fields?.length&&(t.fields=e.fields.join(",")),Object.keys(t).length>0?t:void 0}function qh(e){return e===!1?!1:{maxRetries:e?.maxRetries??2,retryOnStatus:e?.retryOnStatus??[429,500,502,503,504],baseDelay:e?.baseDelay??300,maxDelay:e?.maxDelay??1e4,retryOnNetworkError:e?.retryOnNetworkError??!0}}var $h=new Set(["page","limit","expand","sort","fields"]);function b(e){let t={};for(let[r,i]of Object.entries(e))if(i!==void 0){if($h.has(r)){t[r]=Array.isArray(i)?i.join(","):i;continue}if(r.startsWith("q[")){t[r]=i;continue}if(Array.isArray(i)){let n=r.endsWith("[]")?r.slice(0,-2):r;t[`q[${n}][]`]=i}else t[`q[${r}]`]=i}return t}var tt=class extends Error{code;status;details;constructor(e,t){super(e.error.message),this.name="SpreeError",this.code=e.error.code,this.status=t,this.details=e.error.details}};function ia(e,t){let r=t.baseDelay*2**e,i=Math.random()*t.baseDelay;return Math.min(r+i,t.maxDelay)}function na(e){return new Promise(t=>setTimeout(t,e))}function Ah(){return`spree-sdk-retry-${crypto.randomUUID()}`}function Ch(e,t,r,i){return e==="GET"||e==="HEAD"||i?r.retryOnStatus.includes(t):t===429}function Eh(e,t,r){return t.retryOnNetworkError?e==="GET"||e==="HEAD"||r:!1}function Th(e,t,r,i){return async function(s,o,a={}){let{token:c,spreeToken:d,idempotencyKey:p,headers:u={},body:l,params:m}=a,h=a.locale??i?.locale,f=a.currency??i?.currency,x=a.country??i?.country,_=a.channel??i?.channel,v=typeof window<"u"?window.location.origin:void 0,A=e.baseUrl||v;if(!A)throw new TypeError("sdk-core: baseUrl is required in non-browser environments (no window.location to resolve relative URLs against)");let E=new URL(`${e.baseUrl}${t}${o}`,A);m&&Object.entries(m).forEach(([N,S])=>{if(S!==void 0)if(Array.isArray(S))for(let Oe of S)E.searchParams.append(N,String(Oe));else E.searchParams.set(N,String(S))});let w={"Content-Type":"application/json",...u};r.headerValue&&(w[r.headerName]=r.headerValue),c&&(w.Authorization=`Bearer ${c}`),d&&(w["x-spree-token"]=d),h&&(w["x-spree-locale"]=h),f&&(w["x-spree-currency"]=f),x&&(w["x-spree-country"]=x),_&&(w["x-spree-channel"]=_);let O=p??(s!=="GET"&&s!=="HEAD"&&e.retryConfig?Ah():void 0);O&&(w["Idempotency-Key"]=O);let R=!!O,F=e.retryConfig?e.retryConfig.maxRetries+1:1;for(let N=0;N<F;N++)try{let S=await e.fetchFn(E.toString(),{method:s,headers:w,body:l?JSON.stringify(l):void 0,credentials:e.credentials});if(!S.ok){if(!(N>=F-1)&&e.retryConfig&&Ch(s,S.status,e.retryConfig,R)){let U=S.headers.get("Retry-After"),ne=U?Math.min(parseInt(U,10)*1e3,e.retryConfig.maxDelay):ia(N,e.retryConfig);await na(ne);continue}let Ie=await S.json();throw new tt(Ie,S.status)}return S.status===204?void 0:S.status===202?S.headers.get("content-type")?.includes("application/json")?S.json():void 0:S.json()}catch(S){if(S instanceof tt)throw S;if(!(N>=F-1)&&e.retryConfig&&Eh(s,e.retryConfig,R)){let Ie=ia(N,e.retryConfig);await na(Ie);continue}throw S}throw new Error("Unexpected end of retry loop")}}var et={"Spree::Product":"/products","Spree::Variant":"/variants","Spree::Order":"/orders","Spree::User":"/customers","Spree::Category":"/categories","Spree::OptionType":"/option_types"},Ph=class{request;constructor(e){this.request=e}parentScopedCustomFields(e){return{list:(t,r,i)=>this.request("GET",`${e}/${t}/custom_fields`,{...i,params:r?b(r):void 0}),get:(t,r,i)=>this.request("GET",`${e}/${t}/custom_fields/${r}`,i),create:(t,r,i)=>this.request("POST",`${e}/${t}/custom_fields`,{...i,body:r}),update:(t,r,i,n)=>this.request("PATCH",`${e}/${t}/custom_fields/${r}`,{...n,body:i}),delete:(t,r,i)=>this.request("DELETE",`${e}/${t}/custom_fields/${r}`,i)}}customFields(e,t){let r=et[e];if(!r)throw new Error(`Unknown custom-field owner type: ${e}. Add it to CUSTOM_FIELD_OWNER_PATHS.`);let i=this.parentScopedCustomFields(r);return{list:(n,s)=>i.list(t,n,s),get:(n,s)=>i.get(t,n,s),create:(n,s)=>i.create(t,n,s),update:(n,s,o)=>i.update(t,n,s,o),delete:(n,s)=>i.delete(t,n,s)}}customFieldDefinitions={list:(e,t)=>this.request("GET","/custom_field_definitions",{...t,params:e?b(e):void 0}),get:(e,t)=>this.request("GET",`/custom_field_definitions/${e}`,t),create:(e,t)=>this.request("POST","/custom_field_definitions",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/custom_field_definitions/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/custom_field_definitions/${e}`,t)};auth={login:(e,t)=>this.request("POST","/auth/login",{...t,body:e}),refresh:e=>this.request("POST","/auth/refresh",e),logout:e=>this.request("POST","/auth/logout",e),lookupInvitation:(e,t,r)=>this.request("GET",`/auth/invitations/${e}/lookup`,{...r,params:{token:t}}),acceptInvitation:(e,t,r,i)=>this.request("POST",`/auth/invitations/${e}/accept`,{...i,params:{token:t},body:r})};me={get:e=>this.request("GET","/me",e)};dashboard={analytics:(e,t)=>this.request("GET","/dashboard/analytics",{...t,params:e})};store={get:e=>this.request("GET","/store",e),update:(e,t)=>this.request("PATCH","/store",{...t,body:e})};products={list:(e,t)=>this.request("GET","/products",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/products/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/products",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/products/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/products/${e}`,t),clone:(e,t)=>this.request("POST",`/products/${e}/clone`,t),bulkStatusUpdate:(e,t)=>this.request("POST","/products/bulk_status_update",{...t,body:e}),bulkAddToCategories:(e,t)=>this.request("POST","/products/bulk_add_to_categories",{...t,body:e}),bulkRemoveFromCategories:(e,t)=>this.request("POST","/products/bulk_remove_from_categories",{...t,body:e}),bulkAddToChannels:(e,t)=>this.request("POST","/products/bulk_add_to_channels",{...t,body:e}),bulkRemoveFromChannels:(e,t)=>this.request("POST","/products/bulk_remove_from_channels",{...t,body:e}),bulkAddTags:(e,t)=>this.request("POST","/products/bulk_add_tags",{...t,body:e}),bulkRemoveTags:(e,t)=>this.request("POST","/products/bulk_remove_tags",{...t,body:e}),bulkDestroy:(e,t)=>this.request("DELETE","/products/bulk_destroy",{...t,body:e}),media:{list:(e,t,r)=>this.request("GET",`/products/${e}/media`,{...r,params:t?b(t):void 0}),create:(e,t,r)=>this.request("POST",`/products/${e}/media`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/products/${e}/media/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/products/${e}/media/${t}`,r)},variants:{list:(e,t,r)=>this.request("GET",`/products/${e}/variants`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/products/${e}/variants/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/products/${e}/variants`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/products/${e}/variants/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/products/${e}/variants/${t}`,r),media:{list:(e,t,r,i)=>this.request("GET",`/products/${e}/variants/${t}/media`,{...i,params:r?b(r):void 0}),create:(e,t,r,i)=>this.request("POST",`/products/${e}/variants/${t}/media`,{...i,body:r}),update:(e,t,r,i,n)=>this.request("PATCH",`/products/${e}/variants/${t}/media/${r}`,{...n,body:i}),delete:(e,t,r,i)=>this.request("DELETE",`/products/${e}/variants/${t}/media/${r}`,i)}},customFields:this.parentScopedCustomFields(et["Spree::Product"])};orders={list:(e,t)=>this.request("GET","/orders",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/orders/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/orders",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/orders/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/orders/${e}`,t),complete:(e,t,r)=>this.request("PATCH",`/orders/${e}/complete`,{...r,body:t}),cancel:(e,t,r)=>this.request("PATCH",`/orders/${e}/cancel`,{...r,body:t}),approve:(e,t,r)=>this.request("PATCH",`/orders/${e}/approve`,{...r,body:t}),resume:(e,t)=>this.request("PATCH",`/orders/${e}/resume`,t),resendConfirmation:(e,t)=>this.request("POST",`/orders/${e}/resend_confirmation`,t),giftCards:{apply:(e,t,r)=>this.request("POST",`/orders/${e}/gift_cards`,{...r,body:t}),remove:(e,t,r)=>this.request("DELETE",`/orders/${e}/gift_cards/${t}`,r)},storeCredits:{apply:(e,t,r)=>this.request("POST",`/orders/${e}/store_credits`,{...r,body:t}),remove:(e,t)=>this.request("DELETE",`/orders/${e}/store_credits`,t)},items:{list:(e,t,r)=>this.request("GET",`/orders/${e}/items`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/orders/${e}/items/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/orders/${e}/items`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/orders/${e}/items/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/orders/${e}/items/${t}`,r)},fulfillments:{list:(e,t,r)=>this.request("GET",`/orders/${e}/fulfillments`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/orders/${e}/fulfillments/${t}`,{...i,params:C(r)}),update:(e,t,r,i)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}`,{...i,body:r}),fulfill:(e,t,r)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/fulfill`,r),cancel:(e,t,r)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/cancel`,r),resume:(e,t,r)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/resume`,r),split:(e,t,r,i)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/split`,{...i,body:r})},payments:{list:(e,t,r)=>this.request("GET",`/orders/${e}/payments`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/orders/${e}/payments/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/orders/${e}/payments`,{...r,body:t}),capture:(e,t,r)=>this.request("PATCH",`/orders/${e}/payments/${t}/capture`,r),void:(e,t,r)=>this.request("PATCH",`/orders/${e}/payments/${t}/void`,r)},refunds:{list:(e,t,r)=>this.request("GET",`/orders/${e}/refunds`,{...r,params:t?b(t):void 0}),create:(e,t,r)=>this.request("POST",`/orders/${e}/refunds`,{...r,body:t})},adjustments:{list:(e,t,r)=>this.request("GET",`/orders/${e}/adjustments`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/orders/${e}/adjustments/${t}`,r)},customFields:this.parentScopedCustomFields(et["Spree::Order"])};optionTypes={list:(e,t)=>this.request("GET","/option_types",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/option_types/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/option_types",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/option_types/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/option_types/${e}`,t),customFields:this.parentScopedCustomFields(et["Spree::OptionType"])};paymentMethods={list:(e,t)=>this.request("GET","/payment_methods",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/payment_methods/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/payment_methods",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/payment_methods/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/payment_methods/${e}`,t),types:e=>this.request("GET","/payment_methods/types",e)};priceLists={list:(e,t)=>this.request("GET","/price_lists",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/price_lists/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/price_lists",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/price_lists/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/price_lists/${e}`,t),activate:(e,t)=>this.request("PATCH",`/price_lists/${e}/activate`,t),deactivate:(e,t)=>this.request("PATCH",`/price_lists/${e}/deactivate`,t),ruleTypes:e=>this.request("GET","/price_lists/price_rule_types",e)};prices={list:(e,t)=>this.request("GET","/prices",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/prices/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/prices",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/prices/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/prices/${e}`,t),bulkUpsert:(e,t)=>this.request("POST","/prices/bulk_upsert",{...t,body:e}),bulkDestroy:(e,t)=>this.request("DELETE","/prices/bulk_destroy",{...t,body:e})};promotions={list:(e,t)=>this.request("GET","/promotions",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/promotions",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/promotions/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/promotions/${e}`,t),actions:{list:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_actions`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_actions/${t}`,r),create:(e,t,r)=>this.request("POST",`/promotions/${e}/promotion_actions`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/promotions/${e}/promotion_actions/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/promotions/${e}/promotion_actions/${t}`,r)},rules:{list:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_rules`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_rules/${t}`,r),create:(e,t,r)=>this.request("POST",`/promotions/${e}/promotion_rules`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/promotions/${e}/promotion_rules/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/promotions/${e}/promotion_rules/${t}`,r)},couponCodes:{list:(e,t,r)=>this.request("GET",`/promotions/${e}/coupon_codes`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}/coupon_codes/${t}`,r)}};promotionActions={types:e=>this.request("GET","/promotion_actions/types",e),calculators:(e,t)=>this.request("GET","/promotion_actions/calculators",{...t,params:{type:e}})};promotionRules={types:e=>this.request("GET","/promotion_rules/types",e)};tags={list:(e,t)=>this.request("GET","/tags",{...t,params:e})};customerGroups={list:(e,t)=>this.request("GET","/customer_groups",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/customer_groups/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/customer_groups",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/customer_groups/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/customer_groups/${e}`,t)};giftCards={list:(e,t)=>this.request("GET","/gift_cards",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/gift_cards/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/gift_cards",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/gift_cards/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/gift_cards/${e}`,t)};giftCardBatches={list:(e,t)=>this.request("GET","/gift_card_batches",{...t,params:e?b(e):void 0}),get:(e,t)=>this.request("GET",`/gift_card_batches/${e}`,t),create:(e,t)=>this.request("POST","/gift_card_batches",{...t,body:e})};exports={list:(e,t)=>this.request("GET","/exports",{...t,params:e?b(e):void 0}),get:(e,t)=>this.request("GET",`/exports/${e}`,t),create:(e,t)=>this.request("POST","/exports",{...t,body:e}),delete:(e,t)=>this.request("DELETE",`/exports/${e}`,t)};customers={list:(e,t)=>this.request("GET","/customers",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/customers/${e}`,{...r,params:C(t)}),creditCards:{list:(e,t,r)=>this.request("GET",`/customers/${e}/credit_cards`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/customers/${e}/credit_cards/${t}`,{...i,params:C(r)}),delete:(e,t,r)=>this.request("DELETE",`/customers/${e}/credit_cards/${t}`,r)},create:(e,t)=>this.request("POST","/customers",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/customers/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/customers/${e}`,t),bulkAddToGroups:(e,t)=>this.request("POST","/customers/bulk_add_to_groups",{...t,body:e}),bulkRemoveFromGroups:(e,t)=>this.request("POST","/customers/bulk_remove_from_groups",{...t,body:e}),bulkAddTags:(e,t)=>this.request("POST","/customers/bulk_add_tags",{...t,body:e}),bulkRemoveTags:(e,t)=>this.request("POST","/customers/bulk_remove_tags",{...t,body:e}),addresses:{list:(e,t,r)=>this.request("GET",`/customers/${e}/addresses`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/customers/${e}/addresses/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/customers/${e}/addresses`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/customers/${e}/addresses/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/customers/${e}/addresses/${t}`,r)},storeCredits:{list:(e,t,r)=>this.request("GET",`/customers/${e}/store_credits`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/customers/${e}/store_credits/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/customers/${e}/store_credits`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/customers/${e}/store_credits/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/customers/${e}/store_credits/${t}`,r)},customFields:this.parentScopedCustomFields(et["Spree::User"])};categories={list:(e,t)=>this.request("GET","/categories",{...t,params:e?b(e):void 0}),customFields:this.parentScopedCustomFields(et["Spree::Category"])};variants={list:(e,t)=>this.request("GET","/variants",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/variants/${e}`,{...r,params:C(t)}),customFields:this.parentScopedCustomFields(et["Spree::Variant"])};taxCategories={list:(e,t)=>this.request("GET","/tax_categories",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/tax_categories/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/tax_categories",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/tax_categories/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/tax_categories/${e}`,t)};channels={list:(e,t)=>this.request("GET","/channels",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/channels/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/channels",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/channels/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/channels/${e}`,t),addProducts:(e,t,r)=>this.request("POST",`/channels/${e}/add_products`,{...r,body:t}),removeProducts:(e,t,r)=>this.request("POST",`/channels/${e}/remove_products`,{...r,body:t})};markets={list:(e,t)=>this.request("GET","/markets",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/markets/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/markets",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/markets/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/markets/${e}`,t)};storeCreditCategories={list:(e,t)=>this.request("GET","/store_credit_categories",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/store_credit_categories/${e}`,{...r,params:C(t)})};stockLocations={list:(e,t)=>this.request("GET","/stock_locations",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/stock_locations/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/stock_locations",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/stock_locations/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/stock_locations/${e}`,t)};stockItems={list:(e,t)=>this.request("GET","/stock_items",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/stock_items/${e}`,{...r,params:C(t)}),update:(e,t,r)=>this.request("PATCH",`/stock_items/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/stock_items/${e}`,t)};stockTransfers={list:(e,t)=>this.request("GET","/stock_transfers",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/stock_transfers/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/stock_transfers",{...t,body:e}),delete:(e,t)=>this.request("DELETE",`/stock_transfers/${e}`,t)};countries={list:(e,t)=>this.request("GET","/countries",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/countries/${e}`,{...r,params:C(t)})};directUploads={create:(e,t)=>this.request("POST","/direct_uploads",{...t,body:e})};adminUsers={list:(e,t)=>this.request("GET","/admin_users",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/admin_users/${e}`,{...r,params:C(t)}),update:(e,t,r)=>this.request("PATCH",`/admin_users/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/admin_users/${e}`,t)};invitations={list:(e,t)=>this.request("GET","/invitations",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/invitations/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/invitations",{...t,body:e}),delete:(e,t)=>this.request("DELETE",`/invitations/${e}`,t),resend:(e,t)=>this.request("PATCH",`/invitations/${e}/resend`,t)};apiKeys={list:(e,t)=>this.request("GET","/api_keys",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/api_keys/${e}`,{...r,params:C(t)}),current:e=>this.request("GET","/api_keys/current",e??{}),create:(e,t)=>this.request("POST","/api_keys",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/api_keys/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/api_keys/${e}`,t),revoke:(e,t)=>this.request("PATCH",`/api_keys/${e}/revoke`,t)};allowedOrigins={list:(e,t)=>this.request("GET","/allowed_origins",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/allowed_origins/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/allowed_origins",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/allowed_origins/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/allowed_origins/${e}`,t)};webhookEndpoints={list:(e,t)=>this.request("GET","/webhook_endpoints",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/webhook_endpoints/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/webhook_endpoints",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/webhook_endpoints/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/webhook_endpoints/${e}`,t),sendTest:(e,t)=>this.request("POST",`/webhook_endpoints/${e}/send_test`,t),enable:(e,t)=>this.request("PATCH",`/webhook_endpoints/${e}/enable`,t),disable:(e,t,r)=>this.request("PATCH",`/webhook_endpoints/${e}/disable`,{...r,body:t}),deliveries:{list:(e,t,r)=>this.request("GET",`/webhook_endpoints/${e}/deliveries`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/webhook_endpoints/${e}/deliveries/${t}`,r),redeliver:(e,t,r)=>this.request("POST",`/webhook_endpoints/${e}/deliveries/${t}/redeliver`,r)}};roles={list:(e,t)=>this.request("GET","/roles",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/roles/${e}`,{...r,params:C(t)})}};function Lt(e){let t=e.baseUrl.replace(/\/$/,""),r=e.fetch||fetch.bind(globalThis),i=qh(e.retry),n={baseUrl:t,fetchFn:r,retryConfig:i,credentials:e.credentials??"include"},s=e.jwtToken,o=e.storeId,a=null,c="/api/v3/admin",d=async(l,m,h={})=>{let f={};o&&(f["X-Spree-Store-Id"]=o);let x={...h,headers:{...f,...h.headers}},_=()=>{let v=e.secretKey?{headerName:"X-Spree-Api-Key",headerValue:e.secretKey}:{headerName:"Authorization",headerValue:s?`Bearer ${s}`:""};return Th(n,c,v)(l,m,x)};try{return await _()}catch(v){if(v instanceof tt&&v.status===401&&a&&!m.includes("/auth/")&&await a())return _();throw v}},p=new Ph(d),u=Object.create(p);return u.setStore=l=>{o=l},u.setToken=l=>{s=l},u.onUnauthorized=l=>{a=l},u}var Gl=B(Gt(),1),xe=B(X(),1);var Sa=B(X(),1);import Iy from"fs";var Un=Symbol("no-body");async function va(e){if(e===void 0)return Un;let t;if(e==="-")t=await Ry();else if(e.startsWith("@")){let r=e.slice(1);try{t=Iy.readFileSync(r,"utf-8")}catch(i){throw i?.code==="ENOENT"?new Error(`Request body file not found: ${r}`):new Error(`Could not read request body file ${r}: ${i.message}`)}}else t=e;try{return JSON.parse(t)}catch{let r=e==="-"?" (from stdin)":e.startsWith("@")?` (${e.slice(1)})`:"";throw new Error(`Request body is not valid JSON${r}`)}}async function Ry(){process.stdin.isTTY&&process.stderr.write(`${Sa.default.dim("Reading request body from stdin \u2014 paste JSON and press Ctrl-D...")}
|
|
32
|
-
`);let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}var
|
|
33
|
-
Run this command from a directory created with create-spree-app.`);let r=
|
|
34
|
-
`?(o-=1,a+=1):d==="u"&&t[a+2]==="{"?a=t.indexOf("}",a+3):a+=
|
|
35
|
-
`]),
|
|
29
|
+
`)}),this}_outputHelpIfRequested(t){let r=this._getHelpOption();r&&t.find(n=>r.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Ho(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let r,i="127.0.0.1",n="9229",s;return(s=t.match(/^(--inspect(-brk)?)$/))!==null?r=s[1]:(s=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(r=s[1],/^\d+$/.test(s[3])?n=s[3]:i=s[3]):(s=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(r=s[1],i=s[3],n=s[4]),r&&n!=="0"?`${r}=${i}:${parseInt(n)+1}`:t})}function xn(){if(T.env.NO_COLOR||T.env.FORCE_COLOR==="0"||T.env.FORCE_COLOR==="false")return!1;if(T.env.FORCE_COLOR||T.env.CLICOLOR_FORCE!==void 0)return!0}wn.Command=bn;wn.useColor=xn});var Qo=S(pe=>{"use strict";var{Argument:Yo}=xr(),{Command:kn}=Ko(),{CommanderError:wh,InvalidArgumentError:Jo}=Lt(),{Help:kh}=ln(),{Option:Xo}=fn();pe.program=new kn;pe.createCommand=e=>new kn(e);pe.createOption=(e,t)=>new Xo(e,t);pe.createArgument=(e,t)=>new Yo(e,t);pe.Command=kn;pe.Option=Xo;pe.Argument=Yo;pe.Help=kh;pe.CommanderError=wh;pe.InvalidArgumentError=Jo;pe.InvalidOptionArgumentError=Jo});var X=S((Xq,qn)=>{"use strict";var qr=process||{},ra=qr.argv||[],kr=qr.env||{},qh=!(kr.NO_COLOR||ra.includes("--no-color"))&&(!!kr.FORCE_COLOR||ra.includes("--color")||qr.platform==="win32"||(qr.stdout||{}).isTTY&&kr.TERM!=="dumb"||!!kr.CI),vh=(e,t,r=e)=>i=>{let n=""+i,s=n.indexOf(t,e.length);return~s?e+Sh(n,t,r,s)+t:e+n+t},Sh=(e,t,r,i)=>{let n="",s=0;do n+=e.substring(s,i)+r,s=i+t.length,i=e.indexOf(t,s);while(~i);return n+e.substring(s)},ia=(e=qh)=>{let t=e?vh:()=>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")}};qn.exports=ia();qn.exports.createColors=ia});var Sn=S(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});yt.DEFAULT_COLOR_MAP=void 0;yt.DEFAULT_COLOR_MAP={red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",white_bold:"\x1B[01m",reset:"\x1B[0m"};var vn=class{constructor(t=yt.DEFAULT_COLOR_MAP){this.text="",this.colorMap=t}addCharsWithColor(t,r){let i=this.colorMap[t];this.text+=i!==void 0?`${i}${r}${this.colorMap.reset}`:r}renderConsole(){return this.text}};yt.default=vn});var Ft=S(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.DEFAULT_HEADER_ALIGNMENT=W.DEFAULT_ROW_ALIGNMENT=W.DEFAULT_HEADER_FONT_COLOR=W.DEFAULT_ROW_FONT_COLOR=W.COLORS=W.ALIGNMENTS=W.DEFAULT_TABLE_STYLE=W.DEFAULT_ROW_SEPARATOR=W.DEFAULT_COLUMN_LEN=void 0;W.DEFAULT_COLUMN_LEN=20;W.DEFAULT_ROW_SEPARATOR=!1;W.DEFAULT_TABLE_STYLE={headerTop:{left:"\u250C",mid:"\u252C",right:"\u2510",other:"\u2500"},headerBottom:{left:"\u251C",mid:"\u253C",right:"\u2524",other:"\u2500"},tableBottom:{left:"\u2514",mid:"\u2534",right:"\u2518",other:"\u2500"},vertical:"\u2502",rowSeparator:{left:"\u251C",mid:"\u253C",right:"\u2524",other:"\u2500"}};W.ALIGNMENTS=["right","left","center"];W.COLORS=["red","green","yellow","white","blue","magenta","cyan","white_bold","reset"];W.DEFAULT_ROW_FONT_COLOR="white";W.DEFAULT_HEADER_FONT_COLOR="white_bold";W.DEFAULT_ROW_ALIGNMENT="right";W.DEFAULT_HEADER_ALIGNMENT="center"});var oa=S($n=>{"use strict";Object.defineProperty($n,"__esModule",{value:!0});var Ih=[{first:768,last:879},{first:1155,last:1158},{first:1160,last:1161},{first:1425,last:1469},{first:1471,last:1471},{first:1473,last:1474},{first:1476,last:1477},{first:1479,last:1479},{first:1536,last:1539},{first:1552,last:1557},{first:1611,last:1630},{first:1648,last:1648},{first:1750,last:1764},{first:1767,last:1768},{first:1770,last:1773},{first:1807,last:1807},{first:1809,last:1809},{first:1840,last:1866},{first:1958,last:1968},{first:2027,last:2035},{first:2305,last:2306},{first:2364,last:2364},{first:2369,last:2376},{first:2381,last:2381},{first:2385,last:2388},{first:2402,last:2403},{first:2433,last:2433},{first:2492,last:2492},{first:2497,last:2500},{first:2509,last:2509},{first:2530,last:2531},{first:2561,last:2562},{first:2620,last:2620},{first:2625,last:2626},{first:2631,last:2632},{first:2635,last:2637},{first:2672,last:2673},{first:2689,last:2690},{first:2748,last:2748},{first:2753,last:2757},{first:2759,last:2760},{first:2765,last:2765},{first:2786,last:2787},{first:2817,last:2817},{first:2876,last:2876},{first:2879,last:2879},{first:2881,last:2883},{first:2893,last:2893},{first:2902,last:2902},{first:2946,last:2946},{first:3008,last:3008},{first:3021,last:3021},{first:3134,last:3136},{first:3142,last:3144},{first:3146,last:3149},{first:3157,last:3158},{first:3260,last:3260},{first:3263,last:3263},{first:3270,last:3270},{first:3276,last:3277},{first:3298,last:3299},{first:3393,last:3395},{first:3405,last:3405},{first:3530,last:3530},{first:3538,last:3540},{first:3542,last:3542},{first:3633,last:3633},{first:3636,last:3642},{first:3655,last:3662},{first:3761,last:3761},{first:3764,last:3769},{first:3771,last:3772},{first:3784,last:3789},{first:3864,last:3865},{first:3893,last:3893},{first:3895,last:3895},{first:3897,last:3897},{first:3953,last:3966},{first:3968,last:3972},{first:3974,last:3975},{first:3984,last:3991},{first:3993,last:4028},{first:4038,last:4038},{first:4141,last:4144},{first:4146,last:4146},{first:4150,last:4151},{first:4153,last:4153},{first:4184,last:4185},{first:4448,last:4607},{first:4959,last:4959},{first:5906,last:5908},{first:5938,last:5940},{first:5970,last:5971},{first:6002,last:6003},{first:6068,last:6069},{first:6071,last:6077},{first:6086,last:6086},{first:6089,last:6099},{first:6109,last:6109},{first:6155,last:6157},{first:6313,last:6313},{first:6432,last:6434},{first:6439,last:6440},{first:6450,last:6450},{first:6457,last:6459},{first:6679,last:6680},{first:6912,last:6915},{first:6964,last:6964},{first:6966,last:6970},{first:6972,last:6972},{first:6978,last:6978},{first:7019,last:7027},{first:7616,last:7626},{first:7678,last:7679},{first:8203,last:8207},{first:8234,last:8238},{first:8288,last:8291},{first:8298,last:8303},{first:8400,last:8431},{first:12330,last:12335},{first:12441,last:12442},{first:43014,last:43014},{first:43019,last:43019},{first:43045,last:43046},{first:64286,last:64286},{first:65024,last:65039},{first:65056,last:65059},{first:65279,last:65279},{first:65529,last:65531},{first:68097,last:68099},{first:68101,last:68102},{first:68108,last:68111},{first:68152,last:68154},{first:68159,last:68159},{first:119143,last:119145},{first:119155,last:119170},{first:119173,last:119179},{first:119210,last:119213},{first:119362,last:119364},{first:917505,last:917505},{first:917536,last:917631},{first:917760,last:917999}];$n.default=Ih});var aa=S(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});var Rh=(e,t,r)=>{let i=0,n,s=r;if(e<t[0].first||e>t[s].last)return 0;for(;s>=i;)if(n=Math.floor((i+s)/2),e>t[n].last)i=n+1;else if(e<t[n].first)s=n-1;else return 1;return 0};An.default=Rh});var Cn=S(Bt=>{"use strict";var pa=Bt&&Bt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bt,"__esModule",{value:!0});var ca=pa(oa()),jh=pa(aa()),Dh=e=>e===0?0:e<32||e>=127&&e<160?-1:(0,jh.default)(e,ca.default,ca.default.length-1)?0:1+ +(e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072&&e<=196605||e>=196608&&e<=262141));Bt.default=Dh});var da=S(Ut=>{"use strict";var Lh=Ut&&Ut.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ut,"__esModule",{value:!0});var Mh=Lh(Cn()),Fh=e=>{let t=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r),n=(0,Mh.default)(i);if(n<0)return-1;t+=n}return t};Ut.default=Fh});var la=S(ze=>{"use strict";var ua=ze&&ze.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ze,"__esModule",{value:!0});ze.wcswidth=ze.wcwidth=void 0;var Bh=ua(da());ze.wcswidth=Bh.default;var Uh=ua(Cn());ze.wcwidth=Uh.default});var En=S(it=>{"use strict";Object.defineProperty(it,"__esModule",{value:!0});it.findWidthInConsole=it.stripAnsi=void 0;var Nh=la(),Gh=/\x1b\[\d{1,3}(;\d{1,3})*m/g,zh=e=>e.replace(Gh,"");it.stripAnsi=zh;var Vh=(e,t)=>{let r=0;return e=(0,it.stripAnsi)(e),t&&Object.entries(t).forEach(([i,n])=>{let s=new RegExp(i,"g");r+=(e.match(s)||[]).length*n,e=e.replace(i,"")}),r+=(0,Nh.wcswidth)(e),r};it.findWidthInConsole=Vh});var Pn=S(we=>{"use strict";Object.defineProperty(we,"__esModule",{value:!0});we.biggestWordInSentence=we.textWithPadding=we.splitTextIntoTextsOfMinLen=void 0;var Tn=En(),Wh=(e,t,r)=>{let i=[];return e.split(/[\n\r]/).forEach(s=>{let o=s.split(" "),a=[],c=0;o.forEach(d=>{let p=(0,Tn.findWidthInConsole)(d,r);c+p<=t?(c+=p+1,a.push(d)):(a.length>0&&i.push(a.join(" ")),a=[d],c=p+1)}),i.push(a.join(" "))}),i};we.splitTextIntoTextsOfMinLen=Wh;var Hh=(e,t,r,i)=>{let n=(0,Tn.findWidthInConsole)(e,i),s=Math.floor((r-n)/2),o=r-s-n;if(r<n){let a=(0,we.splitTextIntoTextsOfMinLen)(e,r);return a.length===1?e:a.map(c=>(0,we.textWithPadding)(c,t,r,i)).join(`
|
|
30
|
+
`)}switch(t){case"left":return e.concat(" ".repeat(r-n));case"center":return" ".repeat(s).concat(e).concat(" ".repeat(o));default:return" ".repeat(r-n).concat(e)}};we.textWithPadding=Hh;var Kh=(e,t)=>e.split(" ").reduce((r,i)=>Math.max(r,(0,Tn.findWidthInConsole)(i,t)),0);we.biggestWordInSentence=Kh});var Nt=S(M=>{"use strict";Object.defineProperty(M,"__esModule",{value:!0});M.getWidthLimitedColumnsArray=M.createHeaderAsRow=M.renderTableHorizontalBorders=M.findLenOfColumn=M.createRow=M.createColumFromOnlyName=M.createTableHorizontalBorders=M.convertRawRowOptionsToStandard=M.evaluateCellText=M.cellText=void 0;var ma=En(),On=Pn(),In=Ft(),ft=(e,t)=>Math.max(e,t),Yh=e=>e==null?"":`${e}`;M.cellText=Yh;var Jh=(e,t)=>t?`${t(e)}`:(0,M.cellText)(e);M.evaluateCellText=Jh;var Xh=e=>{if(e)return{color:e.color,separator:e.separator||In.DEFAULT_ROW_SEPARATOR}};M.convertRawRowOptionsToStandard=Xh;var Qh=({left:e,mid:t,right:r,other:i},n)=>{let s=e;return n.forEach(o=>{s+=i.repeat(o+2),s+=t}),s=s.slice(0,-t.length),s+=r,s};M.createTableHorizontalBorders=Qh;var Zh=e=>({name:e,title:e});M.createColumFromOnlyName=Zh;var ey=(e,t,r)=>({color:e,separator:r,text:t});M.createRow=ey;var ty=(e,t,r)=>{let i=e.name,n=e.title,s=e.transform,o=ft(0,e?.minLen||0);return e.maxLen?(o=ft(o,ft(e.maxLen,(0,On.biggestWordInSentence)(n,r))),o=t.reduce((a,c)=>ft(a,(0,On.biggestWordInSentence)((0,M.evaluateCellText)(c.text[i],s),r)),o),o):(o=ft(o,(0,ma.findWidthInConsole)(n,r)),t.forEach(a=>{o=ft(o,(0,ma.findWidthInConsole)((0,M.evaluateCellText)(a.text[i],s),r))}),o)};M.findLenOfColumn=ty;var ry=(e,t)=>(0,M.createTableHorizontalBorders)(e,t);M.renderTableHorizontalBorders=ry;var iy=(e,t)=>{let r=In.DEFAULT_HEADER_FONT_COLOR,i=e(r,{},!1);return t.forEach(n=>{i.text[n.name]=n.title}),i};M.createHeaderAsRow=iy;var ny=(e,t,r)=>{let i={};return e.forEach(n=>{i[n.name]=(0,On.splitTextIntoTextsOfMinLen)((0,M.cellText)(t.text[n.name]),n.length||In.DEFAULT_COLUMN_LEN,r)}),i};M.getWidthLimitedColumnsArray=ny});var ha=S(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.rawColumnToInternalColumn=Le.objIfExists=void 0;var sy=Ft(),oy=(e,t)=>t?{[e]:t}:{};Le.objIfExists=oy;var ay=(e,t)=>{var r;return Object.assign(Object.assign(Object.assign(Object.assign({name:e.name,title:(r=e.title)!==null&&r!==void 0?r:e.name},(0,Le.objIfExists)("color",e.color||t?.color)),(0,Le.objIfExists)("maxLen",e.maxLen||t?.maxLen)),(0,Le.objIfExists)("minLen",e.minLen||t?.minLen)),{alignment:e.alignment||t?.alignment||sy.DEFAULT_ROW_ALIGNMENT,transform:e.transform})};Le.rawColumnToInternalColumn=ay});var ya=S(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.preProcessRows=gt.preProcessColumns=void 0;var cy=Nt(),py=e=>{e.computedColumns.length&&e.computedColumns.forEach(t=>{e.columns.some(i=>i.name===t.name)||(e.addColumn(Object.assign(Object.assign({},t),e.defaultColumnOptions)),e.rows.forEach((i,n,s)=>{let o=s.map(a=>a.text);i.text[t.name]=t.function(i.text,n,o)}))})},dy=e=>{e.enabledColumns.length&&(e.columns=e.columns.filter(t=>e.enabledColumns.includes(t.name)))},uy=e=>{e.disabledColumns.length&&(e.columns=e.columns.filter(t=>!e.disabledColumns.includes(t.name)))},ly=e=>{e.columns.forEach(t=>{t.length=(0,cy.findLenOfColumn)(t,e.rows,e.charLength)})},my=e=>{py(e),uy(e),dy(e),ly(e)};gt.preProcessColumns=my;var hy=e=>{let t=e.rows.filter(r=>e.filterFunction(r.text)).sort((r,i)=>e.sortFunction(r.text,i.text));e.rows=t};gt.preProcessRows=hy});var Rn=S(de=>{"use strict";var ga=de&&de.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(de,"__esModule",{value:!0});de.printSimpleTable=de.renderSimpleTable=de.renderTable=void 0;var _a=ga(Sn()),ba=Pn(),ye=Ft(),Ve=Nt(),yy=ga(jn()),fa=ya(),fy=(e,t,r,i,n,s,o,a)=>{let c=new _a.default(o);return c.addCharsWithColor("",e.vertical),t.forEach(d=>{let u=r<i[d.name].length?(0,Ve.cellText)(i[d.name][r]):"";c.addCharsWithColor(ye.DEFAULT_ROW_FONT_COLOR," "),c.addCharsWithColor(n&&ye.DEFAULT_HEADER_FONT_COLOR||d.color||s.color,(0,ba.textWithPadding)(u,d.alignment||ye.DEFAULT_ROW_ALIGNMENT,d.length||ye.DEFAULT_COLUMN_LEN,a)),c.addCharsWithColor("",` ${e.vertical}`)}),c.renderConsole()},xa=(e,t,r,i,n,s)=>{let o=(0,Ve.getWidthLimitedColumnsArray)(t,r,s),a=Object.values(o).reduce((d,p)=>Math.max(d,p.length),0),c=[];for(let d=0;d<a;d+=1){let p=fy(e,t,d,o,n,r,i,s);c.push(p)}return c},gy=(e,t)=>{let r=JSON.parse(JSON.stringify(e)),i={};return t.filter(n=>!!n.transform).forEach(n=>{i[n.name]=n.transform}),Object.keys(i).forEach(n=>{r.text[n]=i[n](r.text[n])}),r},_y=(e,t)=>{let r=[],i=gy(t,e.columns);return r=r.concat(xa(e.tableStyle,e.columns,i,e.colorMap,void 0,e.charLength)),r},by=e=>{let t=[];if(e.title===void 0)return t;let r=()=>{let s=(o,a)=>o+a+2+1;return e.columns.map(o=>o.length||ye.DEFAULT_COLUMN_LEN).reduce(s,1)},i=(0,ba.textWithPadding)(e.title,ye.DEFAULT_HEADER_ALIGNMENT,r()),n=new _a.default(e.colorMap);return n.addCharsWithColor(ye.DEFAULT_HEADER_FONT_COLOR,i),t.push(n.renderConsole()),t},xy=e=>{let t=[];t.push((0,Ve.renderTableHorizontalBorders)(e.tableStyle.headerTop,e.columns.map(i=>i.length||ye.DEFAULT_COLUMN_LEN)));let r=(0,Ve.createHeaderAsRow)(Ve.createRow,e.columns);return t=t.concat(xa(e.tableStyle,e.columns,r,e.colorMap,!0)),t.push((0,Ve.renderTableHorizontalBorders)(e.tableStyle.headerBottom,e.columns.map(i=>i.length||ye.DEFAULT_COLUMN_LEN))),t},wy=e=>{let t=[];return t.push((0,Ve.renderTableHorizontalBorders)(e.tableStyle.tableBottom,e.columns.map(r=>r.length||ye.DEFAULT_COLUMN_LEN))),t},ky=(e,t)=>{let r=[],i=e.rows.length-1;return e.rows.indexOf(t)!==i&&t.separator&&r.push((0,Ve.renderTableHorizontalBorders)(e.tableStyle.rowSeparator,e.columns.map(s=>s.length||ye.DEFAULT_COLUMN_LEN))),r},qy=e=>{(0,fa.preProcessColumns)(e),(0,fa.preProcessRows)(e);let t=[];return by(e).forEach(r=>t.push(r)),xy(e).forEach(r=>t.push(r)),e.rows.forEach(r=>{_y(e,r).forEach(i=>t.push(i)),ky(e,r).forEach(i=>t.push(i))}),wy(e).forEach(r=>t.push(r)),t.join(`
|
|
31
|
+
`)};de.renderTable=qy;var vy=(e,t)=>{let r=new yy.default(t);return r.addRows(e),(0,de.renderTable)(r)};de.renderSimpleTable=vy;var Sy=(e,t)=>{console.log((0,de.renderSimpleTable)(e,t))};de.printSimpleTable=Sy});var jn=S(Fn=>{"use strict";Object.defineProperty(Fn,"__esModule",{value:!0});var $y=Sn(),vr=Ft(),Dn=Nt(),Ln=ha(),Ay=Rn(),Cy=()=>0,Ey=()=>!0,Mn=class{initSimple(t){this.columns=t.map(r=>({name:r,title:r,alignment:vr.DEFAULT_ROW_ALIGNMENT}))}initDetailed(t){var r;this.title=t?.title||this.title,this.tableStyle=Object.assign(Object.assign({},this.tableStyle),t?.style),this.sortFunction=t?.sort||this.sortFunction,this.filterFunction=t?.filter||this.filterFunction,this.enabledColumns=t?.enabledColumns||this.enabledColumns,this.disabledColumns=t?.disabledColumns||this.disabledColumns,this.computedColumns=t?.computedColumns||this.computedColumns,this.columns=((r=t?.columns)===null||r===void 0?void 0:r.map(i=>(0,Ln.rawColumnToInternalColumn)(i,t?.defaultColumnOptions)))||this.columns,this.rowSeparator=t?.rowSeparator||this.rowSeparator,this.charLength=t?.charLength||this.charLength,this.defaultColumnOptions=t?.defaultColumnOptions||this.defaultColumnOptions,t?.shouldDisableColors?this.colorMap={}:t?.colorMap&&(this.colorMap=Object.assign(Object.assign({},this.colorMap),t.colorMap)),t.rows!==void 0&&this.addRows(t.rows)}constructor(t){this.rows=[],this.columns=[],this.title=void 0,this.tableStyle=vr.DEFAULT_TABLE_STYLE,this.filterFunction=Ey,this.sortFunction=Cy,this.enabledColumns=[],this.disabledColumns=[],this.computedColumns=[],this.rowSeparator=vr.DEFAULT_ROW_SEPARATOR,this.colorMap=$y.DEFAULT_COLOR_MAP,this.charLength={},this.defaultColumnOptions=void 0,this.transforms={},t instanceof Array?this.initSimple(t):typeof t=="object"&&this.initDetailed(t)}createColumnFromRow(t){let r=this.columns.map(i=>i.name);Object.keys(t).forEach(i=>{r.includes(i)||this.columns.push((0,Ln.rawColumnToInternalColumn)((0,Dn.createColumFromOnlyName)(i),this.defaultColumnOptions))})}addColumn(t){let r=typeof t=="string"?(0,Dn.createColumFromOnlyName)(t):t;this.columns.push((0,Ln.rawColumnToInternalColumn)(r,this.defaultColumnOptions))}addColumns(t){t.forEach(r=>{this.addColumn(r)})}addRow(t,r){this.createColumnFromRow(t),this.rows.push((0,Dn.createRow)(r?.color||vr.DEFAULT_ROW_FONT_COLOR,t,r?.separator!==void 0?r?.separator:this.rowSeparator))}addRows(t,r){t.forEach(i=>{this.addRow(i,r)})}renderTable(){return(0,Ay.renderTable)(this)}};Fn.default=Mn});var ka=S(Gt=>{"use strict";var Ty=Gt&&Gt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gt,"__esModule",{value:!0});var Py=Ty(jn()),wa=Nt(),Bn=class{constructor(t){this.table=new Py.default(t)}addColumn(t){return this.table.addColumn(t),this}addColumns(t){return this.table.addColumns(t),this}addRow(t,r){return this.table.addRow(t,(0,wa.convertRawRowOptionsToStandard)(r)),this}addRows(t,r){return this.table.addRows(t,(0,wa.convertRawRowOptionsToStandard)(r)),this}printTable(){let t=this.table.renderTable();console.log(t)}render(){return this.table.renderTable()}};Gt.default=Bn});var zt=S(ke=>{"use strict";var Oy=ke&&ke.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ke,"__esModule",{value:!0});ke.renderTable=ke.printTable=ke.Table=void 0;var Iy=Oy(ka());ke.Table=Iy.default;var qa=Rn();Object.defineProperty(ke,"printTable",{enumerable:!0,get:function(){return qa.printSimpleTable}});Object.defineProperty(ke,"renderTable",{enumerable:!0,get:function(){return qa.renderSimpleTable}})});var ic=S((o$,rc)=>{"use strict";rc.exports=tc;tc.sync=Mf;var Za=se("fs");function Lf(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i<r.length;i++){var n=r[i].toLowerCase();if(n&&e.substr(-n.length).toLowerCase()===n)return!0}return!1}function ec(e,t,r){return!e.isSymbolicLink()&&!e.isFile()?!1:Lf(t,r)}function tc(e,t,r){Za.stat(e,function(i,n){r(i,i?!1:ec(n,e,t))})}function Mf(e,t){return ec(Za.statSync(e),e,t)}});var cc=S((a$,ac)=>{"use strict";ac.exports=sc;sc.sync=Ff;var nc=se("fs");function sc(e,t,r){nc.stat(e,function(i,n){r(i,i?!1:oc(n,t))})}function Ff(e,t){return oc(nc.statSync(e),t)}function oc(e,t){return e.isFile()&&Bf(e,t)}function Bf(e,t){var r=e.mode,i=e.uid,n=e.gid,s=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),d=parseInt("001",8),p=a|c,u=r&d||r&c&&n===o||r&a&&i===s||r&p&&s===0;return u}});var dc=S((p$,pc)=>{"use strict";var c$=se("fs"),Br;process.platform==="win32"||global.TESTING_WINDOWS?Br=ic():Br=cc();pc.exports=Zn;Zn.sync=Uf;function Zn(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Zn(e,t||{},function(s,o){s?n(s):i(o)})})}Br(e,t||{},function(i,n){i&&(i.code==="EACCES"||t&&t.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Uf(e,t){try{return Br.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var gc=S((d$,fc)=>{"use strict";var kt=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",uc=se("path"),Nf=kt?";":":",lc=dc(),mc=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),hc=(e,t)=>{let r=t.colon||Nf,i=e.match(/\//)||kt&&e.match(/\\/)?[""]:[...kt?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],n=kt?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=kt?n.split(r):[""];return kt&&e.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},yc=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:i,pathExt:n,pathExtExe:s}=hc(e,t),o=[],a=d=>new Promise((p,u)=>{if(d===i.length)return t.all&&o.length?p(o):u(mc(e));let l=i[d],m=/^".*"$/.test(l)?l.slice(1,-1):l,h=uc.join(m,e),f=!m&&/^\.[\\\/]/.test(e)?e.slice(0,2)+h:h;p(c(f,d,0))}),c=(d,p,u)=>new Promise((l,m)=>{if(u===n.length)return l(a(p+1));let h=n[u];lc(d+h,{pathExt:s},(f,x)=>{if(!f&&x)if(t.all)o.push(d+h);else return l(d+h);return l(c(d,p,u+1))})});return r?a(0).then(d=>r(null,d),r):a(0)},Gf=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=hc(e,t),s=[];for(let o=0;o<r.length;o++){let a=r[o],c=/^".*"$/.test(a)?a.slice(1,-1):a,d=uc.join(c,e),p=!c&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let u=0;u<i.length;u++){let l=p+i[u];try{if(lc.sync(l,{pathExt:n}))if(t.all)s.push(l);else return l}catch{}}}if(t.all&&s.length)return s;if(t.nothrow)return null;throw mc(e)};fc.exports=yc;yc.sync=Gf});var bc=S((u$,es)=>{"use strict";var _c=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};es.exports=_c;es.exports.default=_c});var qc=S((l$,kc)=>{"use strict";var xc=se("path"),zf=gc(),Vf=bc();function wc(e,t){let r=e.options.env||process.env,i=process.cwd(),n=e.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(e.options.cwd)}catch{}let o;try{o=zf.sync(e.command,{path:r[Vf({env:r})],pathExt:t?xc.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=xc.resolve(n?e.options.cwd:"",o)),o}function Wf(e){return wc(e)||wc(e,!0)}kc.exports=Wf});var vc=S((m$,rs)=>{"use strict";var ts=/([()\][%!^"`<>&|;, *?])/g;function Hf(e){return e=e.replace(ts,"^$1"),e}function Kf(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),e=e.replace(/(?=(\\+?)?)\1$/,"$1$1"),e=`"${e}"`,e=e.replace(ts,"^$1"),t&&(e=e.replace(ts,"^$1")),e}rs.exports.command=Hf;rs.exports.argument=Kf});var $c=S((h$,Sc)=>{"use strict";Sc.exports=/^#!(.*)/});var Cc=S((y$,Ac)=>{"use strict";var Yf=$c();Ac.exports=(e="")=>{let t=e.match(Yf);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var Tc=S((f$,Ec)=>{"use strict";var is=se("fs"),Jf=Cc();function Xf(e){let r=Buffer.alloc(150),i;try{i=is.openSync(e,"r"),is.readSync(i,r,0,150,0),is.closeSync(i)}catch{}return Jf(r.toString())}Ec.exports=Xf});var Rc=S((g$,Ic)=>{"use strict";var Qf=se("path"),Pc=qc(),Oc=vc(),Zf=Tc(),eg=process.platform==="win32",tg=/\.(?:com|exe)$/i,rg=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function ig(e){e.file=Pc(e);let t=e.file&&Zf(e.file);return t?(e.args.unshift(e.file),e.command=t,Pc(e)):e.file}function ng(e){if(!eg)return e;let t=ig(e),r=!tg.test(t);if(e.options.forceShell||r){let i=rg.test(t);e.command=Qf.normalize(e.command),e.command=Oc.command(e.command),e.args=e.args.map(s=>Oc.argument(s,i));let n=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${n}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function sg(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);let i={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?i:ng(i)}Ic.exports=sg});var Lc=S((_$,Dc)=>{"use strict";var ns=process.platform==="win32";function ss(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function og(e,t){if(!ns)return;let r=e.emit;e.emit=function(i,n){if(i==="exit"){let s=jc(n,t);if(s)return r.call(e,"error",s)}return r.apply(e,arguments)}}function jc(e,t){return ns&&e===1&&!t.file?ss(t.original,"spawn"):null}function ag(e,t){return ns&&e===1&&!t.file?ss(t.original,"spawnSync"):null}Dc.exports={hookChildProcess:og,verifyENOENT:jc,verifyENOENTSync:ag,notFoundError:ss}});var Bc=S((b$,qt)=>{"use strict";var Mc=se("child_process"),os=Rc(),as=Lc();function Fc(e,t,r){let i=os(e,t,r),n=Mc.spawn(i.command,i.args,i.options);return as.hookChildProcess(n,i),n}function cg(e,t,r){let i=os(e,t,r),n=Mc.spawnSync(i.command,i.args,i.options);return n.error=n.error||as.verifyENOENTSync(n.status,i),n}qt.exports=Fc;qt.exports.spawn=Fc;qt.exports.sync=cg;qt.exports._parse=os;qt.exports._enoent=as});var To=S((aD,cm)=>{"use strict";var Eo={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let r="";return e<0?r+=`\x1B[${-e}D`:e>0&&(r+=`\x1B[${e}C`),t<0?r+=`\x1B[${-t}A`:t>0&&(r+=`\x1B[${t}B`),r},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"},Rk={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},jk={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 r=0;r<e;r++)t+=this.line+(r<e-1?Eo.up():"");return e&&(t+=Eo.left),t}};cm.exports={cursor:Eo,scroll:Rk,erase:jk,beep:"\x07"}});var Zo=U(Qo(),1),{program:Uq,createCommand:Nq,createArgument:Gq,createOption:zq,CommanderError:Vq,InvalidArgumentError:Wq,InvalidOptionArgumentError:Hq,Command:ea,Argument:Kq,Option:ta,Help:Yq}=Zo.default;var Zm=U(X(),1);function C(e){if(!e)return;let t={};return e.expand?.length&&(t.expand=e.expand.join(",")),e.fields?.length&&(t.fields=e.fields.join(",")),Object.keys(t).length>0?t:void 0}function $h(e){return e===!1?!1:{maxRetries:e?.maxRetries??2,retryOnStatus:e?.retryOnStatus??[429,500,502,503,504],baseDelay:e?.baseDelay??300,maxDelay:e?.maxDelay??1e4,retryOnNetworkError:e?.retryOnNetworkError??!0}}var Ah=new Set(["page","limit","expand","sort","fields"]);function b(e){let t={};for(let[r,i]of Object.entries(e))if(i!==void 0){if(Ah.has(r)){t[r]=Array.isArray(i)?i.join(","):i;continue}if(r.startsWith("q[")){t[r]=i;continue}if(Array.isArray(i)){let n=r.endsWith("[]")?r.slice(0,-2):r;t[`q[${n}][]`]=i}else t[`q[${r}]`]=i}return t}var rt=class extends Error{code;status;details;constructor(e,t){super(e.error.message),this.name="SpreeError",this.code=e.error.code,this.status=t,this.details=e.error.details}};function na(e,t){let r=t.baseDelay*2**e,i=Math.random()*t.baseDelay;return Math.min(r+i,t.maxDelay)}function sa(e){return new Promise(t=>setTimeout(t,e))}function Ch(){return`spree-sdk-retry-${crypto.randomUUID()}`}function Eh(e,t,r,i){return e==="GET"||e==="HEAD"||i?r.retryOnStatus.includes(t):t===429}function Th(e,t,r){return t.retryOnNetworkError?e==="GET"||e==="HEAD"||r:!1}function Ph(e,t,r,i){return async function(s,o,a={}){let{token:c,spreeToken:d,idempotencyKey:p,headers:u={},body:l,params:m}=a,h=a.locale??i?.locale,f=a.currency??i?.currency,x=a.country??i?.country,_=a.channel??i?.channel,v=typeof window<"u"?window.location.origin:void 0,A=e.baseUrl||v;if(!A)throw new TypeError("sdk-core: baseUrl is required in non-browser environments (no window.location to resolve relative URLs against)");let E=new URL(`${e.baseUrl}${t}${o}`,A);m&&Object.entries(m).forEach(([N,q])=>{if(q!==void 0)if(Array.isArray(q))for(let Oe of q)E.searchParams.append(N,String(Oe));else E.searchParams.set(N,String(q))});let w={"Content-Type":"application/json",...u};r.headerValue&&(w[r.headerName]=r.headerValue),c&&(w.Authorization=`Bearer ${c}`),d&&(w["x-spree-token"]=d),h&&(w["x-spree-locale"]=h),f&&(w["x-spree-currency"]=f),x&&(w["x-spree-country"]=x),_&&(w["x-spree-channel"]=_);let O=p??(s!=="GET"&&s!=="HEAD"&&e.retryConfig?Ch():void 0);O&&(w["Idempotency-Key"]=O);let R=!!O,F=e.retryConfig?e.retryConfig.maxRetries+1:1;for(let N=0;N<F;N++)try{let q=await e.fetchFn(E.toString(),{method:s,headers:w,body:l?JSON.stringify(l):void 0,credentials:e.credentials});if(!q.ok){if(!(N>=F-1)&&e.retryConfig&&Eh(s,q.status,e.retryConfig,R)){let B=q.headers.get("Retry-After"),ne=B?Math.min(parseInt(B,10)*1e3,e.retryConfig.maxDelay):na(N,e.retryConfig);await sa(ne);continue}let Ie=await q.json();throw new rt(Ie,q.status)}return q.status===204?void 0:q.status===202?q.headers.get("content-type")?.includes("application/json")?q.json():void 0:q.json()}catch(q){if(q instanceof rt)throw q;if(!(N>=F-1)&&e.retryConfig&&Th(s,e.retryConfig,R)){let Ie=na(N,e.retryConfig);await sa(Ie);continue}throw q}throw new Error("Unexpected end of retry loop")}}var tt={"Spree::Product":"/products","Spree::Variant":"/variants","Spree::Order":"/orders","Spree::User":"/customers","Spree::Category":"/categories","Spree::OptionType":"/option_types"},Oh=class{request;constructor(e){this.request=e}parentScopedCustomFields(e){return{list:(t,r,i)=>this.request("GET",`${e}/${t}/custom_fields`,{...i,params:r?b(r):void 0}),get:(t,r,i)=>this.request("GET",`${e}/${t}/custom_fields/${r}`,i),create:(t,r,i)=>this.request("POST",`${e}/${t}/custom_fields`,{...i,body:r}),update:(t,r,i,n)=>this.request("PATCH",`${e}/${t}/custom_fields/${r}`,{...n,body:i}),delete:(t,r,i)=>this.request("DELETE",`${e}/${t}/custom_fields/${r}`,i)}}parentScopedTranslations(e){return{get:(t,r)=>this.request("GET",`${e}/${t}/translations`,r).then(i=>i.data)}}customFields(e,t){let r=tt[e];if(!r)throw new Error(`Unknown custom-field owner type: ${e}. Add it to CUSTOM_FIELD_OWNER_PATHS.`);let i=this.parentScopedCustomFields(r);return{list:(n,s)=>i.list(t,n,s),get:(n,s)=>i.get(t,n,s),create:(n,s)=>i.create(t,n,s),update:(n,s,o)=>i.update(t,n,s,o),delete:(n,s)=>i.delete(t,n,s)}}customFieldDefinitions={list:(e,t)=>this.request("GET","/custom_field_definitions",{...t,params:e?b(e):void 0}),get:(e,t)=>this.request("GET",`/custom_field_definitions/${e}`,t),create:(e,t)=>this.request("POST","/custom_field_definitions",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/custom_field_definitions/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/custom_field_definitions/${e}`,t)};auth={login:(e,t)=>this.request("POST","/auth/login",{...t,body:e}),refresh:e=>this.request("POST","/auth/refresh",e),logout:e=>this.request("POST","/auth/logout",e),lookupInvitation:(e,t,r)=>this.request("GET",`/auth/invitations/${e}/lookup`,{...r,params:{token:t}}),acceptInvitation:(e,t,r,i)=>this.request("POST",`/auth/invitations/${e}/accept`,{...i,params:{token:t},body:r})};me={get:e=>this.request("GET","/me",e),update:(e,t)=>this.request("PATCH","/me",{...t,body:e})};dashboard={analytics:(e,t)=>this.request("GET","/dashboard/analytics",{...t,params:e})};store={get:e=>this.request("GET","/store",e),update:(e,t)=>this.request("PATCH","/store",{...t,body:e})};locales={list:e=>this.request("GET","/locales",e).then(t=>t.data)};translatableResources={list:e=>this.request("GET","/translatable_resources",e).then(t=>t.data)};translations={batch:(e,t)=>this.request("POST","/translations/batch",{...t,body:{translations:e}}).then(r=>r.data)};products={list:(e,t)=>this.request("GET","/products",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/products/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/products",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/products/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/products/${e}`,t),clone:(e,t)=>this.request("POST",`/products/${e}/clone`,t),bulkStatusUpdate:(e,t)=>this.request("POST","/products/bulk_status_update",{...t,body:e}),bulkAddToCategories:(e,t)=>this.request("POST","/products/bulk_add_to_categories",{...t,body:e}),bulkRemoveFromCategories:(e,t)=>this.request("POST","/products/bulk_remove_from_categories",{...t,body:e}),bulkAddToChannels:(e,t)=>this.request("POST","/products/bulk_add_to_channels",{...t,body:e}),bulkRemoveFromChannels:(e,t)=>this.request("POST","/products/bulk_remove_from_channels",{...t,body:e}),bulkAddTags:(e,t)=>this.request("POST","/products/bulk_add_tags",{...t,body:e}),bulkRemoveTags:(e,t)=>this.request("POST","/products/bulk_remove_tags",{...t,body:e}),bulkDestroy:(e,t)=>this.request("DELETE","/products/bulk_destroy",{...t,body:e}),media:{list:(e,t,r)=>this.request("GET",`/products/${e}/media`,{...r,params:t?b(t):void 0}),create:(e,t,r)=>this.request("POST",`/products/${e}/media`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/products/${e}/media/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/products/${e}/media/${t}`,r)},variants:{list:(e,t,r)=>this.request("GET",`/products/${e}/variants`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/products/${e}/variants/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/products/${e}/variants`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/products/${e}/variants/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/products/${e}/variants/${t}`,r),media:{list:(e,t,r,i)=>this.request("GET",`/products/${e}/variants/${t}/media`,{...i,params:r?b(r):void 0}),create:(e,t,r,i)=>this.request("POST",`/products/${e}/variants/${t}/media`,{...i,body:r}),update:(e,t,r,i,n)=>this.request("PATCH",`/products/${e}/variants/${t}/media/${r}`,{...n,body:i}),delete:(e,t,r,i)=>this.request("DELETE",`/products/${e}/variants/${t}/media/${r}`,i)}},customFields:this.parentScopedCustomFields(tt["Spree::Product"]),translations:this.parentScopedTranslations("/products")};orders={list:(e,t)=>this.request("GET","/orders",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/orders/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/orders",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/orders/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/orders/${e}`,t),complete:(e,t,r)=>this.request("PATCH",`/orders/${e}/complete`,{...r,body:t}),cancel:(e,t,r)=>this.request("PATCH",`/orders/${e}/cancel`,{...r,body:t}),approve:(e,t,r)=>this.request("PATCH",`/orders/${e}/approve`,{...r,body:t}),resume:(e,t)=>this.request("PATCH",`/orders/${e}/resume`,t),resendConfirmation:(e,t)=>this.request("POST",`/orders/${e}/resend_confirmation`,t),giftCards:{apply:(e,t,r)=>this.request("POST",`/orders/${e}/gift_cards`,{...r,body:t}),remove:(e,t,r)=>this.request("DELETE",`/orders/${e}/gift_cards/${t}`,r)},storeCredits:{apply:(e,t,r)=>this.request("POST",`/orders/${e}/store_credits`,{...r,body:t}),remove:(e,t)=>this.request("DELETE",`/orders/${e}/store_credits`,t)},items:{list:(e,t,r)=>this.request("GET",`/orders/${e}/items`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/orders/${e}/items/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/orders/${e}/items`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/orders/${e}/items/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/orders/${e}/items/${t}`,r)},fulfillments:{list:(e,t,r)=>this.request("GET",`/orders/${e}/fulfillments`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/orders/${e}/fulfillments/${t}`,{...i,params:C(r)}),update:(e,t,r,i)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}`,{...i,body:r}),fulfill:(e,t,r)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/fulfill`,r),cancel:(e,t,r)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/cancel`,r),resume:(e,t,r)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/resume`,r),split:(e,t,r,i)=>this.request("PATCH",`/orders/${e}/fulfillments/${t}/split`,{...i,body:r})},payments:{list:(e,t,r)=>this.request("GET",`/orders/${e}/payments`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/orders/${e}/payments/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/orders/${e}/payments`,{...r,body:t}),capture:(e,t,r)=>this.request("PATCH",`/orders/${e}/payments/${t}/capture`,r),void:(e,t,r)=>this.request("PATCH",`/orders/${e}/payments/${t}/void`,r)},refunds:{list:(e,t,r)=>this.request("GET",`/orders/${e}/refunds`,{...r,params:t?b(t):void 0}),create:(e,t,r)=>this.request("POST",`/orders/${e}/refunds`,{...r,body:t})},adjustments:{list:(e,t,r)=>this.request("GET",`/orders/${e}/adjustments`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/orders/${e}/adjustments/${t}`,r)},customFields:this.parentScopedCustomFields(tt["Spree::Order"])};optionTypes={list:(e,t)=>this.request("GET","/option_types",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/option_types/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/option_types",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/option_types/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/option_types/${e}`,t),customFields:this.parentScopedCustomFields(tt["Spree::OptionType"]),translations:this.parentScopedTranslations("/option_types")};paymentMethods={list:(e,t)=>this.request("GET","/payment_methods",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/payment_methods/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/payment_methods",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/payment_methods/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/payment_methods/${e}`,t),types:e=>this.request("GET","/payment_methods/types",e)};priceLists={list:(e,t)=>this.request("GET","/price_lists",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/price_lists/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/price_lists",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/price_lists/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/price_lists/${e}`,t),activate:(e,t)=>this.request("PATCH",`/price_lists/${e}/activate`,t),deactivate:(e,t)=>this.request("PATCH",`/price_lists/${e}/deactivate`,t),ruleTypes:e=>this.request("GET","/price_lists/price_rule_types",e)};prices={list:(e,t)=>this.request("GET","/prices",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/prices/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/prices",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/prices/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/prices/${e}`,t),bulkUpsert:(e,t)=>this.request("POST","/prices/bulk_upsert",{...t,body:e}),bulkDestroy:(e,t)=>this.request("DELETE","/prices/bulk_destroy",{...t,body:e})};promotions={list:(e,t)=>this.request("GET","/promotions",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/promotions",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/promotions/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/promotions/${e}`,t),actions:{list:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_actions`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_actions/${t}`,r),create:(e,t,r)=>this.request("POST",`/promotions/${e}/promotion_actions`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/promotions/${e}/promotion_actions/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/promotions/${e}/promotion_actions/${t}`,r)},rules:{list:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_rules`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}/promotion_rules/${t}`,r),create:(e,t,r)=>this.request("POST",`/promotions/${e}/promotion_rules`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/promotions/${e}/promotion_rules/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/promotions/${e}/promotion_rules/${t}`,r)},couponCodes:{list:(e,t,r)=>this.request("GET",`/promotions/${e}/coupon_codes`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/promotions/${e}/coupon_codes/${t}`,r)}};promotionActions={types:e=>this.request("GET","/promotion_actions/types",e),calculators:(e,t)=>this.request("GET","/promotion_actions/calculators",{...t,params:{type:e}})};promotionRules={types:e=>this.request("GET","/promotion_rules/types",e)};tags={list:(e,t)=>this.request("GET","/tags",{...t,params:e})};customerGroups={list:(e,t)=>this.request("GET","/customer_groups",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/customer_groups/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/customer_groups",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/customer_groups/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/customer_groups/${e}`,t)};giftCards={list:(e,t)=>this.request("GET","/gift_cards",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/gift_cards/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/gift_cards",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/gift_cards/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/gift_cards/${e}`,t)};giftCardBatches={list:(e,t)=>this.request("GET","/gift_card_batches",{...t,params:e?b(e):void 0}),get:(e,t)=>this.request("GET",`/gift_card_batches/${e}`,t),create:(e,t)=>this.request("POST","/gift_card_batches",{...t,body:e})};exports={list:(e,t)=>this.request("GET","/exports",{...t,params:e?b(e):void 0}),get:(e,t)=>this.request("GET",`/exports/${e}`,t),create:(e,t)=>this.request("POST","/exports",{...t,body:e}),delete:(e,t)=>this.request("DELETE",`/exports/${e}`,t)};customers={list:(e,t)=>this.request("GET","/customers",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/customers/${e}`,{...r,params:C(t)}),creditCards:{list:(e,t,r)=>this.request("GET",`/customers/${e}/credit_cards`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/customers/${e}/credit_cards/${t}`,{...i,params:C(r)}),delete:(e,t,r)=>this.request("DELETE",`/customers/${e}/credit_cards/${t}`,r)},create:(e,t)=>this.request("POST","/customers",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/customers/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/customers/${e}`,t),bulkAddToGroups:(e,t)=>this.request("POST","/customers/bulk_add_to_groups",{...t,body:e}),bulkRemoveFromGroups:(e,t)=>this.request("POST","/customers/bulk_remove_from_groups",{...t,body:e}),bulkAddTags:(e,t)=>this.request("POST","/customers/bulk_add_tags",{...t,body:e}),bulkRemoveTags:(e,t)=>this.request("POST","/customers/bulk_remove_tags",{...t,body:e}),addresses:{list:(e,t,r)=>this.request("GET",`/customers/${e}/addresses`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/customers/${e}/addresses/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/customers/${e}/addresses`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/customers/${e}/addresses/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/customers/${e}/addresses/${t}`,r)},storeCredits:{list:(e,t,r)=>this.request("GET",`/customers/${e}/store_credits`,{...r,params:t?b(t):void 0}),get:(e,t,r,i)=>this.request("GET",`/customers/${e}/store_credits/${t}`,{...i,params:C(r)}),create:(e,t,r)=>this.request("POST",`/customers/${e}/store_credits`,{...r,body:t}),update:(e,t,r,i)=>this.request("PATCH",`/customers/${e}/store_credits/${t}`,{...i,body:r}),delete:(e,t,r)=>this.request("DELETE",`/customers/${e}/store_credits/${t}`,r)},customFields:this.parentScopedCustomFields(tt["Spree::User"])};categories={list:(e,t)=>this.request("GET","/categories",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/categories/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/categories",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/categories/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/categories/${e}`,t),reposition:(e,t,r)=>this.request("PATCH",`/categories/${e}/reposition`,{...r,body:t}),products:{list:(e,t,r)=>this.request("GET",`/categories/${e}/products`,{...r,params:t?b(t):void 0}),add:(e,t,r)=>this.request("POST",`/categories/${e}/products`,{...r,body:{product_id:t}}),remove:(e,t,r)=>this.request("DELETE",`/categories/${e}/products/${t}`,r),reposition:(e,t,r,i)=>this.request("PATCH",`/categories/${e}/products/${t}/reposition`,{...i,body:r})},customFields:this.parentScopedCustomFields(tt["Spree::Category"]),translations:this.parentScopedTranslations("/categories")};variants={list:(e,t)=>this.request("GET","/variants",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/variants/${e}`,{...r,params:C(t)}),customFields:this.parentScopedCustomFields(tt["Spree::Variant"])};taxCategories={list:(e,t)=>this.request("GET","/tax_categories",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/tax_categories/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/tax_categories",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/tax_categories/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/tax_categories/${e}`,t)};channels={list:(e,t)=>this.request("GET","/channels",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/channels/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/channels",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/channels/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/channels/${e}`,t),addProducts:(e,t,r)=>this.request("POST",`/channels/${e}/add_products`,{...r,body:t}),removeProducts:(e,t,r)=>this.request("POST",`/channels/${e}/remove_products`,{...r,body:t})};markets={list:(e,t)=>this.request("GET","/markets",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/markets/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/markets",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/markets/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/markets/${e}`,t)};storeCreditCategories={list:(e,t)=>this.request("GET","/store_credit_categories",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/store_credit_categories/${e}`,{...r,params:C(t)})};stockLocations={list:(e,t)=>this.request("GET","/stock_locations",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/stock_locations/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/stock_locations",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/stock_locations/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/stock_locations/${e}`,t)};stockItems={list:(e,t)=>this.request("GET","/stock_items",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/stock_items/${e}`,{...r,params:C(t)}),update:(e,t,r)=>this.request("PATCH",`/stock_items/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/stock_items/${e}`,t)};stockTransfers={list:(e,t)=>this.request("GET","/stock_transfers",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/stock_transfers/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/stock_transfers",{...t,body:e}),delete:(e,t)=>this.request("DELETE",`/stock_transfers/${e}`,t)};countries={list:(e,t)=>this.request("GET","/countries",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/countries/${e}`,{...r,params:C(t)})};directUploads={create:(e,t)=>this.request("POST","/direct_uploads",{...t,body:e})};adminUsers={list:(e,t)=>this.request("GET","/admin_users",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/admin_users/${e}`,{...r,params:C(t)}),update:(e,t,r)=>this.request("PATCH",`/admin_users/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/admin_users/${e}`,t)};invitations={list:(e,t)=>this.request("GET","/invitations",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/invitations/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/invitations",{...t,body:e}),delete:(e,t)=>this.request("DELETE",`/invitations/${e}`,t),resend:(e,t)=>this.request("PATCH",`/invitations/${e}/resend`,t)};apiKeys={list:(e,t)=>this.request("GET","/api_keys",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/api_keys/${e}`,{...r,params:C(t)}),current:e=>this.request("GET","/api_keys/current",e??{}),create:(e,t)=>this.request("POST","/api_keys",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/api_keys/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/api_keys/${e}`,t),revoke:(e,t)=>this.request("PATCH",`/api_keys/${e}/revoke`,t)};allowedOrigins={list:(e,t)=>this.request("GET","/allowed_origins",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/allowed_origins/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/allowed_origins",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/allowed_origins/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/allowed_origins/${e}`,t)};webhookEndpoints={list:(e,t)=>this.request("GET","/webhook_endpoints",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/webhook_endpoints/${e}`,{...r,params:C(t)}),create:(e,t)=>this.request("POST","/webhook_endpoints",{...t,body:e}),update:(e,t,r)=>this.request("PATCH",`/webhook_endpoints/${e}`,{...r,body:t}),delete:(e,t)=>this.request("DELETE",`/webhook_endpoints/${e}`,t),sendTest:(e,t)=>this.request("POST",`/webhook_endpoints/${e}/send_test`,t),enable:(e,t)=>this.request("PATCH",`/webhook_endpoints/${e}/enable`,t),disable:(e,t,r)=>this.request("PATCH",`/webhook_endpoints/${e}/disable`,{...r,body:t}),deliveries:{list:(e,t,r)=>this.request("GET",`/webhook_endpoints/${e}/deliveries`,{...r,params:t?b(t):void 0}),get:(e,t,r)=>this.request("GET",`/webhook_endpoints/${e}/deliveries/${t}`,r),redeliver:(e,t,r)=>this.request("POST",`/webhook_endpoints/${e}/deliveries/${t}/redeliver`,r)}};roles={list:(e,t)=>this.request("GET","/roles",{...t,params:e?b(e):void 0}),get:(e,t,r)=>this.request("GET",`/roles/${e}`,{...r,params:C(t)})}};function Mt(e){let t=e.baseUrl.replace(/\/$/,""),r=e.fetch||fetch.bind(globalThis),i=$h(e.retry),n={baseUrl:t,fetchFn:r,retryConfig:i,credentials:e.credentials??"include"},s=e.jwtToken,o=e.storeId,a=null,c="/api/v3/admin",d=async(l,m,h={})=>{let f={};o&&(f["X-Spree-Store-Id"]=o);let x={...h,headers:{...f,...h.headers}},_=()=>{let v=e.secretKey?{headerName:"X-Spree-Api-Key",headerValue:e.secretKey}:{headerName:"Authorization",headerValue:s?`Bearer ${s}`:""};return Ph(n,c,v)(l,m,x)};try{return await _()}catch(v){if(v instanceof rt&&v.status===401&&a&&!m.includes("/auth/")&&await a())return _();throw v}},p=new Oh(d),u=Object.create(p);return u.setStore=l=>{o=l},u.setToken=l=>{s=l},u.onUnauthorized=l=>{a=l},u}var zl=U(zt(),1),xe=U(X(),1);var va=U(X(),1);import Ry from"fs";var Un=Symbol("no-body");async function Sa(e){if(e===void 0)return Un;let t;if(e==="-")t=await jy();else if(e.startsWith("@")){let r=e.slice(1);try{t=Ry.readFileSync(r,"utf-8")}catch(i){throw i?.code==="ENOENT"?new Error(`Request body file not found: ${r}`):new Error(`Could not read request body file ${r}: ${i.message}`)}}else t=e;try{return JSON.parse(t)}catch{let r=e==="-"?" (from stdin)":e.startsWith("@")?` (${e.slice(1)})`:"";throw new Error(`Request body is not valid JSON${r}`)}}async function jy(){process.stdin.isTTY&&process.stderr.write(`${va.default.dim("Reading request body from stdin \u2014 paste JSON and press Ctrl-D...")}
|
|
32
|
+
`);let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}var So=U(zt(),1),ae=U(X(),1);var cr=U(X(),1);import Ne from"fs";import pk from"os";import Rt from"path";var Sr="spree@example.com",$r="spree123";import Vt from"fs";import Nn from"path";function g(e=process.cwd()){let t=Nn.join(e,"docker-compose.yml");if(!Vt.existsSync(t))throw new Error(`Not a Spree project directory. No docker-compose.yml found.
|
|
33
|
+
Run this command from a directory created with create-spree-app.`);let r=Dy(e);return{mode:"docker",projectDir:e,port:r}}function _t(e){let t=Nn.join(e,".env");if(!Vt.existsSync(t))return!1;try{let r=Vt.readFileSync(t,"utf-8");return/^\s*SPREE_PATH\s*=/m.test(r)}catch{return!1}}function Dy(e){let t=Nn.join(e,".env");if(!Vt.existsSync(t))return 3e3;let i=Vt.readFileSync(t,"utf-8").match(/^SPREE_PORT=(\d+)/m);return i?Number(i[1]):3e3}function V(e){if(typeof e!="object"||e===null)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}import{fileURLToPath as Ly}from"url";var bt=(e,t)=>{let r=zn(My(e));if(typeof r!="string")throw new TypeError(`${t} must be a string or a file URL: ${r}.`);return r},My=e=>Gn(e)?e.toString():e,Gn=e=>typeof e!="string"&&e&&Object.getPrototypeOf(e)===String.prototype,zn=e=>e instanceof URL?Ly(e):e;var Cr=(e,t=[],r={})=>{let i=bt(e,"First argument"),[n,s]=V(t)?[[],t]:[t,r];if(!Array.isArray(n))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${n}`);if(n.some(c=>typeof c=="object"&&c!==null))throw new TypeError(`Second argument must be an array of strings: ${n}`);let o=n.map(String),a=o.find(c=>c.includes("\0"));if(a!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${a}`);if(!V(s))throw new TypeError(`Last argument must be an options object: ${s}`);return[i,o,s]};import{ChildProcess as Vy}from"child_process";import{StringDecoder as Fy}from"string_decoder";var{toString:$a}=Object.prototype,Aa=e=>$a.call(e)==="[object ArrayBuffer]",K=e=>$a.call(e)==="[object Uint8Array]",Me=e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength),By=new TextEncoder,Ca=e=>By.encode(e),Uy=new TextDecoder,Er=e=>Uy.decode(e),Ea=(e,t)=>Ny(e,t).join(""),Ny=(e,t)=>{if(t==="utf8"&&e.every(s=>typeof s=="string"))return e;let r=new Fy(t),i=e.map(s=>typeof s=="string"?Ca(s):s).map(s=>r.write(s)),n=r.end();return n===""?i:[...i,n]},Wt=e=>e.length===1&&K(e[0])?e[0]:Vn(Gy(e)),Gy=e=>e.map(t=>typeof t=="string"?Ca(t):t),Vn=e=>{let t=new Uint8Array(zy(e)),r=0;for(let i of e)t.set(i,r),r+=i.length;return t},zy=e=>{let t=0;for(let r of e)t+=r.length;return t};var Ia=e=>Array.isArray(e)&&Array.isArray(e.raw),Ra=(e,t)=>{let r=[];for(let[s,o]of e.entries())r=Wy({templates:e,expressions:t,tokens:r,index:s,template:o});if(r.length===0)throw new TypeError("Template script must not be empty");let[i,...n]=r;return[i,n,{}]},Wy=({templates:e,expressions:t,tokens:r,index:i,template:n})=>{if(n===void 0)throw new TypeError(`Invalid backslash sequence: ${e.raw[i]}`);let{nextTokens:s,leadingWhitespaces:o,trailingWhitespaces:a}=Hy(n,e.raw[i]),c=Pa(r,s,o);if(i===t.length)return c;let d=t[i],p=Array.isArray(d)?d.map(u=>Oa(u)):[Oa(d)];return Pa(c,p,a)},Hy=(e,t)=>{if(t.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let r=[],i=0,n=Ta.has(t[0]);for(let o=0,a=0;o<e.length;o+=1,a+=1){let c=t[a];if(Ta.has(c))i!==o&&r.push(e.slice(i,o)),i=o+1;else if(c==="\\"){let d=t[a+1];d===`
|
|
34
|
+
`?(o-=1,a+=1):d==="u"&&t[a+2]==="{"?a=t.indexOf("}",a+3):a+=Ky[d]??1}}let s=i===e.length;return s||r.push(e.slice(i)),{nextTokens:r,leadingWhitespaces:n,trailingWhitespaces:s}},Ta=new Set([" "," ","\r",`
|
|
35
|
+
`]),Ky={x:3,u:5},Pa=(e,t,r)=>r||e.length===0||t.length===0?[...e,...t]:[...e.slice(0,-1),`${e.at(-1)}${t[0]}`,...t.slice(1)],Oa=e=>{let t=typeof e;if(t==="string")return e;if(t==="number")return String(e);if(V(e)&&("stdout"in e||"isMaxBuffer"in e))return Yy(e);throw e instanceof Vy||Object.prototype.toString.call(e)==="[object Promise]"?new TypeError("Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}."):new TypeError(`Unexpected "${t}" in template expression`)},Yy=({stdout:e})=>{if(typeof e=="string")return e;if(K(e))return Er(e);throw e===void 0?new TypeError(`Missing result.stdout in template expression. This is probably due to the previous subprocess' "stdout" option.`):new TypeError(`Unexpected "${typeof e}" stdout in template expression`)};import{spawnSync as ew}from"child_process";import{debuglog as Jy}from"util";import Wn from"process";var fe=e=>Tr.includes(e),Tr=[Wn.stdin,Wn.stdout,Wn.stderr],ue=["stdin","stdout","stderr"],Pr=e=>ue[e]??`stdio[${e}]`;var Da=e=>{let t={...e};for(let r of Yn)t[r]=Hn(e,r);return t},Hn=(e,t)=>{let r=Array.from({length:Xy(e)+1}),i=Qy(e[t],r,t);return nf(i,t)},Xy=({stdio:e})=>Array.isArray(e)?Math.max(e.length,ue.length):ue.length,Qy=(e,t,r)=>V(e)?Zy(e,t,r):t.fill(e),Zy=(e,t,r)=>{for(let i of Object.keys(e).sort(ef))for(let n of tf(i,r,t))t[n]=e[i];return t},ef=(e,t)=>ja(e)<ja(t)?1:-1,ja=e=>e==="stdout"||e==="stderr"?0:e==="all"?2:1,tf=(e,t,r)=>{if(e==="ipc")return[r.length-1];let i=Kn(e);if(i===void 0||i===0)throw new TypeError(`"${t}.${e}" is invalid.
|
|
36
36
|
It must be "${t}.stdout", "${t}.stderr", "${t}.all", "${t}.ipc", or "${t}.fd3", "${t}.fd4" (and so on).`);if(i>=r.length)throw new TypeError(`"${t}.${e}" is invalid: that file descriptor does not exist.
|
|
37
|
-
Please set the "stdio" option to ensure that file descriptor exists.`);return i==="all"?[1,2]:[i]},
|
|
38
|
-
`).map(t=>
|
|
39
|
-
`),
|
|
37
|
+
Please set the "stdio" option to ensure that file descriptor exists.`);return i==="all"?[1,2]:[i]},Kn=e=>{if(e==="all")return e;if(ue.includes(e))return ue.indexOf(e);let t=rf.exec(e);if(t!==null)return Number(t[1])},rf=/^fd(\d+)$/,nf=(e,t)=>e.map(r=>r===void 0?of[t]:r),sf=Jy("execa").enabled?"full":"none",of={lines:!1,buffer:!0,maxBuffer:1e3*1e3*100,verbose:sf,stripFinalNewline:!0},Yn=["lines","buffer","maxBuffer","verbose","stripFinalNewline"],Fe=(e,t)=>t==="ipc"?e.at(-1):e[t];var xt=({verbose:e},t)=>Jn(e,t)!=="none",wt=({verbose:e},t)=>!["none","short"].includes(Jn(e,t)),La=({verbose:e},t)=>{let r=Jn(e,t);return Or(r)?r:void 0},Jn=(e,t)=>t===void 0?af(e):Fe(e,t),af=e=>e.find(t=>Or(t))??Ir.findLast(t=>e.includes(t)),Or=e=>typeof e=="function",Ir=["none","short","full"];import{inspect as Ef}from"util";import{platform as cf}from"process";import{stripVTControlCharacters as pf}from"util";var Ma=(e,t)=>{let r=[e,...t],i=r.join(" "),n=r.map(s=>yf(Fa(s))).join(" ");return{command:i,escapedCommand:n}},Ht=e=>pf(e).split(`
|
|
38
|
+
`).map(t=>Fa(t)).join(`
|
|
39
|
+
`),Fa=e=>e.replaceAll(lf,t=>df(t)),df=e=>{let t=mf[e];if(t!==void 0)return t;let r=e.codePointAt(0),i=r.toString(16);return r<=hf?`\\u${i.padStart(4,"0")}`:`\\U${i}`},uf=()=>{try{return new RegExp("\\p{Separator}|\\p{Other}","gu")}catch{return/[\s\u0000-\u001F\u007F-\u009F\u00AD]/g}},lf=uf(),mf={" ":" ","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},hf=65535,yf=e=>ff.test(e)?e:cf==="win32"?`"${e.replaceAll('"','""')}"`:`'${e.replaceAll("'","'\\''")}'`,ff=/^[\w./-]+$/;import Ba from"process";function Xn(){let{env:e}=Ba,{TERM:t,TERM_PROGRAM:r}=e;return Ba.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||r==="Terminus-Sublime"||r==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Ua={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},Na={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},gf={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},_f={...Ua,...Na},bf={...Ua,...gf},xf=Xn(),wf=xf?_f:bf,Rr=wf,Jv=Object.entries(Na);import kf from"tty";var qf=kf?.WriteStream?.prototype?.hasColors?.()??!1,k=(e,t)=>{if(!qf)return n=>n;let r=`\x1B[${e}m`,i=`\x1B[${t}m`;return n=>{let s=n+"",o=s.indexOf(i);if(o===-1)return r+s+i;let a=r,c=0,p=(t===22?i:"")+r;for(;o!==-1;)a+=s.slice(c,o)+p,c=o+i.length,o=s.indexOf(i,c);return a+=s.slice(c)+i,a}},Zv=k(0,0),Ga=k(1,22),eS=k(2,22),tS=k(3,23),rS=k(4,24),iS=k(53,55),nS=k(7,27),sS=k(8,28),oS=k(9,29),aS=k(30,39),cS=k(31,39),pS=k(32,39),dS=k(33,39),uS=k(34,39),lS=k(35,39),mS=k(36,39),hS=k(37,39),jr=k(90,39),yS=k(40,49),fS=k(41,49),gS=k(42,49),_S=k(43,49),bS=k(44,49),xS=k(45,49),wS=k(46,49),kS=k(47,49),qS=k(100,49),za=k(91,39),vS=k(92,39),Va=k(93,39),SS=k(94,39),$S=k(95,39),AS=k(96,39),CS=k(97,39),ES=k(101,49),TS=k(102,49),PS=k(103,49),OS=k(104,49),IS=k(105,49),RS=k(106,49),jS=k(107,49);var Ka=({type:e,message:t,timestamp:r,piped:i,commandId:n,result:{failed:s=!1}={},options:{reject:o=!0}})=>{let a=vf(r),c=Sf[e]({failed:s,reject:o,piped:i}),d=$f[e]({reject:o});return`${jr(`[${a}]`)} ${jr(`[${n}]`)} ${d(c)} ${d(t)}`},vf=e=>`${Dr(e.getHours(),2)}:${Dr(e.getMinutes(),2)}:${Dr(e.getSeconds(),2)}.${Dr(e.getMilliseconds(),3)}`,Dr=(e,t)=>String(e).padStart(t,"0"),Wa=({failed:e,reject:t})=>e?t?Rr.cross:Rr.warning:Rr.tick,Sf={command:({piped:e})=>e?"|":"$",output:()=>" ",ipc:()=>"*",error:Wa,duration:Wa},Ha=e=>e,$f={command:()=>Ga,output:()=>Ha,ipc:()=>Ha,error:({reject:e})=>e?za:Va,duration:()=>jr};var Ya=(e,t,r)=>{let i=La(t,r);return e.map(({verboseLine:n,verboseObject:s})=>Af(n,s,i)).filter(n=>n!==void 0).map(n=>Cf(n)).join("")},Af=(e,t,r)=>{if(r===void 0)return e;let i=r(e,t);if(typeof i=="string")return i},Cf=e=>e.endsWith(`
|
|
40
40
|
`)?e:`${e}
|
|
41
|
-
`;var
|
|
42
|
-
`).map(r=>
|
|
43
|
-
${
|
|
44
|
-
${
|
|
45
|
-
${
|
|
46
|
-
Available signal numbers: ${
|
|
41
|
+
`;var qe=({type:e,verboseMessage:t,fdNumber:r,verboseInfo:i,result:n})=>{let s=Tf({type:e,result:n,verboseInfo:i}),o=Pf(t,s),a=Ya(o,i,r);a!==""&&console.warn(a.slice(0,-1))},Tf=({type:e,result:t,verboseInfo:{escapedCommand:r,commandId:i,rawOptions:{piped:n=!1,...s}}})=>({type:e,escapedCommand:r,commandId:`${i}`,timestamp:new Date,piped:n,result:t,options:s}),Pf=(e,t)=>e.split(`
|
|
42
|
+
`).map(r=>Of({...t,message:r})),Of=e=>({verboseLine:Ka(e),verboseObject:e}),Lr=e=>{let t=typeof e=="string"?e:Ef(e);return Ht(t).replaceAll(" "," ".repeat(If))},If=2;var Ja=(e,t)=>{xt(t)&&qe({type:"command",verboseMessage:e,verboseInfo:t})};var Xa=(e,t,r)=>{Df(e);let i=Rf(e);return{verbose:e,escapedCommand:t,commandId:i,rawOptions:r}},Rf=e=>xt({verbose:e})?jf++:void 0,jf=0n,Df=e=>{for(let t of e){if(t===!1)throw new TypeError(`The "verbose: false" option was renamed to "verbose: 'none'".`);if(t===!0)throw new TypeError(`The "verbose: true" option was renamed to "verbose: 'short'".`);if(!Ir.includes(t)&&!Or(t)){let r=Ir.map(i=>`'${i}'`).join(", ");throw new TypeError(`The "verbose" option must not be ${t}. Allowed values are: ${r} or a function.`)}}};import{hrtime as Qa}from"process";var Mr=()=>Qa.bigint(),Qn=e=>Number(Qa.bigint()-e)/1e6;var Fr=(e,t,r)=>{let i=Mr(),{command:n,escapedCommand:s}=Ma(e,t),o=Hn(r,"verbose"),a=Xa(o,s,{...r});return Ja(s,a),{command:n,escapedCommand:s,startTime:i,verboseInfo:a}};var Xp=U(Bc(),1);import b_ from"path";import Jp from"process";import Gr from"process";import nt from"path";function Ur(e={}){let{env:t=process.env,platform:r=process.platform}=e;return r!=="win32"?"PATH":Object.keys(t).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"}import{promisify as pg}from"util";import{execFile as dg,execFileSync as q$}from"child_process";import Uc from"path";import{fileURLToPath as ug}from"url";var $$=pg(dg);function Nr(e){return e instanceof URL?ug(e):e}function Nc(e){return{*[Symbol.iterator](){let t=Uc.resolve(Nr(e)),r;for(;r!==t;)yield t,r=t,t=Uc.resolve(t,"..")}}}var A$=10*1024*1024;var lg=({cwd:e=Gr.cwd(),path:t=Gr.env[Ur()],preferLocal:r=!0,execPath:i=Gr.execPath,addExecPath:n=!0}={})=>{let s=nt.resolve(Nr(e)),o=[],a=t.split(nt.delimiter);return r&&mg(o,a,s),n&&hg(o,a,i,s),t===""||t===nt.delimiter?`${o.join(nt.delimiter)}${t}`:[...o,t].join(nt.delimiter)},mg=(e,t,r)=>{for(let i of Nc(r)){let n=nt.join(i,"node_modules/.bin");t.includes(n)||e.push(n)}},hg=(e,t,r,i)=>{let n=nt.resolve(i,Nr(r),"..");t.includes(n)||e.push(n)},Gc=({env:e=Gr.env,...t}={})=>{e={...e};let r=Ur({env:e});return t.path=e[r],e[r]=lg(t),e};import{setTimeout as Eg}from"timers/promises";var zc=(e,t,r)=>{let i=r?Yt:Kt,n=e instanceof ge?{}:{cause:e};return new i(t,n)},ge=class extends Error{},Vc=(e,t)=>{Object.defineProperty(e.prototype,"name",{value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,Hc,{value:!0,writable:!1,enumerable:!1,configurable:!1})},Wc=e=>zr(e)&&Hc in e,Hc=Symbol("isExecaError"),zr=e=>Object.prototype.toString.call(e)==="[object Error]",Kt=class extends Error{};Vc(Kt,Kt.name);var Yt=class extends Error{};Vc(Yt,Yt.name);import{constants as Jt}from"os";import{constants as _g}from"os";var Kc=()=>{let e=Jc-Yc+1;return Array.from({length:e},yg)},yg=(e,t)=>({name:`SIGRT${t+1}`,number:Yc+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),Yc=34,Jc=64;import{constants as fg}from"os";var Xc=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];var cs=()=>{let e=Kc();return[...Xc,...e].map(gg)},gg=({name:e,number:t,description:r,action:i,forced:n=!1,standard:s})=>{let{signals:{[e]:o}}=fg,a=o!==void 0;return{name:e,number:a?o:t,description:r,supported:a,action:i,forced:n,standard:s}};var bg=()=>{let e=cs();return Object.fromEntries(e.map(xg))},xg=({name:e,number:t,description:r,supported:i,action:n,forced:s,standard:o})=>[e,{name:e,number:t,description:r,supported:i,action:n,forced:s,standard:o}],Qc=bg(),wg=()=>{let e=cs(),t=65,r=Array.from({length:t},(i,n)=>kg(n,e));return Object.assign({},...r)},kg=(e,t)=>{let r=qg(e,t);if(r===void 0)return{};let{name:i,description:n,supported:s,action:o,forced:a,standard:c}=r;return{[e]:{name:i,number:e,description:n,supported:s,action:o,forced:a,standard:c}}},qg=(e,t)=>{let r=t.find(({name:i})=>_g.signals[i]===e);return r!==void 0?r:t.find(i=>i.number===e)},z$=wg();var ep=e=>{let t="option `killSignal`";if(e===0)throw new TypeError(`Invalid ${t}: 0 cannot be used.`);return rp(e,t)},tp=e=>e===0?e:rp(e,"`subprocess.kill()`'s argument"),rp=(e,t)=>{if(Number.isInteger(e))return vg(e,t);if(typeof e=="string")return $g(e,t);throw new TypeError(`Invalid ${t} ${String(e)}: it must be a string or an integer.
|
|
43
|
+
${ps()}`)},vg=(e,t)=>{if(Zc.has(e))return Zc.get(e);throw new TypeError(`Invalid ${t} ${e}: this signal integer does not exist.
|
|
44
|
+
${ps()}`)},Sg=()=>new Map(Object.entries(Jt.signals).reverse().map(([e,t])=>[t,e])),Zc=Sg(),$g=(e,t)=>{if(e in Jt.signals)return e;throw e.toUpperCase()in Jt.signals?new TypeError(`Invalid ${t} '${e}': please rename it to '${e.toUpperCase()}'.`):new TypeError(`Invalid ${t} '${e}': this signal name does not exist.
|
|
45
|
+
${ps()}`)},ps=()=>`Available signal names: ${Ag()}.
|
|
46
|
+
Available signal numbers: ${Cg()}.`,Ag=()=>Object.keys(Jt.signals).sort().map(e=>`'${e}'`).join(", "),Cg=()=>[...new Set(Object.values(Jt.signals).sort((e,t)=>e-t))].join(", "),Vr=e=>Qc[e].description;var ip=e=>{if(e===!1)return e;if(e===!0)return Tg;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterDelay\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},Tg=1e3*5,np=({kill:e,options:{forceKillAfterDelay:t,killSignal:r},onInternalError:i,context:n,controller:s},o,a)=>{let{signal:c,error:d}=Pg(o,a,r);Og(d,i);let p=e(c);return Ig({kill:e,signal:c,forceKillAfterDelay:t,killSignal:r,killResult:p,context:n,controller:s}),p},Pg=(e,t,r)=>{let[i=r,n]=zr(e)?[void 0,e]:[e,t];if(typeof i!="string"&&!Number.isInteger(i))throw new TypeError(`The first argument must be an error instance or a signal name string/integer: ${String(i)}`);if(n!==void 0&&!zr(n))throw new TypeError(`The second argument is optional. If specified, it must be an error instance: ${n}`);return{signal:tp(i),error:n}},Og=(e,t)=>{e!==void 0&&t.reject(e)},Ig=async({kill:e,signal:t,forceKillAfterDelay:r,killSignal:i,killResult:n,context:s,controller:o})=>{t===i&&n&&ds({kill:e,forceKillAfterDelay:r,context:s,controllerSignal:o.signal})},ds=async({kill:e,forceKillAfterDelay:t,context:r,controllerSignal:i})=>{if(t!==!1)try{await Eg(t,void 0,{signal:i}),e("SIGKILL")&&(r.isForcefullyTerminated??=!0)}catch{}};import{once as Rg}from"events";var Wr=async(e,t)=>{e.aborted||await Rg(e,"abort",{signal:t})};var sp=({cancelSignal:e})=>{if(e!==void 0&&Object.prototype.toString.call(e)!=="[object AbortSignal]")throw new Error(`The \`cancelSignal\` option must be an AbortSignal: ${String(e)}`)},op=({subprocess:e,cancelSignal:t,gracefulCancel:r,context:i,controller:n})=>t===void 0||r?[]:[jg(e,t,i,n)],jg=async(e,t,r,{signal:i})=>{throw await Wr(t,i),r.terminationReason??="cancel",e.kill(),t.reason};import{scheduler as r_}from"timers/promises";import{promisify as Zg}from"util";var vt=({methodName:e,isSubprocess:t,ipc:r,isConnected:i})=>{Dg(e,t,r),us(e,t,i)},Dg=(e,t,r)=>{if(!r)throw new Error(`${_e(e,t)} can only be used if the \`ipc\` option is \`true\`.`)},us=(e,t,r)=>{if(!r)throw new Error(`${_e(e,t)} cannot be used: the ${We(t)} has already exited or disconnected.`)},ap=e=>{throw new Error(`${_e("getOneMessage",e)} could not complete: the ${We(e)} exited or disconnected.`)},cp=e=>{throw new Error(`${_e("sendMessage",e)} failed: the ${We(e)} is sending a message too, instead of listening to incoming messages.
|
|
47
47
|
This can be fixed by both sending a message and listening to incoming messages at the same time:
|
|
48
48
|
|
|
49
49
|
const [receivedMessage] = await Promise.all([
|
|
50
50
|
${_e("getOneMessage",e)},
|
|
51
51
|
${_e("sendMessage",e,"message, {strict: true}")},
|
|
52
|
-
]);`)},
|
|
52
|
+
]);`)},Hr=(e,t)=>new Error(`${_e("sendMessage",t)} failed when sending an acknowledgment response to the ${We(t)}.`,{cause:e}),pp=e=>{throw new Error(`${_e("sendMessage",e)} failed: the ${We(e)} is not listening to incoming messages.`)},dp=e=>{throw new Error(`${_e("sendMessage",e)} failed: the ${We(e)} exited without listening to incoming messages.`)},up=()=>new Error(`\`cancelSignal\` aborted: the ${We(!0)} disconnected.`),lp=()=>{throw new Error("`getCancelSignal()` cannot be used without setting the `cancelSignal` subprocess option.")},mp=({error:e,methodName:t,isSubprocess:r})=>{if(e.code==="EPIPE")throw new Error(`${_e(t,r)} cannot be used: the ${We(r)} is disconnecting.`,{cause:e})},hp=({error:e,methodName:t,isSubprocess:r,message:i})=>{if(Lg(e))throw new Error(`${_e(t,r)}'s argument type is invalid: the message cannot be serialized: ${String(i)}.`,{cause:e})},Lg=({code:e,message:t})=>Mg.has(e)||Fg.some(r=>t.includes(r)),Mg=new Set(["ERR_MISSING_ARGS","ERR_INVALID_ARG_TYPE"]),Fg=["could not be cloned","circular structure","call stack size exceeded"],_e=(e,t,r="")=>e==="cancelSignal"?"`cancelSignal`'s `controller.abort()`":`${Bg(t)}${e}(${r})`,Bg=e=>e?"":"subprocess.",We=e=>e?"parent process":"subprocess",St=e=>{e.connected&&e.disconnect()};var ve=()=>{let e={},t=new Promise((r,i)=>{Object.assign(e,{resolve:r,reject:i})});return Object.assign(t,e)};var Yr=(e,t="stdin")=>{let{options:i,fileDescriptors:n}=Se.get(e),s=yp(n,t,!0),o=e.stdio[s];if(o===null)throw new TypeError(fp(s,t,i,!0));return o},$t=(e,t="stdout")=>{let{options:i,fileDescriptors:n}=Se.get(e),s=yp(n,t,!1),o=s==="all"?e.all:e.stdio[s];if(o==null)throw new TypeError(fp(s,t,i,!1));return o},Se=new WeakMap,yp=(e,t,r)=>{let i=Ug(t,r);return Ng(i,t,r,e),i},Ug=(e,t)=>{let r=Kn(e);if(r!==void 0)return r;let{validOptions:i,defaultValue:n}=t?{validOptions:'"stdin"',defaultValue:"stdin"}:{validOptions:'"stdout", "stderr", "all"',defaultValue:"stdout"};throw new TypeError(`"${Xt(t)}" must not be "${e}".
|
|
53
53
|
It must be ${i} or "fd3", "fd4" (and so on).
|
|
54
|
-
It is optional and defaults to "${n}".`)},
|
|
55
|
-
Please set the "stdio" option to ensure that file descriptor exists.`);if(n.direction==="input"&&!r)throw new TypeError(`"${
|
|
56
|
-
Please set this option with "pipe" instead.`},
|
|
57
|
-
Please rename it to ${
|
|
58
|
-
Please rename it to one of: ${r}.`)},
|
|
59
|
-
${e.message}`,e}},
|
|
54
|
+
It is optional and defaults to "${n}".`)},Ng=(e,t,r,i)=>{let n=i[gp(e)];if(n===void 0)throw new TypeError(`"${Xt(r)}" must not be ${t}. That file descriptor does not exist.
|
|
55
|
+
Please set the "stdio" option to ensure that file descriptor exists.`);if(n.direction==="input"&&!r)throw new TypeError(`"${Xt(r)}" must not be ${t}. It must be a readable stream, not writable.`);if(n.direction!=="input"&&r)throw new TypeError(`"${Xt(r)}" must not be ${t}. It must be a writable stream, not readable.`)},fp=(e,t,r,i)=>{if(e==="all"&&!r.all)return`The "all" option must be true to use "from: 'all'".`;let{optionName:n,optionValue:s}=Gg(e,r);return`The "${n}: ${Kr(s)}" option is incompatible with using "${Xt(i)}: ${Kr(t)}".
|
|
56
|
+
Please set this option with "pipe" instead.`},Gg=(e,{stdin:t,stdout:r,stderr:i,stdio:n})=>{let s=gp(e);return s===0&&t!==void 0?{optionName:"stdin",optionValue:t}:s===1&&r!==void 0?{optionName:"stdout",optionValue:r}:s===2&&i!==void 0?{optionName:"stderr",optionValue:i}:{optionName:`stdio[${s}]`,optionValue:n[s]}},gp=e=>e==="all"?1:e,Xt=e=>e?"to":"from",Kr=e=>typeof e=="string"?`'${e}'`:typeof e=="number"?`${e}`:"Stream";import{once as Yg}from"events";import{addAbortListener as zg}from"events";var st=(e,t,r)=>{let i=e.getMaxListeners();i===0||i===Number.POSITIVE_INFINITY||(e.setMaxListeners(i+t),zg(r,()=>{e.setMaxListeners(e.getMaxListeners()-t)}))};import{EventEmitter as Hg}from"events";import{once as Vg}from"events";import{scheduler as Wg}from"timers/promises";var Jr=(e,t)=>{t&&ls(e)},ls=e=>{e.refCounted()},Xr=(e,t)=>{t&&ms(e)},ms=e=>{e.unrefCounted()},_p=(e,t)=>{t&&(ms(e),ms(e))},bp=(e,t)=>{t&&(ls(e),ls(e))};var xp=async({anyProcess:e,channel:t,isSubprocess:r,ipcEmitter:i},n)=>{if(qp(n)||Sp(n))return;Qr.has(e)||Qr.set(e,[]);let s=Qr.get(e);if(s.push(n),!(s.length>1))for(;s.length>0;){await vp(e,i,n),await Wg.yield();let o=await kp({wrappedMessage:s[0],anyProcess:e,channel:t,isSubprocess:r,ipcEmitter:i});s.shift(),i.emit("message",o),i.emit("message:done")}},wp=async({anyProcess:e,channel:t,isSubprocess:r,ipcEmitter:i,boundOnMessage:n})=>{hs();let s=Qr.get(e);for(;s?.length>0;)await Vg(i,"message:done");e.removeListener("message",n),bp(t,r),i.connected=!1,i.emit("disconnect")},Qr=new WeakMap;var He=(e,t,r)=>{if(Zr.has(e))return Zr.get(e);let i=new Hg;return i.connected=!0,Zr.set(e,i),Kg({ipcEmitter:i,anyProcess:e,channel:t,isSubprocess:r}),i},Zr=new WeakMap,Kg=({ipcEmitter:e,anyProcess:t,channel:r,isSubprocess:i})=>{let n=xp.bind(void 0,{anyProcess:t,channel:r,isSubprocess:i,ipcEmitter:e});t.on("message",n),t.once("disconnect",wp.bind(void 0,{anyProcess:t,channel:r,isSubprocess:i,ipcEmitter:e,boundOnMessage:n})),_p(r,i)},ei=e=>{let t=Zr.get(e);return t===void 0?e.channel!==null:t.connected};var $p=({anyProcess:e,channel:t,isSubprocess:r,message:i,strict:n})=>{if(!n)return i;let s=He(e,t,r),o=ii(e,s);return{id:Jg++,type:ri,message:i,hasListeners:o}},Jg=0n,Ap=(e,t)=>{if(!(t?.type!==ri||t.hasListeners))for(let{id:r}of e)r!==void 0&&ti[r].resolve({isDeadlock:!0,hasListeners:!1})},kp=async({wrappedMessage:e,anyProcess:t,channel:r,isSubprocess:i,ipcEmitter:n})=>{if(e?.type!==ri||!t.connected)return e;let{id:s,message:o}=e,a={id:s,type:Ep,message:ii(t,n)};try{await ni({anyProcess:t,channel:r,isSubprocess:i,ipc:!0},a)}catch(c){n.emit("strict:error",c)}return o},qp=e=>{if(e?.type!==Ep)return!1;let{id:t,message:r}=e;return ti[t]?.resolve({isDeadlock:!1,hasListeners:r}),!0},Cp=async(e,t,r)=>{if(e?.type!==ri)return;let i=ve();ti[e.id]=i;let n=new AbortController;try{let{isDeadlock:s,hasListeners:o}=await Promise.race([i,Xg(t,r,n)]);s&&cp(r),o||pp(r)}finally{n.abort(),delete ti[e.id]}},ti={},Xg=async(e,t,{signal:r})=>{st(e,1,r),await Yg(e,"disconnect",{signal:r}),dp(t)},ri="execa:ipc:request",Ep="execa:ipc:response";var Tp=(e,t,r)=>{Qt.has(e)||Qt.set(e,new Set);let i=Qt.get(e),n=ve(),s=r?t.id:void 0,o={onMessageSent:n,id:s};return i.add(o),{outgoingMessages:i,outgoingMessage:o}},Pp=({outgoingMessages:e,outgoingMessage:t})=>{e.delete(t),t.onMessageSent.resolve()},vp=async(e,t,r)=>{for(;!ii(e,t)&&Qt.get(e)?.size>0;){let i=[...Qt.get(e)];Ap(i,r),await Promise.all(i.map(({onMessageSent:n})=>n))}},Qt=new WeakMap,ii=(e,t)=>t.listenerCount("message")>Qg(e),Qg=e=>Se.has(e)&&!Fe(Se.get(e).options.buffer,"ipc")?1:0;var ni=({anyProcess:e,channel:t,isSubprocess:r,ipc:i},n,{strict:s=!1}={})=>{let o="sendMessage";return vt({methodName:o,isSubprocess:r,ipc:i,isConnected:e.connected}),e_({anyProcess:e,channel:t,methodName:o,isSubprocess:r,message:n,strict:s})},e_=async({anyProcess:e,channel:t,methodName:r,isSubprocess:i,message:n,strict:s})=>{let o=$p({anyProcess:e,channel:t,isSubprocess:i,message:n,strict:s}),a=Tp(e,o,s);try{await fs({anyProcess:e,methodName:r,isSubprocess:i,wrappedMessage:o,message:n})}catch(c){throw St(e),c}finally{Pp(a)}},fs=async({anyProcess:e,methodName:t,isSubprocess:r,wrappedMessage:i,message:n})=>{let s=t_(e);try{await Promise.all([Cp(i,e,r),s(i)])}catch(o){throw mp({error:o,methodName:t,isSubprocess:r}),hp({error:o,methodName:t,isSubprocess:r,message:n}),o}},t_=e=>{if(ys.has(e))return ys.get(e);let t=Zg(e.send.bind(e));return ys.set(e,t),t},ys=new WeakMap;var Ip=(e,t)=>{let r="cancelSignal";return us(r,!1,e.connected),fs({anyProcess:e,methodName:r,isSubprocess:!1,wrappedMessage:{type:jp,message:t},message:t})},Rp=async({anyProcess:e,channel:t,isSubprocess:r,ipc:i})=>(await i_({anyProcess:e,channel:t,isSubprocess:r,ipc:i}),gs.signal),i_=async({anyProcess:e,channel:t,isSubprocess:r,ipc:i})=>{if(!Op){if(Op=!0,!i){lp();return}if(t===null){hs();return}He(e,t,r),await r_.yield()}},Op=!1,Sp=e=>e?.type!==jp?!1:(gs.abort(e.message),!0),jp="execa:ipc:cancel",hs=()=>{gs.abort(up())},gs=new AbortController;var Dp=({gracefulCancel:e,cancelSignal:t,ipc:r,serialization:i})=>{if(e){if(t===void 0)throw new Error("The `cancelSignal` option must be defined when setting the `gracefulCancel` option.");if(!r)throw new Error("The `ipc` option cannot be false when setting the `gracefulCancel` option.");if(i==="json")throw new Error("The `serialization` option cannot be 'json' when setting the `gracefulCancel` option.")}},Lp=({subprocess:e,cancelSignal:t,gracefulCancel:r,forceKillAfterDelay:i,context:n,controller:s})=>r?[n_({subprocess:e,cancelSignal:t,forceKillAfterDelay:i,context:n,controller:s})]:[],n_=async({subprocess:e,cancelSignal:t,forceKillAfterDelay:r,context:i,controller:{signal:n}})=>{await Wr(t,n);let s=s_(t);throw await Ip(e,s),ds({kill:e.kill,forceKillAfterDelay:r,context:i,controllerSignal:n}),i.terminationReason??="gracefulCancel",t.reason},s_=({reason:e})=>{if(!(e instanceof DOMException))return e;let t=new Error(e.message);return Object.defineProperty(t,"stack",{value:e.stack,enumerable:!1,configurable:!0,writable:!0}),t};import{setTimeout as o_}from"timers/promises";var Mp=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},Fp=(e,t,r,i)=>t===0||t===void 0?[]:[a_(e,t,r,i)],a_=async(e,t,r,{signal:i})=>{throw await o_(t,void 0,{signal:i}),r.terminationReason??="timeout",e.kill(),new ge};import{execPath as c_,execArgv as p_}from"process";import Bp from"path";var Up=({options:e})=>{if(e.node===!1)throw new TypeError('The "node" option cannot be false with `execaNode()`.');return{options:{...e,node:!0}}},Np=(e,t,{node:r=!1,nodePath:i=c_,nodeOptions:n=p_.filter(c=>!c.startsWith("--inspect")),cwd:s,execPath:o,...a})=>{if(o!==void 0)throw new TypeError('The "execPath" option has been removed. Please use the "nodePath" option instead.');let c=bt(i,'The "nodePath" option'),d=Bp.resolve(s,c),p={...a,nodePath:d,node:r,cwd:s};if(!r)return[e,t,p];if(Bp.basename(e,".exe")==="node")throw new TypeError('When the "node" option is true, the first argument does not need to be "node".');return[d,[...n,e,...t],{ipc:!0,...p,shell:!1}]};import{serialize as d_}from"v8";var Gp=({ipcInput:e,ipc:t,serialization:r})=>{if(e!==void 0){if(!t)throw new Error("The `ipcInput` option cannot be set unless the `ipc` option is `true`.");m_[r](e)}},u_=e=>{try{d_(e)}catch(t){throw new Error("The `ipcInput` option is not serializable with a structured clone.",{cause:t})}},l_=e=>{try{JSON.stringify(e)}catch(t){throw new Error("The `ipcInput` option is not serializable with JSON.",{cause:t})}},m_={advanced:u_,json:l_},zp=async(e,t)=>{t!==void 0&&await e.sendMessage(t)};var Wp=({encoding:e})=>{if(_s.has(e))return;let t=y_(e);if(t!==void 0)throw new TypeError(`Invalid option \`encoding: ${si(e)}\`.
|
|
57
|
+
Please rename it to ${si(t)}.`);let r=[..._s].map(i=>si(i)).join(", ");throw new TypeError(`Invalid option \`encoding: ${si(e)}\`.
|
|
58
|
+
Please rename it to one of: ${r}.`)},h_=new Set(["utf8","utf16le"]),oe=new Set(["buffer","hex","base64","base64url","latin1","ascii"]),_s=new Set([...h_,...oe]),y_=e=>{if(e===null)return"buffer";if(typeof e!="string")return;let t=e.toLowerCase();if(t in Vp)return Vp[t];if(_s.has(t))return t},Vp={"utf-8":"utf8","utf-16le":"utf16le","ucs-2":"utf16le",ucs2:"utf16le",binary:"latin1"},si=e=>typeof e=="string"?`"${e}"`:String(e);import{statSync as f_}from"fs";import g_ from"path";import __ from"process";var Hp=(e=Kp())=>{let t=bt(e,'The "cwd" option');return g_.resolve(t)},Kp=()=>{try{return __.cwd()}catch(e){throw e.message=`The current directory does not exist.
|
|
59
|
+
${e.message}`,e}},Yp=(e,t)=>{if(t===Kp())return e;let r;try{r=f_(t)}catch(i){return`The "cwd" option is invalid: ${t}.
|
|
60
60
|
${i.message}
|
|
61
61
|
${e}`}return r.isDirectory()?e:`The "cwd" option is not a directory: ${t}.
|
|
62
|
-
${e}`};var
|
|
63
|
-
`,
|
|
64
|
-
${E}`,L=`${A}: ${a}${w}`,O=t===void 0?[e[2],e[1]]:[t],R=[L,...O,...e.slice(3),r.map(F=>
|
|
65
|
-
`)].map(F=>
|
|
66
|
-
|
|
67
|
-
`);return{originalMessage:E,shortMessage:L,message:R}},
|
|
68
|
-
`):yd(e),yd=e=>typeof e=="string"?e:H(e)?Cr(e):"";var yi=({command:e,escapedCommand:t,stdio:r,all:i,ipcOutput:n,options:{cwd:s},startTime:o})=>gd({command:e,escapedCommand:t,cwd:s,durationMs:Xn(o),failed:!1,timedOut:!1,isCanceled:!1,isGracefullyCanceled:!1,isTerminated:!1,isMaxBuffer:!1,isForcefullyTerminated:!1,exitCode:0,stdout:r[1],stderr:r[2],all:i,stdio:r,ipcOutput:n,pipedFrom:[]}),Ct=({error:e,command:t,escapedCommand:r,fileDescriptors:i,options:n,startTime:s,isSync:o})=>er({error:e,command:t,escapedCommand:r,startTime:s,timedOut:!1,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:!1,isForcefullyTerminated:!1,stdio:Array.from({length:i.length}),ipcOutput:[],options:n,isSync:o}),er=({error:e,command:t,escapedCommand:r,startTime:i,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:d,signal:p,stdio:u,all:l,ipcOutput:m,options:{timeoutDuration:h,timeout:f=h,forceKillAfterDelay:x,killSignal:_,cwd:v,maxBuffer:A},isSync:E})=>{let{exitCode:w,signal:L,signalDescription:O}=ab(d,p),{originalMessage:R,shortMessage:F,message:N}=fd({stdio:u,all:l,ipcOutput:m,originalError:e,signal:L,signalDescription:O,exitCode:w,escapedCommand:r,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,forceKillAfterDelay:x,killSignal:_,maxBuffer:A,timeout:f,cwd:v}),S=Gc(e,N,E);return Object.assign(S,ob({error:S,command:t,escapedCommand:r,startTime:i,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:w,signal:L,signalDescription:O,stdio:u,all:l,ipcOutput:m,cwd:v,originalMessage:R,shortMessage:F})),S},ob=({error:e,command:t,escapedCommand:r,startTime:i,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:d,signal:p,signalDescription:u,stdio:l,all:m,ipcOutput:h,cwd:f,originalMessage:x,shortMessage:_})=>gd({shortMessage:_,originalMessage:x,command:t,escapedCommand:r,cwd:f,durationMs:Xn(i),failed:!0,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isTerminated:p!==void 0,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:d,signal:p,signalDescription:u,code:e.cause?.code,stdout:l[1],stderr:l[2],all:m,stdio:l,ipcOutput:h,pipedFrom:[]}),gd=e=>Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0)),ab=(e,t)=>{let r=e===null?void 0:e,i=t===null?void 0:t,n=i===void 0?void 0:zr(t);return{exitCode:r,signal:i,signalDescription:n}};var _d=e=>Number.isFinite(e)?e:0;function cb(e){return{days:Math.trunc(e/864e5),hours:Math.trunc(e/36e5%24),minutes:Math.trunc(e/6e4%60),seconds:Math.trunc(e/1e3%60),milliseconds:Math.trunc(e%1e3),microseconds:Math.trunc(_d(e*1e3)%1e3),nanoseconds:Math.trunc(_d(e*1e6)%1e3)}}function pb(e){return{days:e/86400000n,hours:e/3600000n%24n,minutes:e/60000n%60n,seconds:e/1000n%60n,milliseconds:e%1000n,microseconds:0n,nanoseconds:0n}}function Ss(e){switch(typeof e){case"number":{if(Number.isFinite(e))return cb(e);break}case"bigint":return pb(e)}throw new TypeError("Expected a finite number or bigint")}var db=e=>e===0||e===0n,ub=(e,t)=>t===1||t===1n?e:`${e}s`,lb=1e-7,mb=24n*60n*60n*1000n;function vs(e,t){let r=typeof e=="bigint";if(!r&&!Number.isFinite(e))throw new TypeError("Expected a finite number or bigint");t={...t};let i=e<0?"-":"";e=e<0?-e:e,t.colonNotation&&(t.compact=!1,t.formatSubMilliseconds=!1,t.separateMilliseconds=!1,t.verbose=!1),t.compact&&(t.unitCount=1,t.secondsDecimalDigits=0,t.millisecondsDecimalDigits=0);let n=[],s=(p,u)=>{let l=Math.floor(p*10**u+lb);return(Math.round(l)/10**u).toFixed(u)},o=(p,u,l,m)=>{if(!((n.length===0||!t.colonNotation)&&db(p)&&!(t.colonNotation&&l==="m"))){if(m??=String(p),t.colonNotation){let h=m.includes(".")?m.split(".")[0].length:m.length,f=n.length>0?2:1;m="0".repeat(Math.max(0,f-h))+m}else m+=t.verbose?" "+ub(u,p):l;n.push(m)}},a=Ss(e),c=BigInt(a.days);if(t.hideYearAndDays?o(BigInt(c)*24n+BigInt(a.hours),"hour","h"):(t.hideYear?o(c,"day","d"):(o(c/365n,"year","y"),o(c%365n,"day","d")),o(Number(a.hours),"hour","h")),o(Number(a.minutes),"minute","m"),!t.hideSeconds)if(t.separateMilliseconds||t.formatSubMilliseconds||!t.colonNotation&&e<1e3&&!t.subSecondsAsDecimals){let p=Number(a.seconds),u=Number(a.milliseconds),l=Number(a.microseconds),m=Number(a.nanoseconds);if(o(p,"second","s"),t.formatSubMilliseconds)o(u,"millisecond","ms"),o(l,"microsecond","\xB5s"),o(m,"nanosecond","ns");else{let h=u+l/1e3+m/1e6,f=typeof t.millisecondsDecimalDigits=="number"?t.millisecondsDecimalDigits:0,x=h>=1?Math.round(h):Math.ceil(h),_=f?h.toFixed(f):x;o(Number.parseFloat(_),"millisecond","ms",_)}}else{let p=(r?Number(e%mb):e)/1e3%60,u=typeof t.secondsDecimalDigits=="number"?t.secondsDecimalDigits:1,l=s(p,u),m=t.keepDecimalsOnWholeSeconds?l:l.replace(/\.0+$/,"");o(Number.parseFloat(m),"second","s",m)}if(n.length===0)return i+"0"+(t.verbose?" milliseconds":"ms");let d=t.colonNotation?":":" ";return typeof t.unitCount=="number"&&(n=n.slice(0,Math.max(t.unitCount,1))),i+n.join(d)}var bd=(e,t)=>{e.failed&&Se({type:"error",verboseMessage:e.shortMessage,verboseInfo:t,result:e})};var xd=(e,t)=>{bt(t)&&(bd(e,t),hb(e,t))},hb=(e,t)=>{let r=`(done in ${vs(e.durationMs)})`;Se({type:"duration",verboseMessage:r,verboseInfo:t,result:e})};var Et=(e,t,{reject:r})=>{if(xd(e,t),e.failed&&r)throw e;return e};import{readFileSync as Hd}from"fs";var Sd=(e,t)=>ot(e)?"asyncGenerator":$d(e)?"generator":fi(e)?"fileUrl":bb(e)?"filePath":kb(e)?"webStream":be(e,{checkOpen:!1})?"native":H(e)?"uint8Array":Sb(e)?"asyncIterable":vb(e)?"iterable":As(e)?vd({transform:e},t):_b(e)?yb(e,t):"native",yb=(e,t)=>bs(e.transform,{checkOpen:!1})?fb(e,t):As(e.transform)?vd(e,t):gb(e,t),fb=(e,t)=>(qd(e,t,"Duplex stream"),"duplex"),vd=(e,t)=>(qd(e,t,"web TransformStream"),"webTransform"),qd=({final:e,binary:t,objectMode:r},i,n)=>{wd(e,`${i}.final`,n),wd(t,`${i}.binary`,n),qs(r,`${i}.objectMode`)},wd=(e,t,r)=>{if(e!==void 0)throw new TypeError(`The \`${t}\` option can only be defined when using a generator, not a ${r}.`)},gb=({transform:e,final:t,binary:r,objectMode:i},n)=>{if(e!==void 0&&!kd(e))throw new TypeError(`The \`${n}.transform\` option must be a generator, a Duplex stream or a web TransformStream.`);if(bs(t,{checkOpen:!1}))throw new TypeError(`The \`${n}.final\` option must not be a Duplex stream.`);if(As(t))throw new TypeError(`The \`${n}.final\` option must not be a web TransformStream.`);if(t!==void 0&&!kd(t))throw new TypeError(`The \`${n}.final\` option must be a generator.`);return qs(r,`${n}.binary`),qs(i,`${n}.objectMode`),ot(e)||ot(t)?"asyncGenerator":"generator"},qs=(e,t)=>{if(e!==void 0&&typeof e!="boolean")throw new TypeError(`The \`${t}\` option must use a boolean.`)},kd=e=>ot(e)||$d(e),ot=e=>Object.prototype.toString.call(e)==="[object AsyncGeneratorFunction]",$d=e=>Object.prototype.toString.call(e)==="[object GeneratorFunction]",_b=e=>V(e)&&(e.transform!==void 0||e.final!==void 0),fi=e=>Object.prototype.toString.call(e)==="[object URL]",Ad=e=>fi(e)&&e.protocol!=="file:",bb=e=>V(e)&&Object.keys(e).length>0&&Object.keys(e).every(t=>xb.has(t))&&$s(e.file),xb=new Set(["file","append"]),$s=e=>typeof e=="string",Cd=(e,t)=>e==="native"&&typeof t=="string"&&!wb.has(t),wb=new Set(["ipc","ignore","inherit","overlapped","pipe"]),Ed=e=>Object.prototype.toString.call(e)==="[object ReadableStream]",gi=e=>Object.prototype.toString.call(e)==="[object WritableStream]",kb=e=>Ed(e)||gi(e),As=e=>Ed(e?.readable)&&gi(e?.writable),Sb=e=>Td(e)&&typeof e[Symbol.asyncIterator]=="function",vb=e=>Td(e)&&typeof e[Symbol.iterator]=="function",Td=e=>typeof e=="object"&&e!==null,le=new Set(["generator","asyncGenerator","duplex","webTransform"]),_i=new Set(["fileUrl","filePath","fileNumber"]),Cs=new Set(["fileUrl","filePath"]),Pd=new Set([...Cs,"webStream","nodeStream"]),Od=new Set(["webTransform","duplex"]),Ke={generator:"a generator",asyncGenerator:"an async generator",fileUrl:"a file URL",filePath:"a file path string",fileNumber:"a file descriptor number",webStream:"a web stream",nodeStream:"a Node.js stream",webTransform:"a web TransformStream",duplex:"a Duplex stream",native:"any value",iterable:"an iterable",asyncIterable:"an async iterable",string:"a string",uint8Array:"a Uint8Array"};var Es=(e,t,r,i)=>i==="output"?qb(e,t,r):$b(e,t,r),qb=(e,t,r)=>{let i=t!==0&&r[t-1].value.readableObjectMode;return{writableObjectMode:i,readableObjectMode:e??i}},$b=(e,t,r)=>{let i=t===0?e===!0:r[t-1].value.readableObjectMode,n=t!==r.length-1&&(e??i);return{writableObjectMode:i,readableObjectMode:n}},Id=(e,t)=>{let r=e.findLast(({type:i})=>le.has(i));return r===void 0?!1:t==="input"?r.value.writableObjectMode:r.value.readableObjectMode};var Rd=(e,t,r,i)=>[...e.filter(({type:n})=>!le.has(n)),...Ab(e,t,r,i)],Ab=(e,t,r,{encoding:i})=>{let n=e.filter(({type:o})=>le.has(o)),s=Array.from({length:n.length});for(let[o,a]of Object.entries(n))s[o]=Cb({stdioItem:a,index:Number(o),newTransforms:s,optionName:t,direction:r,encoding:i});return Ob(s,r)},Cb=({stdioItem:e,stdioItem:{type:t},index:r,newTransforms:i,optionName:n,direction:s,encoding:o})=>t==="duplex"?Eb({stdioItem:e,optionName:n}):t==="webTransform"?Tb({stdioItem:e,index:r,newTransforms:i,direction:s}):Pb({stdioItem:e,index:r,newTransforms:i,direction:s,encoding:o}),Eb=({stdioItem:e,stdioItem:{value:{transform:t,transform:{writableObjectMode:r,readableObjectMode:i},objectMode:n=i}},optionName:s})=>{if(n&&!i)throw new TypeError(`The \`${s}.objectMode\` option can only be \`true\` if \`new Duplex({objectMode: true})\` is used.`);if(!n&&i)throw new TypeError(`The \`${s}.objectMode\` option cannot be \`false\` if \`new Duplex({objectMode: true})\` is used.`);return{...e,value:{transform:t,writableObjectMode:r,readableObjectMode:i}}},Tb=({stdioItem:e,stdioItem:{value:t},index:r,newTransforms:i,direction:n})=>{let{transform:s,objectMode:o}=V(t)?t:{transform:t},{writableObjectMode:a,readableObjectMode:c}=Es(o,r,i,n);return{...e,value:{transform:s,writableObjectMode:a,readableObjectMode:c}}},Pb=({stdioItem:e,stdioItem:{value:t},index:r,newTransforms:i,direction:n,encoding:s})=>{let{transform:o,final:a,binary:c=!1,preserveNewlines:d=!1,objectMode:p}=V(t)?t:{transform:t},u=c||oe.has(s),{writableObjectMode:l,readableObjectMode:m}=Es(p,r,i,n);return{...e,value:{transform:o,final:a,binary:u,preserveNewlines:d,writableObjectMode:l,readableObjectMode:m}}},Ob=(e,t)=>t==="input"?e.reverse():e;import Ts from"process";var jd=(e,t,r)=>{let i=e.map(n=>Ib(n,t));if(i.includes("input")&&i.includes("output"))throw new TypeError(`The \`${r}\` option must not be an array of both readable and writable values.`);return i.find(Boolean)??Db},Ib=({type:e,value:t},r)=>Rb[r]??Dd[e](t),Rb=["input","output","output"],Tt=()=>{},Ps=()=>"input",Dd={generator:Tt,asyncGenerator:Tt,fileUrl:Tt,filePath:Tt,iterable:Ps,asyncIterable:Ps,uint8Array:Ps,webStream:e=>gi(e)?"output":"input",nodeStream(e){return st(e,{checkOpen:!1})?_s(e,{checkOpen:!1})?void 0:"input":"output"},webTransform:Tt,duplex:Tt,native(e){let t=jb(e);if(t!==void 0)return t;if(be(e,{checkOpen:!1}))return Dd.nodeStream(e)}},jb=e=>{if([0,Ts.stdin].includes(e))return"input";if([1,2,Ts.stdout,Ts.stderr].includes(e))return"output"},Db="output";var Ld=(e,t)=>t&&!e.includes("ipc")?[...e,"ipc"]:e;var Md=({stdio:e,ipc:t,buffer:r,...i},n,s)=>{let o=Lb(e,i).map((a,c)=>Fd(a,c));return s?Fb(o,r,n):Ld(o,t)},Lb=(e,t)=>{if(e===void 0)return ue.map(i=>t[i]);if(Mb(t))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${ue.map(i=>`\`${i}\``).join(", ")}`);if(typeof e=="string")return[e,e,e];if(!Array.isArray(e))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof e}\``);let r=Math.max(e.length,ue.length);return Array.from({length:r},(i,n)=>e[n])},Mb=e=>ue.some(t=>e[t]!==void 0),Fd=(e,t)=>Array.isArray(e)?e.map(r=>Fd(r,t)):e??(t>=ue.length?"ignore":"pipe"),Fb=(e,t,r)=>e.map((i,n)=>!t[n]&&n!==0&&!xt(r,n)&&Ub(i)?"ignore":i),Ub=e=>e==="pipe"||Array.isArray(e)&&e.every(t=>t==="pipe");import{readFileSync as Bb}from"fs";import Nb from"tty";var Bd=({stdioItem:e,stdioItem:{type:t},isStdioArray:r,fdNumber:i,direction:n,isSync:s})=>!r||t!=="native"?e:s?Gb({stdioItem:e,fdNumber:i,direction:n}):Wb({stdioItem:e,fdNumber:i}),Gb=({stdioItem:e,stdioItem:{value:t,optionName:r},fdNumber:i,direction:n})=>{let s=zb({value:t,optionName:r,fdNumber:i,direction:n});if(s!==void 0)return s;if(be(t,{checkOpen:!1}))throw new TypeError(`The \`${r}: Stream\` option cannot both be an array and include a stream with synchronous methods.`);return e},zb=({value:e,optionName:t,fdNumber:r,direction:i})=>{let n=Vb(e,r);if(n!==void 0){if(i==="output")return{type:"fileNumber",value:n,optionName:t};if(Nb.isatty(n))throw new TypeError(`The \`${t}: ${Hr(e)}\` option is invalid: it cannot be a TTY with synchronous methods.`);return{type:"uint8Array",value:Me(Bb(n)),optionName:t}}},Vb=(e,t)=>{if(e==="inherit")return t;if(typeof e=="number")return e;let r=Er.indexOf(e);if(r!==-1)return r},Wb=({stdioItem:e,stdioItem:{value:t,optionName:r},fdNumber:i})=>t==="inherit"?{type:"nodeStream",value:Ud(i,t,r),optionName:r}:typeof t=="number"?{type:"nodeStream",value:Ud(t,t,r),optionName:r}:be(t,{checkOpen:!1})?{type:"nodeStream",value:t,optionName:r}:e,Ud=(e,t,r)=>{let i=Er[e];if(i===void 0)throw new TypeError(`The \`${r}: ${t}\` option is invalid: no such standard stream.`);return i};var Nd=({input:e,inputFile:t},r)=>r===0?[...Hb(e),...Yb(t)]:[],Hb=e=>e===void 0?[]:[{type:Kb(e),value:e,optionName:"input"}],Kb=e=>{if(st(e,{checkOpen:!1}))return"nodeStream";if(typeof e=="string")return"string";if(H(e))return"uint8Array";throw new Error("The `input` option must be a string, a Uint8Array or a Node.js Readable stream.")},Yb=e=>e===void 0?[]:[{...Jb(e),optionName:"inputFile"}],Jb=e=>{if(fi(e))return{type:"fileUrl",value:e};if($s(e))return{type:"filePath",value:{file:e}};throw new Error("The `inputFile` option must be a file path string or a file URL.")};var Gd=e=>e.filter((t,r)=>e.every((i,n)=>t.value!==i.value||r>=n||t.type==="generator"||t.type==="asyncGenerator")),zd=({stdioItem:{type:e,value:t,optionName:r},direction:i,fileDescriptors:n,isSync:s})=>{let o=Xb(n,e);if(o.length!==0){if(s){Qb({otherStdioItems:o,type:e,value:t,optionName:r,direction:i});return}if(Pd.has(e))return Vd({otherStdioItems:o,type:e,value:t,optionName:r,direction:i});Od.has(e)&&ex({otherStdioItems:o,type:e,value:t,optionName:r})}},Xb=(e,t)=>e.flatMap(({direction:r,stdioItems:i})=>i.filter(n=>n.type===t).map((n=>({...n,direction:r})))),Qb=({otherStdioItems:e,type:t,value:r,optionName:i,direction:n})=>{Cs.has(t)&&Vd({otherStdioItems:e,type:t,value:r,optionName:i,direction:n})},Vd=({otherStdioItems:e,type:t,value:r,optionName:i,direction:n})=>{let s=e.filter(a=>Zb(a,r));if(s.length===0)return;let o=s.find(a=>a.direction!==n);return Wd(o,i,t),n==="output"?s[0].stream:void 0},Zb=({type:e,value:t},r)=>e==="filePath"?t.file===r.file:e==="fileUrl"?t.href===r.href:t===r,ex=({otherStdioItems:e,type:t,value:r,optionName:i})=>{let n=e.find(({value:{transform:s}})=>s===r.transform);Wd(n,i,t)},Wd=(e,t,r)=>{if(e!==void 0)throw new TypeError(`The \`${e.optionName}\` and \`${t}\` options must not target ${Ke[r]} that is the same.`)};var bi=(e,t,r,i)=>{let s=Md(t,r,i).map((a,c)=>tx({stdioOption:a,fdNumber:c,options:t,isSync:i})),o=px({initialFileDescriptors:s,addProperties:e,options:t,isSync:i});return t.stdio=o.map(({stdioItems:a})=>lx(a)),o},tx=({stdioOption:e,fdNumber:t,options:r,isSync:i})=>{let n=Tr(t),{stdioItems:s,isStdioArray:o}=rx({stdioOption:e,fdNumber:t,options:r,optionName:n}),a=jd(s,t,n),c=s.map(u=>Bd({stdioItem:u,isStdioArray:o,fdNumber:t,direction:a,isSync:i})),d=Rd(c,n,a,r),p=Id(d,a);return cx(d,p),{direction:a,objectMode:p,stdioItems:d}},rx=({stdioOption:e,fdNumber:t,options:r,optionName:i})=>{let s=[...(Array.isArray(e)?e:[e]).map(c=>ix(c,i)),...Nd(r,t)],o=Gd(s),a=o.length>1;return nx(o,a,i),ox(o),{stdioItems:o,isStdioArray:a}},ix=(e,t)=>({type:Sd(e,t),value:e,optionName:t}),nx=(e,t,r)=>{if(e.length===0)throw new TypeError(`The \`${r}\` option must not be an empty array.`);if(t){for(let{value:i,optionName:n}of e)if(sx.has(i))throw new Error(`The \`${n}\` option must not include \`${i}\`.`)}},sx=new Set(["ignore","ipc"]),ox=e=>{for(let t of e)ax(t)},ax=({type:e,value:t,optionName:r})=>{if(Ad(t))throw new TypeError(`The \`${r}: URL\` option must use the \`file:\` scheme.
|
|
69
|
-
For example, you can use the \`pathToFileURL()\` method of the \`url\` core module.`);if(
|
|
70
|
-
`){let o=
|
|
62
|
+
${e}`};var oi=(e,t,r)=>{r.cwd=Hp(r.cwd);let[i,n,s]=Np(e,t,r),{command:o,args:a,options:c}=Xp.default._parse(i,n,s),d=Da(c),p=x_(d);return Mp(p),Wp(p),Gp(p),sp(p),Dp(p),p.shell=zn(p.shell),p.env=w_(p),p.killSignal=ep(p.killSignal),p.forceKillAfterDelay=ip(p.forceKillAfterDelay),p.lines=p.lines.map((u,l)=>u&&!oe.has(p.encoding)&&p.buffer[l]),Jp.platform==="win32"&&b_.basename(o,".exe")==="cmd"&&a.unshift("/q"),{file:o,commandArguments:a,options:p}},x_=({extendEnv:e=!0,preferLocal:t=!1,cwd:r,localDir:i=r,encoding:n="utf8",reject:s=!0,cleanup:o=!0,all:a=!1,windowsHide:c=!0,killSignal:d="SIGTERM",forceKillAfterDelay:p=!0,gracefulCancel:u=!1,ipcInput:l,ipc:m=l!==void 0||u,serialization:h="advanced",...f})=>({...f,extendEnv:e,preferLocal:t,cwd:r,localDirectory:i,encoding:n,reject:s,cleanup:o,all:a,windowsHide:c,killSignal:d,forceKillAfterDelay:p,gracefulCancel:u,ipcInput:l,ipc:m,serialization:h}),w_=({env:e,extendEnv:t,preferLocal:r,node:i,localDirectory:n,nodePath:s})=>{let o=t?{...Jp.env,...e}:e;return r||i?Gc({env:o,cwd:n,execPath:s,preferLocal:r,addExecPath:i}):o};var ai=(e,t,r)=>r.shell&&t.length>0?[[e,...t].join(" "),[],r]:[e,t,r];import{inspect as tb}from"util";function At(e){if(typeof e=="string")return k_(e);if(!(ArrayBuffer.isView(e)&&e.BYTES_PER_ELEMENT===1))throw new Error("Input must be a string or a Uint8Array");return q_(e)}var k_=e=>e.at(-1)===Qp?e.slice(0,e.at(-2)===Zp?-2:-1):e,q_=e=>e.at(-1)===v_?e.subarray(0,e.at(-2)===S_?-2:-1):e,Qp=`
|
|
63
|
+
`,v_=Qp.codePointAt(0),Zp="\r",S_=Zp.codePointAt(0);import{on as X_}from"events";import{finished as Q_}from"stream/promises";function be(e,{checkOpen:t=!0}={}){return e!==null&&typeof e=="object"&&(e.writable||e.readable||!t||e.writable===void 0&&e.readable===void 0)&&typeof e.pipe=="function"}function bs(e,{checkOpen:t=!0}={}){return be(e,{checkOpen:t})&&(e.writable||!t)&&typeof e.write=="function"&&typeof e.end=="function"&&typeof e.writable=="boolean"&&typeof e.writableObjectMode=="boolean"&&typeof e.destroy=="function"&&typeof e.destroyed=="boolean"}function ot(e,{checkOpen:t=!0}={}){return be(e,{checkOpen:t})&&(e.readable||!t)&&typeof e.read=="function"&&typeof e.readable=="boolean"&&typeof e.readableObjectMode=="boolean"&&typeof e.destroy=="function"&&typeof e.destroyed=="boolean"}function xs(e,t){return bs(e,t)&&ot(e,t)}var $_=Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype),ws=class{#t;#r;#e=!1;#i=void 0;constructor(t,r){this.#t=t,this.#r=r}next(){let t=()=>this.#s();return this.#i=this.#i?this.#i.then(t,t):t(),this.#i}return(t){let r=()=>this.#n(t);return this.#i?this.#i.then(r,r):r()}async#s(){if(this.#e)return{done:!0,value:void 0};let t;try{t=await this.#t.read()}catch(r){throw this.#i=void 0,this.#e=!0,this.#t.releaseLock(),r}return t.done&&(this.#i=void 0,this.#e=!0,this.#t.releaseLock()),t}async#n(t){if(this.#e)return{done:!0,value:t};if(this.#e=!0,!this.#r){let r=this.#t.cancel(t);return this.#t.releaseLock(),await r,{done:!0,value:t}}return this.#t.releaseLock(),{done:!0,value:t}}},ks=Symbol();function ed(){return this[ks].next()}Object.defineProperty(ed,"name",{value:"next"});function td(e){return this[ks].return(e)}Object.defineProperty(td,"name",{value:"return"});var A_=Object.create($_,{next:{enumerable:!0,configurable:!0,writable:!0,value:ed},return:{enumerable:!0,configurable:!0,writable:!0,value:td}});function qs({preventCancel:e=!1}={}){let t=this.getReader(),r=new ws(t,e),i=Object.create(A_);return i[ks]=r,i}var rd=e=>{if(ot(e,{checkOpen:!1})&&Zt.on!==void 0)return E_(e);if(typeof e?.[Symbol.asyncIterator]=="function")return e;if(C_.call(e)==="[object ReadableStream]")return qs.call(e);throw new TypeError("The first argument must be a Readable, a ReadableStream, or an async iterable.")},{toString:C_}=Object.prototype,E_=async function*(e){let t=new AbortController,r={};T_(e,t,r);try{for await(let[i]of Zt.on(e,"data",{signal:t.signal}))yield i}catch(i){if(r.error!==void 0)throw r.error;if(!t.signal.aborted)throw i}finally{e.destroy()}},T_=async(e,t,r)=>{try{await Zt.finished(e,{cleanup:!0,readable:!0,writable:!1,error:!1})}catch(i){r.error=i}finally{t.abort()}},Zt={};var Ct=async(e,{init:t,convertChunk:r,getSize:i,truncateChunk:n,addChunk:s,getFinalChunk:o,finalize:a},{maxBuffer:c=Number.POSITIVE_INFINITY}={})=>{let d=rd(e),p=t();p.length=0;try{for await(let u of d){let l=O_(u),m=r[l](u,p);sd({convertedChunk:m,state:p,getSize:i,truncateChunk:n,addChunk:s,maxBuffer:c})}return P_({state:p,convertChunk:r,getSize:i,truncateChunk:n,addChunk:s,getFinalChunk:o,maxBuffer:c}),a(p)}catch(u){let l=typeof u=="object"&&u!==null?u:new Error(u);throw l.bufferedData=a(p),l}},P_=({state:e,getSize:t,truncateChunk:r,addChunk:i,getFinalChunk:n,maxBuffer:s})=>{let o=n(e);o!==void 0&&sd({convertedChunk:o,state:e,getSize:t,truncateChunk:r,addChunk:i,maxBuffer:s})},sd=({convertedChunk:e,state:t,getSize:r,truncateChunk:i,addChunk:n,maxBuffer:s})=>{let o=r(e),a=t.length+o;if(a<=s){id(e,t,n,a);return}let c=i(e,s-t.length);throw c!==void 0&&id(c,t,n,s),new $e},id=(e,t,r,i)=>{t.contents=r(e,t,i),t.length=i},O_=e=>{let t=typeof e;if(t==="string")return"string";if(t!=="object"||e===null)return"others";if(globalThis.Buffer?.isBuffer(e))return"buffer";let r=nd.call(e);return r==="[object ArrayBuffer]"?"arrayBuffer":r==="[object DataView]"?"dataView":Number.isInteger(e.byteLength)&&Number.isInteger(e.byteOffset)&&nd.call(e.buffer)==="[object ArrayBuffer]"?"typedArray":"others"},{toString:nd}=Object.prototype,$e=class extends Error{name="MaxBufferError";constructor(){super("maxBuffer exceeded")}};var Be=e=>e,er=()=>{},ci=({contents:e})=>e,pi=e=>{throw new Error(`Streams in object mode are not supported: ${String(e)}`)},di=e=>e.length;async function ui(e,t){return Ct(e,D_,t)}var I_=()=>({contents:[]}),R_=()=>1,j_=(e,{contents:t})=>(t.push(e),t),D_={init:I_,convertChunk:{string:Be,buffer:Be,arrayBuffer:Be,dataView:Be,typedArray:Be,others:Be},getSize:R_,truncateChunk:er,addChunk:j_,getFinalChunk:er,finalize:ci};async function li(e,t){return Ct(e,V_,t)}var L_=()=>({contents:new ArrayBuffer(0)}),M_=e=>F_.encode(e),F_=new TextEncoder,od=e=>new Uint8Array(e),ad=e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength),B_=(e,t)=>e.slice(0,t),U_=(e,{contents:t,length:r},i)=>{let n=dd()?G_(t,i):N_(t,i);return new Uint8Array(n).set(e,r),n},N_=(e,t)=>{if(t<=e.byteLength)return e;let r=new ArrayBuffer(pd(t));return new Uint8Array(r).set(new Uint8Array(e),0),r},G_=(e,t)=>{if(t<=e.maxByteLength)return e.resize(t),e;let r=new ArrayBuffer(t,{maxByteLength:pd(t)});return new Uint8Array(r).set(new Uint8Array(e),0),r},pd=e=>cd**Math.ceil(Math.log(e)/Math.log(cd)),cd=2,z_=({contents:e,length:t})=>dd()?e:e.slice(0,t),dd=()=>"resize"in ArrayBuffer.prototype,V_={init:L_,convertChunk:{string:M_,buffer:od,arrayBuffer:od,dataView:ad,typedArray:ad,others:pi},getSize:di,truncateChunk:B_,addChunk:U_,getFinalChunk:er,finalize:z_};async function hi(e,t){return Ct(e,J_,t)}var W_=()=>({contents:"",textDecoder:new TextDecoder}),mi=(e,{textDecoder:t})=>t.decode(e,{stream:!0}),H_=(e,{contents:t})=>t+e,K_=(e,t)=>e.slice(0,t),Y_=({textDecoder:e})=>{let t=e.decode();return t===""?void 0:t},J_={init:W_,convertChunk:{string:Be,buffer:mi,arrayBuffer:mi,dataView:mi,typedArray:mi,others:pi},getSize:di,truncateChunk:K_,addChunk:H_,getFinalChunk:Y_,finalize:ci};Object.assign(Zt,{on:X_,finished:Q_});var ud=({error:e,stream:t,readableObjectMode:r,lines:i,encoding:n,fdNumber:s})=>{if(!(e instanceof $e))throw e;if(s==="all")return e;let o=Z_(r,i,n);throw e.maxBufferInfo={fdNumber:s,unit:o},t.destroy(),e},Z_=(e,t,r)=>e?"objects":t?"lines":r==="buffer"?"bytes":"characters",ld=(e,t,r)=>{if(t.length!==r)return;let i=new $e;throw i.maxBufferInfo={fdNumber:"ipc"},i},md=(e,t)=>{let{streamName:r,threshold:i,unit:n}=eb(e,t);return`Command's ${r} was larger than ${i} ${n}`},eb=(e,t)=>{if(e?.maxBufferInfo===void 0)return{streamName:"output",threshold:t[1],unit:"bytes"};let{maxBufferInfo:{fdNumber:r,unit:i}}=e;delete e.maxBufferInfo;let n=Fe(t,r);return r==="ipc"?{streamName:"IPC output",threshold:n,unit:"messages"}:{streamName:Pr(r),threshold:n,unit:i}},hd=(e,t,r)=>e?.code==="ENOBUFS"&&t!==null&&t.some(i=>i!==null&&i.length>yi(r)),yd=(e,t,r)=>{if(!t)return e;let i=yi(r);return e.length>i?e.slice(0,i):e},yi=([,e])=>e;var gd=({stdio:e,all:t,ipcOutput:r,originalError:i,signal:n,signalDescription:s,exitCode:o,escapedCommand:a,timedOut:c,isCanceled:d,isGracefullyCanceled:p,isMaxBuffer:u,isForcefullyTerminated:l,forceKillAfterDelay:m,killSignal:h,maxBuffer:f,timeout:x,cwd:_})=>{let v=i?.code,A=rb({originalError:i,timedOut:c,timeout:x,isMaxBuffer:u,maxBuffer:f,errorCode:v,signal:n,signalDescription:s,exitCode:o,isCanceled:d,isGracefullyCanceled:p,isForcefullyTerminated:l,forceKillAfterDelay:m,killSignal:h}),E=nb(i,_),w=E===void 0?"":`
|
|
64
|
+
${E}`,L=`${A}: ${a}${w}`,O=t===void 0?[e[2],e[1]]:[t],R=[L,...O,...e.slice(3),r.map(F=>sb(F)).join(`
|
|
65
|
+
`)].map(F=>Ht(At(ob(F)))).filter(Boolean).join(`
|
|
66
|
+
|
|
67
|
+
`);return{originalMessage:E,shortMessage:L,message:R}},rb=({originalError:e,timedOut:t,timeout:r,isMaxBuffer:i,maxBuffer:n,errorCode:s,signal:o,signalDescription:a,exitCode:c,isCanceled:d,isGracefullyCanceled:p,isForcefullyTerminated:u,forceKillAfterDelay:l,killSignal:m})=>{let h=ib(u,l);return t?`Command timed out after ${r} milliseconds${h}`:p?o===void 0?`Command was gracefully canceled with exit code ${c}`:u?`Command was gracefully canceled${h}`:`Command was gracefully canceled with ${o} (${a})`:d?`Command was canceled${h}`:i?`${md(e,n)}${h}`:s!==void 0?`Command failed with ${s}${h}`:u?`Command was killed with ${m} (${Vr(m)})${h}`:o!==void 0?`Command was killed with ${o} (${a})`:c!==void 0?`Command failed with exit code ${c}`:"Command failed"},ib=(e,t)=>e?` and was forcefully terminated after ${t} milliseconds`:"",nb=(e,t)=>{if(e instanceof ge)return;let r=Wc(e)?e.originalMessage:String(e?.message??e),i=Ht(Yp(r,t));return i===""?void 0:i},sb=e=>typeof e=="string"?e:tb(e),ob=e=>Array.isArray(e)?e.map(t=>At(fd(t))).filter(Boolean).join(`
|
|
68
|
+
`):fd(e),fd=e=>typeof e=="string"?e:K(e)?Er(e):"";var fi=({command:e,escapedCommand:t,stdio:r,all:i,ipcOutput:n,options:{cwd:s},startTime:o})=>_d({command:e,escapedCommand:t,cwd:s,durationMs:Qn(o),failed:!1,timedOut:!1,isCanceled:!1,isGracefullyCanceled:!1,isTerminated:!1,isMaxBuffer:!1,isForcefullyTerminated:!1,exitCode:0,stdout:r[1],stderr:r[2],all:i,stdio:r,ipcOutput:n,pipedFrom:[]}),Et=({error:e,command:t,escapedCommand:r,fileDescriptors:i,options:n,startTime:s,isSync:o})=>tr({error:e,command:t,escapedCommand:r,startTime:s,timedOut:!1,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:!1,isForcefullyTerminated:!1,stdio:Array.from({length:i.length}),ipcOutput:[],options:n,isSync:o}),tr=({error:e,command:t,escapedCommand:r,startTime:i,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:d,signal:p,stdio:u,all:l,ipcOutput:m,options:{timeoutDuration:h,timeout:f=h,forceKillAfterDelay:x,killSignal:_,cwd:v,maxBuffer:A},isSync:E})=>{let{exitCode:w,signal:L,signalDescription:O}=cb(d,p),{originalMessage:R,shortMessage:F,message:N}=gd({stdio:u,all:l,ipcOutput:m,originalError:e,signal:L,signalDescription:O,exitCode:w,escapedCommand:r,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,forceKillAfterDelay:x,killSignal:_,maxBuffer:A,timeout:f,cwd:v}),q=zc(e,N,E);return Object.assign(q,ab({error:q,command:t,escapedCommand:r,startTime:i,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:w,signal:L,signalDescription:O,stdio:u,all:l,ipcOutput:m,cwd:v,originalMessage:R,shortMessage:F})),q},ab=({error:e,command:t,escapedCommand:r,startTime:i,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:d,signal:p,signalDescription:u,stdio:l,all:m,ipcOutput:h,cwd:f,originalMessage:x,shortMessage:_})=>_d({shortMessage:_,originalMessage:x,command:t,escapedCommand:r,cwd:f,durationMs:Qn(i),failed:!0,timedOut:n,isCanceled:s,isGracefullyCanceled:o,isTerminated:p!==void 0,isMaxBuffer:a,isForcefullyTerminated:c,exitCode:d,signal:p,signalDescription:u,code:e.cause?.code,stdout:l[1],stderr:l[2],all:m,stdio:l,ipcOutput:h,pipedFrom:[]}),_d=e=>Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0)),cb=(e,t)=>{let r=e===null?void 0:e,i=t===null?void 0:t,n=i===void 0?void 0:Vr(t);return{exitCode:r,signal:i,signalDescription:n}};var bd=e=>Number.isFinite(e)?e:0;function pb(e){return{days:Math.trunc(e/864e5),hours:Math.trunc(e/36e5%24),minutes:Math.trunc(e/6e4%60),seconds:Math.trunc(e/1e3%60),milliseconds:Math.trunc(e%1e3),microseconds:Math.trunc(bd(e*1e3)%1e3),nanoseconds:Math.trunc(bd(e*1e6)%1e3)}}function db(e){return{days:e/86400000n,hours:e/3600000n%24n,minutes:e/60000n%60n,seconds:e/1000n%60n,milliseconds:e%1000n,microseconds:0n,nanoseconds:0n}}function vs(e){switch(typeof e){case"number":{if(Number.isFinite(e))return pb(e);break}case"bigint":return db(e)}throw new TypeError("Expected a finite number or bigint")}var ub=e=>e===0||e===0n,lb=(e,t)=>t===1||t===1n?e:`${e}s`,mb=1e-7,hb=24n*60n*60n*1000n;function Ss(e,t){let r=typeof e=="bigint";if(!r&&!Number.isFinite(e))throw new TypeError("Expected a finite number or bigint");t={...t};let i=e<0?"-":"";e=e<0?-e:e,t.colonNotation&&(t.compact=!1,t.formatSubMilliseconds=!1,t.separateMilliseconds=!1,t.verbose=!1),t.compact&&(t.unitCount=1,t.secondsDecimalDigits=0,t.millisecondsDecimalDigits=0);let n=[],s=(p,u)=>{let l=Math.floor(p*10**u+mb);return(Math.round(l)/10**u).toFixed(u)},o=(p,u,l,m)=>{if(!((n.length===0||!t.colonNotation)&&ub(p)&&!(t.colonNotation&&l==="m"))){if(m??=String(p),t.colonNotation){let h=m.includes(".")?m.split(".")[0].length:m.length,f=n.length>0?2:1;m="0".repeat(Math.max(0,f-h))+m}else m+=t.verbose?" "+lb(u,p):l;n.push(m)}},a=vs(e),c=BigInt(a.days);if(t.hideYearAndDays?o(BigInt(c)*24n+BigInt(a.hours),"hour","h"):(t.hideYear?o(c,"day","d"):(o(c/365n,"year","y"),o(c%365n,"day","d")),o(Number(a.hours),"hour","h")),o(Number(a.minutes),"minute","m"),!t.hideSeconds)if(t.separateMilliseconds||t.formatSubMilliseconds||!t.colonNotation&&e<1e3&&!t.subSecondsAsDecimals){let p=Number(a.seconds),u=Number(a.milliseconds),l=Number(a.microseconds),m=Number(a.nanoseconds);if(o(p,"second","s"),t.formatSubMilliseconds)o(u,"millisecond","ms"),o(l,"microsecond","\xB5s"),o(m,"nanosecond","ns");else{let h=u+l/1e3+m/1e6,f=typeof t.millisecondsDecimalDigits=="number"?t.millisecondsDecimalDigits:0,x=h>=1?Math.round(h):Math.ceil(h),_=f?h.toFixed(f):x;o(Number.parseFloat(_),"millisecond","ms",_)}}else{let p=(r?Number(e%hb):e)/1e3%60,u=typeof t.secondsDecimalDigits=="number"?t.secondsDecimalDigits:1,l=s(p,u),m=t.keepDecimalsOnWholeSeconds?l:l.replace(/\.0+$/,"");o(Number.parseFloat(m),"second","s",m)}if(n.length===0)return i+"0"+(t.verbose?" milliseconds":"ms");let d=t.colonNotation?":":" ";return typeof t.unitCount=="number"&&(n=n.slice(0,Math.max(t.unitCount,1))),i+n.join(d)}var xd=(e,t)=>{e.failed&&qe({type:"error",verboseMessage:e.shortMessage,verboseInfo:t,result:e})};var wd=(e,t)=>{xt(t)&&(xd(e,t),yb(e,t))},yb=(e,t)=>{let r=`(done in ${Ss(e.durationMs)})`;qe({type:"duration",verboseMessage:r,verboseInfo:t,result:e})};var Tt=(e,t,{reject:r})=>{if(wd(e,t),e.failed&&r)throw e;return e};import{readFileSync as Kd}from"fs";var vd=(e,t)=>at(e)?"asyncGenerator":Ad(e)?"generator":gi(e)?"fileUrl":xb(e)?"filePath":qb(e)?"webStream":be(e,{checkOpen:!1})?"native":K(e)?"uint8Array":vb(e)?"asyncIterable":Sb(e)?"iterable":Cs(e)?Sd({transform:e},t):bb(e)?fb(e,t):"native",fb=(e,t)=>xs(e.transform,{checkOpen:!1})?gb(e,t):Cs(e.transform)?Sd(e,t):_b(e,t),gb=(e,t)=>($d(e,t,"Duplex stream"),"duplex"),Sd=(e,t)=>($d(e,t,"web TransformStream"),"webTransform"),$d=({final:e,binary:t,objectMode:r},i,n)=>{kd(e,`${i}.final`,n),kd(t,`${i}.binary`,n),$s(r,`${i}.objectMode`)},kd=(e,t,r)=>{if(e!==void 0)throw new TypeError(`The \`${t}\` option can only be defined when using a generator, not a ${r}.`)},_b=({transform:e,final:t,binary:r,objectMode:i},n)=>{if(e!==void 0&&!qd(e))throw new TypeError(`The \`${n}.transform\` option must be a generator, a Duplex stream or a web TransformStream.`);if(xs(t,{checkOpen:!1}))throw new TypeError(`The \`${n}.final\` option must not be a Duplex stream.`);if(Cs(t))throw new TypeError(`The \`${n}.final\` option must not be a web TransformStream.`);if(t!==void 0&&!qd(t))throw new TypeError(`The \`${n}.final\` option must be a generator.`);return $s(r,`${n}.binary`),$s(i,`${n}.objectMode`),at(e)||at(t)?"asyncGenerator":"generator"},$s=(e,t)=>{if(e!==void 0&&typeof e!="boolean")throw new TypeError(`The \`${t}\` option must use a boolean.`)},qd=e=>at(e)||Ad(e),at=e=>Object.prototype.toString.call(e)==="[object AsyncGeneratorFunction]",Ad=e=>Object.prototype.toString.call(e)==="[object GeneratorFunction]",bb=e=>V(e)&&(e.transform!==void 0||e.final!==void 0),gi=e=>Object.prototype.toString.call(e)==="[object URL]",Cd=e=>gi(e)&&e.protocol!=="file:",xb=e=>V(e)&&Object.keys(e).length>0&&Object.keys(e).every(t=>wb.has(t))&&As(e.file),wb=new Set(["file","append"]),As=e=>typeof e=="string",Ed=(e,t)=>e==="native"&&typeof t=="string"&&!kb.has(t),kb=new Set(["ipc","ignore","inherit","overlapped","pipe"]),Td=e=>Object.prototype.toString.call(e)==="[object ReadableStream]",_i=e=>Object.prototype.toString.call(e)==="[object WritableStream]",qb=e=>Td(e)||_i(e),Cs=e=>Td(e?.readable)&&_i(e?.writable),vb=e=>Pd(e)&&typeof e[Symbol.asyncIterator]=="function",Sb=e=>Pd(e)&&typeof e[Symbol.iterator]=="function",Pd=e=>typeof e=="object"&&e!==null,le=new Set(["generator","asyncGenerator","duplex","webTransform"]),bi=new Set(["fileUrl","filePath","fileNumber"]),Es=new Set(["fileUrl","filePath"]),Od=new Set([...Es,"webStream","nodeStream"]),Id=new Set(["webTransform","duplex"]),Ke={generator:"a generator",asyncGenerator:"an async generator",fileUrl:"a file URL",filePath:"a file path string",fileNumber:"a file descriptor number",webStream:"a web stream",nodeStream:"a Node.js stream",webTransform:"a web TransformStream",duplex:"a Duplex stream",native:"any value",iterable:"an iterable",asyncIterable:"an async iterable",string:"a string",uint8Array:"a Uint8Array"};var Ts=(e,t,r,i)=>i==="output"?$b(e,t,r):Ab(e,t,r),$b=(e,t,r)=>{let i=t!==0&&r[t-1].value.readableObjectMode;return{writableObjectMode:i,readableObjectMode:e??i}},Ab=(e,t,r)=>{let i=t===0?e===!0:r[t-1].value.readableObjectMode,n=t!==r.length-1&&(e??i);return{writableObjectMode:i,readableObjectMode:n}},Rd=(e,t)=>{let r=e.findLast(({type:i})=>le.has(i));return r===void 0?!1:t==="input"?r.value.writableObjectMode:r.value.readableObjectMode};var jd=(e,t,r,i)=>[...e.filter(({type:n})=>!le.has(n)),...Cb(e,t,r,i)],Cb=(e,t,r,{encoding:i})=>{let n=e.filter(({type:o})=>le.has(o)),s=Array.from({length:n.length});for(let[o,a]of Object.entries(n))s[o]=Eb({stdioItem:a,index:Number(o),newTransforms:s,optionName:t,direction:r,encoding:i});return Ib(s,r)},Eb=({stdioItem:e,stdioItem:{type:t},index:r,newTransforms:i,optionName:n,direction:s,encoding:o})=>t==="duplex"?Tb({stdioItem:e,optionName:n}):t==="webTransform"?Pb({stdioItem:e,index:r,newTransforms:i,direction:s}):Ob({stdioItem:e,index:r,newTransforms:i,direction:s,encoding:o}),Tb=({stdioItem:e,stdioItem:{value:{transform:t,transform:{writableObjectMode:r,readableObjectMode:i},objectMode:n=i}},optionName:s})=>{if(n&&!i)throw new TypeError(`The \`${s}.objectMode\` option can only be \`true\` if \`new Duplex({objectMode: true})\` is used.`);if(!n&&i)throw new TypeError(`The \`${s}.objectMode\` option cannot be \`false\` if \`new Duplex({objectMode: true})\` is used.`);return{...e,value:{transform:t,writableObjectMode:r,readableObjectMode:i}}},Pb=({stdioItem:e,stdioItem:{value:t},index:r,newTransforms:i,direction:n})=>{let{transform:s,objectMode:o}=V(t)?t:{transform:t},{writableObjectMode:a,readableObjectMode:c}=Ts(o,r,i,n);return{...e,value:{transform:s,writableObjectMode:a,readableObjectMode:c}}},Ob=({stdioItem:e,stdioItem:{value:t},index:r,newTransforms:i,direction:n,encoding:s})=>{let{transform:o,final:a,binary:c=!1,preserveNewlines:d=!1,objectMode:p}=V(t)?t:{transform:t},u=c||oe.has(s),{writableObjectMode:l,readableObjectMode:m}=Ts(p,r,i,n);return{...e,value:{transform:o,final:a,binary:u,preserveNewlines:d,writableObjectMode:l,readableObjectMode:m}}},Ib=(e,t)=>t==="input"?e.reverse():e;import Ps from"process";var Dd=(e,t,r)=>{let i=e.map(n=>Rb(n,t));if(i.includes("input")&&i.includes("output"))throw new TypeError(`The \`${r}\` option must not be an array of both readable and writable values.`);return i.find(Boolean)??Lb},Rb=({type:e,value:t},r)=>jb[r]??Ld[e](t),jb=["input","output","output"],Pt=()=>{},Os=()=>"input",Ld={generator:Pt,asyncGenerator:Pt,fileUrl:Pt,filePath:Pt,iterable:Os,asyncIterable:Os,uint8Array:Os,webStream:e=>_i(e)?"output":"input",nodeStream(e){return ot(e,{checkOpen:!1})?bs(e,{checkOpen:!1})?void 0:"input":"output"},webTransform:Pt,duplex:Pt,native(e){let t=Db(e);if(t!==void 0)return t;if(be(e,{checkOpen:!1}))return Ld.nodeStream(e)}},Db=e=>{if([0,Ps.stdin].includes(e))return"input";if([1,2,Ps.stdout,Ps.stderr].includes(e))return"output"},Lb="output";var Md=(e,t)=>t&&!e.includes("ipc")?[...e,"ipc"]:e;var Fd=({stdio:e,ipc:t,buffer:r,...i},n,s)=>{let o=Mb(e,i).map((a,c)=>Bd(a,c));return s?Bb(o,r,n):Md(o,t)},Mb=(e,t)=>{if(e===void 0)return ue.map(i=>t[i]);if(Fb(t))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${ue.map(i=>`\`${i}\``).join(", ")}`);if(typeof e=="string")return[e,e,e];if(!Array.isArray(e))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof e}\``);let r=Math.max(e.length,ue.length);return Array.from({length:r},(i,n)=>e[n])},Fb=e=>ue.some(t=>e[t]!==void 0),Bd=(e,t)=>Array.isArray(e)?e.map(r=>Bd(r,t)):e??(t>=ue.length?"ignore":"pipe"),Bb=(e,t,r)=>e.map((i,n)=>!t[n]&&n!==0&&!wt(r,n)&&Ub(i)?"ignore":i),Ub=e=>e==="pipe"||Array.isArray(e)&&e.every(t=>t==="pipe");import{readFileSync as Nb}from"fs";import Gb from"tty";var Nd=({stdioItem:e,stdioItem:{type:t},isStdioArray:r,fdNumber:i,direction:n,isSync:s})=>!r||t!=="native"?e:s?zb({stdioItem:e,fdNumber:i,direction:n}):Hb({stdioItem:e,fdNumber:i}),zb=({stdioItem:e,stdioItem:{value:t,optionName:r},fdNumber:i,direction:n})=>{let s=Vb({value:t,optionName:r,fdNumber:i,direction:n});if(s!==void 0)return s;if(be(t,{checkOpen:!1}))throw new TypeError(`The \`${r}: Stream\` option cannot both be an array and include a stream with synchronous methods.`);return e},Vb=({value:e,optionName:t,fdNumber:r,direction:i})=>{let n=Wb(e,r);if(n!==void 0){if(i==="output")return{type:"fileNumber",value:n,optionName:t};if(Gb.isatty(n))throw new TypeError(`The \`${t}: ${Kr(e)}\` option is invalid: it cannot be a TTY with synchronous methods.`);return{type:"uint8Array",value:Me(Nb(n)),optionName:t}}},Wb=(e,t)=>{if(e==="inherit")return t;if(typeof e=="number")return e;let r=Tr.indexOf(e);if(r!==-1)return r},Hb=({stdioItem:e,stdioItem:{value:t,optionName:r},fdNumber:i})=>t==="inherit"?{type:"nodeStream",value:Ud(i,t,r),optionName:r}:typeof t=="number"?{type:"nodeStream",value:Ud(t,t,r),optionName:r}:be(t,{checkOpen:!1})?{type:"nodeStream",value:t,optionName:r}:e,Ud=(e,t,r)=>{let i=Tr[e];if(i===void 0)throw new TypeError(`The \`${r}: ${t}\` option is invalid: no such standard stream.`);return i};var Gd=({input:e,inputFile:t},r)=>r===0?[...Kb(e),...Jb(t)]:[],Kb=e=>e===void 0?[]:[{type:Yb(e),value:e,optionName:"input"}],Yb=e=>{if(ot(e,{checkOpen:!1}))return"nodeStream";if(typeof e=="string")return"string";if(K(e))return"uint8Array";throw new Error("The `input` option must be a string, a Uint8Array or a Node.js Readable stream.")},Jb=e=>e===void 0?[]:[{...Xb(e),optionName:"inputFile"}],Xb=e=>{if(gi(e))return{type:"fileUrl",value:e};if(As(e))return{type:"filePath",value:{file:e}};throw new Error("The `inputFile` option must be a file path string or a file URL.")};var zd=e=>e.filter((t,r)=>e.every((i,n)=>t.value!==i.value||r>=n||t.type==="generator"||t.type==="asyncGenerator")),Vd=({stdioItem:{type:e,value:t,optionName:r},direction:i,fileDescriptors:n,isSync:s})=>{let o=Qb(n,e);if(o.length!==0){if(s){Zb({otherStdioItems:o,type:e,value:t,optionName:r,direction:i});return}if(Od.has(e))return Wd({otherStdioItems:o,type:e,value:t,optionName:r,direction:i});Id.has(e)&&tx({otherStdioItems:o,type:e,value:t,optionName:r})}},Qb=(e,t)=>e.flatMap(({direction:r,stdioItems:i})=>i.filter(n=>n.type===t).map((n=>({...n,direction:r})))),Zb=({otherStdioItems:e,type:t,value:r,optionName:i,direction:n})=>{Es.has(t)&&Wd({otherStdioItems:e,type:t,value:r,optionName:i,direction:n})},Wd=({otherStdioItems:e,type:t,value:r,optionName:i,direction:n})=>{let s=e.filter(a=>ex(a,r));if(s.length===0)return;let o=s.find(a=>a.direction!==n);return Hd(o,i,t),n==="output"?s[0].stream:void 0},ex=({type:e,value:t},r)=>e==="filePath"?t.file===r.file:e==="fileUrl"?t.href===r.href:t===r,tx=({otherStdioItems:e,type:t,value:r,optionName:i})=>{let n=e.find(({value:{transform:s}})=>s===r.transform);Hd(n,i,t)},Hd=(e,t,r)=>{if(e!==void 0)throw new TypeError(`The \`${e.optionName}\` and \`${t}\` options must not target ${Ke[r]} that is the same.`)};var xi=(e,t,r,i)=>{let s=Fd(t,r,i).map((a,c)=>rx({stdioOption:a,fdNumber:c,options:t,isSync:i})),o=dx({initialFileDescriptors:s,addProperties:e,options:t,isSync:i});return t.stdio=o.map(({stdioItems:a})=>mx(a)),o},rx=({stdioOption:e,fdNumber:t,options:r,isSync:i})=>{let n=Pr(t),{stdioItems:s,isStdioArray:o}=ix({stdioOption:e,fdNumber:t,options:r,optionName:n}),a=Dd(s,t,n),c=s.map(u=>Nd({stdioItem:u,isStdioArray:o,fdNumber:t,direction:a,isSync:i})),d=jd(c,n,a,r),p=Rd(d,a);return px(d,p),{direction:a,objectMode:p,stdioItems:d}},ix=({stdioOption:e,fdNumber:t,options:r,optionName:i})=>{let s=[...(Array.isArray(e)?e:[e]).map(c=>nx(c,i)),...Gd(r,t)],o=zd(s),a=o.length>1;return sx(o,a,i),ax(o),{stdioItems:o,isStdioArray:a}},nx=(e,t)=>({type:vd(e,t),value:e,optionName:t}),sx=(e,t,r)=>{if(e.length===0)throw new TypeError(`The \`${r}\` option must not be an empty array.`);if(t){for(let{value:i,optionName:n}of e)if(ox.has(i))throw new Error(`The \`${n}\` option must not include \`${i}\`.`)}},ox=new Set(["ignore","ipc"]),ax=e=>{for(let t of e)cx(t)},cx=({type:e,value:t,optionName:r})=>{if(Cd(t))throw new TypeError(`The \`${r}: URL\` option must use the \`file:\` scheme.
|
|
69
|
+
For example, you can use the \`pathToFileURL()\` method of the \`url\` core module.`);if(Ed(e,t))throw new TypeError(`The \`${r}: { file: '...' }\` option must be used instead of \`${r}: '...'\`.`)},px=(e,t)=>{if(!t)return;let r=e.find(({type:i})=>bi.has(i));if(r!==void 0)throw new TypeError(`The \`${r.optionName}\` option cannot use both files and transforms in objectMode.`)},dx=({initialFileDescriptors:e,addProperties:t,options:r,isSync:i})=>{let n=[];try{for(let s of e)n.push(ux({fileDescriptor:s,fileDescriptors:n,addProperties:t,options:r,isSync:i}));return n}catch(s){throw Is(n),s}},ux=({fileDescriptor:{direction:e,objectMode:t,stdioItems:r},fileDescriptors:i,addProperties:n,options:s,isSync:o})=>{let a=r.map(c=>lx({stdioItem:c,addProperties:n,direction:e,options:s,fileDescriptors:i,isSync:o}));return{direction:e,objectMode:t,stdioItems:a}},lx=({stdioItem:e,addProperties:t,direction:r,options:i,fileDescriptors:n,isSync:s})=>{let o=Vd({stdioItem:e,direction:r,fileDescriptors:n,isSync:s});return o!==void 0?{...e,stream:o}:{...e,...t[r][e.type](e,i)}},Is=e=>{for(let{stdioItems:t}of e)for(let{stream:r}of t)r!==void 0&&!fe(r)&&r.destroy()},mx=e=>{if(e.length>1)return e.some(({value:i})=>i==="overlapped")?"overlapped":"pipe";let[{type:t,value:r}]=e;return t==="native"?r:"pipe"};var Jd=(e,t)=>xi(yx,e,t,!0),Ae=({type:e,optionName:t})=>{Xd(t,Ke[e])},hx=({optionName:e,value:t})=>((t==="ipc"||t==="overlapped")&&Xd(e,`"${t}"`),{}),Xd=(e,t)=>{throw new TypeError(`The \`${e}\` option cannot be ${t} with synchronous methods.`)},Yd={generator(){},asyncGenerator:Ae,webStream:Ae,nodeStream:Ae,webTransform:Ae,duplex:Ae,asyncIterable:Ae,native:hx},yx={input:{...Yd,fileUrl:({value:e})=>({contents:[Me(Kd(e))]}),filePath:({value:{file:e}})=>({contents:[Me(Kd(e))]}),fileNumber:Ae,iterable:({value:e})=>({contents:[...e]}),string:({value:e})=>({contents:[e]}),uint8Array:({value:e})=>({contents:[e]})},output:{...Yd,fileUrl:({value:e})=>({path:e}),filePath:({value:{file:e,append:t}})=>({path:e,append:t}),fileNumber:({value:e})=>({path:e}),iterable:Ae,string:Ae,uint8Array:Ae}};var Ue=(e,{stripFinalNewline:t},r)=>Rs(t,r)&&e!==void 0&&!Array.isArray(e)?At(e):e,Rs=(e,t)=>t==="all"?e[1]||e[2]:e[t];import{Transform as Dx,getDefaultHighWaterMark as cu}from"stream";var wi=(e,t,r,i)=>e||r?void 0:Zd(t,i),Ds=(e,t,r)=>r?e.flatMap(i=>Qd(i,t)):Qd(e,t),Qd=(e,t)=>{let{transform:r,final:i}=Zd(t,{});return[...r(e),...i()]},Zd=(e,t)=>(t.previousChunks="",{transform:fx.bind(void 0,t,e),final:_x.bind(void 0,t)}),fx=function*(e,t,r){if(typeof r!="string"){yield r;return}let{previousChunks:i}=e,n=-1;for(let s=0;s<r.length;s+=1)if(r[s]===`
|
|
70
|
+
`){let o=gx(r,s,t,e),a=r.slice(n+1,s+1-o);i.length>0&&(a=js(i,a),i=""),yield a,n=s}n!==r.length-1&&(i=js(i,r.slice(n+1))),e.previousChunks=i},gx=(e,t,r,i)=>r?0:(i.isWindowsNewline=t!==0&&e[t-1]==="\r",i.isWindowsNewline?2:1),_x=function*({previousChunks:e}){e.length>0&&(yield e)},eu=({binary:e,preserveNewlines:t,readableObjectMode:r,state:i})=>e||t||r?void 0:{transform:bx.bind(void 0,i)},bx=function*({isWindowsNewline:e=!1},t){let{unixNewline:r,windowsNewline:i,LF:n,concatBytes:s}=typeof t=="string"?xx:kx;if(t.at(-1)===n){yield t;return}yield s(t,e?i:r)},js=(e,t)=>`${e}${t}`,xx={windowsNewline:`\r
|
|
71
71
|
`,unixNewline:`
|
|
72
72
|
`,LF:`
|
|
73
|
-
`,concatBytes:
|
|
73
|
+
`,concatBytes:js},wx=(e,t)=>{let r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r},kx={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:wx};import{Buffer as qx}from"buffer";var tu=(e,t)=>e?void 0:vx.bind(void 0,t),vx=function*(e,t){if(typeof t!="string"&&!K(t)&&!qx.isBuffer(t))throw new TypeError(`The \`${e}\` option's transform must use "objectMode: true" to receive as input: ${typeof t}.`);yield t},ru=(e,t)=>e?Sx.bind(void 0,t):$x.bind(void 0,t),Sx=function*(e,t){iu(e,t),yield t},$x=function*(e,t){if(iu(e,t),typeof t!="string"&&!K(t))throw new TypeError(`The \`${e}\` option's function must yield a string or an Uint8Array, not ${typeof t}.`);yield t},iu=(e,t)=>{if(t==null)throw new TypeError(`The \`${e}\` option's function must not call \`yield ${t}\`.
|
|
74
74
|
Instead, \`yield\` should either be called with a value, or not be called at all. For example:
|
|
75
|
-
if (condition) { yield value; }`)};import{Buffer as $x}from"buffer";import{StringDecoder as Ax}from"string_decoder";var wi=(e,t,r)=>{if(r)return;if(e)return{transform:Cx.bind(void 0,new TextEncoder)};let i=new Ax(t);return{transform:Ex.bind(void 0,i),final:Tx.bind(void 0,i)}},Cx=function*(e,t){$x.isBuffer(t)?yield Me(t):typeof t=="string"?yield e.encode(t):yield t},Ex=function*(e,t){yield H(t)?e.write(t):t},Tx=function*(e){let t=e.end();t!==""&&(yield t)};import{callbackify as iu}from"util";var Ds=iu(async(e,t,r,i)=>{t.currentIterable=e(...r);try{for await(let n of t.currentIterable)i.push(n)}finally{delete t.currentIterable}}),ki=async function*(e,t,r){if(r===t.length){yield e;return}let{transform:i=Ox}=t[r];for await(let n of i(e))yield*ki(n,t,r+1)},nu=async function*(e){for(let[t,{final:r}]of Object.entries(e))yield*Px(r,Number(t),e)},Px=async function*(e,t,r){if(e!==void 0)for await(let i of e())yield*ki(i,r,t+1)},su=iu(async({currentIterable:e},t)=>{if(e!==void 0){await(t?e.throw(t):e.return());return}if(t)throw t}),Ox=function*(e){yield e};var Ls=(e,t,r,i)=>{try{for(let n of e(...t))r.push(n);i()}catch(n){i(n)}},ou=(e,t)=>[...t.flatMap(r=>[...at(r,e,0)]),...tr(e)],at=function*(e,t,r){if(r===t.length){yield e;return}let{transform:i=Rx}=t[r];for(let n of i(e))yield*at(n,t,r+1)},tr=function*(e){for(let[t,{final:r}]of Object.entries(e))yield*Ix(r,Number(t),e)},Ix=function*(e,t,r){if(e!==void 0)for(let i of e())yield*at(i,r,t+1)},Rx=function*(e){yield e};var Ms=({value:e,value:{transform:t,final:r,writableObjectMode:i,readableObjectMode:n},optionName:s},{encoding:o})=>{let a={},c=cu(e,o,s),d=ot(t),p=ot(r),u=d?Ds.bind(void 0,ki,a):Ls.bind(void 0,at),l=d||p?Ds.bind(void 0,nu,a):Ls.bind(void 0,tr),m=d||p?su.bind(void 0,a):void 0;return{stream:new jx({writableObjectMode:i,writableHighWaterMark:au(i),readableObjectMode:n,readableHighWaterMark:au(n),transform(f,x,_){u([f,c,0],this,_)},flush(f){l([c],this,f)},destroy:m})}},Si=(e,t,r,i)=>{let n=t.filter(({type:o})=>o==="generator"),s=i?n.reverse():n;for(let{value:o,optionName:a}of s){let c=cu(o,r,a);e=ou(c,e)}return e},cu=({transform:e,final:t,binary:r,writableObjectMode:i,readableObjectMode:n,preserveNewlines:s},o,a)=>{let c={};return[{transform:eu(i,a)},wi(r,o,i),xi(r,s,i,c),{transform:e,final:t},{transform:tu(n,a)},Zd({binary:r,preserveNewlines:s,readableObjectMode:n,state:c})].filter(Boolean)};var pu=(e,t)=>{for(let r of Dx(e))Lx(e,r,t)},Dx=e=>new Set(Object.entries(e).filter(([,{direction:t}])=>t==="input").map(([t])=>Number(t))),Lx=(e,t,r)=>{let{stdioItems:i}=e[t],n=i.filter(({contents:a})=>a!==void 0);if(n.length===0)return;if(t!==0){let[{type:a,optionName:c}]=n;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Ke[a]} with synchronous methods.`)}let o=n.map(({contents:a})=>a).map(a=>Mx(a,i));r.input=Vt(o)},Mx=(e,t)=>{let r=Si(e,t,"utf8",!0);return Fx(r),Vt(r)},Fx=e=>{let t=e.find(r=>typeof r!="string"&&!H(r));if(t!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${t}.`)};import{writeFileSync as Gx,appendFileSync as zx}from"fs";var vi=({stdioItems:e,encoding:t,verboseInfo:r,fdNumber:i})=>i!=="all"&&xt(r,i)&&!oe.has(t)&&Ux(i)&&(e.some(({type:n,value:s})=>n==="native"&&Bx.has(s))||e.every(({type:n})=>le.has(n))),Ux=e=>e===1||e===2,Bx=new Set(["pipe","overlapped"]),du=async(e,t,r,i)=>{for await(let n of e)Nx(t)||lu(n,r,i)},uu=(e,t,r)=>{for(let i of e)lu(i,t,r)},Nx=e=>e._readableState.pipes.length>0,lu=(e,t,r)=>{let i=Dr(e);Se({type:"output",verboseMessage:i,fdNumber:t,verboseInfo:r})};var mu=({fileDescriptors:e,syncResult:{output:t},options:r,isMaxBuffer:i,verboseInfo:n})=>{if(t===null)return{output:Array.from({length:3})};let s={},o=new Set([]);return{output:t.map((c,d)=>Vx({result:c,fileDescriptors:e,fdNumber:d,state:s,outputFiles:o,isMaxBuffer:i,verboseInfo:n},r)),...s}},Vx=({result:e,fileDescriptors:t,fdNumber:r,state:i,outputFiles:n,isMaxBuffer:s,verboseInfo:o},{buffer:a,encoding:c,lines:d,stripFinalNewline:p,maxBuffer:u})=>{if(e===null)return;let l=hd(e,s,u),m=Me(l),{stdioItems:h,objectMode:f}=t[r],x=Wx([m],h,c,i),{serializedResult:_,finalResult:v=_}=Hx({chunks:x,objectMode:f,encoding:c,lines:d,stripFinalNewline:p,fdNumber:r});Kx({serializedResult:_,fdNumber:r,state:i,verboseInfo:o,encoding:c,stdioItems:h,objectMode:f});let A=a[r]?v:void 0;try{return i.error===void 0&&Yx(_,h,n),A}catch(E){return i.error=E,A}},Wx=(e,t,r,i)=>{try{return Si(e,t,r,!1)}catch(n){return i.error=n,e}},Hx=({chunks:e,objectMode:t,encoding:r,lines:i,stripFinalNewline:n,fdNumber:s})=>{if(t)return{serializedResult:e};if(r==="buffer")return{serializedResult:Vt(e)};let o=Ca(e,r);return i[s]?{serializedResult:o,finalResult:js(o,!n[s],t)}:{serializedResult:o}},Kx=({serializedResult:e,fdNumber:t,state:r,verboseInfo:i,encoding:n,stdioItems:s,objectMode:o})=>{if(!vi({stdioItems:s,encoding:n,verboseInfo:i,fdNumber:t}))return;let a=js(e,!1,o);try{uu(a,t,i)}catch(c){r.error??=c}},Yx=(e,t,r)=>{for(let{path:i,append:n}of t.filter(({type:s})=>_i.has(s))){let s=typeof i=="string"?i:i.toString();n||r.has(s)?zx(i,e):(r.add(s),Gx(i,e))}};var hu=([,e,t],r)=>{if(r.all)return e===void 0?t:t===void 0?e:Array.isArray(e)?Array.isArray(t)?[...e,...t]:[...e,Be(t,r,"all")]:Array.isArray(t)?[Be(e,r,"all"),...t]:H(e)&&H(t)?zn([e,t]):`${e}${t}`};import{once as Fs}from"events";var yu=async(e,t)=>{let[r,i]=await Jx(e);return t.isForcefullyTerminated??=!1,[r,i]},Jx=async e=>{let[t,r]=await Promise.allSettled([Fs(e,"spawn"),Fs(e,"exit")]);return t.status==="rejected"?[]:r.status==="rejected"?fu(e):r.value},fu=async e=>{try{return await Fs(e,"exit")}catch{return fu(e)}},gu=async e=>{let[t,r]=await e;if(!Xx(t,r)&&Us(t,r))throw new ge;return[t,r]},Xx=(e,t)=>e===void 0&&t===void 0,Us=(e,t)=>e!==0||t!==null;var _u=({error:e,status:t,signal:r,output:i},{maxBuffer:n})=>{let s=Qx(e,t,r),o=s?.code==="ETIMEDOUT",a=md(s,i,n);return{resultError:s,exitCode:t,signal:r,timedOut:o,isMaxBuffer:a}},Qx=(e,t,r)=>e!==void 0?e:Us(t,r)?new ge:void 0;var bu=(e,t,r)=>{let{file:i,commandArguments:n,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:d,fileDescriptors:p}=ew(e,t,r),u=iw({file:i,commandArguments:n,options:d,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:p,startTime:a});return Et(u,c,d)},ew=(e,t,r)=>{let{command:i,escapedCommand:n,startTime:s,verboseInfo:o}=Mr(e,t,r),a=tw(r),{file:c,commandArguments:d,options:p}=si(e,t,a);rw(p);let u=Yd(p,o);return{file:c,commandArguments:d,command:i,escapedCommand:n,startTime:s,verboseInfo:o,options:p,fileDescriptors:u}},tw=e=>e.node&&!e.ipc?{...e,ipc:!1}:e,rw=({ipc:e,ipcInput:t,detached:r,cancelSignal:i})=>{t&&qi("ipcInput"),e&&qi("ipc: true"),r&&qi("detached: true"),i&&qi("cancelSignal")},qi=e=>{throw new TypeError(`The "${e}" option cannot be used with synchronous methods.`)},iw=({file:e,commandArguments:t,options:r,command:i,escapedCommand:n,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=nw({file:e,commandArguments:t,options:r,command:i,escapedCommand:n,fileDescriptors:o,startTime:a});if(c.failed)return c;let{resultError:d,exitCode:p,signal:u,timedOut:l,isMaxBuffer:m}=_u(c,r),{output:h,error:f=d}=mu({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:m,verboseInfo:s}),x=h.map((v,A)=>Be(v,r,A)),_=Be(hu(h,r),r,"all");return ow({error:f,exitCode:p,signal:u,timedOut:l,isMaxBuffer:m,stdio:x,all:_,options:r,command:i,escapedCommand:n,startTime:a})},nw=({file:e,commandArguments:t,options:r,command:i,escapedCommand:n,fileDescriptors:s,startTime:o})=>{try{pu(s,r);let a=sw(r);return Zx(...oi(e,t,a))}catch(a){return Ct({error:a,command:i,escapedCommand:n,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},sw=({encoding:e,maxBuffer:t,...r})=>({...r,encoding:"buffer",maxBuffer:hi(t)}),ow=({error:e,exitCode:t,signal:r,timedOut:i,isMaxBuffer:n,stdio:s,all:o,options:a,command:c,escapedCommand:d,startTime:p})=>e===void 0?yi({command:c,escapedCommand:d,stdio:s,all:o,ipcOutput:[],options:a,startTime:p}):er({error:e,command:c,escapedCommand:d,timedOut:i,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:n,isForcefullyTerminated:!1,exitCode:t,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:p,isSync:!0});import{setMaxListeners as H0}from"events";import{spawn as K0}from"child_process";import vu from"process";import{once as Bs,on as aw}from"events";var xu=({anyProcess:e,channel:t,isSubprocess:r,ipc:i},{reference:n=!0,filter:s}={})=>(St({methodName:"getOneMessage",isSubprocess:r,ipc:i,isConnected:Zr(e)}),cw({anyProcess:e,channel:t,isSubprocess:r,filter:s,reference:n})),cw=async({anyProcess:e,channel:t,isSubprocess:r,filter:i,reference:n})=>{Yr(t,n);let s=He(e,t,r),o=new AbortController;try{return await Promise.race([pw(s,i,o),dw(s,r,o),uw(s,r,o)])}catch(a){throw vt(e),a}finally{o.abort(),Jr(t,n)}},pw=async(e,t,{signal:r})=>{if(t===void 0){let[i]=await Bs(e,"message",{signal:r});return i}for await(let[i]of aw(e,"message",{signal:r}))if(t(i))return i},dw=async(e,t,{signal:r})=>{await Bs(e,"disconnect",{signal:r}),op(t)},uw=async(e,t,{signal:r})=>{let[i]=await Bs(e,"strict:error",{signal:r});throw Wr(i,t)};import{once as ku,on as lw}from"events";var Su=({anyProcess:e,channel:t,isSubprocess:r,ipc:i},{reference:n=!0}={})=>Ns({anyProcess:e,channel:t,isSubprocess:r,ipc:i,shouldAwait:!r,reference:n}),Ns=({anyProcess:e,channel:t,isSubprocess:r,ipc:i,shouldAwait:n,reference:s})=>{St({methodName:"getEachMessage",isSubprocess:r,ipc:i,isConnected:Zr(e)}),Yr(t,s);let o=He(e,t,r),a=new AbortController,c={};return mw(e,o,a),hw({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),yw({anyProcess:e,channel:t,ipcEmitter:o,isSubprocess:r,shouldAwait:n,controller:a,state:c,reference:s})},mw=async(e,t,r)=>{try{await ku(t,"disconnect",{signal:r.signal}),r.abort()}catch{}},hw=async({ipcEmitter:e,isSubprocess:t,controller:r,state:i})=>{try{let[n]=await ku(e,"strict:error",{signal:r.signal});i.error=Wr(n,t),r.abort()}catch{}},yw=async function*({anyProcess:e,channel:t,ipcEmitter:r,isSubprocess:i,shouldAwait:n,controller:s,state:o,reference:a}){try{for await(let[c]of lw(r,"message",{signal:s.signal}))wu(o),yield c}catch{wu(o)}finally{s.abort(),Jr(t,a),i||vt(e),n&&await e}},wu=({error:e})=>{if(e)throw e};var qu=(e,{ipc:t})=>{Object.assign(e,Au(e,!1,t))},$u=()=>{let e=vu,t=!0,r=vu.channel!==void 0;return{...Au(e,t,r),getCancelSignal:Ip.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r})}},Au=(e,t,r)=>({sendMessage:ii.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r}),getOneMessage:xu.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r}),getEachMessage:Su.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r})});import{ChildProcess as fw}from"child_process";import{PassThrough as gw,Readable as _w,Writable as bw,Duplex as xw}from"stream";var Cu=({error:e,command:t,escapedCommand:r,fileDescriptors:i,options:n,startTime:s,verboseInfo:o})=>{Os(i);let a=new fw;ww(a,i),Object.assign(a,{readable:kw,writable:Sw,duplex:vw});let c=Ct({error:e,command:t,escapedCommand:r,fileDescriptors:i,options:n,startTime:s,isSync:!1}),d=qw(c,o,n);return{subprocess:a,promise:d}},ww=(e,t)=>{let r=rr(),i=rr(),n=rr(),s=Array.from({length:t.length-3},rr),o=rr(),a=[r,i,n,...s];Object.assign(e,{stdin:r,stdout:i,stderr:n,all:o,stdio:a})},rr=()=>{let e=new gw;return e.end(),e},kw=()=>new _w({read(){}}),Sw=()=>new bw({write(){}}),vw=()=>new xw({read(){},write(){}}),qw=async(e,t,r)=>Et(e,t,r);import{createReadStream as Eu,createWriteStream as Tu}from"fs";import{Buffer as $w}from"buffer";import{Readable as ir,Writable as Aw,Duplex as Cw}from"stream";var Ou=(e,t)=>bi(Ew,e,t,!1),nr=({type:e,optionName:t})=>{throw new TypeError(`The \`${t}\` option cannot be ${Ke[e]}.`)},Pu={fileNumber:nr,generator:Ms,asyncGenerator:Ms,nodeStream:({value:e})=>({stream:e}),webTransform({value:{transform:e,writableObjectMode:t,readableObjectMode:r}}){let i=t||r;return{stream:Cw.fromWeb(e,{objectMode:i})}},duplex:({value:{transform:e}})=>({stream:e}),native(){}},Ew={input:{...Pu,fileUrl:({value:e})=>({stream:Eu(e)}),filePath:({value:{file:e}})=>({stream:Eu(e)}),webStream:({value:e})=>({stream:ir.fromWeb(e)}),iterable:({value:e})=>({stream:ir.from(e)}),asyncIterable:({value:e})=>({stream:ir.from(e)}),string:({value:e})=>({stream:ir.from(e)}),uint8Array:({value:e})=>({stream:ir.from($w.from(e))})},output:{...Pu,fileUrl:({value:e})=>({stream:Tu(e)}),filePath:({value:{file:e,append:t}})=>({stream:Tu(e,t?{flags:"a"}:{})}),webStream:({value:e})=>({stream:Aw.fromWeb(e)}),iterable:nr,asyncIterable:nr,string:nr,uint8Array:nr}};import{on as Tw,once as Iu}from"events";import{PassThrough as Pw,getDefaultHighWaterMark as Ow}from"stream";import{finished as Du}from"stream/promises";function ct(e){if(!Array.isArray(e))throw new TypeError(`Expected an array, got \`${typeof e}\`.`);for(let n of e)zs(n);let t=e.some(({readableObjectMode:n})=>n),r=Iw(e,t),i=new Gs({objectMode:t,writableHighWaterMark:r,readableHighWaterMark:r});for(let n of e)i.add(n);return i}var Iw=(e,t)=>{if(e.length===0)return Ow(t);let r=e.filter(({readableObjectMode:i})=>i===t).map(({readableHighWaterMark:i})=>i);return Math.max(...r)},Gs=class extends Pw{#t=new Set([]);#r=new Set([]);#e=new Set([]);#i;#s=Symbol("unpipe");#n=new WeakMap;add(t){if(zs(t),this.#t.has(t))return;this.#t.add(t),this.#i??=Rw(this,this.#t,this.#s);let r=Lw({passThroughStream:this,stream:t,streams:this.#t,ended:this.#r,aborted:this.#e,onFinished:this.#i,unpipeEvent:this.#s});this.#n.set(t,r),t.pipe(this,{end:!1})}async remove(t){if(zs(t),!this.#t.has(t))return!1;let r=this.#n.get(t);return r===void 0?!1:(this.#n.delete(t),t.unpipe(this),await r,!0)}},Rw=async(e,t,r)=>{$i(e,Ru);let i=new AbortController;try{await Promise.race([jw(e,i),Dw(e,t,r,i)])}finally{i.abort(),$i(e,-Ru)}},jw=async(e,{signal:t})=>{try{await Du(e,{signal:t,cleanup:!0})}catch(r){throw Lu(e,r),r}},Dw=async(e,t,r,{signal:i})=>{for await(let[n]of Tw(e,"unpipe",{signal:i}))t.has(n)&&n.emit(r)},zs=e=>{if(typeof e?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof e}\`.`)},Lw=async({passThroughStream:e,stream:t,streams:r,ended:i,aborted:n,onFinished:s,unpipeEvent:o})=>{$i(e,ju);let a=new AbortController;try{await Promise.race([Mw(s,t,a),Fw({passThroughStream:e,stream:t,streams:r,ended:i,aborted:n,controller:a}),Uw({stream:t,streams:r,ended:i,aborted:n,unpipeEvent:o,controller:a})])}finally{a.abort(),$i(e,-ju)}r.size>0&&r.size===i.size+n.size&&(i.size===0&&n.size>0?Vs(e):Bw(e))},Mw=async(e,t,{signal:r})=>{try{await e,r.aborted||Vs(t)}catch(i){r.aborted||Lu(t,i)}},Fw=async({passThroughStream:e,stream:t,streams:r,ended:i,aborted:n,controller:{signal:s}})=>{try{await Du(t,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(t)&&i.add(t)}catch(o){if(s.aborted||!r.has(t))return;Mu(o)?n.add(t):Fu(e,o)}},Uw=async({stream:e,streams:t,ended:r,aborted:i,unpipeEvent:n,controller:{signal:s}})=>{if(await Iu(e,n,{signal:s}),!e.readable)return Iu(s,"abort",{signal:s});t.delete(e),r.delete(e),i.delete(e)},Bw=e=>{e.writable&&e.end()},Lu=(e,t)=>{Mu(t)?Vs(e):Fu(e,t)},Mu=e=>e?.code==="ERR_STREAM_PREMATURE_CLOSE",Vs=e=>{(e.readable||e.writable)&&e.destroy()},Fu=(e,t)=>{e.destroyed||(e.once("error",Nw),e.destroy(t))},Nw=()=>{},$i=(e,t)=>{let r=e.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&e.setMaxListeners(r+t)},Ru=2,ju=1;import{finished as Uu}from"stream/promises";var Pt=(e,t)=>{e.pipe(t),Gw(e,t),zw(e,t)},Gw=async(e,t)=>{if(!(fe(e)||fe(t))){try{await Uu(e,{cleanup:!0,readable:!0,writable:!1})}catch{}Ws(t)}},Ws=e=>{e.writable&&e.end()},zw=async(e,t)=>{if(!(fe(e)||fe(t))){try{await Uu(t,{cleanup:!0,readable:!1,writable:!0})}catch{}Hs(e)}},Hs=e=>{e.readable&&e.destroy()};var Bu=(e,t,r)=>{let i=new Map;for(let[n,{stdioItems:s,direction:o}]of Object.entries(t)){for(let{stream:a}of s.filter(({type:c})=>le.has(c)))Vw(e,a,o,n);for(let{stream:a}of s.filter(({type:c})=>!le.has(c)))Hw({subprocess:e,stream:a,direction:o,fdNumber:n,pipeGroups:i,controller:r})}for(let[n,s]of i.entries()){let o=s.length===1?s[0]:ct(s);Pt(o,n)}},Vw=(e,t,r,i)=>{r==="output"?Pt(e.stdio[i],t):Pt(t,e.stdio[i]);let n=Ww[i];n!==void 0&&(e[n]=t),e.stdio[i]=t},Ww=["stdin","stdout","stderr"],Hw=({subprocess:e,stream:t,direction:r,fdNumber:i,pipeGroups:n,controller:s})=>{if(t===void 0)return;Kw(t,s);let[o,a]=r==="output"?[t,e.stdio[i]]:[e.stdio[i],t],c=n.get(o)??[];n.set(o,[...c,a])},Kw=(e,{signal:t})=>{fe(e)&&nt(e,Yw,t)},Yw=2;import{addAbortListener as Qw}from"events";var pt=[];pt.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&pt.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&pt.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Ai=e=>!!e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function",Ks=Symbol.for("signal-exit emitter"),Ys=globalThis,Jw=Object.defineProperty.bind(Object),Js=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Ys[Ks])return Ys[Ks];Jw(Ys,Ks,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(t,r){this.listeners[t].push(r)}removeListener(t,r){let i=this.listeners[t],n=i.indexOf(r);n!==-1&&(n===0&&i.length===1?i.length=0:i.splice(n,1))}emit(t,r,i){if(this.emitted[t])return!1;this.emitted[t]=!0;let n=!1;for(let s of this.listeners[t])n=s(r,i)===!0||n;return t==="exit"&&(n=this.emit("afterExit",r,i)||n),n}},Ci=class{},Xw=e=>({onExit(t,r){return e.onExit(t,r)},load(){return e.load()},unload(){return e.unload()}}),Xs=class extends Ci{onExit(){return()=>{}}load(){}unload(){}},Qs=class extends Ci{#t=Zs.platform==="win32"?"SIGINT":"SIGHUP";#r=new Js;#e;#i;#s;#n={};#o=!1;constructor(t){super(),this.#e=t,this.#n={};for(let r of pt)this.#n[r]=()=>{let i=this.#e.listeners(r),{count:n}=this.#r,s=t;if(typeof s.__signal_exit_emitter__=="object"&&typeof s.__signal_exit_emitter__.count=="number"&&(n+=s.__signal_exit_emitter__.count),i.length===n){this.unload();let o=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#t:r;o||t.kill(t.pid,a)}};this.#s=t.reallyExit,this.#i=t.emit}onExit(t,r){if(!Ai(this.#e))return()=>{};this.#o===!1&&this.load();let i=r?.alwaysLast?"afterExit":"exit";return this.#r.on(i,t),()=>{this.#r.removeListener(i,t),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#r.count+=1;for(let t of pt)try{let r=this.#n[t];r&&this.#e.on(t,r)}catch{}this.#e.emit=(t,...r)=>this.#c(t,...r),this.#e.reallyExit=t=>this.#a(t)}}unload(){this.#o&&(this.#o=!1,pt.forEach(t=>{let r=this.#n[t];if(!r)throw new Error("Listener not defined for signal: "+t);try{this.#e.removeListener(t,r)}catch{}}),this.#e.emit=this.#i,this.#e.reallyExit=this.#s,this.#r.count-=1)}#a(t){return Ai(this.#e)?(this.#e.exitCode=t||0,this.#r.emit("exit",this.#e.exitCode,null),this.#s.call(this.#e,this.#e.exitCode)):0}#c(t,...r){let i=this.#i;if(t==="exit"&&Ai(this.#e)){typeof r[0]=="number"&&(this.#e.exitCode=r[0]);let n=i.call(this.#e,t,...r);return this.#r.emit("exit",this.#e.exitCode,null),n}else return i.call(this.#e,t,...r)}},Zs=globalThis.process,{onExit:Nu,load:$O,unload:AO}=Xw(Ai(Zs)?new Qs(Zs):new Xs);var Gu=(e,{cleanup:t,detached:r},{signal:i})=>{if(!t||r)return;let n=Nu(()=>{e.kill()});Qw(i,()=>{n()})};var Vu=({source:e,sourcePromise:t,boundOptions:r,createNested:i},...n)=>{let s=Lr(),{destination:o,destinationStream:a,destinationError:c,from:d,unpipeSignal:p}=Zw(r,i,n),{sourceStream:u,sourceError:l}=t0(e,d),{options:m,fileDescriptors:h}=qe.get(e);return{sourcePromise:t,sourceStream:u,sourceOptions:m,sourceError:l,destination:o,destinationStream:a,destinationError:c,unpipeSignal:p,fileDescriptors:h,startTime:s}},Zw=(e,t,r)=>{try{let{destination:i,pipeOptions:{from:n,to:s,unpipeSignal:o}={}}=e0(e,t,...r),a=Kr(i,s);return{destination:i,destinationStream:a,from:n,unpipeSignal:o}}catch(i){return{destinationError:i}}},e0=(e,t,r,...i)=>{if(Array.isArray(r))return{destination:t(zu,e)(r,...i),pipeOptions:e};if(typeof r=="string"||r instanceof URL||Nn(r)){if(Object.keys(e).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[n,s,o]=Ar(r,...i);return{destination:t(zu)(n,s,o),pipeOptions:o}}if(qe.has(r)){if(Object.keys(e).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:i[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},zu=({options:e})=>({options:{...e,stdin:"pipe",piped:!0}}),t0=(e,t)=>{try{return{sourceStream:qt(e,t)}}catch(r){return{sourceError:r}}};var Hu=({sourceStream:e,sourceError:t,destinationStream:r,destinationError:i,fileDescriptors:n,sourceOptions:s,startTime:o})=>{let a=r0({sourceStream:e,sourceError:t,destinationStream:r,destinationError:i});if(a!==void 0)throw eo({error:a,fileDescriptors:n,sourceOptions:s,startTime:o})},r0=({sourceStream:e,sourceError:t,destinationStream:r,destinationError:i})=>{if(t!==void 0&&i!==void 0)return i;if(i!==void 0)return Hs(e),i;if(t!==void 0)return Ws(r),t},eo=({error:e,fileDescriptors:t,sourceOptions:r,startTime:i})=>Ct({error:e,command:Wu,escapedCommand:Wu,fileDescriptors:t,options:r,startTime:i,isSync:!1}),Wu="source.pipe(destination)";var Ku=async e=>{let[{status:t,reason:r,value:i=r},{status:n,reason:s,value:o=s}]=await e;if(o.pipedFrom.includes(i)||o.pipedFrom.push(i),n==="rejected")throw o;if(t==="rejected")throw i;return o};import{finished as i0}from"stream/promises";var Yu=(e,t,r)=>{let i=Ei.has(t)?s0(e,t):n0(e,t);return nt(e,a0,r.signal),nt(t,c0,r.signal),o0(t),i},n0=(e,t)=>{let r=ct([e]);return Pt(r,t),Ei.set(t,r),r},s0=(e,t)=>{let r=Ei.get(t);return r.add(e),r},o0=async e=>{try{await i0(e,{cleanup:!0,readable:!1,writable:!0})}catch{}Ei.delete(e)},Ei=new WeakMap,a0=2,c0=1;import{aborted as p0}from"util";var Ju=(e,t)=>e===void 0?[]:[d0(e,t)],d0=async(e,{sourceStream:t,mergedStream:r,fileDescriptors:i,sourceOptions:n,startTime:s})=>{await p0(e,t),await r.remove(t);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw eo({error:o,fileDescriptors:i,sourceOptions:n,startTime:s})};var Ti=(e,...t)=>{if(V(t[0]))return Ti.bind(void 0,{...e,boundOptions:{...e.boundOptions,...t[0]}});let{destination:r,...i}=Vu(e,...t),n=u0({...i,destination:r});return n.pipe=Ti.bind(void 0,{...e,source:r,sourcePromise:n,boundOptions:{}}),n},u0=async({sourcePromise:e,sourceStream:t,sourceOptions:r,sourceError:i,destination:n,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:d})=>{let p=l0(e,n);Hu({sourceStream:t,sourceError:i,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:d});let u=new AbortController;try{let l=Yu(t,s,u);return await Promise.race([Ku(p),...Ju(a,{sourceStream:t,mergedStream:l,sourceOptions:r,fileDescriptors:c,startTime:d})])}finally{u.abort()}},l0=(e,t)=>Promise.allSettled([e,t]);import{setImmediate as b0}from"timers/promises";import{on as m0}from"events";import{getDefaultHighWaterMark as h0}from"stream";var Pi=({subprocessStdout:e,subprocess:t,binary:r,shouldEncode:i,encoding:n,preserveNewlines:s})=>{let o=new AbortController;return y0(t,o),Qu({stream:e,controller:o,binary:r,shouldEncode:!e.readableObjectMode&&i,encoding:n,shouldSplit:!e.readableObjectMode,preserveNewlines:s})},y0=async(e,t)=>{try{await e}catch{}finally{t.abort()}},to=({stream:e,onStreamEnd:t,lines:r,encoding:i,stripFinalNewline:n,allMixed:s})=>{let o=new AbortController;f0(t,o,e);let a=e.readableObjectMode&&!s;return Qu({stream:e,controller:o,binary:i==="buffer",shouldEncode:!a,encoding:i,shouldSplit:!a&&r,preserveNewlines:!n})},f0=async(e,t,r)=>{try{await e}catch{r.destroy()}finally{t.abort()}},Qu=({stream:e,controller:t,binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o})=>{let a=m0(e,"data",{signal:t.signal,highWaterMark:Xu,highWatermark:Xu});return g0({onStdoutChunk:a,controller:t,binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o})},ro=h0(!0),Xu=ro,g0=async function*({onStdoutChunk:e,controller:t,binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o}){let a=_0({binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of e)yield*at(c,a,0)}catch(c){if(!t.signal.aborted)throw c}finally{yield*tr(a)}},_0=({binary:e,shouldEncode:t,encoding:r,shouldSplit:i,preserveNewlines:n})=>[wi(e,r,!t),xi(e,n,!i,{})].filter(Boolean);var Zu=async({stream:e,onStreamEnd:t,fdNumber:r,encoding:i,buffer:n,maxBuffer:s,lines:o,allMixed:a,stripFinalNewline:c,verboseInfo:d,streamInfo:p})=>{let u=x0({stream:e,onStreamEnd:t,fdNumber:r,encoding:i,allMixed:a,verboseInfo:d,streamInfo:p});if(!n){await Promise.all([w0(e),u]);return}let l=Is(c,r),m=to({stream:e,onStreamEnd:t,lines:o,encoding:i,stripFinalNewline:l,allMixed:a}),[h]=await Promise.all([k0({stream:e,iterable:m,fdNumber:r,encoding:i,maxBuffer:s,lines:o}),u]);return h},x0=async({stream:e,onStreamEnd:t,fdNumber:r,encoding:i,allMixed:n,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!vi({stdioItems:o[r]?.stdioItems,encoding:i,verboseInfo:s,fdNumber:r}))return;let a=to({stream:e,onStreamEnd:t,lines:!0,encoding:i,stripFinalNewline:!0,allMixed:n});await du(a,e,r,s)},w0=async e=>{await b0(),e.readableFlowing===null&&e.resume()},k0=async({stream:e,stream:{readableObjectMode:t},iterable:r,fdNumber:i,encoding:n,maxBuffer:s,lines:o})=>{try{return t||o?await di(r,{maxBuffer:s}):n==="buffer"?new Uint8Array(await ui(r,{maxBuffer:s})):await mi(r,{maxBuffer:s})}catch(a){return el(dd({error:a,stream:e,readableObjectMode:t,lines:o,encoding:n,fdNumber:i}))}},io=async e=>{try{return await e}catch(t){return el(t)}},el=({bufferedData:e})=>$a(e)?new Uint8Array(e):e;import{finished as S0}from"stream/promises";var sr=async(e,t,r,{isSameDirection:i,stopOnExit:n=!1}={})=>{let s=v0(e,r),o=new AbortController;try{await Promise.race([...n?[r.exitPromise]:[],S0(e,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||A0(a,t,r,i)}finally{o.abort()}},v0=(e,{originalStreams:[t],subprocess:r})=>{let i={stdinCleanedUp:!1};return e===t&&q0(e,r,i),i},q0=(e,t,r)=>{let{_destroy:i}=e;e._destroy=(...n)=>{$0(t,r),i.call(e,...n)}},$0=({exitCode:e,signalCode:t},r)=>{(e!==null||t!==null)&&(r.stdinCleanedUp=!0)},A0=(e,t,r,i)=>{if(!C0(e,t,r,i))throw e},C0=(e,t,r,i=!0)=>r.propagating?tl(e)||Oi(e):(r.propagating=!0,no(r,t)===i?tl(e):Oi(e)),no=({fileDescriptors:e},t)=>t!=="all"&&e[t].direction==="input",Oi=e=>e?.code==="ERR_STREAM_PREMATURE_CLOSE",tl=e=>e?.code==="EPIPE";var rl=({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>e.stdio.map((c,d)=>so({stream:c,fdNumber:d,encoding:t,buffer:r[d],maxBuffer:i[d],lines:n[d],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),so=async({stream:e,fdNumber:t,encoding:r,buffer:i,maxBuffer:n,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:d})=>{if(!e)return;let p=sr(e,t,d);if(no(d,t)){await p;return}let[u]=await Promise.all([Zu({stream:e,onStreamEnd:p,fdNumber:t,encoding:r,buffer:i,maxBuffer:n,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:d}),p]);return u};var il=({stdout:e,stderr:t},{all:r})=>r&&(e||t)?ct([e,t].filter(Boolean)):void 0,nl=({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>so({...E0(e,r),fdNumber:"all",encoding:t,maxBuffer:i[1]+i[2],lines:n[1]||n[2],allMixed:T0(e),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),E0=({stdout:e,stderr:t,all:r},[,i,n])=>{let s=i||n;return s?i?n?{stream:r,buffer:s}:{stream:e,buffer:s}:{stream:t,buffer:s}:{stream:r,buffer:s}},T0=({all:e,stdout:t,stderr:r})=>e&&t&&r&&t.readableObjectMode!==r.readableObjectMode;import{once as P0}from"events";var sl=e=>xt(e,"ipc"),ol=(e,t)=>{let r=Dr(e);Se({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:t})};var al=async({subprocess:e,buffer:t,maxBuffer:r,ipc:i,ipcOutput:n,verboseInfo:s})=>{if(!i)return n;let o=sl(s),a=Fe(t,"ipc"),c=Fe(r,"ipc");for await(let d of Ns({anyProcess:e,channel:e.channel,isSubprocess:!1,ipc:i,shouldAwait:!1,reference:!0}))a&&(ud(e,n,c),n.push(d)),o&&ol(d,s);return n},cl=async(e,t)=>(await Promise.allSettled([e]),t);var pl=async({subprocess:e,options:{encoding:t,buffer:r,maxBuffer:i,lines:n,timeoutDuration:s,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:d,ipc:p,ipcInput:u},context:l,verboseInfo:m,fileDescriptors:h,originalStreams:f,onInternalError:x,controller:_})=>{let v=yu(e,l),A={originalStreams:f,fileDescriptors:h,subprocess:e,exitPromise:v,propagating:!1},E=rl({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:d,verboseInfo:m,streamInfo:A}),w=nl({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:d,verboseInfo:m,streamInfo:A}),L=[],O=al({subprocess:e,buffer:r,maxBuffer:i,ipc:p,ipcOutput:L,verboseInfo:m}),R=O0(f,e,A),F=I0(h,A);try{return await Promise.race([Promise.all([{},gu(v),Promise.all(E),w,O,Gp(e,u),...R,...F]),x,R0(e,_),...Mp(e,s,l,_),...sp({subprocess:e,cancelSignal:o,gracefulCancel:a,context:l,controller:_}),...Dp({subprocess:e,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:l,controller:_})])}catch(N){return l.terminationReason??="other",Promise.all([{error:N},v,Promise.all(E.map(S=>io(S))),io(w),cl(O,L),Promise.allSettled(R),Promise.allSettled(F)])}},O0=(e,t,r)=>e.map((i,n)=>i===t.stdio[n]?void 0:sr(i,n,r)),I0=(e,t)=>e.flatMap(({stdioItems:r},i)=>r.filter(({value:n,stream:s=n})=>be(s,{checkOpen:!1})&&!fe(s)).map(({type:n,value:s,stream:o=s})=>sr(o,i,t,{isSameDirection:le.has(n),stopOnExit:n==="native"}))),R0=async(e,{signal:t})=>{let[r]=await P0(e,"error",{signal:t});throw r};var dl=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),or=(e,t,r)=>{let i=e[r];i.has(t)||i.set(t,[]);let n=i.get(t),s=ve();return n.push(s),{resolve:s.resolve.bind(s),promises:n}},Ot=async({resolve:e,promises:t},r)=>{e();let[i]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...t])]);return!i};import{Readable as j0}from"stream";import{callbackify as D0}from"util";import{finished as ul}from"stream/promises";var oo=async e=>{if(e!==void 0)try{await ao(e)}catch{}},ll=async e=>{if(e!==void 0)try{await co(e)}catch{}},ao=async e=>{await ul(e,{cleanup:!0,readable:!1,writable:!0})},co=async e=>{await ul(e,{cleanup:!0,readable:!0,writable:!1})},Ii=async(e,t)=>{if(await e,t)throw t},Ri=(e,t,r)=>{r&&!Oi(r)?e.destroy(r):t&&e.destroy()};var ml=({subprocess:e,concurrentStreams:t,encoding:r},{from:i,binary:n=!0,preserveNewlines:s=!0}={})=>{let o=n||oe.has(r),{subprocessStdout:a,waitReadableDestroy:c}=po(e,i,t),{readableEncoding:d,readableObjectMode:p,readableHighWaterMark:u}=uo(a,o),{read:l,onStdoutDataDone:m}=lo({subprocessStdout:a,subprocess:e,binary:o,encoding:r,preserveNewlines:s}),h=new j0({read:l,destroy:D0(ho.bind(void 0,{subprocessStdout:a,subprocess:e,waitReadableDestroy:c})),highWaterMark:u,objectMode:p,encoding:d});return mo({subprocessStdout:a,onStdoutDataDone:m,readable:h,subprocess:e}),h},po=(e,t,r)=>{let i=qt(e,t),n=or(r,i,"readableDestroy");return{subprocessStdout:i,waitReadableDestroy:n}},uo=({readableEncoding:e,readableObjectMode:t,readableHighWaterMark:r},i)=>i?{readableEncoding:e,readableObjectMode:t,readableHighWaterMark:r}:{readableEncoding:e,readableObjectMode:!0,readableHighWaterMark:ro},lo=({subprocessStdout:e,subprocess:t,binary:r,encoding:i,preserveNewlines:n})=>{let s=ve(),o=Pi({subprocessStdout:e,subprocess:t,binary:r,shouldEncode:!r,encoding:i,preserveNewlines:n});return{read(){L0(this,o,s)},onStdoutDataDone:s}},L0=async(e,t,r)=>{try{let{value:i,done:n}=await t.next();n?r.resolve():e.push(i)}catch{}},mo=async({subprocessStdout:e,onStdoutDataDone:t,readable:r,subprocess:i,subprocessStdin:n})=>{try{await co(e),await i,await oo(n),await t,r.readable&&r.push(null)}catch(s){await oo(n),hl(r,s)}},ho=async({subprocessStdout:e,subprocess:t,waitReadableDestroy:r},i)=>{await Ot(r,t)&&(hl(e,i),await Ii(t,i))},hl=(e,t)=>{Ri(e,e.readable,t)};import{Writable as M0}from"stream";import{callbackify as yl}from"util";var fl=({subprocess:e,concurrentStreams:t},{to:r}={})=>{let{subprocessStdin:i,waitWritableFinal:n,waitWritableDestroy:s}=yo(e,r,t),o=new M0({...fo(i,e,n),destroy:yl(_o.bind(void 0,{subprocessStdin:i,subprocess:e,waitWritableFinal:n,waitWritableDestroy:s})),highWaterMark:i.writableHighWaterMark,objectMode:i.writableObjectMode});return go(i,o),o},yo=(e,t,r)=>{let i=Kr(e,t),n=or(r,i,"writableFinal"),s=or(r,i,"writableDestroy");return{subprocessStdin:i,waitWritableFinal:n,waitWritableDestroy:s}},fo=(e,t,r)=>({write:F0.bind(void 0,e),final:yl(U0.bind(void 0,e,t,r))}),F0=(e,t,r,i)=>{e.write(t,r)?i():e.once("drain",i)},U0=async(e,t,r)=>{await Ot(r,t)&&(e.writable&&e.end(),await t)},go=async(e,t,r)=>{try{await ao(e),t.writable&&t.end()}catch(i){await ll(r),gl(t,i)}},_o=async({subprocessStdin:e,subprocess:t,waitWritableFinal:r,waitWritableDestroy:i},n)=>{await Ot(r,t),await Ot(i,t)&&(gl(e,n),await Ii(t,n))},gl=(e,t)=>{Ri(e,e.writable,t)};import{Duplex as B0}from"stream";import{callbackify as N0}from"util";var _l=({subprocess:e,concurrentStreams:t,encoding:r},{from:i,to:n,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||oe.has(r),{subprocessStdout:c,waitReadableDestroy:d}=po(e,i,t),{subprocessStdin:p,waitWritableFinal:u,waitWritableDestroy:l}=yo(e,n,t),{readableEncoding:m,readableObjectMode:h,readableHighWaterMark:f}=uo(c,a),{read:x,onStdoutDataDone:_}=lo({subprocessStdout:c,subprocess:e,binary:a,encoding:r,preserveNewlines:o}),v=new B0({read:x,...fo(p,e,u),destroy:N0(G0.bind(void 0,{subprocessStdout:c,subprocessStdin:p,subprocess:e,waitReadableDestroy:d,waitWritableFinal:u,waitWritableDestroy:l})),readableHighWaterMark:f,writableHighWaterMark:p.writableHighWaterMark,readableObjectMode:h,writableObjectMode:p.writableObjectMode,encoding:m});return mo({subprocessStdout:c,onStdoutDataDone:_,readable:v,subprocess:e,subprocessStdin:p}),go(p,v,c),v},G0=async({subprocessStdout:e,subprocessStdin:t,subprocess:r,waitReadableDestroy:i,waitWritableFinal:n,waitWritableDestroy:s},o)=>{await Promise.all([ho({subprocessStdout:e,subprocess:r,waitReadableDestroy:i},o),_o({subprocessStdin:t,subprocess:r,waitWritableFinal:n,waitWritableDestroy:s},o)])};var bo=(e,t,{from:r,binary:i=!1,preserveNewlines:n=!1}={})=>{let s=i||oe.has(t),o=qt(e,r),a=Pi({subprocessStdout:o,subprocess:e,binary:s,shouldEncode:!0,encoding:t,preserveNewlines:n});return z0(a,o,e)},z0=async function*(e,t,r){try{yield*e}finally{t.readable&&t.destroy(),await r}};var bl=(e,{encoding:t})=>{let r=dl();e.readable=ml.bind(void 0,{subprocess:e,concurrentStreams:r,encoding:t}),e.writable=fl.bind(void 0,{subprocess:e,concurrentStreams:r}),e.duplex=_l.bind(void 0,{subprocess:e,concurrentStreams:r,encoding:t}),e.iterable=bo.bind(void 0,e,t),e[Symbol.asyncIterator]=bo.bind(void 0,e,t,{})};var xl=(e,t)=>{for(let[r,i]of W0){let n=i.value.bind(t);Reflect.defineProperty(e,r,{...i,value:n})}},V0=(async()=>{})().constructor.prototype,W0=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(V0,e)]);var wl=(e,t,r,i)=>{let{file:n,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:d,options:p,fileDescriptors:u}=Y0(e,t,r),{subprocess:l,promise:m}=X0({file:n,commandArguments:s,options:p,startTime:c,verboseInfo:d,command:o,escapedCommand:a,fileDescriptors:u});return l.pipe=Ti.bind(void 0,{source:l,sourcePromise:m,boundOptions:{},createNested:i}),xl(l,m),qe.set(l,{options:p,fileDescriptors:u}),l},Y0=(e,t,r)=>{let{command:i,escapedCommand:n,startTime:s,verboseInfo:o}=Mr(e,t,r),{file:a,commandArguments:c,options:d}=si(e,t,r),p=J0(d),u=Ou(p,o);return{file:a,commandArguments:c,command:i,escapedCommand:n,startTime:s,verboseInfo:o,options:p,fileDescriptors:u}},J0=({timeout:e,signal:t,...r})=>{if(t!==void 0)throw new TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...r,timeoutDuration:e}},X0=({file:e,commandArguments:t,options:r,startTime:i,verboseInfo:n,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=K0(...oi(e,t,r))}catch(h){return Cu({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:i,verboseInfo:n})}let d=new AbortController;H0(Number.POSITIVE_INFINITY,d.signal);let p=[...c.stdio];Bu(c,a,d),Gu(c,r,d);let u={},l=ve();c.kill=ip.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:l,context:u,controller:d}),c.all=il(c,r),bl(c,r),qu(c,r);let m=Q0({subprocess:c,options:r,startTime:i,verboseInfo:n,fileDescriptors:a,originalStreams:p,command:s,escapedCommand:o,context:u,onInternalError:l,controller:d});return{subprocess:c,promise:m}},Q0=async({subprocess:e,options:t,startTime:r,verboseInfo:i,fileDescriptors:n,originalStreams:s,command:o,escapedCommand:a,context:c,onInternalError:d,controller:p})=>{let[u,[l,m],h,f,x]=await pl({subprocess:e,options:t,context:c,verboseInfo:i,fileDescriptors:n,originalStreams:s,onInternalError:d,controller:p});p.abort(),d.resolve();let _=h.map((E,w)=>Be(E,t,w)),v=Be(f,t,"all"),A=Z0({errorInfo:u,exitCode:l,signal:m,stdio:_,all:v,ipcOutput:x,context:c,options:t,command:o,escapedCommand:a,startTime:r});return Et(A,i,t)},Z0=({errorInfo:e,exitCode:t,signal:r,stdio:i,all:n,ipcOutput:s,context:o,options:a,command:c,escapedCommand:d,startTime:p})=>"error"in e?er({error:e.error,command:c,escapedCommand:d,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:e.error instanceof $e,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:t,signal:r,stdio:i,all:n,ipcOutput:s,options:a,startTime:p,isSync:!1}):yi({command:c,escapedCommand:d,stdio:i,all:n,ipcOutput:s,options:a,startTime:p});var ji=(e,t)=>{let r=Object.fromEntries(Object.entries(t).map(([i,n])=>[i,ek(i,e[i],n)]));return{...e,...r}},ek=(e,t,r)=>tk.has(e)&&V(t)&&V(r)?{...t,...r}:r,tk=new Set(["env",...Kn]);var Ye=(e,t,r,i)=>{let n=(o,a,c)=>Ye(o,a,r,c),s=(...o)=>rk({mapArguments:e,deepOptions:r,boundOptions:t,setBoundExeca:i,createNested:n},...o);return i!==void 0&&i(s,n,t),s},rk=({mapArguments:e,deepOptions:t={},boundOptions:r={},setBoundExeca:i,createNested:n},s,...o)=>{if(V(s))return n(e,ji(r,s),i);let{file:a,commandArguments:c,options:d,isSync:p}=ik({mapArguments:e,firstArgument:s,nextArguments:o,deepOptions:t,boundOptions:r});return p?bu(a,c,d):wl(a,c,d,n)},ik=({mapArguments:e,firstArgument:t,nextArguments:r,deepOptions:i,boundOptions:n})=>{let s=Oa(t)?Ia(t,r):[t,...r],[o,a,c]=Ar(...s),d=ji(ji(i,n),c),{file:p=o,commandArguments:u=a,options:l=d,isSync:m=!1}=e({file:o,commandArguments:a,options:d});return{file:p,commandArguments:u,options:l,isSync:m}};var kl=({file:e,commandArguments:t})=>vl(e,t),Sl=({file:e,commandArguments:t})=>({...vl(e,t),isSync:!0}),vl=(e,t)=>{if(t.length>0)throw new TypeError(`The command and its arguments must be passed as a single string: ${e} ${t}.`);let[r,...i]=nk(e);return{file:r,commandArguments:i}},nk=e=>{if(typeof e!="string")throw new TypeError(`The command must be a string: ${String(e)}.`);let t=e.trim();if(t==="")return[];let r=[];for(let i of t.split(sk)){let n=r.at(-1);n&&n.endsWith("\\")?r[r.length-1]=`${n.slice(0,-1)} ${i}`:r.push(i)}return r},sk=/ +/g;var ql=(e,t,r)=>{e.sync=t(ok,r),e.s=e.sync},$l=({options:e})=>Al(e),ok=({options:e})=>({...Al(e),isSync:!0}),Al=e=>({options:{...ak(e),...e}}),ak=({input:e,inputFile:t,stdio:r})=>e===void 0&&t===void 0&&r===void 0?{stdin:"inherit"}:{},Cl={preferLocal:!0};var me=Ye(()=>({})),fj=Ye(()=>({isSync:!0})),Di=Ye(kl),gj=Ye(Sl),_j=Ye(Up),bj=Ye($l,{},Cl,ql),{sendMessage:xj,getOneMessage:wj,getEachMessage:kj,getCancelSignal:Sj}=$u();async function K(e,t,r){return me("docker",["compose",...e],{cwd:t,...r})}async function Q(e,t,r){let i=["compose","exec","-T"];if(r)for(let[s,o]of Object.entries(r))i.push("-e",`${s}=${o}`);i.push("web","bin/rails",e);let{stdout:n}=await me("docker",i,{cwd:t});return n.split(`
|
|
75
|
+
if (condition) { yield value; }`)};import{Buffer as Ax}from"buffer";import{StringDecoder as Cx}from"string_decoder";var ki=(e,t,r)=>{if(r)return;if(e)return{transform:Ex.bind(void 0,new TextEncoder)};let i=new Cx(t);return{transform:Tx.bind(void 0,i),final:Px.bind(void 0,i)}},Ex=function*(e,t){Ax.isBuffer(t)?yield Me(t):typeof t=="string"?yield e.encode(t):yield t},Tx=function*(e,t){yield K(t)?e.write(t):t},Px=function*(e){let t=e.end();t!==""&&(yield t)};import{callbackify as nu}from"util";var Ls=nu(async(e,t,r,i)=>{t.currentIterable=e(...r);try{for await(let n of t.currentIterable)i.push(n)}finally{delete t.currentIterable}}),qi=async function*(e,t,r){if(r===t.length){yield e;return}let{transform:i=Ix}=t[r];for await(let n of i(e))yield*qi(n,t,r+1)},su=async function*(e){for(let[t,{final:r}]of Object.entries(e))yield*Ox(r,Number(t),e)},Ox=async function*(e,t,r){if(e!==void 0)for await(let i of e())yield*qi(i,r,t+1)},ou=nu(async({currentIterable:e},t)=>{if(e!==void 0){await(t?e.throw(t):e.return());return}if(t)throw t}),Ix=function*(e){yield e};var Ms=(e,t,r,i)=>{try{for(let n of e(...t))r.push(n);i()}catch(n){i(n)}},au=(e,t)=>[...t.flatMap(r=>[...ct(r,e,0)]),...rr(e)],ct=function*(e,t,r){if(r===t.length){yield e;return}let{transform:i=jx}=t[r];for(let n of i(e))yield*ct(n,t,r+1)},rr=function*(e){for(let[t,{final:r}]of Object.entries(e))yield*Rx(r,Number(t),e)},Rx=function*(e,t,r){if(e!==void 0)for(let i of e())yield*ct(i,r,t+1)},jx=function*(e){yield e};var Fs=({value:e,value:{transform:t,final:r,writableObjectMode:i,readableObjectMode:n},optionName:s},{encoding:o})=>{let a={},c=pu(e,o,s),d=at(t),p=at(r),u=d?Ls.bind(void 0,qi,a):Ms.bind(void 0,ct),l=d||p?Ls.bind(void 0,su,a):Ms.bind(void 0,rr),m=d||p?ou.bind(void 0,a):void 0;return{stream:new Dx({writableObjectMode:i,writableHighWaterMark:cu(i),readableObjectMode:n,readableHighWaterMark:cu(n),transform(f,x,_){u([f,c,0],this,_)},flush(f){l([c],this,f)},destroy:m})}},vi=(e,t,r,i)=>{let n=t.filter(({type:o})=>o==="generator"),s=i?n.reverse():n;for(let{value:o,optionName:a}of s){let c=pu(o,r,a);e=au(c,e)}return e},pu=({transform:e,final:t,binary:r,writableObjectMode:i,readableObjectMode:n,preserveNewlines:s},o,a)=>{let c={};return[{transform:tu(i,a)},ki(r,o,i),wi(r,s,i,c),{transform:e,final:t},{transform:ru(n,a)},eu({binary:r,preserveNewlines:s,readableObjectMode:n,state:c})].filter(Boolean)};var du=(e,t)=>{for(let r of Lx(e))Mx(e,r,t)},Lx=e=>new Set(Object.entries(e).filter(([,{direction:t}])=>t==="input").map(([t])=>Number(t))),Mx=(e,t,r)=>{let{stdioItems:i}=e[t],n=i.filter(({contents:a})=>a!==void 0);if(n.length===0)return;if(t!==0){let[{type:a,optionName:c}]=n;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Ke[a]} with synchronous methods.`)}let o=n.map(({contents:a})=>a).map(a=>Fx(a,i));r.input=Wt(o)},Fx=(e,t)=>{let r=vi(e,t,"utf8",!0);return Bx(r),Wt(r)},Bx=e=>{let t=e.find(r=>typeof r!="string"&&!K(r));if(t!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${t}.`)};import{writeFileSync as zx,appendFileSync as Vx}from"fs";var Si=({stdioItems:e,encoding:t,verboseInfo:r,fdNumber:i})=>i!=="all"&&wt(r,i)&&!oe.has(t)&&Ux(i)&&(e.some(({type:n,value:s})=>n==="native"&&Nx.has(s))||e.every(({type:n})=>le.has(n))),Ux=e=>e===1||e===2,Nx=new Set(["pipe","overlapped"]),uu=async(e,t,r,i)=>{for await(let n of e)Gx(t)||mu(n,r,i)},lu=(e,t,r)=>{for(let i of e)mu(i,t,r)},Gx=e=>e._readableState.pipes.length>0,mu=(e,t,r)=>{let i=Lr(e);qe({type:"output",verboseMessage:i,fdNumber:t,verboseInfo:r})};var hu=({fileDescriptors:e,syncResult:{output:t},options:r,isMaxBuffer:i,verboseInfo:n})=>{if(t===null)return{output:Array.from({length:3})};let s={},o=new Set([]);return{output:t.map((c,d)=>Wx({result:c,fileDescriptors:e,fdNumber:d,state:s,outputFiles:o,isMaxBuffer:i,verboseInfo:n},r)),...s}},Wx=({result:e,fileDescriptors:t,fdNumber:r,state:i,outputFiles:n,isMaxBuffer:s,verboseInfo:o},{buffer:a,encoding:c,lines:d,stripFinalNewline:p,maxBuffer:u})=>{if(e===null)return;let l=yd(e,s,u),m=Me(l),{stdioItems:h,objectMode:f}=t[r],x=Hx([m],h,c,i),{serializedResult:_,finalResult:v=_}=Kx({chunks:x,objectMode:f,encoding:c,lines:d,stripFinalNewline:p,fdNumber:r});Yx({serializedResult:_,fdNumber:r,state:i,verboseInfo:o,encoding:c,stdioItems:h,objectMode:f});let A=a[r]?v:void 0;try{return i.error===void 0&&Jx(_,h,n),A}catch(E){return i.error=E,A}},Hx=(e,t,r,i)=>{try{return vi(e,t,r,!1)}catch(n){return i.error=n,e}},Kx=({chunks:e,objectMode:t,encoding:r,lines:i,stripFinalNewline:n,fdNumber:s})=>{if(t)return{serializedResult:e};if(r==="buffer")return{serializedResult:Wt(e)};let o=Ea(e,r);return i[s]?{serializedResult:o,finalResult:Ds(o,!n[s],t)}:{serializedResult:o}},Yx=({serializedResult:e,fdNumber:t,state:r,verboseInfo:i,encoding:n,stdioItems:s,objectMode:o})=>{if(!Si({stdioItems:s,encoding:n,verboseInfo:i,fdNumber:t}))return;let a=Ds(e,!1,o);try{lu(a,t,i)}catch(c){r.error??=c}},Jx=(e,t,r)=>{for(let{path:i,append:n}of t.filter(({type:s})=>bi.has(s))){let s=typeof i=="string"?i:i.toString();n||r.has(s)?Vx(i,e):(r.add(s),zx(i,e))}};var yu=([,e,t],r)=>{if(r.all)return e===void 0?t:t===void 0?e:Array.isArray(e)?Array.isArray(t)?[...e,...t]:[...e,Ue(t,r,"all")]:Array.isArray(t)?[Ue(e,r,"all"),...t]:K(e)&&K(t)?Vn([e,t]):`${e}${t}`};import{once as Bs}from"events";var fu=async(e,t)=>{let[r,i]=await Xx(e);return t.isForcefullyTerminated??=!1,[r,i]},Xx=async e=>{let[t,r]=await Promise.allSettled([Bs(e,"spawn"),Bs(e,"exit")]);return t.status==="rejected"?[]:r.status==="rejected"?gu(e):r.value},gu=async e=>{try{return await Bs(e,"exit")}catch{return gu(e)}},_u=async e=>{let[t,r]=await e;if(!Qx(t,r)&&Us(t,r))throw new ge;return[t,r]},Qx=(e,t)=>e===void 0&&t===void 0,Us=(e,t)=>e!==0||t!==null;var bu=({error:e,status:t,signal:r,output:i},{maxBuffer:n})=>{let s=Zx(e,t,r),o=s?.code==="ETIMEDOUT",a=hd(s,i,n);return{resultError:s,exitCode:t,signal:r,timedOut:o,isMaxBuffer:a}},Zx=(e,t,r)=>e!==void 0?e:Us(t,r)?new ge:void 0;var xu=(e,t,r)=>{let{file:i,commandArguments:n,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:d,fileDescriptors:p}=tw(e,t,r),u=nw({file:i,commandArguments:n,options:d,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:p,startTime:a});return Tt(u,c,d)},tw=(e,t,r)=>{let{command:i,escapedCommand:n,startTime:s,verboseInfo:o}=Fr(e,t,r),a=rw(r),{file:c,commandArguments:d,options:p}=oi(e,t,a);iw(p);let u=Jd(p,o);return{file:c,commandArguments:d,command:i,escapedCommand:n,startTime:s,verboseInfo:o,options:p,fileDescriptors:u}},rw=e=>e.node&&!e.ipc?{...e,ipc:!1}:e,iw=({ipc:e,ipcInput:t,detached:r,cancelSignal:i})=>{t&&$i("ipcInput"),e&&$i("ipc: true"),r&&$i("detached: true"),i&&$i("cancelSignal")},$i=e=>{throw new TypeError(`The "${e}" option cannot be used with synchronous methods.`)},nw=({file:e,commandArguments:t,options:r,command:i,escapedCommand:n,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=sw({file:e,commandArguments:t,options:r,command:i,escapedCommand:n,fileDescriptors:o,startTime:a});if(c.failed)return c;let{resultError:d,exitCode:p,signal:u,timedOut:l,isMaxBuffer:m}=bu(c,r),{output:h,error:f=d}=hu({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:m,verboseInfo:s}),x=h.map((v,A)=>Ue(v,r,A)),_=Ue(yu(h,r),r,"all");return aw({error:f,exitCode:p,signal:u,timedOut:l,isMaxBuffer:m,stdio:x,all:_,options:r,command:i,escapedCommand:n,startTime:a})},sw=({file:e,commandArguments:t,options:r,command:i,escapedCommand:n,fileDescriptors:s,startTime:o})=>{try{du(s,r);let a=ow(r);return ew(...ai(e,t,a))}catch(a){return Et({error:a,command:i,escapedCommand:n,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},ow=({encoding:e,maxBuffer:t,...r})=>({...r,encoding:"buffer",maxBuffer:yi(t)}),aw=({error:e,exitCode:t,signal:r,timedOut:i,isMaxBuffer:n,stdio:s,all:o,options:a,command:c,escapedCommand:d,startTime:p})=>e===void 0?fi({command:c,escapedCommand:d,stdio:s,all:o,ipcOutput:[],options:a,startTime:p}):tr({error:e,command:c,escapedCommand:d,timedOut:i,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:n,isForcefullyTerminated:!1,exitCode:t,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:p,isSync:!0});import{setMaxListeners as K0}from"events";import{spawn as Y0}from"child_process";import Su from"process";import{once as Ns,on as cw}from"events";var wu=({anyProcess:e,channel:t,isSubprocess:r,ipc:i},{reference:n=!0,filter:s}={})=>(vt({methodName:"getOneMessage",isSubprocess:r,ipc:i,isConnected:ei(e)}),pw({anyProcess:e,channel:t,isSubprocess:r,filter:s,reference:n})),pw=async({anyProcess:e,channel:t,isSubprocess:r,filter:i,reference:n})=>{Jr(t,n);let s=He(e,t,r),o=new AbortController;try{return await Promise.race([dw(s,i,o),uw(s,r,o),lw(s,r,o)])}catch(a){throw St(e),a}finally{o.abort(),Xr(t,n)}},dw=async(e,t,{signal:r})=>{if(t===void 0){let[i]=await Ns(e,"message",{signal:r});return i}for await(let[i]of cw(e,"message",{signal:r}))if(t(i))return i},uw=async(e,t,{signal:r})=>{await Ns(e,"disconnect",{signal:r}),ap(t)},lw=async(e,t,{signal:r})=>{let[i]=await Ns(e,"strict:error",{signal:r});throw Hr(i,t)};import{once as qu,on as mw}from"events";var vu=({anyProcess:e,channel:t,isSubprocess:r,ipc:i},{reference:n=!0}={})=>Gs({anyProcess:e,channel:t,isSubprocess:r,ipc:i,shouldAwait:!r,reference:n}),Gs=({anyProcess:e,channel:t,isSubprocess:r,ipc:i,shouldAwait:n,reference:s})=>{vt({methodName:"getEachMessage",isSubprocess:r,ipc:i,isConnected:ei(e)}),Jr(t,s);let o=He(e,t,r),a=new AbortController,c={};return hw(e,o,a),yw({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),fw({anyProcess:e,channel:t,ipcEmitter:o,isSubprocess:r,shouldAwait:n,controller:a,state:c,reference:s})},hw=async(e,t,r)=>{try{await qu(t,"disconnect",{signal:r.signal}),r.abort()}catch{}},yw=async({ipcEmitter:e,isSubprocess:t,controller:r,state:i})=>{try{let[n]=await qu(e,"strict:error",{signal:r.signal});i.error=Hr(n,t),r.abort()}catch{}},fw=async function*({anyProcess:e,channel:t,ipcEmitter:r,isSubprocess:i,shouldAwait:n,controller:s,state:o,reference:a}){try{for await(let[c]of mw(r,"message",{signal:s.signal}))ku(o),yield c}catch{ku(o)}finally{s.abort(),Xr(t,a),i||St(e),n&&await e}},ku=({error:e})=>{if(e)throw e};var $u=(e,{ipc:t})=>{Object.assign(e,Cu(e,!1,t))},Au=()=>{let e=Su,t=!0,r=Su.channel!==void 0;return{...Cu(e,t,r),getCancelSignal:Rp.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r})}},Cu=(e,t,r)=>({sendMessage:ni.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r}),getOneMessage:wu.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r}),getEachMessage:vu.bind(void 0,{anyProcess:e,channel:e.channel,isSubprocess:t,ipc:r})});import{ChildProcess as gw}from"child_process";import{PassThrough as _w,Readable as bw,Writable as xw,Duplex as ww}from"stream";var Eu=({error:e,command:t,escapedCommand:r,fileDescriptors:i,options:n,startTime:s,verboseInfo:o})=>{Is(i);let a=new gw;kw(a,i),Object.assign(a,{readable:qw,writable:vw,duplex:Sw});let c=Et({error:e,command:t,escapedCommand:r,fileDescriptors:i,options:n,startTime:s,isSync:!1}),d=$w(c,o,n);return{subprocess:a,promise:d}},kw=(e,t)=>{let r=ir(),i=ir(),n=ir(),s=Array.from({length:t.length-3},ir),o=ir(),a=[r,i,n,...s];Object.assign(e,{stdin:r,stdout:i,stderr:n,all:o,stdio:a})},ir=()=>{let e=new _w;return e.end(),e},qw=()=>new bw({read(){}}),vw=()=>new xw({write(){}}),Sw=()=>new ww({read(){},write(){}}),$w=async(e,t,r)=>Tt(e,t,r);import{createReadStream as Tu,createWriteStream as Pu}from"fs";import{Buffer as Aw}from"buffer";import{Readable as nr,Writable as Cw,Duplex as Ew}from"stream";var Iu=(e,t)=>xi(Tw,e,t,!1),sr=({type:e,optionName:t})=>{throw new TypeError(`The \`${t}\` option cannot be ${Ke[e]}.`)},Ou={fileNumber:sr,generator:Fs,asyncGenerator:Fs,nodeStream:({value:e})=>({stream:e}),webTransform({value:{transform:e,writableObjectMode:t,readableObjectMode:r}}){let i=t||r;return{stream:Ew.fromWeb(e,{objectMode:i})}},duplex:({value:{transform:e}})=>({stream:e}),native(){}},Tw={input:{...Ou,fileUrl:({value:e})=>({stream:Tu(e)}),filePath:({value:{file:e}})=>({stream:Tu(e)}),webStream:({value:e})=>({stream:nr.fromWeb(e)}),iterable:({value:e})=>({stream:nr.from(e)}),asyncIterable:({value:e})=>({stream:nr.from(e)}),string:({value:e})=>({stream:nr.from(e)}),uint8Array:({value:e})=>({stream:nr.from(Aw.from(e))})},output:{...Ou,fileUrl:({value:e})=>({stream:Pu(e)}),filePath:({value:{file:e,append:t}})=>({stream:Pu(e,t?{flags:"a"}:{})}),webStream:({value:e})=>({stream:Cw.fromWeb(e)}),iterable:sr,asyncIterable:sr,string:sr,uint8Array:sr}};import{on as Pw,once as Ru}from"events";import{PassThrough as Ow,getDefaultHighWaterMark as Iw}from"stream";import{finished as Lu}from"stream/promises";function pt(e){if(!Array.isArray(e))throw new TypeError(`Expected an array, got \`${typeof e}\`.`);for(let n of e)Vs(n);let t=e.some(({readableObjectMode:n})=>n),r=Rw(e,t),i=new zs({objectMode:t,writableHighWaterMark:r,readableHighWaterMark:r});for(let n of e)i.add(n);return i}var Rw=(e,t)=>{if(e.length===0)return Iw(t);let r=e.filter(({readableObjectMode:i})=>i===t).map(({readableHighWaterMark:i})=>i);return Math.max(...r)},zs=class extends Ow{#t=new Set([]);#r=new Set([]);#e=new Set([]);#i;#s=Symbol("unpipe");#n=new WeakMap;add(t){if(Vs(t),this.#t.has(t))return;this.#t.add(t),this.#i??=jw(this,this.#t,this.#s);let r=Mw({passThroughStream:this,stream:t,streams:this.#t,ended:this.#r,aborted:this.#e,onFinished:this.#i,unpipeEvent:this.#s});this.#n.set(t,r),t.pipe(this,{end:!1})}async remove(t){if(Vs(t),!this.#t.has(t))return!1;let r=this.#n.get(t);return r===void 0?!1:(this.#n.delete(t),t.unpipe(this),await r,!0)}},jw=async(e,t,r)=>{Ai(e,ju);let i=new AbortController;try{await Promise.race([Dw(e,i),Lw(e,t,r,i)])}finally{i.abort(),Ai(e,-ju)}},Dw=async(e,{signal:t})=>{try{await Lu(e,{signal:t,cleanup:!0})}catch(r){throw Mu(e,r),r}},Lw=async(e,t,r,{signal:i})=>{for await(let[n]of Pw(e,"unpipe",{signal:i}))t.has(n)&&n.emit(r)},Vs=e=>{if(typeof e?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof e}\`.`)},Mw=async({passThroughStream:e,stream:t,streams:r,ended:i,aborted:n,onFinished:s,unpipeEvent:o})=>{Ai(e,Du);let a=new AbortController;try{await Promise.race([Fw(s,t,a),Bw({passThroughStream:e,stream:t,streams:r,ended:i,aborted:n,controller:a}),Uw({stream:t,streams:r,ended:i,aborted:n,unpipeEvent:o,controller:a})])}finally{a.abort(),Ai(e,-Du)}r.size>0&&r.size===i.size+n.size&&(i.size===0&&n.size>0?Ws(e):Nw(e))},Fw=async(e,t,{signal:r})=>{try{await e,r.aborted||Ws(t)}catch(i){r.aborted||Mu(t,i)}},Bw=async({passThroughStream:e,stream:t,streams:r,ended:i,aborted:n,controller:{signal:s}})=>{try{await Lu(t,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(t)&&i.add(t)}catch(o){if(s.aborted||!r.has(t))return;Fu(o)?n.add(t):Bu(e,o)}},Uw=async({stream:e,streams:t,ended:r,aborted:i,unpipeEvent:n,controller:{signal:s}})=>{if(await Ru(e,n,{signal:s}),!e.readable)return Ru(s,"abort",{signal:s});t.delete(e),r.delete(e),i.delete(e)},Nw=e=>{e.writable&&e.end()},Mu=(e,t)=>{Fu(t)?Ws(e):Bu(e,t)},Fu=e=>e?.code==="ERR_STREAM_PREMATURE_CLOSE",Ws=e=>{(e.readable||e.writable)&&e.destroy()},Bu=(e,t)=>{e.destroyed||(e.once("error",Gw),e.destroy(t))},Gw=()=>{},Ai=(e,t)=>{let r=e.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&e.setMaxListeners(r+t)},ju=2,Du=1;import{finished as Uu}from"stream/promises";var Ot=(e,t)=>{e.pipe(t),zw(e,t),Vw(e,t)},zw=async(e,t)=>{if(!(fe(e)||fe(t))){try{await Uu(e,{cleanup:!0,readable:!0,writable:!1})}catch{}Hs(t)}},Hs=e=>{e.writable&&e.end()},Vw=async(e,t)=>{if(!(fe(e)||fe(t))){try{await Uu(t,{cleanup:!0,readable:!1,writable:!0})}catch{}Ks(e)}},Ks=e=>{e.readable&&e.destroy()};var Nu=(e,t,r)=>{let i=new Map;for(let[n,{stdioItems:s,direction:o}]of Object.entries(t)){for(let{stream:a}of s.filter(({type:c})=>le.has(c)))Ww(e,a,o,n);for(let{stream:a}of s.filter(({type:c})=>!le.has(c)))Kw({subprocess:e,stream:a,direction:o,fdNumber:n,pipeGroups:i,controller:r})}for(let[n,s]of i.entries()){let o=s.length===1?s[0]:pt(s);Ot(o,n)}},Ww=(e,t,r,i)=>{r==="output"?Ot(e.stdio[i],t):Ot(t,e.stdio[i]);let n=Hw[i];n!==void 0&&(e[n]=t),e.stdio[i]=t},Hw=["stdin","stdout","stderr"],Kw=({subprocess:e,stream:t,direction:r,fdNumber:i,pipeGroups:n,controller:s})=>{if(t===void 0)return;Yw(t,s);let[o,a]=r==="output"?[t,e.stdio[i]]:[e.stdio[i],t],c=n.get(o)??[];n.set(o,[...c,a])},Yw=(e,{signal:t})=>{fe(e)&&st(e,Jw,t)},Jw=2;import{addAbortListener as Zw}from"events";var dt=[];dt.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&dt.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&dt.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Ci=e=>!!e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function",Ys=Symbol.for("signal-exit emitter"),Js=globalThis,Xw=Object.defineProperty.bind(Object),Xs=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Js[Ys])return Js[Ys];Xw(Js,Ys,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(t,r){this.listeners[t].push(r)}removeListener(t,r){let i=this.listeners[t],n=i.indexOf(r);n!==-1&&(n===0&&i.length===1?i.length=0:i.splice(n,1))}emit(t,r,i){if(this.emitted[t])return!1;this.emitted[t]=!0;let n=!1;for(let s of this.listeners[t])n=s(r,i)===!0||n;return t==="exit"&&(n=this.emit("afterExit",r,i)||n),n}},Ei=class{},Qw=e=>({onExit(t,r){return e.onExit(t,r)},load(){return e.load()},unload(){return e.unload()}}),Qs=class extends Ei{onExit(){return()=>{}}load(){}unload(){}},Zs=class extends Ei{#t=eo.platform==="win32"?"SIGINT":"SIGHUP";#r=new Xs;#e;#i;#s;#n={};#o=!1;constructor(t){super(),this.#e=t,this.#n={};for(let r of dt)this.#n[r]=()=>{let i=this.#e.listeners(r),{count:n}=this.#r,s=t;if(typeof s.__signal_exit_emitter__=="object"&&typeof s.__signal_exit_emitter__.count=="number"&&(n+=s.__signal_exit_emitter__.count),i.length===n){this.unload();let o=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#t:r;o||t.kill(t.pid,a)}};this.#s=t.reallyExit,this.#i=t.emit}onExit(t,r){if(!Ci(this.#e))return()=>{};this.#o===!1&&this.load();let i=r?.alwaysLast?"afterExit":"exit";return this.#r.on(i,t),()=>{this.#r.removeListener(i,t),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#r.count+=1;for(let t of dt)try{let r=this.#n[t];r&&this.#e.on(t,r)}catch{}this.#e.emit=(t,...r)=>this.#c(t,...r),this.#e.reallyExit=t=>this.#a(t)}}unload(){this.#o&&(this.#o=!1,dt.forEach(t=>{let r=this.#n[t];if(!r)throw new Error("Listener not defined for signal: "+t);try{this.#e.removeListener(t,r)}catch{}}),this.#e.emit=this.#i,this.#e.reallyExit=this.#s,this.#r.count-=1)}#a(t){return Ci(this.#e)?(this.#e.exitCode=t||0,this.#r.emit("exit",this.#e.exitCode,null),this.#s.call(this.#e,this.#e.exitCode)):0}#c(t,...r){let i=this.#i;if(t==="exit"&&Ci(this.#e)){typeof r[0]=="number"&&(this.#e.exitCode=r[0]);let n=i.call(this.#e,t,...r);return this.#r.emit("exit",this.#e.exitCode,null),n}else return i.call(this.#e,t,...r)}},eo=globalThis.process,{onExit:Gu,load:AO,unload:CO}=Qw(Ci(eo)?new Zs(eo):new Qs);var zu=(e,{cleanup:t,detached:r},{signal:i})=>{if(!t||r)return;let n=Gu(()=>{e.kill()});Zw(i,()=>{n()})};var Wu=({source:e,sourcePromise:t,boundOptions:r,createNested:i},...n)=>{let s=Mr(),{destination:o,destinationStream:a,destinationError:c,from:d,unpipeSignal:p}=e0(r,i,n),{sourceStream:u,sourceError:l}=r0(e,d),{options:m,fileDescriptors:h}=Se.get(e);return{sourcePromise:t,sourceStream:u,sourceOptions:m,sourceError:l,destination:o,destinationStream:a,destinationError:c,unpipeSignal:p,fileDescriptors:h,startTime:s}},e0=(e,t,r)=>{try{let{destination:i,pipeOptions:{from:n,to:s,unpipeSignal:o}={}}=t0(e,t,...r),a=Yr(i,s);return{destination:i,destinationStream:a,from:n,unpipeSignal:o}}catch(i){return{destinationError:i}}},t0=(e,t,r,...i)=>{if(Array.isArray(r))return{destination:t(Vu,e)(r,...i),pipeOptions:e};if(typeof r=="string"||r instanceof URL||Gn(r)){if(Object.keys(e).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[n,s,o]=Cr(r,...i);return{destination:t(Vu)(n,s,o),pipeOptions:o}}if(Se.has(r)){if(Object.keys(e).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:i[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},Vu=({options:e})=>({options:{...e,stdin:"pipe",piped:!0}}),r0=(e,t)=>{try{return{sourceStream:$t(e,t)}}catch(r){return{sourceError:r}}};var Ku=({sourceStream:e,sourceError:t,destinationStream:r,destinationError:i,fileDescriptors:n,sourceOptions:s,startTime:o})=>{let a=i0({sourceStream:e,sourceError:t,destinationStream:r,destinationError:i});if(a!==void 0)throw to({error:a,fileDescriptors:n,sourceOptions:s,startTime:o})},i0=({sourceStream:e,sourceError:t,destinationStream:r,destinationError:i})=>{if(t!==void 0&&i!==void 0)return i;if(i!==void 0)return Ks(e),i;if(t!==void 0)return Hs(r),t},to=({error:e,fileDescriptors:t,sourceOptions:r,startTime:i})=>Et({error:e,command:Hu,escapedCommand:Hu,fileDescriptors:t,options:r,startTime:i,isSync:!1}),Hu="source.pipe(destination)";var Yu=async e=>{let[{status:t,reason:r,value:i=r},{status:n,reason:s,value:o=s}]=await e;if(o.pipedFrom.includes(i)||o.pipedFrom.push(i),n==="rejected")throw o;if(t==="rejected")throw i;return o};import{finished as n0}from"stream/promises";var Ju=(e,t,r)=>{let i=Ti.has(t)?o0(e,t):s0(e,t);return st(e,c0,r.signal),st(t,p0,r.signal),a0(t),i},s0=(e,t)=>{let r=pt([e]);return Ot(r,t),Ti.set(t,r),r},o0=(e,t)=>{let r=Ti.get(t);return r.add(e),r},a0=async e=>{try{await n0(e,{cleanup:!0,readable:!1,writable:!0})}catch{}Ti.delete(e)},Ti=new WeakMap,c0=2,p0=1;import{aborted as d0}from"util";var Xu=(e,t)=>e===void 0?[]:[u0(e,t)],u0=async(e,{sourceStream:t,mergedStream:r,fileDescriptors:i,sourceOptions:n,startTime:s})=>{await d0(e,t),await r.remove(t);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw to({error:o,fileDescriptors:i,sourceOptions:n,startTime:s})};var Pi=(e,...t)=>{if(V(t[0]))return Pi.bind(void 0,{...e,boundOptions:{...e.boundOptions,...t[0]}});let{destination:r,...i}=Wu(e,...t),n=l0({...i,destination:r});return n.pipe=Pi.bind(void 0,{...e,source:r,sourcePromise:n,boundOptions:{}}),n},l0=async({sourcePromise:e,sourceStream:t,sourceOptions:r,sourceError:i,destination:n,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:d})=>{let p=m0(e,n);Ku({sourceStream:t,sourceError:i,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:d});let u=new AbortController;try{let l=Ju(t,s,u);return await Promise.race([Yu(p),...Xu(a,{sourceStream:t,mergedStream:l,sourceOptions:r,fileDescriptors:c,startTime:d})])}finally{u.abort()}},m0=(e,t)=>Promise.allSettled([e,t]);import{setImmediate as x0}from"timers/promises";import{on as h0}from"events";import{getDefaultHighWaterMark as y0}from"stream";var Oi=({subprocessStdout:e,subprocess:t,binary:r,shouldEncode:i,encoding:n,preserveNewlines:s})=>{let o=new AbortController;return f0(t,o),Zu({stream:e,controller:o,binary:r,shouldEncode:!e.readableObjectMode&&i,encoding:n,shouldSplit:!e.readableObjectMode,preserveNewlines:s})},f0=async(e,t)=>{try{await e}catch{}finally{t.abort()}},ro=({stream:e,onStreamEnd:t,lines:r,encoding:i,stripFinalNewline:n,allMixed:s})=>{let o=new AbortController;g0(t,o,e);let a=e.readableObjectMode&&!s;return Zu({stream:e,controller:o,binary:i==="buffer",shouldEncode:!a,encoding:i,shouldSplit:!a&&r,preserveNewlines:!n})},g0=async(e,t,r)=>{try{await e}catch{r.destroy()}finally{t.abort()}},Zu=({stream:e,controller:t,binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o})=>{let a=h0(e,"data",{signal:t.signal,highWaterMark:Qu,highWatermark:Qu});return _0({onStdoutChunk:a,controller:t,binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o})},io=y0(!0),Qu=io,_0=async function*({onStdoutChunk:e,controller:t,binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o}){let a=b0({binary:r,shouldEncode:i,encoding:n,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of e)yield*ct(c,a,0)}catch(c){if(!t.signal.aborted)throw c}finally{yield*rr(a)}},b0=({binary:e,shouldEncode:t,encoding:r,shouldSplit:i,preserveNewlines:n})=>[ki(e,r,!t),wi(e,n,!i,{})].filter(Boolean);var el=async({stream:e,onStreamEnd:t,fdNumber:r,encoding:i,buffer:n,maxBuffer:s,lines:o,allMixed:a,stripFinalNewline:c,verboseInfo:d,streamInfo:p})=>{let u=w0({stream:e,onStreamEnd:t,fdNumber:r,encoding:i,allMixed:a,verboseInfo:d,streamInfo:p});if(!n){await Promise.all([k0(e),u]);return}let l=Rs(c,r),m=ro({stream:e,onStreamEnd:t,lines:o,encoding:i,stripFinalNewline:l,allMixed:a}),[h]=await Promise.all([q0({stream:e,iterable:m,fdNumber:r,encoding:i,maxBuffer:s,lines:o}),u]);return h},w0=async({stream:e,onStreamEnd:t,fdNumber:r,encoding:i,allMixed:n,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!Si({stdioItems:o[r]?.stdioItems,encoding:i,verboseInfo:s,fdNumber:r}))return;let a=ro({stream:e,onStreamEnd:t,lines:!0,encoding:i,stripFinalNewline:!0,allMixed:n});await uu(a,e,r,s)},k0=async e=>{await x0(),e.readableFlowing===null&&e.resume()},q0=async({stream:e,stream:{readableObjectMode:t},iterable:r,fdNumber:i,encoding:n,maxBuffer:s,lines:o})=>{try{return t||o?await ui(r,{maxBuffer:s}):n==="buffer"?new Uint8Array(await li(r,{maxBuffer:s})):await hi(r,{maxBuffer:s})}catch(a){return tl(ud({error:a,stream:e,readableObjectMode:t,lines:o,encoding:n,fdNumber:i}))}},no=async e=>{try{return await e}catch(t){return tl(t)}},tl=({bufferedData:e})=>Aa(e)?new Uint8Array(e):e;import{finished as v0}from"stream/promises";var or=async(e,t,r,{isSameDirection:i,stopOnExit:n=!1}={})=>{let s=S0(e,r),o=new AbortController;try{await Promise.race([...n?[r.exitPromise]:[],v0(e,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||C0(a,t,r,i)}finally{o.abort()}},S0=(e,{originalStreams:[t],subprocess:r})=>{let i={stdinCleanedUp:!1};return e===t&&$0(e,r,i),i},$0=(e,t,r)=>{let{_destroy:i}=e;e._destroy=(...n)=>{A0(t,r),i.call(e,...n)}},A0=({exitCode:e,signalCode:t},r)=>{(e!==null||t!==null)&&(r.stdinCleanedUp=!0)},C0=(e,t,r,i)=>{if(!E0(e,t,r,i))throw e},E0=(e,t,r,i=!0)=>r.propagating?rl(e)||Ii(e):(r.propagating=!0,so(r,t)===i?rl(e):Ii(e)),so=({fileDescriptors:e},t)=>t!=="all"&&e[t].direction==="input",Ii=e=>e?.code==="ERR_STREAM_PREMATURE_CLOSE",rl=e=>e?.code==="EPIPE";var il=({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>e.stdio.map((c,d)=>oo({stream:c,fdNumber:d,encoding:t,buffer:r[d],maxBuffer:i[d],lines:n[d],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),oo=async({stream:e,fdNumber:t,encoding:r,buffer:i,maxBuffer:n,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:d})=>{if(!e)return;let p=or(e,t,d);if(so(d,t)){await p;return}let[u]=await Promise.all([el({stream:e,onStreamEnd:p,fdNumber:t,encoding:r,buffer:i,maxBuffer:n,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:d}),p]);return u};var nl=({stdout:e,stderr:t},{all:r})=>r&&(e||t)?pt([e,t].filter(Boolean)):void 0,sl=({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>oo({...T0(e,r),fdNumber:"all",encoding:t,maxBuffer:i[1]+i[2],lines:n[1]||n[2],allMixed:P0(e),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),T0=({stdout:e,stderr:t,all:r},[,i,n])=>{let s=i||n;return s?i?n?{stream:r,buffer:s}:{stream:e,buffer:s}:{stream:t,buffer:s}:{stream:r,buffer:s}},P0=({all:e,stdout:t,stderr:r})=>e&&t&&r&&t.readableObjectMode!==r.readableObjectMode;import{once as O0}from"events";var ol=e=>wt(e,"ipc"),al=(e,t)=>{let r=Lr(e);qe({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:t})};var cl=async({subprocess:e,buffer:t,maxBuffer:r,ipc:i,ipcOutput:n,verboseInfo:s})=>{if(!i)return n;let o=ol(s),a=Fe(t,"ipc"),c=Fe(r,"ipc");for await(let d of Gs({anyProcess:e,channel:e.channel,isSubprocess:!1,ipc:i,shouldAwait:!1,reference:!0}))a&&(ld(e,n,c),n.push(d)),o&&al(d,s);return n},pl=async(e,t)=>(await Promise.allSettled([e]),t);var dl=async({subprocess:e,options:{encoding:t,buffer:r,maxBuffer:i,lines:n,timeoutDuration:s,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:d,ipc:p,ipcInput:u},context:l,verboseInfo:m,fileDescriptors:h,originalStreams:f,onInternalError:x,controller:_})=>{let v=fu(e,l),A={originalStreams:f,fileDescriptors:h,subprocess:e,exitPromise:v,propagating:!1},E=il({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:d,verboseInfo:m,streamInfo:A}),w=sl({subprocess:e,encoding:t,buffer:r,maxBuffer:i,lines:n,stripFinalNewline:d,verboseInfo:m,streamInfo:A}),L=[],O=cl({subprocess:e,buffer:r,maxBuffer:i,ipc:p,ipcOutput:L,verboseInfo:m}),R=I0(f,e,A),F=R0(h,A);try{return await Promise.race([Promise.all([{},_u(v),Promise.all(E),w,O,zp(e,u),...R,...F]),x,j0(e,_),...Fp(e,s,l,_),...op({subprocess:e,cancelSignal:o,gracefulCancel:a,context:l,controller:_}),...Lp({subprocess:e,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:l,controller:_})])}catch(N){return l.terminationReason??="other",Promise.all([{error:N},v,Promise.all(E.map(q=>no(q))),no(w),pl(O,L),Promise.allSettled(R),Promise.allSettled(F)])}},I0=(e,t,r)=>e.map((i,n)=>i===t.stdio[n]?void 0:or(i,n,r)),R0=(e,t)=>e.flatMap(({stdioItems:r},i)=>r.filter(({value:n,stream:s=n})=>be(s,{checkOpen:!1})&&!fe(s)).map(({type:n,value:s,stream:o=s})=>or(o,i,t,{isSameDirection:le.has(n),stopOnExit:n==="native"}))),j0=async(e,{signal:t})=>{let[r]=await O0(e,"error",{signal:t});throw r};var ul=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),ar=(e,t,r)=>{let i=e[r];i.has(t)||i.set(t,[]);let n=i.get(t),s=ve();return n.push(s),{resolve:s.resolve.bind(s),promises:n}},It=async({resolve:e,promises:t},r)=>{e();let[i]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...t])]);return!i};import{Readable as D0}from"stream";import{callbackify as L0}from"util";import{finished as ll}from"stream/promises";var ao=async e=>{if(e!==void 0)try{await co(e)}catch{}},ml=async e=>{if(e!==void 0)try{await po(e)}catch{}},co=async e=>{await ll(e,{cleanup:!0,readable:!1,writable:!0})},po=async e=>{await ll(e,{cleanup:!0,readable:!0,writable:!1})},Ri=async(e,t)=>{if(await e,t)throw t},ji=(e,t,r)=>{r&&!Ii(r)?e.destroy(r):t&&e.destroy()};var hl=({subprocess:e,concurrentStreams:t,encoding:r},{from:i,binary:n=!0,preserveNewlines:s=!0}={})=>{let o=n||oe.has(r),{subprocessStdout:a,waitReadableDestroy:c}=uo(e,i,t),{readableEncoding:d,readableObjectMode:p,readableHighWaterMark:u}=lo(a,o),{read:l,onStdoutDataDone:m}=mo({subprocessStdout:a,subprocess:e,binary:o,encoding:r,preserveNewlines:s}),h=new D0({read:l,destroy:L0(yo.bind(void 0,{subprocessStdout:a,subprocess:e,waitReadableDestroy:c})),highWaterMark:u,objectMode:p,encoding:d});return ho({subprocessStdout:a,onStdoutDataDone:m,readable:h,subprocess:e}),h},uo=(e,t,r)=>{let i=$t(e,t),n=ar(r,i,"readableDestroy");return{subprocessStdout:i,waitReadableDestroy:n}},lo=({readableEncoding:e,readableObjectMode:t,readableHighWaterMark:r},i)=>i?{readableEncoding:e,readableObjectMode:t,readableHighWaterMark:r}:{readableEncoding:e,readableObjectMode:!0,readableHighWaterMark:io},mo=({subprocessStdout:e,subprocess:t,binary:r,encoding:i,preserveNewlines:n})=>{let s=ve(),o=Oi({subprocessStdout:e,subprocess:t,binary:r,shouldEncode:!r,encoding:i,preserveNewlines:n});return{read(){M0(this,o,s)},onStdoutDataDone:s}},M0=async(e,t,r)=>{try{let{value:i,done:n}=await t.next();n?r.resolve():e.push(i)}catch{}},ho=async({subprocessStdout:e,onStdoutDataDone:t,readable:r,subprocess:i,subprocessStdin:n})=>{try{await po(e),await i,await ao(n),await t,r.readable&&r.push(null)}catch(s){await ao(n),yl(r,s)}},yo=async({subprocessStdout:e,subprocess:t,waitReadableDestroy:r},i)=>{await It(r,t)&&(yl(e,i),await Ri(t,i))},yl=(e,t)=>{ji(e,e.readable,t)};import{Writable as F0}from"stream";import{callbackify as fl}from"util";var gl=({subprocess:e,concurrentStreams:t},{to:r}={})=>{let{subprocessStdin:i,waitWritableFinal:n,waitWritableDestroy:s}=fo(e,r,t),o=new F0({...go(i,e,n),destroy:fl(bo.bind(void 0,{subprocessStdin:i,subprocess:e,waitWritableFinal:n,waitWritableDestroy:s})),highWaterMark:i.writableHighWaterMark,objectMode:i.writableObjectMode});return _o(i,o),o},fo=(e,t,r)=>{let i=Yr(e,t),n=ar(r,i,"writableFinal"),s=ar(r,i,"writableDestroy");return{subprocessStdin:i,waitWritableFinal:n,waitWritableDestroy:s}},go=(e,t,r)=>({write:B0.bind(void 0,e),final:fl(U0.bind(void 0,e,t,r))}),B0=(e,t,r,i)=>{e.write(t,r)?i():e.once("drain",i)},U0=async(e,t,r)=>{await It(r,t)&&(e.writable&&e.end(),await t)},_o=async(e,t,r)=>{try{await co(e),t.writable&&t.end()}catch(i){await ml(r),_l(t,i)}},bo=async({subprocessStdin:e,subprocess:t,waitWritableFinal:r,waitWritableDestroy:i},n)=>{await It(r,t),await It(i,t)&&(_l(e,n),await Ri(t,n))},_l=(e,t)=>{ji(e,e.writable,t)};import{Duplex as N0}from"stream";import{callbackify as G0}from"util";var bl=({subprocess:e,concurrentStreams:t,encoding:r},{from:i,to:n,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||oe.has(r),{subprocessStdout:c,waitReadableDestroy:d}=uo(e,i,t),{subprocessStdin:p,waitWritableFinal:u,waitWritableDestroy:l}=fo(e,n,t),{readableEncoding:m,readableObjectMode:h,readableHighWaterMark:f}=lo(c,a),{read:x,onStdoutDataDone:_}=mo({subprocessStdout:c,subprocess:e,binary:a,encoding:r,preserveNewlines:o}),v=new N0({read:x,...go(p,e,u),destroy:G0(z0.bind(void 0,{subprocessStdout:c,subprocessStdin:p,subprocess:e,waitReadableDestroy:d,waitWritableFinal:u,waitWritableDestroy:l})),readableHighWaterMark:f,writableHighWaterMark:p.writableHighWaterMark,readableObjectMode:h,writableObjectMode:p.writableObjectMode,encoding:m});return ho({subprocessStdout:c,onStdoutDataDone:_,readable:v,subprocess:e,subprocessStdin:p}),_o(p,v,c),v},z0=async({subprocessStdout:e,subprocessStdin:t,subprocess:r,waitReadableDestroy:i,waitWritableFinal:n,waitWritableDestroy:s},o)=>{await Promise.all([yo({subprocessStdout:e,subprocess:r,waitReadableDestroy:i},o),bo({subprocessStdin:t,subprocess:r,waitWritableFinal:n,waitWritableDestroy:s},o)])};var xo=(e,t,{from:r,binary:i=!1,preserveNewlines:n=!1}={})=>{let s=i||oe.has(t),o=$t(e,r),a=Oi({subprocessStdout:o,subprocess:e,binary:s,shouldEncode:!0,encoding:t,preserveNewlines:n});return V0(a,o,e)},V0=async function*(e,t,r){try{yield*e}finally{t.readable&&t.destroy(),await r}};var xl=(e,{encoding:t})=>{let r=ul();e.readable=hl.bind(void 0,{subprocess:e,concurrentStreams:r,encoding:t}),e.writable=gl.bind(void 0,{subprocess:e,concurrentStreams:r}),e.duplex=bl.bind(void 0,{subprocess:e,concurrentStreams:r,encoding:t}),e.iterable=xo.bind(void 0,e,t),e[Symbol.asyncIterator]=xo.bind(void 0,e,t,{})};var wl=(e,t)=>{for(let[r,i]of H0){let n=i.value.bind(t);Reflect.defineProperty(e,r,{...i,value:n})}},W0=(async()=>{})().constructor.prototype,H0=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(W0,e)]);var kl=(e,t,r,i)=>{let{file:n,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:d,options:p,fileDescriptors:u}=J0(e,t,r),{subprocess:l,promise:m}=Q0({file:n,commandArguments:s,options:p,startTime:c,verboseInfo:d,command:o,escapedCommand:a,fileDescriptors:u});return l.pipe=Pi.bind(void 0,{source:l,sourcePromise:m,boundOptions:{},createNested:i}),wl(l,m),Se.set(l,{options:p,fileDescriptors:u}),l},J0=(e,t,r)=>{let{command:i,escapedCommand:n,startTime:s,verboseInfo:o}=Fr(e,t,r),{file:a,commandArguments:c,options:d}=oi(e,t,r),p=X0(d),u=Iu(p,o);return{file:a,commandArguments:c,command:i,escapedCommand:n,startTime:s,verboseInfo:o,options:p,fileDescriptors:u}},X0=({timeout:e,signal:t,...r})=>{if(t!==void 0)throw new TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...r,timeoutDuration:e}},Q0=({file:e,commandArguments:t,options:r,startTime:i,verboseInfo:n,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=Y0(...ai(e,t,r))}catch(h){return Eu({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:i,verboseInfo:n})}let d=new AbortController;K0(Number.POSITIVE_INFINITY,d.signal);let p=[...c.stdio];Nu(c,a,d),zu(c,r,d);let u={},l=ve();c.kill=np.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:l,context:u,controller:d}),c.all=nl(c,r),xl(c,r),$u(c,r);let m=Z0({subprocess:c,options:r,startTime:i,verboseInfo:n,fileDescriptors:a,originalStreams:p,command:s,escapedCommand:o,context:u,onInternalError:l,controller:d});return{subprocess:c,promise:m}},Z0=async({subprocess:e,options:t,startTime:r,verboseInfo:i,fileDescriptors:n,originalStreams:s,command:o,escapedCommand:a,context:c,onInternalError:d,controller:p})=>{let[u,[l,m],h,f,x]=await dl({subprocess:e,options:t,context:c,verboseInfo:i,fileDescriptors:n,originalStreams:s,onInternalError:d,controller:p});p.abort(),d.resolve();let _=h.map((E,w)=>Ue(E,t,w)),v=Ue(f,t,"all"),A=ek({errorInfo:u,exitCode:l,signal:m,stdio:_,all:v,ipcOutput:x,context:c,options:t,command:o,escapedCommand:a,startTime:r});return Tt(A,i,t)},ek=({errorInfo:e,exitCode:t,signal:r,stdio:i,all:n,ipcOutput:s,context:o,options:a,command:c,escapedCommand:d,startTime:p})=>"error"in e?tr({error:e.error,command:c,escapedCommand:d,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:e.error instanceof $e,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:t,signal:r,stdio:i,all:n,ipcOutput:s,options:a,startTime:p,isSync:!1}):fi({command:c,escapedCommand:d,stdio:i,all:n,ipcOutput:s,options:a,startTime:p});var Di=(e,t)=>{let r=Object.fromEntries(Object.entries(t).map(([i,n])=>[i,tk(i,e[i],n)]));return{...e,...r}},tk=(e,t,r)=>rk.has(e)&&V(t)&&V(r)?{...t,...r}:r,rk=new Set(["env",...Yn]);var Ye=(e,t,r,i)=>{let n=(o,a,c)=>Ye(o,a,r,c),s=(...o)=>ik({mapArguments:e,deepOptions:r,boundOptions:t,setBoundExeca:i,createNested:n},...o);return i!==void 0&&i(s,n,t),s},ik=({mapArguments:e,deepOptions:t={},boundOptions:r={},setBoundExeca:i,createNested:n},s,...o)=>{if(V(s))return n(e,Di(r,s),i);let{file:a,commandArguments:c,options:d,isSync:p}=nk({mapArguments:e,firstArgument:s,nextArguments:o,deepOptions:t,boundOptions:r});return p?xu(a,c,d):kl(a,c,d,n)},nk=({mapArguments:e,firstArgument:t,nextArguments:r,deepOptions:i,boundOptions:n})=>{let s=Ia(t)?Ra(t,r):[t,...r],[o,a,c]=Cr(...s),d=Di(Di(i,n),c),{file:p=o,commandArguments:u=a,options:l=d,isSync:m=!1}=e({file:o,commandArguments:a,options:d});return{file:p,commandArguments:u,options:l,isSync:m}};var ql=({file:e,commandArguments:t})=>Sl(e,t),vl=({file:e,commandArguments:t})=>({...Sl(e,t),isSync:!0}),Sl=(e,t)=>{if(t.length>0)throw new TypeError(`The command and its arguments must be passed as a single string: ${e} ${t}.`);let[r,...i]=sk(e);return{file:r,commandArguments:i}},sk=e=>{if(typeof e!="string")throw new TypeError(`The command must be a string: ${String(e)}.`);let t=e.trim();if(t==="")return[];let r=[];for(let i of t.split(ok)){let n=r.at(-1);n&&n.endsWith("\\")?r[r.length-1]=`${n.slice(0,-1)} ${i}`:r.push(i)}return r},ok=/ +/g;var $l=(e,t,r)=>{e.sync=t(ak,r),e.s=e.sync},Al=({options:e})=>Cl(e),ak=({options:e})=>({...Cl(e),isSync:!0}),Cl=e=>({options:{...ck(e),...e}}),ck=({input:e,inputFile:t,stdio:r})=>e===void 0&&t===void 0&&r===void 0?{stdin:"inherit"}:{},El={preferLocal:!0};var me=Ye(()=>({})),gj=Ye(()=>({isSync:!0})),Li=Ye(ql),_j=Ye(vl),bj=Ye(Up),xj=Ye(Al,{},El,$l),{sendMessage:wj,getOneMessage:kj,getEachMessage:qj,getCancelSignal:vj}=Au();async function H(e,t,r){return me("docker",["compose",...e],{cwd:t,...r})}async function Je(e,t){try{await H(["up","-d","--no-deps","web"],e,{stdio:t?.stdio??"inherit"})}catch{}}async function Q(e,t,r){let i=["compose","exec","-T"];if(r)for(let[s,o]of Object.entries(r))i.push("-e",`${s}=${o}`);i.push("web","bin/rails",e);let{stdout:n}=await me("docker",i,{cwd:t});return n.split(`
|
|
76
76
|
`).filter(s=>!s.startsWith("[")).join(`
|
|
77
|
-
`).trim()}async function
|
|
78
|
-
`).some(i=>i.trim()==="running")}async function I(e,t,r={}){let{service:i="web",tty:n=!0,env:s}=r,o=["compose","exec"];if(n||o.push("-T"),s)for(let[a,c]of Object.entries(s))o.push("-e",`${a}=${c}`);o.push(i,...e),await me("docker",o,{cwd:t,stdio:"inherit"})}async function
|
|
79
|
-
`),{profiles:{}}}}function
|
|
80
|
-
`)}function
|
|
81
|
-
`)}function
|
|
77
|
+
`).trim()}async function Tl(e,t){let{stdout:r}=await me("docker",["compose","ps",e,"--format","{{.State}}"],{cwd:t});return r.split(`
|
|
78
|
+
`).some(i=>i.trim()==="running")}async function I(e,t,r={}){let{service:i="web",tty:n=!0,env:s}=r,o=["compose","exec"];if(n||o.push("-T"),s)for(let[a,c]of Object.entries(s))o.push("-e",`${a}=${c}`);o.push(i,...e),await me("docker",o,{cwd:t,stdio:"inherit"})}async function Mi(e,t){await me("docker",["compose","logs","-f",e],{cwd:t,stdio:"inherit"})}var wo=`http://localhost:${3e3}`,Xe=class extends Error{};function Pl(){return process.env.XDG_CONFIG_HOME?Rt.join(process.env.XDG_CONFIG_HOME,"spree"):Rt.join(pk.homedir(),".config","spree")}function ut(){return Rt.join(Pl(),"config.json")}function ko(e){return e?.code==="ENOENT"}function pr(){let e;try{e=Ne.readFileSync(ut(),"utf-8")}catch(t){if(ko(t))return{profiles:{}};throw t}try{let t=JSON.parse(e);return{...t,profiles:t.profiles??{}}}catch{let t=`${ut()}.bak`;try{Ne.renameSync(ut(),t)}catch{}return process.stderr.write(`${cr.default.yellow(`warning: ${ut()} was not valid JSON; moved it to ${t} and starting fresh.`)}
|
|
79
|
+
`),{profiles:{}}}}function qo(e){Ne.mkdirSync(Pl(),{recursive:!0,mode:448}),Ol(ut(),`${JSON.stringify(e,null,2)}
|
|
80
|
+
`)}function Ol(e,t){Ne.writeFileSync(e,t,{mode:384}),Ne.chmodSync(e,384)}function Fi(e){return Rt.join(e,".spree","credentials.json")}function dk(e){let t;try{t=Ne.readFileSync(Fi(e),"utf-8")}catch(r){if(ko(r))return null;throw r}try{return JSON.parse(t)}catch{return null}}function uk(e,t){let r=Fi(e),i=Rt.dirname(r);Ne.mkdirSync(i,{recursive:!0,mode:448}),lk(Rt.join(i,".gitignore")),Ol(r,`${JSON.stringify(t,null,2)}
|
|
81
|
+
`)}function lk(e){let t="";try{t=Ne.readFileSync(e,"utf-8")}catch(i){if(!ko(i))throw i}t.split(`
|
|
82
82
|
`).some(i=>i.trim()==="*")||Ne.writeFileSync(e,t&&!t.endsWith(`
|
|
83
83
|
`)?`${t}
|
|
84
84
|
*
|
|
85
85
|
`:`${t}*
|
|
86
|
-
`)}function
|
|
86
|
+
`)}function Bi(e){return e.slice(0,12)}async function vo(e,t,r=!1){r||process.stderr.write(`${cr.default.dim("No credentials found \u2014 minting a read-only API key via the dev stack...")}
|
|
87
87
|
`);let i;try{i=await Q("spree:cli:create_api_key",e,{NAME:"@spree/cli (auto)",KEY_TYPE:"secret",SCOPES:"read_all"})}catch(o){let a=o instanceof Error?o.message.split(`
|
|
88
|
-
`)[0]:String(o);throw new
|
|
89
|
-
${
|
|
90
|
-
`),s}async function
|
|
91
|
-
`));return{baseUrl:c,apiKey:d,source:a?.source??"flags",profileName:a?.profileName,tokenPrefix:
|
|
88
|
+
`)[0]:String(o);throw new Xe(`Could not mint an API key via the dev stack. Is it running? Start it with \`spree dev\`.
|
|
89
|
+
${cr.default.dim(a)}`)}let n=i.match(/sk_[A-Za-z0-9_-]+/);if(!n)throw new Xe("Could not mint an API key via the dev stack. Is it running? Start it with `spree dev`.");let s={baseUrl:`http://localhost:${t}`,token:n[0],scopes:["read_all"],mintedAt:new Date().toISOString()};return uk(e,s),r||process.stderr.write(`${cr.default.dim("Saved to .spree/credentials.json (scopes: read_all)")}
|
|
90
|
+
`),s}async function dr(e,t={}){let{allowMint:r=!0,cwd:i=process.cwd()}=t,n=pr(),s=e.baseUrl,o=e.apiKey,a;if(o&&(a={apiKey:o,source:"flags"}),!a&&e.profile){let p=n.profiles[e.profile];if(!p)throw new Xe(`Unknown profile "${e.profile}". Run \`spree auth login --profile ${e.profile}\` to create it.`);a={baseUrl:p.baseUrl,apiKey:p.token,source:"profile",profileName:e.profile}}if(!a&&process.env.SPREE_API_KEY&&(a={baseUrl:process.env.SPREE_BASE_URL,apiKey:process.env.SPREE_API_KEY,source:"env"}),!a){let p,u=0;try{let l=g(i);p=l.projectDir,u=l.port}catch{}if(p){let l=`http://localhost:${u}`,m=!s||s.replace(/\/$/,"")===l,h=dk(p);!h&&r&&m&&(h=await vo(p,u)),h&&(a={baseUrl:h.baseUrl,apiKey:h.token,source:"project",scopes:h.scopes})}}if(!a&&n.defaultProfile){let p=n.profiles[n.defaultProfile];p&&(a={baseUrl:p.baseUrl,apiKey:p.token,source:"profile",profileName:n.defaultProfile})}let c=s??a?.baseUrl,d=a?.apiKey;if(!c&&(a?.source==="flags"||a?.source==="env")&&(c=wo),!c||!d)throw new Xe(["No Admin API credentials found. Provide them via one of (host and key resolve together per source):"," - flags: --api-key <sk_...> (host defaults to "+wo+"; pass --base-url for a remote store)"," - env: SPREE_API_KEY (host defaults to "+wo+"; set SPREE_BASE_URL for a remote store)"," - project: run inside a Spree project with the dev stack up (auto-mints a read-only key)"," - profile: spree auth login --profile <name>"].join(`
|
|
91
|
+
`));return{baseUrl:c,apiKey:d,source:a?.source??"flags",profileName:a?.profileName,tokenPrefix:Bi(d),scopes:a?.scopes}}function ur(e,t="json"){if(e!=null){if(t==="table"){let r=yk(e);if(r){(0,So.printTable)(r.map(Il));return}let i=Il(e);(0,So.printTable)(Object.entries(i).map(([n,s])=>({field:n,value:s})));return}process.stdout.isTTY?process.stdout.write(`${hk(JSON.stringify(e,null,2))}
|
|
92
92
|
`):process.stdout.write(`${JSON.stringify(e)}
|
|
93
|
-
`)}}var
|
|
93
|
+
`)}}var mk=/("(?:\\.|[^"\\])*"(\s*:)?)|\b(true|false|null)\b|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g;function hk(e){return e.replace(mk,(t,r,i,n,s)=>r!==void 0?i?ae.default.cyan(r.slice(0,-i.length))+i:ae.default.green(r):n!==void 0?ae.default.yellow(n):s!==void 0?ae.default.yellow(s):t)}function yk(e){return Array.isArray(e)?e:e&&typeof e=="object"&&Array.isArray(e.data)?e.data:null}function Il(e){let t={};for(let[r,i]of Object.entries(e))i===null||["string","number","boolean"].includes(typeof i)?t[r]=i:Array.isArray(i)?t[r]=`[${i.length}]`:t[r]="{\u2026}";return t}function lt(e,t={}){if(e instanceof rt){let i=e.details?`
|
|
94
94
|
${JSON.stringify({details:e.details},null,2)}`:"";process.stderr.write(`${ae.default.red(`${e.code}:`)} ${e.message}${i}
|
|
95
95
|
`);let n=e.details?.required_scope;typeof n=="string"&&process.stderr.write(`${ae.default.dim(`Hint: this key lacks \`${n}\`. Create one that has it and use it:`)}
|
|
96
96
|
${ae.default.dim(` spree api-key create --type secret --scopes ${n}`)}
|
|
97
97
|
${ae.default.dim(" then pass it via --api-key <sk_...> or export SPREE_API_KEY=<sk_...>")}
|
|
98
|
-
`),process.exit(1)}if(e instanceof
|
|
98
|
+
`),process.exit(1)}if(e instanceof Xe&&(process.stderr.write(`${ae.default.red("error:")} ${e.message}
|
|
99
99
|
`),process.exit(2)),e instanceof TypeError&&/fetch failed/i.test(e.message)){let i=e.cause,n=i instanceof Error?i.message:i?String(i):"",s=t.baseUrl?` (${t.baseUrl})`:"";process.stderr.write(`${ae.default.red("error:")} could not reach the server${s}${n?`: ${n}`:""}
|
|
100
100
|
`),process.stderr.write(`${ae.default.dim("Hint: check the URL, or run `spree api status` to diagnose reachability and credentials.")}
|
|
101
101
|
`),process.exit(2)}let r=e instanceof Error?e.message:String(e);process.stderr.write(`${ae.default.red("error:")} ${r}
|
|
102
|
-
`),process.exit(2)}function
|
|
102
|
+
`),process.exit(2)}function jl(e){let t=new Map;for(let i of e.query??[]){let n=i.indexOf("=");if(n<=0)throw new Error(`Invalid -q expression "${i}" \u2014 expected key=value (e.g. -q status_eq=active)`);let s=i.slice(0,n),o=i.slice(n+1),a=t.get(s);a?a.push(o):t.set(s,[o])}let r={};for(let[i,n]of t)n.length>1?r[`q[${i}][]`]=n:r[`q[${i}]`]=n[0];return e.sort&&(r.sort=e.sort),e.page!==void 0&&(r.page=Rl(e.page,"--page")),e.limit!==void 0&&(r.limit=Rl(e.limit,"--limit")),e.expand&&(r.expand=e.expand),e.fields&&(r.fields=e.fields),r}function Rl(e,t){if(!/^[1-9]\d*$/.test(e))throw new Error(`Invalid ${t} "${e}" \u2014 expected a positive integer`);return Number(e)}function lr(e){let t=e.startsWith("/")?e:`/${e}`,r="/api/v3/admin";return t===r?"/":t.startsWith(`${r}/`)?t.slice(r.length):t}var jt=U(X(),1);async function mr(e,t){let r=Mt({baseUrl:e,secretKey:t,retry:!1});try{return{status:"connected",storeName:(await r.request("GET","/store",{}))?.name}}catch(i){return i instanceof rt?i.status===401?{status:"unauthorized",message:i.message}:i.status===403?{status:"forbidden"}:{status:"unreachable",message:`server responded HTTP ${i.status}: ${i.message}`}:{status:"unreachable",message:i instanceof Error?i.message:String(i)}}}async function Dl(e,t){let r=Mt({baseUrl:e,secretKey:t,retry:!1});try{return(await r.apiKeys.current()).scopes??null}catch{return null}}function Ui(e){return e.status==="unauthorized"||e.status==="unreachable"}function Ni(e){return{connected:jt.default.green(`connected${e.storeName?` (${e.storeName})`:""}`),forbidden:jt.default.green("connected")+jt.default.dim(" (key valid; lacks read_settings for store details)"),unauthorized:jt.default.red("key rejected (401)"),unreachable:jt.default.red(`unreachable \u2014 ${e.message}`)}[e.status]}var Ll={info:{title:"Admin API",contact:{name:"Spree Commerce",url:"https://spreecommerce.org",email:"hello@spreecommerce.org"},description:`Spree Admin API v3 - Administrative API for managing products, orders, and store settings.
|
|
103
103
|
|
|
104
104
|
## Authentication
|
|
105
105
|
|
|
@@ -150,7 +150,7 @@ Required fields depend on the provider \u2014 see
|
|
|
150
150
|
`,type:"object",properties:{provider:{type:"string",description:"Registered provider key (anything other than `email`).",not:{enum:["email"]}}},required:["provider"],additionalProperties:!0}]}}}}}},"/api/v3/admin/auth/refresh":{post:{summary:"Refresh token",tags:["Authentication"],security:[{api_key:[]}],description:`Exchanges the HttpOnly refresh-token cookie for a new access JWT and a
|
|
151
151
|
rotated refresh token cookie. No request body or Authorization header
|
|
152
152
|
is required \u2014 the cookie alone authenticates the call.
|
|
153
|
-
`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"refresh successful",content:{"application/json":{schema:{$ref:"#/components/schemas/AuthResponse"}}}},"401":{description:"missing or invalid refresh-token cookie",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/admin/auth/logout":{post:{summary:"Logout",tags:["Authentication"],security:[{api_key:[]}],description:"Revokes the refresh-token cookie, effectively logging the admin out.",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}}],responses:{"204":{description:"logout successful"}}}},"/api/v3/admin/me":{get:{summary:"Get current admin user and permissions",tags:["Authentication"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the current admin user profile and a serialized list of permissions (CanCanCan rules). The SPA uses these to drive UI permission checks.",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"current admin user and permissions",content:{"application/json":{schema:{$ref:"#/components/schemas/MeResponse"}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/admin/allowed_origins":{get:{summary:"List allowed origins",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the CORS allowlist for the current store. Each entry is a\nbare `scheme://host[:port]` permitted to call the admin API from a\nbrowser. Backs the `Rack::Cors` allowlist and the CSRF boundary of\nthe admin cookie session (see\n`docs/plans/5.5-admin-auth-cookie-refresh.md`).\n\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"q[origin_cont]",in:"query",required:!1,description:"Filter by origin (contains)",schema:{type:"string"}},{name:"sort",in:"query",required:!1,description:"Sort by field. Prefix with `-` for descending (e.g., `-created_at`).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"allowed origins found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/AllowedOrigin"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},post:{summary:"Create an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Adds an origin to the admin CORS allowlist. The value must be a bare\n`scheme://host[:port]` (no path, query, or fragment) and use `http` or\n`https`.\n\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"201":{description:"allowed origin created",content:{"application/json":{schema:{$ref:"#/components/schemas/AllowedOrigin"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{origin:{type:"string"}},required:["origin"]}}}}}},"/api/v3/admin/allowed_origins/{id}":{parameters:[{name:"id",in:"path",required:!0,description:"Allowed origin ID",schema:{type:"string"}}],get:{summary:"Get an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single allowed origin by prefixed ID.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"allowed origin found",content:{"application/json":{schema:{$ref:"#/components/schemas/AllowedOrigin"}}}},"404":{description:"allowed origin not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Updates an existing allowed origin.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"allowed origin updated",content:{"application/json":{schema:{$ref:"#/components/schemas/AllowedOrigin"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{origin:{type:"string"}}}}}}},delete:{summary:"Delete an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:`Removes an origin from the admin CORS allowlist. After deletion the
|
|
153
|
+
`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"refresh successful",content:{"application/json":{schema:{$ref:"#/components/schemas/AuthResponse"}}}},"401":{description:"missing or invalid refresh-token cookie",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/admin/auth/logout":{post:{summary:"Logout",tags:["Authentication"],security:[{api_key:[]}],description:"Revokes the refresh-token cookie, effectively logging the admin out.",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}}],responses:{"204":{description:"logout successful"}}}},"/api/v3/admin/me":{get:{summary:"Get current admin user and permissions",tags:["Authentication"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the current admin user profile and a serialized list of permissions (CanCanCan rules). The SPA uses these to drive UI permission checks.",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"current admin user and permissions",content:{"application/json":{schema:{$ref:"#/components/schemas/MeResponse"}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update the current admin profile",tags:["Authentication"],security:[{api_key:[],bearer_auth:[]}],description:"Self-service update of the signed-in admin's own profile, such as their admin UI display language (`selected_locale`).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"profile updated",content:{"application/json":{schema:{$ref:"#/components/schemas/MeResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{selected_locale:{type:"string"},first_name:{type:"string"},last_name:{type:"string"}}}}}}}},"/api/v3/admin/allowed_origins":{get:{summary:"List allowed origins",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the CORS allowlist for the current store. Each entry is a\nbare `scheme://host[:port]` permitted to call the admin API from a\nbrowser. Backs the `Rack::Cors` allowlist and the CSRF boundary of\nthe admin cookie session (see\n`docs/plans/5.5-admin-auth-cookie-refresh.md`).\n\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"q[origin_cont]",in:"query",required:!1,description:"Filter by origin (contains)",schema:{type:"string"}},{name:"sort",in:"query",required:!1,description:"Sort by field. Prefix with `-` for descending (e.g., `-created_at`).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"allowed origins found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/AllowedOrigin"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},post:{summary:"Create an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Adds an origin to the admin CORS allowlist. The value must be a bare\n`scheme://host[:port]` (no path, query, or fragment) and use `http` or\n`https`.\n\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"201":{description:"allowed origin created",content:{"application/json":{schema:{$ref:"#/components/schemas/AllowedOrigin"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{origin:{type:"string"}},required:["origin"]}}}}}},"/api/v3/admin/allowed_origins/{id}":{parameters:[{name:"id",in:"path",required:!0,description:"Allowed origin ID",schema:{type:"string"}}],get:{summary:"Get an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single allowed origin by prefixed ID.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"allowed origin found",content:{"application/json":{schema:{$ref:"#/components/schemas/AllowedOrigin"}}}},"404":{description:"allowed origin not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:"Updates an existing allowed origin.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"allowed origin updated",content:{"application/json":{schema:{$ref:"#/components/schemas/AllowedOrigin"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{origin:{type:"string"}}}}}}},delete:{summary:"Delete an allowed origin",tags:["Allowed Origins"],security:[{api_key:[],bearer_auth:[]}],description:`Removes an origin from the admin CORS allowlist. After deletion the
|
|
154
154
|
admin SPA running at that origin will no longer be able to call the
|
|
155
155
|
admin API from a browser.
|
|
156
156
|
|
|
@@ -210,20 +210,20 @@ bulk-write fast path for the admin spreadsheet. The response
|
|
|
210
210
|
carries \`price_count\` \u2014 the number of rows touched.
|
|
211
211
|
|
|
212
212
|
|
|
213
|
-
**Required scope:** \`write_products\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"prices upserted",content:{"application/json":{schema:{type:"object",properties:{price_count:{type:"integer"}}}}}},"422":{description:"missing prices key",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["prices"],properties:{prices:{type:"array",items:{type:"object",required:["variant_id","currency"],properties:{id:{type:"string",nullable:!0},variant_id:{type:"string"},currency:{type:"string"},price_list_id:{type:"string",nullable:!0},amount:{type:"string",nullable:!0},compare_at_amount:{type:"string",nullable:!0}}}}}}}}}}},"/api/v3/admin/prices/bulk_destroy":{delete:{summary:"Bulk-delete prices",tags:["Pricing"],security:[{api_key:[],bearer_auth:[]}],description:"Soft-deletes each price in `ids`. Returns the count actually destroyed.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"prices deleted",content:{"application/json":{schema:{type:"object",properties:{price_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids"],properties:{ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/{product_id}/custom_fields":{get:{summary:"List product custom fields",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the product's custom field values.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., custom_field_definition). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., key,value,namespace). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"custom fields found",content:{"application/json":{}}}}},post:{summary:"Create a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Sets a custom field value on the product. Requires an existing CustomFieldDefinition; pass its prefixed `cfdef_\u2026` id.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}}],responses:{"201":{description:"custom field created",content:{"application/json":{}}},"422":{description:"duplicate definition for the same product",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["custom_field_definition_id","value"],properties:{custom_field_definition_id:{type:"string",description:"Prefixed `cfdef_\u2026` id"},value:{description:"Value matching the definition's `field_type`"}}}}}}}},"/api/v3/admin/products/{product_id}/custom_fields/{id}":{get:{summary:"Show a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., custom_field_definition). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., key,value,namespace). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"custom field found",content:{"application/json":{}}}}},patch:{summary:"Update a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Updates the custom field's `value`. The linked definition cannot be changed \u2014 delete and recreate to switch.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"custom field updated",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["value"],properties:{value:{description:"New value"}}}}}}},delete:{summary:"Delete a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"custom field deleted"}}}},"/api/v3/admin/products":{get:{summary:"List products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a paginated list of products for the current store.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"sort",in:"query",required:!1,description:"Sort field (e.g., name, -name, price, -price, best_selling)",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., variants, media, option_types, categories). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., name,slug,price,status). id is always included.",schema:{type:"string"}},{name:"q[name_cont]",in:"query",required:!1,description:"Filter by name (contains)",schema:{type:"string"}},{name:"q[status_eq]",in:"query",required:!1,description:"Filter by status",schema:{type:"string"}}],responses:{"200":{description:"products found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/Product"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},post:{summary:"Create a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:`Creates a new product. Supports nested variants with prices and option types.
|
|
213
|
+
**Required scope:** \`write_products\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"prices upserted",content:{"application/json":{schema:{type:"object",properties:{price_count:{type:"integer"}}}}}},"422":{description:"missing prices key",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["prices"],properties:{prices:{type:"array",items:{type:"object",required:["variant_id","currency"],properties:{id:{type:"string",nullable:!0},variant_id:{type:"string"},currency:{type:"string"},price_list_id:{type:"string",nullable:!0},amount:{type:"string",nullable:!0},compare_at_amount:{type:"string",nullable:!0}}}}}}}}}}},"/api/v3/admin/prices/bulk_destroy":{delete:{summary:"Bulk-delete prices",tags:["Pricing"],security:[{api_key:[],bearer_auth:[]}],description:"Soft-deletes each price in `ids`. Returns the count actually destroyed.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"prices deleted",content:{"application/json":{schema:{type:"object",properties:{price_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids"],properties:{ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/{product_id}/custom_fields":{get:{summary:"List product custom fields",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the product's custom field values.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., custom_field_definition). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., key,value,namespace). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"custom fields found",content:{"application/json":{}}}}},post:{summary:"Create a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Sets a custom field value on the product. Requires an existing CustomFieldDefinition; pass its prefixed `cfdef_\u2026` id.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}}],responses:{"201":{description:"custom field created",content:{"application/json":{}}},"422":{description:"duplicate definition for the same product",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["custom_field_definition_id","value"],properties:{custom_field_definition_id:{type:"string",description:"Prefixed `cfdef_\u2026` id"},value:{description:"Value matching the definition's `field_type`"}}}}}}}},"/api/v3/admin/products/{product_id}/custom_fields/{id}":{get:{summary:"Show a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., custom_field_definition). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., key,value,namespace). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"custom field found",content:{"application/json":{}}}}},patch:{summary:"Update a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Updates the custom field's `value`. The linked definition cannot be changed \u2014 delete and recreate to switch.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"custom field updated",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["value"],properties:{value:{description:"New value"}}}}}}},delete:{summary:"Delete a product custom field",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"custom field deleted"}}}},"/api/v3/admin/products/{product_id}/translations":{get:{summary:"List product translations",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the full translation matrix for the product: the source value and content type per translatable field, plus the translated value for every supported locale.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"product_id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"translations found",content:{"application/json":{}}}}}},"/api/v3/admin/products":{get:{summary:"List products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a paginated list of products for the current store.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"sort",in:"query",required:!1,description:"Sort field (e.g., name, -name, price, -price, best_selling)",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., variants, media, option_types, categories). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., name,slug,price,status). id is always included.",schema:{type:"string"}},{name:"q[name_cont]",in:"query",required:!1,description:"Filter by name (contains)",schema:{type:"string"}},{name:"q[status_eq]",in:"query",required:!1,description:"Filter by status",schema:{type:"string"}}],responses:{"200":{description:"products found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/Product"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},post:{summary:"Create a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:`Creates a new product. Supports nested variants with prices and option types.
|
|
214
214
|
|
|
215
215
|
Option types and values are auto-created if they don't exist.
|
|
216
216
|
Prices are upserted by currency. Stock items are upserted by stock location.
|
|
217
217
|
|
|
218
218
|
|
|
219
|
-
**Required scope:** \`write_products\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"201":{description:"product created",content:{"application/json":{schema:{$ref:"#/components/schemas/Product"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},description:{type:"string"},slug:{type:"string"},status:{type:"string",enum:["draft","active","archived"]},tax_category_id:{type:"string",description:"Tax category ID"},category_ids:{type:"array",items:{type:"string"},description:"Array of category IDs"},tags:{type:"array",items:{type:"string"}},prices:{type:"array",description:"Shorthand for a simple (no-options) product: per-currency prices that forward to the product's sole variant. For products with options, set prices per variant under `variants:` instead.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},variants:{type:"array",description:"Array of variant payloads. Variants can declare multiple option pairs via `options:` and per-currency prices via `prices:`. Stock counts go in `stock_items:` (per stock location).",items:{type:"object",properties:{sku:{type:"string"},options:{type:"array",description:"One pair per option type the variant participates in (e.g. size + color). Option types and values are auto-created if missing.",items:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}}},prices:{type:"array",description:"Per-currency prices. Upserted by currency.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},stock_items:{type:"array",description:"Per-stock-location inventory. Upserted by stock_location_id.",items:{type:"object",required:["stock_location_id","count_on_hand"],properties:{stock_location_id:{type:"string",description:"Stock location ID (e.g. sloc_xxx)"},count_on_hand:{type:"integer"},backorderable:{type:"boolean"}}}}}}}},required:["name"]}}}}}},"/api/v3/admin/products/{id}":{get:{summary:"Get a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single product by ID.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Product ID (e.g., prod_xxx)",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., variants, media, option_types, categories). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., name,slug,price,status). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"product found",content:{"application/json":{schema:{$ref:"#/components/schemas/Product"}}}},"404":{description:"product not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Updates a product. Only provided fields are updated.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}}],responses:{"200":{description:"product updated",content:{"application/json":{schema:{$ref:"#/components/schemas/Product"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},description:{type:"string"},slug:{type:"string"},status:{type:"string",enum:["draft","active","archived"]},tax_category_id:{type:"string",description:"Tax category ID"},category_ids:{type:"array",items:{type:"string"},description:"Array of category IDs"},tags:{type:"array",items:{type:"string"}},prices:{type:"array",description:"Shorthand for a simple (no-options) product: per-currency prices that forward to the product's sole variant. For products with options, set prices per variant under `variants:` instead.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},variants:{type:"array",description:"Array of variant payloads. Variants can declare multiple option pairs via `options:` and per-currency prices via `prices:`. Stock counts go in `stock_items:` (per stock location).",items:{type:"object",properties:{sku:{type:"string"},options:{type:"array",description:"One pair per option type the variant participates in (e.g. size + color). Option types and values are auto-created if missing.",items:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}}},prices:{type:"array",description:"Per-currency prices. Upserted by currency.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},stock_items:{type:"array",description:"Per-stock-location inventory. Upserted by stock_location_id.",items:{type:"object",required:["stock_location_id","count_on_hand"],properties:{stock_location_id:{type:"string",description:"Stock location ID (e.g. sloc_xxx)"},count_on_hand:{type:"integer"},backorderable:{type:"boolean"}}}}}}}}}}}}},delete:{summary:"Delete a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Soft-deletes a product.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}}],responses:{"204":{description:"product deleted"}}}},"/api/v3/admin/products/bulk_status_update":{post:{summary:"Bulk-update product status",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Sets `status` on each product in `ids`. Reindexes the affected products\nfor search. Cross-store IDs are silently dropped. Returns counts.\n\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"cross-store products silently dropped",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},status:{type:"string"}}}}}},"422":{description:"invalid status",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","status"],properties:{ids:{type:"array",items:{type:"string"}},status:{type:"string",enum:["draft","active","archived"]}}}}}}}},"/api/v3/admin/products/bulk_add_to_categories":{post:{summary:"Bulk-add products to categories",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Attaches each product in `ids` to every category (taxon) in `category_ids`.\nCategories from sibling stores are silently ignored.\n\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products added to categories",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},category_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","category_ids"],properties:{ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_remove_from_categories":{post:{summary:"Bulk-remove products from categories",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Detaches each product in `ids` from every category in `category_ids`.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products removed from categories",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","category_ids"],properties:{ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_add_to_channels":{post:{summary:"Bulk-add products to channels",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Publishes each product in `ids` on every channel in `channel_ids`. Idempotent \u2014\nre-publishing on an existing channel is a no-op. Channels from sibling stores\nare silently ignored.\n\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products published on channels",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},channel_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","channel_ids"],properties:{ids:{type:"array",items:{type:"string"}},channel_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_remove_from_channels":{post:{summary:"Bulk-remove products from channels",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Unpublishes each product in `ids` from every channel in `channel_ids`.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products unpublished from channels",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},channel_count:{type:"integer"},removed:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","channel_ids"],properties:{ids:{type:"array",items:{type:"string"}},channel_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_add_tags":{post:{summary:"Bulk-add tags to products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Adds each tag name in `tags` to every product in `ids`. Tags are upserted by name.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"tags added",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},tag_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","tags"],properties:{ids:{type:"array",items:{type:"string"}},tags:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_remove_tags":{post:{summary:"Bulk-remove tags from products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Removes each tag in `tags` from every product in `ids`.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"tags removed",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","tags"],properties:{ids:{type:"array",items:{type:"string"}},tags:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_destroy":{delete:{summary:"Bulk-delete products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Soft-deletes each product in `ids`. Returns the count actually destroyed.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products deleted",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids"],properties:{ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/promotions/{promotion_id}/coupon_codes":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}}],get:{summary:"List coupon codes for a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the auto-generated coupon codes for a multi-code promotion. Single-code promotions store the code on the promotion itself; this endpoint returns an empty list for them.\n\n**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"coupon codes found",content:{"application/json":{}}}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_actions":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}}],get:{summary:"List actions for a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"actions found",content:{"application/json":{}}}}},post:{summary:"Create an action on a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Adds a new action to a promotion. The `type` is the wire shorthand from `GET /promotion_actions/types` (e.g. `free_shipping`, `create_item_adjustments`). Fully-qualified Ruby class names are also accepted for backward compatibility.\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"action created",content:{"application/json":{}}},"422":{description:"unknown action type",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}},required:["type"]}}}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_actions/{id}":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],delete:{summary:"Delete an action from a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"204":{description:"action deleted"}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_rules":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}}],get:{summary:"List rules for a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rules found",content:{"application/json":{}}}}},post:{summary:"Create a rule on a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Adds a new rule to a promotion. The `type` is the wire shorthand from `GET /promotion_rules/types` (e.g. `currency`, `item_total`, `product`). Fully-qualified Ruby class names are also accepted for backward compatibility.\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"rule created with preferences",content:{"application/json":{}}},"422":{description:"unknown rule type",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}},required:["type"]}}}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_rules/{id}":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],patch:{summary:"Update a rule's preferences",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rule updated",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{preferences:{type:"object",additionalProperties:!0}}}}}}},delete:{summary:"Delete a rule from a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"204":{description:"rule deleted"}}}},"/api/v3/admin/promotions":{get:{summary:"List promotions",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the store's promotions, including manual coupon and automatic promotions.\n\n**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"promotions found",content:{"application/json":{}}}}},post:{summary:"Create a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Creates a new promotion. `code` is required for single-code coupon promotions;\npass `multi_codes: true` with `number_of_codes` to auto-generate a batch.\n\nRules and actions can be created in the same request by passing arrays of\n`{ type, preferences, ... }` rows. The server reconciles to the desired set:\nnew rows are built, existing rows (by `id`) are updated, omitted rows are removed.\n\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"promotion created with rules and actions",content:{"application/json":{}}},"422":{description:"invalid params",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},code:{type:"string",nullable:!0},description:{type:"string",nullable:!0},starts_at:{type:"string",format:"date-time",nullable:!0},expires_at:{type:"string",format:"date-time",nullable:!0},usage_limit:{type:"integer",nullable:!0},match_policy:{type:"string",enum:["all","any"]},kind:{type:"string",enum:["coupon_code","automatic"]},multi_codes:{type:"boolean"},number_of_codes:{type:"integer",nullable:!0},code_prefix:{type:"string",nullable:!0},promotion_category_id:{type:"string",nullable:!0},rules:{type:"array",items:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0},product_ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}},customer_ids:{type:"array",items:{type:"string"}}},required:["type"]}},actions:{type:"array",items:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0},calculator:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}}}},required:["type"]}}},required:["name"]}}}}}},"/api/v3/admin/promotions/{id}":{get:{summary:"Show a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"promotion found",content:{"application/json":{}}}}},patch:{summary:"Update a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Updates a promotion. The `rules` and `actions` arrays are treated as\na *desired set* \u2014 rows with `id` update in place, rows without `id` are\nbuilt fresh, and any existing row not present in the array is destroyed.\nPass `rules: []` or `actions: []` to clear them.\n\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rules and actions cleared with empty arrays",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},description:{type:"string",nullable:!0},code:{type:"string",nullable:!0},starts_at:{type:"string",format:"date-time",nullable:!0},expires_at:{type:"string",format:"date-time",nullable:!0},usage_limit:{type:"integer",nullable:!0},match_policy:{type:"string",enum:["all","any"]},kind:{type:"string",enum:["coupon_code","automatic"]},promotion_category_id:{type:"string",nullable:!0},rules:{type:"array",items:{type:"object",properties:{id:{type:"string",nullable:!0,description:"Pass to update an existing rule; omit to build a new one"},type:{type:"string"},preferences:{type:"object",additionalProperties:!0},product_ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}},customer_ids:{type:"array",items:{type:"string"}}},required:["type"]}},actions:{type:"array",items:{type:"object",properties:{id:{type:"string",nullable:!0},type:{type:"string"},preferences:{type:"object",additionalProperties:!0},calculator:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}}}},required:["type"]}}}}}}}},delete:{summary:"Delete a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"promotion deleted"}}}},"/api/v3/admin/promotion_actions/types":{get:{summary:"List available promotion action types",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:'Returns the registered Spree::PromotionAction subclasses with their preference schemas. Used by admin UIs to populate the "Add action" picker and render generic preference forms.\n\n**Required scope:** `read_promotions` (for API-key authentication).',parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"action types found",content:{"application/json":{}}}}}},"/api/v3/admin/promotion_rules/types":{get:{summary:"List available promotion rule types",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the registered Spree::PromotionRule subclasses with their preference schemas.\n\n**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rule types found",content:{"application/json":{}}}}}},"/api/v3/admin/orders/{order_id}/refunds":{get:{summary:"List refunds",tags:["Refunds"],security:[{api_key:[],bearer_auth:[]}],description:"Returns all refunds for an order.\n\n**Required scope:** `read_refunds` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"order_id",in:"path",required:!0,description:"Order ID",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., payment, refund_reason). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., amount,reason,transaction_id). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"refunds found",content:{"application/json":{}}}}},post:{summary:"Create a refund",tags:["Refunds"],security:[{api_key:[],bearer_auth:[]}],description:"Creates a refund for a payment on the order. The refund is automatically processed via the payment gateway.\n\n**Required scope:** `write_refunds` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"order_id",in:"path",required:!0,description:"Order ID",schema:{type:"string"}}],responses:{"201":{description:"refund created",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["payment_id","amount"],properties:{payment_id:{type:"string",description:"Payment ID"},amount:{type:"string"},refund_reason_id:{type:"string",description:"Refund reason ID"}}}}}}}},"/api/v3/admin/store_credit_categories":{get:{summary:"List store credit categories",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:`Returns the configured store credit categories. Categories classify
|
|
219
|
+
**Required scope:** \`write_products\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"201":{description:"product created",content:{"application/json":{schema:{$ref:"#/components/schemas/Product"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},description:{type:"string"},slug:{type:"string"},status:{type:"string",enum:["draft","active","archived"]},tax_category_id:{type:"string",description:"Tax category ID"},category_ids:{type:"array",items:{type:"string"},description:"Array of category IDs"},tags:{type:"array",items:{type:"string"}},prices:{type:"array",description:"Shorthand for a simple (no-options) product: per-currency prices that forward to the product's sole variant. For products with options, set prices per variant under `variants:` instead.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},variants:{type:"array",description:"Array of variant payloads. Variants can declare multiple option pairs via `options:` and per-currency prices via `prices:`. Stock counts go in `stock_items:` (per stock location).",items:{type:"object",properties:{sku:{type:"string"},options:{type:"array",description:"One pair per option type the variant participates in (e.g. size + color). Option types and values are auto-created if missing.",items:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}}},prices:{type:"array",description:"Per-currency prices. Upserted by currency.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},stock_items:{type:"array",description:"Per-stock-location inventory. Upserted by stock_location_id.",items:{type:"object",required:["stock_location_id","count_on_hand"],properties:{stock_location_id:{type:"string",description:"Stock location ID (e.g. sloc_xxx)"},count_on_hand:{type:"integer"},backorderable:{type:"boolean"}}}}}}}},required:["name"]}}}}}},"/api/v3/admin/products/{id}":{get:{summary:"Get a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single product by ID.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Product ID (e.g., prod_xxx)",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., variants, media, option_types, categories). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., name,slug,price,status). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"product found",content:{"application/json":{schema:{$ref:"#/components/schemas/Product"}}}},"404":{description:"product not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Updates a product. Only provided fields are updated.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}}],responses:{"200":{description:"product updated",content:{"application/json":{schema:{$ref:"#/components/schemas/Product"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},description:{type:"string"},slug:{type:"string"},status:{type:"string",enum:["draft","active","archived"]},tax_category_id:{type:"string",description:"Tax category ID"},category_ids:{type:"array",items:{type:"string"},description:"Array of category IDs"},tags:{type:"array",items:{type:"string"}},prices:{type:"array",description:"Shorthand for a simple (no-options) product: per-currency prices that forward to the product's sole variant. For products with options, set prices per variant under `variants:` instead.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},variants:{type:"array",description:"Array of variant payloads. Variants can declare multiple option pairs via `options:` and per-currency prices via `prices:`. Stock counts go in `stock_items:` (per stock location).",items:{type:"object",properties:{sku:{type:"string"},options:{type:"array",description:"One pair per option type the variant participates in (e.g. size + color). Option types and values are auto-created if missing.",items:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}}},prices:{type:"array",description:"Per-currency prices. Upserted by currency.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},stock_items:{type:"array",description:"Per-stock-location inventory. Upserted by stock_location_id.",items:{type:"object",required:["stock_location_id","count_on_hand"],properties:{stock_location_id:{type:"string",description:"Stock location ID (e.g. sloc_xxx)"},count_on_hand:{type:"integer"},backorderable:{type:"boolean"}}}}}}}}}}}}},delete:{summary:"Delete a product",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Soft-deletes a product.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}}],responses:{"204":{description:"product deleted"}}}},"/api/v3/admin/products/bulk_status_update":{post:{summary:"Bulk-update product status",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Sets `status` on each product in `ids`. Reindexes the affected products\nfor search. Cross-store IDs are silently dropped. Returns counts.\n\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"cross-store products silently dropped",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},status:{type:"string"}}}}}},"422":{description:"invalid status",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","status"],properties:{ids:{type:"array",items:{type:"string"}},status:{type:"string",enum:["draft","active","archived"]}}}}}}}},"/api/v3/admin/products/bulk_add_to_categories":{post:{summary:"Bulk-add products to categories",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Attaches each product in `ids` to every category (taxon) in `category_ids`.\nCategories from sibling stores are silently ignored.\n\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products added to categories",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},category_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","category_ids"],properties:{ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_remove_from_categories":{post:{summary:"Bulk-remove products from categories",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Detaches each product in `ids` from every category in `category_ids`.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products removed from categories",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","category_ids"],properties:{ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_add_to_channels":{post:{summary:"Bulk-add products to channels",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Publishes each product in `ids` on every channel in `channel_ids`. Idempotent \u2014\nre-publishing on an existing channel is a no-op. Channels from sibling stores\nare silently ignored.\n\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products published on channels",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},channel_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","channel_ids"],properties:{ids:{type:"array",items:{type:"string"}},channel_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_remove_from_channels":{post:{summary:"Bulk-remove products from channels",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Unpublishes each product in `ids` from every channel in `channel_ids`.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products unpublished from channels",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},channel_count:{type:"integer"},removed:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","channel_ids"],properties:{ids:{type:"array",items:{type:"string"}},channel_ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_add_tags":{post:{summary:"Bulk-add tags to products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Adds each tag name in `tags` to every product in `ids`. Tags are upserted by name.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"tags added",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"},tag_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","tags"],properties:{ids:{type:"array",items:{type:"string"}},tags:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_remove_tags":{post:{summary:"Bulk-remove tags from products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Removes each tag in `tags` from every product in `ids`.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"tags removed",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids","tags"],properties:{ids:{type:"array",items:{type:"string"}},tags:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/products/bulk_destroy":{delete:{summary:"Bulk-delete products",tags:["Products"],security:[{api_key:[],bearer_auth:[]}],description:"Soft-deletes each product in `ids`. Returns the count actually destroyed.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"products deleted",content:{"application/json":{schema:{type:"object",properties:{product_count:{type:"integer"}}}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["ids"],properties:{ids:{type:"array",items:{type:"string"}}}}}}}}},"/api/v3/admin/promotions/{promotion_id}/coupon_codes":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}}],get:{summary:"List coupon codes for a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the auto-generated coupon codes for a multi-code promotion. Single-code promotions store the code on the promotion itself; this endpoint returns an empty list for them.\n\n**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"coupon codes found",content:{"application/json":{}}}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_actions":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}}],get:{summary:"List actions for a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"actions found",content:{"application/json":{}}}}},post:{summary:"Create an action on a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Adds a new action to a promotion. The `type` is the wire shorthand from `GET /promotion_actions/types` (e.g. `free_shipping`, `create_item_adjustments`). Fully-qualified Ruby class names are also accepted for backward compatibility.\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"action created",content:{"application/json":{}}},"422":{description:"unknown action type",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}},required:["type"]}}}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_actions/{id}":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],delete:{summary:"Delete an action from a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"204":{description:"action deleted"}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_rules":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}}],get:{summary:"List rules for a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rules found",content:{"application/json":{}}}}},post:{summary:"Create a rule on a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Adds a new rule to a promotion. The `type` is the wire shorthand from `GET /promotion_rules/types` (e.g. `currency`, `item_total`, `product`). Fully-qualified Ruby class names are also accepted for backward compatibility.\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"rule created with preferences",content:{"application/json":{}}},"422":{description:"unknown rule type",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}},required:["type"]}}}}}},"/api/v3/admin/promotions/{promotion_id}/promotion_rules/{id}":{parameters:[{name:"promotion_id",in:"path",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],patch:{summary:"Update a rule's preferences",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rule updated",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{preferences:{type:"object",additionalProperties:!0}}}}}}},delete:{summary:"Delete a rule from a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"204":{description:"rule deleted"}}}},"/api/v3/admin/promotions":{get:{summary:"List promotions",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the store's promotions, including manual coupon and automatic promotions.\n\n**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"promotions found",content:{"application/json":{}}}}},post:{summary:"Create a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Creates a new promotion. `code` is required for single-code coupon promotions;\npass `multi_codes: true` with `number_of_codes` to auto-generate a batch.\n\nRules and actions can be created in the same request by passing arrays of\n`{ type, preferences, ... }` rows. The server reconciles to the desired set:\nnew rows are built, existing rows (by `id`) are updated, omitted rows are removed.\n\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"promotion created with rules and actions",content:{"application/json":{}}},"422":{description:"invalid params",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},code:{type:"string",nullable:!0},description:{type:"string",nullable:!0},starts_at:{type:"string",format:"date-time",nullable:!0},expires_at:{type:"string",format:"date-time",nullable:!0},usage_limit:{type:"integer",nullable:!0},match_policy:{type:"string",enum:["all","any"]},kind:{type:"string",enum:["coupon_code","automatic"]},multi_codes:{type:"boolean"},number_of_codes:{type:"integer",nullable:!0},code_prefix:{type:"string",nullable:!0},promotion_category_id:{type:"string",nullable:!0},rules:{type:"array",items:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0},product_ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}},customer_ids:{type:"array",items:{type:"string"}}},required:["type"]}},actions:{type:"array",items:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0},calculator:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}}}},required:["type"]}}},required:["name"]}}}}}},"/api/v3/admin/promotions/{id}":{get:{summary:"Show a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"promotion found",content:{"application/json":{}}}}},patch:{summary:"Update a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Updates a promotion. The `rules` and `actions` arrays are treated as\na *desired set* \u2014 rows with `id` update in place, rows without `id` are\nbuilt fresh, and any existing row not present in the array is destroyed.\nPass `rules: []` or `actions: []` to clear them.\n\n\n**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rules and actions cleared with empty arrays",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},description:{type:"string",nullable:!0},code:{type:"string",nullable:!0},starts_at:{type:"string",format:"date-time",nullable:!0},expires_at:{type:"string",format:"date-time",nullable:!0},usage_limit:{type:"integer",nullable:!0},match_policy:{type:"string",enum:["all","any"]},kind:{type:"string",enum:["coupon_code","automatic"]},promotion_category_id:{type:"string",nullable:!0},rules:{type:"array",items:{type:"object",properties:{id:{type:"string",nullable:!0,description:"Pass to update an existing rule; omit to build a new one"},type:{type:"string"},preferences:{type:"object",additionalProperties:!0},product_ids:{type:"array",items:{type:"string"}},category_ids:{type:"array",items:{type:"string"}},customer_ids:{type:"array",items:{type:"string"}}},required:["type"]}},actions:{type:"array",items:{type:"object",properties:{id:{type:"string",nullable:!0},type:{type:"string"},preferences:{type:"object",additionalProperties:!0},calculator:{type:"object",properties:{type:{type:"string"},preferences:{type:"object",additionalProperties:!0}}}},required:["type"]}}}}}}}},delete:{summary:"Delete a promotion",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"promotion deleted"}}}},"/api/v3/admin/promotion_actions/types":{get:{summary:"List available promotion action types",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:'Returns the registered Spree::PromotionAction subclasses with their preference schemas. Used by admin UIs to populate the "Add action" picker and render generic preference forms.\n\n**Required scope:** `read_promotions` (for API-key authentication).',parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"action types found",content:{"application/json":{}}}}}},"/api/v3/admin/promotion_rules/types":{get:{summary:"List available promotion rule types",tags:["Promotions"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the registered Spree::PromotionRule subclasses with their preference schemas.\n\n**Required scope:** `read_promotions` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"rule types found",content:{"application/json":{}}}}}},"/api/v3/admin/orders/{order_id}/refunds":{get:{summary:"List refunds",tags:["Refunds"],security:[{api_key:[],bearer_auth:[]}],description:"Returns all refunds for an order.\n\n**Required scope:** `read_refunds` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"order_id",in:"path",required:!0,description:"Order ID",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., payment, refund_reason). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., amount,reason,transaction_id). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"refunds found",content:{"application/json":{}}}}},post:{summary:"Create a refund",tags:["Refunds"],security:[{api_key:[],bearer_auth:[]}],description:"Creates a refund for a payment on the order. The refund is automatically processed via the payment gateway.\n\n**Required scope:** `write_refunds` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"order_id",in:"path",required:!0,description:"Order ID",schema:{type:"string"}}],responses:{"201":{description:"refund created",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["payment_id","amount"],properties:{payment_id:{type:"string",description:"Payment ID"},amount:{type:"string"},refund_reason_id:{type:"string",description:"Refund reason ID"}}}}}}}},"/api/v3/admin/locales":{get:{summary:"List supported locales",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the locales a merchant can translate content into for the current store, with the default and right-to-left flags.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"locales found",content:{"application/json":{}}}}}},"/api/v3/admin/store_credit_categories":{get:{summary:"List store credit categories",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:`Returns the configured store credit categories. Categories classify
|
|
220
220
|
store credits (e.g., "Goodwill", "Gift Card", "Refund") and surface
|
|
221
221
|
in the admin UI as a dropdown when issuing or editing a store
|
|
222
222
|
credit. Category names matching \`Spree::Config[:non_expiring_credit_types]\`
|
|
223
223
|
are flagged via \`non_expiring: true\`.
|
|
224
224
|
|
|
225
225
|
|
|
226
|
-
**Required scope:** \`read_settings\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"q[name_cont]",in:"query",required:!1,description:"Filter by name (contains)",schema:{type:"string"}},{name:"sort",in:"query",required:!1,description:"Sort by field. Prefix with `-` for descending (e.g., `-created_at`).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"store credit categories found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/StoreCreditCategory"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/admin/store_credit_categories/{id}":{parameters:[{name:"id",in:"path",required:!0,description:"Store credit category ID",schema:{type:"string"}}],get:{summary:"Get a store credit category",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single store credit category by prefixed ID.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"store credit category found",content:{"application/json":{schema:{$ref:"#/components/schemas/StoreCreditCategory"}}}},"404":{description:"store credit category not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/admin/store":{get:{summary:"Get the current store",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the current store configuration. The store is resolved from the request context (host or admin selection); there is no `id` parameter.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"current store",content:{"application/json":{schema:{$ref:"#/components/schemas/Store"}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update the current store",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Updates the current store configuration.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"store updated",content:{"application/json":{schema:{$ref:"#/components/schemas/Store"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},preferred_admin_locale:{type:"string"},preferred_timezone:{type:"string"},preferred_weight_unit:{type:"string"},preferred_unit_system:{type:"string"}}}}}}}},"/api/v3/admin/tags":{get:{summary:"List tags",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns tag names for a given taggable type. Used for autocomplete in tag inputs on products, orders, and customers.",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"taggable_type",in:"query",required:!0,description:"Taggable type (`Spree::Product`, `Spree::Order`, or `Spree::User`)",schema:{type:"string"}},{name:"q",in:"query",required:!1,description:"Optional case-insensitive substring filter",schema:{type:"string"}}],responses:{"200":{description:"tags found",content:{"application/json":{}}},"422":{description:"invalid taggable type",content:{"application/json":{}}}}}},"/api/v3/admin/admin_users":{get:{summary:"List staff",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Returns admin users with at least one role assignment on the current store.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"staff found",content:{"application/json":{}}}}}},"/api/v3/admin/admin_users/{id}":{get:{summary:"Show a staff member",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"staff member found",content:{"application/json":{}}}}},patch:{summary:"Update a staff member",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Updates name fields and reassigns roles for the current store. `role_ids` is a complete replacement \u2014 roles not in the array are removed for this store.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"staff member updated",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{first_name:{type:"string"},last_name:{type:"string"},role_ids:{type:"array",items:{type:"string"}}}}}}}},delete:{summary:"Remove a staff member from this store",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Removes the user's role assignments on the current store. The account is preserved \u2014 the user keeps access to any other stores.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"staff removed from store"}}}},"/api/v3/admin/invitations":{get:{summary:"List invitations",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Returns invitations for the current store, including pending and accepted.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"invitations found",content:{"application/json":{}}}}},post:{summary:"Create an invitation",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Invites a teammate by email. The invitation is scoped to the current store and carries the chosen role; on accept, a `RoleUser` is created via the invitation's `after_accept` callback.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"invitation created",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["email","role_id"],properties:{email:{type:"string"},role_id:{type:"string"}}}}}}}},"/api/v3/admin/invitations/{id}":{delete:{summary:"Revoke an invitation",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"invitation revoked"}}}},"/api/v3/admin/invitations/{id}/resend":{patch:{summary:"Resend an invitation",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Issues a fresh token and dispatches the invitation email again.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"invitation resent",content:{"application/json":{}}}}}},"/api/v3/admin/roles":{get:{summary:"List roles",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the roles available for staff role pickers. Roles are global, not per-store.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"roles found",content:{"application/json":{}}}}}},"/api/v3/admin/stock_locations":{get:{summary:"List stock locations",tags:["Stock Locations"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the configured stock locations. Stock locations are global\n(shared across stores). Filter with Ransack predicates such as\n`q[active_eq]`, `q[kind_eq]`, `q[pickup_enabled_eq]`, or\n`q[name_cont]`.\n\nPickup-related attributes (`kind`, `pickup_enabled`,\n`pickup_stock_policy`, `pickup_ready_in_minutes`,\n`pickup_instructions`) drive merchant pickup support at checkout \u2014\ncustomers can collect orders from any active location with\n`pickup_enabled: true`.\n\n\n**Required scope:** `read_stock` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"q[name_cont]",in:"query",required:!1,description:"Filter by name (contains)",schema:{type:"string"}},{name:"q[active_eq]",in:"query",required:!1,description:"Filter by active status",schema:{type:"boolean"}},{name:"q[kind_eq]",in:"query",required:!1,description:"Filter by kind (built-in: 'warehouse', 'store', 'fulfillment_center')",schema:{type:"string"}},{name:"q[pickup_enabled_eq]",in:"query",required:!1,description:"Filter by pickup-enabled flag",schema:{type:"boolean"}},{name:"sort",in:"query",required:!1,description:"Sort by field. Prefix with `-` for descending (e.g., `-created_at`).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"stock locations found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/StockLocation"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},post:{summary:"Create a stock location",tags:["Stock Locations"],security:[{api_key:[],bearer_auth:[]}],description:`Creates a new stock location.
|
|
226
|
+
**Required scope:** \`read_settings\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"q[name_cont]",in:"query",required:!1,description:"Filter by name (contains)",schema:{type:"string"}},{name:"sort",in:"query",required:!1,description:"Sort by field. Prefix with `-` for descending (e.g., `-created_at`).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"store credit categories found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/StoreCreditCategory"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/admin/store_credit_categories/{id}":{parameters:[{name:"id",in:"path",required:!0,description:"Store credit category ID",schema:{type:"string"}}],get:{summary:"Get a store credit category",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single store credit category by prefixed ID.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"store credit category found",content:{"application/json":{schema:{$ref:"#/components/schemas/StoreCreditCategory"}}}},"404":{description:"store credit category not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}}},"/api/v3/admin/store":{get:{summary:"Get the current store",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the current store configuration. The store is resolved from the request context (host or admin selection); there is no `id` parameter.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"current store",content:{"application/json":{schema:{$ref:"#/components/schemas/Store"}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update the current store",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Updates the current store configuration.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"store updated",content:{"application/json":{schema:{$ref:"#/components/schemas/Store"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},preferred_admin_locale:{type:"string"},preferred_timezone:{type:"string"},preferred_weight_unit:{type:"string"},preferred_unit_system:{type:"string"}}}}}}}},"/api/v3/admin/tags":{get:{summary:"List tags",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns tag names for a given taggable type. Used for autocomplete in tag inputs on products, orders, and customers.",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"taggable_type",in:"query",required:!0,description:"Taggable type (`Spree::Product`, `Spree::Order`, or `Spree::User`)",schema:{type:"string"}},{name:"q",in:"query",required:!1,description:"Optional case-insensitive substring filter",schema:{type:"string"}}],responses:{"200":{description:"tags found",content:{"application/json":{}}},"422":{description:"invalid taggable type",content:{"application/json":{}}}}}},"/api/v3/admin/translatable_resources":{get:{summary:"List translatable resources",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Returns every translatable resource type and its translatable fields (key + content type), so clients can render translation editors generically.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"translatable resources found",content:{"application/json":{}}}}}},"/api/v3/admin/translations/batch":{post:{summary:"Batch upsert translations",tags:["Settings"],security:[{api_key:[],bearer_auth:[]}],description:"Atomically upserts translations across many records of (possibly) different translatable resource types in one request \u2014 e.g. an option type and all its option values in one save. A flat list of independent registry writes; all entries succeed or none do.\n\n**Required scope:** `write_<resource>` for every resource type in the batch (for API-key authentication) (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"translations upserted",content:{"application/json":{}}},"422":{description:"unsupported locale rolls back the whole batch",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["translations"],properties:{translations:{type:"array",items:{type:"object",required:["resource_type","resource_id","values"],properties:{resource_type:{type:"string",description:"Translatable resource type token, e.g. `option_type`"},resource_id:{type:"string",description:"Prefixed id of the record"},values:{type:"object",description:"Map of locale code to { field: value }",additionalProperties:{type:"object",additionalProperties:!0}}}}}}}}}}}},"/api/v3/admin/admin_users":{get:{summary:"List staff",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Returns admin users with at least one role assignment on the current store.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"staff found",content:{"application/json":{}}}}}},"/api/v3/admin/admin_users/{id}":{get:{summary:"Show a staff member",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"staff member found",content:{"application/json":{}}}}},patch:{summary:"Update a staff member",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Updates name fields and reassigns roles for the current store. `role_ids` is a complete replacement \u2014 roles not in the array are removed for this store.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"staff member updated",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{first_name:{type:"string"},last_name:{type:"string"},role_ids:{type:"array",items:{type:"string"}}}}}}}},delete:{summary:"Remove a staff member from this store",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Removes the user's role assignments on the current store. The account is preserved \u2014 the user keeps access to any other stores.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"staff removed from store"}}}},"/api/v3/admin/invitations":{get:{summary:"List invitations",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Returns invitations for the current store, including pending and accepted.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"invitations found",content:{"application/json":{}}}}},post:{summary:"Create an invitation",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Invites a teammate by email. The invitation is scoped to the current store and carries the chosen role; on accept, a `RoleUser` is created via the invitation's `after_accept` callback.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"201":{description:"invitation created",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["email","role_id"],properties:{email:{type:"string"},role_id:{type:"string"}}}}}}}},"/api/v3/admin/invitations/{id}":{delete:{summary:"Revoke an invitation",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"204":{description:"invitation revoked"}}}},"/api/v3/admin/invitations/{id}/resend":{patch:{summary:"Resend an invitation",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Issues a fresh token and dispatches the invitation email again.\n\n**Required scope:** `write_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}},{name:"id",in:"path",required:!0,schema:{type:"string"}}],responses:{"200":{description:"invitation resent",content:{"application/json":{}}}}}},"/api/v3/admin/roles":{get:{summary:"List roles",tags:["Staff"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the roles available for staff role pickers. Roles are global, not per-store.\n\n**Required scope:** `read_settings` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,schema:{type:"string"}}],responses:{"200":{description:"roles found",content:{"application/json":{}}}}}},"/api/v3/admin/stock_locations":{get:{summary:"List stock locations",tags:["Stock Locations"],security:[{api_key:[],bearer_auth:[]}],description:"Returns the configured stock locations. Stock locations are global\n(shared across stores). Filter with Ransack predicates such as\n`q[active_eq]`, `q[kind_eq]`, `q[pickup_enabled_eq]`, or\n`q[name_cont]`.\n\nPickup-related attributes (`kind`, `pickup_enabled`,\n`pickup_stock_policy`, `pickup_ready_in_minutes`,\n`pickup_instructions`) drive merchant pickup support at checkout \u2014\ncustomers can collect orders from any active location with\n`pickup_enabled: true`.\n\n\n**Required scope:** `read_stock` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"q[name_cont]",in:"query",required:!1,description:"Filter by name (contains)",schema:{type:"string"}},{name:"q[active_eq]",in:"query",required:!1,description:"Filter by active status",schema:{type:"boolean"}},{name:"q[kind_eq]",in:"query",required:!1,description:"Filter by kind (built-in: 'warehouse', 'store', 'fulfillment_center')",schema:{type:"string"}},{name:"q[pickup_enabled_eq]",in:"query",required:!1,description:"Filter by pickup-enabled flag",schema:{type:"boolean"}},{name:"sort",in:"query",required:!1,description:"Sort by field. Prefix with `-` for descending (e.g., `-created_at`).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include. id is always included.",schema:{type:"string"}}],responses:{"200":{description:"stock locations found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/StockLocation"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}},"401":{description:"unauthorized",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},post:{summary:"Create a stock location",tags:["Stock Locations"],security:[{api_key:[],bearer_auth:[]}],description:`Creates a new stock location.
|
|
227
227
|
|
|
228
228
|
Setting \`default: true\` automatically demotes the previous default
|
|
229
229
|
location.
|
|
@@ -241,7 +241,7 @@ Option types and values are auto-created if they don't exist.
|
|
|
241
241
|
Prices are upserted by currency. Stock items are upserted by stock location.
|
|
242
242
|
|
|
243
243
|
|
|
244
|
-
**Required scope:** \`write_products\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"product_id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}}],responses:{"201":{description:"variant created",content:{"application/json":{}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",
|
|
244
|
+
**Required scope:** \`write_products\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"product_id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}}],responses:{"201":{description:"variant created",content:{"application/json":{}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",required:["options"],properties:{sku:{type:"string"},cost_price:{type:"string"},cost_currency:{type:"string"},weight:{type:"number"},height:{type:"number"},width:{type:"number"},depth:{type:"number"},weight_unit:{type:"string"},dimensions_unit:{type:"string"},track_inventory:{type:"boolean"},tax_category_id:{type:"string"},options:{type:"array",description:"Required. A variant created here is always non-master, so it must declare at least one option pair (e.g. size + color) or creation fails with 422. One pair per option type the variant participates in. Option types and values are auto-created if missing.",items:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}}},position:{type:"integer"},barcode:{type:"string"},prices:{type:"array",description:"Per-currency prices. Upserted by currency.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},stock_items:{type:"array",description:"Per-stock-location inventory. Upserted by stock_location_id.",items:{type:"object",required:["stock_location_id","count_on_hand"],properties:{stock_location_id:{type:"string",description:"Stock location ID (e.g. sloc_xxx)"},count_on_hand:{type:"integer"},backorderable:{type:"boolean"}}}}}}}}}}},"/api/v3/admin/products/{product_id}/variants/{id}":{get:{summary:"Get a variant",tags:["Variants"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single variant by ID.\n\n**Required scope:** `read_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"product_id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Variant ID",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., images, prices, stock_items, option_values). Use dot notation for nested expand (max 4 levels).",schema:{type:"string"}},{name:"fields",in:"query",required:!1,description:"Comma-separated list of fields to include (e.g., sku,price,stock). id is always included.",schema:{type:"string"}}],responses:{"200":{description:"variant found",content:{"application/json":{}}},"404":{description:"variant not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update a variant",tags:["Variants"],security:[{api_key:[],bearer_auth:[]}],description:"Updates a variant. Only provided fields are updated.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"product_id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Variant ID",schema:{type:"string"}}],responses:{"200":{description:"variant updated",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{sku:{type:"string"},cost_price:{type:"string"},cost_currency:{type:"string"},weight:{type:"number"},height:{type:"number"},width:{type:"number"},depth:{type:"number"},weight_unit:{type:"string"},dimensions_unit:{type:"string"},track_inventory:{type:"boolean"},tax_category_id:{type:"string"},options:{type:"array",description:"One pair per option type the variant participates in (e.g. size + color). Option types and values are auto-created if missing.",items:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}}},position:{type:"integer"},barcode:{type:"string"},prices:{type:"array",description:"Per-currency prices. Upserted by currency.",items:{type:"object",required:["currency","amount"],properties:{currency:{type:"string"},amount:{type:"string"},compare_at_amount:{type:"string",nullable:!0}}}},stock_items:{type:"array",description:"Per-stock-location inventory. Upserted by stock_location_id.",items:{type:"object",required:["stock_location_id","count_on_hand"],properties:{stock_location_id:{type:"string",description:"Stock location ID (e.g. sloc_xxx)"},count_on_hand:{type:"integer"},backorderable:{type:"boolean"}}}}}}}}}},delete:{summary:"Delete a variant",tags:["Variants"],security:[{api_key:[],bearer_auth:[]}],description:"Soft-deletes a variant.\n\n**Required scope:** `write_products` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"product_id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Variant ID",schema:{type:"string"}}],responses:{"204":{description:"variant deleted"}}}},"/api/v3/admin/webhook_endpoints/{webhook_endpoint_id}/deliveries":{parameters:[{name:"webhook_endpoint_id",in:"path",required:!0,description:"Parent webhook endpoint ID",schema:{type:"string"}}],get:{summary:"List webhook deliveries",tags:["Webhooks"],security:[{api_key:[],bearer_auth:[]}],description:`Returns delivery attempts for the given endpoint, most recent first.
|
|
245
245
|
Each row carries the original request payload, the response code
|
|
246
246
|
(when the receiver replied), the execution time, and any transport
|
|
247
247
|
error \u2014 everything needed to audit failures and decide whether to
|
|
@@ -266,92 +266,92 @@ accepts Spree's payloads.
|
|
|
266
266
|
repeated delivery failures), no notification email is sent.
|
|
267
267
|
|
|
268
268
|
|
|
269
|
-
**Required scope:** \`write_webhooks\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"webhook endpoint disabled",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{reason:{type:"string"}}}}}}}}},components:{schemas:{PaginationMeta:{type:"object",properties:{page:{type:"integer"},limit:{type:"integer"},count:{type:"integer",description:"Total number of records"},pages:{type:"integer",description:"Total number of pages"},from:{type:"integer",description:"Index of first record on this page"},to:{type:"integer",description:"Index of last record on this page"},in:{type:"integer",description:"Number of records on this page"},previous:{type:"integer",nullable:!0,description:"Previous page number"},next:{type:"integer",nullable:!0,description:"Next page number"}},required:["page","limit","count","pages","from","to","in"]},ErrorResponse:{type:"object",properties:{error:{type:"object",properties:{code:{type:"string"},message:{type:"string"},details:{type:"object",description:"Field-specific validation errors",nullable:!0}},required:["code","message"]}},required:["error"]},AuthResponse:{type:"object",properties:{token:{type:"string",description:"JWT access token"},user:{$ref:"#/components/schemas/AdminUser"}},required:["token","user"]},PermissionRule:{type:"object",description:"A single permission rule (CanCanCan rule). Rules are applied in order, last-matching-wins.",properties:{allow:{type:"boolean",description:"true for `can`, false for `cannot`"},actions:{type:"array",items:{type:"string"},description:'Action names, e.g. ["read", "update"] or ["manage"]'},subjects:{type:"array",items:{type:"string"},description:'Subject class names, e.g. ["Spree::Product"] or ["all"]'},has_conditions:{type:"boolean",description:"True if the server-side rule has per-record conditions. The SPA shows the action optimistically and handles 403 from the API."}},required:["allow","actions","subjects","has_conditions"]},MeResponse:{type:"object",description:"Current admin user profile and serialized permissions",properties:{user:{$ref:"#/components/schemas/AdminUser"},permissions:{type:"array",items:{$ref:"#/components/schemas/PermissionRule"}}},required:["user","permissions"]},CheckoutRequirement:{type:"object",properties:{step:{type:"string",description:"Checkout step this requirement belongs to"},field:{type:"string",description:"Field that needs to be satisfied"},message:{type:"string",description:"Human-readable requirement message"}},required:["step","field","message"]},CartWarning:{type:"object",description:"A warning about a cart issue (e.g., item removed due to stock change)",properties:{code:{type:"string",description:"Machine-readable warning code"},message:{type:"string",description:"Human-readable warning message"},line_item_id:{type:"string",nullable:!0,description:"Prefixed line item ID (when applicable)"},variant_id:{type:"string",nullable:!0,description:"Prefixed variant ID (when applicable)"}},required:["code","message"]},FulfillmentManifestItem:{type:"object",description:"An item within a fulfillment \u2014 which line item and how many units are in this fulfillment",properties:{item_id:{type:"string",description:"Line item ID"},variant_id:{type:"string",description:"Variant ID"},quantity:{type:"integer",description:"Quantity in this fulfillment"}},required:["item_id","variant_id","quantity"]},AdminUserRoleAssignment:{type:"object",description:"A role assignment for the current store on a staff member",properties:{id:{type:"string",description:"Prefixed role ID"},name:{type:"string",description:"Role name"}},required:["id","name"]},PreferenceField:{type:"object",description:"A single configurable preference on a payment method, promotion rule/action, or calculator. The frontend uses `type` + `default` to render a sensible input.",properties:{key:{type:"string"},type:{type:"string",description:"string | text | password | integer | decimal | boolean | array | hash"},default:{description:"Default value (any JSON type), null when there is no default",nullable:!0}},required:["key","type"]},PromotionActionCalculator:{type:"object",description:"The action's nested calculator (when the action carries one \u2014 null for actions like `free_shipping`)",properties:{type:{type:"string",description:"Wire shorthand for the calculator subclass"},label:{type:"string"},preferences:{type:"object",additionalProperties:!0},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}}},required:["type","label","preferences","preference_schema"]},PromotionActionLineItem:{type:"object",description:"One row in a `create_line_items` action \u2014 the variant added to the order and how many",properties:{variant_id:{type:"string"},quantity:{type:"integer"}},required:["variant_id","quantity"]},Address:{type:"object",properties:{id:{type:"string"},first_name:{type:"string",nullable:!0},last_name:{type:"string",nullable:!0},full_name:{type:"string"},address1:{type:"string",nullable:!0},address2:{type:"string",nullable:!0},postal_code:{type:"string",nullable:!0},city:{type:"string",nullable:!0},phone:{type:"string",nullable:!0},company:{type:"string",nullable:!0},country_name:{type:"string"},country_iso:{type:"string"},state_text:{type:"string",nullable:!0},state_abbr:{type:"string",nullable:!0},quick_checkout:{type:"boolean"},is_default_billing:{type:"boolean"},is_default_shipping:{type:"boolean"},state_name:{type:"string",nullable:!0},label:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},customer_id:{type:"string",nullable:!0}},required:["id","first_name","last_name","full_name","address1","address2","postal_code","city","phone","company","country_name","country_iso","state_text","state_abbr","quick_checkout","is_default_billing","is_default_shipping","state_name","label","metadata","created_at","updated_at","customer_id"],"x-typelizer":!0},Adjustment:{type:"object",properties:{id:{type:"string"},label:{type:"string"},display_amount:{type:"string"},included:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"},amount:{type:"string"},order_id:{type:"string",nullable:!0}},required:["id","label","display_amount","included","created_at","updated_at","amount","order_id"],"x-typelizer":!0},AdminUser:{type:"object",properties:{id:{type:"string"},email:{type:"string"},first_name:{type:"string",nullable:!0},last_name:{type:"string",nullable:!0},full_name:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},roles:{type:"array",items:{$ref:"#/components/schemas/AdminUserRoleAssignment"}}},required:["id","email","first_name","last_name","full_name","created_at","updated_at","roles"],"x-typelizer":!0},AllowedOrigin:{type:"object",properties:{id:{type:"string"},origin:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","origin","created_at","updated_at"],"x-typelizer":!0},ApiKey:{type:"object",properties:{id:{type:"string"},name:{type:"string"},key_type:{type:"string"},token_prefix:{type:"string",nullable:!0},scopes:{type:"array",items:{type:"string"}},created_at:{type:"string"},updated_at:{type:"string"},revoked_at:{type:"string",nullable:!0},last_used_at:{type:"string",nullable:!0},plaintext_token:{type:"string",nullable:!0},created_by_email:{type:"string",nullable:!0}},required:["id","name","key_type","token_prefix","scopes","created_at","updated_at","revoked_at","last_used_at","plaintext_token","created_by_email"],"x-typelizer":!0},Category:{type:"object",properties:{id:{type:"string"},name:{type:"string"},permalink:{type:"string"},position:{type:"number"},depth:{type:"number"},meta_title:{type:"string",nullable:!0},meta_description:{type:"string",nullable:!0},meta_keywords:{type:"string",nullable:!0},children_count:{type:"number"},parent_id:{type:"string",nullable:!0},description:{type:"string"},description_html:{type:"string"},image_url:{type:"string",nullable:!0},square_image_url:{type:"string",nullable:!0},is_root:{type:"boolean"},is_child:{type:"boolean"},is_leaf:{type:"boolean"},parent:{$ref:"#/components/schemas/Category"},children:{type:"array",items:{$ref:"#/components/schemas/Category"}},ancestors:{type:"array",items:{$ref:"#/components/schemas/Category"}},custom_fields:{type:"array",items:{$ref:"#/components/schemas/CustomField"}},metadata:{type:"object"},pretty_name:{type:"string"},lft:{type:"number"},rgt:{type:"number"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","permalink","position","depth","meta_title","meta_description","meta_keywords","children_count","parent_id","description","description_html","image_url","square_image_url","is_root","is_child","is_leaf","metadata","pretty_name","lft","rgt","created_at","updated_at"],"x-typelizer":!0},Channel:{type:"object",properties:{id:{type:"string"},name:{type:"string"},code:{type:"string"},active:{type:"boolean"},default:{type:"boolean"},preferred_order_routing_strategy:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","code","active","default","preferred_order_routing_strategy","created_at","updated_at"],"x-typelizer":!0},Country:{type:"object",properties:{iso:{type:"string"},iso3:{type:"string"},name:{type:"string"},states_required:{type:"boolean"},zipcode_required:{type:"boolean"},states:{type:"array",items:{$ref:"#/components/schemas/State"}},market:{allOf:[{$ref:"#/components/schemas/Market"}],nullable:!0},created_at:{type:"object"},updated_at:{type:"object"}},required:["iso","iso3","name","states_required","zipcode_required","created_at","updated_at"],"x-typelizer":!0},CouponCode:{type:"object",properties:{id:{type:"string"},code:{type:"string"},state:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},promotion_id:{type:"string"},order_id:{type:"string",nullable:!0}},required:["id","code","state","created_at","updated_at","promotion_id","order_id"],"x-typelizer":!0},CreditCard:{type:"object",properties:{id:{type:"string"},brand:{type:"string"},last4:{type:"string"},month:{type:"number"},year:{type:"number"},name:{type:"string",nullable:!0},default:{type:"boolean"},gateway_payment_profile_id:{type:"string",nullable:!0},customer_id:{type:"string",nullable:!0},payment_method_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","brand","last4","month","year","name","default","gateway_payment_profile_id","customer_id","payment_method_id","metadata","created_at","updated_at"],"x-typelizer":!0},CustomFieldDefinition:{type:"object",properties:{id:{type:"string"},namespace:{type:"string"},key:{type:"string"},label:{type:"string"},field_type:{type:"string",enum:["short_text","long_text","rich_text","number","boolean","json"]},resource_type:{type:"string"},storefront_visible:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","namespace","key","label","field_type","resource_type","storefront_visible","created_at","updated_at"],"x-typelizer":!0},CustomField:{type:"object",properties:{id:{type:"string"},label:{type:"string"},type:{type:"string",deprecated:!0},field_type:{type:"string",enum:["short_text","long_text","rich_text","number","boolean","json"]},key:{type:"string"},value:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},storefront_visible:{type:"boolean"},custom_field_definition_id:{type:"string"}},required:["id","label","type","field_type","key","value","created_at","updated_at","storefront_visible","custom_field_definition_id"],"x-typelizer":!0},CustomerGroup:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},customers_count:{type:"number"},created_at:{type:"string"},updated_at:{type:"string"},customers:{type:"array",items:{$ref:"#/components/schemas/Customer"}}},required:["id","name","description","customers_count","created_at","updated_at"],"x-typelizer":!0},Customer:{type:"object",properties:{id:{type:"string"},email:{type:"string"},first_name:{type:"string",nullable:!0},last_name:{type:"string",nullable:!0},phone:{type:"string",nullable:!0},accepts_email_marketing:{type:"boolean"},full_name:{type:"string"},available_store_credit_total:{type:"string"},display_available_store_credit_total:{type:"string"},addresses:{type:"array",items:{$ref:"#/components/schemas/Address"}},default_billing_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},default_shipping_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},login:{type:"string",nullable:!0},metadata:{type:"object"},last_sign_in_at:{type:"string",nullable:!0},current_sign_in_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},sign_in_count:{type:"number"},failed_attempts:{type:"number"},last_sign_in_ip:{type:"string",nullable:!0},current_sign_in_ip:{type:"string",nullable:!0},tags:{type:"array",items:{type:"string"}},internal_note_html:{type:"string",nullable:!0},default_billing_address_id:{type:"string",nullable:!0},default_shipping_address_id:{type:"string",nullable:!0},orders_count:{type:"number"},total_spent:{type:"string"},display_total_spent:{type:"string"},last_order_completed_at:{type:"string",nullable:!0},orders:{type:"array",items:{$ref:"#/components/schemas/Order"}},store_credits:{type:"array",items:{$ref:"#/components/schemas/StoreCredit"}},customer_groups:{type:"array",items:{$ref:"#/components/schemas/CustomerGroup"}}},required:["id","email","first_name","last_name","phone","accepts_email_marketing","full_name","available_store_credit_total","display_available_store_credit_total","login","metadata","last_sign_in_at","current_sign_in_at","created_at","updated_at","sign_in_count","failed_attempts","last_sign_in_ip","current_sign_in_ip","tags","internal_note_html","default_billing_address_id","default_shipping_address_id","orders_count","total_spent","display_total_spent","last_order_completed_at"],"x-typelizer":!0},DeliveryMethod:{type:"object",properties:{id:{type:"string"},name:{type:"string"},code:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","code","created_at","updated_at"],"x-typelizer":!0},DeliveryRate:{type:"object",properties:{id:{type:"string"},delivery_method_id:{type:"string"},name:{type:"string"},selected:{type:"boolean"},cost:{type:"string"},total:{type:"string"},additional_tax_total:{type:"string"},included_tax_total:{type:"string"},tax_total:{type:"string"},display_cost:{type:"string"},display_total:{type:"string"},display_additional_tax_total:{type:"string"},display_included_tax_total:{type:"string"},display_tax_total:{type:"string"},delivery_method:{$ref:"#/components/schemas/DeliveryMethod"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","delivery_method_id","name","selected","cost","total","additional_tax_total","included_tax_total","tax_total","display_cost","display_total","display_additional_tax_total","display_included_tax_total","display_tax_total","created_at","updated_at"],"x-typelizer":!0},DigitalLink:{type:"object",properties:{id:{type:"string"},access_counter:{type:"number"},filename:{type:"string"},content_type:{type:"string"},download_url:{type:"string"},authorizable:{type:"boolean"},expired:{type:"boolean"},access_limit_exceeded:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","access_counter","filename","content_type","download_url","authorizable","expired","access_limit_exceeded","created_at","updated_at"],"x-typelizer":!0},Discount:{type:"object",properties:{id:{type:"string"},promotion_id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},code:{type:"string",nullable:!0},amount:{type:"string"},display_amount:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","promotion_id","name","description","code","amount","display_amount","created_at","updated_at"],"x-typelizer":!0},Export:{type:"object",properties:{id:{type:"string"},number:{type:"string"},type:{type:"string",nullable:!0},format:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},user_id:{type:"string",nullable:!0},done:{type:"boolean"},filename:{type:"string",nullable:!0},byte_size:{type:"number",nullable:!0},download_url:{type:"string",nullable:!0}},required:["id","number","type","format","created_at","updated_at","user_id","done","filename","byte_size","download_url"],"x-typelizer":!0},Fulfillment:{type:"object",properties:{id:{type:"string"},number:{type:"string"},tracking:{type:"string",nullable:!0},tracking_url:{type:"string",nullable:!0},cost:{type:"string"},display_cost:{type:"string"},total:{type:"string"},display_total:{type:"string"},discount_total:{type:"string"},display_discount_total:{type:"string"},additional_tax_total:{type:"string"},display_additional_tax_total:{type:"string"},included_tax_total:{type:"string"},display_included_tax_total:{type:"string"},tax_total:{type:"string"},display_tax_total:{type:"string"},status:{type:"string"},fulfillment_type:{type:"string"},fulfilled_at:{type:"string",nullable:!0},items:{type:"array",items:{$ref:"#/components/schemas/FulfillmentManifestItem"}},delivery_method:{$ref:"#/components/schemas/DeliveryMethod"},stock_location:{$ref:"#/components/schemas/StockLocation"},delivery_rates:{type:"array",items:{$ref:"#/components/schemas/DeliveryRate"}},metadata:{type:"object"},adjustment_total:{type:"string"},pre_tax_amount:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},order_id:{type:"string",nullable:!0},stock_location_id:{type:"string",nullable:!0},order:{$ref:"#/components/schemas/Order"},adjustments:{type:"array",items:{$ref:"#/components/schemas/Adjustment"}}},required:["id","number","tracking","tracking_url","cost","display_cost","total","display_total","discount_total","display_discount_total","additional_tax_total","display_additional_tax_total","included_tax_total","display_included_tax_total","tax_total","display_tax_total","status","fulfillment_type","fulfilled_at","items","metadata","adjustment_total","pre_tax_amount","created_at","updated_at","order_id","stock_location_id"],"x-typelizer":!0},GiftCardBatch:{type:"object",properties:{id:{type:"string"},codes_count:{type:"number"},currency:{type:"string",nullable:!0},prefix:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},amount:{type:"string",nullable:!0},expires_at:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0}},required:["id","codes_count","currency","prefix","created_at","updated_at","amount","expires_at","created_by_id"],"x-typelizer":!0},GiftCard:{type:"object",properties:{id:{type:"string"},code:{type:"string"},status:{type:"string"},currency:{type:"string"},amount:{type:"string"},amount_used:{type:"string"},amount_authorized:{type:"string"},amount_remaining:{type:"string"},display_amount:{type:"string"},display_amount_used:{type:"string"},display_amount_remaining:{type:"string"},expires_at:{type:"string",nullable:!0},redeemed_at:{type:"string",nullable:!0},expired:{type:"boolean"},active:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"},customer_id:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0},customer:{$ref:"#/components/schemas/Customer"},created_by:{$ref:"#/components/schemas/AdminUser"},gift_card_batch:{$ref:"#/components/schemas/GiftCardBatch"},orders:{type:"array",items:{$ref:"#/components/schemas/Order"}}},required:["id","code","status","currency","amount","amount_used","amount_authorized","amount_remaining","display_amount","display_amount_used","display_amount_remaining","expires_at","redeemed_at","expired","active","created_at","updated_at","customer_id","created_by_id"],"x-typelizer":!0},Invitation:{type:"object",properties:{id:{type:"string"},email:{type:"string"},status:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},expires_at:{type:"string"},role_id:{type:"string"},role_name:{type:"string"},inviter_email:{type:"string"},acceptance_url:{type:"string"},invitee_exists:{type:"boolean"},store:{type:"object"}},required:["id","email","status","created_at","updated_at","expires_at","role_id","role_name","inviter_email","acceptance_url","invitee_exists","store"],"x-typelizer":!0},LineItem:{type:"object",properties:{id:{type:"string"},variant_id:{type:"string"},quantity:{type:"number"},currency:{type:"string"},name:{type:"string"},slug:{type:"string"},options_text:{type:"string"},price:{type:"string"},display_price:{type:"string"},total:{type:"string"},display_total:{type:"string"},adjustment_total:{type:"string"},display_adjustment_total:{type:"string"},additional_tax_total:{type:"string"},display_additional_tax_total:{type:"string"},included_tax_total:{type:"string"},display_included_tax_total:{type:"string"},discount_total:{type:"string"},display_discount_total:{type:"string"},pre_tax_amount:{type:"string"},display_pre_tax_amount:{type:"string"},discounted_amount:{type:"string"},display_discounted_amount:{type:"string"},display_compare_at_amount:{type:"string",nullable:!0},compare_at_amount:{type:"string",nullable:!0},thumbnail_url:{type:"string",nullable:!0},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}},digital_links:{type:"array",items:{$ref:"#/components/schemas/DigitalLink"}},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},cost_price:{type:"string",nullable:!0},tax_category_id:{type:"string",nullable:!0},variant:{$ref:"#/components/schemas/Variant"},tax_category:{$ref:"#/components/schemas/TaxCategory"},adjustments:{type:"array",items:{$ref:"#/components/schemas/Adjustment"}}},required:["id","variant_id","quantity","currency","name","slug","options_text","price","display_price","total","display_total","adjustment_total","display_adjustment_total","additional_tax_total","display_additional_tax_total","included_tax_total","display_included_tax_total","discount_total","display_discount_total","pre_tax_amount","display_pre_tax_amount","discounted_amount","display_discounted_amount","display_compare_at_amount","compare_at_amount","thumbnail_url","option_values","digital_links","metadata","created_at","updated_at","cost_price","tax_category_id"],"x-typelizer":!0},Market:{type:"object",properties:{id:{type:"string"},name:{type:"string"},currency:{type:"string"},default_locale:{type:"string"},tax_inclusive:{type:"boolean"},default:{type:"boolean"},country_isos:{type:"array",items:{type:"string"}},supported_locales:{type:"array",items:{type:"string"}},countries:{type:"array",items:{$ref:"#/components/schemas/Country"}},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","currency","default_locale","tax_inclusive","default","country_isos","supported_locales","created_at","updated_at"],"x-typelizer":!0},Media:{type:"object",properties:{id:{type:"string"},product_id:{type:"string",nullable:!0},variant_ids:{type:"array",items:{type:"string"}},position:{type:"number"},alt:{type:"string",nullable:!0},media_type:{type:"string"},focal_point_x:{type:"number",nullable:!0},focal_point_y:{type:"number",nullable:!0},external_video_url:{type:"string",nullable:!0},original_url:{type:"string",nullable:!0},mini_url:{type:"string",nullable:!0},small_url:{type:"string",nullable:!0},medium_url:{type:"string",nullable:!0},large_url:{type:"string",nullable:!0},xlarge_url:{type:"string",nullable:!0},og_image_url:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},viewable_id:{type:"string"},download_url:{type:"string",nullable:!0},metadata:{type:"object"},viewable_type:{type:"string"}},required:["id","product_id","variant_ids","position","alt","media_type","focal_point_x","focal_point_y","external_video_url","original_url","mini_url","small_url","medium_url","large_url","xlarge_url","og_image_url","created_at","updated_at","viewable_id","download_url","metadata","viewable_type"],"x-typelizer":!0},OptionType:{type:"object",properties:{id:{type:"string"},name:{type:"string"},label:{type:"string"},position:{type:"number"},kind:{type:"string"},metadata:{type:"object"},filterable:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}}},required:["id","name","label","position","kind","metadata","filterable","created_at","updated_at"],"x-typelizer":!0},OptionValue:{type:"object",properties:{id:{type:"string"},option_type_id:{type:"string"},name:{type:"string"},label:{type:"string"},position:{type:"number"},color_code:{type:"string",nullable:!0},option_type_name:{type:"string"},option_type_label:{type:"string"},image_url:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},option_type:{$ref:"#/components/schemas/OptionType"}},required:["id","option_type_id","name","label","position","color_code","option_type_name","option_type_label","image_url","metadata","created_at","updated_at"],"x-typelizer":!0},Order:{type:"object",properties:{id:{type:"string"},market_id:{type:"string",nullable:!0},channel_id:{type:"string",nullable:!0},number:{type:"string"},email:{type:"string"},customer_note:{type:"string",nullable:!0},currency:{type:"string"},locale:{type:"string",nullable:!0},total_quantity:{type:"number"},item_total:{type:"string"},display_item_total:{type:"string"},adjustment_total:{type:"string"},display_adjustment_total:{type:"string"},discount_total:{type:"string"},display_discount_total:{type:"string"},tax_total:{type:"string"},display_tax_total:{type:"string"},included_tax_total:{type:"string"},display_included_tax_total:{type:"string"},additional_tax_total:{type:"string"},display_additional_tax_total:{type:"string"},total:{type:"string"},display_total:{type:"string"},gift_card_total:{type:"string"},display_gift_card_total:{type:"string"},amount_due:{type:"string"},display_amount_due:{type:"string"},delivery_total:{type:"string"},display_delivery_total:{type:"string"},fulfillment_status:{type:"string",nullable:!0},payment_status:{type:"string",nullable:!0},completed_at:{type:"string",nullable:!0},store_credit_total:{type:"string"},display_store_credit_total:{type:"string"},covered_by_store_credit:{type:"boolean"},discounts:{type:"array",items:{$ref:"#/components/schemas/Discount"}},items:{type:"array",items:{$ref:"#/components/schemas/LineItem"}},fulfillments:{type:"array",items:{$ref:"#/components/schemas/Fulfillment"}},payments:{type:"array",items:{$ref:"#/components/schemas/Payment"}},billing_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},shipping_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},gift_card:{allOf:[{$ref:"#/components/schemas/GiftCard"}],nullable:!0},market:{allOf:[{$ref:"#/components/schemas/Market"}],nullable:!0},status:{type:"string"},last_ip_address:{type:"string",nullable:!0},considered_risky:{type:"boolean"},confirmation_delivered:{type:"boolean"},store_owner_notification_delivered:{type:"boolean"},payment_total:{type:"string"},display_payment_total:{type:"string"},metadata:{type:"object"},canceled_at:{type:"string",nullable:!0},approved_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},preferred_stock_location_id:{type:"string",nullable:!0},tags:{type:"array",items:{type:"string"}},internal_note:{type:"string",nullable:!0},approver_id:{type:"string",nullable:!0},canceler_id:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0},customer_id:{type:"string",nullable:!0},channel:{$ref:"#/components/schemas/Channel"},preferred_stock_location:{$ref:"#/components/schemas/StockLocation"},payment_methods:{type:"array",items:{$ref:"#/components/schemas/PaymentMethod"}},customer:{$ref:"#/components/schemas/Customer"},approver:{$ref:"#/components/schemas/Customer"},canceler:{$ref:"#/components/schemas/Customer"},created_by:{$ref:"#/components/schemas/Customer"},adjustments:{type:"array",items:{$ref:"#/components/schemas/Adjustment"}},return_authorizations:{type:"array",items:{$ref:"#/components/schemas/ReturnAuthorization"}},reimbursements:{type:"array",items:{$ref:"#/components/schemas/Reimbursement"}}},required:["id","market_id","channel_id","number","email","customer_note","currency","locale","total_quantity","item_total","display_item_total","adjustment_total","display_adjustment_total","discount_total","display_discount_total","tax_total","display_tax_total","included_tax_total","display_included_tax_total","additional_tax_total","display_additional_tax_total","total","display_total","gift_card_total","display_gift_card_total","amount_due","display_amount_due","delivery_total","display_delivery_total","fulfillment_status","payment_status","completed_at","store_credit_total","display_store_credit_total","covered_by_store_credit","gift_card","market","status","last_ip_address","considered_risky","confirmation_delivered","store_owner_notification_delivered","payment_total","display_payment_total","metadata","canceled_at","approved_at","created_at","updated_at","preferred_stock_location_id","tags","internal_note","approver_id","canceler_id","created_by_id","customer_id"],"x-typelizer":!0},PaymentMethod:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},type:{type:"string"},session_required:{type:"boolean"},source_required:{type:"boolean"},metadata:{type:"object"},active:{type:"boolean"},auto_capture:{type:"boolean",nullable:!0},storefront_visible:{type:"boolean"},position:{type:"number"},created_at:{type:"string"},updated_at:{type:"string"},preferences:{type:"object"},preference_schema:{type:"object"}},required:["id","name","description","type","session_required","source_required","metadata","active","auto_capture","storefront_visible","position","created_at","updated_at","preferences","preference_schema"],"x-typelizer":!0},Payment:{type:"object",properties:{id:{type:"string"},payment_method_id:{type:"string"},response_code:{type:"string",nullable:!0},number:{type:"string"},amount:{type:"string"},display_amount:{type:"string"},status:{type:"string"},source_type:{type:"string",nullable:!0,enum:["credit_card","store_credit","payment_source"]},source_id:{type:"string",nullable:!0},source:{anyOf:[{$ref:"#/components/schemas/CreditCard"},{$ref:"#/components/schemas/StoreCredit"},{$ref:"#/components/schemas/PaymentSource"}],nullable:!0},payment_method:{$ref:"#/components/schemas/PaymentMethod"},metadata:{type:"object"},avs_response:{type:"string",nullable:!0},cvv_response_code:{type:"string",nullable:!0},cvv_response_message:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},captured_amount:{type:"string"},order_id:{type:"string",nullable:!0},order:{$ref:"#/components/schemas/Order"},refunds:{type:"array",items:{$ref:"#/components/schemas/Refund"}}},required:["id","payment_method_id","response_code","number","amount","display_amount","status","source_type","source_id","source","metadata","avs_response","cvv_response_code","cvv_response_message","created_at","updated_at","captured_amount","order_id"],"x-typelizer":!0},PaymentSource:{type:"object",properties:{id:{type:"string"},gateway_payment_profile_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","gateway_payment_profile_id","metadata","created_at","updated_at"],"x-typelizer":!0},PriceHistory:{type:"object",properties:{id:{type:"string"},amount:{type:"string"},amount_in_cents:{type:"number"},currency:{type:"string"},display_amount:{type:"string"},recorded_at:{type:"string"},variant_id:{type:"string"},price_id:{type:"string"},compare_at_amount:{type:"string",nullable:!0},created_at:{type:"string"}},required:["id","amount","amount_in_cents","currency","display_amount","recorded_at","variant_id","price_id","compare_at_amount","created_at"],"x-typelizer":!0},PriceList:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},status:{type:"string"},position:{type:"number"},match_policy:{type:"string"},starts_at:{type:"string",nullable:!0},ends_at:{type:"string",nullable:!0},deleted_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},currently_active:{type:"boolean"},products_count:{type:"number"},prices_count:{type:"number"},product_ids:{type:"array",items:{type:"string"}},price_rules:{type:"array",items:{$ref:"#/components/schemas/PriceRule"}}},required:["id","name","description","status","position","match_policy","starts_at","ends_at","deleted_at","created_at","updated_at","currently_active","products_count","prices_count","product_ids"],"x-typelizer":!0},PriceRule:{type:"object",properties:{id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},type:{type:"string"},price_list_id:{type:"string"},preferences:{type:"object"},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}},label:{type:"string"},description:{type:"string",nullable:!0},markets:{type:"array",items:{$ref:"#/components/schemas/Market"}},customer_groups:{type:"array",items:{$ref:"#/components/schemas/CustomerGroup"}},customers:{type:"array",items:{$ref:"#/components/schemas/Customer"}}},required:["id","created_at","updated_at","type","price_list_id","preferences","preference_schema","label","description"],"x-typelizer":!0},Price:{type:"object",properties:{id:{type:"string"},amount:{type:"string",nullable:!0},amount_in_cents:{type:"number",nullable:!0},compare_at_amount:{type:"string",nullable:!0},compare_at_amount_in_cents:{type:"number",nullable:!0},currency:{type:"string",nullable:!0},display_amount:{type:"string",nullable:!0},display_compare_at_amount:{type:"string",nullable:!0},price_list_id:{type:"string",nullable:!0},variant_id:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},variant:{$ref:"#/components/schemas/Variant"}},required:["id","amount","amount_in_cents","compare_at_amount","compare_at_amount_in_cents","currency","display_amount","display_compare_at_amount","price_list_id","variant_id","created_at","updated_at"],"x-typelizer":!0},ProductPublication:{type:"object",properties:{id:{type:"string"},published_at:{type:"string",nullable:!0},unpublished_at:{type:"string",nullable:!0},product_id:{type:"string"},channel_id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","published_at","unpublished_at","product_id","channel_id","created_at","updated_at"],"x-typelizer":!0},Product:{type:"object",properties:{id:{type:"string"},name:{type:"string"},slug:{type:"string"},meta_title:{type:"string",nullable:!0},meta_description:{type:"string",nullable:!0},meta_keywords:{type:"string",nullable:!0},variant_count:{type:"number"},available_on:{type:"string",nullable:!0},purchasable:{type:"boolean"},in_stock:{type:"boolean"},backorderable:{type:"boolean"},available:{type:"boolean"},description:{type:"string",nullable:!0},description_html:{type:"string",nullable:!0},default_variant_id:{type:"string"},thumbnail_url:{type:"string",nullable:!0},tags:{type:"array",items:{type:"string"}},price:{allOf:[{$ref:"#/components/schemas/Price"}],nullable:!0},original_price:{allOf:[{$ref:"#/components/schemas/Price"}],nullable:!0},primary_media:{$ref:"#/components/schemas/Media"},media:{type:"array",items:{$ref:"#/components/schemas/Media"}},variants:{type:"array",items:{$ref:"#/components/schemas/Variant"}},default_variant:{$ref:"#/components/schemas/Variant"},option_types:{type:"array",items:{$ref:"#/components/schemas/OptionType"}},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}},categories:{type:"array",items:{$ref:"#/components/schemas/Category"}},custom_fields:{type:"array",items:{$ref:"#/components/schemas/CustomField"}},prior_price:{allOf:[{$ref:"#/components/schemas/PriceHistory"}],nullable:!0},status:{type:"string"},metadata:{type:"object"},deleted_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},tax_category_id:{type:"string",nullable:!0},product_publications:{type:"array",items:{$ref:"#/components/schemas/ProductPublication"}},channels:{type:"array",items:{$ref:"#/components/schemas/Channel"}}},required:["id","name","slug","meta_title","meta_description","meta_keywords","variant_count","available_on","purchasable","in_stock","backorderable","available","description","description_html","default_variant_id","thumbnail_url","tags","price","original_price","status","metadata","deleted_at","created_at","updated_at","tax_category_id"],"x-typelizer":!0},PromotionAction:{type:"object",properties:{id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},type:{type:"string"},promotion_id:{type:"string"},preferences:{type:"object"},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}},label:{type:"string"},calculator:{allOf:[{$ref:"#/components/schemas/PromotionActionCalculator"}],nullable:!0},line_items:{type:"array",items:{$ref:"#/components/schemas/PromotionActionLineItem"},nullable:!0}},required:["id","created_at","updated_at","type","promotion_id","preferences","preference_schema","label","calculator","line_items"],"x-typelizer":!0},PromotionRule:{type:"object",properties:{id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},type:{type:"string"},promotion_id:{type:"string"},preferences:{type:"object"},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}},label:{type:"string"},product_ids:{type:"array",items:{type:"string"},nullable:!0},category_ids:{type:"array",items:{type:"string"},nullable:!0},customer_ids:{type:"array",items:{type:"string"},nullable:!0},products:{type:"array",items:{$ref:"#/components/schemas/Product"}},categories:{type:"array",items:{$ref:"#/components/schemas/Category"}},customers:{type:"array",items:{$ref:"#/components/schemas/Customer"}},customer_groups:{type:"array",items:{$ref:"#/components/schemas/CustomerGroup"}},countries:{type:"array",items:{$ref:"#/components/schemas/Country"}}},required:["id","created_at","updated_at","type","promotion_id","preferences","preference_schema","label","product_ids","category_ids","customer_ids"],"x-typelizer":!0},Promotion:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},code:{type:"string",nullable:!0},starts_at:{type:"string",nullable:!0},expires_at:{type:"string",nullable:!0},usage_limit:{type:"number",nullable:!0},match_policy:{type:"string",enum:["all","any"]},path:{type:"string",nullable:!0},kind:{type:"string",enum:["coupon_code","automatic"]},multi_codes:{type:"boolean"},number_of_codes:{type:"number",nullable:!0},code_prefix:{type:"string",nullable:!0},promotion_category_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},action_ids:{type:"array",items:{type:"string"}},rule_ids:{type:"array",items:{type:"string"}}},required:["id","name","description","code","starts_at","expires_at","usage_limit","match_policy","path","kind","multi_codes","number_of_codes","code_prefix","promotion_category_id","metadata","created_at","updated_at","action_ids","rule_ids"],"x-typelizer":!0},Refund:{type:"object",properties:{id:{type:"string"},transaction_id:{type:"string",nullable:!0},amount:{type:"string",nullable:!0},payment_id:{type:"string",nullable:!0},refund_reason_id:{type:"string",nullable:!0},reimbursement_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},payment:{$ref:"#/components/schemas/Payment"},reimbursement:{$ref:"#/components/schemas/Reimbursement"}},required:["id","transaction_id","amount","payment_id","refund_reason_id","reimbursement_id","metadata","created_at","updated_at"],"x-typelizer":!0},Reimbursement:{type:"object",properties:{id:{type:"string"},number:{type:"string"},reimbursement_status:{type:"string",nullable:!0},total:{type:"string",nullable:!0},order_id:{type:"string",nullable:!0},customer_return_id:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},order:{$ref:"#/components/schemas/Order"}},required:["id","number","reimbursement_status","total","order_id","customer_return_id","created_at","updated_at"],"x-typelizer":!0},ReturnAuthorization:{type:"object",properties:{id:{type:"string"},number:{type:"string"},status:{type:"string"},order_id:{type:"string",nullable:!0},stock_location_id:{type:"string",nullable:!0},return_authorization_reason_id:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},order:{$ref:"#/components/schemas/Order"},stock_location:{$ref:"#/components/schemas/StockLocation"}},required:["id","number","status","order_id","stock_location_id","return_authorization_reason_id","created_at","updated_at"],"x-typelizer":!0},Role:{type:"object",properties:{id:{type:"string"},name:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","created_at","updated_at"],"x-typelizer":!0},State:{type:"object",properties:{abbr:{type:"string"},name:{type:"string"},created_at:{type:"object"},updated_at:{type:"object"}},required:["abbr","name","created_at","updated_at"],"x-typelizer":!0},StockItem:{type:"object",properties:{id:{type:"string"},count_on_hand:{type:"number"},backorderable:{type:"boolean"},stock_location_id:{type:"string",nullable:!0},variant_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},allocated_count:{type:"number"},available_count:{type:"number"},stock_location:{$ref:"#/components/schemas/StockLocation"},variant:{$ref:"#/components/schemas/Variant"}},required:["id","count_on_hand","backorderable","stock_location_id","variant_id","metadata","created_at","updated_at","allocated_count","available_count"],"x-typelizer":!0},StockLocation:{type:"object",properties:{id:{type:"string"},state_abbr:{type:"string",nullable:!0},name:{type:"string"},address1:{type:"string",nullable:!0},city:{type:"string",nullable:!0},zipcode:{type:"string",nullable:!0},country_iso:{type:"string",nullable:!0},country_name:{type:"string",nullable:!0},state_text:{type:"string",nullable:!0},admin_name:{type:"string",nullable:!0},address2:{type:"string",nullable:!0},state_name:{type:"string",nullable:!0},phone:{type:"string",nullable:!0},company:{type:"string",nullable:!0},active:{type:"boolean"},default:{type:"boolean"},backorderable_default:{type:"boolean"},propagate_all_variants:{type:"boolean"},kind:{type:"string"},pickup_enabled:{type:"boolean"},pickup_stock_policy:{type:"string"},pickup_ready_in_minutes:{type:"number",nullable:!0},pickup_instructions:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","state_abbr","name","address1","city","zipcode","country_iso","country_name","state_text","admin_name","address2","state_name","phone","company","active","default","backorderable_default","propagate_all_variants","kind","pickup_enabled","pickup_stock_policy","pickup_ready_in_minutes","pickup_instructions","created_at","updated_at"],"x-typelizer":!0},StockReservation:{type:"object",properties:{id:{type:"string"},stock_item_id:{type:"string"},line_item_id:{type:"string"},order_id:{type:"string"},variant_id:{type:"string",nullable:!0},stock_location_id:{type:"string",nullable:!0},quantity:{type:"number"},expires_at:{type:"string"},active:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","stock_item_id","line_item_id","order_id","variant_id","stock_location_id","quantity","expires_at","active","created_at","updated_at"],"x-typelizer":!0},StockTransfer:{type:"object",properties:{id:{type:"string"},number:{type:"string"},reference:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},source_location_id:{type:"string",nullable:!0},destination_location_id:{type:"string",nullable:!0},source_location:{$ref:"#/components/schemas/StockLocation"},destination_location:{$ref:"#/components/schemas/StockLocation"}},required:["id","number","reference","metadata","created_at","updated_at","source_location_id","destination_location_id"],"x-typelizer":!0},StoreCreditCategory:{type:"object",properties:{id:{type:"string"},name:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},non_expiring:{type:"boolean"}},required:["id","name","created_at","updated_at","non_expiring"],"x-typelizer":!0},StoreCredit:{type:"object",properties:{id:{type:"string"},amount:{type:"string"},amount_used:{type:"string"},amount_remaining:{type:"string"},display_amount:{type:"string"},display_amount_used:{type:"string"},display_amount_remaining:{type:"string"},currency:{type:"string"},memo:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},customer_id:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0},category_id:{type:"string",nullable:!0},category_name:{type:"string",nullable:!0}},required:["id","amount","amount_used","amount_remaining","display_amount","display_amount_used","display_amount_remaining","currency","memo","metadata","created_at","updated_at","customer_id","created_by_id","category_id","category_name"],"x-typelizer":!0},Store:{type:"object",properties:{id:{type:"string"},metadata:{type:"object"},name:{type:"string"},default_currency:{type:"string"},default_locale:{type:"string"},mail_from_address:{type:"string",nullable:!0},customer_support_email:{type:"string",nullable:!0},new_order_notifications_email:{type:"string",nullable:!0},preferred_send_consumer_transactional_emails:{type:"boolean"},preferred_admin_locale:{type:"string",nullable:!0},preferred_timezone:{type:"string"},preferred_weight_unit:{type:"string"},preferred_unit_system:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},url:{type:"string"},supported_currencies:{type:"array",items:{type:"string"}},supported_locales:{type:"array",items:{type:"string"}},logo_url:{type:"string",nullable:!0},mailer_logo_url:{type:"string",nullable:!0}},required:["id","metadata","name","default_currency","default_locale","mail_from_address","customer_support_email","new_order_notifications_email","preferred_send_consumer_transactional_emails","preferred_admin_locale","preferred_timezone","preferred_weight_unit","preferred_unit_system","created_at","updated_at","url","supported_currencies","supported_locales","logo_url","mailer_logo_url"],"x-typelizer":!0},TaxCategory:{type:"object",properties:{id:{type:"string"},name:{type:"string"},tax_code:{type:"string",nullable:!0},description:{type:"string",nullable:!0},is_default:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","tax_code","description","is_default","created_at","updated_at"],"x-typelizer":!0},Variant:{type:"object",properties:{id:{type:"string"},product_id:{type:"string"},sku:{type:"string",nullable:!0},options_text:{type:"string"},track_inventory:{type:"boolean"},media_count:{type:"number"},thumbnail_url:{type:"string",nullable:!0},purchasable:{type:"boolean"},in_stock:{type:"boolean"},backorderable:{type:"boolean"},weight:{type:"number",nullable:!0},height:{type:"number",nullable:!0},width:{type:"number",nullable:!0},depth:{type:"number",nullable:!0},price:{$ref:"#/components/schemas/Price"},original_price:{allOf:[{$ref:"#/components/schemas/Price"}],nullable:!0},primary_media:{$ref:"#/components/schemas/Media"},media:{type:"array",items:{$ref:"#/components/schemas/Media"}},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}},custom_fields:{type:"array",items:{$ref:"#/components/schemas/CustomField"}},prior_price:{allOf:[{$ref:"#/components/schemas/PriceHistory"}],nullable:!0},metadata:{type:"object"},position:{type:"number"},cost_price:{type:"string",nullable:!0},cost_currency:{type:"string",nullable:!0},barcode:{type:"string",nullable:!0},weight_unit:{type:"string",nullable:!0},dimensions_unit:{type:"string",nullable:!0},deleted_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},tax_category_id:{type:"string",nullable:!0},available_stock:{type:"number",nullable:!0},reserved_quantity:{type:"number"},total_on_hand:{type:"number",nullable:!0},product_name:{type:"string"},prices:{type:"array",items:{$ref:"#/components/schemas/Price"}},stock_items:{type:"array",items:{$ref:"#/components/schemas/StockItem"}}},required:["id","product_id","sku","options_text","track_inventory","media_count","thumbnail_url","purchasable","in_stock","backorderable","weight","height","width","depth","price","original_price","option_values","metadata","position","cost_price","cost_currency","barcode","weight_unit","dimensions_unit","deleted_at","created_at","updated_at","tax_category_id","available_stock","reserved_quantity","total_on_hand","product_name"],"x-typelizer":!0},WebhookDelivery:{type:"object",properties:{id:{type:"string"},event_name:{type:"string"},event_id:{type:"string",nullable:!0},response_code:{type:"number",nullable:!0},execution_time:{type:"number",nullable:!0},error_type:{type:"string",nullable:!0},request_errors:{type:"string",nullable:!0},response_body:{type:"string",nullable:!0},success:{type:"boolean",nullable:!0},payload:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},delivered_at:{type:"string",nullable:!0},webhook_endpoint_id:{type:"string"},webhook_endpoint_url:{type:"string"}},required:["id","event_name","event_id","response_code","execution_time","error_type","request_errors","response_body","success","payload","created_at","updated_at","delivered_at","webhook_endpoint_id","webhook_endpoint_url"],"x-typelizer":!0},WebhookEndpoint:{type:"object",properties:{id:{type:"string"},name:{type:"string",nullable:!0},url:{type:"string"},active:{type:"boolean"},subscriptions:{type:"array",items:{type:"string"}},disabled_reason:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},disabled_at:{type:"string",nullable:!0},secret_key:{type:"string",nullable:!0},last_delivery_at:{type:"string",nullable:!0},recent_delivery_count:{type:"number"},recent_failure_count:{type:"number"},total_delivery_count:{type:"number"},successful_delivery_count:{type:"number"},failed_delivery_count:{type:"number"}},required:["id","name","url","active","subscriptions","disabled_reason","created_at","updated_at","disabled_at","secret_key","last_delivery_at","recent_delivery_count","recent_failure_count","total_delivery_count","successful_delivery_count","failed_delivery_count"],"x-typelizer":!0}}}};var Ml=new Set(["get","post","put","patch","delete"]);function Ni(){return Dl}function fk(e){let t=e.description?.match(/\*\*Required scope:\*\* (.+?) \(for API-key authentication\)\./);return t?t[1].replaceAll("`",""):"\u2014"}function Fl(e,t={}){let r=[];for(let[i,n]of Object.entries(e.paths)){let s=i.replace("/api/v3/admin","")||"/";for(let[o,a]of Object.entries(n)){if(!Ml.has(o))continue;if(t.resource){let d=s.split("/")[1]??"";if(d!==t.resource&&!d.startsWith(t.resource))continue}let c=a.summary??"";t.search&&!`${o} ${s} ${c}`.toLowerCase().includes(t.search.toLowerCase())||r.push({method:o.toUpperCase(),path:s,scope:fk(a),summary:c})}}return r}function Ul(e,t){let r=t.trim().split(/\s+/),i=r.length>1?r[0].toLowerCase():void 0,n=r.length>1?r[1]:r[0],s=ur(n),o=Ll(e,i,a=>a===s);return o.length>0?o:Ll(e,i,a=>gk(a,s))}function Ll(e,t,r){let i=[];for(let[n,s]of Object.entries(e.paths)){let o=n.replace("/api/v3/admin","")||"/";if(r(o))for(let[a,c]of Object.entries(s))Ml.has(a)&&(t&&a!==t||i.push({method:a.toUpperCase(),path:o,summary:c.summary,description:c.description,parameters:jt(c.parameters,e),requestBody:jt(c.requestBody,e),responses:jt(c.responses,e)}))}return i}function gk(e,t){if(e===t)return!0;let r=e.split("/"),i=t.split("/");return r.length!==i.length?!1:r.every((n,s)=>n.startsWith("{")&&n.endsWith("}")?i[s].length>0:n===i[s])}var _k=8;function jt(e,t,r=[]){if(Array.isArray(e))return e.map(o=>jt(o,t,r));if(!e||typeof e!="object")return e;let i=e,n=i.$ref;if(typeof n=="string"){let o=n.replace("#/components/schemas/","");return r.includes(o)||r.length>=_k||!(o in t.components.schemas)?{$ref:n}:jt(t.components.schemas[o],t,[...r,o])}let s={};for(let[o,a]of Object.entries(i))s[o]=jt(a,t,r);return s}function bk(e,t){return[...t,e]}function zl(e){return e.option("--profile <name>","use a saved profile (see `spree auth`)").option("--base-url <url>","store URL (overrides profile/env/project)").option("--api-key <key>","secret API key (prefer SPREE_API_KEY \u2014 flags leak into shell history)").option("--store-id <id>","X-Spree-Store-Id for hosts serving multiple stores")}function Vl(){return new ea("--format <format>","output format").choices(["json","table"]).default("json")}function Bl(e){return zl(e).addOption(Vl())}async function Nl(e){let t=await pr({baseUrl:e.baseUrl,apiKey:e.apiKey,profile:e.profile});return{client:Lt({baseUrl:t.baseUrl,secretKey:t.apiKey,...e.storeId?{storeId:e.storeId}:{}}),credentials:t}}function Wl(e){let t=e.command("api").description("Call the Admin API directly (generic get/post/patch/delete)");t.addHelpText("after",["","Examples:"," spree api get /products -q status_eq=active --limit 10",` spree api post /products -d '{"name":"Classic Tee","prices":[{"currency":"USD","amount":"29.99"}]}'`," spree api get /orders/ord_x8k2J9aQ --expand items,payments","","Discover the surface (offline, no server needed):"," spree api endpoints --search <term> # find endpoints + required scopes",' spree api schema "POST /orders" # request/response schema for one operation'," spree completion zsh # tab-completion for paths, filters, scopes"].join(`
|
|
270
|
-
`)),
|
|
271
|
-
`),process.exitCode=1;return}if(r.format==="table"){(0,
|
|
272
|
-
`),process.exitCode=1;return}let n=/\s/.test(r.trim());
|
|
269
|
+
**Required scope:** \`write_webhooks\` (for API-key authentication).`,parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"200":{description:"webhook endpoint disabled",content:{"application/json":{}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{reason:{type:"string"}}}}}}}},"/api/v3/admin/categories":{get:{summary:"List categories",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a paginated list of the store's categories (manual hierarchical taxons; rule-based collections are excluded).\n\n**Required scope:** `read_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"page",in:"query",required:!1,description:"Page number",schema:{type:"integer"}},{name:"limit",in:"query",required:!1,description:"Number of records per page",schema:{type:"integer"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., children, parent, ancestors).",schema:{type:"string"}}],responses:{"200":{description:"categories found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/Category"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}}}},post:{summary:"Create a category",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Creates a category. Nests under the parent when parent_id is given, otherwise creates a top-level category.\n\n**Required scope:** `write_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}}],responses:{"201":{description:"category created",content:{"application/json":{schema:{$ref:"#/components/schemas/Category"}}}},"422":{description:"validation error",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},parent_id:{type:"string",description:"Prefixed ID of the parent category"},description:{type:"string"},permalink:{type:"string"},meta_title:{type:"string"},meta_description:{type:"string"},meta_keywords:{type:"string"},hide_from_nav:{type:"boolean"}},required:["name"]}}}}}},"/api/v3/admin/categories/{id}":{get:{summary:"Get a category",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Returns a single category by ID.\n\n**Required scope:** `read_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Category ID",schema:{type:"string"}},{name:"expand",in:"query",required:!1,description:"Comma-separated associations to expand (e.g., children, parent, ancestors).",schema:{type:"string"}}],responses:{"200":{description:"category found",content:{"application/json":{schema:{$ref:"#/components/schemas/Category"}}}},"404":{description:"category not found",content:{"application/json":{schema:{$ref:"#/components/schemas/ErrorResponse"}}}}}},patch:{summary:"Update a category",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Updates a category.\n\n**Required scope:** `write_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Category ID",schema:{type:"string"}}],responses:{"200":{description:"category updated",content:{"application/json":{schema:{$ref:"#/components/schemas/Category"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{name:{type:"string"},parent_id:{type:"string",description:"Prefixed ID of the parent category"},description:{type:"string"},permalink:{type:"string"},meta_title:{type:"string"},meta_description:{type:"string"},meta_keywords:{type:"string"},hide_from_nav:{type:"boolean"}}}}}}},delete:{summary:"Delete a category",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Deletes a category and its descendants.\n\n**Required scope:** `write_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Category ID",schema:{type:"string"}}],responses:{"204":{description:"category deleted"}}}},"/api/v3/admin/categories/{id}/reposition":{patch:{summary:"Reposition a category",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Moves a category to a new parent and/or index within the tree.\n\n**Required scope:** `write_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Category ID",schema:{type:"string"}}],responses:{"200":{description:"category repositioned",content:{"application/json":{schema:{$ref:"#/components/schemas/Category"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{new_parent_id:{type:"string",description:"Prefixed ID of the new parent (omit for top level)"},new_position:{type:"integer",description:"0-based index among the new parent's children"}},required:["new_position"]}}}}}},"/api/v3/admin/categories/{category_id}/products":{get:{summary:"List category products",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Products classified under the category, ordered by their classification position.\n\n**Required scope:** `read_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"category_id",in:"path",required:!0,description:"Category ID",schema:{type:"string"}}],responses:{"200":{description:"products found",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{$ref:"#/components/schemas/Product"}},meta:{$ref:"#/components/schemas/PaginationMeta"}},required:["data","meta"]}}}}}},post:{summary:"Add a product to a category",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Classifies a product under the category (appended to the end).\n\n**Required scope:** `write_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"category_id",in:"path",required:!0,description:"Category ID",schema:{type:"string"}}],responses:{"201":{description:"product added",content:{"application/json":{schema:{$ref:"#/components/schemas/Product"}}}}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{product_id:{type:"string"}},required:["product_id"]}}}}}},"/api/v3/admin/categories/{category_id}/products/{id}/reposition":{patch:{summary:"Reposition a category product",tags:["Categories"],security:[{api_key:[],bearer_auth:[]}],description:"Moves a product to a new index among the category's products.\n\n**Required scope:** `write_categories` (for API-key authentication).",parameters:[{name:"x-spree-api-key",in:"header",required:!0,schema:{type:"string"}},{name:"Authorization",in:"header",required:!0,description:"Bearer token for admin authentication",schema:{type:"string"}},{name:"category_id",in:"path",required:!0,description:"Category ID",schema:{type:"string"}},{name:"id",in:"path",required:!0,description:"Product ID",schema:{type:"string"}}],responses:{"204":{description:"product repositioned"}},requestBody:{content:{"application/json":{schema:{type:"object",properties:{new_position:{type:"integer",description:"0-based index among the category's products"}},required:["new_position"]}}}}}}},components:{schemas:{PaginationMeta:{type:"object",properties:{page:{type:"integer"},limit:{type:"integer"},count:{type:"integer",description:"Total number of records"},pages:{type:"integer",description:"Total number of pages"},from:{type:"integer",description:"Index of first record on this page"},to:{type:"integer",description:"Index of last record on this page"},in:{type:"integer",description:"Number of records on this page"},previous:{type:"integer",nullable:!0,description:"Previous page number"},next:{type:"integer",nullable:!0,description:"Next page number"}},required:["page","limit","count","pages","from","to","in"]},ErrorResponse:{type:"object",properties:{error:{type:"object",properties:{code:{type:"string"},message:{type:"string"},details:{type:"object",description:"Field-specific validation errors",nullable:!0}},required:["code","message"]}},required:["error"]},AuthResponse:{type:"object",properties:{token:{type:"string",description:"JWT access token"},user:{$ref:"#/components/schemas/AdminUser"}},required:["token","user"]},PermissionRule:{type:"object",description:"A single permission rule (CanCanCan rule). Rules are applied in order, last-matching-wins.",properties:{allow:{type:"boolean",description:"true for `can`, false for `cannot`"},actions:{type:"array",items:{type:"string"},description:'Action names, e.g. ["read", "update"] or ["manage"]'},subjects:{type:"array",items:{type:"string"},description:'Subject class names, e.g. ["Spree::Product"] or ["all"]'},has_conditions:{type:"boolean",description:"True if the server-side rule has per-record conditions. The SPA shows the action optimistically and handles 403 from the API."}},required:["allow","actions","subjects","has_conditions"]},MeResponse:{type:"object",description:"Current admin user profile and serialized permissions",properties:{user:{$ref:"#/components/schemas/AdminUser"},permissions:{type:"array",items:{$ref:"#/components/schemas/PermissionRule"}}},required:["user","permissions"]},CheckoutRequirement:{type:"object",properties:{step:{type:"string",description:"Checkout step this requirement belongs to"},field:{type:"string",description:"Field that needs to be satisfied"},message:{type:"string",description:"Human-readable requirement message"}},required:["step","field","message"]},CartWarning:{type:"object",description:"A warning about a cart issue (e.g., item removed due to stock change)",properties:{code:{type:"string",description:"Machine-readable warning code"},message:{type:"string",description:"Human-readable warning message"},line_item_id:{type:"string",nullable:!0,description:"Prefixed line item ID (when applicable)"},variant_id:{type:"string",nullable:!0,description:"Prefixed variant ID (when applicable)"}},required:["code","message"]},FulfillmentManifestItem:{type:"object",description:"An item within a fulfillment \u2014 which line item and how many units are in this fulfillment",properties:{item_id:{type:"string",description:"Line item ID"},variant_id:{type:"string",description:"Variant ID"},quantity:{type:"integer",description:"Quantity in this fulfillment"}},required:["item_id","variant_id","quantity"]},AdminUserRoleAssignment:{type:"object",description:"A role assignment for the current store on a staff member",properties:{id:{type:"string",description:"Prefixed role ID"},name:{type:"string",description:"Role name"}},required:["id","name"]},PreferenceField:{type:"object",description:"A single configurable preference on a payment method, promotion rule/action, or calculator. The frontend uses `type` + `default` to render a sensible input.",properties:{key:{type:"string"},type:{type:"string",description:"string | text | password | integer | decimal | boolean | array | hash"},default:{description:"Default value (any JSON type), null when there is no default",nullable:!0}},required:["key","type"]},PromotionActionCalculator:{type:"object",description:"The action's nested calculator (when the action carries one \u2014 null for actions like `free_shipping`)",properties:{type:{type:"string",description:"Wire shorthand for the calculator subclass"},label:{type:"string"},preferences:{type:"object",additionalProperties:!0},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}}},required:["type","label","preferences","preference_schema"]},PromotionActionLineItem:{type:"object",description:"One row in a `create_line_items` action \u2014 the variant added to the order and how many",properties:{variant_id:{type:"string"},quantity:{type:"integer"}},required:["variant_id","quantity"]},Address:{type:"object",properties:{id:{type:"string"},first_name:{type:"string",nullable:!0},last_name:{type:"string",nullable:!0},full_name:{type:"string"},address1:{type:"string",nullable:!0},address2:{type:"string",nullable:!0},postal_code:{type:"string",nullable:!0},city:{type:"string",nullable:!0},phone:{type:"string",nullable:!0},company:{type:"string",nullable:!0},country_name:{type:"string"},country_iso:{type:"string"},state_text:{type:"string",nullable:!0},state_abbr:{type:"string",nullable:!0},quick_checkout:{type:"boolean"},is_default_billing:{type:"boolean"},is_default_shipping:{type:"boolean"},state_name:{type:"string",nullable:!0},label:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},customer_id:{type:"string",nullable:!0}},required:["id","first_name","last_name","full_name","address1","address2","postal_code","city","phone","company","country_name","country_iso","state_text","state_abbr","quick_checkout","is_default_billing","is_default_shipping","state_name","label","metadata","created_at","updated_at","customer_id"],"x-typelizer":!0},Adjustment:{type:"object",properties:{id:{type:"string"},label:{type:"string"},display_amount:{type:"string"},included:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"},amount:{type:"string"},order_id:{type:"string",nullable:!0}},required:["id","label","display_amount","included","created_at","updated_at","amount","order_id"],"x-typelizer":!0},AdminUser:{type:"object",properties:{id:{type:"string"},email:{type:"string"},first_name:{type:"string",nullable:!0},last_name:{type:"string",nullable:!0},full_name:{type:"string",nullable:!0},selected_locale:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},roles:{type:"array",items:{$ref:"#/components/schemas/AdminUserRoleAssignment"}}},required:["id","email","first_name","last_name","full_name","selected_locale","created_at","updated_at","roles"],"x-typelizer":!0},AllowedOrigin:{type:"object",properties:{id:{type:"string"},origin:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","origin","created_at","updated_at"],"x-typelizer":!0},ApiKey:{type:"object",properties:{id:{type:"string"},name:{type:"string"},key_type:{type:"string"},token_prefix:{type:"string",nullable:!0},scopes:{type:"array",items:{type:"string"}},created_at:{type:"string"},updated_at:{type:"string"},revoked_at:{type:"string",nullable:!0},last_used_at:{type:"string",nullable:!0},plaintext_token:{type:"string",nullable:!0},created_by_email:{type:"string",nullable:!0}},required:["id","name","key_type","token_prefix","scopes","created_at","updated_at","revoked_at","last_used_at","plaintext_token","created_by_email"],"x-typelizer":!0},Category:{type:"object",properties:{id:{type:"string"},name:{type:"string"},permalink:{type:"string"},position:{type:"number"},depth:{type:"number"},meta_title:{type:"string",nullable:!0},meta_description:{type:"string",nullable:!0},meta_keywords:{type:"string",nullable:!0},children_count:{type:"number"},parent_id:{type:"string",nullable:!0},description:{type:"string"},description_html:{type:"string"},image_url:{type:"string",nullable:!0},square_image_url:{type:"string",nullable:!0},is_root:{type:"boolean"},is_child:{type:"boolean"},is_leaf:{type:"boolean"},parent:{$ref:"#/components/schemas/Category"},children:{type:"array",items:{$ref:"#/components/schemas/Category"}},ancestors:{type:"array",items:{$ref:"#/components/schemas/Category"}},custom_fields:{type:"array",items:{$ref:"#/components/schemas/CustomField"}},translations:{type:"object"},metadata:{type:"object"},pretty_name:{type:"string"},lft:{type:"number"},rgt:{type:"number"},products_count:{type:"number"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","permalink","position","depth","meta_title","meta_description","meta_keywords","children_count","parent_id","description","description_html","image_url","square_image_url","is_root","is_child","is_leaf","metadata","pretty_name","lft","rgt","products_count","created_at","updated_at"],"x-typelizer":!0},Channel:{type:"object",properties:{id:{type:"string"},name:{type:"string"},code:{type:"string"},active:{type:"boolean"},default:{type:"boolean"},preferred_order_routing_strategy:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","code","active","default","preferred_order_routing_strategy","created_at","updated_at"],"x-typelizer":!0},Country:{type:"object",properties:{iso:{type:"string"},iso3:{type:"string"},name:{type:"string"},states_required:{type:"boolean"},zipcode_required:{type:"boolean"},states:{type:"array",items:{$ref:"#/components/schemas/State"}},market:{allOf:[{$ref:"#/components/schemas/Market"}],nullable:!0},created_at:{type:"object"},updated_at:{type:"object"}},required:["iso","iso3","name","states_required","zipcode_required","created_at","updated_at"],"x-typelizer":!0},CouponCode:{type:"object",properties:{id:{type:"string"},code:{type:"string"},state:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},promotion_id:{type:"string"},order_id:{type:"string",nullable:!0}},required:["id","code","state","created_at","updated_at","promotion_id","order_id"],"x-typelizer":!0},CreditCard:{type:"object",properties:{id:{type:"string"},brand:{type:"string"},last4:{type:"string"},month:{type:"number"},year:{type:"number"},name:{type:"string",nullable:!0},default:{type:"boolean"},gateway_payment_profile_id:{type:"string",nullable:!0},customer_id:{type:"string",nullable:!0},payment_method_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","brand","last4","month","year","name","default","gateway_payment_profile_id","customer_id","payment_method_id","metadata","created_at","updated_at"],"x-typelizer":!0},CustomFieldDefinition:{type:"object",properties:{id:{type:"string"},namespace:{type:"string"},key:{type:"string"},label:{type:"string"},field_type:{type:"string",enum:["short_text","long_text","rich_text","number","boolean","json"]},resource_type:{type:"string"},storefront_visible:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","namespace","key","label","field_type","resource_type","storefront_visible","created_at","updated_at"],"x-typelizer":!0},CustomField:{type:"object",properties:{id:{type:"string"},label:{type:"string"},type:{type:"string",deprecated:!0},field_type:{type:"string",enum:["short_text","long_text","rich_text","number","boolean","json"]},key:{type:"string"},value:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},storefront_visible:{type:"boolean"},custom_field_definition_id:{type:"string"}},required:["id","label","type","field_type","key","value","created_at","updated_at","storefront_visible","custom_field_definition_id"],"x-typelizer":!0},CustomerGroup:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},customers_count:{type:"number"},created_at:{type:"string"},updated_at:{type:"string"},customers:{type:"array",items:{$ref:"#/components/schemas/Customer"}}},required:["id","name","description","customers_count","created_at","updated_at"],"x-typelizer":!0},Customer:{type:"object",properties:{id:{type:"string"},email:{type:"string"},first_name:{type:"string",nullable:!0},last_name:{type:"string",nullable:!0},phone:{type:"string",nullable:!0},accepts_email_marketing:{type:"boolean"},full_name:{type:"string"},available_store_credit_total:{type:"string"},display_available_store_credit_total:{type:"string"},addresses:{type:"array",items:{$ref:"#/components/schemas/Address"}},default_billing_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},default_shipping_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},login:{type:"string",nullable:!0},metadata:{type:"object"},last_sign_in_at:{type:"string",nullable:!0},current_sign_in_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},sign_in_count:{type:"number"},failed_attempts:{type:"number"},last_sign_in_ip:{type:"string",nullable:!0},current_sign_in_ip:{type:"string",nullable:!0},tags:{type:"array",items:{type:"string"}},internal_note_html:{type:"string",nullable:!0},default_billing_address_id:{type:"string",nullable:!0},default_shipping_address_id:{type:"string",nullable:!0},orders_count:{type:"number"},total_spent:{type:"string"},display_total_spent:{type:"string"},last_order_completed_at:{type:"string",nullable:!0},orders:{type:"array",items:{$ref:"#/components/schemas/Order"}},store_credits:{type:"array",items:{$ref:"#/components/schemas/StoreCredit"}},customer_group_ids:{type:"array",items:{type:"string"}},customer_groups:{type:"array",items:{$ref:"#/components/schemas/CustomerGroup"}}},required:["id","email","first_name","last_name","phone","accepts_email_marketing","full_name","available_store_credit_total","display_available_store_credit_total","login","metadata","last_sign_in_at","current_sign_in_at","created_at","updated_at","sign_in_count","failed_attempts","last_sign_in_ip","current_sign_in_ip","tags","internal_note_html","default_billing_address_id","default_shipping_address_id","orders_count","total_spent","display_total_spent","last_order_completed_at","customer_group_ids"],"x-typelizer":!0},DeliveryMethod:{type:"object",properties:{id:{type:"string"},name:{type:"string"},code:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","code","created_at","updated_at"],"x-typelizer":!0},DeliveryRate:{type:"object",properties:{id:{type:"string"},delivery_method_id:{type:"string"},name:{type:"string"},selected:{type:"boolean"},cost:{type:"string"},total:{type:"string"},additional_tax_total:{type:"string"},included_tax_total:{type:"string"},tax_total:{type:"string"},display_cost:{type:"string"},display_total:{type:"string"},display_additional_tax_total:{type:"string"},display_included_tax_total:{type:"string"},display_tax_total:{type:"string"},delivery_method:{$ref:"#/components/schemas/DeliveryMethod"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","delivery_method_id","name","selected","cost","total","additional_tax_total","included_tax_total","tax_total","display_cost","display_total","display_additional_tax_total","display_included_tax_total","display_tax_total","created_at","updated_at"],"x-typelizer":!0},DigitalLink:{type:"object",properties:{id:{type:"string"},access_counter:{type:"number"},filename:{type:"string"},content_type:{type:"string"},download_url:{type:"string"},authorizable:{type:"boolean"},expired:{type:"boolean"},access_limit_exceeded:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","access_counter","filename","content_type","download_url","authorizable","expired","access_limit_exceeded","created_at","updated_at"],"x-typelizer":!0},Discount:{type:"object",properties:{id:{type:"string"},promotion_id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},code:{type:"string",nullable:!0},amount:{type:"string"},display_amount:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","promotion_id","name","description","code","amount","display_amount","created_at","updated_at"],"x-typelizer":!0},Export:{type:"object",properties:{id:{type:"string"},number:{type:"string"},type:{type:"string",nullable:!0},format:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},user_id:{type:"string",nullable:!0},done:{type:"boolean"},filename:{type:"string",nullable:!0},byte_size:{type:"number",nullable:!0},download_url:{type:"string",nullable:!0}},required:["id","number","type","format","created_at","updated_at","user_id","done","filename","byte_size","download_url"],"x-typelizer":!0},Fulfillment:{type:"object",properties:{id:{type:"string"},number:{type:"string"},tracking:{type:"string",nullable:!0},tracking_url:{type:"string",nullable:!0},cost:{type:"string"},display_cost:{type:"string"},total:{type:"string"},display_total:{type:"string"},discount_total:{type:"string"},display_discount_total:{type:"string"},additional_tax_total:{type:"string"},display_additional_tax_total:{type:"string"},included_tax_total:{type:"string"},display_included_tax_total:{type:"string"},tax_total:{type:"string"},display_tax_total:{type:"string"},status:{type:"string"},fulfillment_type:{type:"string"},fulfilled_at:{type:"string",nullable:!0},items:{type:"array",items:{$ref:"#/components/schemas/FulfillmentManifestItem"}},delivery_method:{$ref:"#/components/schemas/DeliveryMethod"},stock_location:{$ref:"#/components/schemas/StockLocation"},delivery_rates:{type:"array",items:{$ref:"#/components/schemas/DeliveryRate"}},metadata:{type:"object"},adjustment_total:{type:"string"},pre_tax_amount:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},order_id:{type:"string",nullable:!0},stock_location_id:{type:"string",nullable:!0},order:{$ref:"#/components/schemas/Order"},adjustments:{type:"array",items:{$ref:"#/components/schemas/Adjustment"}}},required:["id","number","tracking","tracking_url","cost","display_cost","total","display_total","discount_total","display_discount_total","additional_tax_total","display_additional_tax_total","included_tax_total","display_included_tax_total","tax_total","display_tax_total","status","fulfillment_type","fulfilled_at","items","metadata","adjustment_total","pre_tax_amount","created_at","updated_at","order_id","stock_location_id"],"x-typelizer":!0},GiftCardBatch:{type:"object",properties:{id:{type:"string"},codes_count:{type:"number"},currency:{type:"string",nullable:!0},prefix:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},amount:{type:"string",nullable:!0},expires_at:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0}},required:["id","codes_count","currency","prefix","created_at","updated_at","amount","expires_at","created_by_id"],"x-typelizer":!0},GiftCard:{type:"object",properties:{id:{type:"string"},code:{type:"string"},status:{type:"string"},currency:{type:"string"},amount:{type:"string"},amount_used:{type:"string"},amount_authorized:{type:"string"},amount_remaining:{type:"string"},display_amount:{type:"string"},display_amount_used:{type:"string"},display_amount_remaining:{type:"string"},expires_at:{type:"string",nullable:!0},redeemed_at:{type:"string",nullable:!0},expired:{type:"boolean"},active:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"},customer_id:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0},customer:{$ref:"#/components/schemas/Customer"},created_by:{$ref:"#/components/schemas/AdminUser"},gift_card_batch:{$ref:"#/components/schemas/GiftCardBatch"},orders:{type:"array",items:{$ref:"#/components/schemas/Order"}}},required:["id","code","status","currency","amount","amount_used","amount_authorized","amount_remaining","display_amount","display_amount_used","display_amount_remaining","expires_at","redeemed_at","expired","active","created_at","updated_at","customer_id","created_by_id"],"x-typelizer":!0},Invitation:{type:"object",properties:{id:{type:"string"},email:{type:"string"},status:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},expires_at:{type:"string"},role_id:{type:"string"},role_name:{type:"string"},inviter_email:{type:"string"},acceptance_url:{type:"string"},invitee_exists:{type:"boolean"},store:{type:"object"}},required:["id","email","status","created_at","updated_at","expires_at","role_id","role_name","inviter_email","acceptance_url","invitee_exists","store"],"x-typelizer":!0},LineItem:{type:"object",properties:{id:{type:"string"},variant_id:{type:"string"},quantity:{type:"number"},currency:{type:"string"},name:{type:"string"},slug:{type:"string"},options_text:{type:"string"},price:{type:"string"},display_price:{type:"string"},total:{type:"string"},display_total:{type:"string"},adjustment_total:{type:"string"},display_adjustment_total:{type:"string"},additional_tax_total:{type:"string"},display_additional_tax_total:{type:"string"},included_tax_total:{type:"string"},display_included_tax_total:{type:"string"},discount_total:{type:"string"},display_discount_total:{type:"string"},pre_tax_amount:{type:"string"},display_pre_tax_amount:{type:"string"},discounted_amount:{type:"string"},display_discounted_amount:{type:"string"},display_compare_at_amount:{type:"string",nullable:!0},compare_at_amount:{type:"string",nullable:!0},thumbnail_url:{type:"string",nullable:!0},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}},digital_links:{type:"array",items:{$ref:"#/components/schemas/DigitalLink"}},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},cost_price:{type:"string",nullable:!0},tax_category_id:{type:"string",nullable:!0},variant:{$ref:"#/components/schemas/Variant"},tax_category:{$ref:"#/components/schemas/TaxCategory"},adjustments:{type:"array",items:{$ref:"#/components/schemas/Adjustment"}}},required:["id","variant_id","quantity","currency","name","slug","options_text","price","display_price","total","display_total","adjustment_total","display_adjustment_total","additional_tax_total","display_additional_tax_total","included_tax_total","display_included_tax_total","discount_total","display_discount_total","pre_tax_amount","display_pre_tax_amount","discounted_amount","display_discounted_amount","display_compare_at_amount","compare_at_amount","thumbnail_url","option_values","digital_links","metadata","created_at","updated_at","cost_price","tax_category_id"],"x-typelizer":!0},Market:{type:"object",properties:{id:{type:"string"},name:{type:"string"},currency:{type:"string"},default_locale:{type:"string"},tax_inclusive:{type:"boolean"},default:{type:"boolean"},country_isos:{type:"array",items:{type:"string"}},supported_locales:{type:"array",items:{type:"string"}},countries:{type:"array",items:{$ref:"#/components/schemas/Country"}},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","currency","default_locale","tax_inclusive","default","country_isos","supported_locales","created_at","updated_at"],"x-typelizer":!0},Media:{type:"object",properties:{id:{type:"string"},product_id:{type:"string",nullable:!0},variant_ids:{type:"array",items:{type:"string"}},position:{type:"number"},alt:{type:"string",nullable:!0},media_type:{type:"string"},focal_point_x:{type:"number",nullable:!0},focal_point_y:{type:"number",nullable:!0},external_video_url:{type:"string",nullable:!0},original_url:{type:"string",nullable:!0},mini_url:{type:"string",nullable:!0},small_url:{type:"string",nullable:!0},medium_url:{type:"string",nullable:!0},large_url:{type:"string",nullable:!0},xlarge_url:{type:"string",nullable:!0},og_image_url:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},viewable_id:{type:"string"},download_url:{type:"string",nullable:!0},metadata:{type:"object"},viewable_type:{type:"string"}},required:["id","product_id","variant_ids","position","alt","media_type","focal_point_x","focal_point_y","external_video_url","original_url","mini_url","small_url","medium_url","large_url","xlarge_url","og_image_url","created_at","updated_at","viewable_id","download_url","metadata","viewable_type"],"x-typelizer":!0},OptionType:{type:"object",properties:{id:{type:"string"},name:{type:"string"},label:{type:"string"},position:{type:"number"},kind:{type:"string"},translations:{type:"object"},metadata:{type:"object"},filterable:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}}},required:["id","name","label","position","kind","metadata","filterable","created_at","updated_at"],"x-typelizer":!0},OptionValue:{type:"object",properties:{id:{type:"string"},option_type_id:{type:"string"},name:{type:"string"},label:{type:"string"},position:{type:"number"},color_code:{type:"string",nullable:!0},option_type_name:{type:"string"},option_type_label:{type:"string"},image_url:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},option_type:{$ref:"#/components/schemas/OptionType"}},required:["id","option_type_id","name","label","position","color_code","option_type_name","option_type_label","image_url","metadata","created_at","updated_at"],"x-typelizer":!0},Order:{type:"object",properties:{id:{type:"string"},market_id:{type:"string",nullable:!0},channel_id:{type:"string",nullable:!0},number:{type:"string"},email:{type:"string"},customer_note:{type:"string",nullable:!0},currency:{type:"string"},locale:{type:"string",nullable:!0},total_quantity:{type:"number"},item_total:{type:"string"},display_item_total:{type:"string"},adjustment_total:{type:"string"},display_adjustment_total:{type:"string"},discount_total:{type:"string"},display_discount_total:{type:"string"},tax_total:{type:"string"},display_tax_total:{type:"string"},included_tax_total:{type:"string"},display_included_tax_total:{type:"string"},additional_tax_total:{type:"string"},display_additional_tax_total:{type:"string"},total:{type:"string"},display_total:{type:"string"},gift_card_total:{type:"string"},display_gift_card_total:{type:"string"},amount_due:{type:"string"},display_amount_due:{type:"string"},delivery_total:{type:"string"},display_delivery_total:{type:"string"},fulfillment_status:{type:"string",nullable:!0},payment_status:{type:"string",nullable:!0},completed_at:{type:"string",nullable:!0},store_credit_total:{type:"string"},display_store_credit_total:{type:"string"},covered_by_store_credit:{type:"boolean"},discounts:{type:"array",items:{$ref:"#/components/schemas/Discount"}},items:{type:"array",items:{$ref:"#/components/schemas/LineItem"}},fulfillments:{type:"array",items:{$ref:"#/components/schemas/Fulfillment"}},payments:{type:"array",items:{$ref:"#/components/schemas/Payment"}},billing_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},shipping_address:{allOf:[{$ref:"#/components/schemas/Address"}],nullable:!0},gift_card:{allOf:[{$ref:"#/components/schemas/GiftCard"}],nullable:!0},market:{allOf:[{$ref:"#/components/schemas/Market"}],nullable:!0},status:{type:"string"},last_ip_address:{type:"string",nullable:!0},considered_risky:{type:"boolean"},confirmation_delivered:{type:"boolean"},store_owner_notification_delivered:{type:"boolean"},payment_total:{type:"string"},display_payment_total:{type:"string"},metadata:{type:"object"},canceled_at:{type:"string",nullable:!0},approved_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},preferred_stock_location_id:{type:"string",nullable:!0},tags:{type:"array",items:{type:"string"}},internal_note:{type:"string",nullable:!0},approver_id:{type:"string",nullable:!0},canceler_id:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0},customer_id:{type:"string",nullable:!0},channel:{$ref:"#/components/schemas/Channel"},preferred_stock_location:{$ref:"#/components/schemas/StockLocation"},payment_methods:{type:"array",items:{$ref:"#/components/schemas/PaymentMethod"}},customer:{$ref:"#/components/schemas/Customer"},approver:{$ref:"#/components/schemas/Customer"},canceler:{$ref:"#/components/schemas/Customer"},created_by:{$ref:"#/components/schemas/Customer"},adjustments:{type:"array",items:{$ref:"#/components/schemas/Adjustment"}},return_authorizations:{type:"array",items:{$ref:"#/components/schemas/ReturnAuthorization"}},reimbursements:{type:"array",items:{$ref:"#/components/schemas/Reimbursement"}}},required:["id","market_id","channel_id","number","email","customer_note","currency","locale","total_quantity","item_total","display_item_total","adjustment_total","display_adjustment_total","discount_total","display_discount_total","tax_total","display_tax_total","included_tax_total","display_included_tax_total","additional_tax_total","display_additional_tax_total","total","display_total","gift_card_total","display_gift_card_total","amount_due","display_amount_due","delivery_total","display_delivery_total","fulfillment_status","payment_status","completed_at","store_credit_total","display_store_credit_total","covered_by_store_credit","gift_card","market","status","last_ip_address","considered_risky","confirmation_delivered","store_owner_notification_delivered","payment_total","display_payment_total","metadata","canceled_at","approved_at","created_at","updated_at","preferred_stock_location_id","tags","internal_note","approver_id","canceler_id","created_by_id","customer_id"],"x-typelizer":!0},PaymentMethod:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},type:{type:"string"},session_required:{type:"boolean"},source_required:{type:"boolean"},metadata:{type:"object"},active:{type:"boolean"},auto_capture:{type:"boolean",nullable:!0},storefront_visible:{type:"boolean"},position:{type:"number"},created_at:{type:"string"},updated_at:{type:"string"},preferences:{type:"object"},preference_schema:{type:"object"}},required:["id","name","description","type","session_required","source_required","metadata","active","auto_capture","storefront_visible","position","created_at","updated_at","preferences","preference_schema"],"x-typelizer":!0},Payment:{type:"object",properties:{id:{type:"string"},payment_method_id:{type:"string"},response_code:{type:"string",nullable:!0},number:{type:"string"},amount:{type:"string"},display_amount:{type:"string"},status:{type:"string"},source_type:{type:"string",nullable:!0,enum:["credit_card","store_credit","payment_source"]},source_id:{type:"string",nullable:!0},source:{anyOf:[{$ref:"#/components/schemas/CreditCard"},{$ref:"#/components/schemas/StoreCredit"},{$ref:"#/components/schemas/PaymentSource"}],nullable:!0},payment_method:{$ref:"#/components/schemas/PaymentMethod"},metadata:{type:"object"},avs_response:{type:"string",nullable:!0},cvv_response_code:{type:"string",nullable:!0},cvv_response_message:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},captured_amount:{type:"string"},order_id:{type:"string",nullable:!0},order:{$ref:"#/components/schemas/Order"},refunds:{type:"array",items:{$ref:"#/components/schemas/Refund"}}},required:["id","payment_method_id","response_code","number","amount","display_amount","status","source_type","source_id","source","metadata","avs_response","cvv_response_code","cvv_response_message","created_at","updated_at","captured_amount","order_id"],"x-typelizer":!0},PaymentSource:{type:"object",properties:{id:{type:"string"},gateway_payment_profile_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","gateway_payment_profile_id","metadata","created_at","updated_at"],"x-typelizer":!0},PriceHistory:{type:"object",properties:{id:{type:"string"},amount:{type:"string"},amount_in_cents:{type:"number"},currency:{type:"string"},display_amount:{type:"string"},recorded_at:{type:"string"},variant_id:{type:"string"},price_id:{type:"string"},compare_at_amount:{type:"string",nullable:!0},created_at:{type:"string"}},required:["id","amount","amount_in_cents","currency","display_amount","recorded_at","variant_id","price_id","compare_at_amount","created_at"],"x-typelizer":!0},PriceList:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},status:{type:"string"},position:{type:"number"},match_policy:{type:"string"},starts_at:{type:"string",nullable:!0},ends_at:{type:"string",nullable:!0},deleted_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},currently_active:{type:"boolean"},products_count:{type:"number"},prices_count:{type:"number"},product_ids:{type:"array",items:{type:"string"}},price_rules:{type:"array",items:{$ref:"#/components/schemas/PriceRule"}}},required:["id","name","description","status","position","match_policy","starts_at","ends_at","deleted_at","created_at","updated_at","currently_active","products_count","prices_count","product_ids"],"x-typelizer":!0},PriceRule:{type:"object",properties:{id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},type:{type:"string"},price_list_id:{type:"string"},preferences:{type:"object"},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}},label:{type:"string"},description:{type:"string",nullable:!0},markets:{type:"array",items:{$ref:"#/components/schemas/Market"}},customer_groups:{type:"array",items:{$ref:"#/components/schemas/CustomerGroup"}},customers:{type:"array",items:{$ref:"#/components/schemas/Customer"}}},required:["id","created_at","updated_at","type","price_list_id","preferences","preference_schema","label","description"],"x-typelizer":!0},Price:{type:"object",properties:{id:{type:"string"},amount:{type:"string",nullable:!0},amount_in_cents:{type:"number",nullable:!0},compare_at_amount:{type:"string",nullable:!0},compare_at_amount_in_cents:{type:"number",nullable:!0},currency:{type:"string",nullable:!0},display_amount:{type:"string",nullable:!0},display_compare_at_amount:{type:"string",nullable:!0},price_list_id:{type:"string",nullable:!0},variant_id:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},variant:{$ref:"#/components/schemas/Variant"}},required:["id","amount","amount_in_cents","compare_at_amount","compare_at_amount_in_cents","currency","display_amount","display_compare_at_amount","price_list_id","variant_id","created_at","updated_at"],"x-typelizer":!0},ProductPublication:{type:"object",properties:{id:{type:"string"},published_at:{type:"string",nullable:!0},unpublished_at:{type:"string",nullable:!0},product_id:{type:"string"},channel_id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","published_at","unpublished_at","product_id","channel_id","created_at","updated_at"],"x-typelizer":!0},Product:{type:"object",properties:{id:{type:"string"},name:{type:"string"},slug:{type:"string"},meta_title:{type:"string",nullable:!0},meta_description:{type:"string",nullable:!0},meta_keywords:{type:"string",nullable:!0},variant_count:{type:"number"},available_on:{type:"string",nullable:!0},purchasable:{type:"boolean"},in_stock:{type:"boolean"},backorderable:{type:"boolean"},available:{type:"boolean"},description:{type:"string",nullable:!0},description_html:{type:"string",nullable:!0},default_variant_id:{type:"string"},thumbnail_url:{type:"string",nullable:!0},tags:{type:"array",items:{type:"string"}},price:{allOf:[{$ref:"#/components/schemas/Price"}],nullable:!0},original_price:{allOf:[{$ref:"#/components/schemas/Price"}],nullable:!0},primary_media:{$ref:"#/components/schemas/Media"},media:{type:"array",items:{$ref:"#/components/schemas/Media"}},variants:{type:"array",items:{$ref:"#/components/schemas/Variant"}},default_variant:{$ref:"#/components/schemas/Variant"},option_types:{type:"array",items:{$ref:"#/components/schemas/OptionType"}},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}},categories:{type:"array",items:{$ref:"#/components/schemas/Category"}},custom_fields:{type:"array",items:{$ref:"#/components/schemas/CustomField"}},prior_price:{allOf:[{$ref:"#/components/schemas/PriceHistory"}],nullable:!0},translations:{type:"object"},status:{type:"string"},metadata:{type:"object"},deleted_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},tax_category_id:{type:"string",nullable:!0},product_publications:{type:"array",items:{$ref:"#/components/schemas/ProductPublication"}},channels:{type:"array",items:{$ref:"#/components/schemas/Channel"}}},required:["id","name","slug","meta_title","meta_description","meta_keywords","variant_count","available_on","purchasable","in_stock","backorderable","available","description","description_html","default_variant_id","thumbnail_url","tags","price","original_price","status","metadata","deleted_at","created_at","updated_at","tax_category_id"],"x-typelizer":!0},PromotionAction:{type:"object",properties:{id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},type:{type:"string"},promotion_id:{type:"string"},preferences:{type:"object"},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}},label:{type:"string"},calculator:{allOf:[{$ref:"#/components/schemas/PromotionActionCalculator"}],nullable:!0},line_items:{type:"array",items:{$ref:"#/components/schemas/PromotionActionLineItem"},nullable:!0}},required:["id","created_at","updated_at","type","promotion_id","preferences","preference_schema","label","calculator","line_items"],"x-typelizer":!0},PromotionRule:{type:"object",properties:{id:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},type:{type:"string"},promotion_id:{type:"string"},preferences:{type:"object"},preference_schema:{type:"array",items:{$ref:"#/components/schemas/PreferenceField"}},label:{type:"string"},product_ids:{type:"array",items:{type:"string"},nullable:!0},category_ids:{type:"array",items:{type:"string"},nullable:!0},customer_ids:{type:"array",items:{type:"string"},nullable:!0},products:{type:"array",items:{$ref:"#/components/schemas/Product"}},categories:{type:"array",items:{$ref:"#/components/schemas/Category"}},customers:{type:"array",items:{$ref:"#/components/schemas/Customer"}},customer_groups:{type:"array",items:{$ref:"#/components/schemas/CustomerGroup"}},countries:{type:"array",items:{$ref:"#/components/schemas/Country"}}},required:["id","created_at","updated_at","type","promotion_id","preferences","preference_schema","label","product_ids","category_ids","customer_ids"],"x-typelizer":!0},Promotion:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string",nullable:!0},code:{type:"string",nullable:!0},starts_at:{type:"string",nullable:!0},expires_at:{type:"string",nullable:!0},usage_limit:{type:"number",nullable:!0},match_policy:{type:"string",enum:["all","any"]},path:{type:"string",nullable:!0},kind:{type:"string",enum:["coupon_code","automatic"]},multi_codes:{type:"boolean"},number_of_codes:{type:"number",nullable:!0},code_prefix:{type:"string",nullable:!0},promotion_category_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},action_ids:{type:"array",items:{type:"string"}},rule_ids:{type:"array",items:{type:"string"}}},required:["id","name","description","code","starts_at","expires_at","usage_limit","match_policy","path","kind","multi_codes","number_of_codes","code_prefix","promotion_category_id","metadata","created_at","updated_at","action_ids","rule_ids"],"x-typelizer":!0},Refund:{type:"object",properties:{id:{type:"string"},transaction_id:{type:"string",nullable:!0},amount:{type:"string",nullable:!0},payment_id:{type:"string",nullable:!0},refund_reason_id:{type:"string",nullable:!0},reimbursement_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},payment:{$ref:"#/components/schemas/Payment"},reimbursement:{$ref:"#/components/schemas/Reimbursement"}},required:["id","transaction_id","amount","payment_id","refund_reason_id","reimbursement_id","metadata","created_at","updated_at"],"x-typelizer":!0},Reimbursement:{type:"object",properties:{id:{type:"string"},number:{type:"string"},reimbursement_status:{type:"string",nullable:!0},total:{type:"string",nullable:!0},order_id:{type:"string",nullable:!0},customer_return_id:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},order:{$ref:"#/components/schemas/Order"}},required:["id","number","reimbursement_status","total","order_id","customer_return_id","created_at","updated_at"],"x-typelizer":!0},ReturnAuthorization:{type:"object",properties:{id:{type:"string"},number:{type:"string"},status:{type:"string"},order_id:{type:"string",nullable:!0},stock_location_id:{type:"string",nullable:!0},return_authorization_reason_id:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},order:{$ref:"#/components/schemas/Order"},stock_location:{$ref:"#/components/schemas/StockLocation"}},required:["id","number","status","order_id","stock_location_id","return_authorization_reason_id","created_at","updated_at"],"x-typelizer":!0},Role:{type:"object",properties:{id:{type:"string"},name:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","created_at","updated_at"],"x-typelizer":!0},State:{type:"object",properties:{abbr:{type:"string"},name:{type:"string"},created_at:{type:"object"},updated_at:{type:"object"}},required:["abbr","name","created_at","updated_at"],"x-typelizer":!0},StockItem:{type:"object",properties:{id:{type:"string"},count_on_hand:{type:"number"},backorderable:{type:"boolean"},stock_location_id:{type:"string",nullable:!0},variant_id:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},allocated_count:{type:"number"},available_count:{type:"number"},stock_location:{$ref:"#/components/schemas/StockLocation"},variant:{$ref:"#/components/schemas/Variant"}},required:["id","count_on_hand","backorderable","stock_location_id","variant_id","metadata","created_at","updated_at","allocated_count","available_count"],"x-typelizer":!0},StockLocation:{type:"object",properties:{id:{type:"string"},state_abbr:{type:"string",nullable:!0},name:{type:"string"},address1:{type:"string",nullable:!0},city:{type:"string",nullable:!0},zipcode:{type:"string",nullable:!0},country_iso:{type:"string",nullable:!0},country_name:{type:"string",nullable:!0},state_text:{type:"string",nullable:!0},admin_name:{type:"string",nullable:!0},address2:{type:"string",nullable:!0},state_name:{type:"string",nullable:!0},phone:{type:"string",nullable:!0},company:{type:"string",nullable:!0},active:{type:"boolean"},default:{type:"boolean"},backorderable_default:{type:"boolean"},propagate_all_variants:{type:"boolean"},kind:{type:"string"},pickup_enabled:{type:"boolean"},pickup_stock_policy:{type:"string"},pickup_ready_in_minutes:{type:"number",nullable:!0},pickup_instructions:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","state_abbr","name","address1","city","zipcode","country_iso","country_name","state_text","admin_name","address2","state_name","phone","company","active","default","backorderable_default","propagate_all_variants","kind","pickup_enabled","pickup_stock_policy","pickup_ready_in_minutes","pickup_instructions","created_at","updated_at"],"x-typelizer":!0},StockReservation:{type:"object",properties:{id:{type:"string"},stock_item_id:{type:"string"},line_item_id:{type:"string"},order_id:{type:"string"},variant_id:{type:"string",nullable:!0},stock_location_id:{type:"string",nullable:!0},quantity:{type:"number"},expires_at:{type:"string"},active:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","stock_item_id","line_item_id","order_id","variant_id","stock_location_id","quantity","expires_at","active","created_at","updated_at"],"x-typelizer":!0},StockTransfer:{type:"object",properties:{id:{type:"string"},number:{type:"string"},reference:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},source_location_id:{type:"string",nullable:!0},destination_location_id:{type:"string",nullable:!0},source_location:{$ref:"#/components/schemas/StockLocation"},destination_location:{$ref:"#/components/schemas/StockLocation"}},required:["id","number","reference","metadata","created_at","updated_at","source_location_id","destination_location_id"],"x-typelizer":!0},StoreCreditCategory:{type:"object",properties:{id:{type:"string"},name:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},non_expiring:{type:"boolean"}},required:["id","name","created_at","updated_at","non_expiring"],"x-typelizer":!0},StoreCredit:{type:"object",properties:{id:{type:"string"},amount:{type:"string"},amount_used:{type:"string"},amount_remaining:{type:"string"},display_amount:{type:"string"},display_amount_used:{type:"string"},display_amount_remaining:{type:"string"},currency:{type:"string"},memo:{type:"string",nullable:!0},metadata:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},customer_id:{type:"string",nullable:!0},created_by_id:{type:"string",nullable:!0},category_id:{type:"string",nullable:!0},category_name:{type:"string",nullable:!0}},required:["id","amount","amount_used","amount_remaining","display_amount","display_amount_used","display_amount_remaining","currency","memo","metadata","created_at","updated_at","customer_id","created_by_id","category_id","category_name"],"x-typelizer":!0},Store:{type:"object",properties:{id:{type:"string"},metadata:{type:"object"},name:{type:"string"},default_currency:{type:"string"},default_locale:{type:"string"},mail_from_address:{type:"string",nullable:!0},customer_support_email:{type:"string",nullable:!0},new_order_notifications_email:{type:"string",nullable:!0},preferred_send_consumer_transactional_emails:{type:"boolean"},preferred_admin_locale:{type:"string",nullable:!0},preferred_timezone:{type:"string"},preferred_weight_unit:{type:"string"},preferred_unit_system:{type:"string"},created_at:{type:"string"},updated_at:{type:"string"},url:{type:"string"},supported_currencies:{type:"array",items:{type:"string"}},supported_locales:{type:"array",items:{type:"string"}},available_locales:{type:"array",items:{type:"string"}},logo_url:{type:"string",nullable:!0},mailer_logo_url:{type:"string",nullable:!0}},required:["id","metadata","name","default_currency","default_locale","mail_from_address","customer_support_email","new_order_notifications_email","preferred_send_consumer_transactional_emails","preferred_admin_locale","preferred_timezone","preferred_weight_unit","preferred_unit_system","created_at","updated_at","url","supported_currencies","supported_locales","available_locales","logo_url","mailer_logo_url"],"x-typelizer":!0},TaxCategory:{type:"object",properties:{id:{type:"string"},name:{type:"string"},tax_code:{type:"string",nullable:!0},description:{type:"string",nullable:!0},is_default:{type:"boolean"},created_at:{type:"string"},updated_at:{type:"string"}},required:["id","name","tax_code","description","is_default","created_at","updated_at"],"x-typelizer":!0},Variant:{type:"object",properties:{id:{type:"string"},product_id:{type:"string"},sku:{type:"string",nullable:!0},options_text:{type:"string"},track_inventory:{type:"boolean"},media_count:{type:"number"},thumbnail_url:{type:"string",nullable:!0},purchasable:{type:"boolean"},in_stock:{type:"boolean"},backorderable:{type:"boolean"},weight:{type:"number",nullable:!0},height:{type:"number",nullable:!0},width:{type:"number",nullable:!0},depth:{type:"number",nullable:!0},price:{$ref:"#/components/schemas/Price"},original_price:{allOf:[{$ref:"#/components/schemas/Price"}],nullable:!0},primary_media:{$ref:"#/components/schemas/Media"},media:{type:"array",items:{$ref:"#/components/schemas/Media"}},option_values:{type:"array",items:{$ref:"#/components/schemas/OptionValue"}},custom_fields:{type:"array",items:{$ref:"#/components/schemas/CustomField"}},prior_price:{allOf:[{$ref:"#/components/schemas/PriceHistory"}],nullable:!0},metadata:{type:"object"},position:{type:"number"},cost_price:{type:"string",nullable:!0},cost_currency:{type:"string",nullable:!0},barcode:{type:"string",nullable:!0},weight_unit:{type:"string",nullable:!0},dimensions_unit:{type:"string",nullable:!0},deleted_at:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},tax_category_id:{type:"string",nullable:!0},available_stock:{type:"number",nullable:!0},reserved_quantity:{type:"number"},total_on_hand:{type:"number",nullable:!0},product_name:{type:"string"},prices:{type:"array",items:{$ref:"#/components/schemas/Price"}},stock_items:{type:"array",items:{$ref:"#/components/schemas/StockItem"}}},required:["id","product_id","sku","options_text","track_inventory","media_count","thumbnail_url","purchasable","in_stock","backorderable","weight","height","width","depth","price","original_price","option_values","metadata","position","cost_price","cost_currency","barcode","weight_unit","dimensions_unit","deleted_at","created_at","updated_at","tax_category_id","available_stock","reserved_quantity","total_on_hand","product_name"],"x-typelizer":!0},WebhookDelivery:{type:"object",properties:{id:{type:"string"},event_name:{type:"string"},event_id:{type:"string",nullable:!0},response_code:{type:"number",nullable:!0},execution_time:{type:"number",nullable:!0},error_type:{type:"string",nullable:!0},request_errors:{type:"string",nullable:!0},response_body:{type:"string",nullable:!0},success:{type:"boolean",nullable:!0},payload:{type:"object"},created_at:{type:"string"},updated_at:{type:"string"},delivered_at:{type:"string",nullable:!0},webhook_endpoint_id:{type:"string"},webhook_endpoint_url:{type:"string"}},required:["id","event_name","event_id","response_code","execution_time","error_type","request_errors","response_body","success","payload","created_at","updated_at","delivered_at","webhook_endpoint_id","webhook_endpoint_url"],"x-typelizer":!0},WebhookEndpoint:{type:"object",properties:{id:{type:"string"},name:{type:"string",nullable:!0},url:{type:"string"},active:{type:"boolean"},subscriptions:{type:"array",items:{type:"string"}},disabled_reason:{type:"string",nullable:!0},created_at:{type:"string"},updated_at:{type:"string"},disabled_at:{type:"string",nullable:!0},secret_key:{type:"string",nullable:!0},last_delivery_at:{type:"string",nullable:!0},recent_delivery_count:{type:"number"},recent_failure_count:{type:"number"},total_delivery_count:{type:"number"},successful_delivery_count:{type:"number"},failed_delivery_count:{type:"number"}},required:["id","name","url","active","subscriptions","disabled_reason","created_at","updated_at","disabled_at","secret_key","last_delivery_at","recent_delivery_count","recent_failure_count","total_delivery_count","successful_delivery_count","failed_delivery_count"],"x-typelizer":!0}}}};var Fl=new Set(["get","post","put","patch","delete"]);function Gi(){return Ll}function gk(e){let t=e.description?.match(/\*\*Required scope:\*\* (.+?) \(for API-key authentication\)\./);return t?t[1].replaceAll("`",""):"\u2014"}function Bl(e,t={}){let r=[];for(let[i,n]of Object.entries(e.paths)){let s=i.replace("/api/v3/admin","")||"/";for(let[o,a]of Object.entries(n)){if(!Fl.has(o))continue;if(t.resource){let d=s.split("/")[1]??"";if(d!==t.resource&&!d.startsWith(t.resource))continue}let c=a.summary??"";t.search&&!`${o} ${s} ${c}`.toLowerCase().includes(t.search.toLowerCase())||r.push({method:o.toUpperCase(),path:s,scope:gk(a),summary:c})}}return r}function Ul(e,t){let r=t.trim().split(/\s+/),i=r.length>1?r[0].toLowerCase():void 0,n=r.length>1?r[1]:r[0],s=lr(n),o=Ml(e,i,a=>a===s);return o.length>0?o:Ml(e,i,a=>_k(a,s))}function Ml(e,t,r){let i=[];for(let[n,s]of Object.entries(e.paths)){let o=n.replace("/api/v3/admin","")||"/";if(r(o))for(let[a,c]of Object.entries(s))Fl.has(a)&&(t&&a!==t||i.push({method:a.toUpperCase(),path:o,summary:c.summary,description:c.description,parameters:Dt(c.parameters,e),requestBody:Dt(c.requestBody,e),responses:Dt(c.responses,e)}))}return i}function _k(e,t){if(e===t)return!0;let r=e.split("/"),i=t.split("/");return r.length!==i.length?!1:r.every((n,s)=>n.startsWith("{")&&n.endsWith("}")?i[s].length>0:n===i[s])}var bk=8;function Dt(e,t,r=[]){if(Array.isArray(e))return e.map(o=>Dt(o,t,r));if(!e||typeof e!="object")return e;let i=e,n=i.$ref;if(typeof n=="string"){let o=n.replace("#/components/schemas/","");return r.includes(o)||r.length>=bk||!(o in t.components.schemas)?{$ref:n}:Dt(t.components.schemas[o],t,[...r,o])}let s={};for(let[o,a]of Object.entries(i))s[o]=Dt(a,t,r);return s}function xk(e,t){return[...t,e]}function Vl(e){return e.option("--profile <name>","use a saved profile (see `spree auth`)").option("--base-url <url>","store URL (overrides profile/env/project)").option("--api-key <key>","secret API key (prefer SPREE_API_KEY \u2014 flags leak into shell history)").option("--store-id <id>","X-Spree-Store-Id for hosts serving multiple stores")}function Wl(){return new ta("--format <format>","output format").choices(["json","table"]).default("json")}function Nl(e){return Vl(e).addOption(Wl())}async function Gl(e){let t=await dr({baseUrl:e.baseUrl,apiKey:e.apiKey,profile:e.profile});return{client:Mt({baseUrl:t.baseUrl,secretKey:t.apiKey,...e.storeId?{storeId:e.storeId}:{}}),credentials:t}}function Hl(e){let t=e.command("api").description("Call the Admin API directly (generic get/post/patch/delete)");t.addHelpText("after",["","Examples:"," spree api get /products -q status_eq=active --limit 10",` spree api post /products -d '{"name":"Classic Tee","prices":[{"currency":"USD","amount":"29.99"}]}'`," spree api get /orders/ord_x8k2J9aQ --expand items,payments","","Discover the surface (offline, no server needed):"," spree api endpoints --search <term> # find endpoints + required scopes",' spree api schema "POST /orders" # request/response schema for one operation'," spree completion zsh # tab-completion for paths, filters, scopes"].join(`
|
|
270
|
+
`)),Nl(t.command("get <path>").description("GET an Admin API path, e.g. `spree api get /products -q status_eq=active`").option("-q, --query <expr>","Ransack predicate key=value (repeatable)",xk,[]).option("--sort <fields>","sort, e.g. -created_at").option("--page <n>","page number").option("--limit <n>","page size (max 100)").option("--expand <relations>","expand relations, e.g. variants,variants.prices").option("--fields <fields>","sparse fields, e.g. id,name")).action(async(r,i)=>{let n;try{let s=jl(i),{client:o,credentials:a}=await Gl(i);n=a.baseUrl;let c=await o.request("GET",lr(r),{params:s});ur(c,i.format)}catch(s){lt(s,{baseUrl:n})}});for(let r of["post","patch","delete"])Nl(t.command(`${r} <path>`).description(`${r.toUpperCase()} an Admin API path`).option("-d, --data <json>","request body: inline JSON, @file, or '-' for stdin")).action(async(i,n)=>{let s;try{let o=await Sa(n.data),{client:a,credentials:c}=await Gl(n);s=c.baseUrl;let d=await a.request(r.toUpperCase(),lr(i),{...o===Un?{}:{body:o}});ur(d,n.format)}catch(o){lt(o,{baseUrl:s})}});t.command("endpoints").description("List Admin API endpoints with their required scopes").option("--resource <name>","filter by first path segment, e.g. orders").option("--search <term>","filter by method, path, or summary").addOption(Wl()).action(r=>{let i=Bl(Gi(),{resource:r.resource,search:r.search});if(i.length===0){process.stderr.write(`No endpoints match.
|
|
271
|
+
`),process.exitCode=1;return}if(r.format==="table"){(0,zl.printTable)(i.map(n=>({Method:n.method,Path:n.path,Scope:n.scope,Summary:n.summary})));return}ur(i,"json")}),t.command("schema <operation>").description('Show the request/response schema for an operation, e.g. `spree api schema "POST /products"`').action(r=>{let i=Ul(Gi(),r);if(i.length===0){process.stderr.write(`No operation matches "${r}". Try \`spree api endpoints --search ${r.split(/\s+/).pop()}\`.
|
|
272
|
+
`),process.exitCode=1;return}let n=/\s/.test(r.trim());ur(n&&i.length===1?i[0]:i,"json")}),Vl(t.command("status").description("Show resolved credentials, server reachability, and the bundled spec version")).action(async r=>{try{let i=await dr({baseUrl:r.baseUrl,apiKey:r.apiKey,profile:r.profile},{allowMint:!1}),n=await mr(i.baseUrl,i.apiKey),s=Gi(),o=Ni(n),a=[`${xe.default.bold("Base URL:")} ${i.baseUrl}`,`${xe.default.bold("Credentials:")} ${i.source}${i.profileName?` (${i.profileName})`:""}, key ${i.tokenPrefix}${xe.default.dim("\u2026")}`],c=n.status==="unreachable"||n.status==="unauthorized"?null:await Dl(i.baseUrl,i.apiKey);c!==null?a.push(`${xe.default.bold("Scopes:")} ${c.length?c.join(", "):xe.default.dim("(none)")}`):i.scopes?.length&&a.push(`${xe.default.bold("Scopes:")} ${i.scopes.join(", ")} ${xe.default.dim("(local snapshot from mint time \u2014 may be stale)")}`),a.push(`${xe.default.bold("Server:")} ${o}`),a.push(`${xe.default.bold("Bundled spec:")} ${s.info?.version??"unknown"} ${xe.default.dim("(spree api endpoints/schema reflect this snapshot, not the live server)")}`),process.stdout.write(`${a.join(`
|
|
273
273
|
`)}
|
|
274
|
-
`),Ui(n)&&(process.exitCode=1)}catch(i){
|
|
275
|
-
`),p=!1;for(let u=0;u<d.length;u++){let l=d[u];if(i+=l,p)p=!1;else if(p=l>="\uD800"&&l<="\uDBFF",p)continue;if(l===
|
|
276
|
-
`){s&&(i+=
|
|
277
|
-
`&&(n&&
|
|
278
|
-
`)}var te=
|
|
274
|
+
`),Ui(n)&&(process.exitCode=1)}catch(i){lt(i,{baseUrl:r.baseUrl})}})}import{styleText as Po}from"util";import{stdout as Io,stdin as dm}from"process";import*as Qe from"readline";import Dk from"readline";var Kl=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let r=0;for(e.lastIndex=0;e.test(t);)r+=1;return t.length-r}})(),Yl=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,Jl=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 wk=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,kk=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Xl=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,qk=/\t{1,1000}/y,Ql=new RegExp("[\\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"),vk=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Sk=new RegExp("\\p{M}+","gu"),$k={limit:1/0,ellipsis:""},Zl=(e,t={},r={})=>{let i=t.limit??1/0,n=t.ellipsis??"",s=t?.ellipsisWidth??(n?Zl(n,$k,r).width:0),o=0,a=r.controlWidth??0,c=r.tabWidth??8,d=r.emojiWidth??2,p=2,u=r.regularWidth??1,l=r.wideWidth??p,m=[[vk,u],[wk,o],[kk,a],[qk,c],[Ql,d],[Xl,l]],h=0,f=0,x=e.length,_=0,v=!1,A=x,E=Math.max(0,i-s),w=0,L=0,O=0,R=0;e:for(;;){if(L>w||f>=x&&f>h){let F=e.slice(w,L)||e.slice(h,f);_=0;for(let N of F.replaceAll(Sk,"")){let q=N.codePointAt(0)||0;if(Yl(q)?R=p:Jl(q)?R=l:R=u,O+R>E&&(A=Math.min(A,Math.max(w,h)+_)),O+R>i){v=!0;break e}_+=N.length,O+=R}w=L=0}if(f>=x)break e;for(let F=0,N=m.length;F<N;F++){let[q,Oe]=m[F];if(q.lastIndex=f,q.test(e)){if(_=q===Xl?Kl(e.slice(f,q.lastIndex)):q===Ql?1:q.lastIndex-f,R=_*Oe,O+R>E&&(A=Math.min(A,f+Math.floor((E-O)/Oe))),O+R>i){v=!0;break e}O+=R,w=h,L=f,f=h=q.lastIndex;continue e}}f+=1}return{width:v?E:O,index:v?A:x,truncated:v,ellipsed:v&&i>=s}},em=Zl;var Ak={limit:1/0,ellipsis:"",ellipsisWidth:0},Ck=(e,t={})=>em(e,Ak,t).width,ie=Ck;var zi="\x1B",sm="\x9B",Ek=39,Ao="\x07",om="[",Tk="]",am="m",Co=`${Tk}8;;`,tm=new RegExp(`(?:\\${om}(?<code>\\d+)m|\\${Co}(?<uri>.*)${Ao})`,"y"),rm=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},im=e=>`${zi}${om}${e}${am}`,nm=e=>`${zi}${Co}${e}${Ao}`,$o=(e,t,r)=>{let i=t[Symbol.iterator](),n=!1,s=!1,o=e.at(-1),a=o===void 0?0:ie(o),c=i.next(),d=i.next(),p=0;for(;!c.done;){let u=c.value,l=ie(u);a+l<=r?e[e.length-1]+=u:(e.push(u),a=0),(u===zi||u===sm)&&(n=!0,s=t.startsWith(Co,p+1)),n?s?u===Ao&&(n=!1,s=!1):u===am&&(n=!1):(a+=l,a===r&&!d.done&&(e.push(""),a=0)),c=d,d=i.next(),p+=u.length}o=e.at(-1),!a&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},Pk=e=>{let t=e.split(" "),r=t.length;for(;r&&!ie(t[r-1]);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Ok=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let i="",n,s,o=e.split(" "),a=[""],c=0;for(let u=0;u<o.length;u++){let l=o[u];if(r.trim!==!1){let h=a.at(-1)??"",f=h.trimStart();h.length!==f.length&&(a[a.length-1]=f,c=ie(f))}u!==0&&(c>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),c=0),(c||r.trim===!1)&&(a[a.length-1]+=" ",c++));let m=ie(l);if(r.hard&&m>t){let h=t-c,f=1+Math.floor((m-h-1)/t);Math.floor((m-1)/t)<f&&a.push(""),$o(a,l,t),c=ie(a.at(-1)??"");continue}if(c+m>t&&c&&m){if(r.wordWrap===!1&&c<t){$o(a,l,t),c=ie(a.at(-1)??"");continue}a.push(""),c=0}if(c+m>t&&r.wordWrap===!1){$o(a,l,t),c=ie(a.at(-1)??"");continue}a[a.length-1]+=l,c+=m}r.trim!==!1&&(a=a.map(u=>Pk(u)));let d=a.join(`
|
|
275
|
+
`),p=!1;for(let u=0;u<d.length;u++){let l=d[u];if(i+=l,p)p=!1;else if(p=l>="\uD800"&&l<="\uDBFF",p)continue;if(l===zi||l===sm){tm.lastIndex=u+1;let h=tm.exec(d)?.groups;if(h?.code!==void 0){let f=Number.parseFloat(h.code);n=f===Ek?void 0:f}else h?.uri!==void 0&&(s=h.uri.length===0?void 0:h.uri)}if(d[u+1]===`
|
|
276
|
+
`){s&&(i+=nm(""));let m=n?rm(n):void 0;n&&m&&(i+=im(m))}else l===`
|
|
277
|
+
`&&(n&&rm(n)&&(i+=im(n)),s&&(i+=nm(s)))}return i},Ik=/\r?\n/;function Ce(e,t,r){return String(e).normalize().split(Ik).map(i=>Ok(i,t,r)).join(`
|
|
278
|
+
`)}var te=U(To(),1);import{ReadStream as pm}from"tty";function Wi(e,t,r){if(!r.some(o=>!o.disabled))return e;let i=e+t,n=Math.max(r.length-1,0),s=i<0?n:i>n?0:i;return r[s].disabled?Wi(s,t<0?-1:1,r):s}var Lk=["up","down","left","right","space","enter","cancel"],Mk=["January","February","March","April","May","June","July","August","September","October","November","December"],Z={actions:new Set(Lk),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:[...Mk],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 Ro(e,t){if(typeof e=="string")return Z.aliases.get(e)===t;for(let r of e)if(r!==void 0&&Ro(r,t))return!0;return!1}function Fk(e,t){if(e===t)return;let r=e.split(`
|
|
279
279
|
`),i=t.split(`
|
|
280
|
-
`),n=Math.max(r.length,i.length),s=[];for(let o=0;o<n;o++)r[o]!==i[o]&&s.push(o);return{lines:s,numLinesBefore:r.length,numLinesAfter:i.length,numLines:n}}var
|
|
280
|
+
`),n=Math.max(r.length,i.length),s=[];for(let o=0;o<n;o++)r[o]!==i[o]&&s.push(o);return{lines:s,numLinesBefore:r.length,numLinesAfter:i.length,numLines:n}}var Bk=globalThis.process.platform.startsWith("win"),Oo=Symbol("clack:cancel");function Y(e){return e===Oo}function Vi(e,t){let r=e;r.isTTY&&r.setRawMode(t)}function um({input:e=dm,output:t=Io,overwrite:r=!0,hideCursor:i=!0}={}){let n=Qe.createInterface({input:e,output:t,prompt:"",tabSize:1});Qe.emitKeypressEvents(e,n),e instanceof pm&&e.isTTY&&e.setRawMode(!0);let s=(o,{name:a,sequence:c})=>{let d=String(o);if(Ro([d,a,c],"cancel")){i&&t.write(te.cursor.show),process.exit(0);return}if(!r)return;Qe.moveCursor(t,a==="return"?0:-1,a==="return"?-1:0,()=>{Qe.clearLine(t,1,()=>{e.once("keypress",s)})})};return i&&t.write(te.cursor.hide),e.once("keypress",s),()=>{e.off("keypress",s),i&&t.write(te.cursor.show),e instanceof pm&&e.isTTY&&!Bk&&e.setRawMode(!1),n.terminal=!1,n.close()}}var hr=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,jo=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function yr(e,t,r,i=r,n){let s=hr(e??Io);return Ce(t,s-r.length,{hard:!0,trim:!1}).split(`
|
|
281
281
|
`).map((o,a)=>{let c=n?n(o,a):o;return`${a===0?i:r}${c}`}).join(`
|
|
282
|
-
`)}var
|
|
283
|
-
`),
|
|
284
|
-
`).length-1;this.output.write(te.cursor.move(-999,e*-1))}render(){let e=Ce(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(te.cursor.hide);else{let t=
|
|
282
|
+
`)}var Xi=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:r=dm,output:i=Io,render:n,signal:s,...o}=e;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=n.bind(this),this._track=t,this._abortSignal=s,this.input=r,this.output=i}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let r=this._subscribers.get(e)??[];r.push(t),this._subscribers.set(e,r)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let r=this._subscribers.get(e)??[],i=[];for(let n of r)n.cb(...t),n.once&&i.push(()=>r.splice(r.indexOf(n),1));for(let n of i)n()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(Oo);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=Dk.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),Vi(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(te.cursor.show),this.output.off("resize",this.render),Vi(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(te.cursor.show),this.output.off("resize",this.render),Vi(this.input,!1),e(Oo)})})}_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&&Z.aliases.has(t.name)&&this.emit("cursor",Z.aliases.get(t.name)),Z.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 r=this.opts.validate(this.value);r&&(this.error=r instanceof Error?r.message:r,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}Ro([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(`
|
|
283
|
+
`),Vi(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=Ce(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
|
|
284
|
+
`).length-1;this.output.write(te.cursor.move(-999,e*-1))}render(){let e=Ce(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(te.cursor.hide);else{let t=Fk(this._prevFrame,e),r=jo(this.output);if(this.restoreCursor(),t){let i=Math.max(0,t.numLinesAfter-r),n=Math.max(0,t.numLinesBefore-r),s=t.lines.find(o=>o>=i);if(s===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(te.cursor.move(0,s-n)),this.output.write(te.erase.lines(1));let o=e.split(`
|
|
285
285
|
`);this.output.write(o[s]),this._prevFrame=e,this.output.write(te.cursor.move(0,o.length-s-1));return}else if(t.lines.length>1){if(i<n)s=i;else{let a=s-n;a>0&&this.output.write(te.cursor.move(0,a))}this.output.write(te.erase.down());let o=e.split(`
|
|
286
286
|
`).slice(s);this.output.write(o.join(`
|
|
287
|
-
`)),this._prevFrame=e;return}}this.output.write(te.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};var
|
|
288
|
-
`);x.push(L),_+=L.length}if(_>p){let w=0,L=0,O=_,R=e-v,F=(N,
|
|
287
|
+
`)),this._prevFrame=e;return}}this.output.write(te.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};var Hi=class extends Xi{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",r=>{this.output.write(te.cursor.move(0,-1)),this.value=r,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};var Ki=class extends Xi{_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}${Po(["inverse","hidden"],"_")}`;let r=this.masked,i=r.slice(0,this.cursor),n=r.slice(this.cursor);return`${i}${Po("inverse",n[0])}${n.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...r}){super(r),this._mask=t??"\u2022",this.on("userInput",i=>{this._setValue(i)})}},Yi=class extends Xi{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 r=this.options.findIndex(({value:n})=>n===t.initialValue),i=r===-1?0:r;this.cursor=this.options[i].disabled?Wi(i,1,this.options):i,this.changeValue(),this.on("cursor",n=>{switch(n){case"left":case"up":this.cursor=Wi(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Wi(this.cursor,1,this.options);break}this.changeValue()})}};var Ji=class extends Xi{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let r=t.slice(0,this.cursor),[i,...n]=t.slice(this.cursor);return`${r}${Po("inverse",i)}${n.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",r=>{this._setValue(r)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}};import{styleText as y,stripVTControlCharacters as vD}from"util";import he from"process";var fr=U(To(),1);import{existsSync as ED,lstatSync as TD,readdirSync as PD}from"fs";import{dirname as ID,join as RD}from"path";function Uk(){return he.platform!=="win32"?he.env.TERM!=="linux":!!he.env.CI||!!he.env.WT_SESSION||!!he.env.TERMINUS_SUBLIME||he.env.ConEmuTask==="{cmd::Cmder}"||he.env.TERM_PROGRAM==="Terminus-Sublime"||he.env.TERM_PROGRAM==="vscode"||he.env.TERM==="xterm-256color"||he.env.TERM==="alacritty"||he.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Do=Uk(),Nk=()=>process.env.CI==="true";var j=(e,t)=>Do?e:t,Gk=j("\u25C6","*"),mm=j("\u25A0","x"),hm=j("\u25B2","x"),en=j("\u25C7","o"),jD=j("\u250C","T"),$=j("\u2502","|"),Ze=j("\u2514","\u2014"),DD=j("\u2510","T"),LD=j("\u2518","\u2014"),Lo=j("\u25CF",">"),Zi=j("\u25CB"," "),MD=j("\u25FB","[\u2022]"),FD=j("\u25FC","[+]"),BD=j("\u25FB","[ ]"),zk=j("\u25AA","\u2022"),lm=j("\u2500","-"),Vk=j("\u256E","+"),Wk=j("\u251C","+"),Hk=j("\u256F","+"),Kk=j("\u2570","+"),UD=j("\u256D","+"),Yk=j("\u25CF","\u2022"),Jk=j("\u25C6","*"),Xk=j("\u25B2","!"),Qk=j("\u25A0","x"),tn=e=>{switch(e){case"initial":case"active":return y("cyan",Gk);case"cancel":return y("red",mm);case"error":return y("yellow",hm);case"submit":return y("green",en)}},Zk=e=>{switch(e){case"initial":case"active":return y("cyan",$);case"cancel":return y("red",$);case"error":return y("yellow",$);case"submit":return y("green",$)}},eq=(e,t,r,i,n)=>{let s=t,o=0;for(let a=r;a<i;a++){let c=e[a];if(s=s-c.length,o++,s<=n)break}return{lineCount:s,removals:o}},tq=({cursor:e,options:t,style:r,output:i=process.stdout,maxItems:n=Number.POSITIVE_INFINITY,columnPadding:s=0,rowPadding:o=4})=>{let a=hr(i)-s,c=jo(i),d=y("dim","..."),p=Math.max(c-o,0),u=Math.max(Math.min(n,p),5),l=0;e>=u-3&&(l=Math.max(Math.min(e-u+3,t.length-u),0));let m=u<t.length&&l>0,h=u<t.length&&l+u<t.length,f=Math.min(l+u,t.length),x=[],_=0;m&&_++,h&&_++;let v=l+(m?1:0),A=f-(h?1:0);for(let w=v;w<A;w++){let L=Ce(r(t[w],w===e),a,{hard:!0,trim:!1}).split(`
|
|
288
|
+
`);x.push(L),_+=L.length}if(_>p){let w=0,L=0,O=_,R=e-v,F=(N,q)=>eq(x,O,N,q,p);m?({lineCount:O,removals:w}=F(0,R),O>p&&({lineCount:O,removals:L}=F(R+1,x.length))):({lineCount:O,removals:L}=F(R+1,x.length),O>p&&({lineCount:O,removals:w}=F(0,R))),w>0&&(m=!0,x.splice(0,w)),L>0&&(h=!0,x.splice(x.length-L,L))}let E=[];m&&E.push(d);for(let w of x)for(let L of w)E.push(L);return h&&E.push(d),E};var mt=e=>{let t=e.active??"Yes",r=e.inactive??"No";return new Hi({active:t,inactive:r,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let i=e.withGuide??Z.withGuide,n=`${tn(this.state)} `,s=i?`${y("gray",$)} `:"",o=yr(e.output,e.message,s,n),a=`${i?`${y("gray",$)}
|
|
289
289
|
`:""}${o}
|
|
290
290
|
`,c=this.value?t:r;switch(this.state){case"submit":{let d=i?`${y("gray",$)} `:"";return`${a}${d}${y("dim",c)}`}case"cancel":{let d=i?`${y("gray",$)} `:"";return`${a}${d}${y(["strikethrough","dim"],c)}${i?`
|
|
291
|
-
${y("gray",$)}`:""}`}default:{let d=i?`${y("cyan",$)} `:"",p=i?y("cyan",
|
|
291
|
+
${y("gray",$)}`:""}`}default:{let d=i?`${y("cyan",$)} `:"",p=i?y("cyan",Ze):"";return`${a}${d}${this.value?`${y("green",Lo)} ${t}`:`${y("dim",Zi)} ${y("dim",t)}`}${e.vertical?i?`
|
|
292
292
|
${y("cyan",$)} `:`
|
|
293
|
-
`:` ${y("dim","/")} `}${this.value?`${y("dim",
|
|
293
|
+
`:` ${y("dim","/")} `}${this.value?`${y("dim",Zi)} ${y("dim",r)}`:`${y("green",Lo)} ${r}`}
|
|
294
294
|
${p}
|
|
295
295
|
`}}}}).prompt()};var P={message:(e=[],{symbol:t=y("gray",$),secondarySymbol:r=y("gray",$),output:i=process.stdout,spacing:n=1,withGuide:s}={})=>{let o=[],a=s??Z.withGuide,c=a?r:"",d=a?`${t} `:"",p=a?`${r} `:"";for(let l=0;l<n;l++)o.push(c);let u=Array.isArray(e)?e:e.split(`
|
|
296
296
|
`);if(u.length>0){let[l,...m]=u;l.length>0?o.push(`${d}${l}`):o.push(a?t:"");for(let h of m)h.length>0?o.push(`${p}${h}`):o.push(a?r:"")}i.write(`${o.join(`
|
|
297
297
|
`)}
|
|
298
|
-
`)},info:(e,t)=>{P.message(e,{...t,symbol:y("blue",
|
|
298
|
+
`)},info:(e,t)=>{P.message(e,{...t,symbol:y("blue",Yk)})},success:(e,t)=>{P.message(e,{...t,symbol:y("green",Jk)})},step:(e,t)=>{P.message(e,{...t,symbol:y("green",en)})},warn:(e,t)=>{P.message(e,{...t,symbol:y("yellow",Xk)})},warning:(e,t)=>{P.warn(e,t)},error:(e,t)=>{P.message(e,{...t,symbol:y("red",Qk)})}},G=(e="",t)=>{let r=t?.output??process.stdout,i=t?.withGuide??Z.withGuide?`${y("gray",Ze)} `:"";r.write(`${i}${y("red",e)}
|
|
299
299
|
|
|
300
|
-
`)};var
|
|
301
|
-
${y("gray",
|
|
300
|
+
`)};var ym=(e="",t)=>{let r=t?.output??process.stdout,i=t?.withGuide??Z.withGuide?`${y("gray",$)}
|
|
301
|
+
${y("gray",Ze)} `:"";r.write(`${i}${e}
|
|
302
302
|
|
|
303
|
-
`)};var
|
|
304
|
-
`),s=n.reduce((c,d)=>Math.max(ie(d),c),0),o=n.map(r).reduce((c,d)=>Math.max(ie(d),c),0),a=t-(o-s);return Ce(e,a,i)},ee=(e="",t="",r)=>{let i=r?.output??he.stdout,n=r?.withGuide??Z.withGuide,s=r?.format??
|
|
303
|
+
`)};var rq=e=>y("dim",e),iq=(e,t,r)=>{let i={hard:!0,trim:!1},n=Ce(e,t,i).split(`
|
|
304
|
+
`),s=n.reduce((c,d)=>Math.max(ie(d),c),0),o=n.map(r).reduce((c,d)=>Math.max(ie(d),c),0),a=t-(o-s);return Ce(e,a,i)},ee=(e="",t="",r)=>{let i=r?.output??he.stdout,n=r?.withGuide??Z.withGuide,s=r?.format??rq,o=["",...iq(e,hr(i)-6,s).split(`
|
|
305
305
|
`).map(s),""],a=ie(t),c=Math.max(o.reduce((l,m)=>{let h=ie(m);return h>l?h:l},0),a)+2,d=o.map(l=>`${y("gray",$)} ${l}${" ".repeat(c-ie(l))}${y("gray",$)}`).join(`
|
|
306
306
|
`),p=n?`${y("gray",$)}
|
|
307
|
-
`:"",u=n?
|
|
307
|
+
`:"",u=n?Wk:Kk;i.write(`${p}${y("green",en)} ${y("reset",t)} ${y("gray",lm.repeat(Math.max(c-a-1,1))+Vk)}
|
|
308
308
|
${d}
|
|
309
|
-
${y("gray",u+
|
|
310
|
-
`)},
|
|
311
|
-
`:""}${
|
|
312
|
-
`,i=this.userInputWithCursor,n=this.masked;switch(this.state){case"error":{let s=t?`${y("yellow",$)} `:"",o=t?`${y("yellow",
|
|
309
|
+
${y("gray",u+lm.repeat(c+2)+Hk)}
|
|
310
|
+
`)},rn=e=>new Ki({validate:e.validate,mask:e.mask??zk,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??Z.withGuide,r=`${t?`${y("gray",$)}
|
|
311
|
+
`:""}${tn(this.state)} ${e.message}
|
|
312
|
+
`,i=this.userInputWithCursor,n=this.masked;switch(this.state){case"error":{let s=t?`${y("yellow",$)} `:"",o=t?`${y("yellow",Ze)} `:"",a=n??"";return e.clearOnError&&this.clear(),`${r.trim()}
|
|
313
313
|
${s}${a}
|
|
314
314
|
${o}${y("yellow",this.error)}
|
|
315
315
|
`}case"submit":{let s=t?`${y("gray",$)} `:"",o=n?y("dim",n):"";return`${r}${s}${o}`}case"cancel":{let s=t?`${y("gray",$)} `:"",o=n?y(["strikethrough","dim"],n):"";return`${r}${s}${o}${n&&t?`
|
|
316
|
-
${y("gray",$)}`:""}`}default:{let s=t?`${y("cyan",$)} `:"",o=t?y("cyan",
|
|
316
|
+
${y("gray",$)}`:""}`}default:{let s=t?`${y("cyan",$)} `:"",o=t?y("cyan",Ze):"";return`${r}${s}${i}
|
|
317
317
|
${o}
|
|
318
|
-
`}}}}).prompt();var
|
|
319
|
-
`);let
|
|
320
|
-
`);
|
|
321
|
-
`);let ne=0,Re=0;L(),u=setInterval(()=>{if(d&&h===f)return;R(),f=h;let je=v(s[ne]),
|
|
318
|
+
`}}}}).prompt();var nq=e=>y("magenta",e),z=({indicator:e="dots",onCancel:t,output:r=process.stdout,cancelMessage:i,errorMessage:n,frames:s=Do?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],delay:o=Do?80:120,signal:a,...c}={})=>{let d=Nk(),p,u,l=!1,m=!1,h="",f,x=performance.now(),_=hr(r),v=c?.styleFrame??nq,A=B=>{let ne=B>1?n??Z.messages.error:i??Z.messages.cancel;m=B===1,l&&(Ie(ne,B),m&&typeof t=="function"&&t())},E=()=>A(2),w=()=>A(1),L=()=>{process.on("uncaughtExceptionMonitor",E),process.on("unhandledRejection",E),process.on("SIGINT",w),process.on("SIGTERM",w),process.on("exit",A),a&&a.addEventListener("abort",w)},O=()=>{process.removeListener("uncaughtExceptionMonitor",E),process.removeListener("unhandledRejection",E),process.removeListener("SIGINT",w),process.removeListener("SIGTERM",w),process.removeListener("exit",A),a&&a.removeEventListener("abort",w)},R=()=>{if(f===void 0)return;d&&r.write(`
|
|
319
|
+
`);let B=Ce(f,_,{hard:!0,trim:!1}).split(`
|
|
320
|
+
`);B.length>1&&r.write(fr.cursor.up(B.length-1)),r.write(fr.cursor.to(0)),r.write(fr.erase.down())},F=B=>B.replace(/\.+$/,""),N=B=>{let ne=(performance.now()-B)/1e3,Re=Math.floor(ne/60),je=Math.floor(ne%60);return Re>0?`[${Re}m ${je}s]`:`[${je}s]`},q=c.withGuide??Z.withGuide,Oe=(B="")=>{l=!0,p=um({output:r}),h=F(B),x=performance.now(),q&&r.write(`${y("gray",$)}
|
|
321
|
+
`);let ne=0,Re=0;L(),u=setInterval(()=>{if(d&&h===f)return;R(),f=h;let je=v(s[ne]),_r;if(d)_r=`${je} ${h}...`;else if(e==="timer")_r=`${je} ${h} ${N(x)}`;else{let th=".".repeat(Math.floor(Re)).slice(0,3);_r=`${je} ${h}${th}`}let eh=Ce(_r,_,{hard:!0,trim:!1});r.write(eh),ne=ne+1<s.length?ne+1:0,Re=Re<4?Re+.125:0},o)},Ie=(B="",ne=0,Re=!1)=>{if(!l)return;l=!1,clearInterval(u),R();let je=ne===0?y("green",en):ne===1?y("red",mm):y("red",hm);h=B??h,Re||(e==="timer"?r.write(`${je} ${h} ${N(x)}
|
|
322
322
|
`):r.write(`${je} ${h}
|
|
323
|
-
`)),O(),p()};return{start:Oe,stop:(
|
|
323
|
+
`)),O(),p()};return{start:Oe,stop:(B="")=>Ie(B,0),message:(B="")=>{h=F(B??h)},cancel:(B="")=>Ie(B,1),error:(B="")=>Ie(B,2),clear:()=>Ie("",0,!0),get isCancelled(){return m}}},ND={light:j("\u2500","-"),heavy:j("\u2501","="),block:j("\u2588","#")};var Qi=(e,t)=>e.includes(`
|
|
324
324
|
`)?e.split(`
|
|
325
325
|
`).map(r=>t(r)).join(`
|
|
326
|
-
`):t(e),
|
|
326
|
+
`):t(e),fm=e=>{let t=(r,i)=>{let n=r.label??String(r.value);switch(i){case"disabled":return`${y("gray",Zi)} ${Qi(n,s=>y("gray",s))}${r.hint?` ${y("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${Qi(n,s=>y("dim",s))}`;case"active":return`${y("green",Lo)} ${n}${r.hint?` ${y("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${Qi(n,s=>y(["strikethrough","dim"],s))}`;default:return`${y("dim",Zi)} ${Qi(n,s=>y("dim",s))}`}};return new Yi({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let r=e.withGuide??Z.withGuide,i=`${tn(this.state)} `,n=`${Zk(this.state)} `,s=yr(e.output,e.message,n,i),o=`${r?`${y("gray",$)}
|
|
327
327
|
`:""}${s}
|
|
328
|
-
`;switch(this.state){case"submit":{let a=r?`${y("gray",$)} `:"",c=
|
|
329
|
-
${y("gray",$)}`:""}`}default:{let a=r?`${y("cyan",$)} `:"",c=r?y("cyan",
|
|
330
|
-
`).length,p=r?2:1;return`${o}${a}${
|
|
328
|
+
`;switch(this.state){case"submit":{let a=r?`${y("gray",$)} `:"",c=yr(e.output,t(this.options[this.cursor],"selected"),a);return`${o}${c}`}case"cancel":{let a=r?`${y("gray",$)} `:"",c=yr(e.output,t(this.options[this.cursor],"cancelled"),a);return`${o}${c}${r?`
|
|
329
|
+
${y("gray",$)}`:""}`}default:{let a=r?`${y("cyan",$)} `:"",c=r?y("cyan",Ze):"",d=o.split(`
|
|
330
|
+
`).length,p=r?2:1;return`${o}${a}${tq({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:d+p,style:(u,l)=>t(u,u.disabled?"disabled":l?"active":"inactive")}).join(`
|
|
331
331
|
${a}`)}
|
|
332
332
|
${c}
|
|
333
|
-
`}}}}).prompt()};var
|
|
334
|
-
`:""}${
|
|
335
|
-
`,i=e.placeholder?y("inverse",e.placeholder[0])+y("dim",e.placeholder.slice(1)):y(["inverse","hidden"],"_"),n=this.userInput?this.userInputWithCursor:i,s=this.value??"";switch(this.state){case"error":{let o=this.error?` ${y("yellow",this.error)}`:"",a=t?`${y("yellow",$)} `:"",c=t?y("yellow",
|
|
333
|
+
`}}}}).prompt()};var GD=`${y("gray",$)} `;var ht=e=>new Ji({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??Z.withGuide,r=`${`${t?`${y("gray",$)}
|
|
334
|
+
`:""}${tn(this.state)} `}${e.message}
|
|
335
|
+
`,i=e.placeholder?y("inverse",e.placeholder[0])+y("dim",e.placeholder.slice(1)):y(["inverse","hidden"],"_"),n=this.userInput?this.userInputWithCursor:i,s=this.value??"";switch(this.state){case"error":{let o=this.error?` ${y("yellow",this.error)}`:"",a=t?`${y("yellow",$)} `:"",c=t?y("yellow",Ze):"";return`${r.trim()}
|
|
336
336
|
${a}${n}
|
|
337
337
|
${c}${o}
|
|
338
338
|
`}case"submit":{let o=s?` ${y("dim",s)}`:"",a=t?y("gray",$):"";return`${r}${a}${o}`}case"cancel":{let o=s?` ${y(["strikethrough","dim"],s)}`:"",a=t?y("gray",$):"";return`${r}${a}${o}${s.trim()?`
|
|
339
|
-
${a}`:""}`}default:{let o=t?`${y("cyan",$)} `:"",a=t?y("cyan",
|
|
339
|
+
${a}`:""}`}default:{let o=t?`${y("cyan",$)} `:"",a=t?y("cyan",Ze):"";return`${r}${o}${n}
|
|
340
340
|
${a}
|
|
341
|
-
`}}}}).prompt();var
|
|
341
|
+
`}}}}).prompt();var gm=U(zt(),1),Ge=U(X(),1);function _m(e){let t=e.command("api-key").description("Manage API keys");t.command("create").description("Create an API key").option("--name <name>","key name").option("--type <type>","key type: publishable or secret").option("--scopes <scopes>","comma-separated scopes for secret keys (e.g. read_all or read_orders,write_products)").action(async r=>{let i=g(),n=r.name,s=r.type,o=r.scopes;if(!n){let m=await ht({message:"Key name:",placeholder:"My Storefront",validate(h){if(!h)return"Name is required"}});Y(m)&&(G("Cancelled."),process.exit(0)),n=m}if(!s){let m=await fm({message:"Key type:",options:[{value:"publishable",label:"Publishable (for storefronts)"},{value:"secret",label:"Secret (for server-to-server)"}]});Y(m)&&(G("Cancelled."),process.exit(0)),s=m}if(s!=="publishable"&&s!=="secret")throw new Error('Key type must be "publishable" or "secret".');if(s==="secret"&&!o){let m=await ht({message:"Scopes (comma-separated):",placeholder:"read_all",initialValue:"read_all",validate(h){if(!h)return"Secret keys require at least one scope"}});Y(m)&&(G("Cancelled."),process.exit(0)),o=m}let a=z();a.start("Creating API key...");let c=await Q("spree:cli:create_api_key",i.projectDir,{NAME:n,KEY_TYPE:s,...s==="secret"&&o?{SCOPES:o}:{}}),d=s==="publishable"?"pk_":"sk_",p=c.match(new RegExp(`${d}[A-Za-z0-9_-]+`)),u=p?p[0]:c.trim();a.stop("API key created.");let l=[`${Ge.default.bold("Name:")} ${n}`,`${Ge.default.bold("Type:")} ${s}`,`${Ge.default.bold("Token:")} ${Ge.default.cyan(u)}`];s==="secret"&&(l.push(`${Ge.default.bold("Scopes:")} ${o}`),l.push(""),l.push(Ge.default.yellow("Save this token now \u2014 secret keys cannot be retrieved later."))),ee(l.join(`
|
|
342
342
|
`),"API Key")}),t.command("list").description("List API keys").action(async()=>{let r=g(),i=z();i.start("Fetching API keys...");let n=await Q("spree:cli:list_api_keys",r.projectDir);i.stop("");let s=n.trim().split(`
|
|
343
|
-
`).filter(Boolean);if(s.length===0){P.info("No API keys found.");return}let o=s.map(a=>{let[c,d,p,u,l,m]=a.split("|");return{ID:c??"",Name:d??"",Type:p??"",Token:u??"",Created:l??"",Status:m==="active"?Ge.default.green(m):Ge.default.red(m??"")}});(0,
|
|
344
|
-
`),process.exit(2));let i=r.baseUrl;if(!i){let d=await
|
|
345
|
-
`),"Logged in")}),t.command("status").description("Show which credentials `spree api` would use, and verify them").option("--profile <name>","check a specific profile").action(async r=>{let i;try{i=await
|
|
346
|
-
`),"Auth status"),Ui(s)&&(process.exitCode=1)}),t.command("logout").description("Remove a saved profile (or the project credentials)").option("--profile <name>","profile to remove","default").option("--project","remove .spree/credentials.json from the current project instead").action(async r=>{if(r.project){let n;try{n=g().projectDir}catch(o){
|
|
347
|
-
`),process.exit(2)}delete i.profiles[r.profile],i.defaultProfile===r.profile&&(i.defaultProfile=Object.keys(i.profiles)[0]),
|
|
348
|
-
`)),process.exit(1)),
|
|
349
|
-
${
|
|
350
|
-
`),process.exit(1)),t.resetBundle){if(!t.yes){let n=await
|
|
351
|
-
${
|
|
352
|
-
`),await
|
|
353
|
-
`),"Build complete")})}function
|
|
354
|
-
`)),process.exit(1)),P.info("web container is not running \u2014 using a one-off container (`docker compose run`) instead."),await
|
|
343
|
+
`).filter(Boolean);if(s.length===0){P.info("No API keys found.");return}let o=s.map(a=>{let[c,d,p,u,l,m]=a.split("|");return{ID:c??"",Name:d??"",Type:p??"",Token:u??"",Created:l??"",Status:m==="active"?Ge.default.green(m):Ge.default.red(m??"")}});(0,gm.printTable)(o)}),t.command("revoke").description("Revoke an API key").argument("<id>","ID of the key to revoke (from api-key list)").action(async r=>{let i=g(),n=z();n.start("Revoking API key...");let o=(await Q("spree:cli:revoke_api_key",i.projectDir,{ID:r})).trim();n.stop(`API key "${o}" revoked.`)})}var bm=U(zt(),1),J=U(X(),1);function xm(e){let t=e.command("auth").description("Manage Admin API credentials (profiles in ~/.config/spree)");t.command("login").description("Save a secret API key as a named profile").option("--profile <name>","profile name","default").option("--base-url <url>","store URL, e.g. https://store.example.com").action(async r=>{process.stdin.isTTY||(process.stderr.write(`${J.default.red("error:")} \`spree auth login\` is interactive. For non-interactive use, set SPREE_BASE_URL + SPREE_API_KEY (or pass --base-url/--api-key to \`spree api\`).
|
|
344
|
+
`),process.exit(2));let i=r.baseUrl;if(!i){let d=await ht({message:"Store URL:",placeholder:"https://store.example.com",validate(p){if(!p)return"URL is required";if(!/^https?:\/\//.test(p))return"Must start with http:// or https://"}});Y(d)&&(G("Cancelled."),process.exit(130)),i=d}i=i.replace(/\/$/,"");let n=await rn({message:"Secret API key (sk_...):",validate(d){if(!d)return"Key is required";if(!d.startsWith("sk_"))return"Admin API keys start with sk_"}});Y(n)&&(G("Cancelled."),process.exit(130));let s=n,o=z();o.start("Validating credentials...");let a=await mr(i,s);a.status==="unauthorized"&&(o.stop(J.default.red("The server rejected this key (401). Check the key and try again.")),process.exit(2)),a.status==="unreachable"&&(o.stop(J.default.red(`Could not reach ${i}: ${a.message}`)),process.exit(2)),o.stop(a.storeName?`Connected to ${J.default.bold(a.storeName)}.`:"Credentials accepted (key lacks read_settings, so the store name is hidden \u2014 that is fine).");let c=pr();c.profiles[r.profile]={baseUrl:i,token:s},c.defaultProfile||=r.profile,qo(c),ee([`${J.default.bold("Profile:")} ${r.profile}${c.defaultProfile===r.profile?J.default.dim(" (default)"):""}`,`${J.default.bold("Base URL:")} ${i}`,`${J.default.bold("Key:")} ${Bi(s)}${J.default.dim("\u2026")}`,"",J.default.dim(`Saved to ${ut()}`)].join(`
|
|
345
|
+
`),"Logged in")}),t.command("status").description("Show which credentials `spree api` would use, and verify them").option("--profile <name>","check a specific profile").action(async r=>{let i;try{i=await dr({profile:r.profile},{allowMint:!1})}catch(a){lt(a)}let n=z();n.start("Checking server...");let s=await mr(i.baseUrl,i.apiKey);n.stop("");let o=Ni(s);ee([`${J.default.bold("Source:")} ${i.source}${i.profileName?` (${i.profileName})`:""}`,`${J.default.bold("Base URL:")} ${i.baseUrl}`,`${J.default.bold("Key:")} ${i.tokenPrefix}${J.default.dim("\u2026")}`,...i.scopes?[`${J.default.bold("Scopes:")} ${i.scopes.join(", ")}`]:[],`${J.default.bold("Server:")} ${o}`].join(`
|
|
346
|
+
`),"Auth status"),Ui(s)&&(process.exitCode=1)}),t.command("logout").description("Remove a saved profile (or the project credentials)").option("--profile <name>","profile to remove","default").option("--project","remove .spree/credentials.json from the current project instead").action(async r=>{if(r.project){let n;try{n=g().projectDir}catch(o){lt(o)}(await import("fs")).rmSync(Fi(n),{force:!0}),P.success("Removed project credentials. The next `spree api` call mints a fresh read-only key.");return}let i=pr();if(!i.profiles[r.profile]){let n=Object.keys(i.profiles),s=n.length?` Saved profiles: ${n.join(", ")}.`:" No profiles are saved.";process.stderr.write(`${J.default.red("error:")} no profile named "${r.profile}".${s}
|
|
347
|
+
`),process.exit(2)}delete i.profiles[r.profile],i.defaultProfile===r.profile&&(i.defaultProfile=Object.keys(i.profiles)[0]),qo(i),P.success(`Removed profile "${r.profile}". The key itself stays active \u2014 revoke it with \`spree api-key revoke\` or in the admin.`)}),t.command("list").description("List saved profiles").action(()=>{let r=pr(),i=Object.keys(r.profiles);if(i.length===0){P.info("No profiles saved. Run `spree auth login` to add one.");return}(0,bm.printTable)(i.map(n=>({Profile:r.defaultProfile===n?`${n} *`:n,"Base URL":r.profiles[n].baseUrl,Key:`${Bi(r.profiles[n].token)}\u2026`})))})}import wm from"fs";import km from"path";var et=U(X(),1);function qm(e){e.command("build").description("Rebuild the dev image (after Dockerfile / .ruby-version changes)").option("--reset-bundle","also wipe the bundle_cache volume to re-seed gems").option("--yes","skip confirmation prompts (for CI)").action(async t=>{let r=g();if(_t(r.projectDir)&&(G(["This project uses SPREE_PATH for monorepo development.",`Use ${et.default.bold("pnpm server:build")} from the monorepo root instead of ${et.default.bold("spree build")}.`,"It builds against the edge compose overlay the running stack was started with."].join(`
|
|
348
|
+
`)),process.exit(1)),sq(r.projectDir)||(console.error(`
|
|
349
|
+
${et.default.red("Error:")} docker-compose.yml has no \`build:\` section. Run ${et.default.bold("spree eject")} first to switch to a build-from-source stack.
|
|
350
|
+
`),process.exit(1)),t.resetBundle){if(!t.yes){let n=await mt({message:"Wipe the bundle_cache volume? Any gems added via `spree bundle add` since the last image build will be lost.",initialValue:!1});(Y(n)||!n)&&(G("Build cancelled."),process.exit(0))}let i=z();i.start("Wiping bundle_cache volume...");try{await H(["down"],r.projectDir,{stdio:"ignore"});let s=`${await oq(r.projectDir)}_bundle_cache`;await aq(s,r.projectDir)?(await me("docker",["volume","rm",s],{cwd:r.projectDir,stdio:"ignore"}),i.stop("bundle_cache volume wiped.")):i.stop(`bundle_cache volume not present (looked for ${s}).`)}catch(n){throw i.stop("Failed to wipe bundle_cache volume."),n}}console.log(`
|
|
351
|
+
${et.default.bold("Rebuilding dev image...")}
|
|
352
|
+
`),await H(["build","web","worker"],r.projectDir,{stdio:"inherit"}),ee([`Image rebuilt. Start the stack with ${et.default.bold("spree dev")}.`,t.resetBundle?`On next boot, gems will re-seed into a fresh ${et.default.dim("bundle_cache")} volume.`:""].filter(Boolean).join(`
|
|
353
|
+
`),"Build complete")})}function sq(e){let t=km.join(e,"docker-compose.yml");return wm.existsSync(t)?/^\s*build\s*:/m.test(wm.readFileSync(t,"utf-8")):!1}async function oq(e){try{let{stdout:t}=await me("docker",["compose","config","--format","json"],{cwd:e}),r=JSON.parse(t);if(r.name)return r.name}catch{}return km.basename(e).toLowerCase().replace(/[^a-z0-9_-]/g,"")}async function aq(e,t){try{return await me("docker",["volume","inspect",e],{cwd:t,stdio:"ignore"}),!0}catch{return!1}}var vm=U(X(),1);function Sm(e){e.command("bundle").description("Run a bundler command (`bundle \u2026`) inside the web container").argument("<args...>","arguments to pass to bundle").allowUnknownOption(!0).passThroughOptions(!0).action(async t=>{let r=g();if(await Tl("web",r.projectDir)){await I(["bundle",...t],r.projectDir);return}_t(r.projectDir)&&(G(["The web container is not running, and this is a monorepo edge project.",`Run ${vm.default.bold("pnpm server:dev")} from the monorepo root \u2014 the edge stack heals gem drift on boot.`].join(`
|
|
354
|
+
`)),process.exit(1)),P.info("web container is not running \u2014 using a one-off container (`docker compose run`) instead."),await H(["run","--rm","web","bundle",...t],r.projectDir,{stdio:"inherit"})})}var $m=["/admin_users","/allowed_origins","/api_keys","/auth","/categories","/channels","/custom_field_definitions","/customer_groups","/customers","/exports","/gift_card_batches","/gift_cards","/invitations","/locales","/markets","/me","/option_types","/orders","/payment_methods","/price_lists","/prices","/products","/promotion_actions","/promotion_rules","/promotions","/roles","/stock_locations","/store","/store_credit_categories","/tags","/translatable_resources","/translations","/webhook_endpoints"];var Am=["bash","zsh","fish"],pq=["eq","not_eq","cont","not_cont","start","end","in","not_in","gt","gteq","lt","lteq","null","not_null","present","blank"],dq=["get","post","patch","delete","endpoints","schema","status"],uq=["read_all","write_all","read_orders","write_orders","read_products","write_products","read_promotions","write_promotions","read_customers","write_customers","read_payments","write_payments","read_fulfillments","write_fulfillments","read_refunds","write_refunds","read_gift_cards","write_gift_cards","read_store_credits","write_store_credits","read_stock","write_stock","read_categories","write_categories","read_settings","write_settings","read_webhooks","write_webhooks","read_api_keys","write_api_keys","read_dashboard"];function lq(e){let[t,r,...i]=e,n=e[e.length-1]??"",s=e[e.length-2]??"";if(e.length<=1)return nn(["api","auth",...mq],n);if((s==="-q"||s==="--query")&&n.includes("_")&&!n.includes("=")){let o=n.slice(0,n.lastIndexOf("_")+1);return pq.map(a=>`${o}${a}=`)}if(s==="--scopes"){let o=n.includes(",")?n.slice(n.lastIndexOf(",")+1):n,a=n.slice(0,n.length-o.length);return nn(uq,o).map(c=>a+c)}if(t==="api"){if(e.length===2)return nn(dq,n);if(["get","post","patch","delete","schema"].includes(r)&&i.length<=1)return nn($m,n)}return[]}var mq=["api-key","dev","console","migrate"];function nn(e,t){return t?e.filter(r=>r.startsWith(t)):e}function hq(e){return e==="fish"?`# spree fish completion \u2014 eval "$(spree completion fish)"
|
|
355
355
|
function __spree_complete
|
|
356
356
|
set -l tokens (commandline -opc) (commandline -ct)
|
|
357
357
|
spree __complete $tokens[2..-1]
|
|
@@ -370,26 +370,26 @@ _spree() {
|
|
|
370
370
|
COMPREPLY=( $(spree __complete "\${words[@]}") )
|
|
371
371
|
}
|
|
372
372
|
complete -F _spree spree
|
|
373
|
-
`}function
|
|
374
|
-
`),process.exitCode=2;return}process.stdout.write(
|
|
375
|
-
`)})}function
|
|
376
|
-
`)),process.exit(1)),ee(["",Ee.default.bold("Admin Dashboard"),` ${Ee.default.cyan(`http://localhost:${t.port}/admin`)}`,` Email: ${
|
|
373
|
+
`}function Cm(e){e.command("completion <shell>").description("Output a shell completion script (bash, zsh, or fish)").action(t=>{if(!Am.includes(t)){process.stderr.write(`Unsupported shell "${t}". Choose one of: ${Am.join(", ")}.
|
|
374
|
+
`),process.exitCode=2;return}process.stdout.write(hq(t))}),e.command("__complete",{hidden:!0}).allowUnknownOption().argument("[words...]").action(t=>{for(let r of lq(t??[]))process.stdout.write(`${r}
|
|
375
|
+
`)})}function Em(e){e.command("console").description("Open Rails console").action(async()=>{let t=g();await I(["bin/rails","console"],t.projectDir)})}function Tm(e){e.command("db:reset").description("Drop, create, migrate, and seed the dev database (destructive)").option("--yes","skip the confirmation prompt (for CI)").action(async t=>{let r=g();if(!t.yes){let i=await mt({message:"This will drop the spree_development database. Continue?",initialValue:!1});(Y(i)||!i)&&(G("Cancelled."),process.exit(0))}await I(["bin/rails","db:drop","db:create","spree:install:migrations","db:migrate","db:seed"],r.projectDir)}),e.command("db:console").description("Open a psql session against the dev database").action(async()=>{let t=g();await I(["psql","-U","postgres","spree_development"],t.projectDir,{service:"postgres"})})}var Ee=U(X(),1);function Pm(e){e.command("dev").description("Run the app in the foreground \u2014 streams web + worker logs; Ctrl+C stops them").action(async()=>{let t=g();_t(t.projectDir)&&(G(["This project uses SPREE_PATH for monorepo development.",`Use ${Ee.default.bold("pnpm server:dev")} from the monorepo root instead of ${Ee.default.bold("spree dev")}.`,"It loads the edge compose overlay and sets SPREE_PATH so the Spree gems resolve to the monorepo source."].join(`
|
|
376
|
+
`)),process.exit(1)),ee(["",Ee.default.bold("Admin Dashboard"),` ${Ee.default.cyan(`http://localhost:${t.port}/admin`)}`,` Email: ${Sr}`,` Password: ${$r}`,"",Ee.default.bold("Store API"),` ${Ee.default.cyan(`http://localhost:${t.port}/api/v3/store`)}`,""].join(`
|
|
377
377
|
`),"Spree Commerce"),P.info(`Starting services \u2014 web + worker logs stream below. ${Ee.default.bold("Ctrl+C")} stops them (databases keep running; ${Ee.default.bold("spree stop")} shuts everything down).
|
|
378
|
-
`);let r=()=>{};process.on("SIGINT",r);let i;try{i=await
|
|
378
|
+
`);let r=()=>{};process.on("SIGINT",r);let i;try{await Je(t.projectDir),i=await H(["up","web","worker"],t.projectDir,{stdio:"inherit",reject:!1})}finally{process.off("SIGINT",r)}let n=i.exitCode??0;n!==0&&n!==130&&(G(`docker compose exited with code ${n} \u2014 see the output above.`),process.exit(n)),ym(`Web + worker stopped. Databases keep running \u2014 ${Ee.default.bold("spree stop")} shuts everything down.`)})}import gr from"fs";import Mo from"path";var ce=U(X(),1);function Om(e){e.command("eject").description("Switch to the dev compose: bind-mount ./backend with hot reload").action(async()=>{let t=g(),r=Mo.join(t.projectDir,"backend");gr.existsSync(r)||(console.error(`
|
|
379
379
|
${ce.default.red("Error:")} No backend/ directory found.
|
|
380
|
-
`),process.exit(1));let i=
|
|
380
|
+
`),process.exit(1));let i=Mo.join(t.projectDir,"docker-compose.dev.yml");gr.existsSync(i)||(console.error(`
|
|
381
381
|
${ce.default.red("Error:")} No docker-compose.dev.yml found.
|
|
382
|
-
`),process.exit(1));let n=
|
|
382
|
+
`),process.exit(1));let n=gr.readFileSync(i,"utf-8");n.includes("- .:/rails")&&(n=n.replace("- .:/rails","- ./backend:/rails"),gr.writeFileSync(i,n)),gr.writeFileSync(Mo.join(t.projectDir,"docker-compose.yml"),n),console.log(`
|
|
383
383
|
${ce.default.bold("Switching to dev compose (bind-mounts ./backend)...")}
|
|
384
|
-
`),await
|
|
384
|
+
`),await Je(t.projectDir),await H(["up","-d"],t.projectDir,{stdio:"inherit"}),console.log(`
|
|
385
385
|
${ce.default.bold("Preparing the development database...")}
|
|
386
386
|
`),await I(["bin/rails","db:prepare"],t.projectDir,{tty:!1}),ee([`Backend is now bind-mounted from ${ce.default.bold("./backend")} \u2014 edits are live.`,"",`The dev stack uses its own ${ce.default.bold("spree_development")} database (just`,`created and seeded). Load demo products with ${ce.default.bold("spree sample-data")}.`,"","You can now customize:",` ${ce.default.dim("backend/app/")} \u2014 models, controllers, services (instant reload)`,` ${ce.default.dim("backend/config/")} \u2014 Rails configuration (instant reload)`,` ${ce.default.dim("backend/Gemfile")} \u2014 add gems via ${ce.default.bold("spree bundle add <gem>")}`,"",`Rebuild only on Dockerfile / .ruby-version changes: ${ce.default.bold("spree build")}`].join(`
|
|
387
|
-
`),"Ejected!")})}function
|
|
388
|
-
`),"Your Spree store is ready!"),t.open&&await
|
|
389
|
-
`),await
|
|
390
|
-
${
|
|
391
|
-
${
|
|
392
|
-
`).map(r=>r.trim()).filter(r=>r.length>0&&r.startsWith("spree"))}async function
|
|
393
|
-
`),"Next steps")}var
|
|
394
|
-
${
|
|
395
|
-
`),process.exit(t)}}
|
|
387
|
+
`),"Ejected!")})}function Im(e){e.command("exec").description("Run an arbitrary command inside the web container").argument("<command...>","command and arguments to run").allowUnknownOption(!0).passThroughOptions(!0).action(async t=>{let r=g();await I(t,r.projectDir)})}var yq=new Set(["migration","controller","scaffold","scaffold_controller","mailer","job","channel","helper","resource","integration_test","system_test","task","generator","benchmark"]);function Rm(e){e.command("generate").alias("g").description("Run a generator (Spree generators auto-prefixed; Rails built-ins forwarded as-is)").argument("<name>","generator name (`model`, `model_decorator`, `migration`, \u2026)").argument("[args...]","arguments to pass to the generator").allowUnknownOption(!0).passThroughOptions(!0).action(async(t,r)=>{let i=g(),n=t.includes(":")||yq.has(t)?t:`spree:${t}`;await I(["bin/rails","g",n,...r],i.projectDir)})}import Fo from"fs";import{platform as fq}from"os";import gq from"path";var Te=U(X(),1);var _q=3e3,jm=12e4;function Dm(e){e.command("init").description("First-run setup: start services, configure API key, load sample data").option("--no-sample-data","skip loading sample data").option("--no-open","skip opening browser").action(async t=>{let r=g();P.step("Pulling latest images..."),await H(["pull"],r.projectDir,{stdio:"inherit"});let i=z();i.start("Starting Docker services..."),await Je(r.projectDir,{stdio:"ignore"}),await H(["up","-d"],r.projectDir),i.stop("Docker services started."),i.start("Waiting for Spree to be ready..."),await bq(r.port),i.stop("Spree is ready."),i.start("Seeding database..."),await Q("db:seed",r.projectDir),i.stop("Database seeded."),i.start("Configuring API keys...");let n=await xq(r.projectDir);kq(r.projectDir,n);let s=await wq(r.projectDir,r.port);i.stop("API keys configured."),t.sampleData&&(i.start("Loading sample data..."),await Q("spree:load_sample_data",r.projectDir),i.stop("Sample data loaded.")),i.start("Indexing products for search..."),await Q("spree:search:reindex",r.projectDir),i.stop("Search index ready."),ee(["",Te.default.bold("Admin Dashboard"),` ${Te.default.cyan(`http://localhost:${r.port}/admin`)}`,` Email: ${Sr}`,` Password: ${$r}`,"",Te.default.bold("Store API"),` ${Te.default.cyan(`http://localhost:${r.port}/api/v3/store`)}`,` Publishable key: ${Te.default.cyan(n)}`,"",Te.default.bold("Admin API"),` ${Te.default.cyan(`http://localhost:${r.port}/api/v3/admin`)}`,` Secret key: ${Te.default.cyan(s)}`,` ${Te.default.dim("Saved to .spree/credentials.json")}`,""].join(`
|
|
388
|
+
`),"Your Spree store is ready!"),t.open&&await qq(`http://localhost:${r.port}/admin`),P.info(`Streaming logs (Ctrl+C to stop)...
|
|
389
|
+
`),await Mi("web",r.projectDir)})}async function bq(e){let t=`http://localhost:${e}/up`,r=Date.now();for(;Date.now()-r<jm;){try{if((await fetch(t)).ok)return}catch{}await new Promise(i=>setTimeout(i,_q))}throw new Error(`Spree did not become healthy within ${jm/1e3}s`)}async function xq(e){let t=await Q("spree:cli:ensure_api_key",e),r=t.match(/pk_[A-Za-z0-9_-]+/);if(!r)throw new Error(`Could not extract API key from Rails output: ${t}`);return r[0]}async function wq(e,t){let{token:r}=await vo(e,t,!0);return r}function kq(e,t){let r=gq.join(e,"apps","storefront",".env.local");if(!Fo.existsSync(r))return;let i=Fo.readFileSync(r,"utf-8");Fo.writeFileSync(r,i.replace(/SPREE_PUBLISHABLE_KEY=.*/,`SPREE_PUBLISHABLE_KEY=${t}`))}async function qq(e){let t=fq(),r=t==="darwin"?"open":t==="win32"?"start":"xdg-open";try{await Li(`${r} ${e}`,{stdio:"ignore"})}catch{}}function Lm(e){e.command("logs").description("Stream service logs").argument("[service]","service name (web or worker)","web").action(async t=>{let r=g();await Mi(t,r.projectDir)})}var sn=U(X(),1);function Mm(e){e.command("migrate").description("Install pending Spree migrations from gems, then run them (`spree:install:migrations` + `db:migrate`)").argument("[args...]","extra args forwarded to db:migrate").allowUnknownOption(!0).passThroughOptions(!0).action(async t=>{let r=g();console.log(`
|
|
390
|
+
${sn.default.bold("\u2192 Installing pending Spree migrations from gems...")}`),await I(["bin/rails","spree:install:migrations"],r.projectDir),console.log(`
|
|
391
|
+
${sn.default.bold("\u2192 Running db:migrate...")}`),await I(["bin/rails","db:migrate",...t],r.projectDir),ee(`Run ${sn.default.bold("spree migrate:status")} to inspect the migration log.`,"Migrations up to date")}),e.command("migrate:rollback").description("Roll back the last migration (`STEP=n` to roll back n steps)").argument("[args...]","extra args forwarded to db:rollback (e.g. STEP=2)").allowUnknownOption(!0).passThroughOptions(!0).action(async t=>{let r=g();await I(["bin/rails","db:rollback",...t],r.projectDir)}),e.command("migrate:status").description("Show migration status (`bin/rails db:migrate:status`)").action(async()=>{let t=g();await I(["bin/rails","db:migrate:status"],t.projectDir)})}import{platform as vq}from"os";function Fm(e){e.command("open").description("Open the admin dashboard in the browser").action(async()=>{let r=`http://localhost:${g().port}/admin`,i=vq();await Li(`${i==="darwin"?"open":i==="win32"?"start":"xdg-open"} ${r}`)})}function Bm(e){e.command("rails").description("Run a Rails command (`bin/rails \u2026`) inside the web container").argument("<args...>","arguments to pass to bin/rails").allowUnknownOption(!0).passThroughOptions(!0).action(async t=>{let r=g();await I(["bin/rails",...t],r.projectDir)})}function Um(e){e.command("rake").description("Run a rake task (`bin/rake \u2026`) inside the web container").argument("<args...>","task name and arguments").allowUnknownOption(!0).passThroughOptions(!0).action(async t=>{let r=g();await I(["bin/rake",...t],r.projectDir)})}function Nm(e){e.command("restart").description("Restart web + worker in place (does not reload Gemfile or compose changes)").action(async()=>{let t=g(),r=z();r.start("Restarting web + worker...");try{await H(["restart","web","worker"],t.projectDir),r.stop("Services restarted.")}catch(i){throw r.stop("Restart failed."),i}})}function Gm(e){e.command("routes").description("Show Rails routes (`bin/rails routes`)").argument("[args...]","arguments to pass to bin/rails routes").allowUnknownOption(!0).passThroughOptions(!0).action(async t=>{let r=g();await I(["bin/rails","routes",...t],r.projectDir)})}function zm(e){e.command("sample-data").description("Load sample data (products, categories, images)").action(async()=>{let t=g(),r=z();r.start("Loading sample data..."),await Q("spree:load_sample_data",t.projectDir),r.stop("Sample data loaded.")})}function Vm(e){e.command("seed").description("Seed the database").action(async()=>{let t=g(),r=z();r.start("Seeding database..."),await Q("db:seed",t.projectDir),r.stop("Database seeded.")})}function Wm(e){e.command("stop").description("Stop services").action(async()=>{let t=g(),r=z();r.start("Stopping services..."),await H(["stop"],t.projectDir),r.stop("Services stopped.")})}function Hm(e){e.command("task").description("Run a Spree rake task (auto-prefixes `spree:`)").argument("<name>","task name (without `spree:` prefix)").argument("[args...]","arguments to pass to the task").allowUnknownOption(!0).passThroughOptions(!0).action(async(t,r)=>{let i=g();await I(["bin/rake",`spree:${t}`,...r],i.projectDir)})}function Km(e){e.command("update").description("Pull latest image and recreate containers").action(async()=>{let t=g();P.step("Pulling latest images..."),await H(["pull"],t.projectDir,{stdio:"inherit"});let r=z();r.start("Recreating containers..."),await Je(t.projectDir,{stdio:"ignore"}),await H(["up","-d"],t.projectDir),r.stop("Containers recreated."),P.success("Update complete! Migrations will run automatically on startup."),P.info("Run `spree logs` to follow the startup progress.")})}import Ym from"fs";import Sq from"path";var Pe=U(X(),1);function Jm(e){e.command("upgrade").description("Walk through a Spree version upgrade (bundle + migrate + spree:upgrade)").option("--plan","print the plan via spree:upgrade DRY_RUN=1; skip bundle + migrate").option("--step <id>","run a single rake step by id (skips bundle + migrate)").option("--to <version>","explicit target version (auto-detected from installed gem otherwise)").option("--yes","skip prompts on automated steps").action(async t=>{let r=g();t.plan||t.step||(await $q(r.projectDir,t),await Cq(r.projectDir,t)),await Eq(r.projectDir,t),t.plan||Pq(r.projectDir)})}async function $q(e,t){if(!t.yes){let i=await mt({message:"Run `bundle update` to bump Spree gems?",initialValue:!0});if(Y(i)&&(G("Upgrade aborted."),process.exit(0)),!i){P.info("Skipping `bundle update`.");return}}let r=await Aq(e);if(r.length===0)throw new Error('No Spree gems detected in Gemfile.lock. Confirm the project has `gem "spree"` (or `spree_core`/`spree_admin`) in its Gemfile.');P.step(Pe.default.bold(`bundle update ${r.join(" ")}`)),await I(["bundle","update",...r],e)}async function Aq(e){let{stdout:t}=await me("docker",["compose","exec","-T","web","sh","-c","bundle list --name-only 2>/dev/null | grep '^spree' || true"],{cwd:e});return t.split(`
|
|
392
|
+
`).map(r=>r.trim()).filter(r=>r.length>0&&r.startsWith("spree"))}async function Cq(e,t){if(!t.yes){let r=await mt({message:"Install + run pending migrations?",initialValue:!0});if(Y(r)&&(G("Upgrade aborted."),process.exit(0)),!r){P.info("Skipping migrations.");return}}P.step(Pe.default.bold("spree:install:migrations + db:migrate")),await I(["bin/rails","spree:install:migrations","db:migrate"],e)}async function Eq(e,t){let r={};t.plan&&(r.DRY_RUN="1"),t.step&&(r.STEP=t.step),t.to&&(r.TO=t.to),P.step(Pe.default.bold("spree:upgrade")),await I(["bin/rake","spree:upgrade"],e,{env:r})}function Tq(e){let t="Update @spree/sdk in any storefront or integration consuming the API",r=Sq.join(e,"apps","storefront","package.json");if(!Ym.existsSync(r))return t;try{let i=JSON.parse(Ym.readFileSync(r,"utf-8")),n=i.dependencies?.["@spree/sdk"]??i.devDependencies?.["@spree/sdk"];return n?`Update @spree/sdk in apps/storefront (currently ${n}) to the release matching the new Spree version`:t}catch{return t}}function Pq(e){ee([`The manifest only ran ${Pe.default.bold("rake-automatable")} steps.`,"","Don't forget the manual parts from the upgrade doc:",` ${Pe.default.dim("- Schedule Spree::StockReservations::ExpireJob (cron)")}`,` ${Pe.default.dim(`- ${Tq(e)}`)}`,` ${Pe.default.dim("- Review behavior changes (cart, availability, payment-method types)")}`,` ${Pe.default.dim("- Audit custom decorators against renamed APIs")}`,"",`Full checklist: ${Pe.default.cyan("https://spreecommerce.org/docs/developer/upgrades")}`].join(`
|
|
393
|
+
`),"Next steps")}var Xm=U(X(),1);function Qm(e){e.command("user").description("Manage admin users").command("create").description("Create an admin user").option("--email <email>","admin email").option("--password <password>","admin password").action(async r=>{let i=g(),n=r.email,s=r.password;if(!n){let a=await ht({message:"Admin email:",placeholder:"admin@example.com",validate(c){if(!c)return"Email is required";if(!c.includes("@"))return"Invalid email"}});Y(a)&&(G("Cancelled."),process.exit(0)),n=a}if(!s){let a=await rn({message:"Admin password:",validate(c){if(!c||c.length<6)return"Password must be at least 6 characters"}});Y(a)&&(G("Cancelled."),process.exit(0)),s=a}let o=z();o.start("Creating admin user..."),await Q("spree:cli:create_admin",i.projectDir,{EMAIL:n,PASSWORD:s}),o.stop("Admin user created."),P.success(`Email: ${Xm.default.cyan(n)}`)})}var D=new ea().name("spree").description("CLI for managing Spree Commerce projects").version("2.0.0").enablePositionalOptions().showSuggestionAfterError(!0).showHelpAfterError("(run `spree --help` for usage)").exitOverride(e=>{(e.code.startsWith("commander.help")||e.code==="commander.version")&&process.exit(0),process.exit(2)});Dm(D);Pm(D);Wm(D);Nm(D);Km(D);Lm(D);Om(D);qm(D);Rm(D);Mm(D);Tm(D);Gm(D);Jm(D);Im(D);Bm(D);Sm(D);Um(D);Hm(D);Em(D);Qm(D);_m(D);Fm(D);Vm(D);zm(D);Hl(D);xm(D);Cm(D);async function Oq(){try{await D.parseAsync()}catch(e){e instanceof Error&&"code"in e&&(e.code==="commander.helpDisplayed"||e.code==="commander.version")&&process.exit(0),e instanceof Error&&"code"in e&&String(e.code).startsWith("commander.")&&process.exit(2);let t=e instanceof Error&&e.constructor.name==="CredentialError"?2:1,r=e instanceof Error?e.message:"An unexpected error occurred.";console.error(`
|
|
394
|
+
${Zm.default.red("Error:")} ${r}
|
|
395
|
+
`),process.exit(t)}}Oq();
|