@sap/generator-fiori
Version:
Create an SAPUI5 application using SAP Fiori elements or a freestyle approach
21 lines (16 loc) • 28.8 kB
JavaScript
const __esmImportMetaUrl = require('node:url').pathToFileURL(__filename).href;
;var pe=Object.defineProperty;var u=(i,e)=>pe(i,"name",{value:e,configurable:!0});var y=(i,e)=>()=>{try{return e||i((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}};var D=y((De,de)=>{de.exports={name:"yeoman-generator",version:"5.10.0",description:"Rails-inspired generator system that provides scaffolding for your apps",homepage:"http://yeoman.io",author:"Yeoman",files:["lib"],main:"lib",keywords:["development","dev","build","tool","cli","scaffold","scaffolding","generate","generator","yeoman","app"],config:{doc_path:"../yeoman-generator-doc/"},devDependencies:{"@yeoman/types":"1.0.1",coveralls:"^3.0.3",inquirer:"^8.2.4",jsdoc:"^3.6.7","mem-fs":"^2.1.0",mocha:"^9.2.2",mockery:"^2.1.0",nock:"^13.0.2",nyc:"^15.0.0",prettier:"^2.0.5",proxyquire:"^2.1.0",rimraf:"^3.0.2",sinon:"^13.0.2",through2:"^4.0.2","tui-jsdoc-template":"^1.2.2",xo:"^0.38.1","yeoman-assert":"^3.1.1","yeoman-environment":"^3.2.0","yeoman-generator":"^5.0.0","yeoman-test":"^6.0.0"},license:"BSD-2-Clause",repository:"yeoman/generator",engines:{node:">=12.10.0"},scripts:{pretest:"xo",test:"nyc mocha --forbid-only",doc:"npm run doc:generate && npm run doc:fix && npm run doc:prettier","doc:generate":"jsdoc -c jsdoc.json -d $npm_package_config_doc_path$DOC_FOLDER","doc:prettier":"prettier $npm_package_config_doc_path$DOC_FOLDER --write --ignore-path .prettierignore-doc","doc:fix":"sed -i -e 's:^[[:space:]]*<!--[[:space:]]*$::g' -e 's:^[[:space:]]*-->[[:space:]]*$::g' $npm_package_config_doc_path$DOC_FOLDER/global.html || true",coverage:"nyc report --reporter=text-lcov | coveralls"},dependencies:{chalk:"^4.1.0",dargs:"^7.0.0",debug:"^4.1.1",execa:"^5.1.1","github-username":"^6.0.0",lodash:"^4.17.11","mem-fs-editor":"^9.0.0",minimist:"^1.2.5",pacote:"^15.2.0","read-pkg-up":"^7.0.1","run-async":"^2.0.0",semver:"^7.2.1",shelljs:"^0.8.5","sort-keys":"^4.2.0","text-table":"^0.2.0"},overrides:{"@yeoman/types":{"mem-fs":"^2.0.0","mem-fs-editor":"^9.0.0"}},acceptDependencies:{"yeoman-environment":"^4.0.0"},peerDependencies:{"yeoman-environment":"^3.2.0"},peerDependenciesMeta:{"yeoman-environment":{optional:!0}}}});var I=y((Ge,G)=>{"use strict";var v=require("assert"),p=require("../../commonlibs/lodash/index.js"),me=require("../../commonlibs/sort-keys/index.js"),ge={get(i,e){return i.get(e)},set(i,e,t){return i.set(e,t),!0},ownKeys(i){return Reflect.ownKeys(i._store)},has(i,e){return i.get(e)!==void 0},getOwnPropertyDescriptor(i,e){return{get:u(()=>this.get(i,e),"get"),enumerable:!0,configurable:!0}}},S=class i{static{u(this,"Storage")}constructor(e,t,s,r={}){e!==void 0&&typeof e!="string"&&(s=t,t=e,e=void 0),typeof r=="boolean"&&(r={lodashPath:r}),p.defaults(r,{lodashPath:!1,disableCache:!1,disableCacheByFile:!1,sorted:!1}),v(s,"A config filepath is required to create a storage"),this.path=s,this.name=e,this.fs=t,this.indent=2,this.lodashPath=r.lodashPath,this.disableCache=r.disableCache,this.disableCacheByFile=r.disableCacheByFile,this.sorted=r.sorted,this.existed=Object.keys(this._store).length>0,this.fs.store.on("change",n=>{this.disableCacheByFile||n&&n!==this.path||delete this._cachedStore})}get _store(){let e=this._cachedStore||this.fs.readJSON(this.path,{});return this.disableCache||(this._cachedStore=e),this.name?(this.lodashPath?p.get(e,this.name):e[this.name])||{}:e||{}}_persist(e){this.sorted&&(e=me(e,{deep:!0}));let t;this.name?(t=this.fs.readJSON(this.path,{}),this.lodashPath?p.set(t,this.name,e):t[this.name]=e):t=e,this.fs.writeJSON(this.path,t,null,this.indent)}save(){this._persist(this._store)}get(e){return this._store[e]}getPath(e){return p.get(this._store,e)}getAll(){return p.cloneDeep(this._store)}set(e,t){v(!p.isFunction(t),"Storage value can't be a function");let s=this._store;return p.isObject(e)?t=p.assignIn(s,e):s[e]=t,this._persist(s),t}setPath(e,t){v(!p.isFunction(t),"Storage value can't be a function");let s=this._store;return p.set(s,e,t),this._persist(s),t}delete(e){let t=this._store;delete t[e],this._persist(t)}defaults(e){v(p.isObject(e),"Storage `defaults` method only accept objects");let t=p.defaults({},this._store,e);return this._persist(t),this.getAll()}merge(e){v(p.isObject(e),"Storage `merge` method only accept objects");let t=p.merge({},this._store,e);return this._persist(t),this.getAll()}createStorage(e){let t=this.name?`${this.name}.${e}`:e;return new i(t,this.fs,this.path,!0)}createProxy(){return new Proxy(this,ge)}};G.exports=S});var B=y((Fe,J)=>{"use strict";var w=require("assert"),$=require("../../commonlibs/lodash/index.js"),F=J.exports,ye=u((i,e)=>{for(let t of i.choices)typeof t=="object"&&(t.checked=!1);return e},"getCheckboxDefault"),_e=u((i,e)=>i.choices.map(s=>typeof s=="object"?s.value:s).indexOf(e),"getListDefault"),be=u((i,e,t)=>{let r=i.choices.map(n=>Object.prototype.hasOwnProperty.call(n,"value")?n.value:n).indexOf(e);return!!(t||i.default!==r)},"storeListAnswer"),ke=u((i,e,t)=>!!(e!==void 0&&(t||i.default!==e)),"storeAnswer");F.prefillQuestions=(i,e)=>{w(i,"A store parameter is required"),w(e,"A questions parameter is required");let t=i.get("promptValues")||{};return Array.isArray(e)||(e=[e]),e=e.map($.clone),e.map(s=>{if(s.store!==!0)return s;let r=t[s.name];if(r===void 0||$.isFunction(s.choices))return s;switch(s.type){case"rawlist":case"expand":s.default=_e(s,r);break;case"checkbox":s.default=ye(s,r);break;default:s.default=r;break}return s})};F.storeAnswers=(i,e,t,s)=>{w(i,"A store parameter is required"),w(t,"A answers parameter is required"),w(e,"A questions parameter is required"),w.ok($.isObject(t),"answers must be a object"),s=s||!1;let r=i.get("promptValues")||{};Array.isArray(e)||(e=[e]),$.each(e,n=>{if(n.store!==!0)return;let h,o=n.name,a=t[o];switch(n.type){case"rawlist":case"expand":h=be(n,a,s);break;default:h=ke(n,a,s);break}h&&(r[o]=a)}),Object.keys(r).length>0&&i.set("promptValues",r)}});var N=y((Be,M)=>{"use strict";var we=require("assert"),qe=require("../../commonlibs/pacote/index.js"),W=u(async function(i,e){we(i,"Parameter packageName is required"),e&&(i=`${i}@${e}`);let t=await qe.manifest(i);if(!t)return;let s=t._from,r=s.lastIndexOf("@");if(r>1){let n=s.slice(r+1,s.length)||t.version;return[s.slice(0,Math.max(0,r)),n]}return[t.name,s||t.version]},"resolvePackage");M.exports=i=>class extends i{async _resolvePackageJsonDependencies(e){if(typeof e=="string")e=[e];else{if(typeof e!="object")throw new TypeError("resolvePackageJsonDependencies requires an object");if(!Array.isArray(e))return e=await Promise.all(Object.entries(e).map(([s,r])=>r?Promise.resolve([s,r]):W(s,r))),Object.fromEntries(e.filter((...s)=>s.length>0&&s[0]))}let t=await Promise.all(e.map(s=>W(s)));return Object.fromEntries(t)}async addDependencies(e){return e=await this._resolvePackageJsonDependencies(e),this.packageJson.merge({dependencies:e}),e}async addDevDependencies(e){return e=await this._resolvePackageJsonDependencies(e),this.packageJson.merge({devDependencies:e}),e}}});var U=y((Qe,H)=>{"use strict";var ve=require("path"),Q=require("fs"),Ae=require("../../commonlibs/lodash/index.js"),L=require("../../commonlibs/text-table/index.js"),A=H.exports;A.help=function(){let i=ve.resolve(this.sourceRoot(),"../USAGE"),e=Q.existsSync(i),t=["Usage:"," "+this.usage(),""];return Object.keys(this._options).length>0&&(t=[...t,"Options:",this.optionsHelp(),""]),this._arguments.length>0&&(t=[...t,"Arguments:",this.argumentsHelp(),""]),e&&t.push(Q.readFileSync(i,"utf8")),t.join(`
`)};function Pe(i){let e=`<${i.name}>`;return i.required||(e=`[${e}]`),e}u(Pe,"formatArg");A.usage=function(){let i=Object.keys(this._options).length?"[options]":"",e=this.options.namespace,t="";this._arguments.length>0&&(t=this._arguments.map(Pe).join(" ")+" "),e=e.replace(/^yeoman:/,"");let s=`yo ${e} ${t}${i}`;return this.description&&(s+=`
`+this.description),s};A.desc=function(i){return this.description=i||"",this};A.argumentsHelp=function(){let i=this._arguments.map(e=>["",e.name?e.name:"",e.description?`# ${e.description}`:"",e.type?`Type: ${e.type.name}`:"",`Required: ${e.required}`]);return L(i)};A.optionsHelp=function(){let e=Ae.reject(this._options,t=>t.hide).map(t=>["",t.alias?`-${t.alias}, `:"",`--${t.name}`,t.description?`# ${t.description}`:"",t.default!==void 0&&t.default!==""?"Default: "+t.default:""]);return L(e)}});var X=y((He,z)=>{"use strict";var K=require("../../commonlibs/execa/index.js"),Y=z.exports;Y.spawnCommand=function(i,e,t){return K(i,e,{stdio:"inherit",cwd:this.destinationRoot(),...t})};Y.spawnCommandSync=function(i,e,t){return K.sync(i,e,{stdio:"inherit",cwd:this.destinationRoot(),...t})}});var se=y((Ue,te)=>{var Z=require("assert"),c=te.exports,ee=u((i,e,t,s)=>{if(i.when&&!i.when(e,t))return;let{source:r,destination:n,templateOptions:h,copyOptions:o}=i;return s(r,n,e,h,o)},"renderEachTemplate");c.readTemplate=function(i,...e){return this.fs.read(this.templatePath(i),...e)};c.copyTemplate=function(i,e,...t){return this.fs.copy(this.templatePath(i),this.destinationPath(e),...t)};c.copyTemplateAsync=function(i,e,...t){return this.checkEnvironmentVersion("mem-fs-editor","9.0.0"),this.fs.copyAsync(this.templatePath(i),this.destinationPath(e),...t)};c.readDestination=function(i,...e){return this.fs.read(this.destinationPath(i),...e)};c.readDestinationJSON=function(i,...e){return this.fs.readJSON(this.destinationPath(i),...e)};c.writeDestination=function(i,...e){return this.fs.write(this.destinationPath(i),...e)};c.writeDestinationJSON=function(i,...e){return this.fs.writeJSON(this.destinationPath(i),...e)};c.deleteDestination=function(i,...e){return this.fs.delete(this.destinationPath(i),...e)};c.copyDestination=function(i,e,...t){return this.fs.copy(this.destinationPath(i),this.destinationPath(e),...t)};c.moveDestination=function(i,e,...t){return this.fs.move(this.destinationPath(i),this.destinationPath(e),...t)};c.existsDestination=function(i,...e){return this.fs.exists(this.destinationPath(i),...e)};c.renderTemplate=function(i="",e=i,t=this._templateData(),s,r){typeof t=="string"&&(t=this._templateData(t)),s={context:this,...s},i=Array.isArray(i)?i:[i];let n=this.templatePath(...i);e=Array.isArray(e)?e:[e];let h=this.destinationPath(...e);this.fs.copyTpl(n,h,t,s,r)};c.renderTemplateAsync=function(i="",e=i,t=this._templateData(),s,r){this.checkEnvironmentVersion("mem-fs-editor","9.0.0"),typeof t=="string"&&(t=this._templateData(t)),s={context:this,...s},i=Array.isArray(i)?i:[i];let n=this.templatePath(...i);e=Array.isArray(e)?e:[e];let h=this.destinationPath(...e);return this.fs.copyTplAsync(n,h,t,s,r)};c.renderTemplates=function(i,e=this._templateData()){Z(Array.isArray(i),"Templates must an array"),typeof e=="string"&&(e=this._templateData(e));for(let t of i)ee(t,e,this,(...s)=>this.renderTemplate(...s))};c.renderTemplatesAsync=function(i,e=this._templateData()){return Z(Array.isArray(i),"Templates must an array"),this.checkEnvironmentVersion("mem-fs-editor","9.0.0"),typeof e=="string"&&(e=this._templateData(e)),Promise.all(i.map(t=>ee(t,e,this,(...s)=>this.renderTemplateAsync(...s))))};c._templateData=function(i){if(i)return this.config.getPath(i);let e=this.config.getAll();return this.generatorConfig&&Object.assign(e,this.generatorConfig.getAll()),this.instanceConfig&&Object.assign(e,this.instanceConfig.getAll()),e}});var oe=y((Ye,ne)=>{"use strict";var x=require("../../commonlibs/shelljs/index.js"),Oe=require("../../commonlibs/github-username/index.js"),ie=new Map,re=new Map,q=ne.exports;q.git={};q.github={};q.git.name=()=>{let i=ie.get(process.cwd());return i||(x.which("git")&&(i=x.exec("git config --get user.name",{silent:!0}).stdout.trim(),ie.set(process.cwd(),i)),i)};q.git.email=()=>{let i=re.get(process.cwd());return i||(x.which("git")&&(i=x.exec("git config --get user.email",{silent:!0}).stdout.trim(),re.set(process.cwd(),i)),i)};q.github.username=()=>Oe(q.git.email())});var ae=require("fs"),l=require("path"),$e=require("os"),xe=require("events"),C=require("assert"),m=require("../../commonlibs/lodash/index.js"),E=require("../../commonlibs/semver/index.js"),he=require("../../commonlibs/read-pkg-up/index.js"),d=require("../../commonlibs/chalk/index.js"),je=require("../../commonlibs/minimist/index.js"),Te=require("../../commonlibs/run-async/index.js"),le=require("../../commonlibs/debug/index.js"),Se=require("../../commonlibs/mem-fs-editor/index.js"),Ne=D(),R=I(),j=B(),ue="@@_YEOMAN_EMPTY_MARKER_@@",b=le("yeoman:generator"),V="2.9.0",Ce=[N()],Ee=Ce.reduce((i,e)=>e(i),xe),ce=u(function(i){return i.charAt(0)!=="_"&&i!=="constructor"},"methodIsValid"),_=class i extends Ee{static{u(this,"Generator")}static get queues(){return["initializing","prompting","configuring","default","writing","transform","conflicts","install","end"]}constructor(e,t,s){if(super(),Array.isArray(e)||(s=t,t=e,e=[]),t=t||{},this.options=t,this._initOptions=m.clone(t),this._args=e||[],this._options={},this._arguments=[],this._prompts=[],this._composedWith=[],this._namespace=this.options.namespace,this._namespaceId=this.options.namespaceId,this.yoGeneratorVersion=Ne.version,this.features=s||{unique:this.options.unique},this.option("help",{type:Boolean,alias:"h",description:"Print the generator's options and usage"}),this.option("skip-cache",{type:Boolean,description:"Do not remember prompt answers",default:!1}),this.option("skip-install",{type:Boolean,description:"Do not automatically install dependencies",default:!1}),this.option("force-install",{type:Boolean,description:"Fail on install dependencies error",default:!1}),this.option("ask-answered",{type:Boolean,description:"Show prompts for already configured options",default:!1}),this.env=this.options.env,this.resolved=this.options.resolved||__filename,this.description=this.description||"",this.env&&(this.contextRoot=this.env.cwd,this.destinationRoot(this.options.destinationRoot||this.env.cwd),delete this.options.destinationRoot,this.sourceRoot(l.join(l.dirname(this.resolved),"templates")),this.fs=Se.create(this.env.sharedFs)),this._debug=le(this.options.namespace||"yeoman:unknownnamespace"),this._=m,!this.options.help){if(this.features.unique&&!this.features.uniqueBy){let{namespace:r}=this.options,n;if(this.features.unique===!0||this.features.unique==="namespace")n=r;else if(this.features.unique==="argument"&&this._args.length===1)n=this.env.requireNamespace(r).with({instanceId:this._args[0]}).id;else throw new Error(`Error generating a uniqueBy value. Uniqueness '${this.features.unique}' not supported by '${this.options.namespace}'`);this.features.uniqueBy=n}if(!this.env)throw new Error("This generator requires an environment.");if(!this.env||!this.env.adapter||!this.env.sharedFs)throw new Error("Current environment doesn't provides some necessary feature this generator needs.");this.log=this.env.adapter&&this.env.adapter.log,this.async=()=>()=>{},this.appname=this.determineAppname(),this._namespaceId&&this._namespaceId.generator&&(this.generatorConfig=this.config.createStorage(`:${this._namespaceId.generator}`),this._namespaceId.instanceId&&(this.instanceConfig=this.generatorConfig.createStorage(`#${this._namespaceId.instanceId}`))),this._globalConfig=this._getGlobalStorage(),this._queues={};for(let r of i.queues)this._queues[r]={priorityName:r,queueName:r};Array.isArray(this.options.customPriorities)&&this.registerPriorities(this.options.customPriorities),this.compose=this.options.compose,this.options.skipCheckEnv||this.checkEnvironmentVersion("3.0.0"),this.checkEnvironmentVersion("3.2.0",!0),this.env.getVersion&&(this.yeomanApi=E.gte(this.env.getVersion(),"3.18.3"))}}setFeatures(e){Object.assign(this.features,e)}getFeatures(){return this.features}registerPriorities(e){e=e.filter(s=>{if(s.edit){let r=this._queues[s.priorityName];if(!r)throw new Error(`Error editing priority ${s.priorityName}, not found`);Object.assign(r,{...s,edit:void 0})}return!s.edit});let t=e.map(s=>{let r={priorityName:s.name,...s};return delete r.name,r});t.sort((s,r)=>{if(s.priorityName===r.priorityName)throw new Error(`Duplicate custom queue ${s.name}`);return s.priorityName===r.before?-1:r.priorityName===s.before?1:0});for(let s of t){s.queueName=s.queueName||`${this.options.namespace}#${s.priorityName}`,b(`Registering custom queue ${s.queueName}`),this._queues[s.priorityName]=s;let r=s.before?this._queues[s.before].queueName:void 0;if(this.yeomanApi)this.env.addPriority(s.queueName,r);else{if(this.env.runLoop.queueNames.includes(s.queueName))continue;this.env.runLoop.addSubQueue(s.queueName,r)}}}checkEnvironmentVersion(e,t,s=!1){typeof t=="boolean"&&(s=t,t=void 0),t===void 0&&(t=e,e="yeoman-environment"),t=t||V;let r=u(h=>new Error(`This generator (${this.options.namespace}) requires ${e} at least ${t}, current version is ${h}, try reinstalling latest version of 'yo' or use '--ignore-version-check' option`),"returnError");if(!this.env.getVersion){if(!this.options.ignoreVersionCheck&&!s)throw r(`less than ${V}`);return console.warn(`It's not possible to check version with running Environment less than ${V}`),console.warn("Some features may be missing"),E.lte(t,"2.8.1")?void 0:!1}let n=this.env.getVersion(e);if(n!==void 0&&E.lte(t,n))return!0;if(this.options.ignoreVersionCheck||s)return console.warn(`Current ${e} is not compatible with current generator, min required: ${t} current version: ${n}. Some features may be missing, try updating reinstalling 'yo'.`),!1;throw r(n)}debug(...e){this._debug(...e)}registerConfigPrompts(e){e=Array.isArray(e)?e:[e];let t=u(s=>s==="number"?Number:s==="confirm"?Boolean:s==="checkbox"?Array:String,"getOptionTypeFromInquirerType");for(let s of e){let r={...s};if(s.exportOption){let n=typeof s.exportOption=="boolean"?{}:s.exportOption;this.option({name:s.name,type:t(s.type),description:s.message,...n,storage:s.storage||this.config})}this._prompts.push(r)}}prompt(e,t){let s=u(()=>{this.inquireSupportsPrefilled===void 0&&(this.checkEnvironmentVersion(),this.inquireSupportsPrefilled=this.checkEnvironmentVersion("inquirer","7.1.0"))},"checkInquirer");t!==void 0&&s();let r={},n=u(o=>{let a=o.storage||t;if(a=typeof a=="string"?this[a]:a,a){s();let{name:f}=o;r[f]=a;let g=a.getPath(f);if(g!==void 0)return o.default=T=>T[f],[f,g]}},"getAnswerFromStorage");Array.isArray(e)||(e=[e]);for(let o of e)o.askAnswered===void 0&&(o.askAnswered=this.options.askAnswered===!0);e=j.prefillQuestions(this._globalConfig,e),e=j.prefillQuestions(this.config,e);let h=Object.fromEntries(e.map(n).filter(Boolean));return this.env.adapter.prompt(e,h).then(o=>(Object.entries(r).forEach(([a,f])=>{let g=o[a]===void 0?null:o[a];f.setPath(a,g)}),this.options.skipCache||(j.storeAnswers(this._globalConfig,e,o,!1),this.options.skipLocalCache||j.storeAnswers(this.config,e,o,!0)),o))}option(e,t){if(Array.isArray(e)){for(let r of e)this.option(r);return}typeof e=="object"&&(t=e,e=t.name),t=t||{},"defaults"in t&&(t.default=t.defaults),t.description=t.description||t.desc,m.defaults(t,{name:e,description:"Description for "+e,type:Boolean,hide:!1});let s=/^no-/;if(t.type===Boolean&&s.test(e)){let r=e.replace(s,"");throw new Error([`Option name ${d.yellow(e)} cannot start with ${d.red("no-")}
`,`Option name prefixed by ${d.yellow("--no")} are parsed as implicit`,` boolean. To use ${d.yellow("--"+e)} as an option, use
`,d.cyan(` this.option('${r}', {type: Boolean})`)].join(""))}return(this._options[e]===null||this._options[e]===void 0)&&(this._options[e]=t),this.options.skipParseOptions||this.parseOptions(),t.storage&&this.options[e]!==void 0&&(typeof t.storage=="string"?this[t.storage]:t.storage).set(e,this.options[e]),this}argument(e,t){return t=t||{},"defaults"in t&&(t.default=t.defaults),t.description=t.description||t.desc,m.defaults(t,{name:e,required:t.default===null||t.default===void 0,type:String}),this._arguments.push(t),this.options.skipParseOptions||this.parseOptions(),this}parseOptions(){let e={string:[],boolean:[],alias:{},default:{}};m.each(this._options,s=>{s.type===Boolean?(e.boolean.push(s.name),!("default"in s)&&!s.required&&(e.default[s.name]=ue)):e.string.push(s.name),s.alias&&(e.alias[s.alias]=s.name),s.name in this._initOptions?e.default[s.name]=this._initOptions[s.name]:s.alias&&s.alias in this._initOptions?e.default[s.name]=this._initOptions[s.alias]:"default"in s&&(e.default[s.name]=s.default)});let t=je(this._args,e);m.each(t,(s,r)=>{if(s===ue){delete t[r];return}this._options[r]&&s!==void 0&&(t[r]=this._options[r].type(s))});for(let[s,r]of this._arguments.entries()){let n;if(s>=t._.length)if(r.name in this._initOptions)n=this._initOptions[r.name];else if("default"in r)n=r.default;else continue;else r.type===Array?n=t._.slice(s,t._.length):n=r.type(t._[s]);t[r.name]=n}Object.assign(this.options,t),this.args=t._,this.arguments=t._,this.checkRequiredArgs()}checkRequiredArgs(){if(!this.options.help&&!(this.args.length>this._arguments.length)){for(let[e,t]of this._arguments.entries())if(t.required&&e>=this.args.length)throw new Error(`Did not provide required argument ${d.bold(t.name)}!`)}}queueMethod(e,t,s,r){if(typeof s=="function"?(r=s,s="default"):s=s||"default",!m.isFunction(e)){typeof t=="function"&&(r=t,t=void 0),this.queueTaskGroup(e,{queueName:t,reject:r});return}this.queueTask({method:e,taskName:t,queueName:s,reject:r})}queueTaskGroup(e,t){this.extractTasksFromGroup(e,t).forEach(s=>{this.queueTask(s)})}extractTasksFromPriority(e,t={}){let s=this._queues[e];if(t={...s,cancellable:!0,run:!1,...t},t.auto&&s&&s.skip)return[];let{taskPrefix:r=this.features.taskPrefix||""}=t,n=r?`${r}${e}`:e,h=Object.getOwnPropertyDescriptor(t.taskOrigin||Object.getPrototypeOf(this),n);if(!h)return[];let o=h.value?h.value:h.get.call(this);return typeof o=="function"?[{...t,taskName:e,method:o}]:!o||!s?[]:this.extractTasksFromGroup(o,t)}extractTasksFromGroup(e,t){return Object.entries(e).map(([s,r])=>{if(!(typeof r!="function"||!ce(s)))return{...t,method:r,taskName:s}}).filter(Boolean)}queueOwnTask(e,t){this.extractTasksFromPriority(e,t).forEach(s=>this.queueTask(s))}getTaskNames(){let t=Object.getOwnPropertyNames(Object.getPrototypeOf(this)).filter(ce),{taskPrefix:s}=this.features;if(s?t=t.filter(r=>r.startsWith(s)).map(r=>r.slice(s.length)):t=t.filter(r=>r.charAt(0)!=="#"),this.features.tasksMatchingPriority){let r=Object.keys(this._queues);t=t.filter(n=>r.includes(n))}return t}queueOwnTasks(e){this._running=!0,this._taskStatus={cancelled:!1,timestamp:new Date};let t=this.getTaskNames();if(t.length===0&&this._prompts.length===0)throw new Error("This Generator is empty. Add at least one method for it to run.");this._prompts.length>0&&(this.queueTask({method:u(()=>this.prompt(this._prompts,this.config),"method"),taskName:"Prompt registered questions",queueName:"prompting",cancellable:!0}),t.length===0&&this.queueTask({method:u(()=>{this.renderTemplate()},"method"),taskName:"Empty generator: copy templates",queueName:"writing",cancellable:!0}));for(let s of t)this.queueOwnTask(s,e);this.emit("queueOwnTasks")}queueTask(e){let{queueName:t="default",taskName:s,run:r,once:n}=e,{runLoop:h}=this.env,{_taskStatus:o,options:a={}}=this,{namespace:f=""}=a;b(`Queueing ${f}#${s} with options %o`,m.omit(e,["method"])),h.add(t,g=>{this.executeTask(e,void 0,o).then(g)},{once:n?s:void 0,run:r})}executeTask(e,t=e.args||this.args,s=this._taskStatus||{}){return new Promise(r=>{let{reject:n,queueName:h="default",taskName:o,method:a}=e,{namespace:f=""}=this.options||{},g=Object.entries(this._queues).find(([k,O])=>O.queueName===h),T=g?g[0]:void 0;if(b(`Running ${f}#${o}`),this.emit(`method:${o}`),e.cancellable&&s.cancelled){r();return}let P=this;Te(function(){return t=typeof t=="function"?t(P):t,P.async=()=>this.async(),P.runningState={namespace:f,queueName:h,methodName:o},a.apply(P,t)})().then(()=>{delete this.runningState;let k=`done$${f||"unknownnamespace"}#${o}`;b(`Done event ${k}`),this.env.emit(k,{namespace:f,generator:this,queueName:h,priorityName:T}),r()}).catch(k=>{let O=`An error occured while running ${f}#${o}`;if(this.log.error?this.log.error(O):b(O),n){b("Rejecting task promise, queue will continue normally"),n(k),r();return}delete this.runningState;try{this.env.emit("error",k)}catch(fe){setImmediate(()=>{throw fe})}})})}get config(){return this._config||(this._config=this._getStorage()),this._config}get packageJson(){return this._packageJson||(this._packageJson=this.createStorage("package.json")),this._packageJson}cancelCancellableTasks(){this._running=!1,this._taskStatus.cancelled=!0,delete this._taskStatus}startOver(e={}){this.cancelCancellableTasks(),Object.assign(this.options,e),this.queueOwnTasks({auto:!0})}run(){return this.env.runGenerator(this)}queueTasks(){let e=this.features.taskPrefix&&this.beforeQueue||this._beforeQueue;if(e){let t=e.call(this);if(t&&t.then)return this.checkEnvironmentVersion("3.5.0"),t.then(()=>this._queueTasks())}return this._queueTasks()}_queueTasks(){b(`Queueing generator ${this.options.namespace} with generator version ${this.yoGeneratorVersion}`),this.queueOwnTasks({auto:!0});let e=this.yeomanApi?{schedule:!1}:!1;if(this._composedWith.some(s=>s.then))return Promise.all(this._composedWith).then(async s=>{for(let r of s)await this.env.queueGenerator(await r,e)});let t;for(let s of this._composedWith)if(t)t.then(()=>this.env.queueGenerator(s,e));else{let r=this.env.queueGenerator(s,e);r.then&&(t=r)}return this._composedWith=[],t}composeWith(e,t,s,r=!1){typeof t=="boolean"?t=[]:!Array.isArray(t)&&typeof t=="object"&&(s=t,t=s.arguments||s.args||[]),s=typeof s=="boolean"?{}:s||{};let n;if(Array.isArray(e))return e.map(o=>this.composeWith(o,t,s));s={destinationRoot:this._destinationRoot,...s,skipInstall:this.options.skipInstall,skipCache:this.options.skipCache,forceInstall:this.options.forceInstall,skipLocalCache:this.options.skipLocalCache};let h=u((o,a)=>(a==="unknown"?o.resolved=a:o.resolved=require.resolve(a),o.namespace=this.env.namespace(a),this.yeomanApi?this.env.instantiate(o,{generatorArgs:t,generatorOptions:s}):this.env.instantiate(o,t,s)),"instantiate");if(typeof e=="string")try{let o=require(e),a=typeof o.default=="function"?o.default:o;n=h(a,e)}catch{n=this.yeomanApi?this.env.create(e,{generatorArgs:t,generatorOptions:s}):this.env.create(e,t,s)}else{let{Generator:o,path:a}=e;C(o,`${d.red("Missing Generator property")}
When passing an object to Generator${d.cyan("#composeWith")} include the generator class to run in the ${d.cyan("Generator")} property
this.composeWith({
${d.yellow("Generator")}: MyGenerator,
...
});`),C(typeof a=="string",`${d.red("path property is not a string")}
When passing an object to Generator${d.cyan("#composeWith")} include the path to the generators files in the ${d.cyan("path")} property
this.composeWith({
${d.yellow("path")}: '../my-generator',
...
});`),n=h(o,a)}if(!n)return n;if(this._running||r){if(n.then)return n.then(o=>(this.env.queueGenerator(o),o));this.env.queueGenerator(n)}else this._composedWith.push(n);return n}rootGeneratorName(){let{packageJson:{name:e="*"}={}}=he.sync({cwd:this.resolved})||{};return e}rootGeneratorVersion(){let{packageJson:{version:e="0.0.0"}={}}=he.sync({cwd:this.resolved})||{};return e}createStorage(e,t,s){return typeof t=="object"?(s=t,t=void 0):typeof s=="boolean"&&(s={lodashPath:s}),e=this.destinationPath(e),new R(t,this.fs,e,s)}_getStorage(e=this.rootGeneratorName(),t){typeof e=="object"&&(t=e,e=this.rootGeneratorName());let s=l.join(this.destinationRoot(),".yo-rc.json");return new R(e,this.fs,s,t)}_getGlobalStorage(){let e=this.options.localConfigOnly?this.destinationRoot():$e.homedir(),t=l.join(e,".yo-rc-global.json"),s=`${this.rootGeneratorName()}:${this.rootGeneratorVersion()}`;return new R(s,this.fs,t)}destinationRoot(e){return typeof e=="string"&&(this._destinationRoot=l.resolve(e),ae.existsSync(this._destinationRoot)||ae.mkdirSync(this._destinationRoot,{recursive:!0}),this._config=void 0,this._packageJson=void 0),this._destinationRoot||this.env.cwd}sourceRoot(e){return typeof e=="string"&&(this._sourceRoot=l.resolve(e)),this._sourceRoot}templatePath(...e){let t=l.join.apply(l,e);return l.isAbsolute(t)||(t=l.join(this.sourceRoot(),t)),t}destinationPath(...e){let t=l.join.apply(l,e);return l.isAbsolute(t)||(t=l.join(this.destinationRoot(),t)),t}determineAppname(){let e=this.fs.readJSON(this.destinationPath("bower.json"),{}).name;return e||(e=this.fs.readJSON(this.destinationPath("package.json"),{}).name),e||(e=l.basename(this.destinationRoot())),e.replace(/[^\w\s]+?/g," ")}queueTransformStream(e,t){return C(e,"expected to receive a transform stream as parameter"),this.queueTask({method(){return this.env.applyTransforms(e,t)},taskName:"transformStream",queueName:"transform"}),this}};m.extend(_.prototype,U());m.extend(_.prototype,X());m.extend(_.prototype,se());m.extend(_.prototype,N());_.prototype.user=oe();module.exports=_;