@powerplatformdevops/cli 1.0.0-beta.2 → 1.0.0-beta.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/package.json +3 -3
- package/ppdevops-cli.js +18 -18
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerplatformdevops/cli",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.3",
|
|
4
4
|
"description": "Power Platform DevOps Studio – cross-platform deployment CLI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"power-platform",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"access": "public"
|
|
24
24
|
},
|
|
25
25
|
"ppdevops": {
|
|
26
|
-
"upstreamCommit": "
|
|
27
|
-
"builtOn": "2026-09-
|
|
26
|
+
"upstreamCommit": "fb568c5",
|
|
27
|
+
"builtOn": "2026-09-21T05:23:29Z"
|
|
28
28
|
}
|
|
29
29
|
}
|
package/ppdevops-cli.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var po=Object.create;var Wt=Object.defineProperty;var fo=Object.getOwnPropertyDescriptor;var mo=Object.getOwnPropertyNames;var ho=Object.getPrototypeOf,go=Object.prototype.hasOwnProperty;var k=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var vo=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of mo(n))!go.call(e,i)&&i!==t&&Wt(e,i,{get:()=>n[i],enumerable:!(r=fo(n,i))||r.enumerable});return e};var
|
|
2
|
+
"use strict";var po=Object.create;var Wt=Object.defineProperty;var fo=Object.getOwnPropertyDescriptor;var mo=Object.getOwnPropertyNames;var ho=Object.getPrototypeOf,go=Object.prototype.hasOwnProperty;var k=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var vo=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of mo(n))!go.call(e,i)&&i!==t&&Wt(e,i,{get:()=>n[i],enumerable:!(r=fo(n,i))||r.enumerable});return e};var _=(e,n,t)=>(t=e!=null?po(ho(e)):{},vo(n||!e||!e.__esModule?Wt(t,"default",{value:e,enumerable:!0}):t,e));var Be=k(Yn=>{var rn=class extends Error{constructor(n,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=n,this.nestedError=void 0}},Wn=class extends rn{constructor(n){super(1,"commander.invalidArgument",n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Yn.CommanderError=rn;Yn.InvalidArgumentError=Wn});var on=k(zn=>{var{InvalidArgumentError:yo}=Be(),Gn=class{constructor(n,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,n[0]){case"<":this.required=!0,this._name=n.slice(1,-1);break;case"[":this.required=!1,this._name=n.slice(1,-1);break;default:this.required=!0,this._name=n;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(n,t){return t===this.defaultValue||!Array.isArray(t)?[n]:t.concat(n)}default(n,t){return this.defaultValue=n,this.defaultValueDescription=t,this}argParser(n){return this.parseArg=n,this}choices(n){return this.argChoices=n.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new yo(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function _o(e){let n=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+n+">":"["+n+"]"}zn.Argument=Gn;zn.humanReadableArgName=_o});var Jn=k(Yt=>{var{humanReadableArgName:Ao}=on(),Kn=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(n){let t=n.commands.filter(i=>!i._hidden),r=n._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((i,o)=>i.name().localeCompare(o.name())),t}compareOptions(n,t){let r=i=>i.short?i.short.replace(/^-/,""):i.long.replace(/^--/,"");return r(n).localeCompare(r(t))}visibleOptions(n){let t=n.options.filter(i=>!i.hidden),r=n._getHelpOption();if(r&&!r.hidden){let i=r.short&&n._findOption(r.short),o=r.long&&n._findOption(r.long);!i&&!o?t.push(r):r.long&&!o?t.push(n.createOption(r.long,r.description)):r.short&&!i&&t.push(n.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(n){if(!this.showGlobalOptions)return[];let t=[];for(let r=n.parent;r;r=r.parent){let i=r.options.filter(o=>!o.hidden);t.push(...i)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(n){return n._argsDescription&&n.registeredArguments.forEach(t=>{t.description=t.description||n._argsDescription[t.name()]||""}),n.registeredArguments.find(t=>t.description)?n.registeredArguments:[]}subcommandTerm(n){let t=n.registeredArguments.map(r=>Ao(r)).join(" ");return n._name+(n._aliases[0]?"|"+n._aliases[0]:"")+(n.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(n){return n.flags}argumentTerm(n){return n.name()}longestSubcommandTermLength(n,t){return t.visibleCommands(n).reduce((r,i)=>Math.max(r,t.subcommandTerm(i).length),0)}longestOptionTermLength(n,t){return t.visibleOptions(n).reduce((r,i)=>Math.max(r,t.optionTerm(i).length),0)}longestGlobalOptionTermLength(n,t){return t.visibleGlobalOptions(n).reduce((r,i)=>Math.max(r,t.optionTerm(i).length),0)}longestArgumentTermLength(n,t){return t.visibleArguments(n).reduce((r,i)=>Math.max(r,t.argumentTerm(i).length),0)}commandUsage(n){let t=n._name;n._aliases[0]&&(t=t+"|"+n._aliases[0]);let r="";for(let i=n.parent;i;i=i.parent)r=i.name()+" "+r;return r+t+" "+n.usage()}commandDescription(n){return n.description()}subcommandDescription(n){return n.summary()||n.description()}optionDescription(n){let t=[];return n.argChoices&&t.push(`choices: ${n.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),n.defaultValue!==void 0&&(n.required||n.optional||n.isBoolean()&&typeof n.defaultValue=="boolean")&&t.push(`default: ${n.defaultValueDescription||JSON.stringify(n.defaultValue)}`),n.presetArg!==void 0&&n.optional&&t.push(`preset: ${JSON.stringify(n.presetArg)}`),n.envVar!==void 0&&t.push(`env: ${n.envVar}`),t.length>0?`${n.description} (${t.join(", ")})`:n.description}argumentDescription(n){let t=[];if(n.argChoices&&t.push(`choices: ${n.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),n.defaultValue!==void 0&&t.push(`default: ${n.defaultValueDescription||JSON.stringify(n.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return n.description?`${n.description} ${r}`:r}return n.description}formatHelp(n,t){let r=t.padWidth(n,t),i=t.helpWidth||80,o=2,s=2;function a(f,h){if(h){let y=`${f.padEnd(r+s)}${h}`;return t.wrap(y,i-o,r+s)}return f}function l(f){return f.join(`
|
|
3
3
|
`).replace(/^/gm," ".repeat(o))}let c=[`Usage: ${t.commandUsage(n)}`,""],u=t.commandDescription(n);u.length>0&&(c=c.concat([t.wrap(u,i,0),""]));let p=t.visibleArguments(n).map(f=>a(t.argumentTerm(f),t.argumentDescription(f)));p.length>0&&(c=c.concat(["Arguments:",l(p),""]));let d=t.visibleOptions(n).map(f=>a(t.optionTerm(f),t.optionDescription(f)));if(d.length>0&&(c=c.concat(["Options:",l(d),""])),this.showGlobalOptions){let f=t.visibleGlobalOptions(n).map(h=>a(t.optionTerm(h),t.optionDescription(h)));f.length>0&&(c=c.concat(["Global Options:",l(f),""]))}let m=t.visibleCommands(n).map(f=>a(t.subcommandTerm(f),t.subcommandDescription(f)));return m.length>0&&(c=c.concat(["Commands:",l(m),""])),c.join(`
|
|
4
4
|
`)}padWidth(n,t){return Math.max(t.longestOptionTermLength(n,t),t.longestGlobalOptionTermLength(n,t),t.longestSubcommandTermLength(n,t),t.longestArgumentTermLength(n,t))}wrap(n,t,r,i=40){let o=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",s=new RegExp(`[\\n][${o}]+`);if(n.match(s))return n;let a=t-r;if(a<i)return n;let l=n.slice(0,r),c=n.slice(r).replace(`\r
|
|
5
5
|
`,`
|
|
6
6
|
`),u=" ".repeat(r),d="\\s\u200B",m=new RegExp(`
|
|
7
|
-
|.{1,${a-1}}([${d}]|$)|[^${d}]+?([${d}]|$)`,"g"),f=c.match(m)||[];return l+f.map((h,
|
|
8
|
-
`?"":(
|
|
7
|
+
|.{1,${a-1}}([${d}]|$)|[^${d}]+?([${d}]|$)`,"g"),f=c.match(m)||[];return l+f.map((h,y)=>h===`
|
|
8
|
+
`?"":(y>0?u:"")+h.trimEnd()).join(`
|
|
9
9
|
`)}};Yt.Help=Kn});var et=k(Qn=>{var{InvalidArgumentError:xo}=Be(),Xn=class{constructor(n,t){this.flags=n,this.description=t||"",this.required=n.includes("<"),this.optional=n.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(n),this.mandatory=!1;let r=wo(n);this.short=r.shortFlag,this.long=r.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}default(n,t){return this.defaultValue=n,this.defaultValueDescription=t,this}preset(n){return this.presetArg=n,this}conflicts(n){return this.conflictsWith=this.conflictsWith.concat(n),this}implies(n){let t=n;return typeof n=="string"&&(t={[n]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(n){return this.envVar=n,this}argParser(n){return this.parseArg=n,this}makeOptionMandatory(n=!0){return this.mandatory=!!n,this}hideHelp(n=!0){return this.hidden=!!n,this}_concatValue(n,t){return t===this.defaultValue||!Array.isArray(t)?[n]:t.concat(n)}choices(n){return this.argChoices=n.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new xo(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return So(this.name().replace(/^no-/,""))}is(n){return this.short===n||this.long===n}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Zn=class{constructor(n){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,n.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(n,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let i=this.negativeOptions.get(r).presetArg,o=i!==void 0?i:!1;return t.negate===(o===n)}};function So(e){return e.split("-").reduce((n,t)=>n+t[0].toUpperCase()+t.slice(1))}function wo(e){let n,t,r=e.split(/[ |,]+/);return r.length>1&&!/^[[<]/.test(r[1])&&(n=r.shift()),t=r.shift(),!n&&/^-[^-]$/.test(t)&&(n=t,t=void 0),{shortFlag:n,longFlag:t}}Qn.Option=Xn;Qn.DualOptions=Zn});var zt=k(Gt=>{function Eo(e,n){if(Math.abs(e.length-n.length)>3)return Math.max(e.length,n.length);let t=[];for(let r=0;r<=e.length;r++)t[r]=[r];for(let r=0;r<=n.length;r++)t[0][r]=r;for(let r=1;r<=n.length;r++)for(let i=1;i<=e.length;i++){let o=1;e[i-1]===n[r-1]?o=0:o=1,t[i][r]=Math.min(t[i-1][r]+1,t[i][r-1]+1,t[i-1][r-1]+o),i>1&&r>1&&e[i-1]===n[r-2]&&e[i-2]===n[r-1]&&(t[i][r]=Math.min(t[i][r],t[i-2][r-2]+1))}return t[e.length][n.length]}function bo(e,n){if(!n||n.length===0)return"";n=Array.from(new Set(n));let t=e.startsWith("--");t&&(e=e.slice(2),n=n.map(s=>s.slice(2)));let r=[],i=3,o=.4;return n.forEach(s=>{if(s.length<=1)return;let a=Eo(e,s),l=Math.max(e.length,s.length);(l-a)/l>o&&(a<i?(i=a,r=[s]):a===i&&r.push(s))}),r.sort((s,a)=>s.localeCompare(a)),t&&(r=r.map(s=>`--${s}`)),r.length>1?`
|
|
10
10
|
(Did you mean one of ${r.join(", ")}?)`:r.length===1?`
|
|
11
11
|
(Did you mean ${r[0]}?)`:""}Gt.suggestSimilar=bo});var Qt=k(Zt=>{var Co=require("node:events").EventEmitter,nt=require("node:child_process"),re=require("node:path"),tt=require("node:fs"),w=require("node:process"),{Argument:Oo,humanReadableArgName:Po}=on(),{CommanderError:rt}=Be(),{Help:ko}=Jn(),{Option:Kt,DualOptions:Io}=et(),{suggestSimilar:Jt}=zt(),it=class e extends Co{constructor(n){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=n||"",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._outputConfiguration={writeOut:t=>w.stdout.write(t),writeErr:t=>w.stderr.write(t),getOutHelpWidth:()=>w.stdout.isTTY?w.stdout.columns:void 0,getErrHelpWidth:()=>w.stderr.isTTY?w.stderr.columns:void 0,outputError:(t,r)=>r(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(n){return this._outputConfiguration=n._outputConfiguration,this._helpOption=n._helpOption,this._helpCommand=n._helpCommand,this._helpConfiguration=n._helpConfiguration,this._exitCallback=n._exitCallback,this._storeOptionsAsProperties=n._storeOptionsAsProperties,this._combineFlagAndOptionalValue=n._combineFlagAndOptionalValue,this._allowExcessArguments=n._allowExcessArguments,this._enablePositionalOptions=n._enablePositionalOptions,this._showHelpAfterError=n._showHelpAfterError,this._showSuggestionAfterError=n._showSuggestionAfterError,this}_getCommandAndAncestors(){let n=[];for(let t=this;t;t=t.parent)n.push(t);return n}command(n,t,r){let i=t,o=r;typeof i=="object"&&i!==null&&(o=i,i=null),o=o||{};let[,s,a]=n.match(/([^ ]+) *(.*)/),l=this.createCommand(s);return i&&(l.description(i),l._executableHandler=!0),o.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(o.noHelp||o.hidden),l._executableFile=o.executableFile||null,a&&l.arguments(a),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),i?this:l}createCommand(n){return new e(n)}createHelp(){return Object.assign(new ko,this.configureHelp())}configureHelp(n){return n===void 0?this._helpConfiguration:(this._helpConfiguration=n,this)}configureOutput(n){return n===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,n),this)}showHelpAfterError(n=!0){return typeof n!="string"&&(n=!!n),this._showHelpAfterError=n,this}showSuggestionAfterError(n=!0){return this._showSuggestionAfterError=!!n,this}addCommand(n,t){if(!n._name)throw new Error(`Command passed to .addCommand() must have a name
|
|
@@ -20,36 +20,36 @@ Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[n]?this._life
|
|
|
20
20
|
`),this.outputHelp({error:!0}));let r=t||{},i=r.exitCode||1,o=r.code||"commander.error";this._exit(i,o,n)}_parseOptionsEnv(){this.options.forEach(n=>{if(n.envVar&&n.envVar in w.env){let t=n.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(n.required||n.optional?this.emit(`optionEnv:${n.name()}`,w.env[n.envVar]):this.emit(`optionEnv:${n.name()}`))}})}_parseOptionsImplied(){let n=new Io(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&n.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(i=>!t(i)).forEach(i=>{this.setOptionValueWithSource(i,r.implied[i],"implied")})})}missingArgument(n){let t=`error: missing required argument '${n}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(n){let t=`error: option '${n.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(n){let t=`error: required option '${n.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(n,t){let r=s=>{let a=s.attributeName(),l=this.getOptionValue(a),c=this.options.find(p=>p.negate&&a===p.attributeName()),u=this.options.find(p=>!p.negate&&a===p.attributeName());return c&&(c.presetArg===void 0&&l===!1||c.presetArg!==void 0&&l===c.presetArg)?c:u||s},i=s=>{let a=r(s),l=a.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},o=`error: ${i(n)} cannot be used with ${i(t)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(n){if(this._allowUnknownOption)return;let t="";if(n.startsWith("--")&&this._showSuggestionAfterError){let i=[],o=this;do{let s=o.createHelp().visibleOptions(o).filter(a=>a.long).map(a=>a.long);i=i.concat(s),o=o.parent}while(o&&!o._enablePositionalOptions);t=Jt(n,i)}let r=`error: unknown option '${n}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(n){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",o=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} but got ${n.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let n=this.args[0],t="";if(this._showSuggestionAfterError){let i=[];this.createHelp().visibleCommands(this).forEach(o=>{i.push(o.name()),o.alias()&&i.push(o.alias())}),t=Jt(n,i)}let r=`error: unknown command '${n}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(n,t,r){if(n===void 0)return this._version;this._version=n,t=t||"-V, --version",r=r||"output the version number";let i=this.createOption(t,r);return this._versionOptionName=i.attributeName(),this._registerOption(i),this.on("option:"+i.name(),()=>{this._outputConfiguration.writeOut(`${n}
|
|
21
21
|
`),this._exit(0,"commander.version",n)}),this}description(n,t){return n===void 0&&t===void 0?this._description:(this._description=n,t&&(this._argsDescription=t),this)}summary(n){return n===void 0?this._summary:(this._summary=n,this)}alias(n){if(n===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),n===t._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(n);if(r){let i=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${n}' to command '${this.name()}' as already have command '${i}'`)}return t._aliases.push(n),this}aliases(n){return n===void 0?this._aliases:(n.forEach(t=>this.alias(t)),this)}usage(n){if(n===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(r=>Po(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=n,this}name(n){return n===void 0?this._name:(this._name=n,this)}nameFromFilename(n){return this._name=re.basename(n,re.extname(n)),this}executableDir(n){return n===void 0?this._executableDir:(this._executableDir=n,this)}helpInformation(n){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=n&&n.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(n){n=n||{};let t={error:!!n.error},r;return t.error?r=i=>this._outputConfiguration.writeErr(i):r=i=>this._outputConfiguration.writeOut(i),t.write=n.write||r,t.command=this,t}outputHelp(n){let t;typeof n=="function"&&(t=n,n=void 0);let r=this._getHelpContext(n);this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let i=this.helpInformation(r);if(t&&(i=t(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",r))}helpOption(n,t){return typeof n=="boolean"?(n?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(n=n??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(n,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(n){return this._helpOption=n,this}help(n){this.outputHelp(n);let t=w.exitCode||0;t===0&&n&&typeof n!="function"&&n.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(n,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(n))throw new Error(`Unexpected value for position to addHelpText.
|
|
22
22
|
Expecting one of '${r.join("', '")}'`);let i=`${n}Help`;return this.on(i,o=>{let s;typeof t=="function"?s=t({error:o.error,command:o.command}):s=t,s&&o.write(`${s}
|
|
23
|
-
`)}),this}_outputHelpIfRequested(n){let t=this._getHelpOption();t&&n.find(i=>t.is(i))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Xt(e){return e.map(n=>{if(!n.startsWith("--inspect"))return n;let t,r="127.0.0.1",i="9229",o;return(o=n.match(/^(--inspect(-brk)?)$/))!==null?t=o[1]:(o=n.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=o[1],/^\d+$/.test(o[3])?i=o[3]:r=o[3]):(o=n.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=o[1],r=o[3],i=o[4]),t&&i!=="0"?`${t}=${r}:${parseInt(i)+1}`:n})}Zt.Command=it});var rr=k(U=>{var{Argument:er}=on(),{Command:ot}=Qt(),{CommanderError:$o,InvalidArgumentError:nr}=Be(),{Help:No}=Jn(),{Option:tr}=et();U.program=new ot;U.createCommand=e=>new ot(e);U.createOption=(e,n)=>new tr(e,n);U.createArgument=(e,n)=>new er(e,n);U.Command=ot;U.Option=tr;U.Argument=er;U.Help=No;U.CommanderError=$o;U.InvalidArgumentError=nr;U.InvalidOptionArgumentError=nr});var st=k(sn=>{"use strict";Object.defineProperty(sn,"__esModule",{value:!0});sn.PLAN_SCHEMA_VERSION=void 0;sn.PLAN_SCHEMA_VERSION=2});var lt=k(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});O.isScriptRef=O.isTrue=void 0;O.compareVersions=at;O.versionGte=Fo;O.decideAction=Vo;O.decideDeployData=Ro;O.decideFlows=Lo;O.resolveImportMode=Mo;var To=e=>e===!0||String(e).toLowerCase()==="true";O.isTrue=To;var Do=e=>!!e&&e.toLowerCase()!=="false"&&e.toLowerCase()!=="true"&&e.trim()!=="";O.isScriptRef=Do;function or(e){return e.split(".").map(n=>parseInt(n,10)||0)}function at(e,n){let t=or(e),r=or(n);for(let i=0;i<Math.max(t.length,r.length);i++){let o=t[i]??0,s=r[i]??0;if(o>s)return 1;if(o<s)return-1}return 0}function Fo(e,n){return at(e,n)>=0}function Vo(e,n){let t=e===null,r=n&&!t?at(e,n):null,i=r!==null&&r>=0,o=r===1;return{action:i?"skip":t?"install":"upgrade",reason:i?o?"env-ahead":"up-to-date":void 0,skip:i,isFirstDeploy:t,installedIsNewer:o}}function Ro(e,n){return(0,O.isTrue)(e.DeployData)?(0,O.isTrue)(e.AlwaysDeployData)?{enabled:!0,reason:"always"}:n?{enabled:!0,reason:"first-deploy"}:{enabled:!1,reason:"not-first-deploy"}:{enabled:!1,reason:"not-configured"}}function Lo(e,n){return!e||!(0,O.isTrue)(e.ActivateFlows)?{enabled:!1,reason:"not-configured"}:n?{enabled:!0,reason:"deploying"}:(0,O.isTrue)(e.AlwaysTryActivate)?{enabled:!0,reason:"always"}:{enabled:!1,reason:"always-not-set"}}function Mo(e){return(0,O.isTrue)(e.StageForUpgrade)?"holding-then-upgrade":(0,O.isTrue)(e.DeployAsHolding)?"stage-and-upgrade":"import"}});var pt=k(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Se.comparable=an;Se.fingerprint=Ho;Se.validatePlan=Uo;Se.renderValidationText=qo;var ut=e=>e.map(n=>({id:n.id,enabled:n.enabled}));function an(e){return{schemaVersion:e.schemaVersion,environmentUrl:e.environment.url,run:ut([...e.run.before,...e.run.after]),solutions:e.solutions.map(n=>({name:n.name,action:n.action,installedVersion:n.installedVersion,localVersion:n.localVersion,deploymentType:n.deploymentType,importMode:n.importMode,data:n.data.enabled,flows:n.flows.enabled,steps:ut(n.steps),patches:n.patches.map(t=>({name:t.name,action:t.action,installedVersion:t.installedVersion,localVersion:t.localVersion,steps:ut(t.steps)}))}))}}function jo(e){let n=BigInt("0xcbf29ce484222325"),t=BigInt("0x100000001b3"),r=BigInt("0xffffffffffffffff");for(let i=0;i<e.length;i++)n^=BigInt(e.charCodeAt(i)),n=n*t&r;return n.toString(16).padStart(16,"0")}function Ho(e){return jo(JSON.stringify(an(e)))}var T=e=>e==null?"\u2014":String(e);function ct(e,n,t,r){let i=new Map(t.map(s=>[s.id,s])),o=new Set(n.map(s=>s.id));for(let s of n){let a=i.get(s.id);a?a.enabled!==s.enabled&&r.push({code:"step-enabled",unit:e,stepId:s.id,submitted:String(s.enabled),fresh:String(a.enabled),message:`${e}: step ${s.id} is now ${a.enabled?"enabled":"disabled"}`}):r.push({code:"step-removed",unit:e,stepId:s.id,submitted:"present",fresh:"absent",message:`${e}: step no longer planned \u2014 ${s.id}`})}for(let s of t)o.has(s.id)||r.push({code:"step-added",unit:e,stepId:s.id,submitted:"absent",fresh:"present",message:`${e}: new step would run \u2014 ${s.id}`})}function Uo(e,n){let t=[],r=an(e),i=an(n),o=()=>({ok:t.length===0,drifts:t,submittedFingerprint:e.fingerprint,freshFingerprint:n.fingerprint,submittedGeneratedAt:e.generatedAt});if(r.schemaVersion!==i.schemaVersion)return t.push({code:"schema-version",submitted:T(r.schemaVersion),fresh:T(i.schemaVersion),message:`Plan schema ${r.schemaVersion} cannot be checked by this CLI (expects ${i.schemaVersion}). Re-run \`ppdevops plan\`.`}),o();if(r.environmentUrl!==i.environmentUrl)return t.push({code:"environment-url",submitted:r.environmentUrl,fresh:i.environmentUrl,message:`Plan targets ${r.environmentUrl} but this deploy targets ${i.environmentUrl}.`}),o();if(JSON.stringify(r)===JSON.stringify(i))return o();ct("~env",r.run,i.run,t);let s=new Map(i.solutions.map(u=>[u.name,u])),a=new Set(r.solutions.map(u=>u.name));for(let u of r.solutions){let p=s.get(u.name);if(!p){t.push({code:"solution-removed",unit:u.name,submitted:"planned",fresh:"absent",message:`${u.name}: no longer targets this environment.`});continue}u.installedVersion!==p.installedVersion&&t.push({code:"installed-version",unit:u.name,submitted:T(u.installedVersion),fresh:T(p.installedVersion),message:`${u.name}: installed version changed ${T(u.installedVersion)} \u2192 ${T(p.installedVersion)} (someone deployed since the plan)`}),u.localVersion!==p.localVersion&&t.push({code:"local-version",unit:u.name,submitted:T(u.localVersion),fresh:T(p.localVersion),message:`${u.name}: local version changed ${T(u.localVersion)} \u2192 ${T(p.localVersion)} (the branch moved since the plan)`}),u.action!==p.action&&t.push({code:"action",unit:u.name,submitted:u.action,fresh:p.action,message:`${u.name}: would now ${p.action} instead of ${u.action}`}),u.deploymentType!==p.deploymentType&&t.push({code:"deployment-type",unit:u.name,submitted:u.deploymentType,fresh:p.deploymentType,message:`${u.name}: deployment type changed ${u.deploymentType} \u2192 ${p.deploymentType}`}),u.importMode!==p.importMode&&t.push({code:"import-mode",unit:u.name,submitted:u.importMode,fresh:p.importMode,message:`${u.name}: import mode changed ${u.importMode} \u2192 ${p.importMode}`}),u.data!==p.data&&t.push({code:"data",unit:u.name,submitted:String(u.data),fresh:String(p.data),message:`${u.name}: reference data would ${p.data?"now":"no longer"} be imported`}),u.flows!==p.flows&&t.push({code:"flows",unit:u.name,submitted:String(u.flows),fresh:String(p.flows),message:`${u.name}: flows would ${p.flows?"now":"no longer"} be activated`}),ct(u.name,u.steps,p.steps,t);let d=new Map(p.patches.map(m=>[m.name,m]));for(let m of u.patches){let f=d.get(m.name);if(!f){t.push({code:"patch-removed",unit:m.name,submitted:"planned",fresh:"absent",message:`${m.name}: patch no longer in ${u.name}'s manifest.`});continue}(m.installedVersion!==f.installedVersion||m.localVersion!==f.localVersion)&&t.push({code:"patch-version",unit:m.name,submitted:`${T(m.installedVersion)} \u2192 ${m.localVersion}`,fresh:`${T(f.installedVersion)} \u2192 ${f.localVersion}`,message:`${m.name}: patch versions changed (${T(m.installedVersion)} \u2192 ${m.localVersion}) to (${T(f.installedVersion)} \u2192 ${f.localVersion})`}),m.action!==f.action&&t.push({code:"patch-action",unit:m.name,submitted:m.action,fresh:f.action,message:`${m.name}: patch would now ${f.action} instead of ${m.action}`}),ct(m.name,m.steps,f.steps,t)}for(let m of p.patches)u.patches.some(f=>f.name===m.name)||t.push({code:"patch-added",unit:m.name,submitted:"absent",fresh:"planned",message:`${m.name}: new patch in ${u.name}'s manifest would deploy.`})}for(let u of i.solutions)a.has(u.name)||t.push({code:"solution-added",unit:u.name,submitted:"absent",fresh:"planned",message:`${u.name}: now targets this environment and was not in the plan.`});let l=r.solutions.map(u=>u.name).filter(u=>s.has(u)).join(","),c=i.solutions.map(u=>u.name).filter(u=>a.has(u)).join(",");return l!==c&&t.push({code:"solution-order",submitted:l,fresh:c,message:"Solution order changed since the plan."}),o()}function qo(e){return e.ok?["Plan is current."]:[`Plan expired: ${e.drifts.length} difference(s) since it was generated (${e.submittedGeneratedAt}).`,...e.drifts.map(n=>` - ${n.message}`),"Nothing was deployed. Re-run `ppdevops plan`, review, and deploy again."]}});var un=k(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.PHASE_STAGE=J.ENV_UNIT=void 0;J.resolvePlan=Qo;J.allSteps=es;var q=lt(),Bo=st(),Wo=pt();J.ENV_UNIT="~env";J.PHASE_STAGE={auth:"Auth","env-pre":"EnvPreAction","env-post":"EnvPostAction",version:"VersionCheck",check:"SolutionCheck",prepack:"PrePackAction",pack:"SolutionPack",pre:"PreAction",import:"Import",upgrade:"Upgrade",data:"DataImport",flows:"FlowActivation",post:"PostAction",cleanup:"Cleanup"};var Yo={import:void 0,"stage-and-upgrade":"stage and upgrade","holding-then-upgrade":"as holding"},Go="legacy $Conn functions require migration";function sr(e){return e.split(/[\\/]/).pop()??e}function ar(e,n){let t=e.find(r=>r.name.toLowerCase()===n.toLowerCase());return t?t.version:null}function B(e,n,t,r={}){let i=J.PHASE_STAGE[n];return{id:`${e}::${i}::${t}`,unit:e,phase:n,stage:i,name:t,type:r.type??"builtin",source:r.source??"builtin",enabled:r.enabled??!0,...r.skipReason!==void 0?{skipReason:r.skipReason}:{},...r.detail!==void 0?{detail:r.detail}:{}}}var zo={prepack:"pre-pack",pre:"pre",post:"post",cleanup:"cleanup"};function ln(e,n,t,r){if(!t)return[];let i=zo[n];switch(t.kind){case"yaml":return t.steps.map(o=>B(e,n,o.name,{type:o.type,source:"yaml",enabled:o.enabled!==!1,...o.enabled===!1?{skipReason:"disabled"}:{}}));case"script":return[B(e,n,sr(t.file),{type:"script",source:"script"})];case"parse-error":return r.push({code:"manifest-parse-error",solution:e,message:`${e}: Failed to parse ${sr(t.file)}: ${t.error} \u2014 ${i} action will be skipped.`}),[];case"missing":return r.push({code:"script-missing",solution:e,message:`${e}: Script not found: ${t.ref} \u2014 ${i} action will be skipped.`}),[]}}function lr(e,n,t){return B(e,"version","version check",{detail:`${n??"not installed"} \u2192 ${t??"\u2014"}`})}function ur(e,n){return B(e,"pack",`pack ${n.toLowerCase()}`)}function cr(e,n,t){let r=[B(e,"import",`${n.toLowerCase()} solution`,{detail:Yo[t]})];return t==="holding-then-upgrade"&&r.push(B(e,"upgrade","upgrade holding solution")),r}function Ko(e,n,t){let r=ar(e.installed,t.name),i=(0,q.decideAction)(r,t.localVersion),o=n.target.DeploymentType??"Managed",s=(0,q.resolveImportMode)(n.target),a=[lr(t.name,r,t.localVersion)];return i.skip||a.push(B(t.name,"check","source check"),ur(t.name,o),...cr(t.name,o,s)),{name:t.name,action:i.action,...i.reason?{reason:i.reason}:{},installedVersion:r,localVersion:t.localVersion,deploymentType:o,importMode:s,steps:a}}function Jo(e,n,t){let r=ar(e.installed,n.name),i=(0,q.decideAction)(r,n.localVersion),o=!i.skip;n.versionFile==="missing"?t.push({code:"no-version-file",solution:n.name,message:`No .version file found for ${n.name} \u2014 version comparison skipped.`}):n.versionFile==="unparseable"&&t.push({code:"version-file-unparseable",solution:n.name,message:`Could not parse ${n.name}.version \u2014 version comparison skipped.`});let s=n.target.DeploymentType??"Managed",a=(0,q.resolveImportMode)(n.target),l=(0,q.decideDeployData)(n.target,o?i.isFirstDeploy:!1),c=(0,q.decideFlows)(n.target.Flows,o),u=[lr(n.name,r,n.localVersion)];return o&&(u.push(B(n.name,"check","source check")),(0,q.isTrue)(n.target.PrePackAction)&&u.push(...ln(n.name,"prepack",n.prePackAction,t)),u.push(ur(n.name,s)),(0,q.isTrue)(n.target.PreAction)&&u.push(...ln(n.name,"pre",n.preAction,t)),u.push(...cr(n.name,s,a))),(0,q.isTrue)(n.target.DeployData)&&(o||l.enabled)&&u.push(B(n.name,"data","reference data",{enabled:l.enabled,...l.enabled?{}:{skipReason:"not first deploy"}})),n.target.Flows&&(0,q.isTrue)(n.target.Flows.ActivateFlows)&&(o||c.enabled)&&u.push(B(n.name,"flows","activate flows",{enabled:c.enabled,...c.enabled?{}:{skipReason:"AlwaysTryActivate not set"}})),o&&((0,q.isTrue)(n.target.PostAction)&&u.push(...ln(n.name,"post",n.postAction,t)),(0,q.isScriptRef)(n.target.CleanupAction)&&u.push(...ln(n.name,"cleanup",n.cleanupAction,t))),{name:n.name,action:i.action,...i.reason?{reason:i.reason}:{},installedIsNewer:i.installedIsNewer,isFirstDeploy:i.isFirstDeploy,installedVersion:r,localVersion:n.localVersion,deploymentType:s,importMode:a,data:l,flows:c,steps:u,patches:n.patches.map(p=>Ko(e,n,p))}}function Xo(e){let n=(t,r)=>(r??[]).map(i=>B(J.ENV_UNIT,t,i,{type:"powershell",source:"script",enabled:!1,skipReason:Go}));return{before:[B(J.ENV_UNIT,"auth","service principal"),...n("env-pre",e.environment.preFunctions)],after:n("env-post",e.environment.postFunctions)}}function Zo(e){let n=i=>e.filter(o=>o.action===i).length,t=n("install"),r=n("upgrade");return{total:e.length,install:t,upgrade:r,skip:n("skip"),willDeploy:t+r,aheadOfSource:e.filter(i=>i.installedIsNewer).length,actionSteps:e.reduce((i,o)=>i+o.steps.filter(s=>s.enabled&&(s.phase==="prepack"||s.phase==="pre"||s.phase==="post"||s.phase==="cleanup")).length,0),dataImports:e.filter(i=>i.data.enabled).length,patches:e.reduce((i,o)=>i+o.patches.filter(s=>s.action!=="skip").length,0)}}function Qo(e){let n=[],t=e.solutions.map(o=>Jo(e,o,n)),r=Zo(t);r.aheadOfSource>0&&n.push({code:"env-ahead",message:`${r.aheadOfSource} solution(s) are newer on ${e.environment.name} than on this branch. Check the branch is current before deploying.`}),t.length===0&&n.push({code:"no-solutions",message:`No solutions are configured to deploy to "${e.environment.name}".`});let i={schemaVersion:Bo.PLAN_SCHEMA_VERSION,generatedAt:e.generatedAt??new Date().toISOString(),source:e.source,environment:{name:e.environment.name,url:e.environment.url,installedSolutionCount:e.installed.length},run:Xo(e),solutions:t,summary:r,warnings:n,fingerprint:""};return i.fingerprint=(0,Wo.fingerprint)(i),i}function es(e){return[...e.run.before,...e.solutions.flatMap(n=>[...n.steps,...n.patches.flatMap(t=>t.steps)]),...e.run.after]}});var fr=k(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});ft.toPlanInfo=ns;function pr(e,n){return e.steps.filter(t=>t.phase===n).map(t=>({name:t.name,type:t.type,enabled:t.enabled}))}function ns(e){return{action:e.action,...e.reason?{reason:e.reason}:{},installedIsNewer:e.installedIsNewer,deploymentType:e.deploymentType,importMode:e.importMode,deployData:e.data.enabled,preActions:pr(e,"pre"),postActions:pr(e,"post")}}});var gr=k(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.renderPlanText=ss;var ts={install:"+",upgrade:"~",skip:"\u2212"},dr={"up-to-date":"up to date","env-ahead":"env ahead"},mr={auth:"auth","env-pre":"env","env-post":"env",version:"ver",check:"check",prepack:"prepack",pack:"pack",pre:"pre",import:"import",upgrade:"import",data:"import",flows:"flows",post:"post",cleanup:"clean"},hr=new Set(["auth","env-pre","env-post","version","check","pack"]),cn={bold:e=>`\x1B[1m${e}\x1B[0m`,dim:e=>`\x1B[2m${e}\x1B[0m`,yellow:e=>`\x1B[33m${e}\x1B[0m`};function rs(e,n){let t=e.detail?` (${e.detail})`:"",r=e.enabled?"":` (${e.skipReason??"skipped"})`;return` ${mr[e.phase].padEnd(n)} ${e.name}${t}${r}`}function is(e){let n=6;for(let t of e.solutions)for(let r of t.steps)hr.has(r.phase)||(n=Math.max(n,mr[r.phase].length));return n}function os(e,n){let t=e.action==="skip"?` (${dr[e.reason??"up-to-date"]})`:"";return` ${"patch".padEnd(n)} ${e.name} (${e.installedVersion??"\u2014"} \u2192 ${e.localVersion})${t}`}function ss(e,n={}){let t=n.color??!0,r=s=>t?s:a=>a,i=[],o=is(e);i.push(r(cn.bold)(`\u25B6 Plan for ${e.environment.name} \u2192 ${e.environment.url}`)),i.push(`[INFO] Fetched ${e.environment.installedSolutionCount} solution(s) via Dataverse Web API.`);for(let s of e.solutions){let a=`${s.installedVersion??"\u2014"} \u2192 ${s.localVersion??"\u2014"}`,l=s.reason?`${a.padEnd(36)} (${dr[s.reason]})`:a;i.push(` ${ts[s.action]} ${s.action.padEnd(8)} ${s.name.padEnd(28)} ${l}`);for(let c of s.steps)hr.has(c.phase)||i.push(r(cn.dim)(rs(c,o)));for(let c of s.patches)i.push(r(cn.dim)(os(c,o)))}for(let s of e.warnings)i.push(`${r(cn.yellow)("[WARN]")} ${s.message}`);return i}});var vt=k(x=>{"use strict";Object.defineProperty(x,"__esModule",{value:!0});x.RUN_ID=void 0;x.createExecution=yr;x.stageIdOf=ls;x.seedFromDocument=fn;x.startRun=Ar;x.markCanceled=us;x.applyRunEvent=cs;x.rootSolutions=gt;x.patchesOf=ps;x.envUnit=fs;x.stagesOf=dn;x.stepsOf=Sr;x.summary=ds;x.planSummary=ms;x.unitProgress=hs;x.activeStageId=gs;x.activeStepId=vs;x.findStage=_s;x.nodeDuration=ys;var we=un();x.RUN_ID="~run";var vr=250;function yr(e){let n={phase:"idle",status:"pending",units:{},unitOrder:[],stages:{},steps:{},log:[]};return e?{...fn(n,e),phase:"planned"}:n}function We(e,n){let t=[...e,n];return t.length>vr&&t.splice(0,t.length-vr),t}function as(e){return e?.split("::")[0]}function ls(e){return e.split("::").slice(0,2).join("::")}function pn(e,n){if(e.units[n.id]=n,n.kind==="env"){e.unitOrder.includes(n.id)||e.unitOrder.unshift(n.id);return}if(n.kind==="patch"){let t=e.unitOrder.indexOf(n.parentId);if(t<0){e.unitOrder.push(n.id);return}for(;e.unitOrder[t+1]&&e.units[e.unitOrder[t+1]]?.parentId===n.parentId;)t++;e.unitOrder.splice(t+1,0,n.id);return}e.unitOrder.push(n.id)}function mt(e,n,t){let r=e.units[n];for(let i of t){let o=`${n}::${i.stage}`,s=e.stages[o];s||(s={id:o,unitId:n,stage:i.stage,name:i.stage,status:"pending",stepOrder:[],log:[]},e.stages[o]=s,r.stageOrder.push(o)),e.steps[i.id]={id:i.id,stageId:o,name:i.name,type:i.type,status:i.enabled?"pending":"skipped",message:i.enabled?i.detail??i.type:i.skipReason??"skipped",plan:i,log:[]},s.stepOrder.push(i.id)}for(let i of r.stageOrder){let o=e.stages[i];o.stepOrder.length&&o.stepOrder.every(s=>e.steps[s].status==="skipped")&&(o.status="skipped",o.message=e.steps[o.stepOrder[0]].message)}}function fn(e,n){let t={...e,name:n.environment.name,environment:n.environment.url,document:n,units:{},unitOrder:[],stages:{},steps:{}},r=[...n.run.before,...n.run.after];r.length&&(pn(t,{id:we.ENV_UNIT,name:"Environment",kind:"env",parentId:x.RUN_ID,status:"pending",stageOrder:[],log:[]}),mt(t,we.ENV_UNIT,r));for(let i of n.solutions){pn(t,{id:i.name,name:i.name,kind:"solution",parentId:x.RUN_ID,status:i.action==="skip"?"skipped":"pending",fromVersion:i.installedVersion??void 0,toVersion:i.localVersion??void 0,plan:i,stageOrder:[],log:[]}),mt(t,i.name,i.steps);for(let o of i.patches)pn(t,{id:o.name,name:o.name,kind:"patch",parentId:i.name,status:o.action==="skip"?"skipped":"pending",fromVersion:o.installedVersion??void 0,toVersion:o.localVersion,plan:o,stageOrder:[],log:[]}),mt(t,o.name,o.steps)}return we.allSteps,t}function Ar(e){let n=new Date().toISOString(),t={};for(let[o,s]of Object.entries(e.units))t[o]={...s,status:"pending",message:void 0,startedAt:void 0,completedAt:void 0,log:[]};let r={};for(let[o,s]of Object.entries(e.steps)){let a=s.plan?.enabled===!1;r[o]=a?s:{...s,status:"pending",message:s.plan?.detail??s.type,metrics:void 0,startedAt:void 0,completedAt:void 0,log:[]}}let i={};for(let[o,s]of Object.entries(e.stages)){let a=s.stepOrder.length>0&&s.stepOrder.every(l=>r[l].status==="skipped");i[o]=a?s:{...s,status:"pending",message:void 0,metrics:void 0,startedAt:void 0,completedAt:void 0,log:[]}}return{...e,phase:"running",status:"running",error:void 0,validation:void 0,exitCode:void 0,startedAt:n,lastEventAt:n,units:t,stages:i,steps:r,log:[]}}function us(e){let n=new Date().toISOString(),t=r=>Object.fromEntries(Object.entries(r).map(([i,o])=>[i,o.status==="running"?{...o,status:"canceled",completedAt:n}:o]));return{...e,phase:"finished",status:"canceled",lastEventAt:n,units:t(e.units),stages:t(e.stages),steps:t(e.steps)}}function xr(e,n,t){let r=e.units[n];if(r)return r;let i=t?.parentId??x.RUN_ID,o=n===we.ENV_UNIT?"env":t?.kind==="patch"||i!==x.RUN_ID?"patch":"solution",s={id:n,name:t?.name??n,kind:o,parentId:i,status:"pending",stageOrder:[],log:[]};return pn(e,s),s}function _r(e,n,t){let r=`${n}::${t}`,i=e.stages[r];if(i)return i;let o=xr(e,n),s={id:r,unitId:n,stage:t,name:t,status:"pending",stepOrder:[],log:[]};return e.stages[r]=s,e.units[n]={...o,stageOrder:[...o.stageOrder,r]},s}function ht(e,n){let t={...e};return n.name&&(t.name=n.name),n.status&&(t.status=n.status),n.message&&(t.message=n.message),n.metrics&&(t.metrics={...e.metrics,...n.metrics}),n.status==="running"&&!t.startedAt&&(t.startedAt=n.ts),n.status&&n.status!=="running"&&n.status!=="pending"&&(t.completedAt=n.ts),t}function cs(e,n){let t={...e,units:{...e.units},unitOrder:[...e.unitOrder],stages:{...e.stages},steps:{...e.steps}};switch(n.ts&&(t.lastEventAt=n.ts),n.type){case"plan":return n.status==="running"?{...yr(),phase:"planning",name:n.name??e.name,environment:n.message??e.environment,startedAt:n.ts,lastEventAt:n.ts}:n.status==="done"?{...n.document?fn(t,n.document):t,phase:"planned"}:t;case"run":{if(n.status==="running"){let r=n.document&&t.document?.fingerprint!==n.document.fingerprint?fn(t,n.document):t,i=Ar(r);return{...i,name:n.name??i.name,environment:n.message??i.environment,startedAt:n.ts??i.startedAt,lastEventAt:n.ts??i.lastEventAt}}return(n.status==="done"||n.status==="error")&&(t.phase="finished"),n.status&&(t.status=n.status),n.exitCode!==void 0&&(t.exitCode=n.exitCode),t}case"solution":{if(!n.id)return t;let r=xr(t,n.id,n),i=ht(r,n);return n.fromVersion!==void 0&&(i.fromVersion=n.fromVersion),n.toVersion!==void 0&&(i.toVersion=n.toVersion),n.plan&&(i.legacyPlan=n.plan),t.units[n.id]=i,t}case"stage":{if(!n.stage)return t;let r=as(n.id)??we.ENV_UNIT,i=_r(t,r,n.stage),o=ht(i,n);return n.message&&(o.log=We(i.log,n.message)),t.stages[o.id]=o,t}case"step":{let r=n.id?.split("::")??[];if(!n.id||r.length<3)return t;let i=r[0],o=r[1],s=_r(t,i,o),a=t.steps[n.id]??{id:n.id,stageId:s.id,name:n.name??r.slice(2).join("::"),status:"pending",log:[]},l=ht(a,n);return t.steps[n.id]||(t.stages[s.id]={...s,stepOrder:[...s.stepOrder,n.id]}),t.steps[n.id]=l,t}case"log":{if(!n.message)return t;let r=n.id?.split("::")??[];if(r.length>=3&&t.steps[n.id]){let i=t.steps[n.id];return t.steps[n.id]={...i,log:We(i.log,n.message)},t}if(r.length===2&&t.stages[n.id]){let i=t.stages[n.id];return t.stages[n.id]={...i,log:We(i.log,n.message)},t}return t.log=We(e.log,n.message),t}case"done":return t.phase==="planning"?(t.phase="planned",t):(t.phase!=="running"||(t.phase="finished",(t.status==="running"||t.status==="pending")&&(t.status=n.exitCode?"error":"done"),n.exitCode!==void 0&&(t.exitCode=n.exitCode)),t);case"error":return n.message&&(t.error=n.message),n.code==="plan-drift"?(t.validation=n.validation,t.phase="planned",t):t.phase==="planning"?(t.phase="planned",t):(t.status="error",n.message&&(t.log=We(e.log,`[ERROR] ${n.message}`)),t);default:return t}}function gt(e){return e.unitOrder.map(n=>e.units[n]).filter(n=>!!n&&n.kind==="solution")}function ps(e,n){return e.unitOrder.map(t=>e.units[t]).filter(t=>!!t&&t.kind==="patch"&&t.parentId===n)}function fs(e){return e.units[we.ENV_UNIT]}function dn(e,n){return(e.units[n]?.stageOrder??[]).map(t=>e.stages[t]).filter(t=>!!t)}function Sr(e,n){return(e.stages[n]?.stepOrder??[]).map(t=>e.steps[t]).filter(t=>!!t)}function ds(e){let n=gt(e),t=0,r=0,i=0,o=0,s=0,a=0;for(let c of n)switch(c.status){case"done":t++;break;case"skipped":r++;break;case"running":i++;break;case"error":o++;break;case"canceled":s++;break;default:a++}let l=t+r+o+s;return{total:n.length,done:t,skipped:r,running:i,failed:o,canceled:s,pending:a,percent:n.length?Math.round(l/n.length*100):0,status:e.status,exitCode:e.exitCode}}function ms(e){if(e.document)return e.document.summary;let n=0,t=0,r=0,i=0,o=0,s=0,a=gt(e);for(let l of a){let c=l.legacyPlan;c?.action==="install"?n++:c?.action==="upgrade"?t++:c?.action==="skip"&&r++,c?.installedIsNewer&&s++,c&&c.action!=="skip"&&(c.deployData&&i++,o+=[...c.preActions??[],...c.postActions??[]].filter(u=>u.enabled!==!1).length)}return{total:a.length,willDeploy:n+t,install:n,upgrade:t,skip:r,aheadOfSource:s,dataImports:i,actionSteps:o,patches:0}}function hs(e,n){let t=dn(e,n).flatMap(o=>Sr(e,o.id)),r=t.length,i=t.filter(o=>o.status!=="pending"&&o.status!=="running").length;return{resolved:i,total:r,percent:r?Math.round(i/r*100):0}}function gs(e){for(let t of e.unitOrder)for(let r of dn(e,t))if(r.status==="running")return r.id;let n;for(let t of e.unitOrder)for(let r of dn(e,t))r.status!=="pending"&&(n=r.id);return n}function vs(e){return Object.values(e.steps).find(n=>n.status==="running")?.id}function _s(e,n){if(!n)return;let t=e.stages[n],r=t?e.units[t.unitId]:void 0;return t&&r?{unit:r,stage:t}:void 0}function ys(e,n=Date.now()){if(!e.startedAt)return;let t=new Date(e.startedAt).getTime(),i=(e.completedAt?new Date(e.completedAt).getTime():n)-t;return i>=0?i:void 0}});var wr=k(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.createCancelToken=As;ze.groupByStage=_t;ze.executePlan=Es;var mn=un(),Ye=vt();function As(){let e=!1,n=[];return{get canceled(){return e},onCancel(t){e?t():n.push(t)},cancel(){if(!e){e=!0;for(let t of n)t()}}}}function _t(e){let n=[];for(let t of e){let r=(0,Ye.stageIdOf)(t.id),i=n.find(o=>o.id===r);i||(i={stage:t.stage,id:r,steps:[]},n.push(i)),i.steps.push(t)}return n}var Ee=class extends Error{constructor(){super("Run cancelled.")}},Ge=class extends Error{},xs={canceled:!1,onCancel(){}},me=e=>({status:"skipped",message:e});function Ss(e){let n=e.patch??e.root,t=n.installedVersion,r=n.localVersion;switch(n.action){case"install":return{status:"done",message:`${e.name} not installed \u2014 fresh deploy (local: ${r??"unknown"})`};case"upgrade":return{status:"done",message:r?`Upgrading ${e.name}: ${t} \u2192 ${r}`:`No local version info \u2014 deploying. Installed: ${t??"not installed"}`};case"skip":return me(n.reason==="env-ahead"?`Installed (${t}) is newer than local (${r}) \u2014 skipping ${e.name}.`:`Installed (${t}) matches local (${r}) \u2014 skipping ${e.name}.`)}}function ws(e){let n=e.patch??e.root;return n.reason==="env-ahead"?`Environment is ahead of source (${n.installedVersion}).`:`Solution is up-to-date (${n.installedVersion}).`}async function Es(e,n,t,r={}){let i=r.dryRun??!1,o=r.cancel??xs,s=()=>{if(o.canceled)throw new Ee},a=!1,l=(f,h)=>({doc:e,dryRun:i,cancel:o,step:f,unit:h,log:_=>t.log(_,f.id)});async function c(f,h,_,A,v){let te=S=>({parentId:h.id,name:S.name,type:S.type}),Ue=h.steps.filter(S=>S.enabled);if(A||Ue.length===0){let S=A??h.steps[0]?.skipReason??"Not required.";for(let E of h.steps)t.step(E.id,"skipped",{...te(E),message:A??E.skipReason??S});return t.stage(h.id,h.stage,"skipped",{parentId:f,message:S}),{status:"skipped"}}let Z=h.steps.length,Q=Z>1;t.stage(h.id,h.stage,"running",{parentId:f,metrics:Q?{current:0,total:Z}:void 0});for(let S of h.steps)t.step(S.id,S.enabled?"pending":"skipped",{...te(S),message:S.enabled?S.type:S.skipReason??"skipped"});let de=0,qe=0,K,Ae,j;for(let[S,E]of h.steps.entries()){if(!E.enabled)continue;if(j){t.step(E.id,"skipped",{...te(E),message:j});continue}s(),t.step(E.id,"running",te(E));let P;try{P=await _(E)}catch(ee){if(ee instanceof Ee)throw ee;P={status:"error",message:ee instanceof Error?ee.message:String(ee)}}t.step(E.id,P.status,{...te(E),message:P.message??(P.status==="done"?E.type:void 0),metrics:P.metrics}),P.status==="error"&&(de++,K??(K=P.message??`${E.name} failed`),Ae??(Ae=E.phase),v&&(j=v(E))),P.status==="done"&&qe++,Q&&t.stage(h.id,h.stage,"running",{parentId:f,metrics:{current:S+1,total:Z}})}let se=de?"error":qe?"done":"skipped";return t.stage(h.id,h.stage,se,{parentId:f,message:de?K:void 0,metrics:Q?{current:Z,total:Z}:void 0}),{status:se,error:K,failedPhase:Ae}}async function u(f,h,_){let A=f.patch??f.root;t.unit(f.name,"running",{name:f.name,kind:f.kind,parentId:_,fromVersion:A.installedVersion,toVersion:A.localVersion}),A.action==="skip"&&A.reason==="env-ahead"&&t.warn(`${f.name}: environment is ahead of source \u2014 installed ${A.installedVersion}, branch has ${A.localVersion}. Skipping, but this build cannot come from this branch.`);let v,te,Ue=!1,Z="Pack failed.",Q=!1,de=!1,qe=!1,K;try{for(let j of _t(h)){s();let se=te;!se&&Ue&&(j.stage==="DataImport"?se=void 0:j.stage==="FlowActivation"?se=f.root.flows.reason==="always"?void 0:`${Z.replace(/\.$/,"")} \u2014 nothing imported.`:se=Z);let S=await c(f.name,j,async E=>{let P=l(E,f);switch(E.phase){case"version":return Ss(f);case"check":return n.checkSource(f,P);case"pack":{let ee=await n.pack(f,P);return v=ee.artifact,{status:ee.status,message:ee.message,metrics:ee.metrics}}case"import":return i?me("Dry run \u2014 not imported."):n.import(f,v,P);case"upgrade":return i?me("Dry run \u2014 upgrade skipped."):n.upgrade(f,P);case"data":return i?me("Dry run \u2014 data import skipped."):n.data(f.root,P);case"flows":return i?me("Dry run \u2014 flow activation skipped."):n.flows(f.root,P);case"prepack":case"pre":case"post":case"cleanup":return n.actionStep(f.root,P);default:return me(`No handler for ${E.phase}.`)}},se,j.stage==="PrePackAction"?()=>"Pre-pack action failed.":void 0);if(S.status==="error")switch(j.stage){case"SolutionCheck":te="Source check failed.",Q=!0,qe=!0,K=S.error;break;case"PrePackAction":Ue=!0,Q=!0,K=S.error,Z="Pre-pack action failed.";break;case"SolutionPack":Ue=!0,Q=!0,K=S.error,Z="Pack failed.";break;case"PreAction":case"PostAction":case"Cleanup":t.warn(`${f.name}: ${j.stage} failed (non-fatal): ${S.error}`);break;default:te="Run aborted.",Q=!0,de=!0,K=S.error;break}}}catch(j){throw j instanceof Ee&&t.unit(f.name,"canceled",{name:f.name,kind:f.kind,parentId:_,message:"Run cancelled."}),j}finally{if(v!==void 0&&n.discardArtifact)try{await n.discardArtifact(f,v)}catch{}}let Ae=Q?"error":A.action==="skip"?"skipped":"done";if(Q&&(a=!0),t.unit(f.name,Ae,{name:f.name,kind:f.kind,parentId:_,message:K??(Ae==="skipped"?ws(f):void 0)}),de)throw new Ge(K??`${f.name} failed.`);return{stopRun:de,skipPatches:qe}}async function p(f){for(let h of _t(f)){s();let _=await c(mn.ENV_UNIT,h,async A=>{let v=l(A,null);return A.phase==="auth"?i?me("Dry run \u2014 auth skipped."):n.auth(v):n.envAction(v)});if(_.status==="error"&&h.stage==="Auth")throw new Ge(_.error??"Authentication failed.")}}t.run("running",{name:e.environment.name,environment:e.environment.url,document:e});let d={status:"done",exitCode:0},m=e.run.before.length+e.run.after.length>0;try{m&&t.unit(mn.ENV_UNIT,"running",{name:"Environment",kind:"env",parentId:Ye.RUN_ID}),await p(e.run.before);for(let f of e.solutions){s();let h={kind:"solution",name:f.name,root:f,deploymentType:f.deploymentType,importMode:f.importMode},{skipPatches:_}=await u(h,f.steps,Ye.RUN_ID);for(let A of f.patches){let v={kind:"patch",name:A.name,root:f,patch:A,deploymentType:A.deploymentType,importMode:A.importMode};if(_){t.unit(A.name,"skipped",{name:A.name,kind:"patch",parentId:f.name,fromVersion:A.installedVersion,toVersion:A.localVersion,message:"Root source check failed."});continue}await u(v,A.steps,f.name)}}await p(e.run.after),m&&t.unit(mn.ENV_UNIT,"done",{name:"Environment",kind:"env",parentId:Ye.RUN_ID}),a&&(d={status:"error",exitCode:1,error:"One or more solutions failed."})}catch(f){f instanceof Ee?d={status:"canceled",exitCode:130,error:f.message}:f instanceof Ge?d={status:"error",exitCode:1,error:f.message}:d={status:"error",exitCode:1,error:f instanceof Error?f.message:String(f)},m&&t.unit(mn.ENV_UNIT,d.status==="canceled"?"canceled":"error",{name:"Environment",kind:"env",parentId:Ye.RUN_ID,message:d.error})}finally{try{await n.teardown()}catch(f){t.warn(`Teardown failed: ${f instanceof Error?f.message:String(f)}`)}}return t.run(d.status,{name:e.environment.name,environment:e.environment.url,exitCode:d.exitCode,message:d.error}),d}});var Er=k(D=>{"use strict";var bs=D&&D.__createBinding||(Object.create?(function(e,n,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(n,t);(!i||("get"in i?!n.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,i)}):(function(e,n,t,r){r===void 0&&(r=t),e[r]=n[t]})),ae=D&&D.__exportStar||function(e,n){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(n,t)&&bs(n,e,t)};Object.defineProperty(D,"__esModule",{value:!0});ae(st(),D);ae(lt(),D);ae(un(),D);ae(fr(),D);ae(gr(),D);ae(pt(),D);ae(vt(),D);ae(wr(),D)});var he=k(H=>{"use strict";var Cs=H&&H.__createBinding||(Object.create?(function(e,n,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(n,t);(!i||("get"in i?!n.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,i)}):(function(e,n,t,r){r===void 0&&(r=t),e[r]=n[t]})),Os=H&&H.__exportStar||function(e,n){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(n,t)&&Cs(n,e,t)};Object.defineProperty(H,"__esModule",{value:!0});H.WS_EVENTS=H.RUN_EVENT_SCHEMA_VERSION=H.RunnerStage=void 0;Os(Er(),H);H.RunnerStage={Auth:"Auth",EnvPreAction:"EnvPreAction",VersionCheck:"VersionCheck",SolutionPack:"SolutionPack",SolutionCheck:"SolutionCheck",PrePackAction:"PrePackAction",PreAction:"PreAction",Import:"Import",Upgrade:"Upgrade",DataImport:"DataImport",FlowActivation:"FlowActivation",PostAction:"PostAction",Cleanup:"Cleanup",EnvPostAction:"EnvPostAction"};H.RUN_EVENT_SCHEMA_VERSION=1;H.WS_EVENTS={TERMINAL_OUTPUT:"terminal:output",TERMINAL_INPUT:"terminal:input",TERMINAL_RESIZE:"terminal:resize",TERMINAL_START:"terminal:start",TERMINAL_DONE:"terminal:done",TERMINAL_ERROR:"terminal:error",TERMINAL_ATTACH:"terminal:attach",TERMINAL_KILL:"terminal:kill",RUNNER_EVENT:"runner:event",IDLE_WARNING:"idle:warning",IDLE_CANCELLED:"idle:cancelled"}});var ir=y(rr(),1),{program:Ou,createCommand:Pu,createArgument:ku,createOption:Iu,CommanderError:$u,InvalidArgumentError:Nu,InvalidOptionArgumentError:Tu,Command:xe,Argument:Du,Option:Fu,Help:Vu}=ir.default;var qn=y(require("path")),fe=y(require("fs"));var br=y(require("fs")),Oe=y(he()),be="human";function hn(){return process.env.PPDEVOPS_EVENTS_FILE||""}function Cr(){return be==="events"}function Or(){return be==="human"||be==="events"&&!!hn()}function W(e){Or()&&console.log(e)}function le(e){(Or()||be==="document")&&console.error(e)}function gn(e){for(let n of e)W(n)}function Pr(e){be==="document"&&process.stdout.write(JSON.stringify(e,null,2)+`
|
|
24
|
-
`)}var Pe="~run",Ps="~env",At=null,Ce=null,
|
|
23
|
+
`)}),this}_outputHelpIfRequested(n){let t=this._getHelpOption();t&&n.find(i=>t.is(i))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Xt(e){return e.map(n=>{if(!n.startsWith("--inspect"))return n;let t,r="127.0.0.1",i="9229",o;return(o=n.match(/^(--inspect(-brk)?)$/))!==null?t=o[1]:(o=n.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=o[1],/^\d+$/.test(o[3])?i=o[3]:r=o[3]):(o=n.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=o[1],r=o[3],i=o[4]),t&&i!=="0"?`${t}=${r}:${parseInt(i)+1}`:n})}Zt.Command=it});var rr=k(U=>{var{Argument:er}=on(),{Command:ot}=Qt(),{CommanderError:$o,InvalidArgumentError:nr}=Be(),{Help:No}=Jn(),{Option:tr}=et();U.program=new ot;U.createCommand=e=>new ot(e);U.createOption=(e,n)=>new tr(e,n);U.createArgument=(e,n)=>new er(e,n);U.Command=ot;U.Option=tr;U.Argument=er;U.Help=No;U.CommanderError=$o;U.InvalidArgumentError=nr;U.InvalidOptionArgumentError=nr});var st=k(sn=>{"use strict";Object.defineProperty(sn,"__esModule",{value:!0});sn.PLAN_SCHEMA_VERSION=void 0;sn.PLAN_SCHEMA_VERSION=2});var lt=k(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});O.isScriptRef=O.isTrue=void 0;O.compareVersions=at;O.versionGte=Fo;O.decideAction=Vo;O.decideDeployData=Ro;O.decideFlows=Lo;O.resolveImportMode=Mo;var To=e=>e===!0||String(e).toLowerCase()==="true";O.isTrue=To;var Do=e=>!!e&&e.toLowerCase()!=="false"&&e.toLowerCase()!=="true"&&e.trim()!=="";O.isScriptRef=Do;function or(e){return e.split(".").map(n=>parseInt(n,10)||0)}function at(e,n){let t=or(e),r=or(n);for(let i=0;i<Math.max(t.length,r.length);i++){let o=t[i]??0,s=r[i]??0;if(o>s)return 1;if(o<s)return-1}return 0}function Fo(e,n){return at(e,n)>=0}function Vo(e,n){let t=e===null,r=n&&!t?at(e,n):null,i=r!==null&&r>=0,o=r===1;return{action:i?"skip":t?"install":"upgrade",reason:i?o?"env-ahead":"up-to-date":void 0,skip:i,isFirstDeploy:t,installedIsNewer:o}}function Ro(e,n){return(0,O.isTrue)(e.DeployData)?(0,O.isTrue)(e.AlwaysDeployData)?{enabled:!0,reason:"always"}:n?{enabled:!0,reason:"first-deploy"}:{enabled:!1,reason:"not-first-deploy"}:{enabled:!1,reason:"not-configured"}}function Lo(e,n){return!e||!(0,O.isTrue)(e.ActivateFlows)?{enabled:!1,reason:"not-configured"}:n?{enabled:!0,reason:"deploying"}:(0,O.isTrue)(e.AlwaysTryActivate)?{enabled:!0,reason:"always"}:{enabled:!1,reason:"always-not-set"}}function Mo(e,n){return n?"import":(0,O.isTrue)(e.StageForUpgrade)?"holding-then-upgrade":(0,O.isTrue)(e.DeployAsHolding)?"stage-and-upgrade":"import"}});var pt=k(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Se.comparable=an;Se.fingerprint=Ho;Se.validatePlan=Uo;Se.renderValidationText=qo;var ut=e=>e.map(n=>({id:n.id,enabled:n.enabled}));function an(e){return{schemaVersion:e.schemaVersion,environmentUrl:e.environment.url,run:ut([...e.run.before,...e.run.after]),solutions:e.solutions.map(n=>({name:n.name,action:n.action,installedVersion:n.installedVersion,localVersion:n.localVersion,deploymentType:n.deploymentType,importMode:n.importMode,data:n.data.enabled,flows:n.flows.enabled,steps:ut(n.steps),patches:n.patches.map(t=>({name:t.name,action:t.action,installedVersion:t.installedVersion,localVersion:t.localVersion,steps:ut(t.steps)}))}))}}function jo(e){let n=BigInt("0xcbf29ce484222325"),t=BigInt("0x100000001b3"),r=BigInt("0xffffffffffffffff");for(let i=0;i<e.length;i++)n^=BigInt(e.charCodeAt(i)),n=n*t&r;return n.toString(16).padStart(16,"0")}function Ho(e){return jo(JSON.stringify(an(e)))}var T=e=>e==null?"\u2014":String(e);function ct(e,n,t,r){let i=new Map(t.map(s=>[s.id,s])),o=new Set(n.map(s=>s.id));for(let s of n){let a=i.get(s.id);a?a.enabled!==s.enabled&&r.push({code:"step-enabled",unit:e,stepId:s.id,submitted:String(s.enabled),fresh:String(a.enabled),message:`${e}: step ${s.id} is now ${a.enabled?"enabled":"disabled"}`}):r.push({code:"step-removed",unit:e,stepId:s.id,submitted:"present",fresh:"absent",message:`${e}: step no longer planned \u2014 ${s.id}`})}for(let s of t)o.has(s.id)||r.push({code:"step-added",unit:e,stepId:s.id,submitted:"absent",fresh:"present",message:`${e}: new step would run \u2014 ${s.id}`})}function Uo(e,n){let t=[],r=an(e),i=an(n),o=()=>({ok:t.length===0,drifts:t,submittedFingerprint:e.fingerprint,freshFingerprint:n.fingerprint,submittedGeneratedAt:e.generatedAt});if(r.schemaVersion!==i.schemaVersion)return t.push({code:"schema-version",submitted:T(r.schemaVersion),fresh:T(i.schemaVersion),message:`Plan schema ${r.schemaVersion} cannot be checked by this CLI (expects ${i.schemaVersion}). Re-run \`ppdevops plan\`.`}),o();if(r.environmentUrl!==i.environmentUrl)return t.push({code:"environment-url",submitted:r.environmentUrl,fresh:i.environmentUrl,message:`Plan targets ${r.environmentUrl} but this deploy targets ${i.environmentUrl}.`}),o();if(JSON.stringify(r)===JSON.stringify(i))return o();ct("~env",r.run,i.run,t);let s=new Map(i.solutions.map(u=>[u.name,u])),a=new Set(r.solutions.map(u=>u.name));for(let u of r.solutions){let p=s.get(u.name);if(!p){t.push({code:"solution-removed",unit:u.name,submitted:"planned",fresh:"absent",message:`${u.name}: no longer targets this environment.`});continue}u.installedVersion!==p.installedVersion&&t.push({code:"installed-version",unit:u.name,submitted:T(u.installedVersion),fresh:T(p.installedVersion),message:`${u.name}: installed version changed ${T(u.installedVersion)} \u2192 ${T(p.installedVersion)} (someone deployed since the plan)`}),u.localVersion!==p.localVersion&&t.push({code:"local-version",unit:u.name,submitted:T(u.localVersion),fresh:T(p.localVersion),message:`${u.name}: local version changed ${T(u.localVersion)} \u2192 ${T(p.localVersion)} (the branch moved since the plan)`}),u.action!==p.action&&t.push({code:"action",unit:u.name,submitted:u.action,fresh:p.action,message:`${u.name}: would now ${p.action} instead of ${u.action}`}),u.deploymentType!==p.deploymentType&&t.push({code:"deployment-type",unit:u.name,submitted:u.deploymentType,fresh:p.deploymentType,message:`${u.name}: deployment type changed ${u.deploymentType} \u2192 ${p.deploymentType}`}),u.importMode!==p.importMode&&t.push({code:"import-mode",unit:u.name,submitted:u.importMode,fresh:p.importMode,message:`${u.name}: import mode changed ${u.importMode} \u2192 ${p.importMode}`}),u.data!==p.data&&t.push({code:"data",unit:u.name,submitted:String(u.data),fresh:String(p.data),message:`${u.name}: reference data would ${p.data?"now":"no longer"} be imported`}),u.flows!==p.flows&&t.push({code:"flows",unit:u.name,submitted:String(u.flows),fresh:String(p.flows),message:`${u.name}: flows would ${p.flows?"now":"no longer"} be activated`}),ct(u.name,u.steps,p.steps,t);let d=new Map(p.patches.map(m=>[m.name,m]));for(let m of u.patches){let f=d.get(m.name);if(!f){t.push({code:"patch-removed",unit:m.name,submitted:"planned",fresh:"absent",message:`${m.name}: patch no longer in ${u.name}'s manifest.`});continue}(m.installedVersion!==f.installedVersion||m.localVersion!==f.localVersion)&&t.push({code:"patch-version",unit:m.name,submitted:`${T(m.installedVersion)} \u2192 ${m.localVersion}`,fresh:`${T(f.installedVersion)} \u2192 ${f.localVersion}`,message:`${m.name}: patch versions changed (${T(m.installedVersion)} \u2192 ${m.localVersion}) to (${T(f.installedVersion)} \u2192 ${f.localVersion})`}),m.action!==f.action&&t.push({code:"patch-action",unit:m.name,submitted:m.action,fresh:f.action,message:`${m.name}: patch would now ${f.action} instead of ${m.action}`}),ct(m.name,m.steps,f.steps,t)}for(let m of p.patches)u.patches.some(f=>f.name===m.name)||t.push({code:"patch-added",unit:m.name,submitted:"absent",fresh:"planned",message:`${m.name}: new patch in ${u.name}'s manifest would deploy.`})}for(let u of i.solutions)a.has(u.name)||t.push({code:"solution-added",unit:u.name,submitted:"absent",fresh:"planned",message:`${u.name}: now targets this environment and was not in the plan.`});let l=r.solutions.map(u=>u.name).filter(u=>s.has(u)).join(","),c=i.solutions.map(u=>u.name).filter(u=>a.has(u)).join(",");return l!==c&&t.push({code:"solution-order",submitted:l,fresh:c,message:"Solution order changed since the plan."}),o()}function qo(e){return e.ok?["Plan is current."]:[`Plan expired: ${e.drifts.length} difference(s) since it was generated (${e.submittedGeneratedAt}).`,...e.drifts.map(n=>` - ${n.message}`),"Nothing was deployed. Re-run `ppdevops plan`, review, and deploy again."]}});var un=k(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.PHASE_STAGE=J.ENV_UNIT=void 0;J.resolvePlan=Qo;J.allSteps=es;var q=lt(),Bo=st(),Wo=pt();J.ENV_UNIT="~env";J.PHASE_STAGE={auth:"Auth","env-pre":"EnvPreAction","env-post":"EnvPostAction",version:"VersionCheck",check:"SolutionCheck",prepack:"PrePackAction",pack:"SolutionPack",pre:"PreAction",import:"Import",upgrade:"Upgrade",data:"DataImport",flows:"FlowActivation",post:"PostAction",cleanup:"Cleanup"};var Yo={import:void 0,"stage-and-upgrade":"stage and upgrade","holding-then-upgrade":"as holding"},Go="legacy $Conn functions require migration";function sr(e){return e.split(/[\\/]/).pop()??e}function ar(e,n){let t=e.find(r=>r.name.toLowerCase()===n.toLowerCase());return t?t.version:null}function B(e,n,t,r={}){let i=J.PHASE_STAGE[n];return{id:`${e}::${i}::${t}`,unit:e,phase:n,stage:i,name:t,type:r.type??"builtin",source:r.source??"builtin",enabled:r.enabled??!0,...r.skipReason!==void 0?{skipReason:r.skipReason}:{},...r.detail!==void 0?{detail:r.detail}:{}}}var zo={prepack:"pre-pack",pre:"pre",post:"post",cleanup:"cleanup"};function ln(e,n,t,r){if(!t)return[];let i=zo[n];switch(t.kind){case"yaml":return t.steps.map(o=>B(e,n,o.name,{type:o.type,source:"yaml",enabled:o.enabled!==!1,...o.enabled===!1?{skipReason:"disabled"}:{}}));case"script":return[B(e,n,sr(t.file),{type:"script",source:"script"})];case"parse-error":return r.push({code:"manifest-parse-error",solution:e,message:`${e}: Failed to parse ${sr(t.file)}: ${t.error} \u2014 ${i} action will be skipped.`}),[];case"missing":return r.push({code:"script-missing",solution:e,message:`${e}: Script not found: ${t.ref} \u2014 ${i} action will be skipped.`}),[]}}function lr(e,n,t){return B(e,"version","version check",{detail:`${n??"not installed"} \u2192 ${t??"\u2014"}`})}function ur(e,n){return B(e,"pack",`pack ${n.toLowerCase()}`)}function cr(e,n,t){let r=[B(e,"import",`${n.toLowerCase()} solution`,{detail:Yo[t]})];return t==="holding-then-upgrade"&&r.push(B(e,"upgrade","upgrade holding solution")),r}function Ko(e,n,t){let r=ar(e.installed,t.name),i=(0,q.decideAction)(r,t.localVersion),o=n.target.DeploymentType??"Managed",s=(0,q.resolveImportMode)(n.target,i.isFirstDeploy),a=[lr(t.name,r,t.localVersion)];return i.skip||a.push(B(t.name,"check","source check"),ur(t.name,o),...cr(t.name,o,s)),{name:t.name,action:i.action,...i.reason?{reason:i.reason}:{},installedVersion:r,localVersion:t.localVersion,deploymentType:o,importMode:s,steps:a}}function Jo(e,n,t){let r=ar(e.installed,n.name),i=(0,q.decideAction)(r,n.localVersion),o=!i.skip;n.versionFile==="missing"?t.push({code:"no-version-file",solution:n.name,message:`No .version file found for ${n.name} \u2014 version comparison skipped.`}):n.versionFile==="unparseable"&&t.push({code:"version-file-unparseable",solution:n.name,message:`Could not parse ${n.name}.version \u2014 version comparison skipped.`});let s=n.target.DeploymentType??"Managed",a=(0,q.resolveImportMode)(n.target,i.isFirstDeploy),l=(0,q.decideDeployData)(n.target,o?i.isFirstDeploy:!1),c=(0,q.decideFlows)(n.target.Flows,o),u=[lr(n.name,r,n.localVersion)];return o&&(u.push(B(n.name,"check","source check")),(0,q.isTrue)(n.target.PrePackAction)&&u.push(...ln(n.name,"prepack",n.prePackAction,t)),u.push(ur(n.name,s)),(0,q.isTrue)(n.target.PreAction)&&u.push(...ln(n.name,"pre",n.preAction,t)),u.push(...cr(n.name,s,a))),(0,q.isTrue)(n.target.DeployData)&&(o||l.enabled)&&u.push(B(n.name,"data","reference data",{enabled:l.enabled,...l.enabled?{}:{skipReason:"not first deploy"}})),n.target.Flows&&(0,q.isTrue)(n.target.Flows.ActivateFlows)&&(o||c.enabled)&&u.push(B(n.name,"flows","activate flows",{enabled:c.enabled,...c.enabled?{}:{skipReason:"AlwaysTryActivate not set"}})),o&&((0,q.isTrue)(n.target.PostAction)&&u.push(...ln(n.name,"post",n.postAction,t)),(0,q.isScriptRef)(n.target.CleanupAction)&&u.push(...ln(n.name,"cleanup",n.cleanupAction,t))),{name:n.name,action:i.action,...i.reason?{reason:i.reason}:{},installedIsNewer:i.installedIsNewer,isFirstDeploy:i.isFirstDeploy,installedVersion:r,localVersion:n.localVersion,deploymentType:s,importMode:a,data:l,flows:c,steps:u,patches:n.patches.map(p=>Ko(e,n,p))}}function Xo(e){let n=(t,r)=>(r??[]).map(i=>B(J.ENV_UNIT,t,i,{type:"powershell",source:"script",enabled:!1,skipReason:Go}));return{before:[B(J.ENV_UNIT,"auth","service principal"),...n("env-pre",e.environment.preFunctions)],after:n("env-post",e.environment.postFunctions)}}function Zo(e){let n=i=>e.filter(o=>o.action===i).length,t=n("install"),r=n("upgrade");return{total:e.length,install:t,upgrade:r,skip:n("skip"),willDeploy:t+r,aheadOfSource:e.filter(i=>i.installedIsNewer).length,actionSteps:e.reduce((i,o)=>i+o.steps.filter(s=>s.enabled&&(s.phase==="prepack"||s.phase==="pre"||s.phase==="post"||s.phase==="cleanup")).length,0),dataImports:e.filter(i=>i.data.enabled).length,patches:e.reduce((i,o)=>i+o.patches.filter(s=>s.action!=="skip").length,0)}}function Qo(e){let n=[],t=e.solutions.map(o=>Jo(e,o,n)),r=Zo(t);r.aheadOfSource>0&&n.push({code:"env-ahead",message:`${r.aheadOfSource} solution(s) are newer on ${e.environment.name} than on this branch. Check the branch is current before deploying.`}),t.length===0&&n.push({code:"no-solutions",message:`No solutions are configured to deploy to "${e.environment.name}".`});let i={schemaVersion:Bo.PLAN_SCHEMA_VERSION,generatedAt:e.generatedAt??new Date().toISOString(),source:e.source,environment:{name:e.environment.name,url:e.environment.url,installedSolutionCount:e.installed.length},run:Xo(e),solutions:t,summary:r,warnings:n,fingerprint:""};return i.fingerprint=(0,Wo.fingerprint)(i),i}function es(e){return[...e.run.before,...e.solutions.flatMap(n=>[...n.steps,...n.patches.flatMap(t=>t.steps)]),...e.run.after]}});var fr=k(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});ft.toPlanInfo=ns;function pr(e,n){return e.steps.filter(t=>t.phase===n).map(t=>({name:t.name,type:t.type,enabled:t.enabled}))}function ns(e){return{action:e.action,...e.reason?{reason:e.reason}:{},installedIsNewer:e.installedIsNewer,deploymentType:e.deploymentType,importMode:e.importMode,deployData:e.data.enabled,preActions:pr(e,"pre"),postActions:pr(e,"post")}}});var gr=k(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.renderPlanText=ss;var ts={install:"+",upgrade:"~",skip:"\u2212"},dr={"up-to-date":"up to date","env-ahead":"env ahead"},mr={auth:"auth","env-pre":"env","env-post":"env",version:"ver",check:"check",prepack:"prepack",pack:"pack",pre:"pre",import:"import",upgrade:"import",data:"import",flows:"flows",post:"post",cleanup:"clean"},hr=new Set(["auth","env-pre","env-post","version","check","pack"]),cn={bold:e=>`\x1B[1m${e}\x1B[0m`,dim:e=>`\x1B[2m${e}\x1B[0m`,yellow:e=>`\x1B[33m${e}\x1B[0m`};function rs(e,n){let t=e.detail?` (${e.detail})`:"",r=e.enabled?"":` (${e.skipReason??"skipped"})`;return` ${mr[e.phase].padEnd(n)} ${e.name}${t}${r}`}function is(e){let n=6;for(let t of e.solutions)for(let r of t.steps)hr.has(r.phase)||(n=Math.max(n,mr[r.phase].length));return n}function os(e,n){let t=e.action==="skip"?` (${dr[e.reason??"up-to-date"]})`:"";return` ${"patch".padEnd(n)} ${e.name} (${e.installedVersion??"\u2014"} \u2192 ${e.localVersion})${t}`}function ss(e,n={}){let t=n.color??!0,r=s=>t?s:a=>a,i=[],o=is(e);i.push(r(cn.bold)(`\u25B6 Plan for ${e.environment.name} \u2192 ${e.environment.url}`)),i.push(`[INFO] Fetched ${e.environment.installedSolutionCount} solution(s) via Dataverse Web API.`);for(let s of e.solutions){let a=`${s.installedVersion??"\u2014"} \u2192 ${s.localVersion??"\u2014"}`,l=s.reason?`${a.padEnd(36)} (${dr[s.reason]})`:a;i.push(` ${ts[s.action]} ${s.action.padEnd(8)} ${s.name.padEnd(28)} ${l}`);for(let c of s.steps)hr.has(c.phase)||i.push(r(cn.dim)(rs(c,o)));for(let c of s.patches)i.push(r(cn.dim)(os(c,o)))}for(let s of e.warnings)i.push(`${r(cn.yellow)("[WARN]")} ${s.message}`);return i}});var vt=k(x=>{"use strict";Object.defineProperty(x,"__esModule",{value:!0});x.RUN_ID=void 0;x.createExecution=_r;x.stageIdOf=ls;x.seedFromDocument=fn;x.startRun=Ar;x.markCanceled=us;x.applyRunEvent=cs;x.rootSolutions=gt;x.patchesOf=ps;x.envUnit=fs;x.stagesOf=dn;x.stepsOf=Sr;x.summary=ds;x.planSummary=ms;x.unitProgress=hs;x.activeStageId=gs;x.activeStepId=vs;x.findStage=ys;x.nodeDuration=_s;var we=un();x.RUN_ID="~run";var vr=250;function _r(e){let n={phase:"idle",status:"pending",units:{},unitOrder:[],stages:{},steps:{},log:[]};return e?{...fn(n,e),phase:"planned"}:n}function We(e,n){let t=[...e,n];return t.length>vr&&t.splice(0,t.length-vr),t}function as(e){return e?.split("::")[0]}function ls(e){return e.split("::").slice(0,2).join("::")}function pn(e,n){if(e.units[n.id]=n,n.kind==="env"){e.unitOrder.includes(n.id)||e.unitOrder.unshift(n.id);return}if(n.kind==="patch"){let t=e.unitOrder.indexOf(n.parentId);if(t<0){e.unitOrder.push(n.id);return}for(;e.unitOrder[t+1]&&e.units[e.unitOrder[t+1]]?.parentId===n.parentId;)t++;e.unitOrder.splice(t+1,0,n.id);return}e.unitOrder.push(n.id)}function mt(e,n,t){let r=e.units[n];for(let i of t){let o=`${n}::${i.stage}`,s=e.stages[o];s||(s={id:o,unitId:n,stage:i.stage,name:i.stage,status:"pending",stepOrder:[],log:[]},e.stages[o]=s,r.stageOrder.push(o)),e.steps[i.id]={id:i.id,stageId:o,name:i.name,type:i.type,status:i.enabled?"pending":"skipped",message:i.enabled?i.detail??i.type:i.skipReason??"skipped",plan:i,log:[]},s.stepOrder.push(i.id)}for(let i of r.stageOrder){let o=e.stages[i];o.stepOrder.length&&o.stepOrder.every(s=>e.steps[s].status==="skipped")&&(o.status="skipped",o.message=e.steps[o.stepOrder[0]].message)}}function fn(e,n){let t={...e,name:n.environment.name,environment:n.environment.url,document:n,units:{},unitOrder:[],stages:{},steps:{}},r=[...n.run.before,...n.run.after];r.length&&(pn(t,{id:we.ENV_UNIT,name:"Environment",kind:"env",parentId:x.RUN_ID,status:"pending",stageOrder:[],log:[]}),mt(t,we.ENV_UNIT,r));for(let i of n.solutions){pn(t,{id:i.name,name:i.name,kind:"solution",parentId:x.RUN_ID,status:i.action==="skip"?"skipped":"pending",fromVersion:i.installedVersion??void 0,toVersion:i.localVersion??void 0,plan:i,stageOrder:[],log:[]}),mt(t,i.name,i.steps);for(let o of i.patches)pn(t,{id:o.name,name:o.name,kind:"patch",parentId:i.name,status:o.action==="skip"?"skipped":"pending",fromVersion:o.installedVersion??void 0,toVersion:o.localVersion,plan:o,stageOrder:[],log:[]}),mt(t,o.name,o.steps)}return we.allSteps,t}function Ar(e){let n=new Date().toISOString(),t={};for(let[o,s]of Object.entries(e.units))t[o]={...s,status:"pending",message:void 0,startedAt:void 0,completedAt:void 0,log:[]};let r={};for(let[o,s]of Object.entries(e.steps)){let a=s.plan?.enabled===!1;r[o]=a?s:{...s,status:"pending",message:s.plan?.detail??s.type,metrics:void 0,startedAt:void 0,completedAt:void 0,log:[]}}let i={};for(let[o,s]of Object.entries(e.stages)){let a=s.stepOrder.length>0&&s.stepOrder.every(l=>r[l].status==="skipped");i[o]=a?s:{...s,status:"pending",message:void 0,metrics:void 0,startedAt:void 0,completedAt:void 0,log:[]}}return{...e,phase:"running",status:"running",error:void 0,validation:void 0,exitCode:void 0,startedAt:n,lastEventAt:n,units:t,stages:i,steps:r,log:[]}}function us(e){let n=new Date().toISOString(),t=r=>Object.fromEntries(Object.entries(r).map(([i,o])=>[i,o.status==="running"?{...o,status:"canceled",completedAt:n}:o]));return{...e,phase:"finished",status:"canceled",lastEventAt:n,units:t(e.units),stages:t(e.stages),steps:t(e.steps)}}function xr(e,n,t){let r=e.units[n];if(r)return r;let i=t?.parentId??x.RUN_ID,o=n===we.ENV_UNIT?"env":t?.kind==="patch"||i!==x.RUN_ID?"patch":"solution",s={id:n,name:t?.name??n,kind:o,parentId:i,status:"pending",stageOrder:[],log:[]};return pn(e,s),s}function yr(e,n,t){let r=`${n}::${t}`,i=e.stages[r];if(i)return i;let o=xr(e,n),s={id:r,unitId:n,stage:t,name:t,status:"pending",stepOrder:[],log:[]};return e.stages[r]=s,e.units[n]={...o,stageOrder:[...o.stageOrder,r]},s}function ht(e,n){let t={...e};return n.name&&(t.name=n.name),n.status&&(t.status=n.status),n.message&&(t.message=n.message),n.metrics&&(t.metrics={...e.metrics,...n.metrics}),n.status==="running"&&!t.startedAt&&(t.startedAt=n.ts),n.status&&n.status!=="running"&&n.status!=="pending"&&(t.completedAt=n.ts),t}function cs(e,n){let t={...e,units:{...e.units},unitOrder:[...e.unitOrder],stages:{...e.stages},steps:{...e.steps}};switch(n.ts&&(t.lastEventAt=n.ts),n.type){case"plan":return n.status==="running"?{..._r(),phase:"planning",name:n.name??e.name,environment:n.message??e.environment,startedAt:n.ts,lastEventAt:n.ts}:n.status==="done"?{...n.document?fn(t,n.document):t,phase:"planned"}:t;case"run":{if(n.status==="running"){let r=n.document&&t.document?.fingerprint!==n.document.fingerprint?fn(t,n.document):t,i=Ar(r);return{...i,name:n.name??i.name,environment:n.message??i.environment,startedAt:n.ts??i.startedAt,lastEventAt:n.ts??i.lastEventAt}}return(n.status==="done"||n.status==="error")&&(t.phase="finished"),n.status&&(t.status=n.status),n.exitCode!==void 0&&(t.exitCode=n.exitCode),t}case"solution":{if(!n.id)return t;let r=xr(t,n.id,n),i=ht(r,n);return n.fromVersion!==void 0&&(i.fromVersion=n.fromVersion),n.toVersion!==void 0&&(i.toVersion=n.toVersion),n.plan&&(i.legacyPlan=n.plan),t.units[n.id]=i,t}case"stage":{if(!n.stage)return t;let r=as(n.id)??we.ENV_UNIT,i=yr(t,r,n.stage),o=ht(i,n);return n.message&&(o.log=We(i.log,n.message)),t.stages[o.id]=o,t}case"step":{let r=n.id?.split("::")??[];if(!n.id||r.length<3)return t;let i=r[0],o=r[1],s=yr(t,i,o),a=t.steps[n.id]??{id:n.id,stageId:s.id,name:n.name??r.slice(2).join("::"),status:"pending",log:[]},l=ht(a,n);return t.steps[n.id]||(t.stages[s.id]={...s,stepOrder:[...s.stepOrder,n.id]}),t.steps[n.id]=l,t}case"log":{if(!n.message)return t;let r=n.id?.split("::")??[];if(r.length>=3&&t.steps[n.id]){let i=t.steps[n.id];return t.steps[n.id]={...i,log:We(i.log,n.message)},t}if(r.length===2&&t.stages[n.id]){let i=t.stages[n.id];return t.stages[n.id]={...i,log:We(i.log,n.message)},t}return t.log=We(e.log,n.message),t}case"done":return t.phase==="planning"?(t.phase="planned",t):(t.phase!=="running"||(t.phase="finished",(t.status==="running"||t.status==="pending")&&(t.status=n.exitCode?"error":"done"),n.exitCode!==void 0&&(t.exitCode=n.exitCode)),t);case"error":return n.message&&(t.error=n.message),n.code==="plan-drift"?(t.validation=n.validation,t.phase="planned",t):t.phase==="planning"?(t.phase="planned",t):(t.status="error",n.message&&(t.log=We(e.log,`[ERROR] ${n.message}`)),t);default:return t}}function gt(e){return e.unitOrder.map(n=>e.units[n]).filter(n=>!!n&&n.kind==="solution")}function ps(e,n){return e.unitOrder.map(t=>e.units[t]).filter(t=>!!t&&t.kind==="patch"&&t.parentId===n)}function fs(e){return e.units[we.ENV_UNIT]}function dn(e,n){return(e.units[n]?.stageOrder??[]).map(t=>e.stages[t]).filter(t=>!!t)}function Sr(e,n){return(e.stages[n]?.stepOrder??[]).map(t=>e.steps[t]).filter(t=>!!t)}function ds(e){let n=gt(e),t=0,r=0,i=0,o=0,s=0,a=0;for(let c of n)switch(c.status){case"done":t++;break;case"skipped":r++;break;case"running":i++;break;case"error":o++;break;case"canceled":s++;break;default:a++}let l=t+r+o+s;return{total:n.length,done:t,skipped:r,running:i,failed:o,canceled:s,pending:a,percent:n.length?Math.round(l/n.length*100):0,status:e.status,exitCode:e.exitCode}}function ms(e){if(e.document)return e.document.summary;let n=0,t=0,r=0,i=0,o=0,s=0,a=gt(e);for(let l of a){let c=l.legacyPlan;c?.action==="install"?n++:c?.action==="upgrade"?t++:c?.action==="skip"&&r++,c?.installedIsNewer&&s++,c&&c.action!=="skip"&&(c.deployData&&i++,o+=[...c.preActions??[],...c.postActions??[]].filter(u=>u.enabled!==!1).length)}return{total:a.length,willDeploy:n+t,install:n,upgrade:t,skip:r,aheadOfSource:s,dataImports:i,actionSteps:o,patches:0}}function hs(e,n){let t=dn(e,n).flatMap(o=>Sr(e,o.id)),r=t.length,i=t.filter(o=>o.status!=="pending"&&o.status!=="running").length;return{resolved:i,total:r,percent:r?Math.round(i/r*100):0}}function gs(e){for(let t of e.unitOrder)for(let r of dn(e,t))if(r.status==="running")return r.id;let n;for(let t of e.unitOrder)for(let r of dn(e,t))r.status!=="pending"&&(n=r.id);return n}function vs(e){return Object.values(e.steps).find(n=>n.status==="running")?.id}function ys(e,n){if(!n)return;let t=e.stages[n],r=t?e.units[t.unitId]:void 0;return t&&r?{unit:r,stage:t}:void 0}function _s(e,n=Date.now()){if(!e.startedAt)return;let t=new Date(e.startedAt).getTime(),i=(e.completedAt?new Date(e.completedAt).getTime():n)-t;return i>=0?i:void 0}});var wr=k(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.createCancelToken=As;ze.groupByStage=yt;ze.executePlan=Es;var mn=un(),Ye=vt();function As(){let e=!1,n=[];return{get canceled(){return e},onCancel(t){e?t():n.push(t)},cancel(){if(!e){e=!0;for(let t of n)t()}}}}function yt(e){let n=[];for(let t of e){let r=(0,Ye.stageIdOf)(t.id),i=n.find(o=>o.id===r);i||(i={stage:t.stage,id:r,steps:[]},n.push(i)),i.steps.push(t)}return n}var Ee=class extends Error{constructor(){super("Run cancelled.")}},Ge=class extends Error{},xs={canceled:!1,onCancel(){}},me=e=>({status:"skipped",message:e});function Ss(e){let n=e.patch??e.root,t=n.installedVersion,r=n.localVersion;switch(n.action){case"install":return{status:"done",message:`${e.name} not installed \u2014 fresh deploy (local: ${r??"unknown"})`};case"upgrade":return{status:"done",message:r?`Upgrading ${e.name}: ${t} \u2192 ${r}`:`No local version info \u2014 deploying. Installed: ${t??"not installed"}`};case"skip":return me(n.reason==="env-ahead"?`Installed (${t}) is newer than local (${r}) \u2014 skipping ${e.name}.`:`Installed (${t}) matches local (${r}) \u2014 skipping ${e.name}.`)}}function ws(e){let n=e.patch??e.root;return n.reason==="env-ahead"?`Environment is ahead of source (${n.installedVersion}).`:`Solution is up-to-date (${n.installedVersion}).`}async function Es(e,n,t,r={}){let i=r.dryRun??!1,o=r.cancel??xs,s=()=>{if(o.canceled)throw new Ee},a=!1,l=(f,h)=>({doc:e,dryRun:i,cancel:o,step:f,unit:h,log:y=>t.log(y,f.id)});async function c(f,h,y,A,v){let te=S=>({parentId:h.id,name:S.name,type:S.type}),Ue=h.steps.filter(S=>S.enabled);if(A||Ue.length===0){let S=A??h.steps[0]?.skipReason??"Not required.";for(let E of h.steps)t.step(E.id,"skipped",{...te(E),message:A??E.skipReason??S});return t.stage(h.id,h.stage,"skipped",{parentId:f,message:S}),{status:"skipped"}}let Z=h.steps.length,Q=Z>1;t.stage(h.id,h.stage,"running",{parentId:f,metrics:Q?{current:0,total:Z}:void 0});for(let S of h.steps)t.step(S.id,S.enabled?"pending":"skipped",{...te(S),message:S.enabled?S.type:S.skipReason??"skipped"});let de=0,qe=0,K,Ae,j;for(let[S,E]of h.steps.entries()){if(!E.enabled)continue;if(j){t.step(E.id,"skipped",{...te(E),message:j});continue}s(),t.step(E.id,"running",te(E));let P;try{P=await y(E)}catch(ee){if(ee instanceof Ee)throw ee;P={status:"error",message:ee instanceof Error?ee.message:String(ee)}}t.step(E.id,P.status,{...te(E),message:P.message??(P.status==="done"?E.type:void 0),metrics:P.metrics}),P.status==="error"&&(de++,K??(K=P.message??`${E.name} failed`),Ae??(Ae=E.phase),v&&(j=v(E))),P.status==="done"&&qe++,Q&&t.stage(h.id,h.stage,"running",{parentId:f,metrics:{current:S+1,total:Z}})}let se=de?"error":qe?"done":"skipped";return t.stage(h.id,h.stage,se,{parentId:f,message:de?K:void 0,metrics:Q?{current:Z,total:Z}:void 0}),{status:se,error:K,failedPhase:Ae}}async function u(f,h,y){let A=f.patch??f.root;t.unit(f.name,"running",{name:f.name,kind:f.kind,parentId:y,fromVersion:A.installedVersion,toVersion:A.localVersion}),A.action==="skip"&&A.reason==="env-ahead"&&t.warn(`${f.name}: environment is ahead of source \u2014 installed ${A.installedVersion}, branch has ${A.localVersion}. Skipping, but this build cannot come from this branch.`);let v,te,Ue=!1,Z="Pack failed.",Q=!1,de=!1,qe=!1,K;try{for(let j of yt(h)){s();let se=te;!se&&Ue&&(j.stage==="DataImport"?se=void 0:j.stage==="FlowActivation"?se=f.root.flows.reason==="always"?void 0:`${Z.replace(/\.$/,"")} \u2014 nothing imported.`:se=Z);let S=await c(f.name,j,async E=>{let P=l(E,f);switch(E.phase){case"version":return Ss(f);case"check":return n.checkSource(f,P);case"pack":{let ee=await n.pack(f,P);return v=ee.artifact,{status:ee.status,message:ee.message,metrics:ee.metrics}}case"import":return i?me("Dry run \u2014 not imported."):n.import(f,v,P);case"upgrade":return i?me("Dry run \u2014 upgrade skipped."):n.upgrade(f,P);case"data":return i?me("Dry run \u2014 data import skipped."):n.data(f.root,P);case"flows":return i?me("Dry run \u2014 flow activation skipped."):n.flows(f.root,P);case"prepack":case"pre":case"post":case"cleanup":return n.actionStep(f.root,P);default:return me(`No handler for ${E.phase}.`)}},se,j.stage==="PrePackAction"?()=>"Pre-pack action failed.":void 0);if(S.status==="error")switch(j.stage){case"SolutionCheck":te="Source check failed.",Q=!0,qe=!0,K=S.error;break;case"PrePackAction":Ue=!0,Q=!0,K=S.error,Z="Pre-pack action failed.";break;case"SolutionPack":Ue=!0,Q=!0,K=S.error,Z="Pack failed.";break;case"PreAction":case"PostAction":case"Cleanup":t.warn(`${f.name}: ${j.stage} failed (non-fatal): ${S.error}`);break;default:te="Run aborted.",Q=!0,de=!0,K=S.error;break}}}catch(j){throw j instanceof Ee&&t.unit(f.name,"canceled",{name:f.name,kind:f.kind,parentId:y,message:"Run cancelled."}),j}finally{if(v!==void 0&&n.discardArtifact)try{await n.discardArtifact(f,v)}catch{}}let Ae=Q?"error":A.action==="skip"?"skipped":"done";if(Q&&(a=!0),t.unit(f.name,Ae,{name:f.name,kind:f.kind,parentId:y,message:K??(Ae==="skipped"?ws(f):void 0)}),de)throw new Ge(K??`${f.name} failed.`);return{stopRun:de,skipPatches:qe}}async function p(f){for(let h of yt(f)){s();let y=await c(mn.ENV_UNIT,h,async A=>{let v=l(A,null);return A.phase==="auth"?i?me("Dry run \u2014 auth skipped."):n.auth(v):n.envAction(v)});if(y.status==="error"&&h.stage==="Auth")throw new Ge(y.error??"Authentication failed.")}}t.run("running",{name:e.environment.name,environment:e.environment.url,document:e});let d={status:"done",exitCode:0},m=e.run.before.length+e.run.after.length>0;try{m&&t.unit(mn.ENV_UNIT,"running",{name:"Environment",kind:"env",parentId:Ye.RUN_ID}),await p(e.run.before);for(let f of e.solutions){s();let h={kind:"solution",name:f.name,root:f,deploymentType:f.deploymentType,importMode:f.importMode},{skipPatches:y}=await u(h,f.steps,Ye.RUN_ID);for(let A of f.patches){let v={kind:"patch",name:A.name,root:f,patch:A,deploymentType:A.deploymentType,importMode:A.importMode};if(y){t.unit(A.name,"skipped",{name:A.name,kind:"patch",parentId:f.name,fromVersion:A.installedVersion,toVersion:A.localVersion,message:"Root source check failed."});continue}await u(v,A.steps,f.name)}}await p(e.run.after),m&&t.unit(mn.ENV_UNIT,"done",{name:"Environment",kind:"env",parentId:Ye.RUN_ID}),a&&(d={status:"error",exitCode:1,error:"One or more solutions failed."})}catch(f){f instanceof Ee?d={status:"canceled",exitCode:130,error:f.message}:f instanceof Ge?d={status:"error",exitCode:1,error:f.message}:d={status:"error",exitCode:1,error:f instanceof Error?f.message:String(f)},m&&t.unit(mn.ENV_UNIT,d.status==="canceled"?"canceled":"error",{name:"Environment",kind:"env",parentId:Ye.RUN_ID,message:d.error})}finally{try{await n.teardown()}catch(f){t.warn(`Teardown failed: ${f instanceof Error?f.message:String(f)}`)}}return t.run(d.status,{name:e.environment.name,environment:e.environment.url,exitCode:d.exitCode,message:d.error}),d}});var Er=k(D=>{"use strict";var bs=D&&D.__createBinding||(Object.create?(function(e,n,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(n,t);(!i||("get"in i?!n.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,i)}):(function(e,n,t,r){r===void 0&&(r=t),e[r]=n[t]})),ae=D&&D.__exportStar||function(e,n){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(n,t)&&bs(n,e,t)};Object.defineProperty(D,"__esModule",{value:!0});ae(st(),D);ae(lt(),D);ae(un(),D);ae(fr(),D);ae(gr(),D);ae(pt(),D);ae(vt(),D);ae(wr(),D)});var he=k(H=>{"use strict";var Cs=H&&H.__createBinding||(Object.create?(function(e,n,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(n,t);(!i||("get"in i?!n.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,i)}):(function(e,n,t,r){r===void 0&&(r=t),e[r]=n[t]})),Os=H&&H.__exportStar||function(e,n){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(n,t)&&Cs(n,e,t)};Object.defineProperty(H,"__esModule",{value:!0});H.WS_EVENTS=H.RUN_EVENT_SCHEMA_VERSION=H.RunnerStage=void 0;Os(Er(),H);H.RunnerStage={Auth:"Auth",EnvPreAction:"EnvPreAction",VersionCheck:"VersionCheck",SolutionPack:"SolutionPack",SolutionCheck:"SolutionCheck",PrePackAction:"PrePackAction",PreAction:"PreAction",Import:"Import",Upgrade:"Upgrade",DataImport:"DataImport",FlowActivation:"FlowActivation",PostAction:"PostAction",Cleanup:"Cleanup",EnvPostAction:"EnvPostAction"};H.RUN_EVENT_SCHEMA_VERSION=1;H.WS_EVENTS={TERMINAL_OUTPUT:"terminal:output",TERMINAL_INPUT:"terminal:input",TERMINAL_RESIZE:"terminal:resize",TERMINAL_START:"terminal:start",TERMINAL_DONE:"terminal:done",TERMINAL_ERROR:"terminal:error",TERMINAL_ATTACH:"terminal:attach",TERMINAL_KILL:"terminal:kill",RUNNER_EVENT:"runner:event",IDLE_WARNING:"idle:warning",IDLE_CANCELLED:"idle:cancelled"}});var ir=_(rr(),1),{program:Ou,createCommand:Pu,createArgument:ku,createOption:Iu,CommanderError:$u,InvalidArgumentError:Nu,InvalidOptionArgumentError:Tu,Command:xe,Argument:Du,Option:Fu,Help:Vu}=ir.default;var qn=_(require("path")),fe=_(require("fs"));var br=_(require("fs")),Oe=_(he()),be="human";function hn(){return process.env.PPDEVOPS_EVENTS_FILE||""}function Cr(){return be==="events"}function Or(){return be==="human"||be==="events"&&!!hn()}function W(e){Or()&&console.log(e)}function le(e){(Or()||be==="document")&&console.error(e)}function gn(e){for(let n of e)W(n)}function Pr(e){be==="document"&&process.stdout.write(JSON.stringify(e,null,2)+`
|
|
24
|
+
`)}var Pe="~run",Ps="~env",At=null,Ce=null,_t=null;function ks(){return At??Ps}function Is(e){return`${ks()}::${e}`}function vn(e){be=e}function $s(e){let n=hn();if(n)try{br.appendFileSync(n,e+`
|
|
25
25
|
`)}catch{}else process.stdout.write(`
|
|
26
26
|
`+e+`
|
|
27
|
-
`)}function I(e){if(!Cr())return;let n={v:Oe.RUN_EVENT_SCHEMA_VERSION,ts:new Date().toISOString(),...e};$s(JSON.stringify(n))}function xt(e){Cr()&&I({type:"log",message:e,id:Ce?Is(Ce):void 0})}function ke(e){xt(`[INFO] ${e}`),W(`[INFO] ${e}`)}function
|
|
28
|
-
\x1B[1m\u25B6 Deployment run: ${e}${n?.environment?` \u2192 ${n.environment}`:""}\x1B[0m`)}function
|
|
29
|
-
\x1B[33mRun cancelled.\x1B[0m`)}function Nr(e){let n=(0,Oe.renderValidationText)(e);I({type:"error",code:"plan-drift",message:n[0],validation:e,exitCode:2}),I({type:"done",exitCode:2});for(let t of n)le(t)}function Tr(e,n,t){if(n==="running"&&(At=t.kind==="env"?null:e,Ce=null,
|
|
27
|
+
`)}function I(e){if(!Cr())return;let n={v:Oe.RUN_EVENT_SCHEMA_VERSION,ts:new Date().toISOString(),...e};$s(JSON.stringify(n))}function xt(e){Cr()&&I({type:"log",message:e,id:Ce?Is(Ce):void 0})}function ke(e){xt(`[INFO] ${e}`),W(`[INFO] ${e}`)}function yn(e){xt(`[WARN] ${e}`),W(`\x1B[33m[WARN]\x1B[0m ${e}`)}function kr(e){xt(`[ERROR] ${e}`),le(`\x1B[31m[ERROR]\x1B[0m ${e}`)}function Ir(e,n){At=null,Ce=null,I({type:"run",id:Pe,name:e,status:"running",message:n?.environment,document:n?.document}),W(`
|
|
28
|
+
\x1B[1m\u25B6 Deployment run: ${e}${n?.environment?` \u2192 ${n.environment}`:""}\x1B[0m`)}function _n(e=0,n){I({type:"run",id:Pe,status:e===0?"done":"error",exitCode:e,message:n})}function $r(e=130,n){I({type:"run",id:Pe,status:"canceled",exitCode:e,message:n}),le(`
|
|
29
|
+
\x1B[33mRun cancelled.\x1B[0m`)}function Nr(e){let n=(0,Oe.renderValidationText)(e);I({type:"error",code:"plan-drift",message:n[0],validation:e,exitCode:2}),I({type:"done",exitCode:2});for(let t of n)le(t)}function Tr(e,n,t){if(n==="running"&&(At=t.kind==="env"?null:e,Ce=null,_t=null),I({type:"solution",id:e,parentId:t.parentId,name:t.name,kind:t.kind,status:n,fromVersion:t.fromVersion??void 0,toVersion:t.toVersion??void 0,message:t.message}),n==="running"&&t.kind!=="env"){let r=t.fromVersion||t.toVersion?` ${t.fromVersion??"\u2014"} \u2192 ${t.toVersion??"\u2014"}`:"";W(`
|
|
30
30
|
\x1B[36m\u2501\u2501 ${t.kind==="patch"?"patch ":""}${t.name} \u2501\u2501\x1B[0m\x1B[2m${r}\x1B[0m`)}n!=="running"&&(Ce=null)}function Dr(e,n,t,r){if(t==="running"&&(Ce=n),I({type:"stage",id:e,parentId:r.parentId,name:n,stage:n,status:t,message:r.message,metrics:r.metrics}),!(t==="running"&&r.message===void 0&&r.metrics&&r.metrics.current))switch(t){case"running":W(`
|
|
31
|
-
\x1B[36m[${n}]\x1B[0m ${r.message??"Starting..."}`);break;case"done":W(`\x1B[32m[${n}] \u2713\x1B[0m ${r.message??"Done"}`);break;case"skipped":W(`\x1B[90m[${n}] \u2013\x1B[0m ${r.message??"Skipped"}`);break;case"error":le(`\x1B[31m[${n}] \u2717\x1B[0m ${r.message??"Failed"}`);break;case"canceled":le(`\x1B[33m[${n}] \u2298\x1B[0m cancelled`);break;default:break}}function Fr(e,n,t){switch(n==="running"?
|
|
31
|
+
\x1B[36m[${n}]\x1B[0m ${r.message??"Starting..."}`);break;case"done":W(`\x1B[32m[${n}] \u2713\x1B[0m ${r.message??"Done"}`);break;case"skipped":W(`\x1B[90m[${n}] \u2013\x1B[0m ${r.message??"Skipped"}`);break;case"error":le(`\x1B[31m[${n}] \u2717\x1B[0m ${r.message??"Failed"}`);break;case"canceled":le(`\x1B[33m[${n}] \u2298\x1B[0m cancelled`);break;default:break}}function Fr(e,n,t){switch(n==="running"?_t=t.name:n!=="pending"&&(_t=null),I({type:"step",id:e,parentId:t.parentId,name:t.name,status:n,message:t.message??t.type,metrics:t.metrics}),n){case"running":W(` \x1B[34m\u25B6\x1B[0m ${t.name}${t.type?` (${t.type})`:""}`);break;case"done":W(` \x1B[32m\u2713\x1B[0m ${t.name}${t.message&&t.message!==t.type?` \u2014 ${t.message}`:""}`);break;case"skipped":W(` \x1B[90m\u2298\x1B[0m ${t.name}${t.message?` \u2014 ${t.message}`:""}`);break;case"error":le(` \x1B[31m\u2717\x1B[0m ${t.name}${t.message?` \u2014 ${t.message}`:""}`);break;default:break}}function Vr(e,n){I({type:"log",message:e,id:n})}function Rr(e,n){I({type:"plan",id:Pe,name:e,status:"running",message:n})}function Lr(e){I({type:"solution",id:e.name,parentId:Pe,name:e.name,status:e.action==="skip"?"skipped":"pending",fromVersion:e.installedVersion??void 0,toVersion:e.localVersion??void 0,plan:(0,Oe.toPlanInfo)(e)})}function Mr(e){I({type:"plan",id:Pe,status:"done",document:e})}function Ie(e=0){I({type:"done",exitCode:e}),e===0?W(`
|
|
32
32
|
\x1B[32mCompleted successfully.\x1B[0m`):le(`
|
|
33
|
-
\x1B[31mFailed.\x1B[0m`)}function F(e,n=1){I({type:"error",message:e,exitCode:n}),I({type:"done",exitCode:n}),le(`\x1B[31m[FATAL]\x1B[0m ${e}`),process.exit(n)}function jr(){return{run(e,n){e==="running"?Ir(n.name,{environment:n.environment,document:n.document}):e==="canceled"?$r(n.exitCode??130,n.message):
|
|
33
|
+
\x1B[31mFailed.\x1B[0m`)}function F(e,n=1){I({type:"error",message:e,exitCode:n}),I({type:"done",exitCode:n}),le(`\x1B[31m[FATAL]\x1B[0m ${e}`),process.exit(n)}function jr(){return{run(e,n){e==="running"?Ir(n.name,{environment:n.environment,document:n.document}):e==="canceled"?$r(n.exitCode??130,n.message):_n(n.exitCode??(e==="done"?0:1),n.message)},unit:(e,n,t)=>Tr(e,n,t),stage:(e,n,t,r)=>Dr(e,n,t,r),step:(e,n,t)=>Fr(e,n,t),log:(e,n)=>Vr(e,n),info:e=>ke(e),warn:e=>yn(e)}}var xn=_(require("fs")),St=_(require("path"));function Hr(e,n){if(!xn.existsSync(e))return n&&F(`Required file not found: ${e}`),null;try{let t=xn.readFileSync(e,"utf-8");return JSON.parse(t)}catch(t){F(`Failed to parse ${e}: ${t instanceof Error?t.message:String(t)}`)}}function Sn(e){let n=St.join(e,"deployPackages.json"),t=St.join(e,"Environments.json"),r=Hr(n,!0),i=Hr(t,!0);return Array.isArray(r)||F(`deployPackages.json must be a JSON array: ${n}`),Array.isArray(i)||F(`Environments.json must be a JSON array: ${t}`),{deployPackages:r,environments:i}}function wn(e,n){let t=e.find(r=>r.EnvironmentName.toLowerCase()===n.toLowerCase());return t||F(`Environment "${n}" not found in Environments.json. Available: ${e.map(r=>r.EnvironmentName).join(", ")}`),t}function En(e,n){if(!n||n.length===0)return e;let t=e.filter(r=>n.some(i=>i.toLowerCase()===r.SolutionName.toLowerCase()));return t.length===0&&F(`No matching solutions found. Available: ${e.map(r=>r.SolutionName).join(", ")}`),t}function wt(){let e=process.env.PPDEVOPS_CLIENT_ID,n=process.env.PPDEVOPS_CLIENT_SECRET,t=process.env.PPDEVOPS_TENANT_ID;return!e||!n||!t?null:{clientId:e,clientSecret:n,tenantId:t}}async function Et(e,n){let t=`${e.replace(/\/+$/,"")}/.default`,r=`https://login.microsoftonline.com/${n.tenantId}/oauth2/v2.0/token`,i=new URLSearchParams({grant_type:"client_credentials",client_id:n.clientId,client_secret:n.clientSecret,scope:t}),o=await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString()});if(!o.ok)throw new Error(`Token request failed: ${o.status} ${await o.text()}`);return(await o.json()).access_token}async function Ns(e,n,t,r="GET",i){let o=`${n.replace(/\/+$/,"")}${t}`,s=await fetch(o,{method:r,headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json","OData-MaxVersion":"4.0","OData-Version":"4.0"},body:i!==void 0?JSON.stringify(i):void 0});if(!s.ok){let a=await s.text();throw new Error(`Dataverse API error ${s.status}: ${a}`)}if(!(s.status===204||s.headers.get("content-length")==="0"))return s.json()}async function Ur(e){let n=wt();if(!n){let t=[process.env.PPDEVOPS_CLIENT_ID?null:"PPDEVOPS_CLIENT_ID",process.env.PPDEVOPS_CLIENT_SECRET?null:"PPDEVOPS_CLIENT_SECRET",process.env.PPDEVOPS_TENANT_ID?null:"PPDEVOPS_TENANT_ID"].filter(Boolean).join(", ");throw new Error(`Cannot query ${e}: service-principal credentials are incomplete (missing ${t}). In Studio this usually means the client secret could not be read from Key Vault.`)}try{let t=await Et(e,n);return(await Ns(t,e,"/api/data/v9.2/solutions?$select=uniquename,version&$filter=isvisible eq true&$orderby=uniquename")).value}catch(t){let r=t instanceof Error?t.message:String(t);throw new Error(`Dataverse Web API query against ${e} failed: ${r}`)}}var qr=_(he());async function bn(e){return(await Ur(e)).map(t=>({SolutionUniqueName:t.uniquename,VersionNumber:t.version}))}var Ui=_(require("path")),qi=require("child_process"),pe=_(he());var Fe=_(require("fs")),Y=_(require("path")),Vi=_(require("os"));function oi(e){return typeof e>"u"||e===null}function Ts(e){return typeof e=="object"&&e!==null}function Ds(e){return Array.isArray(e)?e:oi(e)?[]:[e]}function Fs(e,n){var t,r,i,o;if(n)for(o=Object.keys(n),t=0,r=o.length;t<r;t+=1)i=o[t],e[i]=n[i];return e}function Vs(e,n){var t="",r;for(r=0;r<n;r+=1)t+=e;return t}function Rs(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var Ls=oi,Ms=Ts,js=Ds,Hs=Vs,Us=Rs,qs=Fs,C={isNothing:Ls,isObject:Ms,toArray:js,repeat:Hs,isNegativeZero:Us,extend:qs};function si(e,n){var t="",r=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(t+='in "'+e.mark.name+'" '),t+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!n&&e.mark.snippet&&(t+=`
|
|
34
34
|
|
|
35
35
|
`+e.mark.snippet),r+" "+t):r}function Je(e,n){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=n,this.message=si(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Je.prototype=Object.create(Error.prototype);Je.prototype.constructor=Je;Je.prototype.toString=function(n){return this.name+": "+si(this,n)};var V=Je;function bt(e,n,t,r,i){var o="",s="",a=Math.floor(i/2)-1;return r-n>a&&(o=" ... ",n=r-a+o.length),t-r>a&&(s=" ...",t=r+a-s.length),{str:o+e.slice(n,t).replace(/\t/g,"\u2192")+s,pos:r-n+o.length}}function Ct(e,n){return C.repeat(" ",n-e.length)+e}function Bs(e,n){if(n=Object.create(n||null),!e.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);for(var t=/\r?\n|\r|\0/g,r=[0],i=[],o,s=-1;o=t.exec(e.buffer);)i.push(o.index),r.push(o.index+o[0].length),e.position<=o.index&&s<0&&(s=r.length-2);s<0&&(s=r.length-1);var a="",l,c,u=Math.min(e.line+n.linesAfter,i.length).toString().length,p=n.maxLength-(n.indent+u+3);for(l=1;l<=n.linesBefore&&!(s-l<0);l++)c=bt(e.buffer,r[s-l],i[s-l],e.position-(r[s]-r[s-l]),p),a=C.repeat(" ",n.indent)+Ct((e.line-l+1).toString(),u)+" | "+c.str+`
|
|
36
36
|
`+a;for(c=bt(e.buffer,r[s],i[s],e.position,p),a+=C.repeat(" ",n.indent)+Ct((e.line+1).toString(),u)+" | "+c.str+`
|
|
37
37
|
`,a+=C.repeat("-",n.indent+u+3+c.pos)+`^
|
|
38
38
|
`,l=1;l<=n.linesAfter&&!(s+l>=i.length);l++)c=bt(e.buffer,r[s+l],i[s+l],e.position-(r[s]-r[s+l]),p),a+=C.repeat(" ",n.indent)+Ct((e.line+l+1).toString(),u)+" | "+c.str+`
|
|
39
|
-
`;return a.replace(/\n$/,"")}var Ws=Bs,Ys=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Gs=["scalar","sequence","mapping"];function zs(e){var n={};return e!==null&&Object.keys(e).forEach(function(t){e[t].forEach(function(r){n[String(r)]=t})}),n}function Ks(e,n){if(n=n||{},Object.keys(n).forEach(function(t){if(Ys.indexOf(t)===-1)throw new V('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.options=n,this.tag=e,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(t){return t},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=zs(n.styleAliases||null),Gs.indexOf(this.kind)===-1)throw new V('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var $=Ks;function Br(e,n){var t=[];return e[n].forEach(function(r){var i=t.length;t.forEach(function(o,s){o.tag===r.tag&&o.kind===r.kind&&o.multi===r.multi&&(i=s)}),t[i]=r}),t}function Js(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,t;function r(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(n=0,t=arguments.length;n<t;n+=1)arguments[n].forEach(r);return e}function Pt(e){return this.extend(e)}Pt.prototype.extend=function(n){var t=[],r=[];if(n instanceof $)r.push(n);else if(Array.isArray(n))r=r.concat(n);else if(n&&(Array.isArray(n.implicit)||Array.isArray(n.explicit)))n.implicit&&(t=t.concat(n.implicit)),n.explicit&&(r=r.concat(n.explicit));else throw new V("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.forEach(function(o){if(!(o instanceof $))throw new V("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(o.loadKind&&o.loadKind!=="scalar")throw new V("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(o.multi)throw new V("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(o){if(!(o instanceof $))throw new V("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(Pt.prototype);return i.implicit=(this.implicit||[]).concat(t),i.explicit=(this.explicit||[]).concat(r),i.compiledImplicit=Br(i,"implicit"),i.compiledExplicit=Br(i,"explicit"),i.compiledTypeMap=Js(i.compiledImplicit,i.compiledExplicit),i};var Xs=Pt,Zs=new $("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),Qs=new $("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),ea=new $("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),na=new Xs({explicit:[Zs,Qs,ea]});function ta(e){if(e===null)return!0;var n=e.length;return n===1&&e==="~"||n===4&&(e==="null"||e==="Null"||e==="NULL")}function ra(){return null}function ia(e){return e===null}var oa=new $("tag:yaml.org,2002:null",{kind:"scalar",resolve:ta,construct:ra,predicate:ia,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function sa(e){if(e===null)return!1;var n=e.length;return n===4&&(e==="true"||e==="True"||e==="TRUE")||n===5&&(e==="false"||e==="False"||e==="FALSE")}function aa(e){return e==="true"||e==="True"||e==="TRUE"}function la(e){return Object.prototype.toString.call(e)==="[object Boolean]"}var ua=new $("tag:yaml.org,2002:bool",{kind:"scalar",resolve:sa,construct:aa,predicate:la,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function ca(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function pa(e){return 48<=e&&e<=55}function fa(e){return 48<=e&&e<=57}function da(e){if(e===null)return!1;var n=e.length,t=0,r=!1,i;if(!n)return!1;if(i=e[t],(i==="-"||i==="+")&&(i=e[++t]),i==="0"){if(t+1===n)return!0;if(i=e[++t],i==="b"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(i!=="0"&&i!=="1")return!1;r=!0}return r&&i!=="_"}if(i==="x"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(!ca(e.charCodeAt(t)))return!1;r=!0}return r&&i!=="_"}if(i==="o"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(!pa(e.charCodeAt(t)))return!1;r=!0}return r&&i!=="_"}}if(i==="_")return!1;for(;t<n;t++)if(i=e[t],i!=="_"){if(!fa(e.charCodeAt(t)))return!1;r=!0}return!(!r||i==="_")}function ma(e){var n=e,t=1,r;if(n.indexOf("_")!==-1&&(n=n.replace(/_/g,"")),r=n[0],(r==="-"||r==="+")&&(r==="-"&&(t=-1),n=n.slice(1),r=n[0]),n==="0")return 0;if(r==="0"){if(n[1]==="b")return t*parseInt(n.slice(2),2);if(n[1]==="x")return t*parseInt(n.slice(2),16);if(n[1]==="o")return t*parseInt(n.slice(2),8)}return t*parseInt(n,10)}function ha(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!C.isNegativeZero(e)}var ga=new $("tag:yaml.org,2002:int",{kind:"scalar",resolve:da,construct:ma,predicate:ha,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),va=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function
|
|
39
|
+
`;return a.replace(/\n$/,"")}var Ws=Bs,Ys=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Gs=["scalar","sequence","mapping"];function zs(e){var n={};return e!==null&&Object.keys(e).forEach(function(t){e[t].forEach(function(r){n[String(r)]=t})}),n}function Ks(e,n){if(n=n||{},Object.keys(n).forEach(function(t){if(Ys.indexOf(t)===-1)throw new V('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.options=n,this.tag=e,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(t){return t},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=zs(n.styleAliases||null),Gs.indexOf(this.kind)===-1)throw new V('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var $=Ks;function Br(e,n){var t=[];return e[n].forEach(function(r){var i=t.length;t.forEach(function(o,s){o.tag===r.tag&&o.kind===r.kind&&o.multi===r.multi&&(i=s)}),t[i]=r}),t}function Js(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,t;function r(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(n=0,t=arguments.length;n<t;n+=1)arguments[n].forEach(r);return e}function Pt(e){return this.extend(e)}Pt.prototype.extend=function(n){var t=[],r=[];if(n instanceof $)r.push(n);else if(Array.isArray(n))r=r.concat(n);else if(n&&(Array.isArray(n.implicit)||Array.isArray(n.explicit)))n.implicit&&(t=t.concat(n.implicit)),n.explicit&&(r=r.concat(n.explicit));else throw new V("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.forEach(function(o){if(!(o instanceof $))throw new V("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(o.loadKind&&o.loadKind!=="scalar")throw new V("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(o.multi)throw new V("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(o){if(!(o instanceof $))throw new V("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(Pt.prototype);return i.implicit=(this.implicit||[]).concat(t),i.explicit=(this.explicit||[]).concat(r),i.compiledImplicit=Br(i,"implicit"),i.compiledExplicit=Br(i,"explicit"),i.compiledTypeMap=Js(i.compiledImplicit,i.compiledExplicit),i};var Xs=Pt,Zs=new $("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),Qs=new $("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),ea=new $("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),na=new Xs({explicit:[Zs,Qs,ea]});function ta(e){if(e===null)return!0;var n=e.length;return n===1&&e==="~"||n===4&&(e==="null"||e==="Null"||e==="NULL")}function ra(){return null}function ia(e){return e===null}var oa=new $("tag:yaml.org,2002:null",{kind:"scalar",resolve:ta,construct:ra,predicate:ia,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function sa(e){if(e===null)return!1;var n=e.length;return n===4&&(e==="true"||e==="True"||e==="TRUE")||n===5&&(e==="false"||e==="False"||e==="FALSE")}function aa(e){return e==="true"||e==="True"||e==="TRUE"}function la(e){return Object.prototype.toString.call(e)==="[object Boolean]"}var ua=new $("tag:yaml.org,2002:bool",{kind:"scalar",resolve:sa,construct:aa,predicate:la,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function ca(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function pa(e){return 48<=e&&e<=55}function fa(e){return 48<=e&&e<=57}function da(e){if(e===null)return!1;var n=e.length,t=0,r=!1,i;if(!n)return!1;if(i=e[t],(i==="-"||i==="+")&&(i=e[++t]),i==="0"){if(t+1===n)return!0;if(i=e[++t],i==="b"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(i!=="0"&&i!=="1")return!1;r=!0}return r&&i!=="_"}if(i==="x"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(!ca(e.charCodeAt(t)))return!1;r=!0}return r&&i!=="_"}if(i==="o"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(!pa(e.charCodeAt(t)))return!1;r=!0}return r&&i!=="_"}}if(i==="_")return!1;for(;t<n;t++)if(i=e[t],i!=="_"){if(!fa(e.charCodeAt(t)))return!1;r=!0}return!(!r||i==="_")}function ma(e){var n=e,t=1,r;if(n.indexOf("_")!==-1&&(n=n.replace(/_/g,"")),r=n[0],(r==="-"||r==="+")&&(r==="-"&&(t=-1),n=n.slice(1),r=n[0]),n==="0")return 0;if(r==="0"){if(n[1]==="b")return t*parseInt(n.slice(2),2);if(n[1]==="x")return t*parseInt(n.slice(2),16);if(n[1]==="o")return t*parseInt(n.slice(2),8)}return t*parseInt(n,10)}function ha(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!C.isNegativeZero(e)}var ga=new $("tag:yaml.org,2002:int",{kind:"scalar",resolve:da,construct:ma,predicate:ha,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),va=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ya(e){return!(e===null||!va.test(e)||e[e.length-1]==="_")}function _a(e){var n,t;return n=e.replace(/_/g,"").toLowerCase(),t=n[0]==="-"?-1:1,"+-".indexOf(n[0])>=0&&(n=n.slice(1)),n===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:n===".nan"?NaN:t*parseFloat(n,10)}var Aa=/^[-+]?[0-9]+e/;function xa(e,n){var t;if(isNaN(e))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(C.isNegativeZero(e))return"-0.0";return t=e.toString(10),Aa.test(t)?t.replace("e",".e"):t}function Sa(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||C.isNegativeZero(e))}var wa=new $("tag:yaml.org,2002:float",{kind:"scalar",resolve:ya,construct:_a,predicate:Sa,represent:xa,defaultStyle:"lowercase"}),Ea=na.extend({implicit:[oa,ua,ga,wa]}),ba=Ea,ai=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),li=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Ca(e){return e===null?!1:ai.exec(e)!==null||li.exec(e)!==null}function Oa(e){var n,t,r,i,o,s,a,l=0,c=null,u,p,d;if(n=ai.exec(e),n===null&&(n=li.exec(e)),n===null)throw new Error("Date resolve error");if(t=+n[1],r=+n[2]-1,i=+n[3],!n[4])return new Date(Date.UTC(t,r,i));if(o=+n[4],s=+n[5],a=+n[6],n[7]){for(l=n[7].slice(0,3);l.length<3;)l+="0";l=+l}return n[9]&&(u=+n[10],p=+(n[11]||0),c=(u*60+p)*6e4,n[9]==="-"&&(c=-c)),d=new Date(Date.UTC(t,r,i,o,s,a,l)),c&&d.setTime(d.getTime()-c),d}function Pa(e){return e.toISOString()}var ka=new $("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Ca,construct:Oa,instanceOf:Date,represent:Pa});function Ia(e){return e==="<<"||e===null}var $a=new $("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Ia}),Tt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
40
40
|
\r`;function Na(e){if(e===null)return!1;var n,t,r=0,i=e.length,o=Tt;for(t=0;t<i;t++)if(n=o.indexOf(e.charAt(t)),!(n>64)){if(n<0)return!1;r+=6}return r%8===0}function Ta(e){var n,t,r=e.replace(/[\r\n=]/g,""),i=r.length,o=Tt,s=0,a=[];for(n=0;n<i;n++)n%4===0&&n&&(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)),s=s<<6|o.indexOf(r.charAt(n));return t=i%4*6,t===0?(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)):t===18?(a.push(s>>10&255),a.push(s>>2&255)):t===12&&a.push(s>>4&255),new Uint8Array(a)}function Da(e){var n="",t=0,r,i,o=e.length,s=Tt;for(r=0;r<o;r++)r%3===0&&r&&(n+=s[t>>18&63],n+=s[t>>12&63],n+=s[t>>6&63],n+=s[t&63]),t=(t<<8)+e[r];return i=o%3,i===0?(n+=s[t>>18&63],n+=s[t>>12&63],n+=s[t>>6&63],n+=s[t&63]):i===2?(n+=s[t>>10&63],n+=s[t>>4&63],n+=s[t<<2&63],n+=s[64]):i===1&&(n+=s[t>>2&63],n+=s[t<<4&63],n+=s[64],n+=s[64]),n}function Fa(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Va=new $("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Na,construct:Ta,predicate:Fa,represent:Da}),Ra=Object.prototype.hasOwnProperty,La=Object.prototype.toString;function Ma(e){if(e===null)return!0;var n=[],t,r,i,o,s,a=e;for(t=0,r=a.length;t<r;t+=1){if(i=a[t],s=!1,La.call(i)!=="[object Object]")return!1;for(o in i)if(Ra.call(i,o))if(!s)s=!0;else return!1;if(!s)return!1;if(n.indexOf(o)===-1)n.push(o);else return!1}return!0}function ja(e){return e!==null?e:[]}var Ha=new $("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Ma,construct:ja}),Ua=Object.prototype.toString;function qa(e){if(e===null)return!0;var n,t,r,i,o,s=e;for(o=new Array(s.length),n=0,t=s.length;n<t;n+=1){if(r=s[n],Ua.call(r)!=="[object Object]"||(i=Object.keys(r),i.length!==1))return!1;o[n]=[i[0],r[i[0]]]}return!0}function Ba(e){if(e===null)return[];var n,t,r,i,o,s=e;for(o=new Array(s.length),n=0,t=s.length;n<t;n+=1)r=s[n],i=Object.keys(r),o[n]=[i[0],r[i[0]]];return o}var Wa=new $("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:qa,construct:Ba}),Ya=Object.prototype.hasOwnProperty;function Ga(e){if(e===null)return!0;var n,t=e;for(n in t)if(Ya.call(t,n)&&t[n]!==null)return!1;return!0}function za(e){return e!==null?e:{}}var Ka=new $("tag:yaml.org,2002:set",{kind:"mapping",resolve:Ga,construct:za}),ui=ba.extend({implicit:[ka,$a],explicit:[Va,Ha,Wa,Ka]}),ce=Object.prototype.hasOwnProperty,Cn=1,ci=2,pi=3,On=4,Ot=1,Ja=2,Wr=3,Xa=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Za=/[\x85\u2028\u2029]/,Qa=/[,\[\]\{\}]/,fi=/^(?:!|!!|![a-z\-]+!)$/i,di=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Yr(e){return Object.prototype.toString.call(e)}function ne(e){return e===10||e===13}function ve(e){return e===9||e===32}function R(e){return e===9||e===32||e===10||e===13}function Ne(e){return e===44||e===91||e===93||e===123||e===125}function el(e){var n;return 48<=e&&e<=57?e-48:(n=e|32,97<=n&&n<=102?n-97+10:-1)}function nl(e){return e===120?2:e===117?4:e===85?8:0}function tl(e){return 48<=e&&e<=57?e-48:-1}function Gr(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?`
|
|
41
41
|
`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function rl(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function mi(e,n,t){n==="__proto__"?Object.defineProperty(e,n,{configurable:!0,enumerable:!0,writable:!0,value:t}):e[n]=t}var hi=new Array(256),gi=new Array(256);for(ge=0;ge<256;ge++)hi[ge]=Gr(ge)?1:0,gi[ge]=Gr(ge);var ge;function il(e,n){this.input=e,this.filename=n.filename||null,this.schema=n.schema||ui,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function vi(e,n){var t={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return t.snippet=Ws(t),new V(n,t)}function g(e,n){throw vi(e,n)}function Pn(e,n){e.onWarning&&e.onWarning.call(null,vi(e,n))}var zr={YAML:function(n,t,r){var i,o,s;n.version!==null&&g(n,"duplication of %YAML directive"),r.length!==1&&g(n,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),i===null&&g(n,"ill-formed argument of the YAML directive"),o=parseInt(i[1],10),s=parseInt(i[2],10),o!==1&&g(n,"unacceptable YAML version of the document"),n.version=r[0],n.checkLineBreaks=s<2,s!==1&&s!==2&&Pn(n,"unsupported YAML version of the document")},TAG:function(n,t,r){var i,o;r.length!==2&&g(n,"TAG directive accepts exactly two arguments"),i=r[0],o=r[1],fi.test(i)||g(n,"ill-formed tag handle (first argument) of the TAG directive"),ce.call(n.tagMap,i)&&g(n,'there is a previously declared suffix for "'+i+'" tag handle'),di.test(o)||g(n,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{g(n,"tag prefix is malformed: "+o)}n.tagMap[i]=o}};function ue(e,n,t,r){var i,o,s,a;if(n<t){if(a=e.input.slice(n,t),r)for(i=0,o=a.length;i<o;i+=1)s=a.charCodeAt(i),s===9||32<=s&&s<=1114111||g(e,"expected valid JSON character");else Xa.test(a)&&g(e,"the stream contains non-printable characters");e.result+=a}}function Kr(e,n,t,r){var i,o,s,a;for(C.isObject(t)||g(e,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(t),s=0,a=i.length;s<a;s+=1)o=i[s],ce.call(n,o)||(mi(n,o,t[o]),r[o]=!0)}function Te(e,n,t,r,i,o,s,a,l){var c,u;if(Array.isArray(i))for(i=Array.prototype.slice.call(i),c=0,u=i.length;c<u;c+=1)Array.isArray(i[c])&&g(e,"nested arrays are not supported inside keys"),typeof i=="object"&&Yr(i[c])==="[object Object]"&&(i[c]="[object Object]");if(typeof i=="object"&&Yr(i)==="[object Object]"&&(i="[object Object]"),i=String(i),n===null&&(n={}),r==="tag:yaml.org,2002:merge")if(Array.isArray(o))for(c=0,u=o.length;c<u;c+=1)Kr(e,n,o[c],t);else Kr(e,n,o,t);else!e.json&&!ce.call(t,i)&&ce.call(n,i)&&(e.line=s||e.line,e.lineStart=a||e.lineStart,e.position=l||e.position,g(e,"duplicated mapping key")),mi(n,i,o),delete t[i];return n}function Dt(e){var n;n=e.input.charCodeAt(e.position),n===10?e.position++:n===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):g(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function b(e,n,t){for(var r=0,i=e.input.charCodeAt(e.position);i!==0;){for(;ve(i);)i===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),i=e.input.charCodeAt(++e.position);if(n&&i===35)do i=e.input.charCodeAt(++e.position);while(i!==10&&i!==13&&i!==0);if(ne(i))for(Dt(e),i=e.input.charCodeAt(e.position),r++,e.lineIndent=0;i===32;)e.lineIndent++,i=e.input.charCodeAt(++e.position);else break}return t!==-1&&r!==0&&e.lineIndent<t&&Pn(e,"deficient indentation"),r}function $n(e){var n=e.position,t;return t=e.input.charCodeAt(n),!!((t===45||t===46)&&t===e.input.charCodeAt(n+1)&&t===e.input.charCodeAt(n+2)&&(n+=3,t=e.input.charCodeAt(n),t===0||R(t)))}function Ft(e,n){n===1?e.result+=" ":n>1&&(e.result+=C.repeat(`
|
|
42
|
-
`,n-1))}function ol(e,n,t){var r,i,o,s,a,l,c,u,p=e.kind,d=e.result,m;if(m=e.input.charCodeAt(e.position),R(m)||Ne(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=e.input.charCodeAt(e.position+1),R(i)||t&&Ne(i)))return!1;for(e.kind="scalar",e.result="",o=s=e.position,a=!1;m!==0;){if(m===58){if(i=e.input.charCodeAt(e.position+1),R(i)||t&&Ne(i))break}else if(m===35){if(r=e.input.charCodeAt(e.position-1),R(r))break}else{if(e.position===e.lineStart&&$n(e)||t&&Ne(m))break;if(ne(m))if(l=e.line,c=e.lineStart,u=e.lineIndent,b(e,!1,-1),e.lineIndent>=n){a=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=c,e.lineIndent=u;break}}a&&(ue(e,o,s,!1),Ft(e,e.line-l),o=s=e.position,a=!1),ve(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return ue(e,o,s,!1),e.result?!0:(e.kind=p,e.result=d,!1)}function sl(e,n){var t,r,i;if(t=e.input.charCodeAt(e.position),t!==39)return!1;for(e.kind="scalar",e.result="",e.position++,r=i=e.position;(t=e.input.charCodeAt(e.position))!==0;)if(t===39)if(ue(e,r,e.position,!0),t=e.input.charCodeAt(++e.position),t===39)r=e.position,e.position++,i=e.position;else return!0;else ne(t)?(ue(e,r,i,!0),Ft(e,b(e,!1,n)),r=i=e.position):e.position===e.lineStart&&$n(e)?g(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);g(e,"unexpected end of the stream within a single quoted scalar")}function al(e,n){var t,r,i,o,s,a;if(a=e.input.charCodeAt(e.position),a!==34)return!1;for(e.kind="scalar",e.result="",e.position++,t=r=e.position;(a=e.input.charCodeAt(e.position))!==0;){if(a===34)return ue(e,t,e.position,!0),e.position++,!0;if(a===92){if(ue(e,t,e.position,!0),a=e.input.charCodeAt(++e.position),ne(a))b(e,!1,n);else if(a<256&&hi[a])e.result+=gi[a],e.position++;else if((s=nl(a))>0){for(i=s,o=0;i>0;i--)a=e.input.charCodeAt(++e.position),(s=el(a))>=0?o=(o<<4)+s:g(e,"expected hexadecimal character");e.result+=rl(o),e.position++}else g(e,"unknown escape sequence");t=r=e.position}else ne(a)?(ue(e,t,r,!0),Ft(e,b(e,!1,n)),t=r=e.position):e.position===e.lineStart&&$n(e)?g(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}g(e,"unexpected end of the stream within a double quoted scalar")}function ll(e,n){var t=!0,r,i,o,s=e.tag,a,l=e.anchor,c,u,p,d,m,f=Object.create(null),h,
|
|
42
|
+
`,n-1))}function ol(e,n,t){var r,i,o,s,a,l,c,u,p=e.kind,d=e.result,m;if(m=e.input.charCodeAt(e.position),R(m)||Ne(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=e.input.charCodeAt(e.position+1),R(i)||t&&Ne(i)))return!1;for(e.kind="scalar",e.result="",o=s=e.position,a=!1;m!==0;){if(m===58){if(i=e.input.charCodeAt(e.position+1),R(i)||t&&Ne(i))break}else if(m===35){if(r=e.input.charCodeAt(e.position-1),R(r))break}else{if(e.position===e.lineStart&&$n(e)||t&&Ne(m))break;if(ne(m))if(l=e.line,c=e.lineStart,u=e.lineIndent,b(e,!1,-1),e.lineIndent>=n){a=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=c,e.lineIndent=u;break}}a&&(ue(e,o,s,!1),Ft(e,e.line-l),o=s=e.position,a=!1),ve(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return ue(e,o,s,!1),e.result?!0:(e.kind=p,e.result=d,!1)}function sl(e,n){var t,r,i;if(t=e.input.charCodeAt(e.position),t!==39)return!1;for(e.kind="scalar",e.result="",e.position++,r=i=e.position;(t=e.input.charCodeAt(e.position))!==0;)if(t===39)if(ue(e,r,e.position,!0),t=e.input.charCodeAt(++e.position),t===39)r=e.position,e.position++,i=e.position;else return!0;else ne(t)?(ue(e,r,i,!0),Ft(e,b(e,!1,n)),r=i=e.position):e.position===e.lineStart&&$n(e)?g(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);g(e,"unexpected end of the stream within a single quoted scalar")}function al(e,n){var t,r,i,o,s,a;if(a=e.input.charCodeAt(e.position),a!==34)return!1;for(e.kind="scalar",e.result="",e.position++,t=r=e.position;(a=e.input.charCodeAt(e.position))!==0;){if(a===34)return ue(e,t,e.position,!0),e.position++,!0;if(a===92){if(ue(e,t,e.position,!0),a=e.input.charCodeAt(++e.position),ne(a))b(e,!1,n);else if(a<256&&hi[a])e.result+=gi[a],e.position++;else if((s=nl(a))>0){for(i=s,o=0;i>0;i--)a=e.input.charCodeAt(++e.position),(s=el(a))>=0?o=(o<<4)+s:g(e,"expected hexadecimal character");e.result+=rl(o),e.position++}else g(e,"unknown escape sequence");t=r=e.position}else ne(a)?(ue(e,t,r,!0),Ft(e,b(e,!1,n)),t=r=e.position):e.position===e.lineStart&&$n(e)?g(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}g(e,"unexpected end of the stream within a double quoted scalar")}function ll(e,n){var t=!0,r,i,o,s=e.tag,a,l=e.anchor,c,u,p,d,m,f=Object.create(null),h,y,A,v;if(v=e.input.charCodeAt(e.position),v===91)u=93,m=!1,a=[];else if(v===123)u=125,m=!0,a={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),v=e.input.charCodeAt(++e.position);v!==0;){if(b(e,!0,n),v=e.input.charCodeAt(e.position),v===u)return e.position++,e.tag=s,e.anchor=l,e.kind=m?"mapping":"sequence",e.result=a,!0;t?v===44&&g(e,"expected the node content, but found ','"):g(e,"missed comma between flow collection entries"),y=h=A=null,p=d=!1,v===63&&(c=e.input.charCodeAt(e.position+1),R(c)&&(p=d=!0,e.position++,b(e,!0,n))),r=e.line,i=e.lineStart,o=e.position,De(e,n,Cn,!1,!0),y=e.tag,h=e.result,b(e,!0,n),v=e.input.charCodeAt(e.position),(d||e.line===r)&&v===58&&(p=!0,v=e.input.charCodeAt(++e.position),b(e,!0,n),De(e,n,Cn,!1,!0),A=e.result),m?Te(e,a,f,y,h,A,r,i,o):p?a.push(Te(e,null,f,y,h,A,r,i,o)):a.push(h),b(e,!0,n),v=e.input.charCodeAt(e.position),v===44?(t=!0,v=e.input.charCodeAt(++e.position)):t=!1}g(e,"unexpected end of the stream within a flow collection")}function ul(e,n){var t,r,i=Ot,o=!1,s=!1,a=n,l=0,c=!1,u,p;if(p=e.input.charCodeAt(e.position),p===124)r=!1;else if(p===62)r=!0;else return!1;for(e.kind="scalar",e.result="";p!==0;)if(p=e.input.charCodeAt(++e.position),p===43||p===45)Ot===i?i=p===43?Wr:Ja:g(e,"repeat of a chomping mode identifier");else if((u=tl(p))>=0)u===0?g(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?g(e,"repeat of an indentation width identifier"):(a=n+u-1,s=!0);else break;if(ve(p)){do p=e.input.charCodeAt(++e.position);while(ve(p));if(p===35)do p=e.input.charCodeAt(++e.position);while(!ne(p)&&p!==0)}for(;p!==0;){for(Dt(e),e.lineIndent=0,p=e.input.charCodeAt(e.position);(!s||e.lineIndent<a)&&p===32;)e.lineIndent++,p=e.input.charCodeAt(++e.position);if(!s&&e.lineIndent>a&&(a=e.lineIndent),ne(p)){l++;continue}if(e.lineIndent<a){i===Wr?e.result+=C.repeat(`
|
|
43
43
|
`,o?1+l:l):i===Ot&&o&&(e.result+=`
|
|
44
44
|
`);break}for(r?ve(p)?(c=!0,e.result+=C.repeat(`
|
|
45
45
|
`,o?1+l:l)):c?(c=!1,e.result+=C.repeat(`
|
|
46
46
|
`,l+1)):l===0?o&&(e.result+=" "):e.result+=C.repeat(`
|
|
47
47
|
`,l):e.result+=C.repeat(`
|
|
48
|
-
`,o?1+l:l),o=!0,s=!0,l=0,t=e.position;!ne(p)&&p!==0;)p=e.input.charCodeAt(++e.position);ue(e,t,e.position,!1)}return!0}function Jr(e,n){var t,r=e.tag,i=e.anchor,o=[],s,a=!1,l;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),l=e.input.charCodeAt(e.position);l!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,g(e,"tab characters must not be used in indentation")),!(l!==45||(s=e.input.charCodeAt(e.position+1),!R(s))));){if(a=!0,e.position++,b(e,!0,-1)&&e.lineIndent<=n){o.push(null),l=e.input.charCodeAt(e.position);continue}if(t=e.line,De(e,n,pi,!1,!0),o.push(e.result),b(e,!0,-1),l=e.input.charCodeAt(e.position),(e.line===t||e.lineIndent>n)&&l!==0)g(e,"bad indentation of a sequence entry");else if(e.lineIndent<n)break}return a?(e.tag=r,e.anchor=i,e.kind="sequence",e.result=o,!0):!1}function cl(e,n,t){var r,i,o,s,a,l,c=e.tag,u=e.anchor,p={},d=Object.create(null),m=null,f=null,h=null,
|
|
49
|
-
`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var t=new il(e,n),r=e.indexOf("\0");for(r!==-1&&(t.position=r,g(t,"null byte is not allowed in input")),t.input+="\0";t.input.charCodeAt(t.position)===32;)t.lineIndent+=1,t.position+=1;for(;t.position<t.length-1;)ml(t);return t.documents}function hl(e,n,t){n!==null&&typeof n=="object"&&typeof t>"u"&&(t=n,n=null);var r=
|
|
48
|
+
`,o?1+l:l),o=!0,s=!0,l=0,t=e.position;!ne(p)&&p!==0;)p=e.input.charCodeAt(++e.position);ue(e,t,e.position,!1)}return!0}function Jr(e,n){var t,r=e.tag,i=e.anchor,o=[],s,a=!1,l;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),l=e.input.charCodeAt(e.position);l!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,g(e,"tab characters must not be used in indentation")),!(l!==45||(s=e.input.charCodeAt(e.position+1),!R(s))));){if(a=!0,e.position++,b(e,!0,-1)&&e.lineIndent<=n){o.push(null),l=e.input.charCodeAt(e.position);continue}if(t=e.line,De(e,n,pi,!1,!0),o.push(e.result),b(e,!0,-1),l=e.input.charCodeAt(e.position),(e.line===t||e.lineIndent>n)&&l!==0)g(e,"bad indentation of a sequence entry");else if(e.lineIndent<n)break}return a?(e.tag=r,e.anchor=i,e.kind="sequence",e.result=o,!0):!1}function cl(e,n,t){var r,i,o,s,a,l,c=e.tag,u=e.anchor,p={},d=Object.create(null),m=null,f=null,h=null,y=!1,A=!1,v;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=p),v=e.input.charCodeAt(e.position);v!==0;){if(!y&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,g(e,"tab characters must not be used in indentation")),r=e.input.charCodeAt(e.position+1),o=e.line,(v===63||v===58)&&R(r))v===63?(y&&(Te(e,p,d,m,f,null,s,a,l),m=f=h=null),A=!0,y=!0,i=!0):y?(y=!1,i=!0):g(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,v=r;else{if(s=e.line,a=e.lineStart,l=e.position,!De(e,t,ci,!1,!0))break;if(e.line===o){for(v=e.input.charCodeAt(e.position);ve(v);)v=e.input.charCodeAt(++e.position);if(v===58)v=e.input.charCodeAt(++e.position),R(v)||g(e,"a whitespace character is expected after the key-value separator within a block mapping"),y&&(Te(e,p,d,m,f,null,s,a,l),m=f=h=null),A=!0,y=!1,i=!1,m=e.tag,f=e.result;else if(A)g(e,"can not read an implicit mapping pair; a colon is missed");else return e.tag=c,e.anchor=u,!0}else if(A)g(e,"can not read a block mapping entry; a multiline key may not be an implicit key");else return e.tag=c,e.anchor=u,!0}if((e.line===o||e.lineIndent>n)&&(y&&(s=e.line,a=e.lineStart,l=e.position),De(e,n,On,!0,i)&&(y?f=e.result:h=e.result),y||(Te(e,p,d,m,f,h,s,a,l),m=f=h=null),b(e,!0,-1),v=e.input.charCodeAt(e.position)),(e.line===o||e.lineIndent>n)&&v!==0)g(e,"bad indentation of a mapping entry");else if(e.lineIndent<n)break}return y&&Te(e,p,d,m,f,null,s,a,l),A&&(e.tag=c,e.anchor=u,e.kind="mapping",e.result=p),A}function pl(e){var n,t=!1,r=!1,i,o,s;if(s=e.input.charCodeAt(e.position),s!==33)return!1;if(e.tag!==null&&g(e,"duplication of a tag property"),s=e.input.charCodeAt(++e.position),s===60?(t=!0,s=e.input.charCodeAt(++e.position)):s===33?(r=!0,i="!!",s=e.input.charCodeAt(++e.position)):i="!",n=e.position,t){do s=e.input.charCodeAt(++e.position);while(s!==0&&s!==62);e.position<e.length?(o=e.input.slice(n,e.position),s=e.input.charCodeAt(++e.position)):g(e,"unexpected end of the stream within a verbatim tag")}else{for(;s!==0&&!R(s);)s===33&&(r?g(e,"tag suffix cannot contain exclamation marks"):(i=e.input.slice(n-1,e.position+1),fi.test(i)||g(e,"named tag handle cannot contain such characters"),r=!0,n=e.position+1)),s=e.input.charCodeAt(++e.position);o=e.input.slice(n,e.position),Qa.test(o)&&g(e,"tag suffix cannot contain flow indicator characters")}o&&!di.test(o)&&g(e,"tag name cannot contain such characters: "+o);try{o=decodeURIComponent(o)}catch{g(e,"tag name is malformed: "+o)}return t?e.tag=o:ce.call(e.tagMap,i)?e.tag=e.tagMap[i]+o:i==="!"?e.tag="!"+o:i==="!!"?e.tag="tag:yaml.org,2002:"+o:g(e,'undeclared tag handle "'+i+'"'),!0}function fl(e){var n,t;if(t=e.input.charCodeAt(e.position),t!==38)return!1;for(e.anchor!==null&&g(e,"duplication of an anchor property"),t=e.input.charCodeAt(++e.position),n=e.position;t!==0&&!R(t)&&!Ne(t);)t=e.input.charCodeAt(++e.position);return e.position===n&&g(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(n,e.position),!0}function dl(e){var n,t,r;if(r=e.input.charCodeAt(e.position),r!==42)return!1;for(r=e.input.charCodeAt(++e.position),n=e.position;r!==0&&!R(r)&&!Ne(r);)r=e.input.charCodeAt(++e.position);return e.position===n&&g(e,"name of an alias node must contain at least one character"),t=e.input.slice(n,e.position),ce.call(e.anchorMap,t)||g(e,'unidentified alias "'+t+'"'),e.result=e.anchorMap[t],b(e,!0,-1),!0}function De(e,n,t,r,i){var o,s,a,l=1,c=!1,u=!1,p,d,m,f,h,y;if(e.listener!==null&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,o=s=a=On===t||pi===t,r&&b(e,!0,-1)&&(c=!0,e.lineIndent>n?l=1:e.lineIndent===n?l=0:e.lineIndent<n&&(l=-1)),l===1)for(;pl(e)||fl(e);)b(e,!0,-1)?(c=!0,a=o,e.lineIndent>n?l=1:e.lineIndent===n?l=0:e.lineIndent<n&&(l=-1)):a=!1;if(a&&(a=c||i),(l===1||On===t)&&(Cn===t||ci===t?h=n:h=n+1,y=e.position-e.lineStart,l===1?a&&(Jr(e,y)||cl(e,y,h))||ll(e,h)?u=!0:(s&&ul(e,h)||sl(e,h)||al(e,h)?u=!0:dl(e)?(u=!0,(e.tag!==null||e.anchor!==null)&&g(e,"alias node should not have any properties")):ol(e,h,Cn===t)&&(u=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):l===0&&(u=a&&Jr(e,y))),e.tag===null)e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);else if(e.tag==="?"){for(e.result!==null&&e.kind!=="scalar"&&g(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"'),p=0,d=e.implicitTypes.length;p<d;p+=1)if(f=e.implicitTypes[p],f.resolve(e.result)){e.result=f.construct(e.result),e.tag=f.tag,e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);break}}else if(e.tag!=="!"){if(ce.call(e.typeMap[e.kind||"fallback"],e.tag))f=e.typeMap[e.kind||"fallback"][e.tag];else for(f=null,m=e.typeMap.multi[e.kind||"fallback"],p=0,d=m.length;p<d;p+=1)if(e.tag.slice(0,m[p].tag.length)===m[p].tag){f=m[p];break}f||g(e,"unknown tag !<"+e.tag+">"),e.result!==null&&f.kind!==e.kind&&g(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+f.kind+'", not "'+e.kind+'"'),f.resolve(e.result,e.tag)?(e.result=f.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):g(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||u}function ml(e){var n=e.position,t,r,i,o=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(b(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(o=!0,s=e.input.charCodeAt(++e.position),t=e.position;s!==0&&!R(s);)s=e.input.charCodeAt(++e.position);for(r=e.input.slice(t,e.position),i=[],r.length<1&&g(e,"directive name must not be less than one character in length");s!==0;){for(;ve(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!ne(s));break}if(ne(s))break;for(t=e.position;s!==0&&!R(s);)s=e.input.charCodeAt(++e.position);i.push(e.input.slice(t,e.position))}s!==0&&Dt(e),ce.call(zr,r)?zr[r](e,r,i):Pn(e,'unknown document directive "'+r+'"')}if(b(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,b(e,!0,-1)):o&&g(e,"directives end mark is expected"),De(e,e.lineIndent-1,On,!1,!0),b(e,!0,-1),e.checkLineBreaks&&Za.test(e.input.slice(n,e.position))&&Pn(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&$n(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,b(e,!0,-1));return}if(e.position<e.length-1)g(e,"end of the stream or a document separator is expected");else return}function yi(e,n){e=String(e),n=n||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=`
|
|
49
|
+
`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var t=new il(e,n),r=e.indexOf("\0");for(r!==-1&&(t.position=r,g(t,"null byte is not allowed in input")),t.input+="\0";t.input.charCodeAt(t.position)===32;)t.lineIndent+=1,t.position+=1;for(;t.position<t.length-1;)ml(t);return t.documents}function hl(e,n,t){n!==null&&typeof n=="object"&&typeof t>"u"&&(t=n,n=null);var r=yi(e,t);if(typeof n!="function")return r;for(var i=0,o=r.length;i<o;i+=1)n(r[i])}function gl(e,n){var t=yi(e,n);if(t.length!==0){if(t.length===1)return t[0];throw new V("expected a single document in the stream, but found more")}}var vl=hl,yl=gl,_i={loadAll:vl,load:yl},Ai=Object.prototype.toString,xi=Object.prototype.hasOwnProperty,Vt=65279,_l=9,Xe=10,Al=13,xl=32,Sl=33,wl=34,kt=35,El=37,bl=38,Cl=39,Ol=42,Si=44,Pl=45,kn=58,kl=61,Il=62,$l=63,Nl=64,wi=91,Ei=93,Tl=96,bi=123,Dl=124,Ci=125,N={};N[0]="\\0";N[7]="\\a";N[8]="\\b";N[9]="\\t";N[10]="\\n";N[11]="\\v";N[12]="\\f";N[13]="\\r";N[27]="\\e";N[34]='\\"';N[92]="\\\\";N[133]="\\N";N[160]="\\_";N[8232]="\\L";N[8233]="\\P";var Fl=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Vl=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function Rl(e,n){var t,r,i,o,s,a,l;if(n===null)return{};for(t={},r=Object.keys(n),i=0,o=r.length;i<o;i+=1)s=r[i],a=String(n[s]),s.slice(0,2)==="!!"&&(s="tag:yaml.org,2002:"+s.slice(2)),l=e.compiledTypeMap.fallback[s],l&&xi.call(l.styleAliases,a)&&(a=l.styleAliases[a]),t[s]=a;return t}function Ll(e){var n,t,r;if(n=e.toString(16).toUpperCase(),e<=255)t="x",r=2;else if(e<=65535)t="u",r=4;else if(e<=4294967295)t="U",r=8;else throw new V("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+t+C.repeat("0",r-n.length)+n}var Ml=1,Ze=2;function jl(e){this.schema=e.schema||ui,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=C.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=Rl(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.quotingType=e.quotingType==='"'?Ze:Ml,this.forceQuotes=e.forceQuotes||!1,this.replacer=typeof e.replacer=="function"?e.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Xr(e,n){for(var t=C.repeat(" ",n),r=0,i=-1,o="",s,a=e.length;r<a;)i=e.indexOf(`
|
|
50
50
|
`,r),i===-1?(s=e.slice(r),r=a):(s=e.slice(r,i+1),r=i+1),s.length&&s!==`
|
|
51
51
|
`&&(o+=t),o+=s;return o}function It(e,n){return`
|
|
52
|
-
`+C.repeat(" ",e.indent*n)}function Hl(e,n){var t,r,i;for(t=0,r=e.implicitTypes.length;t<r;t+=1)if(i=e.implicitTypes[t],i.resolve(n))return!0;return!1}function In(e){return e===xl||e===
|
|
52
|
+
`+C.repeat(" ",e.indent*n)}function Hl(e,n){var t,r,i;for(t=0,r=e.implicitTypes.length;t<r;t+=1)if(i=e.implicitTypes[t],i.resolve(n))return!0;return!1}function In(e){return e===xl||e===_l}function Qe(e){return 32<=e&&e<=126||161<=e&&e<=55295&&e!==8232&&e!==8233||57344<=e&&e<=65533&&e!==Vt||65536<=e&&e<=1114111}function Zr(e){return Qe(e)&&e!==Vt&&e!==Al&&e!==Xe}function Qr(e,n,t){var r=Zr(e),i=r&&!In(e);return(t?r:r&&e!==Si&&e!==wi&&e!==Ei&&e!==bi&&e!==Ci)&&e!==kt&&!(n===kn&&!i)||Zr(n)&&!In(n)&&e===kt||n===kn&&i}function Ul(e){return Qe(e)&&e!==Vt&&!In(e)&&e!==Pl&&e!==$l&&e!==kn&&e!==Si&&e!==wi&&e!==Ei&&e!==bi&&e!==Ci&&e!==kt&&e!==bl&&e!==Ol&&e!==Sl&&e!==Dl&&e!==kl&&e!==Il&&e!==Cl&&e!==wl&&e!==El&&e!==Nl&&e!==Tl}function ql(e){return!In(e)&&e!==kn}function Ke(e,n){var t=e.charCodeAt(n),r;return t>=55296&&t<=56319&&n+1<e.length&&(r=e.charCodeAt(n+1),r>=56320&&r<=57343)?(t-55296)*1024+r-56320+65536:t}function Oi(e){var n=/^\n* /;return n.test(e)}var Pi=1,$t=2,ki=3,Ii=4,$e=5;function Bl(e,n,t,r,i,o,s,a){var l,c=0,u=null,p=!1,d=!1,m=r!==-1,f=-1,h=Ul(Ke(e,0))&&ql(Ke(e,e.length-1));if(n||s)for(l=0;l<e.length;c>=65536?l+=2:l++){if(c=Ke(e,l),!Qe(c))return $e;h=h&&Qr(c,u,a),u=c}else{for(l=0;l<e.length;c>=65536?l+=2:l++){if(c=Ke(e,l),c===Xe)p=!0,m&&(d=d||l-f-1>r&&e[f+1]!==" ",f=l);else if(!Qe(c))return $e;h=h&&Qr(c,u,a),u=c}d=d||m&&l-f-1>r&&e[f+1]!==" "}return!p&&!d?h&&!s&&!i(e)?Pi:o===Ze?$e:$t:t>9&&Oi(e)?$e:s?o===Ze?$e:$t:d?Ii:ki}function Wl(e,n,t,r,i){e.dump=(function(){if(n.length===0)return e.quotingType===Ze?'""':"''";if(!e.noCompatMode&&(Fl.indexOf(n)!==-1||Vl.test(n)))return e.quotingType===Ze?'"'+n+'"':"'"+n+"'";var o=e.indent*Math.max(1,t),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),a=r||e.flowLevel>-1&&t>=e.flowLevel;function l(c){return Hl(e,c)}switch(Bl(n,a,e.indent,s,l,e.quotingType,e.forceQuotes&&!r,i)){case Pi:return n;case $t:return"'"+n.replace(/'/g,"''")+"'";case ki:return"|"+ei(n,e.indent)+ni(Xr(n,o));case Ii:return">"+ei(n,e.indent)+ni(Xr(Yl(n,s),o));case $e:return'"'+Gl(n)+'"';default:throw new V("impossible error: invalid scalar style")}})()}function ei(e,n){var t=Oi(e)?String(n):"",r=e[e.length-1]===`
|
|
53
53
|
`,i=r&&(e[e.length-2]===`
|
|
54
54
|
`||e===`
|
|
55
55
|
`),o=i?"+":r?"":"-";return t+o+`
|
|
@@ -61,11 +61,11 @@ Expecting one of '${r.join("', '")}'`);let i=`${n}Help`;return this.on(i,o=>{let
|
|
|
61
61
|
`+e.slice(i,o),i=o+1),s=a;return l+=`
|
|
62
62
|
`,e.length-i>n&&s>i?l+=e.slice(i,s)+`
|
|
63
63
|
`+e.slice(s+1):l+=e.slice(i),l.slice(1)}function Gl(e){for(var n="",t=0,r,i=0;i<e.length;t>=65536?i+=2:i++)t=Ke(e,i),r=N[t],!r&&Qe(t)?(n+=e[i],t>=65536&&(n+=e[i+1])):n+=r||Ll(t);return n}function zl(e,n,t){var r="",i=e.tag,o,s,a;for(o=0,s=t.length;o<s;o+=1)a=t[o],e.replacer&&(a=e.replacer.call(t,String(o),a)),(ie(e,n,a,!1,!1)||typeof a>"u"&&ie(e,n,null,!1,!1))&&(r!==""&&(r+=","+(e.condenseFlow?"":" ")),r+=e.dump);e.tag=i,e.dump="["+r+"]"}function ri(e,n,t,r){var i="",o=e.tag,s,a,l;for(s=0,a=t.length;s<a;s+=1)l=t[s],e.replacer&&(l=e.replacer.call(t,String(s),l)),(ie(e,n+1,l,!0,!0,!1,!0)||typeof l>"u"&&ie(e,n+1,null,!0,!0,!1,!0))&&((!r||i!=="")&&(i+=It(e,n)),e.dump&&Xe===e.dump.charCodeAt(0)?i+="-":i+="- ",i+=e.dump);e.tag=o,e.dump=i||"[]"}function Kl(e,n,t){var r="",i=e.tag,o=Object.keys(t),s,a,l,c,u;for(s=0,a=o.length;s<a;s+=1)u="",r!==""&&(u+=", "),e.condenseFlow&&(u+='"'),l=o[s],c=t[l],e.replacer&&(c=e.replacer.call(t,l,c)),ie(e,n,l,!1,!1)&&(e.dump.length>1024&&(u+="? "),u+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),ie(e,n,c,!1,!1)&&(u+=e.dump,r+=u));e.tag=i,e.dump="{"+r+"}"}function Jl(e,n,t,r){var i="",o=e.tag,s=Object.keys(t),a,l,c,u,p,d;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new V("sortKeys must be a boolean or a function");for(a=0,l=s.length;a<l;a+=1)d="",(!r||i!=="")&&(d+=It(e,n)),c=s[a],u=t[c],e.replacer&&(u=e.replacer.call(t,c,u)),ie(e,n+1,c,!0,!0,!0)&&(p=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,p&&(e.dump&&Xe===e.dump.charCodeAt(0)?d+="?":d+="? "),d+=e.dump,p&&(d+=It(e,n)),ie(e,n+1,u,!0,p)&&(e.dump&&Xe===e.dump.charCodeAt(0)?d+=":":d+=": ",d+=e.dump,i+=d));e.tag=o,e.dump=i||"{}"}function ii(e,n,t){var r,i,o,s,a,l;for(i=t?e.explicitTypes:e.implicitTypes,o=0,s=i.length;o<s;o+=1)if(a=i[o],(a.instanceOf||a.predicate)&&(!a.instanceOf||typeof n=="object"&&n instanceof a.instanceOf)&&(!a.predicate||a.predicate(n))){if(t?a.multi&&a.representName?e.tag=a.representName(n):e.tag=a.tag:e.tag="?",a.represent){if(l=e.styleMap[a.tag]||a.defaultStyle,Ai.call(a.represent)==="[object Function]")r=a.represent(n,l);else if(xi.call(a.represent,l))r=a.represent[l](n,l);else throw new V("!<"+a.tag+'> tag resolver accepts not "'+l+'" style');e.dump=r}return!0}return!1}function ie(e,n,t,r,i,o,s){e.tag=null,e.dump=t,ii(e,t,!1)||ii(e,t,!0);var a=Ai.call(e.dump),l=r,c;r&&(r=e.flowLevel<0||e.flowLevel>n);var u=a==="[object Object]"||a==="[object Array]",p,d;if(u&&(p=e.duplicates.indexOf(t),d=p!==-1),(e.tag!==null&&e.tag!=="?"||d||e.indent!==2&&n>0)&&(i=!1),d&&e.usedDuplicates[p])e.dump="*ref_"+p;else{if(u&&d&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),a==="[object Object]")r&&Object.keys(e.dump).length!==0?(Jl(e,n,e.dump,i),d&&(e.dump="&ref_"+p+e.dump)):(Kl(e,n,e.dump),d&&(e.dump="&ref_"+p+" "+e.dump));else if(a==="[object Array]")r&&e.dump.length!==0?(e.noArrayIndent&&!s&&n>0?ri(e,n-1,e.dump,i):ri(e,n,e.dump,i),d&&(e.dump="&ref_"+p+e.dump)):(zl(e,n,e.dump),d&&(e.dump="&ref_"+p+" "+e.dump));else if(a==="[object String]")e.tag!=="?"&&Wl(e,e.dump,n,o,l);else{if(a==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new V("unacceptable kind of an object to dump "+a)}e.tag!==null&&e.tag!=="?"&&(c=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?c="!"+c:c.slice(0,18)==="tag:yaml.org,2002:"?c="!!"+c.slice(18):c="!<"+c+">",e.dump=c+" "+e.dump)}return!0}function Xl(e,n){var t=[],r=[],i,o;for(Nt(e,t,r),i=0,o=r.length;i<o;i+=1)n.duplicates.push(t[r[i]]);n.usedDuplicates=new Array(o)}function Nt(e,n,t){var r,i,o;if(e!==null&&typeof e=="object")if(i=n.indexOf(e),i!==-1)t.indexOf(i)===-1&&t.push(i);else if(n.push(e),Array.isArray(e))for(i=0,o=e.length;i<o;i+=1)Nt(e[i],n,t);else for(r=Object.keys(e),i=0,o=r.length;i<o;i+=1)Nt(e[r[i]],n,t)}function Zl(e,n){n=n||{};var t=new jl(n);t.noRefs||Xl(e,t);var r=e;return t.replacer&&(r=t.replacer.call({"":r},"",r)),ie(t,0,r,!0,!0)?t.dump+`
|
|
64
|
-
`:""}var Ql=Zl,eu={dump:Ql};function Rt(e,n){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+n+" instead, which is now safe by default.")}}var $i=
|
|
64
|
+
`:""}var Ql=Zl,eu={dump:Ql};function Rt(e,n){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+n+" instead, which is now safe by default.")}}var $i=_i.load,sc=_i.loadAll,ac=eu.dump;var lc=Rt("safeLoad","load"),uc=Rt("safeLoadAll","loadAll"),cc=Rt("safeDump","dump");var oe=_(require("fs")),L=_(require("path")),Lt=require("child_process");function Ni(e){try{let n=oe.readdirSync(e).filter(t=>/^Microsoft\.PowerApps\.CLI\.\d/i.test(t)).map(t=>({n:t,v:t.replace(/^Microsoft\.PowerApps\.CLI\./i,"").split(".").map(r=>parseInt(r,10)||0)})).sort((t,r)=>{for(let i=0;i<Math.max(t.v.length,r.v.length);i++){let o=(r.v[i]??0)-(t.v[i]??0);if(o)return o}return 0});for(let{n:t}of n){let r=L.join(e,t,"tools","pac.exe");if(oe.existsSync(r))return r}}catch{}return null}function Ti(e){let n=e.trim().replace(/^"+|"+$/g,"");if(!n)return"";if(process.platform==="win32"&&/\\pac\.(cmd|launcher\.exe)$/i.test(n)){let t=Ni(L.dirname(n));if(t)return t;let r=L.join(L.dirname(n),"pac.launcher.exe");if(oe.existsSync(r))return r}return n}function tu(){try{let e=process.platform==="win32"?(0,Lt.spawnSync)("where.exe",["pac"],{encoding:"utf8",windowsHide:!0}):(0,Lt.spawnSync)("which",["pac"],{encoding:"utf8"});return e.status!==0?null:`${e.stdout??""}
|
|
65
65
|
${e.stderr??""}`.split(/\r?\n/).map(Ti).filter(Boolean).find(t=>L.isAbsolute(t)&&oe.existsSync(t))??null}catch{return null}}function ru(){if(process.env.PPDEVOPS_PAC_EXE)return Ti(process.env.PPDEVOPS_PAC_EXE);if(process.platform==="win32"){let t=process.env.LOCALAPPDATA??L.join(process.env.USERPROFILE??"","AppData","Local"),r=L.join(t,"Microsoft","PowerAppsCLI"),i=Ni(r);if(i)return i;for(let o of[L.join(r,"pac.launcher.exe"),L.join(r,"pac.cmd"),"C:\\Program Files (x86)\\Microsoft Power Apps CLI\\tools\\pac.exe"])if(oe.existsSync(o))return o}let e=L.join(process.env.HOME??process.env.USERPROFILE??"",".dotnet","tools",process.platform==="win32"?"pac.exe":"pac");if(oe.existsSync(e))return e;for(let t of["/usr/local/bin/pac","/usr/local/lib/dotnet-tools/pac"])if(oe.existsSync(t))return t;let n=tu();return n||"pac"}var X=ru();function M(e){return L.isAbsolute(X)?`"${X}" ${e}`:`pac ${e}`}var Di=require("child_process"),iu=" ";function Nn(e,n,t={}){return new Promise((r,i)=>{let o=(0,Di.spawn)(e,n,{cwd:t.cwd,shell:t.shell??!1,env:t.env,stdio:["ignore","pipe","pipe"]}),s=t.echo??!0,a="",l="",c=p=>{s&&process.stdout.write((p.trim()?iu+p:"")+`
|
|
66
66
|
`),p.trim()&&t.log?.(p)},u=(p,d)=>{let m=(d==="out"?a:l)+p.toString(),f=m.split(`
|
|
67
|
-
`);m=f.pop()??"";for(let h of f)c(h.replace(/\r$/,""));d==="out"?a=m:l=m};o.stdout?.on("data",p=>u(p,"out")),o.stderr?.on("data",p=>u(p,"err")),o.on("error",i),o.on("close",p=>{for(let d of[a,l]){let m=d.replace(/\r$/,"");m.trim()&&c(m)}r(p??0)})})}async function Tn(e,n={}){let t="",r,i=await Nn(e,[],{...n,shell:!0,log:o=>{t=o,n.failOn&&!r&&n.failOn.test(o)&&(r=o.trim()),n.log?.(o)}});if(r)throw new Error(r);if(i!==0)throw new Error(`exited with code ${i}${t?`: ${t}`:""}`)}var ou=/^\s*Error:/i;function
|
|
68
|
-
`)[0]}`),!0}catch(n){return e(`[pac-check] Not found: ${n instanceof Error?n.message:String(n)}`),!1}}function fu(){try{return(0,nn.execSync)("az --version",{stdio:"pipe",timeout:15e3}),!0}catch{return!1}}async function Wi(e,n){if(!pu(n))throw new Error("pac CLI not found. Install the Power Platform CLI before running ppdevops deploy.");let t=e.profileName??Bi;n(`Setting up PAC auth profile '${t}'`);try{Ve(M(`auth delete --name ${t}`))}catch{}let r=Ut?" --accept-cleartext-caching":"",i=Ut?'"$PPDO_CLIENT_SECRET"':'"%PPDO_CLIENT_SECRET%"';return Ve(M("auth create")+` --name ${t} --environment "${e.environmentUrl}" --applicationId "${e.clientId}" --clientSecret ${i} --tenant "${e.tenantId}"`+r,{PPDO_CLIENT_SECRET:e.clientSecret}),Ve(M(`auth select --name ${t}`)),Ve(M(`org select --environment "${e.environmentUrl}"`)),n(`PAC auth configured for ${e.environmentUrl}`),t}async function Yi(e,n){if(!fu()){n("[WARN] az CLI not found \u2014 skipping Azure CLI auth. Key Vault lookups will fail.");return}qt=process.env.AZURE_CONFIG_DIR,Re=Ln.join(Rn.tmpdir(),`ppdevops-az-${Date.now()}`),Le.mkdirSync(Re,{recursive:!0}),process.env.AZURE_CONFIG_DIR=Re;try{Ve(`az login --service-principal --username "${e.clientId}" --password "${e.clientSecret}" --tenant "${e.tenantId}" --output none`,void 0,6e4),n("Azure CLI authenticated.")}catch(t){n(`[WARN] Azure CLI auth failed (non-fatal): ${t instanceof Error?t.message:String(t)}`)}}function Gi(e=Bi,n){try{Ve(M(`auth delete --name ${e}`)),n?.(`PAC auth profile '${e}' removed.`)}catch{}}function zi(){if(qt!==void 0?process.env.AZURE_CONFIG_DIR=qt:delete process.env.AZURE_CONFIG_DIR,Re){try{Le.rmSync(Re,{recursive:!0,force:!0})}catch{}Re=void 0}}var Me=y(require("fs")),ye=y(require("path")),Mn=y(require("os"));async function Ki(e,n,t){let r=ye.join(n,"data");if(!Me.existsSync(r))return{status:"skipped",message:`No data/ directory in ${n} \u2014 skipping.`};let i=ye.join(r,"data.zip"),o=ye.join(r,"Extracted"),s;if(!Me.existsSync(i)){if(!Me.existsSync(o))return{status:"skipped",message:"No data.zip or Extracted/ folder found \u2014 skipping."};s=ye.join(Mn.tmpdir(),`ppdevops-data-${Date.now()}.zip`),t(`Compressing Extracted/ -> ${s}`),Mn.platform()==="win32"?await Tn(`powershell -NoProfile -Command "Compress-Archive -Path '${o}\\*' -DestinationPath '${s}' -Force"`,{log:t}):await Tn(`cd "${o}" && zip -r "${s}" .`,{log:t}),i=s}try{return t(`Importing data from ${ye.basename(i)}`),await _e(M(`data import --data "${i}" --environment "${e}"`),{log:t}),{status:"done",message:"Data import complete."}}finally{if(s)try{Me.rmSync(s,{force:!0})}catch{}}}var jn=y(require("fs")),Hn=y(require("path")),Ji=y(require("https")),Xi=y(he());async function du(e){let n=wt();if(!n)throw new Error("Service-principal credentials not available (PPDEVOPS_CLIENT_ID / PPDEVOPS_CLIENT_SECRET / PPDEVOPS_TENANT_ID).");return Et(e,n)}function Zi(e,n,t,r){return new Promise((i,o)=>{let s=r?JSON.stringify(r):void 0,a=new URL(n),l={hostname:a.hostname,path:a.pathname+a.search,method:e,headers:{Authorization:`Bearer ${t}`,"OData-MaxVersion":"4.0","OData-Version":"4.0","Content-Type":"application/json",Accept:"application/json",...s?{"Content-Length":Buffer.byteLength(s)}:{}}},c=Ji.request(l,u=>{let p="";u.on("data",d=>{p+=d}),u.on("end",()=>{if((u.statusCode??0)>=400)o(new Error(`HTTP ${u.statusCode}: ${p}`));else try{i(p?JSON.parse(p):null)}catch{i(p)}})});c.on("error",o),s&&c.write(s),c.end()})}async function mu(e,n,t,r){let i=e.replace(/\/$/,"");await Zi("PATCH",`${i}/api/data/v9.2/workflows(${t})`,n,{statecode:r?1:2,statuscode:r?2:1})}async function hu(e,n,t){let r=e.replace(/\/$/,"");return(await Zi("GET",`${r}/api/data/v9.2/workflows?$filter=name eq '${encodeURIComponent(t)}'&$select=workflowid,name,statecode`,n))?.value?.[0]?.workflowid??null}async function Qi(e,n,t,r){let i=(0,Xi.isTrue)(t.FailonError),o=t.OverrideFile?Hn.resolve(n,t.OverrideFile):Hn.join(n,"Flows_Default.json");if(!jn.existsSync(o))return{status:"skipped",message:`Flow override file not found: ${o} \u2014 skipping.`};let s;try{s=JSON.parse(jn.readFileSync(o,"utf-8"))}catch(p){let d=`Failed to parse flow override file: ${p instanceof Error?p.message:String(p)}`;return i?{status:"error",message:d}:{status:"skipped",message:`${d} \u2014 skipping flow activation.`}}let a;try{a=await du(e)}catch(p){let d=`Could not get access token: ${p instanceof Error?p.message:String(p)}`;return i?{status:"error",message:d}:{status:"skipped",message:`${d} \u2014 skipping flow activation.`}}let l=0,c=s.flows??[];for(let p of c)try{let d=await hu(e,a,p.flowName);if(!d){r(`[WARN] Flow not found: ${p.flowName}`);continue}await mu(e,a,d,p.activate),r(`${p.activate?"Activated":"Deactivated"}: ${p.flowName}`)}catch(d){r(`[WARN] Failed for ${p.flowName}: ${d instanceof Error?d.message:String(d)}`),l++}let u=`Flow activation complete (${l} error(s)).`;return l>0&&i?{status:"error",message:u}:{status:"done",message:u,metrics:{processed:c.length,errors:l}}}var Bt=y(require("fs")),eo=y(require("path"));async function no(e){if(!Bt.existsSync(e.zip))throw new Error(`Solution zip not found: ${e.zip}`);let n=e.target.OverwriteUnmanagedCustomisations?.toLowerCase()!=="false",t=M("solution import")+` --path "${e.zip}" --environment "${e.environmentUrl}" --activate-plugins --async`+(e.importMode==="holding-then-upgrade"?" --import-as-holding":"")+(e.importMode==="stage-and-upgrade"?" --stage-and-upgrade":"")+(n?" --force-overwrite":"");e.deploymentSettingsPath&&Bt.existsSync(e.deploymentSettingsPath)?(t+=` --settings-file "${e.deploymentSettingsPath}"`,e.log(`Using deployment settings: ${eo.basename(e.deploymentSettingsPath)}`)):e.target.SettingsFile&&e.log(`[WARN] SettingsFile "${e.target.SettingsFile}" specified but not found \u2014 connection refs may need manual setup.`),await _e(t,{log:e.log})}async function to(e,n,t){await _e(M(`solution upgrade --solution-name "${n}" --environment "${e}" --async`),{log:t})}var Un=y(require("fs")),ro=y(require("path"));async function io(e,n,t,r,i){Un.mkdirSync(t,{recursive:!0});let o=ro.join(t,r==="Unmanaged"?`${n}.zip`:`${n}_managed.zip`);if(await _e(M(`solution pack --folder "${e}" --zipfile "${o}" --packagetype ${r}`),{log:i}),!Un.existsSync(o))throw new Error(`pac solution pack completed but the zip was not created: ${o}`);return i(`${r} zip: ${o}`),o}var je=e=>({status:"error",message:e instanceof Error?e.message:String(e)});function so(e){let n=e.env.EnvironmentURL,t,r=s=>{let a=e.input.solutions.find(l=>l.name===s.name);if(!a)throw new Error(`No plan input for ${s.name}`);return a},i=s=>s.kind==="patch"?G.join(e.projectPath,s.root.name,`pac_${s.name}`,"src"):G.join(e.projectPath,s.root.name,"src"),o=s=>G.join(e.projectPath,s.name);return{async auth(s){try{return t=await Wi({...e.creds,environmentUrl:n,profileName:e.profileName},s.log),await Yi({...e.creds,environmentUrl:n},s.log),{status:"done",message:`PAC auth configured for ${n}`}}catch(a){return je(a)}},async teardown(){t&&Gi(t),zi()},async envAction(){return{status:"skipped",message:"legacy $Conn functions require migration"}},async checkSource(s){let a=i(s);return tn.existsSync(G.join(a,"Other","Customizations.xml"))?{status:"done",message:`Source verified at ${a}`}:{status:"error",message:`Unpacked source not found at ${a} \u2014 run Export & Unpack first.`}},async pack(s,a){let l=G.join(oo.tmpdir(),`ppdevops-${s.name}-${Date.now()}`);try{let c=await io(i(s),s.name,l,s.deploymentType,a.log);return{status:"done",message:`Packed to ${l}`,artifact:{zip:c,outputDir:l}}}catch(c){try{tn.rmSync(l,{recursive:!0,force:!0})}catch{}return je(c)}},async import(s,a,l){if(!a)return{status:"error",message:"Nothing was packed."};let c=r(s.root).target;try{return await no({environmentUrl:n,zip:a.zip,solutionName:s.name,importMode:s.importMode,target:c,deploymentSettingsPath:s.kind==="solution"&&c.SettingsFile?G.resolve(o(s.root),c.SettingsFile):void 0,log:l.log}),{status:"done",message:s.importMode==="stage-and-upgrade"?`${s.name} imported and upgraded (applied atomically via --stage-and-upgrade).`:`${s.name} imported.`}}catch(u){return je(u)}},async upgrade(s,a){try{return await to(n,s.name,a.log),{status:"done",message:`${s.name} upgraded.`}}catch(l){return je(l)}},async data(s,a){try{return await Ki(n,G.join(e.projectPath,s.name,"src"),a.log)}catch(l){return je(l)}},async flows(s,a){let l=r(s).target.Flows;if(!l)return{status:"skipped",message:"Flow activation not configured for this target."};try{return await Qi(n,o(s),l,a.log)}catch(c){return je(c)}},async actionStep(s,a){let l=r(s),c=(a.step.phase==="prepack"?l.prePackAction:a.step.phase==="pre"?l.preAction:a.step.phase==="post"?l.postAction:l.cleanupAction)??null;return Ri(c,a.step.name,{envUrl:n,envName:e.env.EnvironmentName,projectPath:e.projectPath,projectName:G.basename(e.projectPath),solutionName:s.name,solutionDir:G.join(e.projectPath,s.name,"src"),scriptsDir:o(s),legacyArgs:a.step.phase==="cleanup"?[]:["-EnvironmentName",e.env.EnvironmentName,"-Path",e.projectPath],log:a.log})},async discardArtifact(s,a){try{tn.rmSync(a.outputDir,{recursive:!0,force:!0})}catch{}}}}var z=y(he());function gu(e,n){let t=e.clientId??process.env.PPDEVOPS_CLIENT_ID,r=e.clientSecret??process.env.PPDEVOPS_CLIENT_SECRET,i=e.tenantId??process.env.PPDEVOPS_TENANT_ID;if((!t||!r||!i)&&fe.existsSync(n))try{let o=JSON.parse(fe.readFileSync(n,"utf-8"));t??=o.ClientID??o.clientId,i??=o.TenantID??o.tenantId}catch{}return(!t||!r||!i)&&F("Missing credentials. Provide --client-id, --client-secret, --tenant-id or set PPDEVOPS_CLIENT_ID / PPDEVOPS_CLIENT_SECRET / PPDEVOPS_TENANT_ID."),{clientId:t,clientSecret:r,tenantId:i}}function vu(e){let t=fe.readdirSync(e).filter(r=>r.endsWith(".json")&&r!=="package.json").find(r=>!["deployPackages","Environments","tsconfig","package-lock"].some(i=>r.startsWith(i)));return qn.join(e,t??"")}function _u(e){try{return JSON.parse(fe.readFileSync(e,"utf-8"))}catch(n){return F(`Could not read plan file ${e}: ${n instanceof Error?n.message:String(n)}`)}}var ao=new xe("deploy").description("Deploy one or more Power Platform solutions to a target environment").requiredOption("-p, --project <path>","Path to the project root (contains deployPackages.json)").requiredOption("-e, --environment <name>","Target environment name (from Environments.json)").option("-s, --solutions <names>","Comma-separated solution names to deploy (default: all)").option("--plan <file>","Reviewed plan document to validate against before deploying (or PPDEVOPS_PLAN_FILE)").option("--client-id <id>","Service principal client ID").option("--client-secret <secret>","Service principal client secret").option("--tenant-id <id>","Azure tenant ID").option("--profile-name <name>","PAC auth profile name (default: ppdo-cli)").option("--json","Output structured JSON events (for CI/Studio integration)",!1).option("--dry-run","Check, pack and run actions only \u2014 do not import",!1).action(async e=>{vn(e.json?"events":"human");let n=qn.resolve(e.project);fe.existsSync(n)||F(`Project path not found: ${n}`);let{deployPackages:t,environments:r}=Sn(n),i=wn(r,e.environment),s=En(t,e.solutions?e.solutions.split(",").map(l=>l.trim()):null).filter(l=>l.DeployTo?.some(c=>c.EnvironmentName.toLowerCase()===i.EnvironmentName.toLowerCase()&&(0,z.isTrue)(c.Deploy)));if(s.length===0){_n(`No solutions are configured to deploy to "${e.environment}". Nothing to do.`),Ie(0);return}let a=gu(e,vu(n));process.env.PPDEVOPS_CLIENT_ID??=a.clientId,process.env.PPDEVOPS_CLIENT_SECRET??=a.clientSecret,process.env.PPDEVOPS_TENANT_ID??=a.tenantId;try{ke(`Deploying ${s.length} solution(s) to ${i.EnvironmentName} (${i.EnvironmentURL})`);let l=await bn(i.EnvironmentURL);ke(`Fetched ${l.length} solution(s) via Dataverse Web API.`);let c=Vn(n,i,s,l),u=(0,z.resolvePlan)(c),p=e.plan??process.env.PPDEVOPS_PLAN_FILE;if(p){let f=(0,z.validatePlan)(_u(p),u);if(!f.ok){Nr(f),process.exitCode=2;return}ke(`Plan ${u.fingerprint} is current (generated ${f.submittedGeneratedAt}).`)}gn(["",...(0,z.renderPlanText)(u)]);let d=(0,z.createCancelToken)();process.once("SIGINT",()=>d.cancel());let m=await(0,z.executePlan)(u,so({projectPath:n,env:i,input:c,creds:a,profileName:e.profileName??"ppdo-cli"}),jr(),{dryRun:e.dryRun,cancel:d});Ie(m.exitCode),process.exitCode=m.exitCode}catch(l){let c=l instanceof Error?l.message:String(l);kr(c),yn(1,c),Ie(1),process.exitCode=1}});var He=y(he()),lo=y(require("path")),uo=y(require("fs")),co=new xe("plan").description("Dry-run pre-flight: report what a deployment will do without changing anything").requiredOption("-p, --project <path>","Path to the project root (contains deployPackages.json)").requiredOption("-e, --environment <name>","Target environment name (from Environments.json)").option("-s, --solutions <names>","Comma-separated solution names to plan (default: all)").option("--client-id <id>","Service principal client ID").option("--client-secret <secret>","Service principal client secret").option("--tenant-id <id>","Azure tenant ID").option("--json","Print the plan as JSON (Run Event NDJSON when PPDEVOPS_EVENTS_FILE is set)",!1).option("--format <fmt>","With --json and no events file: 'document' (default) or 'ndjson' on stdout","document").action(async e=>{vn(e.json?hn()||e.format==="ndjson"?"events":"document":"human");let n=lo.resolve(e.project);uo.existsSync(n)||F(`Project path not found: ${n}`);let{deployPackages:t,environments:r}=Sn(n),i=wn(r,e.environment),s=En(t,e.solutions?e.solutions.split(",").map(a=>a.trim()):null).filter(a=>a.DeployTo?.some(l=>l.EnvironmentName.toLowerCase()===i.EnvironmentName.toLowerCase()&&(0,He.isTrue)(l.Deploy)));Rr(i.EnvironmentName,i.EnvironmentURL);try{let a=await bn(i.EnvironmentURL),l=(0,He.resolvePlan)(Vn(n,i,s,a));for(let c of l.solutions)Lr(c);Mr(l),gn(["",...(0,He.renderPlanText)(l)]),Pr(l),Ie(0)}catch(a){let l=a instanceof Error?a.message:String(a);F(l)}});var Bn=new xe;Bn.name("ppdevops").description("Power Platform DevOps Studio CLI \u2014 cross-platform solution deployment runner").version(Fn());Bn.addCommand(ao);Bn.addCommand(co);Bn.parseAsync(process.argv).catch(e=>{console.error("Fatal error:",e instanceof Error?e.message:String(e)),process.exit(1)});
|
|
67
|
+
`);m=f.pop()??"";for(let h of f)c(h.replace(/\r$/,""));d==="out"?a=m:l=m};o.stdout?.on("data",p=>u(p,"out")),o.stderr?.on("data",p=>u(p,"err")),o.on("error",i),o.on("close",p=>{for(let d of[a,l]){let m=d.replace(/\r$/,"");m.trim()&&c(m)}r(p??0)})})}async function Tn(e,n={}){let t="",r,i=await Nn(e,[],{...n,shell:!0,log:o=>{t=o,n.failOn&&!r&&n.failOn.test(o)&&(r=o.trim()),n.log?.(o)}});if(r)throw new Error(r);if(i!==0)throw new Error(`exited with code ${i}${t?`: ${t}`:""}`)}var ou=/^\s*Error:/i;function ye(e,n={}){return Tn(e,{...n,failOn:ou})}var jt=Vi.platform()==="win32";function en(e,n){let t=s=>Y.isAbsolute(s)?s:Y.join(n,s),r=/\.(ps1|sh|bat|yaml|yml)$/i.test(e),i=r?/\.(yaml|yml)$/i.test(e)?t(e):null:`${t(e)}.yaml`;if(i&&Fe.existsSync(i))try{let s=$i(Fe.readFileSync(i,"utf-8"));return{kind:"yaml",file:i,steps:Array.isArray(s?.steps)?s.steps:[]}}catch(s){return{kind:"parse-error",file:i,error:s instanceof Error?s.message:String(s)}}if(i&&r)return{kind:"missing",ref:e};let o=r?t(e):su(n,e);return o&&Fe.existsSync(o)?{kind:"script",file:o}:{kind:"missing",ref:e}}function su(e,n){let t=[".ps1",".sh",...jt?[".bat"]:[]];for(let r of t){let i=Y.join(e,n+r);if(Fe.existsSync(i))return i}return null}function Mt(e,n){return e.replace(/\{\{\s*env\.url\s*\}\}/g,n.envUrl).replace(/\{\{\s*env\.name\s*\}\}/g,n.envName).replace(/\{\{\s*solution\.name\s*\}\}/g,n.solutionName).replace(/\{\{\s*project\.path\s*\}\}/g,n.projectPath).replace(/\{\{\s*project\.name\s*\}\}/g,n.projectName??"").replace(/\{\{\s*auth\.clientId\s*\}\}/g,process.env.PPDEVOPS_CLIENT_ID??"").replace(/\{\{\s*auth\.tenantId\s*\}\}/g,process.env.PPDEVOPS_TENANT_ID??"").replace(/\{\{\s*auth\.clientSecret\s*\}\}/g,process.env.PPDEVOPS_CLIENT_SECRET??"")}function Fi(e){let n=[],t=/"([^"]*)"|'([^']*)'|(\S+)/g,r;for(;(r=t.exec(e))!==null;)n.push(r[1]??r[2]??r[3]??"");return n}async function au(e,n){let t=Mt(e.run??"",n),r=e.script?Y.resolve(n.scriptsDir,e.script):void 0,i,o;switch(e.type){case"pac":i=X,o=Fi(t.replace(/^pac\s+/,""));break;case"az":i="az",o=Fi(t.replace(/^az\s+/,""));break;case"pwsh":case"powershell":{if(i=e.type==="pwsh"?"pwsh":jt?"powershell.exe":"pwsh",r){if(o=["-NoProfile","-NonInteractive","-File",r],e.params)for(let[a,l]of Object.entries(e.params))o.push(`-${a}`,Mt(l,n))}else o=["-NoProfile","-NonInteractive","-Command",t];break}case"node":{if(!r)return{status:"skipped",message:'requires a "script" field'};if(i="node",o=[r],e.params)for(let[a,l]of Object.entries(e.params))o.push(`--${a}`,Mt(l,n));break}case"rest":return{status:"skipped",message:"rest steps are not supported in the CLI runner"};default:return{status:"skipped",message:`unknown step type ${e.type}`}}let s;try{s=await Nn(i,o,{cwd:n.projectPath,log:n.log})}catch(a){return{status:"error",message:`Failed to start ${i}: ${a instanceof Error?a.message:String(a)}`}}return s===0?{status:"done"}:{status:"error",message:`exited with code ${s}`}}async function lu(e,n){let t=Y.extname(e).toLowerCase(),r=n.legacyArgs??[],i,o;t===".ps1"?(i=jt?"powershell.exe":"pwsh",o=["-NoProfile","-NonInteractive","-File",e,n.envUrl,...r]):t===".sh"?(i="bash",o=[e,n.envUrl,...r]):(i="cmd.exe",o=["/c",e,n.envUrl,...r]);let s;try{s=await Nn(i,o,{cwd:process.cwd(),log:n.log})}catch(a){return{status:"error",message:`Failed to start ${i}: ${a instanceof Error?a.message:String(a)}`}}return s===0?{status:"done"}:{status:"error",message:`Script exited with code ${s}`}}async function Ri(e,n,t){if(!e)return{status:"error",message:"Action not configured."};switch(e.kind){case"yaml":{let r=e.steps.find(i=>i.name===n);return r?au(r,t):{status:"error",message:`Step "${n}" not found in ${Y.basename(e.file)}.`}}case"script":return lu(e.file,t);case"parse-error":return{status:"error",message:`Failed to parse ${Y.basename(e.file)}: ${e.error}`};case"missing":return{status:"error",message:`Script not found: ${e.ref}`}}}var Dn=_(require("fs")),Li=_(require("path"));function uu(e,n){return Li.join(e,n,`${n}.version`)}function Mi(e,n){let t=uu(e,n);if(!Dn.existsSync(t))return{entries:[],status:"missing"};try{let r=JSON.parse(Dn.readFileSync(t,"utf-8"));return{entries:Array.isArray(r)?r:[],status:"ok"}}catch{return{entries:[],status:"unparseable"}}}function ji(e,n){return(e.entries.find(r=>(r.SolutionName??"").toLowerCase()===n.toLowerCase())??e.entries[0])?.Version??null}function Hi(e,n){return e.entries.slice(1).filter(t=>t.SolutionName!==n)}var Ht={version:"1.0.0-beta.3",commit:"fb568c5",builtOn:"2026-09-21T05:23:29Z"};function Fn(){return`${Ht.version} (${Ht.commit}, built ${Ht.builtOn})`}function cu(e){let n;try{n=(0,qi.execFileSync)("git",["rev-parse","--short","HEAD"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{}return{projectPath:e,cli:Fn(),...n?{commit:n}:{}}}function Vn(e,n,t,r){let i=t.map(o=>{let s=o.DeployTo.find(u=>u.EnvironmentName.toLowerCase()===n.EnvironmentName.toLowerCase()),a=o.SolutionName,l=Ui.join(e,a),c=Mi(e,a);return{name:a,target:s,localVersion:ji(c,a),versionFile:c.status,patches:Hi(c,a).filter(u=>!!u.Version).map(u=>({name:u.SolutionName,localVersion:u.Version})),prePackAction:(0,pe.isTrue)(s.PrePackAction)?en("Scripts/PrePackAction",l):null,preAction:(0,pe.isTrue)(s.PreAction)?en("Scripts/PreAction",l):null,postAction:(0,pe.isTrue)(s.PostAction)?en("Scripts/PostAction",l):null,cleanupAction:(0,pe.isScriptRef)(s.CleanupAction)?en(s.CleanupAction,l):null}});return{environment:{name:n.EnvironmentName,url:n.EnvironmentURL,...(0,pe.isTrue)(n.PreAction)&&n.PreFunctions?.length?{preFunctions:n.PreFunctions}:{},...(0,pe.isTrue)(n.PostAction)&&n.PostFunctions?.length?{postFunctions:n.PostFunctions}:{}},source:cu(e),installed:r.map(o=>({name:o.SolutionUniqueName??o.uniquename??"",version:o.VersionNumber??o.Version??o.version??null})),solutions:i}}var tn=_(require("fs")),oo=_(require("os")),G=_(require("path"));var nn=require("child_process"),Rn=_(require("os")),Le=_(require("fs")),Ln=_(require("path"));var Bi="ppdo-cli",Ut=Rn.platform()!=="win32",Re,qt;function Ve(e,n,t=18e4){try{let r=n?{...process.env,...n}:process.env;return(0,nn.execSync)(e,{stdio:"pipe",encoding:"utf-8",env:r,timeout:t}).trim()}catch(r){let i=r,o=(Buffer.isBuffer(i.stderr)?i.stderr.toString():i.stderr??"").trim(),s=(Buffer.isBuffer(i.stdout)?i.stdout.toString():i.stdout??"").trim();throw new Error(`[exit=${i.status}] ${o||s||i.message}`)}}function pu(e){if(e(`[pac-check] PAC_EXE=${X}`),Ln.isAbsolute(X)){let n=Le.existsSync(X);return e(`[pac-check] Absolute path ${X} exists: ${n}`),n}try{let n=(0,nn.execSync)(Ut?`command -v ${X}`:`where ${X}`,{stdio:"pipe",encoding:"utf-8"}).trim();return e(`[pac-check] Found on PATH: ${n}`),!0}catch{}try{let n=(0,nn.execSync)(M("--version"),{stdio:"pipe",encoding:"utf-8"});return e(`[pac-check] Version OK: ${n.trim().split(`
|
|
68
|
+
`)[0]}`),!0}catch(n){return e(`[pac-check] Not found: ${n instanceof Error?n.message:String(n)}`),!1}}function fu(){try{return(0,nn.execSync)("az --version",{stdio:"pipe",timeout:15e3}),!0}catch{return!1}}async function Wi(e,n){if(!pu(n))throw new Error("pac CLI not found. Install the Power Platform CLI before running ppdevops deploy.");let t=e.profileName??Bi;n(`Setting up PAC auth profile '${t}'`);try{Ve(M(`auth delete --name ${t}`))}catch{}let r=Ut?" --accept-cleartext-caching":"",i=Ut?'"$PPDO_CLIENT_SECRET"':'"%PPDO_CLIENT_SECRET%"';return Ve(M("auth create")+` --name ${t} --environment "${e.environmentUrl}" --applicationId "${e.clientId}" --clientSecret ${i} --tenant "${e.tenantId}"`+r,{PPDO_CLIENT_SECRET:e.clientSecret}),Ve(M(`auth select --name ${t}`)),Ve(M(`org select --environment "${e.environmentUrl}"`)),n(`PAC auth configured for ${e.environmentUrl}`),t}async function Yi(e,n){if(!fu()){n("[WARN] az CLI not found \u2014 skipping Azure CLI auth. Key Vault lookups will fail.");return}qt=process.env.AZURE_CONFIG_DIR,Re=Ln.join(Rn.tmpdir(),`ppdevops-az-${Date.now()}`),Le.mkdirSync(Re,{recursive:!0}),process.env.AZURE_CONFIG_DIR=Re;try{Ve(`az login --service-principal --username "${e.clientId}" --password "${e.clientSecret}" --tenant "${e.tenantId}" --output none`,void 0,6e4),n("Azure CLI authenticated.")}catch(t){n(`[WARN] Azure CLI auth failed (non-fatal): ${t instanceof Error?t.message:String(t)}`)}}function Gi(e=Bi,n){try{Ve(M(`auth delete --name ${e}`)),n?.(`PAC auth profile '${e}' removed.`)}catch{}}function zi(){if(qt!==void 0?process.env.AZURE_CONFIG_DIR=qt:delete process.env.AZURE_CONFIG_DIR,Re){try{Le.rmSync(Re,{recursive:!0,force:!0})}catch{}Re=void 0}}var Me=_(require("fs")),_e=_(require("path")),Mn=_(require("os"));async function Ki(e,n,t){let r=_e.join(n,"data");if(!Me.existsSync(r))return{status:"skipped",message:`No data/ directory in ${n} \u2014 skipping.`};let i=_e.join(r,"data.zip"),o=_e.join(r,"Extracted"),s;if(!Me.existsSync(i)){if(!Me.existsSync(o))return{status:"skipped",message:"No data.zip or Extracted/ folder found \u2014 skipping."};s=_e.join(Mn.tmpdir(),`ppdevops-data-${Date.now()}.zip`),t(`Compressing Extracted/ -> ${s}`),Mn.platform()==="win32"?await Tn(`powershell -NoProfile -Command "Compress-Archive -Path '${o}\\*' -DestinationPath '${s}' -Force"`,{log:t}):await Tn(`cd "${o}" && zip -r "${s}" .`,{log:t}),i=s}try{return t(`Importing data from ${_e.basename(i)}`),await ye(M(`data import --data "${i}" --environment "${e}"`),{log:t}),{status:"done",message:"Data import complete."}}finally{if(s)try{Me.rmSync(s,{force:!0})}catch{}}}var jn=_(require("fs")),Hn=_(require("path")),Ji=_(require("https")),Xi=_(he());async function du(e){let n=wt();if(!n)throw new Error("Service-principal credentials not available (PPDEVOPS_CLIENT_ID / PPDEVOPS_CLIENT_SECRET / PPDEVOPS_TENANT_ID).");return Et(e,n)}function Zi(e,n,t,r){return new Promise((i,o)=>{let s=r?JSON.stringify(r):void 0,a=new URL(n),l={hostname:a.hostname,path:a.pathname+a.search,method:e,headers:{Authorization:`Bearer ${t}`,"OData-MaxVersion":"4.0","OData-Version":"4.0","Content-Type":"application/json",Accept:"application/json",...s?{"Content-Length":Buffer.byteLength(s)}:{}}},c=Ji.request(l,u=>{let p="";u.on("data",d=>{p+=d}),u.on("end",()=>{if((u.statusCode??0)>=400)o(new Error(`HTTP ${u.statusCode}: ${p}`));else try{i(p?JSON.parse(p):null)}catch{i(p)}})});c.on("error",o),s&&c.write(s),c.end()})}async function mu(e,n,t,r){let i=e.replace(/\/$/,"");await Zi("PATCH",`${i}/api/data/v9.2/workflows(${t})`,n,{statecode:r?1:2,statuscode:r?2:1})}async function hu(e,n,t){let r=e.replace(/\/$/,"");return(await Zi("GET",`${r}/api/data/v9.2/workflows?$filter=name eq '${encodeURIComponent(t)}'&$select=workflowid,name,statecode`,n))?.value?.[0]?.workflowid??null}async function Qi(e,n,t,r){let i=(0,Xi.isTrue)(t.FailonError),o=t.OverrideFile?Hn.resolve(n,t.OverrideFile):Hn.join(n,"Flows_Default.json");if(!jn.existsSync(o))return{status:"skipped",message:`Flow override file not found: ${o} \u2014 skipping.`};let s;try{s=JSON.parse(jn.readFileSync(o,"utf-8"))}catch(p){let d=`Failed to parse flow override file: ${p instanceof Error?p.message:String(p)}`;return i?{status:"error",message:d}:{status:"skipped",message:`${d} \u2014 skipping flow activation.`}}let a;try{a=await du(e)}catch(p){let d=`Could not get access token: ${p instanceof Error?p.message:String(p)}`;return i?{status:"error",message:d}:{status:"skipped",message:`${d} \u2014 skipping flow activation.`}}let l=0,c=s.flows??[];for(let p of c)try{let d=await hu(e,a,p.flowName);if(!d){r(`[WARN] Flow not found: ${p.flowName}`);continue}await mu(e,a,d,p.activate),r(`${p.activate?"Activated":"Deactivated"}: ${p.flowName}`)}catch(d){r(`[WARN] Failed for ${p.flowName}: ${d instanceof Error?d.message:String(d)}`),l++}let u=`Flow activation complete (${l} error(s)).`;return l>0&&i?{status:"error",message:u}:{status:"done",message:u,metrics:{processed:c.length,errors:l}}}var Bt=_(require("fs")),eo=_(require("path"));async function no(e){if(!Bt.existsSync(e.zip))throw new Error(`Solution zip not found: ${e.zip}`);let n=e.target.OverwriteUnmanagedCustomisations?.toLowerCase()!=="false",t=M("solution import")+` --path "${e.zip}" --environment "${e.environmentUrl}" --activate-plugins --async`+(e.importMode==="holding-then-upgrade"?" --import-as-holding":"")+(e.importMode==="stage-and-upgrade"?" --stage-and-upgrade":"")+(n?" --force-overwrite":"");e.deploymentSettingsPath&&Bt.existsSync(e.deploymentSettingsPath)?(t+=` --settings-file "${e.deploymentSettingsPath}"`,e.log(`Using deployment settings: ${eo.basename(e.deploymentSettingsPath)}`)):e.target.SettingsFile&&e.log(`[WARN] SettingsFile "${e.target.SettingsFile}" specified but not found \u2014 connection refs may need manual setup.`),await ye(t,{log:e.log})}async function to(e,n,t){await ye(M(`solution upgrade --solution-name "${n}" --environment "${e}" --async`),{log:t})}var Un=_(require("fs")),ro=_(require("path"));async function io(e,n,t,r,i){Un.mkdirSync(t,{recursive:!0});let o=ro.join(t,r==="Unmanaged"?`${n}.zip`:`${n}_managed.zip`);if(await ye(M(`solution pack --folder "${e}" --zipfile "${o}" --packagetype ${r}`),{log:i}),!Un.existsSync(o))throw new Error(`pac solution pack completed but the zip was not created: ${o}`);return i(`${r} zip: ${o}`),o}var je=e=>({status:"error",message:e instanceof Error?e.message:String(e)});function so(e){let n=e.env.EnvironmentURL,t,r=s=>{let a=e.input.solutions.find(l=>l.name===s.name);if(!a)throw new Error(`No plan input for ${s.name}`);return a},i=s=>s.kind==="patch"?G.join(e.projectPath,s.root.name,`pac_${s.name}`,"src"):G.join(e.projectPath,s.root.name,"src"),o=s=>G.join(e.projectPath,s.name);return{async auth(s){try{return t=await Wi({...e.creds,environmentUrl:n,profileName:e.profileName},s.log),await Yi({...e.creds,environmentUrl:n},s.log),{status:"done",message:`PAC auth configured for ${n}`}}catch(a){return je(a)}},async teardown(){t&&Gi(t),zi()},async envAction(){return{status:"skipped",message:"legacy $Conn functions require migration"}},async checkSource(s){let a=i(s);return tn.existsSync(G.join(a,"Other","Customizations.xml"))?{status:"done",message:`Source verified at ${a}`}:{status:"error",message:`Unpacked source not found at ${a} \u2014 run Export & Unpack first.`}},async pack(s,a){let l=G.join(oo.tmpdir(),`ppdevops-${s.name}-${Date.now()}`);try{let c=await io(i(s),s.name,l,s.deploymentType,a.log);return{status:"done",message:`Packed to ${l}`,artifact:{zip:c,outputDir:l}}}catch(c){try{tn.rmSync(l,{recursive:!0,force:!0})}catch{}return je(c)}},async import(s,a,l){if(!a)return{status:"error",message:"Nothing was packed."};let c=r(s.root).target;try{return await no({environmentUrl:n,zip:a.zip,solutionName:s.name,importMode:s.importMode,target:c,deploymentSettingsPath:s.kind==="solution"&&c.SettingsFile?G.resolve(o(s.root),c.SettingsFile):void 0,log:l.log}),{status:"done",message:s.importMode==="stage-and-upgrade"?`${s.name} imported and upgraded (applied atomically via --stage-and-upgrade).`:`${s.name} imported.`}}catch(u){return je(u)}},async upgrade(s,a){try{return await to(n,s.name,a.log),{status:"done",message:`${s.name} upgraded.`}}catch(l){return je(l)}},async data(s,a){try{return await Ki(n,G.join(e.projectPath,s.name,"src"),a.log)}catch(l){return je(l)}},async flows(s,a){let l=r(s).target.Flows;if(!l)return{status:"skipped",message:"Flow activation not configured for this target."};try{return await Qi(n,o(s),l,a.log)}catch(c){return je(c)}},async actionStep(s,a){let l=r(s),c=(a.step.phase==="prepack"?l.prePackAction:a.step.phase==="pre"?l.preAction:a.step.phase==="post"?l.postAction:l.cleanupAction)??null;return Ri(c,a.step.name,{envUrl:n,envName:e.env.EnvironmentName,projectPath:e.projectPath,projectName:G.basename(e.projectPath),solutionName:s.name,solutionDir:G.join(e.projectPath,s.name,"src"),scriptsDir:o(s),legacyArgs:a.step.phase==="cleanup"?[]:["-EnvironmentName",e.env.EnvironmentName,"-Path",e.projectPath],log:a.log})},async discardArtifact(s,a){try{tn.rmSync(a.outputDir,{recursive:!0,force:!0})}catch{}}}}var z=_(he());function gu(e,n){let t=e.clientId??process.env.PPDEVOPS_CLIENT_ID,r=e.clientSecret??process.env.PPDEVOPS_CLIENT_SECRET,i=e.tenantId??process.env.PPDEVOPS_TENANT_ID;if((!t||!r||!i)&&fe.existsSync(n))try{let o=JSON.parse(fe.readFileSync(n,"utf-8"));t??=o.ClientID??o.clientId,i??=o.TenantID??o.tenantId}catch{}return(!t||!r||!i)&&F("Missing credentials. Provide --client-id, --client-secret, --tenant-id or set PPDEVOPS_CLIENT_ID / PPDEVOPS_CLIENT_SECRET / PPDEVOPS_TENANT_ID."),{clientId:t,clientSecret:r,tenantId:i}}function vu(e){let t=fe.readdirSync(e).filter(r=>r.endsWith(".json")&&r!=="package.json").find(r=>!["deployPackages","Environments","tsconfig","package-lock"].some(i=>r.startsWith(i)));return qn.join(e,t??"")}function yu(e){try{return JSON.parse(fe.readFileSync(e,"utf-8"))}catch(n){return F(`Could not read plan file ${e}: ${n instanceof Error?n.message:String(n)}`)}}var ao=new xe("deploy").description("Deploy one or more Power Platform solutions to a target environment").requiredOption("-p, --project <path>","Path to the project root (contains deployPackages.json)").requiredOption("-e, --environment <name>","Target environment name (from Environments.json)").option("-s, --solutions <names>","Comma-separated solution names to deploy (default: all)").option("--plan <file>","Reviewed plan document to validate against before deploying (or PPDEVOPS_PLAN_FILE)").option("--client-id <id>","Service principal client ID").option("--client-secret <secret>","Service principal client secret").option("--tenant-id <id>","Azure tenant ID").option("--profile-name <name>","PAC auth profile name (default: ppdo-cli)").option("--json","Output structured JSON events (for CI/Studio integration)",!1).option("--dry-run","Check, pack and run actions only \u2014 do not import",!1).action(async e=>{vn(e.json?"events":"human");let n=qn.resolve(e.project);fe.existsSync(n)||F(`Project path not found: ${n}`);let{deployPackages:t,environments:r}=Sn(n),i=wn(r,e.environment),s=En(t,e.solutions?e.solutions.split(",").map(l=>l.trim()):null).filter(l=>l.DeployTo?.some(c=>c.EnvironmentName.toLowerCase()===i.EnvironmentName.toLowerCase()&&(0,z.isTrue)(c.Deploy)));if(s.length===0){yn(`No solutions are configured to deploy to "${e.environment}". Nothing to do.`),Ie(0);return}let a=gu(e,vu(n));process.env.PPDEVOPS_CLIENT_ID??=a.clientId,process.env.PPDEVOPS_CLIENT_SECRET??=a.clientSecret,process.env.PPDEVOPS_TENANT_ID??=a.tenantId;try{ke(`Deploying ${s.length} solution(s) to ${i.EnvironmentName} (${i.EnvironmentURL})`);let l=await bn(i.EnvironmentURL);ke(`Fetched ${l.length} solution(s) via Dataverse Web API.`);let c=Vn(n,i,s,l),u=(0,z.resolvePlan)(c),p=e.plan??process.env.PPDEVOPS_PLAN_FILE;if(p){let f=(0,z.validatePlan)(yu(p),u);if(!f.ok){Nr(f),process.exitCode=2;return}ke(`Plan ${u.fingerprint} is current (generated ${f.submittedGeneratedAt}).`)}gn(["",...(0,z.renderPlanText)(u)]);let d=(0,z.createCancelToken)();process.once("SIGINT",()=>d.cancel());let m=await(0,z.executePlan)(u,so({projectPath:n,env:i,input:c,creds:a,profileName:e.profileName??"ppdo-cli"}),jr(),{dryRun:e.dryRun,cancel:d});Ie(m.exitCode),process.exitCode=m.exitCode}catch(l){let c=l instanceof Error?l.message:String(l);kr(c),_n(1,c),Ie(1),process.exitCode=1}});var He=_(he()),lo=_(require("path")),uo=_(require("fs")),co=new xe("plan").description("Dry-run pre-flight: report what a deployment will do without changing anything").requiredOption("-p, --project <path>","Path to the project root (contains deployPackages.json)").requiredOption("-e, --environment <name>","Target environment name (from Environments.json)").option("-s, --solutions <names>","Comma-separated solution names to plan (default: all)").option("--client-id <id>","Service principal client ID").option("--client-secret <secret>","Service principal client secret").option("--tenant-id <id>","Azure tenant ID").option("--json","Print the plan as JSON (Run Event NDJSON when PPDEVOPS_EVENTS_FILE is set)",!1).option("--format <fmt>","With --json and no events file: 'document' (default) or 'ndjson' on stdout","document").action(async e=>{vn(e.json?hn()||e.format==="ndjson"?"events":"document":"human");let n=lo.resolve(e.project);uo.existsSync(n)||F(`Project path not found: ${n}`);let{deployPackages:t,environments:r}=Sn(n),i=wn(r,e.environment),s=En(t,e.solutions?e.solutions.split(",").map(a=>a.trim()):null).filter(a=>a.DeployTo?.some(l=>l.EnvironmentName.toLowerCase()===i.EnvironmentName.toLowerCase()&&(0,He.isTrue)(l.Deploy)));Rr(i.EnvironmentName,i.EnvironmentURL);try{let a=await bn(i.EnvironmentURL),l=(0,He.resolvePlan)(Vn(n,i,s,a));for(let c of l.solutions)Lr(c);Mr(l),gn(["",...(0,He.renderPlanText)(l)]),Pr(l),Ie(0)}catch(a){let l=a instanceof Error?a.message:String(a);F(l)}});var Bn=new xe;Bn.name("ppdevops").description("Power Platform DevOps Studio CLI \u2014 cross-platform solution deployment runner").version(Fn());Bn.addCommand(ao);Bn.addCommand(co);Bn.parseAsync(process.argv).catch(e=>{console.error("Fatal error:",e instanceof Error?e.message:String(e)),process.exit(1)});
|
|
69
69
|
/*! Bundled license information:
|
|
70
70
|
|
|
71
71
|
js-yaml/dist/js-yaml.mjs:
|