@qlover/scripts-context 2.1.1 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,19 +1,4 @@
1
- "use strict";var B=Object.create;var b=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var V=(n,e)=>{for(var t in e)b(n,t,{get:e[t],enumerable:!0})},L=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of H(e))!M.call(n,o)&&o!==t&&b(n,o,{get:()=>e[o],enumerable:!(r=q(e,o))||r.enumerable});return n};var z=(n,e,t)=>(t=n!=null?B(U(n)):{},L(e||!n||!n.__esModule?b(t,"default",{value:n,enumerable:!0}):t,n)),Z=n=>L(b({},"__esModule",{value:!0}),n);var ee={};V(ee,{ColorFormatter:()=>E,ConfigSearch:()=>u,ScriptContext:()=>R,ScriptPlugin:()=>F,Shell:()=>d,defaultFeConfig:()=>I});module.exports=Z(ee);var I={protectedBranches:["master","develop","main"],cleanFiles:["dist","node_modules","yarn.lock","package-lock.json",".eslintcache","*.log"],commitlint:{extends:["@commitlint/config-conventional"]},release:{publishPath:"",autoMergeReleasePR:!1,autoMergeType:"squash",branchName:"release-${pkgName}-${tagName}",PRTitle:"[${pkgName} Release] Branch:${branch}, Tag:${tagName}, Env:${env}",PRBody:`## Publish Details
2
-
3
- - \u{1F3F7}\uFE0F Version: \${tagName}
4
- - \u{1F332} Branch: \${branch}
5
- - \u{1F527} Environment: \${env}
6
-
7
- ## Changelog
8
-
9
- \${changelog}
10
-
11
- ## Notes
12
-
13
- - [ ] Please check if the version number is correct
14
- - [ ] Please confirm all tests have passed
15
- - [ ] Please confirm the documentation has been updated
16
-
17
- > This PR is auto created by release process, please contact the frontend team if there are any questions.`,label:{color:"1A7F37",description:"Release PR",name:"CI-Release"},packagesDirectories:[],changePackagesLabel:"changes:${name}"},envOrder:[".env.local",".env.production",".env"]};var f=z(require("chalk"),1),E=class{constructor(e={fatal:f.default.bgRed.white.bold,error:f.default.red.bold,warn:f.default.yellow.bold,info:f.default.blue,debug:f.default.green,trace:f.default.gray,log:f.default.white}){this.levelColors=e}format(e){let{level:t,args:r}=e,o=this.levelColors[t]||f.default.white;return[typeof o=="function"?o(t.toUpperCase()):t.toUpperCase(),...r]}};var T=require("cosmiconfig"),C=require("lodash-es");function J(n){let e=["json","js","ts","cjs","yaml","yml"];return["package.json",...e.map(t=>`${n}.${t}`),...e.map(t=>`.${n}.${t}`)]}var u=class{name;searchPlaces;_config;loaders;searchCache;constructor(e){let{name:t,searchPlaces:r,defaultConfig:o,loaders:i}=e;if(!t&&!r)throw new Error("searchPlaces or name is required");this.name=t,this.searchPlaces=r||J(t),this._config=o||{},this.loaders=i}get config(){return(0,C.defaultsDeep)({},this.search(),this._config)}getSearchPlaces(){return this.searchPlaces}get(e={}){let{file:t,dir:r=process.cwd()}=e,o={};if(t===!1)return o;let i=(0,T.cosmiconfigSync)(this.name,{searchPlaces:this.searchPlaces,loaders:this.loaders}),s=t?i.load(t):i.search(r);if(s&&typeof s.config=="string")throw new Error(`Invalid configuration file at ${s.filepath}`);return s&&(0,C.isPlainObject)(s.config)?s.config:o}search(){return this.searchCache?this.searchCache:this.searchCache=this.get({})}};var O=require("lodash-es"),A=require("@qlover/fe-corekit");var v=require("lodash-es"),_=require("@qlover/env-loader"),K=[".env.local",".env"];function G(n,e,t){let r=n.env||_.Env.searchEnv({logger:t,preloadList:e.envOrder||K}),o=n.rootPath||process.cwd(),i=n.sourceBranch||r?.get("FE_RELEASE_BRANCH")||r?.get("FE_RELEASE_SOURCE_BRANCH")||"master";return{...n,sourceBranch:i,rootPath:o,env:r}}function Q(n,e,t){let r=n?(0,v.get)(e,n):e,o=typeof r=="object"&&r!==null,i=o?r:{};return o||t.warn(`rootProp ${n} is not an object, it will be overwritten by the default options`),i}function N(n,e,t,r){let o=Q(n,e,r),i=(0,v.merge)({},o,t);return G(i,e,r)}var D=require("child_process");var k=require("lodash-es");var y=class{constructor(e,t,r,o){this.level=e;this.args=t;this.loggerName=r;this.context=o;this.timestamp=Date.now()}timestamp};var h=class{constructor(e){this.value=e}};var W={fatal:0,error:10,warn:20,info:30,debug:40,trace:50,log:60},P=class{constructor(e={}){this.options=e;e.name=e.name||Date.now().toString(),e.levels=e.levels||W,e.handlers=Array.isArray(e.handlers)?e.handlers:e.handlers?[e.handlers]:[]}addAppender(e){this.options.handlers.push(e)}context(e){return new h(e)}print(e,t){let{levels:r,level:o,silent:i,handlers:s}=this.options;if(i)return;let a=t.slice(-1)[0],c=t.length>1&&a instanceof h;if(a=c?a:void 0,t=c?t.slice(0,-1):t,e=a?.value?.level??e,o&&r){let p=r[o],m=r[e];if(p!=null&&m!=null&&m>p)return}let l=new y(e,t,this.options.name,a),g=Array.isArray(s)?s:[s];for(let p of g)p&&p.append(l)}log(...e){this.print("info",e)}fatal(...e){this.print("fatal",e)}error(...e){this.print("error",e)}warn(...e){this.print("warn",e)}info(...e){this.print("info",e)}debug(...e){this.print("debug",e)}trace(...e){this.print("trace",e)}};var w=class{constructor(e=null){this.formatter=e}setFormatter(e){this.formatter=e}append(e){let{level:t,args:r,loggerName:o}=e,i=this.formatter?this.formatter.format(e):[o?`[${o}]`:null,...r].filter(s=>s!=null);(console[t]||console.log)(...Array.isArray(i)?i:[i])}};var X={hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:"UTC"},Y="[{loggerName}] [{formattedTimestamp} {level}]",S=class{constructor(e={}){this.options=e}updateOptions(e){this.options={...this.options,...e}}replacePrefix(e,t){return e.replace(/\{([^{}]+)\}/g,(r,o)=>o in t?String(t[o]??""):"")}format({timestamp:e,level:t,args:r,context:o,loggerName:i}){let{locale:s="zh-CN",localeOptions:a,prefixTemplate:c=Y}=this.options,l=o?.formatType??"datetime",g=l==="date"?"toLocaleDateString":l==="time"?"toLocaleTimeString":"toLocaleString",p=new Date(e)[g](s,{...X,...a});return[this.replacePrefix(c,{...o,timestamp:e.toString(),level:t,loggerName:i,formattedTimestamp:p,locale:s}),...r]}};var $=require("lodash-es"),d=class n{constructor(e,t=new Map){this.config=e;this.cache=t}get logger(){return this.config.logger}static format(e="",t={}){return(0,$.template)(e)(t)}format(e="",t={}){try{return n.format(e,t)}catch(r){throw this.logger.error(`Unable to render template with context:
1
+ "use strict";var Z=Object.create;var E=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.getPrototypeOf,re=Object.prototype.hasOwnProperty;var ne=(n,e)=>{for(var t in e)E(n,t,{get:e[t],enumerable:!0})},F=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ee(e))!re.call(n,o)&&o!==t&&E(n,o,{get:()=>e[o],enumerable:!(r=Q(e,o))||r.enumerable});return n};var oe=(n,e,t)=>(t=n!=null?Z(te(n)):{},F(e||!n||!n.__esModule?E(t,"default",{value:n,enumerable:!0}):t,n)),se=n=>F(E({},"__esModule",{value:!0}),n);var Oe={};ne(Oe,{ColorFormatter:()=>_,ConfigSearch:()=>d,ScriptContext:()=>H,ScriptPlugin:()=>V,Shell:()=>y,TemplateEngine:()=>R,defaultFeConfig:()=>N,interpolatePreset:()=>Y});module.exports=se(Oe);var N={protectedBranches:["master","develop","main"],cleanFiles:["dist","node_modules","yarn.lock","package-lock.json",".eslintcache","*.log"],commitlint:{extends:["@commitlint/config-conventional"]},envOrder:[".env.local",".env.production",".env"]};var m=oe(require("chalk"),1),_=class{constructor(e={fatal:m.default.bgRed.white.bold,error:m.default.red.bold,warn:m.default.yellow.bold,info:m.default.blue,debug:m.default.green,trace:m.default.gray,log:m.default.white}){this.levelColors=e}levelColors;format(e){let{level:t,args:r}=e,o=this.levelColors[t]||m.default.white;return[typeof o=="function"?o(t.toUpperCase()):t.toUpperCase(),...r]}};var j=require("cosmiconfig"),P=require("lodash-es");function ie(n){let e=["json","js","ts","cjs","yaml","yml"];return["package.json",...e.map(t=>`${n}.${t}`),...e.map(t=>`.${n}.${t}`)]}var d=class{name;searchPlaces;_config;loaders;searchCache;constructor(e){let{name:t,searchPlaces:r,defaultConfig:o,loaders:s}=e;if(!t&&!r)throw new Error("searchPlaces or name is required");this.name=t,this.searchPlaces=r||ie(t),this._config=o||{},this.loaders=s}get config(){return(0,P.defaultsDeep)({},this.search(),this._config)}getSearchPlaces(){return this.searchPlaces}get(e={}){let{file:t,dir:r=process.cwd()}=e,o={};if(t===!1)return o;let s=(0,j.cosmiconfigSync)(this.name,{searchPlaces:this.searchPlaces,loaders:this.loaders}),i=t?s.load(t):s.search(r);if(i&&typeof i.config=="string")throw new Error(`Invalid configuration file at ${i.filepath}`);return i&&(0,P.isPlainObject)(i.config)?i.config:o}search(){return this.searchCache?this.searchCache:this.searchCache=this.get({})}};var O=require("lodash-es");var ae=require("lodash-es");var f=new WeakMap,h=class{_parameters;_error;_returnValue;constructor(e){this._parameters=e,f.set(this,{pluginName:"",pluginIndex:void 0,hookName:"",returnValue:void 0,returnBreakChain:!1,times:0,breakChain:!1})}get parameters(){return this._parameters}get error(){return this._error}get returnValue(){return this._returnValue}get hooksRuntimes(){let e=f.get(this);if(!e)throw new Error("Runtime state not initialized");return Object.freeze({...e})}setError(e){this._error=e}setReturnValue(e){this._returnValue=e}setParameters(e){this._parameters=e}resetHooksRuntimes(e){let t=f.get(this);if(!t)throw new Error("Runtime state not initialized");if(e){f.set(this,{...t,hookName:e,times:0,returnValue:void 0});return}f.set(this,{pluginName:"",pluginIndex:void 0,hookName:"",returnValue:void 0,returnBreakChain:!1,times:0,breakChain:!1})}reset(){this.resetHooksRuntimes(),this._returnValue=void 0,this._error=void 0}shouldSkipPluginHook(e,t){return typeof e[t]!="function"||typeof e.enabled=="function"&&!e.enabled(t,this)}runtimes(e){let t=f.get(this);if(!t)throw new Error("Runtime state not initialized");f.set(this,{...t,...e})}runtimeReturnValue(e){let t=f.get(this);if(!t)throw new Error("Runtime state not initialized");f.set(this,{...t,returnValue:e})}shouldBreakChain(){return!!f.get(this)?.breakChain}shouldBreakChainOnReturn(){return!!f.get(this)?.returnBreakChain}shouldContinueOnError(){return!!f.get(this)?.continueOnError}};var D=require("lodash-es");var le=require("lodash-es");var me=require("lodash-es");var de=require("lodash-es");var k=require("lodash-es"),B=require("@qlover/env-loader"),he=[".env.local",".env"];function xe(n,e,t){let r=n.env||B.Env.searchEnv({logger:t,preloadList:e.envOrder||he}),o=n.rootPath||process.cwd(),s=n.sourceBranch||r?.get("FE_RELEASE_BRANCH")||r?.get("FE_RELEASE_SOURCE_BRANCH")||"master";return{...n,sourceBranch:s,rootPath:o,env:r}}function Re(n,e,t){let r=n?(0,k.get)(e,n):e,o=typeof r=="object"&&r!==null,s=o?r:{};return o||t.warn(`rootProp ${n} is not an object, it will be overwritten by the default options`),s}function $(n,e,t,r){let o=Re(n,e,r),s=(0,k.merge)({},o,t);return xe(s,e,r)}var X=require("child_process");var q=require("lodash-es");var w=class{constructor(e,t,r,o){this.level=e;this.args=t;this.loggerName=r;this.context=o;this.timestamp=Date.now()}level;args;loggerName;context;timestamp};var x=class{constructor(e){this.value=e}value};var ye={fatal:0,error:10,warn:20,info:30,debug:40,trace:50,log:60},T=class{constructor(e={}){this.options=e;e.name=e.name||Date.now().toString(),e.levels=e.levels||ye,e.handlers=Array.isArray(e.handlers)?e.handlers:e.handlers?[e.handlers]:[]}options;addAppender(e){this.options.handlers.push(e)}context(e){return new x(e)}print(e,t){let{levels:r,level:o,silent:s,handlers:i}=this.options;if(s)return;let u=t.slice(-1)[0],c=t.length>1&&u instanceof x;if(u=c?u:void 0,t=c?t.slice(0,-1):t,e=u?.value?.level??e,o&&r){let l=r[o],g=r[e];if(l!=null&&g!=null&&g>l)return}let a=new w(e,t,this.options.name,u),p=Array.isArray(i)?i:[i];for(let l of p)l&&l.append(a)}log(...e){this.print("info",e)}fatal(...e){this.print("fatal",e)}error(...e){this.print("error",e)}warn(...e){this.print("warn",e)}info(...e){this.print("info",e)}debug(...e){this.print("debug",e)}trace(...e){this.print("trace",e)}};var I=class{constructor(e=null){this.formatter=e}formatter;setFormatter(e){this.formatter=e}append(e){let{level:t,args:r,loggerName:o}=e,s=this.formatter?this.formatter.format(e):[o?`[${o}]`:null,...r].filter(i=>i!=null);(console[t]||console.log)(...Array.isArray(s)?s:[s])}};var be={hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:"UTC"},Ee="[{loggerName}] [{formattedTimestamp} {level}]",S=class{constructor(e={}){this.options=e}options;updateOptions(e){this.options={...this.options,...e}}replacePrefix(e,t){return e.replace(/\{([^{}]+)\}/g,(r,o)=>o in t?String(t[o]??""):"")}format({timestamp:e,level:t,args:r,context:o,loggerName:s}){let{locale:i="zh-CN",localeOptions:u,prefixTemplate:c=Ee}=this.options,a=o?.formatType??"datetime",p=a==="date"?"toLocaleDateString":a==="time"?"toLocaleTimeString":"toLocaleString",l=new Date(e)[p](i,{...be,...u});return[this.replacePrefix(c,{...o,timestamp:e.toString(),level:t,loggerName:s,formattedTimestamp:l,locale:i}),...r]}};var Y={ES6:/\$\{([\s\S]+?)\}/g,LODASH:/<%=([\s\S]+?)%>/g,MUSTACHE:/\{\{([\s\S]+?)\}\}/g},Pe=new Set(["__proto__","constructor","prototype","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__"]),Ce=/^[\w.[\]]+$/,ke=/^(\d+|\w+)$/;function J(n){let e=n.flags.includes("g")?n.flags:`${n.flags}g`;return new RegExp(n.source,e)}function we(n){return n.replace(/\[(\d+)\]/g,".$1")}function Te(n,e){let t=n.trim();if(!t||!Ce.test(t))return null;let r=t;if(e){if(r===e)return[];let s=`${e}.`;if(!r.startsWith(s)||(r=r.slice(s.length),!r))return null}let o=we(r).split(".");return o.length===0||o.some(s=>!s||!ke.test(s))?null:o}function M(n){return n.replace(/[&<>"']/g,e=>{switch(e){case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;";case'"':return"&quot;";case"'":return"&#39;";default:return e}})}function W(n,e){return n==null?"":typeof n=="object"&&e?JSON.stringify(n):String(n)}function Ie(n,e,t){if(e===null)return;if(e.length===0)return n;let r=n;for(let o of e){if(t&&Pe.has(o)||r===null||typeof r!="object")return;let s=r;if(t){if(!Object.hasOwn(s,o))return}else if(!(o in s))return;r=s[o]}return r}function Se(n,e){let t=[],r=J(e),o=0,s;for(;(s=r.exec(n))!==null;){if(s[0].length===0){r.lastIndex+=1;continue}s.index>o&&t.push(n.slice(o,s.index));let i=s[1]?.trim()??"";t.push({type:"variable",path:i,raw:s[0],keys:null}),o=r.lastIndex}return o<n.length&&t.push(n.slice(o)),t}var R=class{options;constructor(e={}){let t={interpolate:Y.ES6,variable:"",defaultValue:"",escapeHtml:!1,stringifyObject:!0,keepUnmatched:!1,safePrototype:!0};this.options={...t,...e,interpolate:J(e.interpolate??t.interpolate)}}compile(e){if(typeof e!="string")throw new TypeError("Template must be a string");let{variable:t,defaultValue:r,escapeHtml:o,stringifyObject:s,keepUnmatched:i,safePrototype:u}=this.options,c=Se(e,this.options.interpolate).map(a=>typeof a=="string"?a:{...a,keys:Te(a.path,t)});return a=>{let p=a!==null&&typeof a=="object"?a:{},l=[];for(let g of c){if(typeof g=="string"){l.push(g);continue}let A=Ie(p,g.keys,u);if(A==null){if(i){l.push(g.raw);continue}let L=r;typeof r=="function"&&(L=r(g.path,p));let U=W(L,s);l.push(o?M(U):U);continue}let v=W(A,s);o&&(v=M(v)),l.push(v)}return l.join("")}}render(e,t){return this.compile(e)(t)}};var y=class n{constructor(e,t=new Map){this.config=e;this.cache=t}config;cache;static templateEngine=new R;get logger(){return this.config.logger}static format(e="",t={}){let r=t!==null&&typeof t=="object"?t:{};return n.templateEngine.render(e,r)}format(e="",t={}){try{return n.format(e,t)}catch(r){throw this.logger.error(`Unable to render template with context:
18
2
  ${e}
19
- ${JSON.stringify(t)}`),this.logger.error(r),r}}exec(e,t={}){let{context:r,...o}=t;return typeof e=="string"?this.execFormattedCommand(this.format(e,r||{}),o):this.execFormattedCommand(e,o)}run(e,t={}){return this.exec(e,{silent:!0,...t})}async execFormattedCommand(e,t={}){let r=this.config.execPromise;if(!r)throw new Error("execPromise is not defined");let{dryRunResult:o,silent:i,dryRun:s,isCache:a}=t,c=s!==void 0?s:this.config.dryRun,l=a!==void 0?!!a:!!this.config.isCache,g=typeof e=="string"?e:e.join(" "),p=l&&this.cache.has(g);if(i||this.logger.debug(e),c)return Promise.resolve(o);if(p)return this.cache.get(g);let m=r(e,t);return this.cache.has(g)||this.cache.set(g,m),m}};var x={exec(n,e){let t=Array.isArray(n)?n.join(" "):n;return new Promise((r,o)=>{(0,D.exec)(t,{encoding:"utf-8",...e},(i,s,a)=>{let c;i?i.code===void 0?c=1:c=i.code:c=0,c===0?r(s.trim()):o(new Error(a||s))})})},getConfig(n){return new u({name:"fe-config",defaultConfig:(0,k.merge)({},I,n)})},logger(n,e){return new P({level:e?"debug":"info",name:n,handlers:new w(new S({prefixTemplate:"[{loggerName} {formattedTimestamp} {level}]",localeOptions:{timeZone:"Asia/Shanghai"}}))})},options(n,e){let{logger:t,shell:r,feConfig:o,dryRun:i,verbose:s,options:a}=e,c=a||{},l=t||x.logger(n,!!s),g=r||new d({logger:l,dryRun:i,execPromise:c.execPromise||x.exec}),p=(0,k.merge)({},o,{[n]:e.options});return{options:c,dryRun:!!i,shell:g,logger:l,verbose:!!s,feConfig:x.getConfig(p).config}}};var R=class extends A.ExecutorContextImpl{constructor(t,r={}){if(!t||typeof t!="string")throw new Error("ScriptContext name is required");let{feConfig:o,logger:i,shell:s,dryRun:a,verbose:c,options:l}=x.options(t,r);super(l);this.name=t;this.feConfig=o,this.logger=i,this.shell=s,this.dryRun=a,this.verbose=c,this.setOptions(N(t,o,l,i))}logger;shell;feConfig;dryRun;verbose;get options(){return this.parameters}get env(){if(!this.options.env)throw new Error("Environment is not initialized");return this.options.env}setOptions(t){this.setParameters((0,O.merge)(this.options,t))}getEnv(t,r){return this.env.get(t)??r}getOptions(t,r){return t?(0,O.get)(this.options,t,r):this.options}};var j=require("lodash-es"),F=class{constructor(e,t,r={}){this.context=e;this.pluginName=t;this.props=r;this.setConfig(this.getInitialProps(r))}onlyOne=!0;getInitialProps(e){if(typeof this.context.options!="object")return{};let t=this.context.options[this.pluginName],r=this.context.getOptions(this.pluginName),o=t||r;return e?(0,j.merge)({},o,e):o||{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get options(){return this.context.getOptions(this.pluginName,{})}enabled(e,t){let r=this.getConfig("skip");return!(r===!0||typeof r=="string"&&e===r)}getConfig(e,t){return e?this.context.getOptions([this.pluginName,...Array.isArray(e)?e:[e]],t):this.context.getOptions(this.pluginName,t)}setConfig(e){this.context.setOptions({[this.pluginName]:e})}onBefore(e){}onExec(e){}onSuccess(e){}onError(e){}onFinally(e){}async step(e){this.logger.log(),this.logger.info(e.label),this.logger.log();try{let t=await e.task();return this.logger.info(`${e.label} - success`),t}catch(t){throw this.logger.error(t),t}}};0&&(module.exports={ColorFormatter,ConfigSearch,ScriptContext,ScriptPlugin,Shell,defaultFeConfig});
3
+ ${JSON.stringify(t)}`),this.logger.error(r),r}}exec(e,t={}){let{context:r,...o}=t;return typeof e=="string"?this.execFormattedCommand(this.format(e,r||{}),o):this.execFormattedCommand(e,o)}run(e,t={}){return this.exec(e,{silent:!0,...t})}async execFormattedCommand(e,t={}){let r=this.config.execPromise;if(!r)throw new Error("execPromise is not defined");let{dryRunResult:o,silent:s,dryRun:i,isCache:u}=t,c=i!==void 0?i:this.config.dryRun,a=u!==void 0?!!u:!!this.config.isCache,p=typeof e=="string"?e:e.join(" "),l=a&&this.cache.has(p);if(s||this.logger.debug(e),c)return Promise.resolve(o);if(l)return this.cache.get(p);let g=r(e,t);return this.cache.has(p)||this.cache.set(p,g),g}};var b={exec(n,e){let t=Array.isArray(n)?n.join(" "):n;return new Promise((r,o)=>{(0,X.exec)(t,{encoding:"utf-8",...e},(s,i,u)=>{let c;s?s.code===void 0?c=1:c=s.code:c=0,c===0?r(i.trim()):o(new Error(u||i))})})},getConfig(n){return new d({name:"fe-config",defaultConfig:(0,q.merge)({},N,n)})},logger(n,e){return new T({level:e?"debug":"info",name:n,handlers:new I(new S({prefixTemplate:"[{loggerName} {formattedTimestamp} {level}]",localeOptions:{timeZone:"Asia/Shanghai"}}))})},options(n,e){let{logger:t,shell:r,feConfig:o,dryRun:s,verbose:i,options:u}=e,c=u||{},a=t||b.logger(n,!!i),p=r||new y({logger:a,dryRun:s,execPromise:c.execPromise||b.exec}),l=(0,q.merge)({},o,{[n]:e.options});return{options:c,dryRun:!!s,shell:p,logger:a,verbose:!!i,feConfig:b.getConfig(l).config}}};var H=class extends h{constructor(t,r={}){if(!t||typeof t!="string")throw new Error("ScriptContext name is required");let{feConfig:o,logger:s,shell:i,dryRun:u,verbose:c,options:a}=b.options(t,r);super(a);this.name=t;this.feConfig=o,this.logger=s,this.shell=i,this.dryRun=u,this.verbose=c,this.setParameters($(t,o,a,s))}name;logger;shell;feConfig;dryRun;verbose;get options(){return this.parameters}get env(){if(!this.parameters.env)throw new Error("Environment is not initialized");return this.parameters.env}setParameters(t){super.setParameters((0,O.merge)(this.parameters,t))}getEnv(t,r){return this.env.get(t)??r}getParameters(t,r){return t?(0,O.get)(this.parameters,t,r):this.parameters}};var G=require("lodash-es"),V=class{constructor(e,t,r={}){this.context=e;this.pluginName=t;this.props=r;this.setConfig(this.getInitialProps(r))}context;pluginName;props;onlyOne=!0;getInitialProps(e){if(typeof this.context.options!="object")return{};let t=this.context.options[this.pluginName],r=this.context.getParameters(this.pluginName),o=t||r;return e?(0,G.merge)({},o,e):o||{}}get logger(){return this.context.logger}get shell(){return this.context.shell}get config(){return this.context.getParameters(this.pluginName,{})}enabled(e,t){let r=this.getConfig("skip");return typeof r=="string"&&e===r?(this.logger.debug(`Skip ${this.pluginName}.${e}, ${this.pluginName}.skip is set to '${r}'`),!1):r===!0?(this.logger.debug(`Skip ${this.pluginName}.${e}, ${this.pluginName}.skip is set to true`),!1):!0}getConfig(e,t){return e?this.context.getParameters([this.pluginName,...Array.isArray(e)?e:[e]],t):this.context.getParameters(this.pluginName,t)}setConfig(e){this.context.setParameters({[this.pluginName]:e})}async step(e){let t=this.createStepLabel(e.label);this.logger.info(`${t} - beginning`);try{let r=await e.task();return this.logger.info(`${t} - success`),r}catch(r){throw this.logger.error(`${t} - failed
4
+ `,r),r}}createStepLabel(e){let t=`${this.pluginName}: ${e}`;return this.context.dryRun?`[dry-run] ${t}`:t}};0&&(module.exports={ColorFormatter,ConfigSearch,ScriptContext,ScriptPlugin,Shell,TemplateEngine,defaultFeConfig,interpolatePreset});